Página de inicio de Visual FoxPro

Bienvenido a Microsoft Visual FoxPro. Visual FoxPro es un sistema de administración de bases de datos relacionales orientado a objetos que le ayudará a crear soluciones de bases de datos de escritorio y de Web. Visual FoxPro proporciona eficaces características de procesamiento de datos, herramientas de desarrollo rápido de aplicaciones para maximizar la productividad y la flexibilidad necesaria para generar todos los tipos de soluciones de base de datos.

En la documentación de Visual FoxPro

Lo Nuevo en Visual FoxPro 8.0
Describes las nuevas características y mejoras incluidas en esta versión de Visual FoxPro.
Introducción a Visual FoxPro
Proporciona información acerca de donde encontrar el archivo Léeme, instalar y actualizar versiones anteriores, configurar Visual FoxPro y personalizar el entorno de desarrollo.
Uso de Visual FoxPro
Da una introducción sobre las características de Visual FoxPro, describe conceptos y herramientas de productividad para el desarrollo, programación y administración de aplicaciones y componentes de bases de datos de alto rendimiento, y proporciona guías que le ayudan a empezar. Con las herramientas robustas y el lenguaje orientado a objetos que ofrece Visual FoxPro, puede generar aplicaciones modernas, escalables y multi capa que integran la programación cliente-servidor y la Internet.
Ejemplos y guías
Contiene ejemplos de código de Visual FoxPro y guías paso a paso que puede utilizar para experimentar con ellas y aprender las características de Visual FoxPro.
Referencia
Incluye temas de referencia general, lenguaje de programación, interfaz de usuario, y mensajes de error.
Soporte técnico
Proporciona información acerca del soporte técnico de Microsoft para Visual FoxPro.

Información adicional

Sitio web de Microsoft Visual FoxPro
Proporciona un enlace al sitio web de Visual FoxPro para obtener información adicional y recursos para Visual FoxPro.
Capacitación y recursos para Microsoft Visual FoxPro
Proporciona un enlace para encontrar información acerca de capacitación, libros y eventos para Visual FoxPro.
Accesibilidad para personas con discapacidades
Proporciona información acerca de las características que hacen a Visual FoxPro más accesible para personas con discapacidades.

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico"..

© 1992 - 2003 Microsoft Corporation. Todos los derechos reservados.

Traducido al Español por el grupo de traductores de PortalFox.

Envíe un informe sobre errores en la traducción de este tema


Lo nuevo en Visual FoxPro 8.0

Bienvenido a Microsoft Visual FoxPro. Visual FoxPro es un gestor de bases de datos relacionales orientado a objetos, el cual puede ser usado para crear soluciones basadas en bases de datos para el escritorio o la Web. Visual FoxPro proporciona una potente capacidad de manejo de datos, herramientas para el desarrollo rápido de aplicaciones de máxima productividad, y la flexibilidad necesaria para desarrollar todo tipo de soluciones basadas en bases de datos.

En esta sección

Enviar información acerca de la ayuda a Microsoft

Describe como se puede enviar información acerca de la Ayuda de Visual FoxPro a Microsoft.

Mejoras del entorno de desarrollo interactivo (IDE)
Describe las mejores y adiciones hechas a la IDE de Visual FoxPro 8.0.
Mejoras del lenguaje
Describe las mejoras y adiciones del Lenguaje de Programación Visual FoxPro 8.0
Mejoras en las características de Datos
Describe las mejoras y adiciones hechas al manejo de datos de Visual Foxpro 8.0.
Mejoras varias
Describe otras mejoras efectuadas en esta versión de Visual FoxPro 8.0.
Cambios de comportamiento desde Visual Foxpro 7.0
Describe los cambios en el comportamiento y funcionalidad del lenguaje.
Nuevas palabras reservadas en Visual FoxPro 8.0
Lista de las nuevas palabras reservadas añadidas a Visual FoxPro 8.0.

Secciones relacionadas

Introducción a Visual FoxPro
Ofrece información sobre donde encontrar el archivo Léeme, como instalar y actualizar desde una versión anterior, configurar Visual Foxpro, y personalizar el entorno de desarrollo.
Uso de Visual FoxPro
Ofrece una panorámica de las características de Visual FoxPro 8.0, describe conceptos y herramientas de productividad para el desarrollo, programación, y manejo de aplicaciones y componentes de bases de datos de alto rendimiento, y guías que le ayudaran a comenzar a trabajar. Con las herramientas robustas y el lenguaje orientado a objetos basados en datos que Visual FoxPro le ofrece, puede desarrollar aplicaciones modernas, escalables, multicapas que integren programación Cliente/Servidor e Internet.
Ejemplos y guías
Contiene código Visual FoxPro de ejemplo y guías paso a paso que puede usar para experimentar y aprender las caracteristicas de Visual FoxPro.
Referencia
Describe generalidades de Visual FoxPro, lenguaje de programación, interfaz de usuario, y temas de referencia de los mensajes de error.
Soporte técnico
Ofrece información sobre soporte técnico de Microsoft para Visual FoxPro.

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico"...


Enviar información acerca de la ayuda a Microsoft

Esta versión de Documentación de Ayuda de Visual FoxPro contiene muchas mejoras y sugerencias que han sido solicitadas de nuestros usuarios. Nosotros valoramos sus observaciones y agradecemos cualquier sugerencia adicional acerca de la documentación que nos pueda ayudar para que su uso sea mas fácil.

Cada tema de la Ayuda en Visual FoxPro contiene, al final de la página, un hipervínculo "Enviar comentario de este tema a Microsoft" que puede ser usado para enviar sus observaciones sobre algún tema de Ayuda. Haciendo clic sobre el vínculo se abre una plantilla de mensajes. La plantilla de mensajes contiene la información de identificación necesaria del tema, por lo que no es necesario que usted lo escriba.

Nota Para asuntos relacionados a Productos o Soporte Técnico, por favor contacte a Microsoft Technical Support para que ellos lo direccionen apropiadamente. Para mayor información, vea Soporte técnico de Microsoft Visual FoxPro.

Para enviar observaciones acerca de la documentación

  1. Localice el Tema de Ayuda sobre el cual desee enviar un comentario.
  2. Cerca del botón del tema, haga clic Enviar comentario de este tema a Microsoft.
  3. En la sección de Comentarios de la plantilla de mensajes, escriba sus observaciones acerca de como puede mejorar el tema o las correcciones necesarias.
  4. Cuando termine, haga clic, Enviar.

Vea también:

Lo Nuevo en Visual FoxPro 8.0 | Mejoras del entorno de desarrollo interactivo (IDE)| Mejoras del lenguaje | Mejoras en las características de Datos | Mejoras varias | Cambios de comportamiento desde Visual FoxPro 7.0


Mejoras del entorno de desarrollo interactivo (IDE)

Para proveer un entorno de desarrollo mas integrado para sus proyectos y aplicaciones, Visual FoxPro agrega las siguientes mejoras de funcionalidad:

  • Administrador del Panel de Tareas Visual FoxPro
  • Caja de Herramientas de Visual FoxPro
  • Herramienta para Búsqueda de Referencias en el Código
  • Mejoras en los diseñadores y editores de Visual FoxPro
  • Las Cajas de Dialogo Abrir y Guardar mantienen estilo Windows
  • Cambios y mejoras en los Atajos de teclado (Combinaciones de Tecla)
  • Incorporación de la característica IntelliSense en la ventana de Depurador
  • Ajuste Automático de Línea para texto de Sugerencias (ToolTip)
  • Viendo propiedades en la ventana de Propiedades usando Zoom

Administrador del Panel de Tareas de Visual FoxPro

El administrador del panel de Tareas contiene paneles o ventanas, que facilitan el cumplimiento de las tareas esenciales diarias. Estos paneles mejoran la posibilidad de descubrir características nuevas o existentes, exponen asistentes para tareas simples, muestran temas de Ayuda, registran y publican servicios XML Web, presentan ejemplos, y pueden enviar contenido dinámico al escritorio de Visual FoxPro.

Para mas información acerca del Administrador del Panel de tareas y de las tareas que pueden realizarse, vea Administrador del Panel de tareas, Accediendo a servicios Web XML, Distribuir Servicios Web XML, Guía: Crear Servicios Web XML con Visual FoxPro, y Ejemplos de Soluciones.

Cajas de Herramientas de Visual FoxPro

Las Cajas de Herramientas de Visual FoxPro proporcionan una forma integrada y organizada de usar conjuntos personalizados de herramientas (como librerías de clases, constructores y pedazos de texto); recursos comunes tales como etiquetas, formularios, imágenes, archivos y tablas, ú otros elementos como pueden ser controles ActiveX, clases COM y asistentes. Las cajas de Herramientas proporcionan completo control sobre su configuración, reemplazan la barra de Controles de Formularios, y mejoran el entorno de desarrollo (IDE). También soportan herramientas de terceros y mejoras.

Nota la barra de Controles de Formularios ya no se abre automáticamente al abrir un nuevo formulario ó clase.

Para mas información, vea Caja de herramientas, Personalizar la Caja de herramientas, y la variable de sistema _TOOLBOX.

Herramienta de Búsqueda de Referencias de Código

Se puede realizar operaciones de búsqueda y reemplazo de Referencias de Código ó texto en la cuadro de diálogo Buscar Referencia provisto por esta herramienta, la cual se encuentra en el menú Herramientas. Puede elegir entre buscar en todo un proyecto ó archivos y puede optar por filtra la búsqueda para ciertos tipos de archivos tales como .vcx, .scx, .prg, etc. Para más información sobre búsqueda y reemplazos de referencias de código, vea Cuadro de diálogo Buscar referencia, Ventana Referencia de código, y Buscar y reemplazar referencias de código.

Mejoras a los Diseñadores y Editores de Visual FoxPro

Visual FoxPro contiene numerosas mejoras hechas a sus herramientas de Diseño y Edición. Para mas detalles consulte Mejoras en los diseñadores de Visual FoxPro y Mejoras en los editores de Visual FoxPro.

Las Cajas de Dialogo 'Abrir' y 'Guardar' mantienen el estilo de Windows

Cuando Visual FoxPro este ejecutándose sobre sistemas operativos Windows 2000 y Windows XP se registran los siguientes cambios en las cajas de dialogo 'Abrir', 'Grabar' y 'Abrir Imagen':

  • Se ve una barra que permite el acceso rápido a ubicaciones comunes tales como Mis Documentos, Escritorio, etc
  • Las siguientes opciones están disponibles al pulsar el icono de Vistas: Miniatura, Mosaico, Iconos, Lista, y Detalles. Se pueden previsualizar imágenes en Windows 2000 y posteriores pulsando Miniatura. Visual FoxPro usa la vista Miniatura como predeterminada para proveer mini visualizaciones de las imágenes. En cualquier caso, la caja de dialogo Abrir Imagen no incluirá el área para mostrar la imagen. La posibilidad de activar Vista Previa solo aparece al usar sistemas operativos anteriores a Windows 2000.
  • Posibilidad de cambiar el tamaño de los cuadros de dialogo.

En el cuadro de Dialogo Abrir que aparece cuando se pulsa el botón Agregar del Administrador de Proyectos, pueden seleccionarse múltiples archivos para ser incorporados.

Al invocar la función AGETCLASS( ), la lista de Tipos de Archivos en el cuadro de dialogo Abrir incorpora archivos de tipo Programa (.prg). AGETCLASS( ) no será soportado en las librerías de tiempo de ejecución de Visual FoxPro porque las rutinas de análisis sintáctico de archivos de programas (.prg) están restringidas solo a etapa de diseño.

Para más información, ver Cuadro de diálogo Abrir, Cuadro de diálogo Abrir imagen, Ventana Administrador de proyectos, y Función AGETCLASS( ).

Cambios y mejoras en los Métodos abreviados del teclado

Se incluyen mejoras y cambios en el comportamiento de los siguientes Métodos abreviados.

CTRL+TAB

Ahora soporta comportamiento sensible al contexto cuando se pulsa la combinación de teclas CTRL+TAB. Al ser pulsada esta combinación de teclas procesa las siguientes acciones:

  • Sale de la cuadrícula cuando el foco esta en un control Grid dado que, si pulsar TAB, nos movemos entre las celdas de la cuadrícula.
  • Sale de una caja de edición de Texto cuando el foco se encuentra en un control EditBox, y la propiedad AllowTabs tiene valor Verdadero (.T.).
    Nota Cuando la propiedad AllowTabs tiene valor Falso (.F.), CTRL+TAB no nos saca del control. En lugar de ello, CTRL+TAB mueve el foco a la siguiente ventana disponible. Se puede pulsar TAB para salir de una caja de edición de texto cuando AllowTabs tiene un valor es Falso (.F.).
  • Moverse entre las paginas de un control PageFrame contenido en un formulario o en un cuadro de dialogo. Sin embargo, Visual FoxPro no proporciona este comportamiento en un proyecto ni cuando el control PageFrame contiene un control ActiveX.
  • Moverse entre documento y diseñador, Interfases Multi-Documento (MDI), o ventanas tales como las siguientes:
    • Diseñador de Formularios en tiempo de diseño y ejecución, excepto cuando esta en un marco de pagina o cuadrícula
    • Diseñador de Menú
    • Administrador de Proyectos
    • Ventana de Comandos
    • Diseñador de Base de Datos
    • Diseñador de Reportes y Diseñador de Etiquetas
    • Ventanas hijas en formularios MDI

    El comportamiento actual cuando se ejecuta un formulario, difiere de imitar un simple TAB moviéndose entre los controles del formulario.

  • Moverse entre proyectos, excepto cuando la estructura del proyecto esta reducida. También puede moverse entre la hojas del proyecto que fueron desenganchados de la ventana del administrador de proyectos.
  • Puede moverse en la dirección contraria pulsando SHIFT+CTRL+TAB

Visual FoxPro ahora preserva el orden de las ventanas trayendo al primer plano la ventana mas nueva en lugar de mover la ultima ventana a un segundo plano.

Nota AL pulsar la tecla TAB (en lugar de la tecla CTRL+TAB) automáticamente entra en Modo Tab en el diseñador de reportes. El funcionamiento anterior que activaba el Modo Tab al pulsar CTRL+TAB ha sido removido.

Para más información, ver Métodos abreviados de teclado y Diseñador de informes.

Tecla TAB y combinación de teclas SHIFT+F10

Puede moverse a la lista de objetos en la ventana de propiedades pulsando la tecla TAB. En la misma ventana, cuando pulsa en la lista de objetos ó en una etiqueta y presiona SHIFT+F10, Visual FoxPro muestra el menú apropiado. Cuando selecciona una propiedad en la lista de propiedades de la ventana de Propiedades y presiona SHIFT+F10 se abre un menú para esa propiedad.

Para mas información, ver Métodos abreviados de teclado y Ventana Propiedades.

Combinación de teclas CTRL+HOME y CTRL+END

Visual FoxPro proporciona métodos abreviados de teclado cuyo comportamiento es consistente con otros programas Microsoft tales como Excel y Access cuando se navega en una cuadrícula o usamos el comando BROWSE:

  • Al pulsar CTRL+HOME, nos posiciona en el primer registro del cursor o tabla si estamos en una cuadrícula o usamos el comando BROWSE.
  • Nos posiciona en el último registro de la tabla o cursor si pulsamos CTRL+END estando en una cuadrícula o si estamos usando el comando BROWSE.

Para mas información, ver Métodos abreviados de teclado.

Incorporación de la característica IntelliSense en la ventana del Depurador

Puede usarse IntelliSense en la ventana del Depurador para ver objetos Visual FoxPro, propiedades y valores para comandos y funciones. Visual FoxPro limita el uso de IntelliSense a la ventana del depurador porque no se puede escribir directamente en las ventanas de variables locales, Pila de llamadas, Seguimiento o salida del depurador. Para más información, ver Ventana Depurador, Uso de IntelliSense en Visual FoxPro, y Compatibilidad con IntelliSense en Visual FoxPro.

Ajuste automático de línea para el texto de Sugerencias (ToolTip)

Visual FoxPro soporta ajuste automático de línea e incrementó el limite de caracteres que puede mostrar en los textos de sugerencias de 255 a 4095. Para mas información, ver Propiedad ToolTipText.

Viendo propiedades en la ventana de Propiedades usando Zoom

Previamente, existían dificultades para ver valores de propiedades Solo lectura en la lista de propiedades de la ventana de Propiedades que se extendían mas allá del borde derecho de la ventana, sin cambiar el ancho de la misma. Ahora se puede ver el valor de una propiedad solo lectura haciendo clic con el botón secundario del ratón en la propiedad y seleccionando Zoom. Para mas información, ver Ventana Propiedades.

Vea también

Lo Nuevo en Visual FoxPro 8.0 | Mejoras del lenguaje | Mejoras en las características de Datos | Mejoras varias | Cambios de comportamiento desde Visual FoxPro 7.0


Mejoras en los diseñadores de Visual FoxPro

Visual FoxPro contiene numerosas mejoras en sus herramientas de diseño.

  • Soporte para clases adicionales en el Diseñador de clases
  • Mejoras en el Diseñador de formularios
    • Generador de datos de entorno
    • Generador de Servicios XML web
    • Muestra los controles mas recientes seleccionados cuando utilizamos Orden de tabulación
    • No existe límite para el área de diseño
    • Estado persistente en el Diseñador de formularios y en las barras de herramientas de los formularios de control
  • Mejoras en el Diseñador de tablas
    • Generador de expresiones en el campo Título
    • Uso de los títulos de los contenedores de bases de datos (DBC) como expresiones
    • Valores de campos auto increméntales en el Diseñador de tablas
  • Mejoras en las combinaciones para múltiples tablas y en el comando SELECT SQL en los diseñadores de vistas y consultas
  • Soporte para mover menús en el Diseñador de Menú
  • Mejoras en el Diseñador de reportes y en la impresión

Soporte para clases adicionales en el Diseñador de clases

Visual FoxPro incluye mejoras para soporte de clases como detallamos a continuación:

  • Visual FoxPro incluye las clases DataEnvironment, Cursor, Relation, Page, Collection, CursorAdapter, XMLAdapter, XMLField y XMLTable en el cuadro de dialogo "Nueva clase" del Diseñador de clases. Todas las propiedades, métodos y eventos para DataEnvironment, Cursor, Relation, Page, Collection, CursorAdapter, XMLAdapter, XMLField y XMLTable están disponibles en la ventana Propiedades cuando el Diseñador de clases se abre.
  • Visual FoxPro adiciona soporte de lenguaje en los comandos CREATE CLASS y MODIFY CLASS para las clases DataEnvironment, Cursor, Relation, Page, Collection, CursorAdapter, XMLAdapter, XMLField y XMLTable.

Mejoras en el Diseñador de formularios

Visual FoxPro incluye las siguientes mejoras en el Diseñador de formularios:

  • Generador DataEnvironment

    Puede usar el nuevo Generador DataEnvironment para crear un entorno de datos y usar las capacidades de objetos CursorAdapter. Para más información vea Generador de Entorno de datos.

  • Generador de Servicios XML Web

    Puede usar el Generador de servicios XML Web para enlazar un Servicio XML Web para controlar un formulario Visual FoxPro o un objeto, definido como un cursor adapter en el entorno de datos en el formulario, sin escribir código. Para más información vea Generador de Servicios Web XML y Accediendo a servicios Web XML.

  • Muestra los controles mas recientes seleccionados cuando utilizamos Orden de tabulación

    Visual FoxPro ahora resalta los controles recientemente más seleccionados cuando utilizamos orden de tabulación para mover entre controles de un formulario dentro del Diseñador de formularios. Visual FoxPro muestra el orden de tabulación de los controles etiquetándolos con cajas numeradas. En versiones anteriores, después de activar varias nuevas ventanas o aplicaciones, era fácil perder la pista del último control seleccionado durante el proceso de orden de tabulación. Para más información vea Establecer el orden de tabulación para controles.

  • No existe límite para el área de diseño

    El máximo predeterminado para un área de diseño en la ficha formularios en el cuadro de diálogo opciones ahora es Ninguno. Para cambiar la configuración previa de la resolución de 640 x 480 para el área a mostrar, Visual FoxPro previene que el formulario aparezca cortado dentro del Diseñador de formularios. Para más información vea Ficha Formularios, cuadro de diálogo Opciones y Establecer el área de diseño de un formulario.

  • Barra de herramientas de controles de formularios

    Las barras de herramientas de controles de formularios no se abren automáticamente si modifica un formulario u otra clase contenedora, si no tiene un registro en FoxUser.dbf indicando que esa barra de herramientas debe abrirse.

Mejoras en el Diseñador de tablas

Visual FoxPro incluye las siguientes mejoras en el Diseñador de tablas:

  • Valores de campos auto increméntales

    Ahora puede configurar los valores de incremento en los campos en tablas DBC y en tablas libres. Para soportar la característica de auto incremento, el Diseñador de tabla combina las tablas libres y las tablas DBC dentro de una consistente y mejorada interfaz de usuario que contiene las fichas Campos, Indices y Tablas. Puede seleccionar el tipo de dato Entero (AutoInc) y seleccionar los valores Step y NextValue en el Diseñador de tablas. Dependiendo de si crea una DBC o una tabla libre, Visual FoxPro dispone los elementos UI apropiados. Para más información vea Ficha Campos, Diseñador de tablas, Ficha Indices, Diseñador de tablas, y Ficha Tabla, Diseñador de tablas.

  • Uso de los títulos de los contenedores de bases de datos (DBC) como expresiones y generar expresiones en el campo Título

    En las versiones anteriores de Visual FoxPro se utilizaba código complicado en los títulos o etiquetas, para contenedores de bases de datos (DBC) y dificultaban la escritura de aplicaciones para usuarios internacionales.

    Ahora puede generar una expresión en el campo Título de la ficha Campos dentro del Diseñador de tablas o en el cuadro de dialogo Ver propiedades del campo, el cual se abre desde el Diseñador de Consultas o el Diseñador de vistas, para tablas que son parte de un contenedor de base de datos (DBC). Haga clic en el botón puntos suspensivos (...) para abrir el Generador de expresiones. Las expresiones no pueden exceder los 254 caracteres. Si la misma excede los 254 caracteres, el título contendrá en el nombre predeterminado del campo. Para más información vea Ficha Campos, Diseñador de tablas y cuadro de diálogo Propiedades del campo de la vista.

    Cuando arrastra campos a un formulario o a un informe desde uno de los diseñadores, Visual FoxPro usa el título DBC, si existe e intenta evaluarlo. Visual FoxPro evalúa esta expresión en tiempo de diseño y en tiempo de ejecución. El Diseñador de reportes ha sido modificado para incorporar esta mejora, pero no produce una etiqueta cuando un campo es arrastrado hasta un informe.

    Nota El soporte para el uso de expresiones como títulos de campos solo se utilizarán con tablas DBC y aplicaciones ejecutándose con Visual FoxPro 8.0 o superiores. En versiones anteriores, la expresión aparece como una cadena literal.

Mejoras en las combinaciones de múltiples tablas y el comando SELECT SQL en los Diseñadores de consultas y de vistas

Visual FoxPro realza los diseñadores de Consultas y Vistas mejorando la construcción de combinaciones de múltiples tablas y comandos SELECT SQL definidos por el usuario. Los Diseñadores de Consultas y Vistas contienen las siguientes mejoras:

  • Ficha Campos

    Seleccione todas las tablas disponibles y sus campos eligiendo el asterisco (*), todos los campos de una tabla en particular se eligen con la opción tabla.*, o los campos individuales para una consulta o vista. Sus selecciones aparecen en su declaración SELECT en la ventana SQL cuando haga clic sobre Ver SQL o cuando seleccione Ver SQL en el menú Consulta.

    También puede especificar manualmente un asterisco tabla.*, o una lista de campos delimitados por comas en una declaración SELECT en la ventana SQL. Por ejemplo, puede especificar la declaración SQL como SELECT * FROM o SELECT campo1, campo2, ... FROM. Sus preferencias serán mantenidas durante la carga o generación de una consulta o vista.

    Pude incluir el mismo campo varias veces en la lista SELECT.

    Visual FoxPro automáticamente copia el nombre de un campo dentro del Generador de expresiones cuando se selecciona de la lista de Campos disponibles. Por lo tanto, puede utilizar el nombre de un campo para crear su expresión o agregar un nombre alias de un campo escribiéndolo después del nombre del campo en el Generador de expresiones.

    Un número secuencial aparecerá ahora con el nombre de campo en el cuadro de diálogo Propiedades de Vista de campo cuando haga clic sobre el botón Propiedades en la ficha Campos.

    Para más información vea Ficha Campos, Diseñadores de consultas y vistas y cuadro de diálogo Propiedades del campo de la vista.

  • Ficha Combinar

    La ficha Combinar proporciona las nuevas columnas Tabla Izquierda y Tabla Derecha. Puede especificar el nuevo tipo Combinación Cruzada en la columna Combinación. Una combinación cruzada controla cada registro de la tabla izquierda con todos los registros de la tabla derecha. En consecuencia, puede configurar una combinación cruzada solo para la tabla izquierda la cual puede no tener una combinación previa. El Diseñador de vistas no agrega combinaciones cruzadas para las tablas recientemente adicionadas, debiéndose agregar la combinación en forma manual si quiere especificar la posición de la tabla.

    Especifique la prioridad para la combinación y las operaciones lógicas usando la nueva columna Prioridad.

    Puede editar las expresiones que aparecen en las columnas Nombre de Campo y Valor en la ficha Combinación en el Generador de expresiones después de seleccionar <Expresión> desde la lista Nombre de Campo o Valor. La columna Criterio incluye la nueva operación lógica IsTrue.

    Para más información vea Ficha Combinacón, Diseñadores de consultas y vistas.

  • Ficha Filtro

    La ficha Filtro soporta subconsultas. Puede cargar y grabar consultas o vistas con una subconsulta en la cláusula WHERE. Seleccione las nuevas operaciones lógicas Exists e IsTrue en la columna Criterio. Especifique una prioridad para operaciones lógicas usando la nueva columna Prioridad.

    Visual FoxPro ya no incluye el botón Mayúsculas. En su lugar puede utilizar las funciones UPPER( ), LOWER( ) y PROPER( ).

    Para más información vea Ficha Filtro, Diseñadores de consultas y vistas

  • Ficha Ordenar por

    Puede seleccionar campos que no están incluidos en la lista SELECT. Para más información vea Ficha Ordenar por, Diseñadores de consultas y vistas.

  • Ficha Agrupar por

    Ahora puede especificar una prioridad para operaciones lógicas usando cuadro de diálogo. Teniendo en la nueva columna Prioridad. Para más información vea Cuadro de diálogo Condiciones.

  • Ficha Misceláneas

    Seleccione Forzar combinación para agregar una clave FORCE y especificar que esas tablas serán combinadas en el orden en las cuales aparecen en la cláusula FROM.

    Visual FoxPro reemplaza la casilla de verificación Cruzada con un botón e incluye los botones Informe y Etiqueta. Haciendo clic sobre estos botones simplemente agrega la línea de código apropiada después de la cláusula de consulta SQL. No se realiza ningún análisis de los comandos cuando una consulta es recargada. Puede hacer cambios o agregados a este código.

    Nota Es posible agregar múltiples opciones conflictivas al hacer clic repetidas veces sobre estos botones. El Diseñador de Consultas procurará advertirle y le proveerá la opción de remover el comando previo si es la primera vez que encuentra el conflicto. Debe asegurarse que solo el código opcional que aparece en la consulta es el deseado.

    Para más información vea Ficha Varios, Diseñadores de consultas y vistas.

  • El Diseñador de Vistas carga y genera correctamente cualquier cláusula FROM con o sin la opción JOIN, usando paréntesis cuando lo necesite en la cláusula ON.
  • Visual FoxPro proporciona soporte de edición "dos-vías" en los Diseñadores de Consulta y Vistas.

    Puede editar declaraciones SELECT SQL para consultas y vistas, y ver las propiedades configuradas por DBSETPROP( ) llamadas en la ventana SQL y cargar los cambios anteriores dentro de la ventana del diseñador.

    Para más información vea Personalizar consultas usando instrucciones SELECT SQL y Personalizar vistas utilizando instrucciones SELECT SQL.

  • En vez de usar un alias generado automáticamente cuando adiciona una tabla o vista, puede especificar el alias para esta tabla o vista escribiendo en el cuadro Alias que aparece en los cuadros de diálogo Agregar tabla o Agregar vista.
  • Remociones en los Diseñadores de Consultas o Vistas:
    • Ficha Filtro y cuadro de diálogo Contiene

      Visual FoxPro ya no incluye el botón Mayúsculas para comparar un texto con mayúsculas y minúsculas en el campo Ejemplo. En su lugar puede utilizar las funciones UPPER( ), LOWER( ) o PROPER( ) de acuerdo a sus necesidades.

    • Cuadro de diálogo Destino de consulta en el Diseñador de Consultas

      Visual FoxPro actualmente no incluye botones Informes, Gráficos y Etiquetas, los cuales son soportadas para cláusulas no-SQL.

    • Ficha Misceláneas

      Visual FoxPro en esta versión no incluye la casilla de verificación Cruzada.

Soporte para mover menús en el Diseñador de Menús

Fácilmente puede mover menús existentes, submenús y barras de menús en el Diseñador de menús usando el botón Mover elemento. En versiones anteriores de Visual FoxPro, no era fácil mover elementos como barras de menús después de creado uno nuevo o al modificar un menú ya existente. Para más información vea Diseñador de menús y menús contextuales y Cuadro de diálogo Mover elemento.

Mejoras en el Diseñador de informes e impresiones

Visual FoxPro incluye las siguientes capacidades para el diseño de informes e impresión.

Mejoras en el Diseñador de informes

  • Ahora puede especificar si los encabezados y pies de páginas deben estirarse o encogerse para acomodar su contenido dejando el contenido de la casilla de verificación Alto de banda constante sin marcar en los cuadros de diálogo para Pie de página y Encabezado de página. Anteriormente, en esta casilla de verificación no podía eliminarse la marca. El ajuste de la altura es automático cuando se utilizan campos que permitan su estiramiento.
  • Puede tener campos estirables y campos flotantes en pies de páginas y en la Banda resumen. Para más información vea Cuadro de diálogo Pie de página y Cuadro de diálogo Encabezado de página.
  • Podrá elegir si incluye el encabezado y el pie de página cuando imprima la Banda resumen. Para indicar este comportamiento, haga clic en Título/Resumen en el menú Informes cuando el diseñador de informes está abierto y seleccionadas las casillas de verificación Encabezado de página y Pie de página. Para más información vea Cuadro de diálogo Título y resumen.
  • Puede optar por grabar la configuración de la impresora en los apropiados campos memo del registro de cabecera de informes. Para seleccionar esta opción, seleccione Entorno de impresión desde el Menú informes cuando el Diseñador de informes esté abierto. Su selección se mantendrá en la ficha Informes en el cuadro de diálogo Opciones y esa configuración permanecerá para cada informe.

Ficha Informes en el cuadro de diálogo Opciones

En la nueva ficha Informes del cuadro de diálogo Opciones, puede ejecutar las tareas para nuevos informes creados en el Diseñador de informes que se detallan:

  • Configurar las opciones globales como ver líneas de cuadrículas, pegar a la cuadrícula y espaciado horizontal/vertical de la cuadrícula.
  • Seleccionar opciones de informes como usar sesión privada de datos, grabar el entorno de impresión y usar títulos de los campos de un contenedor de base de datos (DBC) cuando arrastre y suelte campos en informes.
  • Ver la posición del control cuadricula
  • Establecer la escala inicial de la regla y el tipo de letra por defecto para los reportes.
  • Para más información vea Cuadro de diálogo Título y resumen

Numeración de Página X de Y

Pude colocar la numeración de página X de Y en reportes usando la nueva variable de sistema _PAGETOTAL.

Para más información, vea Variable del sistema _PAGETOTAL.

Evitar restablecer el número de páginas

Puede especificarle a Visual FoxPro que no restablezca las variables _PAGENO y _PAGETOTAL usando la palabra clave NORESET en el comando REPORT.

Para mas información, vea Comando REPORT

Habilitar Impresión Doble y Encadenar múltiples Reportes

Puede especificar que la impresión no continué en una nueva hoja al final de la impresión de un informe usando la palabra clave NOPAGEEJECT en el comando REPORT. Por lo tanto, puede habilitar impresión doble para continuar en el Reverso de un informe previo. También puede encadenar múltiples reportes usando NOPAGEEJECT.

Para mas información, vea Comando REPORT

Deshabilitar el Cuadro de Diálogo de Impresión

Puede deshabilitar el cuadro de diálogo de impresión usando la palabra clave NODIALOG en el comando REPORT

Para mas información, vea Comando REPORT

Determinar el modo vista previa del Informe

Puede determinar si un informe esta siendo impreso o aparece en modo vista previa usando el nuevo SYS(2040)- Detectar el estado de un informe, la cual retorna valores de 0, 1, o 2 y especifica respectivamente que no existe informe activo, el informe esta en modo vista previa , o el informe se esta imprimiendo.

Vea también

Lo Nuevo en Visual FoxPro 8.0 | Mejoras del lenguaje | Mejoras en las características de Datos | Mejoras varias | Cambios de comportamiento desde Visual FoxPro 7.0


Mejoras en los Editores de Visual FoxPro

Visual FoxPro contiene mejoras en su herramienta de edición:

  • Búsqueda de códigos de referencia y vistas de definiciones de códigos
  • Vistas de código primario y heredado
  • Mejorar la presentación de bloques de código
  • Impresión en colores de la sintaxis del código fuente

Búsqueda de Códigos de Referencias y Vistas de Definiciones de Códigos.

Puede buscar y reemplazar código de referencia o texto usando el cuadro de diálogo de Búsqueda de Referencia. Para más información, vea Buscar y reemplazar referencias de código.

Usted puede localizar y visualizar definiciones de los elementos del código en sus archivos de programas. Para mayor información acerca de vistas de definiciones de código, ver Ver definiciones de código y _FOXREF (Variable del sistema).

Vistas de Código Primario y Heredado

Ahora puede ver el código heredado de una clase primaria de objetos, eventos y métodos, haciendo más fácil la decisión de si desea usar o remplazar el código heredado. El botón para la Vista del Código Primario aparecerá en la ventana de código únicamente si existe la clase primaria. Haciendo un clic en el botón de Visualización de Clases Primarias se desplegarán en negritas las Clases Primarias que tengan código.

Si el código heredado existe para métodos y eventos que aparecen en la lista de propiedades de la ventana de propiedades, los nombres de clases y librerías de clases de donde se heredaron los métodos y eventos, se mostrarán de la siguiente manera:

Inherited cNombreClase BibliotecaClases

Usted puede ver este código heredado haciendo clic-derecho en el método o evento de la lista de propiedades, seleccionando Visualización del Código Heredado en el menú contextual.

La característica de la Vista del código Primario y Vista del Código Heredado solo soportan la visualización del código primario, no la edición. Usted necesitará usar el Explorador de Clases para editar el código de la Clase Primaria si la subclase se encuentra en uso.

Para mayor información, vea Manipular objetos y Ventana Propiedades.

Mejorar la presentación de Bloques de Código

Ahora puede usar la herramienta Presentación para mejorar el aspecto visual de un bloque de código, en lugar de todo el archivo. Puede seleccionar la herramienta de Presentación en el menú Herramientas y en el menú contextual de la ventana de edición de un archivo de programa (.prg). Para mas información, vea Formatear código en los programas.

Impresión en Colores de la Sintaxis del Código fuente.

Ahora puede imprimir su código fuente en colores coincidiendo con la configuración de colores de la sintaxis mostrada en la ventana de Edición de código. Visual FoxPro soporta la impresión en colores de la sintaxis para programas, métodos, procedimientos almacenados y memos. Para imprimir en colores el código fuente, deberá seleccionar la opción de impresión a color de su impresora.

Para mayor información, vea Mostrar e imprimir archivos de código fuente en color.

Vea también

Lo Nuevo en Visual FoxPro 8.0 | Mejoras del lenguaje | Mejoras en las características de Datos | Mejoras varias | Cambios de comportamiento desde Visual FoxPro 7.0

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Mejoras del lenguaje

Visual FoxPro proporciona mas funcionalidad en su lenguaje al agregar y mejorar las clases, comandos y funciones.

En esta sección

Nuevas clases, comandos y funciones
Describe las nuevas clases, comandos, y otras funcionalidades del lenguaje en esta versión de Visual FoxPro.
Clases, Comandos y Funciones mejorados
Describe las clases, comandos y otras funcionalidades del lenguaje mejoradas en esta versión Visual FoxPro.

Secciones relacionadas

Lo Nuevo en Visual FoxPro 8.0
Describe las nuevas características y mejoras para esta versión de Visual FoxPro.
Mejoras del entorno de desarrollo interactivo (IDE)
Describe las adiciones y mejoras al IDE de Visual FoxPro.
Mejoras en las características de Datos
Describe las adiciones y mejoras de las características de datos Visual FoxPro.
Mejoras varias
Describe otras mejoras hechas en esta versión de Visual FoxPro.
Cambios de comportamiento desde Visual Foxpro 7.0
Describe los cambios en el comportamiento del lenguaje existente y funcionalidades.


Nuevas clases, comandos y funciones

Visual FoxPro proporciona nuevas clases, comandos, funciones y variables del sistema con las siguientes características:

  • Manejo estructurado de errores usando TRY...CATCH...FINALLY, THROW y la clase Exception
  • Clase Collection
  • Clases XMLAdapter, XMLTable, XMLField y otras mejoras en XML
  • Eventos enlazados desde objetos Visual FoxPro
  • Definiendo y creando subclases para clases miembros
  • Enlace demorado de controles en formularios utilizando la propiedad BindControls
  • Conectividad Remota usando la clase CursorAdapter
  • Ajuste de tamaño y bloqueo automático para las columnas de un control cuadrícula y la ventana Examinar
  • Resaltado para filas de un control Grid y campos seleccionados
  • Posicionamiento de imágenes en relación con la leyenda
  • Controlando la orientación de las solapas en los controles PageFrame
  • Soporte de Hipervínculos para los controles TextBox y EditBox
  • Soporte para Temas en todos los controles para Windows XP
  • Soporte de imagen GDI+ (archivos .gif animados, propiedad RotateFlip)
  • Controlando la fuente de conjuntos de caracteres sobre objetos que soportan fuentes
  • Soporte para acoplamiento de ventanas y barras de herramientas
  • Centrado de casillas de verificación en columnas del control cuadrícula
  • Mostrando imágenes en la porción de texto de los controles ComboBox
  • Uso del control cuadrícula como si fueran Listbox
  • Clase Empty
  • Disparando eventos cuando se muevan items en un ListBox usando la barra mover
  • Añadiendo y quitando propiedades y valores a objetos en tiempo de ejecución
  • Buscando aplicaciones ejecutables (.exe) en las rutas de acceso de los archivos
  • Quitando valores vacíos cuando no están soportados
  • Habilitando la acumulación de eventos del ratón en la cola de eventos
  • Elección de la compatibilidad hacia atrás del motor de SQL o de conformidad con Visual FoxPro 8.0
  • Permitiendo que los valores predeterminados aparezcan en el formulario
  • Especificando el nivel de validación de tablas a realizar
  • Nuevas clases fundamentales para XML Web Services

Control estructurado de errores usando TRY...CATCH...FINALLY, THROW y la clase Exception

Puede ahora implementar un manejo estructurado de errores y excepciones usando la funcionalidad TRY...CATCH...FINALLY, la que incluye la nueva clase Exception, la cláusula THROW y la función SYS(2410) - Manejo de Error

Puede definir y crear una subclase de la clase Exception la cual es utilizada en el manejo de errores y excepciones. Visual FoxPro genera objetos Exception automáticamente para guardar la información de un error cuando él ocurre en el bloque TRY de una estructura TRY...CATCH...FINALLY.

Para mayor información, vea Control estructurado de errores, TRY...CATCH...FINALLY (Comando), Exception (Clase) y SYS(2410) - Controlador de errores.

Clase Collection

Puede usar colecciones para crear un conjunto de elementos relacionados. Las colecciones ofrecen la manera de trabajar con objetos contenidos y usar caminos estándar para acceder e iterar a través de los elementos. Para mayor información, vea Collection (Clase).

Clases XMLAdapter, XMLTable, XMLField y otras mejoras en XML

Visual FoxPro agrega las clases XMLAdapter, XMLTable y XMLField para mejorar la compatibilidad con XML DiffGram y los formatos ADO.NET DataSet y para soportar XML con formato jerárquico para lo que sigue:

  • Archivos XML que contengan esquemas asociados con ellos, tanto internos como externos, implementados como en los ADO.NET DataSets
  • Microsoft XML Data Reduced Schema (XDR) (esquema de datos reducido) como el usado por Microsoft SQL-XML
  • Esquemas "ADO Recordset" que se producen cuando a un Recorset de ADO se guarda como XML en un archivo o sucesión de caracteres

XMLAdapter es una clase de "dos sentidos". Puede importar XML junto con el esquema que contiene para crear tablas o bien puede crear y generar XML a partir de tablas.

Nota La clase XMLAdapter requiere Microsoft XML Core Services (MSXML) 4.0 Service Pack 1 (SP1) o posterior.

Visual FoxPro actualiza la función STRCONV( ) para soportar codificación y decodificación Hexadecimal-Binaria.

Para mayor información vea Funcionalidad XML: Usando XMLAdapters, Equivalencia entre tipo de datos Visual FoxPro y esquema XML, XMLAdapter (Clase), XMLTable (Clase), XMLField (Clase) y STRCONV( ) (Función).

Eventos enlazados desde objetos Visual FoxPro

Visual FoxPro extiende el soporte del manejo de eventos para eventos nativos de Visual FoxPro por medio de las funciones BINDEVENT( ), UNBINDEVENTS( ), RAISEEVENT( ) y AEVENTS( ). Para mayor información vea Enlace de Eventos para objetos de Visual FoxPro.

Definiendo y creando subclases para clases miembros

Puede definir y crear subclases para ciertas clases miembros. Esos miembros y sus contenedores primarios incluyen a los siguientes:

  • Page y PageFrame
  • CommandButton y CommandGroup
  • OptionButton y OptionGroup
  • Column y control cuadrícula
  • Header y Column

Usando clases miembro puede definir un comportamiento consistente para todos los miembros de una clase específica. Por ejemplo, puede definir un comportamiento particular en el evento Activate de la clase Page que será usado en una clase u objeto PageFrame específico. Todas las páginas miembro del marco de página, heredan el mismo código o comportamiento.

Las clases PageFrame, CommandGroup, OptionGroup y control Grid tienen dos nuevas propiedades, MemberClassLibrary y MemberClass, las cuales pueden ser usadas para establecer la clase predeterminada para los objetos miembro. Cuando se establecen esas propiedades los nuevos objetos miembro heredan de la clase especificada.

Los objetos Column tienen dos propiedades nuevas, HeaderClassLibrary y HeaderClass los que se pueden establecer para especificar una clase Header propia.

Ahora puede editar y crear una subclase de la clase Page en el Diseñador de Clases. Las clases CommandButton y OptionButton ya existen en el Diseñador de Clases. Sin embargo, el Diseñador de Clases no incluye las clases Column y Header.

Para mayor información, vea MemberClass (Clase).

Enlace demorado de controles en formularios utilizando la propiedad BindControls

Puede ahora especificar cuando ocurrirá el enlace de datos con los controles a los que se deben enlazar, dándole valor a la propiedad BindControls para los objetos Form. Para mayor información, vea BindControls (Propiedad).

Conectividad Remota usando la clase CursorAdapter

Visual FoxPro proporciona una conectividad remota mejorada por la inclusión de la nueva clase CursorAdapter y el añadido de las propiedades DataSource y DataSourceType a la clase DataEnvironment. Para mayor información, sobre la clase CursorAdapter, vea Mejoras en las características de Datos.

Ajuste de tamaño y bloqueo automáticos para las columnas del control Grid y la ventana Examinar

Puede ajustar automáticamente columnas del control cuadrícula al tamaño de los datos así como ventana Examinar, colocando la propiedad AllowAutoColumnFit y usando el método AutoFit. Para mayor información, vea AllowAutoColumnFit (Propiedad), AutoFit (Metodo), y Ajuste automático de columnas a los datos.

Puede fijar columnas en el comando BROWSE con la cláusula LOCK o bien dando con las propiedades Grid LockColumns y LockColumnsLeft. Para mayor información, vea BROWSE (Comando), LockColumns (Propiedad), LockColumnsLeft (Propiedad), y Bloquear Columnas.

Resaltado para filas de un control cuadrícula y campos seleccionados

Puede controlar el color mostrado en filas e items de los controles TextBox seleccionados en un control cuadrícula, colocando las propiedades HighlightForeColor, HighlightBackColor, SelectedItemBackColor, SelectedItemForecolor y HighlightStyle

Posicionamiento de imágenes en relación con la leyenda

Puede ubicar imágenes en relación con las leyendas colocando la propiedad PicturePosition para los controles CommandButton, OptionButton y CheckBox.

Para mayor información, vea PicturePosition (Propiedad).

Controlando la orientación de las solapas en los controles PageFrame

Puede controlar donde mostrar las solapas en el control PageFrame colocando la propiedad TabOrientation. Para mayor información, vea TabOrientation (Propiedad).

Soporte de Hipervínculos para los controles TextBox y EditBox

Puede controlar cuando mostrar y habilitar hipervínculos dentro de los controles TextBox y EditBox colocando la propiedad EnableHyperlinks. Para mayor información, vea EnableHyperlinks (Propiedad).

Soporte para Temas en todos los controles para Windows XP

Puede incoporar soporte para Temas de Windows XP, para aplicaciones que corran bajo el sistema operativo Windows XP. Temas de Windows XP es una nueva tecnología que controla el número de atributos visuales de los elementos de la interfase de usuario, incluyendo la apariencia de los controles, el color y estilo de los bordes, la selección y los efectos hover. Para mayor información, vea Themes (Propiedad), Style (Propiedad) y SYS(2700) - Activar Temas de Windows XP.

Soporte de imagen GDI+ (archivos .gif animados, propiedad RotateFlip)

Visual FoxPro reemplaza el soporte nativo de presentación para los formatos Graphics Interchange Format (.gif) y Joint Photographic Electronic Group (.jpeg), con Graphics Device Interface+ (GDI+), la generación siguiente del dispositivo de interfase de gráficos para Microsoft Windows XP y para las ediciones futuras del sistema operativo Windows.

Con GDI+ puede ahora rotar e invertir o estirar una imagen colocando la propiedad RotateFlip del control Image.

Para mayor información, vea Compatibilidad con gráficos en Visual FoxPro, RotateFlip (Propiedad), Picture (Propiedad) y Cuadro de diálogo Abrir imagen.

Controlando la fuente de conjuntos de caracteres sobre objetos que soportan fuentes

Ahora puede controlar la fuente de conjuntos de caracteres en cada objeto que soporte fuentes, colocando la propiedad FontCharSet. Para mayor información, vea FontCharSet (Propiedad).

Soporte para acoplamiento de ventanas y barras de herramientas

Puede acoplar programáticamente ventanas de herramientas IDE y barras de herramientas usando el nuevo comando DOCK WINDOW. La nueva función ADOCKSTATE( ) devuelve el estado de las ventanas y barras de herramientas acopladas. Para mayor información, vea Acoplar ventanas, DOCK WINDOW (Comando) y ADOCKSTATE( ) (Función).

Centrado de casillas de verificación en columnas de un control cuadrícula

Puede alinear casillas de verificación con el centro de las columnas de un control cuadrícula colocando la nueva propiedad Centered para los controles CheckBox, usando la siguiente sintaxis:

CheckBox.Centered [= lExpr]

Puede colocar Centered en Falso (.F.) que es el valor predeterminado e indica no centrado o Verdadero (.T.), que indica que la casilla de verificación estará alineada con el centro de los limites del control. La propiedad Centered trabaja con la propiedad Alignment del control, que alinea texto, para determinar de que lado de la casilla de verificación aparecerá la leyenda. Para mayor información, vea Centered (Propiedad).

Mostrando imágenes en la porción de texto de los controles ComboBox

En versiones previas, la imágenes que acompañaban entradas en la lista de un control ComboBox no aparecían en el texto del control cuando se seleccionaba una entrada. Puede opcionalmente, mostrar una imagen en la caja de texto de un control ComboBox y determinar como aparece la imagen, colocando la propiedad PictureSelectionDisplay.

Para mayor información, vea PictureSelectionDisplay (Propiedad).

Usando un control cuadrícula como si fuera listbox

Puede imitar un listbox usando un control cuadrícula especificándole si los usuarios pueden seleccionar celdas individuales o deben seleccionar una fila entera dándole valor a la propiedad Grid AllowCellSelection. Seleccionar celdas individuales o la fila entera no hace al cambio de color de la celda o fila seleccionada. El evento KeyPress ahora también se aplica al control Grid.

Para mayor información, vea AllowCellSelection (Propiedad) y KeyPress (Evento).

Clase Empty

Puede usar la clase Empty para trabajar con objetos de negocio. Un objeto Empty se instancia y libera rápidamente para optimizar el rendimiento. Típicamente se usa un objeto Empty en los escenarios siguientes:

  • Cuando se agregan o se quitan propiedades a una instancia de una clase en tiempo de ejecución usando las funciones ADDPROPERTY( ) y REMOVEPROPERTY( ).
  • Cuando de usa el comando SCATTER...NAME con la cláusula ADDITIVE para llenar el contenido desde el registro corriente.

La clase Empty no contiene propiedades intrínsecas, métodos ni eventos. No se pueden hacer subclases. Puede añadir propiedades sólo en tiempo de ejecución usando la función ADDPROPERTY( ) o el comando SCATTER...NAME con la cláusula ADDITIVE.

La clase Empty está disponible solamente dentro de un archivo de programa (.prg). No puede definir una clase Empty en un archivo visual de clase (.vcx).

Para mayor información, vea Empty (Clase).

Disparando eventos cuando se mueven elementos en un listbox usando la barra mover

Puede especificar cierto comportamiento tal como cancelar el movimiento de un elemento cuando lo mueve para arriba o abajo en un control ListBox con una barra de movimiento, usando el ratón, teclado o programación, con el nuevo evento OnMoveItem. OnMoveItem se desencadena luego de seleccionar y mover el elemento y luego de cada movimiento siguiente, pero antes de que ese movimiento se muestre en el listbox. Para mayores detalles, vea OnMoveItem (Evento).

Se puede programar para mover elementos a nuevas posiciones usando el nuevo método MoveItem. Para mayores detalles, vea MoveItem (Método).

Añadiendo y quitando propiedades y valores a objetos en tiempo de ejecución

En tiempo de ejecución, puede dinámicamente, agregar y quitar propiedades y sus valores, de cualquier objeto válido de Visual FoxPro, incluyendo aquellos creados a partir de clases Visual FoxPro, clases COM o los creados con el comando SCATTER...NAME. Para mayor información, vea ADDPROPERTY( ) (Función) y REMOVEPROPERTY( ) (Función).

Buscando aplicaciones ejecutables (.exe) en las rutas de acceso de los archivos

Los clientes que ejecuten aplicaciones Visual FoxPro propias, que accedan datos y recursos de la red, podrán a veces experimentar alguna degradación del rendimiento cuando la aplicación busque en la red alguna función, procedimiento o archivo ejecutable dentro de otra aplicación.

Puede ahora especificar a Visual FoxPro que busque dentro de una aplicación algún procedimiento o función definida por el usuario (UDF) especificadas antes de que busque en las ubicaciones definidas por el SET DEFAULT y SET PATH. Haciendo eso, puede incrementar el rendimiento de aplicaciones que corran en una LAN o en una WAN. Para mayor información, vea SYS(2450) - Orden de búsqueda de la ruta de la aplicación y DO (Comando).

Quitando valores vacíos cuando no están soportados

Puede sustituir por un valor apropiado como Falso (.F.) o cero (0) en lugar de vacío. Puede utilizar esta funcionalidad para quitar valores vacío de cálculos u operaciones donde estos valores no son soportados o no son relevantes. Para mayor información, vea EVL( ) (Función).

Habilitando la acumulación de eventos de rueda del ratón en la cola de eventos

Habitualmente, para suavizar el desplazamiento provocado por la rueda del ratón, Visual FoxPro acumula eventos de rueda del ratón. Con computadoras mas rápidas, la acumulación de esos eventos no resulta tan critica como para impedir la propia implementación de la Clase Fundamental (Foundation Class). Ahora se puede elegir si habilitar o no la acumulación del los eventos de la rueda del ratón usando la nueva función SYS(2060) - Evento MouseWheel (de rueda del ratón).

Elección de compatibilidad hacia atrás del motor de SQL o de conformidad con Visual FoxPro 8.0

Puede ahora especificar que Visual FoxPro ejecute los comandos SELECT SQL como en versiones anteriores o bien a la manera de Visual FoxPro 8.0. Esto hace posible que se mantenga la compatibilidad hacia atrás en aplicaciones que usan el motor de SQL de versiones anteriores a Visual FoxPro 8.0. Para mayor información, vea SYS(3099) - Modo de compatibilidad con el Motor de Datos SQL y SET ENGINEBEHAVIOR (Comando).

Permite que los valores predeterminados aparezcan en el formulario

Puede establecer la nueva propiedad de formulario AllowOutput para determinar si el valor predeterminado aparece en el formulario. Para mayor información, vea AllowOutput (Propiedad).

Especifique el nivel de validación de tablas a realizar

Puede utilizar el comando SET TABLEVALIDATE cuando se quiera disminuir el nivel de control de integridad respecto del valor predeterminado. Para mayor información, vea SET TABLEVALIDATE (Comando).

Nuevas clases fundamentales para XML Web Services

Visual FoxPro reemplaza las bibliotecas de clases fundamentales _WebServices.vcx y _WebServices.vct con las bibliotecas _ws3Utils.vcx _ws3Client.vcx. Estas nuevas bibliotecas usan SOAP Toolkit 3.0. Para mayor información, vea Servicios Web XML (Foundation Class).

Vea también

Mejoras del lenguaje | Mejoras del entorno de desarrollo interactivo (IDE) | Mejoras en las características de Datos | Mejoras varias | Cambios de comportamiento desde Visual Foxpro 7.0


Clases, Comandos y Funciones mejorados

Visual FoxPro contiene las siguientes mejoras para las clases, comandos y funciones seleccionadas:

  • Funcionalidad mejorada para paso a través de SQL y mejoras al lenguaje
  • Múltiples expresiones de distintos tipos de datos en el comando DEBUGOUT
  • Especificar clases DataEnvironment externas para formularios
  • Soporte del lenguaje para secuencias de intercalación y valores de campos auto increméntales
  • Soporte para la propiedad FontCharSet en AFONT()
  • HOME(8) retorna el subdirectorio de proyectos de Visual FoxPro
  • Activa/desactiva mapas de bits fuera de pantalla
  • Mejoras a los Componente (COM) para un mejor soporte de matrices y tipos
  • Puntero del ratón con forma de mano para la propiedad MousePointer
  • Propiedad MaxLength disponible para controles ComboBox
  • Soporte del lenguaje para expresiones en los títulos
  • Cambiar el color de fondo del control CommandButton
  • Mostrar imágenes en el encabezado de una columna
  • Propiedades ToolTipText y StatusBarText para todos los controles visuales
  • Método Refresh para los controles Label y Shape
  • Ofrecer múltiples archivos de configuración
  • Supresión de la visualización de mensajes relacionados con datos en la barra de estado
  • Retorno valores de checksum mayores que 16 bits con SYS(2007)
  • Eliminación de espacios en blanco en combinaciones de texto
  • Actualización de un objeto existente con valores del registro actual utilizando SCATTER...NAME
  • Especificar un objeto cuando se inserta un nuevo registro en una tabla empleando el comando INSERT SQL
  • Ocultar columnas
  • CLEAR DEBUG reinicia las ventanas abiertas del Depurador (Debugger) y borra todos los puntos de interrupción
  • Suspensión de la ejecución de un programa hasta que ocurra un evento Windows
  • Comprobación de la existencia de archivos ocultos o de sistema y directorios
  • Recuperación de la referencia al objeto contenedor en contexto con la ventana de edición de código actual
  • Especificar el nombre y la ubicación del esquema de asignación para la función XMLUPDATEGRAM( )

Funcionalidad mejorada para paso a través de SQL y mejoras al lenguaje

Visual FoxPro incluye las siguientes mejoras para la funcionalidad de paso a través de SQL y para las conexiones compartidas.

Visual FoxPro ahora evalúa las expresiones que se pasan como valores de parámetros en una instrucción SQL para SQLEXEC( ). Previamente, se requería una variable de memoria para pasar cualquier valor no constante. Ya no se requiere encerrar entre paréntesis las expresiones de parámetros. Visual FoxPro puede ahora evaluar nombres de variables de memoria, llamadas a funciones y expresiones de parámetros. Para más información, vea la Función SQLEXEC( ).

Visual FoxPro asigna un identificador de instrucción (HTSTMT) de Open Database Connectivity (ODBC) pero usa un identificador ODBC compartido existente por cada vista remota que usa una conexión compartida. Si la vista remota no usa una conexión compartida, Visual FoxPro asigna un identificador de instrucción ODBC y un identificador de conexión ODBC separados.

Visual FoxPro utiliza la función SQLEXTENDEDFETCH( ) en lugar de la función SQLFETCH( ) para identificadores de instrucción ODBC que usan identificadores de conexión ODBC compartidos. Visual FoxPro establece las opciones SQL_CURSOR_TYPE = SQL_CURSOR_STATIC y SQL_CONCURRENCY = SQL_CONCUR_READ_ONLY antes que SQLPrepare o SQLExecDirect para estos identificadores de instrucción ODBC. Para más información sobre el lenguaje ODBC, ver la Referencia del programador ODBC en la MSDN Library en http://msdn.microsoft.com/library/.

Las funciones SQLCONNECT( ) y SQLSTRINGCONNECT( ) retornan un valor numérico como el identificador de instrucción y no un identificador de conexión, el cual no se puede obtener directamente. Todavía se puede establecer y obtener las propiedades de la conexión utilizando las funciones SQLSETPROP( ) y SQLGETPROP( ) pasando el identificador de instrucción para esa conexión y la cadena de texto "Shared" como argumentos. Todas las otras funciones SQL usan el identificador de instrucción en lugar del identificador de conexión. Para más información, ver la función SQLSETPROP( )y la función SQLGETPROP( ).

Se puede especificar la creación de una conexión compartida usando los nuevos parámetros lShared y nStatementHandle para la función SQLCONNECT( ) y el nuevo parámetro lShared para la función SQLSTRINGCONNECT( ). También se puede usar SQLCONNECT( ) para obtener un nuevo identificador de instrucción sobre una conexión compartida que fue abierta con SQLSTRINGCONNECT( ). Adicionalmente, se pueden especificar valores opcionales para los parámetros cUserID y cPassword cuando se emplea una conexión con nombre para cConnectionName. Para más información, ver la función SQLCONNECT( ) y la función SQLSTRINGCONNECT( ).

Visual FoxPro soporta la sobreescritura de la conexión predeterminada para una vista remota y requiere el nuevo parámetro m.nStatementHandle para soportar conexiones compartidas en el comando USE. Para más información, ver el comando USE.

Cuando se incluye la palabra clave SHARE con la cláusula CONNECTION en el comando CREATE SQL VIEW, Visual FoxPro usa el nuevo identificador de instrucción para la conexión compartida si existe uno disponible. Si una conexión compartida no está disponible, Visual FoxPro crea una conexión compartida cuando se abre la vista, la cual podría ser compartida con otras vistas. Para más información, ver el comando CREATE SQL VIEW.

Múltiples expresiones en el comando DEBUGOUT

Se pueden evaluar múltiples expresiones de diferentes tipos de datos y mostrar sus resultados en la ventana de salida del depurador usando el comando DEBUGOUT. Para más información, ver el comando DEBUGOUT.

Especificar clases DataEnvironment externas para formularios

Se pueden especificar clases DataEnvironment externas estableciendo las propiedades DEClass y DEClassLibrary para objetos Formularios. Para más información, ver el objeto DataEnvironment, la Propiedad DEClass y la propiedad DEClassLibrary.

Soporte del lenguaje para secuencias de intercalación y valores de campos auto increméntales

Ahora se puede especificar una secuencia de ordenación para un índice cuando se usan los comandos SQL CREATE TABLE, ALTER TABLE e INDEX, que incluyen la cláusula COLLATE.

Los comandos CREATE TABLE y ALTER TABLE soportan valores de campo de incremento automático al incluir la cláusula AUTOINC y especificar los valores para las cláusulas NEXTVALUE y STEP. El comando DISPLAY STRUCTURE muestra los valores de Next y Step para los campos auto increméntales.

Para más información, ver el comando CREATE TABLE - SQL, el comando ALTER TABLE - SQL, el comando INDEX y el comando DISPLAY STRUCTURE.

También se puede especificar si los intentos de actualizar los valores en un campo auto increméntales generan un error. Para más información, ver el comando SET AUTOINCERROR o la propiedad AutoIncError en la función CURSORSETPROP( ).

Soporte para la propiedad FontCharSet en AFONT()

Visual FoxPro soporta la propiedad FontCharSet en la función AFONT() proporcionando para ello dos parámetros, nFontCharSet y nFlags. El primer parámetro especifica el conjunto de caracteres en el cFontName. El segundo parámetro, especifica un valor de 1 y llena ArrayName con conjuntos de caracteres disponibles para una fuente particular. Para más información, ver la propiedad FontCharSet y la función AFONT( ).

HOME(8) retorna el subdirectorio de proyectos de Visual FoxPro

HOME(8) retorna el subdirectorio de proyectos de Visual FoxPro, el cual es el directorio predeterminado para nuevos proyectos y archivos creados por Visual FoxPro, ubicado en el directorio Mis Documentos del usuario. Para más información, ver la función HOME( ).

Activa/desactiva mapas de bits fuera de pantalla

Visual FoxPro incluye soporte para habilitar y deshabilitar los mapas de bits fuera de la pantalla usando un archivo de configuración. Ahora se puede usar la función SYS(602) - Configuración de mapa de bits y los valores 0 y 1 para deshabilitar y habilitar los mapas de bits fuera de la pantalla en tiempo de ejecución.

Para más información, ver SYS(602) - Configuración de mapa de bits.

Mejoras a lo Componentes (COM) para un mejor soporte de matrices y tipos

Visual FoxPro mejora su soporte para la creación de componentes COM y la interoperabilidad con otros componentes COM incluyendo las siguientes mejoras:

  • Definir y especificar tipos de datos diferentes a Variant para matrices

    Se puede especificar un tipo de datos distinto a Variant en el comando DIMENSION usando la cláusula AS cType. No obstante, todavía deberá emplear la función COMARRAY( ) para controlar otras configuraciones de cómo se pasan las matrices a servidores COM. Para más información, ver el comando DIMENSION.

  • Tipos estrictos para matrices en bibliotecas de tipos

    Se puede especificar un tipo estricto para matrices de manera que puedan ser correctamente escritas como una matriz segura en una biblioteca de tipos cuando se emplea el nuevo parámetro cArrayName[] en la cláusula cArrayName[] [AS Type] [@] del comando DEFINE CLASS. Para más información, ver el comando DEFINE CLASS.

  • Escribir tipos complejos

    Se puede definir un tipo basado en una clase COM usando la cláusula cArrayName[] [AS Type] [@] ] [AS Type] del comando DEFINE CLASS. Para más información, ver el comando DEFINE CLASS.

  • Especificar cómo se pasan las matrices a objetos COM empleando la función COMARRAY( )

    Se puede especificar que matrices de bytes no sean convertidas a cadenas de caracteres pasando un valor de 1000 al nuevo parámetro nNewValue en la función COMARRAY( ). Esto mejora el soporte de cómo se tratan las matrices de bytes. Para más información, ver la función COMARRAY( ).

  • Visual FoxPro ahora genera bibliotecas de tipo para servidores COM que marcan los tipos Carácter como BSTR en lugar de VARIANT en la biblioteca de tipos COM de Visual FoxPro. Este nuevo comportamiento coincide con el del tipo Cadena (String). Por ejemplo, el siguiente procedimiento aparece en la biblioteca de tipos COM con un tipo de retorno de BSTR:
    PROCEDURE myProc( ) AS Character

Puntero del ratón con forma de mano para la propiedad MousePointer

Se puede especificar que el puntero del ratón adopte la forma de una mano cuando se lo mueve sobre un control configurando la propiedad MousePointer en un valor de 15. Para más información, ver la propiedad MousePointer. En aplicaciones de Visual FoxPro que se ejecuten en el sistema operativo Windows NT 4.0, aparece una flecha en lugar de una mano.

Propiedad MaxLength disponible para controles ComboBox

Se puede establecer la propiedad MaxLength para controles ComboBox además de los controles EditBox y TextBox. Para más información, ver la propiedad MaxLength.

Soporte del lenguaje para expresiones en títulos

La propiedad título de campo para tablas y vistas en DBGETPROP( ) soporta expresiones como títulos de campo. Para más información, ver las tablas que listan las propiedades para campos de tablas y vistas en la función DBGETPROP( ).

Nota El soporte para usar expresiones como títulos de campos debería ser usada sólo con tablas DBC en aplicaciones que corran sobre Visual FoxPro 8.0 o posterior. En versiones anteriores, la expresión aparece como una cadena literal.

Se puede obtener el título de un campo almacenado en el contenedor de base de datos (DBC) empleando la función FIELD( ). Para más información, ver la función FIELD( ).

Cambiar el color de fondo del control CommandButton

Ahora se puede cambiar el color de fondo del texto y gráfico en un botón de comando accesible o inaccesible estableciendo las propiedades BackColor y DisabledBackColor del control CommandButton. Estas dos propiedades existen para otros controles de Visual FoxPro. Para más información, ver las propiedades BackColor, ForeColor, DisabledBackColor y DisabledForeColor.

Mostrar imágenes en el encabezado de una columna

Ahora se puede mostrar imágenes en el encabezado de una columna estableciendo la propiedad Picture para un objeto Header de una columna. Alternando Themes entre encendido y apagado afecta la apariencia de la imagen. La propiedad Picture existe para otros controles de Visual FoxPro.

Para más información, ver la propiedad Picture y la propiedad Themes.

Propiedades ToolTipText y StatusBarText para todos los controles visuales

Ahora se puede establecer las propiedades ToolTipText y StatusBarText para todos los controles visuales incluyendo a los controles OptionGroup, CommandGroup, Line, Control, Container, PageFrame, OleBoundControl, Column, Header, Image y Label.

Para más información, ver la propiedad ToolTipTexty la propiedad StatusBarText.

Método Refresh para los controles Label y Shape

Ahora se puede emplear el método Refresh para volver a dibujar y actualizar los valores en los controles Label y Shape. Cuando se llama al método Refresh para un control Label, Visual FoxPro actualiza la propiedad Caption y vuelve a dibujar la etiqueta. Cuando se llama al método Refresh para un control Shape, Visual FoxPro dibuja nuevamente el control. Para más información, ver el método Refresh.

Ofrecer múltiples archivos de configuración

Se puede utilizar una archivo de configuración externo además de la configuración interna en circunstancias donde se requiera establecer configuraciones separadas. Por ejemplo, establecer SCREEN=OFF debería realizarse en un archivo de configuración interna.

Cuando arranca Visual FoxPro, se puede usar el archivo de configuración predeterminado desde las siguientes ubicaciones, en el orden:

  • Directorio de trabajo actual
  • Directorio donde está instalado Visual FoxPro
  • Directorios listados en el camino DOS

Se puede configurar a Visual FoxPro para que lea una archivo de configuración externo después de una archivo de configuración interno utilizando la nueva directiva ALLOWEXTERNAL en el archivo de configuración interno. Cuando se incluye ALLOWEXTERNAL=ON en el archivo de configuración interno, Visual FoxPro busca un archivo de configuración externo, habitualmente Config.fpw, y lee su configuración. También se puede especificar un archivo de configuración diferente empleando el modificador -C de la línea de comando al iniciar Visual FoxPro.

Nota Para servidores de archivo .exe y .dll, Visual FoxPro soporta sólo archivos de configuración incluidos dentro del servidor. En consecuencia, Visual FoxPro no tiene en cuenta la configuración de ALLOWEXTERNAL.

Para más información sobre modificadores de la línea de comando, ver Usar opciones de línea de comandos al iniciar Visual FoxPro.

Las configuraciones en un archivo de configuración externo tienen precedencia sobre aquellas en el archivo de configuración interno si existen valores duplicados, porque el archivo externo se lee después que el interno. Visual FoxPro no comienza la inicialización hasta que no lee ambos archivos.

Si se desea especificar el archivo de configuración como de sólo lectura, colocarlo en el proyecto y marcarlo como incluido. Si se desea especificar que el archivo pueda ser modificado, colocarlo en el proyecto y marcarlo como excluido. Entonces, se podrá distribuir el archivo en forma separada con la aplicación o el ejecutable. Por convención, los archivos de configuración usan la extensión .fpw.

Para más información, ver Términos especiales para archivos de configuración y Establecer opciones de configuración durante el inicio.

Supresión de la visualización de mensajes relacionados con datos en la barra de estado

Se puede suprimir la visualización de mensajes relacionados con datos en la barra de estado de Visual FoxPro empleando la nueva palabra clave CURSOR en el comando SET NOTIFY. Estos mensajes incluyen aquellos relacionados con aliases, fuentes de datos, punteros de registros, cuentas de registros, estado exclusivo y estado de bloqueo de registros.

Para más información, ver el comando SET NOTIFY.

Retorno valores de Checksum mayores que 16 bits con SYS(2007)

Se pueden generar valores de Checksum mayores que 16 bits para cadenas de texto largas cuando se usa SYS(2007) - valor de Checksum. Visual FoxPro incluye una función complementaria, SYS(2017) - Valor de Checksum de registro, que calcula un valor de checksum basado en el registro actual en el área de trabajo actual. Para más información, ver SYS(2007) - Valor de suma de comprobación y SYS(2017) - Checksum (suma de comprobación) del registro.

Eliminación de espacios en blanco en combinaciones de texto

Se puede especificar como debería ser eliminado cualquier espacio en blanco que aparezca antes de cada línea en una combinación de texto empleando la cláusula PRETEXT en el comando TEXT...ENDTEXT. Proporcionando la cláusula PRETEXT, Visual FoxPro mejora su soporte para XML y servicios Web y proporciona una mejor integración y manipulación de XML en el código Visual FoxPro. Para más información, ver el comando TEXT ... ENDTEXT.

Actualización de un objeto existente con valores del registro actual utilizando SCATTER...NAME

Se puede actualizar las propiedades de un objeto existente especificado por ObjectName con valores del registro actual utilizando la palabra clave ADDITIVE en la cláusula NAME del comando SCATTER. Para más información, ver el comando SCATTER.

Especificar un objeto cuando se inserta un nuevo registro en una tabla empleando el comando INSERT SQL

Ahora se puede insertar un nuevo registro en una tabla con campos que se correspondan a un objeto que se puede especificar utilizando la nueva cláusula FROM NAME ObjectName en el comando INSERT SQL. Para más información, ver el comando INSERT - SQL.

Ocultar Columnas

Se pueden ocultar columnas de una cuadrícula estableciendo la propiedad Visible para una columna como Falso (.F.). Para más información, ver objeto Column.

CLEAR DEBUG reinicia las ventanas abiertas del Depurador (Debugger) y borra todos los puntos de interrupción

Previamente, el comando CLEAR DEBUG no borraba todos los puntos de interrupción en el Depurador. Ahora CLEAR DEBUG borra todos los puntos de interrupción automáticamente.

Cuando el Depurador está abierto, Visual FoxPro borra todos los puntos de interrupción y restablece las ventanas del Depurador en sus posiciones predeterminadas. Cuando el depurador está cerrado, Visual FoxPro lo abre con sus ventanas en las posiciones predeterminadas.

Para más información, ver los comandos CLEAR.

Suspensión de la ejecución de un programa hasta que ocurra un evento Windows

Se puede pausar la ejecución de un programa hasta que ocurra un evento Windows, tal como el movimiento del ratón, utilizando la nueva palabra clave FORCE con el comando DOEVENTS. Para más información, ver el comando DOEVENTS.

Comprobación de la existencia de archivos ocultos o de sistema y directorios

Puede comprobar la existencia de archivos de sistema u ocultos lo mismo que directorios, utilizando el nuevo parámetro nFlags en las funciones FILE( ) y DIRECTORY( ). También puede usar los comandos CD y CHDIR para ir a directorios ocultos. Para mas información, consulte FILE( ) (Función), DIRECTORY( ) (Función), y CD | CHDIR Comando.

Recuperar referencia a un Objeto contenedor en el contexto con la ventana Modificar código

Visual FoxPro agrega el valor de 3 como un posible parámetro para la función ASELOBJ( ) cuando desea recuperar la referencia del objeto contenedor en contexto con la ventana Modificar código. Para mayor información, ver ASELOBJ( ) (Función).

Especifica el nombre y ubicación del esquema de equivalencias para la función XMLUPDATEGRAM( )

Visual FoxPro incluye el parámetro cSchemaLocation en la función XMLUPDATEGRAM( ), así puede especificar el nombre y ubicación del esquema de equivalencias que usted proporcione. Para más información, consulte XMLUPDATEGRAM( ) (Función).

Vea también

Mejoras del lenguaje | Mejoras del entorno de desarrollo interactivo (IDE) | Mejoras en las características de Datos | Mejoras varias | Cambios de comportamiento desde Visual Foxpro 7.0


Mejoras en las características de Datos

Visual FoxPro contiene las siguientes adiciones y mejoras en las características de datos:

  • Conectividad remota de datos usando la clase CursorAdapter
  • Creación de clases, de subclases, y especificaciones de una clase DataEnvironment
  • Incremento automático de valores de campo
  • Soporte para secuencia de ordenación
  • Conversión implícita de datos para el comando SQL SELECT...UNION
  • Insertar registros desde un comando SQL SELECT

Conectividad Remota de Datos Usando la Clase CursorAdapter

Puede trabajar con un amplio rango de fuentes de datos usando la nueva clase CursorAdapter. La clase CursorAdapter ofrece las siguientes posibilidades:

  • Soporte para tablas nativas, Conectividad Abierta de Base de Datos (ODBC), Objetos de Datos ActiveX (ADO), o Lenguaje de Marca Extensible (XML).
  • Uso de diferentes fuentes de datos dinámicamente.
  • Usar cualquier fuente de datos del objeto CursorAdapter o del entorno de datos.
  • Compartir fuentes de datos dentro de los límites de la tecnología de fuente de datos.
  • Usar la clase CursorAdapter como una clase autónoma sin un entorno de datos asociado.
  • Opcionalmente definir la estructura de un cursor asociado con un objeto CursorAdapter.
  • Proporcionar datos desde una fuente de datos dentro de un cursor de Visual FoxPro automática y apropiadamente, basado en el tipo de fuente de datos.
  • Control de carga de datos dentro de un cursor asociado con un objeto CursorAdapter.
  • Controlar como el dato es agregado, actualizado y borrado usando las propiedades y métodos del CursorAdapter.
  • Agregar objetos CursorAdapter a contenedores aparte del entorno de datos, como pueden ser formularios, conjunto de formularios, y otros contenedores.

Para soportar la nueva funcionalidad del CursorAdapter, Visual FoxPro incluye las siguientes mejoras:

  • Agrega definición y capacidad de crear subclases incluyendo la clase CursorAdapter en el Diseñador de Clases y proveyendo la clase CursorAdapter por el parámetro cBaseClassName en los comandos CREATE CLASS y MODIFY CLASS.
  • Proporciona la nueva función GETCURSORADAPTER( ) para retornar una referencia de objeto de un objeto CursorAdapter en tiempo de ejecución.
  • Actualiza la función TABLEUPDATE() para que reconozca y maneje el objeto CursorAdapter.
  • Abre cursores internos como cursores con buffer y coloca el valor por omisión del buffer a Buffer de Fila Optimista.
  • Incluye el nuevo Generador de CursorAdapter.

Para mayor información, vea Manejo de datos utilizando CursorAdapters, CursorAdapter (Clase), GETCURSORADAPTER( ) (Función), y Generador de CursorAdapter.

Crear, Hacer Subclases, y Especificar una Clase DataEnvironment

Ahora puede definir y crear una subclase de la clase DataEnvironment. Cuando usa el IDE de Visual FoxPro o el comando CREATE CLASS para crear una nueva clase, Visual FoxPro proporciona la clase DataEnvironment en la lista Basado En ubicada en la caja de dialogo de Nueva Clase. También puede especificar la clase DataEnvironment como una clase base con el parámetro cBaseClassName en los comandos CREATE CLASS y MODIFY CLASS.

Dentro de un formulario, puede guardar la clase DataEnvironment como una biblioteca visual de clases (.vcx) seleccionando en el formulario, y escogiendo Guardar Como Clase del menú Archivo, y seleccionando DataEnvironment. Todas las propiedades, métodos y eventos del DataEnvironment están disponibles como propiedades en la ventana de Propiedades después de abrir el Diseñador de Clases.

Puede especificar y cargar una clase DataEnvironment externa dentro de una formulario (.scx) en tiempo de diseño o ejecución. Puede inicializar las propiedades DEClass y DEClassLibrary del formulario para especificar una clase DataEnvironment externa y la biblioteca de clases que la contiene, así que cuando el formulario se instancie, la clase DataEnvironment especificada se cargue automáticamente.

Para mayor información, vea DataEnvironment (Objeto), Form (Objeto), DEClass (Propiedad) y DEClassLibrary (Propiedad).

Incremento Automático de Valores de Campo

Ahora puede incrementar el valor de un campo automáticamente tanto para tablas de Base de Datos como tablas libres usando la nueva característica de autoincremento en Visual FoxPro. Puede usar la cláusula AUTOINC en los comandos SQL CREATE TABLE y SQL ALTER TABLE para especificar valores de NEXTVALUE y STEP. Puede también seleccionar el tipo de dato Entero (AutoInc) para un campo y establecer los valores para los cuadros de texto Siguiente Valor y Paso en la ficha Campos del Diseñador de Tablas. Para mayor información, vea CREATE TABLE - SQL (Comando), ALTER TABLE - SQL (Comando), Ficha Campos, Diseñador de tablas, Autoincremento de valores en campos de una tabla, y Configurar valores de campo autoincremental.

Ahora la función AFIELDS( ) regresa 18 columnas en vez de las 16 anteriores para el nuevo soporte de campos con valor de autoincremento. Ahora las columnas número 17 y 18 especifican los campos NextValue y Step, los cuales contienen valores de tipo numéricos (enteros). Para mayor información, vea AFIELDS( ) (Función).

El comando COPY STRUCTURE EXTENDED agrega los campos numéricos FIELD_NEXT y FIELD_STEP para soportar el autoincremento. Para mayor información, vea COPY STRUCTURE EXTENDED (Comando).

Visual FoxPro modifica el encabezado de la tabla cuando crea o agrega el valor de autoincremento de campo. Para mayor información, vea Estructura de archivos de tabla.

También puede especificar si al intentar actualizar un valor en un campo usando el autoincremento, este genera un error. Para mayor información, ver SET AUTOINCERROR (Comando) o la propiedad AutoIncError en CURSORSETPROP( ) (Función).

Soporte para Secuencia de Ordenación

En versiones previas, usted necesitaba usar el comando SET COLLATE TO para especificar una secuencia de ordenación que no sea la de omisión, cuando crea un índice o un índice compuesto. Ahora puede especificar una secuencia de ordenación diferente cuando crea o modifica una tabla usando la ficha Índices en el Diseñador de Tablas y cuando usa la cláusula COLLATE y su parámetro con los comandos de SQL CREATE TABLE, ALTER TABLE, e INDEX. Para mayor información, ver Ficha Indices, Diseñador de tablas, CREATE TABLE - SQL (Comando), ALTER TABLE - SQL (Comando), y INDEX (Comando).

Conversión Implícita de Datos para el comando SQL SELECT...UNION

El comando SQL SELECT con la palabra clave UNION ahora ejecuta conversión implícita de datos para los tipos de datos que soportan la conversión implícita. Por ejemplo, la operación UNION con columnas de diferentes longitudes o que contienen diferentes tipos anteriormente hubiera fallado a menos que especificara explícitamente coincidencia en el tamaño de las columnas usando una función de conversión. Suponga que tiene el siguiente código:

CREATE CURSOR t1 (f1 c(10))
INSERT INTO t1 VALUES ('1111111111')
CREATE CURSOR t2 (f1 c(2))
INSERT INTO t2 VALUES ('11')
SELECT * FROM t1 INTO CURSOR t3 UNION SELECT * FROM t2 && Fails.

Este código falla a menos que explícitamente iguale el tamaño de las columnas como se muestra:

SELECT * FROM t1 INTO CURSOR t3 UNION SELECT SUBSTR(f1,1,2) FROM t2

No necesitará especificar o usar una función de conversión explícita para tipos de datos que soporten conversión de datos implícita. Para mayor información sobre conversión de tipo de datos y precedencia, vea Conversión de Tipo de Datos y Precedencia en el SELECT - SQL (Comando).

Insertar Registros desde el Comando SQL SELECT

Ahora puede insertar registros desde el comando SQL SELECT cuando use el comando SQL INSERT. Puede copiar el contenido de las columnas seleccionadas o todas las columnas en un registro. Sin embargo, debe asegurarse que el dato que copia es compatible con las columnas en el registro que está copiando. Para mayor información, vea el INSERT - SQL (Comando).

Puede recuperar el número de registros procesados por el comando más recientemente ejecutado en la tabla usando la variable del sistema _TALLY, la cual se actualiza con el número de registros insertados. Para mayor información, vea _TALLY (Variable del sistema).

Vea también

Lo Nuevo en Visual FoxPro 8.0 | Mejoras del entorno de desarrollo interactivo (IDE) | Mejoras del lenguaje | Mejoras varias | Cambios de comportamiento desde Visual Foxpro 7.0

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Mejoras varias

Visual FoxPro contiene las siguientes mejoras:

  • Guías de tareas paso a paso
  • Nuevos ejemplos de soluciones
  • Nueva base de datos de ejemplo: Northwind
  • Foundation Class de administración de recursos
  • Secuencias IntelliSense
  • Administrador de lista de tareas
  • Explorador de objetos
  • Herramienta GenDBC.prg
  • Recursos SccText.prg
  • Asistente de PivotTable, Mail Merge y generador de integridad referencial
  • Biblioteca de clases Foundation TypeLib
  • Informe de errores Dr. Watson
  • Seleccionando una base de datos Visual SourceSafe cuando se abren proyectos
  • Soporte de color verdadero en los íconos de imágenes para Windows XP
  • Detalles de mensajes de error mejorado

Guías de tareas paso a paso

Visual FoxPro incluye las siguientes guías de tareas paso a paso:

  • Crear aplicaciones con Visual FoxPro
  • Crear tablas con Visual FoxPro
  • Guía: Recuperar datos desde diferentes origenes
  • Crear Servicios Web XML con Visual FoxPro
  • Crear informes con Visual FoxPro
  • Guía: Crear un programa de instalación de una aplicación Visual FoxPro utilizando InstallShield Express

Para mas información, vea Guías paso a paso.

Nuevos ejemplos de soluciones

Visual FoxPro incluye los siguientes nuevos ejemplos para que usted experimente y aprenda las nuevas características de Visual FoxPro:

  • Ejemplo de agrupar, elevar, desagrupar y obtener eventos
  • Controlar MSN Messenger (Ejemplo)
  • Crear un cursor desde un DayaSet XML (Ejemplo)
  • Ejemplo de como crear formularios con forma irregular (Ejemplo)
  • Resaltado, reajuste de columnas e imágenes en cabeceras de columnas del control grid (Ejemplo)
  • Cargar y generar XML usando la clase XMLAdapter (Ejemplo)
  • Administrar acceso a datos usando CursorAdapters (Ejemplo)
  • Miembros de clases (Ejemplo)
  • Pasar matrices fuertemente tipadas (Ejemplo)
  • SCATTER NAME...ADDITIVE (Ejemplo)
  • Control estructurado de errores o excepciones en tiempo de ejecución (Ejemplo)
  • Ubicar un icono en la bandeja de sistema (System Tray) (Ejemplo)
  • Soporte para los temas de Windows XP (Ejemplo)

Para mas información, vea Nuevos Ejemplos de Soluciones en Visual FoxPro 8.0.

Nueva base de datos de ejemplo: Northwind

Visual FoxPro incluye una nueva base de datos de ejemplo: NorthWind, la cual simula a la existente en SQL Server y Access. Esta incluye campos de autoincremento automático. Usted puede encontrar la base de datos NorthWind.dbc en el directorio ...\Samples\Northwind o ubicándolo a través del Panel de Tareas de Ejemplos de Soluciones o en el Panel de Administrador de Tareas.

Foundation Class de administración de recursos

Una Foundation Class de administración de recursos maneja un recurso, colección u objetos desde una sola clase. Cuando necesita usar un objeto repetidamente por un corto período de tiempo, use Foundation Class de administración de recursos. Visual FoxPro también incluye un ejemplo de Foundation Class de administración de recursos para demostrar esta nueva Foundation Class. Para mas información, vea Pool Manager (Foundation Class) y Administrador de recursos (Ejemplo).

Secuencias IntelliSense

Visual FoxPro incluye nuevas mejoras en secuencias IntelliSense:

  • La nueva secuencia para la cláusula IMPLEMENTS en el comando DEFINE CLASS abre una interfaz de selección de COM. Para más información, vea Comando DEFINE CLASS y "Trabajando con Interfaz" en Utilizar el Examinador de objetos.
  • Escribiendo WS en un archivo de programa (.prg), abre un cuadro de diálogo de selección para elegir un servicio registrado de XML Web. Los XML Web Services no son añadidos al código usando un tipo, por ejemplo, LOCAL oWS AS myWebService.
  • Escribiendo ZDEF en un archivo .prg se visualiza una lista de instrucciones #DEFINE que existen en el archivo incluyendo aquellas referenciadas en los archivos #INCLUDE.
  • Escribiendo ZLOC en un archivo .prg visualiza una lista de variables de memoria locales y parámetros.
  • Nuevas Secuencias que expanden las siguientes instrucciones de control:
    • DOCASE Expande el comando DO CASE...ENDCASE.
    • DOWHILE Expande el comando DO WHILE...ENDDO.
    • IFEND Expande el comando IF...ENDIF.
    • IFELSE Expande el comando IF...ELSE...ENDIF.
    • FOREACH Expande el comando FOR...EACH.
    • FOREND Expande el comando FOR...ENDFOR.
    • SCANEND Expande el comando SCAN...ENDSCAN.
    • TEXTEND Expande el comando TEXT...ENDTEXT.
    • WITHEND Expande el comando WITH...ENDWITH.
    • TRYEND Expande el comando TRY...CATCH...FINALLY.

Para ver una lista de secuencias de IntelliSense, revise el archivo FoxCode.dbf. Para más información acerca IntelliSense, vea Introducción a IntelliSense Personalizar IntelliSense mediante FoxCode y Uso de secuencias de comandos en FoxCode.dbf.

Administrador de lista de tareas

Puede volver a generar la tabla de Lista de Tareas y editar la estructura de las columnas definidas por el usuario, en las opciones del cuadro de diálogo de Listas de Tareas. Para más información, vea Ventana Administrador de lista de tareas y Usar el Administrador de lista de tareas.

Explorador de Objetos

Cuando se selecciona una interfaz en el explorador de objetos, el panel de descripción también despliega el número ID de la interfaz. Para más información, vea Ventana Examinador de objetos.

Herramienta GenDBC.prg

La herramienta GenDBC.prg, que se utiliza para crear un programa que pueda recrear la base de datos, ahora soporta autoincremento, secuencias de ordenación y filtrado de claves. Para más información, vea Gendbc.prg.

Herramienta SccText.prg

La herramienta SccText.prg, programa que se utiliza para traducir los archivos binarios de Visual FoxPro a sus equivalentes en texto, incluye una función de MethodsWrite que escribe los métodos en orden alfabético. Cuando está creando archivos de texto .sca o .vca para el control de los archivos fuentes, los métodos son escritos en orden alfabético. Esto permite una más fácil comparación en la verificación de las diferencias entre archivos. Para más información, vea variable del sistema _SCCTEXT y Verificando diferencias en formularios, informes y otros archivos de tabla.

Asistente de PivotTable, Mail Merge y generador de integridad referencial

Visual FoxPro ha actualizado los asistentes de PivotTable y Mail Merge para utilizar el Visual FoxPro OLE DB Provider de la más nueva versión de Microsoft Office. Para más información, vea Asistente PivotTable y Asistente para combinar correspondencia.

Usted no necesitará realizar un pack al contenedor de Base de Datos (DBC) para correr el Generador de integridad referencial.

TypeLib de Foundation Class

La Clase TypeLib en _Utility.vcx ha sido actualizada para usar el componente COM Tlbinf32. Para más información, vea Biblioteca de tipos de Foundation Class.

Informe de errores Dr. Watson

Visual FoxPro incluye un producto para el informe de errores que anteriormente se incluía en el Visual FoxPro 7.0 Service Pack 1. Esta característica permite a Microsoft realizar un mejor control de los errores en el manejo del producto.

Seleccionando una Base de Datos Visual SourceSafe cuando se abren proyectos

Ahora puede seleccionar una base de datos Visual SourceSafe cuando Visual FoxPro le pregunta luego de que intenta abrir un proyecto que no puede ser encontrado en la base de datos actual.

En las versiones anteriores, Visual FoxPro asumía que usted sólo usaba una base de datos y sólo buscaba la última base de datos abierta en el proyecto. Visual FoxPro generaba un error cuando usted intentaba abrir un proyecto desde una base de datos Visual SourceSafe diferente de la última base de datos abierta.

Soporte de Color Verdadero en los íconos de imágenes para Windows XP

El sistema operativo Windows XP despliega imágenes de íconos en color verdadero de 16-bit y 24-bit en el Explorador de Windows. Visual FoxPro incluye el soporte para visualizar imágenes de íconos en formato de color verdadero en el Cuadro de Diálogo de Información de Proyectos para incluirlos en un archivo ejecutable (.exe).

El cuadro de Diálogo de Información de Proyectos visualiza el formato de color más alto posible soportado por el sistema operativo, haciendo corresponder el formato de imágenes más cercano al archivo de icono. Si usted no especifica un archivo de icono para ser adjuntado a un archivo .exe, Visual FoxPro adjunta el icono estándar de Visual FoxPro. Para más información, vea Ficha Proyecto, cuadro de diálogo Información del proyecto.

Detalles de mensajes de error mejorados

Visual FoxPro incluye más detalles y ayudas para ciertos mensajes de error.

Vea también

Lo Nuevo en Visual FoxPro 8.0 | Mejoras del entorno de desarrollo interactivo (IDE) | Mejoras en las características de Datos | Mejoras del lenguaje | Mejoras varias | Cambios de comportamiento desde Visual FoxPro 7.0

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea "Microsoft Visual FoxPro Soporte Técnico"..


Cambios de Comportamiento desde Visual FoxPro 7.0

El comportamiento de Visual FoxPro 8.0 difiere de las versiones previas y puede afectar el código existente. Estos cambios de comportamiento están organizados de acuerdo a las siguientes categorías:

  • Cambios críticos Cambios en el comportamiento que seguramente afectarán al código existente cuando se ejecute bajo Visual FoxPro 8.0. Es muy importante que lea esta sección.
  • Cambios importantes Cambios en el comportamiento que pudieran afectar el código existente cuando se ejecute bajo Visual FoxPro 8.0.
  • Cambios varios Cambios en el comportamiento que debe conocer pero posiblemente no impacten en el código existente.
  • Elementos eliminados Características o archivos que previamente existían en versiones anteriores de Visual FoxPro.

Cambios críticos

Cambios críticos que seguramente afectarán a su código existente cuando se ejecute bajo Visual FoxPro 8.0. Es muy importante que lea esta sección.

Motor de Datos SQL

Visual FoxPro contiene un nuevo JUEGO de comandos de ENGINEBEHAVIOR para que pueda controlar la compatibilidad del motor de Datos SQL. Esto afecta al funcionamiento del comando SQL SELECT. El comportamiento actual del comando (VFP 8.0) puede ser ajustado al comportamiento previo (VFP 7.0 y anteriores) usando el comando SET ENGINEBEHAVIOR tal como se describe a continuación:

  • No puede utilizar la cláusula DISTINCT con un campo Memo o General en una instrucción SQL SELECT. En su lugar, ajuste los campos Memo dentro de una función tal como PADR( ) o ALLTRIM( ).
  • La cláusula GROUP BY no soporta los campos Memo o General.

    Los campos existentes en la cláusula GROUP BY deben existir en la lista SELECT, excepto para aquellos campos que contengan funciones agregadas, tales como la función COUNT( ). Adicionalmente, los campos existentes en la cláusula GROUP BY deben existir en la cláusula HAVING (si esta existe), excepto para aquellos campos que contengan funciones agregadas.

  • Una instrucción SQL SELECT puede contener la cláusula HAVING sin necesidad de la cláusula GROUP BY, siempre y cuando la instrucción SQL SELECT no contenga ninguna función agregada.
  • Las instrucciones SQL SELECT no eliminan automáticamente los espacios en blanco de los valores comparados usando la operación LIKE. En versiones previas a Visual FoxPro 8.0, en ambos valores en una operación LIKE se eliminaban los espacios blancos a la derecha antes de la evaluación, por lo que la operación LIKE podría no devolver las coincidencias correctamente.

Para mayor información, vea Comando SELECT - SQL y Comando SET ENGINEBEHAVIOR.

Soporte para campos de valores incrementados automáticamente.

Visual FoxPro contiene un nuevo tipo de campo entero (AutoInc). La función AFIELDS() devuelve ahora 18 columnas en lugar de 16, debido al nuevo soporte para los campos de valores auto incrementales. Las columnas 17 y 18 especifican ahora los campos NextValue y Step, las cuales contienen valores del tipo Numérico (entero). Para mayor información, vea Función AFIELDS( ).

El comando COPY STRUCTURE EXTENDED añade los campos numéricos FIELD_NEXT y FIELD_STEP para soportar el auto incremental. Para mayor información, vea Comando COPY STRUCTURE EXTENDED.

Habilitado el soporte predeterminado de Temas de Windows XP

Visual FoxPro contiene y habilita de forma predeterminada el soporte para los temas de Windows XP en sus aplicaciones. La nueva propiedad Themes para las clases visuales puede afectar a las interfaces existentes cuando se utiliza Windows XP. Puede activar o desactivar este soporte, ajustando la propiedad Themes en el control, formulario o la variable del sistema _SCREEN, o utilizando la función SYS(2700) - Habilitar temas de Windows XP.

Aunque las aplicaciones existentes pueden ejecutarse correctamente con Themes, los controles definidos usando @...GET o @...SAY y comandos similares a @... no son compatibles con los Temas de Windows XP. Por lo tanto, cuando se ejecuten programas escritos con FoxPro 2.x en Windows XP o posterior, debe ajustar la propiedad _SCREEN Themes a falso (.F.); de lo contrario, los controles en los formularios desaparecerán.

También puede que necesite efectuar pequeñas modificaciones en los formularios que contienen objetos PageFrame. Las propiedades de Themes generan un efecto de degradado en los objetos de Page, por lo que las etiquetas (label), botones de opciones (option button), o controles similares con texto no se presentarán correctamente si la propiedad BackStyle del control está ajustada a opaca. Puede evitar esta situación ajustando la propiedad BackStyle a transparente.

Cuando el soporte para Themes está habilitado, debe evitar usar el comando CLEAR COMMAND en los formularios, ya que puede causar problemas de pintado en los controles de temas y en comandos tales como botones que poseen efectos cuando el ratón se posiciona sobre ellos.

Para el control de cuadricula (Grid), los Themes afectan la apariencia visual de las cabeceras de las columnas. Si los Themes están habilitados para la cuadrícula, las propiedades BackColor y ForeColor de las cabeceras son ignoradas porque son inherentes a los atributos del Tema. Sin embargo, las propiedades BackColor y ForeColor de un objeto Columna se presentarán independientemente del ajuste de las propiedad Themes de la cuadrícula. Las subclases del control cuadrícula (Grid) ahora respetan las propiedades ForeColor y BackColor de las Columnas y Cabeceras de su código primario.

Para mayor información, vea Propiedades de Temas y SYS(2700) - Activar Temas de Windows XP.

Visual FoxPro OLE DB Provider

  • Visual FoxPro OLE DB Provider implementa más compatibilidades con .NET tales como el trabajo con Command Builder.
  • Visual FoxPro OLE DB Provider reconoce cualquier archivo válido Config.fpw ubicado en el mismo directorio que el Provider para incrementar MVCOUNT, que ajusta el máximo número de variables que Visual FoxPro puede mantener. Para mas información, vea Términos especiales para archivos de configuración.
  • Cuando genere la cadena de conexión para el Visual FoxPro OLE DB Provider, puede especificar un Data Source Name ( DSN ) existente de Visual FoxPro ODBC, en lugar de un origen de datos. El Provider usa el origen de datos indicado en el DSN y la expande a una cadena de conexión apropiada con el Provider.
  • La función GETENV( ) ya no esta soportada en el Visual FoxPro OLE DB Provider.
  • Ya no puede consultar el valor ANSI usando el comando SET. Sin embargo, los comandos SET ANSI y SET MULTILOCKS todavía están soportados.

Comportamiento de una Cuadrícula (Grid)

Los siguientes cambios afectan las cuadrículas (GRID):

  • El ajuste del tamaño de las columnas de una cuadrícula, ahora no llama al evento Header Click. Este cambio afecta al separador de columnas.
  • El ajuste de la propiedad Column Visible a Falso (.F.) esconde la columna. En versiones anteriores, este ajuste hacía que la columna apareciera vacía.
  • El método de actualización de la cuadrícula (Grid Refresh), actualiza el indicador del número del registro aún cuando la cuadrícula no tenga el enfoque.

Soporte de Active Document

Visual FoxPro ya no soporta los Documentos Activos. La clase ActiveDoc todavía existe en el lenguaje Visual FoxPro y puede instanciarse. Sin embargo, la funcionalidad de soporte a Visual FoxPro dentro del Explorador de Internet ya no existe por razones de seguridad.

Cambios importantes

Cambios importantes que pueden afectar el código existente cuando se ejecute bajo Visual FoxPro 8.0.

Validación de sintaxis para las vistas

En versiones anteriores de Visual FoxPro, podía crear nuevas vistas con errores de sintaxis. Visual FoxPro ahora valida las vistas para asegurar que no existan problemas de sintaxis.

Por ejemplo, suponga que incluyó una variable de memoria como parte de la definición de una vista. En las versiones anteriores, la variable de memoria no tenía necesariamente que existir cuando se creaba la vista porque Visual FoxPro no chequeaba la sintaxis. Ahora, la variable de memoria debe existir.

El formulario se desactiva cuando se hace clic en el escritorio de Visual FoxPro

Cuando se hace clic en el escritorio de Visual FoxPro se ejecuta el evento Deactivate del formulario y se desactiva el formulario actual del usuario. Esto mejora la integración con la nueva función BINDEVENT( ) para la activación y desactivación de formularios.

Función XMLTOCURSOR( )

La versión Visual FoxPro 7.0 Service Pack 1 incluye el marcador 8192 para XMLTOCURSOR( ) por lo que puede especificar la importación de un archivo XML a un cursor de una tabla existente. Para mas información, vea Función XMLTOCURSOR( ).

XMLTOCURSOR( ) convierte los datos tipo Decimal a Numérico 20,19 (ancho, precisión). En Visual FoxPro 7.0, la conversión era a Numérico 8,0.

Comportamiento de la función TABLEUPDATE( ) cuando se ajusta la propiedad BatchUpdateCount a un valor mayor que 1

Evite ajustar BatchUpdateCount a un valor mayor que 1 cuando actualice datos, cuando use Buffering de tabla, y cuando actualice la tabla o tablas en un origen de datos para múltiples clientes. En este escenario, TABLEUPDATE( ) siempre devuelve Verdadero (.T.).

Dada la forma en que Open Database Conectivity (ODBC) se comporta, Visual FoxPro es incapaz de detectar conflictos cuando el servidor genera un error, aunque no se realice la actualización, por ejemplo, ninguna fila cumple con la cláusula WHERE. Esto ocurre cuando se ajusta WhereType en DB_KEYANDUPDATABLE, DB_KEYANDMODIFIED, o DB_KEYANDTIMESTAMP, y otro usuario modifica uno de los valores fundamentales en la cláusula WHERE de forma que la fila no sea encontrada por la instrucción Update.

Puede ajustar en forma segura BatchUpdateCount a un valor mayor a 1 para las operaciones INSERT, DELETE, y UPDATE cuando FORCE es Verdadero.

Abriendo y cerrando vistas fuera de línea en transacciones

Dada la relación de las vistas fuera de línea y las transacciones, no puede abrir o cerrar una vista fuera de línea en una transacción cuando se utilice USE SQLViewName en el modo ADMIN/ONLINE. Para más información, vea las descripciones para las claves ADMIN y ONLINE en un Comando USE.

Conversión implícita de una referencia a objetos, en una cadena de texto

Visual FoxPro convierte una referencia a objetos en una cadena de texto, "(Object)", cuando se usa algunos de los siguientes elementos del lenguaje:

  • Función TRANSFORM( )
  • Función MESSAGEBOX( )
  • Comando DEBUGOUT
  • Comando WAIT WINDOW
  • Comando ?

Este comportamiento se aplica a todos los objetos nativos de Visual FoxPro y objetos COM. La referencia a objetos debe existir. Para más información, vea Función TRANSFORM( ), Función MESSAGEBOX( ), Comando DEBUGOUT, Comando WAIT, y Comando ? | ??.

Recargando cambios en un Diseñador de vistas

Si el Diseñador de vistas no puede recargar sus cambios después de hacer modificaciones en una ventana de Vista SQL, un cuadro de diálogo aparecerá con la siguiente pregunta:

"El diseñador View/Query no puede recargar sus cambios. Desea reconstruir el contenido desde el diseñador?"

Si selecciona SI, sus cambios serán descartados en la ventana SQL, y Visual FoxPro lo devolverá a la vista del diseñador. Si selecciona No, Visual FoxPro lo devolverá a la ventana SQL.

Para guardar una instrucción que no puede ser analizada, como una llamada a un procedimiento almacenado, seleccione No y haga clic en el botón Guardar de la barra de herramientas, Visual FoxPro guardará la instrucción Query. También puede hacer clic en el botón Guardar después de dar un comando en la ventana SQL para salvar su Consulta (query). No debe hacer clic en la ventana de diseño, ya que causaría que el diseñador de vistas trate de cargar y analizar la consulta (query).

SET DATABASE TO Acepta una cadena vacía

Usar el comando SET DATABASE con una cadena vacía generaba el error "La base de datos no está abierta". Ahora puede usar SET DATABASE TO "", y se comportará en forma similar al llamar al comando SET DATABASE TO sin parámetros. Para más información, vea Comando SET DATABASE.

HOME(5)

HOME(5) Ahora devuelve el directorio de Visual Studio MSDN en lugar del directorio Visual Studio MSDN Samples. Visual FoxPro ya no instalará sus ejemplos con el MSDN. En su lugar, Visual FoxPro samples se guardará en su medio digital o CD, y puede buscar su ubicación utilizando la Ayuda que se instala con Visual FoxPro. Para mas información, vea Función HOME( ).

Presentación de fuentes en la ventana de propiedades, para la propiedad FontName

En las versiones anteriores, ocasionalmente se mostraban múltiples fuentes de una misma familia. La lista de propiedades de la ventana de propiedades para la propiedad FontName y la función AFONT() ahora incluyen la familia de fuentes actual. Para más información, vea Propiedad FontName y Función AFONT( ).

Métodos abreviados de teclado CTRL+HOME y CTRL+END

Visual FoxPro proporciona métodos abreviados de teclado consistentes con el comportamiento de programas de Microsoft como Excel y Access, cuando se navega en una cuadrícula utilizando el comando BROWSE:

  • El puntero se mueve al primer registro de un cursor o de una tabla en una cuadrícula cuando se usa BROWSE y se presiona CTRL+HOME.
  • El puntero se mueve al último registro de un cursor o de una tabla en una cuadrícula cuando se usa BROWSE y se presiona CTRL+END.

En versiones previas de Visual FoxPro, CTRL+HOME abría el campo memo, similar a CTRL+PAGE UP, y CTRL+END cerraba la ventana de exploración, similar a CTRL+W.

Para mas información, vea Métodos abreviados de teclado.

Método abreviado de teclado para CTRL+TAB

Visual FoxPro soporta ayuda interactiva cuando se presiona la combinación de Teclas CTRL+TAB. Sin embargo, cuando la propiedad Form AllowTabs es Falsa (.F.), CTRL+TAB deja de funcionar en el control edit box. En su lugar, CTRL+TAB mueve el cursor hasta la siguiente ventana disponible. Puede presionar la tecla TAB para salir y editar el cuadro, cuando la propiedad AllowTabs es falsa.

Para mayor información, vea Mejoras del entorno de desarrollo interactivo (IDE).

Función DISPLAYPATH( )

La función DISPLAYPATH( ) ahora devuelve correctamente el título con mayúsculas y minúsculas en lugar de todas las letras en minúsculas.

Llamando a la función DODEFAULT( ) en clases bases

Llamar a la función DODEFAULT( ) en un método que no existe en la clase primaria no produce errores. Sin embargo, este comportamiento todavía produce los siguientes resultados:

  • Visual FoxPro ignorará cualquier parámetro que sea pasado, porque el código no se ejecutará.
  • Visual FoxPro siempre devolverá Verdadero (.T.), que es el comportamiento predefinido para cualquier procedimiento sin una instrucción explícita de RETURN.

Este comportamiento afecta los siguientes escenarios:

  • Métodos personales que no están definidos en clase primaria.
  • Métodos nativos que están ocultos en una clase primaria

Para más información, vea Función DODEFAULT( ).

Usando DOEVENTS como una función

Ya no puede seguir llamando el comando DOEVENTS usando paréntesis, por ejemplo, DOEVENTS( ). El comando DOEVENTS ahora soporta la clave opcional FORCE. Para mas información, vea Comando DOEVENTS.

Definir un servidor COM para el tipo de datos Caracter

Visual FoxPro ahora genera librerías de tipo para los Servidores COM marcando los tipos Caracter como un BSTR en lugar de VARIANT en la librerías de tipos COM de Visual FoxPro. Este nuevo comportamiento hace una verificación de los tipos String. Por ejemplo, en el siguiente procedimiento aparece en la biblioteca de tipos COM, el tipo de valor devuelto BSTR:

PROCEDURE myProc( ) AS Character

Para mas información, vea Comando DEFINE CLASS.

Función QUARTER( )

La función QUARTER( ) ahora retorna 0 si se pasa un valor vacío de Date o DateTime, por ejemplo, QUARTER({//}). En las versiones anteriores de Visual FoxPro, esto generaba un mensaje de error.

Atrapando errores en informes

Ahora puede atrapar los siguientes errores que antes eran manejados por el controlador de errores del sistema:

  • Errores que ocurren en los reportes
  • Errores debidos a vínculos anteriores defectuosos en la base de datos.

Cambios varios

Lo siguiente son cambios varios que debe conocer pero que posiblemente no tiene impacto sobre el código existente.

Ajuste predeterminado de la creación de instancias para los servidores EXE

Cuando crea un nuevo proyecto conteniendo clases OLEPUBLIC, Visual FoxPro de forma predeterminada ajusta la creación de instancias en la pestaña de Servidor del cuadro de diálogo de la Información del Proyecto para Uso Unico. El ajuste de Uso Unico es apropiado para desarrollar servidores EXE.

Cuando crea una biblioteca de vínculos dinámicos (.dll) para Servidor COM, Visual FoxPro ajusta la Creación de Instancias a Multiuso.

Visual FoxPro retiene cualquier cambio realizado al Ajuste de la Creación de Instancias.

Para más información, vea Ficha Servidores, cuadro de diálogo Información del proyecto.

Número de filas para la exportación de cursores de datos

Visual FoxPro eleva el máximo de 16,384 a 65,535 filas, cuando se exporta un cursor de datos a una hoja de cálculo de Excel. El nuevo límite incluye una fila reservada para encabezar los nombres de los campos. Para más información, vea Comando EXPORT, Comando COPY TO, y Proceso de exportación de datos.

Ventanas acopladas

El estado y ubicación de las Ventanas Acopladas, tales como Command, View, y Debug windows, persisten desde la última sesión del usuario. Puede definir su nuevo esquema de diseño usando el nuevo comando DOCK WINDOW. La Edición o Borrado del archivo de recursos existente FoxUser.dbf, el cual contiene sus ajustes, reajustará los ajustes predeterminados de su ventana. Para más información, vea Acoplar ventanas y Comando DOCK WINDOW.

Cuando se acopla un contenedor de acoplado por enlaces al escritorio de Visual FoxPro, el borde del contenedor no aparecerá. En su lugar, solo aparecerán las ventanas acopladas.

Recomendaciones para las propiedades de sólo lectura, métodos y eventos heredados

En ocasiones, puede tener dificultades para visualizar los valores de los parámetros de las propiedades de sólo lectura o cualquiera de las librerías de clases visuales desde los cuales los métodos y eventos son heredados en la lista de propiedades de la ventana de Propiedades. Ahora puede ver las recomendaciones para estos ajustes moviendo el ratón sobre la propiedad, eventos o métodos en la lista de propiedades. Para más información, vea "Visualizando propiedades de objetos" en Manipular objetos.

Ajuste de texto (Wordwrap) en la información sobre herramientas (ToolTip Text)

Visual FoxPro soporta el ajuste de texto y aumenta el límite de 255 a 4,095 caracteres visuales, para los textos de Información sobre herramientas. Para más información, vea Propiedad ToolTipText.

Estilos de ventana para el cuadro de diálogo de Abrir y Guardar

Cuando Visual FoxPro se ejecuta en los sistemas operativos Windows 2000 y Windows XP incluye los siguientes cambios en los cuadros de diálogo para Abrir, Guardar y Abrir Imágenes:

  • Una barra de lugares para que pueda navegar en las ubicaciones mas comunes tales como el Directorio de documentos o el Escritorio
  • Las siguientes opciones están disponibles cuando se hace clic en el icono del Menú de Vistas: Vistas Reducidas, Mosaicos, Títulos, Iconos, Listas y Detalles. Puede previsualizar imágenes en Windows 2000 haciendo clic en la Vistas Reducidas. Visual FoxPro usa las Vistas Reducidas como un ajuste predeterminado, para proveer mini vistas de imágenes. Por lo tanto el cuadro de diálogo de Abrir Imagen ya no incluye un marco para visualizar la imagen. El checkbox aparecerá en el cuadro de diálogo de Imágenes solo cuando Visual FoxPro se ejecute en sistemas operativos anteriores a Windows 2000.
  • La capacidad de reajustar el tamaño de los cuadros de diálogos

Usted puede seleccionar múltiples archivos para añadirlos a un proyecto, en el cuadro de diálogo de Abrir después de hacer clic en el botón Añadir de la ventana del Administrador de Proyectos.

Cuando llama a la función AGETCLASS( ), el Tipo de Archivos del cuadro de Dialogo Abrir ahora incluye el tipo de archivo Programa (.prg). AGETCLASS( ) ya no está soportado en las librerías de tiempo de ejecución de Visual FoxPro porque las rutinas para pasar archivos de programas (.prg) están restringidas para el tiempo de diseño solamente.

Para más información, vea Cuadro de diálogo Abrir, Cuadro de diálogo Abrir imagen, Ventana Administrador de proyectos, y Función AGETCLASS( ).

Área máxima de diseño de formularios

El área máxima de diseño de un nuevo formulario en el diseñador de formularios es ahora ilimitada. Ahora el ajuste predeterminado para el área máxima de diseño en la ficha formularios del cuadro de diálogo Opciones es ninguna (None).

La función AGETCLASS( ) no es soportada en tiempo de ejecución de Visual FoxPro

AGETCLASS( ) ya no está soportada por las librerías de tiempo de ejecución de Visual FoxPro porque pasar programas (.prg) está restringido al tiempo de diseño.

Incremento predeterminado MVCOUNT

Por definición el máximo número de variables que Visual FoxPro puede mantener, y que puede ajustar usando MVCOUNT en un archivo de configuración, se aumenta desde 1,024 a 16,384.

Puzzle

Ahora puede reactivar el Puzzle de Visual FoxPro tecleando lo siguiente en la Ventana de Comandos:

ACTIVATE WINDOW Puzzle

Elementos eliminados

Visual FoxPro ya no incluye los siguientes elementos:

  • Ejemplos: Cliente/Servidor, Soluciones ActiveDocs, Servidor Gopher, Administración de Recursos del Servidor y aplicaciones TrasTrade. La base de datos de TrasTrade todavía se mantiene en esta versión de Visual FoxPro.
  • Herramientas: Asistente de Búsquedas de Internet, CliReg32.exe, y Transformer.

    El código fuente para Converter ahora reside en XSource.zip.

    La funcionalidad para CliReg32.exe ha sido eliminada y reemplazada por las Herramientas de Servicios de Componentes, la cual se incluye con los sistemas operativos Windows 2000 y XP. Puede usar estas herramientas y exportar al Servidor de aplicaciones COM+ para las instalaciones en uno mas computadores servidores. También contiene el soporte para la configuración DCOM que puede usar para acceder a aplicaciones remotas. Para acceder a la Herramienta de Servicios de Componentes, haga clic en el menú de Inicio de Windows, luego Panel de Control, y doble clic en Servicios de Componentes. Para más información, vea la Ayuda en Línea de Windows para Herramientas de Servicios de Componentes.

  • Controles ActiveX: FpOLE.ocx, FpOLE.dll, y FoxTLib.ocx, que han sido reemplazados por el componente COM TLibInf32.
  • Controlador ODBC y el módulo de combinación redistribuible: VfpODBC.msm
  • Funcionalidad: Hospedaje para Documentos Activos, aunque Visual FoxPro retiene las Clases de Documentos Activos. Visual FoxPro no incluye un archivo Vfp8run.exe porque el archivo soporte no requiere ser distribuido con Visual FoxPro.

Vea también

Lo Nuevo en Visual FoxPro 8.0 | Mejoras del entorno de desarrollo interactivo (IDE) | Mejoras en las características de Datos | Mejoras del lenguaje | Mejoras varias

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


Nuevas palabras reservadas en Visual FoxPro 8.0

_FOXREF

_PAGETOTAL

_TASKPANE

_TOOLBOX

A

ADDTABLESCHEMA

ADOCKSTATE

AEVENTS

AFTERCURSORATTACH

AFTERCURSORCLOSE

AFTERCURSORDETACH

AFTERCURSORFILL

AFTERCURSORREFRESH

AFTERCURSORUPDATE

AFTERDELETE

AFTERINSERT

AFTERUPDATE

ALLOWAUTOCOLUMNFIT

ALLOWCELLSELECTION

ALLOWDELETE

ALLOWEXTERNAL

ALLOWINSERT

ALLOWOUTPUT

ALLOWUPDATE

APPLYDIFFGRAM

ATTACH

AUTOFIT

AUTOINC

AUTOINCERROR

AUTOOPEN

B

BEFORECURSORATTACH

BEFORECURSORCLOSE

BEFORECURSORDETACH

BEFORECURSORFILL

BEFORECURSORREFRESH

BEFORECURSORUPDATE

BEFOREDELETE

BEFOREINSERT

BEFOREUPDATE

BINDCONTROLS

BINDEVENT

C

CATCH

CENTERED

CHANGESTOCURSOR

CHILDTABLE

COLLECTION

COMPAREMEMO

CONVERSIONFUNC

CURSORADAPTER

CURSORATTACH

CURSORDETACH

CURSORFILL

CURSORREFRESH

CURSORSCHEMA

CURSORSTATUS

D

DATASOURCE

DATASOURCETYPE

DATATYPE

DECLASS

DECLASSLIBRARY

DELETECMD

DELETECMDDATASOURCE

DELETECMDDATASOURCETYPE

DETAILS

DISABLEENCODE

DOCK

DOCK WINDOW

ENABLEHYPERLINKS

ENDTRY

ENGINEBEHAVIOR

ERRORNO

EVL

EXCEPTION

F

FINALLY

FLAGS

FONTCHARSET

FORCECLOSETAG

FORMATTEDOUTPUT

FRACTIONDIGITS

G

GETCURSORADAPTER

GETKEY

H

HEADERCLASS

HEADERCLASSLIBRARY

HIGHLIGHTBACKCOLOR

HIGHLIGHTFORECOLOR

HIGHLIGHTSTYLE

I

INSERTCMD

INSERTCMDDATASOURCE

INSERTCMDDATASOURCETYPE

ISATTRIBUTE

ISBASE64

ISBINARY

ISDIFFGRAM

ISLOADED

ISXMLDOMELEMENT

ITEM

J

K

KEYSORT

L

LINECONTENTS

LOADXML

LOCKCOLUMNS

LOCKCOLUMNSLEFT

M

MAPN19_4TOCURRENCY

MEMBERCLASS

MEMBERCLASSLIBRARY

MOVEITEM

N

NEXTVALUE

NODIALOG

O

ONMOVEITEM

P

PARENTTABLE

PICTUREPOSITION

PICTURESELECTIONDISPLAY

PRESERVEWHITESPACE

PRETEXT

Q

R

RAISEEVENT

RELEASEXML

REMOVEPROPERTY

RESPECTCURSORCP

ROTATEFLIP

S

SELECTCMD

SOM

STACKLEVEL

T

TABLEVALIDATE

TABORIENTATION

THEMES

THROW

TOCURSOR

TOXML

TRY

U

UNBINDEVENT

UNICODE

UPDATECMD

UPDATECMDDATASOURCE

UPDATECMDDATASOURCETYPE

USEDEDATASOURCE

USERVALUE

UTF8ENCODED

V

W

WRAPCHARINCDATA

WRAPINCDATA

WRAPMEMOINCDATA

X

XMLADAPTER

XMLCONSTRAINTS

XMLFIELD

XMLNAME

XMLNAMESPACE

XMLPREFIX

XMLSCHEMELOCATION

XMLTABLE

XMLTYPE

XSDFRACTIONDIGITS

XSDMAXLENGTH

XSDTOTALDIGITS

XSDTYPE

Y

Z

Vea también

Lo Nuevo en Visual FoxPro 8.0 | Palabras reservadas

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico"...


Introducción a Visual FoxPro

Microsoft Visual FoxPro es el sistema de administración de bases de datos orientado a objetos que permite crear eficaces soluciones de bases de datos empresariales. Visual FoxPro incluye herramientas de productividad profesionales, documentación y código de ejemplo para generar, administrar e implementar soluciones rápidamente.

En esta sección

Localizar archivos Léeme
Describe cómo buscar la localización de los archivos Léeme de Visual FoxPro.
Instalar Visual FoxPro
Describe los requerimientos del sistema para instalar y agregar aplicaciones a Visual FoxPro.
Actualizar desde versiones anteriores
Describe cómo Visual FoxPro protege su inversión en aplicaciones creadas con versiones anteriores de FoxPro.
Personalizar el Entorno de Visual FoxPro
Explica cómo puede optimizar su sistema, configurar los parámetros del entorno de desarrollo de Visual FoxPro, restaurar su escritorio y cómo las personas con discapacidades pueden mejorar la accesibilidad a Visual FoxPro y Microsoft Windows.

Secciones relacionadas

Lo Nuevo en Visual FoxPro 8.0
Describe las nuevas características y mejoras incluidas en esta versión de Visual FoxPro.
Uso de Visual FoxPro
Brinda una introducción a las características de Visual FoxPro, describe conceptos y herramientas de productividad para el desarrollo, programación y administración de aplicaciones y componentes de bases de datos de alta calidad y proporciona explicaciones que lo ayudan a comenzar. Con sus sólidas herramientas y su lenguaje orientado a objetos basado en datos puede generar modernas aplicaciones multinivel y escalables que integren el procesamiento cliente-servidor con Internet.
Desarrollar aplicaciones Visual FoxPro
Incluye información conceptual acerca de cómo desarrollar aplicaciones Visual FoxPro, instrucciones para crear bases de datos y la interfaz de usuario y otras tareas necesarias para crear aplicaciones Visual FoxPro.
Programar en Visual FoxPro
Describe cómo el dominio de las técnicas de programación orientada a objetos y el modelo controlado por eventos puede aumentar su productividad como programador y permitirle acceder a todo el poder de Visual FoxPro.
Referencia
Incluye temas de referencia general de Visual FoxPro, lenguaje de programación, interfaz de usuario y mensajes de error.
Ejemplos
Contiene librerías de clase de Visual FoxPro, servidores, soluciones y códigos de ejemplos de foundation classes que puede utilizar para experimentar y aprender las características de Visual FoxPro.


Localizar archivos Léeme

El archivo Readme.htm se encuentra en el directorio raíz del CD-ROM de Microsoft Visual FoxPro. Utilice el explorador de Internet para abrir y ver los archivos.

Para ubicar los archivos Léame de otros productos incluidos en el paquete de Visual FoxPro, busque en el directorio raíz del CD-ROM de cada producto.


Instalar Visual FoxPro

Visual FoxPro puede instalarse tanto desde el CD-ROM, como desde una red o en el disco local. Visual FoxPro deberá instalarse siempre en un disco local, nunca en una unidad de disco de red.

Requisitos de instalación

Requerimientos mínimos del sistema para instalar Visual FoxPro:

  • PC: Un PC compatible con IBM con procesador Pentium
  • Periféricos: Ratón ó dispositivo de señalización
  • Memoria: 64 MB RAM (se recomienda 128 MB o más)
  • Espacio Libre en el Disco:
    • Visual FoxPro Prerrequisitos: 20 MB
    • Visual FoxPro Instalación Típica: 165 MB
    • Visual FoxPro Instalación Completa: 165 MB
  • Video: Resolución 800 x 600, 256 colores (se recomienda una placa Alta definición de 16 bits)
  • Sistema Operativo: El desarrollo de aplicaciones con Visual FoxPro 8.0 solo es soportado en: Microsoft Windows 2000 Service Pack 2 ó posterior y Windows XP. Se pueden crear y distribuir aplicaciones que se ejecutan sobre Windows 98, Windows Me, Windows 2000 Service Pack 2 ó posterior y Windows XP.
    Nota No está soportada la instalación sobre NT 4.0 Terminal Server Edition.

Instalar Visual FoxPro

No hay que realizar preparativos especiales antes de instalar Visual FoxPro aunque deberá tener permisos de administrador en el PC local para instalar y usar en forma efectiva todas las herramientas provistas.

Visual FoxPro puede ser instalado y desinstalado sin problemas usando el programa de Instalación. Si desea migrar a Visual FoxPro 8.0, deberá primero desinstalar Visual FoxPro 7.0. Si bien Visual FoxPro 8.0 y Visual FoxPro 7.0 pueden coexistir en el mismo PC, no se puede instalar Visual FoxPro 8.0 en el mismo directorio en el que está Visual FoxPro 7.0.

Si planea publicar servicios XML Web services usando FoxPro, podría necesitar instalar un Internet Information Services (IIS) en un PC Windows 2000 o Windows XP. Consulte la documentación de su sistema operativo por instrucciones sobre como instalar y configurar el servicio de IIS.

Nota El programa instalador de Visual FoxPro ya no instala ningún Service Pack o nuevas versiones del Internet Explorer. Es altamente recomendable instalar las últimas versiones de estos componentes antes de instalar Visual FoxPro 8.0. Además, Visual FoxPro 8.0 solo es soportado en Windows 2000 Service Pack 2 ó posterior. Para detalles acerca de la instalación de esté último, visite la pagina siguiente en el sitio web de Microsoft http://www.microsoft.com/windows2000/.

La Instalación Completa, incluye todos los archivos de Visual FoxPro, manuales de ayuda en línea y archivos de ejemplo.

Para Instalar Visual FoxPro

  1. Cierre todas las aplicaciones abiertas.
    Nota Si usa programas de protección antivirus, Si usa un programa de protección antivirus en su PC, deshabilítelo ó simplemente finalice su ejecución mientras ejecuta el asistente de instalación. El asistente podría no ejecutarse en forma apropiada si la protección antivirus se encuentra activa. Después de finalizada la instalación, recuerde de reiniciar su programa de protección antivirus.
  2. Inserte el CD de Visual FoxPro.

    La pagina inicial del instalador de Visual FoxPro 8.0 debería aparecer automáticamente.

  3. Pulse en Instalar Visual FoxPro para lanzar el programa de Instalación de Visual FoxPro.
  4. Para determinar si son necesarios componentes adicionales pulse en Prerrequisitos, esto le mostrará una lista con los componentes necesarios.
  5. Pulse Instalar Ahora! para instalar componentes nuevos. Si solo necesita actualizar componentes, pulse Actualizar Ahora!
  6. Quizá sea necesario que reinicie su PC antes de continuar. Pulse Hecho al finalizar.

    La pantalla de Instalación de Visual FoxPro reaparecerá.

  7. Para continuar el proceso de instalación, pulse Visual FoxPro.
  8. Después de aceptar los términos del Contrato de Licencia y de haber ingresado la clave del Producto y su nombre, pulse Continuar.
    Nota Visual FoxPro no puede ser instalado sobre una unidad de disco de red. Deberá instalar Visual FoxPro en una unidad de disco local. No intente usar la funcionalidad Conectar a Unidad de Red durante la instalación.
  9. En la pagina de Opciones, seleccione las funcionalidades que desea instalar y pulse Instalar Ahora! para continuar.
  10. Cuando finalice, pulse Hecho para volver a la instalación de Visual FoxPro. Pulse Salir para volver a la pagina inicial del programa de instalación.

Si instala Visual FoxPro 8.0 manteniendo la instalación de Visual FoxPro 7.0 en el PC; ciertas claves compartidas críticas del registro de Windows usadas por Visual FoxPro 7.0 serán removidas. Deberá reinstalar estas claves críticas.

Si ejecuta el programa Visual FoxPro 7.0 desde el menú de Inicio, el instalador de Visual FoxPro 7.0 reinstala automáticamente estas claves. Si ejecuta Visual FoxPro 7.0 de otra forma, como por ejemplo, ejecutando el archivo de la aplicación directamente, el programa de instalación no se iniciará automáticamente. En este caso, deberá usar la opción Agregar ó Quitar Programas desde el Panel de Control y seguir los pasos siguientes para reinstalar las claves de registro:

Para reinstalar manualmente las claves del registro de Visual FoxPro 7.0

  1. Desde el menú Inicio, pulse Panel de Control.
  2. Pulse Agregar ó Quitar Programas.
  3. Pulse Cambiar/Eliminar para Microsoft Visual FoxPro 7.0.
  4. Pulse Visual FoxPro y después Reparar/Reinstalar.

Resolver problemas de la instalación

Podría encontrarse con alguno de los siguientes problemas cuando este instalando Visual FoxPro:

  • Si no puede ejecutar Visual FoxPro y no puede ver mensajes de error diciéndole cual es el error, el problema puede estar en la ROM BIOS de su PC o en el controlador de video que este utilizando.
  • Si está usando un teclado extendido, recuerde que el mismo es compatible con la ROM BIOS. Además tenga en cuenta de estar usando un controlador de video VGA estándar ó Súper VGA.
  • Si el mensaje de error es "desbordamiento de Pila", su controlador de video está desactualizado o no está diseñado para su placa de video. Para corregir el problema, deberá actualizar el controlador.
  • Por información adicional, consulte el archivo LEEME en la raíz del CD de instalación de Visual FoxPro.

Instalando Aplicaciones Adicionales

Esta versión incluye copias de software adicional que puede ser instalado y usado con Visual FoxPro. Estos incluyen:

  • InstallShield Express Edición Limitada

    Provee la capacidad de crear archivos de instalación para distribuir las aplicaciones creadas con Visual FoxPro. Visual FoxPro incluye la version actualizada y limitada de InstallShield Express 3.54.

    Nota Las ediciones 'limitada' y 'completa' de InstallShield Express 3.54 son consideradas dos versiones del mismo producto y no pueden coexistir. Si instala una versión en una PC que ya tiene instalada al otra, la versión original se desinstalará automáticamente. Dado que la versión limitada contiene menos características que la versión completa, debería mantener la versión completa en su PC.
  • Ejemplos de Microsoft SOAP Toolkit 3.0

    Provee ejemplos para demostrar como consumir y publicar servicios XML Web. Como prerrequisito deberá instalar el núcleo de componentes SOAP Toolkit 3.0 necesarios para acceder y publicar servicios XML Web en Visual FoxPro.

  • Microsoft SQL Server 2000 Desktop Engine (MSDE)

    Provee una versión personal de SQL Server 2000.

Para instalar la edición limitada de InstallShield Express

  1. Coloque el CD de Visual FoxPro.

    La pagina principal del programa de instalación de Visual FoxPro 8.0 se abrirá automáticamente.

  2. Pulse Instalar InstallShield Express.
  3. Siga las instrucciones del asistente de instalación del InstallShield Express.

Puede localizar el archivo Setup.exe para InstallShield Express en la carpeta InstallShield del CD de instalación de Visual FoxPro 8.0.

Nota Visual FoxPro 8.0 instala sus módulos redistribuible en una carpeta diferente de los del Visual FoxPro 7.0.

A continuación se detallan las ubicaciones de los módulos redistribuibles para Visual FoxPro 7.0 y 8.0:

Visual FoxPro 7.0: \Archivos de Programa\Archivos Comunes\Microsoft Shared\Merge Modules\

Visual FoxPro 8.0: \Archivos de Programa\Archivos Comunes\Merge Modules\

La versión de InstallShield Express incluida en Visual FoxPro 8.0 usará automáticamente la ubicación de los nuevos módulos redistribuibles de Visual FoxPro 8.0.

Nota Visual FoxPro 8.0 requiere ciertos módulos cuando se está creando el programa de instalación de una aplicación usando InstallShield Express.

Necesitará incluir los siguientes módulos al crear el programa de instalación:

  • Microsoft Visual FoxPro 8 Runtime Libraries
  • Microsoft Visual C++ Runtime Library 7.0
  • GDI Plus Redist
  • XML 4.0

Para instalar los Ejemplos de SOAP Toolkit 3.0

  1. Coloque el CD de Visual FoxPro.

    La pagina principal del programa de instalación de Visual FoxPro 8.0 se abrirá automáticamente.

  2. Pulse en Instalar Ejemplos SOAP Toolkit 3.0.
  3. Siga las instrucciones del asistente de instalación del SOAP Toolkit 3.0 Samples.

Puede localizar los archivos Soapsdk.msi y Soapsamp.msi para el SOAP Toolkit en la carpeta SOAPToolkit del CD de Visual FoxPro.

Para instalar MSDE

  1. Coloque el CD de Visual FoxPro.

    La pagina principal del programa de instalación de Visual FoxPro 8.0 se abrirá automáticamente.

  2. Pulse Instalar Microsoft SQL Server Desktop Engine (MSDE) para instalar MSDE sin asistente. Pulse Sí para confirmar que desea hacer la instalación del MSDE.

Puede localizar el archivo Setup.exe para instalar MSDE en la carpeta SQLMSDE del CD de Visual FoxPro.

Nota Visual FoxPro 8.0 incluye Microsoft SQL Server 2000 Desktop Engine Service Pack 2.0. Para asegurarse que posee la versión más reciente y el último Service Pack instalado, visite la pagina web de Microsoft SQL Server en http://www.microsoft.com/sql/default.asp. Además, si desea distribuir aplicaciones Visual FoxPro que requieran MSDE, puede obtener los módulos de distribución desde la pagina web de Microsoft SQL Server para usar con programas de instalación basados en Windows.

Reinstalando Visual FoxPro

Si desea reinstalar Visual FoxPro ó cambiarlo a otra carpeta, deberá limpiar su configuración de usuario como así también la de otros archivos instalados por Visual FoxPro antes de reinstalar.

Puede eliminar estos archivos eliminando el contenido de la carpeta ...\Application Data\Microsoft\Visual FoxPro en su carpeta de configuración de usuario. Para determinar la ubicación de la carpeta Application Data escriba ? HOME(7) en al ventana de Comandos. Esto incluye a sus archivos de recursos FoxUser.*, que contienen configuraciones de usuario, y las carpetas de la Caja de Herramientas y del Panel de Tareas.

En todo caso, es posible que sus archivos de recursos se encuentren en otra ubicación. Puede determinar la misma escribiendo la siguiente línea en la ventana de comandos:

? SYS(2005)

Deberá eliminar viejos archivos de Referencia de Código que podrían estar asociados con proyectos en el directorio de proyectos. Los mismos están etiquetados como nombreProyecto_ref.*. Podría también necesitar restaurar la configuración de Registro por defecto que trae Visual FoxPro 8.0.

Visual FoxPro incluye una herramienta VFPClean.app para que pueda asegurarse que todo el núcleo Xbase y otros archivos estén configurados apropiadamente.

Para ejecutar VFPClean.app

  • Escriba la siguiente línea de código en la ventana de Comandos:
    DO HOME()+"VFPCLEAN.APP"

Vea también

Personalizar el Entorno de Visual FoxPro | Actualizar desde versiones anteriores


Actualizar desde versiones anteriores

Microsoft Visual FoxPro protege su inversión al desarrollar aplicaciones con las versiones anteriores de FoxPro. En Visual FoxPro, pueden ejecutarse muchas de las aplicaciones que fueron escritas con las versiones anteriores con poca o ninguna conversión. Puede modificar y mejorar la aplicación usando el lenguaje Visual FoxPro, sabiendo que las muchas extenciones que se agregaron al lenguaje no afectaran la compatibilidad con las versiones anteriores. Además, si lo desea, puede convertir sus pantallas FoxPro, proyectos y reportes a formato Visual FoxPro.

Sin embargo, es posible que algun comportamiento o caracteristica que fuera modificado en la version actual de pueda afectar líneas de código existentes de versiones previas. Por lo tanto, debería revisar las nuevas características, mejoras y cambios de comportamiento más recientes para esta versión. Para más información, vea Lo Nuevo en Visual FoxPro 8.0 y Cambios de comportamiento desde Visual FoxPro 7.0.

Conversión al formato Visual FoxPro

Si elige convetir sus archivos dBASE o FoxPro al formato Visual FoxPro, puede tomar ventaja de las características únicas de Visual FoxPro. También puede ejecutar muchos archivos de versiones previas de FoxPro directamente; otros requieren varios niveles de conversión.

Para convertir la mayoría de los proyectos o componentes creados con versiones anteriores de Visual FoxPro, sólo tiene que abrirlos o recompilarlos en esta versión de Visual FoxPro. Cuando se recompilan componentes como formularios, pantallas o informes, pueden ser necesarias algunas modificaciones. Las modificaciones en estos componentes se realizan de la misma manera que en los componentes de esta versión de Visual FoxPro.

Puede encontrar información adicional acerca de actualizar su código desde versiones previas de Visual FoxPro en el sitio web de la Red de Desarrolladores Microsoft (MSDN de sus siglas en inglés Microsoft Developer Network) http://msdn.microsoft.com. También puede buscar en la biblioteca MSDN por documentación de las versiones anteriores de Visual FoxPro.

Vea también

Introducción a Visual FoxPro | Introducción a las características de Visual FoxPro | Instalar Visual FoxPro | Personalizar el Entorno de Visual FoxPro | Optimizar el sistema


Personalizar el entorno de Visual FoxPro

Una vez instalado correctamente Visual FoxPro, puede personalizar el entorno de desarrollo. La configuración del entorno incluye el título de la ventana principal, el directorio predeterminado, las opciones de herramientas de proyecto, editor, depurador y formulario, almacenamiento de archivos temporales, asignaciones de campos para operaciones de arrastrar y soltar, entre otras muchas opciones.

Puede realizar la configuración en forma interactiva o mediante programación. También puede establecerse la configuración que será cargada cuando se inicialice Visual FoxPro.

Para mas información sobre la optimización de sus aplicaciones Visual FoxPro, vea Optimizar aplicaciones.

En esta sección

Optimizar el sistema
Explica como obtener la máxima perfomance al optimizar su sistema operativo, la aplicación Visual FoxPro o sus aplicaciones.
Configuración de Visual FoxPro
Explica como los cambios en la configuración de su copia local de Visual FoxPro, afectan la manera en la que se se ve y comporta Visual FoxPro; cosas tales como cambiar la ubicación de los archivos usados por Visual FoxPro, alterando la forma en que se ve el código fuente en una ventana de edición y cambiar la forma en que se muestran los formatos de fecha y hora.
Configurar el entorno de Visual FoxPro
Describe diferentes formas de cambiar la configuración del entorno de Visual FoxPro como por ejemplo, usando la caja de dialogo Opciones o establecer las opciones de configuración al iniciar el programa y el uso de los modificadores de línea de comando. Pueden configurarse las barras de herramientas, las ventanas fijas, establecer las opciones del editor y personalizar la apariencia de sus aplicaciones sin alterar su programa.
Restaurar el entorno interactivo de Visual FoxPro
Describe como cerrar todas las operaciones y programas y limpiar el escritorio de Visual FoxPro para retornarlo a su estado interactivo.
Accesibilidad para personas con discapacidades
Provee información acerca de características, productos y servicios que hacen, tanto al sistema operativo Windows como a Visual FoxPro, más accesible para personas con discapacidades.

Secciones relacionadas

Uso de Visual FoxPro
Explica como Visual FoxPro proporciona las herramientas que se necesitan para crear y administrar componentes y aplicaciones de base de datos de alto rendimiento. Con estas herramientas y la orientación del lenguaje orientado a objetos y centrado en datos, pueden construirse aplicaciones modernas, escalables y multicapas que funciones tanto como Cliente/Servidor o en Internet.
Guías paso a paso
Describe como crear diferentes tipos de aplicaciones y componentes con asistentes que guían paso a paso el proceso de desarrollo.
Introducción a las características de Visual FoxPro
Describe cómo Visual FoxPro ofrece todo lo que puede esperarse de un sistema de administración de base de datos (DBMS), velocidad, potencia y flexibilidad.
Desarrollar aplicaciones Visual FoxPro
Incluye información conceptual acerca de como desarrollar aplicaciones Visual FoxPro, instrucciones para la creación de bases de datos e interfaces de usuario y otras tareas necesarias para crear aplicaciones con esta herramienta.
Programar en Visual FoxPro
Explica como el hecho de comprender las técnicas de programación orientada a objeto y el modelo de manejo de eventos, puede maximizar la productividad y facilitarle el acceso a todo el poder de Visual FoxPro.
Herramientas de productividad para el desarrollo
Describe las herramientas de desarrollo que proporciona Visual FoxPro, tanto en la aplicación como en el lenguaje, pensadas para mejorar la productividad en el desarrollo de aplicaciones.


Optimizar el sistema

Visual FoxPro está diseñado para ser el sistema de programación de bases de datos relacionales más rápido. Las aplicaciones que se crean con Visual FoxPro proporcionan una amplia variedad de requisitos y objetivos. Debido a esta variedad, a menudo puede resultar conveniente optimizar el sistema operativo, el propio Visual FoxPro ó la aplicación desarrollada para conseguir el máximo rendimiento.

En esta sección

Optimizar el entorno operativo
Explica formas efectivas de optimizar el rendimiento de Visual FoxPro para obtener un mejor aprovechamiento del entorno operativo y del hardware instalado en su PC.
Optimizar la velocidad de inicio de Visual FoxPro
Describe como puede optimizarse el inicio de Visual FoxPro y su velocidad operativa mejorando la velocidad de inicio y optimizando el uso de comandos SET.
Optimizar Visual FoxPro en un entorno multiusuario
Explica como mejorar el rendimiento de Visual FoxPro en un entorno multiusuario, estableciendo un uso eficiente de los archivos temporales y controlando la forma en que los archivos se comparten.

Secciones relacionadas

Introducción a Visual FoxPro
Muestra cómo comenzar a utilizar Visual FoxPro, incluyendo información sobre la instalación, actualización y personalización de Visual FoxPro y cómo utilizarlo para crear soluciones de base de datos empresariales de última geeneración.
Lo Nuevo en Visual FoxPro 8.0
Lista las características nuevas y las mejoras incluidas en esta versión de Microsoft Visual FoxPro.
Uso de Visual FoxPro
Provee vínculos a información sobre características de programación en Visual FoxPro que estan diseñadas para mejorar la productividad, incluyendo los metodos Access y Assign, soporte para más formatos gráficos y lenguaje para simplificar la tarea de programación.
Desarrollar aplicaciones Visual FoxPro
Incluye información conceptual sobre como desarrollar aplicaciones Visual FoxPro, instrucciones para crear bases de datos e interfaces de usaurio y otras tareas necesarias para crear aplicaciones Visual FoxPro.
Programar en Visual FoxPro
Muestar como acceder a toda la funcionalidad de Visual FoxPro para crear aplicaciones y cómo nos puede beneficiar el comprender las técnicas de programación orientadas a objetos y el manejo de eventos, para maximizar la productividad.


Optimizando el Entorno Operativo

La mejor forma de optimizar el rendimiento de Visual FoxPro es darle al usuario la mejor manera de usar los recursos de su PC. Esta sección le indicará como usar la memoria eficientemente y además optimizar el rendimiento del disco duro.

Usar memoria y la memoria virtual con eficacia

La forma más efectiva de optimizar el sistema para Visual FoxPro es darle la mayor cantidad de memoria posible. Visual FoxPro puede sacar ventaja al tener grandes cantidades de memoria. Así como con la memoria, puede optimizar el rendimiento de Visual FoxPro cerrando cualquier otra aplicación que se esté ejecutando en su PC.

Para obtener el mejor uso de la memoria de su PC mientras se ejecuta Visual FoxPro, siga estas recomendaciones:

  • No active ninguna otra aplicación Windows mientras Visual FoxPro se esté ejecutando.
  • Use solo aquellos programas residentes en memoria necesarios para la aplicación.

Para incrementar el número de aplicaciones que pueda ejecutar simultáneamente, Microsoft Windows dota de memoria virtual por intercambio de segmento de código (código que haya sido usado recientemente) desde la RAM al disco duro en la forma de paginación de archivos. En general, la configuración predeterminada en el sistema operativo Windows para manejar la memoria virtual, resuelve los requisitos de la mayoría de los usuarios; se recomiendan estos ajustes.

Nota: La paginación de archivos no mejora el funcionamiento de Visual FoxPro y no es un sustituto para más RAM. Puede liberar memoria para Visual Foxpro simplificando la forma en que las ventanas y fondos de pantalla son mostrados.
  • Para liberar memoria en las aplicaciones que se estén ejecutando, use un color o patrón para el fondo de la pantalla en lugar de un papel tapiz.
  • Utilice la menor resolución de video necesaria; cuanto más alta sea la resolución de video, el PC necesitará más memoria y los gráficos y elementos de la interfaz de usuario se mostrarán más lentamente. Para los adaptadores compatibles con VGA que utilizan el controlador en modo extendido, tales como Video 7 o 8514, utilice el controlador predeterminado de VGA que asegura un funcionamiento más rápido (pero con menor resolución y menos colores).

Administrar su disco duro

Administrar su disco duro puede conseguir una mayor velocidad total del producto. Siga estas recomendaciones para conseguir el mejor rendimiento de su disco duro:

  • Proporcione una gran cantidad de espacio de disco.

    El rendimiento en las operaciones de entrada/salida de Disco disminuye significativamente cuando tiene poco espacio libre. Si su disco duro tiene poco espacio libre, puede incrementar el rendimiento de Visual FoxPro eliminando los datos innecesarios o comprando una unidad de mayor capacidad. La mayor cantidad de espacio libre en disco, hace que una mayor cantidad de bloques contiguos estén disponibles. Visual FoxPro usa este espacio libre para los cambios y adiciones a las bases de datos, tablas, índices, campos memo y archivos temporales. Por lo tanto el aumento del espacio libre en disco mejora el rendimiento de cualquier comando que cambie o adicione sus archivos. Más espacio en disco también disminuye el tiempo requerido para leer estos archivos como respuesta a sus consultas.

Optimizar archivos y directorios

La manera como Windows y Visual FoxPro manejan los archivos en disco puede tener un gran efecto en el rendimiento de su aplicación. Esta sección le explicará como:

  • Administrar el número de archivos en un directorio.
  • Administrar como FoxPro crea los archivos temporales.

Administrar archivos en directorios

Cuando un directorio empieza a congestionarse con entradas, al sistema operativo le toma más tiempo encontrar los archivos. La forma en que su sistema puede acelerar la búsqueda en estos directorios es una función que no está bajo el control de Visual FoxPro.

Para corregir esta situación, debe reducir el número de archivos en sus directorios. Para reducir el número de archivos en sus directorios y aumentar la velocidad de búsqueda, intente lo siguiente:

  • Utilice el Administrador de proyectos para evitar crear demasiados archivos. Organice sus archivos de programa en directorios separados.
  • Cuando esté listo para distribuir su aplicación, cree una aplicación o un solo archivo ejecutable en lugar de varios de ellos.

    Este procedimiento disminuye el número de archivos de su aplicación, por lo tanto incrementa el rendimiento.

  • Si elimina una gran cantidad de archivos en un directorio, copie los archivos restantes a un nuevo directorio o defragmente el directorio con un programa para tal fin.

    Borrar archivos en un directorio afecta inmediatamente la velocidad de búsqueda. Cuando un archivo es eliminado, la entrada permanece como un "agujero" en el directorio y aún así es incluido en las búsquedas.

  • Cuando guarde archivos, utilice rutas cortas de acceso (paths) para incrementar el rendimiento. Por ejemplo, "c:\Program Files\Microsoft Visual Foxpro\..." es una ruta larga de acceso para el archivo.

Administrar los archivos temporales

Visual FoxPro crea archivos temporales para una variedad de actividades. Por ejemplo, Visual FoxPro crea archivos temporales durante la edición, indexado y ordenamiento. Las sesiones del editor de textos pueden también crear una copia temporal completa del archivo que es corregido.

En forma predeterminada, Visual FoxPro crea los archivos temporales en el mismo directorio que Windows, a menos que usted señale específicamente una localización concreta. Especifique una localización alternativa incluyendo uno o más comandos EDITWORK, SORTWORK, PROGWORK, o TMPFILES en el archivo Config.fpw.

Para especificar la localización de los archivos temporales

  1. Desde el menú Herramientas, seleccione Opciones y después la ficha Localización de Archivos. Desplace la lista hacia abajo hasta Archivos Temporales bajo Tipo de Archivo.
  2. Digite una localización para los archivos temporales.

En la mayoría de los casos, debe especificar una localización para todos los archivos temporales de Visual FoxPro. Sin embargo, siempre cerciórese que la localización que ha especificado tiene suficiente espacio para todos los posibles archivos temporales.

El directorio de archivos temporales debería contener la menor cantidad de archivos que sea posible. Un bajo número de archivos disminuye el tiempo de espera de Visual Foxpro por un retorno de los controladores de archivos de Windows.

Para más información sobre archivos temporales, vea Optimizar Visual FoxPro en un entorno multiusuario.

Vea también

Optimizar el sistema | Optimizar la velocidad de inicio de Visual FoxPro | Administrar archivos temporales | Ficha Archivos, cuadro de diálogo Opciones | Cuadro de diálogo Opciones


Optimizar la velocidad de inicio de Visual FoxPro

Aunque Visual FoxPro siempre es rápido, puede optimizar el inicio de Visual FoxPro y su velocidad de funcionamiento. En esta sección se describe cómo mejorar el rendimiento de Visual FoxPro administrando la velocidad de inicio y optimizando los comandos SET.

Administrar la velocidad de inicio

El tiempo que se necesita para cargar e iniciar Visual FoxPro está relacionado con el tamaño físico de Visual FoxPro, la longitud de la instrucción PATH vigente, el número de elementos presentes en la inicialización y otros factores. Puede controlar el tamaño de carga, la ruta de búsqueda, las ubicaciones de archivos componentes y los valores del comando SET de inicio de Visual FoxPro.

Administrar la ubicación de archivos

Visual FoxPro almacena el archivo FoxUser.dbf que contiene las preferencias del usuario, en el directorio de datos predeterminado en la aplicación. Puede encontrar esta ubicación al escribir HOME(7) en la ventana de comando. Visual FoxPro buscará los archivos FoxUser.dbf y Config.fpw en los siguientes sitios:

  • En la aplicación de inicio o en el archivo ejecutable si existe. Por ejemplo, puede iniciar una aplicación de Visual FoxPro usando el siguiente comando:
    VFP8.exe MYAPP.APP

    – O bien –

    VFP8.exe MYAPP.EXE

    Si la aplicación de inicio o archivo ejecutable contiene el archivo Config.fpw, este siempre será utilizado. Las configuraciones dentro de un archivo Config.fpw que está vinculado dentro de una aplicación pueden ser sobrescritas si se especifica un archivo Config.fpw externo, usando el parámetro -C en la línea de comando cuando se inicia una aplicación o Visual FoxPro.

  • En el directorio de trabajo
  • En la ruta establecida en la variable de entorno PATH
  • En el directorio donde se encuentra Visual FoxPro

Controlar la carga de archivos

También puede acelerar el inicio si evita cargar archivos que no piensa utilizar. Si la aplicación no usa el archivo FOXUSER o FOXHELP, desactívelos en el archivo Config.fpw mediante los comandos siguientes:

RESOURCE = OFF
HELP = OFF

Visual FoxPro busca todos los demás componentes de Visual FoxPro (GENXTAB, CONVERT, etc.) sólo en el directorio de Visual FoxPro. Si sitúa los componentes en otro lugar, debe identificar de forma explícita la ruta a dichos componentes en el archivo Config.fpw. Por ejemplo, podría especificar estas ubicaciones:

_TRANSPORT = c:\migrate\transport.prg
_GENXTAB = c:\crosstab\genxtab.prg
_FOXREF = c:\coderefs\foxref.app

Puede utilizar la variable de entorno FOXPROWCFG para especificar de forma explícita la ubicación de Config.fpw. Para obtener detalles acerca de la variable FOXPROWCFG, consulte Personalizar el Entorno de Visual FoxPro.

Optimizar el tamaño de carga de Visual FoxPro

Para acelerar el inicio, si no tiene intención de usar ninguno de los componentes de Visual FoxPro mencionados anteriormente, configúrelos como una cadena vacía.

Para optimizar el tamaño de carga de Visual FoxPro

  • Use la siguiente sintaxis:

    cFileVariable = ""

    Reemplace cFileVariable por _TRANSPORT, _CONVERT u otras variables según corresponda.

Optimizar los comandos SET clave

Puede optimizar el funcionamiento de Visual FoxPro ajustando los valores de algunos comandos SET.

La tabla siguiente muestra los comandos SET que tienen más efecto sobre el rendimiento y los valores para obtener un rendimiento óptimo. Puede especificar los valores de los comandos SET incluyéndolos en el archivo Config.fpw, escribiéndolos en la ventana de comandos o bien estableciéndolos en el cuadro de diálogo Opciones.

Configurar el comando para obtener un rendimiento óptimo

SET (Comando) | Configuración de rendimiento
SET ESCAPE (Comando) | ON
SET OPTIMIZE (Comando) | ON
SET REFRESH (Comando) | 0,0
SET SYSMENU (Comando) | PREDETERMINADO
SET TALK (Comando) | OFF
SET VIEW (Comando) | OFF

Vea también

Optimizar el sistema | Optimizar Visual FoxPro en un entorno multiusuario | Optimizar el entorno operativo | Personalizar el Entorno de Visual FoxPro | SET ESCAPE (Comando) | SET REFRESH (Comando) | SET SYSMENU (Comando) | Ventana Comandos


Optimizar Visual FoxPro en un entorno multiusuario

Cuando ejecuta Visual FoxPro en un entorno multiusuario, el funcionamiento de una aplicación de Visual FoxPro puede verse afectado por el modo en que usted maneja los archivos temporales y la manera en que los usuarios comparten los archivos.

Administrar archivos temporales en un entorno multiusuario

En la mayoría de los entornos multiusuarios, deberá sustituir los archivos temporales en la unidad local. La administración de archivos depende de la cantidad de espacio de disco y de la RAM de los equipos conectados en red que ejecutan la aplicación.

Si los equipos conectados en red disponen de unidades de disco duro de tamaño ajustable con suficiente espacio libre, puede mejorar el rendimiento en un entorno multiusuario situando los archivos de trabajo temporales de Visual FoxPro en unidades locales. Si vuelve a dirigir un archivo a una unidad local se acelerará el proceso, ya que la necesidad de acceso a la unidad de red será menor y, de este modo, se reducirá el tráfico de la red.

En redes pequeñas, con equipos de red más antiguos y unidades de disco lentas, es posible que el rendimiento sea mejor si deja los archivos temporales de Visual FoxPro en un servidor de archivos. En caso de duda, dirija los archivos temporales a la unidad de disco duro local. Si trabaja con redes grandes y de mucho tráfico, vuelva a dirigir los archivos temporales a la unidad de disco duro local.

Por ejemplo, para volver a dirigir todos los archivos temporales a un directorio llamado WORK en la unidad C:, incluya las siguientes líneas en su archivo Config.fpw:

TMPFILES=c:\work
EDITWORK=c:\work
SORTWORK=c:\work
PROGWORK=c:\work

Compruebe que el directorio SORTWORK es lo suficientemente amplio para contener los archivos temporales que Visual FoxPro genera durante las actividades de ordenación e indización. Cuando Visual FoxPro maneja tablas grandes, estos archivos temporales pueden ser muy grandes.

Si coloca todos los archivos temporales en un único directorio de una unidad local, podrá eliminar sin riesgo el contenido del directorio de archivos temporales antes de cada sesión de Visual FoxPro. Esto limpiará el sistema de cualquier archivo temporal que Visual FoxPro haya creado pero no eliminado debido a la reinicialización del sistema o a un corte de la corriente eléctrica.

Uso compartido de tablas en un entorno multiusuario

El modo de administrar el acceso a los archivos a través de bloqueos de archivos y registros en un entorno multiusuario puede afectar al rendimiento. Puede mejorar el rendimiento mediante la cláusula EXCLUSIVE de los comandos USE y OPEN.

Con el uso compartido activado y EXCLUSIVE establecido como OFF, las tablas de una unidad compartida se abrirán para que tengan acceso múltiples usuarios. En esa situación, el comando siguiente abre CUSTOMER.DBF en modo compartido:

USE c:\customer.dbf

Visual FoxPro puede almacenar en búfer operaciones de escritura a archivos no compartidos y de ese modo mejorar el rendimiento. Para mejorar el rendimiento de los comandos APPEND, REPLACE y DELETE, asegúrese de abrir tablas o bases de datos locales mediante la cláusula EXCLUSIVE de los comandos USE u OPEN, como se muestra en el siguiente ejemplo:

OPEN DATABASE mycompany EXCLUSIVE
USE c:\customer.dbf EXCLUSIVE

Evite abrir y cerrar tablas repetidamente.

Para obtener más información acerca del acceso a archivos en entornos compartidos, consulte Programar para acceso compartido.

Vea también

Optimizar el sistema | Programar para acceso compartido | Optimizar aplicaciones en entornos multiusuario | USE (Comando) | APPEND (Comando) | REPLACE (Comando) | DELETE (Comando)


Configuración de Visual FoxPro

La configuración de Visual FoxPro determina cuál será la apariencia y el comportamiento de la copia de Visual FoxPro. Por ejemplo, puede establecer las rutas predeterminadas para los ficheros usados con Visual FoxPro, cual será la apariencia del código fuente en la ventana de edición y el formato de fecha y hora.

Puede hacer cambios en la configuración de Visual FoxPro que existe solamente para la sesión actual (temporalmente) o especificarlos como la configuración predeterminada para la próxima vez que inicie Visual FoxPro (permanentemente). Si la configuración es temporal, es guardada en memoria y es descargada cuando sale de Visual FoxPro.

Si crea la configuración permanente, es guardada en el registro de Microsoft Windows o en el archivo de recursos de Visual FoxPro. El registro de Windows es una base de datos que guarda la información de la configuración del sistema operativo, todas las aplicaciones Windows, OLE y componentes opcionales tales como ODBC. Por ejemplo, en el registro es donde Windows guarda la asociación entre los nombres de las extensiones de los archivos y las aplicaciones de tal forma que cuando hace clic sobre un nombre de archivo, Windows puede ejecutar o activar la aplicación apropiada.

Para ver un ejemplo de cómo cambiar el registro, puede examinar Registry.prg en la carpeta \Samples\Classes que contiene numerosos métodos basados en llamadas a APIs de Windows que hacen posible la manipulación del registro de Windows.

De forma similar, Visual FoxPro guarda la información de configuración de la aplicación en el registro. Al iniciar Visual FoxPro, el programa lee la información de configuración en el registro y establece la configuración en dependencia de la misma. Después de leer el registro, Visual FoxPro también verifica que exista un archivo de configuración, que es un archivo de texto en el cual puede guardar los parámetros de configuración para sobreescribir los valores predeterminados guardados en el registro. Después de iniciado Visual FoxPro, puede realizar ajustes de configuración adicionales usando el Cuadro de diálogo Opciones o comandos SET. Para más información, vea Ver y cambiar la configuración del entorno.

Nota La versión de Visual FoxPro en tiempo de ejecución no lee el registro de Windows al iniciarse, ya que la configuración de registro está diseñada en primer lugar para configurar el entorno de desarrollo. Si intenta distribuir sus aplicaciones Visual FoxPro utilizando una biblioteca en tiempo de ejecución, puede establecer parámetros de configuración de dos formas: con un archivo de configuración o con un programa que manipule el registro de Windows en el PC del usuario.

Visual FoxPro también mantiene el archivo de recursos Foxuser.dbf, que guarda información acerca del estado actual del programa cuando se cierra. Por ejemplo, el archivo de recursos contiene información acerca de la ubicación y tamaño de la ventana Comandos, las macros de teclado actuales, las barras de herramientas que se muestran, etc. El archivo Foxuser.dbf es una tabla común de Visual FoxPro, la cual puede leer y cambiar como sea requerido por su aplicación

Sugerencia Si los datos en la tabla Foxuser.dbf se dañan o invalidan, puede causar que Visual FoxPro se comporte de una forma errática. Si manualmente no guarda nada en la tabla, por ejemplo las macros del teclado, eliminar la tabla pudiera ayudar.

Ver también

Personalizar el Entorno de Visual FoxPro | Ver y cambiar la configuración del entorno | cuadro de diálogo Opciones | Registro ODBC Foundation Class | Ventana Comandos | Cambiar parámetros de configuración en el registro de Windows | Comando SET RESOURCE


Configuración del entorno de Visual FoxPro

Puede efectuar cambios en el entorno de Visual FoxPro utilizando el cuadro de dialogo Opciones, editando el registro de Windows, sobrescribiendo los parámetros de configuración predeterminados, personalizando el Administrador de Proyectos y configurando las barras de herramientas de Visual FoxPro.

En esta sección

Ver y cambiar la configuración del entorno
Describe como ver, cambiar o verificar la configuración del entorno, el Comando DISPLAY STATUS o mostrando los valores de comandos individuales SET, utilizando para ello el cuadro de diálogo Opciones.
Cambiar parámetros de configuración en el registro de Windows
Describe como fijar la configuración de Visual FoxPro haciendo cambios en el registro de Windows, usando el Editor de Registro.
Establecer opciones de configuración durante el inicio
Describe como puede establecer parámetros de configuración cuando inicia el programa, haciéndolo posible sobrescribir los parámetros por defecto.
Usar opciones de línea de comandos al iniciar Visual FoxPro
Explica como puede especificar opciones de carga incluyendo un parámetro en la línea de comandos. Puede utilizar una línea del comando de intercambio para ignorar el archivo de configuración predeterminado y la configuración del registro de Windows.
Personalizar la apariencia de las aplicaciones
Describe como modificar la apariencia de sus aplicaciones sin cambiar el código de la aplicación.
Configurar las Barras de herramientas de Visual FoxPro
Describe como personalizar, mostrar y ocultar barras de herramientas.
Acoplar ventanas
Describe como puede acoplar ventanas en el escritorio de Visual FoxPro. Puede acoplar las ventanas en tres modos diferentes normal, enlazadas e indentadas. Puede utilizar acoplamientos indentados y acoplamientos enlazados al mismo tiempo.
Configurar las opciones del Editor
Explica como configurar el Editor de Visual FoxPro para mostrar el texto, pudiendo configurar la fuente y la alineación de texto. Puede además hacer el editor más sencillo de usar fijando sus preferencias de indentación, traslado, copia automática de seguridad y otras características.
Mostrar e imprimir archivos de código fuente en color
Describe cómo configurar sus parámetros de tal forma que pueda mostrar e imprimir archivos de programas, métodos, procedimientos almacenados y memos a color.
Automatización de tareas de pulsación de teclas con macros
Describe cómo puede guardar y salvar pulsaciones de teclado repetitivas en macros usando el cuadro de diálogo Macros o bien si desea automatizar algunas tareas de pulsaciones de teclado para sus usuarios.

Secciones relacionadas

Personalizar el Entorno de Visual FoxPro
Explica que después que instale Visual FoxPro, puede personalizar sus parámetros de entorno de desarrollo, incluyendo el título de la ventana principal, la carpeta predeterminada, proyecto, editor, depurador y opciones de herramientas de formularios, almacenamiento temporal de archivos, mapeo de campos para operaciones de arrastrar y soltar; y muchas otras opciones.
Configuración de Visual FoxPro
Explica cómo cambiando la configuración de la copia de Visual FoxPro afecta la forma en que este se muestra y se comporta, por ejemplo estableciendo localizaciones predeterminadas para archivos usados con Visual FoxPro, alterando como se mostrará el código fuente en la ventana de edición y mostrando el formato de fechas y horas.
Restaurar el entorno interactivo de Visual FoxPro
Describe cómo cerrar todas las operaciones del programa y limpiar el escritorio de Visual FoxPro para devolverlo a su estado interactivo.


Ver y cambiar la configuración del entorno

Para ver y cambiar la configuración del entorno, utilice el cuadro de diálogo Opciones. Este cuadro de diálogo contiene una serie de fichas representando diferentes categorías de opciones de entorno.

Para mostrar el cuadro de diálogo Opciones

  • En el menú Herramientas, elija Opciones.

El cuadro de diálogo Opciones aparece y muestra fichas desde las cuales puede elegir la configuración deseada. Para detalles acerca de las opciones que puede establecer utilizando cada ficha, vea el Cuadro de diálogo Opciones.

Mostrar la configuración

Cuando se está ejecutando Visual FoxPro, puede comprobar la configuración del entorno mediante el cuadro de diálogo Opciones o el comando DISPLAY STATUS, o mostrando los valores de comandos SET.

Para mostrar múltiples configuraciones de entorno

  • En el menú Herramientas, elija Opciones para mostrar el cuadro de diálogo Opciones y vea la configuración actual.

    –o bien–

  • Escriba DISPLAY STATUS en la ventana Comandos.

Para mostrar la configuración individual de entorno

  • Utilice la función SET( ) en la ventana Comandos para mostrar el valor actual de cualquier comando SET.

Por ejemplo, para ver el estado actual de SET TALK, escriba:

? SET("TALK")
Nota Como la configuración sólo es válida para la sesión de datos actual, debe capturarla y colocarla en un programa o en el código del evento Init de un formulario para cada sesión de datos privada.

Para más información, consulte SET (Introducción al comando).

Para reproducir la configuración del cuadro de diálogo Opciones en la ventana Comandos

  1. En el cuadro de diálogo Opciones, seleccione los valores de configuración.
  2. Mantenga presionada la tecla MAYÚS y elija Aceptar.

    La configuración se reproduce en la ventana Comandos.

  3. Copie los comandos de configuración de la ventana Comandos.

Guardar la configuración

Puede guardar la configuración creada en el cuadro de diálogo Opciones para la sesión de datos actual o como configuración predeterminada (definitiva) para su copia de Visual FoxPro.

Para guardar la configuración de la sesión de datos actual

  1. En el cuadro de diálogo Opciones, seleccione los valores de configuración.
  2. Elija Aceptar.

Cuando guarde la configuración para la sesión actual, permanecerá activa hasta que salga de Visual FoxPro (o hasta que la vuelva a cambiar). Para guardar los cambios de forma definitiva, guárdela como configuración predeterminada; esto la almacena en el Registro de Windows.

Para guardar la configuración predeterminada

  1. En el cuadro de diálogo Opciones, cambie los valores deseados.
  2. Elija Establecer como predeterminado.
    Nota El botón Establecer como predeterminado está desactivado hasta que cambie la configuración actual.

Puede pasar por alto la configuración predeterminada si ejecuta comandos SET o especifica un archivo de configuración al iniciar Visual FoxPro. Para obtener más información, consulte Establecer opciones de configuración durante el inicio.

Configurar el comando SET y Visual FoxPro

La mayor parte de las opciones en las fichas del cuadro de diálogo Opciones también se pueden modificar mediante programación con un comando SET o asignando un valor a una variable del sistema.

Por ejemplo, para usar un formato año-mes-día para fechas, puede cambiar la opción Formato de fecha de la ficha Regional del cuadro de diálogo Opciones o puede usar el comando SET DATE:

SET DATE TO ANSI

Si configura el entorno con comandos SET, la configuración sólo estará activa para la sesión actual de Visual FoxPro. Cuando salga del programa, se descartará la configuración y tendrá que volver a ejecutar los comandos SET. Sin embargo, puede automatizar este proceso ejecutando comandos SET en el inicio o mediante un archivo de configuración. Para obtener más información, consulte Establecer opciones de configuración durante el inicio.

Sugerencia También puede guardar una configuración creada con comandos SET; para ello, muestre el cuadro de diálogo Opciones y guarde en él su configuración.

Vea también

Configurar el entorno de Visual FoxPro | Establecer opciones de configuración durante el inicio | Obtener información de la aplicación en el Registro de Windows (Ejemplo) | Cambiar parámetros de configuración en el registro de Windows | DISPLAY STATUS (Comando)


Cambiar la configuración en el registro de Windows

Puede hacer los cambios directamente en el Registro de Windows para establecer la configuración de Visual FoxPro.

Para cambiar el Registro de Windows, use el Editor de Registro de configuraciones, una utilidad proporcionada con Windows.

Nota Trabaje con precaución cuando efectúe cambios en el registro de Windows. Cambiar el registro con un valor erróneo o realizar una modificación en forma incorrecta, pueden generar un error, provocando que Visual FoxPro o el mismo Windows, no se puedan ejecutar o que trabajen en forma inapropiada.

Para modificar la configuración en el registro

  1. En Windows, inicie el Editor del Registro.
  2. Desplácese a la clave de Registro HKEY_CURRENT_USER:
    Software\Microsoft\VisualFoxPro\8.0\Options
  3. Haga doble clic a la configuración que quiere modificar y escriba un valor nuevo.
  4. Cierre el Editor del Registro.

    La modificación surtirá efecto la próxima vez que inicie Visual FoxPro.

También puede hacer modificaciones en el Registro llamando a las API de Windows desde un programa de Visual FoxPro.

Vea también

Configurar el entorno de Visual FoxPro | Obtener información de la aplicación en el Registro de Windows (Ejemplo) | Acceso a las APIs | SYS(3056) - Leer valores del registro


Establecer opciones de configuración durante el inicio

Puede establecer la configuración cuando inicie el programa, lo que permite ignorar la configuración predeterminada.

Utilizar comandos SET

Una forma de establecer la configuración es ejecutar uno o mas comandos SET cuando inicie la aplicación. Por ejemplo, para configurar el sistema para que muestre un reloj en la barra de estado cuando se inicie la aplicación, puede ejecutar el comando SET siguiente:

SET CLOCK ON

El punto exacto en que se ejecuta el comando SET depende de su aplicación. En general, los comandos SET se ejecutan en el programa principal de la aplicación, que es el programa o formulario que controla el acceso al resto de la aplicación. También puede ejecutar comandos SET desde los eventos Load o Init del formulario. Si está utilizando una sesión privada de datos, puede ser necesario hacer estos cambios en el Evento BeforeOpenTables del objeto DataEnvironment. Para detalles acerca de como especificar un programa principal para una aplicación, consulte Compilar una aplicación .

Si la aplicación tiene un formulario asignado como principal en el administrador de proyectos y este lanza un menú, puede agregar los comandos SETUP escribiéndolos en la opción de instalación del menú. Para mas detalles consulte Agregar un código de configuración a un sistema de menús en Diseñar menús y barras de herramientas .

Sugerencia Una forma eficiente de administrar los comandos SET para el inicio es crear un procedimiento que contenga todos los comandos que quiere ejecutar. Puede llamar al procedimiento desde un punto apropiado de la aplicación. El mantener todos los comandos SETUP en un único procedimiento es más fácil depurar y mantener la configuración. También puede poner el código en la clase en que se base el objeto aplicación, o la clase de la que dependan los formularios.

Utilizar un archivo de configuración

Además de establecer el entorno de Visual FoxPro mediante el cuadro de diálogo Opciones o comandos SET, puede establecer configuraciones preferidas y guardarlas en uno o más archivos de configuración. Un archivo de configuración de Visual FoxPro es un archivo de texto en el que puede especificar valores para los comandos SET, establecer variables del sistema y ejecutar comandos o llamadas a funciones. Visual FoxPro lee el archivo de configuración al inicializarse, estableciendo la configuración y ejecutando los comandos del archivo. La configuración efectuada por el archivo de configuración pasa por alto la configuración efectuada en el cuadro de diálogo Opciones (y almacenada en el Registro de Windows).

El uso de un archivo de configuración proporciona varias ventajas. Puede:

  • Pasar por alto la configuración predeterminada especificada en el cuadro de diálogo Opciones.
  • Mantener varios archivos de configuración diferentes, cada uno con valores diferentes, de forma que Visual FoxPro puede cargar una configuración adecuada para un usuario o proyecto concreto.
  • Hacer modificaciones más fácilmente que si establece la configuración con los comandos SET en la secuencia de inicio del programa.
  • Iniciar un programa o llamar a una función automáticamente cuando se inicie Visual FoxPro.

Crear un Archivo de Configuración

Para crear un archivo de configuración, use el editor de Visual FoxPro, o cualquier editor que pueda crear archivos de texto, para crear un archivo de texto en el directorio en el que está instalado Visual FoxPro. Versiones anteriores de Visual FoxPro creaban el archivo Config.fpw en el directorio de inicio. Config.fpw se convertía en la configuración predeterminada. Puede crear cualquier programa y utilizarlo para establecer la configuración predeterminada si inicia Visual FoxPro con este archivo en lugar de hacer doble clic en el archivo o utilizar una referencia de línea de comandos.

Si está creando un nuevo archivo de configuración, puede guardarlo con el nombre que quiera. Por convenio, los archivos de configuración tienen la extensión .fpw.

Cuando inicia Visual FoxPro, puede utilizar un archivo de configuración predeterminado desde estas ubicaciones en el siguiente orden:

  • El directorio de trabajo actual
  • El directorio en que está instalado Visual FoxPro
  • Los directorios mostrados en la ruta de acceso de DOS

Si Visual FoxPro no encuentra un archivo de configuración en estas ubicaciones, Visual FoxPro solo utilizará la configuración predeterminada establecida en el cuadro de diálogo Opciones.

Nota Para obtener detalles acerca de cómo especificar una alternativa al nombre de archivo o ubicación predeterminados del archivo de configuración, consulte Especificar el archivo de configuración que se va a usar.

Introduzca la configuración con uno de los métodos siguientes:

  • Establecer la configuración con los comandos SET.
  • Establezca variables del sistema.
  • Llame a programas o funciones.
  • Incluya términos especiales utilizados únicamente en archivos de configuración.

Para introducir comandos SET en un archivo de configuración

  • Escriba los comandos SET sin la palabra clave SET y con un signo igual.

    Por ejemplo, para establecer un tipo de ruta de acceso predeterminado, utilice este formato:

    DEFAULT = HOME()+"\VFP"

    Para agregar un reloj a la barra de estado, utilice este comando:

    CLOCK = ON

Para escribir una configuración para una variable del sistema, utilice la misma sintaxis que utilizaría en la ventana Comandos o en un programa.

Para establecer variables de sistema en un archivo de configuración

  • Escriba el nombre de la variable del sistema, un signo igual (=) y el valor al que quiere establecer la variable.

    Por ejemplo, el siguiente comando especifica un programa alterno revisión ortográfica:

    _SPELLCHK = "SPLLCHK.EXE"

También puede llamar a funciones o ejecutar programas desde un archivo de configuración usando el comando COMMAND. Por ejemplo, puede ejecutar un programa de inicio como parte del proceso de inicio.

Para llamar a funciones o ejecutar comandos en un archivo de configuración

  • Escriba COMMAND, un signo igual (=), y el comando a ejecutar o la función.

    Por ejemplo, para incluir el número de versión de Visual FoxPro en el título de la ventana principal de Visual FoxPro, use este comando:

    COMMAND =_SCREEN.Caption="Visual FoxPro " + VERS(4)

    El siguiente comando ejecuta una aplicación específica cuando se inicia Visual FoxPro:

    COMMAND = DO MYAPP.APP

También puede usar términos especiales en un archivo de configuración que no correspondan a un valor SET, variables del sistema o comandos.

Para usar términos especiales en un archivo de configuración

  • Escriba el término especial, un signo igual (=) y la configuración.

    Como ejemplo, para establecer el número máximo de variables disponibles en Visual FoxPro, use este comando:

    MVCOUNT = 2048

Para ver una lista completa de términos especiales para archivos de configuración, consulte Términos especiales para archivos de configuración.

Especificar un Archivo de Configuración Externo

Puede utilizar un archivo de configuración externo además del archivo de configuración interno en ocasiones donde necesite una configuración separada. Por ejemplo, configurar SCREEN=OFF podría ser ejecutado en una archivo de configuración interno.

Puede configurar a Visual FoxPro para leer un archivo de configuración externo siguiendo a un archivo de configuración interno mediante el uso de la nueva directiva ALLOWEXTERNAL en el archivo de configuración interno. Cuando incluya la configuración ALLOWEXTERNAL=ON en el archivo de configuración interno, Visual FoxPro buscará un archivo de configuración externo, normalmente Config.fpw, y aplicara la configuración. También puede especificar un archivo de configuración diferente utilizando el modificador -C en la línea de comando, cuando inicie Visual FoxPro.

Nota Para archivos .exe y .dll en servidores , Visual FoxPro limita estos archivos de configuración solo al entorno del servidor. Por lo tanto, Visual FoxPro ignorará la configuración de ALLOWEXTERNAL.

Para leer un archivo de configuración externo luego de uno interno

  1. En el archivo de configuración interno, cambiar el término especial ALLOWEXTERNAL a on.
    ALLOWEXTERNAL = ON
  2. Cuando inicie el programa, puede especificar un segundo archivo de configuración utilizando el modificador -C en la línea de comando o tener un segundo archivo de configuración en la ruta predeterminada del programa.

Para obtener más información sobre los modificadores de la línea de comandos, vea Usar opciones de línea de comandos al iniciar Visual FoxPro.

La configuración en una archivo de configuración externo toma precedencia sobre la configuración del archivo de configuración interno, si existe duplicación de configuraciones, porque el archivo de configuración externa es leído luego del archivo de configuración interno. Visual FoxPro no empieza la inicialización hasta que lee ambos archivos.

Si quiere especificar el archivo de configuración como de sólo lectura, ubique el archivo en el proyecto y márquelo como Incluido. Si quiere especificar que el archivo puede ser modificado, ubique el archivo en el proyecto y márquelo como Excluido. Entonces puede distribuir el archivo separadamente de la aplicación o ejecutable. Por convención, los archivos de configuración utilizan la extensión .fpw.

Iniciar Aplicaciones o Programas automáticamente

Puede insertar comandos en archivos de configuración que inician automáticamente los programas cuando se inicia Visual FoxPro. Puede usar estos comandos para iniciar una aplicación completa o para iniciar únicamente un programa, por ejemplo, uno que inicializa variables del sistema.

Para iniciar aplicaciones desde un archivo de configuración

  • Puede asignar el nombre de la aplicación a la variable del sistema _STARTUP en cualquier lugar del archivo de configuración:
    _STARTUP = MYAPP.APP

    –O bien–

  • Utilice el comando COMMAND, que debe ser la última línea del archivo de configuración:
    COMMAND = DO MYAPP.APP

Especificar el Archivo de Configuración a Utilizar

Cuando se inicia Visual FoxPro, puede especificar un archivo de configuración o pasar por alto todos los archivos de configuración, permitiendo a Visual FoxPro usar su configuración predeterminada.

Cuando Visual FoxPro carga un archivo de configuración, la configuración de ese archivo tiene prioridad superior a la configuración predeterminada correspondiente realizada en el cuadro de diálogo Opciones.

Para especificar un archivo de configuración

  • En la línea de comandos que inicia Visual FoxPro, especifique el modificador -C y el nombre del archivo de configuración que quiere usar (incluya una ruta de acceso si es necesario). No coloque un espacio entre el modificador y el nombre de archivo.

    –O bien–

  • En Windows, haga doble clic en el nombre del archivo de configuración que va a usar. Visual FoxPro se iniciará usando el archivo de configuración que haya seleccionado.

Si quiere evitar el uso de archivos de configuración, incluido el archivo predeterminado Config.fpw, puede suprimir todos los archivos de configuración. Esto hace que Visual FoxPro use exclusivamente la configuración predeterminada establecida en el cuadro de diálogo Opciones.

Para eliminar un archivo de configuración

  • En la línea de comandos que inicia Visual FoxPro, agregue el modificador -C y no escriba nada a continuación.

    Por ejemplo, para evitar cualquier archivo de configuración que se encuentre en el directorio de inicio o en la ruta de acceso del sistema, use esta línea de comandos:

    Vfp8.exe -C

Vea también

Configurar el entorno de Visual FoxPro | Usar opciones de línea de comandos al iniciar Visual FoxPro | Compilar una aplicación | Agregar un código de configuración a un sistema de menús | Diseñar menús y barras de herramientas | Términos especiales para archivos de configuración | Variable del sistema _STARTUP


Usar opciones de línea de comandos al iniciar Visual FoxPro

Además de usar el comando SET y un archivo de configuración, puede especificar opciones de inicio incluyendo un modificador de línea de comandos. Por ejemplo, mediante la utilización de opciones de línea de comandos, puede suprimir la presentación de la pantalla de inicio de sesión de Visual FoxPro o especificar un archivo de configuración no predeterminado. La tabla siguiente muestra los modificadores de línea de comandos disponibles en Visual FoxPro.

Para utilizar modificadores en la línea de comando

  • Agregar el modificador luego de Vfp8.exe o cualquier .exe creado con Visual FoxPro en la línea de comando o en un acceso directo.

    Si el modificador de la línea de comando incluye un nombre de archivo, no deje ningún espacio en blanco entre el modificador y el nombre de archivo.

Modificadores de línea de comandos para Visual FoxPro

Modificador Descripción
-A
 Ignora el archivo de configuración predeterminado y la configuración del Registro de Windows.
-BFileName,Duration
Mostrar su propio archivo grafico bitmap (.bmp), .gif, o .jpg y especifica su duración cuando es iniciado Visual FoxPro. Si el bitmap que especifica no puede ser ubicado, no será mostrado cuando se inicie Visual FoxPro. El modificador -b de la línea de comandos también puede ser incluido en un acceso directo de Visual FoxPro.

-CFileName
 Especifica un archivo de configuración (incluyendo la ruta de acceso si es necesario) distinto del predeterminado (Config.fpw).
-DFileName
 Especifica un archivo .DLL de tiempo de ejecución (incluyendo la ruta de acceso si es necesario) distinto del predeterminado.
-LFileName
 Especifica un archivo de recursos (incluyendo la ruta de acceso si es necesario) distinto del predeterminado, que le permite usar Visual FoxPro en un idioma distinto que el actual especificado por Windows.
-R
 En versiones anteriores, actualiza el Registro de Windows con información acerca de Visual FoxPro, como las asociaciones de los archivos de Visual FoxPro. En versiones posteriores, utilice /regserver.
-T
 Evita que se muestre la pantalla de inicio de sesión de Visual FoxPro (logotipo). Para más información, vea Evitar que se muestre la pantalla de Inicio de sesión.
/?
Lista de los argumentos disponibles de la línea de Comandos. Disponible a partir de Visual FoxPro 7 y posteriores.

/regserver
 Registra las claves predeterminadas del Registro de Visual FoxPro.
REGSVR32 <server.DLL>
 Registra un componente .DLL.
/unregserver
 Quita las claves predeterminadas del Registro de Visual FoxPro.
/u <server.DLL>
 Quita un componente .dll.

Si el modificador de comando requiere argumentos, como nombre de archivo, no coloque un espacio entre el modificador y el argumento. Separe múltiples opciones con espacios individuales. Por ejemplo, para especificar un archivo de configuración, use un comando como:

C:\Archivos de programa\Microsoft Visual FoxPro 8\VFP8.EXE -CC:\MYAPP\MYAPP.FPW

Evitar que se muestre la pantalla de Inicio de sesión

De forma predeterminada, cuando se inicia Visual FoxPro, aparece una pantalla de inicio de sesión que muestra el logotipo de Visual FoxPro, el número de versión y más información. Si prefiere que los usuarios de su aplicación no vean esta pantalla de inicio de sesión, puede evitar que Visual FoxPro la muestre.

Para evitar la presentación de la pantalla de inicio de sesión

  • Agregue el modificador -T a la línea de comandos de Visual FoxPro como modificador de línea de comandos.
    Nota Por motivos de compatibilidad con versiones anteriores de Visual FoxPro, también puede establecer modificadores mediante la variable de entorno FOXPROWCFG DOS, pero este método no es recomendable.

Por ejemplo, utilice un comando como:

VFP8.EXE -T

Vea también

Configurar el entorno de Visual FoxPro | Establecer opciones de configuración durante el inicio | Personalizar el Entorno de Visual FoxPro | Configurar las Barras de herramientas de Visual FoxPro


Personalizar la apariencia de las aplicaciones

Puede modificar la apariencia de su aplicación sin necesidad de cambiar su código, mediante los métodos siguientes:

  • Cambiar el sistema de menús predeterminado.
  • Cambiar el título predeterminado.
  • Cambiar el icono predeterminado de aplicación.

Cambiar los Menús predeterminados de Visual FoxPro

Puede agregar sus propios menús y comandos de menú a las aplicaciones distribuidas, empleando para ello el Diseñador de menús. Si no crea ningún menú propio, el entorno de tiempo de ejecución mostrará un menú predeterminado de Visual FoxPro.

Cambiar el Título predeterminado

La aplicación se ejecuta en la ventana principal de Visual FoxPro. El texto "Microsoft Visual FoxPro" aparece de forma predeterminada en la barra de título.

Para personalizar el título de la ventana principal de Visual FoxPro

  • Agregue la siguiente instrucción a su archivo de configuración:
    TITLE = cMyTitle

    Sustituya cMíTítulo por el título de la ventana principal de su aplicación.

Para incluir una función de Visual FoxPro como parte del título, utilice la propiedad Caption de la ventana principal como en el siguiente ejemplo.

COMMAND=_SCREEN.Caption="Visual FoxPro " + VERSION(4)

Cambiar el icono predeterminado de la Aplicación

Una vez compilada la aplicación, el icono predeterminado de Visual FoxPro aparecerá en el Explorador de Windows o el menú Inicio como icono para la aplicación. Puede utilizar el icono genérico suministrado por Visual FoxPro o bien diseñar uno propio.

Si quiere mostrar su propio icono, cree un archivo de icono (.ico) con dos imágenes: una pequeña (16 por 16) y una estándar (32 por 32). Cree ambas imágenes como íconos de 16 colores.

Puede cambiar el icono predeterminado de Visual FoxPro en el cuadro de diálogo Información del menú proyecto.

Para cambiar el icono de aplicación predeterminado mediante el Administrador de proyectos

  1. En la Ventana Administrador de proyectos, seleccione el archivo principal del proyecto.
  2. En el menú Proyecto, elija Información del proyecto y a continuación, seleccione la ficha Proyecto.
  3. Elija Adjuntar icono.
  4. Elija Icono y a continuación, seleccione un archivo de icono (.ico) para asignar a su proyecto.

Vea también

Diseñar menús y barras de herramientas | Asegurar el correcto comportamiento en Tiempo de Ejecución | Generar aplicaciones


Configurar las barras de herramientas de Visual FoxPro

Visual FoxPro incluye las siguientes barras de herramientas personalizables.

Herramienta | Barras de herramientas asociadas | Comando
Diseñador de bases de datos | Base de datos | CREATE DATABASE
Diseñador de formularios | Controles de formulario Diseñador de formularios Paleta de colores Diseño | CREATE FORM
Vista preliminar | Vista preliminar |
Diseñador de consultas | Diseñador de consultas | CREATE QUERY
Diseñador de informes | Controles de informes Diseñador de informes Paleta de colores Diseño | CREATE REPORT

Activar y desactivar las barras de herramientas

De forma predeterminada, sólo está visible la barra de herramientas Estándar. Cuando se usan las herramientas de diseñador de Visual FoxPro (por ejemplo, el Diseñador de formularios), el diseñador muestra las barras de herramientas que necesita normalmente para trabajar con esa herramienta de diseñador. Sin embargo, puede activar una barra de herramientas cuando quiera.

Para activar una barra de herramientas

  • Ejecute las herramientas asociadas.

    – O bien –

  1. En el menú Ver, seleccione Barras de herramientas.
  2. En el cuadro de diálogo Barras de herramientas, seleccione la barra de herramientas que desea activar.
  3. Elija Aceptar.

Para desactivar una barra de herramientas

  • Cierra la herramienta asociada.

    – O bien –

  1. En el menú Ver, seleccione Barras de herramientas.
  2. En el cuadro de diálogo Barras de herramientas, desactive la barra de herramientas que desea desactivar.

Mediante programación, también puede desactivar y activar las barras de herramientas que ya han sido activadas mediante los comandos DEACTIVATE WINDOW o ACTIVATE WINDOW, como en el siguiente ejemplo.

IF WVISIBLE ("Color Palette")
DEACTIVATE WINDOW("Color Palette")
ENDIF

Puede situar en la pantalla tantas barras de herramientas como necesite mientras trabaja. También puede acoplar barras de herramientas en la parte superior, inferior o en los laterales de la pantalla para personalizar el entorno de trabajo. Visual FoxPro conserva las posiciones de las barras de herramientas de forma que siempre estén donde las situó la última vez.

Para acoplar una barra de herramientas

  • Arrastre la barra de herramientas hasta la parte superior, inferior o a los laterales de la pantalla.

-ó-

  • Usar el Comando DOCK WINDOW de la barra de herramienta dook.

Personalizar las barras de herramientas existentes

La forma más fácil de crear barras de herramientas personalizadas es modificar las barras de herramientas que proporciona Visual FoxPro.

Puede:

  • Modificar una barra de herramientas existente agregando o quitando botones.
  • Crear una nueva barra de herramientas que contenga botones de barras de herramientas existentes.

También puede definir barras de herramientas personalizadas creando una clase de barra de herramientas personalizada mediante código. Para obtener detalles, consulte Diseñar menús y barras de herramientas.

Modificar una barra de herramientas existente de Visual FoxPro

Puede modificar cualquiera de las barras de herramientas proporcionadas por Visual FoxPro. Por ejemplo, es posible que quiera quitar un botón de una barra de herramientas existente o copiar botones de una barra de herramientas a otra.

Para modificar una barra de herramientas de Visual FoxPro

  1. En el menú Ver, elija Barras de herramientas.
  2. Seleccione la barra de herramienta que quiere personalizar y elija Personalizar.
  3. Quite botones de la barra de herramientas arrastrándolos fuera de la barra de herramientas.
  4. Agregue botones a la barra de herramientas seleccionando una categoría apropiada en el cuadro de diálogo Personalizar barra de herramientas y arrastrando los botones apropiados a la barra de herramientas.
  5. Complete la barra de herramientas eligiendo Cerrar en el cuadro de diálogo Personalizar barra de herramientas y cerrando la ventana de la barra de herramientas.
    Sugerencia Si modifica una barra de herramientas de Visual FoxPro, puede restablecer su configuración original de botones seleccionando la barra de herramientas en el cuadro de diálogo Barra de herramientas y eligiendo Restablecer.

Crear una nueva barra de herramientas a partir de una barra de herramientas existente

Puede crear sus propias barras de herramientas formadas por botones de otras barras de herramientas.

Para crear su propia barra de herramientas

  1. En el menú Ver, elija Barras de herramientas.
  2. Elija Nuevo.
  3. En el cuadro de diálogo Nueva barra de herramientas, dé nombre a la barra de herramientas.
  4. Agregue botones a la barra de herramientas seleccionando una categoría en el cuadro de diálogo Personalizar barra de herramientas y arrastrando los botones adecuados a la barra de herramientas.
  5. Puede reorganizar los botones de la barra de herramientas arrastrándolos a la posición deseada.
  6. Complete la barra de herramientas eligiendo Cerrar en el cuadro de diálogo Personalizar barra de herramientas y cerrando la ventana de la barra de herramientas.
    Nota No se puede restablecer los botones en una barra de herramientas creada por el usuario.

Para eliminar una barra de herramientas creada por el usuario

  1. En el menú Ver, elija Barras de herramientas.
  2. Seleccione la barra de herramientas que quiere eliminar.
  3. Elija Eliminar.
  4. Elija Aceptar para confirmar la eliminación.
    Nota No puede eliminar barras de herramientas proporcionadas por Visual FoxPro.

Vea también

Configurar el entorno de Visual FoxPro | Usar opciones de línea de comandos al iniciar Visual FoxPro | Configurar las opciones del Editor | Personalizar el Entorno de Visual FoxPro | Diseñar menús y barras de herramientas


Acoplar ventanas

Puede acoplar ciertas ventanas a la ventana IDE de Visual FoxPro o al escritorio de Visual FoxPro o entre sí. Las siguientes ventanas son acoplables.

  • Pila de llamadas
  • Comandos
  • Sesión de datos (View)
  • Depurador
  • Vista de documento
  • Local
  • Salida
  • Propiedades
  • Rastreo
  • Reloj

Note Históricamente en versiones anteriores de Visual FoxPro, la ventan Sesión de datos siempre se ha mencionado como ventana View. Además, el lenguaje utilizado para controlar esta ventana, como HIDE WINDOW, ACTIVATE WINDOW, WONTOP( ), también se refiere a ella como la ventan View.

Cuando arrastre una ventana acoplable hasta los límites del escritorio de Visual FoxPro, la ventana se posiciona ella misma contra el límite elegido. El estado y localización de las ventanas acopladas persiste desde la última sesión de usuario.

Para acoplar ventanas y barras de herramientas programáticamente y recuperar su estado de acoplable, vea DOCK WINDOW (Comando) y ADOCKSTATE( ) (Función).

Puede cambiar el estado de acoplable de una ventana acoplable.

Habilitar o deshabilitar el estado de acoplado

  1. Haga clic derecho en la barra de título de una ventana abierta y acoplable.
  2. Haga clic en Acoplable para habilitar o deshabilitar el estado de acoplamiento de la ventana. Una marca de verificación aparece cuando la ventana está en acoplable.

-o-

  1. Haga clic en la ventana que desea para que sea la ventana activa.
  2. En el menú Ventana, haga clic en Acoplable para habilitar o deshabilitar el estado de acoplamiento de la ventana. Una marca de verificación aparece cuando la ventana está en acoplable.

Para más información acerca de recuperar programáticamente el estado de acoplamiento de una ventana, consulte WDOCKABLE( ) (Función).

Modos de acoplamiento

Puede acoplar ventanas en tres modos diferentes:

  • Acoplamiento normal

    Ventanas acopladas a un límite de la ventana principal de Visual FoxPro.

  • Acoplamiento vinculado

    Ventanas acopladas unas a otras y que comparten un contenedor de ventana acoplable.

  • Acoplamiento con fichas

    Ventanas acopladas unas a otras y que comparten la toda la ventana mediante el uso de fichas.

Puede utilizar el acoplamiento con fichas y vinculado al mismo tiempo.

Para crear un acoplamiento normal

  1. Asegúrese que el estado acoplamiento de la ventana o ventanas está establecido como Acoplable.
  2. Arrastre la barra de título de la ventana deseada a un límite de la ventana principal de Visual FoxPro.

Para crear un acoplamiento vinculado

  1. Asegúrese que el estado acoplamiento de la ventana o ventanas está establecido como Acoplable.
  2. Arrastre la barra de título de la ventana deseada a un límite o zona de acoplamiento de la ventana destino.

La zona de acoplamiento se indica cuando la ventana que está arrastrando cambia su forma para llenar la ventana destino. Visual FoxPro crea una barra de título adicional para la nueva ventana acoplada.

Para crear un acoplamiento con fichas

  1. Asegúrese que el estado acoplamiento de la ventana o ventanas está establecido como Acoplable.
  2. Arrastre la barra de título de la ventana deseada a la barra de título de la ventana destino.

Visual FoxPro agrega fichas en la parte inferior del límite de las ventanas acopladas.

Para desacoplar ventanas

  • Para desacoplar ventanas con acoplamiento normar, arrastre la barra de título de la ventana deseada afuera del límite de la ventana compartida.

-o-

  • Para desacoplar ventanas con acoplamiento vinculado, arrastre la barra de título de la ventana deseada afuera de la ventana compartida.

-o-

  • Para desacoplar ventanas acopladas con fichas, arrastre la ficha de la ventana deseada afuera de la ventana compartida.

Puede deshabilitar el modo de acoplamiento presionando la tecla CTRL mientras arrastra la ventana.

Borrar o modificar el archivo de recursos FoxUser.dbf, el cual contiene su configuración, recupera o cambia la configuración predeterminada de las ventanas. Para más información acerca de cómo alterar la configuración, consulte Estructura del archivo de recursos FoxUser.

Vea también

Ventanas del sistema de Visual FoxPro | Ventana Vista del documento


Establecer las opciones del editor

Puede configurar el editor de Visual FoxPro para mostrar el texto de la forma deseada estableciendo la fuente y la alineación de texto o el color de la sintaxis. También puede facilitar el uso del editor estableciendo sus preferencias para las sangrías, el ajuste de línea, las copias de seguridad automáticas y otras características.

Para configurar el editor, utilice el cuadro de diálogo Modificar propiedades, disponible en la opción Propiedades del menú Edición. Para obtener detalles acerca de la configuración del editor, consulte Cuadro de diálogo Modificar propiedades.

Para mostrar el cuadro de diálogo Modificar propiedades

  1. Abra la ventana de edición para un programa, archivo de texto, o control.
  2. Desde el menú Editar seleccione Propiedades.
    Nota Puede mostrar el cuadro de diálogo Fuente haciendo clic con el botón secundario y eligiendo Fuente en el menú contextual.

Para más información acerca de como abrir un programa o archivo del texto, vea Crear programas.

De forma predeterminada, las opciones que elija en el cuadro de diálogo Propiedades de edición se aplican sólo a la ventana de edición actual. Por ejemplo, si cambia la fuente, cambiará la fuente para todo el texto de la ventana actual. Si abre otra ventana de edición o si cierra el archivo actual para volver a abrirlo, se aplica la configuración predeterminada.

Si lo prefiere, puede guardar la configuración de forma definitiva, o de forma que se aplique a todos los archivos de tipo similar. Si aplica opciones a archivos de tipo similar, Visual FoxPro usa la configuración que elija al modificar archivos con la misma extensión (por ejemplo, todos los archivos .prg o todo el código de métodos del Diseñador de formularios).

Para guardar opciones del editor definitivamente

  • En la ventana Propiedades de edición, elija Guardar preferencias y haga clic en el botón Aceptar.

Para aplicar opciones de editor a archivos similares

  • En el cuadro de diálogo Propiedades de edición, seleccione Usar estas preferencias de forma predeterminada y, a continuación, haga clic en Aceptar.

También puede establecer el color y la fuente que el editor usa para identificar palabras clave, observaciones y otros elementos de programas. Para obtener detalles, consulte Ficha Editor, cuadro de diálogo Opciones.

Vea también

Configurar el entorno de Visual FoxPro | Ventana Modificar | Restaurar el entorno interactivo de Visual FoxPro | Ficha Editor, cuadro de diálogo Opciones | Cambiar parámetros de configuración en el registro de Windows | Mostrar e imprimir archivos de código fuente en color


Mostrar e imprimir código fuente de archivos en color

Visual FoxPro puede mostrar sintaxis en color en la ventana de edición para archivos de programas, métodos, procedimientos almacenados y memos. Sin embargo, para mostrar la sintaxis coloreada en aplicaciones en tiempo de ejecución, Visual FoxPro debe estar configurado. Adicionalmente, las aplicaciones en tiempo de ejecución muestran solamente la configuración de color predeterminada porque no comprueban el registro por cambios efectuados en el cuadro de diálogo de Opciones, el cual contiene la configuración predeterminada para colorear la sintaxis.

Mostrar la sintaxis coloreada

Para mostrar la sintaxis coloreada

  1. Mostrar el cuadro de diálogo Modificar Propiedades, siguiendo el procedimiento descrito en Configurar las opciones del Editor.
  2. En el cuadro de diálogo Modificar Propiedades, active la casilla de verificación Colorear la Sintaxis.

Para más información sobre las preferencias que puede configurar para la ventana de edición y configuraciones predeterminadas para la sintaxis en color, vea Cuadro de diálogo Modificar propiedades y Ficha Editor, cuadro de diálogo Opciones.

Activar Impresión de Sintaxis Coloreada

Puede imprimir el código fuente de los archivos en colores con la misma apariencia que en la ventana de edición. Visual FoxPro soporta impresión en colores del código fuente en los casos donde la sintaxis aparezca coloreada, incluyendo archivos de programas, métodos, procedimientos almacenados y memos.

Para imprimir el código de los archivos con la sintaxis coloreada, debe tener una impresora a color con las correspondiente opciones activadas.

Nota Los colores de fondo establecidos en la ficha Editor del cuadro de diálogo Opciones no se imprimirán.

Habilitar impresión en color para código fuente

  1. Abrir el archivo de programa o código que desee imprimir.
  2. En el menú Archivo, seleccionar Imprimir.
  3. En el cuadro de diálogo Imprimir, seleccionar su impresora color y entonces, hacer clic en Propiedades.
  4. Seleccione las opciones de color disponibles para su impresora.

Si selecciona imprimir código fuente de archivos en colores, los enlaces aparecerán subrayados.

Para mostrar su archivo con la sintaxis coloreada en la pantalla, utilice el comando TYPE. Para enviar su archivo a una impresora color conectada, use TYPE ... TO PRINTER.

Vea también

Configurar el entorno de Visual FoxPro | Ventana Modificar | Imprimir (Cuadro de diálogo) | TYPE (Comando)


Automatización de tareas de pulsación de teclas con macros

Si utiliza las mismas secuencias de teclas una y otra vez o si desea automatizar algunas tareas de pulsación de teclas de los usuarios, puede grabar y guardar esas secuencias de teclas en macros utilizando el cuadro de diálogo Macros.

Nota Para utilizar macros, cualquier teclado que utilice debe tener las teclas de función F1 a F9, y una tecla CTRL o una tecla ALT.

En esta sección

Borrar definiciones de macros
Provee instrucciones de cómo usar la ventana de diálogo Borrar definiciones de macro.
Crear, guardar y restaurar conjuntos de macros
Describe cómo puede crear, guardar y restaurar macro a través de la ventana de diálogo Macros.
Modificar macros
Explica cómo la ventana de diálogo Macros hace posible la edición de macros existentes.
Grabar macros
Describe los pasos para registrar macros de pulsaciones de teclado en Visual FoxPro.
Establecer un conjunto de macros predeterminado
Explica cómo puede crear y establecer un conjunto predeterminado de macros en Visual FoxPro.

Secciones relacionadas

Configurar el entorno de Visual FoxPro
Describe diferentes formas para cambiar la configuración del entorno de Visual FoxPro utilizando la ventana de diálogo Opciones, ajustando opciones de configuración en el arranque de programa, usando opciones de líneas de comando. Puedes configurar la barra de herramientas de Visual FoxPro, ventanas principales, opciones determinadas del editor y puede hacer a la medida la apariencia de sus aplicaciones sin alterar código.
Herramientas de productividad
Discute las diferentes herramientas disponibles para ayudar a hacer aplicaciones Visual FoxPro más fácil y más rápido.


Borrar definiciones de macro

Puede borrar definiciones de macros en el cuadro de dialogo Macros.

Para borrar definiciones de macros.

  1. En el cuadro de diálogo Macros, seleccione una macro de la lista Macro individual.
  2. Elija Borrar.

Vea también

Automatización de tareas de pulsación de teclas con macros | Cuadro de diálogo Macros | Grabar macros | Modificar macros | Crear, guardar y restaurar conjuntos de macros | Establecer un conjunto de macros predeterminado


Crear, guardar y restaurar conjuntos de macros

Un conjunto de macros es un conjunto definido de teclas y sus macros asociadas, almacenado en un archivo con la extensión .FKY. Puede crear conjuntos de macros en el cuadro de diálogo Macros.

Para crear un conjunto de macros

  1. En el cuadro de diálogo Macros, cree macros de teclado individuales.
  2. Elija Guardar.
  3. En el cuadro de diálogo Macros actuales guardadas, escriba un nombre para el conjunto de macros y elija Guardar.

Para restaurar un conjunto de macros

  1. En el cuadro de diálogo Macros, elija Restaurar.
  2. Seleccione un archivo de conjunto de macros y elija Aceptar.

Vea También

Automatización de tareas de pulsación de teclas con macros | CLEAR (Comando) | Cuadro de diálogo Macros | RESTORE MACROS (Comando) | SAVE MACROS (Comando) | Modificar macros | Establecer un conjunto de macros predeterminado | Borrar definiciones de macros | Grabar macros


Modificar Macros

Puede modificar las macros existentes en el cuadro de diálogo Macros.

Para modificar una macro

  1. En el cuadro de diálogo Macros, seleccione una macro de la lista Macro Individual y elija Modificar.
  2. Modifique el contenido de la macro.
  3. Elija Aceptar.

Vea también

Automatización de tareas de pulsación de teclas con macros | CLEAR (Comando) | Cuadro de diálogo Macros | SET FUNCTION (Comando) | Grabar macros | Borrar definiciones de macros | Crear, guardar y restaurar conjuntos de macros | Establecer un conjunto de macros predeterminado


Grabar Macros

Puede grabar una macro de pulsaciones de teclas en Visual FoxPro, en el cuadro de diálogo Macros.

Para grabar una macro

  1. En el menú Herramientas, elija Macros.
  2. En el cuadro de diálogo Macros, elija Grabar.
  3. Presione la tecla o escriba la combinación de teclas que desee definir.
  4. Escriba un nombre para la macro o acepte el predeterminado y elija Aceptar.

Visual FoxPro comenzará a grabar cada pulsación de tecla.

Nota Los nombres de macro no pueden contener espacios.

Para detener la grabación de macro

  1. En el menú Herramientas, elija Macros.
  2. En el cuadro de diálogo Detener grabación de macro, elija una de las siguientes opciones:
    • Para grabar la macro como está, elija Aceptar.
    • Para continuar la grabación, elija Continuar.
    • Para descartar la macro, elija Descartar.
    • Para insertar una pulsación literal (el significado literal de la tecla en lugar del significado asignado actualmente a ella), elija Insertar Literal.
    • Para insertar una pausa, seleccione Segundos, agregue la cantidad de tiempo y elija Insertar Pausa.

Vea también

Automatización de tareas de pulsación de teclas con macros | Cuadro de diálogo Macros | ON KEY LABEL (Comando) | SET FUNCTION (Comando)) | Cuadro de diálogo Detener grabación de macro | Borrar definiciones de macros | Modificar macros | Crear, guardar y restaurar conjuntos de macros | Establecer un conjunto de macros predeterminado


Establecer un conjunto de macros predeterminado

Existe un conjunto de macros predeterminado al iniciar Visual FoxPro. Puede crear y establecer su propio conjunto de macros predeterminado en el cuadro de diálogo Macros.

Para establecer un conjunto de macros como predeterminado

  1. En el cuadro de diálogo Macros, cree o restaure un conjunto de macros.
  2. Elija Predeterminado.

Vea También

Automatización de tareas de pulsación de teclas con macros | Crear, guardar y restaurar conjuntos de macros | Cuadro de diálogo Macros | RESTORE MACROS (Comando) | Borrar definiciones de macros | Modificar macros | Crear, guardar y restaurar conjuntos de macros | Grabar macros


Restaurar el entorno interactivo de Visual FoxPro

Si desea cerrar todas las operaciones del programa y devolver Visual FoxPro a su estado interactivo, ejecute los siguientes comandos, con este orden, en la ventana Comandos o en el programa al que llamó antes de salir de Visual FoxPro.

CLEAR ALL
CLOSE ALL
CLEAR PROGRAM

CLEAR ALL elimina todos los objetos de la memoria que a su vez, cierra todas las sesiones de datos privadas y cursores.

CLOSE ALL, una vez que CLEAR ALL ha sido completado con éxito, cierra todas las bases de datos, tablas y cursores de la sesión de datos 1, la sesión de datos predeterminada de Visual FoxPro.

CLEAR PROGRAM borra el búfer de programa compilado de los programas recientemente ejecutados. CLEAR PROGRAM obliga a Visual FoxPro a leer los programas en el disco, en lugar de en el búfer de programas.

Limpieza durante las transacciones Si hay transacciones en curso, utilice el Comando END TRANSACTION para cada nivel de transacción antes de ejecutar CLEAR ALL, CLOSE ALL y CLEAR PROGRAM.

Limpieza durante las actualizaciones con almacenamiento local Si hay actualizaciones con almacenamiento local en curso, use las funciones TABLEUPDATE( ) o TABLEREVERT( ) para cada cursor con actualizaciones con almacenamiento local antes de ejecutar CLEAR ALL, CLOSE ALL y CLEAR PROGRAM.

Vea también

Personalizar el entorno de Visual FoxPro | Establecer las opciones del editor | Comando CLEAR| Comando CLOSE| Comando END TRANSACTION | Función TABLEUPDATE( ) | Función TABLEREVERT( ) | Ventana de Comandos | Funcionamiento de la ventana Comandos


Accesibilidad para personas con discapacidades

Microsoft está comprometida en hacer sus productos y servicios más fáciles de manipular para que todos puedan utilizarlos. Este archivo de ayuda proporciona información de como hacer Microsoft Windows y Visual FoxPro más accesible así como otras características, productos y servicios que pueden ayudar a mejorar la utilización por personas con discapacidades.

Nota La información en esta sección sobre Microsoft Windows se aplica solo a los usuarios que hayan adquirido Microsoft Windows en los Estados Unidos. Si Microsoft Windows fue adquirido fuera de los EE.UU., su paquete de Windows contiene una tarjeta con información de subsidiarias, que muestra los números de teléfono y direcciones de los Servicios de soporte de productos de Microsoft. Contacte a su subsidiaria para consultar si los productos y servicios que se describen en este archivo de ayuda, están disponibles en su área.

Para información sobre servicios de soporte técnico para personas con sordera o serias deficiencias de audición, vea Soporte técnico de Microsoft Visual FoxPro.

Puede obtener más información sobre el compromiso de Microsoft para hacer productos y servicios más accesibles, visitando el sitio web Accesibilidad en http://www.microsoft.com/enable/.

En esta sección

Personalizar Microsoft Windows para accesibilidad
Provee información de como configurar el entorno de Microsoft Windows para hacer su PC más accesible.
Personalizar Visual FoxPro para accesibilidad
Provee información sobre como configurar Visual FoxPro para accesibilidad.
Nota La información de esta sección sólo se aplica a los usuarios que hayan adquirido Windows o Windows NT en EE.UU.. Si ha adquirido Windows o Windows NT fuera de EE.UU., su paquete de Windows contiene una tarjeta con información de subsidiarias, que muestra los números de teléfono y direcciones de los Servicios de soporte de productos de Microsoft. Puede ponerse en contacto con su subsidiaria para averiguar si el tipo de productos y servicios que se describen en este archivo de Ayuda están disponibles en su área. Recuerde que los productos localizados no pueden adquirirse en los Estados Unidos.
Utilidades y recursos para mejorar la accesibilidad
Provee información sobre productos, servicios y recursos de accesibilidad disponibles en Microsoft y otras organizaciones.
Documentación Microsoft en formatos alternativos
Provee información sobre como obtener la documentación en formatos alternativos y más accesibles.

Vea también

Soporte técnico
Provee información sobre el soporte técnico de Microsoft para Visual FoxPro e información sobre copyright.
Uso del Explorador de accesibilidad
Provee información referida al uso del Explorador de accesibilidad que ayuda a desarrollar sus aplicaciones en Visual FoxPro haciéndolas más accesibles para los usuarios.


Personalizar Microsoft Windows para accesibilidad

Existen muchas maneras en que puede personalizar Microsoft Windows para hacer su PC mucho más accesible.

  • Windows incluye características de accesibilidad muy útiles para personas que tienen dificultades para escribir o utilizar el ratón, visión deteriorada o problemas de sordera. Puede instalar estas características durante el proceso de configuración, o puede hacerlo más tarde desde los discos de instalación de Windows. Busque "accesibilidad" en el índice de la Ayuda de Windows para obtener información sobre como instalar estas características.
  • Puede agregar muchas de estas características que hacen de las versiones de Windows y MS-DOS corrientes mucho más accesibles que versiones anteriores mediante los Paquetes de Accesos. Estos archivos están disponibles para su descarga por módem o, también, puede solicitarlos en discos a Microsoft.
  • Usando el Panel de control y otras características incluidas, se ajusta la apariencia y comportamiento de Windows a las capacidades de visión y habilidades motoras. Esto incluye ajuste de colores y tamaños, volumen de sonido y el comportamiento del ratón y teclado.
  • Si tiene dificultades usando la disposición clásica de teclado QWERTY, el teclado Dvorak hace que los caracteres frecuentemente utilizados en el teclado sean más accesibles. Puede elegir entre tres disposiciones Dvorak: dos manos, mano izquierda solamente y mano derecha solamente. No debe adquirir equipamiento especial para utilizar estas características.

Las características específicas pueden estar incluidas o deben ser obtenidas aparte, dependiendo del sistema operativo que esté usando.

Obtener paquetes de acceso, Notas de aplicación y Disposiciones alternativas de teclados con Módem

Si tiene un módem, puede obtener estos archivos de los siguientes servicios::

  • El sitio de Microsoft en Internet. En la página inicial de Microsoft (http://www.microsoft.com), seleccione Todos los productos en la parte superior de la misma. Cuando aparezca el menú, haga clic en Accesibilidad Microsoft. Información y recursos estarán disponibles para su descarga.
  • Servidor de Internet de Microsoft, ftp.microsoft.com, en /Softlib/MSLFiles.
  • MSN, servicios en línea de la red de Microsoft.
  • CompuServe. Escriba GO MSL.
  • Varios foros de grupos de usuarios.

Solicitar paquetes de acceso, Notas de aplicación y Disposiciones alternativas de teclados en discos por Teléfono

Si no tiene un módem, puede ordenar los Paquetes de acceso, Notas de aplicación y Disposiciones alternativas de teclados en discos dentro de los Estados Unidos llamando al Centro de Información de Ventas de Microsoft al (800) 426-9400 (voz) ó (800) 892-5234 (TTY).

En Canadá, llame al (905) 568-3503 ó (905) 568-9641 (teléfono texto).

Vea también

Accesibilidad para personas con discapacidades | Personalizar Visual FoxPro para accesibilidad | Utilidades y recursos para mejorar la accesibilidad | Documentación Microsoft en formatos alternativos


Personalizar Visual FoxPro para accesibilidad

Puede utilizar los siguientes pasos para incrementar la accesibilidad en Visual FoxPro:

Ampliar los botones de las Barras de herramientas

Para ver ampliados los botones de las barras de herramientas

  1. Desde el menú Ver, haga clic en Barras de herramientas.
  2. Active Botones grandes en la casilla de verificación.

Ampliar el texto en la ventana de código

Para ver el texto ampliado en la ventana de código

  • Desde el menú Formato, haga clic en Fuente escoja el tipo y tamaño de fuente que desee.

Ampliar el texto en el Depurador

Para ver el texto ampliado en el depurador

  1. En el menú Herramientas, haga clic en Opciones.
  2. En el cuadro de diálogo Opciones, haga clic en la ficha Depurador y luego haga clic en Fuente.
  3. Escoja el tipo y tamaño de fuente que desee.

Vea además

Accesibilidad para personas con discapacidades | Personalizar Microsoft Windows para accesibilidad | Utilidades y recursos para mejorar la accesibilidad | Documentación Microsoft en formatos alternativos


Utilidades y recursos para incrementar la accesibilidad

Microsoft y otras organizaciones suministran productos, servicios, y recursos que facilitan el uso del PC. La siguiente lista incluye algunos de los diferentes tipos de productos disponibles:

  • Programas que agrandan o alteran el color de la información en la pantalla.
  • Programas que describen la información sobre la pantalla en Braille o en voz sintetizada.
  • Utilidades de hardware y software que modifican el comportamiento del ratón y el teclado.
  • Programas que hacen lo posible para que la gente "escriba" usando un ratón o su voz.
  • Software de predicción de palabras o frases que hacen posible que la gente escriba más rápidamente y con menos pulsaciones de teclado.
  • Dispositivos de entrada alternos, como un simple switch o un dispositivo puff-and-sip.

Microsoft Active Accessibility

Visual FoxPro soporta Microsoft Active Accessibility, la cual es una tecnología de desarrollo de Windows basada en COM que permite que los programas y el sistema operativo trabajen con más compatibilidad con las ayudas de la accesibilidad, por ejemplo, lectores de pantalla como Microsoft Magnifier. Para más información acerca de Microsoft Active Accessibility, visite MSDN en http://msdn.microsoft.com.

Productos y Servicios adicionales de Microsoft para personas con discapacidades

Para más información, contacte con:

Centro de Información de Ventas Microsoft

One Microsoft Way
Redmond, WA 98052-6393

 World Wide Web:
Teléfono:
Teletypewriter (TTY): 		http://www.microsoft.com
(800) 426-9400
(800) 892-5234

Directorios de productos para PC que ayudan a las personas con discapacidades

El Trace R&D Center en la Universidad de Wisconsin–Madison edita un libro y un disco compacto describiendo productos que ayudan a las personas con discapacidades para usar PC's. El libro, titulado Trace ResourceBook, ofrece descripciones y fotografías correspondientes a 2.000 productos. El disco compacto, titulado CO-NET CD, ofrece en una base de datos de más de 18.000 productos e información extra para personas con discapacidades. Las referencias anteriores se reeditan dos veces al año.

Para obtener estos directorios, contacte con:

Trace R&D Center
Universidad de Wisconsin
S-151 Waisman Center
1500 Highland Avenue
Madison, WI 53705-2280 		World Wide Web:
Fax:
 http://trace.wisc.edu
(608) 262-8848

Referencias para programas de tecnología de asistencia e información personal

Para información general y recomendaciones de como los PC's pueden ayudarle en requerimientos específicos, usted debe consultar con una persona especializada. Un programa de tecnología de asistencia en su País le ofrecerá referencias a programas y servicios que estén disponibles para usted.

Para localizar los programas de Tecnología de Asistencia en su País, contacte con:

Sistema de Información Nacional
Universidad de Carolina del Sur
Centro para Desarrollo de Discapacidades
Columbia, SC 29208 		Voz/texto teléfono:
Fax: 		(803) 935-5231
(803) 935-5059

Vea tambien

Accesibilidad para personas con discapacidades | Personalizar Microsoft Windows para accesibilidad | Personalizar Visual FoxPro para accesibilidad | Documentación de Microsoft en formatos alternativos


Documentación de Microsoft en formatos alternativos

Si tiene dificultades para leer o manejar la documentación impresa, puede obtener muchas publicaciones de Microsoft y documentos para productos de Microsoft en formatos más accesibles. Para más información, visite el sitio Web de Microsoft Accessiblity en http://www.microsoft.com/enable/.

También puede obtener muchas publicaciones de Microsoft de Recording Blind & Dyslexic, Inc. La empresa RFB&D distribuye estos documentos a miembros registrados y con derecho a su servicio de distribución, bien en casete de audio o en discos. La colección Recording for the Blind & Dyslexic cuenta con más de 80.000 títulos, que incluyen los libros de Microsoft Press y la documentación de productos de Microsoft.

Puede ponerse en contacto con Recording for the Blind & Dyslexic en la dirección y los números de teléfonos siguientes para obtener información acerca del derecho a utilizar sus servicios y de la disponibilidad de la documentación de productos de Microsoft y los libros de Microsoft Press:

Recording for the Blind & Dyslexic, Inc.
20 Roszel Road
Princeton, NJ 08540 		Phone:

Fax:
Sitio Web: 		(609) 452-0606 or (800) 221-4792
(609) 987-8116
http://www.rfbd.org

Vea también

Accesibilidad para personas con discapacidades | Personalizar Microsoft Windows para accesibilidad | Personalizar Visual FoxPro para accesibilidad | Utilidades y recursos para mejorar la accesibilidad


Uso de Visual FoxPro

Visual FoxPro dispone de las herramientas necesarias para crear y administrar aplicaciones y componentes de base de datos de alto rendimiento. Con sus eficaces herramientas y el lenguaje orientado a objetos centrado en los datos, podrá crear aplicaciones modernas, escalables y de varios niveles que integren los sistemas cliente/servidor e Internet.

En esta sección

Introducción a las características de Visual FoxPro
Describe las características principales de Visual FoxPro que espera en un sistema de gestión de base de datos (DBMS) y como confrontar el desarrollo de aplicaciones de cliente/servidor, con su creación de aplicación e interfaz rápida, la poderosa programación orientada a objetos, el manejo de eventos, capacidad de prueba y depuración, flexibilidad en la interacción con otras aplicaciones.
Desarrollar aplicaciones Visual FoxPro
En esta sección se incluye información conceptual acerca de cómo desarrollar aplicaciones Visual FoxPro, instrucciones para crear bases de datos y la interfaz de usuario y otras tareas necesarias para crear aplicaciones.
Programar en Visual FoxPro
Describe como comprender las técnicas de programación orientada a objetos y el modelo controlado por eventos puede aumentar su productividad como programador y habilita su acceso al pleno poder de Visual FoxPro.
Herramientas de productividad para el desarrollo
Explica las herramientas que Visual FoxPro proporciona al desarrollador para el desarrollo de aplicaciones y el lenguaje FoxPro.

Secciones Relacionadas

Introducción a Visual FoxPro
Aporta información acerca de donde para encontrar el archivo Readme, instalando y actualizando versiones previas, configurando Visual FoxPro y haciendo a la medida el entorno de desarrollo.
Referencia
Incluye información general de Visual FoxPro, el lenguaje de programación, la interfaz de usuario y los temas de referencia de mensaje de error.
Ejemplos
Contiene biblioteca de clase Visual FoxPro, servidor, soluciones y pruebas de código de clase de la fundación que puede usar para experimentar y aprender características de Visual FoxPro.
Guías paso a paso
Provee una lista de escenarios comunes en Visual FoxPro y da instrucciones paso a paso a cada uno, haciéndole un buen lugar para comenzar a aprende acerca de las características.


Introducción a las características de Visual FoxPro

Microsoft Visual FoxPro le ofrece más de lo que puede esperar de un sistema de administración de bases de datos (DBMS)— velocidad, eficacia y flexibilidad. Además, Visual FoxPro le lleva hacia la próxima generación y le proporciona modelos de objetos y eventos que ayudan a crear y modificar aplicaciones con mayor rapidez que nunca.

Esta sección le mostrará las características principales de Visual FoxPro. Para obtener información acerca de las mejoras más recientes de esta versión de Visual FoxPro, vea Lo Nuevo en Visual FoxPro 8.0.

En esta sección

Creación rápida de aplicaciones
Puede programar aplicaciones rápidamente con ayuda de los asistentes, los generadores, las barras de herramientas y los diseñadores de Visual FoxPro. Con el modelo de objetos y eventos de Visual FoxPro, puede crear prototipos e implementar rápidamente las aplicaciones.
Ventajas de una mayor eficacia
Describe cómo puede aprovechar las capacidades de Visual FoxPro orientado a objetos así como también las características de la tecnología Rushmore para mejorar el desempeño y apresurar la marcha de desarrollo de aplicaciones.
Crear la interfaz de usuario sin programación
Visual FoxPro dispone de controles eficaces que se agregan con el Diseñador de formularios, que proporciona interfaces que requieren poco o ningún código.
Desarrollar aplicaciones con varios programadores
Puede usar Visual FoxPro para permitir el acceso simultáneo a los componentes de base de datos. Además, para hacer un seguimiento y proteger las modificaciones realizadas al código fuente, puede usar programas de control de código fuente con el Administrador de proyectos.
Interactuar con otras aplicaciones
Entrega información acerca de como compartir datos con otras aplicaciones, como Microsoft Excel y Microsoft Word, utilizar objetos de otras aplicaciones y controlar otras aplicaciones mediante Automatización.
Desarrollar soluciones cliente/servidor
Puede utilizar Visual FoxPro como sistema para la programación de robustas aplicaciones cliente/servidor. Visual FoxPro combina una gran compatibilidad para vistas actualizables de datos del servidor con el acceso directo a la sintaxis nativa del servidor mediante el paso a través de SQL.

Secciones relacionadas

Introducción a Visual FoxPro
Provee enlaces para la información acerca de como instalar, actualizar y hacer a la medida a Visual FoxPro, así como también tener acceso a los últimos archivos del LEAME.
Uso de Visual Fox Pro
Aporta información sobre las características de programación en Visual FoxPro y herramientas de productividad, así como también capítulos en el desarrollo de aplicaciones Visual FoxPro.
Guías paso a paso
Provee una lista de escenarios comunes y los guías paso a paso que le posibilitan aprender como crear tipos diferentes de aplicaciones y componentes en Visual FoxPro.
Personalizar el Entorno de Visual FoxPro
Puede personalizar el entorno de desarrollo, que incluye el título de la ventana principal, el directorio predeterminado, las opciones de herramientas de proyecto, editor, depurador y formulario, el almacenamiento temporal de archivos, las asignaciones de campos para operaciones de arrastrar y soltar, entre otras muchas opciones.
Desarrollar aplicaciones Visual FoxPro
En esta sección se incluye información conceptual acerca de cómo desarrollar aplicaciones Visual FoxPro, instrucciones para crear bases de datos y la interfaz de usuario y otras tareas necesarias para crear aplicaciones Visual FoxPro.
Programar en Visual FoxPro
Describe cómo puede tener acceso al pleno poder de Visual FoxPro para crear aplicaciones. Comprender las técnicas de programación orientada a objetos y el modelo controlado por eventos puede aumentar su productividad como programador.
Herramientas de productividad para el desarrollo
Aporta información acerca de herramientas para el desarrollo de aplicaciones y el lenguaje de Visual FoxPro.


Creación rápida de aplicaciones

Puede programar aplicaciones rápidamente con ayuda de los asistentes, los generadores, las barras de herramientas y los diseñadores de Visual FoxPro. Además, con los modelos de objetos y eventos de Visual FoxPro, puede crear prototipos e implementar rápidamente auténticas aplicaciones.

Obtener resultados rápidos con asistentes y generadores

Mediante asistentes y generadores, puede terminar todos los componentes o uno cualquiera, en pocos minutos. Además, si un componente creado con un asistente o generador no satisface completamente sus necesidades, puede modificar el componente mediante un diseñador.

Si quiere obtener resultados rápidamente, los asistentes son la solución. Proporcionan instrucciones detalladas paso a paso para las tareas comunes que lleva a cabo con Visual FoxPro. Por ejemplo, el Asistente para tablas le orienta en el proceso de crear una tabla, el Asistente para formularios le explica cómo crear un formulario y el Asistente para publicación en Web le ayuda a crear una página Web que busque en sus tablas.

Mire lo que puede hacer:

  • Programar aplicaciones de forma instantánea Mediante el Asistente para aplicaciones, puede crear rápidamente una aplicación mediante sus tablas o formularios, o un conjunto de ejemplos de componentes de aplicación.
  • Crear una página Web para Internet Puede crear una página Web que proporcione a los usuarios de Internet acceso a búsqueda y obtención de sus tablas.
  • Agregar marcos de páginas a formularios Si elige más campos que pueden caber en el formulario, puede agregar un marco de página para mostrar los campos adicionales en páginas adicionales.
  • Llenar tablas dinámicas mediante ODBC y OLE DB El Asistente para tablas dinámicas usa el controlador ODBC y OLE DB de Visual FoxPro.
  • Mostrar valores nulos en un informe de tablas de referencias cruzadas El Asistente para tablas de referencias cruzadas admite ahora la presentación de valores nulos.
  • Mover sus datos a un servidor de aplicaciones Puede mover bases de datos, tablas y vistas de Visual FoxPro desde su sistema a un servidor de aplicaciones con el Asistente para Conversión a SQL Server.

Si tiene prisa, use la tabla que encontrará en Introducción a los asistentes para seleccionar un asistente y empiece a crear la aplicación o componente.

Si no quiere probar con sus propios datos y componentes de aplicación, use los ejemplos suministrados con Visual FoxPro. Puede trabajar en la base de datos Testdata.dbc, que se encuentra en el directorio …\Samples\Data.

Utilizar métodos abreviados con las barras de herramientas

Al igual que otras aplicaciones de Microsoft, Visual FoxPro incluye barras de herramientas para su comodidad. Las barras de herramientas contienen botones que representan tareas comunes u objetos que se utilizan con frecuencia. Para realizar una determinada tarea o para utilizar un objeto específico, elija el botón correspondiente.

Se puede personalizar las barras de herramientas incluidas en Visual FoxPro. También se puede definir barras de herramientas personalizadas para las aplicaciones que escriba. Para obtener más información acerca de las barras de herramientas, consulte Personalizar el Entorno de Visual FoxPro o Diseñar menús y barras de herramientas.

Generación rápida de controles

Así como los asistentes pueden ayudarle a crear informes y formularios, los generadores son herramientas visuales que le ayudan a diseñar controles según sus especificaciones. Los generadores pueden ahorrarle tiempo cuando está creando muchos formularios o aplicaciones prototipo. Todo lo que hace es iniciar el generador y responder a una serie de preguntas. A partir de la utilización de sus respuestas, el generador establece propiedades para el control que está agregando.

Agregar un cuadro combinado a un formulario Suponga que quiere mejorar un formulario sencillo que ha creado agregando la posibilidad de seleccionar valores de campos a partir de una lista, en lugar de desplazarse por todos los registros con botones VCR y ver los valores en un cuadro de texto. Simplemente reemplace el cuadro de texto actual y use un generador para establecer las propiedades.

Modificar controles existentes con un generador Si quiere cambiar un control existente, puede seleccionar el control y usar un generador que le ayude a establecer las propiedades del control.

Por ejemplo, el Generador de cuadros combinados es un cuadro de diálogo con fichas que le ayuda a diseñar un cuadro combinado en un formulario. Un cuadro combinado le proporciona la misma presentación de un valor que un control de tipo cuadro de texto, pero le permite elegir de una lista como un control de tipo cuadro de lista. Con este generador, puede establecer las propiedades de un cuadro combinado. Al establecer cada propiedad, el control del formulario cambia para reflejar la nueva configuración.

Generar un control de tipo cuadrícula Para mostrar una pequeña vista de tipo hoja de cálculo de sus datos, puede usar un control de tipo cuadrícula. Incluso si no está familiarizado con todas las propiedades de un control de tipo cuadrícula, puede aprovechar su funcionalidad con un generador. El generador le ayuda a elegir los campos para la cuadrícula, seleccionar un estilo y un diseño y establecer relaciones entre tablas vinculadas al control de tipo cuadrícula. Los cambios que realice en el generador se reflejarán en el Diseñador de formularios.

Para mayor información, vea Generadores.

Vea también

Introducción a las características de Visual FoxPro | Crear la interfaz de usuario sin programación | Diseñador de formularios | Introducción a los asistentes | Personalizar el Entorno de Visual FoxPro


Advantages of More Power

Visual FoxPro

Ventajas de una mayor eficacia

Visual FoxPro es mucho más eficaz que sus predecesores. La programación orientada a objetos acelera la programación de aplicaciones mediante características como la creación de subclases. El modelo de eventos de Visual FoxPro elimina la necesidad de usar READ de Fundación o escribir controladores de eventos. La optimización de la configuración del sistema y la implementación de la tecnología Rushmore mejoran el rendimiento de Visual FoxPro.

Aprovechar la eficacia de la programación orientada a objetos

Si utiliza el modelo de objetos de Visual FoxPro, puede usar todas las características de la programación orientada a objetos, como herencia, encapsulación, polimorfismo y subclase. Para obtener información acerca de la programación orientada a objetos con Visual FoxPro, vea Programación orientada a objetos.

El uso de clases permite acelerar el desarrollo de aplicaciones. Por ejemplo, puede crear un formulario, una barra de herramientas o un marco de página básico con las clases de base Form, ToolBar o PageFrame que proporciona Visual FoxPro.

A continuación, puede reutilizar el código y los formularios estableciendo subclases de las clases que ha definido. Por ejemplo, puede establecer subclases de la clase de base Form para crear una clase personalizada que proporcione a todos los formularios de la aplicación la apariencia y el modo de uso que desee.

El modelo de clases de Visual FoxPro le proporciona un amplio control sobre los objetos de la aplicación. Tiene tanto control sobre la apariencia y el comportamiento de los objetos de los formularios en tiempo de ejecución como lo tiene en el Diseñador de formularios en tiempo de diseño.

Con Visual FoxPro, puede crear clases visualmente con el Diseñador de clases o mediante programación con el comando DEFINE CLASS. Para obtener más información, consulte Programación orientada a objetos.

Controlar eventos con facilidad

Con Visual FoxPro, puede crear aplicaciones completamente basadas en eventos. Puede tener acceso a todos los eventos estándar de Windows, como los movimientos del ratón, que permiten arrastrar y soltar objetos. Puede controlar eventos visualmente mediante la ventana de Propiedades o mediante programación con el lenguaje de Visual FoxPro. Para obtener más información acerca del modelo de eventos, consulte Descripción del modelo de eventos.

Prueba y depuración inmediata

Utilizando el entorno de depuración puede probar y depurar el código a la vez que diseña cada componente de la aplicación y escribe el código. El lenguaje de Visual FoxPro ha sido mejorado para incluir posibilidades de depuración, propiedades de colecciones, comprobar el estado de protección/desprotección de archivos, sugerencias y más. Además, las herramientas de depuración funcionan independientemente de la aplicación principal y no interfieren con la interfaz que está intentando probar.

Probar al diseñar El entorno de programación mejorado de Visual FoxPro le ofrece más posibilidades para probar el diseño de componentes y el código. Por ejemplo, si está diseñando un formulario, puede hacer clic en el botón Ejecutar para ejecutar el código. Si quiere cambiar algo, haga clic en el botón Diseño y haga los cambios.

Detectar errores de sintaxis con antelación Ahora, el editor permite la edición mediante códigos de color: puede especificar los colores de la sintaxis, texto normal, variables, observaciones, etc. en el cuadro de diálogo Modificar propiedades. Si se equivoca al escribir un comando o palabra clave, lo sabrá inmediatamente porque tendrá el color equivocado.

Características más eficaces de depuración

En esta versión de Visual FoxPro, puede depurar y supervisar los componentes de la aplicación más fácilmente mediante la ventana Depurador.

  • Ver propiedades de un objeto En el depurador, puede ver los elementos de una colección o matriz con la ventana Inspección para mostrar una presentación jerárquica de las propiedades de los objetos.
  • Efectuar un seguimiento del proceso de ejecución del código En la ventana Seguimiento, puede ver cada línea de código mientras se ejecuta y comprobar los valores de todas las variables, propiedades y valores de entorno.
  • Controlar la ejecución con puntos de interrupción Puede controlar cuándo se detiene la ejecución usando uno de los cuatro tipos de puntos de interrupción. Puede parar en una línea concreta, cuando un determinado valor cambia, si una condición se evalúa a verdadera, o si una condición para cierta línea es verdadera.
  • Establecer aserciones y mostrar mensajes de aserciones Puede usar el comando ASSERT para especificar las condiciones que verifican que el código se está ejecutando correctamente. Cuando ocurre un error, la ventana Resultados del depurador registra el mensaje.
  • Comprobar el valor actual de una variable Para comprobar valores rápidamente, puede colocar el cursor sobre una variable en la ventana Seguimiento para mostrar su valor.
  • Inspeccionar y cambiar valores En la ventana Inspección y en la ventana Locales, puede cambiar los valores de las propiedades o variables mientras ejecuta el código.
  • Mostrar los resultados de las solicitudes de mensajes En la nueva ventana Resultados del depurador, puede mostrar cómodamente las solicitudes de información interactivas o codificadas en una ventana independiente de la ventana activa o la pantalla.
  • Usar un archivo de registro de cobertura En la ventana Depurador, puede usar la opción de cobertura para registrar la información de ejecución de su código, como el tiempo que tardó en ejecutarse una línea, el número de línea, etc.
  • Usar la Pila de llamadas En la ventana Pila de llamadas puede ver la ruta de las llamadas del programa. Leer la Pila de llamadas es una de las técnicas más efectivas para depurar.

Para obtener más información acerca de cómo probar y depurar una aplicación, consulte Probar y depurar aplicaciones.

Optimizar el sistema

Visual FoxPro le ofrece rendimiento mejorado en las siguientes áreas del producto:

  • Motor
  • Formulario/Objeto
  • OLE
  • Cliente/Servidor
  • Asistentes/Generadores
  • Idioma

También puede mejorar el rendimiento aumentando la velocidad de inicio y optimizando los comando SET. Para obtener más información acerca de cómo optimizar el sistema, consulte Optimizar el sistema.

Optimizar aplicaciones con la tecnología Rushmore

Puede mejorar dramáticamente el rendimiento de las consultas utilizando tecnología Rushmore. Esta es una tecnología para seleccionar rápidamente conjuntos de registros desde tablas. Puede reducir el tiempo de respuesta de las consultas de minutos u horas a segundos. Para más información acerca de utilizar la tecnología Rushmore, consulte Optimizar aplicaciones.

Vea también

Introducción a las características de Visual FoxPro | Desarrollar aplicaciones con varios programadores | Programación orientada a objetos | Creación rápida de aplicaciones | Ventana Depurador


Crear la interfaz de usuario sin programación

Visual FoxPro dispone de controles eficaces que se agregan con el Diseñador de formularios, que proporciona interfaces que requieren poco o ningún código. Por ejemplo, vincular el control de tipo cuadrícula a una de las tablas facilita la programación de formularios uno a varios. Simplemente arrastre una tabla a un formulario para crear el control de tipo cuadrícula. Para mantener la coherencia con otras aplicaciones, también puede crear cuadros de diálogo con fichas o sus propias interfaces de generador con el control de tipo marco de página.

Crear un formulario uno a varios

Visual FoxPro facilita la configuración de formularios para mostrar registros de tablas relacionadas. Con la ventana Administrador de proyectos y el Diseñador de formularios puede arrastrar y colocar los campos que necesite para configurar un formulario.

Los formularios uno a varios muestran datos de tablas relacionadas.

Intente configurar un formulario uno a varios con dos tablas relacionadas, como las tablas Customers y Orders de Testdata.dbc.

Después de cuatro pasos, el formulario uno a varios se mostrará así...

...listo para ejecutarse.

Especificar tablas y vistas para su formulario en el entorno de datos Puede usar el entorno de datos para el formulario o para un informe a fin de especificar las tablas o vistas usadas por el formulario. Después de haber agregado las tablas y vistas que contienen los registros que desea mostrar en el formulario, puede arrastrar los campos al Diseñador de formularios.

Crear cuadrículas seleccionando múltiples campos Puede seleccionar campos y arrastrarlos a un formulario para crear un objeto cuadrícula. Puede seleccionar múltiples campos y arrastrarlos con el botón secundario del ratón, puede elegir entre una cuadrícula o múltiples controles. También puede hacer clic en el elemento Campos de una tabla y arrastrarlo a un formulario para crear una cuadrícula que incorpora todos los campos de la tabla. Si hace clic con el botón secundario del ratón en un campo y lo arrastra al formulario, puede crear una clase de objeto diferente de la que está asignada como clase de objeto predeterminada.

Formularios con apariencia profesional

Sea creativo y personalice sus formularios con diseños, colores, formas y gráficos.

Alinear los controles con precisión Use la barra de herramientas Diseño para alinear rápidamente los controles y espaciarlos de forma equitativa el formulario.

Cambiar el color de segundo plano Use la barra de herramientas Paleta de colores.

Agregar gráficos e imágenes Use los botones Línea, Forma e Imagen de la barra de herramientas Controles de formularios.

Presentar controles y entrar datos en un cuadro combinado Puede establecer la propiedad Format y la propiedad InputMask para un control de tipo cuadro combinado.

Quitar un borde en un cuadro combinado o un control de tipo numérico Puede usar la propiedad BorderStyle para quitar un borde del control. Por ejemplo, si usa un control de tipo cuadro combinado o un control de tipo numérico en una cuadrícula, puede limpiar la pantalla eliminando las líneas adicionales que agrega el borde a la cuadrícula.

Utilizar los colores actuales de Windows como colores de formulario Puede establecer una opción adicional en la propiedad ColorSource que permite establecer los colores de formulario basándose en el esquema de colores actual de Windows.

Establecer las propiedades de controles

Puede mejorar su interfaz de usuario con las propiedades de controles de Visual FoxPro. Con la ventana Propiedades puede ver y configurar las propiedades asociadas a cada objeto del formulario para determinar la apariencia y el comportamiento de un control del formulario.

Utilizar el enlace de datos con controles ActiveX Para enlazar datos a controles ActiveX, puede usar la propiedad ControlSource (si el control lo admite) en la ventana Propiedades para especificar el campo o variable al que se enlazará el control.

Desplazarse por controles en marcos de páginas Si configura el orden de tabulación en el marco de página, puede controlar el orden en que se muestran las páginas. Esto agrega la posibilidad de desplazarse por las distintas páginas de un marco de página con las teclas flecha izquierda y flecha derecha.

Controlar la selección de un elemento en controles cuadro de lista y cuadro combinado Cuando un cuadro de lista o un cuadro combinado está vinculado a un ControlSource numérico, el valor almacenado en el control es el número de índice (list index) del elemento, en lugar del valor. Para obtener el valor actual del elemento seleccionado en el control, establezca la propiedad BoundTo como Verdadera.

Seleccionar más de 60 elementos en un cuadro de lista Puede seleccionar un número ilimitado de elementos combinados en un control ListBox.

Crear propiedades y métodos ocultos Puede establecer las propiedades de accesibilidad en las propiedades o métodos que cree como Public, Protected o Hidden. Para cambiar la accesibilidad de las propiedades y los métodos, consulte Ficha Miembros, cuadro de diálogo Información de clase.

Para más información acerca de | Vea
Crear formularios | Crear formularios
Usar asistentes para formularios | La Ayuda presionando F1 en el asistente.
Usar generadores | La Ayuda presionando F1 en el generador.
Usar controles | La Ayuda buscando el nombre del control o Utilizar controles
Usar formularios en aplicaciones | Crear formularios

Personalizar diseñadores de formularios

Para facilitar su trabajo, puede personalizar el Diseñador de formularios para que se adapte a su estilo de trabajo y a sus necesidades.

Guardar los cambios automáticamente Puede establecer opciones para que Visual FoxPro guarde automáticamente los formularios antes de salir del Diseñador de formularios. En la ficha Formularios, cuadro de diálogo Opciones puede elegir la opción de guardar los cambios antes de ejecutar el formulario. Si selecciona esta opción, pasa por alto el cuadro de diálogo de confirmación y se guardan automáticamente todos los cambios que haya realizado al formulario actual.

Cambiar la fuente en la ventana de Propiedades Puede elegir una de las tres configuraciones de fuente en el menú abreviado de la ventana de Propiedades.

Utilizar el teclado en la ventana de Propiedades La ventana de Propiedades admite el desplazamiento mediante teclado para examinar la jerarquía de objetos, controles y órdenes de tabulación. Use CTRL+AV PÁG y CTRL+RE PÁG para moverse hacia arriba y hacia abajo por la lista.

Para más información acerca de | Vea
El Diseñador de formularios y controles de formularios | Diseñador de formularios
Crear formularios | Crear formularios

Agregar controles desde una biblioteca de clases

Cuando tiene que agregar controles a un formulario de forma que pueda desplazarse por los registros que contiene, puede elegirlos en una biblioteca de controles, arrastrarlos y ejecutar el formulario. Es así de sencillo.

Agregar controles VCR a un formulario uno a varios

Puede usar el ejemplo siguiente para ver lo fácil que es racionalizar su trabajo con controles de bibliotecas de clases.

Almacenar conjuntos complejos de controles en una biblioteca de clases para su reutilización.

Agregar controles VCR a un formulario Abriendo la biblioteca de clases ejemplos de botones (Buttons.vcx) suministrada con Visual FoxPro, puede agregar fácilmente un conjunto de botones de control de navegación estilo VCR al formulario. Las librerías de ejemplos están en el directorio de Visual FoxPro ...\Samples\Classes.

Se puede agregar una clase para controles VCR a la barra de herramientas.

Es fácil agregar controles al formulario.

Establecer la propiedad SkipTable Como se trata de un formulario uno a varios, tiene que especificar que se seleccione el siguiente registro de la tabla principal cuando elija el botón Siguiente. Para ello, abra la ventana Propiedades y establezca la propiedad SkipTable de forma que haga referencia a la tabla principal.

La propiedad SkipTable agrega la funcionalidad final al control.

Ampliar las bibliotecas de clases

No tiene que esperar que alguien le venda sus clases y bibliotecas de controles, usted puede crear las suyas.

Crear sus propias clases Puede crear sus propios controles y guardarlos en bibliotecas de clases. Puede partir de las clases estándar de Visual FoxPro y personalizarlas para crear su propia versión, o puede crear sus propias clases.

Apuntar a clases en aplicaciones compiladas Puede usar el comando SET CLASSLIB para apuntar a una clase incluida en una aplicación compilada.

Agregar y guardar clases en la barra de herramientas Controles de formularios Cuando agregue una nueva clase a la barra de herramientas Controles de formularios, la clase permanece en la barra de herramientas hasta que haga clic en el botón Ver clases y seleccione Estándar.

Ver información detallada acerca de las clases Mediante la ventana Examinador de clases puede ver la jerarquía completa de las clases y los objetos de una biblioteca de clases o un formulario.

Crear sus propias subclases de controles ActiveX Puede crear subclases de todos los controles ActiveX que se distribuyen con Visual FoxPro.

Para más información acerca de | Vea
Utilizar el Diseñador de clases | La Ayuda presionando F1 en el Diseñador de clases.
Establecer propiedades | Crear formularios
Crear clases y utilizar bibliotecas de clases | Programación orientada a objetos

Crear una barra de menús y menús contextuales

Puede usar los Diseñador de menús y menús contextuales para agregar una barra de menús y menús a los formularios de su aplicación. Con el Diseñador de menús y menús contextuales, puede crear menús contextuales y menús para formularios SDI.

Al crear un menú, tiene la opción de agregar un menú a la barra de menús o crear un menú contextual. El Diseñador de menús contextuales presenta la interfaz del Diseñador de menús familiar, pero le permite diseñar menús contextuales en lugar de barras de menús y menús.

Después de haber generado el menú contextual, puede adjuntarlo a cualquier control ejecutando el menú en el evento RightClick del control.

Crear informes

Cuando hay que imprimir datos importantes, no debe consumir mucho tiempo dando formato a informes. Por eso, Visual FoxPro proporciona asistentes para informes que racionalizan el proceso de creación de informes. Con los asistentes para informes, puede seleccionar los datos que quiera de las tablas y vistas y presentarlos con el formato de apariencia profesional que elija.

Es fácil combinar información de dos tablas diferentes en un informe uno a varios.

Mediante la utilización de las características de diseño de informes de Visual FoxPro, puede:

Usar el botón Vista previa La última pantalla de un asistente para informes contiene el botón Vista previa, por lo que puede ver rápidamente si el informe tiene la apariencia que desea. Si no es así, use el botón Anterior del asistente y haga los cambios necesarios.

Usar Informe rápido para obtener resultados más rápidamente Si está configurando su propio informe en el Diseñador de informes, elija Informe rápido en el menú Informe para agregar al informe los campos seleccionados de una tabla.

Usar el resultado de una consulta o una vista en un informe ¿Quiere imprimir el resultado de una consulta? Elija la opción Informe en el cuadro de diálogo Destino de la consulta. Puede enviar el resultado de la consulta a un informe con preformato o enviar la consulta a un asistente para informes.

Crear informes uno a varios El Asistente para informes uno a varios permite configurar fácilmente un informe que muestre campos de dos tablas combinados en una relación uno a varios. Por ejemplo, intente usar el asistente para crear un informe a partir de dos tablas relacionadas de Testdata.dbc.

Los asistentes para informes obtienen registros y dan formato al diseño de informes.

Usar otros asistentes para informes Intente usar los otros asistentes para informes. Para informes sencillos de una tabla o informes de resumen con totales, elija el Asistente para informes.

Usar el Diseñador de informes Si quiere personalizar el informe generado por el asistente, ábralo en el Diseñador de informes y agregue las mejoras que necesite.

Para más información acerca de | Vea
Asistentes para informes | La Ayuda presionando F1 en el Asistente.
Diseñador de informes | Crear informes y etiquetas

Crear un sistema de ayuda

Puede mejorar su aplicación creando un sistema de Ayuda. Mediante el compilador de Ayudas incluído en Visual FoxPro, puede convertir sus archivos de documentación en un sistema de Ayuda gráfica para distribuirlo con sus aplicaciones. Para obtener más información acerca de cómo crear Ayuda WinHelp y HTML, vea Crear ayuda gráfica.

Vea también

Introducción a las características de Visual FoxPro | Creación rápida de aplicaciones | Diseñador de Formularios | Crear formularios


Desarrollar aplicaciones con varios programadores

Si varios programadores trabajan en sus aplicaciones, puede usar la capacidad de Visual FoxPro para permitir el acceso simultáneo a componentes de base de datos. Además, para hacer un seguimiento y proteger las modificaciones realizadas al código fuente, puede usar programas de control de código fuente con el Administrador de proyectos.

Permitir a varias personas trabajar en objetos de bases de datos Ahora puede modificar tablas y definiciones de vistas, sin acceso exclusivo a la base de datos. Use la opción Actualizar del menú Base de datos; esto vuelve a cargar la definición de objeto de base de datos para que refleje las modificaciones realizadas por otros usuarios.

Usar control de código fuente Puede usar un programa de control de código fuente como Microsoft Visual SourceSafe, para coordinar y administrar los cambios en aplicaciones que programe en Visual FoxPro. El Administrador de proyectos proporciona acceso al control de código fuente en el menú Proyecto.

Para más información sobre trabajar con varios desarrolladores, vea Planificar proyectos de desarrollo en equipo .

Vea también

Introducción a las características de Visual FoxPro | Interactuar con otras aplicaciones | Planificar proyectos de desarrollo en equipo | Ventajas de una mayor eficacia


Interactuar con otras aplicaciones

Con Visual FoxPro puede compartir datos con otras aplicaciones, como Microsoft Excel y Microsoft Word, utilizar objetos de otras aplicaciones y controlar otras aplicaciones mediante Automatización.

Uso compartido de datos con otras aplicaciones

Puede aprovechar todas las herramientas de software de su escritorio con Visual FoxPro.

Usar datos de FoxPro en otras aplicaciones

Compartir datos con otras aplicaciones es fácil. Por ejemplo, puede compartir datos de Visual FoxPro con Microsoft Excel mediante el Asistente para tablas dinámicas, y con Microsoft Word mediante el Asistente para combinar correspondencia.

Mostrar o almacenar objetos de otras aplicaciones

Puede incluir objetos de otra aplicación vinculándolos o incrustándolos en tablas o en formularios. A continuación, podrá modificar los objetos directamente, sin salir de Visual FoxPro.

La modificación de objetos incluidos es fácil con Visual FoxPro.

Importar y exportar datos

Puede importar y exportar datos entre Visual FoxPro y muchas otras aplicaciones, empleando diversos formatos de archivo: texto, hojas de cálculo y tablas, por citar algunos. Los datos pueden agregarse fácilmente a tablas existentes. Un Asistente para importar le ayuda a tomar decisiones acerca de la estructura que desea que adopten los datos en Visual FoxPro.

Para obtener más información, consulte Importar y exportar datos.

Integración con Automatización

Visual FoxPro ofrece la posibilidad de integrar completamente su aplicación con otras aplicaciones.

Controlar otras aplicaciones Puede extender la eficacia de su aplicación controlando otras aplicaciones mediante programación. Por ejemplo, puede hacer que Microsoft Excel realice algunos cálculos, ordenar a Microsoft Graph que represente gráficamente los resultados y a continuación, almacenar el gráfico en un campo General de una tabla de Visual FoxPro, todo desde el código de Visual FoxPro; o puede agregar controles ActiveX programados por usted u otras personas.

Optimizar solicitudes de Automatización Puede determinar cuánto tiempo emplea el sistema en las solicitudes y cuánto tiempo emplea en mostrar los mensajes a los usuarios. Por ejemplo, puede controlar cuánto tiempo pasa el sistema reintentado solicitudes de Automatización antes de mostrar un mensaje de “servidor ocupado”.

También puede controlar el número de milisegundos que transcurren durante la entrada del usuario, como por ejemplo, la utilización del ratón o el teclado mientras está pendiente una solicitud de Automatización y la aparición del mensaje de “ocupado”.

Controlar Visual FoxPro desde otras aplicaciones Mediante la utilización de Visual FoxPro como servidor de Automatización, puede crear referencias a los objetos de Visual FoxPro, ejecutar comandos de Visual FoxPro y ejecutar programas de Visual FoxPro desde otras aplicaciones.

Para obtener más información acerca de Automatización, consulte Agregar OLE.

Vea también

Introducción a las características de Visual FoxPro | Desarrollar soluciones cliente/servidor | Importar y exportar datos | Desarrollar aplicaciones con varios programadores


Desarrollar soluciones Cliente/Servidor

Puede usar a Visual FoxPro en desarrollos frontales para aplicaciones robustas cliente/servidor. El visual FoxPro combina el soporte al más alto nivel de vistas actualizables de datos del servidor con acceso directo a la sintaxis nativa del servidor usando SQL transferible. Esto le da una fundación sólida para desarrollar soluciones cliente/servidor versátiles. Un diccionario de datos de amplio espectro, vistas locales y remotas, soporte nulo, transacciones, soporte internacional de aplicación, y un acceso para fuentes de datos ODBC; todas estas características contribuyen a lo que necesita para el desarrollo cliente/servidor.

Mejorar el rendimiento Cliente/Servidor

Puede mejorar el rendimiento de su aplicación cliente/servidor mediante las propiedades y el controlador ODBC proporcionado por Visual FoxPro.

Controlar el rendimiento con propiedades

Puede mejorar el rendimiento con las siguientes propiedades de cursor y vista remota:

  • CompareMemo
  • FetchAsNeeded
  • Prepared

Puede mostrar estas propiedades con las funciones DBGETPROP( ) y CURSORGETPROP( ) o establecerlas con las funciones DBSETPROP( ) y CURSORSETPROP( ).

Incluir o excluir campos memos en la detección de actualizaciones Puede usar la propiedad CompareMemo para controlar cuándo se usan campos memo para detectar conflictos de actualización. Esta propiedad de la vista y del cursor determina si los campos memo (de los tipos M o G) están incluidos en la cláusula WHERE de actualización. El valor predeterminado, verdadero (.T.), significa que los campos memo se incluirán en la cláusula WHERE. Si establece esta propiedad en el valor falso (.F.), los campos memo no participan en la cláusula WHERE de actualización, independientemente del valor de UpdateType.

La detección optimista de conflictos en los campos Memo se desactiva cuando CompareMemo se establece en falso (.F.). Para detectar conflictos en los valores memo, el valor de CompareMemo debe ser verdadero (.T.).

Refinar la búsqueda de registros Use la propiedad FetchAsNeeded para especificar si se busca en todas las filas progresivamente o sólo en el conjunto de filas determinado por la propiedad FetchSize. Si quiere buscar todas las filas del conjunto de resultados mediante el bucle inactivo de Visual FoxPro, use el valor predeterminado, falso (.F.). Si sólo quiere buscar cuando el usuario se desplace más allá del conjunto de filas determinado por la propiedad FetchSize, establezca FetchAsNeeded como verdadero (.T.) para buscar el siguiente conjunto de resultados.

Acelerar las operaciones de repetición de consulta en vistas parametrizadas Mediante la utilización de la propiedad Prepared, puede establecer si se prepara la consulta para la vista antes de ser ejecutada. Si establece esta propiedad en el valor verdadero (.T.), Visual FoxPro envía una solicitud al controlador ODBC para preparar o compilar la consulta SQL que define la vista. Si el controlador ODBC para el origen de datos de aplicaciones admite la utilización de instrucciones preparadas, las consultas sucesivas acerca de la vista abierta se ejecutarán más rápidamente.

Definir reglas con el diccionario de datos

Las bases de datos de Visual FoxPro (archivos .dbc) proporcionan un diccionario de datos que permite agregar reglas, vistas, desencadenadores, relaciones persistentes y conexiones a cada tabla de la base de datos.

En una base de datos puede definir:

  • Reglas a nivel de campo o a nivel de registro que Visual FoxPro aplica cuando la tabla se utiliza en una aplicación.
  • Claves de índices principales y candidatos.
  • Vistas locales y remotas.
  • Desencadenadores.
  • Relaciones persistentes entre tablas de bases de datos.
  • Conexiones con orígenes de datos remotos.
  • Procedimientos almacenados.
  • Valores predeterminados en campos.
  • Nombres largos de tablas y campos.

Además, puede exigir la integridad referencial para todas las relaciones persistentes mediante el Generador de integridad referencial para definir reglas sobre inserciones, actualizaciones y eliminaciones.

Visual FoxPro también admite valores nulos en tablas, lo que mejora considerablemente la compatibilidad y la conectividad con otros orígenes de datos, como Microsoft Access, Visual Basic y servidores basados en SQL. Para obtener más información acerca de los valores nulos, busque “null” y “valores nulos”.

Ver datos locales, remotos y fuera de línea Puede diseñar y probar una aplicación cliente/servidor en su equipo local con vistas heterogéneas remotas, locales o de múltiples tablas. Las vistas locales usan tablas del equipo local en lugar de tablas de un servidor remoto y las vistas de múltiples tablas usan datos relacionados de tablas distintas. Puede crear vistas parametrizadas para minimizar la cantidad de datos que transfiere desde el servidor, llevarse los datos cuando se va de viaje o actualizar datos remotos desde su aplicación de Visual FoxPro. Para obtener más información acerca de las vistas, consulte Crear vistas.

Administrar el acceso compartido con transacciones Puede diseñar su aplicación de forma que proporcione acceso compartido a datos. El acceso compartido implica compartir datos entre usuarios y restringir el acceso cuando es necesario. Las transacciones y el almacenamiento local, pesimista u optimista, a nivel de registros o a nivel de tablas, implican menos programación. El procesamiento por lotes incorporado y el control detallado de conflictos de actualización simplifica la actualización de datos en un entorno multiusuario. Para obtener más información acerca de cómo diseñar una aplicación para acceso compartido, consulte Programar para acceso compartido.

Desarrollo de Aplicaciones Internacionales Visual FoxPro, proporciona varias áreas de soporte para el desarrollo de aplicaciones internacionales. Por ejemplo, Visual FoxPro soporta varias páginas de código. la página de código greco y los rusos son soportados en MS-DOS, Microsoft Windows, y plataformas Macintosh. El visual FoxPro también soporta conjuntos de caracteres de byte doble para los lenguajes como chino japonés, coreano, Tradicional chino, y Chino Simplificado; Sin embargo, Unicode no es soportado. El visual FoxPro soporta secuencias de cotejo para los lenguajes como chino japonés, alemán, Tradicional, y el islandés. Para más información acerca de aplicaciones internacionales, vea Desarrollar aplicaciones Internacionales.

Implementando una Aplicación Cliente/Servidor En adición al uso de vistas para el desarrollo cliente/servidor, puede enviar cualquier sintaxis nativa del servidor que quiere directamente a un servidor con las funciones Visual FoxPro SQL transferible. Estas funciones permiten entrada adicional al servidor y controlar más allá de la capacidad de vistas. Para detalles acerca del SQL transferible vea Mejorar aplicaciones utilizando tecnología de paso a través de SQL (SPT).

Después de diseñar localmente su aplicación, puede utilizar el proceso de conversión (conversión a SQL) e implementarla con un origen de datos de aplicaciones. El conversión aplica los beneficios de la arquitectura cliente/servidor a la aplicación local y le permite crear una base de datos de servidor remoto con la misma estructura de tablas y datos que las tablas originales de Visual FoxPro. Cuando hace un conversión, elige qué tablas se mueven al servidor y cuáles permanecen locales para tener acceso más inmediato. Para obtener detalles acerca del conversión, consulte Convertir las bases de datos de Visual FoxPro.

Vea también

Introducción a las características de Visual FoxPro | Actualizar desde versiones anteriores | Desarrollar bases de datos | Crear vistas | Programar para acceso compartido | Interactuar con otras aplicaciones


Desarrollar aplicaciones Visual FoxPro

Visual FoxPro proporciona un amplio conjunto de herramientas y tecnologías que permiten desarrollar soluciones flexibles de una manera rápida y con gran capacidad de manejo de datos. Su entorno de desarrollo rápido de aplicaciones le ayuda en todos los pasos del desarrollo.

Para desarrollar aplicaciones con Visual FoxPro

  1. Realizar un diseño de la aplicación antes de empezar. Existen varios factores que facilitan enormemente el desarrollo de una aplicación, si se tienen en cuenta desde el primer momento, como la elección de un almacén de datos, la seguridad y la planificación. Para obtener más información, consulte Planificación de aplicaciones.
  2. Crear su aplicación. Para mayor información, consulte Crear la aplicación.
  3. Diseñar y generar su base de datos para crear una aplicación efectiva con índices, tablas, y bases de datos, basados en los requisitos de sus datos. Para más detalles, ver Trabajar con datos.
  4. Crear la interfaz de usuario para su aplicación. Utilizando formularios, clases, controles, menús y barras de herramientas de Visual FoxPro, puede generar interfaces que ayuden al usuario a acceder a todo el potencial de sus programas. Para detalles, consulte Crear la interfaz de usuario.
  5. Agregue ayuda en pantalla a su aplicación para reducir el tiempo necesario para la formación y mantenimiento de los usuarios. Para obtener más detalles, consulte Crear Ayudas.
  6. Genere su aplicación compilando el código. Puede crear sus aplicaciones una pieza a la vez, verificando cada componente cuando lo haga y luego compilarlos en una aplicación. Para más detalles, consulte Compilar una aplicación.
  7. Depurar su código y crear controladores de error. Los mejores resultados se obtienen escribiendo código entendible y mantenible, utilizando las herramientas de depuración. Para mayor información, consulte Probar y depurar aplicaciones.
  8. Prepare la aplicación para su distribución incluyendo todos los archivos necesarios y creando discos de distribución. Para obtener más información, vea Distribuir aplicaciones.

En esta sección

Planificar la aplicación
Proporciona enlaces a información que le ayudará a planificar cuidadosamente sus aplicaciones, incluyendo consideraciones de diseño, arquitectura y seguridad.
Crear una aplicación
Describe los pasos básicos involucrados en la creación de una aplicación y proporciona enlaces a otra información relacionada con el proceso.
Crear Servicios Web y Componentes
Proporciona enlaces a información sobre extender las aplicaciones para hacerlas trabajar con múltiples usuarios.
Trabajar con datos
Ofrece información para ayudarle a crear aplicaciones efectiva analizando los requerimientos de datos y el diseño de los componentes de su aplicación para cumplir estas necesidades.
Mejorar las aplicaciones utilizando la tecnología de paso a través de SQL
Proporciona enlaces a temas que discuten técnica para implementar la tecnología cliente/servidor en una aplicación utilizando vistas remotas.
Compilar una aplicación
Proporciona enlaces a información sobre generar aplicaciones, referenciar archivos modificables y generar el archivo de la aplicación desde su proyecto.
Probar y depurar aplicaciones
Discute la prueba y depuración como pasos necesarios en el ciclo de desarrollo; y los diferentes niveles de robustez que los desarrolladores buscan en la prueba y depuración.
Distribuir aplicaciones
Ofrece información sobre preparar su aplicación para distribución, incluyendo todos los archivos necesarios y la creación de los discos de distribución.

Secciones relacionadas

Uso de Visual FoxPro
Discute el entorno de programación Visual FoxPro y las herramientas que le ayudan a crear y administrar aplicaciones y componentes de bases de datos de alto rendimiento.
Programar en Visual FoxPro
Describe cómo entendiendo la programación orientada a objetos y el modelo controlado por eventos puede maximizar su productividad y permitirle acceder a toda la eficacia de Visual FoxPro.
Optimizar aplicaciones
Proporciona información sobre cómo obtener el mejor rendimiento de su sistema operativo, Visual FoxPro, y su aplicación.


Planificar aplicaciones

Un diseño apropiado ahorra tiempo, esfuerzo, dinero y esfuerzos de validación. Cuanto más implique a los usuarios en el proceso de diseño, mejor. No importa lo cuidadosamente que se diseñe; aun así, acabará refinando las especificaciones a medida que avance el proyecto y los usuarios le proporcionen información adicional.

En esta sección

Consideraciones de diseño
Discute cómo impactarán en la aplicación que cree las decisiones de diseño que tome.
Arquitectura de la aplicación
Describe cómo varía la arquitectura de una aplicación Visual FoxPro con el tipo de aplicaciones que decida crear.
Consideraciones de seguridad
Muestra cómo debe ser conciente de los requisitos de seguridad desde las perspectiva de negocios y las implicaciones que puede tener la elección del modelo de seguridad en el rendimiento, escalabilidad y distribución.
Planificar proyectos de desarrollo en equipo
Discute como el utilizar un programa de control de fuentes, como Microsoft Visual SourceSafe, para administrar los archivos en un proyecto, hace posible crear rápidamente aplicaciones complejas combinando las habilidades de un equipo de desarrolladores.
Desarrollar aplicaciones internacionales
Describe cómo diseñar y desarrollar sus aplicaciones Visual FoxPro para que sean tan efectivas internacionalmente como localmente.

Secciones relacionadas

Desarrollar aplicaciones Visual FoxPro
Incluye información conceptual acerca de cómo desarrollar aplicaciones Visual FoxPro, instrucciones para crear bases de datos, la interfaz de usuario, así como otras tareas necesarias para crear aplicaciones Visual FoxPro.
Crear una aplicación
Discute cómo crear aplicaciones Visual FoxPro, las cuales pueden incluir una o más bases de datos, un programa principal que establece el entorno del sistema de la aplicación y una interfaz de usuario consistente en formularios, barras de herramientas y menús.
Crear Servicios Web y Componentes
Describe cómo puede extender su aplicación Visual FoxPro haciendo que trabaje con múltiples usuarios, tomar ventaja de los controles Microsoft ActiveX y la automatización de aplicaciones.
Mejorar aplicaciones utilizando tecnología de paso a través de SQL (SPT)
Describe cómo puede utilizar la tecnología de paso a través de SQL (SPT) para crear objetos en el servidor, ejecutar procedimientos almacenados y ejecutar comandos utilizando la sintaxis nativa del servidor.
Trabajar con datos
Discute cómo crear aplicaciones efectivas con índices, tablas y bases de datos basados en sus requisitos de datos.
Trabajar con proyectos
Define la configuración de un proyecto y un grupo de archivos que producen un programa o archivo binario final o archivos.
Crear ayuda
Describe cómo puede incluir archivos de Ayuda en su aplicación para proporcionar información valiosa para los usuarios de su aplicación.
Compilar una aplicación
Proporciona información sobre cómo utilizar la aproximación modular para que pueda verificar la funcionalidad de cada componente que cree. Luego puede compilarlos en una aplicación, la cual ensambla el ejecutable con los componentes de su proyectos.
Probar y depurar aplicaciones
Proporciona información sobre herramientas de depuración ofrecidas por Visual FoxPro para ayudar a encontrar y corregir errores que descubra en su aplicación.
Distribuir aplicaciones
Discute cómo preparar su aplicación para distribución después de haber completado el desarrollo y prueba, incluyendo todos los archivos requeridos y la creación de discos de distribución.


Consideraciones de Diseño

Algunas de las decisiones de diseño que tome van a impactar en cómo crea los elementos de la aplicación. ¿Quién estará utilizando la aplicación? ¿Cuál es el centro de actividad del usuario? ¿Cuán grande prevé que será el conjunto de datos con el que trabajará? ¿Utilizará servidores de datos remotos o los datos serán exclusivamente locales para un único usuario o múltiples usuarios enlazados en red? Considere estos factores antes de avanzar mucho en el proyecto.

Actividades frecuentes del usuario

Incluso si los usuarios finales están trabajando con clientes, órdenes y partes, la forma en que ellos estén trabajando con esta información va a determinar cómo su aplicación debe manipular los datos. Un formulario de entrada de órdenes podría ser necesario para varias aplicaciones, pero no será una buena herramienta para manipular inventarios o seguimiento de ventas, por ejemplo.

Tamaño de la Base de datos

Se preocupará más por el rendimiento si está tratando con grandes conjuntos de datos. Optimizar aplicaciones explica métodos de optimización de rendimiento. Además puede querer ajustar la forma en la que va a permitir a los usuarios moverse a través de los datos. Si tiene veinte o treinta registros en la tabla, está bien permitir a los usuarios mover el puntero de registro en una tabla registro a registro. Si tiene veinte o treinta mil registros necesitará proporcionar otras vías de captura del dato deseado añadiendo listas o diálogos de búsqueda, filtros, consultas personalizadas, etc. Utilizar controles, explica cómo utilizar una lista para seleccionar un registro de tabla específico. Crear vistas, discute la creación de consultas parametrizadas.

Usuario único versus múltiples usuarios

Es buena idea crear su aplicación asumiendo que múltiples usuarios van a acceder a la base de datos al mismo tiempo. Visual FoxPro permite programar fácilmente para acceso compartido. Programar para acceso compartido describe técnicas para permitir que múltiples usuarios accedan simultáneamente a su base de datos.

Consideraciones internacionales

Si sabe que su aplicación va a ser utilizada solamente en un entorno único de idioma, no tiene que preocuparse acerca de la internacionalización. Si, por otro lado, pretende expandir el mercado o si sus usuarios podrían tratar con datos internacionales o configuraciones de entorno, deberá tomar en cuenta estos factores en la forma en que creará su aplicación. Desarrollar aplicaciones internacionales discute los aspectos que necesitará para crear aplicaciones para uso internacional.

Datos locales vs. datos remotos

Si su aplicación emplea datos remotos, va a administrar los datos de forma diferente a que si fueran administrados por datos nativos de Visual FoxPro. Crear vistas explica cómo crear vistas para datos locales o remotos.

Hacer copia de seguridad de su código fuente

En todo el desarrollo de la aplicación, es una buena práctica crear copias de seguridad completas de su archivo de programa original antes de crear una aplicación. Guarde las copias de seguridad separadas de sus aplicaciones compiladas.

Nota Asegúrese de mantener copias de seguridad separadas de sus programas fuentes originales para usos futuros. No puede re-crear sus programas fuentes a partir del código compilado.

Vea además

Desarrollar aplicaciones internacionales | Programar para acceso compartido | Optimizar aplicaciones


Visual FoxPro como aplicación cliente

Como programador de Visual FoxPro, probablemente le resultará natural diseñar sus aplicaciones en torno a las herramientas visuales de diseño del programa. Por ejemplo, probablemente concibe la interfaz de usuario de su aplicación en términos de formularios, menús e informes de Visual FoxPro. Además, al desarrollar aplicaciones en Visual FoxPro, pensará almacenar los datos de la aplicación en tablas de Visual FoxPro.

Una forma de integrar Visual FoxPro en una aplicación de ámbito empresarial es usar las herramientas visuales de diseño, pero mejorándolas con las posibilidades de otros productos. Otra forma consiste en crear la apariencia de la aplicación con Visual FoxPro, pero extendiendo las posibilidades de almacenamiento de datos aprovechando las posibilidades de otros programas o de opciones de almacenamiento de datos externas a Visual FoxPro. También puede hacer un conversión (conversión a SQL) de los datos de Visual FoxPro transfiriéndolos a un servidor de base de datos.

Extender las herramientas visuales de diseño de Visual FoxPro

Las clases de base de controles de Visual FoxPro se diseñaron para incorporar la inmensa mayoría de las necesidades de interfaz de aplicación. Visual FoxPro proporciona todos los controles básicos y los elementos de interfaz necesarios para crear una aplicación para Windows estándar. Sin embargo, a menudo verá que su aplicación requiere objetos o controles que no poseen las clases de base de Visual FoxPro. Si es así, puede extender las herramientas visuales de diseño mediante la creación de subclases y el uso de controles ActiveX.

Crear subclases

Una característica enormemente eficaz de Visual FoxPro es la capacidad de crear subclases de los controles de base. Al crear una o más subclases puede personalizar los controles de base Visual FoxPro de casi cualquier manera requerida por su aplicación. Esta capacidad incluso permite crear nuevos objetos o controles que combinen las características de otros controles. Por ejemplo, el control de tipo cuadrícula de Visual FoxPro no sólo contiene sus propiedades, métodos y contenedor, sino también aquellos objetos que aparecen en la cuadrícula, como botones, cuadros de texto, etc.

Asimismo, al crear subclases de controles de base, puede extender las posibilidades de Visual FoxPro mediante la creación de objetos que agreguen nuevas características a clases de base existentes, o que combinen las posibilidades de varios objetos. Por ejemplo, puede agregar características visuales como marcos o efectos tridimensionales a un cuadro de texto. O puede combinar un control de imagen, botones y un cuadro de texto para crear un control para ver mapas de bits con el que los usuarios pueden desplazarse por varios archivos .bmp. Crear clases personalizadas de esta forma puede ayudarle a administrar el desarrollo en el ámbito de toda la empresa, pues le permite crear controles estandarizados que aparecen en todas las aplicaciones. Para más información, consulte Programación orientada a objetos.

Usar controles ActiveX

Una forma alternativa de crear un control nuevo utilizando subclases de Visual FoxPro es usar un control ActiveX (archivo .ocx). Estos controles se crean independientemente de Visual FoxPro y se pueden integrar no sólo en Visual FoxPro, sino también en muchas otras aplicaciones para Windows.

En efecto, los controles ActiveX son componentes externos que puede integrar perfectamente en su aplicación. El uso de controles ActiveX proporciona varias ventajas:

  • Ahorra el tiempo y esfuerzo necesarios para crear, probar y mantener un control específico de Visual FoxPro para realizar las mismas tareas. Cuanto más eficaz sea el control ActiveX, más tiempo ahorrará.
  • Muchos controles ActiveX ya pueden solicitarse a terceros fabricantes para responder a requisitos comunes de aplicaciones. Por ejemplo, si la aplicación le solicita que muestre un calendario y que permita a los usuarios elegir fechas en él, probablemente puede encontrar un control ActiveX (tal vez varios) que ya realice esta tarea.
  • Se puede usar el mismo control en varios programas. Por ejemplo, si procede, puede usar el mismo control ActiveX en Visual FoxPro y en Visual Basic. Se usan las mismas propiedades y métodos en cada caso para administrar el control, y el control tendrá la misma apariencia en todos los programas, lo cual facilitará a los usuarios el uso del control.
  • Los controles ActiveX proporcionan a menudo acceso a funciones de Windows que de otro modo pueden resultar difíciles o lentas de incluir si se utilizan exclusivamente las herramientas de Visual FoxPro. Por ejemplo, puede buscar controles ActiveX que proporcionen acceso a correo electrónico (usando funciones de la MAPI de Windows), funciones gráficas de Windows de bajo nivel, etc. Al incluir un control ActiveX, puede agregar estos tipos de características a su aplicación en una forma fácil de controlar con las propiedades, los métodos y los eventos de los controles ActiveX.

En resumen, usar los controles ActiveX le permite extender sus aplicaciones no sólo integrando funciones de Windows, sino también agregando una apariencia común entre sus aplicaciones y otras de la misma empresa. Para obtener más información acerca del uso de controles ActiveX, vea Agregar OLE. Para obtener información acerca de cómo crear controles ActiveX propios, vea Acceso a la API de Visual FoxPro.

Integrar funciones de otros programas

Es posible que al desarrollar una aplicación se dé cuenta de que otros programas son los más apropiados para llevar a cabo ciertas tareas. Por ejemplo, Microsoft Word tiene posibilidades únicas para combinar correspondencia, mientras que Microsoft Excel está optimizado para calcular fórmulas complejas y crear fácilmente gráficos a partir de ellas.

En lugar de emular estas posibilidades en Visual FoxPro, puede convertir su aplicación en una solución de ámbito empresarial integrándolas en ella. Así puede resolver las necesidades de su aplicación usando la mejor aplicación para llevarlas a cabo.

Puede integrar las funciones de otras aplicaciones en Visual FoxPro de las formas siguientes:

  • Ejecute un asistente de Visual FoxPro que ponga los datos de Visual FoxPro a disposición de otra aplicación.
  • Escriba programas de Visual FoxPro que usen automatización para comunicarse con datos de otros programas para Windows, compartir dichos datos y controlarlos.

Las siguientes secciones proporcionan detalles acerca de estos métodos de extender las posibilidades de Visual FoxPro.

Usar asistentes

Varios asistentes de Visual FoxPro le permiten integrar datos de Visual FoxPro con las funciones de otros programas para Windows. Por ejemplo, puede enviar cartas modelo a sus clientes con el Asistente para combinar correspondencia. Cuando ejecute el asistente, puede especificar una tabla o vista que contenga datos de Visual FoxPro para usar y, a continuación, exportar los datos a un formato de archivo apropiado (como delimitado por comas, por ejemplo) o especificar que el programa procesador de textos use el proveedor OLE DB de Visual FoxPro para tener acceso a los datos. Si usa Microsoft Word, el asistente incluso iniciará el programa procesador de textos, creará el documento de combinación en blanco y mostrará la barra de herramientas Combinar correspondencia para que vincule campos con los datos de Visual FoxPro.

Asimismo, con Microsoft Excel y Microsoft Query, puede analizar sus datos mediante una tabla dinámica, que resume datos en columnas y le permite reorganizarlos para mostrarlos de distintas maneras. Con el Asistente para tablas dinámicas de Visual FoxPro, puede usar los datos de su aplicación como origen de datos para Microsoft Excel y generar la tabla dinámica en Microsoft Excel.

Usar la automatización

Una forma más eficaz de interactuar con otras aplicaciones es usar la automatización. Con programas de Visual FoxPro, puede tener acceso a los objetos expuestos por otras aplicaciones y después controlarlos estableciendo sus propiedades y llamando a sus métodos. Por ejemplo, Microsoft Excel expone un objeto de aplicación así como hojas, columnas, filas y celdas del objeto de aplicación. Puede manipular directamente cualquiera de estos objetos, incluso puede obtener datos de ellos o establecer datos en ellos. Además, normalmente puede controlar el objeto de aplicación con todos los comandos disponibles en el programa. Por ejemplo, al administrar el objeto de aplicación en Microsoft Excel puede abrir, guardar o imprimir hojas, llamar al asistente para gráficos de Microsoft Excel, etc.

La automatización es una forma particularmente atractiva y eficaz de unir programas para Windows por varias razones:

  • Tiene acceso directo al otro programa, incluidos todos sus objetos y comandos.
  • Puede compartir datos directamente con el otro programa sin tener que exportarlos o convertirlos a otro formato.
  • Puede controlar el otro programa con el modelo familiar de propiedades y métodos.
  • El otro programa no tiene que estar necesariamente a la vista del usuario cuando se invoque. Por ejemplo, puede llamar a Microsoft Excel, colocar algunos datos en celdas, ejecutar un cálculo complejo en los datos, leer el resultado y, a continuación, mostrarlo en Visual FoxPro, todo sin haber mostrado Microsoft Excel. El usuario seguirá viendo exclusivamente Visual FoxPro, a menos que quisiera mostrarle explícitamente Microsoft Excel.
  • Los comandos (métodos y propiedades) para controlar el otro programa están incrustados en programas de Visual FoxPro familiares. No tiene que aprender un lenguaje de programación diferente para poder controlar el otro programa.

La automatización es particularmente eficaz porque es un método ilimitado para trabajar con otros programas. En esencia, la automatización simplemente pone a su disposición los datos y comandos de otras aplicaciones, para que las use de la forma más apropiada para su aplicación.

Un caso de ejemplo ilustra cómo puede integrar varios programas para Windows. Suponga que almacena los datos de clientes y ventas en Visual FoxPro. Le gustaría crear un informe de ventas que resuma las ventas trimestrales.

Una solución sería usar la automatización para copiar los datos de ventas de Visual FoxPro en celdas de una hoja de Microsoft Excel. Entonces puede llamar al asistente para gráficos de Microsoft Excel a fin de crear un gráfico de los datos y copiarlos en el Portapapeles de Windows. Además con la automatización, puede llamar a Microsoft Word y crear o abrir un documento de informe de ventas (si lo crea como un documento nuevo, puede insertar texto estándar almacenado en Visual FoxPro) y, a continuación, pegarlo en el gráfico creado en Microsoft Excel.

Esto es sólo una de las formas de usar la automatización para convertir Visual FoxPro en parte de una solución de ámbito empresarial. Familiarizándose con los objetos y métodos disponibles en los programas que normalmente usa, se le pueden ocurrir muchas más formas de hacer que cada programa mejore las posibilidades de los otros. Para obtener información detallada acerca de la Automatización, consulte "Manipular objetos con Automatización" en Agregar OLE.

Extender las posibilidades de almacenamiento de datos en Visual FoxPro

Las posibilidades de tablas de datos e indíces de Visual FoxPro son generalmente más que apropiadas para los requisitos de una aplicación si le importan la velocidad y el tamaño de bases de datos. Sin embargo, a veces deseará extender Visual FoxPro con datos almacenados en otros formatos. Esto puede ocurrir si:

  • La aplicación tiene que tener acceso a datos heredados que crea y mantiene una aplicación existente. Por ejemplo, suponga que, como parte de su aplicación de ventas, necesita acceso a datos que mantiene una aplicación de contabilidad que se programó con un lenguaje diferente, tal vez incluso en una plataforma diferente.
  • Puede optimizar el acceso a datos con un servidor de base de datos, que puede acelerar el acceso a datos, particularmente para bases de datos muy grandes.
  • Desea compartir datos con otros programas y, por lo tanto, desea almacenar los datos en un formato accesible a todos los programas.
  • Los datos se ajustan mejor al formato de un programa concreto (como una hoja de cálculo). Esto puede ser verdad, por ejemplo, si su aplicación sólo requiere accesos ocasionales a datos que eran mantenidos por el otro programa.

Si los datos que necesita están en formato de hoja de cálculo, documento de procesador de textos u otro programa para Windows, puede tener acceso a los mismos a través de la automatización. Por ejemplo, puede hacer esto si su aplicación requiere un conjunto de cartas modelo. En ese caso, las cartas pueden estar almacenadas como documentos de Microsoft Word y su aplicación puede usar la automatización para llamar a Word, abrir la carta apropiada e insertar o reemplazar el texto cuando sea necesario.

Una aproximación más común al uso de datos externos a Visual FoxPro es usar el proveedor OLE DB para tener acceso a los mismos. El proveedor OLE DB de Visual FoxPro le permite conectarse a los datos en el formato de otros programas — típicamente otros programas de base de datos — y consultarlos o modificarlos mediante comandos SQL estándar.

Por ejemplo, si cree que las posibilidades de seguridad y procesamiento de transacciones son una parte vital de su aplicación, debe almacenar los datos con Microsoft SQL Server. Para tener acceso a los datos, defina una conexión a SQL Server mediante el proveedor OLE DB. Entonces podrá ejecutar consultas y otros comandos SQL usando ADO, y recuperar los resultados dentro de un recordset ADO para adicionalmente procesarlos en Visual FoxPro.

Otras aplicaciones pueden tener acceso a los mismos datos y aprovechar las mismas características. Por ejemplo, una hoja de Microsoft Excel puede obtener sus datos de la misma base de datos de SQL Server. La hoja no sólo se beneficiará de las mismas ventajas de rendimiento que su aplicación, también puede aprovechar las características de seguridad y procesamiento de transacciones del servidor, que no están disponibles de otro modo en una hoja Microsoft Excel.

En algunos casos, es posible que desee llegar más lejos y usar comandos SQL específicos del origen de datos al que tiene acceso con el proveedor OLE DB. Por ejemplo, Microsoft SQL Server le permite crear y ejecutar procedimientos almacenados, que pueden manipular datos en el servidor (en lugar de en su aplicación). Para aprovechar los procedimientos almacenados puede enviar instrucciones SQL "nativas" al servidor de base de datos. Los comandos de paso a través de SQL también le permiten realizar tareas de administración del sistema en el servidor, y en algunas instancias se ejecutarán más rápido que instrucciones SQL parecidas ejecutadas en Visual FoxPro.

Para obtener información más detalladas acerca de cómo extender las posibilidades de almacenamiento de datos de Visual FoxPro, consulte la documentación indicada en la tabla siguiente.

Para obtener detalles acerca de | Vea
Automatización | Manipular objetos mediante Automatización in Compartir información y agregar objetos OLE
Utilizar datos que no son de Visual FoxPro | Acceder a datos remotos con vistas in Crear vistas
Uso de Visual FoxPro en un entorno cliente-servidor | Diseñar aplicaciones cliente /servidor

Conversión de datos de Visual FoxPro

Puede elegir guardar sus datos en tablas de Visual FoxPro o en otra plataforma, como un servidor de base de datos. O puede hacer ambas cosas: guardar los datos en tablas de Visual FoxPro mientras realice el desarrollo o hasta que el tamaño de la base de datos sea muy grande, y después trasladar los datos (hacer un upsize) a otra plataforma.

Por ejemplo, puede crear un prototipo de su aplicación conservando todos los datos en tablas locales de Visual FoxPro. Esto le proporciona la flexibilidad de modificar sus tablas, vistas e índices cuando desarrolla la aplicación sin la complejidad de administrar tablas en un servidor de base de datos. Puede guardar datos de ejemplo en las tablas locales para probar los formularios, informes y otros programas. Cuando la estructura de la base de datos esté terminada, puede hacer un upsize de los datos a un servidor de base de datos y enviar a producción la aplicación.

Otra forma de trabajar es guardar los datos en tablas de Visual FoxPro sólo mientras sea práctico. Cuando el tamaño de la base de datos sea grande, puede hacer un conversión (conversión a SQL) y aprovechar el rendimiento optimizado proporcionado por un servidor de base de datos. El punto en el que tiene sentido hacer un conversión de la base de datos depende de muchos factores, entre ellos: la complejidad de la base de datos, el rendimiento de su equipo local o de la red y las exigencias de la aplicación.

Finalmente puede crear un prototipo de la base de datos en Visual FoxPro y, a continuación, hacer un conversión para compartir los datos con otras aplicaciones que también pueden tener acceso a un servidor de base de datos. De forma similar, puede hacer un conversión de la base de datos para aprovechar la seguridad y las posibilidades de procesamiento de transacciones por parte del servidor de base de datos.

Para obtener detalles acerca del conversión de las bases de datos, vea Convertir las bases de datos de Visual FoxPro.

Vea también

Planificar aplicaciones empresariales | Visual FoxPro como origen de datos | Programación orientada a objetos | Agregar OLE | Acceso a la API de Visual FoxPro | Asistente para combinar correspondencia | Asistente para tablas dinámicas

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


Visual FoxPro como Origen de Datos

Una forma diferente de integrar Visual FoxPro en una solución empresarial es usarlo como un componente, pero no necesariamente como la aplicación principal. En efecto, puede usarlo como servidor para una aplicación escrita con otro producto. En este caso, el usuario no verá directamente Visual FoxPro. En lugar de ello, la interfaz de usuario de la aplicación estará programada con herramientas de la otra aplicación y se comunicará en un segundo plano con Visual FoxPro para obtener o manipular datos.

Visual FoxPro funciona bien en este papel porque puede ofrecer su motor de base de datos, que proporciona acceso rápido a datos a otras aplicaciones. Además, puede poner sus objetos y comandos a disposición de otros programas, incluidos objetos personalizados que el usuario puede crear.

Poner los datos de Visual FoxPro a disposición de otros programas

Una forma de que una aplicación de ámbito empresarial aproveche Visual FoxPro es usar el motor de base de datos de Visual FoxPro para almacenar y administrar datos. Esto proporciona almacenamiento de alto rendimiento y posibilidad de consulta para otros programas.

Los programas pueden conectar con los datos de Visual FoxPro mediante el proveedor OLE DB de Visual FoxPro. Este proveedor ofrece el motor de bases de datos de Visual FoxPro para comandos VFP SQL estándar..

Por ejemplo, una aplicación puede usar Microsoft Excel como herramienta de cálculo para análisis de datos complejos. Si los datos que hay que manipular son muy flexibles, es posible que resulte más adecuado almacenarlos en una base de datos que en una hoja. Entonces la hoja se podría crear de modo que use el proveedor OLE DB de Visual FoxPro para conectarse a la base de datos, extraer la información relevante y mostrarla en una hoja para su procesamiento posterior.

Otro ejemplo podría ser una aplicación de quiosco, como un expositor de información en un aeropuerto o en un centro de convenciones. Podría crear la presentación de información mediante un programa de creación multimedia. Pero si algunos de los datos de la aplicación cambiaran a menudo, sería incómodo cambiar páginas de la presentación. En lugar de ello, el programa de presentación podría conectarse a una base de datos de Visual FoxPro mediante el proveedor OLE DB y extraer los datos en tiempo de ejecución.

Para obtener más información, consulte los temas de ayuda del proveedor OLE DB de Visual FoxPro.

Poner los objetos y comandos de Visual FoxPro a disposición de otros programas

Además de poner los datos de Visual FoxPro a disposición de otros programas como parte de una solución empresarial, puede ofrecer los objetos y comandos de Visual FoxPro. Otras aplicaciones pueden llamar a los métodos y establecer propiedades de los objetos de Visual FoxPro; incluidos no sólo los objetos de base, sino también los objetos definidos en clases personalizadas..

Por ejemplo, puede crear una aplicación en Microsoft Excel que almacene datos en una base de datos de Visual FoxPro. Además, para simplificar la lectura y escritura de datos, Microsoft Excel puede llamar a los comandos de Visual FoxPro para mostrar un formulario como un cuadro de diálogo. Una posible utilización es reunir datos para una vista parametrizada.

Otra forma de ofrecer objetos Visual FoxPro es crear un servidor de automatización. Esto le permite crear objetos específicos de la aplicación que pueden realizar casi cualquier función que pueda programar en Visual FoxPro, con la ventaja de que puede distribuir el servidor.

Un uso de un servidor personalizado es crear un objeto que incluya un conjunto de reglas de empresa que aseguren la integridad de los datos que le pase otra aplicación. Por ejemplo, puede crear un objeto en Visual FoxPro para almacenar información de empleados que no sólo valide que la aplicación ha pasado información de empleados válida, sino que compruebe el nivel de acceso del usuario para garantizar que el usuario tenga acceso de seguridad para realizar cambios en los empleados.

Un servidor personalizado también puede ofrecer un objeto que incorpore lógica compleja para actualizar o leer información. Por ejemplo, es posible que un objeto de entrada de pedidos pueda no sólo almacenar el pedido, sino también mantener un registro de transacciones de pedidos, un inventario de actualizaciones, calcular una comisión de ventas, etc.

Este tipo de servidor de automatización es ideal para crear la "capa intermedia" de una aplicación empresarial de tres niveles. En este modelo, los datos forman el nivel más bajo y la aplicación forma el más alto. La funcionalidad está en el nivel medio, y proporciona una vista específica independiente de la aplicación de los datos que incorpora reglas de empresa (u otras posibilidades de proceso de datos) que no pertenecen exactamente a los datos ni a la aplicación.

Para obtener información acerca de la creación de servidores de automatización personalizados, vea Crear servidores de Automatización en Agregar OLE.

Crear un almacén de datos con Visual FoxPro

Además de crear la aplicación en Visual FoxPro, puede usar el programa para crear y mantener un almacén de datos o una versión de sus datos optimizada para informes. Para crear un almacén de datos debe realizar una copia de los datos necesarios para realizar informes y, a continuación, ponerlos a disposición de los usuarios que los necesiten. Manteniendo estos datos separados de los datos actuales puede:

  • Estructurarlos para que la elaboración de informes sea más sencilla y más rápida que si los usuarios crearan informes a partir de los datos actuales.
  • Colocar datos para informes en una ubicación distinta que los datos actuales, lo cual reduce la contienda entre datos, mejora el rendimiento y pone los datos a disposición de usuarios que no deben ver los datos actuales por motivos de seguridad.

Un almacén de datos es una instantánea de los datos obtenida en el momento de su creación. Los datos del almacén se actualizan periódicamente, programando la actualización de acuerdo con las necesidades de creación de informes de la aplicación.

Por ejemplo, suponga que está creando una aplicación para administrar una biblioteca, incluido un inventario de materiales. Durante el día, el sistema se usa constantemente a medida que los clientes sacan y devuelven material, y consultan el sistema para buscar o reservar libros. Además de administrar estas transacciones individuales, los bibliotecarios desean poder analizar su biblioteca para determinar hechos como los libros más populares, los libros cuyos plazos de préstamo han vencido, etc.

Para ayudarle en el análisis, la aplicación puede crear un almacén de datos a partir de la información de transacciones. La aplicación puede almacenar los datos periódicamente (por ejemplo, todas las noches) y los bibliotecarios pueden crear consultas sin que ello afecte al rendimiento del sistema durante el día. Además, el almacén de datos puede excluir detalles acerca de los clientes que usan la biblioteca, porque esta información no es necesaria para el análisis y se podría considerar información confidencial.

Para obtener el mayor beneficio de un almacén de datos, debe crearse en un servidor distinto de los datos actuales. Si los datos actuales y el almacén de datos están en el mismo servidor, aún puede beneficiarse de tener los datos optimizados en el almacén. Sin embargo, a medida que los usuarios hagan consultas al almacén, pueden generar una gran cantidad de tráfico de red que podría afectar al rendimiento del sistema actual.

Al crear el almacén de datos, simplemente debe copiar los archivos actuales sobre los archivos paralelos en el almacén de datos. O bien, puede reestructurar los datos del almacén para optimizarlos con el fin de crear informes. Por ejemplo, puede crear índices de los datos del almacén que reduzcan la sobrecarga que suponga la creación de informes.

Como otro ejemplo, los datos de una aplicación actual deben normalizarse para evitar la duplicación de datos. Sin embargo, podría ser útil combinar tablas en el almacén de datos que de otro modo serían independientes; esto puede eliminar la necesidad de combinar tablas, facilitando a usuarios menos experimentados la creación de informes.

También puede ajustar el nivel de detalle del almacén de datos a los requisitos de creación de informes de su aplicación. Para mayor flexibilidad, debe almacenar el mismo nivel de detalle en el almacén de datos que el que tiene en los datos actuales. Sin embargo, si los usuarios sólo van a crear informes resumen (como hojas de cálculo o gráficos), podría eliminar los datos detallados de la aplicación y almacenar únicamente datos resumidos en el almacén de datos.

Usar Visual FoxPro como motor de búsqueda en World Wide Web

Si la solución empresarial incluye la creación de un servidor World Wide Web para Internet, puede incorporar Visual FoxPro a la aplicación como motor de búsqueda. Esto le permite poner la eficacia de su base de datos de Visual FoxPro a disposición de aquéllos que puedan tener acceso a su servidor Web a través de Internet o a través de una intranet en la empresa.

Por ejemplo, suponga que como parte de la intranet empresarial desea poner un directorio de empleados a disposición de la empresa. Los empleados podrían apuntar con sus exploradores a una página "Buscar el empleado", que mostraría una página con la apariencia de un formulario de Visual FoxPro, con cuadros de texto para introducir criterios. Para realizar una búsqueda, los usuarios escribirían el nombre del empleado, la extensión de teléfono, el departamento, el cargo u otra información disponible y, a continuación, elegirían un botón Buscar ahora. En unos instantes verían un listado de los empleados que cumplen los criterios de búsqueda. Podrían guardar la lista como archivo de texto que podrían importar en otro programa, como un procesador de textos.

Descripción de Visual FoxPro como motor de búsqueda de Web

En general, para usar Visual FoxPro como servidor de información para Web, necesitará estos componentes:

  • Un servidor Web con servicio HTTP, que ejecute el sistema operativo Microsoft Windows NT o Windows 2000.
  • Una aplicación de Visual FoxPro que se pueda llamar como servidor de automatización. Esta aplicación se puede ejecutar en cualquier servidor al que tenga acceso el servidor Web.
  • Un medio que muestre resultados de búsqueda, que normalmente consiste en una plantilla de página Web en la que puede insertar datos.

La secuencia usual de eventos que implica una búsqueda de Visual FoxPro en Web es:

  1. El usuario muestra la página de búsqueda de su aplicación señalando con un explorador de Web. La página de búsqueda incluye el gráfico o texto que desee, más cuadros de texto en los que el usuario puede escribir texto de búsqueda.
  2. El usuario elige un botón "Buscar ahora". Los datos de un formulario cumplimentado se envían a un servidor Web para ser procesados, junto con el nombre de la aplicación de búsqueda de páginas Web.
  3. El servidor Web llama a su aplicación mediante el protocolo ISAPI (Internet Server API), pasándole un parámetro que contiene la información de búsqueda.
  4. La aplicación busca en la base de datos. Cuando obtiene resultados, los inserta en una plantilla de página Web y, a continuación, devuelve la página Web al servidor como una secuencia de caracteres.
  5. El servidor Web envía la página de resultados al explorador que inició la búsqueda.
  6. El explorador muestra al usuario la página resultados.

Si ha creado páginas Web, la mayor parte de los pasos de este proceso le resultarán familiares. Por ejemplo, es posible que ya sepa cómo crear páginas Web. Aunque no esté familiarizado con el diseño de páginas Web, probablemente le resultará bastante sencillo el proceso de crear estas páginas.

Para ver un ejemplo de cómo usar Visual FoxPro como motor de búsqueda de Web, vea el ejemplo Foxisapi.dll en el directorio ...\Samples\Servers\Foxisapi de Visual FoxPro. Lea el archivo Readme.txt de ese directorio para obtener detalles acerca de cómo ejecutar el ejemplo.

Vea también

Visual FoxPro como aplicación cliente | Planificar aplicaciones empresariales | Crear servidores de Automatización | Agregar OLE

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


Arquitectura de la aplicación

La arquitetura de una aplicacion Visual FoxPro varía con el tipo de aplicación que desea crear. Para diseñar la estructura de su aplicación, considere cuidadosamente la funcionalidad que ofrece cada componente y sus relaciones con otros componentes de la aplicación.

En esta Sección

Estructura de una aplicación Visual FoxPro
Describe cómo una aplicación típica de base de datos consiste en estructuras de datos, una interfaz de usuario, opciones de consulta y capacidad de generar informes.
Diseñar aplicaciones cliente /servidor
Discute acerca de la importancia de la planificación en la construción de una buena aplicación cliente/servidor. La plainificación apropiada lo ayudará a desarrollar una aplicación en forma mas rápida y productiva para sus usuarios.
Desarrollo rápido de aplicaciones
Describe los pasos fundamentales al desarrollar, crear prototipos, actualizar, implementar y optimizar una aplicación.
Crear aplicaciones con precisión e integridad de datos
Describe como usar reglas de validación de datos y procedimientos almacenados de Visual FoxPro junto con reglas de validacion de datos y procedimientos almacenados del contenedor de datos para desarrollar aplicaciones cliente/servidor que protejan la integridad de los datos.
Planificar aplicaciones empresariales
Explica como puede usarse Visual FoxPro como parte de una aplicación a gran escala que involucre dos ó mas herramientas de desarrollo, lo que le permite tomar ventaja de las capacidades únicas de cada producto.

Secciones Relacionadas

Desarrollar aplicaciones Visual FoxPro
Incluye información conceptual sobre como desarrollar aplicaciones Visual FoxPro, instrucciones para crear bases de datos e interfaces de usuario, como asi también otras tareas necesarias para crear aplicaciones Visual FoxPro.
Planificar aplicaciones
Describe como, un cuidadoso planeamiento ahorra tiempo, esfuerzo y dinero. Muchas de las decisiones tomadas en la fase de planificación impactarán en la manera en que se crearán los elementos de la aplicación.
Consideraciones de diseño
Discute como las decisiones de diseño que se tomen impactarán en la forma en que se crea la aplicación.
Consideraciones de seguridad
Muestra como deberían tenerse en cuenta los requerimientos de seguridad desde una perspectiva de negocios y las implicaciones que la elección de un modelo de seguridad pueden tener sobre el rendimiento, la escalabilidad y la instalación de la aplicación.
Planificar proyectos de desarrollo en equipo
Discute como el uso de software de control de código, como Visual SourceSafe de Microsoft, para administrar los archivos de un proyecto, hace posible la creación rapida de aplicaciones complejas combinando las capacidades de un equipo de desarrolladores.
Desarrollar aplicaciones internacionales
Muestra como el uso de las características internacionales le permiten diseñar aplicaciones efectivas tanto si son usadas en forma doméstica como internacional.


Estructura de una aplicación Visual FoxPro

Una aplicación de bases de datos típica consiste de una estructura de datos, una interfaz de usuario, opciones de consultas y capacidad de reportes.

Una aplicación Visual FoxPro terminada normalmente le presenta al usuario un menú y uno o más formularios para introducir o mostrar datos. Proporciona funcionalidad y mantiene la integridad de los datos adjuntado código para ciertos eventos. Las consultas e informes le permiten al usuario extraer información de la base de datos.

Estructura de una aplicación Visual FoxPro típica

Al estructurar su aplicación, necesita considerar las siguientes tareas:

  • Establecer el punto de partida
  • Inicializar el entorno
  • Controlar el bucle de eventos

Las siguientes secciones proporcionan detalles acerca de cada una de estas tareas. Normalmente crearía un objeto aplicación para completar estas tareas. Si utiliza el Asistente para aplicaciones para compilar su aplicación, este creará un objeto aplicación. O si desea, puede utilizar un programa como archivo principal para controlar estas tareas. Para mas información, vea Estructurar un programa principal.

Vea también

Compilar una aplicación | Establecer el punto de partida | Archivos del marco de aplicaciones | Generador de aplicaciones | Inicializar el entorno | Diseñar aplicaciones cliente /servidor | Planificar aplicaciones empresariales


Diseñar aplicaciones Cliente/Servidor

Microsoft® Visual FoxPro® le proporciona las herramientas para crear eficaces aplicaciones cliente-servidor. Una aplicación cliente-servidor de Visual FoxPro combina la eficacia, la velocidad, la interfaz gráfica de usuario y las sofisticadas funciones de consulta, informes y proceso de Visual FoxPro con el acceso multiusuario, almacenamiento masivo de datos, seguridad integrada, procesamiento robusto de transacciones, inicio de sesiones y la sintaxis nativa del servidor de un origen de datos o servidor ODBC. La sinergia de Visual FoxPro y las ventajas de los servidores proporcionan una eficaz solución cliente-servidor para sus usuarios.

El paso más importante a la hora de generar con éxito una aplicación cliente-servidor es crear un buen diseño. Cuando diseñe una aplicación cliente/servidor, debe balancear muchos requisitos de configuración. Buscará desarrollar aplicaciones más rápidas y más productivas para sus usuarios. También deseará asegurar la integridad de los datos en la aplicación, con la mayor integración de hardware existente y desarrollar en escalabilidad para el futuro. Además, como un desarrollador de Visual FoxPro, buscará hacer el proceso de desarrollo tan fluido y eficiente en costos como sea posible.

En esta sección

Diseño cliente / servidor para un elevado rendimiento
Generar una aplicación cliente-servidor rápida y de alto rendimiento con Microsoft® Visual FoxPro® implica aprovechar la enorme velocidad del motor de Visual FoxPro.
Mejorar el rendimiento mediante el acceso a datos basados en conjuntos
Generar aplicaciones cliente/servidor rápidas y eficientes minimizando la cantidad de datos que se traen desde el servidor.
Ubicar los datos en la plataforma óptima
Aprenda como tomar el máximo rendimiento al almacenar datos y otros atributos de su base de datos en la plataforma óptima.

Secciones relacionadas

Desarrollar aplicaciones Visual FoxPro
Esta sección incluye informacion conceptual acerca de como desarrollar aplicaciones en Visual FoxPro, instrucciones para crear bases de datos y la interfaz de usuario, y otras tareas necesarias para crear aplicaciones en Visual FoxPro.
Arquitectura de la aplicación
Aprenda varios tipos de arquitecturas posibles para aplicaciones Visual FoxPro, según el tipo de aplicación que necesite crear.
Estructura de una aplicación Visual FoxPro
Muestra una aplicación típica de base de datos que consiste en estructuras de datos, una interfaz de usuario, opciones de consulta y el potencial de los informes.
Desarrollo rápido de aplicaciones
Describe el paso fundamental en el desarrollo de aplicaciones, prototipo, conversión, implementación y optimización.
Crear aplicaciones con precisión e integridad de datos
Puede combinar la eficacia de las reglas de validación de datos y procedimientos almacenados, con las reglas de validación de datos y procedimientos almacenados del origen de datos; con el fin de generar aplicaciones cliente-servidor que protejan la integridad de los datos.
Planificar aplicaciones empresariales
Explica como puede usar Visual FoxPro como parte de una gran escala de aplicaciones que involucran 2 o más herramientas de desarrollo, lo cual hace posible tomar ventajas de las capacidades únicas de cada producto.

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Diseño cliente-servidor para un elevado rendimiento

Generar una aplicación cliente-servidor rápida y de alto rendimiento con Visual FoxPro implica aprovechar la enorme velocidad del motor de Visual FoxPro. Esto se consigue con nuevas técnicas tales como el uso de acceso a datos basado en conjuntos, en lugar del desplazamiento local tradicional, la generación de consultas parametizadas para descargar solamente los datos necesarios, la ubicación de tablas en la plataforma óptima y el aprovechamiento de procedimientos almacenados tanto de Visual FoxPro como remotos.

Al diseñar una aplicación local o de servidor de archivos, debe determinar las consultas, los formularios, los menús y los informes que la aplicación va a utilizar o crear.

Cuando se diseña una aplicación cliente-servidor, se debe llevar a cabo el análisis habitual del sistema, así como un análisis adicional relacionado específicamente con las aplicaciones cliente-servidor. Es necesario plantearse dónde se ubicarán los datos utilizados por las consultas, los formularios, los menús y los informes; y cómo se tendrá acceso a esta información. Por ejemplo, puede plantearse cuestiones tales como:

  • ¿Qué tablas se almacenarán en el servidor remoto una vez implementada la aplicación?
  • ¿Qué tablas se almacenarían de forma más eficaz como tablas de búsqueda locales?
  • ¿Qué vistas necesitará para tener acceso a los datos remotos?
  • ¿Qué reglas de empresa exige el servidor y cómo interactúa su aplicación con estas reglas?

Cuando haya determinado los componentes básicos de su aplicación cliente-servidor, puede comenzar a diseñar la forma en que su aplicación tendrá acceso a los datos y los actualizará.

Vea también

Mejorar el rendimiento mediante el acceso a datos basados en conjuntos | Diseñar aplicaciones cliente /servidor | Ubicar los datos en la plataforma optima | Seleccionar los métodos adecuados | Optimizar el rendimiento cliente/servidor | Mejorar aplicaciones utilizando tecnología de paso a través de SQL (SPT)


Optimizar el rendimiento cliente/servidor

Cuando haya implementado su aplicación cliente/servidor, podría encontrar ciertas áreas en las que le gustaría mejorar el rendimiento. Puede ajustar su aplicación para obtener el máximo rendimiento si, por ejemplo, acelera los formularios y las consultas, y aumenta la velocidad de obtención de datos.

En esta sección se explican estrategias para optimizar el rendimiento de las aplicaciones en el cliente, la red y el servidor.

En esta sección

Optimizar el uso de la conexión
Establecer una conexión emplea tiempo y memoria tanto en el cliente como en el servidor. Cuando optimice las conexiones, equilibrará el alto rendimiento que precisa con los requisitos de recursos de su aplicación.
Acelerar la recuperación de datos
Puede acelerar la recuperación de datos si administra el número de filas buscadas durante la búsqueda progresiva, controla el tamaño de búsqueda y usa la búsqueda diferida de Memo.
Acelerar consultas y vistas
Puede mejorar el rendimiento de las consultas y las vistas si agrega índices, optimiza los procesos local y remoto y optimiza expresiones de parámetros.
Acelerar los formularios
Cuando diseñe un formulario basado principalmente en datos del servidor, adopte un enfoque minimalista para un mejor rendimiento.
Mejorar el rendimiento de las actualizaciones y eliminaciones
Para acelerar las instrucciones Update y Delete puede agregar marcas de hora a las tablas remotas, usar la propiedad CompareMemo, usar el modo de transacción manual, usar procedimientos almacenados en el servidor y crear lotes de actualizaciones.

Secciones relacionadas

Crear una aplicación
Discute cómo crear una aplicación Visual FoxPro, la cual puede incluir una o mas bases de datos, un programa principal que configure el entorno de sistema de la aplicación, y una interfaz de usuario compuesta por formularios, barras de herramientas, y menús.
Establecer el punto de partida
Describe cómo el archivo principal establece el punto de partida de su aplicación, y puede consistir en un programa o un formulario. Cuando se ejecuta la aplicación, Visual FoxPro inicia el archivo principal de la aplicación, y este ejecuta el resto de los componentes de acuerdo a las necesidades.
Inicializar el entorno
Establecer el entorno de la aplicación es la primer tarea que el archivo principal o la aplicación objeto debe cumplir.
Controlar el bucle de eventos
Aprenda cómo establecer un bucle de eventos, para que Visual FoxPro comience a procesar eventos de usuario como clic del ratón y pulsaciones de teclas. Esto ocurre luego de establecer el entorno y una vez que se muestra la interfaz inicial del usuario.
Crear aplicaciones con el marco de aplicaciones
Describe cómo crear aplicaciones con el marco de aplicaciones utilizando el Asistente de aplicaciones y el Generador de aplicaciones.
Crear la interfaz de usuario
Aprenda cómo crear formularios, clases, controles, y barras de herramientas para proporcionar un rico conjunto de herramientas para la interfaz de usuario.
Convertir las bases de datos de Visual FoxPro
Explica cómo usar el asistente de conversión para mover bases de datos, tablas, y vistas desde su sistema a un servidor Microsoft SQL remoto.
Programar aplicaciones internacionales
Describe cómo puede diseñar y desarrollar sus aplicaciones en Visual FoxPro para que sean efectivas en forma local o internacionalmente.


Optimizar el uso de la conexión

Establecer una conexión emplea tiempo y memoria tanto en el cliente como en el servidor. Cuando optimice las conexiones, equilibrará el alto rendimiento que precisa con los requisitos de recursos de su aplicación.

El número de conexiones que utiliza Visual FoxPro depende de si usted fuerza o no el cierre de las conexiones no usadas y de la duración que establezca para el tiempo de espera de inactividad de la conexión.

Usar conexiones compartidas

Puede utilizar conexiones de forma exclusiva o bien compartir una conexión. Cada método presenta sus ventajas. Cuando use una conexión de forma exclusiva, su aplicación no experimentará ninguna contención en cuanto a recursos de conexión una vez establecida una conexión. Si cada conjunto de resultados usa una conexión exclusiva, también podrá entremezclar el proceso asíncrono en varios conjuntos de resultados.

Cuando use una conexión compartida, tendrá una conexión para múltiples conjuntos de resultados. Debe serializar las operaciones de manipulación de datos sobre los conjuntos de resultados que comparten la misma conexión y diseñar la aplicación para probar el nivel de ocupación de la conexión cada vez que pueda producirse un conflicto. Para obtener más información acerca de cómo compartir una conexión, vea Crear vistas.

Controlar los tiempos de espera de conexión

Si su aplicación no realiza ninguna acción durante un periodo de tiempo prolongado, puede reducir el uso de la conexión si establece la propiedad IdleTimeout de la conexión. La propiedad IdleTimeout controla el intervalo de tiempo que se permite que las conexiones estén inactivas antes de que Visual FoxPro las cierre. De forma predeterminada, las conexiones esperan indefinidamente y no se desactivan hasta que no las cierre específicamente el usuario.

El tiempo de inactividad de una definición de conexión se establece con la propiedad IdleTimeout de la función DBSETPROP( ); puede establecer la propiedad IdleTimeout para una conexión activa con la función SQLSETPROP( ).

Visual FoxPro cerrará las conexiones aunque las ventanas Examinar y los formularios que muestran datos remotos sigan abiertos y, después, volverá a establecer la conexión automáticamente cuando se necesite de nuevo la conexión. Sin embargo, Visual FoxPro no puede cerrar una conexión si:

  • Hay pendientes resultados de una consulta desde el servidor.
  • La conexión está en modo de transacción manual. Debe confirmar o deshacer la transacción y cambiar al modo de transacción automática para poder cerrar la conexión.

Para establecer el modo de transacción para una definición de conexión, utilice la propiedad Transactions de la función DBSETPROP( ); puede establecer el modo de transacción para una conexión activa mediante la función SQLSETPROP( ).

Liberar conexiones

Puede mejorar el rendimiento si cierra las conexiones que su aplicación ya no utilice. Las conexiones se cerrarán automáticamente cuando cierre una vista. Si la conexión está compartida por múltiples vistas, Visual FoxPro cerrará la conexión cuando se cierre la última vista que usa la conexión.

Puede controlar la conexión para una consulta manual si no desea actualizar los datos de un cursor. Use una consulta de paso a través de SQL para seleccionar los datos que necesita en un cursor local y, a continuación, cierre la conexión.

Vea también

Optimizar el rendimiento cliente/servidor | Acelerar la recuperación de datos | Acelerar consultas y vistas | Mejorar el rendimiento de las actualizaciones y eliminaciones | Acelerar los formularios | Mejorar aplicaciones utilizando tecnología de paso a través de SQL (SPT) | Crear vistas


Acelerar la recuperación de datos

Puede acelerar la recuperación de datos si administra el número de filas encontradas durante la búsqueda progresiva, controla el tamaño de búsqueda y usa la búsqueda diferida de Memo.

También puede usar la propiedad de vista UseMemoSize para devolver campos de caracteres como campos memo y después desactivar FetchMemo para permitir a su aplicación buscar de forma selectiva los campos de caracteres convertidos en campos memo.

Usar la búsqueda progresiva

Cuando se consulta un origen de datos remoto, Visual FoxPro recupera filas completas de datos y genera un cursor de Visual FoxPro. Para acelerar la recuperación de datos remotos, Visual FoxPro emplea la búsqueda progresiva de los cursores de vista y de los creados asíncrónicamente mediante paso a través de SQL. En lugar de pedirle a la aplicación que espere mientras se recupera un conjunto entero de datos, Visual FoxPro ejecuta una consulta y busca únicamente un pequeño subconjunto de las filas del conjunto de resultados en el cursor local. El tamaño predeterminado de este subconjunto es de 100 filas.

Nota Las instrucciones síncronas de paso a través de SQL no emplean la búsqueda progresiva. Se recupera todo el conjunto de resultados solicitado por una instrucción SQLEXEC( ) antes de que el control vuelva a su aplicación.

A medida que Visual FoxPro recupera filas adicionales de datos, el cursor local contiene cada vez más datos consultados. Puesto que las filas se recuperan en distintos momentos desde el origen de datos, la información de las filas no se actualiza automáticamente. Si su conexión funciona en modo asíncrono, Visual FoxPro le devolverá el control al programa en cuanto busque el primer subconjunto de datos. Durante el tiempo de inactividad, Visual FoxPro realiza una búsqueda en segundo plano de las filas restantes de los datos consultados, de subconjunto en subconjunto, en el cursor local. Esta situación le permite usar los datos ya buscados del cursor sin tener que esperar al resto de los datos.

Nota El aumento del número de filas buscadas mejora el rendimiento, pero disminuye la capacidad de respuesta de la interfaz del usuario. La disminución del número de filas buscadas produce el efecto contrario.

Buscar datos bajo petición

Puede desactivar la búsqueda progresiva y buscar filas únicamente cuando sea necesario si usa la propiedad de cursor de vista o de base de datos FetchAsNeeded. Esto produce una obtención de datos más eficiente para vistas remotas o vistas que recuperen conjuntos de datos muy grandes.

La propiedad FetchAsNeeded se establece de forma predeterminada en falso (.F.), por lo que la búsqueda progresiva se utiliza de forma predeterminada. Cuando se establece la propiedad FetchAsNeeded como verdadero (.T.), sólo se busca en las filas cuando sea necesario. Cuando se establece la propiedad FetchAsNeeded en verdadero, no se puede realizar una actualización hasta que se complete la búsqueda, se llame a la función SQLCANCEL( ) en el controlador de conexión actual o se cierre la vista.

Si desea ver el impacto del uso de la propiedad FetchAsNeeded, establezca en verdadero (.T.) la propiedad FetchAsNeeded de una vista que recupera un conjunto de resultados grande y a continuación, abra una ventana Examinar en la vista y desplácese hacia abajo. La barra de estado se actualiza para mostrar el número de filas recuperadas cuando se desplaza por la ventana Examinar.

Controlar la búsqueda del cursor

Si desea buscar todo el cursor, puede ejecutar el comando GOTO BOTTOM o cualquier comando que solicite acceso a todo el conjunto de datos.

Sugerencia Si bien puede usar el comando GO BOTTOM para buscar todo el cursor, normalmente es más eficiente generar una vista parametizada que busque únicamente una sola fila cada vez y vuelva a ejecutar la consulta a medida que el usuario cambie registros. Para obtener más información acerca de la generación de vistas de alto rendimiento, vea Crear vistas.

Los programas no ofrecen procesamiento de bucle inactivo. Para buscar cursores de vista mediante programación, use los comandos GO nRecordNumber o GOTO BOTTOM. Para buscar cursores creados mediante paso a través de SQL en modo asíncrono, llame a la función asíncrona de paso a través de SQL una vez por cada subconjunto de fila.

Cancelar una instrucción SQLEXEC( )

Puede usar la función SQLCANCEL( ) para cancelar una instrucción SQLEXEC( ) o una vista en cualquier momento. Sin embargo, si el servidor ha terminado de generar el conjunto de resultados remoto y Visual FoxPro ha empezado a buscar el conjunto de resultados remoto en un cursor local, la función SQLCANCEL( ) cancela la instrucción SQLEXEC( ) y deja el cursor local. Si desea eliminar el cursor local puede ejecutar el comando USE, que cierra el cursor y cancela la búsqueda.

El comando USE no cancelará una instrucción SQLEXEC( ) si dicha instrucción todavía no ha creado un cursor local. Para determinar si Visual FoxPro ha creado un cursor local, puede llamar a la función USED( ).

Controlar el tamaño de búsqueda

Puede controlar el número de filas buscadas de una vez por su aplicación en un servidor remoto si establece la propiedad FetchSize de su vista. Esta propiedad especifica el número de registros que se buscan en el cursor local desde el servidor remoto cada vez, mediante la búsqueda progresiva o llamadas asíncronas de paso a través de SQL. El valor predeterminado es 100 filas.

Para controlar el número de registros buscados de una vez en una vista

  • En el Diseñador de vistas, elija Opciones avanzadas en el menú Consulta. En el área Búsqueda de datos del cuadro de diálogo Opciones avanzadas, use el control numérico para establecer un valor para el Número de registros para buscar a la vez,

    –O bien–

  • Establezca la propiedad FetchSize mediante la función DBSETPROP( ) para establecer el tamaño de búsqueda en la definición de vista;

    –O bien–

  • Establezca la propiedad FetchSize mediante la función CURSORSETPROP( ) para establecer el tamaño de búsqueda del cursor de vista activo.

    Por ejemplo, el código siguiente establece la definición de la vista para buscar progresivamente 50 filas de una vez en Customer_remote_view:

    ? DBSETPROP('Customer_remote_view', 'View', 'FetchSize', 50)

Usar la búsqueda diferida de Memo

Una aplicación bien diseñada suele utilizar la búsqueda diferida de Memo para acelerar la descarga de conjuntos de resultados que contengan campos de tipo Memo o General. La búsqueda diferida de Memo significa que el contenido de los campos de tipo Memo y General no se descargará automáticamente cuando se descargue un conjunto de resultados. En su lugar, se descargan rápidamente el resto de los campos de la fila, y no se busca el contenido de los campos de tipo Memo y General hasta que no se solicita abriendo el campo Memo o General. La búsqueda diferida de Memo constituye el método más rápido de descarga de filas y permite buscar el contenido de los campos de tipo Memo o General, que puede ser muy grande, únicamente si lo necesita el usuario.

Por ejemplo, su formulario podría incluir un campo de tipo General que muestre una imagen. Para acelerar el rendimiento, puede usar la búsqueda diferida de Memo para impedir la descarga de la imagen hasta que el usuario elija el botón "Vista previa" de su formulario. El código subyacente al botón "Vista previa" busca el campo General y lo muestra en el formulario.

Para controlar la búsqueda diferida de Memo, utilice la propiedad FetchMemo de su vista o su cursor. La propiedad FetchMemo especifica si se debe buscar el contenido de los campos de tipo Memo o General cuando se descarga la fila. El valor predeterminado es verdadero (.T.), que significa que los campos de tipo Memo y General se descargan automáticamente. Si sus datos contienen grandes cantidades de datos de campos tipo Memo o General, quizá observe un mejor rendimiento si establece como falso (.F.) la propiedad FetchMemo.

Nota La vista debe ser actualizable para permitir la búsqueda diferida de Memo, ya que Visual FoxPro usa los valores de campos clave establecidos por las propiedades de actualización para encontrar la fila de origen en el servidor cuando recupere el campo de tipo Memo o General. Para obtener información acerca de cómo hacer que una vista sea actualizable, vea Crear vistas.

Use DBSETPROP( ) para establecer la propiedad FetchMemo de una vista y CURSORSETPROP( ) para establecer la propiedad FetchMemo de un cursor.

Optimizar el rendimiento de búsqueda de datos

Puede usar las siguientes recomendaciones para establecer propiedades de conexión y vista con el fin de optimizar la búsqueda de datos. La propiedad PacketSize de su conexión es la que tiene más influencia en el rendimiento. Además, puede optimizar el rendimiento de búsqueda mediante conexiones síncronas.

Objeto | Propiedad | Valor
Conexión | PacketSize | 4K a 12K1
Conexión | Asynchronous2 | .F.
Vista | FetchSize3 | máximo

1. Establezca un valor más alto para las filas que contengan más datos; debe experimentar para encontrar el mejor valor.
2. Use conexiones síncronas para aumentar el rendimiento hasta un 50%, a no ser que desee poder cancelar instrucciones SQL mientras se ejecutan en el servidor.
3. El efecto de FetchSize es altamente dependiente del tamaño del registro del conjunto obtenido. En modo síncrono no tiene un especial impacto sobre el rendimiento, por lo tanto configúrelo como lo necesite para procesos a través de paso SQL en forma asíncrona, viendo los resultados en forma progresiva. FetchSize, si es reducido, produce mejores y significantes repuestas mientras ve progresivamente lo obtenido, pero la velocidad de recuperación es más lenta. Si se lo aumenta, incrementa la velocidad de ejecución.

La ejecución real depende en gran medida de la configuración del sistema y los requerimientos de la aplicación.

Vea también

Optimizar el uso de la conexión | Acelerar consultas y vistas | Optimizar el rendimiento cliente/servidor | Acelerar los formularios | Mejorar el rendimiento de las actualizaciones y eliminaciones | Mejorar aplicaciones utilizando tecnología de paso a través de SQL (SPT)


Acelerar consultas y vistas

Puede mejorar el rendimiento de las consultas y las vistas si agrega índices, optimiza los procesos local y remoto, y optimiza las expresiones de parámetros.

Agregar índices a tablas remotas

Los índices remotos pueden hacer las consultas mucho más eficaces. Las consultas de múltiples tablas son mucho más rápidas si las tablas están indizadas en función de los campos de combinación. Tener índices en campos incluidos en la cláusula WHERE de una consulta también puede mejorar el rendimiento.

Los índices agrupados proporcionan el mayor rendimiento. En SQL Server, cada tabla puede tener un índice agrupado. El Asistente para Conversión a SQL Server crea automáticamente índices agrupados en tablas que tenían una clave principal en Visual FoxPro.

Sugerencia Si bien los índices de campos de tablas empleados en consultas pueden acelerar el proceso, los índices sobre conjuntos de resultados pueden disminuir el rendimiento. Use con cuidado los índices sobre conjuntos de resultados.

Optimizar los procesos local y remoto

Si necesita procesar una combinación de datos locales y remotos, cree una vista remota que combine todos los datos remotos en una única vista. Entonces, puede combinar la vista remota con los datos locales de una vista local. Como Visual FoxPro hace una búsqueda completa de ambas vistas antes de combinarlas y filtrar la vista combinada, es importante limitar el tamaño del conjunto de resultados de la vista.

Para acelerar el procesamiento remoto, limite el conjunto de resultados de la vista remota a la cantidad mínima de datos que necesite su aplicación. Cuando recupere menos datos en un conjunto de resultados remoto, minimizará el tiempo necesario para descargar datos remotos en el cursor de vista o consulta local.

Optimizar vistas parametrizadas

Puede acelerar la recuperación de datos durante operaciones REQUERY( ) en una vista parametrizada abierta si compila la vista antes de que se ejecute. Para precompilar o "preparar" una vista, establezca la propiedad Prepared de la vista en verdadero (.T.).

Optimizar expresiones de parámetros

Los parámetros de vistas y de paso a través de SQL son expresiones de Visual FoxPro y se evalúan en Visual FoxPro antes de enviarse al servidor remoto. El tiempo de evaluación para la expresión es importante, ya que aumenta el tiempo de ejecución de la consulta.

Vea también

Acelerar la recuperación de datos | Acelerar los formularios | Optimizar el rendimiento cliente/servidor | Mejorar el rendimiento de las actualizaciones y eliminaciones | Mejorar aplicaciones utilizando tecnología de paso a través de SQL (SPT)


Acelerar los formularios

Cuando diseñe un formulario basado principalmente en datos del servidor, adopte un enfoque minimalista para un mejor rendimiento. Determine los datos y la funcionalidad necesarios y no pida al servidor estos datos y esta funcionalidad hasta que no los solicite el usuario. La solicitud de datos al servidor usa tiempo de procesamiento y crea tráfico en la red. Para solicitar menos datos en sus formularios:

  • Solicite el mínimo número de registros posible. Por ejemplo, use un filtro o una consulta para limitar el tamaño del conjunto de registros. Asegúrese de que el servidor pueda procesar todas las restricciones que se utilicen.
  • Use el mínimo número de campos remotos posible en las vistas subyacentes a sus formularios.
  • Use el menor número posible de formularios que tengan acceso a vistas remotas en su conjunto de formularios. Cuando abra un conjunto de formularios, todos los formularios del conjunto se abrirán y completarán con los datos aplicables. Si limita el número de formularios del conjunto, especialmente aquellos que deben conectarse a un servidor y recuperar datos remotos, reducirá el tiempo de carga del conjunto de formularios.
  • Use menos controles enlazados que tengan acceso a datos remotos. Cada cuadro combinado, cuadro de lista y cuadrícula que estén enlazados a una tabla o una consulta remota necesita una consulta distinta al servidor cuando se abra el formulario. Evite usar controles que contengan totales o cuadros de lista y cuadros combinados que tengan orígenes de filas grandes.
  • Si los usuarios necesitan comparar múltiples conjuntos de datos, considere la posibilidad de almacenar en tablas locales temporales los datos devueltos por el servidor. Proporcione un formulario en el cual el usuario pueda usar los datos almacenados previamente o ejecutar una nueva consulta.

Almacenar localmente tablas de consulta

Con frecuencia, una aplicación contiene varios formularios que usan la misma tabla remota. Si los datos de la tabla no cambian con frecuencia, puede acelerar la carga del formulario y reducir la carga del servidor mediante una de las técnicas siguientes:

  • Almacene en la base de datos de la aplicación de Visual FoxPro local las tablas que nunca cambian y que no son demasiado grandes (como los nombres y las abreviaturas de las regiones de su país). Si la tabla se combina en consultas o vistas con tablas remotas, también debe conservar una copia de ella en el servidor para evitar combinar datos locales y remotos.
  • Almacene en el servidor y en la base de datos de la aplicación local las tablas que cambien con poca frecuencia (como las listas de edificios de la compañía). Ofrezca un método para que el usuario descargue la tabla cuando cambien los datos.
  • Almacene en el servidor y en la base de datos de la aplicación local las tablas que cambien ocasionalmente pero no a diario (como una lista de empleados en una pequeña compañía o departamento). Su aplicación debe actualizar automáticamente la versión local cada vez que se inicie. Este método emplea tiempo adicional cuando se inicia la aplicación, pero acelera las consultas cuando la aplicación está en ejecución.

Mostrar campos únicamente bajo petición

Presente únicamente cuando se soliciten los campos que tardan mucho tiempo en recuperar datos del servidor, como los campos de tipo Memo o General. Puede usar las técnicas siguientes:

  • Si su formulario se basa en una vista, coloque los campos de tipo Memo o General fuera de la pantalla en otra página del formulario. Agregue una etiqueta al formulario, como "Avanzar página para ver notas e imágenes", que informen al usuario de cómo ver la información. Establezca la propiedad FetchMemo de la vista o del cursor en el valor falso (.F.), de forma que Visual FoxPro no recupere campos de tipo Memo o General hasta que se muestren en la pantalla.
  • Establezca la propiedad Visible en el valor falso (.F.) para los controles enlazados a los campos de tipo Memo o General. Agregue un botón de alternar o un botón de comando que establezca la propiedad en el valor verdadero (.T.), de forma que el usuario pueda elegir ver el contenido de estos controles.
  • Muestre los campos más importantes en el formulario principal y ofrezca un botón con la etiqueta "Más información" que abra otro formulario que contenga otros campos. Base el segundo formulario en una vista parametrizada por el campo de clave principal del formulario principal. Por ejemplo, suponga que tiene un formulario principal basado en una vista cuya instrucción SQL SELECT incluye el código siguiente:
    SELECT customer_id, company_name, address, city, region, country
FROM customers

    En el formulario anterior, cust_id está enlazado a thisform.txtCust_id. Podría basar el segundo formulario en la siguiente vista, que sólo se utiliza cuando el usuario elige el botón "Más información":

    SELECT orders.order_id, orders.order_date, orders.shipper_id, ;
employee.emp_id, employee.last_name, employee.first_name ;
FROM orders, employee ;
WHERE orders.cust_id = ?THISFORM.txtCust_id ;
AND orders.employee_id = employees.emp_id

Vea también

Acelerar consultas y vistas | Mejorar el rendimiento de las actualizaciones y eliminaciones | Optimizar el rendimiento cliente/servidor | Mejorar aplicaciones utilizando tecnología de paso a través de SQL (SPT)


Mejorar el rendimiento de las actualizaciones y eliminaciones

Puede acelerar las instrucciones Update y Delete:

  • Si agrega marcas de hora a sus tablas remotas.
  • Si usa la propiedad CompareMemo.
  • Si usa el modo de transacción manual.
  • Si usa procedimientos almacenados en el servidor.
  • Si crea lotes de actualizaciones.

Agregar marcas de hora

Puede mejorar el rendimiento cuando actualice, inserte o elimine datos en una tabla remota que contenga muchos campos si agrega un campo de marca de hora a la tabla remota, siempre y cuando su servidor ofrezca el tipo de campo Timestamp.

La presencia de un campo de tipo Timestamp en una tabla remota le permite usar la opción DB_KEYANDTIMESTAMP de actualización WhereType de SQL de Visual FoxPro. Esta opción ahorra tiempo de proceso porque Visual FoxPro sólo compara dos campos de la vista, el campo de clave y el campo de marca de hora, contra una tabla remota para detectar conflictos de actualización. Al comparar únicamente dos campos, en lugar de todos los campos actualizables (mediante la opción DB_KEYANDUPDATABLE) o todos los campos modificados (mediante la opción DB_KEYANDMODIFIED), la opción DB_KEYANDTIMESTAMP reduce el tiempo necesario para actualizar datos remotos. Para obtener más información acerca de las opciones WhereType, vea Crear vistas.

Nota La opción DB_KEYANDTIMESTAMP compara los campos de clave y de marca de hora únicamente cuando la tabla remota contiene un campo de marca de hora. Si usa la opción DB_KEYANDTIMESTAMP frente a una tabla remota que no contiene un campo de marca de hora, Visual FoxPro sólo compara los campos de clave.

El Asistente para conversión puede agregar automáticamente a las tablas que exporte campos de marca de hora, según proceda. Para obtener más información, vea "Columnas de marca de hora" en Convertir las bases de datos de Visual FoxPro.

Sugerencia Si hace algo que modifique la estructura de una tabla base de una vista, como agregar un campo de marca de hora, quizá tenga que volver a crear la vista. Los campos de una definición de vista se almacenan en la base de datos, y todos los cambios realizados a las tablas base para una vista después de usarla no quedarán reflejados en la definición de la vista hasta que no vuelva a crearla.

Excluir campos memo de la cláusula WHERE de actualización

Cuando sea apropiado, puede acelerar las actualizaciones evitando que los campos memo (campos de tipo Memo, General o Picture) de vista se comparen con sus homólogos de tabla de base. De forma predeterminada, la propiedad CompareMemo se establece como verdadero (.T.), lo cual incluye automáticamente los campos memo en la cláusula WHERE de SQL generada al crear una vista actualizable. Puede establecer la propiedad CompareMemo como falso (.F.) para excluir memos de la cláusula WHERE de SQL.

Usar transacciones

Para conseguir un rendimiento óptimo, use el modo de transacción manual y administre usted mismo las transacciones. El modo de transacción manual le permite controlar cuándo confirma un grupo de transacciones, lo que permite al servidor procesar más instrucciones rápidamente.

El modo de transacción automática lleva más tiempo, ya que de forma predeterminada cada instrucción de actualización se ajusta en una transacción distinta. Este método ofrece el máximo control sobre cada instrucción individual de actualización, pero también aumenta la sobrecarga.

Puede mejorar el rendimiento en el modo de transacción automática si incrementa el valor de la propiedad BatchUpdateCount de la vista o del cursor. Cuando usa un valor grande para BatchUpdateCount, muchas instrucciones de actualización se incluyen por lotes en una única instrucción de actualización, que a su vez se ajusta en una única transacción. Sin embargo, si falla alguna instrucción del lote, se deshará todo el lote.

Sugerencia Algunos servidores no admiten la propiedad BatchUpdateCount; debe probar esta propiedad en cada servidor remoto antes de implementarla en su aplicación.

Usar procedimientos almacenados en el servidor

Puede crear procedimientos almacenados en el servidor, que están precompilados y, por tanto, se ejecutan muy rápidamente. Puede ejecutar procedimientos almacenados, enviar parámetros mediante paso a través de SQL y mover procesos adicionales al servidor según sea apropiado para su aplicación.

Por ejemplo, quizá desee recopilar localmente la entrada del usuario y ejecutar una consulta de paso a través de SQL para enviar los datos al servidor, llamando al procedimiento almacenado apropiado. Para ello, cree un formulario en un cursor o una matriz local para recopilar los datos y escriba código que cree una instrucción SQLEXEC( ) mediante el nombre del procedimiento almacenado en el servidor y los parámetros que se deben proporcionar. Podría agregar este código al evento Click de un botón de comando cuyo título fuera "Aceptar" o "Confirmar". Cuando el usuario elija el botón se ejecutará la instrucción SQLEXEC( ). Usar procedimientos almacenados en el servidor para actualizar datos remotos puede ser más eficiente, ya que los procedimientos almacenados se compilan en el servidor.

Crear lotes de actualizaciones

Si su aplicación actualiza una serie de registros, cree lotes de actualizaciones de modo que la red y el servidor las gestionen más eficazmente. Las instrucciones Update o Insert se agrupan por lotes antes de enviarse al servidor, de acuerdo con el valor de la propiedad BatchUpdateCount de la vista. El valor predeterminado es 1, que significa que cada registro se envía al servidor con una instrucción de actualización. Puede reducir el tráfico de la red si incrementa el valor para empaquetar múltiples actualizaciones en una instrucción.

Sugerencia Algunos servidores no admiten la propiedad BatchUpdateCount; debe probar esta propiedad en cada servidor remoto antes de implementarla en su aplicación.

Para usar esta característica eficazmente, la conexión de la vista debe establecerse para el modo 5 de almacenamiento en búfer, para el almacenamiento optimista de tablas en búfer y los cambios deben confinarse desde el punto de vista ideal a los mismos campos en cada fila del cursor. Puede usar DBSETPROP( ) para establecer la propiedad BatchUpdateCount para la definición de la vista; para cambiar el valor para el cursor de vista activo, use CURSORSETPROP( ).

Optimizar el rendimiento de actualizaciones y eliminaciones

Puede usar las siguientes instrucciones para establecer propiedades de vista y conexión para optimizar el rendimiento de actualizaciones y eliminaciones. La propiedad BatchSize de la vista es la que tiene más influencia en el rendimiento.

Objeto | Propiedad | Valor | Notas
Vista | BatchUpdateCount | 10 a 30 filas | Establezca un valor superior para actualizaciones de pequeño tamaño.1 Se establece para aumentar el rendimiento hasta un 50%. El valor predeterminado es 1.
Conexión | Asynchronous | (.F.) | Use conexiones síncronas para aumentar el rendimiento hasta un 50%, a no ser que desee poder cancelar instrucciones SQL mientras se ejecutan en el servidor. De forma predeterminada la conexión es síncrona.
Conexión | WaitTime | N/D | Para aumentar el rendimiento en modo asíncrono, use un tiempo de espera más corto; para reducir el tráfico de red, aumente el tiempo de espera.
Conexión | PacketSize | 4K a 12K | Tiene poca influencia en el rendimiento.

El mejor valor también depende de la velocidad del Servidor.

El rendimiento real depende en gran manera de la configuración del sistema y de los requisitos de la aplicación.

Vea también

Acelerar los formularios | Acelerar consultas y vistas | Optimizar el rendimiento cliente/servidor | Optimizar el uso de la conexión | Acelerar la recuperación de datos | Mejorar aplicaciones utilizando tecnología de paso a través de SQL (SPT)


Mejorar el rendimiento mediante el acceso a datos basados en conjuntos

Uno de los factores más importantes a la hora de generar una aplicación cliente-servidor rápida y eficiente es reducir al mínimo la cantidad de datos que necesita extraer del servidor. Puesto que las aplicaciones cliente-servidor pueden tener acceso a cantidades de datos muy grandes en un servidor remoto, el uso de las técnicas tradicionales de desplazamiento local puede dar como resultado una aplicación cliente-servidor lenta. Para acelerar el rendimiento se utilizan técnicas de acceso a datos basadas en conjuntos para filtrar la cantidad de datos descargados.

Acceso eficaz a datos basados en conjuntos

Los datos remotos están basados en conjuntos; el acceso a datos remotos se realiza seleccionando un conjunto de datos de un gran almacén de datos mediante instrucciones SELECT - SQL. La diferencia más importante entre generar una aplicación local tradicional y una aplicación cliente-servidor es el contraste entre las técnicas tradicionales de desplazamiento en Visual FoxPro y las técnicas de acceso a datos del servidor basados en conjuntos.

Usar las técnicas tradicionales de desplazamiento

En la programación tradicional local, puede tener acceso a cantidades de datos discretas y, con frecuencia, de gran volumen, mediante el comando GOTO BOTTOM, para el cual puede, posteriormente, realizar una consulta. Puede desplazarse por los datos ejecutando un comando SET RELATION para crear una relación temporal entre dos tablas y, a continuación, ejecutando un comando SKIP para moverse por los registros relacionados.

Si bien este método de desplazamiento por los registros podría utilizarse para datos remotos, no sería eficiente para grandes almacenes de datos remotos. Por ejemplo, si crea una vista remota que tiene acceso a una tabla grande en un origen de datos remotos y a continuación ejecuta el comando GOTO BOTTOM tendrá que esperar mientras todos los datos de la vista se recuperan desde el origen de datos, se envían a través de la red y se cargan en el cursor de la vista del sistema local.

Usar consultas parametrizadas

Un enfoque más eficaz para el acceso a datos remotos es descargar únicamente los datos que necesita y entonces volver a consultarlos para obtener registros adicionales específicos o registros nuevos. Se utiliza una instrucción SELECT basada en parámetros para descargar un pequeño conjunto de datos específico y después tener acceso a nuevos registros mediante la función REQUERY( ) para solicitar un nuevo conjunto de datos.

No ejecute el comando GOTO BOTTOM sobre los datos del servidor remoto porque se originaría:

  • Una carga innecesaria en los recursos de la red al descargar enormes cantidades de datos.
  • Una disminución del rendimiento de la aplicación al tener que manejar datos innecesarios.
  • Una posible reducción de la precisión de los datos del cursor local porque los cambios en los datos remotos no se reflejan en este cursor local hasta que no se ejecuta una nueva consulta.

Por ejemplo, si desea crear una aplicación cliente-servidor que tenga acceso a los pedidos de un cliente determinado, cree una vista remota que tenga acceso a la tabla Customer. Cree otra vista remota que tenga acceso a la tabla Orders, pero parametrice la vista basándose en el campo cust_id. A continuación, emplee el registro del cliente actual como parámetro para la vista de la tabla Orders.

Puede utilizar el parámetro para establecer el alcance del conjunto de datos descargado a la cantidad justa de datos. Si solicita pocos datos, puede perder rendimiento porque necesitará volver a consultar el servidor remoto más frecuentemente. Si solicita demasiados datos, puede perder tiempo descargando datos que no va a utilizar.

Elegir el mejor diseño cliente-servidor

Los siguientes ejemplos describen la forma de aprovechar las ventajas de la tecnología cliente-servidor y evitar los inconvenientes de las técnicas de programación inadecuadas. El primer método utiliza técnicas de programación tradicionales para transferir todos los datos desde un origen de datos remoto hasta cursores locales, que se relacionan posteriormente con el comando SET RELATION. Los métodos segundo, tercero y cuarto adoptan progresivamente técnicas de recuperación de datos cada vez más inteligentes, que limitan de forma efectiva la cantidad de datos descargados con una metodología "puntual" que proporciona los datos más actuales y el tiempo de respuesta más rápido a través de una red.

Usar una estrategia cliente-servidor no optimizada

Una aplicación cliente-servidor sencilla y sin optimizar utiliza con los datos remotos las mismas técnicas de desplazamiento que usa para los datos locales. Por ejemplo, si tiene 10 millones de registros de clientes y 100 millones de registros de pedidos en un origen de datos remoto, puede crear una aplicación ineficaz que descargue todos los registros de las tablas Customer y Orders en los cursores locales. A continuación puede generar indices basándose en 100 millones de registros de pedidos, crear una relación temporal entre las tablas Customer y Orders en los cursores locales, y utilizar el comando SKIP para desplazarse por los registros.

Este método no está optimizado para un gran rendimiento, pero podría ser útil si el extremo "uno" es local y el extremo "varios" es remoto.

Filtrar el extremo "varios"

Una aplicación cliente-servidor ligeramente mejorada limita el extremo "varios" de la relación, pero transfiere todo el extremo "uno" para que pueda pasar por los registros. En este ejemplo se crea una vista remota del extremo "varios" de la relación, la tabla Orders, parametrizada según el Id. de cliente. A continuación se descarga toda la tabla Customer.

Aunque crear una vista parametrizada sobre la tabla Orders es una mejora con respecto a descargar todos los pedidos, continúa transfiriendo información innecesaria al descargar toda la tabla Customer. Además, la tabla Customer está cada vez menos actualizada a medida que otros usuarios del sistema hacen cambios en ella. Este método puede ser adecuado si el extremo "uno" de la relación contiene un pequeño conjunto de datos.

Filtrar el extremo "uno"

Una técnica de programación cliente-servidor más apropiada crea vistas remotas para todos los datos remotos. El número de registros de Customer descargados a la vista remota de la tabla Customer se limita mediante la instrucción SELECT en esta vista para seleccionar solamente los clientes de una región. A continuación se crea una vista remota del extremo "varios" de la relación, la tabla Orders, parametrizada según el Id. de cliente.

Este método transfiere un conjunto de registros más reducido. El comando SKIP se usa para ir al extremo "uno" de la relación (la vista Customer). El comando REQUERY( ) se usa para tener acceso a nuevos datos en el extremo "varios" (Orders).

En este ejemplo se limita o filtra tanto el extremo uno como el extremo varios de la relación y también se puede utilizar el comando SKIP para desplazarse por los datos filtrados. Este método puede ser recomendable si el extremo "uno" de la relación, aun después de filtrarse, sigue siendo suficiente para proporcionar información para un conjunto de consultas sucesivas antes de volver a consultar el servidor remoto.

Usar la clave principal para tener acceso a la relación de uno a varios

El ejemplo de programación cliente-servidor más eficiente se olvida del lujo de utilizar el comando SKIP y crea un formulario que solicita la entrada o la selección del Id. de cliente, que se utiliza posteriormente como parámetro para una vista remota de la tabla Customer. Este parámetro se utiliza también para una vista remota de la tabla Orders.

Por ejemplo, podría crear un formulario de uno a varios en el cual la información del cliente constituyera el extremo "uno" y un control cuadrícula mostrara el extremo "varios" de la relación. El control cuadrícula puede estar enlazado al Id. de cliente elegido en el extremo "uno" del formulario. Entonces puede establecer la propiedad MaxRecords de CURSORSETPROP( ) a 1 y usar el código siguiente para llenar el lado "uno" del formulario:

SELECT * FROM customer WHERE customer.cust_id = ?cCust_id

Cuando el usuario desea ver el registro de otro cliente distinto, introduce o selecciona un nuevo Id. de cliente. El formulario vuelve a consultar en el origen de datos los pedidos del nuevo Id. de cliente y actualiza el control cuadrícula con los nuevos datos de pedido.

Con estas técnicas, la aplicación descarga solamente los datos necesarios y en el momento en que se necesitan. La respuesta a través de la red se acelera si limita la cantidad de datos transferidos, y se proporciona al usuario información más actualizada si se vuelve a consultar el origen de datos justo antes de mostrar la información solicitada.

Este método se recomienda cuando se desea tener acceso a la relación de uno a varios de manera aleatoria mediante cualquier valor de clave principal. Quizás desee descargar las claves principales en un control, como una lista desplegable, al abrir el formulario, y después ofrecer un control que el usuario puede elegir para actualizar la lista de valores de clave principal cuando la requiera.

Usar el entorno de datos en aplicaciones cliente-servidor

Cuando utilice datos remotos en un formulario, debe incluir las vistas en el entorno de datos del formulario. Puede establecer la propiedad AutoOpenTables para el entorno de datos como False (.F.), de forma que pueda especificar el momento en que la aplicación actualiza las vistas con los datos remotos. Establezca la propiedad ControlSource para los cuadros de texto y otros controles enlazados a datos después de haber llamado al método OpenTables del entorno de datos, normalmente en el código asociado con el evento Init del formulario. Para más información, consulte Crear formularios.

Vea también

Diseño cliente / servidor para un elevado rendimiento | Ubicar los datos en la plataforma óptima | Diseñar aplicaciones cliente /servidor | Seleccionar los métodos adecuados | Optimizar el rendimiento cliente/servidor | Mejorar aplicaciones utilizando tecnología de paso a través de SQL (SPT)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


Ubicar los datos en la plataforma óptima

El máximo rendimiento se obtiene cuando los datos y otros atributos de la base de datos se almacenan en la plataforma óptima. La mejor plataforma para un elemento en concreto depende de la forma en que se tiene acceso y se actualiza dicho elemento. Por ejemplo, quizá desee almacenar una copia local de una tabla del servidor, como una guía de códigos postales, que se utiliza como tabla de búsqueda, y actualizar esta copia local solamente cuando cambie la tabla original.

En la tabla siguiente se muestran algunos elementos de aplicación habituales, así como ejemplos de dónde situarlos para obtener un rendimiento óptimo.

Ubicación de elementos por plataforma

Elemento | Ubicación | Tipo | Notas
Tablas | Local | Copias locales de tablas de búsqueda de servidor; tablas pequeñas con modificaciones poco frecuentes. | Use una marca de hora, si el servidor remoto lo admite, para comparar y, opcionalmente, actualizar la tabla local para que coincida con los cambios de la tabla original.
 | Remota | Tablas grandes o modificadas con frecuencia |
Reglas | Local | Reglas en vistas remotas | Puede utilizar DBSETPROP( ) para almacenar en una vista remota reglas a nivel de campo y de registro. La aplicación puede usar estas reglas locales para comprobar la validez de los datos antes de enviarlos a la tabla original como actualización para tablas remotas.
 | Remota | Reglas a nivel de fila y de columna en tablas base remotas |
Procedimientos almacenados | Local | Procedimientos almacenados de Visual FoxPro |
 | Remota | Procedimientos almacenados en el servidor | Use la función de paso a través de SQL, SQLEXEC( ), para llamar a procedimientos almacenados en el servidor.
Transactions | Local | Transacciones de Visual FoxPro |
 | Remota | Transacciones del servidor |
Desencadenadores | Vistas locales | No hay desencadenadores en las vistas |
 | Remota | Desencadenadores del servidor |

Para reducir el tráfico de la red durante las búsquedas, puede elegir entre almacenar localmente las tablas de búsqueda que se modifican con frecuencia o las que no cambian casi nunca. Por ejemplo, podría descargar la lista de clientes de su empresa y actualizarla solamente cuando cambiara la información de los clientes.

Para realizar esta tarea, puede programar la aplicación para que compare la marca de hora incluida en la copia local de la tabla con la marca de hora de los datos de servidor (si el servidor remoto admite marcas de hora) y actualizar la copia local solamente si la tabla del servidor ha cambiado. Otra posibilidad es agregar al formulario un botón de comando que obligue a realizar una descarga inmediata de la tabla, lo que permite a los usuarios actualizar su copia de la tabla local cuando sea necesario.

Vea también

Mejorar el rendimiento mediante el acceso a datos basados en conjuntos | Seleccionar los métodos adecuados | Diseñar aplicaciones cliente /servidor | Desarrollo rápido de aplicaciones | Diseño cliente / servidor para un elevado rendimiento | Optimizar el rendimiento cliente/servidor | Mejorar aplicaciones utilizando tecnología de paso a través de SQL (SPT)


Desarrollo rápido de aplicaciones

Cualquiera que sea del método de programación que elija, necesita una buena estrategia para lograr que la programación de aplicaciones cliente-servidor sea rápida y eficaz. Puesto que Visual FoxPro facilita y acelera la generación de aplicaciones y el establecimiento de prototipos, puede elegir entre diseñar y crear un prototipo local para la aplicación, para después realizar una migración de la base de datos e implementarlo en etapas para un origen de datos remoto. Si tiene acceso a un origen de datos remoto durante el proceso de desarrollo, puede elegir realizar un prototipo de la aplicación basado en el origen de datos remoto mediante vistas remotas.

Generar un prototipo con vistas

El primer paso de la programación de una aplicación cliente/servidor de Visual FoxPro puede ser crear un prototipo. Al crear un prototipo de la aplicación, quizá módulo a módulo, se descubren posibles cambios y mejoras en el diseño durante las primeras etapas de la programación. De esta forma, es posible ajustar el diseño de manera eficaz sobre pequeños conjuntos de datos antes de agregar el nivel adicional de complejidad inherente al trabajo con grandes conjuntos de datos remotos y heterogéneos. Para más información, ver Convertir las bases de datos de Visual FoxPro.

Crear un prototipo local con vistas locales

Un prototipo local para una aplicación cliente-servidor es una aplicación de Visual FoxPro operativa que utiliza vistas locales para tener acceso a tablas locales. Utilice vistas en su prototipo cliente-servidor porque la aplicación cliente-servidor final empleará vistas remotas para tener acceso a datos remotos. Al definir un prototipo para la aplicación con vistas locales, se acerca un poco a la aplicación final.

Generar un prototipo local es especialmente práctico si no dispone de acceso constante a un origen de datos remoto durante la programación o si no desea utilizar datos remotos para establecer el prototipo de la aplicación. Las vistas locales tienen acceso a tablas locales de Visual FoxPro, en lugar de tener acceso a tablas del origen de datos remoto. No obstante, debe crear datos locales de forma que imiten la estructura de los datos del servidor. Utilizar datos locales para representar datos remotos es un método eficaz para programar y probar rápidamente el diseño básico de la aplicación. También puede acelerar el desarrollo si limita la cantidad de datos seleccionados en las vistas. Para obtener más información, consulte Crear vistas.

Planificar la migración de la base de datos (Conversión)

La migración de la base de datos (Conversión) es el proceso que crea en el servidor remoto una base de datos con la misma estructura de tabla, los mismos datos y potencialmente muchos otros atributos de la base de datos original de Visual FoxPro. Mediante este proceso, se toma una aplicación existente de Visual FoxPro y se realiza su migración a una aplicación cliente-servidor. Para obtener más información, consulte Convertir las bases de datos de Visual FoxPro.

Cuando genere una aplicación en la que en un futuro realizará una migración de la base de datos, elija el diseño de la arquitectura de la aplicación y el modelo de programación con el objetivo de extraer el máximo rendimiento con un origen de datos remoto. Estas opciones se describen en Diseño cliente / servidor para un elevado rendimiento.

Prototipo con vistas remotas

Si tiene acceso a un origen de datos remoto y desea utilizar los datos remotos directamente a medida que programa su aplicación cliente-servidor, puede crear el prototipo con vistas remotas. Cuando se sigue este procedimiento con vistas remotas, se omite la fase de migración de la base de datos, puesto que los datos ya se encuentran en un servidor remoto y se disponen de vistas remotas para tener acceso a dichos datos.

Implementar la aplicación cliente/servidor

Puede simplificar las pruebas y la depuración de su aplicación si implementa por etapas la aplicación cuyo prototipo ha generado. Al implementar por etapas estas aplicaciones, se agregan mejoras multiusuario, se mueven los datos al origen de datos remoto, y se prueba y depura la aplicación, módulo a módulo, de forma sistemática.

Cuando implemente su aplicación, puede utilizar la sintaxis nativa del servidor y acceder a la funcionalidad específica del mismo, como procedimientos almacenados, con la tecnología de paso a través de SQL. Para mayor información, consulte Mejorar aplicaciones utilizando tecnología de paso a través de SQL (SPT).

Optimizar la aplicación

Cuando la aplicación está plenamente implementada para datos remotos y ha completado la fase de prueba y depuración, puede ajustar la velocidad y el rendimiento de toda la aplicación. Para obtener más información, consulte Optimizar el rendimiento cliente/servidor.

Vea también

Seleccionar los métodos adecuados | Crear aplicaciones con precisión e integridad de datos | Diseñar aplicaciones cliente /servidor | Convertir las bases de datos de Visual FoxPro | Ubicar los datos en la plataforma óptima


Crear aplicaciones con precisión e integridad de datos

Puede combinar la eficacia de las reglas de validación de datos y los procedimientos almacenados de Visual FoxPro con las reglas de validación de datos y los procedimientos almacenados del origen de datos con el fin de generar aplicaciones cliente/servidor que protejan la integridad de los datos.

Mantener la integridad de los datos

Puede crear versiones locales de las reglas de validación del servidor remoto para proporcionar al usuario mensajes comprensibles, por ejemplo, acerca de las actualizaciones que no se permiten cuando se envían al servidor remoto ya que los datos introducidos han infringido alguna regla de validación de datos o de integridad relacional del servidor.

Utilizar reglas Visual FoxPro en una vista remota o fuera de línea

En las vistas remotas y en las vistas sin conexión puede crear reglas a nivel de campo y de registro para validar datos introducidos localmente antes de enviarlos al origen de datos remoto. Puesto que el objetivo de estas reglas es impedir que se envíe al origen de datos cualquier dato que pueda ser rechazado por las reglas de integridad del servidor, debe reproducir las reglas del origen de datos en las reglas que cree para la vista remota. La función DBSETPROP( ) sirve para crear reglas para las vistas.

Sugerencia Puede crear en una vista remota una regla de validación local que llame a un procedimiento almacenado del servidor remoto y que envíe al servidor en forma de parámetro el valor que desea validar. No obstante, el uso de un procedimiento almacenado remoto alarga el período de procesamiento durante la entrada de datos.

Utilizar reglas del servidor

Quizá prefiera basarse en las reglas establecidas en el servidor para la validación de datos. Si ocurre un error, la rutina de tratamiento de errores puede llamar a la función AERROR( ) para obtener información, incluyendo el número del mensaje de error, el texto del mensaje de error remoto y el controlador de conexión asociado al error.

Utilizar desencadenantes del servidor

Aunque es posible crear desencadenadores de Visual FoxPro en tablas locales, no puede crearlos en las vistas. No obstante, sí puede utilizar desencadenadores en el origen de datos remoto. Los desencadenadores del servidor sirven para procesar actualizaciones secundarias de datos, como actualizaciones o eliminaciones en cascada. El uso de desencadenadores del servidor para procesar actualizaciones secundarias es más eficaz que el envío de múltiples comandos al servidor remoto desde la aplicación de Visual FoxPro.

Protección contra pérdida de datos

Visual FoxPro y la mayoría de los orígenes de datos remotos, dispone de funciones de registro de transacciones como protección frente a pérdidas de datos. Para obtener más información, consulte Programar para acceso compartido.

Puede utilizar las transacciones Visual FoxPro para prototipos locales y para procesar datos locales. Utilice las transacciones de servidor para actualizar, insertar y borrar datos remotos. Para mas información, consulte Optimizar el rendimiento cliente/servidor.

Vea también

Desarrollo rápido de aplicaciones | Diseñar aplicaciones cliente /servidor | Seleccionar los métodos adecuados | Ubicar los datos en la plataforma óptima | Mejorar aplicaciones utilizando tecnología de paso a través de SQL (SPT)


Planificar aplicaciones empresariales

Muchas aplicaciones creadas con Visual FoxPro son soluciones independientes para requisitos de negocios específicos. Por ejemplo, puede crear una aplicación de Visual FoxPro para hacer un seguimiento de sus clientes, que puede incluir no sólo información de base de datos acerca de los clientes, sino también herramientas para recibir pedidos, crear facturas, etc. Puede crear todas las características necesarias para la aplicación con las herramientas disponibles en Visual FoxPro, incluidos el motor de base de datos, las herramientas visuales de diseño y las posibilidades para crear informes.

Pero también puede usar Visual FoxPro como parte de una aplicación a mayor escala que incluya dos o más herramientas de desarrollo. Usar Visual FoxPro de esta manera, denominada "desarrollo empresarial", le permite aprovechar las posibilidades únicas de cada producto. El desarrollo empresarial puede ser tan sencillo como mantener una base de datos de clientes en Visual FoxPro y crear una carta de combinación de correspondencia en Microsoft Word, o crear una aplicación compleja con bases de datos cliente/servidor, servidores de automatización, correo electrónico y más componentes.

Visual FoxPro es una herramienta ideal para crear soluciones de negocios a nivel empresarial por sus características:

  • Eficaces herramientas de desarrollo de aplicaciones fáciles de usar, incluidos un Diseñador de formularios y asistentes.
  • Motor de base de datos rápido.
  • Excelente conectividad con otros productos, incluidos otros programas para Windows como Microsoft Excel y Word y sistemas cliente/servidor como Microsoft SQL Server.
  • Control de código fuente integrado y otras herramientas de desarrollo en equipo.

Estas características le permiten desarrollar con Visual FoxPro en varias funciones de una aplicación de ámbito empresarial. Puede usar Visual FoxPro:

  • Como cliente para otras aplicaciones. En este caso, trabaja fundamentalmente con Visual FoxPro; por ejemplo, puede crear la interfaz de usuario para la aplicación en Visual FoxPro. Posteriormente, puede tener acceso a otras aplicaciones que contienen datos necesarios para la aplicación o que pueden proporcionar servicios que mejoran los ya disponibles en Visual FoxPro. También puede hacer un conversión de los datos de Visual FoxPro o moverlos a otra plataforma.
  • Como origen de datos para otras aplicaciones. Para ello, debe crear la interfaz de usuario con otro programa y, a continuación, tener acceso a los datos de Visual FoxPro cuando sea necesario.

La estrategia que elija depende de los objetivos de su aplicación y de los programas que desee utilizar.

Vea también

Visual FoxPro como aplicación cliente | Visual FoxPro como origen de datos | Programación orientada a objetos | Acceso a la API de Visual FoxPro | Crear servidores de Automatización


Planificar la seguridad

La seguridad es un aspecto de gran interés tanto para los ingenieros de sistemas como para los desarrolladores. Las aplicaciones que almacenan información relevante necesitan ser protegidas de ataques maliciosos y de competidores que atentan para robar información o la propiedad intelectual de la misma. Cuando se diseña el modelo de seguridad para una aplicación, deberá ser cauto acerca de los requerimientos que esto implique, viendo el problema desde una perspectiva de negocios y tomando en cuenta las implicaciones que el modelo de seguridad seleccionado pueda tener en el rendimiento, la escalabilidad, y la implantación de la aplicación.

Para obtener información general acerca de la planificación de la seguridad para el desarrollo de software, visite el sitio Web de Microsoft de seguridad en http://www.microsoft.com/security/.

En esta sección

Consideraciones de seguridad
Describe aspectos generales de seguridad que debería tener en cuenta cuando diseña una aplicación.
Riesgos de seguridad para desarrolladores de Visual FoxPro
Describe aspectos específicos de seguridad en Visual FoxPro y como puede evitarlos.

Secciones relacionadas

Planificar aplicaciones
Examina los beneficios de una cuidadosa planificación en el desarrollo de aplicaciones y ofrece enlaces con información acerca del diseño de las mismas, equipos de proyectos, y consideraciones internacionales.
Programar en Visual FoxPro
Proporciona enlaces con información técnica acerca de la programación orientada a objetos (POO) y del modelo de programación controlada por eventos, con el fin de maximizar su productividad como programador.

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Consideraciones de seguridad

Cuando se diseña una aplicación de servidor, al planificar las especificaciones de diseño, se deberían tener en cuenta algunos aspectos de seguridad. En la especificación funcional de la aplicación considere los siguientes aspectos de seguridad:

  • Objetivos de seguridad Defina qué necesita para protegerse.
  • Riesgos de seguridad Asuma las vulnerabilidades de su sistema. Deberá también comprender el significado de las amenazas potenciales relacionadas con su negocio.
  • Autentificación Describe el proceso de aceptar las credenciales de un usuario y validar dichas credenciales contra una autoridad designada. La identidad del usuario, o posiblemente, una aplicación o pc, se define como la seguridad principal. El cliente deberá suministrar credenciales para permitir al servidor verificar la identidad de la seguridad principal. Después que la identidad es verificada, la aplicación puede autorizar a la seguridad principal para acceder a los recursos del sistema.
  • Autorización Describe el proceso para determinar si a la identidad validada se le permite acceder a un recurso específico.
  • Asegurar la transmisión de datos Asegura que los datos no puedan ser vistos o alterados mientras estén en tránsito, usando encriptación cuando éstos circulan por la red. Deberá considerar el nivel de seguridad que sus datos necesitan cuando están en tránsito.
  • Identificación Permite que procesos del servidor se ejecuten usando las credenciales de seguridad. Cuando el servidor identifica al cliente, cualquier operación ejecutada por el servidor usa las credenciales del cliente. La identificación no permite al servidor acceder a recursos remotos en nombre del cliente y requiere delegación.
  • Delegación Habilita a los procesos del servidor para ejecutarse con las credenciales del cliente, similar a la identificación. Sin embargo, la delegación es más potente y permite al proceso del servidor realizar llamadas a otros pc's actuando como cliente.
  • Seguridad en el sistema opertativo Se refiere al establecimiento de las Listas de Control de Acceso (LCA) apropiadas y la seguridad en la red para prevenir intrusos mientras se accede a recursos seguros. Deberá configurar las LCA para los recursos apropiados, para permitir el acceso únicamente a los recursos usados por la seguridad principal.
  • Asegurar los accesos físicos Se refiere a la ubicación física del servidor en una habitación segura. No debería pasar por alto este aspecto fundamental.
  • Seguridad del código de acceso Permitir distintos grados de confianza para los códigos de seguridad, dependiendo de dónde se originan y de otros aspectos de la identidad del código. Debería tener cuidado de como crear sus propios permisos de acceso.

Vea también

Planificar la seguridad | Riesgos de seguridad para desarrolladores de Visual FoxPro

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Riesgos de seguridad para desarroladores de Visual FoxPro

Es importante comprender algunos aspectos de seguridad cuando se desarrollan y se distribuyen aplicaciones. Para mayor información acerca del desarrollo de aplicaciones seguras, visite el sitio Web de Microsoft: http://msdn.microsoft.com/security.

Los desarrolladores deben tener cuidado con los siguientes aspectos específicos de seguridad y buenas prácticas cuando desarrollen aplicaciones Visual FoxPro:

  • Validar los valores de los parámetros de entrada antes de evaluarlos.

    Cuando se pasan valores de entrada del usuario a comandos tales como expresiones SQL, deberá incluir código para comprobar que estos valores no contengan expresiones dañinas, tales como aquellos que causan violaciones de acceso.

    Evitar la utilización de cuadros de textos simples para los parámetros de entrada cuando sea posible y escoger en su lugar elementos de la interfaz de usuario, tales como cuadros de listas, grids, o controles OptionGroup, podrá faciltar el control. Si depende de la entrada con el teclado por el usuario, como parámetros de entrada, por ejemplo, para ejecutar comandos, deberá siempre analizar la entrada para buscar caracteres de paréntesis (()). Esto asegura que los usuarios no introducirán una entrada que sería interpretada por Visual FoxPro como una expresión. Debería también comprobar la entrada por ampersand (&), la cual es utilizada como un carácter de sustitución de macro.

    Precaución Tome precaución extrema cuando acepte entradas del usuario con información de tipo como parámetros y pase éstos a los siguientes elementos del lenguaje: comando RUN o ! , la función EVALUATE( ), la función EXECSCRIPT( ), el método _VFP.DoCm , el método _VFP.Eva y el carácter ampersand (&). Esta práctica está recomendada sólo para desarrolladores avanzados que utilizan rutinas de validación con parámetos de tipos estrictos para analizar los valores que pueden causar daños a la aplicación, el PC del usuario o a la red.
  • Se le proporciona menos flexibilidad al usuario cuando se incluyen valores en las instrucciones SQL SELECT.

    Cuando se utiliza un servidor COM o métodos de SQL Server que aceptan valores de entrada desde una instrucción SQL SELECT, escriba código que evite al usuario acceder a la información que debería estar segura, tales como el nombre del PC, o desarrollar acciones indeseables, tales como permitir al usuario copiar sobre las tablas y las bases de datos.

  • Configure los atributos del sistema de archivos del contenedor de base de datos para el acceso de sólo lectura.

    Si un Contenedor de base de datos (DBC) está configurado para el acceso de lectura y escritura, los usuarios podrán modificar el código para los eventos DBC, tales como el evento DBC_BeforeOpenTables, para incluir código dañino, por ejemplo, para formatear una unidad de disco duro del usuario cuando se abra una tabla en el DBC. Si el DBC necesita ser modificado como parte del mantenimiento, un administrador de la red podrá temporalmente configurar el DBC para el acceso de lectura y escritura y luego reconfigurarlo para el acceso sólo lectura cuando el mantenimiento ha finalizado.

  • Evite que los usuarios vean o modifiquen el código fuente de su aplicación encriptando su aplicación y quitando la información para depurar.

    Para proteger el código fuente y quitar la información de depuración, abra el proyecto de su aplicación en el Administrador de Proyectos. Para encriptar el código de su proyecto de su aplicación y no incluir la información para depurar, seleccione la casilla de verificación Encriptar y desactive Informar de depuración. Luego en el cuadro de diálogo Opciones para generar seleccione Volver a compilar todos los archivos y recompile su proyecto eligiendo Generar en la ventana del Administrador de Proyectos. En la sección de instalación de la aplicación incluya el comando SET DEBUG OFF.

    La clase _cryptapi localizada en la biblioteca de Foundation Class ...\Ffc\_Crypt.vcx proporciona acceso detallado a las rutinas de Crypto API de Windows con las que podrá cifrar texto, campos de datos o archvos de sus aplicaciones Visual FoxPro.

    Para obtener más información, vea Cuadro de diálogo Información de proyecto, Administrador de proyectos, Cuadro de diálogo Opciones para generar, y SET DEBUG (Comando).

  • Es recomendable que desarrolle aplicaciones que al menos utilicen la configuración de privilegios de usuarios. No es necesario para los usuarios entrar como superusuario o administrador.
  • Evite escribir en las claves de registro, HKEY_LOCAL_MACHINE y HKEY_CLASSES_ROOT. En cambio, escriba sólo en HKEY_CURRENT_USER.
  • No cree o actualice arhivos en los directorios C:\Archivos de Programas (%PROGRAMFILES%) o C:\Windows (%SYSDIR%). En cambio, debería escribir los datos del usuario en la carpeta de la aplicación del usuario. Podrá utilizar la clase _commonfolder ubicada en la biblioteca de Foundation Class ...\Ffc\_System.vcx para obtener la localización de la carpeta de la aplicación del usuario.
  • Cuando se crean servidores COM en Visual FoxPro, es recomendable que cree aplicaciones COM+ para implantarlos, de esta manera podrá forzar la seguridad basada en roles del COM+.

Vea también

Planificar la seguridad | Consideraciones de seguridad | Desarrollar aplicaciones Visual FoxPro


Planificar proyectos de desarrollo en equipo

Puede crear aplicaciones complejas rápidamente combinando las habilidades de un equipo de programadores. Sin embargo, el desarrollo en equipo requiere coordinación adicional para que funcione correctamente el esfuerzo de desarrollo. Una estrategia es usar software de control de código fuente, como Microsoft Visual SourceSafe, para administrar los archivos de un proyecto.

Los siguientes temas proporcionan estrategias que puede seguir para hacer que el desarrollo en equipo sea un éxito. Se supone que ya está familiarizado con la creación de aplicaciones de Visual FoxPro, como se ha tratado en otras secciones.

En esta sección

Conceptos acerca del desarrollo en equipo
Describe como puede crear aplicaciones más rápidamente y desarrollar aplicaciones más complejas trabajando con un equipo de desarrolladores.
Funciones de control de código fuente
Explica que Visual FoxPro proporciona varias funciones que dan soporte al desarrollo en equipo, una función importante de esto es el uso de un sistema de control de código fuente para coordinar el acceso a los archivos de un proyecto.
Administrar proyectos de Visual FoxPro bajo control de código fuente
Explica el proceso para usar software de control de código fuente en Visual FoxPro, incluyendo que tiene que colocar los proyectos bajo control de código fuente, agregar archivos a los proyectos que tienen control de código fuente y actualizar la lista de proyecto para cada proyecto.
Administrar archivos de un proyecto con control de código fuente
Describe que después de poner un proyecto de Visual FoxPro bajo control de código fuente, puede trabajar con archivos individuales o administrar el proyecto como un todo.
Desarrollar y modificar bases de datos en equipo
Sugiere que además de trabajar junto con proyectos y archivos de proyecto, el equipo debe poder compartir la información de las bases de datos.
Desarrollar bibliotecas de clase en equipo
Describe como las bibliotecas de clases (archivos .vcx) son un elemento crucial de la mayor parte de las aplicaciones de Visual FoxPro, los equipos tienen que poder coordinar sus esfuerzos de desarrollo al crearlas.

Secciones relacionadas

Desarrollar aplicaciones Visual FoxPro
Incluye información conceptual acerca de como desarrollar aplicaciones Visual FoxPro, instrucciones para crear bases de datos y la interfaz de usuario y otras tareas necesarias para crear aplicaciones Visual FoxPro.
Planificar aplicaciones
Explica como una planificación cuidadosa ahorra tiempo, esfuerzo y dinero, y muchas de las decisiones que haga durante la fase de planificación impactarán en como crear los elementos de la aplicación.
Consideraciones de diseño
Explica como la toma de decisiones de diseño impactarán en como se creará su aplicación.
Arquitectura de la aplicación
Describe como la estructura de una aplicación Visual FoxPro varía según el tipo de aplicación que decida crear.
Consideraciones de seguridad
Explica como necesita considerar los requerimientos de seguridad desde una perspectiva de negocios y las implicaciones que un modelo de seguridad elegido pueda tener sobre el rendimiento, la escalabilidad y la implantación.
Desarrollar aplicaciones internacionales
Muestra como diseñar aplicaciones Visual FoxPro para que sean tan efectivas a nivel internacional como en su propio país usando las características internacionales de Visual FoxPro.


Conceptos acerca del desarrollo en equipo

Si trabaja con un equipo de desarrolladores, puede crear aplicaciones más rápido y puede desarrollar aplicaciones más complejas. Puede combinar las habilidades de distintos programadores para crear aplicaciones que difícilmente podría crear un único programador.

Sin embargo, el desarrollo en equipo requiere un esfuerzo adicional en el proceso de desarrollo. Un correcto desarrollo en equipo depende de:

  • La posibilidad de que varios programadores puedan trabajar simultáneamente con los mismos proyectos y bases de datos.
  • La coordinación de las modificaciones que se realizan en los mismos programas, formularios u otros elementos de la aplicación, de forma que las modificaciones de un programador no sobrescriban las de otro programador.
  • La posibilidad de que los programadores puedan mejorar los elementos existentes de la aplicación (por ejemplo, programas o bibliotecas de clases) sin que afecte al trabajo de los otros programadores que usan actualmente estos elementos.

Por ejemplo, suponga que su equipo está desarrollando una aplicación compleja. Como la aplicación es grande, Visual FoxPro debe permitir a varios programadores trabajar simultáneamente en distintos componentes de la aplicación. Sin embargo, quiere estar seguro de que sólo trabaja un programador a la vez en un elemento individual, como un formulario, de forma que un programador no sobrescriba las modificaciones realizadas por otro programador.

Más aún, quiere que el programador pueda escribir código, probar y depurar un formulario sin que afecte a los otros programadores (y usuarios) que siguen trabajando con una versión anterior del formulario. Cuando el primer programador haya terminado el nuevo formulario, las mejoras se pueden integrar en la aplicación.

Puede seguir los métodos recomendados en esta sección para coordinar el trabajo de varios programadores. Por ejemplo, esta sección proporciona información acerca de cómo trabajar con proyectos y bibliotecas de clases en un entorno de varios programadores.

Vea también

Planificar proyectos de desarrollo en equipo | Funciones de control de código fuente | Administrar proyectos de Visual FoxPro bajo control de código fuente | Administrar archivos de un proyecto con control de código fuente | Desarrollar y modificar bases de datos en equipo


Funciones de control de código fuente

Visual FoxPro proporciona varias funciones compatibles con el desarrollo en equipo. Una función importante del desarrollo en equipo es el uso de un sistema de control de código fuente para coordinar quién puede tener acceso y modificar los archivos de un proyecto.

Control de código fuente es el término genérico para herramientas que administran archivos en un entorno de varios programadores. La mayor parte de las herramientas de control de código fuente funcionan como una biblioteca pública tradicional, manteniendo un depósito central de archivos (documentos, programas u otros archivos) en una ubicación accesible a todos los programadores. Además, las herramientas de control de código fuente incluyen la capacidad de seguir las modificaciones que los programadores hacen en los archivos y volver a versiones anteriores si es necesario.

En general, las herramientas de control de código fuente proporcionan algunas o todas estas características:

  • Desproteger, proteger Los programadores desprotegen un archivo transfiriendo una copia desde el depósito central a sus equipos locales antes de modificarlo. Por norma, mientras un archivo está desprotegido, otros programadores no pueden desprotegerlo ni modificarlo, pero generalmente pueden verlo sincronizando u obteniendo una copia de sólo lectura del archivo. (Si el archivo es un archivo de texto, como el código fuente de un programa, es posible que varios programadores desprotejan el mismo archivo y, a continuación, combinen las modificaciones de otros con su copia local.) Cuando los programadores hayan terminado con un archivo, pueden proteger sus modificaciones protegiendo o transfiriendo su copia local al depósito central. Como parte del proceso de protección de un archivo, la mayor parte de las herramientas de control de código fuente piden al programador que escriba observaciones sobre las modificaciones realizadas al archivo.
  • Combinación Para permitir a varios programadores trabajar simultáneamente en el mismo archivo, el software de control de código fuente permite a varios programadores desproteger el archivo a la vez. (Esto sólo se puede hacer generalmente con archivos de texto como el código fuente de un programa.) Si otro programador ha modificado el archivo, el sistema de control de código fuente puede integrar las modificaciones en su versión del archivo.
  • Control de proyectos Los programadores pueden organizar archivos en sus proyectos u otras categorías específicas de trabajo. Si es necesario, varios proyectos pueden compartir los archivos.
  • Seguimiento de modificaciones La mayor parte de los sistemas de control de código fuente hacen un seguimiento de las modificaciones realizadas en un archivo cuando se protege. Esto permite a los programadores reconstruir versiones anteriores del archivo, lo cual es útil para recuperar trabajo anterior.
  • Comprobación de diferencias El software de control de código fuente permite a los programadores comparar versiones de un archivo y revisar las diferencias entre ellos.
  • Historial Los programadores pueden examinar el historial de protección para cada archivo, incluidos los observaciones realizados por cada programador al proteger el archivo.
    Sugerencia Si el software de control de código fuente admite observaciones, aproveche esta característica. Los observaciones pueden ser de gran ayuda en el proceso de hacer un seguimiento y proporcionan un historial útil del desarrollo de la aplicación.

Para usar el control de código fuente, los usuarios deben combinar un proyecto con control de código fuente (a veces se llama "agregar un usuario" a un proyecto). Cuando los usuarios se han unido a un proyecto, pueden desproteger y proteger los archivos que pertenecen al proyecto.

Nota Tiene que activar el sistema de control de código fuente para desproteger varias veces el mismo archivo, para que varios programadores puedan trabajar simultáneamente en un proyecto. Para obtener más detalles, consulte la documentación del software de control de código fuente.

Vea también

Conceptos acerca del desarrollo en equipo | Software de control de código fuente en Visual FoxPro | Activar el control de código fuente | Administrar proyectos de Visual FoxPro bajo control de código fuente | Planificar proyectos de desarrollo en equipo


Software de control de código fuente en Visual FoxPro

Uno de los aspectos más importantes del desarrollo en equipo es la capacidad de controlar quién puede modificar archivos. Por ejemplo, si no hay control sobre los archivos y si más de un programador está modificando un programa a la vez, hay una probabilidad muy alta de que un conjunto de modificaciones sea sobrescrito o descartado, desperdiciando tiempo y esfuerzo.

Visual FoxPro ayuda a su equipo a administrar los archivos de sus proyectos permitiéndole integrar un sistema de control de código fuente en el Administrador de proyectos de Visual FoxPro. Así, puede administrar archivos de proyecto en un entorno de desarrollo en equipo y asegurarse de que los esfuerzos de desarrollo se llevan a cabo correctamente.

Integrar el control de código fuente en proyectos de Visual FoxPro

Visual FoxPro admite herramientas de control de código fuente, permitiéndole integrar directamente software de control de código fuente disponible comercialmente en sus proyectos. Puede usar muchos de los sistemas de control de código de versiones disponibles actualmente. (Póngase en contacto con el proveedor de software para averiguar si el software se puede integrar con las herramientas de desarrollo de Microsoft.) Por ejemplo, si su equipo de programadores ya usa Microsoft Visual SourceSafe, puede especificarlo como el software de control de código fuente que va a usar con Visual FoxPro.

Nota Si agrega un proyecto a Visual SourceSafe, para realizar una asignación correcta al proyecto, todos los archivos que contiene el proyecto deben estar en el directorio o ruta de acceso del proyecto.

Todo el control de código fuente en Visual FoxPro se administra a través del Administrador de proyectos. Cuando configura un proyecto en Visual FoxPro, tiene la opción de crear un proyecto de control de código fuente correspondiente, lo que se conoce como “poner el proyecto bajo control de código fuente”. Después de haber puesto un proyecto bajo control de código fuente, Visual FoxPro le ayuda a administrar los archivos del proyecto con control de código fuente. Cuando desee modificar un archivo (por ejemplo, si modifica un programa o un formulario) Visual FoxPro le pedirá que desproteja el archivo.

En Visual FoxPro, el control de código fuente se usa para administrar archivos de todos los tipos, no sólo archivos .prg, sino también archivos .scx, .frx, .lbx, .mnx y .vcx, entre otros. Aunque los archivos individuales se pueden compartir entre distintos proyectos de Visual FoxPro, todas las operaciones de control de código fuente se realizan en archivos dentro del contexto de un proyecto concreto.

Nota Visual FoxPro no le pide que coloque tablas de datos como archivos .dbf y .dbc bajo control de código fuente al crearlas, pero puede agregarlas manualmente al proyecto con control de código fuente.

Cuando trabaje en el Administrador de proyectos con un proyecto que esté bajo control de código fuente, Visual FoxPro mostrará iconos junto a los archivos que estén bajo control de código fuente para indicar su estado.

La tabla siguiente resume los iconos usados en el Administrador de proyectos para indicar el estado de control de código fuente.

Icono | Significado
 | El archivo está desprotegido para usted.
 | El archivo está desprotegido para usted y para otro o varios programadores más.
 | El archivo está desprotegido para otro programador.
 | El archivo no está desprotegido; no puede modificarlo hasta que lo haya desprotegido.
 | Se ha combinado el archivo. Después de examinar las modificaciones, puede proteger el archivo.
 | Se ha combinado el archivo y hay que resolver conflictos.
 | Visual FoxPro no puede determinar el estado de control de código fuente del archivo.

Si un archivo no está bajo control de código fuente, no aparece ningún icono asociado.

Vea también

Funciones de control de código fuente | Activar el control de código fuente | Planificar proyectos de desarrollo en equipo | Administrar proyectos de Visual FoxPro bajo control de código fuente | Conceptos acerca del desarrollo en equipo


Activar el control de código fuente

Para activar el control de código fuente, instale en primer lugar el programa de control de código fuente de acuerdo con la documentación suministrada con él. Normalmente, se instalará una versión de administrador en un servidor en el que se guarda el código fuente y ,después, se instala la versión cliente del producto en los equipos locales.

Nota Todos los programadores de un proyecto tienen que usar el mismo software de control de código fuente.

Después de instalar el software de control de código fuente, puede establecer opciones de modo que Visual FoxPro lo reconozca y especificar valores predeterminados para sus proyectos.

Para activar el control de código fuente en Visual FoxPro

  1. En el menú Herramientas, elija Opciones.
  2. En el cuadro de diálogo Opciones, elija la ficha Proyectos.
  3. En el área Opciones del control de código fuente, seleccione el nombre del programa de control de código fuente en la lista Activar el proveedor de control de código fuente.
  4. Para que Visual FoxPro le pida que agregue nuevos proyectos al control de código fuente, seleccione Agregar automáticamente nuevos proyectos al control de código fuente.

Cada vez que inicie Visual FoxPro, éste comprobará si hay un proveedor de control de código fuente. Si encuentra uno, puede colocar o administrar proyectos bajo control de código fuente.

Vea también

Software de control de código fuente en Visual FoxPro | Administrar proyectos de Visual FoxPro bajo control de código fuente | Planificar proyectos de desarrollo en equipo | Funciones de control de código fuente |


Administrar proyectos de Visual FoxPro bajo control de código fuente

Para usar software de control de código fuente en Visual FoxPro, tiene que colocar los proyectos bajo control de código fuente, agregar archivos a los proyectos que tienen control de código fuente y actualizar la lista de proyecto para cada proyecto.

Trabajar con el archivo de proyecto y el archivo de lista de proyectos

En Visual FoxPro, la información de proyecto se guarda en un conjunto de archivos de tabla y archivos memo cuyas extensiones son .pjx y .pjt. Por ejemplo, si ha creado un proyecto denominado “MyProj”, la información acerca del proyecto, que incluye la lista de archivos, su ubicación y si están compilados en el archivo de aplicación (archivo .app o .exe), se almacena en los archivos denominados Myproj.pjx y Myproj.pjt.

Al trabajar en un entorno de desarrollo en equipo, los programadores no comparten los mismos archivos de proyecto (archivos .pjx y .pjt). En lugar de ello, guardan sus propias copias locales de los archivos .pjx y .pjt.

Para coordinar las modificaciones que los programadores individuales realizan en un proyecto bajo control de código fuente, Visual FoxPro guarda una lista de archivos de proyecto (o archivo .pjm, abreviatura de "metarchivo de proyecto"). El archivo que contiene la lista de archivos de proyecto es un archivo de texto que almacena la misma información que los archivos .pjx y .pjt, como los archivos que están incluidos actualmente en el proyecto.

El software de control de código fuente guarda una lista de archivos de proyecto central almacenada con los otros archivos en el depósito central. Además, cada programador tiene una copia local de la lista de archivos de proyecto desprotegida que refleja su versión actual del proyecto.

Suponga que está trabajando en un proyecto y que va a agregar un programa nuevo (archivo .prg). Cuando agregue el nuevo archivo (y suponiendo que coloca este archivo bajo control de código fuente), Visual FoxPro actualizará la copia local del proyecto y mostrará el archivo cuando use el Administrador de proyectos en el equipo. Los otros programadores no conocen al principio la modificación, y sus copias locales del proyecto no muestran el archivo que ha agregado. Aunque no haya actualizado la lista de archivos de proyecto, puede proteger el nuevo archivo por seguridad y desprotegerlo de nuevo cuando sea necesario.

Cuando haya terminado de trabajar con el nuevo archivo, por ejemplo, cuando haya terminado de probar el nuevo programa, puede actualizar la lista de archivos de proyecto. Cuando lo haga, Visual FoxPro combina la información de la lista de archivos de proyecto local con la lista de archivos de proyecto central.

A cambio, Visual FoxPro actualiza su lista de archivos de proyecto local con las modificaciones que encuentre en la lista de archivos del proyecto central. Si otros programadores han agregado archivos al proyecto, se actualiza su lista de archivos de proyecto local, se colocan copias locales de los nuevos archivos en su equipo, Visual FoxPro vuelve a generar el proyecto (archivos .pjx y .pjt) y el Administrador de proyectos muestra los archivos agregados para que trabaje con ellos.

Administrar archivos de proyecto mediante la lista de proyectos

Nota La lista de archivos de proyecto sólo hace un seguimiento de los archivos de proyecto que están explícitamente bajo control de código fuente. Si su proyecto incluye archivos que no están bajo control de código fuente, no aparecerán en la lista de archivos de proyecto y Visual FoxPro no agregará estos archivos a los proyectos de otros programadores cuando actualicen sus propias listas de proyecto.

Vea también

Activar el control de código fuente | Colocar proyectos bajo control de código fuente | Agregar archivos a un proyecto con control de código fuente | Unirse a un proyecto existente con control de código fuente | Actualizar la lista de proyectos | Separar un proyecto del control de código fuente | Quitar archivos de un proyecto con control de código fuente | Compartir archivos entre proyectos con control de código fuente | Planificar proyectos de desarrollo en equipo


Colocar proyectos bajo control de código fuente

Tiene que especificar que un proyecto de Visual FoxPro va a estar bajo control de código fuente para poder usar el software de control de código fuente. Esto se hace agregando un proyecto al sistema de control de código fuente.

Si el software de control de código fuente está activado, puede especificar que cualquier proyecto nuevo que cree se coloque automáticamente bajo control de código fuente.

Para crear un proyecto nuevo con control de código fuente

  1. En el cuadro de diálogo Opciones, elija la ficha Proyectos y, a continuación, seleccione un proveedor de control de código fuente si todavía no lo ha hecho.
  2. Asegúrese de que Agregar automáticamente nuevos proyectos al control de código fuente esté seleccionado y, a continuación, elija Aceptar. Para que esta configuración sea la predeterminada, elija Establecer como predeterminado y, a continuación, elija Aceptar.
  3. En el menú Archivo, elija Nuevo y, a continuación, inicie un proyecto nuevo de Visual FoxPro.

    Después de haber dado un nombre al proyecto nuevo, Visual FoxPro le pedirá que cree el nuevo proyecto con control de código fuente. El nombre predeterminado para el nuevo proyecto será el mismo que el nombre del proyecto de Visual FoxPro.

Después de haber creado el nuevo proyecto con control de código fuente, Visual FoxPro termina de crear el nuevo proyecto. Antes de que otros programadores puedan usar este archivo, tiene que agregarlos al proyecto.

Si está trabajando con un proyecto existente que no está aún bajo control de código fuente, puede crear un nuevo proyecto con control de código fuente y, a continuación, colocar sus archivos bajo control de código fuente.

Para poner un proyecto existente bajo control de código fuente

  1. Abra el proyecto de Visual FoxPro en el Administrador de proyectos.
  2. En el menú Proyecto, elija Agregar proyecto al control de código fuente.

    Visual FoxPro muestra el cuadro de diálogo para el sistema de control de código fuente que le permite crear un proyecto nuevo. De forma predeterminada, el nombre del proyecto con control de código fuente es el mismo que el del proyecto de Visual FoxPro.

  3. Cree el proyecto con control de código fuente de la misma forma que lo hace normalmente con el software de control de código fuente.

Cuando agregue un proyecto existente al control de código fuente, Visual FoxPro le pedirá que agregue los archivos del proyecto al proyecto con control de código fuente.

Vea también

Agregar archivos a un proyecto con control de código fuente | Administrar proyectos de Visual FoxPro bajo control de código fuente | Actualizar la lista de proyectos | Unirse a un proyecto existente con control de código fuente | Planificar proyectos de desarrollo en equipo


Agregar archivos a un proyecto con control de código fuente

Después de poner un proyecto de Visual FoxPro bajo control de código fuente, puede agregar archivos individuales al proyecto bajo control de código fuente. Si el proyecto de Visual FoxPro ya contiene archivos cuando lo pone bajo control de código fuente, podrá agregarlos al proyecto bajo control de código fuente.

Nota Si el software de control de código fuente lo admite, Visual FoxPro le permite mantener el archivo desprotegido cuando lo agregue al proyecto con control de código fuente. Si no es así, se protege el archivo y tiene que volver a desprotegerlo para trabajar con él. Para obtener más detalles sobre cómo desproteger y proteger archivos después de agregarlos a un proyecto, consulte Administrar archivos de un proyecto con control de código fuente.

Para agregar archivos existentes a un proyecto controlado

  1. En el menú Proyecto, elija Control de código fuente y, a continuación elija Agregar archivos al control de código fuente.
  2. En el cuadro de diálogo Agregar archivos al control de código fuente, seleccione los archivos que desea agregar.
    Nota Mantener desprotegido y Comentario sólo aparecen si el software de control de código fuente admite estas opciones.
  3. Elija Aceptar.

    Visual FoxPro genera los archivos de control necesarios para el software de control de código fuente y, a continuación, agrega los archivos al proyecto. Si ha seleccionado muchos archivos, este proceso puede durar cierto tiempo.

Puede configurarlo de forma que cuando agregue un archivo a un proyecto, Visual FoxPro le solicite que lo ponga bajo control de código fuente.

Para especificar que Visual FoxPro le pida colocar nuevos archivos bajo control de código fuente

  • En la ficha Proyectos del cuadro de diálogo Opciones, asegúrese de que Agregar automáticamente nuevos proyectos al control de código fuente esté seleccionado y, a continuación, elija Aceptar.

    Para que esta opción sea la predeterminada, elija Establecer como predeterminado y, a continuación, elija Aceptar.

Tras agregar archivos a un proyecto, tiene que actualizar la lista de proyectos para que otros programadores puedan trabajar con los nuevos archivos.

Vea también

Actualizar la lista de proyectos | Planificar proyectos de desarrollo en equipo | Administrar proyectos de Visual FoxPro bajo control de código fuente | Separar un proyecto del control de código fuente | Unirse a un proyecto existente con control de código fuente


Unirse a un proyecto existente con control de código fuente

Si es un programador nuevo de un proyecto que ya está bajo control de código fuente, debe unirse al proyecto para poder desproteger y proteger archivos. Al unirse a un proyecto, Visual FoxPro crea un archivo lista de proyectos local y genera un archivo de proyecto actual (archivo .pjx) para usted.

Para unirse a un proyecto existente

  1. En el menú Archivo, elija Unirse a proyecto de control de código fuente.
  2. En el cuadro de diálogo Abrir proyecto, seleccione el servidor y el directorio que contienen el archivo de proyecto de Visual FoxPro al que desea unirse.
  3. Establezca el directorio de trabajo en su equipo local; este directorio especificará dónde colocará el sistema de control de código fuente los archivos cuando los proteja y dónde los buscará cuando los vuelva a proteger. Por ejemplo, si usa Visual SourceSafe como proveedor de control de código fuente, elija Examinar en el área Directorio y seleccione un directorio existente, o escriba el nombre de un directorio nuevo.
    Sugerencia Todos los programadores de un proyecto deben usar la misma estructura de directorios para los archivos de un proyecto, aunque los nombres de los subdirectorios individuales pueden variar.

Vea también

Planificar proyectos de desarrollo en equipo | Administrar proyectos de Visual FoxPro bajo control de código fuente | Separar un proyecto del control de código fuente | Actualizar la lista de proyectos


Actualizar la lista de proyectos

Aunque los archivos se hayan agregado al proyecto con control de código fuente, otros programadores no podrán trabajar con ellos. Los programadores podrán usar manualmente su sistema de control de código fuente para desproteger y proteger archivos si lo necesitan, pero los archivos agregados no se mostrarán en el Administrador de proyectos para ningún programador excepto para aquel que haya agregado los archivos. Para poner los archivos a la disposición de otros programadores, actualice la lista de proyectos.

Al actualizarse la lista de proyectos, Visual FoxPro:

  • Generará una nueva lista de archivo de proyecto local (archivo .pjm).
  • Protegerá la nueva lista de archivo de proyecto (con la opción establecida para conservar el archivo desprotegido).
  • Combinará las listas de archivos de proyecto local y central si hay diferencias. Si ocurre un conflicto de combinación, Visual FoxPro mostrará un cuadro de diálogo para ayudarle a resolver los conflictos de combinación.
  • Volverá a generar el archivo de proyecto local (.pjx) basado en la lista de archivos de proyecto combinada.
  • Obtendrá copias locales de archivos agregados al proyecto por otros programadores.
  • Le indicará que obtenga las versiones más recientes de los archivos de proyecto.
  • Actualizará la presentación en el Administrador de proyectos para reflejar los cambios.

Para actualizar la lista de proyectos

  • En el menú Proyecto, elija Control de código fuente y, a continuación, elija Actualizar la lista de proyectos.

Como parte de los procedimientos de actualización, Visual FoxPro le pedirá que obtenga las versiones más recientes de los archivos. Si ya tiene un archivo desprotegido, como regla general no debe obtener la versión más reciente, porque su versión es con seguridad más actual que una de la red.

Si va a obtener la versión más reciente de un archivo de texto (como un programa), el software de control de código fuente puede intentar combinar las últimas modificaciones con su versión. Para obtener más información acerca de cómo combinar archivos de texto, consulte Proteger archivos.

Cuando haya terminado, los otros programadores también deben actualizar su lista de proyectos (con el mismo procedimiento) para poder trabajar con los archivos que usted haya agregado.

Vea también

Planificar proyectos de desarrollo en equipo | Administrar proyectos de Visual FoxPro bajo control de código fuente | Separar un proyecto del control de código fuente | Unirse a un proyecto existente con control de código fuente


Separar un proyecto del control de código fuente

Si ya no quiere controlar los archivos de un proyecto, puede separar el proyecto del control de código fuente. Cuando lo haga, los archivos permanecerán en el proyecto con control de código fuente de forma que otros programadores puedan seguir usándolos y para que usted pueda examinar su historial o usarlos en otros proyectos.

Si tiene archivos de proyecto en su equipo etiquetados como de sólo lectura, es decir, si tiene copias de los archivos pero éstos no están desprotegidos, puede quitarles el atributo de sólo lectura cuando se separe el proyecto del control de código fuente.

Nota Cuando se separa un proyecto del control de código fuente, rompe el vínculo entre sus archivos de proyecto locales y el proyecto con control de código fuente, y sus archivos locales se convierten en archivos con permiso de lectura-escritura. Asegúrese de aplicar procedimientos de control manual de versiones después de separar un proyecto o correrá el riesgo inherente al trabajo con archivos que no están bajo control de código fuente.

Para separar un proyecto del control de código fuente

  1. Proteja todos los archivos bajo control de código fuente.
  2. En el menú Proyecto, elija Separar el proyecto del control de código.

Vea también

Actualizar la lista de proyectos | Quitar archivos de un proyecto con control de código fuente | Planificar proyectos de desarrollo en equipo | Administrar proyectos de Visual FoxPro bajo control de código fuente


Quitar archivos de un proyecto con control de código fuente

Puede quitar archivos individuales del control de código fuente si ya no quiere que formen parte de su proyecto con control de código fuente. Podría hacer esto, por ejemplo, si un programa o formulario se convierte en innecesario y ya no forma parte del proyecto.

Para quitar un archivo del control de código fuente

  1. En el Administrador de proyectos, seleccione el archivo que desea quitar.
  2. En el menú Proyecto, elija Control de código fuente y, a continuación, elija Quitar archivos del control de código fuente.
  3. En el cuadro de diálogo Quitar archivos del control de código fuente, seleccione los archivos que desea quitar y, a continuación, haga clic en Aceptar.

Si quita un archivo de un proyecto de Visual FoxPro que está bajo control de código fuente, Visual FoxPro le pedirá si sólo desea quitar el archivo del proyecto o si desea eliminarlo del disco. Una opción del cuadro de diálogo Opciones determina si Visual FoxPro también le pide que quite el archivo del proyecto con control de código fuente.

  • Si Quitar archivos del control de código fuente al quitarlos del proyecto está activada, Visual FoxPro también le pedirá que quite el archivo del proyecto con control de código fuente.
  • Si Quitar archivos del control de código fuente al quitarlos del proyecto no está activada, no se le pide lo anterior y el archivo se deja bajo control de código fuente.

Después de quitar un archivo del control de código fuente, es posible que aún existan copias del mismo en los equipos de otros programadores. Si es así, el archivo se tratará como un archivo local sólo para estos programadores.

Vea también

Separar un proyecto del control de código fuente | Compartir archivos entre proyectos con control de código fuente | Planificar proyectos de desarrollo en equipo | Administrar proyectos de Visual FoxPro bajo control de código fuente


Compartir archivos entre proyectos con control de código fuente

Puede configurar un archivo de forma que forme parte de dos o más proyectos con control de código fuente a la vez. Esto es útil si usa archivos comunes, como programas estándar, bibliotecas o cuadros de diálogo en más de un proyecto. Cuando comparte archivos entre proyectos, las modificaciones que proteja en un archivo se reflejan en todos los proyectos que compartan el archivo.

El método específico para compartir archivos entre proyectos con control de código fuente depende del software de control de código fuente. Si su proveedor de control de código fuente no admite las opciones para compartir, los comandos para compartir archivos no estarán disponibles en el menú.

El primer paso del procedimiento siguiente se aplica a todos los sistemas de control de código fuente que admitan la posibilidad de compartir archivos. Los pasos sucesivos pueden variar, en función de su software de control de código fuente.

Para compartir archivos entre proyectos controlados

  1. En el menú Proyecto, elija Control de código fuente y, a continuación, Compartir archivos.
  2. En el cuadro de diálogo que aparece, indique qué archivos desea compartir con el proyecto actual y a qué proyecto pertenecen actualmente.

    Las opciones específicas disponibles en este comando de menú dependen del sistema de control de código fuente. Para obtener detalles, elija Ayuda en el cuadro de diálogo Compartir o consulte la documentación de su sistema de control de código fuente.

    Sugerencia En Microsoft Visual SourceSafe puede ver a qué proyectos pertenece un archivo mediante el comando Propiedades del proyecto y al elegir la ficha Vínculos. Si agrega un proyecto a Visual SourceSafe, para realizar una asignación correcta al proyecto, todos los archivos que contiene el proyecto deben estar en el directorio o ruta de acceso del proyecto.

Vea también

Quitar archivos de un proyecto con control de código fuente | Administrar archivos de un proyecto con control de código fuente | Planificar proyectos de desarrollo en equipo | Administrar proyectos de Visual FoxPro bajo control de código fuente


Administrar archivos de un proyecto con control de código fuente

Después de poner un proyecto de Visual FoxPro bajo control de código fuente, puede trabajar con archivos individuales o administrar el proyecto como un todo.

Trabajar con componentes formados por varios archivos

Algunos componentes de proyecto de Visual FoxPro están formados en realidad por varios archivos: un archivo principal y uno o más archivos implícitos. Por ejemplo, cuando cree un formulario, Visual FoxPro creará un archivo .scx (el archivo principal) y un archivo .sct (el archivo implícito). Los siguientes componentes tienen varios archivos:

Componente | Tipo de archivo principal | Tipos de archivos implícitos
Formulario | .scx | .sct
Informe | .frx | .frt
Etiqueta | .lbx | .lbt
Biblioteca de clases | .vcx | .vct
Menú | .mnx | .mnt
Tabla | .dbf | .fpt, .cdx, .idx
Base de datos | .dbc | .dct, .dcx

Cuando un programador desprotege un archivo de componente, como un formulario, Visual FoxPro también administra los correspondientes archivos implícitos. Asimismo, cuando se vuelve a proteger un archivo o se agrega un archivo nuevo, Visual FoxPro administra los archivos implícitos automáticamente.

Nota Si genera y compila un menú, también crea archivos .mpr y .mpx locales. Estos no están inicialmente bajo control de código fuente, pero puede agregarlos como archivos a su proyecto y, a continuación, ponerlos bajo control de código fuente igual que lo haría con otros archivos.

Vea también

Compartir archivos entre proyectos con control de código fuente | Desproteger archivos | Proteger archivos | Descartar cambios | Obtener las versiones más recientes de los archivos | Comparar archivos o proyectos | Comprobar diferencias en formularios, informes y otros archivos de tabla | Planificar proyectos de desarrollo en equipo | Administrar proyectos de Visual FoxPro bajo control de código fuente


Desproteger archivos

Cuando trabaja en un proyecto con control de código fuente, Visual FoxPro puede pedirle que desproteja archivos cuando los modifique abriendo el editor adecuado. Por ejemplo, si selecciona un formulario y elige Modificar para abrir el Diseñador de formularios, Visual FoxPro puede pedirle que desproteja los archivos del formulario. (Si no desprotege los archivos, el formulario se muestra en el Diseñador de formularios, pero es de sólo lectura.)

Sin embargo, también puede desproteger los archivos manualmente, lo cual es útil si desea tener acceso exclusivo al archivo, pero de momento no quiere abrir el editor para el archivo. Podría hacer esto, por ejemplo, si desea trabajar con un archivo fuera de la oficina.

Para especificar que Visual FoxPro le pida que desproteja archivos que se están modificando

  • En la ficha Proyectos del cuadro de diálogo Opciones, asegúrese de que la opción Desproteger los archivos al modificarlos está activada y, a continuación, elija Aceptar.

    Para que esta opción sea la predeterminada, elija Establecer como predeterminado y, a continuación, elija Aceptar.

Para desproteger archivos manualmente

  1. En el Administrador de proyectos, seleccione el archivo con el que desea trabajar.
  2. En el menú Proyecto, elija Control de código fuente y, a continuación, elija Desproteger.
  3. En el cuadro de diálogo Desproteger archivos, seleccione los archivos con los que desea trabajar y, a continuación, haga clic en Aceptar.

Vea también

Administrar archivos de un proyecto con control de código fuente | Proteger archivos | Planificar proyectos de desarrollo en equipo | Opciones


Proteger archivos

Siempre tiene que proteger los archivos manualmente. Visual FoxPro no protege automáticamente un archivo; por ejemplo, no protege un formulario cuando cierra el Diseñador de formularios. En lugar de ello, deja el archivo desprotegido de forma que pueda seguir modificándolo, llevárselo fuera de la oficina o trabajar con él de otra forma.

El resultado exacto del proceso de protección depende del archivo que está protegiendo y del software de control de código fuente. Para formularios, menús, etiquetas, bibliotecas de clases y otros tipos de archivos, el archivo se trata como un archivo binario y el software de control de código fuente convierte su nueva versión del archivo en la actual para que la desprotejan los otros programadores.

Sugerencia No olvide proteger siempre los archivos cuando termine de modificarlos. Si los deja desprotegidos durante largos períodos de tiempo, puede impedir que otros programadores trabajen con ellos e impedirá que se haga una copia de seguridad de la última versión del archivo cuando se realice la copia de seguridad a través de la red.

Para proteger un archivo

  1. En el Administrador de proyectos, seleccione el archivo con el que desea trabajar.
  2. En el menú Proyecto, elija Control de código fuente y, a continuación, elija Proteger.
  3. Escriba un comentario que describa las modificaciones que ha realizado.
  4. En el cuadro de diálogo Proteger archivos, seleccione el archivo y, a continuación, elija Aceptar.

Proteger archivos de texto

Cuando proteja un archivo de texto, como un archivo .prg, y si hay varias versiones del archivo desprotegidas, el software de control de código fuente no se limita a sobrescribir la versión central. En lugar de ello, comprueba si se han realizado modificaciones al archivo desde la última vez que lo desprotegió. Si es así, intenta combinar las modificaciones con su archivo. Para ello, agrega, elimina y modifica líneas de código en su copia del archivo.

Cuando haya terminado la combinación, el software de control de código fuente también podría darle la oportunidad de proteger el archivo. No proteja su archivo inmediatamente. Por el contrario, compruebe su aplicación mediante la nueva versión del archivo que incorpora sus cambios y los de los otros programadores. Sólo cuando esté convencido del funcionamiento de la aplicación deberá proteger el archivo. Si otros programadores han realizado modificaciones posteriores en el mismo archivo, es posible que tenga que combinar, probar y protegerlo de nuevo.

En algunos casos, el software de control de código fuente puede informar de un conflicto de combinación, que indica que no puede resolver sus modificaciones y las realizadas por otros programadores. Esto puede ocurrir, por ejemplo, si usted y otro programador han actualizado las mismas líneas del mismo programa. Si el software de control de código fuente no puede realizar la combinación correctamente, crea una versión del archivo que contiene el texto original junto con sus modificaciones, marca los conflictos y escribe el archivo en su equipo. (La forma exacta en que se marcan los conflictos depende del software de control de código fuente que use). El archivo aparece entonces en el Administrador de proyectos con un icono de conflicto de combinación:

Para resolver el conflicto de combinación, tiene que volver a modificar el archivo, implementar sus cambios y quitar las marcas de conflicto de combinación. Cuando haya terminado las modificaciones, Visual FoxPro le pedirá que confirme que ha resuelto todos los conflictos. Entonces el archivo se marcará con el icono de combinación:

Pruebe su aplicación para asegurarse de que las modificaciones funcionan correctamente. Entonces podrá intentar proteger el archivo de nuevo. Si no ocurren más conflictos de combinación, su archivo se convierte en la versión actual.

Vea también

Desproteger archivos | Descartar cambios | Planificar proyectos de desarrollo en equipo | Administrar archivos de un proyecto con control de código fuente


Descartar cambios

Si ha desprotegido un archivo, pero decide descartar las modificaciones realizadas, puede deshacer la desprotección. Esto hace que se vuelva a proteger el archivo (es decir, otros usuarios pueden desproteger el archivo), pero no actualiza sus modificaciones. Por ejemplo, si ha desprotegido por error un archivo en lugar de simplemente obtener la última versión, deshaga la desprotección en lugar de volver a proteger el archivo. Esto impide que el sistema de control de código fuente tenga que crear otra versión del archivo, ahorrando tiempo y espacio.

Sugerencia Si quiere ver un archivo pero no necesita desprotegerlo, puede obtener su última versión.

Para deshacer una desprotección

  1. En el Administrador de proyectos, seleccione el archivo con el que desea trabajar.
  2. En el menú Proyecto, elija Control de código fuente y, a continuación, elija Deshacer desproteger.
  3. En el cuadro de diálogo Deshacer desproteger archivos, asegúrese de que el archivo que desea está seleccionado y, a continuación, haga clic en Aceptar.

Vea también

Proteger archivos | Obtener las versiones más recientes de los archivos | Planificar proyectos de desarrollo en equipo | Administrar archivos de un proyecto con control de código fuente


Obtener las versiones más recientes de los archivos

Si desea ver la versión más reciente de un archivo, puede desprotegerlo. Sin embargo, si el archivo ya está desprotegido o si sólo desea ver el archivo (no modificarlo), puede obtener la última versión de un archivo. Cuando lo haga, Visual FoxPro copia la versión protegida más actual de un archivo al equipo, pero lo deja con permiso de sólo lectura. Puede obtener la última versión de un archivo aunque actualmente está desprotegido.

Si el archivo que obtiene es un archivo de texto, el software de control de código fuente combinará el más reciente con su versión en lugar de simplemente sobrescribirla.

Nota Para combinar archivos al obtener la última versión, es posible que tenga que activar esto como opción en el software de control de código fuente. Para obtener detalles, consulte la documentación de su software de control de código fuente.

Para obtener la versión más reciente de un archivo

  1. En el Administrador de proyectos, seleccione el archivo del que desea la versión más reciente.
  2. En el menú Proyecto, elija Control de código fuente y, a continuación, elija Obtener la última versión. Si el archivo está actualmente desprotegido, se le pide que reemplace o combine su versión desprotegida con la versión actual del proyecto con control de código fuente.
    Nota Si ya tiene desprotegido el archivo, Visual FoxPro le solicita si desea sobrescribirlo. Si ha realizado modificaciones en el archivo desde la última vez que lo desprotegió, elija No cuando se le pregunte si desea reemplazar el archivo.

Vea también

Descartar cambios | Comparar archivos o proyectos | Planificar proyectos de desarrollo en equipo | Administrar archivos de un proyecto con control de código fuente


Comparar archivos o proyectos

Cuando trabaja con archivos y con un proyecto, es posible que tenga que comparar la copia local actual de su directorio de trabajo con la copia maestra actual del proyecto con control de código fuente. Esto puede ayudarle a determinar si otro usuario ha modificado un archivo o puede ayudarle a precisar dónde se han realizado las modificaciones desde que desprotegió el archivo.

La mayor parte de los sistemas de control de código fuente sólo pueden comparar y mostrar las diferencias entre archivos si están en formato de texto. Cuando Visual FoxPro compara formularios, informes, etiquetas y bibliotecas de clases, usa las representaciones de texto de estos archivos.

Nota Si su proveedor de control de código fuente no admite las opciones de comparación de archivos, no estarán disponibles en el menú.

Para ver diferencias entre proyectos

  • En el menú Proyecto, elija Control de código fuente y, a continuación, elija Mostrar diferencias entre proyectos.

    El software de control de código fuente produce el informe resultante, de forma que la información específica proporcionada puede variar. Sin embargo, en general, el sistema de control de código fuente mostrará una ventana con dos paneles y resaltará o marcará las diferencias entre las copias local y maestra del archivo.

Para ver diferencias entre archivos o la lista de proyectos

  1. Si está viendo diferencias para un único archivo, seleccione en el Administrador de proyectos el archivo para el que desea ver las diferencias.
  2. Para un único archivo, elija Control de código fuente en el menú Proyecto y, a continuación, elija Mostrar diferencias. Para la lista de proyectos, elija Control de código fuente en el menú Proyecto y, a continuación, elija Mostrar las diferencias de la lista de proyectos.

    El software de control de código fuente produce el informe resultante, de forma que la información específica proporcionada puede variar. En general, sin embargo, el sistema de control de código fuente mostrará las dos versiones una junto a la otra, y resaltará o marcará las líneas nuevas, eliminadas y cambiadas.

Vea también

Obtener las versiones más recientes de los archivos | Comprobar diferencias en formularios, informes y otros archivos de tabla | Planificar proyectos de desarrollo en equipo | Administrar archivos de un proyecto con control de código fuente


Comprobar diferencias en formularios, informes y otros archivos de tabla

En Visual FoxPro, el software de control de código fuente sólo trata como archivos de texto algunos tipos de archivo. Entre estos están archivos de código fuente de programa (.prg) y la lista de archivos del proyecto (archivo .pjm). Los formularios, informes y otros tipos de archivos se almacenan realmente como tablas de información acerca de sus componentes. Por ejemplo, un archivo .scx de un formulario es una tabla de los controles del formulario, junto con información acerca del propio formulario. Los archivos de tipo tabla se usan para almacenar información sobre formulario (archivos .scx), informes (archivos .frx), menús (archivos .mnx), etiquetas (archivos .lbx) y bibliotecas de clases (archivos .vcx).

Como estos archivos se almacenan como tablas de Visual FoxPro, los sistemas de control de código fuente no pueden tratarlos como archivos de texto (el sistema de control de código fuente los trata como archivos "binarios"). Como resultado, las herramientas para ver diferencias entre versiones de estos archivos no pueden precisar las diferencias, ni se puede ver un historial de las modificaciones.

Para permitirle usar el control de código fuente para ver diferencias en formularios, informes y archivos similares, Visual FoxPro crea representaciones de los mismos. Entonces, cuando coloque uno de estos archivos bajo control de código fuente, Visual FoxPro creará una versión de texto del archivo, que mantendrá automáticamente mientras usted realiza modificaciones.

Representación de texto de un archivo de Visual FoxPro

Para admitir la posibilidad de generar representaciones de texto de archivos de tipo tabla, Visual FoxPro incluye el programa de utilidad Scctext.prg, o se puede usar un programa diferente obtenido de otra fuente o escrito por usted mismo.

Para especificar una utilidad de conversión de texto

  1. En el cuadro de diálogo Opciones, elija el archivo Proyectos.
  2. En el cuadro Generación de texto, escriba el nombre del programa de conversión.
  3. Elija Establecer como predeterminado y, a continuación, elija Aceptar.

Visual FoxPro llama automáticamente al programa de conversión de texto siempre que agregue un formulario, un informe, un menú, una etiqueta o un archivo de clase visual a un proyecto con control de código fuente. La utilidad genera un archivo de texto que tiene el mismo nombre que el archivo principal, pero usa "A" como letra de la extensión. Por ejemplo, para un formulario denominado Myform.scx, la utilidad genera un archivo de texto denominado Myform.sca. Cuando proteja el formulario (u otro archivo) después de modificarlo, el software de control de código fuente crea automáticamente y protege el archivo de texto.

Si especifica una utilidad de conversión de texto cuando ya tenga formularios, informes y archivos similares en su proyecto con control de código fuente, tiene que quitarlos temporalmente del proyecto y, a continuación, volver a agregarlos con la generación de texto activada.

Para generar representaciones de texto para archivos existentes en un proyecto

  1. Haga una copia de seguridad de todos los archivos que se verán afectados: formularios, informes, menús, etiquetas y bibliotecas de clases.
  2. Compruebe que los archivos no estén ya desprotegidos.
  3. En el menú Proyecto, elija Control de código fuente y, a continuación, elija Quitar archivos del control de código fuente.
  4. Seleccione los archivos que desea quitar del proyecto y, a continuación, elija Aceptar.
  5. Active generación de texto, siguiendo los pasos descritos anteriormente.
  6. En el menú Proyecto, elija Control de código fuente y, a continuación, elija Agregar archivos al control de código fuente.
  7. Seleccione los archivos que desee agregar y, a continuación, elija Aceptar.

Al poner cada archivo bajo control de código fuente, Visual FoxPro también creará la correspondiente representación de texto para el archivo.

Vea también

Comparar archivos o proyectos | Mostrar información de archivos y proyectos | Planificar proyectos de desarrollo en equipo | Administrar archivos de un proyecto con control de código fuente


Mostrar información de archivos y proyectos

Puede mostrar información sobre archivos individuales y sobre el proyecto como un todo. Por ejemplo, puede mostrar el historial de desprotecciones para un archivo individual o para el archivo de lista de proyectos. Generalmente, la información disponible incluye:

  • El número de versión, que indica cuántas veces se ha protegido una nueva versión del archivo o de la lista de proyectos.
  • Quién ha protegido el archivo o archivo de proyecto cada vez.
  • La fecha y la hora en que se protegió.
  • Los observaciones que el programador agregó al proteger el archivo o la lista de proyectos.

Para ver el historial de desprotecciones de un archivo o una lista de proyectos

  1. Si está viendo el historial de un único archivo, seleccione en el Administrador de proyectos el archivo para el que desea ver el historial.
  2. Para un archivo individual, elija Control de código fuente en el menú Proyecto y, a continuación, elija Mostrar historial. Para la lista de proyectos, elija Control de código fuente en el menú Proyecto y, a continuación, elija Mostrar el historial de la lista de proyectos.

    Las opciones específicas disponibles en este comando de menú dependen del sistema de control de código fuente. Para obtener detalles, elija Ayuda en el cuadro de diálogo mostrado o consulte la documentación de su sistema de control de código fuente.

También puede ver la información acerca de un archivo determinado o del proyecto que mantiene el sistema de control de código fuente. Normalmente incluye información sobre el estado de desprotección del archivo o de la lista de proyectos, si el archivo es un archivo de texto o un archivo binario (lo cual determina si puede combinar sus modificaciones con el archivo almacenado centralmente), etc.

Para ver información de control de código fuente para un archivo o la lista de proyectos

  1. Si está viendo el historial de un único archivo, seleccione en el Administrador de proyectos el archivo para el que desea ver el historial.
  2. Para un archivo individual, elija Control de código fuente en el menú Proyecto y, a continuación, elija Propiedades del control de código fuente. Para la lista de proyectos, elija Control de código fuente en el menú Proyecto y, a continuación, elija Propiedades del proyecto.

    Las opciones específicas disponibles en este comando de menú dependen del sistema de control de código fuente. Para obtener detalles, elija Ayuda en el cuadro de diálogo mostrado o consulte la documentación de su sistema de control de código fuente.

Vea también

Comprobar diferencias en formularios, informes y otros archivos de tabla | Desarrollar y modificar bases de datos en equipo | Planificar proyectos de desarrollo en equipo | Administrar archivos de un proyecto con control de código fuente


Desarrollar y modificar bases de datos en equipo

Además de trabajar junto con proyectos y archivos de proyecto, el equipo debe poder compartir la información de las bases de datos. Trabajar con bases de datos en equipo supone no sólo tener en cuenta los temas habituales de control de simultaneidad para datos de tablas, sino también la necesidad de compartir información de control de bases de datos.

Para que varios programadores trabajen simultáneamente con una base de datos, tienen que poder compartir el archivo de la base de datos (.dbc). En Visual FoxPro, el archivo .dbc se puede compartir entre programadores como tabla de datos normal. El archivo .dbc debe almacenarse centralmente con las tablas que forman la base de datos. Los programadores no deben guardar copias locales de un archivo .dbc porque las modificaciones que realicen a la base de datos no se reflejarán en las versiones del archivo de los otros programadores.

Si tiene que modificar el archivo .dbc, tenga en cuenta las siguientes restricciones:

  • Los programadores no pueden modificar simultáneamente el mismo elemento de base de datos (como una estructura de tabla, una vista o una conexión). Cuando el programador modifica un elemento de base de datos, Visual FoxPro bloquea su entrada en el archivo .dbc; otros usuarios pueden leer la entrada (es decir, pueden ejecutar un comando USE), pero no pueden modificarla (MODIFY STRUCTURE).
  • Si se está usando un elemento de base de datos, no puede modificar su estructura. Por ejemplo, si un programador tiene una tabla abierta, los otros programadores no pueden modificar su estructura.
  • Si llama a la función DBSETPROP( ) para modificar las propiedades de una base de datos, la función coloca un bloqueo de escritura en el objeto que se está actualizando. Si hay un conflicto de bloqueo, DBSETPROP( ) sigue las reglas establecidas en SET REPROCESS.

Trabajar con vistas y conexiones

Las vistas y las conexiones funcionan de forma diferente que las tablas. Cuando define por primera vez la vista, Visual FoxPro usa las tablas de una base de datos, pero no las bloquea. Sin embargo, como las tablas están en uso, los otros programadores no pueden modificar sus estructuras.

Desde que guarda por primera vez una nueva definición de vista o de conexión, Visual FoxPro la bloquea exclusivamente hasta que cierre el Diseñador de vistas o de conexiones. En otras palabras, mientras tenga la vista o conexión abierta en un diseñador, estará bloqueada de forma exclusiva. Mientras la vista esté bloqueada, nadie podrá modificarla.

Cuando usa una vista, su estructura se almacena en caché. De este modo se garantiza que si la vista se modifica mientras la utiliza (por ejemplo, si llama a REFRESH( ) o REQUERY( )) su formulario o informe seguirá ejecutándose correctamente.

Vea también

Mostrar información de archivos y proyectos | Desarrollar bibliotecas de clase en equipo | Planificar proyectos de desarrollo en equipo | Administrar archivos de un proyecto con control de código fuente


Desarrollar bibliotecas de clase en equipos

Como las bibliotecas de clases (archivos .vcx) son un elemento crucial de la mayor parte de las aplicaciones de Visual FoxPro, los equipos tienen que poder coordinar sus esfuerzos de desarrollo al crearlas. Trabajar con bibliotecas de clases en equipo incluye muchos de los mismos temas de coordinación inherentes a cualquier conjunto de componentes de aplicación, pero agrega algunos temas exclusivos de las clases:

  • Las modificaciones realizadas en las clases se propagan no sólo a las aplicaciones que usan las clases, sino a todas las subclases que se deriven de ellas.
  • Se suelen almacenar varias clases en un único archivo de biblioteca, la unidad mínima que puede administrar un sistema de control de código fuente.

Como ocurre con formularios y programas complejos, es una buena práctica aislar el desarrollo en una biblioteca de clases, de forma que un programador pueda realizar modificaciones en la biblioteca sin que esto afecte a los otros programadores. De forma ideal, el equipo de programadores puede trabajar con una biblioteca de clases mientras la está mejorando otro programador, sin tener que preocuparse de si las modificaciones realizadas a la biblioteca afectarán a la aplicación.

Cuando se usa una clase, Visual FoxPro la almacena en la caché del equipo del usuario, aunque se haya liberado un formulario que utiliza la clase. Debe liberar explícitamente la clase para que Visual FoxPro reconozca que ya no se está utilizando. Si ha usado una clase en la sesión actual (y por lo tanto está almacenada en caché), pero desea cargar una versión nueva de la clase, asegúrese de liberar la clase para obligar a Visual FoxPro a volver a cargarla de la biblioteca modificada.

Aplicar el control de código fuente a bibliotecas de clases

Al aplicar control de código fuente a una biblioteca de clases, sólo un programador puede desproteger la biblioteca cada vez. La biblioteca pasa a ser de sólo lectura para los otros programadores. Como regla general, esto no interfiere con el desarrollo de la aplicación, porque los programadores pueden usar una biblioteca y crear subclases aunque la biblioteca sea de sólo lectura. Mientras los programadores de la aplicación trabajen con la versión de sólo lectura de la biblioteca, el programador de la biblioteca de clases podrá modificar todas las clases de la biblioteca.

Si usa esta aproximación, el programador que está actualizando la biblioteca no debería proteger el archivo hasta que haya terminado y se haya probado. Si no es así, otros programadores obtendrán la versión incompleta del archivo cuando actualicen sus listas de archivos de proyecto u obtengan las últimas versiones de los archivos.

Si la biblioteca es muy compleja, también puede considerar la posibilidad de dividirla en bibliotecas más pequeñas para el desarrollo. Otra ventaja de este enfoque es que las bibliotecas pequeñas se cargan más rápido. Sin embargo, esto significa que distintas clases podrían terminarse y estar disponibles en plazos diferentes.

Como cada aproximación tiene sus ventajas, debe examinar los requisitos de su equipo de programadores y elegir la estrategia que mejor se ajuste a su método de trabajo.

Vea también

Desarrollar y modificar bases de datos en equipo | Planificar proyectos de desarrollo en equipo | Administrar archivos de un proyecto con control de código fuente | Mostrar información de archivos y proyectos


Desarrollar aplicaciones internacionales

Para entrar en el mercado mundial, debe diseñar las aplicaciones de Visual FoxPro de modo que sean tan efectivas a nivel internacional como en su propio país. En esta sección se describe el uso de las características internacionales de Visual FoxPro para generar aplicaciones para las configuraciones regionales seleccionadas.

En esta sección

Preparar una aplicación internacional
Para diseñar una aplicación internacional suelen darse estos tres pasos: crear datos, escribir código y diseñar una interfaz de usuario.
Diseñar la interfaz
Puesto que el texto tiende a aumentar cuando se traduce una aplicación, es importante prestar atención al diseñar los componentes de la interfaz de usuario.
Escribir datos internacionales
Un aspecto importante de la programación de aplicaciones internacionales es comprender cómo escribir datos en la aplicación.

Secciones relacionadas

Desarrollar aplicaciones Visual FoxPro
Incluye información conceptual acerca de cómo desarrollar aplicaciones Visual FoxPro, instrucciones para crear bases de datos y la interfaz de usuario, así como otras tareas necesarias para crear aplicaciones Visual FoxPro.
Consideraciones de diseño
Discute cómo las decisiones de diseño que tome, impactarán en la aplicación que cree.
Arquitectura de la aplicación
Describe cómo varía la arquitectura de una aplicación Visual FoxPro con el tipo de aplicaciones que decida crear.
Consideraciones de seguridad
Muestra cómo debe ser consciente de los requisitos de seguridad desde las perspectiva de negocios y las implicaciones que la elección del modelo de seguridad puede tener sobre el rendimiento, escalabilidad y distribución.
Planificar proyectos de desarrollo en equipo
Discute cómo el uso un programa de control de fuentes, como Microsoft Visual SourceSafe, para administrar los archivos en un proyecto, hace posible crear aplicaciones complejas rápidamente combinando las habilidades de un equipo de desarrolladores.


Preparar una aplicación internacional

Para diseñar una aplicación internacional suelen darse estos tres pasos: crear datos, escribir código y diseñar una interfaz de usuario. Sin embargo, para dar estos pasos es necesario considerar las siguientes preguntas:

  • ¿Qué datos son aceptables?
  • ¿Cómo se escribe código para una aplicación internacional?
  • ¿Qué debe tenerse en cuenta a la hora de diseñar una interfaz de usuario?

En las secciones siguientes se da respuesta a estas preguntas y se plantean otras que debe tener en cuenta antes de diseñar la aplicación.

Sugerencia Puede reducir el coste de programación de una aplicación internacional y ponerla en el mercado más rápidamente si la diseña como aplicación internacional desde el principio, en lugar de modificarla posteriormente para su uso internacional.

Diseñar datos internacionales

Para crear datos internacionales para una aplicación, deberá escribirlos manualmente, importarlos de otras aplicaciones o anexarlos a archivos y campos memo existentes. Para obtener información acerca de cómo importar y anexar datos, consulte Importar y exportar datos.

Qué datos son aceptables?

Para decidir qué datos son aceptables, determine en primer lugar la configuración regional en la que se va a utilizar la aplicación. La configuración regional determina el contenido cultural de los datos, así como los idiomas en los que éstos se diseñan.

Asimismo, los idiomas afectarán a la página de códigos con la que se diseñan los datos. Una página de códigos es un juego de caracteres que utiliza el equipo para mostrar correctamente los datos, a menudo para tratar los caracteres internacionales. Los caracteres internacionales incluyen caracteres que tienen marcas diacríticas. Estas marcas se colocan encima, debajo o entre letras para indicar cambios de sonido con respecto a la forma sin marca. Las marcas diacríticas más frecuentes son el acento grave (` como en à), el acento agudo (´ como en á), el acento circunflejo (^ como en â), la tilde (~ como en ã ), la diéresis (¨ como en ä ), el anillo (° como en å) y la barra inclinada (/ como en ø), siempre usadas en las vocales.

Normalmente los datos se marcan automáticamente con la página de códigos apropiada cuando se trabaja con ellos. Sin embargo, si asigna manualmente una página de códigos a una tabla o produce un cambio en la misma, los usuarios podrían no reconocer algunos o todos los datos mostrados. Para obtener más detalles acerca de las páginas de códigos, consulte Páginas de códigos en Visual FoxPro.

Algunos idiomas, como el chino, el coreano o el japonés, usan DBCS (juegos de caracteres codificados en dos bytes) para representar sus datos. Si la aplicación pudiera ejecutarse en estos entornos, podría necesitar funciones de tratamiento de cadenas especiales y secuencias de ordenación para que la aplicación funcionase correctamente. Para obtener más detalles, consulte Creación de aplicaciones con juegos de caracteres codificados en dos bytes.

Cómo escribir código?

Una aplicación consta de un componente de interfaz de usuario y un componente de aplicación. El componente de interfaz de usuario contiene gráficos, cadenas de texto y opciones relacionadas con distintas configuraciones regionales, como fechas, monedas, valores numéricos y separadores. El componente de aplicación contiene el código que se ejecuta para todas las configuraciones regionales, incluido el código que procesa las cadenas y los gráficos empleados en la interfaz de usuario.

Los componentes de una aplicación

Cuando diseñe una aplicación, mantenga separados los componentes de aplicación y de interfaz de usuario, ya que disponer de componentes independientes facilita la traducción y el mantenimiento de la aplicación. Por ejemplo, con componentes separados no es necesario examinar el código fuente para traducir elementos de la interfaz. Para obtener más información acerca de cómo escribir código, consulte Modificar aplicaciones internacionales.

Diseñar una interfaz de usuario

Los menús, formularios, controles, barras de herramientas y mapas de bits empleados en la interfaz de usuario deben cumplir con la configuración regional en la que se diseña la aplicación. Por ejemplo, si diseña la aplicación para usuarios de Alemania o Francia, los cuadros de diálogo deberán ser lo bastante grandes para mostrar correctamente las instrucciones, si éstas se traducen al alemán o al francés. Asimismo, las imágenes utilizadas en iconos y mapas de bits deben ser culturalmente correctas para que sean comprensibles en las configuraciones regionales de destino. Para obtener más información, consulte Diseñar la interfaz.

Probar la aplicación

Para probar una aplicación internacional, debe comprobar las dependencias de país e idioma de la configuración regional para la que está diseñada la aplicación. El proceso de prueba implica comprobar que los datos y la interfaz de usuario de la aplicación cumplen con los estándares de la configuración regional en cuanto a la fecha y la hora, los valores numéricos, los separadores de lista y las medidas.

Vea también

Desarrollar aplicaciones internacionales | Diseñar la interfaz | Importar y exportar datos | Escribir datos internacionales | Páginas de códigos en Visual FoxPro | Páginas de códigos compatibles con Visual FoxPro


Diseñar la interfaz

Puesto que el texto tiende a aumentar cuando se traduce una aplicación, tome las debidas precauciones al diseñar los siguientes componentes de la interfaz de usuario:

  • Mensajes de la aplicación
  • Menús y formularios
  • Iconos y mapas de bits

Crear mensajes en una aplicación

Cuando cree mensajes en su aplicación, tenga en cuenta que la longitud de las cadenas de texto varía de un idioma a otro. La tabla siguiente muestra el crecimiento medio de las cadenas, a partir de su longitud inicial.

Longitud en inglés (en caracteres) | Crecimiento para cadenas traducidas
1 a 4 | 100%
5 a 10 | 80%
11 a 20 | 60%
21 a 30 | 40%
31 a 50 | 20%
más de 50 | 10%

Diseñar menús y formularios

Al igual que los mensajes, los menús y los formularios pueden aumentar de tamaño cuando se traduce la aplicación. Por ejemplo, observe los formularios siguientes, que forman parte de una aplicación de ejemplo para cajeros automáticos. La primera figura muestra el formulario en inglés y la segunda su equivalente en español. Puede ver el espacio adicional que se ha reservado para el aumento del texto en el formulario.

Sugerencia Si deja espacio para el aumento del texto en una interfaz, los traductores tendrán que dedicar menos tiempo a reajustar el tamaño de los controles y a volver a diseñar la interfaz.

El texto necesita más espacio cuando se traduce

En los menús y formularios, evite barras de estado con mucho texto. Asimismo, evite las abreviaturas, ya que es posible que no existan en otros idiomas.

Usar iconos e imágenes de mapas de bits

Si se utilizan correctamente, los iconos y los mapas de bits pueden formar una parte importante de la interfaz de usuario. Sin embargo, el significado de los iconos y los mapas de bits puede ser más ambiguo que el del texto. Por tanto, siga estas directrices cuando utilice iconos y mapas de bits:

  • Utilice imágenes universalmente reconocidas. Por ejemplo, utilice un sobre para representar correo, pero no utilice un buzón porque no es un símbolo universal.
  • Utilice imágenes respetuosas con las culturas. Por ejemplo, evite utilizar imágenes de símbolos religiosos y animales.
  • Evite el uso de texto en mapas de bits, ya que el aumento del texto puede representar un problema, al igual que en otras partes de la interfaz.
  • Evite la jerga, el lenguaje vulgar, el humor, el lenguaje extravagante y los estereotipos étnicos.
  • Use la información sobre herramientas para explicar los iconos, que tienen la ventaja adicional de poder aumentar de tamaño automáticamente para adaptarse al texto que muestran.
  • Si utiliza imágenes de hombres y mujeres, asegúrese de que los cargos que desempeñan son adecuados, y que los gestos y las imágenes del cuerpo humano son apropiados en la cultura de destino.
  • Utilice el color correctamente. Por ejemplo, evite utilizar combinaciones de colores asociadas a banderas nacionales o movimiento políticos.

Si no sabe con seguridad si un icono o un mapa de bits resulta apropiado, consulte con un ciudadano del país para el que está diseñando la aplicación.

Vea también

Preparar una aplicación internacional | Escribir datos internacionales | Desarrollar aplicaciones internacionales | Páginas de códigos en Visual FoxPro | Páginas de códigos compatibles con Visual FoxPro


Escribir datos internacionales

Un aspecto importante de la programación de aplicaciones internacionales es saber cómo escribir datos en la aplicación. Los datos se incorporan a la aplicación de dos maneras:

  • El usuario escribe los datos.
  • Usted o los usuarios importan los datos de archivos existentes.

En las secciones siguientes se tratan estos dos métodos.

Escribir caracteres internacionales

Puede escribir caracteres internacionales en Visual FoxPro mediante el teclado. El método exacto que debe utilizar depende del idioma en el que esté trabajando. En entornos de caracteres de un único byte, puede escribir los caracteres directamente o presionar una combinación de teclas del teclado. Por otro lado, los entornos con conjuntos de caracteres de doble byte (DBCS) suelen proporcionar un Editor de métodos de entrada (IME), que es una aplicación que puede utilizar para escribir caracteres.

Escribir caracteres mediante el teclado

Con un teclado internacional, puede mostrar caracteres internacionales presionando simplemente las teclas dedicadas a esos caracteres. Si su teclado no dispone de teclas para caracteres internacionales, podrá escribirlos empleando el mapa de caracteres de Windows o presionando la tecla ALT en combinación con las teclas del teclado numérico auxiliar.

El modo más sencillo de escribir un carácter internacional consiste en copiarlo desde el mapa de caracteres, disponible en el menú Accesorios.

También puede escribir un carácter internacional si presiona ALT en combinación con un número de cuatro dígitos que empieza por cero y se introduce desde el teclado numérico.

Nota No puede escribir caracteres internacionales en FoxFont. Por ejemplo, si abre la ventana Comandos, cambia a FoxFont y presiona una tecla dedicada, el resultado no es el carácter impreso en la tecla. Para obtener los mejores resultados, evite el uso de FoxFont en aplicaciones internacionales.

Para crear un carácter internacional

  • Copie el carácter desde el mapa de caracteres y péguelo en el documento.

    –O bien–

  • Mantenga presionada la tecla ALT y escriba un cero seguido del código ASCII de tres dígitos correspondiente.
    Sugerencia La barra de estado del mapa de caracteres muestra la combinación de teclas correspondiente a cada carácter seleccionado en el mapa.

Por ejemplo, para escribir ö (código ASCII 246), presione BLOQ NUM en el teclado numérico y, a continuación, ALT+0246. Asegúrese de que utiliza una fuente estándar de Windows, no FoxFont o FoxPrint.

Solución de problemas

Si los caracteres no se transportan correctamente, compruebe si está utilizando FoxFont. Por ejemplo, FoxFont es la opción predeterminada para las ventanas definidas por el usuario que se crean mediante DEFINE WINDOW (si se omite la cláusula FONT). Utilice la cláusula FONT para especificar una fuente distinta de la estándar de Windows al crear ventanas definidas por el usuario, de modo que los caracteres internacionales se muestren correctamente.

Escribir caracteres mediante un IME

Si trabaja en un entorno IME, puede usar un Editor de métodos de entrada para escribir caracteres en Visual FoxPro. El IME es una aplicación suministrada con el entorno que permite escribir caracteres del teclado para mostrar una selección de caracteres internacionales y elegir el carácter que desea. Por ejemplo, un IME para chino podría permitirle escribir una representación Pinyin de una palabra china y después mostrar una lista de caracteres que coincidan con la representación. Cuando seleccione el carácter que desee, el IME lo pega en Visual FoxPro.

Puede controlar cuándo muestra Visual FoxPro un IME si establece la propiedad IMEMode o llama a la función IMESTATUS( ). Si activa la ventana del IME, Visual FoxPro muestra automáticamente el IME cuando realice operaciones de modificación en una ventana del sistema, como las ventanas Examinar y Modificar. Si desactiva la ventana del IME, puede invocar al editor presionando las teclas apropiadas del teclado.

Agregar y copiar datos internacionales

Si importa o copia datos de archivos delimitados mediante los comandos APPEND FROM o COPY TO, puede especificar qué carácter se está utilizando en el archivo para separar los campos. Por ejemplo, es frecuente en muchos países europeos usar un punto y coma (;) como delimitador de campos, mientras que los delimitadores más habituales en Estados Unidos son la coma (,), el tabulador o el espacio.

Para importar o copiar archivos y especificar un delimitador, agregue la cláusula DELIMITED WITH CHARACTER a los comandos APPEND FROM o COPY TO:

COPY TO mytxt.txt DELIMITED WITH _ WITH CHARACTER ";"

Vea también

Diseñar la interfaz | Páginas de códigos en Visual FoxPro | Desarrollar aplicaciones internacionales | DEFINE WINDOW | Páginas de códigos compatibles con Visual FoxPro


Crear la Aplicación

Una aplicación de Microsoft Visual FoxPro incluye típicamente una o más bases de datos, un programa principal que fija el entorno del sistema de la aplicación, y la interfaz de usuario compuesta por formularios, barras de herramientas, informes y menús.

Para crear una aplicación usando Visual FoxPro

  1. Cree un proyecto. Para más información, vea Trabajar con proyectos.
  2. Configure su aplicación fijando un punto de partida, inicializando el entorno y comenzando la preparación de eventos. Para más información, vea Configurar una aplicación.
  3. Cree una interfaz de usuarios para su aplicación. Para más información, vea Crear la interfaz de usuario.
  4. Cree informes y etiquetas para su aplicación. Para más información, vea Crear informes y etiquetas.
  5. Cree archivos de Ayuda para su aplicación. Para más información, vea Crear ayuda.

Nota La aplicación Framework puede crear aplicaciones automáticamente ya que incluye todos los requerimientos y muchas opciones predeterminadas, elementos que pueden hacer una aplicación efectiva y fácil de usar. Para más información, vea Crear aplicaciones con el marco de aplicaciones.

En esta sección

Trabajar con proyectos
Define un proyecto, su configuración y un grupo de archivos que generan un programa o uno o varios archivos binarios.
Configurar una aplicación
Explica los pasos a seguir en la configuración de una aplicación Visual FoxPro.
Crear aplicaciones con el marco de aplicaciones
Explica como crear aplicaciones con el framework "Aplicación" utilizando el Asistente de aplicaciones y el Generador de aplicaciones.
Crear la interfaz de usuario
Describe como creando formularios, clases, controles, y barras de herramientas puede proveerse de un rico conjunto de herramientas para su interfaz de usuarios.
Crear informes y etiquetas
Describe como implementar informes y etiquetas de Visual FoxPro en sus aplicaciones. Enseña como recopilar y organizar sus datos para imprimir o mostrar por pantalla.
Crear ayuda
Describe como implementar ayuda profesional en su aplicación usando HTML Help o WinHelp 4.0.
Programar aplicaciones internacionales
Describe como puede diseñar y desarrollar sus aplicaciones Visual FoxPro de tal forma que sean tan efectivas internacionalmente como domésticamente.

Secciones Relacionadas

Desarrollar aplicaciones Visual FoxPro
Incluye información conceptual acerca de como desarrollar aplicaciones Visual FoxPro, instrucciones para la creación de bases de datos e interfaz de usuarios y otras tareas necesarias para crear aplicaciones Visual FoxPro.
Planificar aplicaciones
Describe como una planificación cuidadosa ahorra tiempo, esfuerzo y dinero y como muchas de las decisiones que se toman durante la fase de planificación impactarán en como se crearán los elementos de la aplicación.
Crear Servicios Web y componentes
Explica como puede extender su aplicación Visual FoxPro haciéndola posible para trabajar con múltiples usuarios, tomando las ventajas de los controles Microsoft ActiveX y las aplicaciones con capacidades de automatización.
Mejorar aplicaciones utilizando tecnología de paso a través de SQL (SPT)
Describe como puede utilizar la Tecnología a través de SQL (SPT) para crear objetos en el servidor, ejecutar procedimientos almacenados en el mismo y ejecutar comandos usando sintaxis nativa del servidor.
Trabajar con datos
Describe como crear aplicaciones efectivas con índices, tablas y bases de datos basadas en sus requerimientos de datos.
Crear ayuda
Describe como puede incluir archivos de Ayuda en su aplicación para proveer de información valiosa para los usuarios de su aplicación.
Compilar una aplicación
Enseña como usar el enfoque modular que haga posible verificar la funcionalidad de cada componente que va a crear. Luego puede compilarlos dentro de una aplicación, la cual ensamble los componentes ejecutables de su proyecto.
Probar y depurar aplicaciones
Explica que al desarrollar una aplicación, debe verificar los errores dentro y a través de los componentes. Visual FoxPro proporciona de herramientas de depuración para ayudarlo a encontrar y reparar cualquier error que descubra en su aplicación.
Distribuir aplicaciones
Explica cómo distribuir su aplicación incluyendo todos los ficheros requeridos y creando los discos de distribución, después que se ha completado todo el desarrollo y la verificación de su aplicación.


Trabajar con proyectos

Un proyecto se define como un conjunto de archivos que obtienen un programa o uno o varios archivos binarios. En Visual FoxPro, puede administrar un proyecto usando el Administrador de Proyectos, dándole un control visual de sus componentes. El Administrador de Proyectos hace fácil y rápido el desarrollo de aplicaciones complejas.

En esta sección

Crear un proyecto
Explica como usar el Administrador de Proyectos para crear un proyecto y para organizar y trabajar con tablas, formularios, bases de datos, informes, consultas y otros archivos cuando está administrando tablas y bases de datos o creando una aplicación.
Agregar archivos a un proyecto
Explica cómo añadir archivos fácilmente al proyecto utilizando el Asistente de Aplicaciones y/o el Administrador de Proyectos.
Estructurar un programa principal
Describe cómo puede utilizar un archivo de programa que incluye comandos para manipular las tareas asociadas a las tareas importantes de la aplicación, como el archivo principal en su aplicación.
Enlaces del administrador de proyectos
Describe acciones que acceden al proyecto programáticamente para que pueda manipular el proyecto como un objeto.

Secciones relacionadas

Desarrollar aplicaciones Visual FoxPro
Incluye información conceptual acerca de cómo desarrollar aplicaciones Visual FoxPro, instrucciones para crear bases de datos e interfaz de usuarios y otras tareas necesarias para crear aplicaciones Visual FoxPro.
Planificar aplicaciones
Describe como una planificación cuidadosa ahorra tiempo, esfuerzo y dinero y como muchas de las decisiones que se toman durante la fase de planificación redundaranen la eficacia de como se crearán los elementos de la aplicación.
Crear una aplicación
Explica como crear una aplicación Visual FoxPro, la cual incluye una o más bases de datos, un programa principal que establece el entorno del sistema de la aplicación y la interfaz de usuario compuesta por formularios, barras de herramientas, informes y menús.
Crear Servicios Web y componentes
Explica como puede extender su aplicación Visual FoxPro posibilitándola para trabajar con múltiples usuarios, tomando las ventajas de los controles Microsoft ActiveX y las aplicaciones con capacidades de automatización.
Mejorar aplicaciones utilizando tecnología de paso a través de SQL (SPT)
Describe como puede utilizar la tecnología a través de SQL (SPT) para crear objetos en el servidor, ejecutar procedimientos almacenados en el mismo y ejecutar comandos usando sintaxis nativa del servidor.
Trabajar con datos
Describe como crear aplicaciones efectivas con índices, tablas y bases de datos basadas en sus requerimientos de datos.
Crear ayuda
Describe como puede incluir archivos de Ayuda en su aplicación para proporcionar información valiosa para los usuarios de la misma.
Compilar una aplicación
Enseña como utilizar el enfoque modular que haga posible verificar la funcionalidad de cada componente que va a crear. Luego puede compilarlos dentro de una aplicación, la cual ensamble los componentes ejecutables de su proyecto.
Probar y depurar aplicaciones
Explica que Visual FoxPro proporciona herramientas de depuración para ayudarlo a encontrar y reparar cualquier error que descubra en su aplicación.
Distribuir aplicaciones
Describe como preparar para distribuir su aplicación incluyendo todos los ficheros requeridos y creando los discos de distribución, después que se ha completado todo el desarrollo y la verificación de su aplicación.


Crear un proyecto

La forma más sencilla de familiarizarse con Visual FoxPro es utilizar el Administrador de proyectos. El Administrador de proyectos proporciona un método sencillo y visual de organizar y trabajar con tablas, archivos, bases de datos, informes, consultas y otros archivos cuando se administran tablas y bases de datos o se crea una aplicación.

Si dispone de su propio conjunto de tablas de versiones anteriores de FoxPro, podrá agregarlas inmediatamente a un proyecto para ver cómo funciona Visual FoxPro. Si tiene otros datos que desee organizar (en hojas de cálculo, archivos de texto o tablas de otras aplicaciones), podrá importarlos a Visual FoxPro y agregarlos a un proyecto.

Puede crear un proyecto nuevo en cualquier momento eligiendo la opción Nuevo en el menú Archivo.

Para crear un proyecto nuevo

  1. En el menú Archivo, elija Nuevo.
  2. Seleccione Proyecto y elija Nuevo archivo.
  3. En el cuadro de diálogo Crear, seleccionar donde guardará el proyecto y el nombre que desee asignar al proyecto nuevo.
  4. Elija Guardar.

Para familiarizarse con Visual FoxPro, utilice los archivos de ejemplos provistos. Estos ejemplos están disponibles en las carpetas ubicadas en el directorio ...\Samples de Visual FoxPro.

Vea también

Actualizar desde versiones anteriores | Instalar Visual FoxPro | Importar y exportar datos | Página de inicio de Visual FoxPro


Agregar archivos a un proyecto

Un proyecto de Visual FoxPro consta de componentes independientes que se almacenan como archivos individuales. Por ejemplo, un proyecto sencillo puede constar de formularios (archivos .scx), informes (archivos .frx) y programas (archivos .prg y .fxp). Además un proyecto suele tener una o varias bases de datos (archivos .dbc), tablas (almacenadas en archivos .dbf y .fpt) e índices (archivos .cdx e .idx). Para incluirse en una aplicación, el archivo ha de agregarse al proyecto. De esa manera, al compilar la aplicación, Visual FoxPro puede incluir los archivos de ese componente en el producto terminado.

Puede agregar fácilmente archivos a un proyecto de varias maneras:

  • Para crear un proyecto y agregar archivos existentes, use el Asistente para aplicaciones.
  • Para agregar automáticamente archivos nuevos a un proyecto, abra un proyecto y a continuación cree los archivos nuevos en el Administrador de proyectos.
  • Para agregar archivos existentes a un proyecto, abra un proyecto y agréguelos con el Administrador de proyectos.

Si ha utilizado el Asistente para aplicaciones o el Administrador de proyectos para crear los archivos, normalmente no necesitará hacer nada más ya que el archivo se incluye automáticamente en el proyecto. Sin embargo, existe una excepción a lo anterior si la aplicación incluye un archivo que el usuario vaya a modificar. Dado que los archivos incluidos son de sólo lectura, deberá marcar el archivo como excluido. Para obtener detalles, vea Referencias a archivos modificables.

Sugerencia Para obtener una lista de los tipos de archivos y extensiones utilizados en Visual FoxPro, vea Extensiones de archivo y tipos de archivo.

Crear y modificar archivos con el Administrador de proyectos

El Administrador de proyectos simplifica la creación y modificación de archivos. Basta con seleccionar el tipo de archivo que desea crear o modificar y elegir el botón Nuevo o Modificar. Visual FoxPro mostrará la herramienta de diseño apropiada para el tipo de archivo seleccionado.

Para crear un archivo y agregarlo al Administrador de proyectos

  1. Seleccione el elemento que desea crear.
  2. Elija Nuevo.

Con algunos elementos existe la opción de utilizar un Asistente que le ayuda a crear el archivo.

Para modificar un archivo

  1. Seleccione un archivo existente.
  2. Elija Modificar.

Por ejemplo, para modificar una tabla, seleccione el nombre de la tabla y elija Modificar para ver la tabla en el Diseñador de tablas.

Agregar una descripción a un archivo

Cuando cree o agregue un archivo nuevo, podrá agregarle una descripción. Esta descripción se muestra en la parte inferior del Administrador de proyectos al seleccionar el archivo.

Para agregar una descripción a un archivo

  1. En el Administrador de proyectos, seleccione el archivo.
  2. En el menú Proyecto, elija Modificar descripción.
  3. En el cuadro de diálogo Descripción, escriba una descripción para el archivo.
  4. Elija Aceptar.

Agregar un archivo existente a un proyecto

Si un archivo existente ya no forma parte del proyecto, puede agregarlo manualmente.

Para agregar un archivo a un proyecto manualmente

  1. En el Administrador de proyectos, elija el tipo de componente que desea agregar; para ello selecciónelo en la jerarquía.
  2. Elija Agregar.
  3. En el cuadro de diálogo Abrir, seleccione el archivo que desea agregar.
  4. Elija Aceptar.

Para quitar un archivo de un proyecto

  1. Seleccione el elemento que desea quitar.
  2. Elija Quitar.
  3. En la petición de confirmación, elija Quitar.

Si desea eliminar el archivo del equipo, elija Eliminar.

Visual FoxPro también agrega archivos al proyecto si se ha hecho referencia a los mismos en un programa o formulario. Por ejemplo, si un programa del proyecto incluye la línea siguiente, Visual FoxPro agrega el archivo Orders.scx al proyecto:

DO FORM ORDERS.SCX

Si se ha hecho referencia a un archivo de esta manera, no se incluye inmediatamente en un proyecto. Posteriormente, cuando compile el proyecto, Visual FoxPro resuelve las referencias a todos los archivos e incluye automáticamente los archivos implícitos en el proyecto. Además, si se ha hecho referencia a cualquier otro archivo mediante código definido por el usuario en el archivo nuevo, al compilar el proyecto también se resolverá esa referencia y se incluirá el archivo. Los archivos a los que se ha hecho referencia aparecerán en el Administrador de programas la próxima vez que vea el proyecto.

Precaución Visual FoxPro podría no ser capaz de resolver referencias a archivos de imagen (.bmp y .msk), dependiendo de la forma en que se utilicen en el código. Por tanto, agregue las imágenes a los archivos manualmente. Además, Visual FoxPro no puede incluir automáticamente archivos a los que se haya hecho referencia mediante la sustitución de macros, porque el nombre del archivo no se conoce hasta que se ejecuta la aplicación. Si la aplicación establece referencias a archivos mediante la sustitución de macros, incluya estos archivos manualmente.

Vea también

Estructurar un programa principal | Referencias a archivos modificables | Compilar una aplicación | Asistente para aplicaciones


Estructurar un programa principal

Si usa un archivo de programa (.prg) como archivo principal en la aplicación, debe comprobar que incluya los comandos que gestionarán las tareas asociadas con las principales tareas de la aplicación. El archivo principal no tiene que ejecutar comandos directamente para realizar todas las tareas. Por ejemplo, es frecuente llamar a procedimientos o funciones para gestionar tareas como inicialización del entorno y limpieza.

Nota Si usó el Asistente para aplicaciones y le permitió crear el programa Main.prg, puede modificar el programa creado por el asistente en lugar de crear otro nuevo. El asistente utiliza una clase especial para definir un objeto para la aplicación. El programa principal incluye secciones para crear instancias y configurar el objeto.

Para generar un programa principal sencillo

  1. Inicialice el entorno; para ello, abra bases de datos, declare variables, etc.
  2. Establezca la interfaz inicial de usuario; para ello, llame a un menú o formulario.
  3. Establezca el bucle de eventos; para ello, ejecute el comando READ EVENTS.
  4. Ejecute el comando CLEAR EVENTS desde un menú (como un comando Salir) o un botón (como un botón del comando Salir). El programa principal no debería ejecutar este comando.
  5. Restablezca el entorno cuando salga de la aplicación.

Por ejemplo, su programa principal podría ser similar al siguiente:

Código Comentarios
DO SETUP.PRG
 Llama al programa para configurar el entorno (almacena los valores en variables públicas)
DO MAINMENU.MPR
 Muestra el menú como la interfaz inicial
READ EVENTS
 Establece el bucle de eventos. Un programa diferente (como Mainmenu.mpr) debe ejecutar el comando CLEAR EVENTS)
DO CLEANUP.PRG
 Restaura el entorno antes de salir

Vea también

Controlar el bucle de eventos | Agregar archivos a un proyecto | Compilar una aplicación | Arquitectura de la aplicación | Inicializar el entorno


Enlaces del Administrador de proyectos

En versiones anteriores de Visual FoxPro, el único acceso a un proyecto se lograba mediante la manipulación directa de las tablas del archivo .pjx del proyecto. En Visual FoxPro, el acceso a un proyecto puede realizarse mediante programa, lo que permite manipular el proyecto como un objeto. Un proyecto puede manipularse en tiempo de diseño, mientras está abierto en el Administrador de proyectos, o en tiempo de diseño y en tiempo de ejecución sin que el Administrador de proyectos esté visible.

A continuación se indican algunas de las acciones que pueden realizarse en un proyecto mediante programación:

  • Agregar archivos a un proyecto o eliminarlos de éste.
  • Agregar archivos del proyecto a aplicaciones de control de código fuente (como por ejemplo Microsoft® Visual SourceSafe®) y proteger o desproteger archivos con control de código fuente.
    Nota Si agrega un proyecto a Visual SourceSafe, para realizar una asignación correcta al proyecto, todos los archivos que contiene el proyecto deben estar en el directorio o ruta de acceso del proyecto.
  • Determinar el número de archivos de un proyecto y sus tipos.
  • Abrir y modificar los archivos del proyecto.
  • Cambiar las propiedades del proyecto.
  • Cambiar las propiedades de los archivos del proyecto.
  • Cambiar las propiedades de los servidores de automatización (bibliotecas de vínculos dinámicos, .dll, o archivos ejecutables, .exe) generados desde el proyecto.
  • Ejecutar código cuando se producen eventos en el proyecto.
  • Volver a generar el proyecto o generar archivos .app, .exe o .dll a partir del mismo.

Con los enlaces del administrador de proyectos, los programadores más experimentados pueden crear sus propios administradores de proyectos con interfaces de usuario únicas y personalizadas.

En esta Sección

Jerarquía de objetos de un proyecto
Ilustra la Jerarquía de Objetos de un Proyecto, el Objeto Proyecto, y el Objeto ProjectHook.
Arquitectura del objeto Proyecto
Describe los elementos de lenguaje, como las notas y los Eventos de proyecto, que embellecen la Arquitectura del Objeto Proyecto.
Ejecutar el ejemplo de enlaces del Administrador de proyectos
Provee instrucciones de como localizar y Ejecutar el Ejemplo del Enlace de Administrador de Proyectos de Visual FoxPro

Secciones Relacionadas

Herramientas de productividad para el desarrollo
Provee información sobre las herramientas de desarrollo existentes entre una aplicación Visual FoxPro y el lenguaje.
Introducción a IntelliSense
Provee información sobre IntelliSense, el cual muestra información en ventanas emergente y cuadros de lista el cual dan asistencia sobre el complemento de la sintaxis de instrucciones y Funciones.
Aplicación analizador de trayecto
Muestra un aplicación informativa, el cual da información acerca de que líneas de código en un archivo fueron ejecutadas, y en el perfil de la Aplicación, que líneas de código se están ejecutando actualmente, cuanto es el tiempo de ejecución, duración, y más.
Automatización de tareas de pulsación de teclas con macros
Describe como se puede grabar y salvar secuencia de Teclas en Macros usando la caja de Dialogo de Macros.
Herramientas de productividad
Describe las diferente herramientas existentes para ayudar en la creación de aplicaciones en Visual FoxPro, sencillas y rápidamente.


Jerarquía de objetos de un proyecto

La jerarquía de objetos de un proyecto consta del proyecto, un objeto Project y su objeto ProjectHook asociado. El objeto Project contiene una colección Files, formada por los archivos del proyecto y una colección Servers, formada por los servidores de automatización creados desde el proyecto. En el diagrama siguiente se ilustra la jerarquía de objetos de un proyecto dentro del modelo de objetos de Visual FoxPro:

Projects (Colección)

La colección Projects proporciona acceso directo al objeto Project y así permite manipular el proyecto, y también los archivos y servidores que contiene. A la colección Projects se le agrega un objeto Project siempre que se crea o se abre un proyecto, o cuando se genera un .app, .dll o .exe desde él.

Al igual que ocurre con otras colecciones OLE, es posible obtener información acerca de un proyecto a partir de la colección Projects. Por ejemplo, el código siguiente utiliza las propiedades Count e Item de la colección Projects para mostrar los nombres de todos los proyectos de la colección Projects y a continuación, utiliza el comando FOR EACH para mostrar la misma información:

nProjectCount = Application.Projects.Count
FOR nCount = 1 TO nProjectCount
? Application.Projects.Item(nCount).Name
NEXT
FOR EACH oProj IN Application.Projects
? oProj.Name
ENDFOR

Esta línea de código utiliza la propiedad ActiveProject para agregar un programa, Main.prg, al proyecto activo actualmente:

Application.ActiveProject.Files.Add('Main.prg')

Esta línea de código agrega Main.prg al primer proyecto agregado a la colección Projects:

Application.Projects[1].Files.Add('Main.prg')

La colección Projects tiene la propiedad y el método siguientes:

Propiedades
Count
Métodos
Item

Project (Objeto)

Se crea una instancia del objeto Project siempre que se abre un proyecto desde el menú Archivo o con los comandos CREATE PROJECT, MODIFY PROJECT, BUILD APP, BUILD DLL, BUILD EXE o BUILD PROJECT. El objeto Project permite manipular el proyecto mediante programa y es posible el acceso al mismo a través del objeto Application de Visual FoxPro. Observe que el objeto Application cuenta con la nueva propiedad ActiveProject, que proporciona una referencia de objeto al proyecto abierto en el Administrador de proyectos activo actualmente.

El objeto Project tiene las propiedades y métodos siguientes:

Propiedades |
Application | AutoIncrement
BaseClass | BuildDateTime
Debug | Encrypted
HomeDir | Icon
MainFile | Name
Parent | ProjectHook
ProjectHookClass | ProjectHookLibrary
SCCProvider | ServerHelpFile
ServerProject | TypeLibCLSID
TypeLibDesc | TypeLibName
VersionComments | VersionCompany
VersionCopyright | VersionDescription
VersionLanguage | VersionNumber
VersionProduct | VersionTrademarks
Visible |
Métodos |
Build | CleanUp
Refresh | SetMain

ProjectHook (Objeto)

Un objeto ProjectHook es una clase de base de Visual FoxPro cuya instancia se crea de forma predeterminada siempre que se abre un proyecto asignado al objeto ProjectHook. (Puede incluir la cláusula NOPROJECTHOOK en CREATE PROJECT y MODIFY PROJECT para evitar que se cree una instancia de un objeto ProjectHook para el proyecto.)

El objeto ProjectHook permite el acceso mediante programación a los eventos que ocurren en un proyecto. Por ejemplo, puede ejecutar código siempre que agregue un archivo a un proyecto. Este objeto opcional difiere del objeto Project, que contiene todas las propiedades y métodos disponibles en el cuadro de diálogo Información del proyecto.

Puede especificar una clase ProjectHook predeterminada para los nuevos proyectos en la ficha Proyecto del cuadro de diálogo Opciones. Si no se especifica una clase ProjectHook predeterminada en la ficha Proyectos, no se asignará ninguna clase de este tipo a los proyectos nuevos. Puede especificar una clase ProjectHook para un proyecto individual (anulando la predeterminada) en el cuadro de diálogo Información del proyecto. En tiempo de ejecución, puede utilizar la propiedad ProjectHook para especificar una clase ProjectHook para un proyecto. Si cambia la clase ProjectHook de un proyecto, la nueva clase no tendrá efecto hasta que cierre el proyecto y lo abra de nuevo.

El objeto ProjectHook tiene las propiedades, eventos y métodos siguientes:

Propiedades |
BaseClass | Class
ClassLibrary | Comment
Name | OLEDropEffects
OLEDropHasData | OLEDropMode
Parent | ParentClass
Tag |
Eventos |
AfterBuild | BeforeBuild
Destroy | Error
Init | OLEDragDrop
OLEDragOver | OLEGiveFeedBack
QueryAddFile | QueryModifyFile
QueryRemoveFile | QueryRunFile
Métodos |
AddProperty | ReadExpression
ReadMethod | ResetToDefault
SaveAsClass | WriteExpression

Interacción entre los objetos Project y ProjectHook

Al abrir el Administrador de proyectos desde el menú Archivo o con los comandos CREATE PROJECT o MODIFY PROJECT, aparecerá la ventana del Administrador de proyectos y se creará una instancia de un objeto Project con su objeto ProjectHook asociado. Los comandos de generación de proyectos (BUILD PROJECT, BUILD APP, BUILD DLL y BUILD EXE) también crean instancias de los objetos Project y ProjectHook.

Cuando se produce un evento en un proyecto, el objeto Project envía el evento al objeto ProjectHook. Entonces se ejecuta el código de usuario del evento en el objeto ProjectHook y el control se devuelve al objeto Project. El valor devuelto al objeto Project desde el objeto ProjectHook determina si el objeto Project termina la operación. Si incluye NODEFAULT en el código del evento, evitará que se realice la acción predeterminada. Por ejemplo, al agregar NODEFAULT al evento QueryAddFile se impide que se agregue correctamente un archivo al proyecto.

Files (Colección)

La colección Files proporciona acceso directo al objeto File, lo que permite manipular los objetos File de un proyecto mientras éste está abierto. Al igual que ocurre con otras colecciones OLE, es posible obtener información acerca de un archivo de un proyecto a partir de la colección Files. Por ejemplo, en el código siguiente se utilizan las propiedades Count e Item de la colección Files para mostrar los nombres de todos los archivos de la colección y, a continuación, se utiliza el comando FOR EACH para mostrar la misma información:

nFileCount = Application.ActiveProject.Files.Count
FOR nCount = 1 TO nFileCount
? Application.ActiveProject.Files.Item(nCount).Name
NEXT
FOR EACH oProj IN Application.ActiveProject.Files
? oProj.Name
ENDFOR

Esta línea de código utiliza la propiedad ActiveProject para agregar un archivo, Main.prg, al proyecto activo actualmente:

Application.ActiveProject.Files.Add('Main.prg')

Esta línea de código agrega Main.prg al primer proyecto agregado a la colección Projects:

Application.Projects[1].Files.Add('Main.prg')

La colección Files tiene las propiedades y métodos siguientes:

Propiedades
Count
Métodos
Add
Item

File (Objeto)

El objeto File permite manipular los archivos individuales de un proyecto.

El objeto File tiene las propiedades y métodos siguientes:

Propiedades |
CodePage | Description
Exclude | FileClass
FileClassLibrary | LastModified
Name | ReadOnly
SCCStatus | Type
Métodos |
AddToSCC | CheckIn
CheckOut | GetLatestVersion
Modify | Remove
RemoveFromSCC | Run
UndoCheckOut |

Servers (Colección)

La colección Servers ofrece acceso directo al objeto Server, lo que permite manipular los servidores que contiene un proyecto. Se agrega un objeto Server a la colección Servers siempre que se genera a partir del proyecto un archivo de biblioteca de vínculos dinámicos (.dll) o ejecutable (.exe) que contiene un archivo de automatización. Para obtener información acerca de la creación de servidores de automatización, consulte Crear servidores de Automatización en Agregar OLE.

La colección Servers tiene la propiedad y el método siguientes:

Propiedades
Count
Métodos
Item

Server (Objeto)

El objeto Server permite determinar información (incluida información de biblioteca de tipos) acerca de los servidores de automatización contenidos en un proyecto. Esta información también está disponible en la ficha Servidores del cuadro de diálogo Información del proyecto. Observe que el objeto Server no se crea hasta que se genera el proyecto que contiene la clase OLEPUBLIC (especificada en el comando DEFINE CLASS).

El objeto Server tiene las propiedades y métodos siguientes:

Propiedades |
CLSID | Description
HelpContextID | Instancing
ProgID | ServerClass
ServerClassLibrary |

Vea también

Enlaces del Administrador de proyectos | Arquitectura del objeto Proyecto | Ejecutar el ejemplo de enlaces del Administrador de proyectos | Herramientas de productividad para el desarrollo | Application (Objeto)


Arquitectura del objeto Project

El objeto Project de Visual FoxPro expone una interfaz IDispatch para que los clientes de automatización, los controles ActiveX y otros objetos COM tengan acceso a él a través de interfaces OLE estándar. Puesto que el objeto Project expone una interfaz IDispatch, los errores que puedan generarse al manipular proyectos serán errores OLE.

Mejoras del lenguaje

Existen dos nuevas cláusulas para los comandos CREATE PROJECT y MODIFY PROJECT. La primera NOPROJECTHOOK, evita que se cree una instancia del objeto ProjectHook para un proyecto. La segunda NOSHOW, abre el proyecto sin mostrarlo en el Administrador de proyectos, lo que permite manipular el proyecto mediante programación sin mostrarlo. Puede utilizar la propiedad Visible para mostrar posteriormente el Administrador de proyectos. Si desea más información acerca de estas nuevas cláusulas, vea CREATE PROJECT y MODIFY PROJECT.

Eventos de proyecto

En las secciones siguientes se describen los eventos que ocurren cuando se crean, se modifican, se cierran, se generan proyectos, etcétera y también el orden en que se producen.

Crear un nuevo proyecto

Los eventos siguientes se producen al ejecutar CREATE PROJECT, al crear un nuevo proyecto desde el menú Archivo o al hacer clic en el botón Nuevo de la barra de herramientas y especificar la creación de un proyecto nuevo:

  1. Se crea el objeto Project.
  2. Se crea una instancia del objeto ProjectHook.
  3. Se produce el evento Init del objeto ProjectHook. Si el evento Init devuelve verdadero (.T.), que es el valor predeterminado, el proyecto se crea y se muestra en el Administrador de proyectos.

    Si el evento Init devuelve falso (.F.), el proyecto no se crea, se liberan los objetos Project y ProjectHook y no se muestra el Administrador de proyectos.

Modificar un proyecto existente

Los eventos siguientes se producen al ejecutar MODIFY PROJECT, al modificar un proyecto existente desde el menú Archivo o al hacer clic en el botón Abrir de la barra de herramientas y especificar un proyecto nuevo o ya existente:

  1. Se crea el objeto Project. El objeto Project obtiene sus valores del archivo .pjx del proyecto.
  2. Se crea una instancia del objeto ProjectHook.
  3. Se produce el evento Init del objeto ProjectHook. Si el evento Init devuelve verdadero (.T.) (el valor predeterminado), el proyecto se abre para su modificación en el Administrador de proyectos.

    Si el evento Init devuelve falso (.F.), el proyecto no se abre para su modificación, se liberan los objetos Project y ProjectHook, y no se muestra el Administrador de proyectos.

Cerrar un proyecto

Los eventos siguientes se producen al cerrar un proyecto abierto:

  1. Se produce el evento Destroy del objeto ProjectHook y se libera el objeto ProjectHook.
  2. Se libera el objeto Project.

Ejecutar BUILD APP, BUILD DLL o BUILD EXE

Los eventos siguientes se producen cuando se ejecuta BUILD APP, BUILD DLL o BUILD EXE:

  1. Se crea el objeto Project. El objeto Project obtiene sus valores del archivo .pjx del proyecto.
  2. Se crea una instancia del objeto ProjectHook.
  3. Se produce el evento Init del objeto ProjectHook. Si el evento Init devuelve verdadero (.T.), que es el valor predeterminado, se produce el evento BeforeBuild del objeto ProjectHook. Si se ha especificado NODEFAULT en el evento BeforeBuild, el archivo .app, .dll o .exe no se genera. En caso contrario, el proceso de generación continúa.

    Si se agrega algún archivo al proyecto durante el proceso de generación, se producirá el evento QueryAddFile del objeto ProjectHook antes de agregar efectivamente el archivo. Si se ha especificado NODEFAULT en el evento QueryAddFile, no se agregará el archivo al proyecto. En caso contrario, el archivo se agrega. Cuando se ha generado correctamente el archivo .app, .dll o .exe, se produce el evento AfterBuild del objeto ProjectHook y, a continuación, el evento Destroy de dicho objeto.

    Si el evento Init devuelve falso (.F.), el archivo .app, .dll o .exe no se genera, y se liberan los objetos Project y ProjectHook.

Ejecutar BUILD PROJECT

Los eventos siguientes se producen al ejecutar BUILD PROJECT con la cláusula FROM. Si se omite la cláusula FROM, los eventos se producen en el orden descrito anteriormente para la ejecución de BUILD APP, BUILD DLL o BUILD EXE.

  1. Se crea el objeto Project. El objeto Project obtiene sus valores del archivo .pjx del proyecto.
  2. Se crea una instancia del objeto ProjectHook.
  3. Se produce el evento Init del objeto ProjectHook. Si el evento Init devuelve verdadero (.T.), que es el valor predeterminado, los archivos especificados en la cláusula FROM se agregan individualmente al proyecto. El evento QueryAddFile del objeto ProjectHook se produce antes de agregar cada uno de los archivos al proyecto. Si se ha especificado NODEFAULT en el evento QueryAddFile, el archivo no se agregará al proyecto. En caso contrario, el archivo se agrega.

    A continuación se produce el evento BeforeBuild del objeto ProjectHook. Si se ha especificado NODEFAULT en el evento BeforeBuild, el proyecto no se generará. En caso contrario, el proyecto se genera.

  4. Cuando termina la generación del proyecto, se produce el evento AfterBuild del objeto ProjectHook y, a continuación, tiene lugar el evento Destroy de dicho objeto.

    Si el evento Init del objeto ProjectHook devuelve falso (.F.), el proyecto no se genera. En tal caso se liberan los objetos Project y ProjectHook, y no se crea un nuevo archivo .pjx.

Realizar una operación de arrastrar y soltar

Los eventos siguientes se producen al arrastrar un archivo o un conjunto de archivos sobre la sección de esquema (árbol) del Administrador de proyectos:

  1. Cuando el puntero del ratón se sitúa sobre la sección de esquema del Administrador de proyectos, se produce el evento OLEDragOver del objeto ProjectHook, con el valor 0 (DRAG_ENTER en Foxpro.h) en el parámetro nState. A continuación se produce el evento OLEDragOver repetidamente con el valor 2 (DRAG_OVER en Foxpro.h) en el parámetro nState. Si el puntero del ratón se desplaza fuera de la sección de esquema del Administrador de proyectos, se produce el evento OLEDragOver con el valor 1 (DRAG_LEAVE en Foxpro.h) en el parámetro nState.
  2. El evento OLEDragDrop del objeto ProjectHook se produce al soltar el botón del ratón cuando el puntero se encuentra sobre la sección de esquema del Administrador de proyectos. De forma predeterminada, Visual FoxPro agrega al proyecto todos los archivos colocados en el Administrador de proyectos. El evento QueryAddFile del objeto ProjectHook se produce antes de agregar cada uno de los archivos al proyecto.

Agregar un archivo con el botón Agregar

Los eventos siguientes se producen al agregar un archivo a un proyecto con el botón Agregar del Administrador de proyectos:

  1. Aparece el cuadro de diálogo Abrir.
  2. Si selecciona un archivo y elige Aceptar, se creará un objeto File para el archivo seleccionado.
  3. Se produce el evento QueryAddFile del objeto ProjectHook y se pasa al evento el nombre del objeto File. Si se ha especificado NODEFAULT en el evento QueryAddFile, el archivo no se agregará al proyecto. En caso contrario, el archivo se agrega.

Agregar un archivo con el botón Nuevo

Los eventos siguientes se producen al agregar un archivo nuevo a un proyecto con el botón Nuevo del Administrador de proyectos:

  1. Aparece el diseñador o editor correspondiente al archivo.
  2. Cuando se guarda el nuevo archivo, aparece el cuadro de diálogo Guardar como. Al hacer clic en Guardar se crea un objeto File para el nuevo archivo.
  3. Se produce el evento QueryAddFile del objeto ProjectHook y se pasa al evento el nombre del objeto File. Si se ha especificado NODEFAULT en el evento QueryAddFile, el archivo no se agregará al proyecto. En caso contrario, el archivo se agrega.

Modificar un archivo con el botón Modificar

Los eventos siguientes se producen al modificar un archivo de un proyecto con el botón Modificar del Administrador de proyectos:

  1. Se produce el evento QueryModifyFile del objeto ProjectHook antes de que se muestre el diseñador o editor correspondiente al archivo.
  2. Se pasa como parámetro al evento QueryModifyFile el objeto File del archivo que se va a modificar. Si se ha incluido NODEFAULT en el evento QueryModifyFile, no se muestra el diseñador o editor correspondiente al archivo y el archivo no se modifica. En caso contrario, el archivo se abre con el diseñador o editor correspondiente para su modificación.

Quitar un archivo con el botón Quitar

Los eventos siguientes se producen al quitar un archivo de un proyecto con el botón Quitar del Administrador de proyectos:

  1. Se produce el evento QueryRemoveFile del objeto ProjectHook.
  2. El objeto File correspondiente al archivo que se va a quitar se pasa como parámetro al evento QueryRemoveFile. Si se ha especificado NODEFAULT en el evento QueryRemoveFile, el archivo no se quita del proyecto. En caso contrario, el archivo se quita del proyecto.

Ejecutar un archivo con el botón Ejecutar

Los eventos siguientes se producen al ejecutar un archivo de un proyecto con el botón Ejecutar del Administrador de proyectos:

  1. Se produce el evento QueryRunFile del objeto ProjectHook.
  2. El objeto File correspondiente al archivo que se va a ejecutar se pasa como parámetro al evento QueryRunFile. Si se ha especificado NODEFAULT en el evento QueryRunFile, el archivo no se ejecuta. En caso contrario, se ejecuta.

Volver a generar un proyecto o generar un archivo con el botón Generar

Los eventos siguientes se producen al volver a generar un proyecto, o al generar un archivo .app, .dll o .exe desde un proyecto con el botón Generar del Administrador de proyectos:

  1. Aparece el cuadro de diálogo Opciones para generar.
  2. Puede elegir Volver a generar el proyecto, Generar aplicación, Generar ejecutable o Generar DLL COM y luego especificar opciones de generación adicionales. Si hace clic en Cancelar, la generación no se produce.
  3. El evento BeforeBuild del objeto ProjectHook se produce al elegir Aceptar, y entonces comienza el proceso de generación.
  4. Al completarse la generación, se produce el evento AfterBuild del objeto ProjectHook.

Vea también

Jerarquía de objetos de un proyecto | Ejecutar el ejemplo de enlaces del Administrador de proyectos | Herramientas de productividad para el desarrollo


Ejecutar el ejemplo de enlaces del Administrador de proyectos

La aplicación de ejemplo Solutions de Visual FoxPro incluye un ejemplo denominado “Realizar el seguimiento de las actividades de un proyecto” que ilustra muchos de los nuevos enlaces del Administrador de proyectos.

Para ejecutar la aplicación de ejemplo Solutions

  • Escriba la siguiente línea en la ventana Comandos:
    DO (HOME(2) + 'solution\solution')

    –O bien–

  1. En el menú Programa, elija Ejecutar.
  2. Elija la carpeta ...\Samples\Solution.
  3. Haga doble clic en Solution.app.

Para ejecutar el ejemplo "Realizar el seguimiento de las actividades de un proyecto"

  1. Después de iniciar Solution.app, haga doble clic en Proyectos.
  2. Haga clic en Realizar seguimiento de las actividades de un proyecto y luego haga clic en Ejecutar ejemplo.

El ejemplo "Realizar el seguimiento de las actividades de un proyecto" permite abrir un proyecto para después manipularlo de diversas formas. Los cambios realizados en el proyecto se almacenan en una tabla. Al cerrar el proyecto, podrá ver los cambios realizados en él en una ventana Examinar.

Para más información acerca de cómo trabajar con el ejemplo "Realizar el seguimiento de las actividades de un proyecto" y dar una mirada detrás del ejemplo, puede abrir el formulario utilizado para crear el ejemplo.

Para abrir el formulario "Realizar el seguimiento de las actividades de un proyecto"

  1. Después de iniciar Solution.app, haga doble clic en Proyectos.
  2. Haga clic en Realizar el seguimiento de las actividades de un proyecto y luego haga clic en Ver código.

En el Diseñador de formularios se abre el formulario Acttrack.scx, utilizado para crear el ejemplo.

Puede estudiar con más detalle la biblioteca de clases de ProjectHook, Project_hook.vcx, que está asignada al proyecto que se ha abierto en el ejemplo "Realizar el seguimiento de las actividades de un proyecto". La mayoría del código que se ejecuta cuando se producen eventos en el proyecto se encuentra en los procedimientos de evento de esta biblioteca de clases. Project_hook.vcx se encuentra en el directorio …\Samples\Solution\Tahoe.

Vea también

Arquitectura del objeto Proyecto | Herramientas de productividad para el desarrollo | Jerarquía de objetos de un proyecto


Configurar una aplicación

Una aplicación de Visual FoxPro debe ser configurada apropiadamente para que se ajuste a las especificaciones fijadas durante la planificación.

En esta sección

Establecer el punto de partida
Explica como configurar el archivo que será el punto de inicio de ejecución de una aplicación.
Inicializar el entorno
Describe como configurar el Entorno de la aplicación.
Controlar el bucle de eventos
Describe como comenzar y como detener la aplicación con Bucle de Eventos.

Secciones Relacionadas

Desarrollar aplicaciones Visual FoxPro
Explica los conceptos acerca de como desarrollar aplicaciones en Visual FoxPro, instrucciones para la creación de base de datos e interfaces de usuario; y otras tareas necesarias para las aplicaciones en Visual FoxPro.
Planificar aplicaciones
Describe los diversos pasos involucrados para la planificación adecuada de una aplicación.
Arquitectura de la aplicación
Describe como la arquitectura de una aplicación en Visual Forro varía según los tipos de aplicaciones que se decida crear.
Crear aplicaciones con el marco de aplicaciones
Explica como crear una aplicación con el Marco de Trabajos para Aplicaciones, usando el Asistente de Aplicaciones y el Generador de Aplicaciones.
Estructurar un programa principal
Provee información que debe tener la estructura de un archivo principal.
Personalizar el Entorno de Visual FoxPro
Describe el modo de configurar Visual FoxPro y sus aplicaciones para un uso óptimo.
Crear la interfaz de usuario
Explica las cualidades de los formularios, controles, barras de tarea, clases, y menús que posee Visual FoxPro para crear una rica interfaz de usuario.
Crear informes y etiquetas
Explica como crear y modificar Reportes y Etiquetas.
Programar aplicaciones internacionales
Describe como diseñar e implementar aplicaciones en Visual FoxPro que efectivamente sean Internacionales.
Optimizar aplicaciones
Describe los conceptos de como maximizar el desempeño de una aplicación de Visual FoxPro.
Introducción a las variables del sistema
Describe cuales son las variables de sistema y como son usadas en aplicaciones de Visual FoxPro.

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Establecer el punto de partida

Debe vincular todos los componentes y establecer un punto de partida para la aplicación con un archivo principal. El archivo principal sirve como punto de partida para la ejecución de su aplicación y puede constar de un programa o formulario. Cuando los usuarios ejecuten la aplicación, Visual FoxPro inicia el archivo principal de la aplicación que a su vez, ejecuta todos los demás componentes a medida que se vayan necesitando. Todas las aplicaciones deben tener un archivo principal. La mejor elección suele ser crear un programa principal en la aplicación. Sin embargo, puede combinar las funciones del programa principal y la interfaz inicial de usuario si usa un formulario como programa principal..

Si usa un Asistente para aplicaciones para crear la aplicación, puede permitir que el asistente cree un programa de archivo principal de forma automática. No es necesario que especifique un archivo principal a menos que desee cambiarlo una vez finalizadas las acciones del asistente.

Para establecer el punto de partida para una aplicación

  1. En el Administrador de proyectos, seleccione el archivo.
  2. En el menú Proyecto, elija Establecer principal.
    Nota El archivo que establezca como archivo principal de la aplicación se marca automáticamente como incluido, por lo que se considera como de sólo lectura después de compilar la aplicación.

Sólo se puede establecer como archivo principal un archivo del proyecto. El archivo principal se muestra en negrita, como se muestra en la ilustración siguiente.

Establecer un archivo principal en el Administrador de proyectos

Vea también

Arquitectura de la aplicación | Compilar una aplicación | Inicializar el entorno | Archivos del marco de aplicaciones | Generador de aplicaciones


Inicializar el entorno

La primera tarea que debe llevar a cabo un archivo principal u objeto Application es la configuración del entorno de la aplicación. El entorno de desarrollo predeterminado de Visual FoxPro establece determinados valores para los comandos SET y las variables de sistema en el momento de abrir Visual FoxPro. Sin embargo, es posible que esta configuración no sea el entorno más adecuado para la aplicación.

Sugerencia Para ver los valores predeterminados del entorno de desarrollo de Visual FoxPro, inicie Visual FoxPro sin ningún archivo de configuración, escribiendo VFP -C y a continuación, ejecute el comando DISPLAY STATUS (Comandos).

Siempre es conveniente guardar los valores iniciales del entorno y configurar un entorno específico para la aplicación en el código de configuración.

Para capturar comandos para el entorno actual

  1. En el menú Herramientas, elija Opciones.
  2. Presione Mayúsculas y elija Aceptar para mostrar los comandos SET del entorno en la ventana Comandos.
  3. En la ventana Comandos, copie y pegue en el programa.

En un entorno específico de la aplicación, podría incluir código para:

  • Inicializar variables.
  • Establecer una ruta de acceso predeterminada.
  • Abrir las bases de datos, las tablas libres y los índices necesarios. Si la aplicación requiere acceso a datos remotos, también se puede solicitar al usuario la información de inicio de sesión necesaria en la rutina de inicialización.
  • Hacer referencia a archivos externos de biblioteca y procedimientos.

Por ejemplo, si desea comprobar el valor predeterminado del comando SET TALK, almacenar este valor y establecer SET TALK como OFF para la aplicación, podría incluir el siguiente código en el procedimiento de configuración:

IF SET('TALK') = "ON"
SET TALK OFF
cTalkVal = "ON"
ELSE
cTalkVal = "OFF"
ENDIF

Mostrar la interfaz inicial

La interfaz inicial de usuario puede ser un menú, un formulario o cualquier otro componente de usuario. Normalmente una aplicación mostrará una pantalla de inicio de sesión o un cuadro de diálogo de inicio antes de mostrar el menú o formulario inicial.

Para iniciar la interfaz de usuario en el programa principal puede utilizar un comando DO para ejecutar un menú o un comando DO FORM para ejecutar un formulario.

DO FORM STARTUP.SCX

Restaurar el entorno original

Suele ser útil guardar los valores predeterminados en variables públicas, en una clase personalizada o como propiedades de un objeto Application para que pueda restaurar estos valores al salir de la aplicación. Por ejemplo, si guarda la configuración de SET TALK en una variable pública cTalkVal, ejecute el siguiente comando:

SET TALK &cTalkVal
Nota Los nombres de variables utilizados con macro sustitución no deben contener el prefijo "m." ya que el punto se asume como una concatenación y producirá un error de sintaxis.

Puede inicializar el entorno en un programa diferente al programa en el cual se está restaurando --por ejemplo, si lo inicializa llamando un procedimiento, pero restaura el entorno llamando otro-- asegúrese que puede acceder a los valores que ha guardado. Por ejemplo, almacene los valores a restaurar en variables públicas, clases personales, o como propiedades de un objeto application.

Vea también

Establecer el punto de partida | Controlar el bucle de eventos | Compilar una aplicación | Estructurar un programa principal | Optimizar la velocidad de inicio de Visual FoxPro | SET (Introducción al comando) | DISPLAY STATUS (Comando)


Controlar el bucle de eventos

Cuando el entorno esté configurado y se muestre la interfaz de usuario inicial, podrá establecer un bucle de eventos para esperar la interacción del usuario.

Para controlar el bucle de eventos

  • Ejecute un comando READ EVENTS, que hace que Visual FoxPro comience a procesar los eventos de usuario, como los clic del ratón y las pulsaciones de teclas.

Es importante situar correctamente el comando READ EVENTS en el archivo principal, porque todo el proceso de este archivo se suspende desde el momento en que se ejecuta el comando READ EVENTS, hasta que se ejecuta un comando CLEAR EVENTS. Por ejemplo, podría ejecutar un comando READ EVENTS como el último comando de un procedimiento de inicialización, que se ejecutaría después de inicializar el entorno y mostrar la interfaz de usuario. Si no incluye el comando READ EVENTS, la aplicación volverá al sistema operativo después de la ejecución.

Una vez iniciado el bucle de eventos, la aplicación está bajo el control del último elemento mostrado de la interfaz de usuario. Por ejemplo, si se ejecutan los dos comandos siguientes en el archivo principal, la aplicación muestra el formulario Startup.scx:

DO FORM STARTUP.SCX
READ EVENTS

Si no incluye en el archivo principal un comando READ EVENTS o su equivalente, la aplicación se ejecutará correctamente desde la ventana Comandos dentro del entorno de programación. Sin embargo, cuando se ejecuta desde el menú o la pantalla principal, la aplicación aparecerá durante unos instantes y después finalizará.

La aplicación también debe proporcionar una forma de terminar el bucle de eventos.

Para terminar el bucle de eventos

  • Ejecute un comando CLEAR EVENTS.

Normalmente el comando CLEAR EVENTS se ejecuta desde un menú o botón de un formulario. El comando CLEAR EVENTS suspende el procesamiento del evento en Visual FoxPro y devuelve el control al programa que ejecutó el comando READ EVENTS e inició el bucle de eventos.

Para ver un programa de ejemplo sencillo, vea Estructurar un programa principal.

Precaución Necesita establecer una forma de salir del bucle de eventos antes de iniciarlo. Asegúrese de que la interfaz tiene un mecanismo (como un botón o un comando de menú Salir) para ejecutar el comando CLEAR EVENTS.

Vea también

Inicializar el entorno | Estructurar un programa principal | Compilar una aplicación | READ EVENTS (Comando) | Agregar archivos a un proyecto


Crear aplicaciones con el marco de aplicaciones

El marco de aplicaciones se ha diseñado para que incluya todos los elementos necesarios y muchos opcionales, para hacer que una aplicación sea efectiva y cómoda de usar. Aunque el marco ya ofrece por sí mismo una gran flexibilidad y potencia para la creación de aplicaciones de la forma más cómoda en cada caso, esta sección se dedica a describir otras maneras de utilizar el Asistente para aplicaciones y el Generador de aplicaciones para simplificar la tarea de desarrollo de sus aplicaciones.

En esta sección

Crear un marco de aplicaciones (framework)
Aprenda cómo crear un Marco de aplicaciones utilizando el Asistente de aplicaciones o el ítem Nueva aplicación en la Galería de componentes.
Archivos del marco de aplicaciones
Ofrece una descripción de los archivos que se incluyen en el Marco de aplicaciones.
Seleccionar datos con el Generador de aplicaciones
Describe cómo seleccionar los orígenes de datos que desea distribuir con su aplicación después de diseñarla.
Administrar documentos con el Generador de aplicaciones
Discute cómo diseñar y elegir los documentos que desea agregar a su aplicación una vez que ha seleccionado los orígenes de datos.
Especificar un Generador de aplicación con Builder.dbf
Proporciona la tabla Builder.dbf, la cual puede utilizar para especificar un generador de aplicación. La tabla contiene campos que representan el nombre de un generador, una descripción del generador y un campo llamado Type que identifica la propiedad Clase o Clase base que llama el generador personal.

Secciones relacionadas

Crear una aplicación
Discute cómo crear aplicaciones Visual FoxPro, las cuales pueden incluir una o más bases de datos, un programa principal que establece el entorno del sistema de la aplicación, una interfaz de usuario que consiste de formularios, barras de herramientas y menús.
Establecer el punto de partida
Describe cómo el archivo principal es el punto de inicio de su aplicación, y puede consistir de un programa o formulario. Cuando se ejecuta su aplicación, Visual FoxPro lanza el archivo principal de su aplicación, el cual a su vez ejecuta todos los otros componentes que sean necesarios.
Inicializar el entorno
Discute cómo establecer el entorno de la aplicación es la primera tarea que debe cumplir un archivo principal o un objeto aplicación.
Controlar el bucle de eventos
Describe cómo establecer un bucle de eventos, el cual hace que Visual FoxPro empiece a procesar los eventos de usuario tales como clic de ratón y pulsaciones de tecla. Esto ocurre después que el entorno se ha establecido y se ha mostrado la interfaz de usuario inicial.
Optimizar el rendimiento cliente/servidor
Discute cómo poner a punto su aplicación para ganar el máximo rendimiento incrementando la cantidad de datos en la red.
Crear la interfaz de usuario
Cubre la creación de formularios, clases, controles y barras de herramientas, puede proporcionar un rico conjunto de herramientas para su interfaz de usuario.
Convertir las bases de datos de Visual FoxPro
Explica cómo utilizar los asistentes de conversión para transferir bases de datos, tablas y vistas de su sistema a un sistema remoto Microsoft SQL Server.
Programar aplicaciones internacionales
Describe cómo puede diseñar y desarrollar sus aplicaciones Visual FoxPro para que sean tan efectivas internacionalmente como localmente.


Crear un marco

Puede crear un marco de aplicaciones con el Asistente para aplicaciones o con el elemento Aplicación nueva de la Galería de componentes. Al utilizar la Galería de componentes, se agrega una nueva carpeta de proyecto a la carpeta Favoritos.

Independientemente del método que utilice, Visual FoxPro mostrará un Generador de aplicaciones en el que podrá agregar la información que se almacenará en una meta tabla.

Para crear una aplicación

  1. En el menú Herramientas, haga clic en Asistentes y luego haga clic en Aplicaciones.

    –O bien–

    En la carpeta Catálogos de la Galería de componentes, haga doble clic en el elemento Nueva aplicación.

  2. En al cuadro de diálogo Asistente para aplicaciones:
    • Especifique el nombre del proyecto.
    • Acepte o busque el archivo de proyecto.
    • Elija las opciones para Crear estructura de directorios del proyecto (predeterminado) y Agregar al catálogo de Favoritos (predeterminado).

Para mayor información, consulte Crear aplicaciones con el marco de aplicaciones en la ayuda.

Puede utilizar la Galería de componentes para agregar formularios, informes, datos y objetos a su nuevo marco de aplicación y controles a formularios. Cuando utilice la Galería de componentes para agregar un formularios a una aplicación, puede crear un nuevo formulario o subclase desde una clase existente.

Vea también

Archivos del marco de aplicaciones | Herramientas de productividad para el desarrollo | Ejecutar el ejemplo de enlaces del Administrador de proyectos


Archivos del marco de aplicaciones

Un marco de aplicaciones incluye el archivo de proyecto y una biblioteca de clases de inicio obtenida como subclase de las clases de base de Visual FoxPro lista para rellenarse con tablas y documentos nuevos o ya existentes.

Archivo de inclusión principal
Este archivo #INCLUDE común lo utilizan los componentes con configuraciones y cadenas. También incluye el valor APP_GLOBAL, el nombre que utilizan los componentes como referencia.
Archivo de configuración
Archivo Config.fpw opcional utilizado en aplicaciones tales como formularios de alto nivel, para implementar configuraciones tales como SCREEN=OFF.
Clase ProjectHook
Controla los eventos relacionados con el proyecto, tales como agregar nuevos archivos. También tiene acceso al Generador de aplicaciones para establecer acciones y propiedades de la interacción de los archivos con la aplicación.
Metatabla de aplicación
Contiene información como la configuración del proyecto, establecida o utilizada por el Generador de aplicaciones y los enganches de proyecto.
Generador de aplicaciones
Facilita la adición de componentes al proyecto y el establecimiento de propiedades como las opciones de desplazamiento.

El marco le permite especificar si desea crear una aplicación completa o sólo un marco de aplicaciones. Si opta por crear una aplicación completa, puede incluir en la aplicación una base de datos y formularios o informes que ya haya creado, o bien puede crear una aplicación completamente nueva mediante una plantilla de base de datos. Si elige crear un marco, puede volver después y agregar componentes al marco.

Vea también

Crear un marco de aplicaciones (framework) | Herramientas de productividad para el desarrollo


Seleccionar datos con el Generador de aplicaciones

Una vez que ha diseñado su aplicación, debe seleccionar los orígenes de los datos que necesita para programar la aplicación. Puede utilizar Ficha Datos, Generador de aplicaciones para agregar bases de datos y tablas a la aplicación y el proyecto.

Agregar datos con la ficha Datos

Si ya dispone de datos, puede utilizar la ficha Datos para crear el entorno de datos de su aplicación al agregar a la aplicación tablas libres o pertenecientes a una base de datos. En el momento en que especifica una tabla, el Generador de aplicaciones la presenta en la cuadrícula y se prepara para crear un formulario y un informe para esa tabla. En realidad, hasta este punto sólo ha seleccionado qué orígenes de datos desea incluir. Éstos no se agregarán realmente al marco hasta que seleccione el botón Generar. Si sólo desea agregar el origen de los datos, sin que se creen nuevos formularios e informes, debe desactivar las opciones que aparecen junto al nombre de la tabla. Si tiene activada la casilla de verificación de un formulario o informe, cuando haga clic en el botón Generar, el asistente correspondiente creará un nuevo documento para ese origen de datos. En las listas de estilo desplegable puede seleccionar un estilo visual para esos documentos.

Posteriormente puede modificar estos documentos a través de la ficha Formulario o Informe del Generador de aplicaciones. Si aparecen orígenes de datos en la cuadrícula de la ficha Datos y hace clic en el botón Aceptar para salir del Generador de aplicaciones, Visual FoxPro le solicitará que agregue las tablas, formularios e informes a su proyecto y aplicación. Al hacer clic en el botón Generar se realiza la misma función.

Los documentos generados por el Generador de aplicaciones contienen todos los campos del origen de datos seleccionado. Si desea tener más control sobre el diseño de su documento, debe ejecutar el Asistente para formularios o el Asistente para informes directamente desde el menú Asistentes, para después agregar el documento que creó a la ficha Formulario o Informe. También puede agregar o modificar formularios o informes desde el Generador de aplicaciones.

Cuando utiliza el Generador de aplicaciones para agregar datos, se marcan en el proyecto como Excluidos, lo que significa que no se incluyen en la aplicación. Esto le permite modificar y agregar tablas. Una tabla incluida en una aplicación es de sólo lectura y no puede modificarse. Si desea incluir una tabla en el proyecto y en consecuencia hacerla de sólo lectura (por ejemplo, una tabla especial donde los datos no cambian), haga clic derecho sobre la tabla en el Administrador de proyectos, y seleccione en el menú el ítem Incluir.

Crear datos con la ficha Datos

También puede usar los botones del Asistente para bases de datos o del Asistente para tablas de la ficha Datos para crear nuevas tablas para agregarlas a su proyecto y aplicación. Estos asistentes crean nuevas estructuras de datos para su aplicación en la carpeta de datos correspondiente y le permiten generar nuevos documentos siguiendo el procedimiento descrito anteriormente.

Los documentos básicos que crea el Generador de aplicaciones contienen todos los campos de las tablas en las que están basados. Estos documentos son excelentes para las funciones más elementales de entrada de datos y generación de informes, pero es posible que desee crear en su aplicación documentos con otras finalidades específicas. El Asistente para formularios y el Asistente para informes ofrecen más flexibilidad, y las Foundation Classes que se incluyen en la Galería de componentes ofrecen más funciones para los formularios e informes.

Buscar los datos

Si utiliza el Generador de aplicaciones para agregar datos y documentos a su aplicación, el enlace de los datos se realiza automáticamente. El Generador de aplicaciones ofrece, sin embargo, la opción Directorio de datos predeterminado, en la ficha Avanzadas, Generador de aplicaciones, cuando esté codificando manualmente documentos para enlazarlos con datos y necesite del marco de la aplicación para controlar la resolución de la ruta de acceso a los datos. Esa opción se usa para especificar una carpeta que contiene sus orígenes de datos y proporcionar así la información necesaria acerca de la ruta de acceso a esos datos.

Importar datos

En muchos casos, puede disponer ya de datos que desee utilizar, aunque es posible que no se encuentren en el formato adecuado. Puede que se trate de formato de texto o de una hoja de cálculo. En estos casos, puede usar el Asistente para importar para migrar los datos a tablas de FoxPro. Una vez efectuado este paso, esas tablas se pueden agregar fácilmente a la aplicación.

Convertir datos

Visual FoxPro incluye un asistente para convertir que permite transferir los datos de FoxPro a bases de datos de SQL Server. Si las necesidades de su aplicación justifican el uso de una de esas bases de datos, puede migrar fácilmente los datos existentes al mismo tiempo que mantiene intacta la aplicación.

El Asistente para Conversión a SQL le permite crear vistas remotas en tablas. Si selecciona esta opción, las tablas en su base de datos se cambiarán a vistas remotas. Ya que los documentos (formularios o informes) de su aplicación solamente están enlazados al nombre del origen de datos, aún puede ejecutar su aplicación, pero los datos utilizados serán datos SQL Server en lugar de tablas FoxPro.

Si ya dispone de datos de SQL Server y desea usarlos en su aplicación, puede crear fácilmente una base de datos de Visual FoxPro que contenga vistas remotas que apunten a esos orígenes de datos. El marco de la aplicación tratará esos datos igual que si fueran tablas originales de FoxPro.

Vea también

Administrar documentos con el Generador de aplicaciones


Administrar documentos con el Generador de aplicaciones

Una vez seleccionados los orígenes de los datos, tiene que diseñar y elegir los documentos que quiere agregar a su aplicación. El Generador de aplicaciones es una herramienta muy eficaz para esta tarea, dado que no sólo agrega el documento al proyecto, sino que además lo integra en el marco. Dado que el marco utiliza información ampliada de los documentos y la guarda en una metatabla, el Generador de aplicaciones se ocupará de realizar automáticamente esa integración. La metatabla se almacena en la misma carpeta que el proyecto de la aplicación y tiene el mismo nombre que el proyecto, con el sufijo “_app.dbf”. La información ampliada del documento que se guarda en la metatabla del marco especifica los siguientes datos:

  • Un nombre fácil y descriptivo que será el que aparezca en los cuadros de diálogo Abrir o Nuevo.
  • Si aparece o no un formulario en el cuadro de diálogo Nuevo.
  • Si aparece o no un formulario en el cuadro de diálogo Abrir.
  • Si un formulario utiliza o no una barra de herramientas de exploración.
  • Si un formulario utiliza o no un menú de exploración.
  • Si un formulario permite o no la apertura de múltiples instancias.

Es posible hacer que el generador cree automáticamente nuevos formularios e informes cuando agregue datos a la aplicación. Estos documentos los generan los asistentes asociados.

Una vez que un documento se ha agregado al marco de la aplicación, aparecerá automáticamente en las fichas Formularios o Informes.

Al abrir la ficha Formularios, aparece la lista de todos los formularios agregados a la aplicación, tanto manualmente como a partir de elementos de la ficha Datos.

Nota Es posible que algún formulario del proyecto no aparezca en la ficha Formularios. La causa es que el formulario no está registrado en la metatabla de la aplicación. Se puede registrar seleccionando el formulario con el botón Agregar, en la página de la ficha Formularios. Además, el botón Limpiar, de la ficha Avanzadas, Generador de aplicaciones sincronizará los documentos del proyecto con los que estén registrados en la meta-tabla. También es posible modificar o quitar cualquiera de esos documentos de la ficha correspondiente.

Para agregar documentos en el Generador de aplicaciones

  1. Hacer clic en el botón Agregar en la ficha correspondiente del documento (Formulario o Informe) y seleccionar un documento. El marco de la aplicación puede manejar automáticamente distintos tipos de documentos. Con los formularios, se puede seleccionar un archivo de formulario (.scx), una clase de formulario en una biblioteca de clases (.vcx) o un archivo de programa (.prg) que contiene el código que ejecuta el formulario. Con los informes, se puede elegir un archivo de informe (.frx), un archivo de etiqueta (.lbx) o un archivo de programa (.prg) que contiene el código que ejecuta el informe.
  2. Una vez que se haya agregado el archivo a la lista de documentos, se pueden elegir entre distintas configuraciones que afectarán a la forma en que ese documento funcionará en la aplicación.

    La ficha Formularios permite controlar las siguientes opciones:

    • El nombre descriptivo del formulario.
    • Si el formulario debe estar limitado a una sola instancia.
    • Si el formulario utiliza o no una barra de herramientas de exploración.
    • Si el formulario utiliza o no un menú de exploración.
    • Si el formulario aparece o no en el cuadro de diálogo Nuevo.
    • Si el formulario aparece o no en el cuadro de diálogo Abrir.

      La ficha Informes le permite controlar las siguientes opciones:

    • El nombre descriptivo del informe.
    • Si el informe aparece o no en el cuadro de diálogo Imprimir informes.

Para modificar documentos en el Generador de aplicaciones

  1. Abrir cualquier formulario o informe de los que aparecen en la lista; para ello, resaltar el nombre del documento y, a continuación, hacer clic en el botón Modificar. Para un formulario, puede que aparezca en pantalla un mensaje parecido al siguiente:

    “¿Desea agregar un objeto mediador a este formulario para que pueda utilizarse completamente en el marco de la aplicación?”

    Si la respuesta es “Sí”, el Generador de aplicaciones agrega al formulario un objeto que comunica automática y directamente con el objeto aplicación utilizado por el marco. Este objeto proporciona funciones adicionales a los formularios de la aplicación. Por ejemplo, al cerrar un formulario, el objeto puede detectar si hay datos guardados en memoria intermedia que no se hayan guardado y pregunta si se deben guardar los cambios. Además, el objeto tratará de distinta forma un formulario iniciado mediante el cuadro de diálogo Nuevo de otro iniciado con el cuadro de diálogo Abrir.

  2. En el diseñador, se modifica el documento hasta que tenga la forma deseada. Se puede utilizar la Galería de componentes para agregar un fondo o una Foundation Class. Puede usar la Galería de componentes para agregar funciones y características especiales al documento.

Para quitar documentos en el Generador de aplicaciones

  • Se puede quitar cualquier documento de la metatabla resaltando el documento y haciendo clic en el botón Quitar. Después de quitar el documento de la aplicación, permanecerá en el archivo del proyecto.
    Nota La aplicación se ejecutará independientemente de si se ha guardado o no un informe o formulario en la metatabla. Mientras haya código que especifique cómo debe ejecutarse el documento, la aplicación podrá utilizarlo sin ningún problema. La ventaja que supone usar el Generador de aplicaciones es que no es necesario preocuparse de la forma en que la aplicación administra la ejecución de formularios e informes. Esta tarea se realiza de forma automática.

Vea también

Seleccionar datos con el Generador de aplicaciones | Crear aplicaciones con el marco de aplicaciones


Especificar un Generador de aplicación con Builder.dbf

Puede especificar la tabla Builder.dbf para especificar una aplicación generadora. Cada registro contiene campos que representan el nombre de un generador y, opcionalmente, una descripción del generador y un campo llamado Type que identifica la propiedad Class o Base Class que invoca el generador personalizado. Por ejemplo, la entrada Type para un Botón de comando es CommandButon y la entrada Type para el Generador de autoformato es Multiselect porque se ejecuta sobre múltiples controles seleccionados.

La siguiente tabla describe un registro de tabla BUILDER.

Nombre de campo | Tipo de campo | Ancho (comentario)
NAME | Character | 45 (Nombre del generador)
DESCRIPT | Memo | 4
BITMAP (no se utiliza) | Memo | 4
TYPE | Character | 20
PROGRAM | Memo | 4 (Aplicación generadora)
CLASSLIB | Memo | 4 (Nombre de la biblioteca de clases)
CLASSNAME | Memo | 4 (Clase del generador)
PARMS | Memo | 4 (lista de parámetros transferidos)

La aplicación generadora con nombre compara el valor del campo Type y la Clase del objeto, y se inicia si hay una coincidencia. Si se encuentra más de una coincidencia, se muestra un cuadro de diálogo de selección.

De forma predeterminada, la aplicación Builder.app transfiere tres parámetros, presentados en el campo PARMS de Builder.dbf a un programa generador:

Entrada PARMS | Descripción
wbReturnValue | Una variable que contiene un valor que hay que devolver a Builder.app.
<cadena de caracteres> | Una cadena literal que hay que pasar a la tabla Register.
<valor opcional> | Una palabra clave u otro valor que hay que transferir a Builder.app

Para crear un generador personalizado

  1. Escriba una aplicación que proporcione una interfaz y modifique el control o controles seleccionados.
  2. Guarde la aplicación en la carpeta Wizards.
  3. Abra la tabla Builders.dbf y agregue un registro nuevo.
  4. Escriba valores para los campos Name, Descript, Type y Program.

    Si su generador personalizado usa valores adicionales, también puede escribir valores para los demás campos.

Después de llenar todas las entradas y cerrar la ventana Examinar, se registra el nuevo generador. Por ejemplo, si crea un programa que cambia las fuentes de controles seleccionados y posteriormente guarda el programa en un archivo llamado Chgfont.prg, la tabla siguiente muestra las entradas para Builder.dbf.

Nombre de campo | Valor
NAME | El generador que cambia fuentes
DESCRIPT | Este generador modifica la fuente de todos los controles seleccionados
TYPE | MULTISELECT
PROGRAM | Chgfont.prg

Cuando utilice el generador, Visual FoxPro muestra el cuadro de diálogo Seleccionar generador ya que ahora hay dos generadores del tipo Multiselect. Cuando elige El generador que cambia fuentes, Builder.app ejecuta el programa que usted ha guardado como Chgfont.prg.

Vea también

Generadores | Generador de aplicaciones | _Builder (Variable del sistema) | Generador de autoformato | Generador de cuadros combinados | Generador de grupos de comandos | Generador de cuadros de edición | Generador de formularios | Generador de cuadrículas | Generador de cuadros de lista | Generador de grupos de opciones


Crear la interfaz de usuario

Una interfaz bien diseñada puede guiar a los usuarios por su aplicación. Los formularios, clases, controles, menús y barras de herramientas ofrecen un conjunto variado de herramientas para diseñar una excelente interfaz de usuario.

En esta sección

Crear formularios
Su aplicación necesita formularios para que los usuarios puedan ver y entrar datos. No obstante, puede personalizar los formularios estándar, visualmente y mediante programación, para crear un entorno especializado para sus usuarios.
Trabajar con formularios
Una vez creado el formulario, puede ejecutarlo, ocultarlo o modificarlo de diferentes maneras.
Utilizar controles
Los controles administran las interacciones entre los usuarios y su aplicación. Microsoft Visual FoxPro ofrece diversos controles para mejorar la interfaz de su aplicación.
Diseñar menús y barras de herramientas
Un buen sistema de menús dice mucho a los usuarios acerca del diseño y la estructura de su aplicación. Si diseña con atención los menús y las barras de herramientas puede mejorar la facilidad de uso de su aplicación y proporcionar acceso inmediato a las tareas comunes.

Secciones relacionadas

Desarrollar aplicaciones Visual FoxPro
En esta sección se incluye información conceptual acerca de cómo desarrollar aplicaciones Visual FoxPro, instrucciones para crear bases de datos y la interfaz de usuario y otras tareas necesarias para crear aplicaciones Visual FoxPro.
Crear una aplicación
Discute cómo crear una aplicación Visual FoxPro, incluye una o más bases de datos, un programa principal que establece el entorno de sistema de su aplicación, y una interfaz de usuario que involucra formularios, barras de herramientas y menús.
Establecer el punto de partida
Describe cómo el archivo principal es el punto de inicio de su aplicación y puede ser un programa o formulario. Cuando su aplicación se ejecuta, Visual FoxPro lanza el archivo principal de la misma, el cual a su vez ejecuta todos los otros componentes como sea necesario.
Inicializar el entorno
Establecer el entorno de la aplicación es la primera tarea que el archivo principal u objeto aplicación debe cumplir.
Controlar el bucle de eventos
Aprenda cómo establecer un bucle de eventos, el cual hace que Visual FoxPro empiece a procesar los eventos de usuario como clics de ratón y golpes de tecla. Esto ocurre después de establecer el entorno y que se haya mostrado la interfaz de usuario inicial.
Crear aplicaciones con el marco de aplicaciones
Explica cómo crear aplicaciones con el Marco de aplicaciones utilizando el Asistente para aplicaciones y el Generador de aplicaciones.
Optimizar el rendimiento cliente/servidor
Aprenda cómo puede optimizar su aplicación para obtener el máximo rendimiento incrementando la producción de datos.
Convertir (conversión) bases de datos de Visual FoxPro
Explica como utilizar el Asistente para conversión, para transferir bases de datos, tablas y vistas desde su sistema a uno remoto, Microsoft SQL Server.
Programar aplicaciones internacionales
Describe cómo puede diseñar y desarrollar sus aplicaciones Visual FoxPro para que sean tan efectivas internacionalmente como domésticamente.


Crear formularios

Los formularios no sólo sirven para ofrecer a los usuarios una interfaz familiar para ver e introducir datos en una base de datos, sino que ofrecen mucho más que una interfaz. Los formularios ofrecen un amplio conjunto de objetos que pueden responder a los eventos del usuario (o del sistema) permitiéndoles realizar las tareas de administración de información de la forma más sencilla e intuitiva posible.

En esta sección

Diseñar formularios
Proporciona los fundamentos acerca de las posibilidades del Diseñador de formularios, con vínculos a temas relacionados con la creación de formularios y el establecimiento del entorno de datos.
Crear interfaces de documentos únicos o múltiples
Describe los dos tipos de aplicaciones posibles en Visual FoxPro y los tipos de formularios que admiten ambos tipos de interfaz. Incluye vínculos a temas relacionados con los diversos tipos de formularios.
Ampliar formularios con conjuntos de formularios
Explica las ventajas de incluir múltiples formularios como un grupo en un conjunto de formularios y describe cómo crear y trabajar con conjuntos de formularios.
Agregar objetos a formularios
Muestra los tipos de objetos que puede agregar a un formulario y ofrece los fundamentos de las dos categorías de objetos en Visual FoxPro: contenedores y controles. Proporciona vínculos a temas relacionados con el agregado de contenedores y controles a formularios.
Agregar propiedades y métodos a un formulario
Incluye instrucciones acerca de cómo agregar una nueva propiedad a un formulario, crear una propiedad de matriz, crear un nuevo método para un formulario e incluir un archivo en un formulario. Proporciona vínculos a temas acerca de la manipulación de objetos, la definición del comportamiento del formulario y la modificación del código de eventos y métodos.
Guardar formularios
Contiene instrucciones acerca de cómo guardar un formulario en el Diseñador de formularios y guardar un formulario o los controles seleccionados como una definición de clase.

Secciones relacionadas

Crear la interfaz de usuario
Con los formularios, las clases, los controles, los menús y las barras de herramientas de Visual FoxPro, puede generar interfaces que ayuden a los usuarios a tener acceso a todas las posibilidades que ofrecen sus programas.
Trabajar con formularios
Una vez creado el formulario, puede ejecutarlo, ocultarlo o modificarlo de diferentes maneras.
Utilizar controles
Los controles administran las interacciones entre los usuarios y su aplicación. Visual FoxPro ofrece diversos controles para mejorar la interfaz de su aplicación.
Diseñar menús y barras de herramientas
Un buen sistema de menús dice mucho a los usuarios acerca del diseño y la estructura de su aplicación. Si diseña con atención los menús y las barras de herramientas puede mejorar la facilidad de uso de su aplicación y proporcionar acceso inmediato a las tareas comunes.


Diseñar formularios

Visual FoxPro proporciona un eficaz Diseñador de formularios para que el diseño de formularios resulte rápido y sencillo. Puede disponer de:

  • Diversos tipos de objetos en los formularios.
  • Datos unidos a objetos del formulario.
  • Formularios de nivel superior o formularios secundarios.
  • Múltiples formularios que pueden manipularse conjuntamente.
  • Formularios basados en sus propias plantillas personalizadas.

Los formularios y los conjuntos de formularios son objetos con sus propias propiedades, eventos y métodos que pueden establecerse en el Diseñador de formularios. Un conjunto de formularios consta de uno o más 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 ejecución.

Vea también

Crear formularios | Crear un formulario nuevo | Establecer el entorno de datos | Crear interfaces de documentos únicos o múltiples | Especificar un tipo de formulario


Crear un formulario nuevo

Los formularios muestran los campos y los registros de las tablas y las vistas, y suelen incluir controles de desplazamiento para ayudarle a moverse de un registro a otro.

En Visual FoxPro puede crear formularios de las maneras siguientes:

  • Utilice los asistentes para formularios para crear formularios listos para usar.
  • En el menú Formulario, elija Formulario rápido para crear un formulario sencillo que puede personalizar agregando sus propios controles.
  • Utilice el Diseñador de formularios para modificar formularios existentes o para crear sus propios formularios.

Usar un Asistente para formularios

Si desea crear un formulario nuevo, puede utilizar un asistente para formularios para que le ayude a configurarlo. El asistente le plantea una serie de preguntas y genera un formulario basado en las respuestas. Puede elegir entre varias opciones de estilo distintas y obtener una vista previa del mismo antes de crearlo.

Para crear un formulario nuevo con un asistente

  1. En el Administrador de proyectos, seleccione la ficha Documentos y, a continuación, Formularios.
  2. Elija Nuevo.
  3. Elija Asistente para formularios.
  4. Seleccione el tipo de formulario que desea crear.
  5. Siga las instrucciones de las pantallas del asistente.

También puede tener acceso a los asistentes para formularios desde el menú; para ello, elija el menú Herramientas, a continuación el comando Asistentes y, por último, seleccione Formulario.

Visual FoxPro proporciona dos asistentes para formularios diferentes que le ayudan a crear formularios:

  • Para crear un formulario básico a partir de una tabla, elija el Asistente para formularios.
  • Para crear un formulario que incorpore datos de dos tablas vinculadas en una relación de uno a varios, elija el Asistente para formularios uno a varios.

Los formularios que crea con los asistentes tienen una serie de botones de desplazamiento estándar para que pueda ver los distintos registros del formulario, modificarlos, buscarlos, etc. Si crea un formulario en una base de datos, el Asistente para formularios puede usar la máscara de entrada y la configuración del formato guardadas en la base de datos.

Iniciar el Diseñador de formularios

Si desea crear su propio formulario sin utilizar un asistente, use el Diseñador de formularios. Con el Diseñador de formularios, podrá agregar campos y controles al formulario y personalizarlo ajustando y alineando los controles.

El comando Formulario rápido hace que resulte más fácil comenzar a crear un formulario. Este comando muestra el Generador de formularios, que agrega al formulario los campos seleccionados en tablas o vistas.

Para crear un formulario nuevo

  1. En el Administrador de proyectos, elija la ficha Documentos.
  2. Seleccione el icono Formularios.
  3. Elija Nuevo.
  4. Seleccione Nuevo formulario. Aparecerá la ventana Diseñador de formularios, en la que podrá comenzar a crear el formulario.

    –O bien–

  • En el menú Archivo, elija Nuevo, seleccione Formulario y, a continuación, elija Nuevo archivo.

    –O bien–

  • Utilice el comando CREATE FORM.

Modificar formularios

Si los formularios creados mediante el asistente o el generador no se adaptan a sus necesidades, puede modificarlos con el Diseñador de formularios. Con este diseñador resulta fácil mover y cambiar el tamaño de los controles, copiar o eliminar controles, alinear controles y modificar el orden de tabulación.

Para modificar un formulario ya generado

  1. En el Administrador de proyectos, seleccione la ficha Documentos.
  2. Elija el icono Formularios y seleccione el nombre del formulario.
  3. Elija Modificar.

Agregar campos rápidamente

Si desea situar rápidamente los campos de una tabla o una vista en un formulario, elija el comando Formulario rápido del menú Formulario. Este comando iniciará el Generador de formularios, que agregará los campos seleccionados desde la tabla o la vista al formulario, empleando el estilo de campo que elija. El Generador de formularios crea un formulario sin controles de desplazamiento, de forma que pueda agregar los que desee. Puede utilizar un generador de controles para agregar controles al formulario o elegirlos en la biblioteca de controles de desplazamiento predefinidos que se suministra con Visual FoxPro.

Para agregar campos a un formulario

  1. En el Administrador de proyectos, abra el formulario.
  2. En el Diseñador de formularios vaya al menú Formulario y elija Formulario rápido. Aparecerá el Generador de formularios.
  3. En la ficha Estilo, seleccione el estilo que desea para el nuevo control.
  4. En la ficha Seleccionar campos, seleccione el origen de los campos y los campos que desea agregar.
  5. Haga clic en Aceptar para generar el formulario.

    –O bien–

  6. En la barra de herramientas Controles de formularios, elija un control de datos y arrástrelo a la ventana Diseñador de formularios para crear el control.
  7. En la ventana Propiedades, elija la ficha Datos y seleccione la propiedad ControlSource.
  8. Introduzca un nombre de campo.

    –O bien–

    Seleccione un campo en la lista de campos disponibles.

Usar las barras de herramientas del Diseñador de formularios

Las barras de herramientas del Diseñador de formularios permiten tener acceso rápidamente a comandos utilizados con frecuencia y a los controles de diseño, alineación y color que se necesitan para diseñar o modificar formularios. Para obtener más información acerca de la finalidad de cada botón de las barras de herramientas, puede utilizar la característica Información sobre herramientas o buscar “Barras de herramientas”.

Vea también

Establecer el entorno de datos | Crear formularios | Crear interfaces de documentos únicos o múltiples | Diseñar formularios | Agregar controles de Visual FoxPro a un formulario


Establecer el entorno de datos

Cada formulario o conjunto de formularios incluye un entorno de datos. El entorno de datos es un objeto que incluye las tablas o vistas con las que interactúa el formulario y las relaciones entre tablas previstas en el formulario. Puede diseñar visualmente el entorno de datos en el Diseñador de entornos de datos y guardarlo con el formulario.

El entorno de datos puede automatizar la apertura y el cierre de tablas y vistas cuando se ejecuta el formulario. Además, el entorno de datos le ayuda a establecer la propiedad ControlSource para controles al llenar el cuadro del valor de la propiedad ControlSource de la ventana Propiedades con todos los campos del entorno de datos.

Para abrir el Diseñador de entornos de datos

  1. En el menú Ver, elija Entorno de datos.
  2. En el menú contextual, elija Agregar.
  3. En el cuadro de diálogo Abrir, elija la tabla o vista que desea agregar al entorno de datos.

Propiedades habituales del entorno de datos

Las siguientes propiedades del entorno de datos suelen establecerse en la ventana Propiedades:

Propiedad | Descripción | Valor predeterminado
AutoCloseTables | Controla si las tablas y las vistas se cierran cuando se libera el formulario. | Verdadero (.T.)
AutoOpenTables | Controla si las tablas y las vistas del entorno de datos se abren cuando se ejecuta el formulario. | Verdadero (.T.)
InitialSelectedAlias | Especifica la tabla o la vista que se selecciona cuando se ejecuta el formulario. | "" en tiempo de diseño. Si no se especifica, en tiempo de ejecución se seleccionará inicialmente el primer cursor agregado a DataEnvironment.

Agregar una tabla o vista al Diseñador de entornos de datos

Cuando agregue tablas o vistas al Diseñador 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 Diseñador de entorno de datos

  1. En el menú Ver, elija Entorno de datos.
  2. En el menú Entorno de datos, elija Agregar.
  3. En el cuadro de diálogo Agregar tabla o vista, seleccione una base de datos en el cuadro Base de datos.
  4. En el área Seleccionar, elija Tablas o Vistas.

    Su selección determina qué lista de campos aparece en el cuadro Tablas de la base de datos.

  5. En el cuadro Tablas de la base de datos, seleccione una tabla o una vista.
  6. Elija Aceptar.

    –O bien–

    Si no hay ninguna base de datos ni ningún proyecto abierto, elija Otros para seleccionar una tabla.

También puede arrastrar una tabla o una vista desde un proyecto abierto o desde el Diseñador de bases de datos hasta un Diseñador de entornos de datos

Establecer un índice para el Diseñador de entornos de datos

Puede establecer el orden en que los registros aparecen en el informe si establece un índice para el entorno de datos.

Para establecer un índice para el Diseñador de entornos de datos

  1. En el menú Ver, elija Entorno de datos.
  2. En el menú contextual, elija Propiedades.
  3. En la ventana Propiedades, elija Cursor1 en el cuadro Objeto.
  4. Elija la ficha Datos y seleccione la propiedad Order.
  5. Escriba un nombre de índice.

    –O bien–

    Seleccione un índice en la lista de índices disponibles.

Cuando el Diseñador 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 relación entre tablas y el mismo entorno de datos son objetos distintos en el cuadro Objeto de la ventana Propiedades.

Eliminar una tabla del Diseñador de entornos de datos

Al quitar una tabla del entorno de datos también se quitan las relaciones en las que interviene la tabla.

Para quitar una tabla o una vista del Diseñador de entornos de datos

  1. En el Diseñador de entorno de datos, seleccione la tabla o la vista.
  2. En el menú Entorno de datos, elija Quitar.

Establecer relaciones en el Diseñador de entornos de datos

Si agrega al Diseñador de entornos de datos tablas que tienen relaciones persistentes establecidas en una base de datos, las relaciones se agregarán automáticamente al entorno de datos. Si las tablas no tienen relaciones persistentes, podrá relacionarlas en el Diseñador de entornos de datos.

Para establecer relaciones en el Diseñador de entornos de datos

  • Arrastre un campo desde la tabla principal hasta la etiqueta de índice correspondiente de la tabla relacionada.

También 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 Diseñador de entornos de datos

Cuando establezca una relación en el Diseñador de entornos de datos, una línea entre las tablas indicará la relación.

Para modificar las propiedades de la relación

  • En la ventana Propiedades, seleccione la relación en el cuadro Objeto.

Las propiedades de la relación corresponden a cláusulas 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 principal. Si la tabla relacionada está indizada en una expresión, deberá establecer la propiedad RelationalExpr con esta expresión. Por ejemplo, si la tabla relacionada está indizada en UPPER(cust_id), deberá establecer RelationalExpr como UPPER(cust_id).

Si la relación no es de uno a varios, establezca la propiedad OneToMany en el valor falso (.F.). Esto equivale a utilizar el comando SET RELATION sin ejecutar SET SKIP.

Establecer la propiedad OneToMany de una relación en el valor verdadero (.T.) equivale a ejecutar el comando SET SKIP. Cuando se mueve a través de la tabla primaria, el puntero de registro permanece en el mismo registro de la tabla primaria hasta que haya recorrido todos los registros relacionados de la tabla secundaria.

Nota Si desea crear una relación de uno a varios en el formulario, establezca en el valor verdadero (.T.) la propiedad OneToMany, aunque se haya establecido una relación persistente de uno a varios en la base de datos.

Vea también

Crear un formulario nuevo | Crear interfaces de documentos únicos o múltiples | Crear formularios | Especificar un tipo de formulario | Mostrar un formulario secundario dentro de un formulario de nivel superior | Agregar tabla o vista | Ventana Propiedades | Diseñar formularios


Crear interfaces de documentos únicos o múltiples

Visual FoxPro le permite crear dos tipos de aplicaciones:

  • Las aplicaciones con interfaz de documentos múltiples (MDI) están formadas por una ventana principal única y las ventanas de la aplicación están contenidas en la ventana principal o flotan sobre ella. Visual FoxPro es fundamentalmente una aplicación MDI, con la ventana de comandos, las ventanas de edición y las ventanas de diseñadores contenidas en la ventana principal de Visual FoxPro.
  • Las aplicaciones con interfaz de un único documento (SDI) están formadas por una o más ventanas independientes, cada una de las cuales aparece como ventana independiente en el escritorio de Windows. Microsoft Exchange es un ejemplo de una aplicación SDI, en la que cada mensaje que abra aparece en su propia ventana independiente.

Una aplicación formada por ventanas individuales es generalmente una aplicación SDI, pero algunas aplicaciones mezclan elementos SDI y MDI. Por ejemplo, Visual FoxPro muestra su depurador como aplicación SDI, que a su vez contiene ventanas MDI.

Para admitir ambos tipos de interfaz, Visual FoxPro le permite crear varios tipos de formularios:

  • Formulario secundario. Un formulario contenido en otra ventana, utilizada en la creación de aplicaciones MDI. Los formularios secundarios no se pueden mover fuera de los límites de su formulario primario y cuando se minimizan aparecen en la parte inferior del formulario primario. Si el formulario primario está minimizado, también se minimizan los formularios secundarios.
  • 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 detrás de su ventana primaria. Si están minimizados, aparece un formulario flotante en la parte inferior del escritorio. Si su formulario primario está minimizado, los formularios flotantes también se minimizan. Los formularios flotantes también se usan en la creación de aplicaciones MDI.
  • Formulario de nivel superior. Un formulario independiente sin formulario primario, utilizado para crear una aplicación SDI o como formulario primario de otros formularios secundarios de una aplicación MDI. Los formularios de nivel superior funcionan al mismo nivel que otras aplicaciones de Windows y pueden aparecer por delante o por detrás de ellas. Aparecen en la barra de tareas de Windows.

Formularios secundarios, flotantes y de nivel superior

Vea también

Establecer el entorno de datos | Crear formularios | Especificar un tipo de formulario | Mostrar un formulario secundario dentro de un formulario de nivel superior | Ocultar la ventana principal de Visual FoxPro


Especificar un tipo de formulario

Todos los tipos de formularios se crean de forma similar, pero se establecen propiedades específicas para indicar cuál debe ser el comportamiento de los formularios.

Si va a crear un formulario secundario, debe especificar no sólo qué debe aparecer dentro de otro formulario, sino también si es un formulario secundario compatible con MDI, que indica el comportamiento del formulario cuando se maximiza. Si el formulario secundario es compatible con MDI, se combina con el formulario primario, compartiendo la barra de título, el título, los menús 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 título y su barra de título.

Para especificar un formulario secundario

  1. Cree o modifique el formulario mediante el Diseñador de formularios.
  2. Establezca la propiedad ShowWindow del formulario a uno de los valores siguientes:
    • 0 – En pantalla. El formulario primario del formulario secundario será la ventana principal de Visual FoxPro.
    • 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 en verdadero (.T.) si desea que el formulario secundario se combine con el formulario primario cuando se maximice, o en falso (.F.), si la ventana secundaria debe seguir siendo una ventana independiente cuando se maximice.

Un formulario flotante es una variación de un formulario secundario.

Para especificar un formulario flotante

  1. Cree o modifique el formulario mediante el Diseñador de formularios.
  2. Establezca la propiedad ShowWindow del formulario a uno de los valores siguientes:
    • 0 – En pantalla. El formulario primario del formulario flotante será la ventana principal de Visual FoxPro.
    • 1 – En formulario de nivel superior. 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 mediante el Diseñador de formularios.
  2. Establezca la propiedad ShowWindow del formulario a 2 – Como formulario de nivel superior.

Vea también

Crear interfaces de documentos únicos o múltiples | Mostrar un formulario secundario dentro de un formulario de nivel superior | Crear formularios | Ocultar la ventana principal de Visual FoxPro | Agregar un menú a un 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é establecida como 1 – En formulario de nivel superior, no especifica directamente el formulario de nivel superior que actúa 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 código 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 botón en el formulario de nivel superior y, a continuación, incluya en el código del evento Click para el botón un comando como este:

    DO FORM MyChild
    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 aún no estará activo.
  3. Active el formulario de nivel superior y, si es necesario, desencadene el evento que muestra el formulario secundario.

Vea también

Crear interfaces de documentos únicos o múltiples | Especificar un tipo de formulario | Ocultar la ventana principal de Visual FoxPro | Crear formularios | Agregar un menú a un formulario de nivel superior | Ampliar formularios con conjuntos de formularios


Ocultar la ventana principal de Visual FoxPro

Si está ejecutando un formulario de nivel superior, es posible que no desee 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 línea de código:
    Application.Visible = .F.
  2. En el evento Destroy del formulario, incluya la siguiente línea de código:
    Application.Visible = .T.

Asegúrese de que también proporciona una forma de cerrar el formulario con THISFORM.Release en algún método o evento.

Nota También puede incluir la línea siguiente en un archivo de configuración para ocultar la ventana principal de Visual FoxPro: SCREEN = OFF

Vea también

Crear interfaces de documentos únicos o múltiples | Personalizar el Entorno de Visual FoxPro | Mostrar un formulario secundario dentro de un formulario de nivel superior | Agregar un menú a un formulario de nivel superior | Crear formularios | Ampliar formularios con conjuntos de formularios | Agregar objetos a formularios


Agregar un menú a un formulario de nivel superior

Los menús de los formularios de nivel superior no sólo proporcionan el desplazamiento entre formularios, puede ofrecer además ideas iniciales acerca del diseño de su aplicación.

Para agregar un menú a un formulario de nivel superior

  1. Cree un menú de formulario de nivel superior. Para obtener más información acerca de la creación de menús para formularios de nivel superior, consulte Diseñar menús 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 pase dos parámetros:

    DO menuname.mpr WITH oForm, lAutoRename

    oForm es una referencia de objeto al formulario. En el evento Init del formulario, pase THIS como primer parámetro.

    lAutoRename especifica si se genera o no un nombre único para el menú. Si pretende ejecutar varias instancias del formulario, pase .T. como lAutoRename.

    Por ejemplo, puede llamar a un menú llamado mySDImenu con este código:

    DO mySDImenu.mpr WITH THIS, .T.

Vea también

Crear interfaces de documentos únicos o múltiples | Ocultar la ventana principal de Visual FoxPro | Ampliar formularios con conjuntos de formularios | Crear formularios | Agregar objetos a formularios | Agregar contenedores de Visual FoxPro


Ampliar formularios con conjuntos de formularios

Puede manipular múltiples formularios como si fueran un grupo incluyéndolos en un conjunto de formularios. Un conjunto de formularios tiene estas ventajas:

  • Permite mostrar u ocultar todos los formularios de un conjunto al mismo tiempo.
  • Permite organizar visualmente múltiples formularios al mismo tiempo para controlar sus posiciones relativas.
  • Como todos los formularios de un conjunto de formularios se definen en un único archivo .scx con un único entorno de datos, puede sincronizar automáticamente punteros de registro en múltiples 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 y objetos de los formularios se cargan cuando se ejecuta el conjunto de formularios. Si necesita cargar varios 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 Diseñador de formularios, podrá crear un conjunto de formularios.

Para crear un conjunto de formularios

  • En el menú Formulario, elija Crear conjunto de formularios.

Si no desea trabajar con múltiples formularios como si fueran un grupo de formularios, no será necesario que cree un conjunto. Después de crear un conjunto de formularios, puede agregarle formularios.

Agregar y eliminar formularios

Cuando haya creado un conjunto de formularios, podrá agregarle formularios nuevos y eliminar otros.

Para agregar formularios adicionales a un conjunto de formularios

  • 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 Diseñador de formularios, seleccione el formulario.
  2. En el menú Formulario, elija Quitar formulario.

Si en un conjunto de formularios sólo tiene un formulario, puede eliminar el conjunto de formularios y quedarse sólo con el formulario.

Para quitar un conjunto de formularios

  • En el menú Formulario, elija Quitar conjunto de formularios.

Los formularios se guardan con formato de tabla en un archivo que tiene la extensión .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. El contenedor primario de cada control es el formulario en el que está situado.

Sugerencia Al ejecutar un conjunto de formularios, quizá no desee que todos los formularios del conjunto sean visibles inicialmente. Establezca la propiedad Visible en el valor falso (.F.) para los formularios que no desee mostrar cuando se ejecute el conjunto de formularios. Establezca la propiedad Visible en el valor verdadero (.T.) si desea mostrar los formularios.

Vea también

Agregar un menú a un formulario de nivel superior | Agregar objetos a formularios | Crear formularios | Agregar contenedores de Visual FoxPro | Diseñador de formularios


Agregar objetos a formularios

Para diseñar la funcionalidad que desea en un formulario, agregue los controles apropiados, establezca las propiedades del formulario y de los controles, y escriba el código de evento.

Puede agregar los siguientes tipos de objetos a un formulario:

  • Controles
  • Contenedores
  • Clases definidas por el usuario
  • Compartir información y agregar objetos OLE

Descripción de los objetos contenedores y de control

Los objetos de Visual FoxPro pueden corresponder a dos categorías, según la naturaleza de la clase en la que se basen:

  • Los contenedores pueden tener otros contenedores o controles. Pueden actuar como el objeto primario de otros objetos. Por ejemplo, un formulario, como contenedor, es un objeto primario para una casilla de verificación de ese formulario.
  • Los controles puede estar contenidos en contenedores, pero no pueden ser objetos primarios de otros objetos. Por ejemplo, una casilla de verificación no puede contener ningún otro objeto.

El Diseñador de formularios permite diseñar contenedores y controles.

Contenedor | Puede contener
Columna | Encabezados y cualquier objeto excepto conjunto de formularios, formularios, barras de herramientas, cronómetros y otras columnas
Grupo de botones de comando | Botones de comando
Conjunto de formularios | Formularios, barras de herramientas
Formulario | Marcos de página, cuadrículas, cualquier control
Cuadrícula | Columnas
Grupo de botones de opción | Botones de opción
Marco de página | Páginas
Página | Cuadrículas, cualquier control

Vea también

Ampliar formularios con conjuntos de formularios | Agregar contenedores de Visual FoxPro | Crear formularios | Agregar controles de Visual FoxPro a un formulario | Agregar objetos definidos por el usuario a un formulario | Agregar controles a un formulario con la Galería de componentes | Agregar controles a un formulario generado por un asistente | Agregar objetos definidos por el usuario a un formulario | Seleccionar, mover y cambiar el tamaño de controles de formularios | Alinear controles en formularios | Establecer el orden de tabulación para controles


Agregar contenedores de Visual FoxPro

Además 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 opción
Cuadrícula | Marco de página

Para agregar objetos contenedores a un formulario

  • En la barra de herramientas Controles de formularios, seleccione el objeto contenedor deseado (cuadrícula, marco de página o grupo de botones) y arrástrelo para ajustar su tamaño en el formulario.

Al agregar un grupo de botones de comando o un grupo de botones de opción a un formulario en el Diseñador de formularios, el grupo contiene dos botones de forma predeterminada. Cuando agregue un marco de página a un formulario, el marco de página contendrá dos páginas de forma predeterminada. Puede agregar más botones o páginas si establece las propiedades ButtonCount o PageCount en el número que desee.

Cuando agregue una cuadrícula a un formulario, la propiedad ColumnCount se establecerá de forma predeterminada en – 1, que indica AutoFill. En tiempo de ejecución, la cuadrícula mostrará tantas columnas como campos haya en la tabla RowSource. Si no desea AutoFill, puede especificar el número de columnas si establece la propiedad ColumnCount de la cuadrícula.

Para obtener más información acerca de estos objetos contenedores, consulte Utilizar controles.

Propiedades Collection y Count

Todos los objetos contenedores de Visual FoxPro tienen una propiedad Count y una propiedad Collection asociadas. La propiedad Collection es una matriz que hace referencia a cada objeto contenido. La propiedad Count es una propiedad numérica que indica el número de objetos contenidos.

Las propiedades Collection y Count reciben un nombre 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 propiedades Collection y Count correspondientes.

Contenedor | Collection (Propiedad) | Count (Propiedad)
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
Columna | Controls | ControlCount
ToolBar | Controls | ControlCount
Container | Controls | ControlCount
Control | Controls | ControlCount

Estas propiedades le permiten usar un bucle para manipular mediante programación todos los objetos contenidos o algunos objetos específicos. Por ejemplo, las líneas de código siguientes establecen la propiedad BackColor de columnas de una cuadrícula a verde y rojo de forma alterna:

o = THISFORM.grd1
FOR i = 1 to o.ColumnCount
IF i % 2 = 0 && Columna con numeración par
o.Columns(i).BackColor = RGB(0,255,0) && Verde
ELSE
o.Columns(i).BackColor = RGB(255,0,0) && Rojo
ENDIF
ENDFOR

Vea también

Agregar objetos a formularios | Agregar controles de Visual FoxPro a un formulario | Crear formularios | Agregar objetos definidos por el usuario a un formulario | Ampliar formularios con conjuntos de formularios | Agregar controles a un formulario con la Galería de componentes | Agregar controles a un formulario generado por un asistente | Agregar objetos definidos por el usuario a un formulario | Seleccionar, mover y cambiar el tamaño de controles de formularios | Alinear controles en formularios | Establecer el orden de tabulación para controles


Agregar controles de Visual FoxPro a un formulario

La barra de herramientas Controles permite agregar fácilmente al formulario cualquier control estándar de Visual FoxPro.

Controles estándar de Visual FoxPro

Checkbox
Hyperlink
ListBox
Spinner
Combobox
Image
OLE Bound (Control)
TextBox
CommandButton
Label
OLE Container (Control)
Timer
EditBox
Line
Shape

Agregue nuevos controles seleccionándolos en la barra de herramientas Controles de formularios y colocándolos en la ventana Diseñador de formularios. Por ejemplo, es posible que quiera agregar nuevas etiquetas para campos en el formulario; agregar nuevos controles como botones, cuadros de edición, cuadros de lista, etc. o agregar imágenes o líneas y formas para mejorar el aspecto del formulario.

Para agregar un control a un formulario

  1. Elija un control en la barra de herramientas Controles de formularios.
  2. En la ventana Diseñador de formularios, arrastre para crear un rectángulo en el que quiere que esté el control o haga clic para crear un control de tamaño predeterminado.

El nuevo control aparece en el lugar en que lo dibujó. Puede moverlo entonces a su ubicación final en el formulario y cambiar su tamaño si es necesario.

Agregar múltiples controles al mismo tiempo

Al elegir el botón Bloqueo del botón, podrá agregar múltiples controles del mismo tipo sin necesidad de hacer clic en el botón de control de la barra de herramientas más de una vez. Por ejemplo, si desea agregar cinco cuadros de texto a un formulario, asegúrese de que selecciona el botón Bloqueo del botón y, a continuación, haga clic una vez en el botón del control de tipo cuadro de texto de la barra de herramientas Controles de formularios y agregue los cinco cuadros de texto al formulario.

El Bloqueo del botón se activa automáticamente si hace doble clic en un botón de control de la barra de herramientas Controles de formularios. Para desactivarlo, vuelva a hacer clic en el botón Bloqueo del botón o haga clic en el botón Puntero de selección de la barra de herramientas Controles de formularios.

Agregar un control con un generador

Si desea obtener ayuda para agregar un control, puede usar un generador para agregar los controles y hacerlos funcionar con el formulario, o puede agregar los controles con la barra de herramientas Controles de formulario y la ventana Propiedades.

Del mismo modo que los asistentes pueden emplearse para crear formularios rápidamente, los generadores pueden emplearse para agregar controles a formularios. El generador plantea una serie de preguntas relacionadas con el control que desea agregar al formulario y establece las propiedades correspondientes para que el control funcione del modo deseado.

Por ejemplo, si desea agregar un nuevo cuadro de texto a un formulario, el generador preguntará qué estilo de cuadro de texto prefiere y qué campo de la tabla debe mostrar.

Puede tener acceso a los generadores de dos formas: a través del menú contextual del Diseñador de formularios o presionando el botón Bloqueo del generador de la barra de herramientas Controles de formularios cuando agrega controles a un formulario.

Para agregar un control con un generador

  1. En la barra de herramientas Controles de formularios, seleccione el botón Bloqueo del generador.
  2. Seleccione el control que desee en el barra de herramientas Controles de formulario y colóquelo en el formulario.
  3. Complete la información en las fichas del generador.

Usar generadores para todos los controles

Puede utilizar automáticamente un generador de controles cada vez que agregue un control a un formulario si selecciona el botón Bloqueo del generador en la barra de herramientas Controles de formularios.

Para activar el Bloqueo del generador

  • En la barra de herramientas Controles de formularios, haga clic en el botón Bloqueo del generador.

Para obtener más información acerca de los controles que puede elegir, consulte Utilizar controles. Para obtener detalles acerca de los orígenes de los controles de imagen válidos, consulte Compatibilidad con gráficos en Visual FoxPro

Agregar controles unidos a datos a un formulario

Puede enlazar 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 cuadrícula, a una tabla o una vista. Pero también puede crear controles enlazados a datos si arrastra campos o tablas al formulario directamente desde:

  • El Administrador de proyectos
  • El Diseñador de bases de datos
  • El Diseñador de entorno de datos

La clase de control creado de esta forma depende de la configuración de Asignaciones de campos en la ficha Propiedades del Diseñador de tablas o en la ficha Asignación de campos del cuadro de diálogo Opciones.

Al situar las tablas o las vistas asociadas con el formulario en el entorno de datos del formulario, se hará más fácil enlazar nuevos controles a los campos de las tablas o las vistas.

El campo de la propiedad ControlSource muestra los campos disponibles en el Diseñador de entorno de datos, para que pueda seleccionar uno que desee enlazar al control.

Mostrar la ventana Propiedades

La ventana Propiedades muestra todas las propiedades de los controles que agrega al formulario. Utilice la propiedad ControlSource de la ventana Propiedades para enlazar el control que ha agregado al formulario con un campo específico de la tabla del Diseñador de entorno de datos.

Para mostrar la ventana Propiedades

  • En el menú Ver, elija Propiedades.
    Nota Si desea usar la ventana Propiedades para establecer las propiedades del control, asegúrese de que Bloqueo del generador esté desactivado.

Vea también

Agregar contenedores de Visual FoxPro | Agregar objetos definidos por el usuario a un formulario | Crear formularios | Agregar objetos a formularios | Agregar propiedades y métodos a un formulario | Diseñador de tablas | Asignación de campos | Agregar controles a un formulario con la Galería de componentes | Agregar controles a un formulario generado por un asistente | Agregar objetos definidos por el usuario a un formulario | Seleccionar, mover y cambiar el tamaño de controles de formularios | Alinear controles en formularios | Establecer el orden de tabulación para controles | Establecer el entorno de datos


Agregar controles a un formulario con la Galería de componentes

Puede utilizar la Galería de componentes para agregar rápidamente controles y objetos personalizados a un formulario. La Galería de componentes contiene docenas de controles y objetos personalizados que reducen en gran medida la cantidad de código que hay que escribir para crear formularios especializados.

Para abrir la Galería de componentes

  • En el menú Herramientas, elija Galería de componentes.

Cuando esté abierta la Galería de componentes, puede arrastrar controles y objetos personalizados de la misma y colocarlos en un formulario.

Vea también

Introducción a la Galería de componentes | Agregar contenedores de Visual FoxPro | Agregar objetos definidos por el usuario a un formulario | Crear formularios | Agregar objetos a formularios | Agregar propiedades y métodos a un formulario | Diseñador de tablas | Asignación de campos | Agregar controles de Visual FoxPro a un formulario | Agregar controles a un formulario generado por un asistente | Agregar objetos definidos por el usuario a un formulario | Seleccionar, mover y cambiar el tamaño de controles de formularios | Alinear controles en formularios | Establecer el orden de tabulación para controles


Agregar controles a un formulario generado por un asistente

Si crea un formulario con uno de los asistentes para formularios y, a continuación, desea agregarle controles, puede hacer coincidir el estilo de los controles existentes si emplea los controles de la biblioteca de controles del asistente, Wizstyle.vcx.

Cuando abre la biblioteca de controles de los asistentes, los controles de estilo del asistente (como chiselfield, embossedmemo, etc.) están disponibles en la barra de herramientas Controles de formularios. Para saber qué control va a utilizar, seleccione un control existente y anote su clase y su biblioteca de clases. Por ejemplo, un campo estándar de asistente podría estar en la clase Standardfield, que se encuentra en Wizstyle.vcx.

Sugerencia Use la información sobre herramientas de la barra de herramientas Controles de formularios como ayuda para identificar nombres de clases.

Para hacer coincidir controles en un formulario generado por un asistente

  1. En el Diseñador de formularios, abra el formulario.
  2. En la barra de herramientas Controles de formularios, elija el botón Ver clases y a continuación, Agregar.
  3. En el cuadro de diálogo Abrir, busque Wizstyle.vcx en el subdirectorio Wizards y elija Aceptar.
  4. En la barra de herramientas Controles de formularios, seleccione el control que corresponde a un control existente en el formulario y arrástrelo al formulario para agregarlo.
    Nota Si mueve un formulario a otro directorio o sistema, también deberá mover a ese lugar la biblioteca de controles asociada con el formulario.

Vea también

Agregar objetos a formularios | Agregar controles a un formulario con la Galería de componentes | Crear un formulario nuevo | Crear formularios con datos locales y remotos | Agregar controles de Visual FoxPro a un formulario | Crear formularios | Agregar objetos definidos por el usuario a un formulario | Seleccionar, mover y cambiar el tamaño de controles de formularios | Alinear controles en formularios | Establecer el orden de tabulación para controles


Seleccionar, mover y cambiar el tamaño de los controles de formularios

Una vez creado el formulario, es posible que tenga que ajustar la ubicación o el tamaño de los controles del formulario. Por ejemplo, quizá desee mover un campo Memo o alargar un cuadro de texto.

Para seleccionar un control

  • Haga clic con el puntero del ratón en cualquier lugar del control.

Para seleccionar controles adyacentes

  1. Elija la flecha de selección en la barra de herramientas Controles de formularios.
  2. Arrastrando el puntero, dibuje un cuadro alrededor de los controles que desea seleccionar.

Para mover un control

  1. Seleccione el control haciendo clic en él.
  2. Arrastre el control hasta la nueva posición en la ventana del formulario.

    –O bien–

    Seleccione el control y utilice las teclas de dirección para volver a colocarlo.

Para cambiar el tamaño de un control

  1. Seleccione el control.
  2. Arrastre uno de los controladores de tamaño para aumentar la longitud, el ancho o el tamaño global del control.

Vea también

Agregar objetos a formularios | Agregar controles a un formulario con la Galería de componentes | Establecer propiedades del control | Crear un formulario nuevo | Crear formularios con datos locales y remotos | Agregar controles de Visual FoxPro a un formulario | Crear formularios | Agregar controles a un formulario generado por un asistente | Agregar objetos definidos por el usuario a un formulario | Alinear controles en formularios | Establecer el orden de tabulación para controles


Copiar y eliminar controles de formulario

Al diseñar o modificar un formulario, puede efectuar una copia de un control que ya está en el formulario. Puede copiar un control existente y pegarlo en el formulario.

Para copiar un control

  1. Con el puntero, seleccione un control.
  2. En el menú Edición, elija Copiar.
  3. En el menú Edición, elija Pegar.
  4. Use el puntero para colocar el control donde desee.

Si crea un control y posteriormente decide que no lo necesita, o si no le interesa un control creado por un asistente, puede eliminarlo.

Para eliminar un control

  • Seleccione el control y en el menú Edición, elija Cortar.

Vea también

Agregar objetos a formularios | Agregar controles a un formulario con la Galería de componentes | Establecer propiedades del control | Crear un formulario nuevo | Crear formularios con datos locales y remotos | Agregar controles de Visual FoxPro a un formulario | Crear formularios | Agregar controles a un formulario generado por un asistente | Agregar objetos definidos por el usuario a un formulario | Seleccionar, mover y cambiar el tamaño de controles de formularios | Alinear controles en formularios | Establecer el orden de tabulación para controles


Alinear controles en formularios

Los botones de la barra de herramientas Diseño permiten alinear los controles entre sí con precisión en los formularios. Por ejemplo, es posible que desee alinear los controles horizontal o verticalmente, o asegurarse de que un conjunto de controles tiene el mismo ancho o la misma altura. Para alinear controles, seleccione un grupo y elija uno de los botones de diseño en la barra de herramientas Diseño.

Ajustar la posición del control

Si necesita colocar los controles en posiciones precisas de la pantalla, puede utilizar el comando Mostrar posición del menú Ver. Cuando está activado, Mostrar posición indica las coordenadas y las dimensiones de un control seleccionado en la barra de estado, en la parte inferior de la ventana Diseñador de formularios.

Controlar la presentación de la cuadrícula

Mostrar la cuadrícula le ayuda a alinear los controles en los formularios. Puede ajustar el tamaño de la cuadrícula eligiendo Configurar cuadrícula en el menú Formato. Puede activar o desactivar la presentación de la cuadrícula con el comando Líneas de cuadrícula del menú Ver o activando la opción Líneas de cuadrícula en la ficha Formularios, en el cuadro de diálogo Opciones.

También puede ajustar el tamaño o la posición de los controles en relación con la cuadrícula si elige en el menú Formato el comando Forzar a la cuadrícula. Cuando en el menú Formato está activado Forzar a la cuadrícula, los controles colocados en un formulario se alinean automáticamente con las líneas de la cuadrícula. Para no aplicar la cuadrícula, puede:

  • Desactivar Forzar a la cuadrícula en el menú Formato. Esta opción está activa de forma predeterminada.
  • Emplear las teclas de dirección para alinear controles.
  • Presionar la tecla CTRL antes de hacer clic en un control y mantenerla presionada mientras arrastra el objeto a otra posición.
  • Seleccionar opciones de alineación en la barra de herramientas Diseño o en el menú Formato.

Vea también

Alinear controles en formularios | Agregar contenedores de Visual FoxPro | Agregar objetos definidos por el usuario a un formulario | Crear formularios | Agregar objetos a formularios | Agregar propiedades y métodos a un formulario | Agregar controles de Visual FoxPro a un formulario | Agregar controles a un formulario generado por un asistente | Agregar objetos definidos por el usuario a un formulario | Seleccionar, mover y cambiar el tamaño de controles de formularios | Establecer el orden de tabulación para controles


Establecer el orden de tabulación para controles

El orden de tabulación de un formulario determina la secuencia en la que se seleccionan los controles cuando un usuario presiona la tecla TAB para moverse por el formulario.

Puede elegir dos métodos distintos para establecer el orden de tabulación: de forma interactiva, haciendo clic en los controles en el orden en que desea que se seleccionen cuando se use el formulario u organizando una lista de controles en un cuadro de diálogo.

Para elegir un método de orden de tabulación

  1. En el menú Herramientas, elija Opciones.
  2. En el cuadro de diálogo Opciones, elija la ficha Formularios.
  3. En la opción Orden de tabulación, seleccione Interactivo o Por lista.

Establecer el orden de tabulación de forma interactiva

En modo interactivo, el orden de tabulación se establece con un doble clic en el control que desea colocar primero en el orden de tabulación y con un solo clic en los demás controles, en el orden en el que desea que se seleccionen en el formulario. El último control seleccionado se indica con un Cuadro de tabulación de Iluminado.

Para cambiar el orden de tabulación de forma interactiva

  1. En el menú Ver, elija Orden de tabulación.
  2. Haga doble clic en el cuadro de orden de tabulación colocado junto al control que desea que aparezca en primer lugar en el orden de tabulación.
  3. Haga clic en el cuadro de orden de tabulación de cada uno de los otros controles.
  4. Haga clic en cualquier punto del formulario para guardar los cambios y salir del modo Orden de tabulación, o presione ESC para salir del modo Orden de tabulación sin guardar los cambios.

Establecer el orden de tabulación por lista

En el modo de lista, el orden de tabulación se establece reorganizando los nombres de los controles en el cuadro de diálogo Orden de tabulación. Puede establecer el orden por fila (de arriba a abajo del formulario) o por columna (a lo ancho del formulario).

Para establecer el orden de tabulación mediante una lista

  1. En el menú Ver, elija Orden de tabulación.
  2. Elija el botón Por filas o Por columnas.
  3. En el cuadro de diálogo Orden de tabulación, utilice el puntero para reorganizar la lista.
  4. Elija Aceptar.

Vea también

Agregar objetos a formularios | Cuadro de diálogo Orden de tabulación | Agregar contenedores de Visual FoxPro | Agregar objetos definidos por el usuario a un formulario | Crear formularios | Agregar objetos a formularios | Agregar propiedades y métodos a un formulario | Agregar controles de Visual FoxPro a un formulario | Agregar controles a un formulario generado por un asistente | Agregar objetos definidos por el usuario a un formulario | Seleccionar, mover y cambiar el tamaño de controles de formularios


Agregar objetos definidos por el usuario a un formulario

Una de las características más eficaces de Visual FoxPro es su capacidad para crear clases que se pueden utilizar y reutilizar fácilmente en distintas partes de las aplicaciones. Cuando haya creado las clases, podrá agregarlas a los formularios.

Para agregar un objeto basado en una clase personalizada

  • En el Administrador de proyectos, arrastre la clase hasta el contenedor.

Las clases se pueden agregar directamente desde la barra de herramientas Controles de formularios al agregarlas a la propia barra de herramientas.

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 diálogo Opciones, elija la ficha Controles.
  3. Elija Agregar.
  4. En el cuadro de diálogo 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 Diseñador de formularios con la misma facilidad que las clases de base de Visual FoxPro.

Sugerencia Si desea que las bibliotecas de clases estén disponibles en la barra de herramientas Controles de formularios cada vez que ejecute Visual FoxPro, elija Establecer como predeterminado en el cuadro de diálogo Opciones.

También puede registrar bibliotecas directamente en el Diseñador de formularios.

Para registrar una biblioteca de clases en el Diseñador de formularios

  1. En la barra de herramientas Controles de formularios, haga clic en el botón Ver clases.
  2. En el submenú, elija Agregar.
  3. En el cuadro de diálogo 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 diálogo Opciones o desde el submenú Ver clases, tendrá acceso a las mismas en el Diseñador de formularios.

Para agregar un objeto personalizado desde la barra de herramientas Controles

  1. En la barra de herramientas Controles de formularios, haga clic en el botón 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.

  3. Haga clic en el control que desee y arrastre para ajustar su tamaño en el formulario.
    Nota Puede quitar una biblioteca de clases visuales desde el menú de la barra de herramientas Ver clases, seleccionando la biblioteca en la lista Seleccionado de la ficha Controles del cuadro de diálogo Opciones y eligiendo Quitar.

Cuando agregue a un formularios objetos que no estén basados en las clases de base de Visual FoxPro, se almacenará una ruta de acceso 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 ubicación diferente, Visual FoxPro muestra un cuadro de diálogo cuando intenta ejecutar el formulario de forma que puede ubicar manualmente la biblioteca de clases.

Determinar los controles que hay en un formulario

Para determinar cuántos controles hay en un formulario, puede utilizar la propiedad ControlCount. La propiedad Controls 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.

ACTIVATE SCREEN  && to print to the main Visual FoxPro window
FOR nCnt = 1 TO Application.ActiveForm.ControlCount
? Application.ActiveForm.Controls[nCnt].Name
ENDFOR

Vea también

Agregar objetos definidos por el usuario a un formulario | Agregar propiedades y métodos a un formulario | Crear formularios | Agregar objetos a formularios | Administrador de proyectos | Agregar controles a un formulario con la Galería de componentes | Agregar controles a un formulario generado por un asistente | Seleccionar, mover y cambiar el tamaño de controles de formularios | Alinear controles en formularios | Establecer el orden de tabulación para controles


Agregar propiedades y métodos a un formulario

Puede agregar tantas propiedades y métodos nuevos como desee a un conjunto de formularios o a un formulario que no forme parte de conjunto alguno . Las propiedades contienen un valor, mientras que los métodos contienen código de procedimientos que se ejecuta al llamar al método. Las propiedades y los métodos nuevos tienen como alcance el formulario y se hace referencia a los mismos del mismo modo que a otras propiedades o métodos.

Crear propiedades nuevas

Si dispone de un conjunto de formularios, las propiedades y los métodos que agregue en el Diseñador de formularios tendrán como alcance el conjunto de formularios. Si no dispone de ningún conjunto de formularios, las propiedades y los métodos tendrán 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 diálogo Nueva propiedad, escriba el nombre de la propiedad. También puede incluir una descripción de la propiedad que se mostrará en la parte inferior de la ventana Propiedades.

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 diálogo Nueva propiedad, escriba el nombre de la propiedad de matriz e incluya el tamaño y las dimensiones de la matriz.

    Por ejemplo, podría escribir arrayprop[10,2] en el cuadro Nombre del cuadro de diálogo Nueva propiedad para crear una matriz bidimensional con 10 filas.

Las propiedades de matriz son de sólo lectura en modo de diseño, pero puede administrar, redimensionar y asignar valores a los elementos de la propiedad de matriz en tiempo de ejecución. Para ver un ejemplo del uso de una propiedad de matriz, consulte Administrar múltiples instancias de un formulario.

Crear nuevos métodos

Puede agregar al formulario métodos a los que se puede llamar del mismo modo que a los métodos de clase de formulario.

Para crear un nuevo método para un formulario

  1. En el menú Formulario, elija Nuevo método.
  2. En el cuadro de diálogo Nuevo método, escriba el nombre del método. Opcionalmente, puede incluir una descripción del método.

Para llamar a los métodos definidos por el usuario, como sucede con los métodos de clase de base, utilice la siguiente sintaxis:

ObjectName.MethodName

El método también puede aceptar parámetros y devolver valores. En este caso, se llama al método en una instrucción de asignación:

cVariable = ObjectName.MethodName(cParameter, nParameter)

Incluir constantes predefinidas

Para utilizar constantes predefinidas en sus métodos o eventos (no en propiedades), 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 compilación 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 diálogo Archivo de tipo Include, especifique el archivo deseado en el cuadro de texto Incluir archivo.

    –O bien–

    Elija el botón del cuadro de diálogo para abrir el cuadro de diálogo Incluir y elija el archivo.

  3. Elija Aceptar.

Vea también

Agregar objetos a formularios | Agregar objetos definidos por el usuario a un formulario | Manipular objetos | Crear formularios | Definir el comportamiento de un formulario | Modificar código de evento y método


Manipular objetos

Hay varias formas de manipular y trabajar con objetos en un formulario en tiempo de diseño:

  • Establezca el tamaño y la posición de los objetos en la ventana Diseñador de formularios estirándolos, encogiéndolos o arrastrándolos.
  • Alinee los controles eligiendo opciones en el menú Formato o utilizando las herramientas de alineación en la barra de herramientas Diseño. Para más información acerca de la barra de herramientas Diseño, ver Alinear controles en formularios.
  • Establezca los colores de primer plano y de fondo en la barra de herramientas Paleta. Para más información sobre utilizar la barra de herramientas Paleta, vea Personalizar formularios.
  • Ver la configuración de las propiedades de objetos, mostrar código heredado para objetos, eventos, y métodos, establecer valores para propiedades, y restringir su vista a sólo las propiedades modificadas utilizando la ventana Propiedades.

La ventana Propiedades

El principal punto de control para todos los objetos de su formulario es la ventana Propiedades. Esta ventana muestra todas las propiedades, métodos, eventos y sus configuraciones para el formulario seleccionado, entorno de datos, cursor, relación, o control.

La ventana Propiedades

Para más información acerca de la ventana Propiedades, vea Ventana Propiedades.

Ver las propiedades de un objeto

Para ver las propiedades de un objeto, abra la ventana Propiedades.

Para abrir la ventana Propiedades

  • En el menú Ventana, haga clic en Ventana Propiedades.

También puede abrir la ventana Propiedades haciendo clic derecho en el Diseñador de formularios o Diseñador de entorno de datos y eligiendo propiedades en el menú desplegable.

Para ver propiedades de un objeto

  • Haga clic en el formulario o un objeto dentro de él.

La ventana Propiedades muestra las propiedades, métodos y eventos para el objeto seleccionado. También puede seleccionar el objeto desde la lista objetos en la ventana Propiedades.

Para ver las propiedades que tienen en común múltiples objetos, mantenga presionada la tecla SHIFT mientras selecciona objetos en el formulario. La lista de propiedades muestra las propiedades comunes para los objetos que seleccione.

Para ver la configuración de las propiedades, eventos y métodos que aparecen recortadas en la lista, agrande la ventana Propiedades o muestre el aviso con el valor, moviendo el ratón sobre la propiedad, evento o método en la lista de propiedades. El aviso con el valor muestra las bibliotecas de clases visuales, si ellas existen, desde las cuales los métodos y eventos se heredan y configuran para propiedades de sólo lectura.

Mostrar el código heredado para eventos y métodos de objetos

Puede ver el código heredado de clases padre para eventos y métodos de objetos, haciendo fácil decidir si desea usar o sobrescribir el código heredado.

Nota Las características Ver padre y Ver código heredado sólo permiten ver el código padre, no modificarlo. Para editar el código de la clase padre si utiliza una subclase, utilice el Examinador de clases. Para más información, ver Ver el código de la definición de clase y Administrar clases con el Examinador de clases.

Puede elegir ver el código padre o heredado desde dentro de la ventana código o la lista de propiedades en la ventana Propiedades.

Para ver el código heredado utilizando la ventana código

  1. Elija un objeto del formulario.

    -o-

    Elija un evento o método de la lista de propiedades en la ventana Propiedades.

  2. Para abrir la ventana código, haga doble clic sobre el objeto, evento o método.
  3. En la ventan código, haga clic en el botón Ver código padre para mostrar la lista de todas las clases padre.
  4. Seleccione la clase padre.

Se abre una ventana de edición y muestra el código padre. También puede elegir el botón Ver código padre en la ventana código presionando ALT+I.

Nota El botón Ver código padre está disponible en la ventana código sólo cuando hay al menos una clase padre que contiene código. Cuando existe código fuente, la clase padre aparece en negrita.

Visual FoxPro solamente muestra aquellas clases padre para el control seleccionado. Si está disponible una lista de clases padre, las clases padre aparecen en orden de la más inmediata o superior a la más cercana a la clase base, atravesando el árbol padre. La clase base no aparece.

Si el código heredado de la clase padre más inmediata existe, y la clase padre es un miembro de una clase contenedor, Visual FoxPro muestra la clase contenedor seguida por un separador y luego las clases en el árbol padre. Otras clases que atraviesen la jerarquía del contenedor podrían contener código pero no se muestran en la lista.

Al ver el código heredado utilizando la lista de propiedades en la ventana Propiedades, atraviesa el árbol padre o contenedor para alcanzar las clases padre heredadas.

Ver el código heredado utilizando la ventana Propiedades

Si existe el código heredado para un método o evento, en la lista de propiedades de la ventana Propiedades aparece el nombre de la clase padre y la biblioteca de clases desde la cual se hereda el código de método o evento, así::

Heredado cClassname ClassLibrary

Para ver el código heredado utilizando la lista de propiedades

  1. Seleccione un objeto en el formulario.
  2. En la lista de propiedades de la ventana Propiedades, haga clic derecho en el evento o método.
  3. En el menú desplegable seleccione Ver código heredado.

Se abre una ventana de edición y muestra el código padre heredado.

Establecer propiedades de objetos

Puede establecer o cambiar las propiedades en tiempo de diseño o por medio de programación.

Nota Algunas propiedades se evalúan en tiempo de diseño, así algunas variables de memoria o matrices utilizadas en expresiones para estas propiedades deben estar dentro del alcance en tiempo de diseño. Las propiedades que son de sólo lectura en tiempo de diseño, como la propiedad Clase de un objeto, se muestran en itálica en la lista de propiedades de la ventana Propiedades.

Para establecer o modificar los valores de una propiedad

  1. Haga clic en un objeto del formulario.
  2. Seleccione una propiedad en la lista de propiedades en la ventana Propiedades.
  3. En cuadro de valores de la propiedad, escriba o elija el valor deseado para la propiedad seleccionada.

También puede seleccionar un objeto en el cuadro de objeto de la ventana Propiedades.

Si la propiedad requiere un valor carácter, no tiene que incluir el valor entre comillas. Por ejemplo, si desea que la propiedad Caption de un formulario se muestre como Customer, escriba Customer en el cuadro de valores de la propiedad. Sin embargo, si desea que se muestre como "Customer" con las comillas(""), escriba "Customer".

Para restaurar el valor predeterminado de una propiedad

  1. Haga clic en un objeto del formulario.
  2. Seleccione una propiedad en la lista de propiedades en la ventana Propiedades.
  3. Haga clic derecho sobre la propiedad y en el menú desplegable elija Restablecer predeterminado.

Establecer propiedades como expresiones

Puede establecer el valor de ciertas propiedades como el resultado de expresiones o funciones en la ventana Propiedades. Visual FoxPro evalúa la expresión para una propiedad cuando la ingrese en la ventana Propiedades y cuando el objeto se inicializa en tiempo de de diseño o en tiempo de ejecución. Una vez el objeto está creado, el valor de la propiedad no cambia hasta cuando se cambie explícitamente.

Precaución Si establece el valor de una propiedad como el resultado de una función definida por el usuario, Visual FoxPro evalúa la función cuando se establece la propiedad, o cuando la modifique o ejecute el formulario. Si existe un error en la función definida por el usuario, podría no estar habilitado a abrir el formulario.

También puede establecer la propiedad como una función definida por el usuario en el evento Init de los objetos, como se muestra en el siguiente ejemplo:

THIS.Caption = myfunction( )

No obstante, si existe un error en la función, no podrá ejecutar el formulario pero puede modificarlo.

Para establecer una propiedad como una expresión

  1. En la lista de propiedades, seleccione la propiedad para la cual desea ingresar una expresión.
  2. En el cuadro de valores de la propiedad, escriba un signo igual (=) seguido por la expresión.

Por ejemplo, puede indicar la tabla activa actualmente cuando ejecute el formulario, esto se logra seleccionando la propiedad Caption del formulario y escribiendo =ALIAS( ) en el cuadro de valores de la propiedad.

También puede especificar expresiones para propiedades utilizando el Generador de expresiones. Para abrir el Generador de expresiones, seleccione la propiedad deseada y haga clic en el botón Función en la ventana Propiedades.

Mostrar propiedades con valores modificados

En la ventana Propiedades, puede elegir que se listen sólo aquellas propiedades a las cuales se les ha cambiado el valor.

Para ver propiedades con valores modificados

  1. Haga clic derecho en la ventana Propiedades fuera de la lista de propiedades.
  2. En el menú desplegable seleccione Sólo propiedades no predeterminadas.

La lista de propiedades sólo muestra aquellas propiedades, eventos y métodos cuyos valores han cambiado.

Vea también

Agregar propiedades y métodos a un formulario | Definir el comportamiento de un formulario | Crear formularios | Modificar código de evento y método | Diseñador de formularios


Definir el comportamiento de un formulario

Cuando diseñe un formulario en el Diseñador de formularios, el formulario estará activo: excepto para establecer la propiedad Visible en el valor falso (.F.), los cambios visuales y de comportamiento que realice se reflejarán inmediatamente en el formulario. Si establece la propiedad WindowState como 1 (Minimizada) o 2 (Maximizada), el formulario del Diseñador de formularios reflejará inmediatamente este cambio. Si establece la propiedad Movable en el valor falso (.F.), el usuario no podrá mover el formulario en tiempo de ejecución y usted tampoco podrá moverlo en tiempo de diseño. Es conveniente diseñar 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 diseño para definir la apariencia y el comportamiento del formulario:

Propiedad | Descripción | Valor predeterminado
AlwaysOnTop | Controla si un formulario siempre está situado sobre las demás ventanas abiertas. | Falso (.F.)
AutoCenter | Controla si el formulario se centra automáticamente en la ventana principal de Visual FoxPro o en el escritorio 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 línea, de doble ancho o del sistema. Si BorderStyle es 3 (Sistema), el usuario podrá cambiar el tamaño del formulario. | 3
Caption | Determina el texto que aparece en la barra de título 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 están abiertas en áreas de trabajo con acceso global o privadas para el formulario. | 1
MaxButton | Controla si el formulario tiene o no un botón Maximizar. | Verdadero (.T.)
MinButton | Controla si el formulario tiene o no un botón Minimizar. | Verdadero (.T.)
Movable | Controla si el formulario puede moverse o no a una nueva ubicación de la pantalla. | Verdadero (.T.)
ScaleMode | Controla si la unidad de medida para las propiedades de tamaño y posición de los objetos es fóxeles o píxeles. | Determinado por los valores del cuadro de diálogo Opciones.
Scrollbars | Controla el tipo de barras de desplazamiento que tiene un formulario. | 0 – Ninguna
TitleBar | Controla si aparece una barra de título 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 (sólo en Windows), maximizado o es normal. | 0 – Normal
WindowType | Controla si el formulario es de tipo sin modo (opción predeterminada) o modal. Si es modal, el usuario deberá cerrar el formulario antes de tener acceso a ningún otro elemento de la interfaz de usuario de la aplicación. | 0 – Sin modo

Utilice la propiedad LockScreen para que el ajuste en tiempo de ejecución de las propiedades de diseño de controles parezca más limpio.

Asignar iconos a formularios

En Visual FoxPro, puede asignar un icono al formulario; el icono se muestra en el botón de la barra de tareas del formulario y en la barra de título del formulario. Para asignar un icono al formulario, establezca la propiedad Icon del formulario con el nombre del archivo .ico.

Para asignar un icono a un formulario

  1. Abra el formulario.
  2. Abra la ventana Propiedades.
  3. Establezca la propiedad Icon como el archivo .ico que desee mostrar.

Vea también

Manipular objetos | Modificar código de evento y método | Crear formularios | Diseñador de formularios | Visible | Guardar formularios


Modificar código de evento y método

Los eventos son acciones del usuario, como clics o movimientos del ratón, o acciones del sistema, como el avance del reloj del sistema. Los métodos son procedimientos asociados al objeto que se invocan específicamente mediante programación. Si desea ver una explicación de los eventos y métodos, consulte Programación orientada a objetos. Puede especificar el código que desea procesar cuando se desencadene un evento o se invoque un método.

Para modificar código de evento o método

  1. En el menú Ver, elija Código.
  2. Seleccione el evento o el método en el cuadro Procedimiento.
  3. En la ventana Modificar, escriba el código que desea procesar cuando se desencadene el evento o se invoque el método.

    Por ejemplo, podría tener en un formulario un botón de comando con el título “Salir”. En el evento Click del botón, incluya la línea:

    THISFORM.Release
    Sugerencia Para moverse entre los procedimientos en la ventana de edición de código, presione AV PÁG o RE PÁG.

Cuando el usuario hace clic en el botón de comando, se elimina el formulario de la pantalla y de la memoria. Si no desea liberar el formulario de la memoria, puede incluir en su lugar la línea siguiente en el evento Click:

THISFORM.Hide
Nota Si el código asociado al evento Init de un conjunto de formularios, un formulario o cualquier objeto de un conjunto de formularios devuelve falso (.F.), no se creará el formulario.

Vea también

Definir el comportamiento de un formulario | Guardar formularios | Crear formularios | Ejecutar un formulario | Establecer propiedades en tiempo de ejecución


Guardar formularios

Es necesario guardar el formulario antes de poder ejecutarlo. Si intenta ejecutar el formulario o cerrar el Diseñador de formularios cuando aún no ha guardado el formulario, Visual FoxPro le pedirá que guarde o que descarte los cambios realizados.

Para guardar un formulario

  • En el Diseñador de formularios, elija Guardar en el menú Archivo. Los formularios se guardan como archivos con la extensión .scx.

Guardar formularios y controles como clases

También puede guardar un formulario o un subconjunto de los controles de un formulario, como una definición de clase. Si piensa crear subclases basadas en el formulario o volver a utilizar los controles en otros formularios, guarde el formulario como una definición de clase.

Para guardar un formulario o los controles seleccionados como una definición de clase

  1. En el menú Archivo, elija Guardar como clase.
  2. En el cuadro de diálogo Guardar como clase, elija Formulario actual o Controles seleccionados.
  3. Escriba un nombre para la clase en el cuadro Nombre.
  4. En el cuadro Archivo, introduzca un nombre de archivo en el que se almacenará la clase.
  5. Elija Aceptar.

Si no incluye una extensión con el nombre de archivo, se agregará la extensión predeterminada .vcx cuando se guarde el archivo. Cuando se haya guardado un formulario como una definición de clase, podrá modificarla mediante el comando MODIFY CLASS. Para obtener más información acerca de la creación de clases, consulte Programación orientada a objetos.

Vea también

Guardar un formulario como HTML | Modificar código de evento y método | Crear formularios | Ejecutar un formulario | Establecer propiedades en tiempo de ejecución | Ejemplo de manipulación de objetos


Guardar un formulario como HTML

Puede usar la opción Guardar como HTML del menú Archivo cuando cree un formulario para guardar el contenido de un formulario como un archivo HTML (Lenguaje de marcado de hipertexto).

Para guardar un formulario como HTML

  1. Abra el formulario.
  2. Elija Guardar como HTML en el menú Archivo. (Se le pedirá que guarde el formulario si lo ha modificado.)
  3. Escriba el nombre del archivo HTML que desea crear y elija Guardar.

Vea también

Guardar formularios | Transferir parámetros a un formulario | Administrar múltiples instancias de un formulario | Crear formularios | Establecer el área de diseño de un formulario | Crear formularios con datos locales y remotos


Trabajar con formularios

Una vez creado un formulario, puede manipularlo de varias formas. Puede ejecutarlo u ocultarlo a través de la interfaz o mediante programación. Puede modificar su formulario a través de sus objetos, transfiriéndole parámetros o estableciendo el área de diseño y plantillas. En el formulario puede incorporar datos locales y remotos y puede administrar múltiples instancias del mismo.

En esta sección

Ejecutar un formulario
Proporciona instrucciones acerca de cómo ejecutar un formulario, asignar un nombre a un objeto Form y permitir a un usuario cerrar el formulario activo.
Establecer propiedades en tiempo de ejecución
Proporciona instrucciones acerca de cómo establecer propiedades en expresiones en tiempo de ejecución y establecer múltiples propiedades al mismo tiempo.
Ejemplo de manipulación de objetos
Contiene un ejemplo con dos formularios en un conjunto de formularios. El ejemplo muestra cómo establecer propiedades y llamar a un código de evento desde varios objetos dentro de un conjunto de formularios.
Ocultar un formulario
Explica cómo ocultar y liberar un formulario. Cuando se oculta un formulario, se hace invisible al usuario y éste no puede manipularlo. No obstante, aún tiene el control completo del formulario mediante programación.
Transferir parámetros a un formulario
Detalla los pasos necesarios para transferir un parámetro a un formulario creado en el Diseñador de formularios y devolver un valor de un formulario.
Retornar un valor desde un formulario
Proporciona los pasos necesarios para permitirles a los usuarios devolver un valor desde formularios y usarlos en toda la aplicación.
Administrar múltiples instancias de un formulario
Explica los temas más importantes a tener en cuenta cuando se dispone de múltiples instancias de un formulario y proporciona ejemplos de múltiples instancias de un formulario.
Personalizar formularios
Proporciona instrucciones acerca de cómo cambiar fuentes y tamaños de texto, agregar formas y líneas, agregar gráficos y establecer los colores de primer plano y de fondo en un formulario.
Establecer el área de diseño de un formulario
Explica cómo establecer el área máxima de diseño para el Diseñador de formularios en el cuadro de diálogo Opciones.
Crear formularios con datos locales y remotos
Describe la creación de formularios que se pueden intercambiar fácilmente para el uso de datos locales y remotos.
Establecer plantillas de formularios
Contiene una explicación de cómo especificar una clase de formulario desde una biblioteca de clases registrada para su plantilla de formularios y presenta las diversas formas en las que se pueden especificar plantillas de conjuntos de formularios.

Secciones relacionadas

Crear la interfaz de usuario
Con los formularios, las clases, los controles, los menús y las barras de herramientas de Microsoft® Visual FoxPro® puede generar interfaces que ayuden a los usuarios a tener acceso a todas las posibilidades que ofrecen sus programas.
Crear formularios
Su aplicación necesita formularios para que los usuarios puedan ver y entrar datos. No obstante, puede personalizar los formularios estándar, visualmente y mediante programación, para crear un entorno especializado para sus usuarios.
Utilizar controles
Los controles administran las interacciones entre los usuarios y su aplicación. Microsoft® Visual FoxPro® dispone de diversos controles para mejorar la interfaz de su aplicación.
Diseñar menús y barras de herramientas
Un buen sistema de menús dice mucho a los usuarios acerca del diseño y la estructura de su aplicación. Si diseña con atención los menús y las barras de herramientas puede mejorar la facilidad de uso de su aplicación y proporcionar acceso inmediato a las tareas comunes.


Ejecutar un formulario

Un formulario puede ejecutarse directamente desde la interfaz o mediante programación.

Ejecutar un formulario de forma interactiva

Hay varios modos de ejecutar el formulario que ha diseñado.

Si está trabajando en el Diseñador de formularios, puede probar el formulario haciendo clic en el botón Ejecutar de la barra de herramientas Diseñador de formularios. Para volver a abrir el formulario en el Diseñador de formularios, ciérrelo o elija el botón Modificar formulario de la barra de herramientas.

También puede ejecutar un formulario desde un proyecto o mediante programación.

Para ejecutar un formulario

  • En el Administrador de proyectos, seleccione el nombre del formulario en la ficha Documentos y elija Ejecutar.

    –O bien–

  • Escriba DO FORM en la ventana Comandos.

    –O bien–

  • En el menú Formulario, elija Ejecutar formulario. También puede elegir el botón Ejecutar en la barra de herramientas Estándar.

También puede ejecutar el formulario si elige Ejecutar en el menú Programa, a continuación elige Formulario en el cuadro Mostrar archivos del tipo y finalmente selecciona el formulario y elige Ejecutar.

Sugerencia Cuando ejecuta un formulario, puede cambiar rápidamente al modo Diseño si hace clic en el botón Modificar formulario de la barra de herramientas Estándar.

Ejecutar un formulario desde un programa

Para ejecutar un formulario mediante programación, incluya el comando DO FORM en el código asociado a un evento, en código de método o en un programa o un procedimiento.

Asignar un nombre al objeto Form

De forma predeterminada, cuando usa el comando DO FORM, el nombre del objeto Form es el mismo que el del archivo .scx. Por ejemplo, la siguiente línea de código ejecuta Customer.scx. Visual FoxPro crea automáticamente una variable de objeto para el formulario llamada customer:

DO FORM Customer

Para asignar un nombre a un objeto Form

  • Utilice la cláusula NAME del comando DO FORM.

Por ejemplo, los comandos siguientes ejecutan un formulario y crean dos nombres de variable del objeto Form:

DO FORM Customer NAME frmCust1
DO FORM Customer NAME frmCust2

Manipular el objeto Form

Si ejecuta el comando DO FORM desde la ventana Comandos, el objeto Form se asociará a una variable pública. Puede tener acceso al objeto Form a través del nombre de variable. Por ejemplo, los comandos siguientes, ejecutados en la ventana Comandos, abren un formulario llamado Customer y cambian su título.

DO FORM Customer
Customer.Caption = "Hello"

Si a continuación ejecuta el comando siguiente en la ventana Comandos, aparecerá O en la ventana Resultados activa, lo que indica que Customer es un objeto:

? TYPE("Customer")

Si ejecuta el comando DO FORM en un programa, el objeto Form se incluirá en el alcance del programa. Si se completa el programa o el procedimiento, el objeto desaparecerá, pero el formulario permanecerá visible. Por ejemplo, podría ejecutar el programa siguiente:

*formtest.prg
DO FORM Customer

Después de ejecutar el programa, el formulario permanece visible y todos los controles del formulario están activos, pero TYPE("Customer") devuelve U, lo que indica que Customer es una variable no definida. El comando siguiente, ejecutado en la ventana Comandos, generaría un error:

Customer.Caption = "Hello"

Sin embargo, sí puede tener acceso al formulario utilizando las propiedades ActiveForm, Forms y FormCount del objeto Application.

Ajustar el alcance del formulario a la variable del objeto Form

La palabra clave LINKED del comando DO FORM permite vincular el formulario al objeto Form. Si incluye la palabra clave LINKED, cuando la variable asociada al objeto formulario esté fuera del alcance, se liberará el formulario.

Por ejemplo, el comando siguiente crea un formulario vinculado a la variable de objeto frmCust2:

DO FORM Customer NAME frmCust2 LINKED

Cuando se libera frmCust2, el formulario se cierra.

Cerrar un formulario activo

Para permitir que los usuarios cierren el formulario activo al hacer clic en el botón de cierre o al elegir Cerrar en el menú Control del formulario, establezca la propiedad Closable del formulario.

Para permitir a un usuario cerrar el formulario activo

  • En la ventana Propiedades, establezca la propiedad Closable en el valor verdadero (.T.).

    –O bien–

  • Utilice el comando RELEASE.

Por ejemplo, puede cerrar y liberar el formulario frmCustomer si ejecuta el comando siguiente en un programa o en la ventana Comandos:

RELEASE frmCustomer

También puede permitir que un usuario cierre y libere un formulario si incluye el comando siguiente en el código de evento Click de un control, como un botón de comando con el título “Salir”:

THISFORM.Release

También puede usar el comando RELEASE en el código asociado a un objeto del formulario, pero no se ejecutará el código que haya incluido en el método Release.

Precaución Al liberar un formulario, se libera de la memoria la variable de objeto creada para el formulario. Hay una única variable para un conjunto de formularios, por lo que no podrá liberar formularios de un conjunto de formularios sin liberar el conjunto. Si desea liberar el conjunto de formularios, puede utilizar RELEASE THISFORMSET. Si desea quitar un formulario de la pantalla de modo que un usuario no pueda verlo o interactuar con él, utilice THISFORM.Hide.

Vea también

Guardar formularios | Establecer propiedades en tiempo de ejecución | Crear formularios | Ejemplo de manipulación de objetos | Ocultar un formulario


Establecer propiedades en tiempo de ejecución

El modelo de objetos de Visual FoxPro proporciona mucho control sobre las propiedades en tiempo de ejecución.

Referencias a objetos en la jerarquía de objetos

Para manipular un objeto, hay que identificarlo en relación a la jerarquía de contenedores. En el nivel superior de la jerarquía de contenedores (el conjunto de formularios o el formulario) debe hacer referencia a la variable de objeto. A no ser que use la cláusula NAME del comando DO FORM, la variable de objeto tiene el mismo nombre que el archivo .scx.

Para manipular las propiedades, haga referencia a la variable de objeto, al control y a la propiedad, separados por un punto (.):

objectvariable.[form.]control.property = Setting

La tabla siguiente muestra las propiedades o las palabras clave que facilitan el establecimiento de referencias a un objeto en la jerarquía de objetos.

Propiedad o palabra clave | Referencia
ActiveControl | El control del formulario activo actualmente que tiene el foco
ActiveForm | El formulario activo actualmente
ActivePage | La página activa del formulario activo actualmente
Parent | El contenedor más cercano al objeto
THIS | El objeto o un procedimiento o evento del objeto
THISFORM | El formulario que contiene el objeto
THISFORMSET | El conjunto de formularios que contiene al objeto

Por ejemplo, para cambiar el título de un botón de comando del formulario frmCust de un conjunto de formularios almacenado en Custview.scx, use el siguiente comando en un programa o en la ventana Comandos:

CustView.frmCust.cmdButton1.Caption = "Edit"

Utilice las palabras clave THIS, THISFORM y THISFORMSET para hacer referencia a objetos desde un formulario. Por ejemplo, para cambiar el título de un botón de comando cuando hace clic en éste, incluya el comando siguiente en el código de evento Click para el botón de comando:

THIS.Caption = "Edit"

La tabla siguiente ofrece ejemplos del uso de THISFORMSET, THISFORM, THIS y Parent para establecer propiedades de objeto.

(Comando) Dónde incluir el comando
THISFORMSET.frm1.cmd1.Caption = 'OK'
 En el código de evento o de método de cualquier control de un formulario del conjunto de formularios salvo frm1.
THISFORM.cmd1.Caption = 'OK'
 En el código de evento o de método de cualquier control salvo cmd1 en el mismo formulario en que está cmd1.
THIS.Caption = 'OK'
 En el código de evento o de método del control cuyo título desee cambiar.
THIS.Parent.BackColor = RGB(192,0,0)
 En el código de evento o de método de un control de un formulario. El comando cambia a rojo oscuro el color de fondo del formulario.

Establecer propiedades en tiempo de ejecución mediante expresiones

También puede establecer propiedades en tiempo de ejecución si utiliza expresiones o funciones.

Para establecer propiedades en expresiones en tiempo de ejecución

  • Asigne una expresión a la propiedad.

    –O bien–

  • Asigne a la propiedad el resultado de una función definida por el usuario.

    Por ejemplo, podría establecer el título de un botón como Modificar o Guardar, según el valor de una variable. Declare la variable en el programa que llama a su formulario:

    PUBLIC glEditing
glEditing = .F.

    A continuación, utilice una expresión IIF en el valor de Caption:

    frsSet1.frmForm1.cmdButton1.Caption = ;
IIF(glEditing = .F., "Edit", "Save")

Podría determinar el tamaño de un botón y establecer el título mediante expresiones con campos de una tabla:

* set button width to length of 'Call ' + first and last names
frmForm1.cmdButton1.Width = 5 + ;
LEN(ALLTRIM(employee.first_name    + " " + employee.last_name))
* set button caption to 'Call ' + first and last names
frmForm1.cmdButton1.Caption = "Call " + ;
ALLTRIM(employee.first_name + " " + employee.last_name)

También podría establecer el título mediante una función definida por el usuario:

frsSet1.frmForm1.cmdButton1.Caption = setcaption()

Establecer múltiples propiedades

Puede establecer múltiples propiedades de una sola vez.

Para establecer múltiples propiedades

  • Utilice la estructura WITH ... ENDWITH.

    Por ejemplo, para establecer múltiples propiedades de una columna en una cuadrícula de un formulario, podría incluir la instrucción siguiente en el código de cualquier evento o método del formulario:

    WITH THISFORM.grdGrid1.grcColumn1
.Width = 5
.Resizable = .F.
.ForeColor = RGB(0,0,0)
.BackColor = RGB(255,255,255)
.SelectOnEntry = .T.
ENDWITH

Llamar a métodos en tiempo de ejecución

La sintaxis para llamar a los métodos de un objeto es la siguiente:

Parent.Object.Method

Una vez creado un objeto, puede llamar a los métodos de ese objeto desde cualquier lugar de la aplicación. Los comandos siguientes llaman a métodos para mostrar un formulario y establecer el foco en un botón de comando:

* form set saved in MYF_SET.SCX
myf_set.frmForm1.Show
myf_set.frmForm1.cmdButton1.SetFocus

Para ocultar el formulario, ejecute este comando:

myf_set.frmForm1.Hide

Responder a eventos

El código incluido en un procedimiento de evento se ejecuta cuando se produce el evento. Por ejemplo, el código que incluya en el procedimiento de evento Click de un botón de comando se ejecutará cuando el usuario haga clic en el botón de comando.

Una llamada al código de procedimiento asociado a un evento no hace que se produzca un evento. Por ejemplo, la instrucción siguiente hace que se ejecute el código del evento Activate de frmPhoneLog, pero no activa el formulario:

frmPhoneLog.Activate

Al llamar al método Show de un formulario, se mostrará y activará el formulario. En este momento se ejecutará el código del evento Activate:

frmPhoneLog.Show

Vea también

Ejecutar un formulario | Ejemplo de manipulación de objetos | Crear formularios | Ocultar un formulario | Transferir parámetros a un formulario | Guardar un formulario como HTML


Ejemplo de manipulación de objetos

El ejemplo siguiente establece propiedades y llama a código de evento desde diversos objetos de un conjunto de formularios. El ejemplo incluye dos formularios, frmLeft y frmRight, en un conjunto de formularios.

Conjunto de formularios de ejemplo en el Diseñador de formularios

Las dos casillas de verificación y el botón de comando de frmLeft están asociados a código de evento. El nombre del cuadro de texto de frmLeft es txtInput.

Código de evento para objetos de LeftForm

Objeto Evento Código
chkItalic Click
THISFORM.txtInput.FontItalic = ;
THIS.Value
chkBold Click
THIS.txtInput.FontBold = THIS.Value
cmdClear Click
THISFORM.txtInput.Value = ""

THISFORM.txtInput.FontBold = .F.
THISFORM.txtInput.FontItalic = .F.
THISFORM.chkItalic.Value = .F.
THISFORM.chkBold.Value = .F.

Establecer una propiedad de otro control en el mismo formulario

Puede establecer las propiedades de un control desde el código de evento de otro con la palabra clave THISFORM o la propiedad Parent. Los dos comandos siguientes se ejecutan cuando un usuario hace clic en las casillas de verificación Cursiva y Negrita, estableciendo las propiedades correspondientes del cuadro de texto:

THISFORM.txtInput.FontItalic = .T.
THIS.Parent.txtInput.FontBold = .T.

En este caso, THISFORM y THIS.Parent pueden emplearse indistintamente.

Conjunto de formularios de ejemplo en tiempo de ejecución

El código del evento Click para cmdClear utiliza THISFORM para restablecer los valores de los demás controles del formulario.

Establecer las propiedades de otro formulario

También puede establecer propiedades de un formulario desde otro formulario distinto. Form2 contiene 5 botones de comando. El primer botón del formulario tiene este código en su evento Click:

THISFORMSET.frmLeft.Caption = ;
ALLTRIM(ThisFormSet.frmLeft.txtInput.Value)

Observe que debe hacer referencia al conjunto de formularios y al formulario cuando se establecen propiedades desde otro formulario distinto.

El usuario hace clic en el botón de comando “Cambiar el título del formulario izquierdo” en el formulario de la derecha

El código de evento Click del segundo botón de comando de frmRight muestra cómo se establece una propiedad de un formulario desde un objeto del formulario:

THISFORM.Caption = ;
ALLTRIM(ThisFormSet.frmLeft.txtInput.Value)

Si el usuario elige este botón, el título de frmRight cambiará al valor del cuadro de texto de frmLeft.

Acceso a objetos de formularios distintos

El siguiente código del evento Click del botón de comando Cambiar la configuración de negrita cambia el valor de la casilla de verificación Negrita de frmLeft y llama al código de evento asociado a este control.

THISFORMSET.frmLeft.chkBold.Value = ;
NOT THISFORMSET.frmLeft.chkBold.Value
THISFORMSET.frmLeft.chkBold.InteractiveChange

La última línea del ejemplo llama al evento InteractiveChange de chkBold. También podría llamar a este procedimiento mediante el comando siguiente:

THISFORMSET.frmForm1.chkBold.InteractiveChange( )

Si se omite esta llamada al procedimiento, cambiará el valor de la casilla de verificación, pero no cambiará la propiedad FontBold del cuadro de texto.

El usuario hace clic en el botón de comando “Cambiar la configuración de negrita” en el formulario de la derecha

Comprobar propiedades y llamar a código de método de otro formulario

El código siguiente del evento Click del botón de comando Ocultar formulario izquierdo oculta o muestra frmLeft, según el valor de la propiedad Visible, y cambia el título del botón según corresponda:

IF ThisFormSet.frmLeft.Visible
ThisFormSet.frmLeft.Hide
THIS.Caption = "Show Left Form"
ELSE
ThisFormSet.frmLeft.Show
THIS.Caption = "Hide Left Form"
ENDIF

Observe que la palabra clave THIS se utiliza en el código de evento de un control para hacer referencia a propiedades del control.

El usuario hace clic en el botón de comando Ocultar formulario izquierdo en el formulario de la derecha

El comando siguiente del evento Click del botón de comando Salir libera el conjunto de formularios; esto hace que se cierren ambos formularios:

RELEASE ThisFormSet

Vea también

Establecer propiedades en tiempo de ejecución | Ocultar un formulario | Crear formularios | Transferir parámetros a un formulario | Guardar un formulario como HTML


Ocultar un formulario

Puede ocultar un formulario para que deje de estar visible para un usuario. Cuando el formulario está oculto, el usuario no puede tener acceso a sus controles, pero usted sigue teniendo control total sobre ellos mediante programación.

Para ocultar un formulario

  • Utilice el método Hide.

    Por ejemplo, en el código asociado al evento Click de un botón de comando puede incluir la siguiente línea de código:

    THISFORM.Hide

Cuando el usuario haga clic en el botón de comando, el formulario permanecerá en memoria, pero no será visible.

Liberar un formulario

Puede permitir que un usuario libere un formulario cuando haya terminado de interactuar con él. Al liberar un formulario, ya no podrá tener acceso a sus propiedades y métodos.

Para liberar un formulario

  • Utilice el método Release.

Por ejemplo, en el código asociado al evento Click de un botón de comando puede incluir la siguiente línea de código:

THISFORM.Release

Cuando el usuario haga clic en el botón de comando, se cerrará el formulario.

Vea también

Ejemplo de manipulación de objetos | Crear formularios | Transferir parámetros a un formulario | Guardar un formulario como HTML | Administrar múltiples instancias de un formulario


Transferir parámetros a un formulario

En algunos casos puede resultar conveniente transferir parámetros a formularios cuando se ejecutan para establecer valores de propiedad o para especificar valores operativos predeterminados.

Para transferir un parámetro a un formulario creado en el Diseñador de formularios

  1. Cree en el formulario propiedades para almacenar los parámetros, como ItemName e ItemQuantity.
  2. En el código de evento Init para el formulario, incluya una instrucción PARAMETERS como ésta:
    PARAMETERS cString, nNumber
  3. En el código de evento Init para el formulario, asigne los parámetros a las propiedades, como en este ejemplo:
    THIS.ItemName = cString
THIS.ItemQuantity = nNumber
  4. Cuando ejecute el formulario, incluya una cláusula WITH en el comando DO FORM:
    DO FORM myform WITH "Bagel", 24

Vea también

Ocultar un formulario | Guardar un formulario como HTML | Crear formularios | Administrar múltiples instancias de un formulario | Establecer el área de diseño de un formulario | Retornar un valor desde un formulario


Devolver un valor desde un Formulario

En una aplicación, es posible usar formularios para permitir a los usuarios devolver un valor.

Para devolver un valor desde un formulario

  1. Ajuste la propiedad WindowType del formulario a 1 para convertir el formulario en modal.
  2. En el evento Unload del formulario, incluya una instrucción RETURN con el valor que desea devolver.
  3. En el programa o método que llama al formulario, incluya la palabra clave TO en la instrucción DO FORM.

    Por ejemplo, si FindCustID es un formulario modal que devuelve un valor de tipo carácter, la siguiente línea de código guarda el valor devuelto en una variable llamada cCustID:

    DO FORM FindCustID TO cCustID

Para mas información, ver RETURN y DO FORM.

Nota Si ocurre un error, asegúrese de que la propiedad WindowType del formulario esta establecida a 1 (Modal).

Vea también

Unload (Evento) | Transferir parámetros a un formulario | RETURN | DO FORM


Administrar múltiples instancias de un formulario

Puede tener activas varias instancias de una definición de clase al mismo tiempo. Por ejemplo, puede diseñar un formulario de pedidos, pero tener varios pedidos abiertos en su aplicación. Cada pedido utiliza la misma definición de formulario, pero se muestra y manipula individualmente.

Si dispone de múltiples instancias de un formulario, los puntos clave que deberá tener en cuenta son los siguientes:

  • Cree una propiedad de matriz en el formulario de inicio para almacenar las variables de objeto asociadas con cada instancia del formulario de múltiples instancias. El modo más sencillo de hacer un seguimiento de las variables de instancia cuando no se sabe con antelación cuántas va a tener consiste en utilizar una matriz.
  • ,Establezca la propiedad DataSession en 2 – Sesión privada de datos para el formulario que va a tener varias instancias. Una sesión privada de datos proporciona un conjunto independiente de áreas de trabajo para cada instancia del formulario de forma que las tablas seleccionadas y las posiciones de puntero de registro sean todas independientes.

El ejemplo siguiente proporciona código que muestra cómo se crean múltiples instancias de un formulario. Para no hacerlo demasiado extenso, este código no está optimizado; está pensado únicamente para presentar los conceptos.

El formulario siguiente inicia múltiples instancias:

Valores de la propiedad para Launch.scx

Objeto Propiedad Valor
frmLaunch aForms[1]
" "

Código de evento para Launch.scx

Objeto Evento Código
cmdQuit Click
RELEASE THISFORM
cmdLaunch Click
nInstance = ALEN(THISFORM.aForms)
DO FORM Multi ;
NAME THISFORM.aForms[nInstance] ;

  LINKED
DIMENSION ;
THISFORM.aForms[nInstance + 1]

Para ajustar el código de este ejemplo, podría administrar la matriz de objetos de formulario de modo que se cerraran los elementos vacíos de la matriz reutilizados como formularios y se abrieran nuevos formularios, en lugar de redimensionar siempre la matriz y aumentar en uno el número de elementos.

El formulario que puede tener múltiples instancias es Multi.scx. El entorno de datos para este formulario contiene la tabla Employee.

Múltiples instancias de Multi.scx

Valores de la propiedad para Multi.scx

Objeto | Propiedad | Valor
txtFirstname ControlSource
Employee.first_name
txtLastName ControlSource
Employee.last_name
frmMulti | DataSession | 2 - Sesión privada de datos

Al elegir Iniciar formulario en el formulario Launch, se crea una instancia del formulario Multi. Al cerrar el formulario Launch se libera la matriz de propiedades aForms y se destruyen todas las instancias de Multi.

Visual FoxPro proporciona algunas funciones y propiedades que le ayudan a administrar múltiples instancias de objetos. Para obtener más información, consulte AINSTANCE( ), AUSED( ) y DataSessionID.

Vea también

Guardar un formulario como HTML | Establecer el área de diseño de un formulario | Crear formularios | Crear formularios con datos locales y remotos | DataSession


Personalizar formularios

Puede agregar mejoras a los formularios para que tengan una apariencia más interesante y resulten más fáciles de utilizar. Por ejemplo, puede agrupar visualmente controles similares dibujando un cuadro alrededor de ellos o bien, utilizar mapas de bits para darles un aspecto más profesional.

Con el Diseñador de formularios puede personalizar formularios de las maneras siguientes:

  • Cambiar fuentes y tamaños del texto
  • Agregar formas y líneas a un formulario
  • Agregar gráficos a un formulario
  • Establecer los colores de fondo y primer plano de un formulario

Cambiar fuentes y tamaños del texto

Con las propiedades de fuente de la ventana Propiedades, puede modificar el estilo y el tamaño del texto que aparece en los controles que ha agregado a los formularios. Puede elegir entre los estilos y los tamaños de fuente disponibles que admite el sistema. Para cambiar el texto del formulario, cambie las propiedades de fuente, como FontName, FontSize y FontBold, que se muestran en la ventana Propiedades.

Para cambiar el texto de los formularios

  1. En el Diseñador de formularios, seleccione el control que desea cambiar.
  2. En la ventana Propiedades, despliegue la lista Objeto y seleccione el objeto que desea cambiar.
  3. Busque la propiedad de fuente que desea cambiar y establezca su valor.

Agregar formas y líneas a formularios

Puede agregar formas y líneas a los formularios para personalizarlos. Por ejemplo, puede separar grupos de controles con una línea de división o agrupar controles relacionados en un cuadro para separarlos del resto.

Para agregar una línea a un formulario

  1. En la barra de herramientas Controles de formularios, elija el botón Línea.
  2. Arrastre al formulario para crear una línea.

Puede cambiar el tamaño y mover la línea como si se tratara de cualquier otro control, o cambiar su inclinación con la propiedad LineSlant de la ventana Propiedades.

Para agregar una forma a un formulario

  1. En la barra de herramientas Controles de formularios, haga clic en el botón Forma.
  2. Arrastre al formulario para crear una forma.

Puede cambiar el tipo de forma con la propiedad Curvature de la ventana Propiedades.

Agregar gráficos a un formulario

Puede agregar un gráfico en el fondo del formulario o agregar una imagen a un cuadro situado dentro del formulario.

Para agregar un gráfico al formulario

  1. Elija una de estas opciones:
    • Para cambiar el fondo del formulario, seleccione el formulario.

      –O bien–

    • Para agregar una imagen al formulario, seleccione un control Image en la barra de herramientas Controles de formularios y sitúelo en el formulario.
  2. En la ventana Propiedades, seleccione la propiedad Picture.
  3. Haga clic en el botón del cuadro de diálogo para mostrar el cuadro de diálogo Abrir.
  4. Localice la imagen que desee usar.
  5. Elija Aceptar.

Establecer colores de formularios

Puede controlar los colores de un formulario mediante la propiedad ColorSource para basar los colores en un esquema de colores existente o puede usar la barra de herramientas Paleta de colores para cambiar el color de primer plano o de fondo de los formularios y de los controles que contienen.

Para establecer colores de formularios mediante la propiedad ColorSource

  • En la ficha Diseño de la ventana Propiedades, elija ColorSource y seleccione un valor.

Para establecer el color de primer plano o el color de fondo de un control o de un formulario

  1. En el menú Ver, seleccione la barra de herramientas Paleta de colores.
  2. Elija Color de primer plano o Color de fondo.
  3. Seleccione el control o formulario que desea modificar.
  4. En la barra de herramientas Paleta de colores, seleccione el color que quiere utilizar.
  5. Para ver más opciones de colores, elija Otros colores en la barra de herramientas

Para crear un color personalizado

  1. En la barra de herramientas Paleta de colores, elija Otros colores.
  2. En el cuadro de diálogo Color, elija Definir colores personalizados para mostrar el Selector de color personalizado.
  3. Seleccione uno de los cuadros de Color personalizado y, a continuación, haga clic en el Selector de color personalizado para seleccionar el color que desee.
  4. Elija Agregar a colores personalizados para agregar el nuevo color a la paleta.
  5. Elija Aceptar.

    Visual FoxPro aplica el color personalizado a la selección actual.

Vea también

Crear formularios | Diseñador de formularios | Ventana Propiedades | ColorSource (Propiedad) | Crear formularios | Establecer el área de diseño de un formulario | Administrar múltiples instancias de un formulario | LineSlant (Propiedad)


Crear formularios con datos locales y remotos

Puede crear formularios que pueden usar alternativamente datos locales y datos almacenados de forma remota (por ejemplo, en un servidor de base de datos). Esto le permite crear una aplicación prototipo con datos locales o de prueba, y después cambiar a datos remotos o activos sin cambios importantes en sus formularios.

Por ejemplo, si su aplicación de Visual FoxPro es un cliente para una tabla grande de clientes almacenada en un servidor de base de datos, puede crear un archivo .dbf local que contiene una muestra pequeña pero representativa de datos. Entonces puede crear, probar y depurar sus formularios en base a este pequeño conjunto de datos. Cuando esté preparado para distribuir la aplicación, puede vincular el formulario al conjunto grande de datos.

La clave para poder cambiar entre datos remotos y locales es asegurarse de que usa vistas en lugar de vincular directamente el formulario (y sus controles) a una tabla. Para tener acceso a datos remotos, debe usar una vista en cualquier evento. Por lo tanto, para facilitar el cambio entre datos locales y remotos, cree también una vista para los datos locales. Cuando cree el formulario, puede agregar ambas vistas a sus entornos de datos y, a continuación, cambiar de un tipo a otro según sea necesario.

Para crear un formulario que pueda cambiar entre datos locales y datos remotos

  1. Cree dos vistas de los datos, una que apunte a los datos remotos, y otra que apunte a los datos locales.
  2. Cree un nuevo formulario.
  3. Abra el Diseñador de entorno de datos para el formulario y, a continuación, agregue ambas vistas.
  4. Haga clic con el botón secundario en el Diseñador de entornos de datos y, a continuación, elija Propiedades.
  5. En la ventana Propiedades, establezca la propiedad Alias para ambos cursores con el mismo nombre.
  6. Establezca la propiedad OpenViews del entorno de datos en 1 – Sólo local o 2 – Sólo remota, en función de qué vista desee usar al ejecutar el formulario.
    Nota Como usa el mismo alias para ambas vistas, no elija 0 – Local y remota (predeterminada).
  7. En el formulario, agregue los controles que necesite y establezca sus propiedades ControlSource a los campos apropiados de la vista. Como las dos vistas tienen el mismo alias, los controles responderán automáticamente a la vista que esté activa cuando se ejecute el formulario.

Después de crear el formulario, puede cambiar los alias de vistas si cambia la propiedad OpenViews del entorno de datos. Puede hacerlo en el Entorno de datos mientras usa el Diseñador de formularios. De forma alternativa, puede escribir código y adjuntarlo a un evento, lo cual es útil si quiere cambiar vistas en tiempo de ejecución. Por ejemplo, puede colocar el código en el evento Activate del formulario:

THISFORM.DataEnvironment.OpenViews = 2 && Use remote view

Si crea un formulario que puede alternar entre datos locales y remotos, también debe diseñar el código de desplazamiento para acomodar ambas vistas, en particular si diseña formularios con relaciones de uno a varios. Por ejemplo, si su formulario sólo tiene acceso a una tabla o vista local, puede usar código como el siguiente en un botón de comando Siguiente para ir al siguiente registro en un cursor:

SKIP 1
THISFORM.Refresh()

Sin embargo, este código es ineficaz cuando se desplaza en una vista remota, porque supone que el cursor contiene todos los datos que requiere el formulario. Como regla general, debe minimizar la cantidad de datos que transfiere desde el origen de datos remoto.

La solución consiste en usar una vista parametrizada. Por ejemplo, la definición para una vista usada para modificar información de clientes podría ser:

SELECT * FROM CUSTOMERS WHERE ;
CUSTOMERS.COMPANY_NAME = ?pCompanyName

Cuando el formulario se ejecuta, puede pedir al usuario un nombre de cliente mediante un cuadro de diálogo o permitiendo al usuario escribir un nombre en un cuadro de texto. El código para un botón Mostrar sería similar al siguiente:

pCompanyName = THISFORM.txtCompanyName.Value
REQUERY("customer")
THISFORM.Refresh()

Para obtener más información acerca de las vistas parametrizadas, consulte “Crear una vista parametrizada” en Crear vistas.

Vea también

Establecer el área de diseño de un formulario | Establecer plantillas de formularios | Crear formularios | Diseñador de entorno de datos | Ventana Propiedades | OpenViews


Establecer el área de diseño de un formulario

Puede establecer el área de diseño máxima para el Diseñador de formularios en el cuadro de diálogo Opciones.

Para establecer el área de diseño máxima para un formulario

  1. En el menú Herramientas, elija Opciones.
  2. En el cuadro de diálogo Opciones, elija la ficha Formularios.
  3. En el cuadro Área de diseño máxima, elija las coordenadas del área de diseño máxima en píxeles.
    Sugerencia Si selecciona Ninguna, el Diseñador de formularios no limitará el tamaño de los formularios que dibuje.

Para más información, consulte Ficha Formularios, cuadro de diálogo Opciones

Cuando establezca el área de diseño máxima, el fondo del Diseñador de formularios será de color blanco dentro de los límites del área de diseño y gris fuera del área de diseño máxima. Por ejemplo, si desarrolla aplicaciones en un monitor con una resolución de 1024 x 768, podrá establecer la resolución de diseño en 640 x 480 y saber con seguridad que los formularios que diseñe siempre cabrán en pantallas de 640 x 480.

En el área de diseño, deje espacio para los atributos estándar de las ventanas, como las barras de herramientas. Por ejemplo, en una pantalla de 640 x 480, un formulario con una barra de estado y una barra de herramientas acoplada en la parte superior o inferior de la pantalla puede tener una altura máxima de 390 píxeles.

Atributo de la ventana principal de Visual FoxPro | Píxeles necesarios
Título y menú | 38
Barra de estado | 23
Barra de herramientas acoplada | 29
Note La cantidad necesaria de pixeles mostrada en la tabla, varía si está activado Themes.

Vea también

Administrar múltiples instancias de un formulario | Crear formularios con datos locales y remotos | Crear formularios | Establecer plantillas de formularios | Diseñador de formularios


Establecer plantillas de formularios

Puede crear su propia clase de formulario con el fin de utilizar una plantilla para todos los formularios nuevos o bien puede utilizar una de las clases de ejemplo que se incluyen con Visual FoxPro.

Cuando cree un formulario nuevo, éste se basará en el formulario de plantilla que se establece en el cuadro de diálogo Opciones. Si no se especifica ninguna plantilla, el nuevo formulario se basará en la clase de base Form de Visual FoxPro. Para obtener más información acerca de las clases de Visual FoxPro, consulte Programación orientada a objetos.

Ventajas del uso de plantillas de formulario

Las plantillas de formulario permiten establecer propiedades predeterminadas para los formularios, de forma que todos los formularios de la aplicación tengan una apariencia parecida y se utilicen de forma similar. Podría incluir un logotipo de su compañía, por ejemplo, y utilizar un mismo esquema de colores en todos los formularios diseñando una clase de formulario de plantilla con estos atributos. Si cambiara el logotipo de la compañía, podría cambiar la imagen que aparece en la clase de formulario de plantilla y todos los formularios creados con esa plantilla heredarían automáticamente el nuevo logotipo.

Puede agregar propiedades y métodos personalizados a la clase de formulario de Visual FoxPro de modo que estas propiedades y estos métodos estén disponibles para todos los formularios de la aplicación. Si normalmente crea variables y procedimientos definidos por el usuario cuyo alcance es un formulario, el uso de propiedades y métodos personalizados le proporcionará la funcionalidad necesaria, a la vez que le permitirá disponer de un modelo de encapsulación más limpio.

Especificar la plantilla predeterminada de formulario

Puede especificar una clase de formulario procedente de una biblioteca de clases registrada para la plantilla de formulario.

Para especificar una plantilla predeterminada de formulario

  1. En el menú Herramientas, elija Opciones.
  2. En el cuadro de diálogo Opciones, elija la ficha Formularios.
  3. En el área Clases de plantilla, active la casilla de verificación Formulario.

    Si no se ha seleccionado ninguna plantilla de formulario, se abrirá el cuadro de diálogo Abrir en el que podrá elegir una clase de formulario. Si ha seleccionado una plantilla de formulario, puede cambiarla utilizando el botón del cuadro de diálogo y seleccionando otra clase.

  4. Elija Establecer como predeterminado si desea usar la plantilla en posteriores sesiones de Visual FoxPro.
  5. Elija Aceptar.

Usar plantillas de formularios

Puede especificar plantillas de conjuntos de formularios del mismo modo que las plantillas de formularios. Se permiten las combinaciones siguientes:

  • Especificar plantillas de conjuntos de formularios y de formularios.

    Al elegir Formulario en el cuadro de diálogo Nuevo (y en los restantes modos de crear un nuevo formulario) se creará automáticamente un conjunto de formularios basado en la clase de conjunto de formularios de plantilla. Cuando elija Agregar nuevo formulario en el menú Formulario del Diseñador de formularios, se agregará al conjunto de formularios un formulario basado en la plantilla de formulario.

  • Especificar sólo la plantilla de conjunto de formularios.

    Al elegir Formulario en el cuadro de diálogo Nuevo (y en todos los demás métodos para crear un formulario nuevo) se creará automáticamente un conjunto de formularios basado en la clase FormSet de la plantilla. Cuando elija Agregar nuevo formulario en el menú Formulario del Diseñador de formularios, se agregará al conjunto de formularios un formulario basado en la clase de base Form de Visual FoxPro.

  • Especificar sólo la plantilla de formulario.

    Al elegir Formulario en el cuadro de diálogo Nuevo (y en todos los demás métodos para crear un formulario nuevo) se creará automáticamente un formulario basado en la clase Form de la plantilla.

  • No especificar plantillas.

    Al elegir Formulario en el cuadro de diálogo Nuevo (y en los restantes modos de crear un nuevo formulario) se creará automáticamente un formulario basado en la clase de base Form de Visual FoxPro.

Vea también

Crear formularios con datos locales y remotos | Crear formularios | Opciones | Guardar un formulario como HTML | Establecer el área de diseño de un formulario | Administrar múltiples instancias de un formulario


Utilizar controles

Los controles son el medio fundamental de interacción de los usuarios. Para manipular sus datos y llevar a cabo tareas los usuarios escriben y hacen clic en los controles, y se desplazan por los controles de los formularios de su aplicación.

En esta sección

Seleccionar controles para tareas específicas
Explica la flexibilidad de los controles Visual FoxPro y cómo seleccionar correctamente el control apropiado para su aplicación.
Controles para mostrar listas
Describe los usos comunes, métodos y propiedades de cuadros de lista y cuadros de lista desplegables.
Controles para aceptar entradas
Describe los usos comunes, métodos y propiedades de controles Visual FoxPro que aceptan entradas de usuario que no pueden predeterminarse.
Controles para mostrar información
Explica varios controles y objetos Visual FoxPro que pueden mostrar y ordenar información.
Controles para manipular filas de datos
Describe los usos comunes, métodos y propiedades del control cuadrícula de Visual FoxPro.
Controles para permitir acciones específicas
Describe los controles Visual FoxPro que permiten a los usuarios tomar acciones programadas específicas bien por interacción del usuario o por un tiempo de espera.
Controles para extender formularios
Describe cómo el objeto PageFrame y el uso de controles ActiveX pueden extender el área de trabajo y el uso de formularios Visual FoxPro.
Información básica acerca de controles y datos
Explica la diferencia entre los dos tipos de controles que puede tener en sus formularios y lista los efectos de establecer la propiedad ControlSource en diferentes controles.
Crear controles arrastrar y colocar (drag-and-drop)
Describe los dos tipos de funcionalidad arrastrar y soltar que puede incluir en su aplicación Visual FoxPro, arrastrar y soltar de OLE y arrastrar y soltar controles.
Simplificar el uso de los controles
Ofrece instrucciones sobre cómo utilizar teclas de acceso, orden de tabulación, texto de información y desactivación selectiva para crear un mejor diseño que sea fácil de usar.

Secciones relacionadas

Crear la interfaz de usuario
Con los formularios, las clases, los controles, los menús y las barras de herramientas de Visual FoxPro, puede generar interfaces que ayuden a los usuarios a tener acceso a todas las posibilidades que ofrecen sus programas.
Crear formularios
Su aplicación necesita formularios para que los usuarios puedan ver y entrar datos. No obstante, puede personalizar los formularios estándar, visualmente y mediante programación, para crear un entorno especializado para sus usuarios.
Trabajar con formularios
Una vez creado el formulario, puede ejecutarlo, ocultarlo o modificarlo de diferentes maneras.
Diseñar menús y barras de herramientas
Un buen sistema de menús dice mucho a los usuarios acerca del diseño y la estructura de su aplicación. Si diseña con atención los menús y las barras de herramientas puede mejorar la facilidad de uso de su aplicación y proporcionar acceso inmediato a las tareas comunes.


Seleccionar controles para tareas específicas

Los controles de Visual FoxPro son flexibles y versátiles. Si bien hay múltiples controles que pueden emplearse para llevar a cabo una determinada tarea, necesitará emplear una estrategia coherente en relación con los controles que utiliza de modo que los usuarios sepan lo que pueden esperar cuando vean la interfaz que ha creado. Por ejemplo, una etiqueta tiene un evento Click igual que el botón de comando, pero los usuarios familiarizados con interfaces gráficas esperan poder hacer clic en los botones de comando para realizar acciones.

La mayor parte de la funcionalidad que querrá incorporar a sus formularios corresponderá a una de las siguientes categorías:

  • Proporcionar a los usuarios una serie de opciones predeterminadas
  • Aceptar entradas del usuario que no se pueden determinar de forma previa
  • Aceptar entradas del usuario en un determinado intervalo
  • Permitir a los usuarios realizar acciones específicas
  • Realizar determinadas acciones a intervalos específicos
  • Mostrar información

Proporcionar una serie de opciones predeterminadas

Uno de los modos más sencillos de asegurar la validez de los datos de una base de datos consiste en proporcionar a los usuarios una serie de opciones predeterminadas. Si controla las opciones del usuario puede asegurarse de que en la base de datos no se almacenan datos no válidos. Los controles siguientes permiten proporcionar a los usuarios una serie de opciones predeterminadas:

  • Grupos de botones de opción
  • Cuadros de lista y listas desplegables
  • Casillas de verificación

Los grupos de botones de opción son contenedores que alojan botones de opción. Generalmente, los botones de opción permiten a los usuarios especificar una opción entre varias en un cuadro de diálogo, en lugar de escribir los datos.

Vea también

Información básica acerca de controles y datos | Establecer el número de botones de opción en un grupo de opciones | Utilizar controles | Controles y objetos | Establecer propiedades de botones de opción


Controles para mostrar listas

Los cuadros de lista y los cuadros de lista desplegables (controles de tipo cuadro combinado con la propiedad Style establecida como 2–Lista desplegable) proporcionan al usuario una lista por la que puede desplazarse y que contiene una serie de opciones o información. En un cuadro de lista, puede haber varios elementos visibles en todo momento. En un cuadro de lista desplegable sólo se ve un elemento, aunque el usuario puede hacer clic en el botón de flecha abajo para mostrar una lista desplegable con todos los elementos del cuadro de lista desplegable.

Ejecute Solution.app en el directorio ...\Samples\Solution de Visual FoxPro para ver varios ejemplos que muestran el uso de los cuadros de lista y los cuadros de lista desplegables, como los siguientes:

  • Agregar imágenes a una lista.
  • Seleccionar varios elementos de una lista.
  • Llenar una lista con valores de orígenes distintos.
  • Mostrar múltiples columnas en una lista.
  • Ordenar elementos de una lista.
  • Mover elementos entre listas.
    Sugerencia Utilice una lista si dispone de espacio en el formulario y desea enfatizar las elecciones del usuario. Para mantener el espacio y enfatizar el elemento seleccionado actualmente, utilice un cuadro de lista desplegable.

Propiedades y métodos comunes de las listas

Las propiedades siguientes de cuadros de lista suelen establecerse en tiempo de diseño.

Propiedad | Descripción
ColumnCount | Indica el número de columnas del cuadro de lista.
ControlSource | Indica dónde se almacena el valor que elige un usuario en la lista.
MoverBars | Indica si las barras de movimiento se muestran a la izquierda de los elementos de la lista de modo que el usuario pueda reorganizar fácilmente los elementos de la lista.
Multiselect | Indica si el usuario puede seleccionar o no más de un elemento de la lista al mismo tiempo.
RowSource | Indica de dónde provienen los valores que se muestran en la lista.
RowSourceType | Indica si RowSource es un valor, una tabla, una instrucción SQL, una consulta, una matriz, una lista de archivos o una lista de campos.
Nota La propiedad Value de una lista puede ser numérica o de caracteres. El valor predeterminado es numérico. Establezca la propiedad Value como una cadena vacía si RowSource es un valor de tipo Carácter y desea que la propiedad Value refleje la cadena de caracteres del elemento seleccionado en la lista. Puede presionar la BARRA ESPACIADORA y, a continuación, la tecla RETROCESO para insertar una cadena vacía para una propiedad en la ventana Propiedades.

Los siguientes métodos de cuadro de lista suelen utilizarse con frecuencia:

Método | Descripción
AddItem | Agrega un elemento a una lista con un RowSourceType de 0.
RemoveItem | Quita un elemento de una lista con un RowSourceType de 0.
Requery | Actualiza la lista si han cambiado los valores de RowSource.

Llenar un cuadro de lista o un cuadro combinado

Puede llenar un cuadro de lista con elementos procedentes de diversos orígenes si establece las propiedades RowSourceType y RowSource.

Vea también

Almacenar opciones de usuario en una tabla mediante los botones de opción | Elegir un tipo de datos para un cuadro de lista o cuadro combinado | Crear cuadros de lista de múltiples columnas | Utilizar controles | Controles y objetos


Elegir un tipo de datos para un cuadro de lista o cuadro combinado

La propiedad RowSourceType determina qué tipo de origen llena el cuadro de lista o el cuadro combinado, por ejemplo, una matriz o una tabla. Una vez establecida la propiedad RowSourceType, especifique el origen de los elementos de la lista, estableciendo la propiedad RowSource.

RowSourceType | Origen de los elementos de lista
0 | Ninguno. Agrega elementos a la lista mediante programación.
1 | Valor
2 | Alias
3 | Instrucción SQL
4 | Consulta (.qpr)
5 | Matriz
6 | Campos
7 | Archivos
8 | Estructura
9 | Emergente. Se incluye por compatibilidad con versiones anteriores.

Las secciones siguientes describen los distintos valores de RowSourceType.

Nota Si establece la propiedad RowSourceType en 0, el valor predeterminado, la lista no se llenará automáticamente. Puede agregar elementos a la lista mediante el método AddItem:

frmForm1.lstMyList.RowSourceType = 0
frmForm1.lstMyList.AddItem("First Item")
frmForm1.lstMyList.AddItem("Second Item")
frmForm1.lstMyList.AddItem("Third Item")

El método RemoveItem permite quitar elementos de la lista. Por ejemplo, la línea de código siguiente quita “Second Item” de la lista:

frmForm1.lstMyList.RemoveItem(2)

Valor Si establece la propiedad RowSourceType a 1, podrá especificar múltiples valores en la propiedad RowSource que se mostrarán en la lista. Si establece la propiedad RowSource a través de la ventana Propiedades, incluya una lista de elementos delimitados por comas. Si establece RowSource mediante programación, incluya entre comillas la lista delimitada por comas:

Form1.lstMyList.RowSourceType = 1
Form1.lstMyList.RowSource = "one,two,three,four"

Alias Si establece la propiedad RowSourceType a 2, podrá incluir valores de uno o más campos de una tabla abierta.

Si la propiedad ColumnCount es 0 ó 1, la lista mostrará valores del primer campo de la tabla. Si establece la propiedad ColumnCount como 3, la lista mostrará valores de los tres primeros campos de la tabla. Para mostrar campos en un orden distinto del que tienen en la tabla, establezca la propiedad RowSourceType como 3 –Instrucción SQL o 6 – Campos.

Nota Si RowSourceType es 2 – Alias o 6 – Campos, cuando el usuario elige un nuevo valor de la lista, el puntero de registro de la tabla se mueve al registro que contiene el valor del elemento elegido.

Instrucción SQL Si establece la propiedad RowSourceType a 3 – Instrucción SQL, incluya una instrucción SELECT - SQL en la propiedad RowSource. Por ejemplo, la instrucción siguiente selecciona todos los campos y todos los registros de la tabla Customer en un cursor:

SELECT * FROM Customer INTO CURSOR mylist

Si establece RowSource mediante programación, no olvide incluir la instrucción SELECT entre comillas.

Nota De forma predeterminada, las instrucciones SELECT de Visual FoxPro sin cláusulas INTO muestran inmediatamente el cursor resultante en una ventana Examinar. Puesto que este comportamiento no suele ser conveniente en una instrucción SQL de RowSource, incluya una cláusula INTO CURSOR en la instrucción SELECT.

Consulta Si establece la propiedad RowSourceType a 4, podrá llenar el cuadro de lista con los resultados de una consulta diseñada en el Diseñador de consultas. Cuando RowSourceType está establecida a 4, establezca RowSource en el archivo .qpr. Por ejemplo, la línea de código siguiente establece la propiedad RowSource de una lista en una consulta.

THISFORM.List1.RowSource = "region.qpr"

Si no especifica una extensión de archivo, Visual FoxPro adoptará la extensión .qpr.

Matriz Si establece la propiedad RowSourceType en 5, la lista se llenará con los elementos de una matriz. Puede crear una propiedad de matriz del formulario o el conjunto de formularios para RowSource o bien utilizar una matriz creada en otra parte de la aplicación.

Para obtener información acerca de la creación de propiedades de matrices, consulte Crear formularios.

Sugerencia Cuando es necesario, Visual FoxPro evalúa el valor de RowSource de una lista en la aplicación, no sólo en el método en que se establece la propiedad RowSource. Debe tener en cuenta este alcance. Si crea una matriz local en un método, esa matriz tendrá como alcance el método y no estará disponible en todos los casos en que Visual FoxPro necesite evaluar el valor de la propiedad. Si establece la propiedad RowSource de una lista como una propiedad de matriz del formulario o el conjunto de formularios, deberá hacer referencia a la propiedad en relación a la lista, no en relación al método en el que se ha establecido la propiedad. Por ejemplo, si tiene una propiedad de matriz de formulario llamada arrayprop, las líneas de código siguientes del Init del formulario producirán resultados distintos:
THIS.lst1.RowSource = "THIS.arrayprop"   && Error
THIS.lst1.RowSource = "THISFORM.arrayprop" && No error.

Para llenar una lista con los elementos de una matriz multidimensional

  1. Establezca la propiedad RowSourceType a 5.
  2. Establezca la propiedad RowSource a la matriz multidimensional.
  3. Establezca la propiedad ColumnCount al número de columnas que desea mostrar.
  4. Establezca la propiedad ColumnWidths a los anchos deseados para cada columna.
  5. Para hacer que el cuadro de Lista o Combinado muestre el contenido completo de la matriz, llame al método Requery(). Agregue una línea de código como la siguiente en el Init() de el ListBox o ComboBox:
    This.Requery()

Campos Si establece la propiedad RowSourceType en 6, puede especificar un campo o una lista de campos delimitados por comas para llenar la lista, como:

contact,company,location

Puede incluir los siguientes tipos de información en la propiedad RowSource de una lista cuya propiedad RowSourceType tenga el valor 6–Campos:

  • campo
  • alias.campo
  • alias.campo, campo, campo, ...

Si en la lista desea incluir campos de múltiples tablas, establezca la propiedad RowSourceType como 3–Instrucción SQL.

A diferencia de un valor RowSourceType de 2 – Alias, un valor RowSourceType de 6 – Campos permite mostrar campos independientemente de sus posiciones reales en la tabla.

Archivos Si establece la propiedad RowSourceType en 7, la lista se llenará con los archivos del directorio actual. Además, las opciones de la lista permiten elegir una unidad y un directorio distintos para los nombres de archivos que se muestran en la lista.

Establezca RowSource como la estructura del tipo de archivos que desea mostrar en la lista. Por ejemplo, para mostrar tablas de Visual FoxPro en la lista, establezca la propiedad RowSource como *.dbf.

Estructura Si establece la propiedad RowSourceType en 8, la lista se llenará con los campos de la tabla que especifique al establecer la propiedad RowSource. Este valor de RowSourceType resulta útil para presentar al usuario una lista de campos en la que buscar valores o una lista de campos por la que ordenar una tabla.

Emergente Si establece la propiedad RowSourceType en 9, podrá llenar una lista a partir de un emergente definido anteriormente. Esta opción se incluye por compatibilidad con versiones anteriores.

Vea también

Controles para mostrar listas | Crear cuadros de lista de múltiples columnas | Utilizar controles | Controles y objetos | RowSourceType | RowSource


Crear cuadros de lista de múltiples columnas

En Visual FoxPro un cuadro de lista puede contener tantas columnas como desee, aunque su número predeterminado es uno. Un cuadro de lista de múltiples columnas se diferencia de una cuadrícula en que en el primero se selecciona una fila cada vez, mientras que en el segundo pueden seleccionarse celdas individuales de una cuadrícula y los datos de la lista no se pueden modificar directamente.

Para mostrar múltiples columnas en un cuadro de lista

  1. Establezca la propiedad ColumnCount como el número de columnas deseadas.
  2. Establezca la propiedad ColumnWidths. Por ejemplo, si hay tres columnas en el cuadro de lista, el comando siguiente establecería los anchos de columna a 10, 15 y 30, respectivamente:
    THISFORM.listbox.ColumnWidths = "10, 15, 30"
  3. Establezca la propiedad RowSourceType como 6 - Campos.
  4. Establezca la propiedad RowSource como los campos que se van a mostrar en columnas.
    Nota Para que las columnas se alineen correctamente, deberá establecer la propiedad ColumnWidths o cambiar la propiedad FontName a una fuente de espacio simple. La propiedad FirstElement de ListBoxes y ComboBoxes no es eficaz en listas de múltiples columnas.

Cuando la propiedad RowSourceType de la lista se establece a 0 - Ninguno, puede usar el método AddListItem para agregar elementos a un cuadro de lista de múltiples columnas. Por ejemplo, el código siguiente agrega texto a columnas específicas en un cuadro de lista:

THISFORM.lst1.ColumnCount = 3
THISFORM.lst1.Columnwidths = "100,100,100"
THISFORM.lst1.AddListItem("row1 col1", 1,1)
THISFORM.lst1.AddListItem("row1 col2", 1,2)
THISFORM.lst1.AddListItem("row1 col3", 1,3)
THISFORM.lst1.AddListItem("row2 col2", 2,2)

Vea también

Elegir un tipo de datos para un cuadro de lista o cuadro combinado | Permitir a los usuarios seleccionar múltiples elementos en un cuadro de lista | Utilizar controles | Permitir a los usuarios agregar elementos a un cuadro de lista | Controles y objetos


Permitir a los usuarios seleccionar múltiples elementos en un cuadro de lista

El comportamiento predeterminado de una lista permite seleccionar un elemento cada vez. Sin embargo, puede permitir que un usuario seleccione varios elementos de una lista.

Para permitir múltiples elementos seleccionados en una lista

  • Establezca la propiedad MultiSelect de la lista en el valor verdadero (.T.).

Para procesar los elementos seleccionados (para copiarlos a una matriz o incorporarlos en cualquier lugar de la aplicación), efectúe un bucle a través de los elementos de la lista y procese aquellos para los que la propiedad Selected tenga el valor verdadero (.T.). Podría incluir el código siguiente en el evento InteractiveChange de un cuadro de lista para mostrar los elementos seleccionados en un cuadro combinado cboSelected, y el número de elementos seleccionados en un cuadro de texto, txtNoSelected:

nNumberSelected = 0  && a variable to track the number
THISFORM.cboSelected.Clear && clear the combo box
FOR nCnt = 1 TO THIS.ListCount
IF THIS.Selected(nCnt)
nNumberSelected = nNumberSelected + 1
THISFORM.cboSelected.Additem (THIS.List(nCnt))
ENDIF
ENDFOR
THISFORM.txtNoSelected.Value = nNumberSelected

Vea también

Crear cuadros de lista de múltiples columnas | Permitir a los usuarios agregar elementos a un cuadro de lista | Utilizar controles | Actualizar una presentación uno a varios según un valor de lista | Controles y objetos


Permitir a los usuarios agregar elementos a un cuadro de lista

Además de permitir a los usuarios seleccionar elementos de un cuadro de lista, puede permitir a los usuarios agregar elementos de forma interactiva a una lista.

Para agregar elementos a una lista de forma interactiva

  • Utilice el método AddItem.

En el ejemplo siguiente, el código del evento KeyPress de un cuadro de texto agrega el texto del cuadro de texto al cuadro de lista y borra el texto del cuadro cuando el usuario presiona ENTRAR:

LPARAMETERS nKeyCode, nShiftAltCtrl
IF nKeyCode = 13   && Enter Key
THISFORM.lstAdd.AddItem(This.Value)
THIS.Value = ""
ENDIF

Permitir a los usuarios introducir datos en una tabla desde una lista

Si la propiedad ControlSource está establecida como un campo, lo que seleccione el usuario en la lista se escribirá en la tabla. Éste es un modo sencillo de asegurar la integridad de los datos de la tabla. Aunque el usuario puede introducir datos erróneos, no podrá introducir valores no válidos.

Por ejemplo, si tiene una lista de regiones o países para que el usuario elija, el usuario no podrá escribir una abreviatura no válida de país o región.

Permitir a los usuarios ir a un registro seleccionando un valor en una lista

A menudo resultará útil dejar que los usuarios seleccionen el registro que desean ver o modificar. Por ejemplo, puede proporcionar a los usuarios una lista de nombres de clientes. Cuando el usuario seleccione un cliente de la lista, se seleccionará el registro del cliente en la tabla y se mostrará la información de ese cliente en los cuadros de texto del formulario. Esto puede llevarse a cabo de varias formas, según el origen de datos del formulario.

RowSourceType Selección del registro adecuado
2 - Alias
6 - Campos 		Cuando el usuario elige un valor de la lista, el puntero de registro se establece automáticamente en el registro deseado. Ejecute THISFORM.Refresh en el código de evento InteractiveChange de la lista para mostrar los nuevos valores de otros controles del formulario.
0 - Ninguno
1 - Valor
3 - Instrucción SQL
4 - QPR
5 - Matriz 		En el código de evento InteractiveChange, seleccione la tabla que tiene el registro con los valores deseados y, a continuación, busque el valor deseado. Por ejemplo, si RowSource almacena números de identificación de cliente de la tabla de clientes, utilice este código:
SELECT customer
LOCATE FOR THIS.Value = cust_id
THISFORM.Refresh

Vea también

Permitir a los usuarios seleccionar múltiples elementos en un cuadro de lista | Actualizar una presentación uno a varios según un valor de lista | Utilizar controles | Mostrar registros secundarios en una lista | Controles y objetos


Actualizar una presentación uno a varios según un valor de lista

Cuando el usuario decide ir a un registro eligiendo un valor de una lista, puede tener una relación de uno a varios que necesite reflejar el puntero de registro modificado en la tabla primaria. Puede implementar esta funcionalidad con tablas locales y vistas locales o remotas.

Tablas locales

Si la propiedad RowSourceType de la lista es 2–Tabla o 6–Campos y la propiedad RowSource es una tabla local con una relación establecida en el entorno de datos del formulario, ejecute THISFORM.Refresh cuando el usuario elija un nuevo valor. La parte varios de una relación de uno a varios muestra de forma automática únicamente aquellos registros que coinciden con la expresión de la tabla primaria que participa en la relación.

Vistas

La actualización de una presentación uno a varios es ligeramente diferente si la propiedad RowSource del cuadro de lista es una vista local o remota. El siguiente ejemplo describe la creación de un formulario con un cuadro de lista y una cuadrícula. El cuadro de lista muestra los valores del campo cust_id en la tabla TESTDATA!Customer. La cuadrícula muestra los pedidos asociados al campo cust_id seleccionado en el cuadro de lista.

En primer lugar, en el Diseñador de vistas cree una vista parametrizada para los pedidos. Cuando cree la vista en el Diseñador de vistas, establezca el criterio de selección para la clave externa a una variable. En el ejemplo siguiente, la variable se llama m.cCust_id.

Vista parametrizada con una variable

A continuación, cuando diseñe el formulario, siga los pasos del procedimiento siguiente. Observe que la vista requiere un valor para el parámetro que no está disponible cuando se carga el formulario. Si establece la propiedad NoDataOnLoad del objeto cursor de la vista como verdadero (.T.), impide que la vista se ejecute hasta que se llame a la función REQUERY( ), momento en que el usuario habría seleccionado un valor para la variable utilizada en la vista parametrizada.

Para diseñar una lista de uno a varios basada en vistas locales o remotas

  1. Agregue la tabla y la vista parametrizada al entorno de datos.
  2. En la ventana Propiedades para el objeto cursor de vista del Entorno de datos, establezca la propiedad NoDataOnLoad en verdadero (.T.).
  3. Establezca la propiedad RowSourceType del cuadro de lista como 6 - Campos y establezca su propiedad RowSource al campo al que se hace referencia como clave externa en el parámetro de la vista.

    En el ejemplo, establezca la propiedad RowSource en customer.cust_id.

  4. Establezca la propiedad RecordSource de la cuadrícula al nombre de la vista que ha creado antes.
  5. En el código de evento InteractiveChange del cuadro de lista, almacene el valor del cuadro de lista en la variable y, a continuación, vuelva a consultar la vista, como en este ejemplo:
       m.cCust_id = THIS.Value
*assuming the name of the view is orders_view
=REQUERY("orders_view")

Para obtener más información acerca de las vistas locales y remotas, consulte Crear vistas.

Vea también

Permitir a los usuarios agregar elementos a un cuadro de lista | Mostrar registros secundarios en una lista | Agregar imágenes a elementos de una lista | Utilizar controles | Controles y objetos


Mostrar registros secundarios en una lista

Se pueden mostrar registros de una relación de uno a varios en una lista de modo que la lista muestre los registros secundarios de la relación a medida que el puntero de registro se mueve a través de la tabla primaria.

Para mostrar registros secundarios en una lista

  1. Agregue una lista al formulario.
  2. Establezca la propiedad ColumnCount de la lista como el número de columnas que desea mostrar.

    Por ejemplo, si desea mostrar los campos Order_id, Order_net y Shipped_on en la lista, establezca la propiedad ColumnCount en 3.

  3. Establezca la propiedad ColumnWidths a los anchos apropiados para mostrar los campos seleccionados.
  4. Establezca la propiedad RowSourceType de la lista a 3 – Instrucción SQL.
  5. Establezca la propiedad RowSource a la instrucción SELECT. Por ejemplo, la instrucción siguiente selecciona tres campos de la tabla orders para el registro actual en la tabla customer:
    SELECT order_id, order_net, shipped_on from orders ;
WHERE order.cust_id = customer.cust_id ;
INTO CURSOR temp
  6. En el evento Init del formulario y en el código que mueve el puntero de registro a través de la tabla, vuelva a consultar la lista:
    THISFORM.lstChild.Requery

Vea también

Actualizar una presentación uno a varios según un valor de lista | Agregar imágenes a elementos de una lista | Usar casillas de verificación | Utilizar controles | Controles y objetos


Agregar imágenes a elementos de una lista

Puede establecer la propiedad Picture de la lista como el archivo gráfico que desea mostrar junto a los elementos de la lista. Para obtener detalles acerca de los tipos de archivos válidos, consulte Compatibilidad con gráficos en Visual FoxPro

Por ejemplo, podría tener un cuadro de lista lleno de archivos. Podría desear tener mapas de bits distintos junto al archivo según se trate de tablas, programas u otro tipo de archivos.

Cuadro de lista con imágenes

El código siguiente está asociado al evento Click del cuadro de lista:

FOR iItem = 5 TO THIS.ListCount      && files start at the 5th item
cExtension = UPPER(RIGHT(THIS.List(iItem),3))
DO CASE
CASE cExtension = "DBF"
THIS.Picture(iItem) = "tables.bmp"
CASE cExtension = "BMP"
THIS.Picture(iItem) = "other.bmp"
CASE cExtension = "PRG"
THIS.Picture(iItem) = "programs.bmp"
CASE cExtension = "SCX"
THIS.Picture(iItem) = "form.bmp"
OTHERWISE
THIS.Picture(iItem) = IIF("]" $ cExtension, ;
"", "textfile.bmp")
ENDCASE
ENDFOR

Vea también

Mostrar registros secundarios en una lista | Usar casillas de verificación | Aceptar entradas que no pueden ser predeterminadas | Utilizar controles | Controles y objetos


Controles para aceptar entradas

No siempre se pueden anticipar todos los posibles valores que podría necesitar ingresar el usuario en un control. Los siguiente controles permiten aceptar entradas de usuario que no están predeterminadas:

  • Cuadros de texto
  • Cuadros de edición
  • Cuadros combinados

El cuadro de texto es el control básico que permite a los usuarios agregar o modificar datos almacenados en un campo no memo de una tabla.

Para ver ejemplos de uso de cuadros de texto

  1. Ejecute Solution.app en el directorio Visual FoxPro ...\Samples\Solution.
  2. En la vista de árbol, haga clic en Controles y a continuación, en Cuadros de texto.

Para hacer referencia o modificar por medio de programación el texto que se muestra en el cuadro de texto

  • Establezca o haga referencia a la propiedad Value.

Si establece la propiedad ControlSource para el cuadro de texto, el valor que aparece en el cuadro de texto se almacenará en la propiedad Value del cuadro de texto y en el campo o variable que se especifique en la propiedad ControlSource.

Validar datos en un cuadro de texto

Para comprobar el valor del cuadro de texto, incluya código en el método asociado al evento Valid. Si el valor no es válido, se devolverá falso (.F.) o 0. Si Valid devuelve falso (.F.) se muestra el mensaje “La entrada no es válida”. Si desea mostrar su propio mensaje, incluya el comando WAIT WINDOW o la función MESSAGEBOX( ) en el código Valid y devuelva 0.

Si el evento Valid devuelve Falso (.F.) o 0, el control no pierde el foco.

Por ejemplo, si tiene un cuadro de texto que permite a un usuario escribir la fecha de una cita, puede asegurarse de que la fecha no ha pasado si incluye el código siguiente en el evento Valid del cuadro de texto:

IF CTOD(THIS.Value) < DATE( )
= MESSAGEBOX("Debe entrar una fecha futura",1)
RETURN 0
ENDIF

Seleccionar texto cuando el cuadro de texto recibe el foco

Para seleccionar todo el texto cuando el usuario escribe en el cuadro de texto usando el teclado, establezca la propiedad SelectOnEntry en verdadero (.T.).

Formato de texto en un cuadro de texto

Puede utilizar la propiedad InputMask para determinar los valores que se pueden escribir en el cuadro de texto y la propiedad Format para determinar cómo se muestran los valores en el cuadro de texto.

Vea también

Usar casillas de verificación | Utilizar la propiedad InputMask | Utilizar controles | Value | Aceptar entradas numéricas en un determinado intervalo | Controles y objetos


Aceptar entradas con un control Cuadro combinado

El control Cuadro combinado tiene la funcionalidad de un cuadro de lista y la de un cuadro de texto. Existen dos estilos para un cuadro combinado: cuadro combinado desplegable y lista desplegable. Especifique el que desea cambiando la propiedad Style del control. Las listas desplegables se discuten en Controles para mostrar listas.

Cuadro combinado desplegable

Un usuario puede pulsar el botón de un cuadro combinado desplegable para ver una lista de las opciones o ingresar un nuevo elemento directamente en el cuadro al lado del botón. El valor predeterminado para la propiedad Style de un cuadro combinado es 0 — Cuadro combinado desplegable.

Agregar valores del usuario a las listas de un control Cuadro combinado desplegable

Para agregar el nuevo valor del usuario al cuadro combinado desplegable, puede utilizar la siguiente línea de código en el método asociado con el Evento Valid del cuadro combinado:

THIS.AddItem(THIS.Text)

Sin embargo, antes de agregar un ítem, sería una buena idea asegurarse que el valor no exista en el cuadro combinado desplegable:

lItemExists = .F. && Supone que el valor no está en la lista.
FOR i = 1 to THIS.ListCount
IF THIS.List(i) = THIS.Text
lItemExists = .T.
EXIT
ENDIF
ENDFOR
IF !lItemExists
THIS.AddItem(THIS.Text)
ENDIF

Propiedades comunes de un Cuadro combinado

Las siguientes propiedades de un cuadro combinado se establecen habitualmente en tiempo de diseño.

Propiedad | Descripción
ControlSource | Especifica el campo de la tabla donde está almacenado el valor que el usuario elige o ingresa.
DisplayCount | Especifica el número máximo de valores que se muestran en la lista.
InputMask | Para cuadros combinados desplegables, especifica el tipo de valores que pueden ser ingresados con el teclado.
IncrementalSearch | Especifica si el control trata de hacer corresponder un ítem de la lista a medida que el usuario pulsa cada letra con el teclado.
RowSource | Especifica la fuente de los valores en el cuadro combinado.
RowSourceType | Especifica el tipo de la fuente para un cuadro combinado. Los valores de RowSourceType para un control Cuadro combinado son los mismos que para un control Lista.
Style | Especifica si el cuadro combinado es un cuadro combinado desplegable o una lista desplegable.

Vea también

Controles para aceptar entradas | Cuadro combinado (Control) | Utilizar controles


Editar texto utilizando un cuadro de edición

Permite a los usuarios editar extensos campos de carácteres o campos memo en cuadros de edición. Los cuadros de edición permiten el ajuste automático de líneas y la habilidad de moverse a través del texto utilizando las teclas de dirección, de avance y retroceso de página y las barras de desplazamiento.

Para ver ejemplos de utilización de los cuadros de edición

  1. Ejecutar Solution.app en la carpeta de Visual FoxPro ...\Samples\Solution.
  2. En el treeview, hacer clic en Controles, y entonces repetir la acción en Cuadros de edición.

Permitir al usuario editar un campo memo en un cuadro de edición

Todo lo que tiene que hacer para permitir a un usuario editar un campo memo en un cuadro de edición es configurar la propiedad ControlSource del cuadro de edición con el campo memo. Por ejemplo, si tiene un campo memo llamado observaciones en una tabla llamada log, configure la propiedad ControlSource con log.observaciones, esto hará posible que el usuario edite ese campo en el cuadro de edición.

Permitir al usuario editar un archivo de texto en un cuadro de edición

Puede permitir a un usuario editar un archivo de texto en un cuadro de edición. El siguiente formulario lo muestra.

Ejemplo de formulario para edición de un archivo de texto en un cuadro de edición

Un botón OK en el formulario permite cerrarlo colocando el siguiente código en el evento Click:

RELEASE THISFORM

Los otros dos botones de este ejemplo, cmdOpenFile y cmdSave, hacen posible que el usuario abra un archivo de texto y lo guarde después de editarlo.

Código asociado con el evento Click de cmdOpenFile

Código Comentarios
CREATE CURSOR archivodetexto ;
(nombredearchivo c(35), mem m)
APPEND BLANK
 Crea un cursor con un campo carácter para guardar el nombre del archivo de texto y un campo memo para guardar el contenido del archivo de texto.

Agrega un registro en blanco al cursor.
REPLACE archivodetexto.nombredearchivo WITH ;
GETFILE("TXT")
 Utiliza la función GETFILE( ) para obtener el nombre del archivo a abrir. Guarda el nombre del archivo en el campo NombredeArchivo del cursor.
IF EMPTY(archivodetexto.nombredearchivo)
   RETURN
ENDIF
 Si el usuario selecciona Cancelar en el cuadro de diálogo Abrir, el campo NombredeArchivo estará vacío y no habrá archivo para abrir.
APPEND MEMO mem FROM ;
  (archivodetexto.nombredearchivo) OVERWRITE
 Rellena el campo memo con el texto del archivo.
THISFORM.edtText.ControlSource = ;
  "archivodetexto.mem"
THISFORM.Refresh
 Configura ControlSource del cuadro de edición del formulario.
THISFORM.cmdSave.Enabled = .T.
 Habilita el botón Grabar (Save).

Cuando el archivo ha sido abierto y editado, el botón Grabar (Save) permite al usuario escribir los cambios realizados al archivo.

Código asociado con el evento Click de cmdSave

Código Comentarios
COPY MEMO archivodetexto.mem TO ;
  (archivodetexto.nombredearchivo)
 Sobreescribe el viejo contenido del archivo con el texto del campo memo.

Manejo de texto seleccionado en un cuadro de edición

Los cuadros de edición y los cuadros de texto tienen 3 propiedades que permiten trabajar con texto seleccionado: SelLength, SelStart, y SelText.

Puede seleccionar texto desde un programa utilizando las propiedades SelStart y SelLength. Por ejemplo, las siguientes líneas de código seleccionan la primera palabra en un cuadro de edición.

Form1.edtText.SelStart = 0
Form1.edtText.SelLength = AT(" ", Form1.edtText.Text) - 1
Sugerencia Cuando se cambia la propiedad SelStart, el cuadro de edición se desplaza para mostrar el nuevo SelStart. Si cambia SelStart en un ciclo, por ejemplo cuando busca un texto, el código se ejecutará rápidamente si incluye THISFORM.LockScreen = .T. antes de procesar y THISFORM.LockScreen = .F. después del proceso.

Puede acceder al texto seleccionado en un cuadro de edición o un cuadro de texto con la propiedad SelText. Por ejemplo, la siguiente línea de código convierte todo el texto seleccionado en mayúsculas:

Form1.edtText.SelText = UPPER(Form1.edtText.SelText)

Propiedades comunes del cuadro de edición

Las siguientes propiedades del cuadro de edición son comúnmente configuradas en tiempo de diseño.

Propiedad | Descripción
AllowTabs | Si el usuario inserta tabulaciones en el cuadro de edición en vez de moverse al control siguiente. Si habilita las tabulaciones, debe asegurarse de informarle al usuario que para moverse al siguiente control debe presionar la combinación de teclas CTRL+TAB.
HideSelection | Un texto seleccionado en la caja de edición es visible cuando dicha caja no tiene el foco.
ReadOnly | Un usuario puede efectuar cambios en el texto en el cuadro de edición.
ScrollBars | Si existe o no barra de desplazamiento vertical.

Vea también

Utilizar controles | EditBox (Control) | Controles para aceptar entradas


Usar la propiedad InputMask

La propiedad InputMask determina las características de cada carácter escrito en el cuadro de texto. Por ejemplo, puede establecer la propiedad InputMask en 999.999,99 para limitar la entrada del usuario a valores numéricos inferiores a 1.000.000 con dos posiciones decimales. La coma y el punto se mostrarán en el cuadro de texto antes de que el usuario pueda introducir algún valor. Si el usuario presiona una tecla de carácter, el carácter no aparecerá en el cuadro de texto.

Si tiene un campo lógico y desea que un usuario pueda introducir “Y” o “N”, pero no “T” o “F”, establezca la propiedad InputMask como “Y”.

Aceptar contraseñas de usuario en un cuadro de texto

Con frecuencia, en una aplicación es necesario obtener información segura de un usuario, como una contraseña. Puede utilizar un cuadro de texto para obtener esta información sin que aparezca en la pantalla.

Para aceptar la entrada del usuario sin mostrar el valor real

  • Establezca la propiedad PasswordChar del cuadro de texto como * o algún otro carácter genérico.

Si establece la propiedad PasswordChar como algo que no sea una cadena vacía, las propiedades Value y Text del cuadro de texto contendrán el valor real que el usuario escribió en el cuadro de texto, pero este mostrará un carácter genérico para cada tecla que haya presionado el usuario.

Escribir fechas en un cuadro de texto

Los cuadros de texto tienen varias propiedades que se pueden establecer para facilitar a los usuarios escribir valores de fecha.

Propiedad | Descripción
Century | Especifica si los dos primeros dígitos del año se muestran o no.
DateFormat | Formato de la fecha en el cuadro de texto entre quince formatos predefinidos, como Alemán o Japonés.
StrictDateEntry | Establece StrictDateEntry en 0 - Libre. De esta forma el usuario puede utilizar las fechas en formatos más flexibles que el predeterminado 99/99/99.

Propiedades comunes de los cuadros de texto

Las siguientes propiedades de cuadros de texto suelen establecerse en tiempo de diseño.

Propiedad | Descripción
Alignment | Especifica si el contenido del cuadro de texto está alineado a la izquierda, a la derecha, centrado o alineado automáticamente. La alineación automática depende del tipo de datos. Los números, por ejemplo, se alinean a la derecha y los caracteres a la izquierda.
ControlSource | Especifica el campo de tabla o variable cuyo valor se muestra en el cuadro de texto.
InputMask | Especifica la regla de entrada de datos que cada carácter escrito debe seguir. Para obtener información específica sobre InputMask, vea la Ayuda.
SelectOnEntry | Especifica si el contenido del cuadro de texto se selecciona automáticamente cuando el cuadro de texto recibe el enfoque.
TabStop | Especifica si el usuario puede llegar al control utilizando tabulaciones. Si TabStop está establecido a .F., un usuario puede seleccionar el cuadro de texto si hace clic en él.

Vea también

Aceptar entradas que no pueden ser predeterminadas | Aceptar entradas numéricas en un determinado intervalo | Utilizar controles | Permitir acciones específicas | Controles y objetos | Click (Evento)


Aceptar entradas numéricas en un determinado intervalo

Aunque puede establecer la propiedad InputMask e incluir código en el evento Valid para comprobar que los valores numéricos introducidos en los cuadros de texto quedan dentro de un determinado intervalo, el modo más sencillo de comprobar el intervalo de valores consiste en utilizar un control numérico.

Usar controles numéricos

Los controles numéricos pueden emplearse para permitir a los usuarios realizar selecciones desplazándose por los valores o escribiendo directamente el valor en el cuadro del control de tipo numérico.

Establecer el intervalo de valores que pueden elegir los usuarios

Establezca las propiedades KeyboardHighValue y SpinnerHighValue como el número más alto que desea que los usuarios puedan escribir en el control de tipo numérico.

Establezca las propiedades KeyboardLowValue y SpinnerLowValue como el número más bajo que desea que los usuarios puedan introducir en el control de tipo numérico.

Disminuir un control de tipo numérico cuando el usuario hace clic en el botón Arriba

En algunos casos, si el control de tipo numérico refleja un valor como “prioridad”, será conveniente que el usuario pueda aumentar la prioridad de 2 a 1 haciendo clic en el botón Arriba. Para hacer que el número del control de tipo numérico disminuya cuando el usuario haga clic en el botón Arriba, establezca la propiedad Increment en – 1.

Desplazarse por valores no numéricos

Si bien el valor de un control de tipo numérico es numérico, puede utilizar el control Spinner y un cuadro de texto para que los usuarios puedan utilizar diversos tipos de datos. Por ejemplo, si desea que un usuario pueda recorrer un intervalo de fechas, puede ajustar el tamaño del control de tipo numérico de modo que sólo estén visibles los botones y situar un cuadro de texto junto a los botones del control de tipo numérico. Establezca la propiedad Value del cuadro de texto como una fecha y en los eventos UpClick y DownClick del control de tipo numérico, incremente o disminuya la fecha.

Sugerencia Puede usar la función GetSystemMetrics de la API de Windows para establecer el ancho del control de tipo numérico de forma que sólo los botones estén visibles y tengan el ancho óptimo para mostrar los mapas de bits flecha arriba y flecha abajo.
  • Establezca la propiedad BorderStyle del control numérico en 0.
  • Incluya el código siguiente en el evento Init del control de tipo numérico:
    DECLARE INTEGER GetSystemMetrics IN Win32api INTEGER
THIS.Width = GetSystemMetrics(2) && SM_CXVSCROLL

Propiedades comunes de los controles numéricos

Las siguientes propiedades del control numérico suelen establecerse en tiempo de diseño.

Propiedad | Descripción
Increment | Cuánto se incrementa o disminuye el valor cada vez que el usuario hace clic en los botones Arriba o Abajo.
KeyboardHighValue | El valor más alto que puede escribirse en el cuadro de texto del control de tipo numérico.
KeyboardLowValue | El valor más bajo que puede escribirse en el cuadro de texto del control de tipo numérico.
SpinnerHighValue | El valor más alto que muestra el control de tipo numérico cuando el usuario hace clic en el botón Arriba.
SpinnerLowValue | El valor más bajo que muestra el control de tipo numérico cuando el usuario hace clic en el botón Abajo.

Vea también

Utilizar la propiedad InputMask | Permitir acciones específicas | Utilizar controles | Realizar acciones específicas a intervalos regulares | Controles y objetos


Establecer el número de botones de opción en un grupo de opciones

Cuando crea un grupo de botones de opción en un formulario, se incluyen dos botones de opción de forma predeterminada. Puede determinar el número de botones de opción que hay en un grupo si cambia la propiedad ButtonCount.

Para establecer el número de botones de opción de un grupo

  • Establezca la propiedad ButtonCount con el número deseado de botones de opción.

    Por ejemplo, para tener un grupo de seis botones de opción, establezca a 6 la propiedad ButtonCount del grupo de botones de opción.

La propiedad Value del grupo indica qué botón se ha elegido. Por ejemplo, si elige el cuarto botón de opción de un grupo de seis, el valor del grupo de botones de opción será 4.

Si la propiedad ControlSource del grupo es un campo de caracteres o si la propiedad Value se establece a un valor de tipo Carácter antes de que se ejecute el formulario, la propiedad Value del grupo es el título del botón de opción seleccionado.

Vea también

Seleccionar controles para tareas específicas | Establecer propiedades de botones de opción | Utilizar controles | Controles y objetos | Información básica acerca de controles y datos | Almacenar opciones de usuario en una tabla mediante los botones de opción


Establecer propiedades de botones de opción

Para ajustar manualmente los elementos individuales de un grupo de botones de opción o de botones de comando en el Diseñador de formularios, elija Modificar en el menú contextual del grupo.

Es posible establecer propiedades de botones individuales en la ventana Propiedades. También puede establecer estas propiedades en tiempo de ejecución si especifica el nombre del botón de opción y el valor deseado de la propiedad. Por ejemplo, la línea de código siguiente, incluida en el código de evento o método de algún objeto del mismo formulario que el grupo de botones de opción, establece el título de optCust en el grupo de botones de opción opgChoices:

THISFORM.opgChoices.optCust.Caption = "Sort by Customer"

También puede establecer estas propiedades en tiempo de ejecución con la propiedad Buttons y especificando el número de índice del botón de opción en el grupo. Por ejemplo, si optCust es el tercer botón del grupo, la línea de código siguiente establecerá el título de optCust:

THISFORM.opgChoices.Buttons(3).Caption = "Sort by Customer"

Para establecer propiedades en todos los botones de un grupo

  • Utilice el método SetAll del grupo.

    Por ejemplo, la línea de código siguiente deshabilita todos los botones de un grupo de botones de opción llamado opgMyGroup en un formulario:

    THISFORM.opgMyGroup.SetAll("Enabled",.F., "OptionButton")

Habilitar y deshabilitar botones de un grupo

El ejemplo anterior muestra cómo deshabilitar por medio de programación todos los botones de opción de un grupo. Cuando los botones están deshabilitados, se muestran en los colores especificados en las propiedades DisabledForeColor y DisabledBackColor de los botones de opción. También puede establecer la propiedad Enabled del grupo de botones de opción en falso (.F.) para deshabilitar el grupo; sin embargo, ya no habrá ninguna pista visual para el usuario.

Determinar el botón de opción seleccionado actualmente

La propiedad Value del grupo de botones de opción permite determinar el botón de opción que está seleccionado en el grupo. Si el origen de control para el botón es numérico, tiene cinco botones de opción en un grupo. Si el tercer botón está seleccionado, la propiedad Value del grupo de botones de opción será 3. Si ningún botón de opción está seleccionado, la propiedad Value del grupo será 0.

También puede determinar el título del botón de opción seleccionado con las propiedades Value y Buttons del grupo. Por ejemplo, la línea de código siguiente almacena en una variable cSelected la propiedad Caption del botón de opción seleccionado.

oGroup = THISFORM.opg1
cSelected = oGroup.Buttons(oGroup.Value).Caption

Filtrar listas con botones de opción

Si tiene un pequeño grupo de filtros de tabla predeterminados, puede usar botones de opción para permitir al usuario cambiar entre los filtros.

El ejemplo siguiente utiliza un formulario con un cuadro de lista (lstCustomers) y un grupo de botones de opción que contiene tres botones de opción.

Valores de las propiedades del cuadro de lista

Objeto | Propiedad | Valor
LstCustomers | RowSourceType | 2 - Alias
LstCustomers | RowSource | Customer

Los filtros se establecen en el código del evento Click de los botones de opción.

Código de evento para filtrar una lista cuando el usuario elige un botón de opción

Objeto Evento Código
OptAll Click
SET FILTER TO
GO TOP
THISFORM.lstCustomers.Requery
OptCanada Click
SET FILTER TO customer.country = "Canada"
GO TOP
THISFORM.lstCustomers.Requery
OptUK Click
SET FILTER TO customer.country = "UK"
GO TOP
THISFORM.lstCustomers.Requery

Cuando el usuario cierre el formulario, no olvide restablecer el filtro incluyendo SET FILTER TO en el evento Click del botón de cierre o en el evento Destroy.

Sugerencia Para actualizar una lista cuando el origen de la lista puede haber cambiado, utilice el método Requery.

Vea también

Establecer el número de botones de opción en un grupo de opciones | Almacenar opciones de usuario en una tabla mediante los botones de opción | Utilizar controles | Controles y objetos | Diseñador de formularios


Almacenar opciones de usuario en una tabla mediante los botones de opción

Aunque no es tan común, puede utilizar botones de opción para obtener información de un usuario y almacenarla en una tabla guardando la propiedad Caption. Por ejemplo, si dispone de una aplicación de prueba normalizada, puede utilizar los botones de opción para permitir que el usuario elija entre varias opciones A, B, C o D. También puede utilizar botones de opción para indicar el género en una tabla de empleados.

Para almacenar en una tabla la propiedad Caption de un botón de opción

  1. Establezca la propiedad Value del grupo de botones de opción como una cadena vacía.
  2. Establezca la propiedad Control del grupo de botones de opción como un campo de tipo Carácter de una tabla.

Por ejemplo, si los títulos de los botones de opción de un grupo son “A”, “B”, “C” y “D”, y el ControlSource del grupo de botones de opción es un campo de caracteres, cuando el usuario haga clic en el botón con el título “B”, en el campo se almacenará “B”.

Para ver un ejemplo de una prueba de elección múltiple con botones de opción

  1. Ejecute Solution.appen el directorio ...\Samples\Solution de Visual FoxPro.
  2. En la vista de árbol, haga clic en Controles y a continuación, en Botones de opción.
  3. Haga clic en Presentar múltiples opciones a un usuario.

Vea también

Establecer propiedades de botones de opción | Controles para mostrar listas | Utilizar controles | Controles y objetos | Elegir un tipo de datos para un cuadro de lista o cuadro combinado


Controles para mostrar información

Uno de los principios de un buen diseño consiste en que la información relevante esté visible. Puede utilizar los controles siguientes para mostrar información a los usuarios:

  • Imágenes
  • Etiquetas
  • Cuadros de texto
  • Cuadros de edición
  • Formas

Usar imágenes

El control Image permite agregar imágenes (archivos .bmp y otros archivos gráficos) al formulario. Un control Image tiene la gama completa de propiedades, eventos y métodos que tienen otros controles, por lo que puede cambiarse dinámicamente en tiempo de ejecución. Los usuarios pueden interactuar con imágenes haciendo clic, haciendo doble clic, etc. Para obtener detalles acerca de los tipos de archivos gráficos válidos, consulte Compatibilidad con gráficos en Visual FoxPro.

La tabla siguiente muestra algunas de las propiedades clave de un control Image.

Propiedad | Descripción
Picture | La imagen (archivo .bmp) que se muestra.
BorderStyle | Indica si la imagen tiene o no un borde visible.
Stretch | Si Stretch se establece a 0 – Recortar, no se mostrarán las partes de la imagen que superen las dimensiones del control Image. Si Stretch se establece a 1 – Isométrico, el control Image conservará las dimensiones originales de la imagen y mostrará la imagen en la medida que lo permitan las dimensiones del control Image. Si Stretch se establece a 2 – Estirar, la imagen se ajustará para que coincida exactamente con el alto y el ancho del control Image.

Usar etiquetas

Las etiquetas se diferencian de los cuadros de texto en los siguientes aspectos:

  • No pueden tener un origen de datos.
  • No pueden modificarse directamente.
  • No puede tener acceso a las etiquetas con la tecla TAB.

Se pueden cambiar las propiedades Caption y Visible de las etiquetas mediante programación para adaptar la etiqueta a la situación concreta.

Propiedades comunes de las etiquetas

Las siguientes propiedades de las etiquetas suelen establecerse en tiempo de diseño.

Propiedad | Descripción
Caption | El texto que muestra la etiqueta.
AutoSize | Indica si el tamaño de la etiqueta se ajusta a la longitud del título.
BackStyle | Indica si la etiqueta es opaca o transparente.
WordWrap | Indica si el texto que se muestra en la etiqueta puede ajustarse automáticamente a líneas adicionales.

Usar cuadros de texto y cuadros de edición para mostrar información

Establezca la propiedad ReadOnly de cuadros de texto y cuadros de edición para mostrar información que el usuario puede ver pero no modificar. Si sólo deshabilita un cuadro de edición, el usuario no podrá desplazarse por el texto.

Usar formas y líneas

Las formas y las líneas ayudan a agrupar visualmente elementos de los formularios. Se ha comprobado que la asociación de elementos relacionados ayuda a los usuarios a comprender y utilizar una interfaz, lo que facilita el uso de la aplicación.

Las siguientes propiedades de las formas suelen establecerse en tiempo de diseño.

Propiedad | Descripción
Curvature | Un valor entre 0 (ángulos de 90 grados) y 99 (círculo u óvalo).
FillStyle | Indica si la forma es transparente o tiene un determinado modelo de relleno del fondo.
SpecialEffect | Indica si la forma es sencilla o tridimensional. Sólo tiene efecto cuando la propiedad Curvature se establece a 0.

Las siguientes propiedades de las líneas suelen establecerse en tiempo de diseño.

Propiedad | Descripción
BorderWidth | Indica cuántos píxeles de ancho tiene la línea.
LineSlant | Cuando la línea no es horizontal ni vertical, indica el sentido de la inclinación. Los valores válidos para esta propiedad son una barra diagonal ( / ) y una barra diagonal inversa ( \ ).

Usar gráficos de formulario para mostrar información

Puede mostrar información gráficamente en un formulario con los siguientes métodos de formulario.

Método | Descripción
Circle | Dibuja una figura circular o un arco en un formulario.
Cls | Borra gráficos y texto de un formulario.
Line | Dibuja una línea en un formulario.
Pset | Establece un punto de un formulario con un determinado color.
Print | Imprime una cadena de caracteres en un formulario.

Para ver ejemplos que muestran gráficos de formularios

  1. Ejecute Solution.app en el directorio Visual FoxPro ...\Samples\Solution.
  2. En la vista de árbol, haga clic en Formularios y, a continuación, haga clic en Gráficos de formulario.

Vea también

Realizar acciones específicas a intervalos regulares | Mejorar la presentación de controles | Utilizar controles | Caption | Controles y objetos


Mejorar la presentación de controles

Los botones de comando, las casillas de verificación y los botones de opción pueden mostrar una imagen además de un título. Todos estos controles tienen propiedades que permiten especificar las imágenes que se muestran en los controles.

Propiedad | Descripción
DisabledPicture | Imagen que se muestra en el botón cuando este está deshabilitado.. Si no especifica una propiedad DisabledPicture, Visual FoxPro mostrará la imagen atenuada cuando se deshabilite el control.
DownPicture | Imagen que se muestra en el botón cuando este está presionado. Si no especifica DownPicture, Visual FoxPro mostrará la imagen con los colores del fondo cambiados de modo que el botón aparezca presionado cuando se presione el botón.
Picture | Imagen que se muestra en el botón cuando este está habilitado y no presionado.
PicturePosition | Imagen que se muestra relativa a la leyenda.
PictureSelectionDisplay | Imagen que se muestra en el cuadro de texto de un cuadro combinado.

Si no desea que se muestre un título además de la imagen, establezca la propiedad Caption como una cadena vacía, eliminando el título predeterminado en el cuadro Edición de propiedades de la ventana Propiedades.

Usar máscaras de imagen

En muchos casos, una imagen .bmp contiene espacio en blanco que no conviene que aparezca en los controles. Un borde blanco alrededor de una imagen de forma irregular puede dar una mala apariencia al control. Para evitar este problema, Visual FoxPro crea una máscara temporal predeterminada para la imagen. Las áreas en blanco reciben un atributo transparente de modo que se vea el color subyacente del botón o el fondo. Para mantener en blanco en algunas áreas del .bmp, cree una máscara para evitar que se aplique el valor predeterminado.

Para crear una máscara para un .bmp

  1. Abra el archivo .bmp en Paint u otra utilidad de mapa de bits.
  2. Pinte de negro todas las áreas de la imagen que desea que aparezcan tal y como son en el archivo .bmp. Deje en blanco todas las áreas que desea que sean transparentes.
  3. Guarde el archivo en el mismo directorio y con el mismo nombre que el archivo .bmp pero con la extensión .msk.

Cuando Visual FoxPro cargue un archivo .bmp especificado por la propiedad Picture para un botón de comando, un botón de opción o una casilla de verificación, buscará en el mismo directorio un archivo .msk equivalente. Si en el directorio hay un archivo .msk con el mismo nombre que el .bmp, Visual FoxPro lo utilizará como máscara para la imagen. Todas las áreas en blanco de la imagen .msk se convierten en transparentes en el .bmp. Todas las áreas negras de la imagen .msk se muestran tal y como aparecen en el .bmp.

Nota La imagen .bmp y la imagen .msk deben tener las mismas dimensiones para que la máscara pueda representar el área del .bmp.

Vea también

Controles para mostrar información | Controles para manipular filas de datos | Utilizar controles | Ajustar de forma manual la presentación de la cuadrícula en tiempo de diseño | Controles y objetos


Controles para manipular filas de datos

Visual FoxPro proporciona una herramienta muy eficaz, el objeto Grid, para mostrar y manipular varias filas de datos.

Usar cuadrículas

La cuadrícula es un objeto contenedor. Del mismo modo que un conjunto de formularios puede contener formularios, una cuadrícula puede contener columnas. Las columnas, a su vez, contienen encabezados y controles, cada uno de los cuales tiene su propio conjunto de propiedades, eventos y métodos, lo que proporciona un gran control sobre los elementos de la cuadrícula.

Contenedor | Puede contener
Cuadrícula | Columnas
Columna | Encabezados, controles

El control cuadrícula permite presentar y manipular filas y columnas de datos en un formulario o una página. Una aplicación especialmente útil del control cuadrícula consiste en crear formularios de uno a varios, como un formulario de facturas.

Para ver ejemplos del uso de cuadrículas

  1. Ejecute Solution.app en el directorio Visual FoxPro ...\Samples\Solution.
  2. En la vista de árbol, haga clic en Controles y a continuación, en Cuadrícula.

Para agregar un control cuadrícula a un formulario

  • En la barra de herramientas Controles de formularios, haga clic en el botón Cuadrícula y arrástrelo hasta obtener el tamaño deseado en la ventana Formulario.

Si no especifica ningún valor RecordSource para la cuadrícula y hay una tabla abierta en el área de trabajo actual, la cuadrícula mostrará todos los campos de esa tabla.

Establecer el número de columnas de una cuadrícula

Una de las primeras propiedades que puede establecer para el control cuadrícula es el número de columnas.

Para establecer el número de columnas de una cuadrícula

  1. Seleccione la propiedad ColumnCount en la lista de Propiedades y métodos.
  2. En el cuadro Propiedad, escriba el número de columnas que desea.

Si la propiedad ColumnCount está establecida a –1 (el valor predeterminado), la cuadrícula contendrá, en tiempo de ejecución, tantas columnas como campos haya en la tabla asociada a la cuadrícula.

Vea también

Mejorar la presentación de controles | Ajustar de forma manual la presentación de la cuadrícula en tiempo de diseño | Utilizar controles | Establecer el origen de los datos que se muestran en la cuadrícula | Controles y objetos


Ajustar de forma manual la presentación de la cuadrícula en tiempo de diseño

Cuando haya agregado columnas a la cuadrícula, podrá cambiar el ancho de las columnas y el alto de las filas. Puede ajustar de forma manual las propiedades de alto y ancho de los objetos columna y fila en la ventana Propiedades o bien, establecer visualmente estas propiedades en modo de diseño de cuadrícula.

Para cambiar al modo de diseño de cuadrícula

  • Elija Modificar en el menú contextual de la cuadrícula.

    –O bien–

  • En el cuadro Objeto de la ventana Propiedades, seleccione una columna de la cuadrícula.

Cuando esté en modo de diseño de cuadrícula, aparecerá un borde grueso alrededor de la cuadrícula. Para salir de este modo, seleccione el formulario u otro control.

Para ajustar el ancho de las columnas de una cuadrícula

  1. En modo de diseño de cuadrícula, coloque el puntero del ratón entre los encabezados de columna de la cuadrícula de modo que el puntero cambie a una barra con flechas hacia la izquierda y la derecha.
  2. Seleccione la columna y arrástrela hasta que tenga el ancho deseado

    –O bien–

    Establezca la propiedad Width de la columna en la ventana Propiedades.

Para ajustar el alto de las filas de una cuadrícula

  1. En modo de diseño de cuadrícula, coloque el puntero del ratón entre el primer y el segundo botón de la parte izquierda del control Grid, de modo que el puntero cambie a una barra con flechas hacia arriba y hacia abajo.
  2. Seleccione la fila y arrástrela hasta que tenga el alto deseado.

    –O bien–

  • Establezca la propiedad Height de la columna en la ventana Propiedades.
    Sugerencia Puede evitar que un usuario cambie el alto de las filas de cuadrícula en tiempo de ejecución si establece AllowRowSizing en falso (.F.).

Vea también

Controles para manipular filas de datos | Establecer el origen de los datos que se muestran en la cuadrícula | Utilizar controles | Establecer un formulario de uno a varios mediante el control cuadrícula | Controles y objetos


Establecer el origen de los datos que se muestran en la cuadrícula

Puede establecer el origen de los datos para la cuadrícula y para cada columna individualmente.

Para establecer el origen de datos para una cuadrícula

  1. Seleccione la cuadrícula y, a continuación, haga clic en la propiedad RecordSourceType en la ventana Propiedades.
  2. Establezca la propiedad RecordSourceType como 0 - Tabla, si desea que Visual FoxPro abra la tabla o como 1 - Alias si desea que la cuadrícula se llene con los campos de una tabla que ya está abierta.
  3. Haga clic en la propiedad RecordSource de la ventana Propiedades.
  4. Escriba el nombre del alias o la tabla que va a servir de origen de datos para la cuadrícula.

Si desea especificar determinados campos para que aparezcan en columnas específicas, también puede establecer el origen de datos para una columna.

Para establecer el origen de datos para una columna

  1. Seleccione la columna y, a continuación, haga clic en la propiedad ControlSource de la ventana Propiedades.
  2. Escriba el nombre del alias o la tabla y el campo que va a servir como origen para los valores que se muestran en la columna. Por ejemplo, puede escribir:
    Orders.order_id

Agregar registros a una cuadrícula

Puede permitir a los usuarios agregar nuevos registros a una tabla mostrada en una cuadrícula si establece la propiedad AllowAddNew de la cuadrícula en verdadero (.T.). Cuando la propiedad AllowAddNew está establecida a verdadero, se agregan nuevos registros a la tabla cuando el último registro está seleccionado y el usuario presiona la tecla FLECHA ABAJO.

Si quiere tener más control sobre cuándo un usuario agrega nuevos registros a una tabla, puede establecer la propiedad AllowAddNew a falso (.F.), el valor predeterminado, y usar los comandos APPEND o INSERT para agregar nuevos registros.

Vea también

Ajustar de forma manual la presentación de la cuadrícula en tiempo de diseño | Establecer un formulario de uno a varios mediante el control cuadrícula | Mostrar controles en columnas de cuadrícula | Utilizar controles | Controles y objetos


Establecer un formulario de uno a varios mediante el control cuadrícula

Uno de los usos más comunes de una cuadrícula consiste en mostrar los registros secundarios de una tabla, mientras que los cuadros de texto muestran los datos de los registros primarios. Cuando el usuario se mueve por los registros de la tabla primaria, la cuadrícula muestra los registros secundarios correspondientes.

Si tiene un entorno de datos para su formulario que incluye una relación de uno a varios entre dos tablas, le resultará muy fácil mostrar la relación de uno a varios en el formulario.

Para establecer un formulario de uno a varios con un entorno de datos

  1. Arrastre los campos deseados desde la tabla primaria del Diseñador de entorno de datos hasta el formulario.
  2. Arrastre la tabla relacionada desde el Diseñador de entornos de datos hasta el formulario.

En casi todos los casos, deseará crear un entorno de datos para el formulario o el conjunto de formularios. Sin embargo, no es mucho más complicado crear un formulario de uno a varios sin utilizar el Diseñador de entorno de datos.

Para establecer un formulario de uno a varios sin crear un entorno de datos

  1. Agregue cuadros de texto al formulario para mostrar los campos deseados de la tabla principal.
  2. Establezca la propiedad ControlSource de los cuadros de texto como la tabla principal.
  3. Agregue una cuadrícula al formulario.
  4. Establezca la propiedad RecordSource de la cuadrícula con el nombre de la tabla relacionada.
  5. Establezca la propiedad LinkMaster de la cuadrícula con el nombre de la tabla principal.
  6. Establezca la propiedad ChildOrder de la cuadrícula con el nombre de la etiqueta de índice de la tabla relacionada que corresponde a la expresión relacional de la tabla principal.
  7. Establezca la propiedad RelationalExpr de la cuadrícula con la expresión que combina la tabla relacionada con la tabla principal. Por ejemplo, si la etiqueta ChildOrder está indizada en "lastname + firstname", establezca RelationalExpr en la misma expresión.

De cualquiera de las formas que establezca el formulario uno a varios, podrá agregar controles de desplazamiento para moverse por la tabla primaria y actualizar los objetos del formulario. Por ejemplo, el código siguiente puede incluirse en el evento Click de un botón de comando:

SELECT orders && Si orders es la tabla primaria
SKIP
IF EOF( )
GO BOTTOM
ENDIF
THISFORM.Refresh

Vea también

Establecer el origen de los datos que se muestran en la cuadrícula | Mostrar controles en columnas de cuadrícula | Utilizar controles | Simplificar el uso de los controles | Controles y objetos


Mostrar controles en columnas de cuadrícula

Además de mostrar datos de campos en una cuadrícula, puede tener controles en las columnas de una cuadrícula para poder mostrar a un usuario cuadros de texto, casillas de verificación, cuadros de listas desplegables, controles numéricos y otros tipos de controles incrustados. Por ejemplo, si tiene un campo lógico en una tabla, cuando ejecute el formulario un usuario podrá distinguir qué valores de registro son verdaderos (.T.) y cuáles son falsos (.F.) si ve si la casilla de verificación está activada. Cambiar el valor es tan fácil como activar o desactivar la casilla de verificación.

Puede agregar controles a columnas de la cuadrícula de forma interactiva en el Diseñador de formularios o bien puede escribir código para agregar los controles a las columnas en tiempo de ejecución.

Para agregar de forma interactiva controles a una columna de cuadrícula

  1. Agregue una cuadrícula a un formulario.
  2. En la ventana Propiedades, establezca la propiedad ColumnCount de la cuadrícula en el número de columnas deseadas.

    Por ejemplo, escriba 2 para una cuadrícula de dos columnas.

  3. En la ventana Propiedades, seleccione la columna primaria para el control en el cuadro Objeto.

    Por ejemplo, seleccione Column1 para agregar un control a Column1. El borde de la cuadrícula cambiará para indicar que está modificando un objeto contenido cuando seleccione la columna.

  4. Seleccione el control deseado en la barra de herramientas Controles de formularios y haga clic en la columna primaria.

    El nuevo control no aparecerá ahora en la columna de cuadrícula dentro del Diseñador de formularios, pero será visible en tiempo de ejecución.

  5. En la ventana Propiedades, asegúrese de que el control se muestra con sangría bajo la columna primaria en el cuadro Objeto.

    Si el nuevo control es una casilla de verificación, establezca la propiedad Caption de la casilla en " " y la propiedad Sparse de la columna en falso (.F.).

  6. Establezca la propiedad ControlSource de la columna primaria como el campo de tabla deseado.

    Por ejemplo, el ControlSource de la columna en la siguiente ilustración es products.discontinu de Testdata.dbc en el directorio ...\Samples\Data de Visual FoxPro.

  7. Establezca la propiedad CurrentControl de la columna primaria como el nuevo control.

Cuando ejecute el formulario, el control aparecerá en la columna de cuadrícula.

Sugerencia Si desea poder centrar una casilla de verificación en una columna de cuadrícula, cree una clase de contenedor, agregue una casilla de verificación a la clase de contenedor y ajuste la posición de la casilla en dicha clase. Agregue la clase de contenedor a la columna de cuadrícula y establezca la propiedad ControlSource de la casilla de verificación como el campo deseado.

Para quitar controles de columnas de cuadrícula en el Diseñador de formularios

  1. En el cuadro Objeto de la ventana Propiedades, seleccione el control.
  2. Active el Diseñador de formularios.

    Si la ventana Propiedades está visible, el nombre del control aparecerá en el cuadro Objeto.

  3. Presione la tecla SUPR.

También puede agregar controles a una columna de cuadrícula con el método AddObject en el código.

Para agregar controles a una columna de cuadrícula por medio de programación

  • En el evento Init de la cuadrícula, use el método AddObject para agregar el control a la columna de cuadrícula y establezca la propiedad CurrentControl de la columna.

Por ejemplo, las líneas de código siguientes del evento Init de una cuadrícula agregan dos controles a una columna de cuadrícula y especifican una de ellas como el control actual:

THIS.grcColumn1.AddObject("spnQuantity", "SPINNER")
THIS.grcColumn1.AddObject("cboQuantity", "COMBOBOX")
THIS.grcColumn1.CurrentControl = "spnQuantity"
* Las siguientes líneas de código aseguran que el control
* está visible y se muestra en cada fila de la cuadrícula
THIS.grcColumn1.spnQuantity.Visible = .T.
THIS.grcColumn1.Sparse = .F.

En este ejemplo, Column1 tiene tres valores actuales de control posibles:

  • spnQuantity
  • cboQuantity
  • Text1 (el control predeterminado)
    Nota Las propiedades establecidas en la cuadrícula no se transfieren a las columnas o los encabezados. Del mismo modo, debe establecer directamente las propiedades de los encabezados y los controles contenidos, ya que no heredan sus propiedades de los valores de la columna.
    Sugerencia Para presentar mejor los cuadros combinados en columnas de cuadrícula, establezca las siguientes propiedades de cuadro combinado:
    BackStyle = 0      && Transparente
Margin = 0
SpecialEffect = 1 && Plano
BorderStyle = 0      && Ninguno

Usar formato condicional en una cuadrícula

El formato especial de una cuadrícula puede facilitar al usuario el examen de registros y la localización de cierta información. Para proporcionar formato condicional, utilice las propiedades dinámicas de fuentes y colores de una columna.

Por ejemplo, puede agregar una cuadrícula a un formulario y establecer la propiedad ColumnCount en 2. Establezca la propiedad ControlSource de la primera columna en orders.to_name y la propiedad ControlSource de la segunda columna en orders.order_net. Para mostrar totales de pedido inferiores a 500,00 con negro como color de primer plano y los totales de pedido mayores o iguales que 500,00 con rojo como color de primer plano, incluya la línea siguiente en el código de evento Init de la cuadrícula:

THIS.Column2.DynamicForeColor = ;
"IIF(orders.order_net >= 500, RGB(255,0,0), RGB(0,0,0))"

Propiedades comunes de las cuadrículas

Las siguientes propiedades de las cuadrículas suelen establecerse en tiempo de diseño.

Propiedad | Descripción
ChildOrder | La clave externa de la tabla secundaria que se combina con la clave principal de la tabla primaria.
ColumnCount | Número de columnas. Si ColumnCount está establecida a - 1, la columna tendrá tantas columnas como campos haya en la propiedad RecordSource de la cuadrícula.
LinkMaster | La tabla primaria para registros secundarios que se muestran en la cuadrícula.
RecordSource | Los datos que se muestran en la cuadrícula.
RecordSourceType | Indica de dónde provienen los datos que se muestran en la cuadrícula: una tabla, un alias, una consulta o una tabla seleccionada por el usuario como respuesta a una petición.

Propiedades comunes de las columnas

Las siguientes propiedades de las columnas suelen establecerse en tiempo de diseño.

Propiedad | Descripción
ControlSource | Los datos que se muestran en la columna. Suele ser un campo de una tabla.
Sparse | Si Sparse se establece como verdadero (.T.), los controles de una cuadrícula sólo se mostrarán como controles cuando se seleccione la celda de la columna. Otras celdas de la columna muestran el valor de datos subyacente en un cuadro de texto. Si establece Sparse como verdadero (.T.), la actualización será más rápida si un usuario se desplaza por una cuadrícula con muchas filas visibles.
CurrentControl | Indica cuál es el control activo de la cuadrícula. El valor predeterminado es Text1, pero si agrega un control a la columna, podrá especificarlo como CurrentControl.
Nota La propiedad ReadOnly de un control de una columna queda anulada por la propiedad ReadOnly de la columna. Si establece la propiedad ReadOnly del control de una columna en el código asociado al evento AfterRowColChange el nuevo valor será válido mientras se encuentre en esa celda.

Vea también

Establecer un formulario de uno a varios mediante el control cuadrícula | Simplificar el uso de los controles | Utilizar controles | Extender formularios | Diseñador de formularios | Controles y objetos


Controles para permitir acciones específicas

Es posible que en muchas ocasiones desee permitir que los usuarios realicen determinadas acciones que no tienen nada que ver con la manipulación de valores. Por ejemplo, puede permitir que un usuario cierre un formulario, abra otro formulario, se mueva por una tabla, guarde o cancele modificaciones, ejecute un informe o una consulta, salte a una dirección de un destino de Internet o una intranet, o realice alguna otra acción.

Usar botones de comando y grupos de botones de comando

Uno de los lugares más frecuentes para situar el código para acciones específicas es el evento Click de un botón de comando.

Convertir un botón de comando en la opción predeterminada

Establezca la propiedad Default en el valor verdadero (.T.) para convertir el botón de comando en la opción predeterminada. La opción predeterminada tiene un borde más grueso que otros botones de comando. Si un botón de comando es la opción predeterminada, cuando el usuario presione ENTRAR, se ejecutará el evento Click del botón de comando.

Nota Si el objeto seleccionado en un formulario es un cuadro de edición o una cuadrícula, el código asociado al evento Click de la opción predeterminada no se ejecutará cuando el usuario presione ENTRAR. Si se presiona ENTRAR en un cuadro de edición, se agregará un retorno de carro y un avance de línea al valor del cuadro de edición. Si se presiona ENTRAR en una cuadrícula, se seleccionará un campo adyacente. Para ejecutar el evento Click del botón predeterminado, presione CTRL+ENTRAR.

Propiedades comunes de los botones de comando

Las siguientes propiedades de los botones de comando suelen establecerse en tiempo de diseño.

Propiedad | Descripción
Cancel | Especifica que el código asociado al evento Click del botón de comando se ejecuta cuando el usuario presiona ESC.
Caption | Texto que se muestra en el botón.
DisabledPicture | Imagen .bmp que se muestra cuando se deshabilita el botón.
DownPicture | Imagen .bmp que se muestra cuando se presiona el botón.
Enabled | Indica si puede elegirse o no el botón.
Picture | Imagen .bmp que se muestra en el botón.

También puede incluir botones de comando en un grupo de modo que pueda manipularlos individualmente o como un grupo.

Administrar opciones de botones de comando a nivel de grupo

Si desea trabajar con un único procedimiento de método para todo el código de los evento Click de botones de comando de un grupo, podrá adjuntar el código al evento Click del grupo de botones de comando. La propiedad Value del grupo de botones de comando indica en qué botones se ha hecho clic, como muestra el ejemplo de código siguiente:

DO CASE
CASE THIS.Value = 1
WAIT WINDOW "You clicked " + THIS.cmdCommand1.Caption NOWAIT
* realizar una acción
CASE THIS.Value = 2
WAIT WINDOW "You clicked " + THIS.cmdCommand2.Caption NOWAIT
* realizar otra acción
CASE THIS.Value = 3
WAIT WINDOW "You clicked " + THIS.cmdCommand3.Caption NOWAIT
* realizar una tercera acción
ENDCASE
Nota Si el usuario hace clic en el grupo de botones de comando pero no en un determinado botón, la propiedad Value seguirá reflejando el último botón de comando seleccionado. Si ha escrito código para el evento Click de un determinado botón del grupo, cuando el usuario elija ese botón se ejecutará ese código en lugar del código del evento Click del grupo.

Propiedades comunes de los grupos de botones de comando

Las siguientes propiedades de los grupos de botones de comando suelen establecerse en tiempo de diseño.

Propiedad | Descripción
ButtonCount | Número de botones de comando del grupo.
BackStyle | Especifica si el grupo de botones de comando tiene un fondo transparente u opaco. Un fondo transparente parece tener el mismo color que el que tiene el objeto subyacente, normalmente el formulario o una página.

Utilizar el objeto Hyperlink

Puede utilizar el objeto Hyperlink para saltar a una dirección de un destino de Internet o de una intranet. El objeto Hyperlink se puede utilizar para iniciar una aplicación que admita hipervínculos, generalmente un explorador de Internet como Microsoft Internet Explorer, y abrir la página especificada en la dirección. El método Hyperlink NavigateTo( ) le permite especificar la dirección de destino a la que se salta.

Por ejemplo, para ir al sitio Internet de Microsoft en World Wide Web desde un formulario, agregue en primer lugar el control Hyperlink al formulario. Agregue un comando al formulario y, a continuación, agregue el código siguiente al evento Click del botón de comando:

THISFORM.Hyperlink1.NavigateTo('www.microsoft.com')

Cuando se ejecute el formulario puede hacer clic en el botón de comando para saltar al sitio Web de Microsoft.

Vea también

Aceptar entradas numéricas en un determinado intervalo | Realizar acciones específicas a intervalos regulares | Utilizar controles | Controles y objetos | Controles para mostrar información


Realizar acciones específicas a intervalos regulares

El control Timer permite realizar acciones o comprobar valores a intervalos específicos.

Usar el control Timer

Los controles Timer responden al paso del tiempo independientemente de la interacción con el usuario, de modo que pueden programarse para que realicen acciones a intervalos regulares. Suelen emplearse para comprobar el reloj del sistema y ver si es hora de llevar a cabo una determinada tarea. Los cronómetros también resultan útiles para otros tipos de procesamiento en segundo plano.

Para ver ejemplos del uso de cronómetros

  1. Ejecute Solution.app en el directorio Visual FoxPro ...\Samples\Solution.
  2. En la vista de árbol, haga clic en Controles y a continuación, en Temporizador.

Cada cronómetro tiene una propiedad Interval, que especifica el número de milisegundos que transcurren entre un evento de cronómetro y el siguiente. A menos que se deshabilite, un cronómetro continúa recibiendo un evento (denominado Timer) a intervalos de tiempo aproximadamente iguales. La propiedad Interval tiene algunas limitaciones que deben tenerse en cuenta cuando se programa un cronómetro:

  • El intervalo puede estar entre 0 y 2.147.483.647, inclusive, lo que significa que el intervalo más largo es de unas 596,5 horas (más de 24 días).
  • No se garantiza que el intervalo tenga una duración exacta. Para asegurar la precisión, el cronómetro debe comprobar el reloj del sistema cuando lo necesita, en lugar de intentar realizar un seguimiento interno del tiempo acumulado.
  • El sistema genera 18 impulsos de reloj por segundo por lo que, aunque la propiedad Interval se mide en milisegundos, la precisión real de un intervalo no es superior a la decimoctava parte de un segundo.
  • Si su aplicación u otra distinta sobrecarga el sistema (por ejemplo, a través de bucles largos, cálculos intensivos o acceso al disco, a la red o al puerto), es posible que la aplicación no obtenga eventos de Timer con la frecuencia que especifica la propiedad Interval.

Colocar un control Timer en un formulario

Colocar un control Timer en un formulario es como dibujar cualquier otro control: se elige la herramienta de cronómetro en la barra de herramientas Controles de formularios y se arrastra a un formulario.

Un control Timer

El cronómetro aparece en el formulario en tiempo de diseño de forma que puede seleccionarlo, ver sus propiedades y escribir un procedimiento de evento para el mismo. En tiempo de ejecución, el cronómetro es invisible y su posición y tamaño son irrelevantes.

Inicializar un control Timer

Un control Timer tiene dos propiedades clave.

Propiedad | Valor
Enabled | Si desea que el cronómetro comience a funcionar en cuanto se cargue el formulario, establézcala en verdadero (.T.). De lo contrario, deje esta propiedad establecida en falso (.F.). Puede elegir un evento externo (como un clic en un botón de comando) para que se inicie la operación del temporizador.
Interval | Número de milisegundos entre los eventos del cronómetro.

Observe que la propiedad Enabled del cronómetro es distinta que la de otros objetos. Con la mayoría de los objetos, la propiedad Enabled determina si el objeto puede responder o no a un evento causado por el usuario. Con el control Timer, al establecer Enabled a falso (.F.) se suspende el funcionamiento del cronómetro.

Recuerde que el evento Timer es periódico. La propiedad Interval no determina “cuanto tiempo”, sino más bien “con qué frecuencia”. La duración del intervalo debe depender de la precisión que desee. Puesto que existen posibilidades inherentes de error, cree el intervalo con la mitad de la precisión deseada.

Nota Entre más a menudo se genere el evento Timer, se consume más tiempo de procesador respondiendo al evento. Esto puede disminuir el rendimiento. No establezca un intervalo particularmente pequeño a menos que realmente lo necesite.

Responder al evento Timer

Cuando transcurre el intervalo del control Timer, Visual FoxPro genera el evento Timer. La respuesta a este evento suele consistir en comprobar alguna condición general, como el reloj del sistema.

Un reloj digital es una aplicación muy sencilla pero de gran utilidad que interviene en un control Timer. Cuando comprenda cómo funciona la aplicación, podrá mejorarla para que funcione como un despertador, un cronómetro u otro dispositivo de temporización.

La aplicación de reloj digital incluye un cronómetro y una etiqueta con un borde. En tiempo de diseño, la aplicación tiene esta apariencia:

La aplicación reloj digital

En tiempo de ejecución, el cronómetro es invisible.

Control | Propiedad | Valor
LblTime | Caption |
Timer1 | Interval | 500 (medio segundo)
Timer1 | Enabled | Verdadero

El único procedimiento de la aplicación es el procedimiento de evento Timer:

IF THISFORM.lblTime.Caption != Time()
THISFORM.lblTime.Caption = Time()
ENDIF

La propiedad Interval del cronómetro está establecida a 500, siguiendo la regla de establecer el intervalo en la mitad del período más corto que desea distinguir (en este caso, un segundo). Esto puede hacer que el código del temporizador actualice la etiqueta con la misma hora dos veces en un segundo. Esto podría producir un parpadeo visible, por lo que el código comprueba si la hora es distinta de lo que aparece en la etiqueta antes de cambiar el título.

Vea también

Controles para mostrar información | Utilizar controles | Mejorar la presentación de controles | Controles y objetos


Controles para extender formularios

Los marcos de página permiten ampliar la superficie de los formularios y los controles ActiveX permiten ampliar la funcionalidad de los formularios.

Usar marcos de página

Un marco de página es un objeto contenedor que contiene páginas. A su vez, las páginas contienen controles. Las propiedades pueden establecerse a nivel de marco de página, de página o de control.

Para ver ejemplos del uso de marcos de páginas

  1. Ejecute Solution.app en el directorio Visual FoxPro ...\Samples\Solution directory.
  2. En la vista de árbol, haga clic en Controles y a continuación, en Marco de página.

El marco de página puede considerarse como un contenedor tridimensional que presenta páginas en capas. Sólo los controles de la página superior (o sobre el marco de página) pueden estar visibles y activos.

El marco de página define la ubicación de las páginas y la cantidad de página que está visible. La esquina superior izquierda de una página está delimitada con la esquina superior izquierda del marco de página. Los controles pueden situarse en páginas que van más allá de las dimensiones del marco de página. Estos controles están activos, pero no son visibles a menos que se cambien mediante programación las propiedades Height y Width del marco de página para hacer visibles los controles.

Usar páginas en una aplicación

Con marcos de página y páginas, se pueden crear formularios o cuadros de diálogo con fichas con los mismos tipos de capacidades de interfaz que se ven en el Administrador de proyectos.

Asimismo, los marcos de página permiten definir una región del formulario en la que pueden intercambiarse fácilmente controles. Por ejemplo, en los Asistentes, la mayor parte del formulario permanece constante, pero un área del formulario cambia con cada paso. En lugar de crear cinco formularios con pasos de asistente, puede crear un formulario con un marco de página y cinco páginas.

Solution.app, en el directorio ...\Samples\Solution de Visual FoxPro, contiene dos ejemplos de marcos de página que demuestran el uso de marcos con y sin fichas.

Agregar marcos de página a un formulario

Puede incluir uno o más marcos de página en cualquier formulario.

Para agregar un marco de página a un formulario

  1. En la barra de herramientas Controles de formularios, haga clic en el botón Marco de página y arrástrelo para ajustar su tamaño en la ventana Formulario.
  2. Establezca la propiedad PageCount para indicar el número de páginas que se van a incluir en el marco.
  3. En el menú contextual del marco, elija Modificar para activar el marco como contenedor. El borde del marco de página se amplía para indicar que está activo.
  4. Agregue controles del mismo modo que en un formulario.
    Nota Al igual que otros controles de contenedor, seleccione el marco de página y elija Modificar en el menú que aparece al hacer clic en el botón secundario del ratón, o seleccione el contenedor en la lista desplegable Objeto de la ventana Propiedades, de modo que se seleccione el contenedor (es decir, tenga un borde más amplio) antes de agregar controles a la página que está diseñando. Si no activa la página como contenedor antes de agregar controles, los controles se agregarán al formulario en lugar de a la página, aunque puede parecer que están en la página.

Para seleccionar otra página en el marco de página

  1. Active el marco de página como contenedor; para ello, haga clic con el botón secundario del ratón y elija Modificar.
  2. Seleccione la ficha de la página que quiere usar.

    –O bien–

  • Seleccione la página en el cuadro Objeto de la ventana Propiedades.

    –O bien–

  • Seleccione la página en el cuadro Página en la parte inferior del Diseñador de formularios.

Agregar controles a una página

Cuando se agregan controles a una página, sólo están visibles y activos cuando su página está activa.

Para agregar controles a una página

  1. En el cuadro Objeto de la ventana Propiedades, seleccione la página. Aparecerá un borde alrededor del marco de página que indica que puede manipular los objetos contenidos en ella.
  2. En la barra de herramientas Controles de formularios, haga clic en el botón del control que desea y arrástrelo para ajustarlo a la página.

Administrar títulos largos en fichas de página

Si los títulos de las fichas son más largos de lo que puede mostrarse en la ficha dado el ancho del marco de página y el número de páginas, dispone de dos opciones:

  • Establezca la propiedad TabStretch en 1 - Fila simple para mostrar sólo los caracteres de los títulos que se ajustan a las fichas. Fila simple es el valor predeterminado.
  • Establezca la propiedad TabStretch en 0 - Filas múltiples para apilar las fichas de modo que sea visible el título completo de todas las fichas.

Cambiar páginas mediante programación

Tanto si el marco de página se muestra con fichas como si no, es posible convertir en activa una página mediante programación con la propiedad ActivePage. Por ejemplo, el siguiente código del procedimiento del evento Click de un botón de comando de un formulario cambia la página activa de un marco de página del formulario a la tercera página:

THISFORM.pgfOptions.ActivePage = 3

Propiedades comunes de los marcos de páginas

Las propiedades siguientes de los marcos de páginas suelen establecerse en tiempo de diseño.

Propiedad | Descripción
Tabs | Especifica si las fichas son visibles o no para las páginas.
TabStyle | Especifica si las fichas tienen o no el mismo tamaño y si juntas ocupan el mismo ancho que el marco de página.
PageCount | El número de páginas del marco de página.

Vea también

Simplificar el uso de los controles | Manipular objetos con los controles OLE Container y OLE Bound | Utilizar controles | Introducción a los controles ActiveX | Controles y objetos


Introducción a los controles ActiveX

Los controles ActiveX (archivos .ocx) se instalan de forma predeterminada al instalar Visual FoxPro. Puede distribuir controles ActiveX con sus aplicaciones. Los controles ActiveX se agregan a los formularios de una aplicación mediante el control OLE Container de Visual FoxPro.

La tabla siguiente indica los archivos .ocx que se instalan con Visual FoxPro y los controles ActiveX contenidos en cada uno de ellos.

Archivo | Controles | Archivo de Ayuda
MSCOMCTL2.OCX | Control Animation Control Datetimepicker Control Monthview Control Updown | Cmctl298.chm
MCI32.ocx | Control Multimedia MCI | Mmedia.chm
MSChrt20.ocx | Control MsChart | Mschrt98.chm
MSComctl.ocx | Control ImageCombo Control ImageList Control ListView Control ProgressBar Control Slider Control StatusBar Control TabStrip Control Toolbar Control TreeView | Cmctl198.chm
MSComm32.ocx | Control MSComm | Comm98.chm
MSInet.ocx | Control Microsoft Internet Transfer | Inet98.chm
MSMapi32.ocx | Control MAPI Message Control MAPI Session | Mapi98.chm
MSMask32.ocx | Control Masked Edit | Masked98.chm
MSWinsck.ocx | Control Winsock | Mswnsk98.chm
Picclp32.ocx | Control PicClip | Picclp98.chm
Richtx32.ocx | Control Rich Textbox | Rtfbox98.chm
Sysinfo.ocx | Control SysInfo | Sysinf98.chm

En versiones anteriores de Visual FoxPro, el nombre del archivo contenedor de los controles ActiveX pasó de Comctl32.ocx a Mscomctl.ocx.

Aunque Visual FoxPro se actualizó al nuevo archivo Mscomctl.ocx, los formularios de versiones anteriores que utilizan estos controles siguen con las referencias al archivo anterior, ya que ese control ActiveX se enlaza mediante la propiedad OleClass. El número de versión de los controles ActiveX del archivo anterior Comctl32.ocx es 1.

Por ejemplo, la propiedad OleClass de un control ListView de un formulario de una versión anterior sería la siguiente:

   COMCTL.ListViewCtrl.1

Los controles ActiveX más recientes del archivo Mscomctl.ocx pertenecen a la versión 2 o superior. Por ejemplo:

   COMCTL.TreeViewCtrl.2

Visual FoxPro no actualiza el control de forma automática, por lo que a la hora de distribuir las aplicaciones es interesante conocer la versión del control ActiveX que utilizan sus formularios.

Vea también

Agregar OLE | Ficha Controles, cuadro de diálogo Opciones | OLE Container (Control)


Manipular objetos con los controles OLE Container y OLE Bound

Agregue un objeto OLE a un formulario; para ello haga clic en la herramienta Control OLE Container y arrástrela para ajustar su tamaño en la ventana Formulario. Esta herramienta puede representar un objeto servidor como Microsoft Excel o Microsoft Word, o puede representar un control ActiveX si el directorio SYSTEM de Windows contiene controles ActiveX (archivos con una extensión .ocx). Para obtener información general acerca de los controles ActiveX, consulte Agregar OLE.

OLE Bound (Control)

Puede crear un objeto OLE dependiente en un formulario, haciendo clic en esta herramienta y arrastrándola para ajustar su tamaño en la ventana Formulario. Después de crear el objeto, conéctelo a un campo General de la tabla. A continuación, utilice el objeto para mostrar el contenido del campo. Por ejemplo, si almacena documentos de Word en un campo de tipo General, podrá mostrar el contenido de estos documentos con un objeto OLE dependiente en un formulario.

Para crear un objeto OLE dependiente

  1. Cree o abra un formulario.
  2. En la barra de herramientas Controles de formularios, haga clic en el botón Control OLE Bound y arrástrelo para ajustar su tamaño en el formulario.
  3. Vincule el objeto OLE a un campo de tipo General; para ello, establezca la propiedad ControlSource del objeto.

Para ver un ejemplo de cómo se utiliza el control OLE Bound, consulte Agregar OLE.

Vea también

Extender formularios | Simplificar el uso de los controles | Mostrar controles en columnas de cuadrícula | Utilizar controles | Controles y objetos


Información básica acerca de controles y datos

Los formularios pueden tener dos tipos de controles: controles enlazados a datos y controles no enlazados. Cuando los usuarios interactúan con controles enlazados, los valores que introducen o eligen se almacenan en el origen de datos, que puede ser un campo de tabla, un campo de cursor o una variable. Un control se enlaza a datos al establecer su propiedad ControlSource o bien, en el caso de las cuadrículas, su propiedad RecordSource.

Si no establece la propiedad ControlSource de un control, el valor que introduzca o elija el usuario en el control sólo se almacenará como el valor de una propiedad. El valor no se escribirá en disco ni se almacenará en memoria más allá de la vida del control.

Efecto de un valor de ControlSource sobre los controles

Control | Efecto
Casilla de verificación | Si ControlSource es un campo de una tabla, los valores NULL, los valores Logical verdadero (.T.) o falso (.F.), o los valores Numérico 0, 1 ó 2 del campo ControlSource harán que la casilla de verificación se active, se desactive o se atenúe a medida que el puntero de registro se mueva por la tabla.
Columna | Si ControlSource es un campo de tabla, el usuario modificará directamente el campo cuando modifique valores en la columna. Para enlazar una cuadrícula completa a datos, establezca la propiedad RecordSource de la cuadrícula.
Cuadro de lista o
cuadro combinado 		Si ControlSource es una variable, el valor que elija el usuario en la lista se almacenará en la variable. Si ControlSource es un campo de una tabla, el valor se almacenará en el campo, en el puntero de registro. Si un elemento de la lista coincide con el valor del campo de la tabla, se seleccionará el elemento de la lista cuando el puntero de registro se desplace por la tabla.
Botones de opción Si ControlSource es un campo numérico, 0 ó 1 se escribe en el campo, en función de si se elige el botón.

Si ControlSource es Logical, en el campo se escribirá (.T.) o (.F.), en función de si se elige el botón o no. Sin embargo, si el puntero de registro se mueve en la tabla, el valor del botón de opción se actualizará para reflejar el nuevo valor del campo.

Si ControlSource del control OptionGroup del botón de opción (no el propio botón de opción) es un campo de caracteres, el título del botón de opción se almacena en el campo si se elige el botón de opción. Observe que el origen de control para un botón de opción (a diferencia de un control OptionGroup) no puede ser un campo de caracteres o Visual FoxPro informará de un tipo de datos incorrecto cuando se ejecute el formulario.
Spinner | El control de tipo numérico refleja y escribe valores numéricos en el campo o la variable subyacente.
Cuadro de texto o
cuadro de edición 		El valor del campo de la tabla se muestra en el cuadro de texto. Los cambios que realiza el usuario en este valor vuelven a escribirse en la tabla. Al mover el puntero de registro se verá afectada la propiedad Value del cuadro de texto.

Algunas de las tareas que se llevan a cabo con controles exigen disponer de datos enlazados al control. Aunque otras tareas no. Para obtener más información, consulte Controles y objetos.

Vea también

Utilizar controles | Seleccionar controles para tareas específicas | Controles y objetos | Establecer el número de botones de opción en un grupo de opciones | Establecer propiedades de botones de opción


Crear controles arrastrando y colocando campos o tablas.

Puede especificar el tipo de control que se crea cuando arrastra un campo o una tabla a un formulario. Por ejemplo, puede crear un control de tipo cuadro de texto cada vez que se arrastra un campo de tipo Carácter a un formulario.

Para asignar tipos de campos a clases

  1. En el menú Herramientas, elija Opciones.
  2. Seleccione la ficha Asignación de campos.
  3. Para cambiar una asignación de tipo de campo, seleccione una línea en el área Asignar campos a las clases para arrastrar y soltar y elija Modificar.
  4. En el cuadro de diálogo Modificar la asignación de campos, seleccione un tipo de campo de la lista Tipo.

    Para establecer la clase que se crea cuando se arrastran una tabla o varios campos, seleccione Múltiple en la lista Tipo.

  5. Para seleccionar la biblioteca de clases (archivo .vcx) que contiene el control que desea asociar con el tipo de campo seleccionado, elija Examinar.
  6. Seleccione un nombre de clase de la lista Nombre. La clase que especifique aquí se creará cada vez que se arrastre un campo del tipo seleccionado a un formulario.
  7. Elija Aceptar para aceptar la asignación.
  8. Establezca opciones en el área Opciones de bases de datos:
    Para... | Seleccione...
    Crear una etiqueta para el control enlazado cuando arrastra un campo o tabla a un formulario o a un contenedor | Arrastrar y soltar título del campo
    Establecer la propiedad Comment del control enlazado como el texto especificado en el cuadro Comentario de campo de la ficha Campos del Diseñador de tablas | Copiar comentario del campo
    Establecer la propiedad InputMask del control enlazado como la máscara de entrada especificada en la ficha Campos del Diseñador de tablas | Copiar las máscaras de entrada de los campos
    Establecer la propiedad Format del control enlazado como el formato especificado en la ficha Campos del Diseñador de tablas | Copiar el formato del campo
Nota También puede especificar clases para arrastrar y soltar el cuadro Mostrar la clase en la ficha Campos del Diseñador de tablas. Las opciones del Diseñador de tablas tienen prioridad sobre las opciones especificadas aquí.

Crear rápidamente un control individual

Puede crear rápidamente un control único basado en la asignación de tipo de campo especificada en la ficha Asignación de campos del cuadro de diálogo Opciones. También puede anular la asignación predeterminada y crear un tipo de clase diferente.

Para crear un control individual

  • Haga clic en cualquier campo del Entorno de datos y arrástrelo al formulario.
    Nota La propiedad ControlSource del control recién creado se establece como la propiedad Name del campo.

Para crear un control individual y anular la asignación de campos actual

  1. Haga clic con el botón secundario en cualquier campo del Entorno de datos y arrástrelo al formulario.
  2. En el menú contextual, seleccione Crear otro control aquí.
  3. En el cuadro de diálogo Abrir, elija un archivo Visual Class Library (.vcx).
  4. Seleccione el tipo de control que quiere crear a partir del cuadro Nombre de clase y elija Abrir.

Crear rápidamente varios controles

Puede arrastrar una tabla entera a un formulario. De forma predeterminada, al arrastrar una tabla a un formulario se crea un control de tipo cuadrícula. Puede anular esta opción predeterminada y crear varios controles correspondientes a las asignaciones de tipos de campo predeterminadas especificadas para cada campo de la tabla.

Para crear un control de tipo cuadrícula

  • Elija cualquier tabla en el Entorno de datos, el Diseñador de bases de datos o el Administrador de proyectos, y arrástrela al formulario.

Para crear varios controles

  1. Haga clic con el botón secundario en cualquier tabla o en dos o más campos resaltados de una tabla en el Entorno de datos, el Diseñador de bases de datos o el Administrador de proyectos y arrástrelos al formulario.
  2. En el menú contextual, seleccione Crear múltiples controles aquí.

Vea también

Agregar controles a un formulario generado por un asistente | Crear un formulario nuevo | Crear formularios con datos locales y remotos | Agregar controles de Visual FoxPro a un formulario | Diseñador de entorno de datos | Crear formularios


Crear controles arrastrar y colocar (drag-and-drop)

Cuando se diseña aplicaciones en Visual FoxPro, puede arrastrar textos, archivos y objetos desde la Introducción a la Galería de componentes Administrador de proyectos, Diseñador de bases de datos, y el Diseñador de entorno de datos a lugares deseados en formularios e informes. La característica Arrastrar y Colocar en Visual FoxPro le permite extender esta función al usuario en tiempo de ejecución.

Esta característica Arrastrar y Soltar, se extiende a operaciones de formulario múltiple. El usuario puede arrastrar textos, archivos y controles a cualquier parte de la pantalla, incluyendo otros formularios.

En Visual FoxPro existen dos tipos de función Arrastrar y Soltar: Arrastrar y Soltar de OLE y Arrastrar y Soltar controles. Arrastrar y Colocar de OLE le permite mover datos entre otras aplicaciones que contienen Arrastrar y Soltar de OLE (como Visual FoxPro, Visual Basic, Windows Explorer, Microsoft Word y Excel, entre otros). En una aplicación Visual FoxPro distribuida, puede mover datos entre controles en la aplicación o entre controles y otras aplicaciones de Windows que contienen Arrastrar y Colocar de OLE.

Arrastrar y Soltar Controles le permite arrastrar controles de Visual FoxPro dentro de sus aplicaciones de Visual FoxPro. Arrastrar y Soltar Controles también está incluida en versiones anteriores de Visual FoxPro. Cuando el usuario arrastra un control, Visual FoxPro proporciona un contorno gris del mismo tamaño del objeto y que se mueve con el apuntador del ratón. Puede anular este comportamiento predeterminado especificando un archivo de cursor (.cur) para el propiedad DragIcon de un control.

Esta sección describe Arrastrar y Soltar Controles. Para más información sobre Arrastrar y Soltar de OLE vea Técnica de arrastrar y soltar OLE en "Interoperabilidad e Internet."

Para ver ejemplos de los Controles Arrastrar y Colocar

  1. Ejecute Solution.app en el directorio ...\Samples\Solution de Visual FoxPro.
  2. En el árbol de vistas, haga clic en Controls, y después haga clic en General.
    Nota El tiempo de ejecución del arrastre de un control no cambia su ubicación automáticamente. Puede hacerlo, pero debe programar la reubicación, tal y como se describe en la sección "Realizando movimientos de control en una operación Arrastrar y Colocar." Frecuentemente, el arrastre es utilizado únicamente para indicar que alguna acción debe realizarse; el control mantiene su posición original después de que el usuario suelta el botón del ratón.

Utilizando las siguientes propiedades, eventos y método de Arrastrar y Colocar, puede especificar tanto el significado de una operación de arrastrar, como la manera en que puede iniciarse el arrastre (si acaso) para cualquier control dado.

Para | Utilice esta característica
Activar arrastre automático o manual de un control. | propiedad DragMode
Especificar que icono es visualizado cuando el control es arrastrado. | propiedad DragIcon
Reconocer cuando un control es colocado en el objeto. | evento DragDrop
Reconocer cuando un control es arrastrado sobre del objeto. | Evento DragOver
Iniciar o detener el arrastre manual. | método Drag

Todos los controles visuales pueden ser arrastrados en tiempo de ejecución y todos los controles comparten las propiedades listadas en la tabla anterior. Los formularios reconocen los eventos DragDrop y DragOver, pero no contienen las propiedades DragMode y DragIcon.

Activar DragMode automático

Para que el usuario pueda arrastrar un control cuando haga clic en el control, coloque la propiedad DragMode en 1. Esto activa el arrastre automático del control. Cuando coloca el arrastre en Automático, el arrastre siempre está activado.

Nota Mientras una operación automática de arrastre se está llevando a cabo, el control que está siendo arrastrado no reconoce otros eventos del ratón.

Respondiendo Cuando el Usuario Coloca el Objeto

Cuando el usuario suelta el botón del ratón después de arrastrar un control, Visual FoxPro genera un evento DragDrop. Puede responder a este evento de muchas formas. Puede reubicar el control en la nueva ubicación (indicada por la última posición del contorno gris). Recuerde que el control no se mueve automáticamente a la nueva ubicación.

Dos condiciones son importantes cuando se habla de las propiedades Arrastrar y Soltar — código de fuente y destino.

Condición | Significado
Código fuente | El control que está siendo arrastrado.
Destino | El objeto en el cual el usuario coloca el control. Este objeto, el cual puede ser un formulario o un control, reconoce el evento DragDrop.

Un control se convierte en el destino si el puntero del ratón está dentro de sus bordes cuando se suelta el botón. Un formulario es el destino si el puntero se encuentra en una parte vacía del formulario.

El evento DragDrop recibe tres parámetros: oSource, nXCoord, y nYCoord. El parámetro oSource es una referencia al control que fue colocado en el destino. Los parámetros nXCoord y nYCoord contienen las coordenadas horizontales y verticales, respectivamente, del puntero del ratón dentro del destino.

Debido a que oSource es un objeto, se utiliza justamente como usaría un control — Puede enviar a sus propiedades o solicitar uno de sus métodos. Por ejemplo, las siguientes instrucciones en el código asociado con el evento DragDrop verifica si el usuario ha colocado un control en sí mismo:

LPARAMETERS oSource, nXCoord, nYCoord
IF oSource.Name != THIS.Name
* Take some action.
ELSE
* Control was dropped on itself.
* Take some other action.
ENDIF

Todos los posibles tipos de control para oSource tienen una propiedad Visible. Por lo tanto, puede hacer invisible un control cuando es colocado en una parte determinada del formulario o en otro control. La siguiente línea en el código asociada con el evento DragDrop de un control Image ocasiona que un control arrastrado desaparezca cuando éste es colocado en la imagen:

LPARAMETERS oSource, nXCoord, nYCoord
oSource.Visible = .F.

Indicando Zonas Válidas para Colocar

Cuando realiza la función Arrastrar y Soltar, puede ayudar a sus usuarios incluyendo pistas visuales acerca de los lugares en los que el usuario puede o no colocar un control. La mejor manera de hacer esto es cambiando el DragIcon del código fuente en el código asociado con el evento DragOver.

El siguiente código en el evento DragOver de un control indica al usuario que el control no es un destino válido para colocar. En este ejemplo, cOldIcon es una propiedad definida por el usuario del formulario.

LPARAMETERS oSource, nXCoord, nYCoord, nState
DO CASE
CASE nState = 0 && Enter
THISFORM.cOldIcon = oSource.DragIcon
oSource.DragIcon = "NODROP01.CUR"
CASE nState = 1 && Leave
oSource.DragIcon = THISFORM.cOldIcon
ENDCASE

Controlar cuándo se inicia se detiene el arrastre.

Visual FoxPro tiene una configuración de Manual para la propiedad DragMode la cual le otorga mayor control que la configuración Automática. La configuración Manual le permite especificar cuando un control puede o no ser arrastrado. (Cuando DragMode está colocado en Automático, el control puede ser arrastrado todo el tiempo, siempre y cuando la configuración no sea modificada)

Por ejemplo, podría querer activar el arrastre como respuesta a los eventos MouseDown and MouseUp o como respuesta al teclado o al comando de menú. La configuración Manual también le permite reconocer un evento MouseDown antes de que comience el arrastre, de manera que pueda registrar la posición del ratón.

Para activar el arrastre desde código, deje DragMode en su configuración predeterminada (0 - Manual). Después utilice el método Drag siempre que quiera iniciar o detener el arrastre de un objeto:

container.control.Drag(nAction)

Si nAction es 1, el método Drag inicia el arrastre del control. Si nAction es 2, el control es colocado, provocando un evento DragDrop. El valor 0 para nAction cancela el arrastre. El efecto es similar al de otorgar el valor 2, excepto que no ocurre ningún evento DragDrop.

Nota Para activar una operación arrastrar y soltar desde una lista desplegable, el mejor lugar para llamar el método Drag es en el código asociado con el evento MouseMove de la lista desplegable del código fuente, después de determinar que el botón del ratón está abajo. Para ejemplos, vea Lmover.scx en el directorio ...\Samples\Solution\Controls\Lists de Visual FoxPro.

Provocando el movimiento de un control en una operación Arrastrar y Soltar.

Podría querer que el control fuente cambie de lugar después de que el usuario suelte el botón del ratón. Para lograr que un control se mueva hacia la nueva ubicación del ratón, utilice el Método Move. por ejemplo, el siguiente código en el evento DragDrop de un formulario, mueve el control que es arrastrado hacia el lugar de la colocación:

LPARAMETERS oSource, nXCoord, nYCoord
oSource.Move(nXCoord, nYCoord)

Este código puede no producir con precisión los efectos que desea, debido a que la esquina superior izquierda del control está posicionada en la ubicación del ratón. El siguiente código ubica el centro del control en la posición del ratón:

LPARAMETERS oSource, nXCoord, nYCoord
oSource.Move ((nXCoord – oSource.Width / 2), ;
(nYCoord – oSource.Height / 2))

El código trabaja mejor cuando la propiedad DragIcon está configurada en un valor diferente al predeterminado (el rectángulo gris). Cuando el rectángulo gris está en uso, el usuario comúnmente quiere que el control se mueva precisamente a la última ubicación del rectángulo gris. Para hacer esto, registre la posición inicial del ratón dentro de el control fuente. Después utilice esta posición como balance cuando el control es movido. Para ejemplos, vea Ddrop.scx en el directorio ...\Samples\Solution\Forms de Visual FoxPro.

Para registrar la posición inicial del ratón

  1. Especifique arrastre manual del control.
  2. Declare dos variables form-level , nDragX y nDragY.
  3. Active el arrastre cuando un evento MouseDown ocurra. Así mismo, guarde el valor de nXCoord y nYCoord en las variables form-level en este evento.
  4. Desactive el arrastre cuando el evento MouseUp ocurra.

Vea también

Técnica de arrastrar y soltar OLE | Implementar modos intrínseco y manual de arrastrar y soltar de OLE | Técnica de arrastrar y soltar de OLE en tiempo de diseño | Permitir a los usuarios Arrastrar y soltar controles (Ejemplo) | Utilizar controles


Simplificar el uso de los controles

Es conveniente hacer todo lo posible para facilitar a los usuarios la comprensión y el uso de los controles. Las teclas de acceso, el orden de tabulación, el texto de Información sobre herramientas y la deshabilitación selectiva contribuyen a un diseño más fácil de usar.

Establecer teclas de acceso

Las teclas de acceso permiten al usuario elegir un control en cualquier lugar del formulario, presionando ALT y la tecla correspondiente.

Para especificar una tecla de acceso para un control

  • Coloque una barra diagonal inversa y un signo menor que (\<) delante de la letra deseada en la propiedad Caption del control.

Por ejemplo, el siguiente valor de la propiedad Caption para el título de un botón de comando convierte la letra O en la tecla de acceso.

\<Open

Un usuario puede elegir el botón de comando desde cualquier lugar del formulario presionando ALT+O.

Para especificar una tecla de acceso para un cuadro de texto o un cuadro de edición

  1. Cree una etiqueta con una barra diagonal inversa y un signo menor que (\<) delante de la letra deseada, como C\<ustomer.
  2. Asegúrese de que la etiqueta es el control que precede en el orden de tabulación el cuadro de texto o el cuadro de edición que quiere que reciba el foco.

Establecer el orden de tabulación de los controles

El orden de tabulación predeterminado de los controles del formulario es el orden en que se agregan los controles al formulario.

Sugerencia Establezca el orden de tabulación de los controles de forma que el usuario pueda moverse fácilmente por los controles en un orden lógico.

Para cambiar el orden de tabulación de controles

  1. En el Diseñador de formularios, elija Establecer orden de tabulación.
  2. Haga doble clic en el cuadro que aparece junto al control que desea que tenga el foco inicial cuando se abra el formulario
  3. Haga clic en el cuadro situado junto a los otros controles en el orden en que quiere que se llegue a ellos mediante tabulaciones.
  4. Haga clic en cualquier lugar fuera de los cuadros de orden de tabulación para terminar.

También puede establecer el orden de tabulación para los objetos del formulario por lista, según los valores de la ficha Formularios en el cuadro de diálogo Opciones.

Puede establecer el orden de selección para los botones de opción y de comando de un grupo de controles. Para ir a un grupo de controles con el teclado, el usuario avanza utilizando tabulaciones hasta el primer botón del grupo de controles y, a continuación, usa las flechas para seleccionar otros botones del grupo.

Para cambiar el orden de selección de botones de un grupo de controles

  1. En la ventana Propiedades, seleccione el grupo en la lista Objeto. Un borde grueso indica que el grupo está en modo de edición.
  2. Seleccione la ventana del Diseñador de formularios.
  3. En el menú Ver, elija Orden de tabulación.
  4. Establezca el orden de selección de la misma forma que lo haría para el orden de tabulación para controles.

Establecer el texto de Información sobre herramientas

Cada control tiene una propiedad ToolTipText que permite especificar el texto que se muestra cuando el usuario detiene el puntero del ratón sobre el control. La Información sobre herramientas es especialmente útil para los botones que tienen iconos en lugar de texto.

Para especificar el texto de Información sobre herramientas

  • En la ventana Propiedades, seleccione la propiedad ToolTipText y escriba el texto deseado.

La propiedad ShowTips del formulario determina si se muestra o no el texto de Información sobre herramientas.

Cambiar la presentación del puntero del ratón

Puede cambiar la presentación del puntero del ratón para que proporcione pistas visuales a sus usuarios sobre los distintos estados en los que puede estar la aplicación.

Por ejemplo, en la clase tsBaseForm de la aplicación de ejemplo Comercial Tasmania, un método WaitMode cambia el puntero del ratón al cursor de estado de espera predeterminado. Antes de ejecutar código que puede tardar cierto tiempo en ser procesado, la aplicación Comercial Tasmania pasa el valor verdadero (.T.) al método WaitMode para cambiar el puntero e informar así al usuario de que se está procesando. Cuando se haya terminado el procesamiento, una llamada a WaitMode con falso (.F.) restablece el puntero del ratón predeterminado.

* WaitMode Method of tsBaseForm class
LPARAMETERS tlWaitMode
lnMousePointer = IIF(tlWaitMode, MOUSE_HOURGLASS, MOUSE_DEFAULT)
THISFORM.MousePointer = lnMousePointer
THISFORM.SetAll('MousePointer', lnMousePointer)

Si desea cambiar el puntero del ratón por otro que no sea uno de los punteros predeterminados, establezca la propiedad MousePointer a 99 - Personalizado y establezca la propiedad MouseIcon como su propio archivo de cursor (.cur) o de icono (.ico).

Habilitar y deshabilitar controles

Establezca la propiedad Enabled del control en el valor falso (.F.) si la funcionalidad del control no está disponible en una determinada situación.

Habilitar y deshabilitar botones de un grupo

Puede habilitar o deshabilitar botones de opción o botones de comando individuales de un grupo si establece la propiedad Enabled de cada botón en el valor verdadero (.T.) o falso (.F.). También puede deshabilitar o habilitar todos los botones de un grupo si establece la propiedad Enabled del grupo, como en la línea de código siguiente:

frmForm1.cmgCommandGroup1.Enabled = .T.

Cuando se establece en el valor falso (.F.) la propiedad Enabled de un grupo de botones de opción o de un grupo de botones de comando, se deshabilitan todos los botones del grupo, pero no se muestran con las propiedades ForeColor y BackColor deshabilitadas. Al establecer la propiedad Enabled del grupo no cambia la propiedad Enabled de los botones individuales del grupo. De este modo, se puede deshabilitar un grupo de botones con algunos de los botones ya deshabilitados. Cuando se habilita el grupo, los botones que estaban deshabilitados originalmente permanecen deshabilitados.

Si desea deshabilitar todos los botones en un grupo de forma que parezcan deshabilitados, y no desea conservar información acerca de cuáles botones estaban originalmente deshabilitados o habilitados, puede utilizar el método SetAll del grupo, como estos:

frmForm1.opgOptionGroup1.SetAll("Enabled", .F.)

Vea también

Mostrar controles en columnas de cuadrícula | Extender formularios | Utilizar controles | Propiedad Caption | Ventana Propiedades | Controles y objetos


Diseñar menús y barras de herramientas

Los menús y barras de herramientas proporcionan una forma estructurada y accesible para que los usuarios aprovechen los comandos y las herramientas contenidas en sus aplicaciones. La preparación y el diseño apropiados de menús y barras de herramientas garantizarán que se ofrece la funcionalidad clave de su aplicación y que los usuarios no se sentirán frustrados al utilizar la aplicación. Para obtener información acerca de la personalización de las barras de herramientas de Visual FoxPro, vea Personalizar el Entorno de Visual FoxPro..

A menudo, los usuarios examinan los menús antes de buscar información sobre la aplicación en cualquier otro lugar. Si los menús están bien diseñados, los usuarios podrán comprender la aplicación y desarrollar un modelo mental basado únicamente en la organización de los menús y su contenido. El Diseñador de menús de Visual FoxPro permite crear menús con los que mejorar la calidad de sus aplicaciones.

Cada componente de una aplicación de Visual FoxPro puede tener su propio sistema o conjunto de menús. En los temas siguientes se describe la forma de crear un sistema de menús. Para obtener información detallada acerca de cómo agregar menús a una aplicación, vea Compilar una aplicación.

En esta sección

Crear un sistema de menús
La mayor parte del trabajo en la creación de un sistema de menús se realiza en el Diseñador de menús, en el que crea los menús, los submenús y las opciones de menú.
Incluir menús en una aplicación
Cuando haya creado un sistema de menús, puede incluirlo en su aplicación.
Agregar un código de configuración a un sistema de menús
Para personalizar un sistema de menús puede agregarle un código de configuración.
Agregar un código de limpieza a un sistema de menús
Para ajustar el sistema de menús a sus necesidades, puede agregarle un código de limpieza.
Controlar los menús en tiempo de ejecución
Todos los menús de Visual FoxPro tienen dos nombres y cada elemento de menú tiene un nombre y un número. Visual FoxPro utiliza un nombre en la interfaz de usuario y el otro nombre o el número en el programa de menú generado (.mpr).
Crear barras de herramientas personalizadas
Si su aplicación incluye tareas repetitivas que los usuarios realizan con frecuencia, puede agregar barras de herramientas personalizadas para simplificar o acelerar dichas tareas.
Probar y depurar un sistema de menús
Al diseñar un sistema de menús puede ver una vista previa o también puede probarlo y depurarlo una vez generado el programa de menú.
Personalizar un sistema de menús
Una vez creado un sistema de menús básico, puede personalizarlo. Por ejemplo, puede crear mensajes de barra de estado, definir las ubicaciones de los menús o definir procedimientos predeterminados.

Secciones relacionadas

Crear la interfaz de usuario
Con los formularios, las clases, los controles, los menús y las barras de herramientas de Visual FoxPro, puede generar interfaces que ayuden a los usuarios a tener acceso a todas las posibilidades que ofrecen sus programas.
Crear formularios
Su aplicación necesita formularios para que los usuarios puedan ver y entrar datos. No obstante, puede personalizar los formularios estándar, visualmente y mediante programación, para crear un entorno especializado para sus usuarios.
Trabajar con formularios
Una vez creado el formulario, puede ejecutarlo, ocultarlo o modificarlo de diferentes maneras.
Utilizar controles
Los controles administran las interacciones entre los usuarios y su aplicación. Visual FoxPro ofrece diversos controles para mejorar la interfaz de su aplicación.


Crear un sistema de menús

La mayor parte del trabajo en la creación de un sistema de menús se realiza en el Diseñador de menús, en el que crea los menús, los submenús y las opciones de menú.

La creación de un sistema de menús implica varios pasos. Independientemente del tamaño de la aplicación y la complejidad de los menús que pretenda usar, debe:

  • Preparar y diseñar el sistema.

    Decida los menús que necesita, dónde deben aparecer en la interfaz, cuáles requieren submenús, etc.

  • Crear los menús y submenús.

    Defina los títulos, elementos de menú y submenús mediante el Diseñador de menús.

  • Asignar las tareas que desee al sistema.

    Especifique las tareas que los menús deben realizar, como mostrar formularios y cuadros de diálogo. Incluya también un código de configuración y código de limpieza si es conveniente. El código de configuración se ejecuta antes de que se defina el sistema de menús y puede incluir código para abrir archivos, declarar variables o colocar el sistema de menús en una pila de forma que se pueda recuperar después. El código de limpieza contiene el código que se ejecuta después del código de definición de menús, y determina si los menús y sus elementos están disponibles o no para su selección.

  • Generar el programa de menú.
  • Ejecutar el programa para probar el sistema de menús.

Vea también

Diseñar menús y barras de herramientas | Crear menús, menús contextuales, elementos de menú y submenús | Compilar una aplicación | Directrices para el diseño de sistemas de menús


Directrices para el diseño de sistemas de menús

La utilidad de una aplicación puede depender de la calidad de sus sistemas de menús. Si dedica tiempo de diseño a los menús, los usuarios los aceptarán con facilidad y los aprenderán rápidamente.

Al diseñar un sistema de menús, considere las directrices siguientes:

  • Organice el sistema según las tareas que vayan a realizar los usuarios y no según la jerarquía de los programas de la aplicación.

    Los usuarios pueden formarse un modelo mental de la organización de la aplicación si observan los menús y sus elementos. Para diseñar estos menús y elementos de forma eficaz, debe saber cómo piensan los usuarios y cómo realizan su trabajo.

  • Dé a cada menú un título significativo.
  • Organice los elementos de los menús según su frecuencia de uso esperada, siguiendo su secuencia lógica o por orden alfabético.

    Si no puede predecir la frecuencia de uso ni determinar un orden lógico, ordene los elementos de menú alfabéticamente. El orden alfabético es especialmente efectivo cuando un menú contiene más de ocho elementos. Con tantos elementos, el usuario dedica tiempo a la búsqueda y la ordenación alfabética la facilitará.

  • Coloque líneas separadoras entre los grupos lógicos de elementos de menús.
  • Limite a una pantalla el número de elementos de un menú.
  • Si el número excede la longitud de una pantalla, cree submenús para los elementos en los que resulte conveniente.
  • Elija teclas de acceso y métodos abreviados de teclado para los menús y sus elementos.

    Por ejemplo, ALT+A podría ser una tecla de acceso para un menú Archivo.

  • Utilice palabras que definan claramente los elementos de los menús.

    Utilice palabras comunes, evitando la jerga informática y utilice verbos simples y activos para indicar las acciones que resultarán de elegir cada elemento de menú. No utilice nombres como verbos. Describa también los elementos de menús con construcciones paralelas. Por ejemplo, si utiliza una única palabra para todos los elementos, use el mismo tipo de palabra para todos ellos.

  • Utilice una mezcla de letras mayúsculas y minúsculas en los elementos de menú..

Vea también

Crear un sistema de menús | Crear menús, menús contextuales, elementos de menú y submenús | Diseñar menús y barras de herramientas | Agrupar elementos de menú | Compilar una aplicación


Crear menús, menús contextuales, elementos de menú y submenús

Una vez diseñado el sistema de menús, puede crearlo con el Diseñador de menús. Puede crear menús, menús contextuales, elementos de menú, submenús de elementos de menú, líneas para separar grupos de elementos relacionados, etc. En las secciones siguientes se explica detalladamente la manera de hacerlo.

Crear menús

Para crear menús, puede personalizar el sistema de menús de Visual FoxPro o bien desarrollar un sistema propio. Para partir del sistema de menús de Visual FoxPro, utilice la función Menú rápido.

Para crear un sistema de menús con Menú rápido

  1. En el Administrador de proyectos, seleccione la ficha Otros, seleccione Menús y haga clic en Nuevo.
  2. Elija Menú.

    Aparecerá el Diseñador de menús.

  3. En el menú Menú, elija Menú rápido.

    El Diseñador de menús contendrá ahora información sobre los menús principales de Visual FoxPro.

  4. Personalice el sistema agregando o modificando elementos de menú.

    Por ejemplo, inserte un menú Cliente delante del menú Ayuda; para ello, haga clic en el botón de movimiento asociado al menú Ayuda, haga clic en el botón Insertar y escriba Cliente en la columna Indicador del sistema. El resultado tendrá el siguiente aspecto:

    Sistema de menús personalizado

Sugerencia Arrastre los botones de movimiento para cambiar la posición de los menús en la barra de menús. Si necesita un menú Ayuda, sitúelo en último lugar en la barra de menús, de modo que los usuarios puedan encontrarlo rápidamente.

Antes de poder usar el menú en una aplicación debe generarlo.

Para generar un menú

  • En el menú Menú, elija Generar.

Visual FoxPro le pedirá que guarde el sistema de menús en un archivo con la extensión .mnx. Este archivo es una tabla que almacena toda la información acerca del sistema de menús. Después de haber guardado el sistema de menús, Visual FoxPro le pedirá un archivo de salida con la extensión .mpr. Este archivo contendrá el programa de menú generado.

Crear un menú contextual

Los menús contextuales aparecen cuando hace clic con el botón secundario del ratón en un control o un objeto, y proporcionan una forma rápida de ofrecer todas las funciones que se aplican a ese objeto exclusivamente. Puede usar Visual FoxPro para crear menús contextuales, y a continuación, adjuntar estos menús a controles. Por ejemplo, puede crear un menú contextual que contenga los comandos Cortar, Copiar y Pegar, y que aparecerá cuando el usuario haga clic con el botón secundario en datos contenidos en un control cuadrícula.

Para crear un menú contextual

  1. En el Administrador de proyectos, seleccione la ficha Otros, seleccione Menús y haga clic en Nuevo.
  2. Elija Menú contextual.

    Aparecerá el Diseñador de menús contextuales.

Cuando está en el Diseñador de menús contextuales, el proceso para agregar elementos de menú es el mismo que para la creación de menús.

Para ver un ejemplo de menús contextuales, ejecute Solution.app, ubicado en el directorio ...\Samples\Solution\Solution de Visual FoxPro.

Crear menús SDI

Los menús SDI son menús que aparecen en ventanas de interfaz de un único documento (SDI). Para crear un menú SDI debe indicar que el menú se va a usar en un formulario SDI cuando está diseñando el menú. Aparte de esto, el proceso de creación de un menú SDI es el mismo que el de creación de un menú normal.

Para crear un menú SDI

  • Con el Diseñador de menús abierto, elija Opciones generales en el menú Ver y seleccione Formulario de nivel superior.

Crear elementos de menú

Una vez creados los menús, puede colocar en ellos elementos de menú. Los elementos de menú pueden representar comandos o procedimientos de Visual FoxPro que tenga que ejecutar el usuario o bien pueden contener submenús que a su vez ofrezcan otros elementos.

Para agregar elementos a un menú

  1. En la columna Indicador del sistema, haga clic en el título del menú al que desee agregar elementos.
  2. Seleccione Submenú en el cuadro Resultado.

    Aparecerá un botón Crear a la derecha de la lista.

  3. Haga clic en el botón Crear.

    Aparecerá una ventana de diseño vacía. En ella puede introducir los elementos de menú.

  4. En la columna Indicador del sistema, escriba los nombres de los nuevos elementos de menú.

Crear submenús

Para cada elemento de menú, puede crear un submenú con elementos adicionales.

Para crear un submenú

  1. En la columna Indicador del sistema, haga clic en el elemento al que desee agregar un submenú.
  2. Seleccione Submenú en el cuadro Resultado.

    Aparecerá un botón Crear a la derecha de la lista. Si ya existe un submenú, aparecerá un botón Modificar.

  3. Haga clic en el botón Crear o Modificar.
  4. En la columna Indicador del sistema, escriba los nombres de los nuevos elementos de menú.

Agregar menús por medio de programación

Aunque normalmente los menús y sus elementos se crean con el Diseñador de menús, también es posible crearlos con comandos de Visual FoxPro. Por ejemplo, puede crear un menú con DEFINE PAD, un submenú con DEFINE POPUP y elementos del submenú con una serie de comandos DEFINE BAR. También puede utilizar DEFINE BAR para personalizar los menús con imágenes, fuentes nuevas y mensajes para el usuario.

Vea también

Crear un sistema de menús | Directrices para el diseño de sistemas de menús | Agrupar elementos de menú | Diseñar menús y barras de herramientas | Compilar una aplicación


Agrupar elementos de menú

Para mejorar la legibilidad, puede separar grupos de elementos de menú similares con líneas divisorias. Por ejemplo, en Visual FoxPro, el menú Edición tiene una línea que separa los comandos Deshacer y Rehacer de los comandos Cortar, Copiar, Pegar y Pegado especial.

Para agrupar elementos de menú

  1. En la columna Indicador del sistema, escriba \-. De esta forma se crea una línea divisoria.
  2. Arrastre el botón situado a la izquierda del indicador del sistema \- para desplazar la línea divisoria hasta situarla en el lugar deseado.

Vea también

Crear un sistema de menús | Crear menús, menús contextuales, elementos de menú y submenús | Guardar un menú como HTML | Diseñar menús y barras de herramientas | Compilar una aplicación


Guardar un menú como HTML

Puede usar la opción Guardar como HTML del menú Archivo cuando cree un menú para guardar su contenido como un archivo HTML (Lenguaje de marcado de hipertexto).

Para guardar un formulario como HTML

  1. Abra el menú.
  2. Elija Guardar como HTML en el menú Archivo. (Se le pedirá que guarde el menú si lo ha modificado).
  3. Escriba el nombre del archivo HTML que desea crear y elija Guardar.

Vea también

Crear un sistema de menús | Agrupar elementos de menú | Incluir menús en una aplicación | Diseñar menús y barras de herramientas | Crear menús, menús contextuales, elementos de menú y submenús | Compilar una aplicación


Agregar un código de limpieza a un sistema de menús

Para ajustar el sistema de menús a sus necesidades, puede agregarle un código de limpieza. Normalmente, el código de limpieza contiene código que habilita o deshabilita inicialmente los menús y sus elementos. Cuando genera y ejecuta el programa de menú, el código de configuración y el código de definición de menú se procesan antes que el código de limpieza.

Para agregar un código de limpieza a un sistema de menús

  1. En el menú Ver, elija Opciones generales.
  2. En el área Código del menú, seleccione Código de limpieza y, a continuación, elija Aceptar.
  3. En la ventana del código de limpieza, escriba el código adecuado.

    Sus cambios se guardan cuando se cierra el Diseñador de menús.

    Sugerencia Si el menú es el programa principal de una aplicación, incluya un comando READ EVENTS en el código de limpieza y asigne un comando CLEAR EVENTS al comando de menú utilizado para salir del sistema de menús. Esto evita que sus aplicaciones terminen de forma prematura en tiempo de ejecución.

Vea también

Agregar un código de configuración a un sistema de menús | Controlar los menús en tiempo de ejecución | Crear barras de herramientas personalizadas | Diseñar menús y barras de herramientas | Compilar una aplicación


Agregar un código de configuración a un sistema de menús

Para personalizar un sistema de menús puede agregarle un código de configuración. El código de configuración puede incluir código para establecer el entorno, definir variables, abrir los archivos necesarios, y guardar o restaurar sistemas de menús con los comandos PUSH MENU y POP MENU.

Para agregar un código de configuración a un sistema de menús

  1. En el menú Ver, elija Opciones generales.
  2. En el área Código del menú, elija Instalación y, a continuación, elija Aceptar.
  3. En la ventana del código de configuración, escriba el código adecuado.

    Sus cambios se guardan cuando se cierra el Diseñador de menús.

Vea también

Realizar tareas con comandos | Agregar un código de limpieza a un sistema de menús | Controlar los menús en tiempo de ejecución | Diseñar menús y barras de herramientas | Compilar una aplicación


Asignar teclas de acceso y métodos abreviados

Al crear un sistema de menús, debe considerar la facilidad de acceso al mismo y también asignarle tareas. Debe asignar a los menús y a sus elementos tareas que deben realizar, como mostrar formularios, barras de herramientas y otros sistemas de menús. Debe definir teclas de acceso para permitir la entrada al sistema de menús. También puede agregar métodos abreviados de teclado y habilitar o deshabilitar elementos de menú para conseguir un mayor control.

Asignar teclas de acceso

Los menús bien diseñados cuentan con teclas de acceso para conseguir un acceso rápido por el teclado a la funcionalidad del menú. La tecla de acceso se representa en el título o elemento de menú con una letra subrayada. Por ejemplo, el menú Archivo de Visual FoxPro utiliza la “A” como tecla de acceso.

Si no asigna una tecla de acceso a un título o elemento de menú, Visual FoxPro asignará automáticamente la primera letra como tecla de acceso. Por ejemplo, para el menú Cliente creado anteriormente no se definió ninguna tecla de acceso. En consecuencia, Visual FoxPro le asignó su primera letra (C).

Para especificar la tecla de acceso de un menú o elemento de menú

  • Escriba \< a la izquierda de la letra que desee que actúe como tecla de acceso.

    Por ejemplo, para hacer que la tecla de acceso del título del menú Cliente sea “i”, sustituya Cliente por Cl\<iente en la columna Indicador del sistema.

    Nota Si una tecla de acceso a un menú no funciona, compruebe si hay teclas de acceso duplicadas.

Asignar métodos abreviados de teclado

Además de asignar teclas de acceso, puede especificar métodos abreviados de teclado para los menús o sus elementos. Como ocurre con las teclas de acceso, los métodos abreviados de teclado permiten elegir un menú o un elemento de menú al mantener presionada una tecla mientras presiona otra. La diferencia entre las teclas de acceso y los métodos abreviados de teclado es que estos últimos pueden utilizarse para elegir un elemento de menú sin tener que mostrar primero el menú correspondiente.

Los métodos abreviados de teclado para los elementos de menú de Visual FoxPro son combinaciones de la tecla CTRL o ALT con otra tecla. Por ejemplo, en Visual FoxPro puede crear un archivo nuevo presionando CTRL+N.

Para especificar un método abreviado de teclado para un menú o elemento de menú

  1. En la columna Indicador del sistema, haga clic en el título o elemento de menú correspondiente.
  2. Elija el botón de la columna Opciones para mostrar el cuadro de diálogo Opciones de la acción.
  3. En el cuadro Etiqueta de tecla, presione una combinación de teclas para crear un método abreviado de teclado.

    Si un elemento de menú no tiene un método abreviado de teclado, Visual FoxPro mostrará “(presione la tecla)” en el cuadro Etiqueta de tecla.

  4. En el cuadro Texto de tecla, agregue el texto que desee que aparezca junto al elemento de menú.

    De forma predeterminada, Visual FoxPro repite el método abreviado de teclado del cuadro Etiqueta de tecla en el cuadro Texto de tecla. Sin embargo, puede modificar el contenido de Texto de tecla si desea que la aplicación muestre un texto distinto. Por ejemplo, si tanto en Etiqueta de tecla como en Texto de tecla aparece CTRL+R, puede cambiar el contenido de Texto de tecla a ^R.

    Nota CTRL+J es un método abreviado de teclado no válido porque se usa para cerrar ciertos cuadros de diálogo en Visual FoxPro.

Vea también

Incluir menús en una aplicación | Habilitar y deshabilitar elementos de menú | Crear menús, menús contextuales, elementos de menú y submenús | Diseñar menús y barras de herramientas | Compilar una aplicación


Controlar los menús en tiempo de ejecución

Todos los menús de Visual FoxPro tienen dos nombres y cada elemento de menú tiene un nombre y un número. Visual FoxPro utiliza un nombre en la interfaz de usuario y el otro nombre o el número en el programa de menú generado (.mpr). Puede usar estos nombres o números para hacer referencia y controlar menús y elementos de menú en tiempo de ejecución. Si no proporciona un nombre o un número al crear menús y elementos de menú, Visual FoxPro crea uno cuando genera el programa de menú.

Para ver un ejemplo de añadir y eliminar elementos de menú en tiempo de ejecución, vea Solution.app en el directorio ...\Samples\Solution de Visual FoxPro.

Precaución Evite utilizar nombres y números generados por Visual FoxPro en el código, ya que cambiarán cada vez que se genere el programa de menú. Si hace referencia a un nombre o número generado, se pueden producir errores en el código.

En el Diseñador de menús, la columna Indicador del sistema muestra lo que aparece en la interfaz de usuario y en la columna situada a la derecha del cuadro Resultado se indica lo que aparece en el programa generado.

Para especificar un nombre para un título de menú

  1. En la columna Indicador del sistema, haga clic en el título de menú correspondiente.
    Nota La columna Resultado debe mostrar Comando, Submenú o Procedimiento y no Título de menú.
  2. Elija el botón de la columna Opciones para mostrar el cuadro de diálogo Opciones de la acción.
  3. En el cuadro de diálogo Título de menú, escriba el nombre que prefiera.
  4. Elija Aceptar para volver al Diseñador de menús.

Para especificar un número para un elemento de menú

  1. En la columna Indicador del sistema, haga clic en el elemento de menú correspondiente.
    Nota La columna Resultado debe mostrar Comando, Submenú o Procedimiento y no Nº de barra.
  2. Elija el botón de la columna Opciones para mostrar el cuadro de diálogo Opciones de la acción.
  3. En el cuadro Nº de barra, escriba el número de barra que desee.
  4. Elija Aceptar para volver al Diseñador de menús.
    Sugerencia Si utiliza la función Menú rápido, no cambie los nombres o números que proporciona Visual FoxPro para los menús y elementos de menú, pues de lo contrario podría obtener resultados impredecibles al ejecutar el programa de menú generado.

Vea también

Agregar un código de limpieza a un sistema de menús | Diseñar menús y barras de herramientas | Crear barras de herramientas personalizadas | Crear menús, menús contextuales, elementos de menú y submenús


Habilitar y deshabilitar elementos de menú

Puede habilitar o deshabilitar un menú o un elemento de menú basándose en una condición lógica.

Para habilitar o deshabilitar un menú o elemento de menú

  1. En la columna Indicador del sistema, haga clic en el título o elemento de menú correspondiente.
  2. Elija el botón de la columna Opciones para mostrar el cuadro de diálogo Opciones de la acción.
  3. Haga clic en la casilla de verificación Saltar por.

    Aparecerá el Generador de expresiones.

  4. En el cuadro Saltar por, escriba la expresión que determinará si el menú o el elemento de menú está habilitado o deshabilitado.

    Si la expresión da como resultado falso (.F.), el menú o elemento quedará habilitado. Si la expresión da como resultado verdadero (.T.), el menú o elemento se deshabilitará y no se podrá seleccionar ni elegir. Para obtener más información, vea DEFINE BAR y DEFINE PAD.

    Nota Una vez mostrado el sistema de menús, puede activar y desactivar los menús y sus elementos con el comando SET SKIP OF.

Marcar el estado de un elemento de menú

En un menú, una marca de verificación junto a un elemento indica que está activo. Por ejemplo, si coloca una marca de verificación junto al elemento Crédito del menú Cliente antes creado, esta opción quedará activada.

En tiempo de ejecución puede colocar una marca de verificación junto a un elemento de menú mediante el comando SET MARK OF.

Para ver un ejemplo de cómo deshabilitar y marcar el estado de elementos de menú, ejecute Solution.app en el directorio ...\Samples\Solution de Visual FoxPro.

Asignar tareas a menús o a elementos de menú

Cuando se selecciona un menú o un elemento de menú, éste realiza una tarea, como mostrar un formulario, una barra de herramientas o bien otro sistema de menús. Para realizar una tarea, el menú o elemento deberá ejecutar un comando de Visual FoxPro. Este comando puede estar contenido en una línea o puede ser una llamada a procedimiento.

Sugerencia Escriba un procedimiento si va a utilizar el mismo conjunto de comandos en varios lugares. Debe dar nombre al procedimiento explícitamente y debe escribir un código de limpieza en el menú o en algún lugar en el que cualquier menú u objeto puede hacer referencia al mismo.

Vea también

Asignar teclas de acceso y métodos abreviados | Realizar tareas con comandos | Realizar tareas con procedimientos | Diseñar menús y barras de herramientas | Compilar una aplicación


Incluir menús en una aplicación

Cuando haya creado un sistema de menús, puede incluirlo en su aplicación.

Para incluir un sistema de menús en la aplicación

  • Agregue el archivo .MNX al proyecto y, a continuación, genere la aplicación desde el proyecto. Para obtener más información acerca de la generación de aplicaciones, vea Compilar una aplicación.

Adjuntar menús contextuales a controles

Cuando haya creado y generado un menú contextual, puede adjuntarlo a un control. Los menús contextuales aparecen típicamente cuando el usuario hace clic con el botón secundario en un control. Puede adjuntar un menú contextual a un control específico si escribe una pequeña cantidad de código en el evento clic asociado al botón secundario del control.

  1. Seleccione el control al que desea adjuntar el menú contextual.
  2. En la ventana Propiedades, elija la ficha Métodos y seleccione Evento RightClick.
  3. En la ventana de código, escriba DO menu.MPR, donde menu es el nombre del menú contextual.
    Nota Asegúrese de usar la extensión .mpr al hacer referencia a los menús contextuales.

Adjuntar menús SDI a formularios

Cuando cree un menú SDI, puede adjuntarlo a un formulario SDI. Además, debe:

  • Establecer la propiedad ShowWindow del formulario.
  • Agregar una instrucción DO al evento Init del formulario.

Para adjuntar un menú SDI a un formulario

  1. En el Diseñador de formularios, establezca la propiedad ShowWindow del formulario a 2 – Como formulario de nivel superior.
  2. En el evento Init del formulario, llame al menú.

    Por ejemplo, si el menú se llama SDIMENU.MPR, agregue el código siguiente:

    DO SDIMENU.MPR WITH THIS,.T.

Vea también

Guardar un menú como HTML | Asignar teclas de acceso y métodos abreviados | Diseñar menús y barras de herramientas | Crear menús, menús contextuales, elementos de menú y submenús | Compilar una aplicación |


Realizar tareas con comandos

Para realizar una tarea, puede asignar un comando a un menú o elemento de menú. Puede tratarse de cualquier comando válido de Visual FoxPro, como una llamada a un programa que exista en la ruta de acceso o a un procedimiento definido en la opción Código de limpieza del cuadro de diálogo Opciones generales. Para obtener más información, vea Crear un procedimiento predeterminado para un sistema de menús.

Para asignar un comando a un menú o elemento de menú

  1. En la columna Indicador del sistema, haga clic en el título o elemento de menú correspondiente.
  2. En el cuadro Resultado, elija Comando.
  3. En el cuadro situado a la derecha del cuadro Resultado, escriba el comando correspondiente:

Si el comando llama a un procedimiento del código de limpieza del menú, utilice el comando DO con la sintaxis siguiente:

DO procname IN menuname

En esta sintaxis, menuname especifica la ubicación del procedimiento. Se trata del nombre del archivo de menú y debe tener la extensión .mpr. Si no especifica la ubicación en menuname, deberá hacerlo con SET PROCEDURE TO menuname.mpr, si el procedimiento se encuentra en el código de limpieza del menú.

Mostrar formularios y cuadros de diálogo

Para mostrar un formulario o un cuadro de diálogo compilados desde un menú o un elemento de menú, puede llamarlos con un comando o con un procedimiento. Por ejemplo, para mostrar un formulario llamado “Orders”, utilice el comando siguiente:

DO FORM Orders
Sugerencia Al crear un menú o un elemento de menú que muestre un formulario o un cuadro de diálogo, indique con tres puntos al final del indicador del sistema que el usuario debe proporcionar más información.

Mostrar barras de herramientas

Si crea una barra de herramientas personalizada para una aplicación, puede mostrarla llamándola desde un menú o un elemento de menú. Para obtener más detalles, vea Crear barras de herramientas personalizadas.

Vea también

Habilitar y deshabilitar elementos de menú | Realizar tareas con procedimientos | Agregar un código de configuración a un sistema de menús | Diseñar menús y barras de herramientas | Compilar una aplicación


Realizar tareas con procedimientos

Puede asignar un procedimiento a un menú o elemento de menú. La forma de hacerlo dependerá de si el menú o el elemento tiene submenús.

Para asignar un procedimiento a un menú o a un elemento de menú sin submenús

  1. En la columna Indicador del sistema, haga clic en el título o elemento de menú correspondiente.
  2. En el cuadro Resultado, seleccione Procedimiento.

    Aparecerá un botón Crear a la derecha de la lista. Si ha definido previamente un procedimiento, aparecerá un botón Modificar en su lugar

  3. Haga clic en el botón Crear o Modificar.
  4. Escriba el código apropiado en la ventana.
    Nota No es necesario escribir el comando PROCEDURE en la ventana de edición del procedimiento, ya que Visual FoxPro lo generará automáticamente. El único lugar donde es necesario el comando PROCEDURE es en el código de limpieza.

Para asignar un procedimiento a un menú o a un elemento de menú con submenús

  1. En el cuadro Nivel de menú, seleccione el nivel en el que se encuentre el menú o elemento de menú correspondiente. Por ejemplo, suponga que el sistema de menús incluye el menú Cliente creado anteriormente. Para asignar un procedimiento al menú Cliente, seleccione el nivel “Barra de menús” en el cuadro Nivel de menú. Del mismo modo, para asignar un procedimiento a un elemento del menú Cliente , elija el nivel “Cliente” en la lista.
  2. En el menú Ver, elija Opciones de menú.

    Visual FoxPro mostrará el cuadro de diálogo Opciones de menú.

  3. Asigne el procedimiento mediante uno de los métodos siguientes:
    • Escriba un procedimiento o llámelo en el cuadro Procedimiento.

      –O bien–

    • Haga clic en el botón Modificar y luego en Aceptar, para abrir una ventana de edición independiente para escribir o llamar a un procedimiento.

Vea también

Realizar tareas con comandos | Agregar un código de configuración a un sistema de menús | Agregar un código de limpieza a un sistema de menús | Diseñar menús y barras de herramientas | Compilar una aplicación


Crear barras de herramientas personalizadas

Si su aplicación incluye tareas repetitivas que los usuarios realizan con frecuencia, puede agregar barras de herramientas personalizadas para simplificar o acelerar dichas tareas. Por ejemplo, si los usuarios suelen imprimir un informe mediante un comando de menú, podrá simplificar esa tarea si incluye una barra de herramientas con un botón para imprimir.

En esta sección

Definir una clase ToolBar
Explica cómo crear un clase Toolbar personalizada.
Agregar objetos a una clase de barra de herramientas personalizada
Describe los pasos a seguir para modificar una clase Toolbar personalizada.
Agregar barras de herramientas personalizadas a conjuntos de formularios
Proporciona información sobre cómo agregar una clase Toolbar personalizada a su formulario como otro formulario en un conjunto de formularios.
Coordinar barras de herramientas y formularios mediante código
Proporciona información sobre cómo agregar una barra de herramientas a su formulario por medio de programación.
Definir acciones de una barra de herramientas
Explica cómo definir acciones asociadas con la barra de herramientas y sus objetos.
Crear un menú coordinado
Explica cómo coordinar un menú con una barra de herramientas.
Agregar una barra de herramientas y un menú coordinados a un conjunto de formularios
Explica cómo agregar un menú y barra de herramientas coordinados a un formulario.

Secciones relacionadas

Personalizar barra de herramientas (Cuadro de diálogo)
Explica cómo personalizar las barras de herramientas de Visual FoxPro.

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


Definir una clase ToolBar

Si desea crear una barra de herramientas que contenga botones que no se encuentran en las barras de herramientas existentes, puede hacerlo definiendo una clase de barras de herramientas personalizadas. Visual FoxPro ofrece una clase de base ToolBar a partir de la cual puede crear la clase que necesite.

Después de definir una clase de barra de herramientas, puede agregar un objeto a la clase de barra de herramientas y, a continuación, definir las propiedades, eventos y métodos para la barra de herramientas personalizada. Finalmente, puede agregar la barra de herramientas a un conjunto de formularios.

Para definir una clase ToolBar personalizada

  1. Desde el Administrador de proyectos, seleccione Clases y elija Nuevo.
  2. En el cuadro Nombre de clase, escriba el nombre de su clase.
  3. En el cuadro Basado en, seleccione Toolbar para utilizar la clase de base Toolbar.

    –O bien–

    Elija el botón del diálogo para elegir otra clase de barra de herramientas.

  4. En el cuadro Almacenar en, escriba el nombre de la biblioteca en la que desea guardar la nueva clase.

    –O bien–

    Haga clic en el botón del cuadro de diálogo para seleccionar una biblioteca existente.

  5. Agregue objetos a la nueva clase Toolbar.

Por ejemplo, podría almacenar una clase de impresión basada en la clase de base ToolBar de una biblioteca de inventario.

Cuando complete el cuadro de diálogo Nueva clase, aparecerá el Diseñador de clases.

También puede definir una clase de barra de herramientas de las maneras siguientes:

  • Elija Nuevo en el menú Archivo y, a continuación, elija Clase.
  • Utilice el comando CREATE CLASS o MODIFY CLASS.
  • Defina la clase por medio de programación con el comando DEFINE CLASS.

Vea también

Agregar objetos a una clase de barra de herramientas personalizada | Crear barras de herramientas personalizadas | Cuadro de diálogo Personalizar barra de herramientas | Diseñar menús y barras de herramientas | Personalizar el Entorno de Visual FoxPro


Agregar objetos a una clase de barra de herramientas personalizada

Después de crear una clase de barra de herramientas personalizada puede agregarle objetos, inccluído cualquier objeto admitido por Visual FoxPro. Por ejemplo, puede agregar objetos de la barra de herramientas Controles.

Para agregar objetos a su clase de barra de herramientas personalizada

  1. Abra la biblioteca de clases que contiene la clase de barra de herramientas personalizada y, a continuación, abra la clase.
  2. En la barra de herramientas Controles de formularios, elija un objeto que desee agregar.
  3. Ponga el objeto en la barra de herramientas personalizada; para ello, haga clic en dicha barra.
  4. Repita los pasos 2 y 3 hasta que la barra de herramientas personalizada esté completa.
  5. Reorganíce los objetos de la barra de herramientas personalizada, si lo desea.

    Por ejemplo, puede ajustar el tamaño de los objetos, arrastrarlos, eliminarlos haciendo clic en la tecla SUPR o agregar espacio adicional entre ellos insertando objetos Separator de la barra de herramientas Controles de formularios.

    Nota Sólo puede mover un objeto cada vez.
  6. Establezca las propiedades de la barra de herramientas en la ventana Propiedades.
  7. Guarde la clase de barra de herramientas personalizada.
    Sugerencia Puede agregar un mapa de bits o un icono a un botón de la barra de herramientas si establece su propiedad Picture.

Vea también

Definir una clase ToolBar | Agregar barras de herramientas personalizadas a conjuntos de formularios | Crear barras de herramientas personalizadas | Cuadro de diálogo Personalizar barra de herramientas | Diseñar menús y barras de herramientas | Personalizar el Entorno de Visual FoxPro


Agregar barras de herramientas personalizadas a conjuntos de formularios

Después de definir una clase de barra de herramientas, puede crear una barra de herramientas a partir de la misma. Puede coordinar barras de herramientas y formularios con el Diseñador de formularios o mediante programación.

Coordinar barras de herramientas y formularios en el Diseñador de formularios

Puede agregar una barra de herramientas a un conjunto de formularios de forma que dicha barra se abra junto con los formularios del conjunto de formularios. No puede agregar la barra de herramientas directamente al formulario.

Para agregar una barra de herramientas a un conjunto de formularios mediante el Diseñador de formularios

  1. Registre y seleccione la biblioteca que contiene la clase de barra de herramientas.
  2. Abra el conjunto de formularios con el que desea utilizar la clase de barra de herramientas, haga clic en el botón Ver clases en la barra de herramientas Controles de formulario y seleccione la clase de barra de herramientas en la lista que aparecerá.
  3. En la barra de herramientas Controles de formulario, elija la clase de barra de herramientas.
  4. Haga clic en el Diseñador de formularios para agregar la barra de herramientas y después arrastre la barra de herramientas hasta su ubicación apropiada.

    Visual FoxPro agregará la barra de herramientas al conjunto de formularios. Si un conjunto de formularios no está abierto, Visual FoxPro le pedirá que especifique uno.

  5. Defina las acciones de la barra de herramientas y sus botones.
    Sugerencia Para determinar la clase de un objeto, examine su Información sobre herramientas en la barra de herramientas Controles de formularios.

Vea también

Agregar objetos a una clase de barra de herramientas personalizada | Coordinar barras de herramientas y formularios mediante código | Crear barras de herramientas personalizadas | Cuadro de diálogo Personalizar barra de herramientas | Diseñar menús y barras de herramientas | Personalizar el Entorno de Visual FoxPro | Definir acciones de una barra de herramientas | Programación orientada a objetos


Coordinar barras de herramientas y formularios mediante programación

Además de utilizar el Diseñador de formularios, puede agregar barras de herramientas a conjuntos de formularios mediante programación.

Para agregar una barra de herramientas a un conjunto de formularios utilizando código

  • En el evento Init del conjunto de formularios, utilice el comando SET CLASSLIB para especificar la biblioteca que contiene la clase de barra de herramientas y después cree una barra de herramientas desde esa clase en el conjunto de formularios.

Por ejemplo, para agregar y ver la barra de herramientas tbrPrint, que está basada en la clase printing de la biblioteca de clases inventory, agregue el código siguiente al evento Init del conjunto de formularios:

SET CLASSLIB TO inventory
THIS.AddObject("tbrPrint","printing")
THIS.tbrPrint.Show
Nota Si la clase de barra de herramientas no define las acciones de la barra de herramientas y sus botones, deberá definir las acciones en los procedimientos de evento asociados a la barra de herramientas y sus botones.

Ejemplo:

Puede definir todos los aspectos de una barra de herramientas en el código. Por ejemplo, si agrega el código siguiente al evento Init de un conjunto de formularios, cuando se cargue el conjunto de formularios Visual FoxPro creará y mostrará la barra de herramientas definida en el código. Esta barra contiene dos botones.

Cuando se haga clic en estos botones, cambiarán los atributos de fuente del formulario frmForm1 en el conjunto de formularios.

Código de evento Init del conjunto de formularios

Código Comentarios
THIS.AddObject("tbrTool1","mytoolbar")
THIS.tbrTool1.Show
 Agrega una barra de herramientas de la clase mytoolbar al conjunto de formularios actual y hace que dicha barra sea visible. Este código está en el evento Init del conjunto de formularios.

Código de definición de clase

Código Comentarios
DEFINE CLASS myToolBar AS TOOLBAR
ADD OBJECT cmdBold AS COMMANDBUTTON
ADD OBJECT sep1    AS SEPARATOR
ADD OBJECT cmdItalic AS COMMANDBUTTON
 Principio de la definición de clase: una barra de herramientas con un botón de comando, un separador y otro botón de comando.
Left = 1
Top  = 1
Width = 25
Caption = "Form Attributes"
 Establece las propiedades del objeto barra de herramientas.
cmdBold.Caption = "B"
cmdBold.Height = 1.7
cmdBold.Width = 10
cmdItalic.Caption = "I"
cmdItalic.Height = 1.7
cmdItalic.Width = 10
cmdItalic.FontBold = .F.
 Establece las propiedades de los controles. Observe que no hay ningún valor en las propiedades Top o Left para los controles de una barra de herramientas. Los controles de una barra de herramientas se sitúan automáticamente en el orden en que se agregan.

La propiedad FontBold de cmdItalic está establecida en falso (.F.) ya que FontBold es verdadero (.T.) de forma predeterminada.
PROCEDURE Activate
THIS.cmdBold.FontBold = ;
THISFORMSET.frmForm1.FontBold
THIS.cmdItalic.FontItalic = ;
THISFORMSET.frmForm1.FontItalic
ENDPROC
 Cuando se activa la barra de herramientas, los atributos de fuente de los dos botones de comando se establecen para reflejar las configuraciones de fuente Negrita y Cursiva de frmForm1.
PROCEDURE cmdBold.CLICK
THISFORMSET.frmForm1.FontBold = ;
!THISFORMSET.frmForm1.FontBold
THIS.FontBold = ;
THISFORMSET.frmForm1.FontBold
ENDPROC
 Cuando el usuario hace clic en cmdBold, se invierte la configuración FontBold de frmForm1 y la configuración FontBold de cmdBold se establece de forma que coincida.
PROCEDURE cmdItalic.CLICK
THISFORMSET.frmForm1.FontItalic = ;
!THISFORMSET.frmForm1.FontItalic
THIS.FontItalic = ;
THISFORMSET.frmForm1.FontItalic
ENDPROC
 Cuando el usuario hace clic en cmdItalic, se invierte la configuración FontItalic de frmForm1 y la configuración FontItalic de cmdItalic se establece de forma que coincida.
ENDDEFINE
 Termina la definición de clase.

Establecer propiedades de barras de herramientas personalizadas

Mientras diseña una barra de herramientas personalizada puede establecer sus propiedades. Por ejemplo, puede establecer la propiedad Movable para permitir al usuario mover la barra de herramientas.

Además, puede utilizar métodos y eventos para controlar las barras de herramientas personalizadas. Por ejemplo, puede utilizar el método Dock para acoplar o liberar una barra de herramientas y los eventos BeforeDock y AfterDock para controlar lo que ocurre antes y después de acoplar una barra de herramientas.

Vea también

Agregar barras de herramientas personalizadas a conjuntos de formularios | Definir acciones de una barra de herramientas | Crear barras de herramientas personalizadas | Cuadro de diálogo Personalizar barra de herramientas | Diseñar menús y barras de herramientas | Personalizar el Entorno de Visual FoxPro | Definir acciones de una barra de herramientas


Definir acciones de barra de herramientas

Después de crear una barra de herramientas debe definir las acciones asociadas a la barra de herramientas y sus objetos. Por ejemplo, debe definir lo que ocurrirá cuando el usuario haga clic en la barra de herramientas o en uno de sus botones.

Para definir una acción de barra de herramientas

  1. Seleccione el objeto para el que desee definir una acción: la barra de herramientas o uno de sus botones.
  2. En la ventana Propiedades, haga clic en la ficha Métodos.
  3. Modifique el evento apropiado.
  4. Agregue el código que especifique la acción.

Además, puede establecer propiedades y métodos de la barra de herramientas y sus objetos.

Coordinar menús y barras de herramientas personalizadas

Si crea una barra de herramientas, deberá sincronizar sus botones con los correspondientes comandos de menús. Por ejemplo, si habilita un botón de barra de herramientas, deberá habilitar su comando de menú correspondiente.

Debe diseñar y crear su aplicación para:

  • Realizar las mismas acciones cuando el usuario elige botones de barra de herramientas y elementos de menú asociados.
  • Coordinar la habilitación y deshabilitación de botones de barra de herramientas y elementos de menú asociados.

Siga los pasos generales al coordinar elementos de menú y botones de barra de herramientas:

  1. Cree una barra de herramientas; para ello, defina una clase de barra de herramientas, agregue botones de comando e incluya el código operacional de los métodos asociados a los evento Click de los botones de comando.
  2. Cree el menú coordinado.
  3. Agregue la barra de herramientas y el menú coordinados a un conjunto de formularios.

Vea también

Coordinar barras de herramientas y formularios mediante código | Crear un menú coordinado | Crear barras de herramientas personalizadas | Cuadro de diálogo Personalizar barra de herramientas | Diseñar menús y barras de herramientas | Personalizar el Entorno de Visual FoxPro


Crear un menú coordinado

Cuando coordine un menú con una barra de herramientas, los elementos de menú cumplen las mismas tareas que los botones de la barra de herramientas asociada y los elementos de menú asociados se deshabilita automáticamente cuando el botón de barra de herramientas asociado se deshabilita.

Para crear un menú coordinado con una barra de herramientas

  1. En el Diseñador de menús, cree un submenú con un indicador descriptivo para cada botón de la barra de herramientas.
  2. En la columna de resultados para cada elemento de submenú, elija Comando.
  3. Para cada elemento de submenú, llame al código asociado al evento Click del botón de comando de barra de herramientas apropiado.

    Por ejemplo, si el nombre del botón de la barra de herramientas es cmdA, agregue la línea de código siguiente en el cuadro de edición para el comando de elemento de submenú:

    Formset.toolbar.cmdA.Click
  4. Elija el botón de la columna Opciones para abrir el cuadro de diálogo Opciones de la acción y elija Saltar por.
  5. En el Generador de expresiones, escriba una expresión que indique que la opción de menú se debe omitir cuando el botón de comando de la barra de herramientas no esté habilitado.

    Por ejemplo, si el nombre del botón en la barra de herramientas es cmdA, escriba la siguiente expresión en el cuadro Saltar por:

    NOT formset.toolbar.cmdA.Enabled
  6. Genere el menú.
  7. Agregue el menú al conjunto de formularios con la barra de herramientas y ejecute el conjunto de formularios.

Cuando el usuario abra el menú, Visual FoxPro evaluará la condición Saltar por y deshabilitará el elemento de menú si el botón de comando de barra de herramientas asociado está deshabilitado. Cuando el usuario elija un elemento en el menú, el código del evento Click del botón de comando de barra de herramientas asociado se ejecuta.

Vea también

Definir acciones de una barra de herramientas | Agregar una barra de herramientas y un menú coordinados a un conjunto de formulario | Crear barras de herramientas personalizadas | Cuadro de diálogo Personalizar barra de herramientas | Diseñar menús y barras de herramientas | Personalizar el Entorno de Visual FoxPro


Agregar una barra de herramientas y un menú coordinados a un conjunto de formularios

Cuando haya creado una clase de barra de herramientas y un menú diseñados para que funcionen conjuntamente, le resultará fácil incorporarlos a un conjunto de formularios.

Para incorporar una barra de herramientas y un menú coordinados a un conjunto de formularios

  1. Agregue la barra de herramientas al conjunto de formularios de una de las tres formas siguientes:
    • Arrastre la clase de barra de herramientas desde el Administrador de proyectos al Diseñador de formularios.
    • Registre la biblioteca de clases de barras de herramientas y agregue la barra de herramientas al conjunto de formularios desde la barra de herramientas Controles de formularios.
    • En el evento Init del conjunto de formularios, incluya código con el método AddObject para agregar la barra de herramientas.
  2. En el evento Load del conjunto de formularios, guarde el menú existente y ejecute su programa de menú.

    Por ejemplo, si su nombre de menú es mymenu, incluya las siguientes líneas de código con los comandos PUSH MENU y DO:

    PUSH MENU _MSYSMENU
DO mymenu.mpr
  3. En el evento Unload del conjunto de formularios, restablezca el menú original con el comando POP MENU:
    POP MENU _MSYSMENU

Si algunos comandos de menú se usan más que otros, puede crear barras de herramientas personalizadas que contengan botones para esos comandos. Los usuarios podrán simplemente hacer clic en los botones siempre que necesiten los comandos. Sin embargo, si crea una barra de herramientas, debería sincronizar los comandos de menú con sus botones correspondientes. Por ejemplo, si habilita un botón, debe habilitar el comando de menú correspondiente.

Vea también

Crear un menú coordinado | Probar y depurar un sistema de menús | Crear barras de herramientas personalizadas | Cuadro de diálogo Personalizar barra de herramientas | Diseñar menús y barras de herramientas | Personalizar el entorno de Visual FoxPro


Probar y depurar un sistema de menús

Al diseñar un sistema de menús puede ver una vista previa o también puede probarlo y depurarlo una vez generado el programa de menú.

Para ver una vista previa de un sistema de menús durante su diseño

  • En el Diseñador de menús, elija Vista previa.

Al hacer clic en Vista previa aparecerá en el borde superior de la pantalla el sistema de menús que haya definido. Además, el cuadro de diálogo Vista previa mostrará el nombre de archivo (o nombre de archivo temporal) del sistema de menús.

Si selecciona un título o un elemento de menú, también aparecerá en el cuadro de diálogo Vista previa, junto con el comando que tenga asignado, si existe.

Para probar un sistema de menús

  1. En el menú Menú, elija Generar.

    Si ha modificado el menú, Visual FoxPro le pedirá que guarde los cambios.

  2. En el cuadro de diálogo Generar menú, escriba un nombre para el programa de menú generado en el cuadro Archivo de salida o elija el botón del cuadro de diálogo.
  3. Elija Generar para crear un archivo de programa de menú con la extensión .mpr.
  4. En el menú Programa, elija Ejecutar para ejecutar el programa.
    Precaución Si modifica el programa de menú generado (el archivo .mpr), perderá todos los cambios al modificar el menú con el Diseñador de menús y volver a generar el programa de menú.

Si el programa de menú no funciona como se pretende, utilice las herramientas de diagnóstico que incluye Visual FoxPro. Para obtener más información, vea Probar y depurar aplicaciones.

Sugerencia Si ejecuta una aplicación (archivo .exe) en la que el programa principal es un menú y la aplicación termina cuando muestra el menú, incluya el comando READ EVENTS en el código de limpieza. También debe asignar un comando CLEAR EVENTS al comando de menú que permita al usuario salir del sistema de menús.

Vea también

Agregar una barra de herramientas y un menú coordinados a un conjunto de formularios | Personalizar un sistema de menús | Crear barras de herramientas personalizadas | Cuadro de diálogo Personalizar barra de herramientas | Diseñar menús y barras de herramientas | Personalizar el Entorno de Visual FoxPro


Personalizar un sistema de menús

Una vez creado un sistema de menús básico, puede personalizarlo. Por ejemplo, puede crear mensajes de barra de estado, definir las ubicaciones de los menús o definir procedimientos predeterminados.

Mostrar mensajes en la barra de estado

Cuando selecciona un menú o un elemento de menú, puede mostrar un mensaje en la barra de estado que lo describa. Estos mensajes ayudan al usuario ofreciéndole información adicional sobre la elección en el menú.

Para mostrar un mensaje cuando se selecciona un menú o un elemento de menú

  1. En la columna Indicador del sistema, haga clic en el título o elemento de menú correspondiente.
  2. Elija el botón de la columna Opciones para mostrar el cuadro de diálogo Opciones de la acción.
  3. Haga clic en el botón Mensaje.

    Aparecerá el cuadro de diálogo Generador de expresiones.

  4. En el cuadro Mensaje, escriba el mensaje que desee.
    Sugerencia Indique las cadenas de caracteres entre comillas.

Definir la ubicación de los títulos de los menús

Puede personalizar la ubicación de los títulos de menús definidos por el usuario en las aplicaciones. Puede personalizar la ubicación respecto al sistema de menús activo; para ello, elija las opciones del cuadro de diálogo Opciones generales. También puede especificar la ubicación de los títulos de los menús cuando el usuario modifica visualmente un objeto.

Para especificar una ubicación relativa para los títulos de menú definidos por el usuario

  1. En el menú Ver, elija Opciones generales.
  2. Elija la opción Ubicación adecuada: Reemplazar, Anexar, Antes o Después.

Visual FoxPro volverá a colocar todos los títulos de menú que haya definido. Si solamente desea volver a colocar algunos, arrastre los botones de movimiento hasta los títulos de menú correspondientes en el Diseñador de menús.

También puede especificar la ubicación de los títulos de los menús cuando el usuario modifica un objeto en la aplicación. Si incluye un objeto y el usuario lo activa, los títulos no aparecerán en la barra de menús resultante a menos que lo especifique explícitamente.

Para controlar la ubicación de los títulos de los menús durante la modificación visual de objetos

  1. En la columna Indicador del sistema, haga clic en el título de menú correspondiente.
  2. Elija el botón de la columna Opciones para mostrar el cuadro de diálogo Opciones de la acción.
  3. Active la casilla de verificación Negociar.
  4. Elija uno de los botones de opción siguientes:
    • Ninguno no incluye ningún título en la barra de menús. Elegir Ninguno es lo mismo que no elegir ninguna opción.
    • Izquierda coloca el título en el grupo izquierdo de títulos de la barra de menús.
    • Centro coloca el título en el grupo central de títulos de la barra de menús.
    • Derecha coloca el título en el grupo derecho de títulos de la barra de menús.

Si no elige Izquierda, Centro o Derecha, el título no aparecerá en la barra de menús cuando el usuario modifique un objeto. Para obtener más información acerca de la edición visual de objetos, vea Compartir información y agregar objetos OLE.

Guardar y restaurar menús

Para guardar y restaurar menús en la pila puede utilizar los comandos PUSH MENU y POP MENU. Esta funcionalidad es útil cuando se desea quitar temporalmente un menú, sustituirlo por otro y después restaurar el menú original.

El número de menús que se pueden guardar sólo está limitado por la cantidad de memoria disponible.

Sugerencia Compruebe la memoria disponible con la función SYS(1016). Por ejemplo, para saber que memoria utiliza el sistema de menús, llame a SYS(1016), guarde el menú en la pila y llame de nuevo a SYS(1016).

Crear un procedimiento predeterminado para un sistema de menús

Puede crear un procedimiento global que se aplica a todo el sistema de menús. Este procedimiento se ejecutará siempre que se elija un menú que no tenga asignado ningún procedimiento.

Por ejemplo, suponga que está programando una aplicación en la que algunos menús aún no cuentan con submenús, procedimientos, etc. Para estos menús, puede crear código auxiliar que se ejecute al elegirlos. Por ejemplo, este procedimiento general puede incluir la función siguiente:

MESSAGEBOX("Opción pendiente")

Para crear un procedimiento predeterminado

  1. Abra el sistema de menús que esté diseñando.
  2. En el menú Ver, elija Opciones generales.
  3. Asigne el procedimiento mediante uno de los métodos siguientes:
    • Escriba un procedimiento o llámelo en el cuadro Procedimiento.

      –O bien–

    • Haga clic en el botón Edición, y luego en el botón Aceptar, para abrir una ventana de edición independiente en la que escribir o llamar al procedimiento.

Establecer el menú del sistema

Puede manipular menús que utilizan el sistema de menús de Visual FoxPro mediante el comando SET SYSMENU. Con SET SYSMENU puede deshabilitar los menús, agregarles o quitarles elementos, restaurar los menús predeterminados de Visual FoxPro y controlar el acceso a los menús durante la ejecución del programa.

Vea también

Probar y depurar un sistema de menús | Cuadro de diálogo Opciones generales | Crear barras de herramientas personalizadas | Cuadro de diálogo Personalizar barra de herramientas | Diseñar menús y barras de herramientas | Personalizar el Entorno de Visual FoxPro


Crear Informes y Etiquetas

Después de recopilar y organizar sus datos, puede agregar informes o etiquetas a su aplicación para imprimir los datos o mostrarlos en pantalla.

En esta sección

Crear un diseño de informe
Explica varias formas para crear diseños de informes en Visual FoxPro.
Controlar orígenes de datos
Describe como controlar el uso de datos en su informe.
Proteger una sesión de datos de un informe
Explica como evitar que la sesión de datos del informe sea afectada por la sesión global de datos.
Modificar diseños
Describe como cambiar el diseño de su informe.
Definir la página del informe
Describe como establecer un informe utilizando las herramientas proporcionadas en el Diseñador de informes.
Agregar, copiar y eliminar controles de informes
Explica como utilizar los controles de informe en su informe o etiqueta Visual FoxPro.
Establecer opciones de impresión para controles
Explica como ajustar, cuundo y donde se imprimirá un control de informe.
Guardar un informe como HTML
Explica cómo guardar un informe en formato HTML.
Integrar consultas e informes
Describe como implementar una consulta en su informe Visual FoxPro.
Generar etiquetas e informes
Explica como generar un informe o etiqueta sin escribir código.

Secciones relacionadas

Trabajar con datos
Aprenda cómo crear aplicaciones efectivas con índices, tablas y bases de datos basados en sus requisitos de datos.
Crear una aplicación
Discute como crear una aplicación Visual FoxPro, la cual puede incluir una o más bases de datos, un programa principal que establezca el entorno del sistema de la aplicación y una interfaz de usuario que incluya formularios, barras de herramientas y menús.
Trabajar con proyectos
Define la configuración de un proyecto y un grupo de archivos que producen un programa o, archivo o archivos binarios finales.
Planificar aplicaciones
Describe como un estudio cuidadoso ahorra tiempo, esfuerzo y dinero y, como algunas de las decisiones que tome durante la fase de preparación impactará en como crea los elementos de la aplicación.
Programar aplicaciones internacionales
Describe como puede diseñar y desarrollar sus aplicaciones Visual FoxPro para que sean tan efectivas internacionalmente como domésticamente.


Crear un diseño de informe

Visual FoxPro ofrece tres formas de crear un diseño de informe:

  • Crear informes sencillos de una o varias tablas con un Asistente para informes.
  • Crear un informe sencillo desde una tabla con Informe rápido.
  • Modificar informes existentes o crear sus propios informes con el Diseñador de informes.

Con cada uno de estos métodos creará un archivo de diseño de informe que puede modificar con el Diseñador de informes. El Asistente para informes es el método más fácil de iniciar un informe y ofrece automáticamente muchas de las características de personalización del Diseñador de informes. El Informe rápido es la forma más rápida de crear un diseño sencillo. Si crea un informe directamente con el Diseñador de informes, éste le presentará un diseño en blanco.

Usar un Asistente para informes

Siempre que quiera crear un informe puede usar un Asistente para informes que le ayude a configurarlo. El asistente le plantea una serie de preguntas y crea un diseño del informe basado en sus respuestas.

Visual FoxPro proporciona estos asistentes para el diseño de informes y etiquetas:

  • Informe
  • Uno a varios
  • Etiqueta
  • Combinar correspondencia

El asistente que elija dependerá del diseño general y la complejidad de su informe.

Para usar un Asistente para informes

  1. En el Administrador de proyectos, seleccione Informes.
  2. Elija Nuevo.
  3. Elija Asistente para informes.
  4. Elija el tipo de informe que desea crear.
  5. Siga las instrucciones de las pantallas del asistente.

También puede tener acceso a los Asistentes para informes desde el menú Herramientas, eligiendo el comando Asistentes y a continuación, Informe.

Cuando use un asistente, puede usar el Diseñador de informes para agregar controles y personalizar su informe.

Iniciar el Diseñador de informes

Si no desea usar un asistente para informes, puede partir de un diseño de informe en blanco y agregar controles.

Para crear un informe en blanco

  1. En el Administrador de proyectos, seleccione Informes.
  2. Elija Nuevo.
  3. Elija Nuevo informe.

    Aparecerá el Diseñador de informes.

Puede utilizar cualquiera de las características del Diseñador de informes para agregar controles y personalizar de este modo su informe.

Vea también

Diseñador de informes | Crear informes y etiquetas | Integrar consultas e informes | Asistente para informes | Preparar el diseño de informe | Seleccionar, mover y cambiar el tamaño de controles de informes


Preparar el diseño de informe

Puede diseñar un informe de forma que muestre sus datos de varias formas en la página impresa. Con el Diseñador de informes o los asistentes para informes puede diseñar listas completas, resúmenes o subconjuntos especiales de datos, como por ejemplo una factura. El diseño de un informe tiene cuatro etapas principales:

  1. Determinar el tipo de informe que va a crear.
  2. Crear el archivo que contenga el diseño del informe.
  3. Modificar y personalizar el archivo de diseño.
  4. Obtener una vista previa e imprimir el informe.

Determinar el diseño general

Antes de crear un informe, decida el formato general que desea que éste tenga. Su informe puede ser tan simple como una lista de teléfonos basada en una sola tabla, o tan complejo como una factura basada en múltiples tablas. Puede crear también tipos especiales de informes. Por ejemplo, una etiqueta postal es un informe especial con un diseño específico y para un tipo de papel especial.

Para ayudarle a elegir un diseño, a continuación se presentan algunas descripciones de diseños generales de informes, sus usos comunes y ejemplos.

Tipo de diseño | Descripción | Ejemplos
Columna | Un registro por fila con campos dispuestos horizontalmente a lo ancho de la página | Informe de grupos y totales1 Informes financieros Inventario Resumen de ventas
Fila | Una columna de registros con campos dispuestos verticalmente uno bajo el otro | Listas
Uno a varios1 | Un registro o una relación uno a varios | Facturas Estado de cuentas
Varias columnas | Más de una columna de registros con campos colocados verticalmente hacia abajo en el margen izquierdo | Listín telefónico Tarjetas de visita
Etiqueta | Mas de una columna de registros con campos dispuestos verticalmente hacia abajo en el margen izquierdo; impreso en papel especial | Etiquetas postales Etiquetas de nombres

1 Diseños que tienen asociado un Asistente para informes

Después de seleccionar el diseño general del informe que convenga a sus necesidades, puede crear el archivo de diseño del informe con el Diseñador de informes.

Descripción de los archivos de diseño de informes

El archivo de diseño de informe, que tiene una extensión .frx, almacena las especificaciones del informe. Cada archivo de informe tiene también asociado un archivo con extensión .frt. El archivo de informe especifica los campos que usted desea incluir, el texto que desea imprimir y la colocación de la información en la página. Para obtener la información desde su base de datos hasta la página impresa, imprima el archivo de informe. El archivo no almacena los valores de cada uno de los campos de datos, sino sólo la información de colocación y formato correspondiente a ese informe. Los valores pueden cambiar cada vez que se ejecuta el informe, dependiendo de los cambios que hayan ocurrido en los campos del origen de datos usado por el archivo de informe.

Vea también

Diseñador de informes | Crear informes y etiquetas | Integrar consultas e informes | Crear un diseño de informe


Crear un diseño de etiquetas

Una etiqueta es un diseño de informe de varias columnas con una configuración especial para estas, de manera que coincidan con un papel especialmente diseñado para la impresión de etiquetas. En Visual FoxPro puede crear etiquetas rápidamente con el Asistente para etiquetas o el Diseñador de etiquetas.

Usar el Asistente para etiquetas

El Asistente para etiquetas es un método fácil para crear etiquetas. Puede usar el Diseñador de informes para personalizar el archivo de etiquetas creado con el asistente.

Para crear etiquetas con el Asistente para etiquetas

  1. En el Administrador de proyectos, seleccione Etiquetas.
  2. Elija Nuevo.
  3. elija Asistente para etiquetas.
  4. Siga las instrucciones de las pantallas del asistente.

Puede utilizar el diseño actual de etiquetas o personalizarlo con alguna de las características descritas para los informes. También puede ejecutar el Asistente para agregar etiquetas si hace clic en el botón Nueva etiqueta del Paso 2 del Asistente para etiquetas.

Iniciar el Diseñador de etiquetas

Si no quiere utilizar el asistente para crear sus propias etiquetas, puede crear un diseño con el Diseñador de etiquetas. El Diseñador de etiquetas es como el Diseñador de informes y utiliza los mismos menús y barras de herramientas. Los dos diseñadores difieren en la página y el papel predeterminados que utilizan. El Diseñador de informes usa una página completa de papel estándar. El Diseñador de etiquetas establece su papel y página predeterminados para que coincidan con el papel de etiqueta estándar.

Para crear una etiqueta con el Diseñador de etiquetas

  1. En el Administrador de proyectos, seleccione Etiquetas.
  2. Elija Nuevo.
  3. Elija Nueva etiqueta para mostrar el cuadro de diálogo Nueva etiqueta.
  4. En el cuadro de diálogo Nueva etiqueta, seleccione un diseño de etiquetas y elija Aceptar.

    En el Diseñador de etiquetas aparecerá una definición de página para el diseño de etiquetas que seleccionó.

Puede especificar un origen de datos e insertar controles como lo haría para un informe.

Vea también

Crear un diseño de informe | Proteger una sesión de datos de un informe | Administrador de proyectos | Addlabel.app (Ejemplo) | Diseñador de informes | Crear informes y etiquetas | Agregar controles de etiqueta


Controlar orígenes de datos

Puede controlar los datos de sus reportes utilizando el origen de datos que elija, así como manipular y combinar datos con el uso de variables de reportes. Las variables de reportes almacenan valores que son calculados y usados en un informe. Para controlar el origen de datos en un informe, puede definir el entorno de datos desde el informe o puede activar el origen de datos específico por código cada ves que ejecute el informe. Para mas información acerca del uso del diseñador del entorno de datos, vea Crear formularios.

Para | Añadir
Utilizar siempre los mismos orígenes de datos. | Tablas o vistas al entorno de datos del informe.
 | DO consulta o SELECT - SQL en el evento Init del entorno de datos del informe.
Utilizar distintos orígenes de datos. | USE tabla, USE vista, DO consulta, o SELECT - SQL en el evento Click o en otro código que preceda al comando REPORT o LABEL.

Si utiliza una tabla como origen de datos, use alias en los campos del informe solo si planea no usar el informe con cualquier otro origen de datos que la tabla misma. Si usa una vista o consulta como origen de datos y los alias se incluyen en los controles del informe, el informe podría desplegar el mismo registro repetidamente.

Controlar el orden de los registros

Puede usar los orígenes de datos del informe para controlar el orden en que los registros se imprimirán. Los registros se procesan e imprimen en el orden que aparecen en la tabla, vista o consulta. Para ordenar registros en una tabla, puede establecer un índice por código o como parte del entorno de datos del informe. Para una consulta, vista o código SELECT - SQL, puede usar la cláusula ORDER BY. Si no ordena los registros usando los orígenes de datos, la única forma de ordenar los registros dentro del informe es por la propiedad ORDER en un cursor dentro del entorno de datos.

Controlar la selección de registros

Además del orden en que aparecen los registros en el informe, puede seleccionar cuales registros serán impresos usando el origen de datos, las opciones de impresión del informe o una combinación de los dos.

Al usar | Añadir
Vistas o consultas | Condiciones en la ficha Filtro
SELECT - SQL | Cláusulas WHERE o HAVING
Diseñador de informes | En el cuadro de dialogo Opciones de Impresión
El comando REPORT | Expresiones de alcance FOR o WHILE
Tablas | Indices filtrados

Vea también

Mostrar los resultados en una ventana | Proteger una sesión de datos de un informe | Refinar el diseño de página | Integrar consultas e informes | Agregar controles de etiqueta | Seleccionar, mover y cambiar el tamaño de controles de informes | Agregar, copiar y eliminar controles de informes | Agrupar datos en diseños

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Proteger una sesión de datos de un informe

Para evitar que la sesión de datos de su informe se vea afectada por la sesión de datos global como resultado de las modificaciones realizadas por otros diseñadores, puede establecer la sesión de datos del informe como privada.

Para establecer una sesión privada de datos

  • En el menú Informe, elija Sesión privada de datos.

Si desea mostrar el resultado de una consulta en un gráfico, puede usar el Asistente para gráficos, el Diseñador de consultas o un comando SELECT - SQL. Para usar el Diseñador de consultas o un comando SELECT - SQL, siga los pasos que se indican a continuación. Debe incluir por lo menos un campo numérico en el conjunto de resultados para crear un gráfico. Después de terminar la consulta, puede elegir entre seis tipos de gráficos, cada uno con dos variantes.

Para modificar el gráfico

  1. Examine la tabla que contiene el gráfico.
  2. Haga doble clic en el campo general para mostrar el gráfico.
  3. Haga doble clic en el gráfico para abrir Microsoft Graph y mostrar la barra de herramientas de Microsoft Graph.
  4. Modifique el gráfico en Microsoft Graph.

Vea también

Crear informes y etiquetas | Refinar el diseño de página | Utilizar expresiones y funciones en controles de campo | Establecer el entorno de datos | Diseñador de entorno de datos | Programar para acceso compartido | Asistente para gráficos | Diseñador de consultas y de vistas | SELECT - SQL


Modificar diseños

Si tiene un informe o una etiqueta en blanco, el asistente o el Informe rápido genera un informe que no se adapta enteramente a sus necesidades; puede modificarlo con el Diseñador de informes.

En las bandas del Diseñador de informes, puede insertar ciertos tipos de controles que contienen las etiquetas, campos, variables y expresiones que desea incluir en el informe impreso. Por ejemplo, en un listín telefónico podría colocar controles de campo para los nombres y números de teléfono, así como controles de etiqueta y encabezados de columna al principio de la lista. Para mejorar la apariencia visual del informe y hacerlo más legible, puede agregar otros controles como líneas, rectángulos y rectángulos redondeados. Puede incluir también controles de imagen.

Puede abrir su informe o etiqueta en el Diseñador de informes para modificar y personalizar su diseño.

Para modificar una etiqueta o un informe generado

  1. En el Administrador de proyectos, seleccione un informe o una etiqueta.
  2. Elija Modificar.

Utilice las bandas del informe para determinar como desea que sea cada página, grupo y el comienzo y el fin de su informe. Las bandas del informe se pueden cambiar de tamaño. En estas bandas, agregue controles de informes y luego mueva, copie, cambie el tamaño, alineé y ajuste para organizar el texto y los campos de su informe.

Vea también

Informe rápido | Diseñador de informes | Refinar el diseño de página | Ventana Administrador de proyectos | Crear informes y etiquetas | Integrar consultas e informes | Proteger una sesión de datos de un informe | Agregar controles de etiqueta


Refinar el diseño de página

Puede refinar el diseño de las páginas de su informe; para ello, defina múltiples columnas y cambie el área de página reservada para una banda cambiando el alto de cada banda.

Definir múltiples columnas en una página

Para crear listas de teléfonos, etiquetas postales u otros tipos de listas, puede definir varias columnas por página.

Para definir un informe de múltiples columnas

  1. En el menú Archivo, elija Configurar página.

    Cuadro de diálogo Configurar página con columnas definidas

  2. En el área Columnas, escriba el número de columnas para la página. Es el mismo que el número de registros que desea imprimir en la página.
  3. En el cuadro Ancho, escriba un valor para el ancho de columna.
  4. En el cuadro Espacio, escriba un valor para el espacio que desea que aparezca entre cada columna.
    Sugerencia Si imprime grupos que empiecen en una nueva página, no use la opción Orden al imprimir.
  5. Elija Aceptar.

    El Diseñador de informes refleja sus modificaciones.

Si el diseño ya contiene controles de informes en la banda Detalles, es posible que tenga que moverlos o cambiar su tamaño para que se ajusten a los límites de la nueva columna.

Establecer el alto de bandas de informe

Al diseñar el informe, puede cambiar el alto de una banda de informe. El alto de una banda de informe determina la cantidad de espacio que cada banda de informe usa en la página dentro de los márgenes de página. Por ejemplo, si la banda Título se establece a media pulgada (1,27 cm), el Título aparecerá en la primera media pulgada de espacio después del margen superior. La banda de detalle muestra la cantidad de espacio asignado para cada registro impreso. La siguiente información se aplica a todas las bandas del informe. Puede establecer parámetros adicionales para las bandas Encabezado y Pie de grupo.

Para cambiar el tamaño de una banda

  • Arrastre la barra de la banda hasta la altura apropiada.

    Utilice la regla de la izquierda como guía. La medida de la regla le indica el alto de esa banda, sin incluir los márgenes de la página.

    Sugerencia La banda no puede ser menor que el alto de los controles en el diseño. Puede mover los controles dentro de la banda primero y después, si lo desea, reducir el alto.

Para establecer un alto de banda exacto

  1. Haga doble clic en la barra de la banda apropiada.

    Aparece un cuadro de diálogo para la banda.

  2. En el cuadro Alto, escriba un valor para el alto.
  3. Elija Aceptar.

Vea también

Proteger una sesión de datos de un informe | Utilizar expresiones y funciones en controles de campo | Crear informes y etiquetas | SELECT - SQL | Agrupar datos en diseños


Agrupar datos en diseños

Después de crear el diseño básico, podría decidir que agrupar los registros por determinados campos u otros criterios facilitaría la lectura del informe. La agrupación le permite separar grupos de registros visualmente y mostrar datos introductorios y de resumen para cada grupo. La separación por grupos se basa en una expresión de agrupación. Esta expresión suele estar basada en uno o más campos de tabla, pero puede ser tan compleja como se desee.

Cuando tiene grupos, su diseño de informe contiene bandas Encabezado de grupo y Pie de grupo, a las que puede agregar controles. Normalmente, las bandas Encabezado de grupo contienen el control de campo para el campo utilizado para el grupo. Puede agregar líneas, rectángulos, rectángulos redondeados o cualquier etiqueta que quiera que aparezca delante del primer registro en un grupo. Las bandas Pie de grupo suelen contener totales de grupo y otra información de resumen para el grupo.

También puede especificar otras opciones para los grupos:

  • Imprimir texto en los encabezados y pies de página para identificar grupos específicos
  • Imprimir cada grupo en una página nueva
  • Restablecer los números de página cuando los grupos se impriman en una nueva página

Si el origen de datos es una tabla, probablemente los registros no estén en el orden de agrupación adecuado. Sin embargo, puede ordenar los datos correctamente si establece un índice en la tabla, si usa una vista ordenada en el entorno de datos o si usa una consulta como origen de datos para mostrar los registros en grupos. El diseño del informe no ordena realmente los datos, sino que procesa los registros en el mismo orden en el que están en el origen de datos. El orden y la ordenación deben realizarse con una vista, un índice u otra forma de manipulación de datos fuera del diseño.

Por ejemplo, si se produce un cambio de grupo en el campo Region cada vez que el informe procese un valor de una región diferente, se creará un grupo. Sin embargo, eso no significa que un país al comienzo de la tabla deba ordenarse con el grupo del mismo país al final de la tabla.

Vea también

Preparar la ubicación de los datos | Refinar el diseño de página | Modificar diseños | Crear informes y etiquetas | Integrar consultas e informes | Agregar un informe de grupo único


Definir la página del informe

Cuando prepara un informe, normalmente tiene una idea sobre cuál será la apariencia de la página. Por ejemplo, conoce los márgenes, el tipo de papel y el diseño que desea. Este tema describe los valores de los márgenes, la orientación de la página y el alto de las bandas de la página del informe.

Establecer el margen, el tamaño del papel y la orientación

Puede establecer el margen izquierdo, el tamaño del papel y la orientación para el informe, así como el ancho de columnas y el espacio entre columnas para un informe con varias columnas. En este contexto, la palabra “columnas” se refiere al número de registros que se imprimen a lo ancho de la página, no al número de campos de un único registro. El Diseñador de informes no muestra esa configuración. Solo muestra el área comprendida entre los márgenes que contienen un registro en una columna de la página. Además, si su informe tiene columnas y cambia el margen izquierdo, el ancho de la columna cambiará de forma automática para acomodarse al nuevo margen.

Si cambia la configuración del tamaño del papel y la orientación, asegúrese de que la orientación es correcta para el tamaño de papel seleccionado. Por ejemplo, si selecciona un sobre, la orientación debería establecerse como Horizontal.

Para establecer el margen izquierdo

  1. En el menú Archivo, elija Configurar página.
  2. En el cuadro Margen izquierdo, introduzca un valor para el margen.

    La imagen de la página cambiará para mostrar el nuevo margen.

  3. Para seleccionar un tamaño de papel, elija Configurar impresión.
  4. En el cuadro de diálogo Configurar impresión, seleccione un tamaño de papel en la lista Tamaño.
  5. Para seleccionar la orientación del papel, elija una orientación en el área Orientación y, a continuación, elija Aceptar.
  6. En el cuadro de diálogo Configurar página, elija Aceptar.

Definir el encabezado y el pie de página

Los controles ubicados en las bandas Encabezado o Pie de página aparecen una vez en cada página del informe. Un informe que tenga muchas páginas debería incluir el nombre del informe, el número de página, la fecha y las etiquetas (si es apropiado) en un encabezado o pie.

Definir la banda Detalles

Normalmente, los controles colocados en la banda Detalles se imprimen una vez para cada registro.

Agregar las bandas Título y Resumen

La banda Título contiene información que se imprime una sola vez al principio del informe y la banda Resumen contiene información que se imprime una sola vez al final del informe. Tanto el título como el resumen pueden estar en su propia página. Los campos con expresiones de totalización se convertirán en totales generales cuando se coloquen en la banda Resumen.

Para agregar una banda Título o Resumen

  1. En el menú Informe, elija Título y resumen.
  2. Elija las bandas que desee.
  3. Si quiere que la banda aparezca en su propia página, elija Nueva página.
  4. Elija Aceptar. El Diseñador de informes mostrará las nuevas bandas.

Vea también

Crear informes y etiquetas | Agregar líneas, rectángulos y círculos | Agregar una imagen a un informe | Dar formato a controles de campo | Diseñador de informes


Preparar la ubicación de los datos

Una vez que tenga un diseño de informe, puede modificar la ubicación de los datos en la página del informe. Con las bandas del Diseñador de informes puede controlar en qué posición de la página se imprimirán los datos. Su diseño de informe puede tener varias bandas.

Un informe puede tener también múltiples bandas de grupo o bandas para encabezados y pies de columna. Puede agregar esas bandas mediante los procedimientos descritos en Definir la página del informe y Agrupar datos en diseños. Puede utilizar la tabla siguiente para determinar qué bandas desea utilizar.

Use esta banda | Para imprimir | Use este comando
Título | Una vez por informe | En el menú Informe, elija Título y resumen.
Encabezado de página | Una vez por página | Disponible de forma predeterminada.
Encabezado de columna | Una vez por columna | Elija Configurar página en el menú Archivo e introdúzca un número de columna mayor que uno.
Encabezado de grupo | Una vez por grupo | En el menú Informe, elija Agrupar datos.
Banda Detalles | Una vez por registro | Disponible de forma predeterminada.
Pie de grupo | Una vez por grupo | En el menú Informe, elija Agrupar datos.
Pie de columna | Una vez por columna | Elija Configurar página en el menú Archivo e introdúzca un número de columna mayor que uno.
Pie de página | Una vez por página | Disponible de forma predeterminada.
Resumen | Una vez por informe | En el menú Informe, elija Título y Resumen.

Puede situar cualquiera de los controles de informes en cualquiera de las bandas. También puede agregar funciones definidas por el usuario que se procesan durante la ejecución del informe.

Vea también

Utilizar expresiones y funciones en controles de campo | Agrupar datos en diseños | Crear informes y etiquetas | Definir la página del informe | Integrar consultas e informes | Agrupar datos en diseños | Agregar un informe de grupo único


Agregar un informe de grupo único

Un informe de grupo único tiene un nivel de datos agrupados por una expresión suya. Por ejemplo, puede basar un grupo en el campo Country para imprimir juntos todos los registros del mismo país. El origen de datos se debe ordenar por el campo Country.

Para agregar un grupo

  1. En el menú Informe, elija Agrupar datos.
  2. En el primer cuadro Grupo, escriba la expresión de grupo.

    –O bien–

    Haga clic en el botón del cuadro de diálogo para crear una expresión en el Generador de expresiones.

  3. En el área Propiedades de grupo, seleccione las propiedades que desee.
  4. Elija Aceptar.

Después de agregar la expresión, puede colocar los controles que desee en las bandas. Normalmente, el control de campo utilizado para agrupar se traslada desde la banda Detalles hasta la banda Encabezado de grupo.

Vea también

Agrupar datos en diseños | Agregar múltiples grupos de datos | Crear informes y etiquetas | Cambiar una banda de grupo | Eliminar una banda de grupo | Cambiar el orden de agrupación | Cuadro de diálogo Generador de expresiones | Cuadro de diálogo Agrupar datos | Preparar la ubicación de los datos


Agregar múltiples grupos de datos

Puede definir un máximo de 20 niveles de agrupación de datos en un informe. Los grupos anidados son muy útiles para organizar datos y totalizar expresiones en diferentes niveles.

Para elegir en qué nivel colocar una agrupación, estime con qué frecuencia podría cambiar el valor. Luego defina como primero el grupo que cambiará más a menudo. Por ejemplo, su informe podría necesitar una agrupación por regiones y otra agrupación por ciudades. Los valores de un campo de ciudad cambian más que los valores de un campo de región; por lo tanto, la ciudad debería ser la primera de los dos grupos y la región debería ser la segunda. En este informe de varios grupos, la tabla se debe ordenar o indexar por una expresión clave, como Region+City.

Para agregar múltiples grupos

  1. En el menú Informe, elija Agrupar datos.
  2. En el primer cuadro Grupo, escriba la expresión de grupo.

    –O bien–

    Haga clic en el botón del cuadro de diálogo para crear una expresión en el Generador de expresiones.

  3. En el área Propiedades de grupo, elija las propiedades que desee.
  4. Elija Insertar y repita los pasos 2 y 3 para cada expresión de agrupamiento.
  5. Elija Aceptar.

Los grupos están numerados, en la lista Agrupar datos, en el orden en el que se crearon. En el Diseñador de informes, los nombres de las bandas de grupo contienen los números de grupo y una expresión de grupo truncada. Los encabezados y pies de grupo con el número más bajo se muestran más cerca de la banda Detalles.

Vea también

Agregar un informe de grupo único | Cambiar una banda de grupo | Agrupar datos en diseños | Eliminar una banda de grupo | Cambiar el orden de agrupación | Preparar la ubicación de los datos | Generador de expresiones | Diseñador de informes


Cambiar el orden de agrupación de un informe

Puede cambiar el orden de los grupos en un informe una vez definidos. Cuando los grupos se reordenan, todos los controles definidos en una banda de grupo se mueven a la nueva posición. Reordenar los grupos no cambia ningún control definido previamente. Si los cuadros o las líneas se han situado respecto a la parte superior o inferior de una banda de grupo, permanecerán acoplados a esa banda.

Para cambiar el orden de los grupos

  1. En el menú Informe, elija Agrupar datos.
  2. Elija el botón de movimiento situado a la izquierda del grupo que quiera mover y arrástrelo hasta su nueva posición.

Vea también

Eliminar una banda de grupo | Agrupar datos en diseños | Cambiar una banda de grupo | Agregar múltiples grupos de datos | Crear informes y etiquetas


Cambiar una banda de grupo en un informe

Es posible cambiar la expresión de grupo y las opciones de impresión de grupo.

Para modificar una banda de grupo

  1. En el menú Informe, elija Agrupar datos.
  2. En el cuadro de diálogo Agrupar datos, seleccione la expresión de grupo que desea cambiar.
  3. Introduzca la nueva expresión.

    –O bien–

    Haga clic en el botón del cuadro de diálogo para cambiar la expresión en el Generador de expresiones.

  4. Cambie las opciones de agrupamiento como sea necesario.
  5. Elija Aceptar.
  6. En el cuadro de diálogo Agrupar datos, elija Aceptar.

Vea también

Agregar múltiples grupos de datos | Eliminar una banda de grupo | Agrupar datos en diseños | Cambiar el orden de agrupación | Refinar el diseño de página | Crear informes y etiquetas | Preparar la ubicación de los datos | Generador de expresiones


Eliminar una banda de grupo en un informe

Si ya no necesita un determinado grupo en su diseño de informe, puede quitarlo.

Para eliminar una banda de grupo

  1. En el menú Informe, elija Agrupar datos.
  2. Seleccione el grupo que quiera eliminar.
  3. Elija Eliminar.

    La banda de grupo desaparece del diseño. Si la banda de grupo contiene controles, se le preguntará si desea eliminar también los controles.

Vea también

Cambiar una banda de grupo | Cambiar el orden de agrupación | Agrupar datos en diseños | Refinar el diseño de página | Controlar el resultado de informes y etiquetas | Crear informes y etiquetas | Preparar la ubicación de los datos


Agregar, copiar y eliminar controles de informes

Puede insertar los siguientes tipos de controles de informes en los diseños de informe y de etiqueta.

Para mostrar | Elija este control
Campos de tabla, variables y otras expresiones | Campo
Texto literal | Etiqueta
Líneas rectas | Line
Cuadros y bordes | Rectángulo
Círculos, elipses, cuadros con bordes redondeados y bordes | Rectángulo redondeado
Mapas de bits o campos generales | Imagen/OLE dependiente

Después de situar estos controles, puede cambiar las opciones de formato, tamaño, color, posición e impresión. También puede agregar un comentario a cada control para que sirva como referencia únicamente (no se imprime en el informe).

Agregar controles con Informe rápido

Informe rápido es una característica que permite ahorrar tiempo y que crea automáticamente un diseño sencillo de un informe. Usted selecciona los componentes básicos del informe y Visual FoxPro crea el diseño de acuerdo con su selección.

Sugerencia Puede usar Informe rápido en archivos de informes ya existentes si la banda Detalles está vacía. Si la banda Encabezado de página ya contiene controles, Informe rápido los conservará.

Para crear un Informe rápido

  1. En el Administrador de proyectos, seleccione Informes.
  2. Elija Nuevo.
  3. Elija Nuevo informe.
  4. En el menú Informe, elija Informe rápido.
  5. Seleccione la tabla que desea usar y, a continuación, elija Aceptar.
  6. Seleccione el diseño de los campos, el título y las opciones de alias que desee.
  7. Si quiere seleccionar campos del informe, elija Campos y complete el cuadro de diálogo Selector de campos.
  8. Elija Aceptar.

Las opciones que elija se reflejarán en el diseño de informe.

Puede guardar el informe, ver una vista preliminar y ejecutarlo tal y como está.

Nota Informe rápido no agrega campos generales al diseño de informe.

Agregar un comentario a un control

Mientras crea o cambia un control, puede querer incluir una descripción. El cuadro de diálogo de cada control ofrece un cuadro de comentario. Esos observaciones se guardan con el archivo de diseño, pero no aparecen en el informe o en la etiqueta impresos.

Para agregar un comentario a un control

  1. Haga doble clic en el control.
  2. Escriba el comentario en el cuadro Comentarios del cuadro de diálogo del control.

Elija Aceptar.

Copiar y eliminar controles de informes

Puede copiar y eliminar cualquiera de los controles del diseño de forma individual o como un grupo.

Para copiar controles

  1. Seleccione los controles.
  2. En el menú Edición, elija Copiar y, a continuación, Pegar.

    Debajo del conjunto original aparecerá una copia de los controles seleccionados.

  3. Arrastre la copia hacia su posición en el diseño.

Para eliminar controles

  1. Seleccione los controles.
  2. En el menú Edición, elija Cortar o presione la tecla SUPR.

Vea también

Preparar la ubicación de los datos | Utilizar expresiones y funciones en controles de campo | Agrupar datos en diseños | Crear informes y etiquetas | Definir la página del informe | Integrar consultas e informes | Administrador de proyectos | Diseñador de informes | Agregar controles de etiqueta | Agregar un campo General | Seleccionar, mover y cambiar el tamaño de controles de informes


Agregar controles de etiqueta a un informe

Los controles de etiqueta son los caracteres de texto literal que desea que aparezcan en el informe. Por ejemplo, la etiqueta “Total general” identifica el contenido de un control de campo que contiene una expresión de total.

Para agregar un control de etiqueta

  1. En la barra de herramientas Controles de informes, haga clic en el botón Etiqueta.
  2. En el Diseñador de informes, haga clic para situar el control.
  3. Escriba los caracteres para la etiqueta.

    Puede modificar el control como si estuviera en un editor de textos. Use la tecla ENTRAR para agregar líneas o el menú Edición para cortar, copiar y pegar texto.

Para modificar un control de etiqueta

  1. En el Diseñador de informes, haga clic en el botón Etiqueta y haga clic en la etiqueta que desea modificar.
  2. Escriba los cambios.

Después de colocar el texto, puede cambiar la fuente y los colores.

Vea también

Crear informes y etiquetas | Agregar, copiar y eliminar controles de informes | Diseñador de informes | Utilizar expresiones y funciones en controles de campo | Integrar consultas e informes | Agregar un campo General


Agregar líneas, rectángulos y círculos a un informe

Las líneas, rectángulos y círculos aportan un interés visual al diseño de su informe. Puede usarlos para separar o destacar partes del informe.

Dibujar líneas

Puede agregar líneas verticales y horizontales a su diseño de informe con el control Line. Normalmente deseará que haya líneas entre los datos contenidos en el cuerpo del informe y la información del encabezado y el pie.

Para dibujar una línea

  1. En la barra de herramientas Controles de informes, haga clic en el botón Línea.
  2. En el Diseñador de informes, arrastre el ratón para ajustar el tamaño de línea.

Después de dibujar la línea, puede moverla, ajustar su tamaño o cambiar su grosor y color.

Dibujar rectángulos

Puede dibujar rectángulos en su diseño para organizar visualmente la información que se imprime en la página. Puede utilizarlos como bordes alrededor de los controles y bandas del informe, o también como bordes para toda la página.

Para dibujar un rectángulo

  1. En la barra de herramientas Controles de informes, haga clic en el botón Rectángulo.
  2. En el Diseñador de informes arrastre el ratón para ajustar el tamaño del rectángulo.

Dibujar rectángulos redondeados y círculos

Puede dibujar círculos o rectángulos con varios tipos de esquinas redondeadas.

Para dibujar un rectángulo o un círculo

  1. En la barra de herramientas Controles de informes, haga clic en el botón Rectángulo redondeado.
  2. En el Diseñador de informes, arrastre el ratón para ajustar el tamaño del control.
  3. Haga doble clic en el control.
  4. En el área Estilo, elija el estilo de esquina que desee.
  5. Si es apropiado, establezca las opciones de posición.
  6. Elija Aceptar.

Cambiar el estilo o el grosor de línea

Puede cambiar el grosor de las líneas usadas para trazar líneas horizontales y verticales, rectángulos y rectángulos redondeados hasta un ancho de 6 puntos. También puede cambiar el estilo de la línea, de línea de puntos a una combinación de guiones y puntos.

Para cambiar el tamaño o el estilo de la línea

  1. Seleccione el control de tipo línea, rectángulo o rectángulo redondeado que quiere cambiar.
  2. En el menú Formato, elija Borde.
  3. En el submenú, seleccione el tamaño o el estilo apropiado.

Vea también

Dar formato a controles de campo | Agregar, copiar y eliminar controles de informes | Agregar una imagen a un informe | Diseñador de informes | Cambiar el estilo o el grosor de línea | Control Line | Crear informes y etiquetas


Agregar una imagen a un informe

Puede insertar una imagen como parte de un informe. Por ejemplo, el logotipo de una compañía puede aparecer en el encabezado de página de una factura. Las imágenes procedentes de un archivo son estáticas, es decir, no cambian con cada registro o grupo de registros. Si desea cambiar la presentación dependiendo del registro, inserte un campo General en su lugar.

Para agregar una imagen

  1. En la barra de herramientas Controles de informes, haga clic en el botón Control Picture/OLE Bound.
  2. En el Diseñador de informes, arrastre para ajustar el tamaño de la imagen.
  3. En el área Origen de la imagen, elija Archivo.
  4. En el cuadro Archivo, escriba la ubicación del archivo.

    –O bien–

    Elija el botón del cuadro de diálogo para seleccionar un archivo de gráfico.

  5. Si es apropiado, ajuste el tamaño, la posición o las opciones de impresión.
  6. Elija Aceptar.

Vea también

Agregar líneas, rectángulos y círculos | Dar formato a controles de campo | Agregar, copiar y eliminar controles de informes | Definir la página del informe | Crear informes y etiquetas | Agregar un campo General | Diseñador de informes


Agregar un campo general a un informe

Puede insertar en su informe un campo General que contenga objetos OLE.

Para insertar un campo General

  1. En el Diseñador de informes, agregue un control Picture/OLE Bound.
  2. En el área Origen de la imagen, seleccione Campo.
  3. En el cuadro Campo, escriba un nombre de campo.

    –O bien–

    Elija el botón del cuadro de diálogo para seleccionar un campo o una variable.

  4. Elija Aceptar.

    El marcador de posición para el campo de tipo General aparecerá en el marco definido. De forma predeterminada, la imagen conserva su tamaño original.

Vea también

Diseñador de informes | Agregar controles de etiqueta | Crear informes y etiquetas | Agregar, copiar y eliminar controles de informes | Diseñador de informes | Utilizar expresiones y funciones en controles de campo | Integrar consultas e informes | OLE Bound (Control)


Utilizar expresiones y funciones en un control de campo de un informe

Puede incluir controles de campo en su informe o etiqueta para mostrar valores de varias expresiones, incluyendo campos de tablas y vistas, variables y cálculos. Las siguientes secciones describen algunas expresiones y funciones usadas normalmente como campos múltiples, fechas o números de página.

Agregar controles de campo

Puede agregar controles de campo de varias maneras.

Para agregar campos de tabla desde el entorno de datos

  1. Abra el entorno de datos del informe.
  2. Seleccione una tabla o una vista.
  3. Arrastre y coloque los campos sobre el diseño.

Para agregar campos de tabla desde la barra de herramientas

  1. Desde la barra de herramientas Controles de informes, inserte un control Campo.
  2. En el cuadro de diálogo Expresión de informe, elija el botón del cuadro de diálogo situado después del cuadro Expresión.
  3. En el cuadro Campos, haga doble clic en el nombre del campo deseado.

    Los nombres de la tabla y del campo aparecerán en el cuadro Expresión para campo del informe.

    Nota Si el cuadro Campos está vacío, agregue una tabla o vista al entorno de datos. No tiene que guardar el alias del nombre de tabla en la expresión. Puede eliminarlo o puede desactivar las opciones del Generador de expresiones.
  4. Elija Aceptar.
  5. En el cuadro de diálogo Expresión de informe, elija Aceptar.

Después de escribir la expresión, puede cambiar el formato o establecer opciones de impresión, posición o expansión.

Insertar controles de campo concatenados

Después de agregar los campos de tabla, se dará cuenta de que no se imprimen de la forma deseada en la página. Por ejemplo, al imprimir los controles de los campos City, Region y Postal code de forma independiente, aparecen espacios no deseados entre cada valor. Puede recortar o concatenar los campos de tabla en una expresión de campo. El espacio requerido por cada valor para este control variará. Puede establecer que el control se ajuste para cada valor.

Para combinar varios campos de tabla en una expresión

  1. Desde la barra de herramientas Controles de informes, inserte un control Campo.
    Sugerencia Ajuste el tamaño del campo a la menor cantidad de espacio requerido por la expresión. Si se necesita más espacio, puede establecer que el control se alargue para valores mayores, pero no puede reducirlo si necesita menos espacio.
  2. En el cuadro de diálogo Expresión de informe, seleccione el botón del cuadro de diálogo, que aparece junto al cuadro Expresión.
  3. En el cuadro de diálogo Generador de expresiones, seleccione ALLTRIM(expC) en el cuadro Cadena.

    La función de cadena aparece en el cuadro Expression con expC seleccionado.

  4. Haga doble clic en el nombre del primer campo que desea que aparezca en el control.

    El nombre de campo reemplaza expC.

  5. Escriba un signo más después del nombre de campo o seleccione + en el cuadro de funciones Cadena.
  6. Escriba , o seleccione Texto en la lista de funciones de Cadena y a continuación, escriba una coma.
  7. Repita los pasos 3 y 4 para agregar campos adicionales que completen la expresión y escriba Aceptar.
  8. En el cuadro de diálogo Expresión de informe, seleccione Ajustar al contenido del texto.

    Cuando el control esté lleno, el espacio asignado al control se ajusta hacia abajo para alojar el valor de la expresión. Para obtener más información acerca de Ajustar al contenido del texto, vea Imprimir controles con valores de longitud variable.

Para combinar varios campos en una expresión, coloque una función ALLTRIM( ) antes de cada nombre de campo, coloque la puntuación entre comillas y coloque un signo más entre cada elemento de la expresión. Si las longitudes de valores de campo no varían, como códigos postales o abreviaturas, puede insertar sólo el nombre de campo, como en este ejemplo:

ALLTRIM(city)+", "+region+"  "+postal_code

Observe que se utilizan espacios entre comillas, en lugar de una coma, para separar la región y el código postal.

Para ver más ejemplos, vea el informe Invoice.frx en el directorio ...\Samples\Solution\Reports de Visual FoxPro.

Recortar y concatenar expresiones de caracteres

Para recortar y concatenar rápidamente expresiones de caracteres en el Generador de expresiones, puede colocar comas entre expresiones de caracteres. El valor de la expresión que precede a la coma se recorta. También puede usar el punto y coma para colocar la expresión en una nueva línea, si el valor recortado tiene una longitud mayor que cero. El siguiente ejemplo muestra expresiones de caracteres para campos de una dirección de correo:

contact_name; address; city, region, postal_code
Nota Usarlos cuando no quiera incluir puntuación en el valor.

Si usa estos métodos, asegúrese de que el campo tiene establecido Ajustar al contenido del texto. Para obtener más información, vea Imprimir controles con valores de longitud variable.

Insertar la fecha actual

Puede insertar un control de campo que imprime la fecha actual.

Para insertar la fecha actual

  1. Desde la barra de herramientas Controles de informes, inserte un control Campo.
  2. En el cuadro de diálogo Expresión de informe, seleccione el botón del cuadro de diálogo que aparece junto al cuadro Expresión.
  3. En el Generador de expresiones, seleccione DATE( ) en la lista Fecha.
  4. Elija Aceptar.
  5. En el cuadro de diálogo Expresión de informe, elija Aceptar.

Insertar un número de página

Las bandas Encabezado de página o Pie de página contienen normalmente un número de página. Si usa un asistente o Informe rápido, se inserta un número de página en la banda Pie de página.

Para insertar un número de página

  1. Desde la barra de herramientas Controles de informes, inserte un control Campo.
  2. En el cuadro de diálogo Expresión de informe, seleccione el botón del cuadro de diálogo que aparece junto al cuadro Expresión.
  3. En el Generador de expresiones, seleccione _pageno en la lista Variables.
  4. Elija Aceptar.
  5. En el cuadro de diálogo Expresión de informe, elija Aceptar.
    Sugerencia Puede usar este procedimiento para insertar cualquiera de las variables de sistema de la lista Variables en el informe.

Vea también

Refinar el diseño de página | Definir variables de informe | Crear informes y etiquetas | SELECT - SQL | Agregar un campo General | Seleccionar, mover y cambiar el tamaño de controles de informes | Establecer opciones de impresión para un control


Seleccionar, mover y ajustar el tamaño de controles de informes

Si creó un diseño de informe que ya tiene controles, puede cambiar la colocación y el tamaño de los mismos. Puede cambiar cada control individualmente o puede seleccionar un grupo de ellos y tratarlos como una unidad.

Para mover un control

  • Seleccione el control y arrástrelo hasta la nueva posición en una banda de informe.

    El control se mueve en incrementos hasta su posición en el diseño. Los incrementos están basados en la configuración de la cuadrícula. Para reemplazar la cuadrícula, presione la tecla CTRL mientras arrastra el control.

Para seleccionar varios controles

  • Arrastre para dibujar un cuadro de selección alrededor de los controles deseados.

    Aparecerán los controladores de selección alrededor de cada control. Mientras estén seleccionados puede moverlos, copiarlos o eliminarlos como un grupo.

Puede asociar un grupo de controles para realizar varias tareas si los identifica como un grupo. Por ejemplo, puede querer asociar un control de etiqueta y un control de campo con cualquier otro de forma que pueda moverlos sin seleccionarlos por separado. Esta característica también es útil después de haber dado formato y alineado los controles, porque conserva sus posiciones con respecto a los demás.

Para agrupar controles

  1. Seleccione los controles que quiera tratar como un grupo.
  2. En el menú Formato, elija Agrupar.

    Los identificadores de selección se trasladarán a la parte exterior de todo el grupo. Puede tratar el grupo de controles como una unidad.

Para desagrupar un grupo de controles

  1. Seleccione el grupo de controles.
  2. En el menú Formato, elija Desagrupar.

    Aparecerán controladores de selección alrededor de cada uno de los controles que estaban en el grupo.

Una vez que un control está en el diseño, puede cambiar su tamaño individualmente o puede ajustar el tamaño de un grupo de controles para que coincidan entre sí. Puede ajustar el tamaño de cualquier control de informe excepto las etiquetas; su tamaño lo determinan el texto, la fuente y su tamaño en puntos.

Para cambiar el tamaño de un control

  • Seleccione el control y, a continuación, arrastre uno de los controladores de selección hasta conseguir el tamaño deseado.

Para ajustar el tamaño de varios controles

  1. Seleccione los controles que quiere que tengan el mismo tamaño.
  2. En el menú Formato, elija Tamaño.
  3. Elija la opción adecuada para el ancho, el alto o el tamaño.

    Los controles ajustan el tamaño de acuerdo con la opción seleccionada.

Alinear controles

Puede alinear controles entre sí o puede situarlos tomando como referencia la cuadrícula que proporciona el Diseñador de informes. Puede alinear los controles por un extremo o por el centro.

Para alinear controles entre sí

  1. Seleccione los controles que desee alinear.
  2. En el menú Formato, elija Alinear.
  3. En el submenú, elija la opción de alineación apropiada. Visual FoxPro utiliza como delimitador el control cuyo borde está más cercano a la dirección que eligió para alinear.

Para alinear controles manualmente

  • En el menú Formato, desactive Forzar a la cuadrícula.

También puede alinear controles mediante la herramienta Diseño. Con esta barra de herramientas puede alinear con respecto al control más alejado del lado seleccionado, manteniendo presionada la tecla CTRL mientras hace clic en el botón de alineación.

Debe alinear los controles por un lado que todos los controles seleccionados tengan disponible y alejado de los demás. Los controles que están en una fila y se seleccionan para alinearse por su lado derecho o izquierdo, se apilarán unos encima de otros. De igual modo, los controles que están en una línea vertical y seleccionados para alinearse por la parte superior o inferior, se superpondrán.

Para centrar controles dentro de una banda

  1. Seleccione los controles que desee alinear.
  2. En el menú Formato, elija Alinear.
  3. En el submenú, elija Centrar verticalmente o Centrar horizontalmente.

    Los controles se mueven hacia el centro horizontal o vertical de su respectiva banda.

Posición del control con la barra de estado o la cuadrícula

Puede colocar un control en una posición especifica de la página del informe mediante la barra de estado o la cuadrícula. De forma predeterminada, los controles se ajustan a la posición de la cuadrícula. Puede elegir desactivar la característica de ajuste, y mostrar u ocultar las líneas de cuadrícula. Las líneas de cuadrícula pueden ayudarle a colocar los controles en el diseño.

Para colocar un control en una posición específica

  1. En el menú Ver, elija Mostrar posición.
  2. Seleccione el control y mueva el control al lugar deseado usando la información sobre su posición que aparece en la barra de estado.

Para mostrar las líneas de cuadrícula

  • En el menú Ver, elija Líneas de cuadrícula.

    Aparecerá una cuadrícula en las bandas del informe.

Para cambiar la medida de la cuadrícula

  1. En el menú Formato, elija Configurar cuadrícula.
  2. En el cuadro de diálogo Configurar cuadrícula, escriba el número de píxeles para el ancho (horizontal) y el alto (vertical) de cada cuadrado de la cuadrícula.

Vea también

Agregar un campo General | Definir variables de informe | Utilizar expresiones y funciones en controles de campo | Crear informes y etiquetas | Integrar consultas e informes


Definir variables de informe

Para manipular datos y mostrar el resultado de los cálculos en un informe, puede utilizar variables de informe. Puede calcular valores con variables de informe y usarlos después para calcular valores posteriores.

Para definir una variable de informe

  1. Abra o cree un informe.
  2. En el menú Informe, elija Variables.
  3. En el cuadro de diálogo Variables del informe, seleccione el cuadro Variables y escriba un nombre para la variable.
  4. En el cuadro Almacenar valor, escriba un nombre de campo o alguna otra expresión.
  5. Si es necesario, seleccione una opción de cálculo.
  6. Si es necesario, en el cuadro Valor inicial, escriba una expresión que establezca el valor inicial.
  7. Elija Aceptar.

    Puede utilizar la variable en cualquier expresión que introduzca en el informe.

Para contar todas las entradas “Canadá” de la tabla Company, utilice esta expresión y seleccione “Count” como opción de cálculo.

IIF(country="Canada",1,0)

El siguiente ejemplo muestra tres variables para una hoja de horas sencilla:

Para almacenar este valor Cree esta variable Mediante esta expresión
Hora de llegada del empleado
tArrive

hour_in + (min_in / 60)
Hora de salida del empleado
tLeave

hour_out + (min_out / 60)
Tiempo total que el empleado estuvo presente
tDayTotal

tLeave - tArrive

Puede utilizar la variable tDayTotal en una gran variedad de cálculos, como el número de horas trabajadas en una semana, un mes o un año; el promedio de número de horas trabajadas cada día, etc.

Para ver ejemplos de variables de informe, vea los informes Percent.frx e Invoice.frx en el directorio ...\Samples\Solution\Reports de Visual FoxPro.

Reordenar variables de informe

Las variables de informe se evalúan en el orden en que aparecen en la lista y pueden afectar a los valores de las expresiones que las utilizan. Por ejemplo, si la variable 1 se utiliza para definir el valor de la variable 2, debe aparecer antes que la variable 2. En el ejemplo anterior de la hoja de horas, tArrive y tLeave deben preceder a tDayTotal.

Para cambiar el orden de las variables de informe

  1. En el menú Informe, elija Variables.
  2. En el cuadro Variable, arrastre el botón situado a la izquierda de la variable para cambiar el orden.
  3. Elija Aceptar.

Establecer el valor inicial de una variable

Si utiliza una variable en los cálculos, asegúrese de que inicializa dicha variable con un valor diferente de cero para no producir un error de división entre cero. Si no especifica un valor, Visual FoxPro asignará un valor predeterminado de 0.

Para establecer el valor inicial de una variable

  1. En el menú Informe, elija Variables.
  2. En el cuadro Variable, seleccione la variable que desea establecer.
  3. En el cuadro Valor inicial, introduzca el valor.
  4. Elija Aceptar.

Si reordena los grupos en su informe, sus variables de informe podrían no restablecerse en el campo correcto. Por ejemplo, si su informe contiene dos grupos, el primero agrupado por país y el segundo agrupado por fecha, y cambia el orden de los grupos, las variables continuarán restableciéndose de acuerdo a las posiciones originales de los grupos.

Puede cambiar el valor de un cálculo si especifica cuándo se restablece la variable. De forma predeterminada, Visual FoxPro restablece las variables de informe al final del informe.

Para restablecer una variable al final de un informe, una página o una columna

  1. En el menú Informe, elija Variables.
  2. En el cuadro Restablecer, elija una opción.
  3. Elija Aceptar.

Para restablecer una variable al entrar o salir de alguna banda

  1. En el Diseñador de informes, abra el informe.
  2. Haga doble clic en la barra de la banda del informe que desee.
  3. En el área Ejecutar expresión del cuadro de diálogo de la banda, elija uno de los botones al final del cuadro Al entrar o Al salir.
  4. Escriba una expresión para restablecer la variable cada vez que se entre o se salga de esa banda.

Vea también

Utilizar expresiones y funciones en controles de campo | Dar formato a controles de campo | Crear informes y etiquetas | SELECT - SQL | Seleccionar, mover y cambiar el tamaño de controles de informes


Dar formato a controles de campo en un informe

Después de insertar un control de campo, puede cambiar el tipo de datos y el formato de impresión del control. Los tipos de datos pueden ser Carácter, Numérico o Fecha. Cada uno de estos tipos tiene sus propias opciones de formato, incluyendo la opción de crear sus propias plantillas de formato. El formato determina cómo se muestra el campo cuando se imprime el informe o la etiqueta.

Puede escribir funciones de formato directamente en el cuadro Expresiones del cuadro de diálogo Expresión de informe o seleccionar opciones en el cuadro de diálogo Formato.

Normalmente, podría convertir todo el resultado alfabético a mayúsculas, insertar comas o puntos decimales en el resultado numérico, mostrar el resultado numérico en formato de moneda o convertir un formato de fecha a otro.

Opciones de formato para controles de informes

Para controles de campo, puede establecer varias opciones de formato para cada tipo de datos.

Para dar formato a un control de campo

  1. Elija el control Campo.
  2. En el cuadro de diálogo Expresión de informe, elija el botón del cuadro de diálogo que aparece después del cuadro Formato.
  3. En el cuadro de diálogo Formato, seleccione el tipo de datos para el campo: Carácter, Numérico o Fecha.

    El área Opciones de edición muestra las opciones de formato disponibles para ese tipo de datos.

    Nota Este tipo de datos se aplica sólo al control de informe. Refleja el tipo de datos de la expresión y no cambia el tipo de datos del campo en la tabla.
  4. Seleccione las opciones de alineación y formato que desee.

El cuadro de diálogo Formato muestra diferentes opciones dependiendo del tipo de datos elegido. También puede crear una plantilla de formato si escribe caracteres en el cuadro Formato.

Alinear texto en un campo

Puede alinear el contenido de un campo dentro del control de dos formas. Esto no cambia la posición del control en el informe, sólo el contenido del control.

Para alinear texto en un control de campo

  1. Seleccione los controles que desea cambiar.
  2. En el menú Formato, elija Alineación del texto.
  3. En el submenú, elija el comando adecuado.

Para alinear texto en un campo

  1. Elija el control Campo.
  2. En el cuadro de diálogo Expresión de informe, elija el botón del cuadro de diálogo que aparece después del cuadro Formato.
  3. En el cuadro de diálogo Formato, seleccione el tipo de datos para el campo: Carácter, Numérico o Fecha.
  4. Seleccione las opciones de alineación y formato que desee.

Definir plantillas de formato de campo

Una plantilla de formato le permite personalizar el formato del campo. Si escribe una combinación de caracteres y códigos en el cuadro Formato del cuadro de diálogo Expresión de informe o el cuadro de diálogo Formato, puede crear una amplia variedad de formatos de impresión. Los caracteres que escriba aparecerán como texto literal junto con el valor del campo. Los códigos que escriba determinan la apariencia de la salida de campos. Por ejemplo, si usa la siguiente plantilla de formato para un campo numérico de 10 dígitos, los caracteres (paréntesis, espacios y guiones) se imprimen junto con los datos numéricos.

Plantilla de formato | Resultado impreso
(999) 999-9999 | (123) 456-7890

Cambiar fuentes

Puede cambiar la fuente y el tamaño del texto para cada campo o control de etiqueta, o bien puede cambiar la fuente predeterminada para el informe.

Para cambiar las fuentes y su tamaño en un informe

  1. Seleccione el control.
  2. En el menú Formato, elija Fuente.

    Aparecerá el cuadro de diálogo Fuente.

  3. Seleccione la fuente apropiada y el tamaño en puntos y, a continuación, elija Aceptar.

Para cambiar la fuente predeterminada

  1. En el menú Informe, elija Fuente predeterminada.
  2. En el cuadro de diálogo Fuente, seleccione la fuente apropiada y el tamaño en puntos que desee como valores predeterminados y, a continuación, elija Aceptar.

    Únicamente reflejarán la nueva configuración de fuente los controles que inserte después de cambiar la fuente predeterminada. Para cambiar objetos existentes, selecciónelos todos y cambie la fuente con la opción Fuente del menú Formato.

Recortar una imagen u objeto OLE

Es posible que la imagen o el objeto OLE que haya insertado no se ajuste al marco dibujado al crear el control. De forma predeterminada, la imagen o el objeto conservan su tamaño original. Puede recortarlo o cambiar su escala para que se ajuste al marco.

Si la imagen u objeto OLE es mayor que el marco creado en el Diseñador de informes, sólo aparecerá en el marco una porción de la imagen o el objeto. La imagen o el objeto están acoplados a la parte superior izquierda del marco. No puede ver la parte inferior derecha que se extiende más allá del marco.

Para ajustar una imagen al marco

  1. En el Diseñador de informes, cree un control OLE Bound.
  2. En el cuadro de diálogo Imagen para informe, seleccione Cambiar la escala de la imagen, conservar la forma.

Aparece la imagen completa, que llenará la mayor parte del marco y conservará las posiciones relativas. Esto protege a la imagen de la distorsión vertical u horizontal.

Para rellenar el marco con la imagen

  1. En el Diseñador de informes, cree un control Picture/OLE Bound.
  2. En el cuadro de diálogo Imagen para informe, seleccione Cambiar la escala de la imagen, rellenar el marco.

La imagen cambia para llenar el marco que ha cambiado de tamaño. Si es necesario, la imagen se alargará verticalmente u horizontalmente para ajustarse al marco.

Para ver un ejemplo de un informe con imágenes, vea el informe Wrapping.frx del directorio ...\Samples\Solution de Visual FoxPro.

Centrar un objeto OLE

Los objetos OLE incluidos en un campo General pueden variar en forma y tamaño. Si el objeto de un campo General es más pequeño que el marco, aparece en la esquina superior izquierda del marco. Puede centrarlo para asegurar que todos los objetos más pequeños que el marco estén centrados en el marco del informe o de la etiqueta. Las imágenes de archivo no están centradas porque no varían.

Para centrar objetos OLE de campo General

  1. En el Diseñador de informes, cree un control OLE Bound.
  2. En el cuadro de diálogo Imagen para informe, seleccione Centrar imagen.

Los objetos OLE impresos se centran en el área en una vista previa del informe o al imprimirlo.

Cambiar colores de controles de informes

Puede cambiar el color de un campo, etiqueta, línea o rectángulo.

Para cambiar colores

  1. Seleccione los controles cuyo color desea cambiar.
  2. En la barra de herramientas Paleta de colores, elija Color de primer plano o Color de fondo.
  3. Elija el color que desee.

Vea también

Definir variables de informe | Establecer opciones de impresión para controles | Crear informes y etiquetas | SELECT - SQL


Establecer opciones de impresión para controles

El diseño general y la posición de bandas de los controles determinan el momento y el lugar en que se imprimen. También puede establecer opciones de impresión específicas para cada control. Cada control puede tener un tamaño predeterminado en base a su valor (campos y tablas) o el tamaño creado (líneas, rectángulos e imágenes). La longitud del control en el diseño define el ancho de presentación del control. Como el valor de algunos controles varía de un registro a otro, puede establecer el alto del control para que se alargue hacia abajo y se muestre así el valor completo. Si no establece que se alargue, el valor se truncará en el ancho de presentación. No puede cambiar el tamaño de los controles Label, pero sí el de los demás controles.

Imprimir controles con valores de longitud variable

Si quiere que un control sólo use el espacio necesario, puede establecer que se alargue. Por ejemplo, los valores de una expresión pueden variar de registro a registro. En lugar de asignar una cantidad fija de espacio en el informe que aloje el valor más largo, puede establecer que el control se alargue hacia abajo para mostrar todo el valor. Puede establecer que los controles que se encuentren debajo del control que se alarga floten hacia abajo en la página, guardando su relación con el control que se alarga.

Ejemplos de controles que se alargan y flotan

La opción de alargar está disponible para campos, líneas verticales, rectángulos y rectángulos redondeados.

Para ver un ejemplo de controles que se alargan y flotan, vea el informe Wrapping.frx en el directorio ...\Samples\Solution\Reports de Visual FoxPro.

Para establecer que un campo se alargue con su valor

  1. Haga doble clic en el control de campo para mostrar su cuadro de diálogo.
  2. Seleccione Ajustar al contenido del texto.

Hay que establecer que los controles cuya posición está relacionada con otro control que se alarga floten; en caso contrario, se sobrescribirán.

Para establecer que un control flote

  1. Haga doble clic en el control para mostrar su cuadro de diálogo.
  2. En el cuadro de diálogo del control, seleccione Flotante.
    Precaución Algunos de los datos podrían sobrescribirse durante la impresión si: (1) coloca un campo relacionado con la parte inferior de la banda e incluye, por debajo de este campo, otro campo relacionado con en la parte superior de la banda y que se puede alargar; o (2) coloca un campo relacionado con la parte superior de la banda e incluye, por encima de este campo, otro campo relacionado con la parte inferior de la banda y que se puede alargar.

También puede establecer que se alarguen líneas, rectángulos y rectángulos redondeados. Se pueden alargar con respecto a la banda o, si forman parte de un grupo de controles, se pueden alargar con respecto al control más grande del grupo.

Para establecer que se alargue una línea o un rectángulo

  1. Haga doble clic en el control para mostrar su cuadro de diálogo.
  2. En el área Alargar hacia abajo, seleccione una opción.

Para imprimir un borde en torno a un control que se puede alargar

  1. Dibuje un rectángulo alrededor de los controles que se pueden alargar.
  2. Haga doble clic en el rectángulo para mostrar el cuadro de diálogo Rectángulo/Línea.
  3. En el área Alargar hacia abajo, seleccione Alargar con relación al objeto más alto del grupo.
  4. Elija Aceptar.
  5. Arrastre un cuadro de selección en torno al rectángulo.
  6. En el menú Formato, elija Agrupar.

    Los controladores de selección aparecen en las esquinas del rectángulo. A partir de este momento, puede tratar todos los controles como uno solo. El rectángulo se alargará con el campo de tamaño ajustable. Independientemente de cuánto se alargue el valor del campo, el rectángulo mantendrá su borde alrededor del campo. Puede colocar dos de estos grupos uno al lado del otro en el diseño y el uno no se verá afectado por el alargamiento del otro.

Para imprimir un control de tamaño ajustable por debajo de otro

  1. Inserte los dos controles en el diseño, uno debajo del otro.
  2. Haga doble clic en la parte superior del control para mostrar el cuadro de diálogo del control.
  3. En el área Posición del campo, seleccione Borde superior de la banda y, a continuación, elija Aceptar.
  4. Haga doble clic en la parte inferior del control para mostrar el cuadro de diálogo del control.
  5. En el área Posición del campo, seleccione Flotante y, a continuación, elija Aceptar.

Los dos valores de registro se imprimirán completamente y no se sobrescribirán.

Vea también

Dar formato a controles de campo | Establecer opciones de impresión para un control | Crear informes y etiquetas | SELECT - SQL


Establecer opciones de impresión para cada control

Puede controlar cuándo y cómo se imprime cada control de informe en el informe. Para obtener más información acerca de las opciones de impresión, vea Cuadro de diálogo Imprimir-Condiciones.

Suprimir valores repetidos

Para controles de campo, puede suprimir los valores repetidos para registros consecutivos de forma que el valor se imprima una vez para el primer registro pero no aparezca en los siguientes registros hasta que cambie. Por ejemplo, si va a imprimir una factura y uno de los campos contiene la fecha de la operación, la fecha sólo se imprime una vez para todas las operaciones que tuvieron lugar en esa fecha.

Para suprimir valores repetidos

  1. Haga doble clic en el control para mostrar el cuadro de diálogo del control.
  2. Elija Imprimir-Condiciones para mostrar el cuadro de diálogo Imprimir-Condiciones.
  3. En el área Imprimir valores repetidos, seleccione No y a continuación, elija Aceptar.

Para repetir en sólo una nueva página o columna

  1. Haga doble clic en el control.
  2. Elija Imprimir-Condiciones.
  3. En el área Imprimir valores repetidos, seleccione No.
  4. En el área Imprimir también, seleccione En primera banda completa de nueva página o columna y a continuación, elija Aceptar.

Para repetir cuando una banda de detalle pasa a una nueva página o columna

  1. Haga doble clic en el control.
  2. Elija Imprimir-Condiciones.
  3. En el área También imprimir, seleccione Cuando detalle pase a nueva página o columna y a continuación, elija Aceptar.

Generar expresiones de impresión

Puede agregar expresiones a un control: se evalúan antes de imprimir el campo. Si la expresión se evalúa como falso (.F.), el campo no se imprimirá. Si agrega una expresión, se deshabilitarán todas las demás opciones del cuadro de diálogo Imprimir-Condiciones, excepto Quitar líneas en blanco.

Para ver ejemplos de condiciones de Imprimir-Condiciones, vea los informes Colors.frx y Ledger.frx de la carpeta ...\Samples\Solution\Reports de Visual FoxPro.

Para agregar una expresión de impresión

  1. Haga doble clic en el control.
  2. Elija Imprimir-Condiciones.
  3. En el cuadro Imprimir sólo cuando la expresión sea verdadera, escriba una expresión.

    –O bien–

    Haga clic en el botón del cuadro de diálogo para crear una expresión con el Generador de expresiones.

Suprimir líneas en blanco

El informe puede contener registros que no contengan valores para cada control de campo. De forma predeterminada, Visual FoxPro deja en blanco el área para ese campo. Puede quitar estas áreas en blanco para crear una presentación de la información más agradable y continua.

Para suprimir líneas en blanco

  1. Haga doble clic en el control que produce las líneas en blanco en el informe.
  2. Elija Imprimir-Condiciones.
  3. Seleccione Quitar líneas en blanco.

Visual FoxPro quitará la línea del informe si da como resultado una línea en blanco. Si el campo no se imprime o si el campo de tabla está vacío, Visual FoxPro comprueba si hay otros controles en la línea. Si no se encuentra ninguno, se quita la línea. Si no selecciona esta opción y no hay otros controles en la misma línea, se imprime una línea en blanco.

Vea también

Establecer opciones de impresión para controles | Establecer opciones de impresión para grupos | Crear informes y etiquetas | SELECT - SQL


Establecer opciones de impresión para grupos

Puede controlar cómo se imprimen grupos en el informe. A veces querrá que cada grupo empiece en una página distinta, o controlar cuándo se imprime el encabezado de grupo.

Establecer saltos de página de grupos

Además de seleccionar el campo o expresión que hay que agrupar, el cuadro de diálogo Agrupar datos le permite especificar opciones de salto de página para grupos.

Elegir una opción de encabezado de grupo

Puede que quiera que los grupos aparezcan en la siguiente columna para informes con varias columnas, en una nueva página para formularios o con una nueva página numerada como 1. El cuadro de diálogo Agrupar datos ofrece cuatro opciones para llevar a cabo estas tareas. Puede:

  • Iniciar un grupo en una nueva columna.
  • Iniciar cada grupo en una nueva página.
  • Restablecer el número de página a 1 para cada grupo.
  • Volver a imprimir el encabezado de grupo en cada página.

Después de escribir una expresión, puede seleccionar estas opciones en el área Propiedades de grupo.

Evitar encabezados de grupo huérfanos

A veces un grupo puede imprimirse parcialmente en una página y terminar en la siguiente. Para evitar que un encabezado de grupo se imprima cerca del final de la página con la mayor parte de los registros en la página siguiente, puede establecer la distancia mínima de la parte inferior a la que se va a imprimir un encabezado de grupo. Si el encabezado se coloca más cerca de la parte inferior de la página que el número de pulgadas o centímetros que haya escrito, Visual FoxPro imprime el encabezado en una nueva página.

Para evitar encabezados de grupo huérfanos

  1. En el menú Informe, elija Agrupar datos.
  2. En el cuadro de diálogo Agrupar datos, elija o escriba un valor en el cuadro Comenzar grupo en una nueva página.
    Sugerencia Para determinar un valor para un control huérfano, agregue un alto para el Encabezado de grupo que sea de una a tres veces al alto de Detalles.

Imprimir valores suprimidos cuando el grupo cambia

Aunque suprima los valores repetidos, puede imprimirlos cuando cambie un grupo concreto.

Para imprimir valores repetidos cuando el grupo cambia

  1. Haga doble clic en el control para mostrar el cuadro de diálogo del control.
  2. Elija el botón Imprimir-Condiciones para ver el cuadro de diálogo Imprimir-Condiciones.
  3. Seleccione Cuando cambie este grupo.

    Los grupos definidos para el informe aparecen en el cuadro.

  4. Seleccione un grupo del cuadro y, a continuación, elija Aceptar.

Repetir encabezados de grupo

Cuando un grupo continúa en la página siguiente, es posible que quiera que el encabezado de grupo se repita en la parte superior del grupo para ver información continuada. Si tiene varios grupos de datos en el informe, el encabezado de las páginas subsiguientes será el del último grupo de la lista de grupos. Coloque todos los controles que desee imprimir para el encabezado de grupo en la banda de encabezado del último grupo de la lista.

Para repetir el encabezado de grupo en la página siguiente

  • En el cuadro de diálogo Agrupar datos, seleccione el grupo que desea repetir y, a continuación, elija Volver a imprimir el encabezado de grupo en cada página.

    Si no desea repetir el encabezado de grupo, desactive esta casilla de verificación.

Vea también

Establecer opciones de impresión para un control | Controlar el resultado de informes y etiquetas | Crear informes y etiquetas | SELECT - SQL


Controlar el resultado de informes y etiquetas

Puede controlar dónde se envía el resultado de un informe o una etiqueta si utiliza alguna de las siguientes palabras clave con el comando REPORT o LABEL:

  • PRINT
  • PREVIEW
  • FILE

Si no utiliza una de estas palabra clave, el informe se enviará a la pantalla o a la ventana activa.

Seleccionar registros para imprimir

Cuando imprima un informe, es posible que desee limitar el número de registros que aparecen en el informe mediante criterios de selección. Puede:

  • Elegir el alcance de registros si especifica una cantidad o intervalo.
  • Generar una expresión FOR que seleccione registros que cumplan una condición.
  • Generar una expresión WHILE que seleccione registros hasta que se encuentre uno que no cumpla una condición.

Puede usar cualquier combinación de estas opciones. La expresión WHILE pasa por alto los otros criterios.

Imprimir una cantidad o un intervalo de registros

Puede limitar el número de registros si especifica una cantidad o un intervalo de registros. Con la opción Alcance, puede seleccionar un único registro o un grupo de registros colocados secuencial en el archivo.

Nota El índice activo y el puntero de registro activo afectan a los resultados de las opciones de alcance Siguiente y Resto. Por ejemplo, el siguiente registro de una tabla indexada por apellido es probablemente diferente que el de una tabla indexada por estado. Esto no afecta a la opción Registro porque el número de un registro no cambia cuando se indexa la tabla.

Para seleccionar un número limitado de registros

  1. En el menú Archivo, elija Imprimir.
  2. En el cuadro de diálogo Imprimir, elija Opciones.
  3. En el cuadro de diálogo Opciones de impresión, elija Opciones.
  4. En el cuadro de diálogo Opciones de impresión de informes y etiquetas, elija Alcance.
  5. Seleccione la opción de alcance apropiada.
    Para imprimir | Elija esta opción de alcance
    Todos los registros del archivo de origen | ALL
    Un intervalo de registros que empieza por 1 | NEXT
    Un registro específico por número | RECORD
    El registro actual y todos los siguientes hasta el final del archivo | REST

    Visual FoxPro imprime el informe con datos de los registros que tengan el alcance que haya seleccionado.

Imprimir registros que cumplen una condición

Si los registros que desea seleccionar no están ordenados secuencial en la tabla, puede generar una expresión lógica que especifique criterios de selección que debe cumplir un registro para que se imprima. Por ejemplo, puede elegir imprimir todos los registros con un valor concreto en un campo.

Para introducir criterios para seleccionar registros

  1. En el menú Archivo, elija Imprimir.
  2. En el cuadro de diálogo Imprimir, elija Opciones.
  3. En el cuadro de diálogo Opciones de impresión, elija Opciones.
  4. En el cuadro de diálogo Opciones de impresión de informes y etiquetas, elija Alcance.
  5. En el cuadro FOR, escriba una expresión FOR.

    –O bien–

    Asegúrese de que los orígenes de registros usados por el informe están abiertos y, a continuación, haga clic en el botón FOR para usar el Generador de expresiones.

    Nota No tiene que incluir el comando FOR en la expresión. Por ejemplo, escriba country = “Canada” para ver únicamente los datos canadienses.

    Visual FoxPro evalúa todos los registros e imprime el informe con los registros que cumplen la condición de la expresión.

Controlar la selección de registros para imprimir

Al imprimir, puede especificar una condición que se tiene que cumplir para seguir la evaluación y selección de registros. Esta condición se escribe en una expresión WHILE. Mientras la expresión WHILE sea verdadera, Visual FoxPro procesa el origen de datos. Después de buscar un registro que no cumpla la condición, Visual FoxPro termina el proceso de evaluación e imprime los registros seleccionados. Esta opción le permite seleccionar registros en base a información externa a los valores contenidos en los campos.

Sugerencia Si usa una expresión WHILE en un archivo que no se ha indexado, el proceso de selección puede terminar antes de evaluar todos los registros apropiados. Antes de imprimir el informe, asegúrese de que la tabla de origen tiene el índice activo apropiado para la expresión WHILE que desea usar.

Para escribir criterios para terminar la selección de registros

  1. En el menú Archivo, elija Imprimir.
  2. En el cuadro de diálogo Imprimir, elija Opciones.
  3. En el cuadro de diálogo Opciones de impresión, elija Opciones.
  4. En el cuadro de diálogo Opciones de impresión de informes y etiquetas, elija Alcance.
  5. En el cuadro de diálogo WHILE, escriba una expresión WHILE.

    –O bien–

    Haga clic en el botón WHILE para usar el Generador de expresiones.

    Nota No tiene que incluir el comando WHILE en la instrucción. Por ejemplo, escriba sales > 1000 para ver sólo las ventas superiores a 1000 euros.

    Visual FoxPro imprime el informe con los registros que evalúa mientras la expresión sea verdadera.

Imprimir informes y etiquetas

Si desea enviar el informe a la impresora, puede enviarlo directamente o mostrar el cuadro de diálogo Configurar impresora.

Para enviar un informe a la impresora

  1. En el menú Archivo, elija Imprimir.
  2. Elija Aceptar.
    Nota Si el entorno de datos no está establecido, el cuadro de diálogo Abrir aparecerá con una lista de tablas entre las cuales puede elegir.

    Visual FoxPro enviará el informe a la impresora.

    –O bien–

  • Utilice la cláusula TO PRINTER del comando REPORT o LABEL.

Por ejemplo, el código siguiente envía el informe MyReport a la impresora predeterminada y hace que no se muestre en la pantalla:

REPORT FORM MYREPORT.FRX TO PRINTER NOCONSOLE

Para mostrar el cuadro de diálogo Configurar impresora antes de imprimir el informe

  • Utilice la cláusula TO PRINTER PROMPT del comando REPORT o LABEL.

Por ejemplo, el código siguiente muestra el cuadro de diálogo Configurar impresora, luego envía el informe MyReport a la impresora predeterminada y detiene la impresión del informe en la ventana activa:

REPORT FORM MYREPORT.FRX TO PRINTER PROMPT NOCONSOLE

Vista preliminar de informes y etiquetas

Si desea mostrar una vista preliminar del informe, puede enviarlo a la ventana Vista preliminar en el Diseñador de informes. La ventana Vista preliminar tiene su propia barra de herramientas, con botones que pueden llevarle de una página a otra del informe.

Precaución Si aparece la pregunta “¿Desea guardar los cambios en su archivo?”, es que ha seleccionado no sólo cerrar la ventana Vista preliminar, sino también el archivo de diseño. Puede seleccionar el botón Cancelar para regresar a la vista preliminar o el botón Guardar para guardar sus cambios y cerrar el archivo. Si selecciona No, no se guardarán los cambios realizados en el diseño.

Para ver una vista preliminar de un informe

  1. En el menú Ver, elija Vista preliminar.
  2. En la Vista preliminar, elija Página anterior o Página siguiente para cambiar de página.
  3. Para cambiar el tamaño de la imagen del informe, elija Zoom.
  4. Para imprimir el informe, elija Imprimir.
  5. Para volver al modo de diseño, elija Cerrar vista preliminar.

    –O bien–

  • Utilice la cláusula PREVIEW del comando REPORT.

Por ejemplo, el código siguiente muestra el informe en una ventana modal:

REPORT FORM MYREPORT.FRX PREVIEW

De forma predeterminada, la ventana Vista preliminar es modal, pero permite tener acceso a la barra de herramientas. Si desea que la vista preliminar sea una vista no modal, puede agregar la palabra clave NOWAIT al comando REPORT.

Por ejemplo, el código siguiente muestra el informe en una ventana no modal:

REPORT FORM MYREPORT.FRX PREVIEW NOWAIT

Si desea ver los resultados en una ventana específica, puede incluir la cláusula WINDOW para especificar una ventana creada con DEFINE WINDOW.

REPORT FORM MYREPORT.FRX PREVIEW WINDOW MYWINDOW

Imprimir informes en un archivo

Si desea crear una versión electrónica del informe, puede enviarlo a un archivo con formato para su impresora o a un archivo ASCII. Si envía informes a archivos, puede imprimirlos más tarde por lotes.

Si desea crear un archivo ASCII, puede crear un archivo que incluya sólo el texto, guiones y signos más para representar líneas y formas. Los colores y las fuentes elegidas no están incluidos. También puede especificar el número de caracteres por línea y el número de líneas por página.

Para imprimir un informe en un archivo ASCII

  • Use las palabras clave FILE y ASCII del comando REPORT.

El ejemplo siguiente define las variables de la página ASCII; a continuación, imprime un informe denominado Myreport.frx en un archivo ASCII con el nombre Myfile.txt.

Imprimir en un archivo ASCII
Código Comentarios
_asciirows = nLines
 Define el número de líneas por página.
_asciicols = nChars
 Define el número de caracteres por línea.
REPORT FORM MYREPORT.FRX
TO FILE MYFILE.TXT ASCII
 Ejecuta el informe.

Vea también

Establecer opciones de impresión para grupos | Guardar un informe como HTML | Crear informes y etiquetas | SELECT - SQL


Guardar un informe como HTML

Puede usar la opción Guardar como HTML del menú Archivo cuando cree o modifique un informe para guardar el contenido de un formulario o un informe como un archivo HTML (Lenguaje de marcado de hipertexto).

Para guardar un informe como HTML

  1. Abra el informe.
  2. Elija Guardar como HTML en el menú Archivo. Esta opción sólo está disponible cuando se ha guardado el informe en disco. (Se le pedirá que guarde el informe si lo ha modificado).
  3. Escriba el nombre del archivo HTML que desea crear y elija Guardar.

Vea también

Controlar el resultado de informes y etiquetas | Integrar consultas e informes | Crear informes y etiquetas | SELECT - SQL


Integrar consultas e informes

Cuando haya creado los componentes de su aplicación, puede integrarlos. Esta ilustración muestra algunas formas en las que puede agregar consultas e informes a su aplicación.

Algunas formas de integrar consultas e informes

Puede agregar código que ejecute una consulta o un informe a los siguientes objetos de su aplicación.

  • Un botón de un formulario. Para obtener más información acerca de los formularios y los botones, vea Crear formularios.
  • Un elemento de un menú o un botón de una barra de herramientas. Para obtener más información, vea Diseñar menús y barras de herramientas.

Para agregar una consulta, vista o programa

  • Agregue un comando DO o USE al código subyacente de un botón de comando de un formulario, un botón de una barra de herramientas o un elemento de menú.

    Por ejemplo, agregue código similar al de las siguientes líneas:

    DO MYQUERY.QPR
DO MYPROGRAM.PRG
USE myview

Dispone de varias opciones para integrar informes en su aplicación.

  • Si desea que el usuario simplemente inicie el informe y lo reciba impreso, puede hacer que el usuario inicie el informe agregando el comando REPORT a un control de un formulario, un comando en un menú o un botón de una barra de herramientas.
  • Si desea permitir al usuario escribir algunas variables utilizadas en el informe, puede recopilar los valores del usuario, de la misma manera que hizo antes para las consultas. Por ejemplo, un usuario podría introducir un intervalo de fechas que incluirá el informe.
  • Si desea que el usuario cree informes personalizados, puede ofrecerle la posibilidad de crear nuevos informes o modificar los ya existentes con el Diseñador de informes.

Para ejecutar informes y etiquetas

  • Utilice los comandos REPORT o LABEL.

    Por ejemplo, podría utilizar código como el de las siguientes líneas:

    REPORT FORM MYREPORT.FRX
LABEL FORM MYLABEL.LBX

Para modificar informes y etiquetas

  • Utilice los comandos MODIFY REPORT o MODIFY LABEL.

    Por ejemplo, agregue código similar al de las siguientes líneas:

    MODIFY REPORT MYREPORT.FRX
MODIFY LABEL MYLABEL.LBX

Para crear informes y etiquetas

  • Utilice los comandos CREATE REPORT o CREATE LABEL.

    Por ejemplo, podría utilizar código como el de las siguientes líneas:

    CREATE REPORT MYREPORT.FRX
CREATE LABEL MYLABEL.LBX

Vea también

Guardar un informe como HTML | DO (Comando) | USE (Comando) | Crear informes y etiquetas | SELECT - SQL | Agregar un campo General | Seleccionar, mover y cambiar el tamaño de controles de informes | Agrupar entradas de usuario con consultas


Generar etiquetas e informes

Utilice el Generador de aplicaciones para generar formularios e informes sin tener que escribir código.

Para generar formularios o informes.

  1. En la ficha Datos, utilice el botón Asistente para bases de datos, el botón Asistente para tablas o el botón Seleccionar para localizar y escoger un origen de datos.

    Cuando selecciona el botón Asistente para bases de datos o el botón Asistente para tablas, Visual FoxPro abre el asistente seleccionado. Después que haya utilizado el asistente regresará a la ficha Datos del Generador de aplicaciones.

    Cuando especifica el origen de datos, el grid muestra el nombre de la tabla y los controles seleccionados de formularios e informes. El asistente selecciona automáticamente los formularios y los estilos de presentación para todos los formularios e informes. Si acepta los estilos predefinidos, entonces vaya al paso 4 sino al paso 2.

  2. Si sólo quiere cambiar el estilo del formulario, desactive la casilla de verificación Formulario. Si solo quiere cambiar el estilo del informe, desactive la casilla de verificación Informe. Si quiere cambiar ambos déjelos seleccionados.
  3. Especifique el estilo para los control en Estilo.
  4. Haga Clic en el botón Generar para crear los formularios o informes especificados.
    Nota Ya que los datos en la cuadrícula se borran después de que genera formularios o informes, para escoger informes y formularios con diferentes estilos, debe hacerlo en sesiones "generar" separadas.

Vea también:

Ficha Datos, Generador de aplicaciones | Crear informes y etiquetas | Trabajar con datos

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


Crear Ayudas

Para agregar un toque profesional a su aplicación, puede incluir un archivo de ayuda gráfica en formato HTML Help o WinHelp.

En esta sección

Ayuda HTML
HTML Help se crea con Microsoft HTML Help Workshop, que se incluye en Microsoft Visual FoxPro. HTML Help Workshop proporciona un completo sistema de creación de HTML Help e incluye una compatibilidad con versiones anteriores que le permite crear fácilmente archivos de HTML Help a partir de proyectos Winhelp existentes.
WinHelp 4.0
WinHelp 4.0 incorpora la ventana Buscador de ayuda, que es un único cuadro de diálogo que proporciona acceso al contenido, al índice y a la búsqueda de texto.

Secciones relacionadas

Programar funciones de Ayuda HTML
Describe cómo puede programar su aplicación para que los usuarios puedan acceder a su sistema HTML Help agregando botones Ayuda configurando la ayuda interactiva.


Ayuda HTML

HTML Help proporciona muchas de las características de Winhelp y agrega las siguientes:

  • Compatibilidad con HTML.
  • Compatibilidad con Microsoft ActiveX y secuencias de comandos.
  • Compatibilidad para los formatos de imagen de HTML (.jpg, .gif, .png).
  • Capacidad para ir desde un tema de Ayuda a un sitio de Internet.
  • Capacidad para ver el código HTML de un tema de Ayuda.

HTML Help se crea con Microsoft HTML Help Workshop, que se incluye en Microsoft Visual FoxPro. HTML Help Workshop proporciona un completo sistema de creación de ayudas en formato HTML (HTML Help) e incluye una compatibilidad con versiones anteriores que le permite crear fácilmente archivos de ayuda de HTML a partir de proyectos Winhelp existentes. Para crear archivos de HTML Help en su aplicación, consulte la Ayuda en pantalla de HTML Help Workshop.

Se incluye un proyecto de HTML Help de muestra, como parte del ejemplo Solutions, en el archivo Solnhlp.zip, ubicado en el directorio Tools\XSource de HOME(0). Incluye los siguientes archivos:

Archivo | Descripción
Solution.chm | Archivo de Ayuda compilado.
Solution.hhp | Archivo de proyecto: archivo de texto que reúne todos los elementos de un proyecto de ayuda y contiene información acerca de como va a aparecer un archivo de ayuda compilado.
Solution.hhk | Archivo de índice: contiene las entradas del índice (palabras clave).
Solution.hhc | Archivo de Tabla de contenido.
Solution.ali | Archivo de alias para la compatibilidad con la ayuda interactiva. Asigna Id. de producto a temas de ayuda.
Solution.hh | Archivo de encabezados para la compatibilidad con la ayuda interactiva. Incluye los Id. de producto.
Solution.chi | Archivo de índice utilizado cuando se suministran archivos .chm que van a permanecer en un CD-ROM, como en el caso de la biblioteca MSDN. El archivo .chi permite la instalación local de cierta información de exploración en el disco duro que permite tener acceso de forma rápida, mientras que el contenido principal reside en el CD-ROM. Los archivos .chi no se usan en entornos sin CD-ROM. Cuando no se utilizan archivos .chi, toda la información que podría almacenar permanece en el propio archivo .chm.
MSDN_ie3.css | Hoja con el estilo de cascada.
MSDN_ie4.css | Hoja con el estilo de cascada.
NombreArchivo.htm | Archivos de contenido de origen.
NombreArchivo.gif | Archivos gráficos de origen.

Diseñar la obtención de acceso a HTML Help en pantalla

Además de crear un archivo de HTML Help que contenga información útil, tiene que proporcionar un medio para que los usuarios de su aplicación tengan acceso a dicha ayuda. Hay tres maneras de proporcionar ayuda:

  • Un menú Ayuda: menú que aparece en la barra de menús principal de su aplicación.
  • Ayuda interactiva: ayuda que aparece cuando el usuario presiona F1, u otra tecla especificada, mientras está seleccionado un objeto, control u opción de menú determinados.
  • "¿Qué es esto?" (Ayuda que aparece cuando el usuario pide Ayuda sobre un objeto o control determinado).

La implementación de la HTML Help es similar a la de WinHelp. Las siguientes secciones describen cómo puede implementar HTML Help en la aplicación.

Diseñar el menú Ayuda

El menú Ayuda suele contener comandos que proporcionan acceso a los temas de su sistema de ayuda. Se recomienda que sólo un comando del menú Ayuda abra su sistema de HTML Help. Además de dicho comando, puede incluir otros comandos en el menú Ayuda para proporcionar información del sistema o la información de Copyright y la versión de su aplicación.

Vea también

Crear ayuda gráfica | Agregar interactividad a la Ayuda HTML | Implementar la ayuda "¿Qué es esto?" de Ayuda HTML | Programar funciones de Ayuda HTML | WinHelp 4.0


Agregar interactividad a HTML Help

La ayuda interactiva permite que los usuarios tengan acceso fácil a los temas de ayuda relacionados con lo que estén haciendo o viendo en su aplicación en cualquier momento. Por ejemplo, si un usuario está viendo un formulario de introducción de datos, la ayuda interactiva podría proporcionar un tema relacionado específicamente con dicho formulario.

El usuario decide el nivel de detalle de la implementación de la ayuda interactiva en su aplicación. Por ejemplo, puede asociar un tema de ayuda interactiva con un formulario o puede asociar temas de ayuda más detallados para cada uno de los controles y campos del formulario.

Se suele llegar a la ayuda interactiva al presionar F1, pero puede especificar que se active mediante cualquier tecla con ON KEY LABEL.

Usar la ayuda interactiva en un formulario

Para implementar la ayuda interactiva, tiene que especificar un archivo de ayuda de su aplicación y después asociar temas de ayuda determinados con diferentes objetos de su aplicación.

Para agregar la ayuda interactiva

  1. Especifique un archivo de ayuda de su aplicación.
  2. Asigne un tema de ayuda a cada objeto para el que vaya a proporcionar ayuda interactiva.

Especificar el archivo de ayuda

El archivo de ayuda al que se tiene acceso en su aplicación se determina al incluir el comando SET HELP TO Archivo en el código, siendo Archivo el nombre del archivo de ayuda. Por ejemplo, si el archivo de ayuda es Myhelp.chm, puede utilizar el siguiente comando:

SET HELP TO MYHELP.CHM

Este comando suele estar incluido en el código de instalación del programa principal de su aplicación.

Asignar temas de ayuda

Puede asignar un tema de ayuda a objetos específicos de su aplicación de Visual FoxPro.

Para asignar un tema de ayuda a un objeto

  1. En modo Diseño, abra el objeto (por ejemplo, un formulario, un control o una barra de herramientas) al que vaya a asignar ayuda interactiva.
  2. Vea las propiedades del objeto.
  3. Establezca como valor de la propiedad HelpContextID el número correspondiente al tema asociado de su archivo de HTML Help.

Para obtener más información acerca de la asignación de temas de HTML Help a números de Id. de contexto, vea la ayuda en línea de HTML Help Workshop.

Nota Para asignar temas de ayuda a títulos de menú o a comandos de menú, tiene que incluir el comando SET TOPIC TO en el procedimiento asociado con el título de menú o el comando de menú.

Vea también

Ayuda HTML | Implementar la ayuda "¿Qué es esto?" de Ayuda HTML | Crear ayuda | Programar funciones de Ayuda HTML


Implementar la ayuda "¿Qué es esto?" de HTML Help

"¿Qué es esto?" Esta ayuda es similar a la Ayuda interactiva puesto que proporciona Ayuda relacionada con el objeto o control específico que actualmente está resaltado.

Para WinHelp, en lugar de llamar al archivo de Ayuda y mostrar los temas en la ventana de Ayuda de tamaño predeterminado, la ayuda "¿Qué es esto?" muestra el tema en una pequeña ventana emergente que desaparece en cuanto el usuario hace clic en alguna otra parte de la pantalla. "¿Qué es esto?" es útil para proporcionar breves descripciones o definiciones de tipo sugerencia sobre controles específicos.

A diferencia de WinHelp, la ayuda HTML "¿Qué es esto?" se muestra en la ventana de Ayuda de tamaño predeterminado.

Es posible asociar la ayuda "¿Qué es esto?" con un formulario, control de formulario o barra de herramientas particular estableciendo el valor de su propiedad WhatsThisHelpID al el número correspondiente al tema específico del archivo de ayuda.

Para implementar la ayuda "¿Qué es esto?", utilice las siguientes propiedades y métodos: Ayuda:

Propiedad | Descripción
WhatsThisHelp | Establezca esta propiedad en verdadero (.T.) en un formulario para activar "¿Qué es esto?" en el formulario y sus controles.
WhatsThisButton | Establezca esta propiedad en verdadero (.T.) para activar "¿Qué es esto?" en la barra de título del formulario.
WhatsThisHelpID | En un formulario, control o barra de herramientas, establezca esta propiedad en el número de Id. correspondiente a un tema del archivo de HTML Help.
WhatsThisMode | Utilice este método para mostrar el puntero de interrogación del ratón de “¿Qué es esto?” y activar el modo de ayuda "¿Qué es esto?" . Al hacer clic en un objeto aparece el tema de ayuda "¿Qué es esto?" especificado por la propiedad WhatsThisHelpID del objeto.

Para implementar la Ayuda "¿Qué es esto?”

  1. En modo Diseño, abra el formulario en el que vaya a activar la Ayuda "¿Qué es esto?" .
  2. Establezca la propiedad WhatsThisHelp del formulario en verdadero (.T.).
  3. para mostrar un botón de ayuda "¿Qué es esto?" en la barra de título del formulario, establezca la propiedad WhatsThisButton del formulario en verdadero (.T.).
  4. Para asociar un tema de ayuda "¿Qué es esto?" con el formulario, establezca la propiedad WhatsThisHelpID del formulario en un número de Id. que corresponda a un tema del archivo de ayuda HTML.
  5. Para asociar un tema de ayuda "¿Qué es esto?" con un control determinado del formulario, seleccione el control y establezca su propiedad WhatsThisHelpID en un número de Id. que corresponda a un tema del archivo de ayuda HTML.

Vea también

Agregar interactividad a la Ayuda HTML | Programar funciones de Ayuda HTML | Crear ayuda | Ayuda HTML


Programar funciones de HTML Help

Puede programar su aplicación para que los usuarios tengan acceso a su sistema de HTML Help. Aunque un sistema de HTML Help puede consistir en uno o varios archivos separados, la ayuda aparece ante los usuarios como parte integrante de su aplicación.

Puede programar sus aplicación Visual FoxPro para usar ayuda gráfica con los comandos SET HELP TO y SET TOPIC TO. SET HELP TO especifica el nombre de un archivo de Ayuda personalizado para su aplicación. SET TOPIC TO establece la clave para un tema en el archivo de ayuda personalizado.

Reservar F1

Cuando un usuario presiona F1 dentro de su aplicación, Visual FoxPro puede mostrar un tema de ayuda interactiva. Para ello, asigne un Id. de contexto de ayuda a un tema de su tabla de ayuda y asigne el mismo valor a la propiedad HelpContextID del formulario o control. Cuando el formulario o el control estén resaltados y el usuario presione F1, Visual FoxPro muestra el tema asociado.

Nota De forma predeterminada, F1 está activada para la ayuda interactiva. Como es un estándar admitido para la ayuda, no se recomienda la modificación de la definición de esta tecla.

Incluir botones de ayuda en los formularios

Si agrega botones de ayuda a los formularios, los usuarios podrán tener acceso a la ayuda con más facilidad. Especialmente, debe considerar la inclusión de un botón de ayuda si sus usuarios no son muy experimentados.

Para establecer ayuda interactiva y agregar un botón de ayuda

  1. En el evento Init de su formulario, establezca en la propiedad HelpContextID de todos los objetos del formulario al mismo valor que haya asignado al tema de ayuda. Por ejemplo, si dicho valor es 7, utilice el siguiente comando:
    THIS.SetAll("HelpContextID", 7)
  2. Agregue un botón de comando al formulario.
  3. Establezca el valor Ayuda en la propiedad Caption del botón de comando.
  4. En el evento Click del botón de comando, agregue el siguiente comando:
    HELP ID THIS.HelpContextID
    Sugerencia Guarde el botón de ayuda como una clase para poder incluirlo fácilmente en cualquier otro formulario. Para obtener más información acerca de cómo guardar objetos como clases, vea Crear formularios.

Distribuir un sistema HTML compilado.

Además del archivo .chm que se crea para el sistema de HTML Help, puede utilizar un programa de instalación de distribución gratuita, Hhupd.exe, que instala y registra los componentes de ejecución de HTML Help mostrados a continuación. Internet Explorer o el motor de ejecución de Internet Explorer tienen que estar instalados en los equipos de los usuarios.

Componente | Descripción
Hhctrl.ocx | Control ActiveX de HTML Help
Itss.dll | Biblioteca de vínculos dinámicos que administra HTML compilado
Itircl.dll | Biblioteca de vínculos dinámicos para búsquedas de texto
Hh.exe | Visor de HTML Help

Este programa de instalación se encuentra en la carpeta Redist de la carpeta de instalación de HTML Help Workshop. Puede llamar a dicho programa de instalación desde otros programas de instalación y ejecutarlo en modo 'silencioso' para que no interfiera con el programa de instalación que haya creado. Para obtener la lista completa de las opciones de línea de comandos, ejecute Hhupd.exe/?.

Vea también

Implementar la ayuda "¿Qué es esto?" de Ayuda HTML | WinHelp 4.0 | Crear ayuda gráfica | Ayuda HTML | SET HELP TO


WinHelp 4.0

Utilice Microsoft Help Workshop para crear archivos Winhelp. Microsoft Help Workshop incluye una guía de creación de ayudas. La guía de creación de ayudas (Hcw.hlp) es un archivo de ayuda gráfica que contiene gran parte de la información necesaria para diseñar sistemas de ayuda eficaces.

Elegir las funciones de ayuda

Los sistemas WinHelp pueden tener algunas o todas las funciones siguientes:

  • Una página de contenido que proporcione una vista jerárquica de los temas del sistema de ayuda.
  • Un índice, basado en las palabras clave que proporcione, que guía al usuario hasta una información específica.
  • Funciones de búsqueda de texto que permitan que los usuarios busquen información en la ayuda basándose en palabras o frases específicas.
  • Texto con varias fuentes, tamaños de fuente y colores.
  • Gráficos, incluidos mapas de bits con varias resoluciones.
  • Macros que automaticen o amplíen la operación del sistema de ayuda.
  • Zonas activas: áreas sensibles al ratón que se crean para proporcionar a los usuarios saltos que vinculen temas; ventanas emergentes que muestren texto adicional; y comandos de macros para agregar al sistema de ayuda.
  • Hipergráficos segmentados: gráficos con una o varias zonas activas.
  • Ventanas secundarias.
  • Menús personalizables.
  • Gráficos con formato de metarchivo de Windows.
  • Bibliotecas de vínculos dinámicos (.DLL).

Diseñar la obtención de acceso a la ayuda en pantalla

Además de crear un archivo WinHelp que contenga la información necesaria, tiene que proporcionar los medios a través de los cuales los usuarios de su aplicación van a tener acceso a la ayuda. Hay tres maneras de proporcionar ayuda:

  • Un menú Ayuda: menú que aparece en la barra de menús principal de su aplicación.
  • Ayuda interactiva: ayuda que aparece cuando el usuario presiona F1, u otra tecla especificada, mientras está seleccionado un objeto, control u opción de menú determinados.
  • Ayuda "¿Qué es esto?": ayuda que aparece como breve sugerencia emergente cuando el usuario pide ayuda acerca de un objeto o control específico.

Diseñar el menú Ayuda

El menú Ayuda suele contener comandos que proporcionan acceso a los temas de su sistema de ayuda. WinHelp 4.0 incorpora la ventana Buscador de ayuda, que es un único cuadro de diálogo que proporciona acceso al contenido, al índice y a la búsqueda de texto.

Se recomienda que sólo un comando del menú Ayuda abra la ventana Buscador de ayuda. Además de dicho comando, puede incluir otros comandos en el menú Ayuda para proporcionar información del sistema o la información de Copyright y la versión de su aplicación.

Puede invocar la ventana Buscador de ayuda mediante programación con la función WinHelp con el parámetro HELP FINDER.

Vea también

Programar funciones de Ayuda HTML | Agregar interactividad a WinHelp | Implementar la ayuda "¿Qué es esto?" de WinHelp | Programar funciones de WinHelp | Ayuda HTML | Crear ayuda


Agregar interactividad a WinHelp

La ayuda interactiva permite que los usuarios tengan acceso fácil a los temas de ayuda relacionados con lo que estén haciendo o viendo en su aplicación en cualquier momento. Por ejemplo, si un usuario está viendo un formulario de introducción de datos, la ayuda interactiva podría proporcionar un tema relacionado específicamente con dicho formulario.

Decida el nivel de detalle de la implementación de la ayuda interactiva en su aplicación. Por ejemplo, puede asociar un tema de ayuda interactiva con un formulario o puede asociar temas de ayuda más detallados para cada uno de los controles y campos del formulario.

Se suele llegar a la ayuda interactiva al presionar F1, pero puede especificar que se active mediante cualquier tecla con ON KEY LABEL.

Usar WinHelp interactiva en un formulario

Para implementar la ayuda interactiva, tiene que especificar un archivo de ayuda de su aplicación y después asociar temas de ayuda determinados con diferentes objetos de su aplicación.

Para agregar la ayuda interactiva

  1. Especifique un archivo de ayuda de su aplicación.
  2. Asigne un tema de ayuda a cada objeto para el que vaya a proporcionar ayuda interactiva.

Especificar el archivo de ayuda

El archivo de ayuda al que se tiene acceso en su aplicación se determina al incluir el comando SET HELP TO Archivo en el código, siendo Archivo el nombre del archivo de ayuda. Por ejemplo, si el archivo de ayuda es Myhelp.hlp, puede utilizar el siguiente comando:

SET HELP TO MYHELP.HLP

Este comando suele estar incluido en el código de instalación del programa principal de su aplicación.

Asignar temas de ayuda

Puede asignar un tema de ayuda a objetos específicos de su aplicación de Visual FoxPro.

Para asignar un tema de ayuda a un objeto

  1. En modo Diseño, abra el objeto (por ejemplo, un formulario, un control o una barra de herramientas) al que vaya a asignar ayuda interactiva.
  2. Vea las propiedades del objeto.
  3. Establezca la propiedad HelpContextID al número correspondiente al tema específico de su archivo de ayuda.

Para obtener más información acerca de la asociación de temas de ayuda con números de Id. de contexto, consulte la guía de creación de ayudas.

Nota Para asignar temas de ayuda a títulos de menú o a comandos de menú, tiene que incluir el comando SET TOPIC TO en el procedimiento asociado con el título de menú o el comando de menú.

Vea también

WinHelp 4.0 | Implementar la ayuda "¿Qué es esto?" de WinHelp | Programar funciones de WinHelp | ON KEY LABEL (Comando) | Crear ayuda


Implementar la ayuda "¿Qué es esto?" de WinHelp

La ayuda "¿Qué es esto?" es similar a la Ayuda interactiva, puesto que proporciona Ayuda relacionada con el objeto o control específico que actualmente está resaltado. Sin embargo, en lugar de llamar al archivo de Ayuda y mostrar los temas en la ventana de Ayuda de tamaño predeterminado, la ayuda "¿Qué es esto?" muestra el tema en una pequeña ventana emergente que desaparece en cuanto el usuario hace clic en alguna otra parte de la pantalla. La ayuda "¿Qué es esto?" es útil para proporcionar breves descripciones o definiciones de tipo sugerencia sobre controles específicos.

Sugerencia Cree sus temas de ayuda "¿Qué es esto?" de forma breve y concisa, para que la ventana no sea tan grande como para ocultar el componente que describe.

"¿Qué es esto?" Ayuda

Es posible asociar la ayuda "¿Qué es esto?" con un formulario, control de formulario o barra de herramientas particular estableciendo el valor de su propiedad WhatsThisHelpID al el número correspondiente al tema específico del archivo de ayuda.

Use las siguientes propiedades y métodos para implementar "¿Qué es esto?" :

Propiedad | Descripción
WhatsThisHelp | Establezca esta propiedad en verdadero (.T.) en un formulario para activar "¿Qué es esto?" en el formulario y sus controles.
WhatsThisButton | Establezca esta propiedad en verdadero (.T.) para activar "¿Qué es esto?" en la barra de título del formulario.
WhatsThisHelpID | En un formulario, control o barra de herramientas, establezca esta propiedad en el número de Id. correspondiente al tema asociado de su archivo de ayuda.
WhatsThisMode | Utilice este método para mostrar el puntero de interrogación del ratón de “¿Qué es esto?” y activar el modo de ayuda "¿Qué es esto?" . Al hacer clic en un objeto aparece el tema de ayuda "¿Qué es esto?" especificado por la propiedad WhatsThisHelpID del objeto.

Usar un botón "¿Qué es esto?"

Para implementar la Ayuda "¿Qué es esto?”

  1. En modo de Diseño, abra el formulario en el que vaya a activar la Ayuda "¿Qué es esto?" .
  2. Establezca la propiedad WhatsThisHelp del formulario en verdadero (.T.).
  3. para mostrar un botón de ayuda "¿Qué es esto?" en la barra de título del formulario, establezca la propiedad WhatsThisButton del formulario en verdadero (.T.).
  4. Para asociar un tema de ayuda "¿Qué es esto?" con el formulario, establezca la propiedad WhatsThisHelpID del formulario en un número de Id. que corresponda a un tema del archivo de ayuda.
  5. Para asociar un tema de ayuda "¿Qué es esto?" con un control determinado del formulario, seleccione el control y establezca su propiedad WhatsThisHelpID en un número de Id. que corresponda con algún tema del archivo de ayuda.

Vea también

Agregar interactividad a WinHelp | Programar funciones de WinHelp | Crear ayuda | WhatsThisHelpID (Propiedad) | WinHelp 4.0


Programar funciones de WinHelp

Puede programar su aplicación para que los usuarios tengan acceso a su sistema de ayuda en la ayuda de Microsoft. Aunque un sistema de ayuda puede consistir en uno o varios archivos separados, la ayuda aparece ante los usuarios como parte integrante de su aplicación.

Puede programar su aplicación Visual FoxPro para utilizar ayuda gráfica y ayuda de tipo .dbf con los comandos SET HELP TO y SET TOPIC TO o con la función WinHelp, descrita más adelante en este tema. SET HELP TO especifica el nombre de un archivo de ayuda personalizado para su aplicación. SET TOPIC TO establece la palabra clave identificadora de un tema del archivo de ayuda personalizado.

Usar la función WinHelp

Otra forma de programar su aplicación para utilizar ayuda es la utilización de la función WinHelp. La función WinHelp forma parte de la interfaz de programación de aplicaciones (API) de Windows. La función WinHelp sólo está disponible en las plataformas Windows.

Puede utilizar la función WinHelp junto con la propiedad HelpContextID, especialmente para invocar un segundo archivo de ayuda.

Sugerencia Si utiliza SET HELP TO, HELP ID y SET TOPIC TO, no necesita utilizar la función WinHelp.

Para utilizar la función WinHelp

  1. Defina los parámetros de comando que va a pasar en la aplicación.

    Para obtener la descripción de dichos parámetros, vea "El parámetro wCmd", más adelante en esta misma sección.

  2. Establezca la biblioteca con SET LIBRARY TO y defina las variables que vaya a utilizar, normalmente en el código de inicialización del archivo principal de la aplicación.
    SET LIBRARY TO SYS(2004) + "FOXTOOLS.FLL" ADDITIVE
Help = RegFn("Help", "LCIC", "I")

    El valor de la biblioteca tiene debe ser Foxtools.fll. SYS(2004) devuelve el directorio raíz de Visual FoxPro, donde está instalado Foxtools.fll.

    Si quiere abrir un tema de ayuda enviando su palabra clave K, defina una variable con RegFn( ), de igual modo que la variable Help del ejemplo anterior. Si desea abrir un tema de ayuda asociado a un número, defina una variable con RegFn de igual modo que la variable HelpI del ejemplo anterior y utilice un número en lugar de una cadena en dwData. Si pasa números, tiene que asociarlos en la sección [MAP] del archivo .hpj con cadenas de contexto únicas definidas con la nota al pie (#).

  3. Utilice CallFn( ) para invocar la función.

    Por ejemplo, si su archivo de ayuda es Myhelpfile.hlp, utilice CallFn( ) para abrir un tema en Myhelpfile.hlp incluyendo la palabra clave K del tema:

    #define HELP_KEY 0x0101
wCmd = HELP_KEY
cFilename = Myhelpfile.hlp"
dwData = "Add Menu Items at Run Time"
CallFn(Help, MainHWND(), cFileName, wCmd, dwData)

Para obtener más información acerca de las funciones FoxTools, vea el archivo Foxtools.chm en el directorio Vfp98\Tools.

Especificar los parámetros de WinHelp

Los siguientes parámetros especifican las opciones de la función WinHelp.

El parámetro hWnd

El parámetro hWnd identifica la ventana que solicita la ayuda. La ayuda utiliza este identificador para controlar qué aplicaciones han solicitado ayuda. En Visual FoxPro, utilice la función MainHWND( ), incluida en la biblioteca Foxtools.fll, para obtener el parámetro hWnd.

El argumento lpzFileName

El argumento lpzFileName representa una cadena de texto que especifica la ruta de acceso y el nombre válidos del archivo de ayuda que contiene el tema deseado. Se pasa por valor.

El parámetro wCmd

El parámetro wCmd especifica el tipo de búsqueda que la ayuda utiliza para buscar el tema especificado o que la aplicación ya no requiere ayuda. Puede establecerse uno de los siguientes valores.

Constante | Valor | Significado
HELP_FINDER | 0x000B | Muestra la ventana Buscador de ayuda.
HELP_CONTEXT | 0x0001 | Muestra ayuda sobre un tema específico identificado por un número de contexto.
HELP_HELPONHELP | 0x0004 | Carga Help.hlp y muestra el tema Usar el índice de ayuda.
HELP_INDEX | 0x0003 | Muestra el tema de índice de ayuda principal definido en la sección [OPTIONS] del archivo de proyecto de ayuda (.hpj).
HELP_KEY | 0x0101 | Muestra el primer tema encontrado en la lista de palabras clave que corresponde a la palabra clave del parámetro dwData.
HELP_QUIT | 0x0002 | Informa a la aplicación de ayuda que la ayuda ya no es necesaria. Si ninguna otra aplicación ha solicitado ayuda, Windows cierra la aplicación de ayuda.
HELP_SETINDEX | 0x0005 | Establece un tema específico como tema de índice.

El parámetro dwData

El parámetro dwData representa el tema para el que la aplicación solicita ayuda. Su contenido y su formato dependen del valor de wCmd pasado cuando la aplicación invoca la función WinHelp.

En la mayor parte de las llamadas a ayuda, el argumento dwData se pasa por valor. Es la forma predeterminada de Visual FoxPro.

En función de las circunstancias, el argumento dwData de la línea anterior puede representar una cadena de texto, que indica la palabra clave que se busca, o un valor numérico, que indica el número de contexto que identifica un tema concreto.

La siguiente lista describe el formato de dwData para cada valor de wCmd.

Valor de wCmd | Formato de dwData
HELP_CONTEXT | Valor numérico que contiene el número de contexto del tema. En lugar de HELP_INDEX, HELP_CONTEXT puede utilizar el valor –1.
HELP_HELPONHELP | Omitido.
HELP_INDEX | Omitido.
HELP_KEY | Puntero largo a una cadena que contiene la palabra clave del tema deseado.
HELP_QUIT | Omitido.
HELP_SETINDEX | Valor numérico que contiene el número de contexto del tema que se va a establecer como índice.

Como la función WinHelp puede especificar un número de contexto o una palabra clave, es compatible con la ayuda interactiva y con la búsqueda de temas en el archivo de ayuda.

Nota Si un archivo de ayuda contiene dos o más índices, la aplicación tiene que asignar uno como índice predeterminado. Para garantizar que el índice correcto esté establecido, la aplicación tiene que invocar la ayuda con wCmd establecido en HELP_SETINDEX (y que dwData especifique el identificador de contexto adecuado). Todas las llamadas a ayuda tienen que ir seguidas de un comando establecido en HELP_CONTEXT. Nunca se debe utilizar HELP_INDEX con HELP_SETINDEX.

Reservar F1 para la ayuda

Cuando un usuario presiona F1 dentro de una aplicación, Visual FoxPro muestra un tema de ayuda interactiva. Para ello, asigne un Id. de contexto de ayuda a un tema de su tabla de ayuda y asigne el mismo valor a la propiedad HelpContextID del formulario o control. Cuando el formulario o el control estén resaltados y el usuario presione F1, Visual FoxPro mostrará el tema asociado.

Nota De forma predeterminada, F1 está activada para la ayuda interactiva. Como es un estándar admitido para la ayuda, no se recomienda la modificación de la definición de esta tecla.

Incluir botones de ayuda en los formularios

Si agrega botones de ayuda a los formularios, los usuarios podrán tener acceso a la ayuda con más facilidad. Especialmente, debe considerar la inclusión de un botón de ayuda si sus usuarios no son muy experimentados.

Para establecer ayuda interactiva y agregar un botón de ayuda

  1. En el evento Init de su formulario, establezca en la propiedad HelpContextID de todos los objetos del formulario al mismo valor que el asignado al tema de ayuda. Por ejemplo, si dicho valor es 7, utilice el siguiente comando:
    THIS.SetAll("HelpContextID", 7)
  2. Agregue un botón de comando al formulario.
  3. Establezca el valor Ayuda en la propiedad Caption del botón de comando.
  4. En el evento Click del botón de comando, agregue el siguiente comando:
    HELP ID THIS.HelpContextID
    Sugerencia Guarde el botón de ayuda como una clase para poder incluirlo fácilmente en cualquier otro formulario. Para obtener más información acerca de cómo guardar objetos como clases, vea Crear formularios.

Salir de la ayuda

La aplicación de ayuda es un recurso compartido disponible en todas las aplicaciones Windows. Como también es una aplicación independiente, el usuario puede ejecutarla como cualquier otra aplicación. Como resultado, su aplicación tiene un control limitado sobre la aplicación de ayuda.

Aunque su aplicación no puede cerrar directamente la ventana de la aplicación de ayuda, puede informar a la aplicación de ayuda que ya no la va a necesitar. Antes de cerrar la ventana principal, la aplicación tiene que llamar a la ayuda con el parámetro wCmd establecido en HELP_QUIT, a fin de informar a la ayuda de que la aplicación ya no va a necesitarla.

Las aplicaciones que hayan llamado a la ayuda en algún punto de su ejecución tienen que llamar a la ayuda con el parámetro wCmd establecido en HELP_QUIT antes de terminar.

Si una aplicación abre más de un archivo de ayuda, tiene que invocar la función WinHelp para salir de la aplicación de ayuda para cada archivo.

Si una aplicación o una biblioteca de vínculos dinámicos (DLL) ha abierto un archivo de ayuda pero no quiere que la instancia asociada de la aplicación de ayuda siga activa, la aplicación o la DLL debe llamar a la ayuda con el parámetro wCmd establecido en HELP_QUIT para salir de dicha instancia de la aplicación de ayuda.

Nota Antes de terminar, las aplicaciones o las DLL tienen que llamar siempre a la ayuda para cada uno de los archivos de ayuda abiertos. Un archivo de ayuda se abre si se ha realizado una llamada a la ayuda con el nombre del archivo de ayuda.

La aplicación de ayuda no termina hasta que todas las ventanas que hayan solicitado la ayuda la hayan invocado con wCmd establecido en HELP_QUIT. Si alguna aplicación no lo hiciera, la aplicación de ayuda seguirá ejecutándose, aunque todas las aplicaciones que solicitaron ayuda hayan terminado.

Vea también

Implementar la ayuda "¿Qué es esto?" de WinHelp | Agregar interactividad a WinHelp | Crear ayuda gráfica | SET HELP TO | SET TOPIC TO | SET LIBRARY TO | WinHelp 4.0


Programar Aplicaciones Internacionales

Para entrar en el mercado mundial, deberá diseñar aplicaciones de Visual FoxPro de modo que sean tan efectivas a nivel internacional como en su propio país. En esta sección se describe el uso de las características internacionales de Visual FoxPro para generar aplicaciones para configuraciones regionales seleccionadas.

En esta sección

Páginas de códigos en Visual FoxPro
Explica como los datos almacenados en Visual FoxPro suelen estar marcados con una página de códigos, que es una tabla de caracteres y los números correspondientes en memoria que utiliza Windows para mostrar los datos correctamente.
Ordenar datos en aplicaciones internacionales
Instrucciones para después de crear una tabla de datos internacionales, compruebe si la aplicación ordena correctamente los datos. El modo en que se ordenan los datos depende de la página de códigos asociada a la tabla, ya que especifica el orden o secuencias de ordenación disponibles.
Modificar aplicaciones internacionales
Describe como puede prevenir errores en el código cumpliendo algunas reglas.
Administrar archivos en una aplicación internacional
Explica como el Administrador de Proyectos puede ayudarle a organizar una aplicación internacional En un proyecto puede integrar las partes de una aplicación como formularios, menús, programas e informes.

Secciones relacionadas

Desarrollar aplicaciones Visual FoxPro
Incluye información conceptual sobre como diseñar aplicaciones en Visual FoxPro, instrucciones para crear las bases de datos, la interfaz de usuario y otras tareas necesarias para crear la aplicación.
Crear una aplicación
Información para crear una aplicación en Visual FoxPro, que puede incluir una o más bases de datos, un programa principal que configure el entorno del sistema de la aplicación, y una interfaz de usuario compuesto por formularios, barras de herramientas y menús.
Establecer el punto de partida
Describe como el archivo principal, que es el punto de partida de su aplicación, puede ser un programa o un formulario. Cuando su aplicación se esta ejecutando, Visual FoxPro lanza el programa principal de su aplicación, que controla la ejecución de los demás componentes según se necesiten.
Inicializar el entorno
Describe como configurar el entorno de la aplicación ya que es la primera tarea que el programa principal u objeto aplicación debe cumplir.
Controlar el bucle de eventos
Como establecer un bucle de eventos, que hace que Visual FoxPro comience a procesar los eventos de usuario tales como los clic de ratón y pulsaciones de teclas, que ocurren luego de que la configuración se ha establecido y se ha mostrado la interfaz de usuario inicial.
Crear aplicaciones con el marco de aplicaciones
Explica como crear aplicaciones usando el Asistente de Aplicaciones y el Generador de Aplicaciones.
Optimizar el rendimiento cliente/servidor
Aprenda como ajustar su aplicación para obtener el máximo rendimiento en el procesamiento de datos.
Crear la interfaz de usuario
Aprenda como los formularios, clases, controles y barras de herramientas ofrecen un conjunto variado de herramientas para crear una excelente interfaz de usuario.
Convertir las bases de datos de Visual FoxPro
Explica como usar el asistente de Conversión para trasladar las bases de datos, tablas y vistas desde su sistema a un servidor remoto SQL.


Páginas de códigos en Visual FoxPro

Los datos almacenados en Visual FoxPro suelen estar etiquetados con una página de códigos, que es una tabla de caracteres y los números correspondientes en memoria que utiliza Windows para mostrar datos correctamente. Por ejemplo, si introduce la letra C en un archivo .dbf, la letra se almacena en el disco duro como el número 67. Cuando abra el archivo, Visual FoxPro determina su página de códigos, la inspecciona para buscar el carácter correspondiente al número 67 y muestra el carácter (C) en el monitor.

Las páginas de códigos corresponden aproximadamente a alfabetos diferentes. Por ejemplo, Windows suministra páginas de códigos para los idiomas inglés, alemán, escandinavos, etc. Usando páginas de códigos diferentes, las aplicaciones pueden mostrar correctamente caracteres de estos diferentes alfabetos.

Páginas de códigos en Visual FoxPro

Visual FoxPro muestra los datos utilizando una página de códigos. De forma predeterminada, es la página de códigos que utiliza Windows en ese momento. Sin embargo, puede anular la página de códigos de Windows si especifica otra página alternativa en el archivo de configuración (debe especificar una página de códigos válida).

Las tablas de Visual FoxPro se etiquetan con la página de códigos que estaba en uso cuando se creó la tabla. Cuando use la tabla, Visual FoxPro compara la página de códigos de la tabla con la página de códigos actual. Si coinciden, Visual FoxPro muestra los datos tal como son. Si no existe ninguna página de códigos para la tabla (por ejemplo, la tabla se creó en una versión anterior de FoxPro), Visual FoxPro solicita una página de códigos y marca el archivo con esa página.

Si la página de códigos de la tabla no coincide con la del sistema, Visual FoxPro intenta convertir los caracteres de la primera a la página de códigos actual. Por ejemplo, si está utilizando Visual FoxPro y la página de códigos actual del sistema es la inglesa, el carácter ü se representa por el valor ANSI 252. Si la página de códigos de la tabla representa el carácter ü como el valor ANSI 219, Visual FoxPro convierte todas las instancias del valor ANSI 219 a ANSI 252 para que se muestren correctamente.

La conversión de las páginas de códigos no funciona siempre correctamente porque las páginas suelen contener caracteres que no se representan uno a uno en otras páginas de códigos. Por ejemplo, no puede asignar datos que contengan los caracteres de dibujo de línea de MS-DOS® en Windows, porque las páginas de códigos de Windows no contienen estos caracteres. Tampoco puede convertir datos creados en la página de códigos de ruso en una página de códigos de inglés, porque no existe una correspondencia uno a uno entre los alfabetos de estos idiomas. Por último, Visual FoxPro no podría contener un mapa de conversión de caracteres para una página de códigos determinada. En ese caso, los datos se muestran sin conversión de página de códigos. Visual FoxPro no muestra ningún error que indique que no se está produciendo la conversión de páginas de códigos. Cualquiera de las situaciones anteriores puede hacer que algunos caracteres se muestren de forma indebida.

Si desea crear una aplicación para una configuración regional determinada, puede evitar los problemas de conversión de las páginas de códigos si crea los componentes de la aplicación con la página de códigos diseñada para esa configuración regional y ese entorno. Por ejemplo, para crear una aplicación destinada a Rusia, deberá utilizar la página de códigos 1251, 866 ó 10007 para los usuarios de entornos Windows, MS-DOS o Macintosh, respectivamente. Para obtener una lista completa, consulte Páginas de códigos compatibles con Visual FoxPro.

Si necesita escribir algunos caracteres no representados por teclas del teclado, puede hacerlo usando ALT junto con una combinación de teclas del teclado numérico. Sin embargo, no olvide que la misma combinación de teclas usada en diferentes entornos suele presentar resultados distintos. Por ejemplo, si introduce ALT+0182 con la página de códigos 1252 en Visual FoxPro, verá el símbolo del párrafo. En contraste, si introduce ALT+0182 con la página de códigos 437 en FoxPro para MS-DOS, verá un carácter gráfico con una doble línea vertical que se junta con una línea horizontal sencilla.

Aunque Visual FoxPro admite muchas páginas de códigos, sólo se suelen utilizar unas pocas. Por ejemplo, típicamente los usuarios de habla inglesa utilizan la página de códigos 1252.

Al trabajar con páginas de códigos, no olvide comprobar que la interfaz de usuario y los datos se muestran correctamente usando la página de códigos diseñada para una configuración regional determinada. Si ve caracteres inesperados en la pantalla, compruebe la página de códigos asociada.

Vea también

Escribir datos internacionales | Especificar la página de códigos de un archivo .dbf | Desarrollar aplicaciones internacionales | Especificar la página de códigos de un archivo de texto | Determinar la página de códigos de un archivo de proyecto


Páginas de códigos compatibles con Visual FoxPro

Una página de códigos es un conjunto de caracteres específico de un idioma o una plataforma de hardware. Los caracteres acentuados no se representan con los mismos valores en distintas plataformas y distintas páginas de códigos. Además, algunos caracteres disponibles en una página de códigos no están disponibles en otras.

Página de códigos | Plataforma | Identificador de página de códigos
437 | MS-DOS USA | x01
620 * | MS-DOS polaco | x69
737 * | MS-DOS griego (437G) | x6A
850 | MS-DOS internacional | x02
852 | MS-DOS de Europa del Este | x64
857 | MS-DOS turco | x6B
861 | MS-DOS islandés | x67
865 | MS-DOS nórdico | x66
866 | MS-DOS ruso | x65
874 | Windows tailandés | x7C
895 * | MS-DOS checo | x68
932 | Windows japonés | x7B
936 | Windows chino (RPC, Singapur) | x7A
949 | Windows coreano | x79
950 | Windows chino (Hong Kong, Taiwan) | x78
1250 | Windows de Europa del Este | xC8
1251 | Windows ruso | xC9
1252 | ANSI de Windows | x03
1253 | Windows griego | XCB
1254 | Windows turco | XCA
1255 | Windows hebreo | x7D
1256 | Windows árabe | x7E
10000 | Macintosh estándar | x04
10006 | Macintosh griego | x98
10007 * | Macintosh ruso | x96
10029 | Macintosh de Europa del Este | x97

* No detectada cuando se incluye CODEPAGE=AUTO en el archivo de configuración.

Vea también

Evitar la conversión de datos de campos del tipo Carácter o Memo | Ordenar datos en aplicaciones internacionales | Desarrollar aplicaciones internacionales | Páginas de códigos en Visual FoxPro | Especificar la página de códigos para variables | Términos especiales para archivos de configuración | SET COLLATE (Comando)


Especificar la página de códigos de un archivo .dbf

Al crear archivos .dbf, Visual FoxPro les asigna automáticamente marcas de página de códigos para distinguir qué página de códigos utilizan. Sin embargo, si utiliza archivos .dbf procedentes de versiones anteriores de FoxPro, es posible que no tengan marcas de página de códigos.

Puede determinar si un archivo .dbf tiene una marca de página de códigos mediante la función CPDBF( ) después de abrir el archivo o haciendo que Visual FoxPro lo compruebe cuando abra el archivo.

Para comprobar las marcas de páginas de códigos automáticamente

  1. En el menú Herramientas, elija Opciones.
  2. Seleccione la ficha Datos.
  3. Active la casilla de verificación Pedir página de códigos, si no lo ha hecho todavía.

    Si desea guardar esta configuración para futuras sesiones de Visual FoxPro, elija Establecer como predeterminado.

    Sugerencia En lugar de activar la casilla de verificación Pedir página de códigos puede utilizar el comando SET CPDIALOG para comprobar las páginas de códigos.

Si el archivo no tiene una marca de página de códigos, debe agregarla, tal y como se describe en la sección siguiente.

Agregar marcas de página de códigos

Si utiliza un archivo .dbf de una versión anterior de FoxPro, posiblemente no tenga marca de página de códigos. Sin dicha marca, es posible que el archivo no se muestre correctamente. Si está activada la comprobación automática de páginas de códigos, cuando abra el archivo puede determinar si tiene o no marca de página de códigos. Si no la tiene, puede agregarla.

Para agregar una marca de página de códigos manualmente a un archivo .dbf

  1. Compruebe si está vigente la comprobación automática de página de códigos (consulte el procedimiento anterior).
  2. Abra el archivo.

    Si el archivo no tiene marca de página de códigos, aparecerá el cuadro de diálogo Página de códigos.

  3. Elija la página de códigos apropiada.
  4. Examine el archivo para comprobar si ha asignado la página de códigos correcta.

    Si no puede ver o reconocer algunos datos, la página de códigos no será correcta.

  5. Si la página de códigos es incorrecta, quite la marca de página de códigos empleando el programa CPZERO.prg (Ejemplo) del directorio Tools\Cpzero de Visual FoxPro.
  6. Repita este procedimiento hasta que la página de códigos sea correcta.
    Nota Los archivos de texto, como por ejemplo los de programa (.prg) y consulta (.qpr), no tienen marcas de página de códigos. Esto significa que no es posible distinguir qué páginas de códigos utilizan estos archivos. Sin embargo, si los incluye en un proyecto, éste podrá mantener un registro de las páginas de códigos empleadas. Para obtener más detalles, consulte Especificar la página de códigos de un archivo de texto.

Quitar marcas de página de códigos

Si un archivo .dbf no se muestra correctamente, puede deberse a que tiene una marca de página de códigos incorrecta. Para eliminar la marca de página de códigos, utilice el programa CPZERO ubicado en Tools\Cpzero. Al ejecutar CPZERO se establecerá la página de códigos como 0, es decir, ninguna.

Para eliminar una marca de página de códigos

  • Ejecute CPZERO.prg (Ejemplo) con la sintaxis siguiente:

    DO CPZERO WITH "filename", 0

    Nota Cuando elimine la marca de página de códigos de un archivo .dbf, los datos del archivo no cambiarán. Para cambiar la página de códigos de los datos, deberá marcar el archivo con la página de códigos correcta.

Cambiar marcas de página de códigos

Puede cambiar la página de códigos de un archivo .dbf si quita su marca de página de códigos y le agrega una nueva, si copia el archivo a otro archivo o si usa el programa CPZERO.

Para cambiar la página de códigos de un archivo .dbf copiando el archivo

  • Utilice el comando COPY TO y especifique la página de códigos de destino con la cláusula AS. Para establecer la página de códigos a la página de códigos actual del sistema, omita la cláusula AS.

    Por ejemplo, para copiar Test.dbf a Test866.dbf, al tiempo que cambia la página de códigos a 866, utilice los comandos siguientes:

    USE TEST.DBF
COPY TO TEST866.DBF AS 866

Cuando se complete COPY TO, los datos del archivo resultante tendrán la nueva página de códigos.

Para cambiar una marca de página de códigos usando CPZERO

  • Ejecute CPZERO.prg (Ejemplo) con la sintaxis siguiente:

    DO CPZERO WITH "filename", newCodePage

    Nota Algunos caracteres no pueden convertirse correctamente entre páginas de códigos. Además, algunas conversiones de páginas de códigos no se admiten en Visual FoxPro. Compruebe siempre los resultados de un cambio de página de códigos para asegurarse de que los datos se han convertido correctamente.

Vea también

Páginas de códigos en Visual FoxPro | Especificar la página de códigos de un archivo de texto | Desarrollar aplicaciones internacionales | Determinar la página de códigos de un archivo de proyecto | Especificar la página de códigos para variables


Especificar la página de códigos de un archivo de texto

Si olvida la página de códigos de un archivo de texto que no forma parte de un proyecto, no podrá determinar cuál es esta página de códigos, ya que un archivo de texto no tiene marcas de página de códigos como ocurre con los archivos .dbf. La mejor forma de recordar la página de códigos de un archivo de texto consiste en agregar el archivo a un proyecto.

Para especificar la página de códigos de un archivo de texto

  1. Abra el Administrador de proyectos.
  2. Seleccione el archivo de texto cuya página de códigos desea especificar.
  3. En el menú Proyecto, elija Información del proyecto.
  4. En el cuadro de diálogo Información del proyecto, haga clic en la ficha Archivos.
  5. Haga clic con el botón secundario del ratón en el archivo seleccionado.
  6. En el submenú, elija Página de códigos.

    Visual FoxPro mostrará el cuadro de diálogo Página de códigos.

  7. Elija la página de códigos apropiada.

    Visual FoxPro muestra las páginas de códigos disponibles.

Si sabe cuál es la página de códigos de un archivo de texto, puede especificarlo usando la cláusula AS del comando apropiado de Visual FoxPro. Para los archivos que desee importar o anexar, puede especificar la página de códigos en los comandos IMPORT o APPEND. Para los archivos de consulta, programa o de texto de otro tipo que ya estén en su PC, puede cambiar la página de códigos mediante los comandos MODIFY QUERY, MODIFY COMMAND y MODIFY FILE.

Si no sabe con seguridad qué página de códigos debe aplicar, sustituya la función GETCP( ) por el número de página de códigos del comando. GETCP( ) mostrará el cuadro de diálogo Página de códigos para que seleccione la más adecuada.

Nota Algunos caracteres no pueden convertirse correctamente entre páginas de códigos. Además, algunas conversiones de páginas de códigos no se admiten en Visual FoxPro. Compruebe siempre los resultados de un cambio de página de códigos para asegurarse de que los datos se han convertido correctamente.

Vea también

Especificar la página de códigos de un archivo .dbf | Determinar la página de códigos de un archivo de proyecto | Desarrollar aplicaciones internacionales | Especificar la página de códigos para variables | Evitar la conversión de datos de campos del tipo Cáracter o Memo


Determinar la página de códigos de un archivo de proyecto

Después de agregar un archivo a un proyecto, puede determinar su página de códigos. El método que debe utilizar depende de si el archivo es una tabla (archivo .dbf) o un archivo de texto.

Para determinar la página de códigos de un archivo de texto

  1. Abra el Administrador de proyectos.
  2. En Otros seleccione el archivo cuya página de códigos desea conocer.
  3. En el menú Proyecto, elija Información del proyecto.

Para determinar la página de códigos de una tabla

  • Utilice la función CPDBF( ).

Cuando genere una aplicación a partir un proyecto, el Administrador de proyectos integrará automáticamente los archivos en el proyecto, independientemente de cuántas páginas de códigos distintas tengan. La aplicación resultante tendrá la página de códigos actual.

Nota Cuando agregue un archivo .dbf a un proyecto, no será necesario que especifique una página de códigos para el archivo, ya que Visual FoxPro determina automáticamente la página de códigos a partir de la marca de página de códigos del archivo. Sin embargo, cuando agregue un archivo de texto a un proyecto, deberá especificar una página de códigos para el archivo, ya que Visual FoxPro no puede determinarla automáticamente.

Para preparar un programa para que utilice otra página de códigos, especifique la página de códigos original cuando guarde o compile el programa en la nueva plataforma. Por ejemplo, si desea preparar un programa creado con Visual FoxPro para Macintosh con el fin de utilizarlo con Visual FoxPro, especifique la página de códigos apropiada de MS-DOS cuando guarde o compile el proyecto con Visual FoxPro. Si usa el comando COMPILE, especifique la página de códigos mediante la cláusula AS. Otra alternativa es especificar la página de códigos con SET CPCOMPILE antes de compilar el programa.

Vea también

Especificar la página de códigos de un archivo de texto | Especificar la página de códigos para variables | Desarrollar aplicaciones internacionales | Evitar la conversión de datos de campos del tipo Cáracter o Memo | Páginas de códigos compatibles con Visual FoxPro


Especificar las páginas de códigos para variables

Tal vez desee manipular datos internacionales de una determinada manera. Por ejemplo, podría convertir los datos de una variable a otra página de códigos o evitar la conversión de datos de un campo de tipo Carácter o Memo.

Convertir datos en variables

Si el código de la aplicación incluye una variable que contiene datos de otra página de códigos, puede convertir los datos a la página de códigos apropiada mediante la función CPCONVERT( ). Por ejemplo, suponga que la variable x contiene datos creados con la página de códigos de Macintosh (10000). Para convertir los datos a la página de códigos de Windows (1252), ejecute el comando siguiente:

cConvert=CPCONVERT(10000,1252,x)

En Windows, los datos convertidos se presentan exactamente igual que en Macintosh. Por ejemplo, un carácter que se presente como "ä" en Macintosh tendrá el mismo aspecto en Windows.

Vea también

Determinar la página de códigos de un archivo de proyecto | Evitar la conversión de datos de campos del tipo Cáracter o Memo | Desarrollar aplicaciones internacionales | Páginas de códigos compatibles con Visual FoxPro | Páginas de código en Visual FoxPro


Evitar la conversión de datos de campos del tipo Carácter o Memo

En algunos casos, deseará impedir la conversión automática de páginas de códigos. Por ejemplo, si un campo de tipo Carácter contiene una contraseña cifrada, no deseará que Visual FoxPro la convierta automáticamente porque se podría modificar.

Para evitar la conversión de datos en campos de tipo Carácter o Memo

  1. Abra el proyecto que contiene la tabla.
  2. Seleccione la tabla.
  3. Elija el botón Modificar.

    Se muestra el Diseñador de tablas.

  4. Seleccione el campo cuyos datos desee proteger.
  5. En la lista Tipo, seleccione Carácter (binario)para un campo de tipo Carácter, o Memo (binario) para un campo tipo Memo.
  6. Elija Aceptar y después Sí para hacer que los cambios sean definitivos.
  7. Compruebe los cambios mostrando la estructura de la tabla con el comando DISPLAY STRUCTURE.

    Otra alternativa es usar el comando MODIFY STRUCTURE para proteger los campos apropiados.

Para evitar la conversión de los caracteres seleccionados en los archivos de texto, también puede utilizar la función CHR( ).

Vea también

Especificar la página de códigos para variables | Desarrollar aplicaciones internacionales | Páginas de códigos compatibles con Visual FoxPro | Páginas de códigos en Visual FoxPro | Determinar la página de códigos de un archivo de proyecto


Ordenar datos en aplicaciones internacionales

Después de crear una tabla de datos internacionales, compruebe si la aplicación ordena correctamente los datos. El modo en que se ordenan los datos depende de la página de códigos asociada a la tabla, ya que especifica el orden o las secuencias de ordenación disponibles.

Entender los tipos de ordenación

Los tipos de ordenación incorporan las reglas de ordenación de distintas configuraciones regionales, lo que permite ordenar correctamente los datos en esos idiomas. En Visual FoxPro, el orden actual determina los resultados de comparaciones entre expresiones de caracteres y el orden en el que los registros aparecen en tablas indexadas u ordenadas.

Nota La ordenación trabaja diferente en entornos con conjuntos de caracteres de dos bytes (DBCS).

Utilice el orden adecuado, ya que cada orden produce resultados distintos, como se muestra en la tabla siguiente.

Unsorted (sin ordenar) | Machine (máquina) | General | Spanish (español)
!@#$ | Espacio | espacio | Espacio
1234 | !@#$ | !@#$ | !@#$
espacio | 1234 | 1234 | 1234
Caesar | Caesar | äa | Äa
cæsar | Car | ab | Ab
Strasse | Char | äb | Äb
straße | Czech | Caesar | Caesar
Car | Strasse | cæsar | Cæsar
Char | Ab | Car | Car
Czech | Cæsar | Çar | Çar
ab | Straße | Char | Czech
Çar | Çar | Czech | Char
äa | Äa | Strasse | Strasse
äb | Äb | straße | Straße

Directrices para los tipos de ordenación

Tenga en cuenta estas directrices a la hora de elegir un orden:

  • Evite el orden Machine si desea ordenar correctamente los caracteres internacionales, ya que Machine ordena los caracteres internacionales según el orden ASCII. Por ejemplo Çar va detrás de straße.
  • Los caracteres con marcas diacríticas se ordenan de forma distinta que los caracteres sin estas marcas. Por ejemplo, en los tipos de ordenación General y español äa se ordena antes que ab pero ab va antes que äb.
  • Los caracteres del tipo ß se ordenan igual que los caracteres ampliados equivalentes. Por ejemplo, straße se ordena igual que Strasse, y cæsar igual que Caesar.
  • En algunos idiomas, dos caracteres se ordenan como un único carácter. Por ejemplo, en español, la Ch de Char se ordena como si fuera un carácter entre C y D.

En las secciones siguientes se describe cómo especificar ordenaciones, comprobar el orden actual y reconocer sus resultados.

Especificar el tipo de ordenación

Puede especificar un orden para los campos del tipo Carácter que empleará en operaciones posteriores de indización y ordenación.

Para especificar un orden

  1. En el menú Herramientas, elija Opciones.
  2. Seleccione la ficha Datos.
  3. En el cuadro Secuencia de ordenación, seleccione el orden correspondiente.

    Si desea guardar esta configuración para futuras sesiones de Visual FoxPro, elija Establecer como predeterminado.

    Sugerencia También puede especificar el orden con el comando SET COLLATE TO o con la instrucción COLLATE en el archivo Config.fpw. Para obtener más detalles acerca de Config.fpw, consulte Personalizar el entorno de Visual FoxPro.

El orden actual no afecta a los índices creados anteriormente, aunque sí afecta a los resultados de comparaciones y comandos como SEEK y SELECT - SQL.

Puede cambiar el orden en cualquier momento. Por ejemplo, después de abrir una tabla de clientes, puede crear etiquetas de índice que representen distintos tipos de ordenación, como se muestra en el código siguiente. A continuación, puede cambiar el orden utilizando simplemente una etiqueta distinta:

USE customer
SET COLLATE TO "GENERAL"
INDEX ON fname TAG mygeneral ADDITIVE
SET COLLATE TO "MACHINE"
INDEX ON custid TAG mymachine ADDITIVE
SET COLLATE TO "DUTCH"
INDEX ON lname TAG mydutch ADDITIVE
Nota El orden de un índice anula el orden actual.

La página de códigos actual determina qué tipos de ordenación hay disponibles. Si utiliza SET COLLATE para especificar un orden no admitido por la página de códigos actual, Visual FoxPro generará un error. Asimismo, si especifica en Config.fpw un orden no admitido en la página de códigos actual, se usará de forma predeterminada el orden Machine.

Comprobar el tipo de ordenación

Para determinar el orden actual, utilice la función SET ('COLLATE'). Por ejemplo, puede guardar el orden actual, establecerlo en Machine, realizar los trabajos necesarios y, a continuación, restaurar el orden original mediante el código siguiente:

cCurrentOrder=SET('COLLATE')
SET COLLATE TO 'MACHINE'
*
* código que necesita el tipo de ordenación Machine
*
SET COLLATE TO cCurrentOrder  && regresa el tipo de ordenación anterior

Además, puede determinar el orden de un índice o una etiqueta de índice utilizando la función IDXCOLLATE( ).

Reconocer los resultados de los tipos de ordenación

El orden afecta a los resultados de la comparación de cadenas, SEEK, y SELECT - SQL, como se describe en las secciones siguientes.

Comparar cadenas

Todos los tipos de ordenación, salvo Machine y Unique Weight, ignoran el uso de mayúsculas o minúsculas. Esto significa que no es necesario utilizar UPPER( ) en las expresiones de índice.

El orden actual afecta a las comparaciones de cadenas. Por ejemplo, si establece el orden en General, las instrucciones siguientes devolverán verdadero (.T.):

?"A" = "a"
?"Straße"="Strasse"
?"æ" = "ae"

Sin embargo, cuando utilice el orden Machine, todas estas instrucciones devolverán falso (.F.), porque se ha especificado que las cadenas coincidan en una comparación exacta, byte a byte.

El operador de comparación de cadenas de caracteres (= =) proporciona el mismo resultado cuando se compara por valor que cuando se compara con el orden Machine. Por ejemplo, la instrucción siguiente devuelve falso (.F.):

? "Straße" == "Strasse"
Nota Visual FoxPro ignora SET EXACT cuando se utiliza el operador de comparación de cadenas de caracteres (= =).

Utilizar SEEK

Visual FoxPro ignora las marcas diacríticas cuando se realiza una búsqueda parcial. Una búsqueda parcial se produce cuando la longitud de la expresión es inferior a la de la clave. Si las marcas diacríticas son importantes, considere la posibilidad de utilizar SCAN ... ENDSCAN o LOCATE FOR...CONTINUE en lugar de SEEK.

Entre las ventajas de utilizar SCAN y LOCATE en lugar de SEEK cabe citar las siguientes:

  • SCAN y LOCATE reconocen las marcas diacríticas.
  • Visual FoxPro optimiza plenamente los resultados de SCAN o LOCATE si el orden actual es Machine o Unique Weight, mientras que sólo optimiza parcialmente los resultados de SEEK.
  • SCAN y LOCATE recuerdan la condición que los ha invocado, lo que permite utilizarlos para hacer un bucle en una condición. Por el contrario, SEEK le sitúa en algún lugar del índice y SKIP continúa hacia abajo desde ese punto del índice. En consecuencia, es posible que SEEK no produzca los resultados deseados con datos internacionales.

Utilizar SELECT - SQL

El comando SELECT - SQL utiliza el orden actual. Por ejemplo, si tiene una etiqueta de índice basada en el orden General y el orden actual (devuelto por SET ('COLLATE')) es Machine, el resultado de SELECT SQL se basará en Machine.

Para emplear el orden actual, utilice la cláusula ORDER BY de SELECT - SQL.

Utilizar Indices

Los tipos de ordenación determinan el orden de los registros de las tablas indizadas. Tenga en cuenta las siguientes directrices para utilizar índices con tipos de ordenación:

  • Vuelva a crear los índices creados en versiones anteriores de FoxPro si desea que éstos utilicen un orden distinto que Machine.
  • Vuelva a crear los índices de dBASE para aprovechar los tipos de ordenación de Visual FoxPro.
  • Utilice el comando REINDEX para volver a generar un índice, ya que REINDEX no modifica el orden.

Vea también

Páginas de códigos compatibles con Visual FoxPro | Creación de aplicaciones con juegos de caracteres codificados en dos bytes | Desarrollar aplicaciones internacionales | Datos | Modificar aplicaciones internacionales


Creación de aplicaciones con juegos de caracteres codificados en dos bytes

Visual FoxPro admite DBCS (juegos de caracteres codificados en dos bytes), que son juegos de caracteres que requieren más de un byte para representar un carácter. Algunos ejemplos de idiomas que requieren este tipo de juego de caracteres son el chino simplificado, el chino tradicional y el coreano.

El soporte de DBCS de Visual FoxPro permite la creación de aplicaciones internacionales. Por ejemplo, puede crear una aplicación en coreano con una versión de EE.UU. de Visual FoxPro si ejecuta la versión coreana de Windows. Las funciones de DBCS de Visual FoxPro funcionan correctamente con el juego de caracteres coreano y admiten la secuencia de ordenación en coreano.

Nota Visual FoxPro proporciona funciones de programación especiales para utilizarlas con cadenas en entornos DBCS.

Utilizar caracteres DBCS para nombrar objetos

Visual FoxPro permite el uso de caracteres DBCS para asignar nombres a elementos de las aplicaciones. Al igual que con Visual FoxPro, normalmente los elementos pueden:

  • Tener una longitud máxima de 254 caracteres con la combinación de caracteres codificados en dos bytes y caracteres únicos. Por ejemplo, si usa caracteres codificados en dos bytes, el nombre que cree sólo puede tener 127 caracteres de longitud.
  • Comenzar por una letra, número, signo de subrayado o combinación de bytes iniciales o finales.
  • Contener sólo letras, números, signos de subrayado o caracteres DBCS.

Estas reglas se aplican a variables, objetos (ventanas, menús, etc.), nombres de funciones y procedimientos, nombres de clases y subclases, alias y constantes. También puede usar los caracteres codificados en dos bytes para los nombres de archivos. Para evitar la posibilidad de que los caracteres del nombre del archivo se traten involuntariamente como delimitadores, es más seguro incluir siempre el nombre del archivo entre comillas.

Nota Los límites de longitud de Visual FoxPro se expresan mediante caracteres de un byte. Si se utilizan caracteres codificados en dos bytes en nombres de campos, expresiones de índices, nombres de variables y ventanas, etc., se acorta la longitud del nombre. Por ejemplo, un nombre de campo puede ser de 10 bytes de longitud como máximo en una tabla libre; por tanto, un nombre de campo puede constar de 10 caracteres de un byte pero solamente de 5 caracteres codificados en dos bytes. Para obtener más información acerca de las capacidades del sistema de Visual FoxPro, consulte Capacidades del sistema.

Ordenar datos DBCS

Para facilitar la tarea de ordenar información en entornos DBCS, Visual FoxPro admite secuencias de ordenación para el chino simplificado, el chino tradicional, el japonés y el coreano. Las secuencias de ordenación permiten ordenar correctamente campos del tipo Carácter en las tablas de cada idioma.

En la tabla siguiente se muestran las opciones de secuencias de ordenación de Visual FoxPro y el idioma correspondiente.

Opciones | Idioma
JAPANESE | Japonés
KOREAN | Coreano
PINYIN | Chino simplificado
STROKE | Chino simplificado y tradicional

Para más información, ver Especificar tipo de ordenación.

Vea también

Ordenar datos en aplicaciones internacionales | Modificar aplicaciones internacionales | Desarrollar aplicaciones internacionales | Páginas de códigos compatibles con Visual FoxPro | Páginas de códigos en Visual FoxPro |


Modificar aplicaciones internacionales

Para evitar problemas con el código de localización, siga las directrices que se describen en las secciones siguientes.

Prueba para versiones internacionales

Si es importante que la aplicación pueda determinar en qué idioma se está ejecutando Visual FoxPro, puede llamar a VERSION( ). Conocer el entorno del idioma puede ayudarle a determinar qué texto mostrar, cómo dar formato a los datos, etc. Por ejemplo, el código siguiente determina en qué idioma se está ejecutando Visual FoxPro y después ejecuta un formulario específico del idioma:

IF VERSION(3) = 34 THEN
* Ejecución en Español--muestra formulario en Español
DO FORM CST_SPN.SCX
ELSE
* Muestra formulario en Inglés
DO FORM CST_ENU.SCX
ENDIF
Nota La compatibilidad de cadenas de caracteres codificados en dos bytes sólo ha estado disponible en Visual FoxPro desde la versión 3.0b. Si la aplicación depende de la disponibilidad de las funciones de DBCS, también deberá llamar a la función VERSION(1) para comprobar el número de versión de Visual FoxPro.

Utilizar cadenas

Evite incluir cadenas directamente en el código, ya que dificultan la traducción. Por ejemplo, no incluya fechas ni monedas como cadenas en el código. Si es posible, escriba el código de modo que recupere las cadenas de archivos o tablas independientes del programa.

Nota El rendimiento del programa podría resultar afectado si le quita todas las cadenas. Por ejemplo, el rendimiento podría resultar afectado si el programa busca cadenas mientras está en un bucle.

Una forma de trabajar con cadenas en una aplicación que vaya a traducirse es usar constantes de cadenas en la aplicación. Después puede definir el texto de estas constantes en un archivo de texto diferente al que se hace referencia en los programas mediante la directiva del preprocesador #INCLUDE. Por ejemplo, en lugar de incrustar el mensaje de error "no se encuentra el archivo", puede usar la constante ERR_FILE_NOT_FOUND. El texto de esta constante podría encontrarse en un archivo denominado ERR_TEXT.H. Un programa donde se utilice esta técnica podría asemejarse a éste:

#INCLUDE ERR_TEXT.H
* Instrucciones del proceso
IF ERR THEN
MESSAGEBOX( ERR_FILE_NOT_FOUND )
ENDIF

Cuando la aplicación se traduzca, el traductor puede crear una versión del archivo de texto de errores específica de la configuración regional y después volver a compilar la aplicación.

Trabajar con cadenas en entornos DBCS

Visual FoxPro incluye funciones para manipular expresiones de caracteres que contengan cualquier combinación de caracteres de un byte o dos bytes. Usando funciones de cadena DBCS, puede programar aplicaciones sin tener que escribir código adicional que compruebe si existen caracteres codificados en dos bytes al contar, buscar, insertar o quitar caracteres en una cadena.

La mayor parte de las funciones DBCS son equivalentes a sus homólogas de un byte con la excepción de que sus nombres tienen un sufijo C para diferenciarse. Puede usar estas funciones con datos de un byte o de dos bytes; las funciones DBCS devuelven exactamente el mismo valor que sus homólogas de un byte cuando se les pasan datos de un byte. Otras funciones le ayudan a trabajar con cadenas específicamente en entornos de dos bytes.

Funciones de cadena DBCS | Descripción
AT_C( ) | Devuelve la posición de una cadena dentro de otra (distingue mayúsculas de minúsculas), empezando por la izquierda.
ATCC( ) | Devuelve la posición de una cadena dentro de otra (no distingue mayúsculas de minúsculas).
CHRTRANC( ) | Reemplaza caracteres en una cadena.
IMESTATUS( ) | Alterna la edición de dos bytes en la ventana Examinar.
ISLEADBYTE( ) | Comprueba si un carácter es un carácter DBCS.
LEFTC( ) | Devuelve los caracteres de la izquierda de una cadena.
LENC( ) | Devuelve el número de caracteres de una cadena.
LIKEC( ) | Determina si dos cadenas coinciden.
RATC( ) | Devuelve la posición de una cadena dentro de otra (distingue mayúsculas de minúsculas), empezando por la derecha.
RIGHTC( ) | Devuelve los caracteres de la derecha de una cadena.
STRCONV( ) | Convierte caracteres entre representaciones de un byte y dos bytes.
STUFFC( ) | Reemplaza caracteres de una cadena con otra cadena.
SUBSTRC( ) | Devuelve una subcadena.

Al trabajar con funciones de cadena de dos bytes, recuerde que el límite de longitud máximo para variables, nombres, etcétera, se reduce a la mitad. Para obtener más información acerca de las capacidades del sistema de Visual FoxPro, consulte Capacidades del sistema.

Nota Las funciones DBCS de Visual FoxPro no son compatibles con versiones anteriores de Visual FoxPro y al llamarlas desde estas versiones se pueden producir resultados impredecibles. Si usa funciones DBCS en su aplicación, use VERSION(1) para comprobar que la versión de Visual FoxPro es posterior a la versión 3.0.

Trabajar con formatos Fecha, Tiempo y Moneda

Para ayudarle a dar formato a fechas, horas y moneda para que se ajusten a las costumbres de los usuarios, puede usar varias técnicas de formato. Puede:

  • Permitir a Visual FoxPro usar la configuración establecida en el Panel de control.
  • Especificar un idioma o un formato específico que desee usar en el cuadro de diálogo Opciones de Visual FoxPro.
  • Dar formato a información de fechas, horas y moneda en el código.

Para establecer un formato para fecha, hora o moneda

  1. En el menú Herramientas, elija Opciones y, a continuación, haga clic en la ficha Regional.
  2. Para usar la configuración establecida en el Panel de control, elija Usar la configuración del sistema.

    –O bien–

    Elija un idioma o formato para fechas y horas y, a continuación, elija opciones para dar formato a moneda y números. Si elige el formato Corta o Larga para el formato de fecha, no puede especificar ninguna otra opción para el formato de fecha y se lee la configuración del Panel de control de Windows.

  3. Elija Aceptar para usar las opciones para esta sesión o establezca Establecer como predeterminado para hacer que las modificaciones sean la configuración predeterminada para esta copia de Visual FoxPro.

También puede crear esta configuración mediante los comandos SET SYSFORMATS y SET DATE. Como regla general, debe ejecutar este comando en la inicialización de la aplicación (por ejemplo, en el archivo de configuración). El valor predeterminado de SET SYSFORMATS es OFF, por lo que debe establecerlo explícitamente como ON al iniciar la aplicación.

Puede establecer validación de datos en cuadros de texto individuales si establece la propiedad Format del cuadro de texto. Sin embargo, como el formato de cuadro de texto tiene prioridad con respecto al formato global del sistema, esto puede dificultar la traducción de su aplicación a un entorno que use un formato diferente para fechas, moneda, etcétera.

Usar directivas del preprocesador

Puede crear variantes de la aplicación para distintas configuraciones regionales mediante directivas del preprocesador. Estas directivas controlan la compilación de código en la aplicación e incluyen las construcciones #INCLUDE, #DEFINE, #UNDEF y #IF.....#ENDIF.

El uso de las directivas del preprocesador puede generar variantes rápidamente. Sin embargo, estas directivas tienen los siguientes inconvenientes:

  • Para usar las directivas del preprocesador debe incluir código entre corchetes y el uso abundante de los corchetes puede aumentar la complejidad del código.
  • Las constantes de tiempo de compilación sólo están disponibles en el programa que las crea.

Vea también

Creación de aplicaciones con juegos de caracteres codificados en dos bytes | Administrar archivos en una aplicación internacional | Desarrollar aplicaciones internacionales | VERSION( ) | VERSION(1) | #INCLUDE


Administrar archivos en una aplicación internacional

El Administrador de proyectos puede ayudarle a organizar una aplicación internacional. En un proyecto, puede integrar las diferentes partes de una aplicación, como formularios, menús, programas e informes. El proyecto garantiza que las partes son actuales cuando se genera la aplicación para el mercado de destino.

A diferencia de los archivos .dbf, los archivos de texto (como los de consulta y programa) no tienen marcas de página de códigos. Esto significa que debe hacer un seguimiento de las páginas de códigos que utilizan los archivos de texto para poder utilizarlos correctamente. Con el Administrador de proyectos, puede hacer un seguimiento de las páginas de códigos utilizadas por los archivos de texto.

Distribuir archivos de tiempo de ejecución específicos de la configuración regional

Si va a distribuir su aplicación con la versión de tiempo de ejecución de Visual FoxPro, es posible que tenga que incluir un archivo de recursos que dependa de la configuración regional. Este archivo contiene los cuadros de diálogo y otros elementos de interfaz de usuario que Visual FoxPro usa para interactuar con el usuario. Hay un archivo de recursos de tiempo de ejecución diferente para cada idioma en el que Visual FoxPro está disponible.

Normalmente sólo tendrá que preocuparse de recursos de tiempo de ejecución específicos de configuración regional si se cumplen las siguientes condiciones:

  • Incluye la versión de tiempo de ejecución de Visual FoxPro en la aplicación.
  • Distribuye la aplicación a usuarios que usan un idioma diferente del utilizado al programarla. Por ejemplo, si programa en inglés para usuarios de habla inglesa, no tiene que preocuparse de incluir un archivo de recursos específico de la configuración regional. Sin embargo, si usa la versión inglesa de Visual FoxPro para programar pero va a distribuir la aplicación de tiempo de ejecución en un país de habla francesa, debe incluir el archivo de recursos de tiempo de ejecución.
  • La aplicación muestra cuadros de diálogo de Visual FoxPro, menús o mensajes de error. Normalmente, si ha diseñado y localizado sus propias versiones de estos elementos de interfaz, no tiene que incluir el archivo de recursos específico de la configuración regional.

Para asignar un nombre a los archivos de recursos de tiempo de ejecución se utiliza el formato Vfp8aaa.dll, donde "8" es el número de versión y "aaa" es un código de tres letras que representa el idioma. Por ejemplo, el código ENU significa inglés de Estados Unidos, el código DEU significa alemán y el código FRA significa francés. Los archivos de recursos de tiempo de ejecución para estos idiomas serán Vfp8renu.dll, Vfp8rdeu.dll y Vfp8rfra.dll, respectivamente.

Siempre debe incluir al menos un archivo de recursos en tiempo de ejecución, aunque no piense utilizar como parte de su aplicación ninguno de los elementos de la interfaz de usuario de Visual FoxPro. Visual FoxPro incluye en forma predeterminada el archivo de recursos proporcionado con la copia de su programa. Por ejemplo, si está desarrollando una aplicación utilizando la versión de Estados Unidos de Visual FoxPro, Visual FoxPro automáticamente incluye Vfp8renu.dll si usted incluye archivos de tiempo de ejecución con su aplicación. Si no tiene razones para utilizar un archivo de recursos localizado, puede simplemente distribuir el archivo de recursos predeterminado como parte de su aplicación.

Cuando la aplicación está instalada, los usuarios pueden especificar el archivo de tiempo de ejecución creando una entrada en el Registro del sistema de Windows o usando un modificador de línea de comandos.

Para especificar un archivo de recursos de tiempo de ejecución

  • En la línea de comandos que inicia su aplicación, incluya el modificador L y el nombre del archivo de recursos que quiere usar (incluyendo una ruta de acceso si es necesario). No coloque un espacio entre el modificador y el nombre de archivo.

    Por ejemplo, el siguiente comando especifica el archivo Vfp8rdeu.dll como archivo de recursos:

    C:\Archivos de programa\Microsoft Visual ;

FoxPro\MYAPP.EXE -LC:\Myapp\Vfp8rdeu.dll

    –O bien–

  • Configure el Registro de Windows del equipo del usuario (mediante código o mediante una aplicación como Regedit.exe) de forma que apunte al archivo de recursos que hay que usar. La entrada del Registro que contiene el nombre del archivo de recursos de tiempo de ejecución es:

    HKEY_CLASSES_ROOT\VisualFoxProRuntime.<número de versión actual>\Resources

    Por ejemplo la siguiente entrada de registro señala al archivo de recursos de tiempo de ejecución vfprdeu.dll:

    HKEY_CLASSES_ROOT\VisualFoxproRuntime.8\Resources
    C:\Archivos de programa\Common Files\Microsoft Shared\VFP\vfprdeu.dll

    Si desea controlar el archivo de recursos utilizado por la versión de desarrollo completa de Visual FoxPro, utilice un una clave de registro similar sin la referencia Runtime:

    HKEY_CLASSES_ROOT\VisualFoxpro.<número de versión actual>\Resources

    Por ejemplo, la siguiente entrada de registro señala al archivo de recursos en un PC con la versión completa de Visual FoxPro instalada:

    HKEY_CLASSES_ROOT\VisualFoxpro.8\Resources
    C:\Archivos de programa\Visual FoxPro 8\vfpdeu.dll

Cuando se inicia la aplicación de tiempo de ejecución, Visual FoxPro busca en primer lugar un archivo de recursos según el modificador L y después según la configuración del Registro. Si ninguna de estas configuraciones especifica un archivo de recursos específico de la configuración regional, Visual FoxPro usa la configuración regional actual del sistema (Windows) para desarrollar de forma dinámica un nombre de archivo DLL. Por tanto, si el archivo de recursos específico de la configuración regional para la aplicación coincide con la configuración regional de la versión de Windows del usuario, no tiene que especificar de forma explícita el nombre del archivo de recursos. Sin embargo, siempre es más seguro no confiar en la configuración predeterminada del sistema si quiere estar seguro de que se carga el archivo apropiado.

Vea también

Modificar aplicaciones internacionales | Especificar la página de códigos de un archivo de texto | Proceso de distribución de aplicaciones | Desarrollar aplicaciones internacionales | Creación de aplicaciones con juegos de caracteres codificados en dos bytes | Ordenar datos en aplicaciones internacionales


Servicios Web y Componentes

Para ampliar una aplicación básica de Microsoft Visual FoxPro, puede activarla para que funcione con varios usuarios, acceder y distribuir Servicios Web XML, aprovechar las ventajas de los controles Microsoft ActiveX y las aplicaciones compatibles con la automatización, y agregar características internacionales.

En esta sección

Servicios Web XML en Visual FoxPro 8.0
Visual FoxPro hace posible el uso de servicios web XML en sus aplicaciones. Un servicio web XML es una clase (objeto) distribuida en Internet, a la que se puede tener acceso por programación a través de llamadas normales orientadas a objeto.
Automatización y Servidores COM
Puede ampliar la funcionalidad de sus aplicaciones Visual FoxPro sin invertir más tiempo de codificación, gracias a la automatización y los servidores COM.
Interoperabilidad e Internet
Use arrastrar y soltar de OLE para programar aplicaciones que le permitan mover datos entre aplicaciones para Microsoft Windows y en una aplicación de Visual FoxPro. Cree documentos para utilizarlos en Internet, o utilice uno de los dos tiempos de ejecución diferentes de Visual FoxPro para crear componentes COM (servidores de automatización) como aplicaciones normales o de subproceso.

Secciones relacionadas

Uso de Visual FoxPro
Las características de programación de Visual FoxPro están diseñadas para mejorar la productividad del programador, incluidos los métodos Access y Assign, la compatibilidad con más formatos de archivos gráficos y lenguaje para simplificar las tareas de programación.
Desarrollar aplicaciones Visual FoxPro
En esta sección se incluye información conceptual acerca de cómo desarrollar aplicaciones Visual FoxPro, instrucciones para crear bases de datos y la interfaz de usuario y otras tareas necesarias para crear aplicaciones Visual FoxPro.
Planificar aplicaciones
Un cuidadoso diseño ahorra tiempo, esfuerzo y dinero. Además muchas de las decisiones que tome durante la etapa de diseño impactarán la forma en que cree los elementos de su aplicación.
Crear una aplicación
Crear una aplicación Visual FoxPro, incluye una o más bases de datos, un programa principal que establece el entorno de sistema de su aplicación, y una interfaz de usuario que involucra formularios, barras de herramientas y menús.
Mejorar aplicaciones utilizando tecnología de paso a través de SQL (SPT)
Puede usar la tecnología de paso a través de SQL (SPT) para crear objetos en el servidor, ejecutar procedimientos almacenados en el servidor, y ejecutar comandos utilizando sintaxis nativa del servidor.
Trabajar con datos
Averigüe cómo crear aplicaciones eficaces con índices, tablas y bases de datos según los datos que necesita.
Trabajar con proyectos
Definir una configuración de proyecto y un grupo de archivos que producen un programa o archivos o archivos binarios finales.
Crear Ayuda
Puede incluir archivos de Ayuda en su aplicación con el fin de proporcionar información valiosa para los usuarios de su aplicación.
Compilar una aplicación
Explica cómo utilizar la aproximación modular para verificar la funcionalidad de cada componente que cree y luego compilarlos en una aplicación, la cual ensambla en un ejecutable los componentes de su proyecto.
Probar y depurar aplicaciones
Describe las herramientas de depuración de Visual FoxPro que le ayudan a encontrar y corregir cualquier error que haya descubierto en sus aplicaciones.
Distribuir aplicaciones
Para distribuir sus aplicaciones debe incluir todos los archivos necesarios y crear discos de distribución después que haya completado el desarrollo y prueba de su aplicación.


Servicios Web de XML en Visual FoxPro 8.0

Los Servicios Web XML son clases u objetos disponibles en la Web que puede utilizar en sus aplicaciones programando llamadas orientadas a objetos normales. También podrá publicar servidores COM de Visual FoxPro (OLEPUBLIC) como Servicios Web XML de manera que pueda compartir información con otros clientes en Internet.

Por ejemplo, puede utilizar un Servicio Web XML en su aplicación para que devuelva el estado del tiempo para una determinada ciudad al llamar a un método que devuelva la temperatura al pasarle el nombre de esa ciudad.

El soporte de Visual FoxPro para los Servicios Web de XML, se maneja a través de SOAP, utilizando la implementación del "Web Services Description Language" (WSDL), compatible con WSDL version 1.1. Visual FoxPro incluye Microsoft SOAP Toolkit versión 3.0, el cual ofrece soporte para Servicios Web XML por medio de un sistema de extensiones y que también está disponible en el sitio Web de Microsoft. Visual FoxPro amplía la funcionalidad del Toolkit; por lo tanto, cualquier cambio futuro a la especificación de WSDL por parte del W3C será aplicada directamente a Visual FoxPro cuando actualice a una nueva versión del SOAP Toolkit.

Nota Es necesario tener instalado el Microsoft SOAP Toolkit para poder utilizar el Servicios Web XML. Si está planeando publicar servicios XML por medio de servidores COM de Visual FoxPro, deberá tener instalado también el Servicio de Información de Internet de Microsoft (IIS).

El SOAP Toolkit también ofrece objetos que puede utilizar para llamar a Servicios Web XML a bajo nivel, que interactúan directamente con los mensajes de SOAP. Sin embargo, estos objetos no están directamente soportados por las extensiones de Visual FoxPro.

Para mayor información sobre plataformas soportadas, SOAP, WSDL, o del SOAP Toolkit, vea la documentación en linea del Toolkit o el sitio Web de recursos de SOAP para programadores en http://msdn.microsoft.com/soap/.

En esta Sección

Accediendo a servicios Web XML
Describe como localizar, registrar y utilizar Servicios Web XML en aplicaciones de Visual FoxPro.
Distribuir Servicios Web XML
Describe como especificar una localización por defecto para la publicación de Servicios Web XML, publicar servidores COM de Visual FoxPro como Servicios XML, incluir componentes para disrtibuir Servicios Web XML y generar automáticamente los archivos de soporte para Servicios Web XML cuando se reconstruyen los servidores COM.

Temas Relacionados

Crear Servicios Web y componentes
Discute cómo puede habilitar una aplicación Visual FoxPro para que trabaje con múltiples usuarios aprovechando las ventajas de los controles ActiveX y servicios de automatización de aplicaciones y añadiendo capacidades internacionales.
Automatización y Servidores COM
Describe como puede extender la funcionalidad de sus aplicaciones Visual FoxPro, sin necesidad de utilizar tiempo extra programando código, aprovechando los servidores de automatización COM.
Guia: Crear Servicios Web XML con Visual FoxPro
Explica cómo crear y publicar un Servidor COM de Visual FoxPro como un Servicio Web XML.
Interoperabilidad e Internet
Explica cómo utilizar arrastrar y soltar OLE para desarrollar aplicaciones de tal forma que pueda mover datos entre aplicaciones Microsoft Windows con aplicaciones de Visual FoxPro. Crear documentos para uso en Internet o para uso de dos diferentes tiempos de ejecución (RunTimes) de Visual FoxPro para crear componentes COM (servidores de automatización) como aplicaciones normales o multihilo.


Accediendo a servicios Web XML

El soporte para servicios Web XML provistos por el Microsoft SOAP Toolkit en Visual FoxPro hace posible acceder a servicios Web XML desde la Web. Las extensiones provistas por el SOAP Toolkit 3.0 permiten el acceso a servicios Web XML usando el objeto SoapClient del Toolkit. Esta arquitectura de acceso de alto nivel de enlace tardío (late-binding) hace posible llamar directamente a un método de un servicio Web XML empleando sólo unas pocas líneas de código simple de objeto.

La clase fundacional WSHandler, incluida con la biblioteca de clases _WS3Client.vcx en la carpeta ...\Ffc es la clase de servicio Web XML usada por todas las llamadas de Visual FoxPro a servicios Web XML.

Registrando los servicios Web XML

Antes de usar un servicio Web XML en la aplicación, regístrelo en Visual FoxPro. Se puede elegir el servicio Web XML en el Cuadro de Herramientas de Visual FoxPro y usar la operación o llamadas a los métodos de dicho servicio Web XML para retornar resultados. Cuando se llama al servicio Web XML, se puede definir el valor de una propiedad de un control especificado con esos resultados, tal como la propiedad Value de un Cuadro de Texto.

Nota No tiene que registrar un servicio Web XML para acceder a él. No obstante, al registrarlo hace posible usar IntelliSense para los métodos del servicio Web XML y sus parámetros.

Para registrar un servicio Web XML

  1. En el menú Herramientas, pulse Panel de Tareas.
  2. En la barra de herramientas del Administrador del Panel de Tareas, pulse Más Paneles y luego Servicios Web XML.
  3. En el panel de servicios Web XML pulse Registrar un servicio Web XML.
  4. En el cuadro de diálogo Registro de servicios Web XML de Visual FoxPro ingrese la URL de la WSDL (Web Services Description Language) para el servicio Web XML y luego, pulse Registrar.

También se puede abrir el cuadro de diálogo Registro de servicios Web XML de Visual FoxPro desde un programa tal como se muestra en el código siguiente:

DO (_wizard) WITH "project",,"Web","IntelliSense"

Para más información sobre los parámetros que se necesitan configurar, ver Servicio Web XML - Cuadro de diálogo Registrar.

Llamando a servicios Web XML

Después de registrar un servicio Web XML en Visual FoxPro, puede ser llamado y enlazado a un control u objeto de un formulario. Se puede entonces procesar los resultados del servicio Web XML en su aplicación. Se puede llamar y enlazar los servicios Web XML usando el generador de servicios Web XML o por código. El generador permite una capacidad extendida de enlace sin necesidad de escribir código. Para más información, ver Generador de Servicios Web XML.

Los siguientes pasos ilustran cómo se puede llamar el servicio Web XML en un programa usando código:

Llamar a un servicio Web XML por código

  1. En el menú Herramientas, pulse Cuadro de herramientas.
  2. En la Cuadro de herramientas, pulse Mis servicios Web XML.
  3. Abra una ventana de edición en el lugar del programa o código donde se desee llamar al servicio Web XML.
  4. Arrastrar y soltar el servicio WebXML en la ventana de edición.

    El código para el servicio Web XML aparece en la ventana de edición.

También se pueden ingresar los caracteres ws en la ventana de edición. Aparece el cuadro de diálogo Seleccionar de manera que pueda elegir un servicio Web XML y cualquier opción adicional, insertar el código para el servicio Web XML en la ventana de edición. Para más información, ver Cuadro de diálogo Seleccionar.

Se puede usar IntelliSense para ver los métodos y parámetros disponibles del servicio Web XML. Por ejemplo, IntelliSense muestra una lista de los métodos disponibles para el servicio Web XML cuando se ingresa la siguiente línea de código en la ventana de edición:

? MyXMLWebService.
Nota Asegúrese de reemplazar MyXMLWebService con el objeto servicio Web XML Web provisto en el código.

Se puede elegir un método y continuar tecleando como sigue para especificar los parámetros del método:

? MyXMLWebService.WSMethod()
Nota Reemplace WSMethod con el método del servicio Web XML elegido.

IntelliSense muestra los parámetros posibles y retorna el tipo para el método.

También se puede transportar el código para el servicio Web XML a otro PC que no tenga registrado el servicio Web XML. Visual FoxPro puede detectar que el servicio Web XML no está registrado y le propondrá registrarlo. Si no se desea registrarlo, se puede eliminar la línea que contiene la referencia WSDL, por ejemplo:

* __VFPWSDef__: lofoxtypes=http://mywebserver/foxws/foxtypes.wsdl

Para más detalles acerca del acceso a servicios Web XML Web usando llamadas de alto y bajo nivel, ver a documentación del SOAP Toolkit 3.0.

Enlazando servicios Web XML a Controles

Se puede enlazar un servicio Web XML a un control u objeto en un formulario Visual FoxPro y asignar los resultados del servicio Web XML a propiedades del control u objeto.

Enlazar un servicio Web XML a un control

  1. Cree una nueva clase o formulario o abra una existente.
  2. En el menú Herramientas, pulse Cuadro de herramientas.
  3. Bajo Mis servicios Web XML en el Cuadro de herramientas, arrastrar y soltar el control Generic Handler o el servicio Web registrado al formulario o clase.

    Aparece el generador de servicios Web XML de manera que se puede enlazar el servicio Web XML a controles u objetos sobre el formulario. Si el generador no aparece, pulse el botón derecho del ratón sobre el control servicio Web XML y elija Generador.

Para más información, ver Generador de Servicios Web XML.

Nota Se recomienda salvar un formulario recientemente creado antes de arrastrar y soltar un servicio Web XML porque el generador necesita acceder a los controles del formulario usando el paso del contenedor.

Vea también

Servicios Web XML en Visual FoxPro 8.0 | Distribuir Servicios Web XML


Distribuyendo Servicios Web XML

El soporte para Servicios Web XML en Visual FoxPro proporcionado por el Microsoft SOAP Toolkit, le permite publicar Servidores COM Visuales (OLEPUBLIC) como Servicios Web XML que pueden ser accedidos desde la Web. Las extensiones y objetos disponibles en el SOAP Toolkit ofrece capacidades de publicación de Servicios Web XML. Para más información acerca de publicación de Servidores COM de Visual FoxPro como Servicios Web XML, vea Guía: Crear Servicios Web XML con Visual FoxPro.

Especificar una ubicación predeterminada para los Servicios Web XML

Antes de publicar un Servicio Web XML, puede especificar una ubicación predeterminada para la publicación. Esta ubicación es un URL de un servidor web local o un directorio virtual que use para almacenar los archivos de soporte de los Servicios Web XML, como ASP listeners y archivos WSDL. Aunque indicar esta ubicación es opcional, puede simplificar el proceso de publicar Servicios Web XML.

Nota El cuadro de diálogo Ubicación de Servicios Web XML de Visual FoxPro aparece la primera vez que seleccione el menú Asistentes. Si no indica una ubicación predeterminada, Visual FoxPro le preguntará por la ubicación predeterminada cada vez que publique un nuevo servicio Web XML. Puede cambiar esta ubicación posteriormente haciendo clic en Avanzado en el cuadro de diálogo Publicador de Servicios Web XML de Visual FoxPro.

Para más información, vea Cuadro de diálogo Localización de Servicios Web XML de Visual FoxPro y Cuadro de diálogo de Publicación Servicios XML Web de Visual FoxPro.

Para especificar una ubicación predeterminada para un servicio Web XML

  1. En el menú Herramientas, seleccione Asistentes y haga clic en Servicios Web.
  2. En el cuadro de dialogo que aparece, haga clic en Aceptar.
  3. En el cuadro de dialogo Ubicación de Servicios Web XML de Visual FoxPro, seleccione una ubicación existente para publicar su servicio Web XML, haga clic en Existente y seleccione un lugar en el cuadro Seleccione Ubicación (Directorio Virtual).

    -o-

    Seleccione una nueva ubicación, haga clic en Nuevo, seleccione un lugar en el cuadro Seleccione Ubicación (Directorio Virtual), haga clic en el boton (...) para especificar una ruta de salida para el archivo si lo desea y escriba un nombre para el directorio en el cuadro Nombre del nuevo Directorio Virtual.

Las configuraciones de cada servicio Web XML se preservan para que pueda actualizar facilmente los servicios Web XML, por ejemplo, si el contenido del WSDL cambia. Estas configuraciones son almacenadas en la tabla FoxWS3.dbf en el mismo directorio de la tabla FoxCode.dbf (_FOXCODE).

Publicar Servicios Web XML

Puede publicar un Servidor COM de Visual FoxPro como un servicio Web XML para hacerlo disponible en la Web.

Nota Publicar servicios Web XML mediante el cuadro de diálogo Publicador de Servicios Web de Visual FoxPro sólo admite la generación de archivos WSDL que contienen un único servicio y puerto o clase. Si desea seleccionar varias clases, debería utilizar el asistente disponible en el SOAP Toolkit.

Para publicar un servicio Web XML

  1. En el menú Herramientas, haga clic en Panel de Tareas.
  2. En la barra de herramientas Administrador del Panel de Tareas, haga clic en Más Paneles.
  3. En el panel Servicios Web XML, haga clic en Publicar su Servicio Web XML.
  4. En el cuadro de diálogo Publicador de Servicios Web de Visual FoxPro, haga clic en el botón (...) para examinar y seleccionar el Servidor COM de Visual FoxPro que desee.

Tambien puede publicar Servidores COM haciendo clic en Servicios Web en el menú Asistentes, clic derecho en un proyecto de Servidor COM abierto, clic en Generador en el menú contextual, y seleccionando Publicador de Servicios Web en el cuadro de dialogo Asistente de Selección. Tambien puede abrir el cuadro de diálogo Publicador de Servicios Web XML de Visual FoxPro usando el siguiente código:

DO (_wizard) WITH "project",,"Web"

Para más información, Vea Servicio Web XML - Cuadro de diálogo Publicar.

Probar y regenerar procesos para Servidores COM

Cuando vuelva a compilar su Servidor COM, puede generar automaticamente los archivos de soporte del servicio Web XML creando un project hook para el proyecto del servidor COM que llame al motor del servicio Web XML para regenerar los archivos de soporte del servicio Web XML. Puede seleccionar esta opción en el cuadro de diálogo Avanzado del cuadro de diálogo del Publicador de Servicios Web XML de Visual FoxPro. El project hook (WSHOOK) está almacenado en la biblioteca foundation class de servicios Web XML, _WS3Utils.vcx, ubicada en la carpeta ...\Ffc. Para más información, Vea Servicios Web XML (Foundation Class).

Cuando este trabajando y probando su servicio Web XML, es posible que IIS mantenga almacenado en cache su servidor COM por razones de rendimiento. Para volver a generar su servidor COM, es posible que primero necesite terminar el proceso que tiene el servidor COM en uso, por ejemplo, la aplicación IIS Out-Of-Process Pooled Applications COM+; de otro modo, se generará un mensaje de denegación de acceso durante el proceso de generación del proyecto. Este proceso puede ser incómodo si debe probar y reconstruir el servidor COM frecuentemente. El project hook en la biblioteca foundation class de servicios Web XML, _WS3Utils.vcx, puede facilitarle este proceso.

Nota Puede ser que necesite cambiar la configuración por defecto del project hook para la aplicación final, dependiendo de cual plataforma del sistema operativo y versión del IIS este ejecutando.

Para más información, Vea Servicios Web XML (Foundation Class).

Distribución de Servicios Web XML

Cuando distribuya aplicaciones en Visual FoxPro que usen servicios Web XML, debe incluir los componentes redistribuibles de el SOAP Toolkit. Si su aplicación solo accede a servicios Web XML existentes, deberá incluir solo el módulo combinado SOAP Client.

Para aplicaciones que publiquen servicios Web XML, debe incluir el cliente y los modulos combinados del servidor del SOAP Toolkit. En adición, debe incluir los archivos de soporte específicos del servidor, por ejemplo, ASP listener y archivos WSDL. Tambien debería considerar usar los archivos de la biblioteca foundation class de servicios Web XML, _WS3Utils.vcx y _WS3Client.vcx, para automatizar este proceso cuando ejecute la aplicación distribuida por primera vez.

Si automatiza el proceso de publicación de servicios Web XML, puede crear un directorio virtual y generar los archivos de soporte al momento. Sin embargo, se recomienda que realice extensas pruebas de configuracion si selecciona este método para la distribución.

Vea tambien

Servicios Web XML en Visual FoxPro 8.0 | Accediendo a servicios Web XML


Automatización y Servidores COM

Puede ampliar la funcionalidad de sus aplicaciones Visual FoxPro sin invertir más tiempo de codificación, gracias a la automatización y los servidores COM. Con la automatización puede controlar otras aplicaciones, como Microsoft Excel, desde su propia aplicación. Los servidores COM le permiten empaquetar rutinas complejas en componentes reutilizables.

En esta sección

Controlar Visual FoxPro desde otras aplicaciones
Discute cómo controlar Visual FoxPro desde otras aplicaciones utilizando el objeto Application de Visual FoxPro. Las aplicaciones que admiten automatización pueden crear instancias de Visual FoxPro, ejecutar comandos Visual FoxPro y acceder a objetos Visual FoxPro.
Visual FoxPro y COM avanzado
Muestra cómo tomar ventaja de las características COM en Visual FoxPro, implementando interfaces y enlazando eventos. Discute el funcionamiento interno de enlazar temprano versus enlazar tarde para el cliente y el servidor, el rendimiento de COM, y la creación de objetos COM más descubribles.
Crear servidores de Automatización
Describe los pasos y problemas al crear, compilar y registrar un servidor de automatización utilizando Visual FoxPro. Un servidor de automatización es una aplicación de componente COM que expone la funcionalidad que otras aplicaciones pueden utilizar y reutilizar a través de la automatización.
Bibliotecas de tiempo de ejecución de Visual FoxPro
Visual FoxPro incorpora dos bibliotecas de tiempo de ejecución independientes, una para los tipos de aplicación más usuales y otra para las aplicaciones de servidor en proceso sumamente escalables.
Consideraciones y limitaciones para diseñar servidores
Existen determinados comportamientos, procesos y limitaciones que pueden determinar la efectividad de una aplicación de servidor.

Secciones relacionadas

Crear Servicios Web y componentes
Describe como habilitar una aplicación Visual FoxPro para trabajar con varios usuarios, tomando ventaja de controles ActiveX y automatización, y agregar características internacionales.
Servicios Web XML en Visual FoxPro 8.0
Visual FoxPro hace posible el uso de servicios web XML en sus aplicaciones. Un servicio web XML es una clase (objeto) distribuida en Internet, a la que se puede tener acceso por programación a través de llamadas normales orientadas a objeto.
Interoperabilidad e Internet
Use arrastrar y soltar de OLE para programar aplicaciones que le permitan mover datos entre aplicaciones para Microsoft Windows y en una aplicación de Visual FoxPro. Cree documentos para utilizarlos en Internet, o utilice uno de los dos tiempos de ejecución diferentes de Visual FoxPro para crear componentes COM (servidores de automatización) como aplicaciones normales o de subproceso.


Controlar Visual FoxPro desde otras aplicaciones

Dado que Visual FoxPro actúa como servidor (con compatibilidad de nivel 2) y como cliente, las aplicaciones que admiten Automatización pueden crear instancias de Visual FoxPro, ejecutar comandos de Visual FoxPro y tener acceso a sus objetos.

Puede controlar Visual FoxPro desde otras aplicaciones mediante el objeto Application de Visual FoxPro. Se crea automáticamente un objeto Application siempre que se inicia Visual FoxPro directamente, mediante DDE o mediante Automatización.

Por ejemplo, las líneas de código siguientes en Visual Basic® o en un módulo de Microsoft Excel, crean una referencia a un objeto Application de Visual FoxPro:

Dim oFox as Object
Set oFox = CreateObject("VisualFoxPro.Application")

Una vez establecida una referencia al objeto Application de Visual FoxPro, puede llamar a métodos asociados con el objeto y tener acceso a otros objetos mediante las propiedades de la colección del objeto Application.

Métodos del objeto Application

DataToClip | Help
DoCmd | Quit
Eval | RequestData

El ejemplo siguiente usa Visual Basic para código de aplicaciones en un módulo Excel para crear un objeto Application de Visual FoxPro, abrir una tabla de Visual FoxPro y agregar los resultados de una consulta a la hoja de cálculo activa:

Sub FoxTest()
Dim oFox as Object
Set oFox = CreateObject("VisualFoxPro.Application")
oFox.DoCmd "USE customer"
oFox.DoCmd "SELECT contact, phone FROM customer
WHERE country = " + Chr$(39) + USA+ Chr$(39) + " INTO CURSOR cust"
oFox.DataToClip "cust",,3
Range("A1:B1").Select
ActiveSheet.Paste
End Sub

Modelo de objeto Application de Visual FoxPro

Cada vez que inicia Visual FoxPro se crea un objeto Application automáticamente, ya sea directamente, a través de Automatización o de DDE. Este objeto Application proporciona acceso a todos los objetos creados en una sesión de Visual FoxPro a través de las propiedades Collection.

Modelo de objeto Application de Visual FoxPro

Acceso a objetos a través de las propiedades Collection

El objeto Application de Visual FoxPro y todos los objetos contenedores de Visual FoxPro tienen asociada una propiedad Count y una propiedad Collection. La propiedad Collection es una matriz que hace referencia a cada objeto contenido. La propiedad Count es una propiedad numérica que indica el número de objetos contenidos.

En la tabla siguiente se muestran los objetos y la propiedades Collection y Count correspondientes.

Objeto | Collection (Propiedad) | Count (Propiedad)
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
Columna | Controls | ControlCount
ToolBar | Controls | ControlCount
Container | Controls | ControlCount
Control | Controls | ControlCount

Estas propiedades le permiten usar un bucle de programación para administrar todos los objetos o sólo los que están contenidos específicamente. Por ejemplo, las líneas de código siguientes establecen la propiedad Visible de todos los formularios como True (.T.):

FOR EACH Form IN Application.Forms
Form.Visible = .T.
ENDFOR

Vea también

Crear subclases de objetos | Crear servidores de Automatización | Agregar OLE


Visual FoxPro y COM avanzado

Se puede aprovechar las características COM en Visual FoxPro al implementar interfaces y enlace de eventos. Las versiones anteriores de Visual FoxPro proporcionaban soporte para enlace en tiempo de compilación (early binding) en servidores COM, pero sólo soportaban enlace en tiempo de ejecución (late binding) como clientes. Visual FoxPro ahora soporta enlace en tiempo de compilación para clientes. Este tema discute el trabajo interno del enlace en tiempo de compilación versus en tiempo de ejecución tanto como cliente y como servidor, así como el rendimiento de COM y cómo hacer objetos COM más distribuibles.

Contenido

Introducción

Crear un servidor COM simple en Visual FoxPro

Bibliotecas de tipos

Rendimiento

Usar Visual Basic como un cliente

Control de errores

Interfaz

Enlace de eventos

Usar las etiquetas inteligentes (Smart Tags) de Office XP

Diseño del Visual FoxPro Callback

Introducción

COM fue desarrollado para hacer posible que las aplicaciones se traten como objetos, los que pueden llamarse unos a otros. Las relaciones entre objetos pueden tomar muchas formas. La forma más simple es un objeto cliente, el cual puede llamar a un objeto servidor. Ejemplos de interacciones de objetos que son más complejas que este escenario cliente-servidor incluyen objetos de punto a punto (peer-to-peer) que pueden llamarse el uno al otro.

Si los objetos no tienen conocimiento previo de cada uno de ellos, debe existir alguna manera para que los objetos describan cómo pueden ser llamarlos. Las interfaces de eventos son ejemplos de objetos que describen estas interfaces de retorno de llamada (callback). Estas son interfaces que no son implementadas por el programador del objeto de software, sino que son implementadas por un cliente del objeto. Los controles Active X de Microsoft son un ejemplo de objetos COM con interfaces muy sofisticadas. Estas interfaces (tanto en el control como en el contenedor) hacen posible que el control actúe como un control nativo en un sitio contenedor. El sitio contenedor puede implementar la interfaz de eventos del control. Esta combinación puede ser muy potente en manos del desarrollador.

Este tema comienza con servidor COM muy simple en Microsoft Visual FoxPro y muestra cuan útil es. Luego, cubre las bibliotecas de tipos, cómo se las puede leer para descubrir cómo el objeto COM se expone a sí mismo al mundo, el rendimiento y el control de errores. Finalmente, habla acerca de lo que es una interfaz y sobre su implementación.

Otra dimensión de la llamada de objetos es cómo se llaman unos a otros. Visual FoxPro 6.0 hizo posible el enlace en tiempo de compilación y el enlace en tiempo de ejecución de clientes para llamar servidores de Visual FoxPro 6.0, pero Visual FoxPro 6.0 solamente podía llamar a servidores empleando enlace en tiempo de ejecución. La versión actual de Visual FoxPro incluye la capacidad de enlace en tiempo de compilación para llamadas de clientes.

Crear un servidor COM simple de Visual FoxPro

Crear un archivo PRG, el cual se llamará MYCLASS.PRG, con el siguiente código:

* Este programa completamente autocontenido construirá un servidor COM
* llamado "myserver.myclass"
* Él va a quitar del registro una instancia previa si existe
IF PROGRAM() != "MYCLASS"
?"this file MUST BE NAMED 'myclass.prg'"
return
ENDIF
IF FILE("myclass.dll")
DECLARE integer DllUnregisterServer IN myclass.dll
DllUnregisterServer()
CLEAR DLLS
ENDIF
BUILD PROJECT myserver FROM myclass
BUILD DLL myserver from myserver recomp
* Ahora pruebe este servidor COM:
ox = CreateObject("myserver.myclass")    && crea el objeto servidor
ox.mydocmd("USE home(1)+'samples\data\customer'")    && use una tabla
?ox.myeval("RECCOUNT()")    && obtiene el número de registros
DEFINE CLASS myclass AS session OLEPUBLIC
PROCEDURE MyDoCmd(cCmd as String) as Variant ;
helpstring "Execute a VFP cmd"
&cCmd    && Ejecuta parm como si fuera un comando fox
FUNCTION MyEval(cExpr as String) ;
helpstring "Evaluate a VFP expression"
RETURN &cExpr    && evalua parm como si fuera una expresión fox
FUNCTION Error(nError, cMethod, nLine)
COMreturnerror(cMethod+'  err#='+str(nError,5)+;
'  line='+str(nline,6)+' '+message(),_VFP.ServerName)
&& Esta línea nunca se ejecuta
ENDDEFINE

Un programa con esta estructura construye servidores COM y no contamina el registro. Observe que el código antes de la definición de clase se ejecuta sólo en tiempo de generación. Al generar un servidor COM automáticamente se registra en el registro. Al regenerar el servidor, automáticamente se desregistra primero. No obstante, la información para desregistrarlo se guarda en el archivo PJX. Si el archivo PJX se borra y se reconstruye, las entradas al registro no se eliminan cuando se genera un nuevo PJX.

Ahora, ha generado su primer servidor. Al generar un servidor en Visual FoxPro también se genera la biblioteca de tipos y se registra información en el registro del sistema incluyendo el ProgId, biblioteca de tipos y ubicación del archivo. El proceso de generación crea un archivo denominado myserver.vbr, el cual muestra qué claves del registro se cambiaron para registrar correctamente al servidor.

Observar que se está usando la clase base SESSION nueva para Visual FoxPro 6.0 SP3. Es una clase base muy liviana que no es visual y solamente tiene la propiedad DataSession para hacer posible la separación de sesiones de datos. Cuando se generan servidores COM, la clase base FORM también tiene una propiedad DataSession, pero también tiene muchas otras propiedades que son irrelevantes para un servidor COM. Además, estas propiedades se escriben de manera predeterminada en la biblioteca de tipos a menos que se marquen como protegidas u ocultas.

Biblioteca de tipos

Una biblioteca de tipos es un archivo que puede ser independiente o estar incrustado como un recurso dentro de un EXE o DLL. Es un método independiente del lenguaje de publicar interfaces, propiedades y métodos de un objeto COM. Puede contener cadenas de texto de ayuda, identificadores de ayuda de contexto, nombres de parámetros y nombres de miembros (propiedades y métodos). Si no está incrustado dentro de un EXE o DLL, las extensiones típicas del archivo son TLB u OLB.

Las bibliotecas de tipos generadas por Visual FoxPro 6.0 contienen los nombres de métodos y parámetros de métodos OLE Public. Si hay una descripción en el campo Description de la clase en el VCX, esa descripción se coloca en la biblioteca de tipos como una cadena de texto de ayuda.

Se puede visualizar una biblioteca de tipos empleando una variedad de herramientas. Por ejemplo, el Explorador de objetos en Microsoft Excel o Microsoft Word, el Explorador de clases en Visual FoxPro o el Visor OLE en Visual C++. Se puede ver que las bibliotecas de tipos pueden contener modelos completos de objetos de una aplicación servidora y pueden ser bastante extensas.

Cuando una herramienta está visualizando la biblioteca de tipos, no se puede regenerar el servidor porque la biblioteca de tipos no se puede rescribir. Si un cliente ha instanciado el servidor, tampoco se puede regenerar. Una manera de evitar este problema es utilizar una copia de la DLL o EXE.

Leer una biblioteca de tipos

Se incluye una herramienta de lectura de bibliotecas de tipos (TLBINF32.DLL) con Microsoft Visual Studio. Es una herramienta diseñada para ser usada por múltiples productos, por lo que está escrita como un servidor COM. Aquí hay una muestra de código para leer la biblioteca de tipos del ejemplo creado anteriormente.

clear
PUBLIC otlb
otli=NEWOBJECT('tli.tliapplication')
otlb=otli.TypeLibInfoFromFile("myserver.dll")
*otlb=otli.TypeLibInfoFromFile("tlbinf32.dll")
*otlb=otli.TypeLibInfoFromFile("c:\program files\microsoft office\office\excel9.olb")
?"CoClasses:"
FOR each oCoClass in otlb.CoClasses
?"  ",oCoClass.name
*now each interface associated with this CoClass
for each oInterface in oCoClass.Interfaces
?"     ",oInterface.name
endfor
endfor
?
?"Interfaces"
FOR each oInterface in otlb.Interfaces
?"  ",oInterface.name
ENDFOR
?
?"Interface Members for 1st interface"
FOR each oMember IN otlb.Interfaces(1).Members
?"  ", oMember.name
FOR each oParm in oMember.Parameters
?"             ",oParm.name
ENDFOR
ENDFOR

Este código primero crea una instancia de la herramienta de lectura de la TLB y luego invoca el método TypeLibInfoFromFile para cargar una biblioteca de tipos. Los ítems dentro de la biblioteca se representan como varias colecciones, que pueden ser manipuladas fácilmente en Visual FoxPro utilizando la construcción FOR EACH.

La colección Interfaz es una colección de interfaces descrita en la biblioteca de tipos. Estas interfaces pueden ser aquellas implementadas por el servidor o podrían ser interfaces que deberían ser implementadas por un cliente, por ejemplo, en el caso de Event.

La colección CoClass describe los objetos COM que pueden ser creados por un cliente. Se muestra la interfaz predeterminada implementada por CoClass junto a una interfaz opcional Event Source.

Además de las interfaces predeterminadas CoClass y Event se podrían describir otras. La manera que un cliente obtiene estas otras interfaces podría ser a través de una llamada a un método. Por ejemplo, una interfaz ICell podría ser retornada por un método denominado GetCell.

También se pueden definir constantes en una biblioteca de tipos. Por ejemplo, para obtener las constantes tales como xlMaximized de la biblioteca de tipos de Excel, explorar la colección otlb.Constants.

Una manera de aprender cómo usar la herramienta TLBINF32.DLL es usarla sobre sí mismo. Esto mostrará las propiedades, métodos, parámetros, etc., que son útiles.

Rendimiento

Rendimiento significa muchas cosas para mucha gente. En el contexto del software y de los objetos COM, rendimiento significa obtener resultados más rápido. COM es hacer que módulos de software se comuniquen unos con otros. Por lo tanto, mejorando las comunicaciones COM se logrará mejor rendimiento.

Por ejemplo, considere el siguiente código:

ox=CreateObject("excel.application")
start = seconds()
ox.workbooks.add
SET EXCLUSIVE OFF
USE HOME()+'samples\data\customer'
ox.visible=1
FOR i= 1 TO RECCOUNT()
FOR J = 1 TO FCOUNT()
ox.Activesheet.cells(i,j).value = EVAL(FIELD(j))
NEXT
SKIP
NEXT
ox.Workbooks(1).Close(0)   && cierra el workbook, descartando los cambios
ox=0   && release Excel
?seconds() - start

Se llena una planilla Excel con los valores de una tabla. Este código tarda alrededor de 30 segundos en ejecutarse con 92 registros en el PC del autor.

Cuando se trate de mejorar el rendimiento, debe tenerse en mente exactamente qué está ocurriendo y tratar de imaginar cuáles son los cuellos de botella.

Haciendo que la planilla sea visible sólo después de que esté llena y no antes, se gana algo de tiempo. Si Excel trabaja no maximizado es un poco más rápido.

Notar que la mayor parte del tiempo es consumido ejecutando la única línea de código que asigna un valor a la celda. Se pueden eliminar todas las llamadas COM cambiando esta línea por:

      oa= EVAL(FIELD(j))

Esto obviamente cambia la intención del código pero hace que el lazo doble se ejecute en sólo un segundo. Esto indica que 29 segundos se gastan en la evaluación de la parte ox.Activesheet.cells de la línea.

Analizando la línea más profundamente, Visual FoxPro evalúa ox.Activesheet y luego el resultado se coloca en una variable temporal. Luego este valor temporal es liberado de la referencia para obtener la colección de celdas. Cada "." en la expresión resulta en un valor temporal que es obtenido y luego liberado para obtener un nuevo valor.

Cada una de esta referencias liberadas del operador "." es en realidad una llamada de ida y vuelta del método COM a Excel, invocando un método de Excel que devuelve un valor. Primero, se invoca el método IApplication.ActiveSheet, el cual retorna a Visual FoxPro una referencia temporal a la hoja activa. Después, se emplea la interfaz del objeto para obtener la colección de celdas. Luego, la colección libera la referencia, usando los índices de celda como parámetros para obtener una referencia objeto a una única celda. Entonces, se asigna un nuevo valor a la propiedad value de la celda (otro viaje ida y vuelta COM). Esto totaliza cuatro viajes de ida y vuelta.

Al obtener una referencia objeto a ox.Activesheet antes del doble lazo anidado y usando esa referencia resulta en una mejora de alrededor del 50 por ciento.

oa = ox.Activesheet    && obtiene una referencia objeto
FOR i= 1 TO RECCOUNT()
FOR J = 1 TO FCOUNT()
oa.cells(i,j).value = EVAL(FIELD(j))
NEXT
SKIP
NEXT

Como Activesheet es invariante con respecto al doble lazo, se puede obtener una referencia a ella antes de ejecutar el lazo y guardarla en una variable. Esto elimina un viaje de ida y vuelta reduciendo el total a tres.

El número de viajes de ida y vuelta disminuyó en un 25 por ciento, pero el tiempo disminuyó en un 50 por ciento. La eliminación de un número de viajes de ida y vuelta no resulta en una disminución proporcional del tiempo total. El tiempo fijo de crear y liberar algunas variables temporarias, la fracción del tiempo realmente utilizado por el servidor en la ejecución del código y otros factores, no son lineales.

Nota El código anterior no tiene necesidad de usar Activesheet. La colección de celdas también se encuentra en la interfaz Iapplication. Se la empleó aquí sólo con fines ilustrativos.

Usar Visual Basic como un Cliente

Se puede usar Visual Basic como un cliente para realizar la misma tarea.

Para usar Visual Basic como un cliente

  1. Iniciar Excel.
  2. En el menú Herramientas, apuntar a Macro.
  3. Hacer clic en Macros, y nombrarlo t.
  4. Hacer clic en Crear.
  5. En el menú Herramientas, hacer clic en Referencias y agregar la biblioteca de tipos myserver a las referencias.

    Esto hace posible que la información de la biblioteca de tipos myserver pueda ser usada en el macro.

  6. Pegar el siguiente código:
    Sub t()
Dim ox As New myserver.myclass
ox.mydocmd ("set exclusive off")
ox.mydocmd ("use d:\fox70\test\customer")
n = ox.MyEval("reccount()")
nflds = ox.MyEval("fcount()")
nsecs = ox.MyEval("seconds()")
For i = 1 To n
For j = 1 To nflds
cc = "evaluate(field(" & j & "))"
Application.Sheets(1).Cells(i, j).Value = ox.MyEval(cc)
Next
ox.mydocmd ("skip")
Next
MsgBox (ox.MyEval("seconds()") - nsecs)
End Sub

Control de errores

El control de errores es muy importante en servidores COM servers y muy particularmente en servidores DLL. Si el cliente invocara un método del servidor que ocasionara algún tipo de error, tal como Archivo no encontrado o Acceso denegado, no sería bueno que el servidor muestre un cuadro de mensaje indicando el error. El programador debería usar el método Error de la clase OLE Public para manejar elegantemente tales errores. Una nueva función en Visual FoxPro 6.0, llamada COMReturnError, provocará la creación de un objeto COM Error que retornará al cliente COM. Tiene dos parámetros: el origen y la descripción. Se pueden colocar las cadenas de texto que se deseen en estos parámetros. Este método de ejemplo puede ser pegado directamente en la muestra anterior de myserver.

FUNCTION Error(nError, cMethod, nLine)
COMreturnerror(cMethod+'  err#='+str(nError,5)+'  line='+str(nline,6)+'
'+message(),_VFP.ServerName)
&& this line is never executed

Se puede invocar este método de error llamando al método MyDocmd con un comando no válido:

ox = CreateObject("myserver.myclass")    && Crea el objeto servidor
?ox.mydocmd("illegal command")    && Provoca que ocurra un error

El error que ocurre en el servidor es atrapado por el método MyClass::Error, el cual entonces provoca que el servidor aborte el procesamiento y retorne el objeto COM Error con valores cargados en el origen y en la descripción.

?aerror(myarray)
list memo like myarray
MYARRAY     Pub    A
(   1,   1)     N  1429        (      1429.00000000)
(   1,   2)     C  "OLE IDispatch exception code 0 from mydocmd
err#=   16  line=     2 Unrecognized command v
erb.: c:\fox\test\myserver.exe.."
(   1,   3)     C  "c:\fox\test\myserver.exe"
(   1,   4)     C  "mydocmd  err#=   16  line=     2 Unrecognized
command verb."
(   1,   5)     C  ""
(   1,   6)     N  0           (         0.00000000)
(   1,   7)     N  0           (         0.00000000)

Interfaz

Operacionalmente, una interfaz COM puede ser pensada como un puntero a una tabla de direcciones de función. Esta tabla a veces es llamada vtable o tabla virtual de función. La definición de la interfaz incluye el número de entradas en esta tabla, la asociación entre el nombre del método y el índice de la tabla, y las firmas de función para las llamadas a cada método. La firma consiste en el número de parámetros, los tipos de los parámetros y el valor de retorno.

Todas las interfaz COM se heredan de IUnknown. Esto significa que las primeras tres entradas en vtable para cada interfaz COM se definen como las direcciones de la implementación del servidor de IUnkown::QueryInterface, IUnkown::AddRef y IUnkown::Release.

Cuando una interfaz se hereda de otra interfaz, todo ello significa que la vtable de las interfaces consiste en las tablas virtuales de función de las interfaces heredadas primero.

Las interfaz duales con interfaz COM que se heredan de la interfaz IDispatch. La interfaz IDispatch tiene sólo cuatro métodos: GetTypeInfoCount, GetTypeInfo, GetIDsOfNames e Invoke. Así, las primeras siete interfaz están bien definidas en una interfaz IDispatch interfaz y cualquier otra interfaz heredada de IDispatch.

Para Myserver.dll creada antes, la interfaz dual IMyClass aparecería como esto:

   IMyClass
QueryInterface(QI params)  (from IUnknown)
Addref                     (from IUnknown)
Release                    (from IUnknown)
GetTypeInfoCount()         (from IDispatch)
GetTypeInfo()              (from IDispatch)
GetIDsOfNames()            (from IDispatch)
Invoke()                   (from IDispatch)
MyDoCmd(cCmd)              (from IMyClass)
MyEval(cExpr)              (from IMyClass)

Suponga que el cliente desea llamar al método Activesheet de la interfaz dual IApplication sobre el servidor. La llamada real puede hacerse de dos maneras: con enlace en tiempo de compilación (early binding) y con enlace en tiempo de ejecución (late binding). El enlace en tiempo de compilación a veces se denomina enlace de VTtable, porque justamente significa que el cliente llama al servidor, encontrando la dirección de Activesheet directamente en vtable. Esta dirección de función es una entrada en vtable y será mayor que siete. Este índice de dirección de función está codificado rígidamente en el llamado del cliente en tiempo de compilación y se conoce como enlace en tiempo de compilación. Si versiones subsiguientes del servidor modifican el orden de vtable, las llamadas del cliente con enlace en tiempo de compilación podrían ser erróneas.

Los enlaces en tiempo de ejecución van a través de la interfaz IDispatch. El cliente llama a IDispatch::GetIDsOfNames con la cadena de texto Activesheet para obtener el identificador de función (function ID) de aquella función. (Este identificador de función puede ser almacenado en memoria para llamadas subsiguientes). El cliente entonces empaqueta todos los parámetros de Activesheet en una única estructura DISPPARAMS y se llama a la función IDispatch::Invoke con el identificador de función y DISPPARAMS como parámetros. La implementación de IDispatch::Invoke sobre el lado servidor desempaqueta la estructura DISPPARAMS, hace el llamado real a Activesheet, obtiene el valor de retorno y lo devuelve al cliente.

Como el enlace en tiempo de ejecución no codifica rígidamente el índice de función de las llamadas de métodos, los clientes no necesitan conocer en tiempo de compilación cuál es el índice de función para los métodos y todavía funcionarán aun cuando una nueva versión del servidor reordene el orden de vtable o se cambien las firmas de los métodos. Sin embargo, el empaquetado de parámetros del lado cliente y el desempaquetado sobre el lado servidor agrega un tiempo de ejecución a la llamada de métodos que no existe con las llamadas con enlace en tiempo de compilación.

Implementar una Interfaz

Implementar una interfaz significa examinar las propiedades, eventos y métodos de un objeto y crear un objeto nuevo que tiene exactamente las mismas propiedades, eventos y métodos. Esto incluye cualquier parámetro, tipos de parámetros y valores de retorno. En otras palabras, si un objeto sabe cómo llamar a otro objeto usando una interfaz específica, entonces también conoce cómo llamar a cualquier objeto que implemente la misma interfaz específica.

Implementar una interfaz asegura al cliente que todo método en esa interfaz se puede llamar. Esto significa que si hay un método llamado Sample(parm1 as int, parm2 as string, parm3 as variant @) as int, entonces se debe encontrar una firma de método idéntica en el objeto.

En el siguiente ejemplo ADO, si un parámetro se elimina de la firma del método, al ejecutar el código se obtiene el mensaje:

La clase no puede ser instanciada porque el miembro 'RECORDSETEVENTS_WillChangeField' tiene un incorrecto # de parámetros

Similarmente, al eliminar un método se obtiene otro mensaje de error.

Como se mencionó antes, las interfaces se describen en las bibliotecas de tipos para ser visibles a todos. El Explorador de objetos de Visual FoxPro 7.0 (en el menú Herramientas) hace posible inspeccionar las bibliotecas de tipos. Si se arrastra una interfaz desde él sobre un PRG abierto con el editor de Visual FoxPro, entonces el explorador de objetos generará las firmas de método requeridas para implementar la interfaz.

Enlace de eventos

La habilidad de implementar interfaces hace posibles varias capacidades interesantes con Microsoft Office. Este ejemplo implementa los eventos para Microsoft Outlook, Excel y Word. Tal como se puede ver por los nombres de los métodos, cada aplicación Office proporciona diferentes interfaces. El nuevo comando EventBinding en la versión actual de Visual FoxPro hace posible para el programador enlazar una clase Visual FoxPro que implementa una interfaz a un objeto COM que es origen de evento y publicador.

Este modelo se denomina de eventos fuertemente acoplados. El cliente y el servidor deben tener un íntimo conocimiento el uno del otro y hay una correspondencia uno a uno entre los objetos. Un nuevo modelo de interacción de eventos de objeto se llama eventos débilmente acoplados, en el cual un objeto puede publicar eventos y otro objeto puede suscribir a esos eventos.

CLEAR
CLEAR all
PUBLIC ox as Excel.Application, ;
ow as word.application, ;
oOutlook as Outlook.Application
oOutlookEvents= NEWOBJECT('OutlookEvents')
oOutlook = NEWOBJECT("Outlook.Application")
oOutlookEvents.oo = oOutlook
? "Outlook",EVENTHANDLER( oOutlook, oOutlookEvents)
oWordEvents = NEWOBJECT("WordEvents")
ow = NEWOBJECT("word.application")
oWordEvents.ow = ow
?"Word",EVENTHANDLER(ow,oWordEvents)
ow.visible = .t.
ow.Activate
ow.Documents.Add
oExcelEvents = NEWOBJECT("ExcelEvents")
oex = NEWOBJECT("excel.application")
oex.Workbooks.Add
?"Excel",EVENTHANDLER(oex, oExcelEvents)
oex.visible = .t.
_screen.WindowState= 1
DEFINE CLASS OutlookEvents AS SESSION OLEPUBLIC
IMPLEMENTS ApplicationEvents IN Outlook.Application
oo = .null.
PROCEDURE ApplicationEvents_ItemSend(ITEM AS VARIANT, ;
CANCEL AS LOGICAL) AS VOID
?PROGRAM()
m.item.Body=STRTRAN(m.item.Body,"good","bad") + ;
CHR(13)+CHR(10)+TRANSFORM(DATETIME())+" Fox was here!"
*      if Recipients fails, it could be outlook security
*      m.item.Recipients.Add("anyone@anywhere.com")
PROCEDURE ApplicationEvents_NewMail() AS VOID
?PROGRAM()
PROCEDURE ApplicationEvents_Reminder(ITEM AS VARIANT) AS VOID
?PROGRAM()
PROCEDURE ApplicationEvents_OptionsPagesAdd(PAGES AS VARIANT) AS VOID
?PROGRAM()
PROCEDURE ApplicationEvents_Startup() AS VOID
?PROGRAM()
PROCEDURE ApplicationEvents_Quit() AS VOID
?PROGRAM()
PROCEDURE destroy
?PROGRAM()
IF !ISNULL(this.oo)
?EVENTHANDLER(this.oo,this,.t.)
ENDIF
ENDDEFINE
DEFINE CLASS WordEvents as Custom
implements applicationevents2 in "word.application"
ow = .null.
PROCEDURE applicationevents2_startup()
?PROGRAM()
PROCEDURE applicationevents2_quit
?PROGRAM()
procedure applicationevents2_DocumentBeforeClose(Cancel,Doc)
?PROGRAM()
procedure DocumentBeforeClose(Cancel,Doc)
?PROGRAM()
procedure applicationevents2_DocumentBeforePrint(Cancel,Doc)
?PROGRAM()
procedure applicationevents2_DocumentBeforeSave(Doc,SaveAsUI,Cancel)
?PROGRAM()
procedure applicationevents2_DocumentChange
?PROGRAM()
procedure applicationevents2_DocumentOpen(Doc)
?PROGRAM()
procedure applicationevents2_NewDocument(Doc)
?PROGRAM()
procedure applicationevents2_WindowActivate(Doc,Wn)
?PROGRAM()
procedure applicationevents2_WindowBeforeDoubleClick(Sel,Cancel)
?PROGRAM()
procedure applicationevents2_WindowBeforeRightClick(Sel,Cancel)
?PROGRAM()
procedure applicationevents2_WindowDeactivate(Doc,Wn)
?PROGRAM()
procedure applicationevents2_WindowSelectionChange(Sel)
?PROGRAM(),sel.text
IF sel.start < sel.end
sel.InsertAfter("Fox!")
*!*         mtmp = sel.text
*!*         sel.text=STRTRAN(mtmp,"good","Great!")
endif
PROCEDURE destroy
?PROGRAM()
IF !ISNULL(this.ow)
?EVENTHANDLER(this.ow,this,.t.)
ENDIF
ENDDEFINE
DEFINE CLASS ExcelEvents AS session OLEPUBLIC
IMPLEMENTS AppEvents IN "excel.application"
PROCEDURE AppEvents_NewWorkbook(Wb AS VARIANT) AS VOID
?PROGRAM()
PROCEDURE AppEvents_SheetSelectionChange(Sh AS VARIANT, ;
Target AS VARIANT) AS VOID
LOCAL mtmp,mcell
mcell = m.target.Cells(1,1)
IF !ISNULL(mcell)
mtmp = m.target.Cells(1,1).Value
?PROGRAM(),VARTYPE(mtmp)
DO case
case ISNULL(mtmp)
*         m.target.Cells(1,1).Value  = "Fox is great"
CASE VARTYPE(mtmp)='C'
m.target.Cells(1,1).Value = ;
STRTRAN(mtmp,"good","great!")
CASE VARTYPE(mtmp)='N'
m.target.Cells(1,1).Value = mtmp + 1
ENDCASE
ENDIF
PROCEDURE AppEvents_SheetBeforeDoubleClick(Sh AS VARIANT, ;
Target AS VARIANT, Cancel AS LOGICAL) AS VOID
?PROGRAM()
PROCEDURE AppEvents_SheetBeforeRightClick(Sh AS VARIANT, ;
Target AS VARIANT, Cancel AS LOGICAL) AS VOID
?PROGRAM()
PROCEDURE AppEvents_SheetActivate(Sh AS VARIANT) AS VOID
?PROGRAM()
PROCEDURE AppEvents_SheetDeactivate(Sh AS VARIANT) AS VOID
?PROGRAM()
PROCEDURE AppEvents_SheetCalculate(Sh AS VARIANT) AS VOID
?PROGRAM()
PROCEDURE AppEvents_SheetChange(Sh AS VARIANT, Target AS VARIANT) AS
VOID
?PROGRAM()
PROCEDURE AppEvents_WorkbookOpen(Wb AS VARIANT) AS VOID
?PROGRAM()
PROCEDURE AppEvents_WorkbookActivate(Wb AS VARIANT) AS VOID
?PROGRAM()
PROCEDURE AppEvents_WorkbookDeactivate(Wb AS VARIANT) AS VOID
?PROGRAM()
PROCEDURE AppEvents_WorkbookBeforeClose(Wb AS VARIANT, ;
Cancel AS LOGICAL) AS VOID
?PROGRAM()
PROCEDURE AppEvents_WorkbookBeforeSave(Wb AS VARIANT, ;
SaveAsUI AS LOGICAL, Cancel AS LOGICAL) AS VOID
?PROGRAM()
PROCEDURE AppEvents_WorkbookBeforePrint(Wb AS VARIANT, ;
Cancel AS LOGICAL) AS VOID
?PROGRAM()
PROCEDURE AppEvents_WorkbookNewSheet(Wb AS VARIANT, ;
Sh AS VARIANT) AS VOID
?PROGRAM()
PROCEDURE AppEvents_WorkbookAddinInstall(Wb AS VARIANT) AS VOID
?PROGRAM()
PROCEDURE AppEvents_WorkbookAddinUninstall(Wb AS VARIANT) AS VOID
?PROGRAM()
PROCEDURE AppEvents_WindowResize(Wb AS VARIANT, Wn AS VARIANT) AS VOID
?PROGRAM()
PROCEDURE AppEvents_WindowActivate(Wb AS VARIANT, Wn AS VARIANT) AS
VOID
?PROGRAM()
PROCEDURE AppEvents_WindowDeactivate(Wb AS VARIANT, Wn AS VARIANT) AS
VOID
?PROGRAM()
PROCEDURE AppEvents_SheetFollowHyperlink(Sh AS VARIANT, ;
Target AS VARIANT) AS VOID
?PROGRAM()
PROCEDURE AppEvents_SheetPivotTableUpdate(Sh AS VARIANT, ;
Target AS VARIANT) AS VOID
?PROGRAM()
PROCEDURE AppEvents_WorkbookPivotTableCloseConnection(Sh AS VARIANT, ;
Target AS VARIANT) AS VOID
?PROGRAM()
PROCEDURE AppEvents_WorkbookPivotTableOpenConnection(Sh AS VARIANT, ;
Target AS VARIANT) AS VOID
?PROGRAM()
ENDDEFINE

Aquí hay un ejemplo de implementación de interfaces de eventos ADO. En este caso, el usuario no está interactuando con la aplicación y provocando que ocurran eventos, como en los ejemplos de Office anteriores. Aquí, el usuario está llamando directamente a ADO empleando llamadas a métodos y ADO está llamando al cliente usando su interfaz de eventos.

clear
CLEAR all
local ox as adodb.recordset
local oc as ADODB.Connection
oe = NEWOBJECT("myclass")
oe2 = NEWOBJECT("myclass")
oc=NEWOBJECT("adodb.connection")
connstr = "Driver={Microsoft Visual FoxPro Driver};UID=;PWD=;SourceDB=" + ;
HOME(1)+"samples\data\testdata.dbc" + ;
";SourceType=DBC;Exclusive=No;BackgroundFetch=No;Collate=Machine;"
*
oc.ConnectionString= connstr
oc.Open
ox = oc.Execute("select * from customer")
* Now enable event handling
?EVENTHANDLER(ox,oe)
?EVENTHANDLER(ox,oe2)
?
?PADR(ox.Fields(0).Value,20)
?EVENTHANDLER(ox,oe2,.f.) && Turn off 2nd obj event handling
ox.MoveNext
?PADR(ox.Fields(0).Value,20)
ox.MoveNext
CLEAR all
retu
for i = 0 to ox.Fields.Count-1
*   ?PADR(ox.Fields(i).Name,20)
*   ?ox.Fields[i].value
endfor
DEFINE CLASS myclass AS session
implements RecordsetEvents IN "adodb.recordset"
*  implements RecordsetEvents IN ;
*"C:\PROGRAM FILES\COMMON FILES\SYSTEM\ADO\MSADO15.DLL"
PROCEDURE Recordsetevents_WillChangeField(cFields AS Number @, ;
Fields AS VARIANT @, adStatus AS VARIANT @, ;
pRecordset AS VARIANT @) AS Void
? " "+program() + ' ' + TRANSFORM(DATETIME())
PROCEDURE Recordsetevents_FieldChangeComplete(;
cFields AS Number @, ;
Fields AS VARIANT @, pError AS VARIANT @, ;
adStatus AS VARIANT @, pRecordset AS VARIANT @) AS Void
? " "+program() + ' ' + TRANSFORM(DATETIME())
PROCEDURE Recordsetevents_WillChangeRecord(adReason AS VARIANT @, ;
cRecords AS Number @, adStatus AS VARIANT @, ;
pRecordset AS VARIANT @) AS Void
? " "+program() + ' ' + TRANSFORM(DATETIME())
PROCEDURE Recordsetevents_RecordChangeComplete(adReason AS VARIANT @, ;
cRecords AS Number @, pError AS VARIANT @, ;
adStatus AS VARIANT @, pRecordset AS VARIANT @) AS Void
? " "+program() + ' ' + TRANSFORM(DATETIME())
PROCEDURE Recordsetevents_WillChangeRecordset(adReason AS VARIANT @, ;
adStatus AS VARIANT @, pRecordset AS VARIANT @) AS Void
? " "+program() + ' ' + TRANSFORM(DATETIME())
?adreason,adstatus,precordset.recordcount
PROCEDURE Recordsetevents_RecordsetChangeComplete(;
adReason AS VARIANT @, ;
pError AS VARIANT @, adStatus AS VARIANT @, ;
pRecordset AS VARIANT @) AS Void
? " "+program() + ' ' + TRANSFORM(DATETIME())
PROCEDURE Recordsetevents_WillMove(adReason AS VARIANT @, ;
adStatus AS VARIANT @, pRecordset AS VARIANT @) AS Void
? " "+program() + ' ' + TRANSFORM(DATETIME())
PROCEDURE Recordsetevents_MoveComplete(adReason AS VARIANT @, ;
pError AS VARIANT @, adStatus AS VARIANT @, ;
pRecordset AS VARIANT @) AS Void
? " "+program() + ' ' + TRANSFORM(DATETIME())
PROCEDURE Recordsetevents_EndOfRecordset(fMoreData AS LOGICAL @, ;
adStatus AS VARIANT @, pRecordset AS VARIANT @) AS Void
? " "+program() + ' ' + TRANSFORM(DATETIME())
PROCEDURE Recordsetevents_FetchProgress(Progress AS Number @, ;
MaxProgress AS Number @, adStatus AS VARIANT @, ;
pRecordset AS VARIANT @) AS Void
? " "+program() + ' ' + TRANSFORM(DATETIME())
PROCEDURE Recordsetevents_FetchComplete(pError AS VARIANT @, ;
adStatus AS VARIANT @, pRecordset AS VARIANT @) AS void
? " "+program() + ' ' + TRANSFORM(DATETIME())
ENDDEFINE

Usar las etiquetas inteligentes (Smart Tags) de Office XP

Office XP incluye una nueva capacidad llamada etiquetas inteligentes. A medida que un empleado conocedor trabaja en una compañía, podría emplear varias aplicaciones computacionales y similares objetos en cada una. Por ejemplo, la compañía podría tener una lista de clientes y podría necesitar enviar correo electrónico, crear documentos o planillas o, incluso, ver páginas Web acerca de los clientes. Suponer por un instante que se está escribiendo un mensaje de correo electrónico sobre el cliente ALFKI y que se deba conocer el teléfono o el límite de crédito del cliente. Típicamente, esto significa cambiar a otra aplicación, la que mantiene esta información, realizar una búsqueda por ALFKI y transferir los datos al correo electrónico.

La tecnología de etiquetas inteligentes es una manera por la cual múltiples aplicaciones pueden reconocer cadenas de texto (etiquetas) dentro del texto y opcionalmente proporcionar al usuario una manera de invocar un menú directamente encima de esa etiqueta el cual puede proveer información útil o realizar tareas útiles. Una etiqueta inteligente sobre ALFKI podría no sólo ofrecer el límite de crédito y la dirección sino que también podría ofrecer la opción de ir al sitio Web del cliente, agregar a un registro de transacciones, lanzar otra aplicación o incluso discar el teléfono. El usuario podría teclear ALFKI temporalmente en cualquier aplicación que se esté usando actualmente, buscar información y luego borrar esa cadena de texto en la aplicación.

El siguiente es un ejemplo simple de la tecnología de etiquetas inteligentes que reconocen la identificación del cliente dentro de la tabla de clientes. Los verbos de acción de las etiquetas inteligentes corresponden a los campos de la tabla más uno para visitar el sitio Web del cliente. Si la aplicación es Word, el verbo para el campo inserta dicho campo en el documento Word. Para Excel, el valor del campo se inserta en la columna adyacente y se ajusta el ancho de la misma. Para Internet Explorer se muestra un mensaje (notar que aunque ésta es una DLL de Visual FoxPro DLL, se puede llamar a MessageBox utilizando Declare DLL).

Una etiqueta inteligente puede registrar su ProgID en el registro en los sitios apropiados, El Smart Tag SDK (disponible en el sitio Web de Microsoft) da más detalles sobre las etiquetas inteligentes.

Una etiqueta inteligente debe implementar dos interfaz: ISmartTagRecognizer e ISmartTagAction. La primera recorre una cadena y llama a un objeto si se reconoce la etiqueta. La segunda interface, describe las acciones posibles y realiza dichas acciones.

Nota Si se tiene cualquier aplicación Office abierta, habrá una instancia de la DLL abierta. No se podrá modificar la DLL hasta que se cierre la aplicación Office.

El método Logit escribe a un archivo de seguimiento, lo cual es una técnica útil para aprender cómo trabajan las interfaces y depurar cualquier código. Es útil emplear un editor que automáticamente refresque un archivo modificado externamente para mostrar el archivo de seguimiento.

CLEAR ALL
clear
SET excl off
?PROGRAM()
*Smart tags en Office XP. Cambiar DATAPATH,STAGPATH si es necesario
IF PROGRAM() != "STAG"
?"this file MUST BE NAMED 'stag.prg'"
ENDIF
#define STNAME  "MynameSpaceURI#MyLocalName"
#define DATAPATH HOME(1)+"samples\data\"
#define STAGPATH "C:\Program Files\Common Files\Microsoft Shared\Smart Tag\mstag.tlb"
IF .t.
IF FILE("stag.dll")
DECLARE integer DllUnregisterServer IN stag.dll
DllUnregisterServer()
CLEAR DLLS
ENDIF
BUILD PROJECT stag FROM stag
BUILD mtDLL stag from stag recomp
STRTOFILE("","d:\t.txt")    && null log file
endif
#DEFINE HKEY_CURRENT_USER  -2147483647  && BITSET(0,31)+1
oFoxReg=NEWOBJECT("foxreg", HOME(1)+"FFC\registry")
oFoxReg.OpenKey("Software\Microsoft\Office\Common\Smart Tag\Actions\stag.MyStag", ;
HKEY_CURRENT_USER, .T.)
oFoxReg.OpenKey(;
"Software\Microsoft\Office\Common\Smart Tag\Recognizers\stag.MyStag", ;
HKEY_CURRENT_USER, .T.)
DEFINE CLASS MyStag AS Session OLEPUBLIC
IMPLEMENTS ISmartTagRecognizer IN STAGPATH
IMPLEMENTS ISmartTagAction IN STAGPATH
PROCEDURE ISmartTagRecognizer_get_ProgId() AS STRING
logit()
RETURN   "stag.MyStag"
PROCEDURE ISmartTagRecognizer_get_Name(LocaleID AS Integer) AS STRING
logit()
RETURN "VFP NorthWind Customer Recognizer"
PROCEDURE ISmartTagRecognizer_get_Desc(LocaleID AS Integer) AS STRING
logit()
RETURN "VFP NorthWind Customer ID Recognizer"
PROCEDURE ISmartTagRecognizer_get_SmartTagCount() AS Integer
logit()
RETURN 1
PROCEDURE ISmartTagRecognizer_get_SmartTagName(;
SmartTagID AS Integer) AS STRING
logit()
If SmartTagID = 1
RETURN STNAME
EndIf
RETURN ""
PROCEDURE ISmartTagRecognizer_get_SmartTagDownloadURL(;
SmartTagID AS Integer) AS STRING
logit()
RETURN ""
PROCEDURE ISmartTagRecognizer_Recognize(cText AS STRING, ;
DataType AS Integer, ;
LocaleID AS Integer, RecognizerSite AS VARIANT) AS VOID
logit(ctext+' '+TRANSFORM(LEN(CTEXT)))
LOCAL i,  mat,cWord,propbag
i = 1
DO WHILE i <= LEN(cText)
IF ISALPHA(SUBSTR(cText,i))
mst = i
DO WHILE i <= LEN(cText) AND ;
(ISALPHA(SUBSTR(cText,i)) or ;
ISDIGIT(SUBSTR(cText,i)))
i=i+1
ENDDO
IF mst # i
cWord = SUBSTR(cText,mst,i-mst)
IF SEEK(cWord,"Customer")
* Ask for a property bag
propbag = ;
RecognizerSite.GetNewPropertyBag()
* Commit the smart tag
propbag.write("test","value")
propbag.write("test2","value2")
RecognizerSite.CommitSmartTag(STNAME, ;
mst, LEN(cWord), propbag)
propbag=.null.
ENDIF
ENDIF
ENDIF
i=i+1
ENDDO
***********************
PROCEDURE ISmartTagAction_get_ProgId() AS STRING
logit()
RETURN "stag.MyStag"
PROCEDURE ISmartTagAction_get_Name(LocaleID AS Integer) AS STRING
logit()
RETURN "Customer Actions"
PROCEDURE ISmartTagAction_get_Desc(LocaleID AS Integer) AS STRING
logit()
RETURN  "Provides actions for VFP Customer data"
PROCEDURE ISmartTagAction_get_SmartTagCount() AS Integer
logit()
RETURN 1
PROCEDURE ISmartTagAction_get_SmartTagName(SmartTagID AS Integer) AS
STRING
logit()
IF SmartTagID = 1
RETURN STNAME
EndIf
RETURN ""
PROCEDURE ISmartTagAction_get_SmartTagCaption(SmartTagID AS Integer, ;
LocaleID AS Integer) AS STRING
logit(TRANSFORM(SmartTagID ))
RETURN  "Customer Lookup"
PROCEDURE ISmartTagAction_get_VerbCount(SmartTagName AS STRING) AS
Integer
logit(SmartTagName )
If SmartTagName = STNAME
RETURN FCOUNT()+1
ENDIF
RETURN 0
PROCEDURE ISmartTagAction_get_VerbID(SmartTagName AS STRING, ;
VerbIndex AS Integer) AS Integer
logit(SmartTagName +', '+ TRANSFORM(VerbIndex ))
RETURN VerbIndex
PROCEDURE ISmartTagAction_get_VerbCaptionFromID(VerbID AS Integer, ;
_ApplicationName AS STRING, LocaleID AS Integer) AS STRING
logit(TRANSFORM(VerbID )+' '+_ApplicationName +;
' '+TRANSFORM(LocaleID))
IF VerbId <= FCOUNT()
RETURN "View "+FIELD(VerbID)
ENDIF
RETURN "Visit customer Web site"
PROCEDURE ISmartTagAction_get_VerbNameFromID(VerbID AS Integer) AS
STRING
logit(TRANSFORM(VerbID))
IF VerbId <= FCOUNT()
RETURN FIELD(VerbID)
ENDIF
RETURN "Visit Web site"
PROCEDURE ISmartTagAction_InvokeVerb(VerbID AS Integer, ;
cApplicationName AS STRING, ;
Target AS VARIANT, oProperties AS VARIANT, ;
cText AS STRING, Xml AS STRING) AS VOID
logit(TRANSFORM(VerbID )+' '+cApplicationName +' '+cText+' ';
+Xml+' '+TRANSFORM(oProperties.count))
LOCAL i,cProp
oProperties.write("iitest","iivalue")
oProperties.write("iitest2","iivalue2")
FOR i = 1 to oProperties.count
cProp = oProperties.keyfromindex(i-1)
logit(cProp)
logit(oProperties.read(cprop))
endfor
LOCAL fExcel,fWord
DO case
CASE capplicationname = "Excel.Application.10"
fExcel = .t.
logit(m.target.cells[1,1].value)
CASE capplicationname = "Word.Application.10"
fWord = .t.
*         logit(m.target.range
ENDCASE
IF verbId > FCOUNT()
LOCAL oie as internetexplorer.application
oie = NEWOBJECT("internetexplorer.application")
oie.navigate2("localhost/"+ctext+".html")
oie.visible=1
else
IF SEEK(cText,"customer")
DO case
case fExcel
target.cells[1,2].value = ;
ALLTRIM(TRANSFORM(EVALUATE(FIELD(VerbID))))
target.Columns(2).columnWidth = 25
case fWord
target.insertAfter(' '+;
ALLTRIM(TRANSFORM(EVALUATE(FIELD(VerbID)))))
otherwise
DECLARE Integer MessageBox IN WIN32API ;
as msgbox ;
Integer,string,string, integer
msgbox(0,;
ALLTRIM(TRANSFORM(EVALUATE(FIELD(VerbID)))), ;
ctext+"="+company,0)
endcase
ELSE
logit("not found")
ENDIF
ENDIF
PROCEDURE Init
logit()
SET EXACT ON
SET EXCLUSIVE off
SET PATH TO DATAPATH
USE customer order cust_id shared
PROCEDURE Destroy
logit()
PROCEDURE MyDoCmd(cCmd as String)
&cCmd
PROCEDURE MyEval(cExp as String)
RETURN &cExp
PROCEDURE Error(nError, cMethod, nLine)
logit(TRANSFORM(nError)+' '+TRANSFORM(nLine)+' '+MESSAGE())
ENDDEFINE
#if .f.
DEFINE CLASS STagAction AS StagRecognizer OLEPUBLIC
PROCEDURE Error(nError, cMethod, nLine)
logit(PROGRAM()+" "+TRANSFORM(nError)+' '+TRANSFORM(nLine)+' '+MESSAGE())
ENDDEFINE
#endif
FUNCTION Logit(cStr)
TEXT TO mystr TEXTMERGE NOSHOW
<<DATETIME()>> <<PROGRAM(PROGRAM(-1)-1)>> <<cStr>>
ENDTEXT
STRTOFILE(myStr,"D:\t.TXT",.T.)

Diseño del Visual FoxPro Callback

Visual FoxPro hace posible para el programador crear objetos COM, los cuales publican interfaces que los clientes pueden implementar. Este escenario de retorno de llamada (callback) es casi idéntico a los objetos de Visual FoxPro que elevan eventos a los clientes. El ejemplo consiste de un servidor COM principal llamado IDEMO, el que también publica una interfaz de eventos llamada DemoEvents.

El código cliente tiene una única clase llamada cCallBack la que implementa DemoEvents.

IDEMO tiene un método llamado BuyStock el que puede ser llamado por el cliente para comprar acciones. El método BuyStock tiene sólo un comentario donde se puede colocar código para comprar acciones. Sin embargo, antes y después de ese código, el método llama a los métodos en la clase DemoEvents class. Si el cliente no tiene un procedimiento de retorno de llamada establecido usando el método SetCallBack, entonces las llamadas a los métodos de DemoEvents no hacen nada. No obstante, si hay un objeto de retorno de llamada, entonces se llamarán a esos métodos sobre el cliente.

CLEAR ALL
IF PROGRAM() != "IDEMO"
?"this file MUST BE NAMED 'idemo.prg'"
RETURN
ENDIF
IF .t.
IF FILE("idemo.dll")
DECLARE integer DllUnregisterServer IN idemo.dll
DllUnregisterServer()
CLEAR DLLS
ENDIF
BUILD PROJECT idemo FROM idemo
BUILD DLL idemo from idemo recomp
endif
clear
oCallback = NEWOBJECT("cCallback")    && el evento callback
ostock=newOBJECT("idemo.idemo")       && El objeto de negocio COM
ostock.setcallback(oCallBack)         && como BindEvents
?ostock.BuyStock("MSFT",10000 )       && invoca al método
ostock.setcallback(.null.)            && como UnBindEvents
?ostock.BuyStock("MSFT",20000 )       && Este no desencadena eventos
*Esta es la implementación actual de la interface de eventos
DEFINE CLASS cCallback as session
implements iDemoEvents in idemo.dll
procedure iDemoEvents_BeforeBuyStock(cStock as String, qty AS Number)
?program(),cstock,qty
procedure iDemoEvents_AfterBuyStock(cStock as String, qty AS Number)
?program(),cstock,qty
enddefine
*El resto de este archivo se usa en el servidor COM
DEFINE CLASS idemo as session olepublic
oc = .null.
PROCEDURE init
this.SetCallBack(.null.)    && set callback to default
PROCEDURE setcallback(oC as Variant)
IF ISNULL(oc)
&& instancia aparente que no hace nada:función virtual
this.oc = NEWOBJECT("DemoEvents")
else
IF VARTYPE(oc) != 'O'
COMRETURNERROR(PROGRAM(),"callback must be obj")
ENDIF
this.oc = GETINTERFACE(oC,"iDemoEvents","idemo.idemo")
endif
procedure MyDoCmd(cCmd as String) as Variant
&cCmd
procedure MyEval(cExpr as String) as Variant
return &cExpr
procedure BuyStock(cStock as String, qty AS Number) as Boolean
this.oc.BeforeBuyStock(cStock, qty)
*aquí compramos acciones
this.oc.AfterBuyStock(cStock, qty)
FUNCTION Error(nError, cMethod, nLine)
COMreturnerror(cMethod+'  err#='+str(nError,5)+'  line='+;
str(nline,6)+' '+message(),_VFP.ServerName)
&& Esta línea nunca se ejecuta
enddefine
*Sólo una definición de interface que debería ser implementada por "llamadores" externos
DEFINE CLASS DemoEvents as session olepublic
procedure BeforeBuyStock(cStock as String, qty AS Number)
procedure AfterBuyStock(cStock as String, qty AS Number)
enddefine

COM habilita la interacción de objetos unos con otros de varias maneras. Cada adición de capacidades COM a Visual FoxPro, incluyendo una simple funcionalidad cliente COM, implementación de interfaz y soporte de enlace en tiempo de compilación para cliente y servidor, ha proporcionado muchas nuevas potencialidades.

Ver también

Crear servidores de Automatización | Notas sobre programación de servidores de automatización | Enlace de eventos para objetos COM | Automatización y Servidores COM


Crear servidores de Automatización

Un servidor de automatización es una aplicación componente COM con una funcionalidad que otras aplicaciones pueden utilizar y reutilizar por medio de automatización. Por ejemplo, con Visual FoxPro puede crear un servidor de automatización que muestre formularios reutilizables (en un archivo .exe fuera de proceso) o que empaquete una rutina compleja en un componente sencillo disponible para otros programadores. Además, puede crear una o más clases para administrar las reglas de toda una compañía. Una aplicación cliente que utilice el objeto de reglas de empresa pasará los parámetros de entrada en una llamada a un método y el servidor de automatización realizará numerosas operaciones para recuperar o almacenar datos de diversas fuentes y realizar cálculos complejos antes de devolver la respuesta.

Los ejemplos de servidores de Automatización están instalados en el directorio ...\Samples\Servers de Visual FoxPro.

Crear el servidor de automatización

Todo lo que necesita para crear un servidor de Automatización en Visual FoxPro es un proyecto que contenga clases definidas como OLEPUBLIC. Puede tener en el proyecto tantas clases OLEPUBLIC como desee y se pueden definir en archivos de programa (.prg) o en bibliotecas de clases (.vcx).

Por ejemplo, la definición de clase siguiente en un archivo de programa crea una clase OLEPUBLIC personalizada:

DEFINE CLASS person AS CUSTOM OLEPUBLIC
FirstName = SPACE(30)
LastName = SPACE(45)
PROCEDURE GetName
RETURN THIS.FirstName + " " + THIS.LastName
ENDPROC
ENDDEFINE

Cuando diseñe una clase en el Diseñador de clases, seleccione OLE público en el cuadro de diálogo Información de clase para designar la clase como OLEPUBLIC.

Compilar el servidor de automatización

En Visual FoxPro, puede crear un servidor de automatización fuera de proceso o en proceso. Un componente fuera de proceso es un ejecutable (archivo .exe) que ejecuta su propio proceso. La comunicación entre una aplicación cliente y un servidor fuera de proceso se denomina comunicación en proceso cruzado. Un componente en proceso es una biblioteca de vínculos dinámicos (dll) que se ejecuta en el mismo espacio de direcciones de proceso que el cliente que la llama.

Cada componente tiene sus propias ventajas. Un servidor en proceso es más rápido porque no hay necesidad de comunicación entre procesos. Por otro lado, un servidor fuera de proceso puede utilizarse en modo remoto, función no disponible en el servidor en proceso. Además, dado que el servidor en proceso y el cliente comparten un espacio de direcciones de proceso, cualquier error grave en el archivo .dll interrumpirá el funcionamiento del cliente, mientras que un error en un .exe fuera de proceso sólo interrumpiría el servidor.

Nota Debido a que los servidores de automatización .dll en proceso y .exe fuera de proceso se invocan a través de la creación de instancias de clases, no es necesario especificar en el proyecto un archivo principal. Ahora, en Visual FoxPro puede generar un servidor de automatización .dll en proceso o .exe fuera de proceso sin tener que especificar primero un archivo principal en el Administrador de proyectos.

Cuando se crea un ejecutable con clases OLEPUBLIC, no se pierde ninguna de las capacidades .exe habituales. Podrá hacer funcionar el ejecutable, proporcionar una interfaz de usuario y todas las funciones habituales que incluiría en una aplicación. Puede aumentar, por tanto, la capacidad de expansión de la aplicación permitiendo que otras aplicaciones utilicen las funciones específicas que desea ofrecer.

Para compilar un servidor de Automatización

  1. En el Administrador de proyectos, elija Generar.
  2. En el cuadro de diálogo Opciones para generar, elija Generar ejecutable Win32 o servidor COM (exe), Generar servidor COM de subproceso único (dll) o Generar servidor COM de subproceso múltiple (dll).
  3. Elija Aceptar.

    –O bien–

    Cuando escriba BUILD<espacio> en la ventana de comandos y exista un proyecto activo, un script de Intellisense le ayudará a completar el comando BUILD mostrando las rutas completas de destino y el proyecto

Una vez que genere el proyecto, puede ver la clase servidor mostrada en el cuadro de diálogo Información del proyecto. Aquí también puede especificar un archivo de ayuda y un HelpContextID para cada clase. Este archivo de ayuda puede abrirse con la mayoría de examinadores de objetos genéricos.

Puede elegir valores de creación de instancias específicos de la clase en el cuadro de diálogo Información del proyecto. Las opciones de creación de instancias son las siguientes:

  • No se puede crear Aun cuando la clase esté marcada como OLEPUBLIC, no estará disponible en otras aplicaciones. Por ejemplo, podría tener una biblioteca estándar de clases OLEPUBLIC en múltiples aplicaciones y desactivar la automatización de una o varias clases para una sola aplicación.
  • Uso único Todas las aplicaciones cliente que utilicen el servidor crean una instancia diferente de la clase de servidor. Cada instancia tiene un solo subproceso de ejecución. Aunque instancias independientes requieren más memoria, si se elige Uso único el sistema operativo podrá aplicar multitarea preferente.
  • Multiuso Una vez creado el servidor, otras aplicaciones pueden utilizar la misma instancia.
    Nota Si realiza cambios en la ficha Servidores del cuadro de diálogo Información del proyecto, será necesario volver a generar la .dll o el .exe para que entre en vigor la nueva configuración.

Cuando cree un proyecto con clases OLEPUBLIC, se crean tres archivos:

  • El archivo .dll o .exe
  • Un archivo de biblioteca de tipos (.tlb)
  • Un archivo de registro (.vbr)

El archivo de biblioteca de tipos es un archivo binario que presenta una relación de todas las clases publicadas en el servidor de Automatización, junto con sus propiedades, métodos y eventos. Los examinadores de objetos OLE leen esta información y la presentan en una interfaz legible. Para obtener más información, consulte Bibliotecas de tipos.

El archivo del Registro muestra los identificadores únicos globales (GUID) de las clases del servidor.

Nota Un archivo de registro .vbr es igual que un archivo .reg, salvo que el primero no incluye rutas de acceso en código.

Registrar un servidor de Automatización

Los servidores de Automatización quedarán disponibles para otras aplicaciones cuando se hayan agregado los servidores al Registro de Windows. Cuando genere un servidor de Automatización, se registrará automáticamente en la máquina donde se ha efectuado la generación. También puede registrar los servidores en otras máquinas.

Si utiliza el programa de instalación de Visual FoxPro para crear discos de instalación, éste registrará los servidores en los equipos de los clientes. También puede registrar servidores manualmente.

Para registrar un componente .exe

  • Ejecute el archivo .exe con el modificador /regserver.

    Por ejemplo, para registrar Myserver.exe, ejecute el comando siguiente:

    myserver /regserver

Para quitar una entrada del registro de componentes .exe

  • Ejecute el archivo .exe con el modificador /unregserver.

    Por ejemplo, para eliminar Myserver.exe del registro, ejecute el comando siguiente:

    myserver /unregserver

Para registrar un componente .dll

  • Ejecute REGSVR32 con el nombre del servidor.

    Por ejemplo, para registrar Myserver.dll, ejecute el comando siguiente:

    REGSVR32 myserver.dll

Para quitar una entrada del registro de componentes .dll

  • Ejecute REGSVR32 con el nombre del servidor y el modificador /u.

    Por ejemplo, para registrar Myserver.dll, ejecute el comando siguiente:

    REGSVR32 /u myserver.dll
    Nota El registro contiene el nombre completo de la ruta de acceso al archivo, por lo que si mueve el archivo tendrá que registrarlo de nuevo.

Usar el servidor de Automatización

Una aplicación que puede crear objetos de Automatización puede crear objetos basados en el servidor de Automatización, establecer propiedades que no sean HIDDEN o PROTECTED y llamar a métodos. Por ejemplo, suponiendo que el nombre del servidor sea foxole y que contenga una clase denominada person con un método GetName, el código siguiente podría ejecutarse en Visual FoxPro:

oTest = CREATEOBJECT("foxole.person")
cName = oTest.GetName()

Se podría crear código similar en Microsoft Excel o Visual Basic:

Set oTest = CreateObject("foxole.person")
cName$ = oTest.GetName()

Tratamiento de excepciones

Cuando un servidor de automatización de Visual FoxPro genera una excepción, el servidor establece el objeto COM ErrorInfo (a través de IErrorInfo) y cancela el método actual. El cliente de automatización puede liberar el servidor de automatización de Visual FoxPro o, si el cliente tiene acceso al objeto COM ErrorInfo, tratar la excepción según esta información.

Para ver un ejemplo del uso de ErrorInfo, vea _ErrorInfo( ) (Rutina de biblioteca API).

La nueva función de Visual FoxPro, COMRETURNERROR( ), trata los errores que ocurren en un servidor de automatización. COMRETURNERROR( ) se puede utilizar en el método Error para llenar la estructura de excepción COM con información que los clientes de automatización pueden utilizar para determinar el origen de los errores del servidor de automatización. Para obtener más información, vea COMRETURNERROR( ) (Función).

Generar o devolver errores de los servidores de Automatización

La única interacción con los objetos proporcionados por un servidor de Automatización (componente COM) se hace mediante los métodos y las propiedades de las clases expuestas. Cuando una aplicación cliente llama a un método de un objeto y se produce un error en el servidor de Automatización, el método devuelve un valor de error o genera un error en la aplicación cliente.

La aplicación cliente decide si debe avisar al usuario o continuar con otra ruta de acceso de ejecución. El propio servidor de Automatización nunca interactúa con el usuario. Esto permite que la aplicación del servidor de Automatización sea transparente para la aplicación cliente. El servidor de Automatización puede ser local (es decir, se ejecuta en el equipo del usuario) o se puede usar la característica de Automatización remota de Visual FoxPro para ejecutarlo en un servidor de red.

Vea también

Controlar Visual FoxPro desde otras aplicaciones | Agregar OLE | Información de clase | Opciones para generar


Bibliotecas de tipos

Visual FoxPro admite propiedades, eventos y métodos intrínsecos (de Visual FoxPro) en bibliotecas de tipos de servidores de automatización. En la biblioteca de tipos sólo se incluyen las propiedades cuya visibilidad tenga el valor PUBLIC.

Tanto las propiedades como los métodos personalizados definidos por el usuario aparecen en las bibliotecas de tipos de Visual FoxPro, siempre que estén marcadas como PUBLIC. Para los métodos, Visual FoxPro incluye también un tipo de valor de retorno (de tipo Variant) y una lista de parámetros (de tipo Variant) pasados desde la definición del método original. En la biblioteca de tipos también aparecen la descripción de las propiedades tomadas de los archivos de clase .vcx.

Los tipos de bibliotecas generadas se almacenan en archivos .tlb creados junto con el servidor exe o dll. El tipo de bibliotecas también incluye se incluye el archivo .dll o .exe como un recursos adjunto. Esto elimina la necesidad de entregar archivos extra .tlb, aunque esto todavía está en construcción, junto con archivos .vbr, para usarlos con distribuciones remotas.

Nota Tenga en cuenta que el método Release de Visual FoxPro no está incluido en la biblioteca de tipos, pues ya existe como método COM.

Vea también

Interoperabilidad e Internet | Transferir matrices


Transferir matrices

Una función COMARRAY( ) de Visual FoxPro permite especificar la forma en que se pasa una matriz a un servidor de automatización, y si la matriz se basa en 1 o en 0.

Las versiones anteriores de Visual FoxPro transferían las matrices a los objetos COM (por ejemplo, los servidores de automatización creados en Visual FoxPro, Visual Basic o Visual C++) por su valor; los elementos de las matrices eran los mismos después de una llamada a un método y los cambios efectuados en el objeto COM no se propagaban a los elementos del cliente. Esta restricción impedía la transferencia de grandes cantidades de datos entre Visual FoxPro y los objetos COM.

Se presupone que la matriz que se pasa al objeto COM es de base uno, lo que significa que se hace referencia al primer elemento, fila o columna de la matriz con el número uno (por ejemplo, Myarray[1]). Sin embargo, algunos objetos COM requieren que la matriz transferida sea de base cero, es decir, que se haga referencia al primer elemento, fila o columna de la matriz con el número cero; por ejemplo, Myarray[0].

Nota COMARRAY( ) sólo se utiliza al transferir matrices a objetos COM con la sintaxis siguiente:
oComObject.Method(@MyArray)

Si se omite el símbolo @, sólo se transferirá al objeto COM el primer elemento de la matriz y COMARRAY( ) no tendrá ningún efecto. Este es el mismo comportamiento que en versiones anteriores de Visual FoxPro.

Vea también

Interoperabilidad e Internet | Compilar código fuente | COMARRAY( )


Compilar código fuente

En Visual FoxPro, puede compilar código fuente de Visual FoxPro en los archivos de tiempo de ejecución creados con vfp8r.dll o vfp8t.dll. En versiones anteriores a Visual FoxPro 6, era necesario utilizar una sustitución de macros o evaluación de expresiones en cada línea para poder ejecutar el código generado en tiempo de ejecución. Este proceso no siempre era óptimo debido a lo complejo que es ejecutar grandes bloques de código y a la disminución del rendimiento debida a la utilización del operador de macros & o la función EVALUATE( ).

El comando COMPILE ahora está habilitado en tiempo de ejecución para que sus aplicaciones puedan generar y compilar un archivo de programa (.prg). Puede utilizar la función STRTOFILE( ) para exportar su código a un archivo de programa. La compilación en tiempo de ejecución trabaja con todos los archivos admitidos por el comando COMPILE incluyendo programas, formularios, clases, etiquetas, reportes y bases de datos.

Existen pocas diferencias entre el compilador del producto de desarrollo y en tiempo de ejecución:

  • Se ha deshabilitado el modificador "?" del comando COMPILE para el tiempo de ejecución debido a que los servidores de automatización desatendidos (.dll) no permiten modos que implican la entrada de datos por el usuario.
  • El comando SET DEVELOPMENT no tiene ningún efecto en el tiempo de ejecución.

    Con el producto completo, SET DEVELOPMENT hace que Visual FoxPro compare la fecha y hora de creación de un programa con las del archivo objeto compilado al ejecutar el programa. Si el valor de SET DEVELOPMENT es ON, se ejecuta siempre la versión más reciente; los programas no actualizados se vuelven a compilar automáticamente. En el tiempo de ejecución, debe llamar explícitamente al comando COMPILE para volver a compilar el código fuente. Esto significa que, aunque llame al comando DO en el tiempo de ejecución, el archivo PRG no se volverá a compilar. Además, con el tiempo de ejecución, el comando DO pasa por alto la extensión de archivo y busca un archivo con la extensión .fxp, aunque haya especificado .prg.

Vea también

Enlace en tiempo de compilación (vtable) y en tiempo de ejecución (IDispatch) | Interoperabilidad e Internet | Escalabilidad y subprocesamiento múltiple | Bibliotecas de tiempo de ejecución de Visual FoxPro


Enlace en tiempo de compilación (vtable) y en tiempo de ejecución (IDispatch)

Los servidores COM de Visual FoxPro admiten el enlace en tiempo de compilación (vtable) además de la interfaz en tiempo de ejecución (IDispatch) existente (juntos se denominan interfaz dual). El enlace describe la manera en que los clientes tienen acceso a las propiedades y métodos de un servidor. El enlace en tiempo de compilación mejora el rendimiento de los controladores de automatización que admiten esta técnica, como Visual Basic y Microsoft Transaction Server. Aunque los servidores de Visual FoxPro admiten ambas interfaces, el cliente es el que determina la que se utiliza.

Enlace en tiempo de compilación

Si el cliente puede detectar en tiempo de compilación a qué objeto pertenece una propiedad o método, puede resolver la referencia al objeto en tiempo de compilación. El ejecutable compilado sólo contiene el código que invoca a las propiedades, métodos y eventos del objeto. Esto se denomina enlace en tiempo de compilación.

Ejemplo: cliente de Visual FoxPro

LOCAL xlApp1 As Excel.Application
xlApp1 = CreateObjectEx("Excel.Application","","")

Ejemplo: cliente de Visual Basic

Dim xlApp1 As Excel.Application
Set xlApp1 = New Excel.Application

El enlace en tiempo de compilación reduce drásticamente el tiempo necesario para establecer o recuperar el valor de una propiedad, debido a que el tiempo de la llamada puede ser una parte importante del tiempo total. Para las llamadas a métodos, la mejora depende de la cantidad de trabajo que el método realiza. Los más beneficiados son los métodos cortos, en los que el tiempo de la llamada es comparable al tiempo necesario para completar la tarea.

Enlace en tiempo de ejecución

Aunque el enlace en tiempo de ejecución es una manera más lenta de invocar las propiedades y métodos de un objeto, algunas veces es necesario. Por ejemplo, en Visual Basic puede escribir una función que utilice una variable de objeto para actuar en cualquiera de varias clases diferentes de objetos. Como no sabe de antemano qué clase de objeto se asignará a la variable, debe declararla como variable de enlace en tiempo de ejecución mediante el comando DIM As Object de Visual Basic. En Visual FoxPro, puede utilizar la función CREATEOBJECT() en lugar de la función CREATEOBJECTEX().

Ejemplo: cliente de Visual FoxPro

LOCAL xlApp2 As Excel.Application
xlApp2 = CreateObject("Excel.Application")

Ejemplo: cliente de Visual Basic

Dim xlApp2 As Object
Set xlApp2 = CreateObject("Excel.Application")

Las llamadas de métodos a objetos creados de esta manera pueden ser más lentas que las llamadas de métodos a objetos de enlace en tiempo de compilación, debido a que el cliente debe incluir en el ejecutable compilado el código que determinará en tiempo de ejecución si el servidor tiene o no un método determinado.

Vea también

Compilar código fuente | Escalabilidad y subprocesamiento múltiple | Interoperabilidad e Internet | Bibliotecas de tiempo de ejecución de Visual FoxPro


Escalabilidad y subprocesamiento múltiple

Cuando un componente tiene un subproceso de ejecución, se puede ejecutar el código fuente de un solo objeto a la vez. La característica de automatización del Modelo de objetos componentes (Component Object Model, COM) controla esta situación mediante la serialización de las peticiones. Es decir, las peticiones se sitúan en una cola y se procesan una por una hasta terminar todas.

En un entorno operativo de subprocesamiento múltiple, la serialización evita que los objetos de un solo subproceso se superpongan a las peticiones de clientes: es decir, que se ejecute el código de una propiedad o método mientras se esté ejecutando una o varias peticiones de clientes. La superposición de las peticiones puede causar errores internos de datos si los objetos no están diseñados para reentrada.

Por lo tanto, la serialización es una característica muy importante de la automatización. No obstante, la serialización de componentes de un solo subproceso implica que, algunas veces, las peticiones se bloquean. Por ejemplo, supongamos que está utilizando un objeto Widget que tiene dos métodos, Spin y Flip.

  • Para completarse, el método Spin necesita desde varios segundos hasta media hora.
  • El método Flip es casi instantáneo.

Debido a que las aplicaciones de 32 bits son multitarea, una segunda aplicación podría llamar al método Flip mientras el método Spin ya se está ejecutando. El método corto Flip se bloquea hasta que el método largo Spin termine.

Cuando las operaciones largas bloquean otras cortas, la productividad disminuye y la frustración del usuario aumenta. Los componentes que se comportan de esta manera se denominan poco escalables. Es decir, no funcionan bien si se realizan muchas peticiones de diferente duración.

Visual FoxPro dispone de dos componentes para mejorar la escalabilidad y evitar el bloqueo de las llamadas: la creación de instancias de SingleUse y los objetos de varios subprocesos. Para obtener detalles, vea Controlar el bloqueo de llamadas.

Vea también

Enlace en tiempo de compilación (vtable) y en tiempo de ejecución (IDispatch) | Bibliotecas de tiempo de ejecución de Visual FoxPro | Interoperabilidad e Internet | Compilar código fuente


Notas sobre la programación de servidores de automatización

En los siguientes lugares encontrará información adicional acerca de como escribir servidores de automatización.

El objeto Application

El objeto Application no se expone en una biblioteca del tipo servidor de automatización; por lo tanto, no tiene acceso a los métodos DoCmd y Eval del objeto Application. Puede exponer el objeto Application si crea una propiedad personalizada y le asigna como valor el objeto Application o si proporciona un método que tenga acceso al objeto Application.

Las propiedades de lectura y escritura del objeto Application, por ejemplo, AutoYield, son globales para el proyecto; por lo tanto, asegúrese de que los servidores de subprocesos múltiples no presupongan que los valores de esta configuración están protegidos entre subprocesos.

Ejemplos de servidores de automatización

Esta versión de Visual FoxPro incluye dos servidores de automatización ISAPI de ejemplo, FoxWeb y FoxIS. Estos ejemplos administran la devolución de los registros de Visual FoxPro seleccionados a un explorador de Internet como HTML. Para obtener más información acerca de estos ejemplos, vea Servidor de Automatización FoxISAPI (Ejemplo).

Nota El servidor FoxISAPI incluido en Visual FoxPro dispone de mejoras diseñadas específicamente para su uso con los nuevos servidores DLL de subprocesos múltiples. Los servidores DLL que se ejecutan mediante FoxISAPI no deben utilizar el Administrador de grupo integrado.

Archivos de configuración

En Visual FoxPro, durante la inicialización del tiempo de ejecución sólo se deben utilizar los archivos CONFIG.FPW enlazados dentro de los servidores EXE y DLL. Los archivos de configuración almacenan la configuración crítica que se establece cuando Visual FoxPro se inicia (tanto el producto como el tiempo de ejecución). Antes de Visual FoxPro 6, el archivo CONFIG.FPW podía existir como archivo independiente o enlazado a la aplicación (.app, .exe o .dll). Si se encuentra un archivo CONFIG.FPW enlazado a una aplicación, se utiliza; en caso contrario, Visual FoxPro busca un archivo CONFIG.FPW independiente en las rutas de acceso normales.

Seguirá teniendo una funcionalidad completa con las aplicaciones .app y .exe distribuidas normales.

Tratamiento de páginas de códigos

Las páginas de códigos se admiten en todos los servidores y son específicas de un proyecto determinado (.dll). La página de códigos predeterminada se puede establecer en el archivo CONFIG.FPW sólo durante la inicialización del tiempo de ejecución. La página de códigos es global para todos los proyectos. Todos los objetos que utilicen una instancia determinada del tiempo de ejecución compartirán la misma página de códigos. Debido a que existe la posibilidad de que varios servidores .dll modifiquen la página de códigos predeterminada de un tiempo de ejecución (es decir, cada servidor puede tener su propio archivo CONFIG.FPW con una página de códigos diferente), Visual FoxPro impide modificar este valor una vez iniciado el tiempo de ejecución. Por lo tanto, una vez establecida la página de códigos, es permanente hasta que se libera el tiempo de ejecución.

Los usuarios que necesiten tener servidores con páginas de códigos diferentes pueden situar estos servidores en una carpeta exclusiva, junto con una copia de la biblioteca de tiempo de ejecución vfp8t.dll. De forma predeterminada, un servidor siempre utilizará la biblioteca de tiempo de ejecución almacenada en esta carpeta.

Consideraciones especiales sobre el lenguaje

Hay varios comandos que debe tener en cuenta cuando trabaje con servidores de automatización porque su comportamiento difiere ligeramente del funcionamiento del producto normal.

SET PROCEDURE

Como este comando se guarda en un almacén local de subprocesos, es exclusivo de cada subproceso. Sin embargo, cuando se crea una instancia de un servidor COM .exe o .dll, de forma predeterminada, Visual FoxPro ejecuta implícitamente un comando SET PROCEDURE para todo el servidor. Por ejemplo:

? SET("PROCEDURE")
C:\VFP\MYSERVER.DLL

Esto permite tener acceso a cualquiera de los procedimientos almacenados en el servidor. Si un objeto que existe en el subproceso llama a SET PROCEDURE TO, la ruta de acceso del procedimiento se restablece como ninguna; sin embargo, un objeto nuevo creado en el mismo subproceso restablecerá automáticamente la ruta de acceso del procedimiento a todo el servidor.

SET CLASS

Este comando funciona de manera similar a SET PROCEDURE. Su valor se guarda en un almacén local de subprocesos; sin embargo, cuando se inicializa con todo el conjunto de bibliotecas de clases que hay en el servidor .exe o .dll. Por ejemplo:

? SET("CLASS")
C:\VFP\myClass.VCX ALIA

CD, CHDIR, SET DEFAULT Commands

Estos comandos cambian el directorio predeterminado para todo el proceso, esto afectará a todos los hilos (subprocesos) que forman parte del proceso. Use el comando SET PATH en lugar de CD, CHDIR y SET DEFAULT.

Vea también

Lenguajes admitidos en tiempo de ejecución | Seleccionar una biblioteca de tiempo de ejecución | Servidor de Automatización FoxISAPI (Ejemplo) | Interoperabilidad e Internet | Objeto Application | DoCmd | Eval


Bibliotecas de tiempo de ejecución de Visual FoxPro

Visual FoxPro se entrega con dos bibliotecas de tiempo de ejecución diferentes:

Bibliotecas de tiempo de ejecución Descripción
VFP8R.DLL
Tiempo de ejecución normal para la mayoría de los tipos de aplicaciones.
VFP8T.DLL
Tiempo de ejecución de varios subprocesos especiales para aplicaciones de servidores en procesos de gran escalabilidad, por ejemplo, las creadas para su uso con Microsoft Transaction Server.

Cuando se utiliza el cuadro de diálogo Opciones para generar del Administrador de proyectos, la acción de generación que elija determina el tiempo de ejecución que utilizará la aplicación o el servidor generados. Solo los servidores .dll pueden utilizar el tiempo de ejecución vfp8t.dll. El método Project.Build también permite elegir qué tiempo de ejecución se va a utilizar.

El fuente compilado (como un archivo .exe, o .dll) se marca internamente para identificar que tiempo de ejecución utiliza cuando es llamado. La única forma de cambiar el tiempo de ejecución que utiliza un servidor es volviéndolo a generar. Su servidor puede determinar en tiempo de ejecución que biblioteca de tiempo de ejecución está usando, a través de la propiedad Application.StartMode. Necesita conocer que biblioteca de tiempo de ejecución está asociada a su servidor .dll para que pueda elegir la biblioteca a incluir en el instalador.

Nota Al igual que todos los archivos de tiempo de ejecución de Visual FoxPro, estos archivos también se instalan en la carpeta <archivos de programa>\Common Files\Microsoft Shared\VFP. Ambos tiempos de ejecución comparten el mismo archivo de recursos (como vfp8resn.dll).

Vea también

Escalabilidad y subprocesamiento múltiple | Biblioteca de tiempo de ejecución VFP8R.DLL | Interoperabilidad e Internet | Biblioteca de tiempo de ejecución VFP8T.DLL | Consideraciones y limitaciones para diseñar servidores


Biblioteca de tiempo de ejecución VFP8R.DLL

Vfp8r.dll proporciona servicios para los siguientes tipos de aplicaciones generadas por Visual FoxPro:

  • Aplicaciones distribuidas (archivos .exe)
  • Servidores fuera de proceso (archivos .exe)
  • Servidores en proceso (archivos .dll)

Este es el tiempo de ejecución principal que Visual FoxPro utiliza para la mayoría de las aplicaciones.

El tiempo de ejecución de Visual FoxPro, vfp8r.dll, no atiende a múltiples servidores de automatización .dll en proceso. Ahora, cada .dll en proceso utiliza una instancia diferente del tiempo de ejecución vfp8r.dll. Las reglas siguientes determinan la manera en que las .dll en proceso utilizan el tiempo de ejecución Vfp8r.dll:

  • La primera llamada de un .dll en proceso tiene el uso exclusivo de biblioteca de tiempo de ejecución vfp8r.dll (generalmente instalada en la carpeta System o System32, dependiendo de su sistema operativo).

    Si un .dll ya tiene el uso exclusivo del tiempo de ejecución vfp8r.dll, se ejecuta una copia renombrada del tiempo de ejecución vfp8r.dll que se crea en disco y carga en memoria por cada .dll en proceso llamado. Al tiempo de ejecución vfp8r.dll se le asigna un nombre basado en el nombre del .dll en proceso. Por ejemplo, si un .dll en proceso llamado Myserver.dll es llamado, se renombra una copia del tiempo de ejecución vfp8r.dll como myserverr.dll (note la "r" agregada al nombre) y se carga en memoria para servir al .dll en proceso. Esto también puede ocurrir con servidor .exe de Visual FoxPro que crea una instancia de un servidor .dll – una situación donde ambos comparten el mismo tiempo de ejecución desde el mismo proceso.

  • Los tiempos de ejecución de Visual FoxPro sólo cambian de nombre para las .dll en proceso que se ejecutan en el mismo proceso. Esto significa que dos clientes independientes, cada uno ejecutándose en un proceso propio, pueden cargar dos .dll en proceso diferentes de Visual FoxPro sin cambiar el nombre del tiempo de ejecución. En este caso, ambas .dll en proceso de Visual FoxPro utilizarán Vfp8r.dll ya que los clientes se cargan en procesos separados.
  • Varios servidores de automatización, creados con la cláusula OLEPUBLIC en el comando DEFINE CLASS, en un único .dll en proceso comparten el mismo tiempo de ejecución vfp8r.dll. En este caso, es posibles que los servidores de automatización puedan afectarse uno al otro al compartir variables de memoria PUBLICAS, establecer los mismos comandos SET y, y si ellos residen ten un subproceso común. Debe asegurarse que varios servidores de automatización en un único .dll en proceso no se interfieran uno al otro. La nueva clase Session puede ayudar a eliminar algunos de estos conflictos. Utilizar el tiempor de ejecución de subprocesos múltiples, vfp8t.dll, evita estos conflictos por que los objetos creados en subprocesos separados usarán su propio espacio de memoria separado (almacenamiento de subproceso local - thread-local storage).

Puede utilizar la biblioteca vfp8r.dll con servidores .dll en proceso. Debido a que existen limitaciones en la utilización de vfp8r.dll, debería considerar la posibilidad de utilizar en su lugar el tiempo de ejecución vfp8t.dll. El tiempo de ejecución vfp8r.dll no protege completamente los datos globales y los datos de cada instancia; por lo tanto, la biblioteca impide que varios objetos ejecuten el código al mismo tiempo. Si uno de los objetos está ejecutando código, todas las demás instancias deben esperar en la cola para ejecutarlo. En cuanto el objeto termine de ejecutar el código, otro objeto puede comenzar a ejecutar el tiempo de ejecución, tanto si es una asignación de propiedad como una invocación a un método. Aunque esto no es lo ideal para muchas aplicaciones, existen determinados tipos de aplicaciones de servidor para los que puede ser la solución óptima.

Si los servidores (.dll) en proceso se distribuyen en un paquete de Component Services (o Microsoft Transaction Server), crear una instancia de un servidor cargará el .dll en el espacio de memoria de un proceso Component Services antes de llamar al proceso. Además, los procesos múltiples (.exe's) pueden instanciar servidores .dll de Visual FoxPro que serán cargados en un único proceso Component Services. Component Services genera (o reutiliza) un subproceso para cada cliente demandando una instancia (OLEPUBLIC) desde un servidor Visual FoxPro. Ya que tales aplicaciones a menudos necesitan escalabilidad empresarial, potencialmente pueden ocurrir algunas instancias concurrentes para acceder a su servidor Visual FoxPro simultáneamente. Si se permite ejecutar código a un sólo cliente (instancia) a la vez, todos los otros deben esperar. Con una máquina de único procesador, esto puede estar bien, dependiendo de la naturaleza y tiempos de ejecución de los métodos en su servidor. Recuerde que un único procesador sólo puede ejecutar una línea de código a la vez.

Siempre debe considerar la posibilidad de utilizar el tiempo de ejecución vfp8t.dll en equipos con varios procesadores, ya que cada procesador puede ejecutar el código de diferentes objetos simultáneamente. Debido a que la técnica de bloqueos de vfp8r.dll evita la ejecución simultánea de código, utilice vfp8t.dll en la mayoría de los casos.

Vea también

Bibliotecas de tiempo de ejecución de Visual FoxPro | Biblioteca de tiempo de ejecución VFP8T.DLL | Interoperabilidad e Internet | Consideraciones y limitaciones para diseñar servidores | Escalabilidad y subprocesamiento múltiple


Biblioteca de tiempo de ejecución VFP8T.DLL

En tiempo de ejecución de varios subprocesos ayuda a eliminar los problemas que ocasionan los bloqueos asociados en tiempo de ejecución vfp8r.dll. Con la biblioteca en tiempo de ejecución vfp8t.dll, puede implementar servidores en proceso sin bloquear la ejecución del código.

Debido a que Vfp8t.dll es una biblioteca de tiempo de ejecución ligera, diseñada sólo para servidores en proceso, se han deshabilitado muchos comandos y funciones relacionados con características visuales y de entrada del usuario.

Ya que no ocurren bloqueos en vfp8t.dll, un objeto que ejecuta un procedimiento inusualmente largo (como imprimir un informe) no evitará que otros objetos ejecuten velozmente las rutinas rápidas. Por ejemplo, con vfp8r.dll, un objeto que ejecuta en 1 segundo una consulta de una base de datos puede tener que esperar 15 minutos a que termine un objeto que está imprimiendo un informe complejo. Si genera con vfp8t.dll no tendrá el mismo cuello de botella.

Además de solucionar los problemas de los bloqueos, la implementación del modelo Apartamento de subproceso en el tiempo de ejecución vfp8t.dll también elimina los conflictos de acceso a los datos globales desde varios subprocesos, ya que se asigna a cada apartamento su propia copia de los datos globales. vfp8t.dll utiliza un almacén local de subprocesos para dar a cada instancia de clase su propio conjunto de datos. Esto significa que una variable que declare como PUBLIC sólo es global para el subproceso; cada subproceso tiene una instancia de la variable.

Nota Las propiedades de lectura y escritura del objeto Application, como AutoYield, son globales para el proyecto.

Visual FoxPro permite implementar el mismo tiempo de ejecución vfp8t.dll para varios servidores de automatización .dll en proceso que se llamen simultáneamente, estén o no en el mismo proceso o subproceso. El tiempo de ejecución vfp8r.dll original crea una copia de la biblioteca con otro nombre para cada servidor .dll en proceso que se ejecute en el mismo proceso.

Visual FoxPro ofrece una clase Session, la cual debería utilizar para clases de servidor OLEPUBLIC. Como con los formularios, la propiedad DataSession le permite crear sesiones privadas de datos para su objeto encima de la instanciación. La ventaja de la clase Session es que usa mucho menos memoria que un formulario. El tiempo de ejecución vfp8t.dll automáticamente protege los datos de usuario y globales a través del almacenamiento local de subprocesos, pero esto sólo se aplica entre subprocesos. Los objetos instanciados en el mismo subproceso desde la misma .dll están habilitados para acceder a los datos entre unos y otros. La clase Session ayuda a proteger los datos dentro del subproceso.

Debido a que el tiempo de ejecución vfp8t.dll se ha diseñado solo para su uso con servidores en proceso, se ha simplificado. Se han eliminado muchos comandos y funciones de la interfaz de usuario, incluida la compatibilidad para READ y @…Get/Say, de FoxPro 2.x. Además se han quitado algunos diseñadores, como el Diseñador de tablas y el Diseñador de informes, que existen en el tiempo de ejecución vfp8r.dll. El tiempo de ejecución vfp8t.dll también admite clases visuales, por ejemplo, los formularios.

Vea también

Biblioteca de tiempo de ejecución VFP8R.DLL | Consideraciones y limitaciones para diseñar servidores | Interoperabilidad e Internet | Bibliotecas de tiempo de ejecución de Visual FoxPro | Selección de tipos de procesos


Consideraciones y limitaciones para diseñar servidores

En este tema se tratan algunas cuestiones críticas del diseño de servidores. Existen determinados comportamientos, procesos y limitaciones que pueden determinar la efectividad de una aplicación de servidor.

En esta sección

Selección de tipos de procesos
Discute los diferentes servicios proporcionados por servidores en proceso o fuera de proceso, y qué efecto tienen en la interfaz de usuario de su aplicación.
Controlar el bloqueo de llamadas
Para mejorar la escalabilidad de las aplicaciones, Visual FoxPro dispone de objetos SingleUse y del subproceso del modelo Apartamento como medios para controlar el problema del bloqueo de llamadas.
Seleccionar una biblioteca de tiempo de ejecución
Proporciona información sobre utilizar llamadas API, problemas de escalabilidad, reentrada, y contención de recursos.
Lenguajes admitidos en tiempo de ejecución
Discute comandos, funciones y variables de sistema de Visual FoxPro que no son admitidos en vfp8t.dll.

Secciones relacionadas

Biblioteca de tiempo de ejecución VFP8T.DLL
Varios subprocesos (multithreaded) en tiempo de ejecución ayudan a eliminar los problemas de bloqueo asociados con la biblioteca de tiempo de ejecución vfp8r.dll.
Notas sobre programación de servidores de automatización
Describe los lugares donde encontrará información adicional acerca de cómo escribir servidores de automatización.
Interoperabilidad e internet
Proporciona enlaces para información sobre cómo transferir datos entre Visual FoxPro y otras aplicaciones y también con aplicaciones Visual FoxPro.


Seleccionar tipos de proceso

Los servidores en proceso y fuera de proceso ofrecen diferentes servicios, especialmente en lo relativo a la interfaz de usuario de las aplicaciones.

Interfaces de usuario

Aunque las versiones anteriores de Visual FoxPro permitían utilizar formularios como elementos sólo de salida en una aplicación de servidor de automatización, las dos bibliotecas de tiempo de ejecución de Visual FoxPro tratan esta situación de manera diferente para los servidores en proceso y fuera de proceso.

Servidores en proceso

La compatibilidad con el subproceso del modelo Apartamento requiere que los servidores de automatización .dll en proceso no tengan Interfaces de usuario. En Visual FoxPro 5.0 era posible (aunque no recomendable) crear un servidor de automatización .dll en proceso que tuviera una interfaz de usuario, por ejemplo, un formulario. El formulario sólo se podía utilizar con fines de presentación porque no se admitían los eventos de formulario. Desde Visual FoxPro 6, cualquier intento de crear una interfaz de usuario en un servidor de automatización .dll en proceso produce un error. Esto se denomina modo desatendido.

Servidores fuera de proceso

Un servidor de automatización fuera de proceso (.exe) sí que puede tener una interfaz de usuario. La función SYS(2335) de Visual FoxPro permite deshabilitar los eventos de la interfaz de usuario y modales para los servidores de automatización .exe fuera de proceso, de manera que se puedan controlar remotamente sin intervención del usuario. Los eventos modales se crean mediante formularios modales definidos por el usuario, cuadros de diálogo del sistema, la función MESSAGEBOX( ), el comando WAIT, etc. y, normalmente, requieren entradas del usuario.

Vea también

Consideraciones y limitaciones para diseñar servidores | Controlar el bloqueo de llamadas | Seleccionar una biblioteca de tiempo de ejecución | Lenguajes admitidos en tiempo de ejecución | Notas sobre programación de servidores de automatización


Controlar el bloqueo de llamadas

Para mejorar la escalabilidad de las aplicaciones, Visual FoxPro dispone de objetos SingleUse y del subproceso del modelo Apartamento como medios para controlar el problema del bloqueo de llamadas.

Objetos SingleUse

Al asignar el valor SingleUse a la propiedad Instancing de una clase OLEPUBLIC en el cuadro de diálogo Información del proyecto, cada instancia de la clase se ejecuta en una instancia diferente de su componente. Esto significa que, aunque su componente sea de un solo subproceso, cada instancia de la clase SingleUse tiene su propio subproceso de ejecución. El comportamiento de los objetos SingleUse es diferente en los servidores .exe y .dll:

Objetos SingleUse en servidores EXE

Cuando el valor de la propiedad Instancing es SingleUse, cada instancia hace que comience un proceso EXE nuevo (en Windows NT 4.0 o superior verá cada proceso en ejecución en el Administrador de tareas). Cuando el valor es MultiUse, la primera instancia hará que comience un nuevo proceso, pero cada instancia nueva del objeto comparte el mismo proceso que la primera.

Objetos SingleUse en servidores DLL

La propiedad Instancing se omite para las .dll de varios subprocesos y es de sólo lectura para el tiempo de ejecución Vfp8r.dll. Los servidores generados para su uso con la biblioteca vfp8t.dll siempre son MultiUse, independientemente de su configuración. En general, debe establecer siempre la propiedad Instancing en MultiUse para los servidores en proceso de vfp8r.dll. Si la establece en SingleUse, sólo se puede crear una instancia de un objeto desde ese servidor. Si intenta crear instancias de otros objetos, se producirá un error. Sólo en raras ocasiones tendrá que utilizar el valor SingleUse. De hecho, los componentes de Microsoft Transaction Server requieren el valor MultiUse. Con frecuencia, los objetos SingleUse requieren más memoria que varios objetos de un componente con varios subprocesos.

No obstante, existen algunas razones por las que podría tener que utilizar objetos SingleUse. Por ejemplo, puede utilizar objetos SingleUse para aislar actividades de alto riesgo en procesos diferentes. Si se produce un error grave en el objeto, los demás procesos no resultan afectados. Por el contrario, un error grave en un componente de varios subprocesos termina todos los subprocesos.

Subproceso del modelo Apartamento

Ahora, los servidores de automatización de Visual FoxPro son compatibles con el subproceso del modelo Apartamento. Microsoft Transaction Server utiliza los servidores marcados como de subproceso del modelo Apartamento y ofrece mejor protección y escalabilidad de los subprocesos mediante la serialización y el cálculo de referencias.

En Visual FoxPro, el subproceso del modelo Apartamento proporciona seguridad a los subprocesos. En el subproceso del modelo Apartamento, cada subproceso es como un apartamento; es decir, todos los objetos creados en un subproceso viven en ese apartamento y no conocen los objetos de los demás apartamentos. En cada objeto del modelo Apartamento (por ejemplo, un servidor de automatización de Visual FoxPro) sólo puede entrar un subproceso: el subproceso que creó el objeto. Sin embargo, un servidor de objetos, como Microsoft Transaction Server, puede admitir múltiples objetos, en cada uno de los cuales pueden entrar simultáneamente subprocesos diferentes. Los datos comunes que mantiene el servidor de objetos se deben proteger contra colisiones entre subprocesos.

El subproceso del modelo Apartamento ofrece las siguientes ventajas:

  • Todos los objetos que un cliente crea en un subproceso determinado se crean en el mismo apartamento (subproceso) de la DLL. Las llamadas a esos objetos realizadas en el mismo subproceso no requieren el cálculo de referencias entre subprocesos, lo que las hace más eficaces.
  • Debido a que el acceso a un objeto sólo se realiza en el subproceso donde se creó, las llamadas se serializan, de manera que una llamada nunca es interrumpida por una llamada de otro subproceso.
  • Se realizan cálculos de referencias de los argumentos de las llamadas entre procesos y el subproceso que llama se bloquea. Esta sincronización de los datos protege el estado del subproceso que llama.

Las DLL de subproceso del modelo Apartamento no pueden crear sus propios subprocesos; la primera vez que un subproceso cliente pide un objeto que proporciona la DLL, se crea un nuevo apartamento y se ejecuta el evento Init del objeto para ese apartamento. Todos los objetos clientes de un solo subproceso que pida ese cliente residirán en el mismo apartamento y compartirán los datos globales. Los objetos PRIVATE (incluidos los formularios) creados por los objetos públicos también residirán en el apartamento.

Como en Visual FoxPro no hay manera de que un apartamento tenga acceso a otro, un cliente con varios subprocesos podría obtener una referencia a un objeto en el subproceso A y pasar esa referencia a un objeto del subproceso B.

Para obtener más información acerca del subproceso del modelo Apartamento, consulte el apartado relativo a dicho tema en la Biblioteca MSDN.

La implementación en Visual FoxPro del subproceso del modelo Apartamento elimina los conflictos de acceso a los datos globales desde varios subprocesos, ya que se asigna a cada apartamento su propia copia de los datos globales. Esto significa que todos los objetos creados en el subproceso existen en ese apartamento y que no conocen los objetos de los demás apartamentos.

Visual FoxPro utiliza un almacén local de subprocesos para almacenar un conjunto exclusivo de datos globales del entorno y de la aplicación para cada subproceso (apartamento). Esto significa que dos instancias de la misma clase creadas en dos subprocesos diferentes no tienen acceso a los datos entre sí. No obstante, si estas dos instancias residen en el mismo subproceso, cada objeto tiene acceso a los datos del otro. Esto podría causar problemas de temporización en sus aplicaciones. Siempre que dos objetos del mismo subproceso se crean a partir de clases OLEPUBLIC en el mismo servidor .dll, los datos de esos objetos son comunes a ambos. (Nota: puede utilizar la clase Session para dar a cada objeto una sesión de datos privada exclusiva.)

Además del almacén local de subprocesos, Visual FoxPro también proporciona a cada proyecto (.dll) un conjunto único de datos globales. Los objetos que se crean a partir de diferentes proyectos (servidores .dll) no tienen acceso a los datos globales de los otros, aunque los dos objetos residan en el mismo subproceso.

Vea también

Selección de tipos de procesos | Seleccionar una biblioteca de tiempo de ejecución | Interoperabilidad e Internet | Lenguajes admitidos en tiempo de ejecución | Notas sobre programación de servidores de automatización


Seleccionar una biblioteca de tiempo de ejecución

Es posible que necesite una aplicación, del tipo de las aplicaciones para servidores de Internet, por ejemplo, FoxIsapi, donde desea crear una instancia de un formulario para utilizarlo en la asignación al HTML equivalente. La utilización del nueva biblioteca de tiempo de ejecución vfp8t.dll elimina algunas características no críticas, lo que mejora el rendimiento general de las aplicaciones de servidor de varios subprocesos.

Un error habitual a la hora de elegir un servidor es creer que una aplicación se escalará automáticamente simplemente generando la .dll para que utilice el nuevo tiempo de ejecución. A veces se puede hacer, pero también debe tener en cuenta los problemas que implica la utilización de llamadas a la API de Visual FoxPro, escalabilidad, reentrada y contención de recursos.

Utilizar llamadas a la API de Visual FoxPro

Si utiliza bibliotecas FLL de Visual FoxPro o bibliotecas estándar DLL de Windows que realizan llamadas a la API de Visual FoxPro, debe tener en cuenta determinadas cuestiones al diseñar los servidores. La API de Visual FoxPro no determina inmediatamente a qué proyecto (.dll) pertenece una llamada determinada. Por lo tanto, existe la posibilidad, aunque remota, de que se realice una llamada a la API con relación a un proyecto (.dll: almacén local de subprocesos). Esto puede ocurrir si la biblioteca FLL/DLL crea una instancia de un servidor .dll de Visual FoxPro diferente antes de realizar su llamada a la API. Si su servidor tiene este problema, existen varias soluciones posibles:

  • Crear una copia diferente del archivo de la biblioteca de tiempo de ejecución vfp8t.dll y situarla en la misma carpeta que el servidor .dll. El servidor siempre busca primero en la carpeta del servidor antes de intentar encontrar los archivos en la carpeta System de Windows o en la carpeta donde se procesa el cliente. Al tener su propia biblioteca de tiempo de ejecución, el servidor no tendrá conflictos con otros servidores .dll, siempre que éstos no estén en la misma carpeta. Como este comportamiento (copiar o cambiar el nombre del tiempo de ejecución automáticamente) de la biblioteca de ejecución Vfp9r.dll es predeterminado, los problemas de la API antes descritos sólo se manifiestan con la biblioteca de tiempo de ejecución Vfp8t.dll.
  • Limite su aplicación a un solo servidor .dll. Si utiliza varios servidores .dll (proyectos), existe la posibilidad de que haya conflictos de la API. Recuerde que un proyecto puede contener muchas clases OLEPUBLIC, de manera que no es necesario tener un proyecto diferente para cada OLEPUBLIC. Tenga en cuenta que, en los equipos compartidos, es posible que alguna persona instale otros servidores COM de Visual FoxPro que podrían causar conflictos con el suyo si se ejecutan simultáneamente.

Problemas de escalabilidad

El tiempo de ejecución de varios subprocesos de Visual FoxPro permite servidores en proceso de Visual FoxPro muy escalables. Aunque el tiempo de ejecución administrará automáticamente la escalabilidad de los servidores, puede suceder que algunos bucles de código estrechos no permitan que la conmutación entre subprocesos se realice con tanta frecuencia. Un ejemplo sería un bucle DO WHILE muy estrecho. Si tiene problemas de escalabilidad, puede incluir un código como el del siguiente ejemplo, que obliga al procesador a conmutar los subprocesos:

DECLARE Sleep IN Win32API INTEGER
SLEEP(0)

Aunque puede utilizar subprocesamiento múltiple en un equipo con un solo procesador, tenga en cuenta que no obtendrá los resultados que espera. Por ejemplo, en un equipo con un solo procesador, el subprocesamiento múltiple sólo produce una mejora del rendimiento cuando se combinan tareas largas y cortas. Las llamadas a métodos de múltiples subprocesos, como se describe en este ejemplo, pueden parecer más lentas.

En el ejemplo, se llama al mismo tiempo a los métodos A y B. En un componente de un solo subproceso, las peticiones se serializan, de manera que B no comienza hasta que termine A. Con el subprocesamiento múltiple, los dos subprocesos activos reclaman la atención del procesador.

No sólo aumenta el promedio de tiempo que necesitan para completarse; también el procesador utiliza más tiempo para conmutar de un subproceso a otro.

El problema es que los métodos A y B tardan el mismo tiempo.

Por ejemplo, si el método B requiere sólo tres partes de tiempo para completarse, el usuario del sistema percibirá una mejora importante en la respuesta del método B, y sólo una pequeña degradación en el tiempo necesario para ejecutar el método A.

El subprocesamiento múltiple muestra más ventajas en aquellos casos donde la mayoría de los subprocesos pasan una parte importante del tiempo bloqueados, por ejemplo, esperando la E/S de un archivo, para que se pueda ejecutar el código de otros subprocesos en un momento determinado.

Si está pensando en utilizar una aplicación en un equipo con un solo procesador que tenga características que proporcione un mínimo bloqueo de los subprocesos, es posible que desee utilizar el tiempo de ejecución vfp8r.dll. En equipos con varios procesadores y en la mayoría de las demás aplicaciones, debe considerar la posibilidad de utilizar vfp8t.dll para servidores .dll.

Reentrada

En el modelo Apartamento, la reentrada hace referencia a la siguiente secuencia de eventos:

  1. El subproceso de ejecución de un apartamento entra en el código de un objeto porque se ha invocado una propiedad o método.
  2. Mientras el subproceso está en la propiedad o método, otro subproceso invoca una propiedad o método del objeto, y la automatización serializa esta petición; es decir, sitúa la petición en la cola de espera hasta que el subproceso que posee el apartamento del objeto termina el miembro que está ejecutando en ese momento.
  3. Antes de que el subproceso llegue al final del miembro, ejecuta el código que proporciona el control del procesador.
  4. La automatización indica al subproceso que comience a ejecutar la petición serializada, de modo que el subproceso vuelve a entrar en el código del objeto.

La nueva petición puede ser para el miembro que el subproceso ya está ejecutando, en cuyo caso el subproceso entra en el miembro por segunda vez, o puede ser para otro miembro. Si el segundo miembro no cede el control, terminará el procesamiento antes que el primer miembro. Si modifica los datos del módulo que estaba utilizando el primer miembro, puede obtener resultados imprevistos.

Mediante la serialización de las llamadas a métodos y propiedades de cada apartamento, la automatización impide la reentrada, a menos que el código proporcione el control del procesador. El código puede proporcionar el control del procesador mediante alguna de las acciones siguientes:

  • Llamar a DoEvents.
  • Invocar a las propiedades o métodos de un objeto en otro subproceso o en otro proceso. Si se establece la propiedad Application.AutoYield como False (.F.) se suspenderá el procesamiento de los eventos intermitentes entre las líneas del código que se está ejecutando.
  • Invocar un método entre procesos o entre subprocesos desde un método.

No debe incluir código que proporcione el control del procesador a menos que escriba con cuidado todo el código de un objeto para que no importe que dos miembros se ejecuten al mismo tiempo.

Contención de recursos

La nueva biblioteca de tiempo de ejecución vfp8t.dll evita que los objetos tengan acceso a los datos de aplicación de otros objetos, incluidos datos globales del entorno declarados e intrínsecos. Algunos recursos pueden presentar problemas de contención, entre ellos:

  • Archivos
  • Registro
  • Data

La E/S de archivo presenta contenciones de recursos que se pueden tratar fácilmente mediante código, ya que la administración de archivos se realiza mediante el sistema operativo. Cuando se utiliza un archivo, un servidor puede abrir (y bloquear) un archivo para que otros objetos vean que está en uso. En este caso, un servidor escrito correctamente esperará a que el archivo esté disponible o bien tratará el error sin problemas. Los archivos también se pueden abrir compartidos, en cuyo caso el servidor debe saber que otros objetos podrían modificar los valores.

Un caso habitual es el de los archivos INI donde varios objetos diferentes pueden leer o escribir valores. El proceso de lectura y posterior escritura de un valor en un archivo INI consta de dos pasos. Por lo tanto, existe la posibilidad de que el valor que lea un cliente no sea necesariamente el mismo que sobrescribirá más tarde porque otro cliente lo modificó primero; en este caso, sería necesario resolver el conflicto.

Igual que los archivo INI, el Registro almacena valores a los que pueden tener acceso varios clientes. Las aplicaciones deben utilizar las rutinas comunes de la API de Windows para tener acceso al Registro. De nuevo, el diseño del servidor debe tener en cuenta que existe la posibilidad de que los valores de las claves del Registro cambien desde que se lee hasta que se escribe. Las rutinas de la API de Windows evitan la necesidad de resolver conflictos.

Los datos son un recurso complejo de tratar. Afortunadamente, el lenguaje de Visual FoxPro disponible en los tiempos de ejecución proporciona toda la información y funciones necesarias para tratar los problemas de contención de recursos. Para obtener más información acerca de cómo tratar los datos compartidos, vea Programar para acceso compartido.

Vea también

Controlar el bloqueo de llamadas | Lenguajes admitidos en tiempo de ejecución | Interoperabilidad e Internet | Notas sobre programación de servidores de automatización | FoxIsapi


Lenguajes admitidos en tiempos de ejecución

La biblioteca en tiempo de ejecución vfp8r.dll admite todo el conjunto de objetos, comandos y funciones del lenguaje, excluyendo el lenguaje específico de tiempo de diseño..

Para diseñar la vfp8t.dll como una biblioteca liviana de tiempo de ejecución para procesos en servidores, se quitaron algunas entradas de usuario, comandos y funciones. Toda la sintaxis de Objetos está disponible, aunque los eventos de clases visuales como formularios, están deshabilitados. Las siguientes categorías de lenguaje se han quitado en vfp8t.dll:

  • READ, @...Get/Says
  • Los comandos y funciones para menú, menús desplegables y barras de herramientas
  • MESSAGEBOX() y WAIT WINDOW
  • Comandos y funciones de Windows definidos por el usuario

Comandos deshabilitados que generan errores en tiempo de ejecución

La siguiente tabla es una lista de los comandos no admitidos que generarán alguno de estos errores en tiempo de ejecución en la biblioteca vfp8t.dll:

  • Comandos: característica no disponible
  • Funciones: esta función no está implementada
  • Variables del sistema: no se encuentra la variable

Los comandos no admitidos son:

@...BOX | @...CLASS | @...CLEAR
@...EDIT | @...FILL | @...GET
@...MENU | @...PROMPT | @...SAY
@...SCROLL | @...TO | _ALIGNMENT
_ASSIST | _BEAUTIFY | _BOX
_CALCMEM | _CALCVALUE | _CONVERTER
_COVERAGE | _CUROBJ | _DBLCLICK
_DIARYDATE | _FOXDOC | _GALLERY
_GENMENU | _GENPD | _GENSCRN
_GETEXPR | _INCSEEK | _INDENT
_LMARGIN | _PADVANCE | _PBPAGE
_PCOLNO | _PCOPIES | _PDRIVER
_PDSETUP | _PECODE | _PEJECT
_PEPAGE | _PLENGTH | _PLINENO
_PLOFFSET | _PPITCH | _PQUALITY
_PSCODE | _PSPACING | _PWAIT
_RMARGIN | _SCCTEXT | _SPELLCHK
_STARTUP | _TABS | _THROTTLE
_TRANSPORT | _WRAP |
ACCEPT | ACTIVATE MENU | ACTIVATE POPUP
ACTIVATE SCREEN | ACTIVATE WINDOW | AGETCLASS()
AMOUSEOBJ() | ANSITOOEM() | APROCINFO()
ASELOBJ() | ASSERT | ASSIST
BAR() | BARCOUNT() | BARPROMPT()
BROWSE | CALL | CHANGE
CLEAR DEBUG | CLEAR GETS | CLEAR MACROS
CLEAR MENUS | CLEAR POPUPS | CLEAR PROMPT
CLEAR READ | CLOSE DEBUGGER | CLOSE FORMAT
CLOSE MEMO | CNTBAR() | CNTPAD()
COL() | CREATE | CREATE CLASS
CREATE CLASSLIB | CREATE COLOR SET | CREATE FORM
CREATE LABEL | CREATE MENU | CREATE PROJECT
CREATE QUERY | CREATE REPORT | CREATE SCREEN
DEACTIVATE MENU | DEACTIVATE POPUP | DEACTIVATE WINDOW
DEBUG | DEBUGOUT | DEFINE BAR
DEFINE BOX | DEFINE MENU | DEFINE PAD
DEFINE POPUP | DEFINE WINDOW | EDIT
FKLABEL() | FKMAX() | GETBAR()
GETCOLOR() | GETCP() | GETDIR()
GETEXPR() | GETFILE() | GETFONT()
GETPAD() | GETPICT() | GETPRINTER()
HELP | HIDE MENU | HIDE POPUP
HIDE WINDOW | IMESTATUS() | INPUT
KEYBOARD | LOAD | LOCFILE()
MCOL() | MDOWN() | MENU
MENU TO | MENU() | MESSAGEBOX()
MODIFY Commands | MOUSE | MOVE POPUP
MOVE WINDOW | MRKBAR() | MRKPAD()
MROW() | MWINDOW() | OBJNUM()
OBJVAR() | OEMTOANSI() | ON BAR()
ON ESCAPE | ON EXIT Commands | ON KEY
ON KEY LABEL | ON PAD | ON PAGE
ON READERROR | ON SELECTION BAR | ON SELECTION MENU
ON SELECTION PAD | ON SELECTION POPUP | PAD()
PLAY MACRO | POP KEY | POP MENU
POP POPUP | POPUP() | PRMBAR()
PRMPAD() | PROMPT() | PUSH KEY
PUSH MENU | PUSH POPUP | PUTFILE()
RDLEVEL() | READ | READ MENU
READKEY() | RELEASE BAR | RELEASE MENUS
RELEASE PAD | RELEASE POPUPS | RELEASE WINDOWS
RESTORE MACROS | RESTORE SCREEN | RESTORE WINDOW
ROW() | SAVE MACROS | SAVE SCREEN
SAVE WINDOWS | SCROLL | SHOW GET(S)
SHOW MENU | SHOW OBJECT | SHOW POPUP
SHOW WINDOW | SIZE POPUP | SIZE WINDOW
SKPBAR() | SKPPAD() | SUSPENDER
VARREAD() | WAIT | WBORDER()
WCHILD() | WCOLS() | WEXIST()
WFONT() | WLAST() | WLCOL()
WLROW() | WMAXIMUM() | WONTOP()
WOUTPUT() | WMINIMUM() | WPARENT()
WREAD() | WROWS() | WTITLE()
WVISIBLE() | ZOOM WINDOW |

Comandos deshabilitados que no generan errores en tiempo de ejecución

La siguiente tabla es una lista de los comandos no admitidos que no generarán un error cuando se ejecuten en tiempo de ejecución en la biblioteca vfp8t.dll: Estas funciones están deshabilitadas para su uso en tiempo de ejecución; no obstante, debido a la frecuencia con que se usan en código y bibliotecas de clases de uso habitual entre diferentes tipos de aplicaciones, no causan un error. Cuando se encuentra uno de estos comandos o funciones en el código, Visual FoxPro pasa por alto esa línea de código y continúa la ejecución. Se incluyen determinados comandos SET y funciones SYS.

CD | CHDIR | DOEVENTS
SET ASSERTS | SET BELL | SET BORDER
SET BROWSEME | SET BRSTATUS | SET CONSOLE
SET COLOR | SET CLEAR | SET CLOCK
SET COVERAGE | SET CONFIRM | SET CURSOR
SET CPDIALOG | SET DEBUGOUT | SET DEBUG
SET DEFAULT | SET DEVELOPMENT | SET DELIMITERS
SET DISPLAY | SET DOHISTORY | SET ESCAPE
SET ECHO | SET EVENTLIST | SET EVENTTRACKING
SET FORMAT | SET FUNCTION | SET HELP
SET INTENSITY | SET MARK OF | SET MACDESKTOP
SET MACKEY | SET MARGIN | SET MESSAGE
SET NOTIFY | SET ODOMETER | SET PALETTE
SET PDSETUP | SET READBORDER | SET REFRESH
SET RESOURCE | SET SAFETY | SET SKIP OF
SET STICKY | SET STATUS | SET SYSMENU
SET TALK | SET TRBETWEEN | SET TYPEAHEAD
SET VIEW | SET WINDOW | SYS(1037)
SYS(18) | SYS(103) | SYS(2002)
SYS(1270) | SYS(2017) | SYS(4204)
SYS(2016) |  |

En la tabla siguiente se muestran las propiedades y funciones que se han agregado a Visual FoxPro para facilitar la administración de clientes y servidores de automatización. Para obtener más información, vea los temas indicados.

Nuevos elementos del lenguaje de servidor | Descripción
COMARRAY( ) (Función) | Especifica cómo se transfieren las matrices a los objetos COM.
COMCLASSINFO( ) (Función) | Devuelve información del registro acerca de un objeto COM, como un servidor de automatización de Visual FoxPro.
COMRETURNERROR( ) (Función) | Rellena la estructura de excepción COM con información que los clientes de automatización pueden utilizar para determinar el origen de los errores de un servidor de automatización.
CREATEOBJECTEX( ) (Función) | Crea una instancia de un objeto COM registrado (por ejemplo, de un servidor de automatización de Visual FoxPro) en un equipo remoto. En el caso de una .dll en proceso de Visual FoxPro, puede utilizar Microsoft Transaction Server para crear una instancia de la .dll en un equipo remoto.
EVENTHANDLER( ) (Función) | Vincula un evento de servidor COM a métodos de interfaz implementados en una instancia de objeto de Visual FoxPro.
ProcessID (Propiedad) | Devuelve el identificador del proceso que creó el objeto.
ServerName (Propiedad) | Contiene la ruta de acceso completa y el nombre de archivo de un servidor de automatización. La propiedad ServerName corresponde al objeto Application.
StartMode (Propiedad) | Contiene un valor numérico que indica cómo se inició la instancia de Visual FoxPro.
SYS(2334) - Modo de invocación de servidor de automatización | Devuelve un valor que indica cómo se ha invocado un método de un servidor de automatización de Visual FoxPro.
SYS(2335) - Modo de servidor desatendido | Activa o desactiva la compatibilidad con los estados modales en los servidores de automatización .exe distribuibles de Visual FoxPro.
SYS(2336) - Función de soporte de sección fundamental | Controla el acceso de la sección fundamental de servidores multiproceso.
SYS(2339) - Llamar a CoFreeUnusedLibraries al liberar un objeto COM | Devuelve el valor actual de una variable interna global denominada g_fCallCoFreeOnRelease
ThreadID (Propiedad) | Devuelve el identificador del subproceso donde se creó el objeto.

Vea también

Seleccionar una biblioteca de tiempo de ejecución | Notas sobre programación de servidores de automatización | Interoperabilidad e Internet | Controlar el bloqueo de llamadas | Selección de tipos de procesos


Interoperabilidad e Internet

Visual FoxPro es compatible con la técnica de arrastrar y soltar de OLE, que permite mover datos entre Visual FoxPro y otras aplicaciones, y también dentro de las propias aplicaciones de Visual FoxPro.

Además, Visual FoxPro facilita la creación de aplicaciones para su uso con Internet y otros programas para Windows, como Excel y Visual Basic.

Además, Visual FoxPro facilita la creación de servidores de automatización mejorados para trabajar con Internet, Microsoft Transaction Server y Active Desktop.

En esta sección

Técnica de arrastrar y soltar OLE
Describe arrastrar y soltar OLE, una potente y útil herramienta admitida por Visual FoxPro, la cual le permite mover datos entre otras aplicaciones que admiten arrastrar y soltar OLE (como Visual FoxPro, Visual Basic, Microsoft Windows Explorer, Word y Excel, etcétera).
Compartir información y agregar objetos OLE
Explica como puede usar Visual FoxPro para compartir información con otras aplicaciones.

Secciones relacionadas

Crear Servicios Web y componentes
Describe como habilitar una aplicación Visual FoxPro para trabajar con varios usuarios, tomando ventaja de controles ActiveX y automatización, y agregar características internacionales.
Servicios Web XML en Visual FoxPro 8.0
Visual FoxPro hace posible el uso de servicios web XML en sus aplicaciones. Un servicio web XML es una clase (objeto) distribuida en Internet, a la que se puede tener acceso por programación a través de llamadas normales orientadas a objeto.
Automatización y Servidores COM
Describe como puede ampliar la funcionalidad de sus aplicaciones Visual FoxPro utilizando automatización y servidores COM sin gastar tiempo escribiendo código extra.


Técnica de arrastrar y soltar de OLE

Visual FoxPro es compatible con la técnica de arrastrar y soltar de OLE, una herramienta útil y eficaz que permite mover datos entre las aplicaciones que admiten dicha técnica (como Visual FoxPro, Visual Basic, el Explorador de Microsoft Windows, Microsoft Word y Excel, etc.). En una aplicación distribuida de Visual FoxPro puede mover datos entre controles de la aplicación o entre controles y otras aplicaciones para Windows que admitan la técnica de arrastrar y soltar de OLE.

Tenga en cuenta que las versiones anteriores de Visual FoxPro admitían la función de arrastrar y soltar controles mediante programación, lo que permitía mover los controles en un formulario. Esta forma de arrastrar y soltar se mantiene en Visual FoxPro. Sin embargo, si elige implementar la técnica de arrastrar y soltar en sus aplicaciones, debe usar sólo una de las dos técnicas, arrastrar y soltar controles mediante programación o la técnica de arrastrar y soltar de OLE, sin combinar ambos tipos.

El conocimiento de los fundamentos de la técnica de arrastrar y soltar de OLE facilita el aprovechamiento total de sus posibilidades.

Arrastrar y soltar datos

Para arrastrar y soltar datos entre aplicaciones y controles se utiliza el ratón. Por ejemplo, puede seleccionar un conjunto de archivos en el Explorador de Windows. A continuación, puede mantener presionado el botón del ratón mientras los arrastra y después liberarlo para soltar los archivos en el Administrador de proyectos de Visual FoxPro; o bien, puede seleccionar texto en un documento de Word y soltarlo en un cuadro de texto de un formulario de Visual FoxPro. Durante la operación de arrastrar y soltar de OLE, el cursor del ratón cambia de forma para indicar que la operación está en curso.

Origen de arrastre

La aplicación o control desde el que se mueven los datos se denomina origen de arrastre.

Propiedades, eventos y métodos del origen de arrastre

En la siguiente tabla se indican las propiedades, eventos y métodos disponibles para un origen de arrastre OLE.

Propiedad, evento o método | Descripción
OLECompleteDrag (Evento) | Ocurre cuando se colocan los datos en el destino de colocación o cuando se cancela la operación OLE de arrastrar y soltar.
OLEDrag (Método) | Inicia una operación OLE de arrastrar y soltar.
OLEDragPicture (Propiedad) | Especifica la imagen que aparece debajo del puntero del ratón durante una operación de arrastrar y soltar de OLE. Puede especificar un archivo de imagen de tipo .bmp, .dib, .jpg, .gif, .ani, .cur o .ico.
OLEDragMode (Propiedad) | Especifica la forma en que un origen de arrastre administra las operaciones de arrastre de OLE.
OLEGiveFeedBack (Evento) | Ocurre después de cada evento OLEDragOver. Permite al origen de arrastre especificar el tipo de operación de arrastrar y soltar de OLE, así como el resultado visual.
OLESetData (Evento) | Ocurre cuando un destino de colocación llama al método GetData y no hay datos con un formato especificado en el objeto DataObject al que se refiere la operación de arrastrar y soltar de OLE.
OLEStartDrag (Evento) | Ocurre cuando se llama al método OLEDrag.

Destino de colocación

La aplicación o control al que se mueven los datos se denomina destino de colocación.

Propiedades y eventos del destino de colocación

En la tabla siguiente se indican las propiedades, eventos y métodos disponibles para un destino de colocación de OLE.

Propiedad o evento | Descripción
OLEDragDrop (Evento) | Ocurre cuando se colocan datos en un destino de colocación y la propiedad OLEDropMode de éste tiene el valor 1 – Activado.
OLEDragOver (Evento) | Ocurre cuando se arrastran datos sobre un destino de colocación y la propiedad OLEDropMode de éste tiene el valor 1 – Activado.
OLEDropEffects (Propiedad) | Especifica el tipo de operaciones de colocación que admite un destino de colocación de OLE.
OLEDropHasData (Propiedad) | Especifica la forma de administrar una operación de colocación.
OLEDropMode (Propiedad) | Especifica la forma en que un destino de colocación administra las operaciones de colocación de OLE.

Mover datos

Para realizar una operación de arrastrar y soltar con el fin de mover datos con el botón predeterminado del ratón (primario), seleccione los datos que desee mover en el origen de arrastre. Una vez seleccionados los datos, mantenga presionado el botón del ratón mientras desplaza el puntero hasta el destino de colocación. Suelte el botón del ratón para soltar los datos en el destino. Durante la operación de arrastrar y soltar de OLE, el cursor del ratón cambia de forma para indicar que la operación está en curso.

También puede hacer clic con el botón no predeterminado del ratón (secundario) en los datos del origen de arrastre y arrastrarlos hasta un destino de colocación. En función del destino, al soltar los datos puede aparecer un menú contextual en el destino de colocación. El menú contextual contiene un conjunto de opciones que permite elegir cómo procesará los datos el destino de colocación.

Copiar datos

También puede copiar datos desde un origen de arrastre y pegarlos en un destino de colocación. Presione la tecla Ctrl mientras hace clic con el ratón en los datos seleccionados en el origen de arrastre. En el cursor del ratón aparecerá un signo más (+) mientras se arrastran los datos, para indicar que se está realizando una operación de copia.

Destinos y orígenes que no admiten la técnica de arrastrar y soltar de OLE

Sólo se pueden mover o copiar datos desde un origen de arrastre compatible con la técnica de arrastrar y soltar de OLE hasta un destino de colocación que también admita dicha característica. Tenga en cuenta que aunque un destino de colocación admita la técnica de arrastrar y soltar de OLE, ello no implica que acepte los datos que desee soltar en él. Por ejemplo, es posible que los datos que desea mover o copiar tengan un formato que no es compatible con el destino de colocación. En las operaciones de arrastrar y soltar, el cursor se transforma en el símbolo No soltar (un círculo tachado) para indicar que el ratón se encuentra en un área de una aplicación o de un control en el que no se pueden soltar los datos.

Cancelar una operación

Para cancelar una operación de arrastrar y soltar de OLE, presione ESC mientras la efectúa.

Vea también

Interoperabilidad e Internet | Técnica de arrastrar y soltar de OLE en tiempo de diseño | Técnica de arrastrar y soltar de OLE en tiempo de ejecución | Implementar modos intrínseco y manual de arrastrar y soltar de OLE

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


Técnica de arrastrar y soltar de OLE en tiempo de diseño

La técnica de arrastrar y soltar de OLE en tiempo de diseño de Visual FoxPro hace que el desarrollo de aplicaciones sea aún más rápido que en las versiones anteriores. Esta técnica permite colocar de forma sencilla en el Administrador de proyectos y en los diseñadores de Visual FoxPro archivos del Explorador de Windows. También se permite mover o copiar fácilmente texto desde otras aplicaciones a la ventana Comandos, a los editores de texto de Visual FoxPro y a la ventana Propiedades.

En la tabla siguiente se indican las características de tiempo de diseño de Visual FoxPro que admiten la técnica de arrastrar y soltar de OLE, junto con una descripción de su uso.

Elemento de la interfaz Descripción
Ventana Comandos Destino de colocación de archivos y origen de arrastre y destino de colocación de texto. Si se coloca un archivo creado con Visual FoxPro en la ventana Comandos, se abrirá el archivo con el comando de Visual FoxPro correspondiente. Por ejemplo, si se coloca en la ventana Comandos una base de datos, Visual FoxPro ejecutará los comandos OPEN DATABASE y MODIFY DATABASE para abrir el archivo y poder modificarlo. Si se coloca en la ventana Comandos una tabla, esta se abrirá con los comandos USE … AGAIN y BROWSE. Si SET EXCLUSIVE tiene el valor ON, la tabla se abrirá para uso exclusivo. Si SET EXCLUSIVE tiene el valor OFF, se abrirá para uso compartido.

Otros archivos de Visual FoxPro se abren con el comando MODIFY correspondiente: los formularios se abren con MODIFY FORM, las consultas con MODIFY QUERY, los archivos de texto y de encabezado (.H) con MODIFY FILE, etc.

Si se coloca en la ventana Comandos un archivo creado con otra aplicación, se abrirá con la aplicación a la que esté asociado. Por ejemplo, al colocar una hoja de cálculo de Microsoft Excel en la ventana Comandos se iniciará Excel y se abrirá dicha hoja de cálculo.
Administrador de proyectos Destino de colocación de archivos.

Los archivos se agregan a las categorías correspondientes del Administrador de proyectos, en función de sus extensiones de archivo. Si Visual FoxPro no reconoce la extensión de un archivo que se coloca en el Administrador de proyectos, el archivo se agregará a la categoría Otros.

Si se coloca en el Administrador de proyectos una tabla contenida en una base de datos,esta se agregará a la categoría Bases de datos del elemento Datos y se marcará como Excluida. Si se coloca en el Administrador de proyectos una tabla libre, esta se agregará a la categoría Tablas libres del elemento Datos y se marcará como Excluida. Si se coloca en el Administrador de proyectos una base de datos, esta se agregará a la categoría Bases de datos del elemento Datos y se marcará como Excluida.

Aunque con la técnica de arrastrar y soltar de OLE es fácil agregar archivos al Administrador de proyectos, recuerde que el Administrador de proyectos agrega automáticamente al proyecto todos los archivos a los que se hace referencia cuando se genera. Por ejemplo, si un programa agregado al proyecto ejecuta otro programa, este programa se agregará automáticamente al generar el proyecto. No es necesario agregar el segundo programa manualmente.
Editores de texto Origen de arrastre y destino de colocación para texto.

Se consideran editores de texto las ventanas de edición abiertas con MODIFY COMMAND, MODIFY FILE y MODIFY MEMO; la ventana Comandos; las ventanas de edición de miniprogramas de los Diseñadores de formularios, de clases, de menús y de entornos de datos; y el editor de procedimientos almacenados del Diseñador de bases de datos.
Depurador Origen de arrastre y destino de colocación para texto.

El cuadro de texto de la ventana Inspección y la lista Nombre son orígenes de arrastre y destinos de colocación de texto. Las ventanas Seguimiento y Resultados del depurador son solo orígenes de arrastre para texto.
Diseñador de bases de datos Destino de colocación de archivos.

Al colocar una tabla en el Diseñador de bases de datos, la tabla se agrega a la base de datos actual.
Diseñador de clases Destino de colocación de texto y archivos.

De forma predeterminada, al colocar texto en un objeto contenedor del Diseñador de clases se crea una etiqueta con ese texto como valor de la propiedad Caption. Puede cambiar el control predeterminado creado al colocar texto en el Diseñador de formularios. Para ello, utilice la ficha Asignación de campos del cuadro de diálogo Opciones.

Si coloca texto en un control no contenedor (controles CheckBox, CommandButton, Header, Label u OptionButton), se establecerá el texto como valor de la propiedad Caption.

Al colocar un archivo gráfico (.ani, .bmp, .cur, .gif, .ico o .jpg) en el Diseñador de clases se crea un control Image cuya propiedad Picture tiene como valor el nombre de ese archivo gráfico.
Diseñador de entornos de datos Destino de colocación de archivos.

Al colocar una tabla en el Diseñador de entornos de datos, se agrega la tabla al entorno de datos. Al colocar una base de datos en el Diseñador de entornos de datos aparece el diálogo Agregar tabla o vista, lo que le permite agregar una tabla o vista al entorno de datos.
Diseñador de consultas Destino de colocación de archivos.

Al colocar una tabla en el Diseñador de consultas, se agrega la tabla a la consulta. Al colocar una base de datos en el Diseñador de consultas aparece el cuadro de diálogo Agregar tabla o vista, que permite agregar una tabla o una vista a la consulta.
Diseñador de vistas Destino de colocación de archivos.

Al colocar una tabla en el Diseñador de vistas, se agrega la tabla a la vista. Al colocar una base de datos en el Diseñador de vistas aparece el cuadro de diálogo Agregar tabla o vista, que permite agregar una tabla o una vista a la vista.
Ventana Propiedades Destino de colocación de texto.

Puede colocar texto en el cuadro de texto que aparece en la parte superior de la ventana Propiedades al seleccionar una propiedad en tiempo de diseño.
Galería de componentes Origen de arrastre y destino de colocación de archivos.

Puede arrastrar objetos desde la Galería de componentes y colocarlos en el Diseñador de formularios. También puede arrastrar archivos desde la Galería de componentes y colocarlos en el Administrador de proyectos.

Además, puede colocar archivos en la Galería de componentes.

Vea también

Técnica de arrastrar y soltar OLE | Técnica de arrastrar y soltar de OLE en tiempo de ejecución | Implementar modos intrínseco y manual de arrastrar y soltar de OLE | Interoperabilidad e Internet


Técnica de arrastrar y soltar de OLE en tiempo de ejecución

La técnica de arrastrar y soltar de OLE, está disponible en tiempo de ejecución, para los controles de Visual FoxPro y para el editor de texto. En tiempo de ejecución, los controles y el editor de texto admiten esta técnica de forma interactiva; además, los controles admiten la técnica mediante programación. El objeto DataObject permite el uso de la técnica de arrastrar y soltar de OLE mediante programación para los controles.

Existen dos técnicas de arrastrar y soltar de OLE disponibles para los controles de Visual FoxPro: el modo intrínseco y el modo manual. En el primero, Visual FoxPro administra intrínsecamente la operación de arrastrar y soltar de OLE. En el modo manual, las operaciones de arrastrar y soltar de OLE se administran mediante programación. Los eventos que se producen están determinados por el modo utilizado. Si desea obtener más información, vea la sección "Modos intrínseco y manual de arrastrar y soltar de OLE".

Arrastrar y soltar en versiones anteriores de Visual FoxPro

En las versiones anteriores de Visual FoxPro se utilizaba la técnica de arrastrar y soltar mediante programación para los controles, lo que permitía mover los controles de un formulario. Este modo de arrastrar y soltar sigue siendo compatible. Si utiliza los valores predeterminados de las propiedades OLEDragMode y OLEDropMode, podrá ejecutar las aplicaciones existentes como antes, sin ningún cambio.

El objeto DataObject

El objeto DataObject es un contenedor para los datos que se transfieren desde un origen de arrastre de OLE hasta un destino de colocación de OLE que sólo existe mientras se realiza la operación de arrastrar y soltar de OLE. El objeto DataObject no se puede crear mediante programación y las referencias al mismo dejan de ser válidas al finalizar la operación de arrastrar y soltar. El objeto DataObject se pasa como parámetro oDataObject en los eventos OLEStartDrag, OLEDragOver, OLEDragDrop y OLESetData.

El objeto DataObject puede almacenar varios conjuntos de datos, cada uno con un formato distinto. Puede usar el método GetFormat para determinar si existe un formato específico en el objeto DataObject. Vea GetFormat (Método) para obtener una lista con los formatos que admite el objeto DataObject.

Métodos del objeto DataObject

El objeto DataObject tiene métodos que permiten manipular mediante programación los datos que se arrastran y colocan. En la tabla siguiente se indican los métodos disponibles en tiempo de ejecución para el objeto DataObject.

Método | Descripción
ClearData | Borra todos los datos y formatos del objeto DataObject de la operación de arrastrar y soltar de OLE.
GetData | Recupera los datos del objeto DataObject de la operación de arrastrar y soltar de OLE.
GetFormat | Determina si hay datos con el formato especificado disponibles en el objeto DataObject de la operación de arrastrar y soltar de OLE.
SetData | Establece los datos y el formato de los mismos en el objeto DataObject de la operación de arrastrar y soltar de OLE.
SetFormat | Establece un formato de datos, sin los datos, en el objeto DataObject de la operación de arrastrar y soltar de OLE.

Vea también

Técnica de arrastrar y soltar de OLE en tiempo de diseño | Implementar modos intrínseco y manual de arrastrar y soltar de OLE | Interoperabilidad e Internet

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


Implementar modos intrínseco y manual de arrastrar y soltar de OLE

Visual FoxPro admite dos modos de arrastrar y soltar de OLE para los controles: el modo intrínseco y el modo manual. En el primero, las operaciones de arrastrar y soltar de OLE las controla Visual FoxPro. En las operaciones de arrastrar y soltar de OLE en modo manual, la función y el control se especifican mediante programación.

Modo intrínseco de arrastrar y soltar de OLE

El modo intrínseco de arrastrar y soltar de OLE se puede implementar en una aplicación para proporcionar compatibilidad estándar con la técnica de arrastrar y soltar de OLE sin necesidad de programación adicional.

Para implementar la técnica intrínseca de arrastrar y colocar de OLE para un control

  1. Asigne el valor 1 – Automático a la propiedad OLEDragMode del control para permitir que este actúe como origen de arrastre de OLE.
  2. Asigne el valor 1 – Activado a la propiedad OLEDropMode del control para permitir que este actúe como destino de colocación de OLE.

En las operaciones intrínsecas de arrastrar y soltar de OLE, Visual FoxPro determina si el destino de colocación admite el formato de los datos que se intentan colocar en él. Sólo se colocarán los datos si el destino es compatible con el formato.

En la tabla siguiente se indican los controles de Visual FoxPro con los formatos de datos que admiten como orígenes de arrastre en el modo intrínseco. Tenga en cuenta que CF_TEXT es texto, como el que escribe en un cuadro de texto, y CFSTR_VFPSOURCEOBJECT es una referencia a tipo de objeto para un control u objeto de Visual FoxPro. En el caso de los controles siguientes que admiten el formato de datos CF_TEXT, puede arrastrar texto desde la parte de texto del control.

Formatos de datos de los orígenes de arrastre

Control | Formato de datos (definido en Foxpro.h)
Container, Image, Line, PageFrame y Shape | CFSTR_VFPSOURCEOBJECT
CommandButton y Label | CFSTR_VFPSOURCEOBJECT y CF_TEXT
CheckBox, ComboBox, EditBox, ListBox, Spinner y TextBox | CFSTR_VFPSOURCEOBJECT, CF_TEXT y CFSTR_OLEVARIANT

En la tabla siguiente se indican los controles de Visual FoxPro con los formatos de datos que admiten como destinos de colocación en el modo intrínseco. En el caso de los controles, puede colocar texto en la parte de texto del control. El texto se sitúa en el punto de inserción.

Formatos de datos de los destinos de colocación

Control | Formato de datos
EditBox y ComboBox (cuando la propiedad Style del ComboBox es 0 - Cuadro desplegable) | CF_TEXT
Spinner y TextBox | CFSTR_OLEVARIANT

Modo manual de arrastrar y soltar de OLE

Es posible que en algunos casos desee controlar el tipo de datos que se pueden colocar en un destino de colocación o proporcionar funciones adicionales a una operación de arrastrar y soltar. Por ejemplo, puede convertir los datos a un formato compatible con el destino de colocación o puede mostrar un cuadro de diálogo que pida al usuario que confirme si desea colocar los datos en el destino. Para omitir la compatibilidad intrínseca de la técnica de arrastrar y soltar de OLE y tener más control sobre estas operaciones, utilice la técnica manual de arrastrar y soltar de OLE.

Para implementar la función manual de arrastrar y soltar de OLE para un control, escriba su propio código de evento o de método para el evento o método que desea omitir. Incluya la palabra clave NODEFAULT en el código del evento o método para pasar por alto el comportamiento intrínseco de Visual FoxPro al arrastrar y soltar.

Visual FoxPro ofrece compatibilidad con aplicaciones existentes de versiones anteriores (sin arrastre de OLE) cuando el valor de OLEDragMode es 0 (valor predeterminado) y no se incluye código adicional para operaciones de arrastrar y soltar de OLE.

Vea también

Técnica de arrastrar y soltar de OLE en tiempo de ejecución | Interoperabilidad e Internet | Técnica de arrastrar y soltar de OLE en tiempo de diseño | Técnica de arrastrar y soltar OLE


Compartir información y agregar OLE

Con Visual FoxPro puede aprovechar la eficacia de otras aplicaciones para Windows compartiéndo información con ellas. Puede copiar y pegar datos de una aplicación a otra, combinar correspondencia mediante datos de tablas de Visual FoxPro, vincular o incrustar datos de otras aplicaciones, e importar o exportar datos entre aplicaciones. El uso compartido de información permite ahorrar tiempo y evitar errores. Por ejemplo, en lugar de escribir resultados en una tabla desde Excel, puede copiar los resultados o vincularlos a Excel para obtenerlos automáticamente.

Puede ampliar la potencia de las aplicaciones de Visual FoxPro con las capacidades de otras aplicaciones de Automatización o de controles ActiveX. En los formularios o campos de tipo General de sus aplicaciones, puede incluir funciones o datos específicos como texto, sonido, imágenes y vídeo procedentes de otras aplicaciones. Puede ver o manipular estos datos de forma visible mediante la aplicación utilizada para crearlos o bien, manipular los datos de forma invisible y automática controlando la aplicación con Automatización.

Otras aplicaciones también pueden ampliar la eficacia de Visual FoxPro mediante Automatización. Incluso puede crear servidores de Automatización (componentes COM) en Visual FoxPro a los que pueden tener acceso todas las aplicaciones en modo local o remoto.

En esta sección

Compartir información dinámicamente
En Visual FoxPro puede incluir dinámicamente datos de otras aplicaciones, que seguirán manteniendo los datos. Para hacer esto, vincúle o incruste los datos en la aplicación.
Agregar objetos OLE a las aplicaciones
Puede agregar objetos OLE a tablas y formularios de forma interactiva o mediante programación.

Secciones relacionadas

Desarrollar aplicaciones Visual FoxPro
Incluye información conceptual acerca de cómo desarrollar aplicaciones Visual FoxPro, instrucciones para crear bases de datos e interfaz de usuario, y otras tareas necesarias para crear aplicaciones Visual FoxPro.
Técnica de arrastrar y soltar OLE
Describe arrastrar y soltar OLE, una potente y útil herramienta admitida por Visual FoxPro, la cual le permite mover datos entre otras aplicaciones que admiten arrastrar y soltar OLE (como Visual FoxPro, Visual Basic, Microsoft Windows Explorer, Word y Excel, etcétera).
Programar en Visual FoxPro
Describe cómo acceder a toda la eficacia de Visual FoxPro creando aplicaciones que incorporan técnicas de programación orientada a objetos el modelo controlado por eventos para maximizar su productividad mientras programa.


Compartir información dinámicamente

En Visual FoxPro puede incluir dinámicamente datos de otras aplicaciones, que seguirán manteniendo los datos. Para hacer esto, vincule o incruste los datos en la aplicación. Por ejemplo, puede vincular o incrustar un documento de Word en un campo General o puede vincular o incrustar una hoja de cálculo de Excel en un formulario.

Los datos vinculados dinámicamente se almacenan en su archivo de origen, no en la tabla o el formulario de Visual FoxPro. La tabla o el formulario solo almacenan la ubicación del origen y muestran una representación de los datos vinculados. Los datos vinculados se actualizan cuando el archivo de origen cambia y conservan una conexión con dicho archivo de origen, a menos que rompa la conexión (consulte Cambiar o romper vínculos con datos).

Nota Los archivos con extensión .AVI siempre están vinculados

Los datos incrustados dinámicamente solo se almacenan en la tabla o en el formulario. Estos datos no conservan una conexión con su archivo de origen. Si se efectúan cambios en el archivo de origen, dichos cambios no se verán en la aplicación Visual FoxPro.

Incrustar y vincular información

Cree vínculos cuando:

  • Es probable que los datos o los gráficos vayan a cambiar.
  • La aplicación debe incluir necesariamente la última versión disponible.
  • Los archivos de origen están disponibles para su actualización en el equipo o a través de la red.
  • Los archivos de origen deben compartirse con otras aplicaciones.

Incruste datos o gráficos cuando:

  • No necesite disponer de la versión más reciente en la aplicación.
  • Los datos incrustados no tengan que incluirse en varias aplicaciones.
  • Los archivos de origen no se pueden actualizar si están vinculados.

Utilice estas directrices para decidir si debe vincular o incrustar:

Para | Utilice este método | Detalles
Crear aplicaciones que puede utilizar en otros equipos o que puede modificar, aunque los archivos de origen no estén presentes. | Incruste los datos. | Para modificar los datos, todas las aplicaciones de las que provienen los datos deben estar instaladas en el equipo.
Incluir datos que podrían no estar siempre disponibles, como los datos almacenados en un servidor. | Incruste los datos. | Con los datos incrustados se incluye toda la información necesaria.
Incluir un archivo muy grande, por ejemplo, de vídeo o de sonido. | Cree un vínculo con el archivo de origen. | La aplicación sólo almacena el vínculo, manteniendo manejable el tamaño de la aplicación.
Incluir datos que se guardan por separado en su aplicación de origen. | Cree un vínculo con la aplicación de origen. | La aplicación refleja los cambios realizados en la aplicación de origen.

En los temas relacionados se describe cómo agregar datos a tablas y formularios, cambiar o romper vínculos con datos, mostrar datos vinculados o incrustados en tablas y modificar datos vinculados o incrustados.

Copiar y pegar datos

Si desea compartir pequeñas cantidades de datos de forma rápida y sencilla, pero no desea compartir archivos completos, seleccione los datos manualmente, córtelos o cópielos y, a continuación, péguelos donde desee. Por ejemplo, copie los datos seleccionados de un formulario y péguelos en un documento de Microsoft Word o copie celdas seleccionadas de una hoja de cálculo de Microsoft Excel y péguelas en un campo General de una tabla. Puede incluso copiar y pegar datos en mensajes de correo y enviar los mensajes desde Visual FoxPro.

Sugerencia Para compartir archivos completos, vincúlelos o incrústelos. Para obtener más detalles acerca de como vincular e incrustar, consulte Compartir información dinámicamente.

Para pegar datos de otra aplicación en un campo General

  1. Copie los datos al Portapapeles.
  2. Abra y examine la tabla que contiene el campo General en el que desea pegar los datos.
  3. Haga doble clic en el campo General.
  4. Para incrustar los datos elija el menú Edición y, a continuación, seleccione el comando Pegar o Pegado especial.

    –O bien–

    Vincule los datos; para ello, elija en el menú Edición el comando Pegado especial y, a continuación, seleccione Pegar vínculo en el cuadro de diálogo Pegado especial.

    Sugerencia Puede ahorrar espacio de disco si vincula o incrusta activando la casilla de verificación Mostrar como icono. Cuando está activada esta casilla, Visual FoxPro muestra el icono en lugar de los datos.

Incrustar hipervínculos

El Editor de Visual FoxPro permite incrustar y activar hipervínculos. Al incluir un desencadenante de protocolo de hipervínculo válido, Visual FoxPro aplica los atributos de hipervínculo al texto escrito.

Si los hipervínculos están habilitados (Cuadro de diálogo Opciones o propiedad EditorOptions), se mostrará un hipervínculo en su editor con el aspecto típico subrayado de un hipervínculo de HTML. El carácter de terminación de un hipervínculo es un espacio, si tiene espacios en su ruta debe reemplazarlos con %20. Por ejemplo, la carpeta http://servername/program files/my debe escribirse como http://servername/program%20files/my%20folder.

De forma predeterminada, es necesario presionar Ctrl y hacer clic para seguir el vínculo. La propiedad EditorOptions permite modificar la acción predeterminada, de modo que sólo sea necesario hacer clic para seguir el hipervínculo. La siguiente tabla describe los protocolos válidos.

Protocolo | Desencadenadores | Sintaxis
Archivo | File:/ | file:///cDrive/cPath | cFile | file:////cUNCPath
FTP | FTP:/ | ftp://[cUserName[:cPassword@]]cDomain
Gopher | Gopher:/ | gopher://cDomain
HTTP | HTTP:/, www.<char> | http://cDomain
HTTPS | HTTP:/ | https://cDomain
MailTo | MailTo:/ | mailto:cAddress[;cMoreAddresses][&cSubject] [&cBody] [&cCC][&cBCC]
News | News:/ | news:cNewsGroup
Telnet | Telnet:/ | telnet://cDomain[:iPort]

Crear combinaciones de correspondencia

Un modo frecuente de compartir datos consiste en enviar cartas creadas a partir de direcciones que se almacenan en Visual FoxPro y plantillas que se guardan en Microsoft Word. En Visual FoxPro, puede crear un documento de Word que contenga datos de una tabla de Visual FoxPro mediante el Asistente para combinar correspondencia.

Para utilizar el Asistente para combinar correspondencia

  1. En el menú Herramientas, elija Asistentes.
  2. En el submenú, elija Combinar correspondencia.
  3. Siga las instrucciones del asistente.

Enviar correo desde Visual FoxPro

Si ha instalado un programa de correo, puede enviar correo desde Visual FoxPro.

Para enviar correo

  • En el menú Archivo, elija Enviar.

    Su programa de correo electrónico muestra un cuadro de diálogo en el que puede redactar y enviar mensajes de correo.

También puede enviar correo desde una aplicación con el Control de sesión MAPI y el Control de mensajes MAPI. Para obtener más información acerca de estos controles, vea Introducción a los controles ActiveX.

Vea también

Insertar datos en tablas | Cambiar o romper vínculos con datos de tablas | Mostrar datos incrustados o vinculados en formularios | Mostrar datos incrustados o vinculados de tablas | Importar y exportar datos | Agregar OLE


Insertar datos en tablas

Puede incluir datos de otras aplicaciones en una tabla de Visual FoxPro si inserta los datos en campos de tipo General. Por ejemplo, si dispone de imágenes de productos, puede incluirlas en una tabla que contenga otros datos del producto si las inserta en un campo General.

Para insertar datos en un campo General

  1. Abra y examine la tabla correspondiente.
  2. Haga doble clic en el campo General en el que desea insertar los datos.
  3. En el menú Edición, elija Insertar objeto.

    Aparecerá el cuadro de diálogo Insertar objeto, que mostrará una lista de los tipos de datos que puede insertar en el campo.

  4. Para crear sus propios datos, seleccione Crear nuevo y elija el tipo de datos correspondiente.

    –O bien–

    Para utilizar datos existentes, seleccione el botón de opción Crear desde archivo. A continuación, escriba el nombre del archivo que contiene los datos o elija Examinar y seleccione el archivo. Si desea vincular el archivo, active Vincular.

Vea también

Compartir información dinámicamente | Cambiar o romper vínculos con datos de tablas | Mostrar datos incrustados o vinculados en formularios | Mostrar datos incrustados o vinculados de tablas | Modificar objetos OLE en formularios y tablas | Importar y exportar datos | Agregar OLE


Cambiar o romper vínculos con datos de tablas

Después de vincular algunos datos, puede que quiera usar un origen de datos distinto, o incrustar en lugar de vincular. Para cambiar el origen de datos tiene que cambiar el vínculo; y para incrustar tiene que romper el vínculo.

Para cambiar el vínculo con datos en un campo General

  1. Abra y examine la tabla correspondiente.
  2. Haga doble clic en el campo General que contiene los datos cuyo vínculo desea cambiar.
  3. En el menú Edición, elija Vínculos. Aparecerá el cuadro de diálogo Vínculos.
    Nota Elija Automático para actualizar datos automáticamente cada vez que cambia la aplicación de origen, o Manual si quiere actualizar los datos manualmente.
  4. En el cuadro de diálogo Vínculos, elija Cambiar origen.

    Aparecerá el cuadro de diálogo Cambiar origen.

  5. Especifique el nuevo origen de datos y elija Aceptar.
  6. En el cuadro de diálogo Vínculos, elija Cerrar para completar el cambio.

Para romper un vínculo con datos en un campo General

  1. Abra y examine la tabla correspondiente.
  2. Haga doble clic en el campo General que contiene los datos cuyo vínculo desea romper.
  3. En el menú Edición, elija Vínculos.
  4. En el cuadro de diálogo Vínculos, elija Romper vínculo.
  5. Elija Cerrar.

Cuando se rompe el vínculo, los datos quedan estáticos.

Vea también

Insertar datos en tablas | Mostrar datos incrustados o vinculados en formularios | Mostrar datos incrustados o vinculados de tablas | Modificar objetos OLE en formularios y tablas | Reemplazar datos vinculados o incrustados con datos estáticos | Compartir información dinámicamente | Importar y exportar datos | Agregar OLE


Mostrar datos incrustados o vinculados en formularios

Puede mejorar el diseño de formularios mediante la vinculación e incrustación de datos, como pueden ser documentos de Word u hojas de cálculo de Excel. Del mismo modo, puede mejorar los informes mostrando datos vinculados o incrustados de campos General.

Para vincular o incrustar datos en un formulario

  1. Cree o abra un formulario.
  2. En la barra de herramientas Controles de formularios, seleccione el botón Control OLE Container y arrástrelo para cambiar su tamaño en el formulario.

    Aparecerá el cuadro de diálogo Insertar objeto, que indica los tipos de archivos que puede vincular o incrustar.

  3. Cree un archivo nuevo; para ello, seleccione Crear nuevo.

    –O bien–

    Utilice un archivo existente; para ello, seleccione Crear desde archivo. Escriba el nombre del archivo que contiene los datos o elija Examinar y seleccione el archivo. Asimismo, si desea vincular el archivo, active Vincular.

Cambiar o romper vínculos con datos en formularios

Para cambiar o romper un vínculo con datos que se muestran en un formulario, utilice el comando Vínculos del menú Edición.

Para cambiar un vínculo con datos en un formulario

  1. Abra el formulario correspondiente.
  2. Seleccione el objeto cuyo vínculo desea cambiar.
  3. En el menú Edición, elija Vínculos.
  4. En el cuadro de diálogo Vínculos, elija Cambiar origen.
  5. En el cuadro de diálogo Cambiar origen, especifique el nuevo origen de datos y elija Aceptar.
  6. En el cuadro de diálogo Vínculos, elija Cerrar para completar el cambio.

Para romper un vínculo con datos en un formulario

  1. Abra el formulario correspondiente.
  2. Seleccione el objeto cuyo vínculo desea romper.
  3. En el menú Edición, elija Vínculos.
  4. En el cuadro de diálogo Vínculos, elija Romper vínculo.
  5. Elija Cerrar.

Cuando se rompe el vínculo, los datos quedan estáticos.

Vea también

Agregar un campo General | Crear informes y etiquetas | Cambiar o romper vínculos con datos de tablas | Mostrar datos incrustados o vinculados de tablas | Modificar objetos OLE en formularios y tablas | Reemplazar datos vinculados o incrustados con datos estáticos | Compartir información dinámicamente | Importar y exportar datos | Agregar OLE


Presentación de datos incrustados o vinculados de tablas

En un formulario o un informe puede mostrar datos vinculados o incrustados de campos General en una tabla. Por ejemplo, suponga que tiene una tabla de productos en la que cada registro incluye un campo General que contiene un folleto (un documento de Word) acerca de un producto. En el formulario, podría mostrar la información seleccionada de los registros, incluido el folleto que describe el producto.

Para mostrar datos de un campo General en un formulario

  1. En el Diseñador de formularios, agregue un control OLE Bound al formulario.

    En el formulario, Visual FoxPro creará un objeto a través del cual podrá ver los datos en tiempo de ejecución.

  2. Especifique el campo General que contiene los datos; para ello, establezca la propiedad ControlSource del objeto.

    Por ejemplo, si el nombre de la tabla es Inventory y el nombre del campo General es Current, establezca la propiedad ControlSource en Inventory.Current.

  3. En el formulario, agregue botones o comandos de menú para examinar el campo General especificado en la propiedad ControlSource.

Para mostrar datos de un campo General en un informe

  • Agregue un campo General al informe.

    Para obtener más detalles, consulte Agregar un campo General.

Incluir datos en un informe

Al crear un informe, puede vincular o incrustar imágenes o iconos directamente en el informe desde un origen externo mediante el contenedor de imágenes. Otros formularios de datos, como los documentos de Word o las hojas de cálculo de Microsoft Excel, sólo se pueden incluir si se hubieran vinculado o incrustado previamente en un campo General de una tabla de Visual FoxPro.

Vea también

Agregar un campo General | Crear informes y etiquetas | Mostrar datos incrustados o vinculados en formularios | Modificar objetos OLE en formularios y tablas | Reemplazar datos vinculados o incrustados con datos estáticos | Compartir información dinámicamente | Importar y exportar datos | Agregar OLE


Modificar objetos OLE en formularios y tablas

Puede modificar datos vinculados o incrustados en una tabla o en un formulario mientras se diseña la tabla o el formulario. Asimismo, puede modificar los datos de un formulario mientras este se ejecuta. Los procedimientos siguientes describen las formas de modificar datos.

Para modificar datos de un campo General en una tabla

  1. Abra y examine la tabla correspondiente.
  2. Pase al registro que contiene el campo General que desea modificar.
  3. Haga doble clic en el campo General para mostrar la ventana de edición.
  4. En la ventana de edición, haga doble clic para modificar los datos.

Para modificar objetos incrustados o vinculados en un formulario mientras se diseña el formulario

  1. Seleccione el objeto que representa a los datos.
  2. Con el puntero del ratón sobre el objeto, haga clic con el botón secundario del ratón.
  3. En el menú contextual, elija el tipo de objeto y, a continuación, elija Modificar o Abrir.

Para modificar objetos o datos de campos General de un formulario mientras se ejecuta el formulario

  1. En el menú Edición, seleccione el objeto.

    Por ejemplo, si el objeto es una hoja de cálculo de Excel, seleccione Objeto Hoja de cálculo en el menú Edición.

    Sugerencia También puede hacer clic con el botón secundario en el objeto si su propiedad AutoVerbMenu está establecida como True. Elija el tipo de objeto y, a continuación, elija Modificar o Abrir.
  2. Para modificar visualmente el objeto, elija Modificar en el submenú.

    –O bien–

    Para modificar el objeto en otra ventana, elija Abrir en el submenú.

    Precaución Si cambia los datos de un objeto mientras se ejecuta un formulario, Visual FoxPro solo guardará los cambios si los datos están vinculados o asociados con un control OLE Bound. No se guardan los cambios asociados con el control OLE Container.

Si modifica en la ventana de Visual FoxPro, los menús de la aplicación que utilice reemplazarán a los menús de Visual FoxPro o se combinarán con ellos. Por ejemplo, si está utilizando Excel, el menú Edición de Excel reemplazará al menú Edición de Visual FoxPro. Sin embargo, los menús Archivo, Programa y Ventana de Visual FoxPro no se reemplazarán.

Vea también

Mostrar datos incrustados o vinculados de tablas | Reemplazar datos vinculados o incrustados con datos estáticos | Compartir información dinámicamente | Importar y exportar datos | Agregar OLE


Reemplazar datos vinculados o incrustados con datos estáticos

Puede reemplazar datos vinculados o incrustados con mapas de bits independientes mediante la aplicación que creó los datos.

Para reemplazar datos vinculados o incrustados con un mapa de bits

  1. Inicie la aplicación que creó los datos; para ello, elija el objeto que los contiene.
  2. En la aplicación, copie la presentación del objeto al Portapapeles.

    Por ejemplo, si la aplicación tiene un comando Copiar imagen, utilícelo para copiar la presentación del objeto.

  3. En el menú Edición de Visual FoxPro, elija Pegado especial.
  4. En el cuadro de diálogo Pegado especial, elija el botón de opción Pegar.
  5. Elija la opción Imagen (metarchivo).

Vea también

Modificar objetos OLE en formularios y tablas | Mostrar datos incrustados o vinculados de tablas | Mostrar datos incrustados o vinculados en formularios | Compartir información dinámicamente | Importar y exportar datos | Agregar OLE


Agregar objetos OLE a las aplicaciones

Puede agregar objetos OLE a tablas y formularios de forma interactiva o mediante programación.

Agregar objetos OLE a tablas

Cuando diseñe las tablas para la aplicación, considere si necesita objetos OLE en las tablas. Por ejemplo, suponga que tiene una tabla de productos y desea incluir documentos de Word que contengan descripciones con formato de los productos que se envían a los posibles clientes. Para incluir los documentos de Word, tiene que definir un campo General en la tabla. Luego, agregue los documentos a la tabla mediante vinculación o incrustación de dichos documentos en el campo General.

Para agregar un objeto OLE a una tabla

  1. Use el Diseñador de tablas para crear una tabla con el campo General.
  2. Abra la ventana para el campo General examinando la tabla y haciendo doble clic en el campo General o utilizando el comando MODIFY GENERAL.
  3. En el menú Edición, elija Insertar objeto.

    –O bien–

    Use el comando APPEND GENERAL.

Agregar objetos OLE a tablas

Puede agregar objetos OLE a tablas mediante el comando APPEND GENERAL. Con este comando puede importar un objeto OLE de un archivo y colocarlo en un campo General. Si el campo ya contiene un objeto, el nuevo objeto lo reemplazará.

Nota A diferencia de APPEND y APPEND BLANK, APPEND GENERAL no agrega ningún registro nuevo a la tabla.

Puede utilizar APPEND GENERAL para incrustar objetos OLE o vincular objetos OLE creados por aplicaciones tales como Excel o Word. Estas aplicaciones son compatibles tanto para vincular como para incrustar. Sin embargo, algunas aplicaciones, como por ejemplo Microsoft Graph, tan sólo permiten incrustar.

Suponga que tiene archivos de Microsoft Word que desea almacenar en una tabla de Visual FoxPro. Si la tabla tiene un campo General llamado WordDoc, puede incrustar los documentos mediante el código siguiente:

CREATE TABLE oletable (name c(24), worddoc g)
CD GETDIR()
nFiles = ADIR(aWordFiles, "*.doc")
IF nFiles > 0
FOR i = 1 to nFiles
APPEND BLANK
REPLACE Oletable.Name WITH aWordFiles(i,1)
APPEND GENERAL WordDoc FROM aWordFiles(i,1)
ENDFOR
ELSE
MESSAGEBOX("No se encontraron archivos de Word.")
ENDIF
Nota Este código sólo busca los archivos que terminen en .doc, la extensión estándar empleada por los archivos de Word. Puesto que Microsoft Word y OLE se dan cuenta de este hecho, los archivos se asocian automáticamente con el servidor de Word cuando se utiliza APPEND GENERAL.

Si emplea una extensión diferente de la esperada por el servidor, deberá declarar la clase de servidor mediante la cláusula CLASS. Por ejemplo, si agrega la clase de Word al ejemplo anterior, el código se convierte en:

APPEND GENERAL WordDoc FROM wordfiles(i,1) CLASS "Word.Document.6"

Si tiene archivos con extensiones comunes (por ejemplo, .bmp) que otros servidores pueden utilizar, puede emplear la cláusula CLASS para especificar el servidor que desea usar para esos archivos. O bien, si prefiere vincular objetos en lugar de incrustarlos, utilice la palabra clave LINK, como en el siguiente ejemplo:

APPEND GENERAL WordDoc FROM wordfiles(i,1) LINK CLASS "Word.Document.6"

Además, puede reemplazar datos de un objeto con la palabra clave DATA de APPEND GENERAL, como ilustra el ejemplo siguiente de Microsoft Graph.

Actualización de Microsoft Graph

Microsoft Graph es una aplicación que puede incrustarse. Los valores de un gráfico de Microsoft Graph se basan en los valores de una hoja de datos.

Para cambiar los datos de un gráfico de Microsoft Graph mediante programación, debe crear una cadena que contenga los datos nuevos, incluyendo las tabulaciones, los retornos de carro y los avances de línea, y pasarla a un objeto de Microsoft Graph con la cláusula DATA del comando APPEND GENERAL.

En el ejemplo siguiente se supone que tiene una tabla, denominada stock, con los campos date y close (entre otros) correspondientes a la fecha y al precio de cierre del stock. El objeto de Microsoft Graph se almacena en el campo General msgraph de una tabla denominada graph. El ejemplo actualiza un gráfico con los precios de cierre de stock desde los 30 últimos días.

Código Comentarios
#DEFINE CRLF CHR(13)+CHR(10)
#DEFINE TAB CHR(9)
LOCAL lcData
 Define los caracteres de retorno de carro y tabulación.
SELECT date, close;
  FROM Stock WHERE BETWEEN(date, ;
  DATE(),DATE() - 30) ;
  ORDER BY date INTO CURSOR wtemp
 Selecciona los valores con los que se desea actualizar el gráfico; en este caso, los valores de fecha y cierre de los stocks correspondientes a los 30 últimos días.
SELECT wtemp
lcData = " " + ;
  TAB + "Closing Price" + CRLF
SCAN
  lcData = lcData + DTOC(date)
  lcData = lcData + TAB
  lcData = lcData + ;
  ALLTRIM(STR(close)) + CRLF
ENDSCAN
 Genera una cadena de caracteres (lcData) de datos desde la posición del cursor para actualizar el gráfico.

"Precio de cierre", como encabezado de la columna, es el texto predeterminado que se mostrará en la leyenda del gráfico.

SELECT graph
APPEND GENERAL msgraph DATA lcData

Envíe los nuevos valores al gráfico en la cláusula DATA del comando APPEND GENERAL.

USE IN wtemp

Cierre el cursor.

Nota   También puede mostrar objetos OLE desde campos de tipo General en los informes.

Agregar objetos OLE a formularios

Con el Diseñador de formularios, puede agregar objetos OLE insertables a formularios mediante el control OLE Container. Además, puede mostrar objetos OLE de los campos de tipo General con el control OLE Bound.

Para agregar un objeto OLE a un formulario

  1. En el Diseñador de formularios, agregue un control OLE Container a su formulario. Aparecerá el cuadro de diálogo Insertar objeto.
    2.

  2. En el cuadro de diálogo Insertar objeto, seleccione Crear nuevo
o Crear desde archivo.
    3.

  3. Elija el objeto OLE apropiado en la lista Tipo de objeto.
    4.

Puede personalizar la barra de herramientas Controles de formularios para agregar directamente objetos OLE específicos.

Para agregar objetos OLE a la barra de herramientas Controles de formularios

  1. En el menú Herramientas, elija Opciones.
    2.

  2. En la ficha Controles del cuadro de diálogo Opciones, elija Controles ActiveX.
    3.

  3. En la lista Seleccionado, elija los objetos OLE y los controles ActiveX que desee dejar disponibles en la barra de herramientas Controles de formularios.
    4.

  4. Elija Establecer como predeterminado y, a continuación, Aceptar.
    5.

  5. En la barra de herramientas Controles de formularios, elija Ver clases y, a continuación, Controles ActiveX.
    6.

Para mostrar un objeto OLE de un campo General

  1. En el Diseñador de formularios, agregue un control OLE Bound a su formulario.
    2.

  2. Especifique el campo General que contiene los datos estableciendo la propiedad ControlSource del objeto.
    Por ejemplo, si el nombre de la tabla es Inventory y el nombre del campo General es Current, establezca la propiedad ControlSource como Inventory.Current.

    3.

También puede mostrar un objeto OLE de un campo General mediante programación:

Código
Comentarios

frm1 = CREATEOBJECT("form")

Crea un formulario

frm1.ADDOBJECT("olb1",
"oleboundcontrol")

Agrega un control

frm1.olb1.ControlSource =
"Inventory.Current"

Vincula los datos al control

frm1.olb1.Visible = .T.

frm1.Visible = .T.

Deja visibles el control y el formulario

Funcionamiento interactivo con objetos OLE

Si agrega un objeto OLE a un formulario o campo General, puede modificar los datos y mostrar las características del objeto en tiempo de ejecución o durante el diseño.

Nota   No puede modificar los datos de un objeto OLE en un control OLE Bound durante el diseño.

Algunos objetos OLE admiten la modificación directa, por lo que puede modificar el objeto en la ventana utilizada por la aplicación. Por ejemplo, si hace doble clic en un objeto de hoja de cálculo de Microsoft Excel en un campo General, en lugar de iniciar una copia de Microsoft Excel en otra ventana, los títulos de menú cambian para reflejar la estructura de menús de Microsoft Excel y se muestran las barras de herramientas predeterminadas de Microsoft Excel. El programador o el usuario de la aplicación podrá entonces modificar el objeto de Microsoft Excel sin abandonar la aplicación.

Nota   Sólo puede modificar directamente los objetos incrustados, no los vinculados.

También puede abrir el servidor de Automatización en otra ventana, modificar los datos o ver las características en dicha ventana y hacer que los valores nuevos se reflejen en la aplicación cuando vuelva a ella.

Para modificar un objeto OLE directamente en una ventana de campo General

  • En el menú Edición, seleccione el tipo de objeto específico y, en el submenú, elija Modificar.
    Por ejemplo, si el objeto es un documento de Word, seleccione el elemento de menú Objeto documento; si el objeto es un gráfico de Microsoft Graph, seleccione el elemento de menú Objeto gráfico.

    –O bien–

    Haga doble clic en el objeto

    •

Para abrir la aplicación para un objeto OLE en una ventana de un campo General

  • En el menú Edición, seleccione el tipo de objeto específico y, en el submenú, elija Abrir.
    •

Agregar un objeto OLE a un formulario en los controles OLE Container u OLE Bound permite tener más control sobre la apertura y modificación del objeto.

Si establece la propiedad AutoActivate de un control OLE Container u OLE Bound, puede determinar si el objeto OLE se abrirá o modificará cuando el control aparezca con el foco o cuando el usuario haga doble clic sobre el control. La propiedad AutoVerbMenu especifica si el menú contextual del control ActiveX permite al usuario abrir o modificar el objeto OLE.

Para controlar el acceso de modo que el objeto OLE sólo pueda abrirse o modificarse mediante programación con el método DoVerb, establezca AutoActivate como 0 - Manual y AutoVerbMenu como falso (.F.).

Controlar los menús

Cuando un usuario modifica directamente un objeto OLE, aparece la barra de menús del objeto OLE y no los menús de la aplicación. Si crea un título de menú y desea que se muestre mientras el usuario modifica un objeto OLE, seleccione Negociar en el cuadro de diálogo Opciones de la acción del Diseñador de menús. Para obtener más información, consulte Diseñar menús y barras de herramientas o la cláusula NEGOTIATE en el tema DEFINE PAD (Comando).

Vea también

Agregar un campo General | Diseñar una aplicación OLE | Usar controles ActiveX | Agregar OLE |Diseñador de tablas | MODIFY GENERAL
| APPEND GENERAL


Diseñar una aplicación OLE

Las aplicaciones compatibles con Automatización y los componentes COM pueden actuar como servidores de Automatización, clientes o como ambos. Los componentes que actúan como servidores pueden proporcionar objetos a otra aplicación mientras que los que actúan como clientes pueden crearlos.

Puede incorporar fácilmente la eficacia y la flexibilidad de aplicaciones como Microsoft Excel y Microsoft Word en las aplicaciones de Visual FoxPro. Dado que Visual FoxPro también actúa como servidor, puede proporcionar funciones que se pueden integrar en paquetes de soluciones basados en Microsoft Office o en otros componentes COM.

Los objetos OLE insertables provienen de aplicaciones compatibles con OLE tales como Excel o Word. Entre estos objetos se incluyen documentos de Word y hojas de cálculo de Excel. En los formularios puede vincular o incrustar estos objetos con el control OLE Container y puede almacenar los objetos en los campos General de una tabla, mostrándolos en sus formularios con el control OLE Bound.

En una aplicación de Visual FoxPro, puede usar la tecnología OLE y ActiveX de diversas maneras. Antes de crear una aplicación, considere las distintas formas en que puede utilizar estas tecnologías.

Vincular o incrustar objetos OLE

Puede incrustar o vincular archivos de otras aplicaciones de Windows en sus tablas y formularios. Por ejemplo, puede incrustar o vincular un documento de Word en un campo General de una tabla y puede incrustar o vincular una hoja de cálculo de Excel en un formulario.

La diferencia entre incrustación y vinculación está en la forma en que se almacenan los datos. Mediante la incrustación, los datos se almacenan en una tabla o en un formulario; esto no ocurre mediante la vinculación. Por ejemplo, cuando incrusta una hoja de cálculo de Excel en un formulario, el formulario contiene una copia de la hoja de cálculo. Sin embargo, cuando la vincula, el formulario contiene tan sólo una referencia a la hoja de cálculo y no la hoja de cálculo propiamente dicha.

Tanto los datos incrustados como los vinculados están relacionados con el contenido original del archivo del servidor.

Pero cuando se modifica el archivo original, los datos vinculados se actualizan automáticamente para reflejar el cambio; sin embargo, los datos incrustados no lo hacen:

Datos vinculados que se han actualizado en un formulario

Los datos incrustados no son necesariamente estáticos. Tanto los datos incrustados como los vinculados pueden mostrarse, modificarse y manipularse de forma interactiva y mediante programación en Visual FoxPro.

Agregar objetos OLE dependientes o independientes

En un formulario o un informe, puede crear objetos que dependan de campos de tablas de tipo General. Estos objetos se llaman objetos OLE dependientes y puede usarlos para mostrar el contenido de campos de tipo General. Puede crear objetos OLE dependientes con el control OLE Bound situado en la barra de herramientas Controles de formularios. O bien, puede crear objetos OLE independientes con el control OLE Container. Un objeto OLE independiente no está conectado a campos de tipo General de una tabla.

Vea también

Agregar objetos OLE a las aplicaciones | Agregar OLE | Usar controles ActiveX | Manipular objetos mediante Automatización | Crear subclases de objetos


Usar controles ActiveX

Los controles ActiveX son objetos con funcionalidad encapsulada que ofrecen propiedades, eventos y métodos. Proporcionan una amplia gama de funciones que se puede utilizar fácilmente. Algunos de los controles ActiveX incluidos en Visual FoxPro son:

  • Controles de Windows, como RichText y TreeView.
  • Los controles del sistema, como los de comunicaciones y MAPI.

Los controles ActiveX son versátiles porque se pueden crear subclases para crear otros controles y se pueden controlar mediante los eventos, métodos y propiedades que tengan asociados. No puede crear controles ActiveX con Visual FoxPro; sin embargo, puede crearlos con Microsoft OLE Custom Control Developer’s Kit, suministrado con Microsoft Visual C++® 4.0 y con Microsoft Visual Basic® Control Creation Edition versión 5.0.

Para obtener más información acerca del acceso a los controles ActiveX, consulte Ampliar Visual FoxPro con bibliotecas externas. Para obtener más información acerca de la creación de controles ActiveX específicos de Visual FoxPro, consulte Acceso a la API de Visual FoxPro.

Agregar controles ActiveX a un formulario

Los controles ActiveX de Visual FoxPro deben estar incluidos en un control OLE Container (la clase de base es OLEControl). Cuando se agrega un control OLE Container a un formulario, puede elegir el control ActiveX que desea agregar al formulario.

Para agregar un control ActiveX a un formulario

  1. En la barra de herramientas Controles de formularios, elija Control OLE Container y arrástrelo para incluirlo en el formulario.
  2. En el cuadro de diálogo Insertar objeto, elija Insertar control.
  3. En la lista Tipo de control, seleccione el control ActiveX que desee.
  4. Elija Aceptar.

Administrar controles ActiveX dependientes

Si un control ActiveX admite la vinculación sencilla de datos, Visual FoxPro ofrecerá una propiedad ControlSource para el control. Todo lo que tiene que hacer es establecer la propiedad ControlSource en un campo de la tabla y el valor mostrado en el control ActiveX reflejará el valor del campo subyacente. Los cambios realizados en el valor del control se guardan en el campo.

Para obtener ejemplos acerca del uso de controles ActiveX, ejecute el archivo Solution.app ubicado en el directorio ...\Samples\Solution de Visual FoxPro.

Nota Para asegurar que se procesan todos los eventos de controles ActiveX, establezca la propiedad AutoYield del objeto Application de Visual FoxPro en el valor falso (.F.).

Vea también

Agregar objetos OLE a las aplicaciones | Manipular objetos mediante Automatización | Agregar OLE | OLE Container (Control) | Insertar objeto


Manipular objetos mediante Automatización

Los objetos OLE de los formularios o programas, o los controles ActiveX dentro de los controles OLE Container, pueden manipularse con código de la misma manera en que se programan los objetos de Visual FoxPro nativos.

Manipular propiedades extrínsecas de objetos

En el código, puede manipular un objeto mediante sus propiedades. La manera en que se hace referencia a una propiedad depende de si el objeto es autónomo o forma parte de un contenedor, como el control OLE Container u OLE Bound.

Nota Los controles ActiveX siempre forman parte de un control OLE Container.

Un objeto de un contenedor consta de dos partes: el propio objeto y el contenedor alrededor del mismo. Tanto el objeto como el contenedor tienen propiedades y, a veces, tienen los mismos nombres de propiedades. Para asegurarse de que hace referencia a las propiedades del objeto, anexe siempre la propiedad Object del contenedor al nombre del objeto. Por ejemplo, el código siguiente hace referencia a la propiedad Left del objeto:

frm1.olecontrol1.Object.Left = 25  && Propiedad Left del Objeto

Si se omite la propiedad Object, se hace referencia a la propiedad Left del contenedor:

frm1.olecontrol1.Left= 25  && Propiedad Left del Contenedor

Por ejemplo, suponga que tiene una aplicación que envía correo cuando el usuario hace clic en un botón de comando de redacción. Si ha agregado un control Microsoft MAPI Messages a un formulario como olecontrol1, el código asociado al evento Click del botón de comando podría ser:

THISFORM.olecontrol1.Object.Compose
THISFORM.olecontrol1.Object.Send(.T.)

Además de usar la propiedad Object para hacer referencia a las propiedades del objeto contenido, puede emplear otras propiedades del control contenedor. Por ejemplo, puede hacer referencia a la propiedad OLEClass de sólo lectura para identificar el tipo de objeto del contenedor y la propiedad Sizable para impedir que los usuarios puedan cambiar el tamaño de un objeto. Para obtener detalles acerca de las propiedades del control contenedor, consulte Control OLE Container.

En los diseñadores de formularios y clases, las propiedades de los controles ActiveX se muestran en la ventana Propiedades de Visual FoxPro, pero la mayoría de los controles ActiveX también tienen su propia interfaz para establecer propiedades comunes. Puede ver esta interfaz de las propiedades si selecciona la opción Propiedades específica del objeto en el menú contextual del control ActiveX. Por ejemplo, para abrir el cuadro de diálogo Propiedades correspondiente a un control RichText, elija Propiedades del control Microsoft RichText en el menú contextual.

Usar métodos extrínsecos de objetos

Además de establecer y recuperar las propiedades de los objetos, puede manipular un objeto usando los métodos que admite. Por ejemplo, puede usar el método Add de un objeto de colección de Microsoft Excel para crear un libro de Excel.

El siguiente ejemplo de Automatización utiliza el método Add para crear un libro de Excel, el método Save para guardar el libro y el método Quit para salir de Excel:

Código Comentarios
oleApp = CREATEOBJECT("Excel.Application")
 Inicia Excel.
OleApp.Visible=.T.
 Muestra Excel.
OleApp.Workbooks.Add
 Crea un libro.
OleApp.Cells(1,1).Value=7
 Establece el valor de la celda.
OleApp.ActiveWorkbook.SaveAs("C:\TEMP.XLS")
 Guarda el libro.
OleApp.Quit
 Sale de Excel.

Si crea un objeto con el control OLE Container o el control OLE Bound, puede usar el método DoVerb del control para ejecutar un verbo en el objeto. Por ejemplo, use DoVerb(0) para ejecutar el verbo predeterminado, DoVerb( – 1) para activar el objeto para edición visual, y DoVerb( – 2) para abrir el objeto en una ventana distinta.

Nota Consulte la documentación de la aplicación para determinar qué comandos de Automatización se admiten. Por ejemplo, los complementos de Microsoft Excel no están disponibles para Automatización.

Establecer tiempos de espera

Cuando se transfiere una solicitud a un objeto OLE, el servidor de Automatización la procesa. No tendrá mucho control sobre el proceso del servidor, pero podrá especificar el tiempo que puede esperar para que finalice el proceso si establece las propiedades OLERequestPendingTimeout y OLEServerBusyTimeout. También podrá determinar lo que ocurrirá cuando haya transcurrido ese tiempo si establece la propiedad OLEServerBusyRaiseError.

Acceso a colecciones de objetos

Un tipo de objeto puede representar un único objeto o una colección de objetos relacionados. Por ejemplo, un objeto Workbook de Excel representa un único libro, mientras que el objeto Workbooks representa todos los libros actualmente cargados. Puesto que el objeto Workbooks representa una colección de objetos, se llama objeto de colección.

En código, una colección es una lista no ordenada en la que la posición de un objeto puede cambiar siempre que se agreguen o quiten objetos de la colección. Para tener acceso a un objeto de una colección debe iterar dentro de la colección mediante la propiedad Count de la misma. La propiedad Count devuelve el número de elementos de la colección. Además, puede usar el método Item para devolver un elemento de la colección.

Por ejemplo, para mostrar los nombres de las hojas de cálculo en un libro de Excel, use el siguiente código:

oleApp = CREATEOBJECT("Excel.Application")
oleApp.Workbooks.Add
FOR EACH x IN oleApp.Workbooks
? x.Name
ENDFOR

También puede tener acceso a una colección dentro de otra colección. Por ejemplo, puede tener acceso a una colección de celdas dentro de un intervalo con el código siguiente:

oleApp = CREATEOBJECT("Excel.sheet")
oleApp.Workbooks.Add
oleApp.Range(oleApp.Cells(1,1),oleApp.Cells(10,10)).Value=100
oleApp.Visible=.T.

Usar matrices de objetos

Puede transferir matrices a métodos y recibir matrices de vuelta. Sin embargo, debe transferir las matrices por referencia prefijando el nombre de la matriz con el signo @.

Por ejemplo, para transferir una matriz de Visual FoxPro a Microsoft Excel, considere el siguiente código. Cree una matriz en Visual FoxPro, asigne a la matriz algunos valores, inicie Microsoft Excel, cree un libro, establezca un valor como la primera celda de una hoja de cálculo y entonces copie el valor a las otras hojas de la matriz:

DIMENSION aV(3)
aV(1) = "Sheet1"
aV(2) = "Sheet2"
aV(3) = "Sheet3"
oleApp=CREATEOBJECT("Excel.Application")
oleApp.Workbooks.Add
oleI=oleApp.Workbooks.Item(1)
oleI.Sheets.Item(1).Cells(1,1).Value = 83
oleI.Sheets(@aV).;
FillAcrossSheets(oleI.Worksheets("Sheet1").Cells(1,1))
oleApp.Visible = .T.

Además, el siguiente ejemplo devuelve una matriz a Visual FoxPro y muestra el contenido de la matriz:

oleApp = CREATEOBJECT("Excel.Application")
aOleArray = oleApp.GetCustomListContents(3)
FOR nIndex = 1 to ALEN(aOleArray)
? aOleArray(nIndex)
ENDFOR
Nota Con Visual FoxPro no puede transferir matrices de más de dos dimensiones a objetos OLE. Para obtener más información acerca de cómo trabajar con matrices en Visual FoxPro, consulte Matrices y Matrices de miembros y objetos.

Liberar objetos extrínsecos

Un servidor de Automatización se libera automáticamente si no está visible y si no hay variables en el ámbito que hagan referencia al objeto. Puede usar el comando RELEASE para liberar la variable asociada a un objeto. Si el servidor está visible, use el método Quit para liberarlo.

Vea también

Usar controles ActiveX | Crear subclases de objetos | Agregar OLE | OLE Container | OLE Bound | Object


Crear subclases de objetos

Puede crear objetos personalizados creando subclases de las clases de base incluidas en Visual FoxPro. Por ejemplo, el código siguiente crea una subclase del control Outline suministrado con Visual FoxPro:

Creación de una subclase del control Outline

Código Comentarios
PUBLIC frmMyForm, cFilename
SET SAFETY OFF
 Declara variables y las inicializa.
frmMyForm = CREATEOBJECT("form")
frmMyForm.Width = 100
frmMyForm.ADDOBJECT("oleOutl","myoutline")
DIMENSION aSection(3)
aSection(1) = "Table"
aSection(2) = "Field"
aSection(3) = "Index"
 Crea un formulario, agrega el control Outline personalizado al formulario y después crea una matriz para los elementos que presenta el control.
cFilename = GETFILE("dbc","Select a DBC")
USE (cFilename)
INDEX ON objecttype FOR (objecttype = "Table" ;
OR objecttype = "Field" ;
OR objecttype = "Index" ) ;
TAG fname
 Solicita una base de datos que contiene la información que va a presentar el control.
FOR nIndex = 1 TO 3 STEP 1
frmMyForm.oleOutl.AddItem(aSection(nIndex))
frmMyForm.oleOutl.Indent;
((frmMyForm.oleOutl.ListCount-1)) = 1
SCAN
IF objecttype = aSection(nIndex)
frmMyForm.oleOutl.Additem(objectname)
frmMyForm.oleOutl.Indent;
((frmMyForm.oleOutl.ListCount-1)) = 2
ENDIF
ENDSCAN
GO TOP
ENDFOR
 Recopila información de la base de datos y la agrega al control.
frmMyForm.oleOutl.Visible = .T.
frmMyForm.Show
 Deja el control visible y muestra el formulario.
DEFINE CLASS myoutline AS olecontrol
OleClass = "msoutl.outline"
Top = 5
Left = 5
Height = 10
Width = 60
ENDDEFINE
 Define una subclase del control OLE Container y agrega el control Outline estableciendo la propiedad OleClass del contenedor y definiendo los otros valores personalizados.

Si desea distribuir las aplicaciones, hay algunas otras consideraciones.

Vea también

Manipular objetos mediante Automatización | Controlar Visual FoxPro desde otras aplicaciones | Agregar OLE | Usar controles ActiveX


Trabajar con datos

Para crear aplicaciones efectivas, debe analizar los requisitos de sus datos y después diseñar sus bases de datos, índices y tablas de forma que resuelvan estas necesidades.

En esta sección

Desarrollar bases de datos
Describe cómo utilizar bases de datos en Visual FoxPro para establecer relaciones entre tablas, hacer cumplir la integridad referencial y administrar datos locales y remotos.
Trabajar con tablas
Discute cómo asegurarse que las tablas tengan la estructura que necesita la aplicación. La elección de los tipos de datos y los índices es esencial para el éxito de la aplicación.
Trabajar con registros
Explica cómo almacenar datos en la tabla agregando nuevos registros. Los registros existentes se pueden modificar y eliminar mediante la interfaz o con el uso de comandos.
Trabajar con consultas
Describe cómo usar las consultas para seleccionar y mostrar datos de tablas o vistas.
Trabajar con vistas
Explica cómo usar las vistas para crear un conjunto de datos personalizado y actualizable para su aplicación.
Crear informes y etiquetas
Discute cómo agregar informes o etiquetas a su aplicación para presentar datos a los usuarios.
Importar y exportar datos
Explica cómo se copia la información entre Visual FoxPro y otras aplicaciones, importando a y exportando desde Visual FoxPro.
Eventos del contenedor de bases de datos
Discute cómo puede habilitar eventos DBC y agregar código a eventos específicos sobre datos contenidos en una base de datos.
Programar para acceso compartido
Explica cómo el programar para acceso compartido le permite crear una aplicación que se ejecutará en varias máquinas en un entorno de red.
Acceder a datos de Visual FoxPro utilizando el proveedor OLE DB
Describe el OLE DB Provider de Visual FoxPro y cómo acceder a datos Visual FoxPro desde otros lenguajes y aplicaciones.

Secciones relacionadas

Desarrollar aplicaciones Visual FoxPro
Esta sección incluye información conceptual acerca de cómo desarrollar aplicaciones Visual FoxPro, instrucciones para crear bases de datos y la interfaz de usuario y otras tareas necesarias para crear aplicaciones Visual FoxPro
Planificar aplicaciones
Enfatiza que un cuidadoso diseño ahorra tiempo, esfuerzo y dinero, además muchas de las decisiones que tome durante la etapa de diseño impactarán la forma en que cree los elementos de su aplicación.
Crear una aplicación
Discute cómo crear una aplicación Visual FoxPro, la que puede incluir una o más bases de datos, un programa principal que establece el entorno de sistema de su aplicación y una interfaz de usuario que involucra formularios, barras de herramientas y menús.
Crear Servicios Web y Componentes
Explica cómo puede extender su aplicación Visual FoxPro para permitirle trabajar con varios usuarios, tomar ventaja de controles Microsoft ActiveX y aplicaciones habilitadas para automatización.
Mejorar aplicaciones utilizando tecnología de paso a través de SQL (SPT)
Puede usar la tecnología de paso a través de SQL (SPT) para crear objetos en el servidor, ejecutar procedimientos almacenados en el servidor y ejecutar comandos utilizando sintaxis nativa del servidor.
Trabajar con proyectos
Definir una configuración de proyecto y un grupo de archivos que producen un programa o un archivo final binario o archivos.
Crear Ayuda
Describe cómo se puede incluir archivos de Ayuda en su aplicación con el fin de proporcionar información valiosa para los usuarios de su aplicación.
Compilar una aplicación
Explica cómo utilizar la aproximación modular para verificar la funcionalidad de cada componente que cree y luego compilarlos en una aplicación, la cual ensambla en un ejecutable los componentes de su proyecto.
Probar y depurar aplicaciones
Describe las herramientas de depuración de Visual FoxPro que le ayudan a encontrar y corregir cualquier error que haya descubierto en sus aplicaciones.
Distribuir aplicaciones
Discute cómo distribuir sus aplicaciones incluyendo todos los archivos necesarios y creando discos de distribución después que haya completado el desarrollo y prueba de su aplicación.


Desarrollar bases de datos

Tras haber diseñado una base de datos, puede generarla a través de la interfaz o mediante el lenguaje. Es posible que desee agregar tablas existentes a la base de datos y, a continuación, modificarlas para aprovechar las características de diccionario de datos de Microsoft Visual FoxPro. Si está trabajando en un proyecto en el Administrador de proyectos, puede agregar las tablas a medida que las crea.

En esta sección

Diseñar bases de datos
Explica cómo tomar ventaja de la tecnología de bases de datos relacionales en Visual FoxPro con bases de datos bien diseñadas.
Crear una base de datos
Detalla la función del diccionario de datos de Microsoft Visual FoxPro y explica cómo crear una nueva base de datos con el Asistente para bases de datos.
Administrar una base de datos
Ofrece instrucciones acerca de cómo agregar o quitar una base de datos de un proyecto, o eliminar una base de datos completamente, también explica cómo controlar errores de base de datos y hacer referencia a múltiples bases de datos.

Secciones relacionadas

Desarrollar aplicaciones Visual FoxPro
Esta sección incluye información conceptual acerca de cómo desarrollar aplicaciones Visual FoxPro, instrucciones para crear bases de datos y la interfaz de usuario, y otras tareas necesarias para crear aplicaciones Visual FoxPro
Trabajar con datos
Informa cómo crear aplicaciones efectivas con índices, tablas y bases de datos basadas en sus necesidades de datos.
Trabajar con tablas
Asegúrese de que las tablas tengan la estructura que necesita su aplicación. La elección de los tipos de datos y los índices es esencial para el éxito de la aplicación.
Trabajar con registros
Para almacenar datos en la tabla, agregue nuevos registros. Los registros existentes se pueden modificar y eliminar mediante la interfaz o con el uso de comandos.
Importar y exportar datos
La información se copia entre Microsoft Visual FoxPro y otras aplicaciones importando a y exportando desde Visual FoxPro.
Ver y modificar la arquitectura de la base de datos
Proporciona descripciones sobre cómo ver un archivo de base de datos, un esquema y objetos de bases de datos, así como también explica cómo validar una base de datos y ampliar un archivo .dbc.


Diseñar bases de datos

En Microsoft® Visual FoxPro® se utilizan bases de datos para organizar y relacionar tablas y vistas. La base de datos proporciona la arquitectura necesaria para almacenar los datos y cuenta además con otras ventajas. Al utilizar una base de datos, puede crear extensiones en el nivel de tabla, tales como reglas en el campo o en el registro, valores predeterminados para los campos y desencadenadores. Además, puede crear procedimientos almacenados y relaciones persistentes entre tablas. La base de datos puede utilizarse para tener acceso a conexiones con orígenes de datos remotos y también para crear vistas de tablas remotas y locales.

En esta sección

Proceso de diseño de bases de datos
Proporciona una introducción acerca de cómo crear una base de datos bien diseñada y enumera los pasos importantes en el proceso de diseño.
Análisis de los requisitos de datos
Trata el primer paso en el diseño de una base de datos de Microsoft Visual FoxPro, lo que implica buscar la razón de la base de datos y cómo se utilizará.
Organizar los requisitos en tablas
Describe cómo seleccionar las tablas en la base de datos, lo que puede ser el paso más difícil en el proceso de diseño de la base de datos.
Determinar los campos necesarios
Explica la importancia de determinar qué necesita saber sobre las personas, cosas o eventos que se registran en la tabla.
Identificar relaciones
Contiene información y ejemplos acerca de cómo se puede utilizar el sistema de administración de bases de datos relacionales Microsoft Visual FoxPro para vincular información con sentido.
Mejorar el diseño
Después de que se hayan establecido las tablas, los campos y las relaciones, detalle el paso importante de revisar el diseño de la base de datos para localizar los errores que puedan quedar.
Ejemplos de diagramas de bases de datos
Ofrece diagramas de bases de datos como una forma de generar ideas para crear su propia base de datos.

Secciones relacionadas

Trabajar con datos
Informa cómo crear aplicaciones efectivas con índices, tablas y bases de datos basadas en sus necesidades de datos.
Desarrollar bases de datos
Muestra cómo utilizar bases de datos en Microsoft Visual FoxPro para establecer relaciones entre tablas, hacer cumplir la integridad referencial y administrar datos locales y remotos.
Trabajar con tablas
Describe cómo asegurarse de que las tablas tengan la estructura que necesita la aplicación. La elección de los tipos de datos y los índices es esencial para el éxito de la aplicación.
Trabajar con registros
Muestra cómo almacenar datos en la tabla agregando nuevos registros. Los registros existentes se pueden modificar y eliminar mediante la interfaz o con el uso de comandos.
Importar y exportar datos
Describe cómo se copia la información entre Microsoft Visual FoxPro y otras aplicaciones importando a y exportando desde Visual FoxPro.


Proceso de diseño de bases de datos

Si usa un proceso de diseño de base de datos establecido, puede crear de forma rápida y efectiva una base de datos bien diseñada que le proporciona acceso conveniente a la información que desea. Con un diseño sólido tardará menos tiempo en desarrollar la base de datos y obtendrá resultados más rápidos y precisos.

Nota Los términos "base de datos" y "tabla" no son sinónimos en Visual FoxPro. El término base de datos (archivo .dbc) se refiere a una base de datos relacional que almacena información sobre una o más tablas (archivos .dbf) o vistas.

La clave para obtener un diseño de base de datos eficaz radica en comprender exactamente qué información se desea almacenar y la forma en que un sistema de administración de bases de datos relacionales, como Visual FoxPro, almacena los datos. Para ofrecer información de forma eficiente y precisa, Visual FoxPro debe tener almacenados los datos sobre distintos temas en tablas separadas. Por ejemplo, puede haber una tabla donde sólo se almacenen datos sobre empleados y otra tabla que sólo contenga datos de ventas.

Al organizar los datos de forma apropiada, proporciona flexibilidad a la base de datos y tiene la posibilidad de combinar y presentar información de muchas formas diferentes.

Al diseñar una base de datos, en primer lugar debe dividir la información que desea almacenar como temas distintos y después indicar a Visual FoxPro cómo se relacionan estos temas para que pueda recuperar la información correcta cuando sea necesario. Si mantiene la información en tablas separadas facilitará la organización y el mantenimiento de los datos y conseguirá aplicaciones de alto rendimiento.

A continuación se indican los pasos que hay que seguir en el proceso de diseño de una base de datos. Cada paso se trata con mayor detalle en los temas restantes de esta sección.

  1. Determinar el propósito de la base de datos Este paso le ayudará a decidir los datos que desea que Visual FoxPro almacene. Para más información, ver Análisis de los requisitos de datos.
  2. Determinar las tablas necesarias Cuando ya conozca claramente el propósito de la base de datos, puede dividir la información en temas distintos, como "Employees" u "Orders". Cada tema será una tabla de la base de datos. Para mayor información, consulte Organizar los requisitos en tablas
  3. Determinar los campos necesarios Tiene que decidir la información que desea incluir en cada tabla. Cada categoría de información de una tabla se denomina campo y se muestra en forma de columna al examinar la tabla. Por ejemplo, un campo de la tabla Employee podría ser Last_name y otro podría ser Hire_date. Para más información, ver Determinar los campos necesarios
  4. Determinar las relaciones Observe cada tabla y decida cómo se relacionan sus datos con los de las tablas restantes. Agregue campos a las tablas o cree tablas nuevas para clarificar las relaciones, si es necesario. Para más información, ver Identificar relaciones
  5. Perfeccionar el diseño Busque errores en el diseño. Cree las tablas y agregue algunos registros de datos de ejemplo. Vea si puede obtener los resultados que desea de sus tablas. Haga los ajustes necesarios al diseño. Para mayor información, consulte Mejorar el diseño

No se preocupe si se equivoca o si olvida algunos aspectos en el diseño inicial. Piense en él como en un borrador que podrá mejorar posteriormente. Pruebe con datos de ejemplo y con prototipos de los formularios e informes. Con Visual FoxPro resulta sencillo modificar el diseño de la base de datos durante su creación. Sin embargo, es mucho más difícil modificar las tablas cuando ya están llenas de datos y se han generado formularios e informes. Por este motivo, debe asegurarse de tener un diseño sólido antes de llegar demasiado lejos en la programación de una aplicación.

Puede usar el Diseñador de bases de datos para definir un conjunto de tablas y vincularlas con relaciones que persistan cuando use las tablas.

De una mirada a la base de datos sample. Para abrir la base de datos en el Diseñador para bases de datos, elija Abrir en el menú Archivo, y encuentre Testdata.dbc en el directorio ...\Samples\Data directory de Visual FoxPro.

El Diseñador de base de datos muestra las relaciones entre tablas

Vea también

Diseñar bases de datos | Análisis de los requisitos de datos | Desarrollar bases de datos | Trabajar con tablas | Organizar los requisitos en tablas


Análisis de los requisitos de datos

El primer paso para diseñar una base de datos de Visual FoxPro es determinar el objetivo de la misma y cómo se va a utilizar. Esto le indica qué información desea de la base de datos. A partir de este punto, puede determinar sobre qué temas desea almacenar datos (las tablas) y qué datos necesita almacenar sobre cada tema (los campos de las tablas).

Consulte con las personas que vayan a utilizar la base de datos. Reflexione sobre las preguntas que desee que la base de datos responda. Haga un borrador de los informes que desee producir. Reúna los formularios que se utilicen actualmente para registrar los datos. Utilizará toda esta información en las etapas restantes del proceso de diseño.

Ejemplo

Suponga que Comercial Tasmania, una compañía de importación y exportación que vende productos alimenticios de todo el mundo, desea una base de datos que permita hacer un seguimiento de sus ventas y su inventario.

Comience por escribir una lista de preguntas que la base de datos debería poder responder. ¿Cuántas ventas de cierto producto logramos el mes pasado? ¿Dónde viven nuestros mejores clientes? ¿Quién es el proveedor de nuestro producto más vendido?

A continuación, reúna todos los formularios e informes que contengan la información que la base de datos deba producir. Actualmente, la compañía utiliza un informe impreso para hacer un seguimiento de los productos pedidos y un formulario para recibir nuevos pedidos. En la siguiente ilustración se muestran estos dos documentos.

Los formularios y los informes presentan algunos requisitos de datos para su base de datos.

Comercial Tasmania necesita también imprimir etiquetas de correo para los clientes, empleados y proveedores.

Una vez recopilada esta información, podrá continuar con el paso siguiente.

Vea también

Proceso de diseño de bases de datos | Organizar los requisitos en tablas | Diseñar bases de datos | Desarrollar bases de datos | Trabajar con tablas


Organizar los requisitos en tablas

Determinar las tablas en la base de datos puede ser el paso más difícil en el proceso de diseño de la base de datos. Se debe a que los resultados que se esperan de la base de datos (los informes que desea imprimir, los formularios que desea utilizar, las preguntas que desea responder) no son necesariamente pistas sobre la estructura de las tablas que los producen. Esta información indica lo que se desea saber, pero no cómo clasificar la información en tablas.

Como ejemplo, vea el formulario de pedidos de Análisis de los requisitos de datos. En él se incluyen datos sobre el cliente (su dirección y su número de teléfono) junto con datos sobre el pedido. Este formulario le proporciona un número de datos que sabe que deben almacenarse en la base de datos. Aunque todos los datos se incluyen en un mismo formulario, puede evitar fácilmente que la integridad de los datos se vea afectada si los almacena en tablas separadas.

Almacenar la información una sola vez reduce las posibilidades de error

Por ejemplo, si sólo usa una tabla para almacenar la información para un formulario de pedido, suponga que un cliente realiza tres pedidos diferentes. Podría agregar la dirección del cliente y el número de teléfono a su base de datos tres veces, una para cada pedido. Pero esto multiplica la posibilidad de errores de entrada de datos.

La tabla Customer almacena la información de dirección una vez

Además, si el cliente cambia de domicilio, deberá aceptar información contradictoria o bien buscar y modificar cada uno de los registros de ventas del cliente en la tabla. Resulta mucho mejor crear una tabla Customer que almacene la dirección del cliente una sola vez en la base de datos. Así, si es necesario modificar los datos, sólo se hará una vez.

Evitar que se borre información valiosa

Suponga que un nuevo cliente realiza un pedido y que posteriormente lo cancela. Al eliminar el pedido de la tabla que contiene información de clientes y pedidos a la vez, se eliminaría también el nombre del cliente y su dirección. Sin embargo, es conveniente mantener a este nuevo cliente en la base de datos para poder enviarle el siguiente catálogo. Una vez más, es mejor conservar la información sobre el cliente en una tabla Customer aparte. De esta forma se puede eliminar el pedido sin perder la información del cliente.

Estudie la información que desee obtener de la base de datos y divídala en temas fundamentales que desee mantener, como por ejemplo clientes, empleados, productos que usted vende, servicios ofrecidos, etc. Cada uno de estos temas es un candidato para una tabla independiente.

Sugerencia Una estrategia para dividir la información en tablas es observar primero los datos individuales y determinar de qué trata cada uno. Por ejemplo, en el formulario de pedidos de Comercial Tasmania, la dirección del cliente no está asociada a la venta, sino al cliente. Este hecho sugiere la necesidad de una tabla independiente para los clientes. En el informe de productos pedidos, el número de teléfono del proveedor no está asociado al producto en existencias, sino al proveedor. Esto sugiere que es necesaria una tabla independiente para los proveedores.

Vea también

Análisis de los requisitos de datos | Determinar los campos necesarios | Diseñar bases de datos | Desarrollar bases de datos | Trabajar con tablas


Determinar los campos necesarios

Para determinar los campos de una tabla, decida qué necesita saber sobre las personas, cosas o eventos que se registran en ella. Puede considerar los campos como atributos de la tabla. Cada registro (o fila) de la tabla contiene el mismo conjunto de campos o atributos. Por ejemplo, un campo de dirección de una tabla de clientes contendrá las direcciones de los clientes. Cada registro de la tabla contendrá datos sobre un cliente y el campo de dirección contendrá la dirección de ese cliente determinado.

En esta sección

Identificar los campos
Ofrece sugerencias para determinar los campos que podría necesitar en su base de datos.
Usar campos de clave principal
Explica cómo cada tabla en su base de datos debería incluir un campo o conjunto de campos que identifiquen sin lugar a dudas cada registro individual almacenado en la tabla, para que Visual FoxPro trabaje más eficientemente

Secciones relacionadas

Diseñar bases de datos
Explica cómo tomar ventaja de la tecnología de bases de datos relacionales en Visual FoxPro con bases de datos bien diseñadas.
Proceso de diseño de bases de datos
Proporciona una introducción acerca de cómo crear una base de datos bien diseñada y enumera los pasos importantes en el proceso de diseño.
Análisis de los requisitos de datos
Trata el primer paso en el diseño de una base de datos de Microsoft Visual FoxPro, lo que implica buscar la razón de la base de datos y cómo se utilizará.
Organizar los requisitos en tablas
Describe cómo seleccionar las tablas en la base de datos, lo que puede ser el paso más difícil en el proceso de diseño de la base de datos.
Determinar los campos necesarios
Explica la importancia de determinar qué necesita saber sobre las personas, cosas o eventos que se registran en la tabla.
Identificar relaciones
Contiene información y ejemplos acerca de cómo se puede utilizar el sistema de administración de bases de datos relacionales Microsoft Visual FoxPro para vincular información con sentido.
Mejorar el diseño
Después de que se hayan establecido las tablas, los campos y las relaciones, detalla el paso importante de revisar el diseño de la base de datos para localizar los errores que puedan quedar.
Ejemplos de diagramas de bases de datos
Ofrece diagramas de bases de datos como una forma de generar ideas para crear su propia base de datos.


Identificar los campos

A continuación se indican algunas sugerencias para determinar los campos:

Relacione cada campo directamente con el tema de la tabla

Un campo que describe el tema de una tabla diferente que pertenece a esa tabla. Después, cuando defina relaciones entre sus tablas, verá como puede combinar los datos de campos en varias tablas. Por ahora, esté seguro que cada campo en una tabla describe directamente el tema de la tabla. Si se encuentra que está repitiendo información en varias tablas, es una pista de que tiene campos innecesarios en alguna de las tablas.

No incluya datos derivados o calculados

En la mayoría de los casos no es conveniente almacenar en las tablas el resultado de cálculos. En lugar de ello, puede hacer que Visual FoxPro realice los cálculos cuando desee ver el resultado. Por ejemplo, el formulario de pedido mostrado anteriormente en esta sección muestra el precio con descuento para cada línea de un pedido de la base de datos de Comercial Tasmania. Sin embargo, no existe ningún campo de subtotal de precio con descuento en ninguna tabla de Comercial Tasmania. En su lugar la tabla Order_Line_Items incluye un campo de cantidad que almacena las unidades pedidas de cada producto individual, así como el precio unitario de cada producto pedido. Con esos datos, Visual FoxPro calcula el subtotal cada vez que se imprime un formulario de pedido. No es necesario almacenar el subtotal en una tabla. Para más información, ver Análisis de los requisitos de datos.

Incluya toda la información necesaria

Es fácil pasar por alto información importante. Vuelva a la información que reunió en la primera etapa del proceso de diseño. Observe los formularios e informes impresos para asegurarse de que toda la información que ha sido necesaria en el pasado está incluida en las tablas de Visual FoxPro o que puede derivarse de ellas. Piense en las preguntas que se formularán a Visual FoxPro. ¿Podrá Visual FoxPro encontrar todas las respuestas con la información que tiene en las tablas? ¿Ha identificado campos para almacenar datos únicos, como el Id. de cliente? ¿Qué tablas incluyen la información que desea combinar en un informe o en un formulario? Si desea más información sobre la forma de identificar campos clave y relacionar tablas, consulte las secciones Usar campos de clave principal e Identificar relaciones.

Almacene la información en sus componentes lógicos más pequeños

Puede que sienta la tentación de utilizar un único campo para nombres completos o para nombres de productos, junto con su descripción. Si combina más de un tipo de información en un campo, después será difícil obtener datos individuales. Procure dividir la información en componentes lógicos; por ejemplo, cree campos distintos para el nombre y cada apellido, o para el nombre de producto, su categoría y su descripción.

Ejemplo

Comercial Tasmania vende especialidades alimenticias importadas de todo el mundo. Los empleados utilizan un informe de productos pedidos para hacer un seguimiento de los productos pedidos.

Informe para hacer un seguimiento del inventario de productos

El informe indica que la tabla Products, que contiene datos sobre los productos vendidos, debe contener campos para el nombre del producto, las unidades en existencia y las unidades pedidas, entre otros. ¿Pero qué ocurre con los campos para el nombre y el número de teléfono del proveedor? Para producir el informe, Visual FoxPro necesitará saber a qué proveedor corresponde cada producto.

Borrador de la tabla Supplier con campos para el nombre y el número de teléfono del proveedor

Puede resolver esto sin almacenar datos redundantes en sus tablas si crea una tabla Supplier con campos individuales para el nombre y el número de teléfono del proveedor. Para mayor información, consulte Utilizar campos con claves primarias.

Vea también

Determinar los campos necesarios | Usar campos de clave principal


Usar campos de clave principal

La eficacia de un sistema de administración de bases de datos relacionales como Visual FoxPro proviene de su capacidad de buscar y agrupar rápidamente información almacenada en tablas distintas. Para que Visual FoxPro funcione del modo más eficaz, cada tabla de la base de datos debería incluir un campo o un conjunto de campos que identifique de forma única cada registro individual almacenado en la tabla. A menudo, este campo será un número de identificación único, como un número de Id. de empleado o un número de serie. En la terminología de las bases de datos, esta información se denomina clave principal de la tabla. Visual FoxPro utiliza los campos de clave principal para asociar rápidamente datos de múltiples tablas y presentarlos agrupados.

Si ya dispone de un identificador único para una tabla, como por ejemplo una serie de números de producto que haya creado para identificar los productos en existencias, puede utilizarlo como clave principal de la tabla. Asegúrese de que los valores de este campo serán siempre distintos para cada registro, pues Visual FoxPro no permite valores duplicados en un campo de clave principal. Por ejemplo, no debe utilizar nombres de personas como clave principal, ya que no son únicos. Puede ocurrir fácilmente que haya en una misma tabla dos personas con el mismo nombre.

Al elegir campos de clave principal, tenga en cuenta lo siguiente:

  • Visual FoxPro no permite valores duplicados ni NULL en los campos de clave principal. Por ello, no debe elegir una clave principal que pueda contener valores de este tipo.
  • Puede utilizar el valor del campo de clave principal para buscar registros, por lo que no debe ser demasiado largo para recordarlo o escribirlo. Puede ser conveniente hacer que el valor tenga un número determinado de letras o dígitos, o que se encuentre en un cierto intervalo de valores.
  • El tamaño de la clave principal afecta a la velocidad de las operaciones en la base de datos. Cuando cree campos de clave principal, utilice el menor tamaño que resulte adecuado a los valores que se almacenarán en ellos.

Ejemplo

La clave principal de la tabla Products de Comercial Tasmania contiene números de Id. de producto. Como cada número identifica a un producto distinto, no interesará que haya dos productos con el mismo número.

La clave principal de la tabla Products es el campo Product_id.

En algunos casos puede ser conveniente utilizar dos o más campos para formar la clave principal de una tabla. Por ejemplo, la tabla Order_Line_Items de la base de datos de Comercial Tasmania utiliza dos campos como clave principal: Order_id y Product_id. En el paso siguiente, Identificar relaciones se explicará el motivo de ello.

Vea también

Determinar los campos necesarios | Identificar los campos


Identificar relaciones

Una vez que ha dividido la información en tablas debe indicar a Visual FoxPro la manera de agruparla de nuevo de forma significativa. Por ejemplo, el formulario siguiente incluye información procedente de tablas distintas.

El formulario Entrada de pedidos utiliza información de varias tablas.

Visual FoxPro es un sistema de administración de bases de datos relacionales. Esto significa que los datos relacionados se almacenan en tablas separadas. A continuación defina las relaciones entre las tablas que Visual FoxPro utilizará para buscar información asociada almacenada en la base de datos.

Por ejemplo, suponga que desea telefonear a un empleado para consultarle sobre una venta que ha realizado. Los números de teléfono de los empleados están registrados en la tabla Employee, y las ventas se registran en la tabla Orders. Al indicar a Visual FoxPro la venta en la que estamos interesados, éste puede buscar el número de teléfono utilizando la relación existente entre las dos tablas. El mecanismo funciona gracias a que Employee_id, la clave principal de la tabla Employee, es también un campo de la tabla Orders. En la terminología de las bases de datos, el campo Employee_id de la tabla Orders es una clave externa, ya que se refiere a la clave principal de una tabla distinta, o externa.

Campo Employee_id como clave principal de la tabla Employee y como clave externa de la tabla Orders

Así, para establecer una relación entre dos tablas (tabla A y tabla B) se agrega la clave principal de una de ellas a la otra, de forma que aparezca en ambas. Pero, ¿cómo se decide de qué tabla se toma la clave principal? Para configurar correctamente las relaciones, primero es necesario determinar su naturaleza. Hay tres tipos de relaciones entre tablas:

  • Relaciones de uno a varios
  • Relaciones de varios a varios
  • Relaciones de uno a uno

En el resto de esta sección se presenta un ejemplo de cada tipo de relación y se explica cómo diseñar las tablas de forma que Visual FoxPro pueda asociar sus datos correctamente. El propósito de cada ejemplo es explicar la forma de determinar las relaciones entre las tablas y cómo decidir los campos de las tablas que deben utilizarse para las relaciones. No se pretende describir el uso de la interfaz de Visual FoxPro para relacionar tablas.

Ejemplo

La relación de uno a varios es la más común en una base de datos relacional. En una relación de este tipo, un registro de la tabla A puede tener más de un registro coincidente en la tabla B, pero cada registro de la tabla B tendrá como máximo un registro coincidente en la tabla A.

Por ejemplo, las tablas Category y Products de la base de datos de Comercial Tasmania tienen una relación de uno a varios.

Relación uno a muchos

Para establecer la relación, agregue el campo o los campos que forman la clave principal del lado "uno" de la relación a la tabla del lado "varios". En el lado "uno" se utiliza una clave de índice principal o candidato y en el lado "varios" puede usarse una clave de índice normal. En este caso, el campo Category_id de la tabla Category se agregaría a la tabla Products, ya que una categoría incluye muchos productos. Visual FoxPro utilizará el número de Id. de categoría para localizar la categoría correspondiente a cada producto.

Para más información, ver Trabajar con tablas.

Ejemplo

En una relación de varios a varios, un registro de la tabla A puede tener más de un registro coincidente en la tabla B y a un registro de la tabla B también puede corresponderle más de un registro de la tabla A. Este tipo de relación requiere cambios en el diseño de la base de datos para su correcta especificación en Visual FoxPro.

Para detectar relaciones de varios a varios entre las tablas es importante observar los dos sentidos de cada relación. Por ejemplo, considere la relación entre pedidos y productos de la base de datos de Comercial Tasmania. Cada pedido puede tener más de un producto. Así que por cada registro de la tabla Orders puede haber múltiples registros relacionados en la tabla Products. Pero esto no es todo. Cada producto puede aparecer en varios pedidos. Así que por cada registro de la tabla Products puede haber múltiples registros relacionados en la tabla Orders.

Relación muchos a muchos

Los temas de las dos tablas (Orders y Products) tienen una relación de varios a varios. Esto supone un problema en el diseño de la base de datos. Para entender este problema, imagine lo que ocurriría si intentase establecer la relación entre las dos tablas agregando el campo Product_id a la tabla Orders. Para tener más de un producto por pedido, en la tabla Orders necesita más de un registro por pedido. Tendría que repetir una y otra vez la información para cada registro relacionado con el mismo pedido, lo que supone un diseño poco eficaz que puede llevar a una falta de exactitud en los datos. El mismo problema aparece si se incluye el campo Order_id en la tabla Products: sería necesario más de un registro en la tabla Products para cada producto real. Para resolver este problema cree una tercera tabla que divida la relación de varios a varios en dos relaciones de uno a varios. Esta tercera tabla se denomina tabla de unión, ya que actúa como unión entre las dos tablas. En la tabla de unión incluya la clave principal de cada una de las dos tablas anteriores.

La tabla Order_Line_Items crea un vínculo uno a muchos entre Orders y Products

Una tabla de unión podría guardar únicamente las dos claves principales de las tablas que vincula o, como en la tabla Order_Line_Items, la tabla de unión podría contener información adicional.

Cada registro de la tabla Order_Line_Items representa una línea de un pedido. La clave principal de la tabla Order_Line_Items consta de dos campos: las claves externas de las tablas Orders y Products. El campo Order_id por sí solo no sirve como clave principal de la tabla, ya que un mismo pedido puede tener varias líneas de productos. El Id. de pedido se repite para cada línea de un pedido, por lo que el campo no contendrá valores únicos. El campo Product_id tampoco funcionará, ya que un mismo producto puede aparecer en varios pedidos diferentes. Sin embargo, los dos campos juntos en la tabla de unión producirán siempre un valor único para cada registro. La tabla de unión no requiere su propia clave principal.

En la base de datos de Comercial Tasmania, las tablas Orders y Products no se relacionan directamente. En su lugar lo hacen a través de la tabla Order_Line_Items. La relación de varios a varios entre los pedidos y los productos se representa en la base de datos mediante dos relaciones de uno a varios:

  • Las tablas Orders y Order_Line_Items tienen una relación de uno a varios. Cada pedido puede tener más de una línea de producto, pero cada línea sólo estará conectada a un pedido.
  • Las tablas Products y Order_Line_Items tienen una relación de uno a varios. Cada producto puede tener más de una línea asociada, pero cada línea sólo se refiere a un producto.

Ejemplo

En una relación de uno a uno, cada registro de la tabla A no puede tener más de un registro coincidente en la tabla B y a cada registro de la tabla B no puede corresponderle más de un registro coincidente en la tabla A. Este tipo de relación es poco habitual y puede indicar la necesidad de una modificación en el diseño de la base de datos.

Las relaciones de uno a uno entre dos tablas son poco usuales ya que, en muchos casos, la información de ambas tablas puede combinarse de forma sencilla en una tabla única. Por ejemplo, suponga que se crea una tabla, llamada Ping_Pong_Players, para hacer un seguimiento de un torneo benéfico de ping-pong en Comercial Tasmania. Como todos los jugadores son empleados, esta tabla tendrá una relación de uno a uno con la tabla Employee de la base de datos de Comercial Tasmania.

Relación uno a uno

Sería posible agregar todos los campos de la tabla Ping_Pong_Players a la tabla Employee. Sin embargo, la tabla Ping_Pong_Players se utiliza para un acontecimiento puntual y la información dejará de ser necesaria cuando éste termine. Además, no todos los empleados juegan al ping-pong, de modo que si los campos se incorporasen a la tabla Employee, estarían vacíos en muchos registros. Por estas razones tiene sentido crear una tabla distinta.

Cuando detecte la necesidad de una relación de uno a uno en una base de datos, considere primero si es conveniente agrupar la información en una sola tabla. Por ejemplo, en la tabla Employee, un empleado puede tener un director, que también es un empleado. Puede agregar un campo para el número de identificación del director. Para reunir la información más tarde, puede utilizar una autocombinación en la consulta o vista. No necesita una tabla independiente para resolver la relación uno a uno. Si no quiere hacerlo por alguna razón, a continuación se muestra cómo configurar la relación uno a uno entre las dos tablas:

  • Si las dos tablas tratan del mismo tema, probablemente podrá definir la relación utilizando el mismo campo de clave principal en ambas.
  • Si las dos tablas tratan de temas distintos y tienen claves principales diferentes, elija una de ellas e incluya su campo de clave principal en la otra como clave externa.

Vea también

Determinar los campos necesarios | Mejorar el diseño | Organizar los requisitos en tablas | Análisis de los requisitos de datos | Diseñar bases de datos | Desarrollar bases de datos | Trabajar con tablas


Mejorar el diseño

Cuando ya se tienen las tablas, los campos y las relaciones necesarios, es el momento de estudiar el diseño y detectar los posibles fallos que puedan quedar.

Puede encontrar varios fallos mientras está diseñando su base de datos. Estos problemas comunes pueden hacer que sus datos sean más difíciles de usar y de mantener:

  • ¿Tiene una tabla con un gran número de campos que no están relacionados con el mismo tema? Por ejemplo, una tabla puede contener campos que pertenecen a sus clientes así como información de ventas. Intente asegurarse de que cada tabla contiene datos sobre un solo tema.
  • ¿Tiene campos que se dejan intencionadamente en blanco en muchos registros porque no son aplicables a dichos registros? Esto generalmente significa que los campos pertenecen a otra tabla.
  • ¿Tiene un gran número de tablas, muchas de las cuales contienen los mismos campos? Por ejemplo, tiene tablas distintas para las ventas de enero y las de febrero, o para clientes locales y clientes remotos, en las que almacena el mismo tipo de información. Intente consolidar toda la información perteneciente a un solo tema en una sola tabla. Es posible que tenga que agregar un campo adicional, por ejemplo, para identificar la fecha de venta.

Cree sus tablas, especifique relaciones entre las tablas e introduzca algunos registros de datos en cada tabla. Vea si puede usar la base de datos para obtener las respuestas que desea. Cree borradores de sus formularios e informes y vea si muestran los datos que espera. Busque duplicados de datos innecesarios y elimínelos.

Al probar la base de datos inicial, probablemente descubrirá posibles mejoras. A continuación se indican algunos puntos que debe comprobar:

  • ¿Ha olvidado algún campo? ¿Existe información necesaria que no se ha incluido? De ser así, ¿pertenece a las tablas ya existentes? Si la información trata de un tema distinto, puede ser necesario crear otra tabla.
  • ¿Ha elegido una buena clave principal para cada tabla? Si la va a utilizar para buscar registros específicos, ¿es fácil de recordar y escribir? Asegúrese de que no se dará el caso de tener que introducir en un campo de clave principal un valor que duplique a otro valor del campo.
  • ¿Tiene que introducir información repetida una y otra vez en una de las tablas? Si es así, probablemente deba dividirla en dos tablas con una relación de uno a varios.
  • ¿Tiene tablas con muchos campos, un número de registros limitado y numerosos campos vacíos en algunos registros? En caso afirmativo, considere la posibilidad de volver a diseñar la tabla de forma que tenga menos campos y más registros.

A medida que identifique los cambios que desea realizar, puede modificar las tablas y los campos para reflejar las mejoras en el diseño. Para obtener más información acerca de cómo modificar las tablas, consulte Trabajar con tablas.

Ejemplo

Cada producto en existencias de Comercial Tasmania pertenece a una categoría general, como Beverages, Condiments o Seafood. La tabla Products podría contener un campo para mostrar la categoría de cada producto.

Tabla Products con un campo Category_name

Suponga que al explorar y perfeccionar la base de datos Comercial Tasmania decide almacenar una descripción de la categoría junto con su nombre. Si agregase un campo Category Description a la tabla Products, tendría que repetir la descripción de una categoría para cada producto que perteneciese a ella, lo que no es una buena solución.

Un método más adecuado es hacer de la categoría un nuevo tema del que tenga que ocuparse la base de datos, con su propia tabla y su propia clave principal. De esta forma puede agregar la clave principal de la tabla Category a la tabla Products como clave externa.

La tabla Category almacena información eficientemente

Las tablas Category y Products tienen una relación de uno a varios: una categoría puede tener más de un producto, pero cada producto sólo pertenece a una categoría.

Vea también

Identificar relaciones | Ejemplos de diagramas de bases de datos | Determinar los campos necesarios | Organizar los requisitos en tablas | Análisis de los requisitos de datos | Diseñar bases de datos | Desarrollar bases de datos | Trabajar con tablas


Ejemplos de diagramas de bases de datos

Los diagramas de bases de datos siguientes pueden sugerirle ideas para el diseño de su propia base de datos. Estas bases no se incluyen con Visual FoxPro; sólo se ofrecen aquí como ejemplo de los tipos de bases de datos y tablas que puede crear.

Base de datos de citas

Esta estructura de base de datos almacena las citas de una oficina profesional, y puede modificarse fácilmente para que la usen médicos, odontólogos, abogados o contables. La tabla Appointments cuenta con una clave principal de múltiples campos para identificar cada cita de forma única. Esta clave principal, el índice "client_sta", se crea mediante la indización por una expresión que combina los campos client_id y date_start_time.

Ejemplo de una base de datos de citas

Base de datos de personal

Esta estructura de base de datos almacena información sobre recursos humanos. La tabla Job History almacena información sobre cada contrato o ascenso, de forma que puede contener varios registros por cada empleado.

Ejemplo de una base de datos de personal

Base de datos de biblioteca

Esta base de datos almacena información sobre los libros de una biblioteca y los préstamos a los lectores. Observe la relación de varios a varios entre las tablas Books y Authors y entre las tablas Books y Subjects.

Ejemplo de una base de datos de biblioteca

Vea también

Mejorar el diseño | Identificar relaciones | Determinar los campos necesarios | Organizar los requisitos en tablas | Análisis de los requisitos de datos | Diseñar bases de datos


Crear una base de datos

Después de diseñar su base de datos, y determinar qué campos podría necesitar, está listo para crear su base de datos.

En esta sección

Proceso de creación de Bases de datos
Aprenda cómo crear una base de datos, un contenedor de base de datos, reunir tablas en una colección, y usar la característica diccionario de datos.
Trabajar con una base de datos
Explica cómo una base de datos proporciona un entorno de trabajo que puede usarse para almacenar una colección de tablas, establecer relaciones entre tablas, y establecer propiedades y reglas de validación de datos que controlen como trabajan conjuntamente las tablas relacionadas.
Agregar tablas a bases de datos
Describe cómo agregar una tabla, crear enlaces entre el archivo tabla y el contenedor base de datos. Cuando crea una nueva base de datos, está vacía, conteniendo tablas no asociadas u otros objetos.
Actualizar vínculos de tablas y bases de datos
Mover un archivo de base de datos o una tabla asociada con una base de datos cambiará las rutas relativas y podría romper los enlace que Visual FoxPro utiliza para asociar bases de datos y archivos de tablas. Necesitará restablecer los enlaces y actualizar las rutas relativas para reflejar la nueva ubicación de los archivos.
Quitar una tabla de la base de datos
Aprenda cómo quitar una tabla desde una base de datos, lo cual también quita del archivo base de datos la información del diccionario de datos asociado con la tabla, pero no borra la tabla.
Crear relaciones persistentes
Explica cómo las relaciones persistentes son relaciones entre tablas de bases de datos que están almacenadas en el archivo base de datos.
Generar integridad referencial
Describe cómo abrir y utilizar el Generador de integridad referencial y ofrece las bases de cómo crear un conjunto de reglas para mantener las relaciones definidas entre tablas al agregar o eliminar registros.
Crear procedimientos almacenados
Explica cómo crear, modificar o quitar un procedimiento almacenado.
Ver y configurar propiedades de bases da datos
Explica cómo ver y establecer las propiedades Version y Comment en una base de datos Microsoft® Visual FoxPro®.

Secciones relacionadas

Diseñar bases de datos
Explica cómo tomar ventaja de la tecnología de bases de datos relacionales en Visual FoxPro® con bases de datos bien diseñadas.
Ver y modificar la arquitectura de la base de datos
Proporciona descripciones acerca de cómo ver un archivo de base de datos, un esquema y objetos de bases de datos, también explica cómo validar una base de datos y ampliar un archivo .dbc.
Administrar una base de datos
Ofrece instrucciones acerca de cómo agregar o quitar una base de datos de un proyecto, o eliminar una base de datos completamente, también explica cómo controlar errores de bases de datos y hacer referencia a múltiples bases de datos.


Proceso de creación de Bases de datos

Al crear la base de datos, las tablas quedan unidas en una colección y obtienen las ventajas que ofrecen las características del diccionario de datos.

El diccionario de datos brinda gran flexibilidad en el diseño y modificación de la base de datos y posibilita que no haya que escribir código para crear validación a nivel de campo y de registro o para asegurar la unicidad de valores dentro de los campos de clave principal. El diccionario de datos de Visual FoxPro permite crear o especificar:

  • Claves principales y candidatas.
  • Relaciones persistentes entre las tablas de bases de datos.
  • Nombres largos para tablas y campos.
  • Títulos de los campos, que serán mostrados en ventanas Examinar y títulos de columnas de controles Grids.
  • Valores predeterminados para los campos.
  • Clase de control predeterminado utilizada en formularios.
  • Máscara de entrada y muestra formatos para los campos.
  • Reglas a nivel de campo y a nivel de registro.
  • Desencadenantes.
  • Procedimientos almacenados.
  • Conexión con fuentes de datos remotos.
  • Vistas remotas y locales.
  • Comentario para cada campo, tabla y base de datos.

Algunas características del diccionario de datos, tales como nombres largos de campos, claves principales y candidatas, valores predeterminados, reglas a nivel de campo y a nivel de registro y los desencadenantes son almacenados en la base de datos, pero son creados como parte del proceso de generación de la tabla o vista. Para más información, vea Trabajar con tablas y Crear vistas.

Agrupar tablas en una base de datos

Para agrupar tablas en una base de datos, es necesario crear el contenedor de base de datos (DBC) que contenga todos los objetos tales como vistas, conexiones y procedimientos almacenados asociados a las tablas que estructuran su base de datos.

Crear una nueva base de datos

  • En el administrador de proyectos, seleccione la ficha Datos, luego seleccione Bases de Datos de la lista y elija Nuevo.

    -o-

  • Utilice el comando CREATE DATABASE.

Por ejemplo, el siguiente código crea y abre exclusivamente una nueva base de datos llamada Ejemplo:

CREATE DATABASE Ejemplo

Al crear una nueva base de datos, está vacía, no contiene tablas ni otros objetos. Al añadir una tabla se crea el vínculo entre la tabla y el contenedor de la base de datos. El vínculo de información almacenado en la base de datos sobre la tabla es un vínculo anterior. El vínculo de información almacenado en la tabla sobre la base de datos es un vínculo posterior.

Los vínculos especifican las relaciones entre el contenedor de base de datos y las tablas.

Utilizar el asistente de bases de datos

Puede utilizar el Asistente de base de datos para ayudarlo a crear una base de datos nueva. El asistente proporciona plantillas y expone una serie de preguntas que ayudan a definir su base de datos a partir de las respuestas.

Crear una base de datos utilizando el asistente de bases de datos

  1. En el Administrador de proyectos, seleccione la ficha Datos y seleccione Bases de Datos.
  2. Elija Nuevo.
  3. Elija el botón Asistente de Base de Datos.
  4. Siga las instrucciones de las pantallas del asistente.

Puede acceder al asistente de bases de datos desde el menú, eligiendo Nuevo del menú Archivo, seleccionando Base de Datos y seleccionando la opción Asistente de base de datos.

El asistente proporciona plantillas para tablas y vistas, índices, claves principales y las relaciones puede elegir o editar.

Puede utilizar los siguientes comandos y funciones para trabajar con bases de datos y sus objetos programáticamente.

Comandos y funciones que manipulan bases de datos y sus objetos

ADATABASES( ) | CREATE VIEW | MODIFY CONNECTION
ADBOBJECTS( ) | DBC( ) | MODIFY DATABASE
ADD TABLE | DBGETPROP( ) | MODIFY PROCEDURE
ALTER TABLE | DBSETPROP( ) | MODIFY STRUCTURE
APPEND PROCEDURES | DELETE CONNECTION | MODIFY VIEW
CLOSE DATABASE | DELETE DATABASE | OPEN DATABASE
COPY PROCEDURES | DELETE VIEW | PACK DATABASE
CREATE CONNECTION | DISPLAY DATABASE | RENAME TABLE
CREATE DATABASE | DROP TABLE | REMOVE TABLE
CREATE SQL VIEW | INDBC( ) | SET DATABASE
CREATE TABLE | LIST DATABASE | VALIDATE DATABASE

Vea también

Desarrollar bases de datos | Agregar tablas a bases de datos | Examinar | Quitar una tabla de la base de datos | Actualizar vínculos de tablas y bases de datos | Administrador de proyectos | CREATE DATABASE | Asistente para bases de datos | Diseñador de bases de datos | Diseñar bases de datos


Trabajar con una base de datos

Una base de datos proporciona un entorno de trabajo en el que puede almacenar una serie de tablas, establecer relaciones entre las tablas y establecer propiedades y reglas de validación de datos que controlan cómo funcionan conjuntamente las tablas relacionadas. Una base de datos se almacena como un archivo con la extensión .dbc.

Contenido de una base de datos

Puede usar las bases de datos de forma independiente o bien puede incorporarlas a un proyecto agregándolas al Administrador de proyectos. Para tener acceso a las tablas de una base de datos, ésta debe estar abierta.

Para abrir una base de datos

  1. En el Administrador de proyectos, seleccione el nombre de la base de datos que desea utilizar.
  2. Elija Modificar.

También puede elegir Abrir en el menú Archivo y elegir el nombre de una base de datos.

Para ver la estructura de una base de datos de ejemplo, pruebe a abrir Testdata.dbc, que se encuentra en el directorio ...\Samples\Data de Visual FoxPro.

Tablas en el Diseñador de bases de datos

Cuando abre una base de datos, aparecerá el Diseñador de bases de datos y muestra las tablas incluidas en la base de datos y las relaciones entre ellas. La barra de herramientas Diseñador de bases de datos le permite acceso rápidamente a las opciones relacionadas con bases de datos. Los comandos de base de datos se encuentran en el menú Base de datos; también puede ver menús contextuales si hace clic derecho en el Diseñador de bases de datos.

Hallar tablas o vistas en una base de datos

Si su base de datos contiene muchas tablas y vistas, podría desear localizar rápidamente una tabla específica en el Diseñador de bases de datos, puede hacerlo utilizando el comando Buscar objeto del menú Base de datos cuando el Diseñador de bases de datos esté abierto.

Para ubicar una tabla en una base de datos

  1. En el menú Base de datos, elija Buscar objeto.
  2. En el cuadro de diálogo Buscar tabla o vista, seleccione la tabla que desea ubicar.

La tabla seleccionada aparece activa en el Diseñador de bases de datos.

Mostrar tablas o vistas

Puede elegir mostrar sólo tablas o vistas específicas.

Para mostrar sólo tablas o vistas

  1. En el menú Bases de datos, elija Propiedades.
  2. En el cuadro de diálogo Propiedades de la base de datos, seleccione las opciones a mostrar que desee.

Puede Expandir tablas en el Diseñador de bases de datos para ver los campos e índices que contienen o Contraerlas para mostrar sólo el nombre de la tabla, lo cual es útil si la base de datos contiene muchas tablas.

Para expandir o contraer una tabla

  • En el Diseñador de bases de datos, haga clic derecho en la tabla y seleccione Expandir o Contraer.

Para expandir o contraer todas la tablas

  • Haga clic derecho en el Diseñador de bases de datos y seleccione Expandir todo o Contraer todo.

Organizar tablas en una base de datos

Puede cambiar la presentación de las tablas mostradas en el Diseñador de bases de datos. Por ejemplo, después de trabajar en la base de datos, es posible que quiera devolver a las tablas el alto y el ancho predeterminados, o mejorar la presentación alineando las tablas.

Para organizar las tablas de una base de datos

  • En el menú Base de datos, elija Organizar y, a continuación, seleccione las opciones adecuadas en el cuadro de diálogo Buscar tabla o vista.

    En el Diseñador de bases de datos, la barra de título de la tabla seleccionada está resaltada.

    Para | Seleccionar
    Organizar las tablas alfabéticamente por nombre | Por nombre
    Organizar las tablas por tipo | Por tipo
    Alinear las tablas en una fila | Horizontalmente
    Alinear las tablas en una columna | Verticalmente
    Devolver las tablas a su tamaño original | Cambiar tamaño de los objetos al alto y el ancho predeterminados

Vea también

Desarrollar bases de datos | Agregar tablas a bases de datos | Examinar | Quitar una tabla de la base de datos | Actualizar vínculos de tablas y bases de datos | Crear una base de datos | Diseñador de bases de datos | Administrador de proyectos


Agregar tablas a una base de datos

Empiece a crear su base de datos; para ello, agregue las tablas que desea utilizar. Puede seleccionar cualquier tabla que no forme parte actualmente de otra base de datos. Como las tablas sólo pueden pertenecer a una base de datos cada vez, debe quitar una tabla de una base de datos antes de poder usarla en una base de datos nueva.

Para agregar una tabla a una base de datos

  1. En el menú Base de datos, elija Agregar tabla.
  2. En el cuadro de diálogo Abrir, seleccione una tabla y elija Aceptar.

Tablas libres y tablas en bases de datos

Cada tabla de Visual FoxPro puede existir en uno de dos estados: como tabla libre, que es un archivo .dbf no asociado a ninguna base de datos, o como tabla de base de datos, que es un archivo .dbf asociado a una base de datos. Las tablas asociadas a una base de datos pueden tener propiedades que no tienen las tablas libres, como las reglas a nivel de campo y a nivel de registro, los desencadenadores y las relaciones persistentes.

Las tablas se asocian a una base de datos al crearlas desde dentro de una base de datos abierta o al agregar tablas existentes a una base de datos. Para obtener información acerca de la creación de nuevas tablas, consulte Trabajar con tablas.

Para agregar una tabla libre a una base de datos

  • En el Administrador de proyectos, seleccione Tablas en la ficha Todos o en la ficha Datos y, a continuación, elija Agregar.

    • –O bien–

  • Use el Comando ADD TABLE.

Por ejemplo, el código siguiente abre la base de datos testdata y le agrega la tabla orditems:

OPEN DATABASE testdata
ADD TABLE orditems

Para que una tabla libre existente pase a formar parte de una base de datos, debe agregarla explícitamente. La modificación de la estructura de una tabla libre no hace que Visual FoxPro la agregue a una base de datos, incluso cuando la base de datos se encuentre abierta al ejecutar el comando MODIFY STRUCTURE.

Usar tablas libres

Una tabla determinada sólo se puede asociar a una base de datos. Sin embargo, es posible utilizar los datos de un archivo .dbf existente sin necesidad de incorporarlo a una base de datos.

Para tener acceso a una tabla de otra base de datos

  • Cree una vista en la base de datos que haga referencia a la tabla en cuestión.

    –O bien–

  • Obtenga acceso a la tabla con el comando USE y el símbolo "!".

Utilice el símbolo "!" para hacer referencia a una tabla de una base de datos distinta de la actual. Por ejemplo, si desea examinar la tabla orditems de la base de datos testdata, puede escribir:

USE testdata!orditems
BROWSE

En el ejemplo anterior, la base de datos testdata se abre automáticamente al ejecutar el comando USE, pero Visual FoxPro no la establece como base de datos actual. Las bases de datos abiertas automáticamente como en el ejemplo anterior se cierran también automáticamente al cerrar la tabla, a menos que se abra explícitamente la base de datos antes de cerrar la tabla.

Para más información, consulte Crear vistas.

Vea también

Crear una base de datos | Quitar una tabla de la base de datos | Actualizar vínculos de tablas y bases de datos | Crear relaciones persistentes | ADD TABLE | Diseñar bases de datos | Desarrollar bases de datos | Trabajar con una base de datos


Actualizar vínculos de tablas y bases de datos

Si mueve archivos de base de datos (.dbf, .dct y .dcx) o una tabla asociada con la base de datos, las rutas de acceso relativas cambian y pueden romper los vínculos primarios y hacia delante que Visual FoxPro usa para asociar archivos de bases de datos y de tablas:

  • El vínculo primario vincula la tabla con la base de datos propietaria de la tabla. Está formado por la ruta de acceso relativa y el nombre de archivo para el archivo .dbc asociado a la tabla, y está almacenado en el encabezado del archivo de tabla de Visual FoxPro (.dbf).
  • El vínculo hacia delante indica a la base de datos qué tablas le pertenecen. Los vínculos hacia delante están almacenados en el archivo de base de datos (.dbc) y están formados por la ruta de acceso relativa y el nombre de archivo para cada archivo de tabla asociado.

Puede restablecer vínculos y actualizar la información de ruta de acceso relativa de forma que refleje la nueva ubicación del archivo.

Para actualizar vínculos después de mover una tabla o una base de datos

  • Use la cláusula RECOVER del comando VALIDATE DATABASE.

Por ejemplo, el código siguiente abre la base de datos testdata y muestra cuadros de diálogo que le permiten buscar tablas que no están en las ubicaciones contenidas en la base de datos:

OPEN DATABASE testdata
VALIDATE DATABASE RECOVER
Sugerencia Si desea usar una tabla sin perder tiempo restableciendo los vínculos para todas las tablas de la base de datos, puede abrir la tabla con el comando USE. Visual FoxPro muestra el cuadro de diálogo Abrir que le permitirá buscar la base de datos propietaria o eliminar los vínculos.

Para obtener información acerca de la eliminación del vínculo primario de una tabla cuya base de datos propietaria se ha eliminado accidentalmente del disco, vea FREE TABLE.

Vea también

Quitar una tabla de la base de datos | Crear relaciones persistentes | Agregar tablas a bases de datos | Desarrollar bases de datos | Crear una base de datos | Trabajar con una base de datos


Quitar una tabla de una base de datos

Al agregar una tabla a una base de datos, Visual FoxPro modifica el registro de encabezado del archivo para documentar la ruta de acceso y el nombre de archivo de la base de datos a la que ahora pertenece la tabla. Esta información de ruta de acceso y nombre de archivo se denomina vínculo primario, ya que vincula la tabla a la base de datos a la que pertenece. El proceso de quitar una tabla de una base de datos no solamente suprime la tabla y la información del diccionario de datos asociada del archivo de base de datos, sino que también actualiza la información de vínculo primario para reflejar el nuevo estado de la tabla como libre.

Para quitar una tabla de una base de datos puede utilizar la interfaz o bien el comando REMOVE TABLE. Al quitar la tabla de la base de datos, puede elegir también eliminar físicamente del disco el archivo de tabla.

Para quitar una tabla de una base de datos

  • En el Administrador de proyectos, seleccione el nombre de la tabla y luego elija Quitar.

    –O bien–

  • En el Diseñador de bases de datos, seleccione la tabla. En el menú Base de datos elija Quitar y, a continuación, en el cuadro de diálogo seleccione Quitar.

    –O bien–

  • Utilice el comando REMOVE TABLE.

Por ejemplo, el código siguiente abre la base de datos testdata y quita la tabla orditems:

OPEN DATABASE testdata
REMOVE TABLE orditems

Al quitar una tabla de una base de datos, el archivo de tabla no se elimina automáticamente. Si desea quitar la tabla de la base de datos y además eliminar del disco su archivo .dbf, utilice la cláusula DELETE del comando REMOVE TABLE o el comando DROP TABLE. Por ejemplo, el código siguiente abre la base de datos testdata y elimina la tabla orditems del disco:

OPEN DATABASE testdata
REMOVE TABLE orditems DELETE

El código siguiente también abre la base de datos testdata y elimina la tabla orditems sin mover una copia a la Papelera de reciclaje de Windows:

OPEN DATABASE testdata
DROP TABLE orditems NORECYCLE

Vea también

Agregar tablas a bases de datos | Actualizar vínculos de tablas y bases de datos | Crear una base de datos | Desarrollar bases de datos | REMOVE TABLE | Diseñar bases de datos | Trabajar con una base de datos


Crear relaciones persistentes

Puede crear relaciones persistentes entre las tablas de la base de datos. Las relaciones persistentes son relaciones entre tablas de una base de datos que se almacenan en el archivo de la base de datos y tienen las características siguientes:

  • Se utilizan automáticamente como condiciones de combinación predeterminadas en los Diseñador de consultas y de vistas.
  • Aparecen en el Diseñador de bases de datos como líneas que relacionan los índices de las tablas.
  • Aparecen en el Diseñador de entorno de datos como relaciones predeterminadas para los formularios e informes.
  • Se utilizan para almacenar información de integridad referencial.

A diferencia de las relaciones temporales creadas con el comando SET RELATION, las relaciones persistentes no necesitan ser creadas de nuevo cada vez que se utilizan las tablas. Sin embargo, como las relaciones persistentes no controlan la relación entre los punteros de registros de las tablas, al programar aplicaciones de Visual FoxPro se utilizan relaciones de ambos tipos.

En Visual FoxPro se utilizan los índices para establecer relaciones persistentes entre las tablas de una base de datos. La relación se define entre los índices y no entre los campos, lo que permite relacionar las tablas basándose en una expresión de índice simple o compleja.

Para preparar las relaciones

  1. Determine qué tabla tiene los registros principales y qué tabla tiene los registros relacionados.
  2. Agregue un campo de enteros a la tabla que contiene el registro principal y, a continuación, agregue un índice principal al nuevo campo.
  3. Agregue a la tabla que contiene los campos relacionados un campo que coincida con la clave principal de la otra tabla y, a continuación, agregue un índice normal al nuevo campo.
    Nota Use la misma expresión para ambos índices. Por ejemplo, si usa una función en la expresión del campo de clave principal tiene que usar la misma función en la expresión del campo de clave externa.

Para crear una relación persistente entre tablas

  • En el Diseñador de bases de datos, elija el nombre del índice que desee relacionar y arrástrelo hasta el nombre del índice de la tabla relacionada.

    –O bien–

  • Utilice la cláusula FOREIGN KEY con los comandos CREATE TABLE o ALTER TABLE.

Por ejemplo, el comando siguiente agrega una relación persistente de uno a varios entre las tablas customer y orders, basándose en la clave principal cust_id de la tabla customer y en una nueva clave externa, cust_id, de la tabla orders:

ALTER TABLE orders;
ADD FOREIGN KEY cust_id TAG ;
cust_id REFERENCES customer

Si examina el esquema de la base de datos en el Diseñador de bases de datos, verá una línea que une orders y customer, lo que representa la nueva relación persistente.

Los índices proporcionan la base para relaciones persistentes

El tipo de etiqueta o clave de índice determinará el tipo de relación persistente que puede crear. Es necesaria una etiqueta de índice principal o candidato para el lado "uno" de una relación de uno a varios; para el lado "varios" debe utilizar una etiqueta o clave de índice normal.

También puede modificar la relación.

Para modificar una relación entre tablas

  • Haga doble clic en la línea de relación entre las tablas y, a continuación, seleccione las opciones apropiadas en el cuadro de diálogo Modificar relación.

Para eliminar una relación persistente entre tablas

  1. En el Diseñador de bases de datos, haga clic en la línea de relación entre las dos tablas.

    El ancho de la línea aumentará para indicar que ha seleccionado la relación.

  2. Presione la tecla SUPR.

    –O bien–

    Utilice la cláusula DROP FOREIGN KEY con el comando ALTER TABLE.

Por ejemplo, el comando siguiente elimina una relación persistente entre las tablas customer y orders basada en la clave principal cust_id de la tabla customer y en una clave externa, cust_id, de la tabla orders:

ALTER TABLE orders DROP FOREIGN KEY TAG cust_id SAVE

Vea también

Actualizar vínculos de tablas y bases de datos | Generar integridad referencial | Desarrollar bases de datos | Crear una base de datos | Diseñador de bases de datos | CREATE TABLE | ALTER TABLE | Trabajar con una base de datos | Trabajar con tablas


Generar integridad referencial

Establecer integridad referencial implica la creación de un conjunto de reglas para preservar las relaciones definidas entre las tablas al introducir o eliminar registros.

Si exige la integridad referencial, Visual FoxPro impedirá las acciones siguientes:

  • Agregar registros a una tabla relacionada cuando no haya ningún registro asociado en la tabla principal.
  • Cambiar valores de una tabla principal cuando tales cambios supongan dejar registros huérfanos en una tabla relacionada.
  • Eliminar registros de una tabla principal cuando tengan registros relacionados coincidentes.

Puede elegir escribir sus propios desencadenadores y códigos de procedimiento almacenados para hacer cumplir la integridad referencial. Sin embargo, el generador de integridad referencial de Visual FoxPro le permite determinar el conjunto de reglas a cumplir, las tablas a las que aplicará esas reglas y los eventos del sistema que provocarán que Visual FoxPro verifique las reglas de integridad referencial.

El Generador de integridad referencial trata múltiples niveles de eliminaciones y actualizaciones en cascada y es recomendable como herramienta para asegurar la integridad referencial.

Para abrir el Generador de integridad referencial

  1. Abrir el Diseñador de Bases de Datos.
  2. En el menú Base de datos, elija Integridad referencial.

Para utilizar el Generador de integridad referencial

  1. En el Generador de bases de datos, cree una relación entre dos tablas o bien haga doble clic en la línea de relación para modificar la relación.
  2. En el cuadro de diálogo Modificar relación, elija el botón Integridad referencial.
  3. En el Generador de integridad referencial, seleccione las reglas que desee exigir para actualizar, eliminar o insertar registros.
  4. Elija Aceptar y, a continuación, elija Sí para guardar las modificaciones, generar código de integridad referencial y salir del diseñador.

Al utilizar el Generador de integridad referencial para crear reglas que se van a aplicar a la base de datos, Visual FoxPro guarda el código generado para exigir las reglas de integridad referencial como desencadenadores que hacen referencia a procedimientos almacenados. Para ver este código puede abrir el editor de texto de procedimientos almacenados en la base de datos.

Precaución Cuando haga cambios en el diseño de una base de datos, como modificaciones en sus tablas o en los índices utilizados en una relación persistente, debe volver a ejecutar el Generador de integridad referencial antes de utilizar de nuevo la base de datos. De esta forma se revisará el código de procedimiento almacenado y los desencadenadores de tabla utilizados para exigir la integridad referencial, de forma que reflejen el nuevo diseño. Si no vuelve a ejecutar el Generador de integridad referencial, puede que obtenga resultados inesperados, ya que no se habrán actualizado los procedimientos almacenados y los desencadenadores para ajustarlos a las modificaciones.

Vea también

Crear relaciones persistentes | Crear procedimientos almacenados | Ver y configurar propiedades de bases de datos | Generador de integridad referencial | Desarrollar bases de datos | Crear una base de datos | Trabajar con una base de datos | Uso de desencadenadores


Crear procedimientos almacenados

Puede crear procedimientos almacenados para las tablas de una base de datos. Un procedimiento almacenado está formado por código de Visual FoxPro incluido en el archivo .dbc. Los procedimientos almacenados son procedimientos de código que operan específicamente sobre los datos de la base de datos. Su uso puede mejorar el rendimiento, ya que se cargan en memoria en el momento de abrir la base de datos.

Para crear, modificar o quitar un procedimiento almacenado

  • En el Administrador de proyectos, seleccione una base de datos, seleccione Procedimientos almacenados y, a continuación, elija Nuevo, Modificar o Quitar.

    –O bien–

  • En el Diseñador de bases de datos, elija Modificar procedimientos almacenados en el menú Base de datos.

    –O bien–

  • En la ventana Comandos, utilice el comando MODIFY PROCEDURE.

Cada una de estas opciones abre el editor de texto de Visual FoxPro, que permite crear, modificar o quitar procedimientos almacenados de la base de datos activa.

Los procedimientos almacenados se utilizan principalmente para crear funciones definidas por el usuario a las que se hace referencia en una regla de validación a nivel de campo o registro. Al guardar una función definida por el usuario como procedimiento almacenado en la base de datos, el código de la función se guarda en el archivo .dbc y se desplaza automáticamente con la base de datos cuando ésta cambia de lugar. El uso de procedimientos almacenados permite también una mayor portabilidad de la aplicación, ya que no es necesario administrar los archivos de funciones definidas por el usuario independientemente del archivo de base de datos.

Vea también

Generar integridad referencial | Ver y configurar propiedades de bases da datos | Ver y modificar la arquitectura de las bases de datos | Crear relaciones persistentes | Desarrollar bases de datos | Trabajar con una base de datos


Ver y configurar propiedades de bases de datos

Todas las bases de datos de Visual FoxPro contienen las propiedades Comment y Version. Para verlas puede utilizar las funciones DBGETPROP( ) y DBSETPROP( ).

Por ejemplo, el código siguiente muestra el número de versión de la base de datos testdata:

? DBGETPROP('testdata', 'database', 'version')

El valor devuelto representa el número de versión de .dbc de Visual FoxPro y es de sólo lectura. Con la misma función puede ver el comentario, si existe, para la base de datos:

? DBGETPROP('testdata', 'database', 'comment')

A diferencia de la propiedad Version, la propiedad Comment se puede establecer. Utilice la función DBSETPROP( ) para introducir una descripción u otro texto que desee almacenar con la base de datos

Para establecer la propiedad de comentario de la base de datos activa

  • En el Diseñador de bases de datos, elija Propiedades en el menú Base de datos y escriba un comentario en el cuadro Comentario.

    –O bien–

  • Utilice la opción de comentario de la función DBSETPROP( ).

Por ejemplo, el código siguiente modifica el comentario de la base de datos testdata:

? DBSETPROP('testdata', 'database', 'comment', ;
'TestData is included with Visual FoxPro')

También puede utilizar las funciones DBGETPROP( ) y DBSETPROP( ) para ver y establecer propiedades de otros objetos de base de datos como conexiones y vistas.

Vea también

Crear procedimientos almacenados | Ver y modificar la arquitectura de las bases de datos | Extender los archivos de base de datos | Generar integridad referencial | Desarrollar bases de datos | Trabajar con una base de datos


Administrar una base de datos

Después de crear una base de datos, es posible que desee agregarla a un proyecto si no forma parte de uno. Si su base de datos ya forma parte de un proyecto, puede quitarla del mismo. Además, si ya no necesita la base de datos, puede eliminarla del disco.

Al crear una base de datos con el comando CREATE DATABASE, la base de datos no pasa automáticamente a formar parte de un proyecto, aun cuando el Administrador de proyectos esté abierto. Puede agregar la base de datos a un proyecto para facilitar la organización, la presentación y la manipulación de los objetos de base de datos mediante la interfaz y también para simplificar el proceso de generación de una aplicación. Sólo se puede agregar una base de datos a un proyecto mediante el Administrador de proyectos.

Para agregar una base de datos a un proyecto

  • En el Administrador de proyectos, seleccione Base de Datos y, a continuación eliga Agregar.

Sólo se puede quitar una base de datos de un proyecto mediante el Administrador de proyectos.

Para quitar una base de datos de un proyecto

  • En el administrador de proyectos, seleccione la base de datos e eliga Quitar, y a continuación eliga Quitar de nuevo.

Para eliminar una base de datos

  • En el Administrador de proyectos seleccione la base de datos y eliga Quitar, y a continuación eliga Eliminar.

    –O bien–

  • Use el comando DELETE DATABASE.

Por ejemplo, el código siguiente elimina la base de datos sample:

DELETE DATABASE sample

Utilice siempre alguno de los métodos anteriores para eliminar una base de datos del disco. El uso del Administrador de proyectos o del comando DELETE DATABASE permite a Visual FoxPro suprimir los vínculos primarios que unen la base de datos a sus tablas. Otras utilidades de manipulación de archivos para eliminar un archivo de base de datos, como el Explorador de Windows, no suprimen los vínculos primarios.

Nota El comando DELETE DATABASE no elimina del disco las tablas asociadas a la base de datos, sino que las convierte en tablas libres. Si desea eliminar del disco una base de datos y también todas sus tablas asociadas, utilice la cláusula DELETETABLES con el comando DELETE DATABASE.

Vea también

Validar una base de datos | Hacer referencia a múltiples bases de datos | CREATE DATABASE | Administrador de proyectos | Ver y modificar la arquitectura de las bases de datos | Desarrollar bases de datos | Trabajar con una base de datos


Hacer referencia a múltiples bases de datos

Puede tener muchas bases de datos de Visual FoxPro en su sistema para resolver necesidades de organización en un entorno multiusuario. Las bases de datos múltiples ofrecen las siguientes ventajas:

  • Controlan el acceso de usuarios a un subconjunto de tablas del sistema global.
  • Organizan los datos para satisfacer de forma eficaz las necesidades de información de varios grupos que usan el sistema.
  • Permiten el uso exclusivo de un subconjunto de tablas para crear vistas locales y remotas en tiempo de ejecución.

Por ejemplo, es posible que tenga una base de datos de ventas que guarda información de ventas usada principalmente por el equipo de ventas que trabaja con clientes y otra base de datos que guarda información de inventario usada principalmente por los compradores que trabajan con los proveedores. A veces las necesidades de información de estos grupos se solapan. Estas bases de datos se pueden abrir simultáneamente y se puede tener acceso a las mismas como se desee, pero contendrán tipos de información completamente diferentes.

Múltiples bases de datos pueden agregar flexibilidad a su sistema

Puede usar múltiples bases de datos abriendo más de una base de datos simultáneamente o estableciendo referencias en una base de datos cerrada. Cuando están abiertas varias bases de datos, puede establecer la base de datos actual y seleccionar tablas de ella.

Abrir más de una base de datos

Cuando hay abierta una base de datos, las tablas y las relaciones entre ellas están controladas por la información almacenada en la base de datos abierta. Puede tener abierta más de una base de datos a la vez. Por ejemplo, puede utilizar múltiples bases de datos abiertas al ejecutar varias aplicaciones, cada una basada en una base de datos distinta. También puede ser conveniente abrir varias bases de datos para utilizar información (como por ejemplo controles personalizados) almacenada en una base de datos distinta de la que utiliza la aplicación.

Para abrir más de una base de datos

  • En el administrador de proyectos, seleccionar una base de datos y elegir Modificar o Abrir.

    –O bien–

  • Utilice el comando OPEN DATABASE.

Al abrir una nueva base de datos no se cierran las que se hayan abierto previamente. Las bases de datos abiertas continuarán en este estado y la última en abrirse pasará a ser la base de datos activa.

Configurar la base de datos activa

Al abrir varias bases de datos, Visual FoxPro establece como activa la abierta en último lugar. De forma predeterminada, todas las tablas u objetos que cree o agregue formarán parte de la base de datos activa. Los comandos y funciones que manipulan bases de datos abiertas, como ADD TABLE y DBC( ), se aplican también a la base de datos actual.

Puede elegir una base de datos distinta y establecerla como activa mediante la interfaz o mediante el comando SET DATABASE.

Para establecer la base de datos activa

  • En la barra de herramientas estándar, seleccione una base de datos en el cuadro Bases de datos.

    –O bien–

  • Utilice el comando SET DATABASE.

Por ejemplo, el código siguiente abre tres bases de datos, establece la primera como activa y luego utiliza la función DBC( ) para mostrar el nombre de la base de datos activa:

OPEN DATABASE testdata
OPEN DATABASE tastrade
OPEN DATABASE sample
SET DATABASE TO testdata
? DBC( )
Sugerencia Visual FoxPro puede abrir una o más bases de datos automáticamente al ejecutar una consulta o un formulario que requiera que esas bases de datos se encuentren abiertas. Para asegurarse de que utiliza la base de datos correcta, establezca la base de datos activa explícitamente antes de ejecutar comandos que operen sobre la base de datos activa.

Seleccionar tablas en la base de datos activa

Para elegir en una lista con las tablas de la base de datos activa, puede utilizar el comando USE.

Para elegir una tabla de la base de datos activa

  • Ejecute el comando USE con el símbolo "?".

    Aparecerá el cuadro de diálogo Usar en el que puede seleccionar la tabla que desea abrir.

Por ejemplo, el código siguiente abre la base de datos sales y solicita que se seleccione una de las tablas que contiene.

OPEN DATABASE SALES
USE ?

Si desea seleccionar una tabla no asociada a la base de datos abierta, podrá elegir "Otras" en el cuadro de diálogo Usar.

Cerrar una base de datos

Puede cerrar una base de datos abierta mediante el Administrador de proyectos o mediante el comando CLOSE DATABASE.

Para cerrar una base de datos

  • Desde el Administrador de Proyectos, elegir la base de datos y seleccionar Cerrar.

    –O bien–

  • Utilizar el comando CLOSE DATABASE.

Por ejemplo, el código siguiente cierra la base de datos testdata:

SET DATABASE TO testdata
CLOSE DATABASE

Ambas opciones cierran la base de datos automáticamente. Puede también cerrar las bases de datos y otros objetos abiertos con la cláusula ALL del comando CLOSE.

La ejecución del comando CLOSE DATABASE desde la ventana de comando no cierra la base de datos si esta ha sido abierta:

  • Con el Administrador de proyectos al expandir el esquema para ver el contenido de una base de datos.
  • Con un formulario que se ejecute en su propia sesión de datos.

En estas circunstancias, la base de datos permanecerá abierta hasta que el Administrador de proyectos la cierre o hasta que se cierre el formulario que la utiliza.

Resolución del alcance

Visual FoxPro utiliza la base de datos activa como alcance principal para los objetos con nombre, como las tablas. Cuando una base de datos está abierta, Visual FoxPro busca primero en ella los objetos que se soliciten, como pueden ser tablas, vistas, conexiones, etc. Si el objeto no se encuentra en la base de datos, Visual FoxPro lo buscará en la ruta de búsqueda predeterminada.

Por ejemplo, si la tabla customer está asociada a la base de datos sales, Visual FoxPro encontrará siempre la tabla customer de la base de datos al ejecutar los comandos siguientes:

OPEN DATABASE SALES
ADD TABLE F:\SOURCE\CUSTOMER.DBF
USE CUSTOMER

Si ejecuta el comando siguiente, Visual FoxPro buscará la tabla products comenzando por la base de datos activa:

USE PRODUCTS

Si products no se encuentra en la base de datos activa, Visual FoxPro intentará buscar fuera de ella en la ruta de búsqueda predeterminada.

Nota Puede especificar la ruta de acceso completa de una tabla si desea tener acceso a la misma desde dentro o desde fuera de una base de datos; por ejemplo, si prevé un cambio en la ubicación de la tabla. Sin embargo, el rendimiento es mejor cuando sólo se hace referencia al nombre de la tabla, ya que en Visual FoxPro es más rápido el acceso a los nombres de tablas de base de datos que a los nombres especificados con la ruta de acceso completa.

Vea también

Administrar una base de datos | Controlar errores de bases de datos | Validar una base de datos | Administrador de proyectos | OPEN DATABASE (Comando) | SET DATABASE (Comando) | USE (Comando) | CLOSE (Comando) | Desarrollar bases de datos | Trabajar con una base de datos


Controlar errores de bases de datos

Los errores de base de datos, también llamados "errores del motor", ocurren cuando se dan errores en tiempo de ejecución en los registros del código de eventos. Por ejemplo, un error de base de datos ocurre cuando el usuario intenta almacenar un valor nulo en un campo que no admite valores nulos.

Cuando ocurre un error de base de datos, el motor de base de datos subyacente que detecta el error envía normalmente un mensaje de error. Sin embargo, la naturaleza exacta del mensaje de error depende de la base de datos a la que se tenga acceso, por ejemplo, los mensajes de error producidos por un servidor de base de datos remoto (como Microsoft SQL Server) probablemente serán distintos de los que se producen si ocurre un error en una tabla local de Visual FoxPro.

Además, los errores del motor son a veces muy genéricos, porque el motor de base de datos no tiene información sobre el contexto en el que se actualiza un registro. Como consecuencia, los mensajes de error producidos por un motor de base de datos suelen ser menos útiles para el usuario de una aplicación de Visual FoxPro.

Para controlar errores de base de datos de forma más específica para la aplicación, puede crear desencadenadores con el comando CREATE TRIGGER. El desencadenante se llama cuando se intenta la actualización de un registro (eliminar, insertar o actualizar). El código de desencadenante personalizado puede buscar entonces condiciones de error específicas de la aplicación e informar de ellas.

Si controla errores de base de datos mediante desencadenadores, debería activar el búfer. De esta forma, cuando se actualiza un registro, se llama al desencadenante pero el registro no se envía automáticamente a la base de datos subyacente. Así evita la posibilidad de producir dos mensajes de error: uno del desencadenante y otro del motor de base de datos subyacente.

Para crear mensajes de error personalizados mediante desencadenadores

  1. Dentro de una función definida por el usuario o un procedimiento almacenado, escriba su propio texto de mensaje.
  2. Habilite el búfer con la función CURSORSETPROP( ) para mostrar su texto personalizado. Si el búfer está desactivado, el usuario verá tanto su texto personalizado como el mensaje de error del motor.

Vea también

Hacer referencia a múltiples bases de datos | Administrar una base de datos | Validar una base de datos | Desarrollar bases de datos | Validar una base de datos | Trabajar con una base de datos


Ver y modificar la arquitectura de las bases de datos

Al crear una base de datos, Visual FoxPro crea y abre de forma exclusiva un archivo .dbc (Contenedor de base de datos). El archivo .dbc almacena toda la información sobre la base de datos, incluidos los nombres de los archivos y los objetos asociados a ella. El archivo .dbc no contiene físicamente ningún objeto de nivel superior, como tablas o campos. En su lugar, Visual FoxPro almacena en el archivo .dbc punteros de rutas de archivo que apuntan a las tablas.

Para explorar la arquitectura de una base de datos, puede examinar el archivo de base de datos, ver el esquema, examinar los objetos de la base de datos, validar la base de datos, e incluso extender el archivo .dbc.

Mostrar el esquema de la base de datos

El esquema de la base de datos es una representación visual de las estructuras de tabla y las relaciones persistentes establecidas en ella. La ventana Diseñador de bases de datos muestra el esquema de la base de datos abierta.

Para ver el esquema de la base de datos

  • Utilice el comando MODIFY DATABASE.

Por ejemplo, el código siguiente abre la base de datos testdata y muestra su esquema en el Diseñador de bases de datos:

MODIFY DATABASE testdata

En el Diseñador de bases de datos, puede utilizar la barra de herramientas Base de datos para crear una nueva tabla, agregar a la base de datos una tabla existente, quitar una tabla de la base de datos o modificar la estructura de una tabla. También puede crear conexiones y modificar procedimientos almacenados.

Examinar el archivo de base de datos

El archivo de base de datos contiene un registro por cada tabla, vista, índice, etiqueta de índice, relación persistente y conexión asociados a la base de datos, y también por cada campo de tabla o de vista con propiedades extendidas. También incluye un registro único que contiene todos los procedimientos almacenados de la base de datos.

Para obtener más información acerca de la estructura del archivo .dbc, vea Estructura de archivos de tabla.

Aunque el Diseñador de bases de datos proporciona una representación conceptual del esquema de la base de datos, puede que en ocasiones sea necesario examinar el contenido del propio archivo de base de datos. Para examinar una base de datos cerrada puede ejecutar el comando USE en el archivo .dbc. En el ejemplo siguiente se abre una ventana Examinar que muestra el contenido de la base de datos sales en formato de tabla.

CLOSE DATABASE sales
USE sales.dbc EXCLUSIVE
BROWSE
Precaución No utilice el comando BROWSE para modificar el archivo de base de datos si no conoce la estructura del archivo .dbc. Si comete un error al intentar modificar el archivo .dbc, puede invalidar la base de datos y provocar una pérdida de datos.

Vea también

Ver y configurar propiedades de bases de datos | Extender los archivos de base de datos | Diseñador de bases de datos | MODIFY DATABASE | Validar una base de datos | Desarrollar bases de datos | Trabajar con una base de datos


Extender los archivos de base de datos

Todos los archivos .dbc contienen un campo Memo, llamado User, que puede utilizar para almacenar su propia información sobre cada registro de la base de datos. También puede extender un archivo .dbc agregándole campos para ajustarlo a sus necesidades como programador. Los campos deben agregarse al final de la estructura. Para modificar la estructura de un archivo .dbc es necesario tener acceso al mismo de forma exclusiva.

Para agregar un campo a un archivo .dbc

  1. Abrir el archivo .dbc para uso exclusivo con el comando USE.
  2. Utilizar el comando MODIFY STRUCTURE.

Por ejemplo, el siguiente código abre el Diseñador de Tablas para poder agregar un campo a la estructura de Testdata.dbc:

USE TESTDATA.DBC EXCLUSIVE
MODIFY STRUCTURE

Al agregar un nuevo campo a un archivo de base de datos, utilice como primer carácter de su nombre "U" para indicar que se trata de un campo definido por el usuario. Esta designación evita que el campo entre en conflicto con futuras extensiones del archivo .dbc.

Precaución No modifique ninguno de los campos definidos por Visual FoxPro en un archivo .dbc. Las modificaciones de un archivo .dbc pueden afectar a la integridad de la base de datos.

Vea también

Ver y modificar la arquitectura de las bases de datos | Validar una base de datos | Administrar una base de datos | Desarrollar bases de datos | Hacer referencia a múltiples bases de datos | Trabajar con una base de datos


Validar una base de datos

La validación de una base de datos asegura que las filas de la base de datos almacenan representaciones precisas de los metadatos de la base de datos. Para comprobar la integridad de la base de datos activa, puede utilizar el comando VALIDATE DATABASE.

Para validar una base de datos

  • Utilice el comando VALIDATE DATABASE.

Por ejemplo, el código siguiente utiliza y valida el archivo .dbc de la base de datos testdata:

OPEN DATABASE testdata EXCLUSIVE
VALIDATE DATABASE

Vea también

Extender los archivos de base de datos | Administrar una base de datos | Desarrollar bases de datos | Hacer referencia a múltiples bases de datos | Ver y modificar la arquitectura de las bases de datos | Trabajar con una base de datos


Trabajar con tablas

La creación de una base de datos implica la creación de tablas. Al diseñar la base de datos especificó los campos de tabla y las relaciones necesarias para su aplicación. Ahora, al crear las tablas, deberá indicar con más detalle los tipos de datos, los títulos y los posibles valores predeterminados de cada campo, los desencadenadores de cada tabla y los índices que se utilizan para establecer relaciones entre las tablas.

En esta sección

Crear tablas
Proporciona una introducción acerca de cómo crear tablas e incluye descripciones de la creación de tablas de forma interactiva y mediante programación.
Crear campos
Describe el proceso de creación de campos de tabla y presenta las explicaciones de cómo dar nombre a campos y restringir su acceso.
Exigir reglas de empresa
Detalla cómo exigir reglas de empresa mediante la creación de reglas a nivel de campo y a nivel de registro, denominadas reglas de validación.
Uso de desencadenadores
Ofrece una descripción de desencadenantes y cómo se utilizan e indica los temas relacionados con la creación, modificación, eliminación y borrado de desencadenantes.
Modificar la estructura de la tabla
Describe cómo agregar, modificar o eliminar los nombres, anchos y tipos de datos de los campos, modificar sus valores predeterminados o sus reglas y también agregar observaciones o títulos.
Trabajar con múltiples tablas
Explica como abrir la ventana Sesión de datos, abrir una tabla en un área de trabajo y cerrar una tabla en un área de trabajo.
Manejo de datos utilizando CursorAdapters
Describe como trabajar con diferentes tipos de orígenes de datos como cursores nativos Visual FoxPro, usando objetos CursorAdapter.

Secciones relacionadas

Trabajar con datos
Averigüe cómo crear aplicaciones eficaces con índices, tablas y bases de datos según los datos que necesita.
Desarrollar bases de datos
Utilice bases de datos en Microsoft Visual FoxPro para establecer relaciones entre tablas, hacer cumplir la integridad referencial y administrar datos locales y remotos.
Trabajar con registros
Para almacenar datos en la tabla, agregue nuevos registros. Los registros existentes se pueden modificar y eliminar mediante la interfaz o con el uso de comandos.
Importar y exportar datos
Al importar a Microsoft Visual FoxPro y exportar desde esta aplicación se copian datos entre esta y otras aplicaciones.
Elegir tipos de datos
Proporciona explicaciones sobre como elegir un tipo de datos para un campo, como controlar la entrada de valores nulos para campos, como permitir valores nulos en todos los campos de una tabla y como agregar un comentario a un campo en una tabla de una base de datos.


Crear tablas

Las tablas almacenan los datos en un formato de filas y columnas, de manera similar a una hoja de cálculo. Cada fila representa un registro, mientras que cada columna representa los campos de los registros. Puede crear una tabla en una base de datos o una tabla libre que no esté asociada a ninguna base de datos. Si coloca la tabla en una base de datos, puede crear nombres largos de campo y de tabla para las tablas de la base de datos. También puede aprovecharse de las capacidades del diccionario de datos para tablas de base de datos, valores de campo predeterminados y reglas a nivel de campo y a nivel de registro, así como también de los desencadenadores.

Diseñar tablas de base de datos o tablas libres

Las tablas de Visual FoxPro, o archivos .dbf, pueden existir en dos estados: como tabla de base de datos (una tabla asociada a una base de datos) o como una tabla libre no asociada a ninguna base de datos. Las tablas asociadas a una base de datos cuentan con ciertas ventajas sobre las tablas libres. Cuando una tabla forma parte de una base de datos, es posible crear:

  • Nombres largos para la tabla y para cada uno de sus campos.
  • Títulos y observaciones para cada campo de la tabla.
  • Valores predeterminados, máscaras de entrada y formato para los campos de la tabla.
  • Clase de control predeterminada para campos de tablas.
  • Reglas a nivel de campo y reglas a nivel de registro.
  • Índices de clave primaria y relaciones de tablas para compatibilidad con reglas de integridad referencial.
  • Un desencadenante para cada evento INSERT, UPDATE o DELETE.

Algunas características sólo son aplicables a las tablas de base de datos. Para obtener más información acerca de la asociación de tablas con una base de datos, vea Desarrollar bases de datos.

Las tablas de base de datos tienen propiedades que no tienen las tablas libres.

Puede diseñar y crear una tabla de forma interactiva mediante el Diseñador de tablas, accesible a través del Administrador de proyectos o del menú Archivo, o mediante el lenguaje de programación.

Crear tablas interactivas

Cuando tenga que crear una tabla nueva, puede obtener ayuda de un Asistente para tablas o utilice el Diseñador de tablas y defina una tabla con los campos que necesite de forma interactiva.

Recuerde los siguientes puntos cuando diseñe una tabla:

  • El tipo de datos de un campo debe coincidir con el tipo de información que va a almacenar en él.
  • Haga el campo lo suficientemente ancho para dar cabida a la información que mostrará.
  • Establezca un número apropiado de posiciones decimales para los campos de tipo Numérico o Float.
  • Active "NULL" si desea que el campo acepte .NULL. como valor.

Crear tablas mediante programación

Para crear y modificar una tabla mediante programación se utilizan los comandos siguientes:

Comandos para crear y modificar tablas

ALTER TABLE | CLOSE TABLES
CREATE TABLE | DELETE FILE
REMOVE TABLE | RENAME TABLE
DROP TABLE |

Vea también

Trabajar con tablas | Crear una tabla de base de datos | Crear una tabla libre | Asignar un nombre a una tabla | Cambiar el nombre de una tabla | Ver datos de tablas | Elegir tipos de datos | Desplazarse por una tabla | Personalizar una ventana Examinar | Personalizar tablas


Crear una tabla de base de datos

Para crear una nueva tabla en una base de datos puede utilizar el sistema de menús, el Administrador de proyectos o puede hacerlo mediante el lenguaje. Al crear la tabla puede especificar nombres largos de tabla y de campo, valores de campo predeterminados, reglas a nivel de campo y a nivel de registro, y desencadenadores.

Para crear una nueva tabla de base de datos

  1. En el Administrador de proyectos, seleccione Bases de datos y, a continuación, elija Tablas.
  2. Elija Nuevo y, a continuación, elija Nueva tabla.
  3. En el cuadro de diálogo Crear, escriba un nombre para la tabla y elija Guardar.
  4. En la ficha Campos del Diseñador de tablas, escriba el nombre del primer campo en el campo Nombre.
  5. En el campo Tipo, seleccione un tipo de campo de la lista.
  6. En la columna Ancho, establezca el ancho de la columna, en caracteres.
  7. Si el Tipo es Numérico o Flotante, establezca el número de posiciones decimales que desea mostrar en el cuadro Decimal.
  8. Si desea agregar un índice al campo, seleccione un tipo de ordenación en la columna Índice.
  9. Si desea que el campo acepte la entrada de valores NULL, active NULL. Puede elegir entre empezar a introducir registros inmediatamente o bien abrir la tabla más adelante, cuando vaya a empezar a introducir registros.

    –O bien–

  • Utilice el comando CREATE TABLE con una base de datos abierta.

Por ejemplo, el código siguiente crea la tabla smalltbl con una columna, llamada name:

OPEN DATABASE Sales
CREATE TABLE smalltbl (name c(50))

La nueva tabla se asocia automáticamente a la base de datos abierta en el momento de su creación. Esta asociación está definida por un vínculo primario almacenado en el registro de encabezado de la tabla.

Para agregar registros a una tabla

  1. En el Administrador de proyectos, seleccione el nombre de la tabla.
  2. Elija Examinar.
  3. En el menú Ver, elija Modo Anexar.
  4. Escriba los cambios de los nuevos registros en la ventana Examinar.

    Si prefiere ver cada campo en una línea distinta, cambie al modo Modificar, eligiendo Modificar en el menú Ver.

Vea también

Crear tablas | Crear una tabla libre | Trabajar con tablas | Asignar un nombre a una tabla | Cambiar el nombre de una tabla | Ver datos de tablas | Personalizar una ventana Examinar | Personalizar tablas


Crear una tabla libre

Las tablas libres no están asociadas a ninguna base de datos. Puede ser conveniente crear una tabla libre, por ejemplo, para almacenar información de búsqueda que comparten varias bases de datos.

Para crear una nueva tabla libre

  1. En el Administrador de proyectos, seleccione Bases de datos y, a continuación, elija Tablas libres.
  2. Elija Nuevo y, a continuación, elija Nueva tabla.
  3. En el cuadro de diálogo Crear, escriba un nombre para la tabla y elija Guardar.
  4. En la ficha Campos del Diseñador de tablas, escriba el nombre del primer campo en el campo Nombre.
  5. En el campo Tipo, seleccione un tipo de campo de la lista.
  6. En la columna Ancho, establezca el ancho de la columna, en caracteres.
  7. Si el Tipo es Numérico o Flotante, establezca el número de posiciones decimales que desea mostrar en el cuadro Decimal.
  8. Si desea agregar un índice al campo, seleccione un tipo de ordenación en la columna Índice.
  9. Si desea que el campo acepte la entrada de valores NULL, active NULL. Puede elegir entre empezar a introducir registros inmediatamente o bien abrir la tabla más adelante, cuando vaya a empezar a introducir registros.

    –O bien–

  • Use la palabra clave FREE con el comando CREATE TABLE.

Por ejemplo, el código siguiente crea la tabla libre smalltbl con una columna, llamada name:

CLOSE DATABASES
CREATE TABLE smalltbl FREE (name c(50))

Si no hay ninguna base de datos abierta cuando crea la tabla, no tiene que usar la palabra clave FREE.

Vea también

Crear tablas | Crear una tabla de base de datos | Asignar un nombre a una tabla | Trabajar con tablas | Cambiar el nombre de una tabla | Eliminar una tabla de base de datos | Ver datos de tablas | Personalizar una ventana Examinar | Personalizar tablas


Asignar un nombre a una tabla

Al ejecutar el comando CREATE TABLE, se especifica el nombre del archivo .dbf que Visual FoxPro creará para almacenar la nueva tabla. El nombre del archivo será el nombre predeterminado de la tabla, tanto en el caso de tablas de base de datos como en el de tablas libres. Los nombres de las tablas pueden contener letras, dígitos o signos de subrayado y deben empezar por una letra o un signo de subrayado.

Si la tabla se encuentra en una base de datos, también puede especificar un nombre largo de tabla. Los nombres largos de tabla pueden tener hasta 128 caracteres y pueden usarse en lugar de los nombres cortos para identificar la tabla en la base de datos. Si definió nombres largos de tabla, Visual FoxPro los mostrará siempre que la tabla aparezca en la interfaz, como por ejemplo, en el Administrador de proyectos, el Diseñador de bases de datos, el Diseñador de consultas y el Diseñador de vistas, así como en la barra de título de las ventanas Examinar.

Para asignar un nombre largo a una tabla de base de datos

  • En el Diseñador de tablas, escriba un nombre largo en el cuadro Nombre de tabla.

    –O bien–

  • Utilice la cláusula NAME del comando CREATE TABLE.

Por ejemplo, el código siguiente crea la tabla vendintl y le asigna el nombre largo vendors_international, más comprensible:

CREATE TABLE vendintl NAME vendors_international (company C(40))

También puede utilizar el Diseñador de tablas para cambiar el nombre de las tablas o agregar nombres largos a tablas creadas sin ellos. Por ejemplo, cuando agregue una tabla libre a una base de datos, puede utilizar el Diseñador de tablas para agregarle un nombre largo de tabla. Los nombres largos pueden contener letras, dígitos o signos de subrayado, y deben empezar por una letra o un signo de subrayado. No se permite el uso de espacios en blanco en los nombres largos de tabla.

Vea también

Crear tablas | Crear una tabla libre | Cambiar el nombre de una tabla | Trabajar con tablas | Eliminar una tabla de base de datos | Eliminar una tabla libre | Ver datos de tablas | Personalizar una ventana Examinar | Personalizar tablas


Cambiar el nombre de una tabla

Puede cambiar el nombre de tablas de base de datos a través de la interfaz porque va a cambiar el nombre largo. Si quita la tabla de la base de datos, el nombre de archivo de la tabla conserva el nombre original. Las tablas libres no tienen un nombre largo y sólo se puede cambiar su nombre a través del lenguaje.

Para cambiar el nombre de una tabla de una base de datos

  1. En el Diseñador de bases de datos, seleccione la tabla cuyo nombre desea cambiar.
  2. En el menú Base de datos, elija Modificar.
  3. En el Diseñador de tablas escriba un nuevo nombre para la tabla en el cuadro Nombre de tabla de la ficha Tabla.

Para cambiar el nombre de una tabla libre

  • Utilice el comando RENAME.
    Precaución Si utiliza el comando RENAME en tablas asociadas a una base de datos, el comando no actualiza el vínculo primario a la base de datos y puede producir errores de acceso a la tabla.

Vea también

Crear tablas | Asignar un nombre a una tabla | Eliminar una tabla de base de datos | Trabajar con tablas | Eliminar una tabla libre | Duplicar una tabla | Ver datos de tablas | Personalizar una ventana Examinar | Personalizar tablas


Personalizar tablas

Puede personalizar sus tablas de manera que sólo se muestren determinados registros; para ello, establezca un filtro en la tabla. También puede restringir el acceso a ciertos campos de una tabla si establece un filtro de campo, que le permite seleccionar los campos que desea mostrar.

Filtrar una tabla

Si únicamente desea ver los registros de un determinado tipo, puede establecer un filtro para limitar los registros mostrados en la ventana Examinar. Filtrar es útil cuando, por ejemplo, desea restringir el examen a las ventas que superan un determinado importe o a los empleados contratados en un intervalo de fechas concreto.

Para establecer un filtro se usa el cuadro de diálogo Propiedades del área de trabajo, al que se tiene acceso mediante el comando Propiedades del menú Tabla.

Para establecer un filtro en una tabla

  1. Examine la tabla que desea filtrar.
  2. En el menú Tabla, elija Propiedades.
  3. En el cuadro de diálogo Propiedades del área de trabajo, escriba directamente en el cuadro Filtro de datos la expresión de filtro.

    –O bien–

  • Elija el botón del cuadro de diálogo ubicado debajo de Filtro de datos y, en el Generador de expresiones, cree una expresión para seleccionar los registros que desea ver y elija Aceptar.

Cuando examine la tabla, únicamente verá los registros seleccionados por la expresión de filtro.

Por ejemplo, si utiliza la tabla Customers que se encuentra en el directorio ...\Samples\Data de Visual FoxPro, puede centrarse en los clientes que residen en Estados Unidos; para esto, introduzca la expresión siguiente en el cuadro Filtro de datos:

Customer.Country = "USA"

Vea también

Crear tablas | Asignar un nombre a una tabla | Eliminar una tabla de base de datos | Trabajar con tablas | Eliminar una tabla libre | Duplicar una tabla | Ver datos de tablas | Personalizar una ventana Examinar | Desplazarse por una tabla | Cambiar el nombre de una tabla


Desplazarse por una tabla

Use las barras de desplazamiento para moverse por la tabla y ver distintos campos y registros. También puede usar las teclas de dirección y la tecla TAB para desplazarse por una tabla.

Para ver distintos registros

  1. En el menú Tabla, elija Ir al registro.
  2. En el submenú, elija Primero, Último, Siguiente, Anterior o Registro número.
  3. Si elige Registro número, escriba el número de registro que desea ver en el cuadro de diálogo Ir al registro y seleccione Ir a.

Vea también

Crear tablas | Trabajar con tablas | Asignar un nombre a una tabla | Eliminar una tabla de base de datos | Eliminar una tabla libre | Duplicar una tabla | Ver datos de tablas | Cambiar el nombre de una tabla | Personalizar una ventana Examinar | Personalizar tablas


Ver datos de tablas

La forma más rápida de ver el contenido de una tabla es en una ventana Examinar. La ventana Examinar muestra el contenido de la tabla como una serie de filas y columnas por las que puede desplazarse. Para familiarizarse con algunas tablas típicas, puede examinar las tablas de ejemplo incluidas en el directorio ...\Samples\Data de Visual FoxPro.

Para examinar una tabla

  1. En el menú Archivo, elija Abrir y seleccione el nombre de la tabla que desee ver.
  2. En el menú Ver, elija Examinar.

También puede seleccionar el nombre de una tabla en el Administrador de proyectos y elegir el botón Examinar.

Por ejemplo, abra la tabla Customer que se encuentra en el directorio ...\Samples\Data de Visual FoxPro.

Tabla en una ventana Examinar

Para facilitar la entrada de datos, puede poner una ventana Examinar en el modo Modificar. En este modo, los nombres de columnas se muestran en la parte izquierda de la ventana.

Para cambiar la ventana Examinar al modo Modificar

  • En el menú Ver, elija Modificar.

    Tabla en modo Modificar

En cualquiera de los modos, puede desplazarse por los registros, buscar determinados registros y realizar cambios directamente en el contenido de la tabla.

Además, desde el Administrador de proyectos puede examinar el contenido de las tablas del proyecto.

Para examinar una tabla desde el Administrador de proyectos

  1. Seleccione la ficha Datos.
  2. Seleccione una tabla y elija Examinar.

Puede reutilizar su trabajo de un proyecto si comparte archivos con otro proyecto. Los archivos no se duplican, ya que el proyecto sólo almacena una referencia al archivo. Los archivos se pueden asociar a varios proyectos simultáneamente.

Para compartir archivos entre proyectos

  1. En Visual FoxPro, abra los dos proyectos que compartirán el archivo.
  2. En el Administrador de proyectos que contiene el archivo, seleccione el archivo.
  3. Arrastre el archivo hasta el contenedor del otro proyecto.

Vea también

Crear tablas | Asignar un nombre a una tabla | Eliminar una tabla de base de datos | Trabajar con tablas | Eliminar una tabla libre | Duplicar una tabla | Cambiar el nombre de una tabla | Personalizar una ventana Examinar | Personalizar tablas


Personalizar una ventana Examinar

Puede personalizar la ventana Examinar de acuerdo a sus necesidades, utilizando los siguientes procedimientos:

  • Reorganizar columnas
  • Cambiar el ancho de las columnas
  • Adaptar columnas a los datos automáticamente
  • Activar y desactivar las líneas de cuadrícula
  • Dividir una ventana Examinar
  • Bloquear columnas

Reorganizar columnas

Puede reorganizar las columnas de la ventana Examinar en el orden deseado. Esto no afectará a la estructura real de la tabla.

Para reorganizar las columnas en una ventana Examinar

  • Arrastre un encabezado de columna hasta una nueva ubicación.

    –O bien–

  • En el menú Tabla, elija Mover campo y use las teclas FLECHA IZQUIERDA o FLECHA DERECHA para mover la columna. Presione ENTRAR cuando haya terminado.

Cambiar el ancho de las columnas

Puede cambiar el ancho de una columna en una ventana Examinar. Este cambio de tamaño no afecta a la longitud de los campos ni a la estructura de la tabla.

Si desea cambiar la longitud real de los campos, modifique la estructura de la tabla mediante el Diseñador de tablas.

Para cambiar el ancho de una columna

  • Sitúe el puntero en el encabezado de columna entre dos nombres de campo y arrastre el puntero para cambiar el tamaño de la columna.

    –O bien–

  • Seleccione un campo y, en el menú Tabla, elija Ajustar campo; a continuación, use las teclas FLECHA IZQUIERDA o FLECHA DERECHA para cambiar el tamaño de la columna. Presione ENTRAR cuando haya terminado.

Adecuar columnas a datos automáticamente

Puede estirar las columnas para que se ajusten automáticamente a los los datos que ellas contienen.

Estirar una columna al tamaño del dato

  • Haga doble clic en el área entre las cabeceras de columna, inmediatamente a la derecha de la columna que desea estirar.

Estirar todas las columnas al tamaño del dato

  • Haga doble clic en el cuadro que precede la cabecera de la primera columna en la esquina superior izquierda de la cuadrícula.

Activar y desactivar las líneas de la cuadrícula

Puede desactivar las líneas de la cuadrícula en una ventana Examinar.

Para activar o desactivar las líneas de la cuadrícula

  • En el menú Ver, elija Líneas de cuadrícula.

Dividir una ventana Examinar

Podría hallar útil dividir la ventana Examinar para ver dos áreas diferentes de la tabla, o ver los mismos registros en el modo Examinar y Editar simultáneamente.

Para dividir una ventana Examinar

  1. Sitúe el puntero en la barra de división situada en la esquina inferior izquierda de la vista.
  2. Arrastre la barra dividir a la derecha para dividir la ventana Examinar en dos paneles.

    –O bien–

  3. En el menú Tabla, elija Cambiar tamaño de particiones.
  4. Presione la tecla FLECHA DERECHA para mover la barra de división.
  5. Presione la tecla ENTRAR.

Para cambiar el tamaño de los paneles de una ventana Examinar dividida

  1. Sitúe el puntero en la barra de división.
  2. Arrastre la barra de división hacia la derecha o hacia la izquierda para cambiar el tamaño relativo de los paneles.

    –O bien–

  3. En el menú Tabla, elija Cambiar tamaño de particiones.
  4. Presione la tecla FLECHA IZQUIERDA o FLECHA DERECHA para mover la barra de división.
  5. Presione la tecla ENTRAR.

En forma predeterminada los dos paneles de la ventana Examinar están enlazados; es decir, a medida que selecciona diferentes registros en un panel, los cambios se reflejan en el otro. Si desea desenlazar los dos paneles para que funcionen independientemente (es decir, que el desplazamiento en un panel no afecte al otro), elija el comando Vincular particiones en el menú Tabla.

Bloquear columnas

Puede bloquear columnas en una ventana Examinar para mantener ciertas columnas visibles mientras se desplaza atrás y adelante a través de la cuadrícula. Moverse (tabular) a la derecha no hace desplazar las columnas bloqueadas fuera de la ventana Cuadrícula/Examinar.

Bloquear todas las columnas a la izquierda de una columna específica

  1. Seleccione la columna mas a la derecha de las que desea bloquear.
  2. Haga clic derecho en el área entre las cabeceras de columna, inmediatamente después de la columna más a la derecha de las que desea bloquear.

Una línea separadora, la cual aparece 1 pixel mas ancha que las líneas de separación de las otras columnas, indica el área donde terminan las columnas bloqueadas y empiezan las columnas normales.

Desbloquear todas las columnas

  • Haga clic derecho en algún área de las cabeceras en una cuadrícula donde una o más columnas están bloqueadas.

Haciendo clic derecho en algún área entre las cabeceras desbloquea todas las columnas.

Cuando alguna de las columnas bloqueadas se desplaza fuera de la ventana de la Cuadrícula a la izquierda, ella permanece fuera de la vista y no se hace visible de nuevo hasta que se quite el bloqueo.

Por ejemplo, suponga que una cuadrícula contiene cinco columnas, y el origen de datos tiene diez columnas. Cuando se desplaza dos columnas a la derecha, la primera y segunda columna se desplazan fuera de la cuadrícula a la izquierda. Cuando hace clic derecho en el área entre la primera y la segunda columnas visibles, las cuales son realmente la tercera y cuarta, la primera columna visible, o tercera absoluta, queda bloqueada. La primera y segunda columnas absolutas, actualmente invisibles, también se bloquean. Sin embargo, no puede desplazarse atrás a la izquierda para ver todas las columnas bloqueadas. Esta funcionalidad es útil si desea bloquear las columnas en la mitad de la cuadrícula y no desea mostrar las columnas precedentes o siguientes.

El método Column.SetFocus no trabaja su una columna está bloqueada y no está visible en la ventana de la cuadrícula, por ejemplo, desplazada fuera a la izquierda.

Vea también

Crear tablas | Trabajar con tablas | Asignar un nombre a una tabla | Eliminar una tabla de base de datos | Eliminar una tabla libre | Duplicar una tabla | Cambiar el nombre de una tabla | Diseñador de tablas | Ventana Examinar | Personalizar tablas


Eliminar una tabla de base de datos

Si una tabla está asociada a una base de datos, puede eliminarla al quitarla de la base de datos. Sin embargo, eliminar una tabla de una base de datos, es distinto a solo quitarla. Si desea quitar la tabla de la base de datos, pero no desea eliminarla físicamente del disco, consulte Quitar una tabla de la base de datos en Desarrollar bases de datos.

Para eliminar una tabla de base de datos del disco

  • En el Administrador de proyectos, seleccione el nombre de la tabla, elija Quitar y, a continuación, elija Eliminar.

    –O bien–

  • En el Diseñador de bases de datos, seleccione la tabla, elija Quitar del menú Base de datos y, a continuación, elija Eliminar.

    –O bien–

  • Para eliminar la tabla junto a todos los índices principales, valores predeterminados y reglas de validación asociadas a la tabla, use el comando DROP TABLE.

    –O bien–

  • Para eliminar únicamente el archivo de tabla (.dbf), use el comando ERASE.
    Precaución Si usa el comando ERASE en tablas asociadas a la base de datos, el comando no actualiza el vínculo primario a la base de datos y puede producir errores de acceso a la tabla.

Por ejemplo, el código siguiente abre la base de datos testdata y elimina la tabla orditems y sus índices, valores predeterminados y reglas de validación:

OPEN DATABASE testdata
DROP TABLE orditems

Si elimina una tabla con la cláusula DELETE del comando REMOVE TABLE, quitará también el archivo memo .fpt asociado y el archivo de índice estructural .cdx.

Vea también

Crear tablas | Cambiar el nombre de una tabla | Eliminar una tabla libre | Trabajar con tablas | Duplicar una tabla | Asignar un nombre a una tabla | Ver datos de tablas | Personalizar una ventana Examinar | Personalizar tablas


Eliminar una tabla libre

Si una tabla no está asociada a ninguna base de datos, podrá eliminar su archivo mediante el Administrador de proyectos o con el comando DELETE FILE.

Para eliminar una tabla libre

  • En el Administrador de proyectos, seleccione la tabla libre, elija Quitar y, a continuación, elija Eliminar.

    –O bien–

  • Utilice el comando DELETE FILE.

Por ejemplo, si la tabla actual es sample, el código siguiente cerrará la tabla y eliminará su archivo del disco:

USE
DELETE FILE sample.dbf

El archivo que desea eliminar no puede estar abierto en el momento de ejecutar DELETE FILE. Si elimina una tabla que tiene otros archivos asociados, como un archivo memo .fpt o archivos de índice (.cdx o .idx), asegúrese de eliminar también estos archivos. Por ejemplo, si el archivo sample.dbf tuviera además un archivo memo asociado, podría eliminar ambos archivos con los comandos siguientes:

USE
DELETE FILE sample.dbf
DELETE FILE sample.fpt

Vea también

Crear tablas | Eliminar una tabla de base de datos | Duplicar una tabla | Trabajar con tablas | Cambiar el nombre de una tabla | Copiar y modificar la estructura de una tabla | Ver datos de tablas | Personalizar una ventana Examinar | Personalizar tablas


Duplicar una tabla

Puede hacer una copia de la estructura de una tabla, sus procedimientos almacenados, expresiones de desencadenadores y valores de campos predeterminados mediante programación. No hay ninguna opción de menú que realice la misma función. Este procedimiento no copia el contenido de la tabla.

Para duplicar una tabla

  1. Abra la tabla original.
  2. Use el comando COPY STRUCTURE para hacer una copia de la tabla original.
  3. Abra la tabla vacía creada con el comando COPY STRUCTURE.
  4. Use el comando APPEND FROM para copiar los datos desde la tabla original.

Vea también

Crear tablas | Eliminar una tabla libre | Copiar y modificar la estructura de una tabla | Trabajar con tablas | Eliminar una tabla de base de datos | Guardar una tabla como HTML | Ver datos de tablas | Personalizar una ventana Examinar | Personalizar tablas


Copiar y modificar la estructura de una tabla

Para modificar la estructura de una tabla existente puede utilizar el Diseñador de tablas o el comando ALTER TABLE. De forma alternativa, puede crear una tabla nueva en base a la estructura de una tabla existente y, a continuación, modificar la estructura de la nueva tabla.

Para copiar y modificar la estructura de una tabla

  1. Abra la tabla original.
  2. Use el comando COPY STRUCTURE EXTENDED para producir una tabla nueva que contenga la información estructural de la tabla antigua.
  3. Modifique la nueva tabla que contiene la información estructural para variar la estructura de cualquier tabla nueva creada a partir de esa información.
  4. Cree una tabla nueva con el comando CREATE FROM.

    La nueva tabla está vacía.

  5. Use APPEND FROM o uno de los comandos de copia de datos para llenar la tabla si es necesario.

Vea también

Crear tablas | Duplicar una tabla | Guardar una tabla como HTML | Trabajar con tablas | Crear campos | Eliminar una tabla libre | Ver datos de tablas | Personalizar una ventana Examinar | Personalizar tablas


Guardar una tabla como HTML

Puede utilizar la opción Guardar como HTML del menú Archivo cuando examine el contenido de una tabla para guardarla como un archivo HTML (Lenguaje de marcado de hipertexto).

Para guardar una tabla como HTML

  1. Abra la tabla.
  2. Examine la tabla, ejecutando el comando BROWSE en la ventana Comandos o eligiendo Examinar en el menú Ver.
  3. Elija Guardar como HTML en el menú Archivo.
  4. Escriba el nombre del archivo HTML que desea crear y elija Guardar.

Vea también

Crear tablas | Copiar y modificar la estructura de una tabla | Crear campos | Trabajar con tablas | Duplicar una tabla | Eliminar una tabla libre | Ver datos de tablas | Personalizar una ventana Examinar | Personalizar tablas


Crear campos

Al crear campos de tabla debe especificar un nombre de campo, un tipo de datos y un ancho de campo. También puede controlar qué datos se permiten en el campo especificando si el campo permite valores NULL, si tiene un valor predeterminado o si debe cumplir reglas de validación. Al configurar las propiedades de presentación, puede especificar el tipo de control de formulario que se crea cuando el campo se agrega a un formulario, el formato del contenido de los campos o el título del contenido del campo.

Nota Las tablas de Visual FoxPro puede contener hasta 255 campos. Si uno o más campos pueden contener valores NULL, el número máximo de campos que la tabla puede contener se reduce en una unidad, de 255 a 254.

Vea también

Crear tablas | Asignar nombres a los campos | Trabajar con tablas | Crear una tabla de base de datos | Elegir tipos de datos | Restringir el acceso a los campos


Asignar nombres a los campos

Los nombres de los campos se especifican al crear la nueva tabla. Estos nombres pueden tener hasta 10 caracteres en las tablas libres y hasta 128 en las tablas de base de datos. Si quita una tabla de una base de datos, los nombres largos de campo se truncarán a 10 caracteres.

Para asignar nombre a un campo de tabla

  • En el Diseñador de tablas, escriba un nombre de campo en el cuadro Nombre.

    –O bien–

  • Utilice el comando CREATE TABLE o el comando ALTER TABLE.

Por ejemplo, para crear y abrir la tabla customer con tres campos, cust_id, company y contact, podría ejecutar el comando siguiente:

CREATE TABLE customer (cust_id C(6), company C(40), contact C(30))

En el ejemplo anterior, C(6) indica que el campo tiene el tipo de datos Character y un ancho de 6. La elección del tipo de datos de los campos de tablas se trata más adelante en esta sección.

Con el comando ALTER TABLE, agrega los campos company y contact a una tabla customer existente:

ALTER TABLE customer ;
ADD COLUMN (company C(40), contact C(30))

Usar nombres cortos de campo

Al crear una tabla en una base de datos, Visual FoxPro almacena el nombre largo de los campos de la tabla en un registro del archivo .dbc. Los 10 primeros caracteres de cada nombre largo se almacenan también en el archivo .dbf como nombre de campo.

Si los 10 primeros caracteres del nombre largo de campo no son únicos en la tabla, Visual FoxPro generará un nombre formado por los n primeros caracteres del nombre largo y un número secuencial a continuación, de forma que el nombre del campo tenga 10 caracteres. Por ejemplo, los nombres largos de campo siguientes se convierten en los nombres de 10 caracteres que se indican:

Nombre largo | Nombre corto
customer_contact_name | customer_c
customer_contact_address | customer_2
customer_contact_city | customer_3
... | ...
customer_contact_fax | customer11

Mientras una tabla esté asociada a una base de datos, deberá usar los nombres largos para referirse a sus campos. No puede utilizar los nombres de 10 caracteres para hacer referencia a los campos de una tabla de base de datos. Si quita una tabla de su base de datos, los nombres largos de los campos se perderán y deberá utilizar los de 10 caracteres (almacenados en el archivo .dbf).

Puede utilizar nombres largos de campo compuestos de caracteres, no números, en los archivos de índice. Sin embargo, si crea un índice con nombres de campo largos y luego quita la tabla correspondiente de la base de datos, el índice no funcionará. En este caso, puede acortar los nombres en el índice y volver a generar el índice, o eliminar el índice y volver a crearlo con nombres de campo cortos. Para obtener información acerca de la eliminación de un índice, vea Eliminar un índice.

Las reglas para crear nombres largos de campo son las mismas que para cualquier identificador de Visual FoxPro, salvo que pueden contener hasta 128 caracteres.

Para obtener más información acerca de la nomenclatura de los identificadores de Visual FoxPro, consulte Creación de nombres en Visual FoxPro.

Vea también

Crear campos | Elegir tipos de datos | Trabajar con tablas | Diseñador de tablas | Crear valores predeterminados de campo | Restringir el acceso a los campos


Restringir el acceso a los campos

Si desea impedir que se muestren ciertos campos cuando se examinen tablas o cuando éstas se usen en un formulario, puede establecer un filtro de campo para restringir el acceso a dichos campos. Seleccione los campos que desea mostrar, con lo que los demás campos serán inaccesibles.

Para establecer un filtro de campo

  1. En el menú Tabla, elija Propiedades.
  2. En el cuadro de diálogo Propiedades del área de trabajo, bajo Permitir acceso a, seleccione Sólo los campos especificados en el filtro de campos y elija Filtro de campos.
  3. En el cuadro de diálogo Selector de campos, agregue los campos deseados a la columna Campos seleccionados y elija Aceptar.

Cuando examine la tabla, sólo se mostrarán los campos seleccionados en el filtro de campo.

Vea también

Crear campos | Elegir tipos de datos | Trabajar con tablas | Diseñador de tablas | Crear valores predeterminados de campo | Asignar nombres a los campos


Elegir los tipos de datos

Cuando crea un campo en una tabla, puede elegir el tipo de dato que almacena el campo. Cuando elige el tipo de dato para un campo, necesita considerar lo siguiente:

  • La clase de valores que se van a permitir en el campo. Por ejemplo, no puede almacenar texto en un campo Numérico.
  • El espacio de almacenamiento que Visual FoxPro debe reservar para los valores almacenados en el campo. Por ejemplo, un valor con el Tipo de datos Monetario (Currency) ocupará 8 bytes.
  • Los tipos de operaciones que pueden realizarse con los valores almacenados en el campo. Por ejemplo, Visual FoxPro puede determinar la suma de valores de tipo Numérico o de tipo Currency, pero no la de valores de tipo Carácter o General.
  • Si Visual FoxPro puede o no indexar u ordenar los valores del campo. No es posible ordenar ni crear índices para los campos de tipo Memo o General.
    Sugerencia Para los números de teléfono, números de pieza y otros números que no vaya a utilizar en cálculos matemáticos, debe elegir el tipo de datos Character, en lugar de Numérico.

Elegir un tipo de datos

Cada campo de una tabla almacena un determinado tipo de datos. Puede establecer el tipo de datos de un campo a cualquiera de los que se muestran en la tabla siguiente.

Visual FoxPro Field Data Types

Carácter | Carácter (Binary) | Monetario (Currency)
Fecha | DateTime | Doble
Flotante | General | Entero
Entero (Autoinc) | Lógico | Memo
Memo (Binary) | Numérico |

Para más información acerca de estos tipos de datos, consulte Tipos de datos y campos.

Especificar un tipo de datos para un campo

  1. En el Diseñador de tablas, cree o elija un campo en la ficha Campos.
  2. En la lista Tipo, seleccione un tipo de dato para el campo.

Para más información acerca del Diseñador de tablas, consulte Ficha Campos, Diseñador de tablas.

También puede especificar por medio de programación un tipo de dato para un campo, utilizando el comando CREATE TABLE. Por ejemplo, para crear y abrir la tabla products con tres campos, prod_id, prod_name, y unit_price, podría ejecutar el siguiente comando:

CREATE TABLE products (prod_id C(6), prod_name C(40), unit_price Y)

En el ejemplo anterior, la ‘Y’ que aparece después de unit_price especifica el tipo de datos Currency.

Agregar rápidamente un índice normal

Al agregar un campo, puede definir rápidamente un índice normal en el campo si especifica ascendente o descendente en la columna Índice del Diseñador de tablas. El índice que crea se agrega automáticamente a la ficha Índices y usa el campo como expresión. Para modificar el índice, puede pasar a la ficha Índices para cambiar el nombre de índice, el tipo o agregar un filtro.

Usar valores NULL

Al crear una tabla nueva, puede especificar si uno o más campos de la misma aceptarán valores NULL. Al usar un valor NULL, se indica que la información que normalmente se almacenaría en un campo o registro no está disponible en ese momento.

Por ejemplo, las prestaciones sanitarias o el estado impositivo de un empleado pueden no estar determinados en el momento de llenar un registro. En lugar de almacenar un valor de cero o dejar los campos en blanco, lo que podría interpretarse de modo erróneo, puede almacenar en ellos un valor NULL hasta que la información correspondiente esté disponible.

Especificar si se aceptan valores null en un campo

  • En la ficha Campos del Diseñador de tablas, seleccione o desactive la casilla de verificación en la columna NULL para el campo.

Cuando la casilla de verificación de la columna NULL está seleccionada, puede entrar valores null en el campo.

También puede indicar por medio de programación que el campo acepta valores null mediante las cláusulas NULL y NOT NULL cuando utilice el comando CREATE TABLE. Por ejemplo, el siguiente comando crea y abre una tabla que no permite valores null para los campos cust_id y company pero los permite en el campo e contact:

CREATE TABLE customer (cust_id C(6) NOT NULL, ;
company C(40) NOT NULL, contact C(30) NULL)

También puede controlar por medio de programación si se permiten valores null en los campos de una tabla utilizando el comando SET NULL.

Para permitir valores NULL en todos los campos de la tabla

  • En la ficha Campos del Diseñador de tablas, seleccione la columna Null para todos los campos de la tabla.

También puede por medio de programación permitir valores null en todos los campos utilizando el comando SET NULL antes de utilizar el comando CREATE TABLE.

Al especificar el comando SET NULL ON, Visual FoxPro marca automáticamente la columna NULL para cada campo de la tabla a medida que usted agrega campos en el Diseñador de tablas. Si ejecuta el comando SET NULL antes de CREATE TABLE, no será necesario especificar las cláusulas NULL o NOT NULL. Por ejemplo, el código siguiente crea una tabla que permite valores NULL en todos sus campos:

SET NULL ON
CREATE TABLE test (field1 C(6), field2 C(40), field3 Y)
Note La presencia de valores NULL afecta al comportamiento de las tablas y los índices. Por ejemplo, si utiliza APPEND FROM o INSERT INTO para copiar registros de una tabla que contiene valores NULL a otra que no los admite, los campos anexados que contengan valores NULL se considerarán en blanco, vacíos o con valor cero en la tabla actual.

Agregar observaciones a los campos

Una vez creada una tabla en una base de datos abierta, puede agregar una descripción de cada campo de la tabla para facilitar la comprensión y la actualización de la tabla. Visual FoxPro muestra el texto de comentario de los campos en el Administrador de proyectos cuando se seleccionan en la lista de campos de la tabla.

Para agregar un comentario a un campo de una tabla de base de datos

  1. Seleccione el campo en el Diseñador de tablas.
  2. Escriba el texto de su comentario en el cuadro Comentario de campo.
  3. Elija Aceptar.

    –O bien–

  • Use la función DBSETPROP( ).

Por ejemplo, puede ser conveniente aclarar el contenido del campo unit_price de la tabla orditems con el comentario “Current retail price per unit” (Precio actual por unidad) como texto asociado al campo:

?DBSETPROP('orditems.price', 'field', 'comment', ;
'Current retail price per unit')

Vea también

Asignar nombres a los campos | Crear valores predeterminados de campo | Trabajar con tablas | Diseñador de tablas | CREATE TABLE | Tipos de datos y campos | Tratamiento de valores NULL | Desarrollar bases de datos | Restringir el acceso a los campos


Crear valores predeterminados de campo

Si desea que Visual FoxPro llene automáticamente el contenido de un campo al agregar un nuevo registro, puede crear un valor predeterminado para ese campo. El valor predeterminado se aplica al introducir datos mediante un formulario, en una ventana Examinar, en una vista o mediante programación, y permanece en el campo hasta que se escriba un nuevo valor.

Los valores predeterminados se crean con el Diseñador de tablas o a través del lenguaje. Puede especificar valores predeterminados para todos los tipos de datos, excepto General.

Para asignar un valor predeterminado a un campo de una tabla de base de datos

  1. En el Diseñador de bases de datos, seleccione la tabla.
  2. En el menú Base de datos, elija Modificar.
  3. En el Diseñador de tablas, seleccione el campo al que desea asignar el valor predeterminado.
  4. En el cuadro Valor predeterminado, escriba el valor de campo que desea mostrar en todos los nuevos registros (escriba entre comillas los campos de caracteres).
  5. Elija Aceptar.

    –O bien–

  • Utilice la cláusula DEFAULT del comando CREATE TABLE.

Por ejemplo, puede estimar conveniente que su aplicación limite la mercancía que puede pedir un nuevo cliente hasta que haya tenido tiempo de realizar una comprobación de su crédito y determinar la cantidad que desea autorizarle. En el ejemplo siguiente se crea un campo maxordamt con un valor predeterminado de 1000:

CREATE TABLE customer (cust_id C(6), company C(40), contact C(30), ;
maxordamt Y(4) DEFAULT 1000)

Si la tabla customer ya incluye la columna maxordamt, podrá agregar un valor predeterminado para la columna con el comando siguiente:

ALTER TABLE customer ALTER COLUMN maxordamt SET DEFAULT 1000

Usar valores predeterminados para acelerar la entrada de datos

Puede utilizar valores predeterminados para acelerar la entrada de datos por parte de los usuarios de la aplicación, permitiéndoles así omitir un campo si no desean introducir en él un valor distinto. Por ejemplo, si en su negocio trata principalmente con clientes nacionales, puede hacer que el campo country/region de la tabla customer de una base de datos se rellene automáticamente con el nombre de su país o región. Al escribir el registro de un cliente extranjero, puede sobrescribir el nombre de su país con el del país o región del cliente.

Sugerencia Si alguna de las reglas de empresa de la aplicación requiere que un campo contenga siempre un valor, el uso de un valor predeterminado ayudará a asegurar que se cumpla una regla concreta a nivel de campo o a nivel de registro.

Si quita o elimina una tabla de una base de datos, todos los valores predeterminados de la tabla se eliminarán de la base de datos. Los procedimientos almacenados a los que haga referencia el valor predeterminado quitado o eliminado permanecerán incluso después de la eliminación.

Cuando no especifique un valor predeterminado, se añadirá un valor en blanco (tal y como se define para cada tipo de datos), salvo en el caso en que esté activado SET NULL. De esta forma se mantiene la compatibilidad con el código de FoxPro de versiones anteriores que pueda conservar.

Puede indicar .NULL. como valor predeterminado si desea que el campo utilice valores NULL. Esté activado o no SET NULL, si utiliza .NULL. como valor predeterminado, Visual FoxPro insertará .NULL. para todos los comandos excepto APPEND BLANK.

Valores predeterminados permitidos

Puede especificar valores predeterminados escalares (por ejemplo, “un número”), o expresiones que se evalúen como una cantidad escalar. También puede especificar cualquier expresión de FoxPro válida que devuelva un valor coherente con el tipo de datos del campo.

Visual FoxPro evalúa el tipo de datos de las expresiones cuando se cierra la estructura de la tabla. Si el tipo de datos no coincide con el tipo de campo asociado, Visual FoxPro generará un error. Si la expresión es una función definida por el usuario (FDU) o contiene una FDU, no se evaluará.

Al crear el valor predeterminado por medio del lenguaje, los comandos CREATE TABLE y ALTER TABLE generarán un error cuando los tipos de datos no coincidan. Si la expresión es una FDU o contiene una FDU, no se evaluará al ejecutar CREATE y no se generará ningún error.

Cuándo se aplican los valores predeterminados

Los valores predeterminados se evalúan (si es necesario) y se colocan en los campos correspondientes cuando se ejecutan los comandos APPEND, APPEND BLANK o INSERT.

Al asignar valores con los comandos APPEND FROM o INSERT - SQL, Visual FoxPro asignará valores predeterminados a todos los campos que no los tengan asignados explícitamente. Los comandos APPEND FROM e INSERT - SQL también respetan los valores predeterminados. Sin embargo, cuando se utiliza alguno de estos comandos, los valores predeterminados no sobrescriben a los valores existentes en los campos. Si los campos anexados o insertados contienen valores, los valores existentes se conservarán al anexar o insertar el registro, y no se utilizará el valor predeterminado.

Usar valores predeterminados para rellenar automáticamente campos NOT NULL

Los valores predeterminados son especialmente útiles para llenar automáticamente los campos que no permiten valores NULL. Al agregar un nuevo registro, los valores predeterminados se aplican en primer lugar y después se comprueba cada campo según su orden de definición para determinar si falta información. Así se asegura que los campos designados como NOT NULL puedan rellenarse con valores predeterminados antes de aplicar la restricción NOT NULL.

Especificar una máscara de entrada

Al especificar una máscara de entrada, define la puntuación, el espacio y otros atributos de formato de valores que se introducen en el campo. Los valores se almacenan así de una forma uniforme que puede reducir los errores de entrada de datos, haciendo que se procesen de forma más eficaz. Por ejemplo, agregar una máscara a un campo numérico que almacena números de teléfono ayuda al usuario a rellenar rápidamente el campo, ya que la máscara proporciona la puntuación y los espacios.

Para proporcionar una máscara de entrada

  • En el Diseñador de tablas, escriba la máscara en el cuadro Máscara de entrada en el área Mostrar.

    –O bien–

  • Use la función DBSETPROP( ) para establecer la propiedad InputMask.

    Por ejemplo, el código siguiente especifica una máscara de entrada para una fecha:

    DBSetProp("orders.postalcode","field","InputMask", "99999-9999")

Vea también

Elegir tipos de datos | Controlar la presentación de un campo | Trabajar con tablas | Exigir reglas de empresa | Diseñador de tablas | CREATE TABLE | Restringir el acceso a los campos


Controlar la presentación de un campo

Las propiedades adicionales para campos le permiten controlar cómo aparecen un campo y sus valores en formularios, ventana Examinar e informes. Puede especificar un formato de presentación, un título de campo predeterminado y una clase y una biblioteca de clases predeterminadas.

Definir un formato

Un formato proporciona una máscara de salida que determina la manera en que se presenta el valor de un campo en un formulario, una ventana Examinar o un informe. Por ejemplo:

Para proporcionar un formato

  • En el Diseñador de tablas, escriba la máscara en el cuadro Formato en el área Mostrar.

    –O bien–

  • Utilice la función DBSETPROP( ) para establecer la propiedad Format.

Por ejemplo, el código siguiente especifica un formato de presentación para un código postal:

DBSetProp("orders.postalcode","field","Format","@R 99999-9999")

Crear títulos para campos

Puede crear un título para cada campo de una tabla de base de datos. Visual FoxPro muestra el texto del título de un campo como encabezado de columna en una ventana Examinar y como nombre de encabezado predeterminado en una cuadrícula de formulario. Para especificar una expresión para el título del campo, incluya un signo igual (=) antes de la cadena de título. Las expresiones no pueden exceder 254 caracteres. Si la expresión excede 254 caracteres, el título predeterminado será el nombre del campo.

Para agregar un título a un campo de una tabla de base de datos

  • En el Diseñador de tablas, escriba el texto para el título en el cuadro Título de la sección Mostrar.

    –O bien–

  1. Seleccione la tabla en el Diseñador de bases de datos y elija Modificar.
  2. Seleccione el campo al que desee asignar un título.
  3. En el cuadro Título, escriba el título que desea mostrar en el campo.
  4. Elija Aceptar.

    –O bien–

  • Use la función DBSETPROP( ).

Por ejemplo, es posible que desee crear un título para el campo fax de la tabla supplier escribiendo "Supplier_Fax" como título del campo:

?DBSETPROP('supplier.fax', 'field', 'caption', 'Supplier_Fax')

Para obtener más información acerca del uso de DBSETPROP( ) para establecer propiedades de los campos de una tabla de base de datos, vea Desarrollar bases de datos.

Establecer una clase predeterminada

Para ahorrar tiempo más tarde al crear formularios puede establecer una clase predeterminada para un campo. Una vez establecida, cada vez que agrega un campo a un formulario, el control del formulario usa la clase que especifique como predeterminada. Por ejemplo, los campos de tipo Carácter aparecen automáticamente como controles de cuadro de texto cuando los agrega a un formulario. Si en lugar de esto desea que se cree automáticamente un control de tipo cuadro combinado cuando use el campo en un formulario, puede establecer esa clase como predeterminada para este campo. También puede usar bibliotecas de clases que haya creado.

Para establecer una clase predeterminada

  • En el Diseñador de tablas, elija una clase y una biblioteca en los cuadros Clase predeterminada y Biblioteca predeterminada.

Si cambia a menudo la biblioteca y la clase para sus campos, puede asignar los tipos de datos de los campos a una biblioteca y a una clase en el cuadro de diálogo Opciones. Para obtener más información acerca de la asignación de tipos de datos de campo a clases, consulte Personalizar el entorno de Visual FoxPro. Para obtener más información acerca de la creación de clases, consulte Programación orientada a objetos.

Vea también

Crear valores predeterminados de campo | Exigir reglas de empresa | Trabajar con tablas | Asignar nombres a los campos | Crear valores predeterminados de campo | Diseñador de tablas | DBSETPROP( ) | Restringir el acceso a los campos


Agregar campos

Para agregar un nuevo campo a una tabla puede utilizar el Diseñador de tablas o hacerlo a través del lenguaje.

Para agregar un campo a una tabla

  1. En el Diseñador de tablas, elija Insertar.
  2. En la columna Nombre, escriba el nombre del nuevo campo.
  3. En la columna Tipo, seleccione un tipo de datos para el campo.
  4. En la columna Ancho, establezca o escriba un ancho para el campo.
  5. Si el campo tiene el tipo Numérico o Flotante, establezca el número de posiciones decimales en la columna Decimal.
  6. Si desea que la tabla acepte valores NULL, seleccione la columna NULL.
  7. Elija Aceptar.
  8. Elija Sí para realizar cambios a la estructura de la tabla.

    –O bien–

  • Utilice la cláusula ADD COLUMN del comando ALTER TABLE.

Por ejemplo, el comando siguiente agrega un campo llamado fax a la tabla customer y permite que el nuevo campo tenga valores NULL:

ALTER TABLE customer ADD COLUMN fax c(20) NULL

Vea también

Modificar la estructura de la tabla | Eliminar campos | Trabajar con tablas | Cambiar el nombre de los campos | Establecer o modificar reglas de campo o de tabla


Modificar campos

Puede modificar la información de los campos de varias formas, dependiendo del tipo de campo.

Para cambiar la información actual en un campo de tipo Carácter, Numérico, Lógico, Fecha o DateTime

  • Sitúe el cursor en el campo y modifique la información.

    –O bien–

  • Seleccione todo el campo y empiece a escribir la nueva información.

Para modificar la información de un campo Memo

  • Hacer doble clic en el campo en la ventana Examinar.

    –O bien–

  • Presione CTRL+AV PÁG. Aparecerá una ventana de modificación con el contenido del campo memo.

Un campo de tipo General contiene un objeto OLE incrustado o vinculado.

Para modificar la información de un campo General

  • Haga doble clic en la ventana Examinar y modifique el documento directamente (como si fuera un documento de Microsoft Word o una hoja de cálculo de Microsoft Excel).

    –O bien–

  • Haga doble clic en el objeto para abrir la aplicación primaria (como si fuera un objeto de Microsoft Paint).

Vea también

Trabajar con tablas | General | Tipo de campo Memo | Cambiar el nombre de los campos | Eliminar campos | Agregar campos


Eliminar campos

Puede eliminar un campo existente de una tabla mediante el Diseñador de tablas o a través del lenguaje.

Para eliminar un campo de una tabla

  • En el Diseñador de tablas, seleccione el campo y elija Eliminar.

    –O bien–

  • Utilice la cláusula DROP COLUMN del comando ALTER TABLE.

Por ejemplo, el comando siguiente elimina el campo fax de la tabla customer:

ALTER TABLE customer DROP COLUMN fax

Al quitar un campo de una tabla también se quita su valor predeterminado, sus definiciones de reglas y su título. Si hay referencias al campo en expresiones de desencadenante o de clave de índice, estas expresiones dejarán de ser válidas cuando se quite el campo. Las expresiones no válidas de clave de índice o de desencadenante no generarán errores hasta el tiempo de ejecución.

Vea también

Agregar campos | Cambiar el nombre de los campos | Trabajar con tablas | Establecer o modificar reglas de campo o de tabla | Establecer o modificar los valores predeterminados | Modificar la estructura de la tabla


Cambiar el nombre de los campos

Hay dos formas de cambiar el nombre de los campos existentes en una tabla.

Para cambiar el nombre de un campo de una tabla

  • En el Diseñador de tablas, escriba un nuevo nombre para el campo existente en el cuadro Nombre.

    –O bien–

  • Utilice la cláusula RENAME COLUMN del comando ALTER TABLE.

Por ejemplo, para cambiar el nombre de la columna company de la tabla customer, puede ejecutar el comando siguiente:

ALTER TABLE customer RENAME COLUMN company TO company_long_new_name

En el ejemplo anterior, el nuevo nombre del campo aprovecha la posibilidad de crear nombres de campo largos en las tablas de bases de datos.

Vea también

Eliminar campos | Establecer o modificar reglas de campo o de tabla | Trabajar con tablas | Establecer o modificar los valores predeterminados | Modificar la estructura de la tabla


Establecer o modificar los valores predeterminados

Una vez generada una tabla, puede establecer o cambiar los valores predeterminados de sus campos.

Para cambiar un valor predeterminado existente

  • En el Diseñador de tablas, escriba el nuevo valor en el cuadro Valor predeterminado de la ficha Campos.

    –O bien–

  • Utilice el comando ALTER TABLE.

Para ver el valor predeterminado actual de un campo puede utilizar la función DBGETPROP( ); estos valores son de sólo lectura para las tablas y sólo se pueden cambiar mediante el comando ALTER TABLE.

Vea también

Establecer o modificar reglas de campo o de tabla | Cambiar el nombre de los campos | Trabajar con tablas | Eliminar campos | Modificar la estructura de la tabla


Configurar valores de campo autoincremental

Se puede activar el auto incremento para campos de tipo Entero en un contenedor de base de datos (CDB) o una tabla libre usando el Diseñador de Tablas o la instrucción AUTOINC en los comandos CREATE TABLE - SQL y ALTER TABLE - SQL. Para mayor información acerca del uso de la opción AUTOINC, vea: CREATE TABLE - SQL (Comando) y ALTER TABLE - SQL (Comando).

Para activar el auto incremento de un nuevo campo usando el Diseñador de Tablas

  1. Crear una tabla nueva o abrir una existente.
  2. En el Diseñador de Tablas, hacer clic en la ficha Campos.
  3. Crear un campo pora el que se quiere habilitar el AutoIncremento.
  4. En el selector de Tipo de la Lista desplegable para el Campo, seleccione Entero (AutoInc).
  5. En la caja el grupo Incremento automático, seleccione un valor inicial para Siguiente Valor y un valor de incremento pora Paso.
  6. Puede crear otros campos o presionar Aceptar para terminar.

Pata habilitar el auto incremento de un campo existente usando el Diseñador de Tablas.

  1. Abrir una Tabla existente.
  2. En el Diseñador de Tablas, hacer clic en la ficha Campos.
  3. Seleccione un campo al cual quiere habilitar el auto incremento.
  4. En el selector de Tipo de la lista desplegable para el Campo, seleccione Entero (AutoInc).
  5. En la caja de grupo Incremento automático, seleccione un valor inicial para Siguiente Valor y un valor de incremento para Paso.
  6. Seleccione otro campo para habilitarlo como auto incremento o presione Aceptar para Finalizar.

Vea también

Crear campos | Valores de Campos de Auto Incremento en Tablas | Ficha Campos, Diseñador de tablas | Agregar campos | Modificar campos

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Exigir reglas de empresa

Puede exigir reglas de empresa para la entrada de datos si crea reglas a nivel de campo y a nivel de registro, denominadas reglas de validación, para controlar los datos introducidos en los campos y registros de las tablas de base de datos. Las reglas a nivel de campo y a nivel de registro comparan los valores introducidos con expresiones definidas previamente. Si el valor introducido no satisface los requisitos de la regla, se rechazará el valor. Las reglas de validación sólo pueden darse para las tablas de base de datos.

Las reglas a nivel de campo y a nivel de registro permiten controlar el tipo de información introducido en una tabla, tanto si el acceso a los datos se realiza mediante una ventana Examinar, un formulario o mediante programación. Las reglas permiten exigir su cumplimiento en un campo con menos código que si se escribiera la expresión de la regla en una cláusula VALID de un formulario o en un fragmento de código del programa. Además, las reglas establecidas en una base de datos se exigirán a todos los usuarios de la tabla, independientemente de los requisitos de la aplicación.

También puede crear índices candidatos o principales que eviten entradas duplicadas en un campo, y desencadenadores que exijan la integridad referencial o que realicen otras acciones cuando se modifica la información de la base de datos.

Cuándo se exigen las restricciones

Las restricciones de la base de datos se eligen basándose en el nivel en el que se desea exigir una regla de empresa o de integridad referencial, y en la acción que hace que la restricción se active. En la tabla siguiente se enumeran las restricciones de validación de datos en el orden en que las exige el motor de Visual FoxPro, el nivel al que se aplican y cuándo activa el motor la validación.

Mecanismo de exigencia | Nivel | Activación
Validación NULL | Campo o columna | Al salir de un campo o columna en una ventana Examinar, o cuando el valor del campo cambia debido a INSERT o REPLACE.
Reglas a nivel de campo | Campo o columna | Al salir de un campo o columna en una ventana Examinar, o cuando el valor del campo cambia debido a INSERT o REPLACE.
Reglas a nivel de registro | Grabar | Al producirse la actualización del registro.
Índice candidato o principal | Grabar | Al producirse la actualización del registro.
Cláusula VALID | Formulario | Al salir del registro.
Desencadenadores | Tabla | Al cambiar los valores de la tabla a causa de un evento INSERT, UPDATE o DELETE.

Las restricciones se activan en el orden en que aparecen en la tabla. La primera infracción de una prueba de validación detiene el comando correspondiente.

Los índices candidatos y principales se tratan en la sección Controlar los valores duplicados.

Limitar los valores de un campo

Cuando desee controlar el tipo de información que un usuario puede introducir en un campo y sea posible validarlo independientemente de las restantes entradas del registro, puede utilizar una regla de validación a nivel de campo. Por ejemplo, utilice una regla de validación a nivel de campo para asegurarse de que el usuario no escriba un número negativo en un campo que sólo debe contener valores positivos. También puede utilizar una regla a nivel de campo para comparar los valores introducidos en un campo con los de otra tabla.

No debe crear reglas específicas de la aplicación a nivel de campo o a nivel de registro. Utilícelas para exigir reglas de integridad de datos y reglas de empresa que sean siempre aplicables a la información de la base de datos, independientemente de quién tenga acceso a la misma. Por ejemplo, puede crear una regla que compare el valor de la entrada del campo postal_code de una tabla con una tabla de búsqueda que contenga los códigos abreviados de su país o región, y que rechace los valores que no existan como abreviatura válida de código postal.

Para crear una regla a nivel de campo

  1. Abra una tabla en el Diseñador de tablas.
  2. En el Diseñador de tablas, seleccione el nombre del campo para el que desea establecer una regla.
  3. Elija el botón del cuadro de diálogo ubicado junto al cuadro Regla.
  4. En el Generador de expresiones, cree la expresión de validación y elija Aceptar.
  5. En el cuadro Mensaje, escriba el mensaje de error entre comillas.
  6. Elija Aceptar.

    –O bien–

  • En el Diseñador de tablas, escriba la expresión de la regla en el cuadro Regla del área Validación de campos.

    –O bien–

  • Utilice la cláusula CHECK del comando CREATE TABLE.

    –O bien–

  • Utilice la cláusula SET CHECK del comando ALTER TABLE.

Por ejemplo, el código siguiente agrega a la tabla orditems una regla de validación a nivel de campo que requiere que el número introducido en el campo quantity sea mayor o igual que 1:

ALTER TABLE orditems
ALTER COLUMN quantity SET CHECK quantity >= 1

Cuando el usuario intente introducir un valor menor que 1, Visual FoxPro mostrará un mensaje de error y rechazará el valor.

Puede personalizar el mensaje que aparece cuando se infringe la regla si agrega texto de validación al campo. El texto especificado se mostrará en lugar del mensaje de error predeterminado.

Para agregar un mensaje de error personalizado a una regla a nivel de campo

  • En el Diseñador de tablas, escriba el mensaje de error que desee en el cuadro Mensaje del área Validación de campos.

    –O bien–

  • Utilice la cláusula opcional ERROR con la cláusula CHECK de los comandos CREATE TABLE o ALTER TABLE.

Por ejemplo, el código siguiente agrega una regla de validación a nivel de campo para la tabla orditems que requiere que los números introducidos en la columna quantity sean mayores o iguales que 1 y además define un mensaje de error personalizado:

ALTER TABLE orditems ;
ALTER COLUMN quantity SET CHECK quantity >= 1 ;
ERROR "Quantities must be greater than or equal to 1"

Cuando el usuario intente escribir un valor menor que 1, Visual FoxPro mostrará un cuadro de diálogo de error con el mensaje de error personalizado que usted ha definido y rechazará el valor. También puede utilizar la cláusula SET CHECK del comando ALTER TABLE con la cláusula opcional ERROR para crear un mensaje de error personalizado.

Vea también

Controlar la presentación de un campo | Saber cuándo se comprueban las reglas de nivel de campo | Trabajar con tablas | Crear valores predeterminados de campo | Comprobar reglas de nivel de registro


Saber cuándo se comprueban las reglas de nivel de campo

Las reglas a nivel de campo se comprueban cuando se modifica el valor del campo. Al contrario que los desencadenadores, las reglas a nivel de campo se activan incluso cuando los datos se encuentran en búfer. Al trabajar con los datos en una ventana Examinar, en un formulario o en otra ventana, Visual FoxPro comprueba las reglas de nivel de campo al salir del campo correspondiente. Si el valor del campo no ha cambiado, la regla no se comprobará. Esto significa que puede desplazarse por los campos sin que el sistema valide su contenido.

Comprobación de las reglas a nivel de campo

Método de entrada de datos | Ventana o comando | Comprobación de la regla a nivel de campo
Interfaz de usuario | Ventana Examinar Formulario Otra ventana | Al salir del campo, si el valor ha variado. (Si el valor no cambia, la regla no se comprueba).
Comandos que no especifican campos | APPEND APPEND GENERAL APPEND MEMO BROWSE CHANGE DELETE EDIT GATHER | Al cambiar el valor del campo, en el orden de definición de los campos.
 | APPEND BLANK INSERT INSERT - SQL | Al anexar o insertar el registro.
Comandos que especifican campos | UPDATE UPDATE - SQL REPLACE | En el orden en que aparecen los campos en el comando.

Validar valores a nivel de registro

Las reglas de validación a nivel de registro permiten controlar el tipo de información que el usuario puede introducir en los registros. Normalmente, las reglas de validación a nivel de registro comparan los valores de dos o más campos del mismo registro para asegurarse de que cumplen las reglas de empresa establecidas para la base de datos. Por ejemplo, puede utilizar una regla de validación a nivel de registro para asegurarse de que el valor de un campo sea siempre superior al de otro campo del mismo registro.

Para crear una regla de validación a nivel de registro y un mensaje de error personalizado

  • En la ficha Tabla del Diseñador de tablas, escriba la regla y el mensaje de error que desee en los cuadros Regla y Mensaje.

    –O bien–

  • Utilice la cláusula CHECK de los comandos CREATE TABLE o ALTER TABLE.

Por ejemplo, puede querer asegurarse de que los empleados tengan 18 o más años en el momento de su contratación. En el código siguiente se agrega a la tabla employee una regla de validación a nivel de registro y un texto de error para requerir que la fecha de contratación introducida en hire_date sea mayor o igual que la fecha de nacimiento más 18 años:

ALTER TABLE employee SET CHECK ;
hire_date >= birth_date + (18 * 365.25) ;
ERROR "Employees must be 18 years or older by date of hire"

Si el usuario introduce un registro de empleado con una fecha no válida, Visual FoxPro mostrará un cuadro de diálogo de error con el mensaje de error personalizado definido y no actualizará el registro.

También puede utilizar la cláusula SET CHECK del comando ALTER TABLE para crear una regla de validación a nivel de registro. Debe asegurarse de que las reglas especificadas para los campos no entren en conflicto semántico con las definidas para la tabla. Visual FoxPro no comprueba la coherencia entre las expresiones a nivel de campo y a nivel de registro.

Vea también

Exigir reglas de empresa | Comprobar reglas de nivel de registro | Trabajar con tablas | Uso de desencadenadores | Crear desencadenadores | Restringir el acceso a los campos


Establecer o modificar reglas de campo o de tabla

Puede establecer nuevas expresiones y texto de reglas a nivel de campo o de tabla, así como modificar las reglas y el texto especificados con los comandos CREATE TABLE o ALTER TABLE.

Para cambiar una regla existente

  • En el Diseñador de tablas, seleccione la ficha Tabla y escriba la nueva expresión de regla o texto de regla en los cuadros Regla y Mensaje de la sección Validación de registros.

    –O bien–

  • Utilice el comando ALTER TABLE.

Para ver la expresión y el texto asociado de la regla actual, puede utilizar la función DBGETPROP( ); estos valores son de sólo lectura para las tablas y sólo se pueden modificar con el comando ALTER TABLE.

Vea también

Cambiar el nombre de los campos | Establecer o modificar los valores predeterminados | Trabajar con tablas | Eliminar campos | Modificar la estructura de la tabla


Comprobar reglas de nivel de registro

Las reglas a nivel de registro, al igual que las reglas a nivel de campo, se activan cuando el valor del registro cambia. Independientemente de cómo trabaje con los datos, ya sea en una ventana Examinar, en un formulario, en otra ventana de interfaz de usuario o con comandos que modifiquen los datos, Visual FoxPro comprueba las reglas a nivel de registro cuando desplaza el puntero de registro fuera del registro. Si no ha cambiado ningún valor del registro, la regla a nivel de registro no se comprobará al desplazar el puntero de registro. Puede desplazarse por los registros libremente sin que el sistema valide los datos.

Si modifica un registro, pero no desplaza el puntero de registro y luego cierra la ventana Examinar, la regla se comprobará de todas formas. Aparecerá un aviso si se producen errores y luego se cerrará la ventana Examinar.

Precaución No incluya en las reglas de validación comandos o funciones que intenten desplazar el puntero de registro del área de trabajo actual (es decir, del área de trabajo cuyas reglas se están comprobando). El uso de comandos o funciones tales como SEEK, LOCATE, SKIP, APPEND, APPEND BLANK, INSERT o AVERAGE, COUNT, BROWSE y REPLACE FOR en las reglas de validación puede causar su desencadenamiento recursivo, produciendo una condición de error.

Al contrario que los desencadenadores, las reglas a nivel de registro se activan incluso cuando los datos se encuentran en búfer. Para el caso de que durante la ejecución de una aplicación se active una regla a nivel de registro, es necesario incluir código de control de errores. Normalmente, este código no permitirá que la aplicación abandone el formulario (o que cambie el entorno activo, hablando de forma más genérica), hasta que el usuario corrija el error detectado o cancele la actualización.

Quitar de una base de datos una tabla con reglas asociadas

Si quita o elimina una tabla de una base de datos, se eliminarán de la base de datos todas las reglas a nivel de campo y a nivel de registro vinculadas a la tabla. Esto se debe a que las reglas se almacenan en el archivo .dbc, y al quitar una tabla de la base de datos se rompe el vínculo entre el archivo .dbf y su archivo .dbc. Sin embargo, los procedimientos almacenados a los que haga referencia la regla quitada o eliminada no se eliminarán. No se eliminan automáticamente, ya que aún pueden utilizarlos otras reglas de otras tablas que permanezcan en la base de datos.

Vea también

Saber cuándo se comprueban las reglas de nivel de campo | Uso de desencadenadores | Trabajar con tablas | Exigir reglas de empresa | Crear desencadenadores | Controlar la presentación de un campo


Uso de desencadenadores

Un desencadenante es una expresión dependiente de una tabla que se invoca cuando se modifica alguno de los registros de la tabla con alguno de los comandos de modificación de datos especificados. Los desencadenadores pueden utilizarse para realizar cualquier operación con efectos secundarios que requiera una aplicación de base de datos cuando se modifiquen los datos. Por ejemplo, puede utilizar desencadenadores para:

  • Registrar las modificaciones de la base de datos.
  • Exigir integridad referencial.
  • Crear un pedido automáticamente para un producto cuyas existencias están a punto de agotarse.

Los desencadenadores se crean y almacenan como propiedades de una tabla específica. Si quita una tabla de una base de datos, los desencadenadores asociados a la misma se eliminarán. Los desencadenadores se activan después de realizar todas las demás comprobaciones, como las reglas de validación, la exigencia de clave principal y la de valor NULL. Al contrario de lo que ocurre con las reglas de validación a nivel de campo y a nivel de registro, los desencadenadores no se activan para los datos almacenados en búfer.

Vea también

Comprobar reglas de nivel de registro | Crear desencadenadores | Trabajar con tablas | Quitar o eliminar desencadenadores | Modificar desencadenadores


Crear desencadenadores

Para crear desencadenadores puede utilizar el Diseñador de tablas o el comando CREATE TRIGGER. Puede crear un desencadenante para cada tabla y para cada uno de los tres eventos INSERT, UPDATE y DELETE. En un momento dado, una tabla puede tener un máximo de tres desencadenadores. Los desencadenadores deben devolver un valor verdadero (.T.) o falso (.F.).

Para crear un desencadenante

  • En la ficha Tabla del Diseñador de tablas, escriba la expresión del desencadenante o el nombre del procedimiento almacenado que la contiene en los cuadros Insertar desencadenante, Actualizar desencadenante, o Eliminar desencadenante.

    –O bien–

  • Utilice el comando CREATE TRIGGER.

Por ejemplo, es posible que cada vez que Comercial Tasmania venda un producto, desee comparar las unidades restantes Units_in_stock con el nivel del nuevo pedido Reorder_level y recibir una notificación de si es necesario volver a pedir ese producto. Para esto, puede crear un desencadenante Update para la tabla products. Cada vez que se venda un producto, el desencadenante Update se activará y el campo Units_in_stock se actualizará para reflejar los productos restantes.

Para crear el desencadenante, puede especificar updProductsTrigger( ) como desencadenante Update de la tabla products. Puede agregar un campo a products, llamado reorder_amount, para almacenar la cantidad que desea pedir cada vez que realice un nuevo pedido del producto, y crear una tabla reorder con los campos product_id y reorder_amount. A continuación puede agregar este código al procedimiento almacenado:

PROCEDURE updProductsTrigger
IF (units_in_stock+units_on_order) <= reorder_level
INSERT INTO Reorder VALUES(Products.product_id, ;
Products.reorder_amount)
ENDIF
ENDPROC

Puede crear desencadenadores similares para los eventos de inserción o eliminación mediante las cláusulas FOR INSERT o FOR DELETE, respectivamente, en lugar de la cláusula FOR UPDATE. Si intenta crear un desencadenante que ya existe para un evento y una tabla determinados y está activado SET SAFETY, Visual FoxPro le preguntará si desea sobrescribir el desencadenante existente.

Vea también

Uso de desencadenadores | Quitar o eliminar desencadenadores | Trabajar con tablas | Modificar desencadenadores | Modificar la estructura de la tabla


Quitar o eliminar desencadenadores

Puede quitar un desencadenante de una tabla de base de datos mediante la interfaz o el comando DELETE TRIGGER.

Para eliminar un desencadenante

  • En la ficha Tabla del Diseñador de tablas, seleccione la expresión de desencadenante en el cuadro Insertar desencadenante, Actualizar desencadenante o Eliminar desencadenante y elimínela.

    –O bien–

  • Utilice el comando DELETE TRIGGER.

En el ejemplo siguiente se elimina el desencadenante de actualización de la tabla customer:

DELETE TRIGGER ON customer FOR UPDATE

Si quita o elimina una tabla de una base de datos, todos los desencadenadores dependientes de ella se eliminarán de la base de datos. Sin embargo, los procedimientos almacenados a los que haga referencia el desencadenante quitado o eliminado no se eliminarán.

Vea también

Crear desencadenadores | Modificar desencadenadores | Trabajar con tablas | Uso de desencadenadores | Modificar la estructura de la tabla | Agregar campos


Modificar desencadenadores

Puede modificar los desencadenadores mediante el Diseñador de tablas o a través del lenguaje.

Para modificar un desencadenante

  • En la ficha Tabla del Diseñador de tablas, introduzca la nueva expresión del desencadenante en el cuadro Insertar desencadenante, Actualizar desencadenante o Eliminar desencadenante.

    –O bien–

  • Ejecute el comando SET SAFETY OFF y, a continuación, el comando CREATE TRIGGER.

Si modifica un desencadenante ejecutando primero el comando SET SAFETY OFF y volviendo a crear después el desencadenante, la expresión anterior se eliminará y se sustituirá automáticamente con la expresión de desencadenante recién creada.

Usar desencadenadores para generar integridad referencial

Visual FoxPro proporciona un Generador de integridad referencial para generar desencadenantes y procedimientos almacenados que exijan la integridad referencial de la base de datos. Para obtener más información acerca de la utilización del Generador de integridad referencial, vea Desarrollar bases de datos.

Vea también

Quitar o eliminar desencadenadores | Modificar la estructura de la tabla | Trabajar con tablas | Crear desencadenadores | Uso de desencadenadores


Modificar la estructura de la tabla

Una vez creada una tabla, siempre puede modificar su estructura y sus propiedades. Puede ser conveniente agregar, modificar o eliminar los nombres, anchos y tipos de datos de los campos, así como sus valores predeterminados o sus reglas, y también agregar observaciones o títulos.

Para modificar la estructura de una tabla puede abrir el Diseñador de tablas o bien puede realizar los cambios mediante programación con el comando ALTER TABLE. Asegúrese de que tiene acceso exclusivo a la tabla antes de modificar su estructura.

Para modificar la estructura de una tabla con el Diseñador de tablas

  • En el Administrador de proyectos, seleccione el nombre de la tabla y, a continuación, elija Modificar. La estructura de la tabla se mostrará en el Diseñador de tablas.

    –O bien–

  • En el Diseñador de bases de datos, seleccione la tabla en el esquema y elija Modificar en el menú Base de datos.

    –O bien–

  • Utilice el comando MODIFY STRUCTURE.

Por ejemplo, puede modificar la estructura de la tabla de base de datos employee con los comandos siguientes:

OPEN DATABASE testdata
USE employee EXCLUSIVE
MODIFY STRUCTURE

Todas las opciones anteriores abren el Diseñador de tablas.

Para modificar la estructura de una tabla por medio de programación

  • Utilice el comando ALTER TABLE.

El comando ALTER TABLE ofrece diversas cláusulas que permiten agregar o eliminar campos, crear o eliminar claves principales o únicas, o etiquetas de claves externas, así como cambiar el nombre de los campos existentes. Algunas cláusulas sólo son aplicables a las tablas asociadas a una base de datos. En esta sección se incluyen algunos ejemplos específicos.

Vea también

Modificar desencadenadores | Agregar campos | Trabajar con tablas | Eliminar campos | Cambiar el nombre de los campos | Establecer o modificar reglas de campo o de tabla


Trabajar con múltiples tablas

Para usar varias tablas, es necesario utilizar sesiones de datos para controlar las tablas disponibles en los formularios, y áreas de trabajo para establecer las tablas abiertas. Un área de trabajo es una región numerada que identifica una tabla abierta. Puede abrir y manipular tablas de Visual FoxPro en 32.767 áreas de trabajo. Las áreas de trabajo se suelen identificar en las aplicaciones por el alias de la tabla abierta en ellas. Un alias de tabla es un nombre que se refiere a una tabla abierta en un área de trabajo.

Usar sesiones de datos

Además de las áreas de trabajo visibles en la ventana Sesión de datos, Visual FoxPro proporciona automáticamente un entorno independiente para cada instancia de un formulario o conjunto de formularios a través de las sesiones de datos. Una sesión de datos es una representación del entorno de trabajo dinámico actual utilizado por un formulario, un conjunto de formularios o un informe. Cada sesión de datos contiene su propio conjunto de áreas de trabajo. Estas áreas de trabajo contienen las tablas abiertas en las áreas de trabajo, sus índices y sus relaciones. Para obtener más información acerca del uso de sesiones de datos, consulte Programar para acceso compartido.

Ver las áreas de trabajo

Para ver la lista de tablas abiertas en una sesión de Visual FoxPro, puede abrir la ventana Sesión de datos.

Para abrir la ventana Sesión de datos

  • En el menú Ventana, elija Sesión de datos.

    –O bien–

  • Utilice el comando SET.

Si escribe SET en la ventana Comandos, Visual FoxPro abre la ventana Sesión de datos y muestra los alias de las áreas de trabajo de las tablas abiertas en la sesión de datos actual.

Abrir una tabla en un área de trabajo

Para abrir una tabla en un área de trabajo puede utilizar la ventana Sesión de datos o el comando USE.

Para abrir una tabla en un área de trabajo

  • En la ventana Sesión de datos elija Abrir.

    –O bien–

  • Escriba USE en la ventana Comandos.

Para abrir una tabla en la menor área de trabajo disponible, utilice la cláusula IN del comando USE con el área de trabajo 0. Por ejemplo, si hay tablas abiertas en las áreas de trabajo 1 a 10, el comando siguiente abrirá la tabla customer en el área de trabajo 11.

USE customer IN 0

También puede elegir Abrir en el menú Archivo para abrir una tabla en un área de trabajo.

Cerrar una tabla en un área de trabajo

Para cerrar una tabla en un área de trabajo puede utilizar la ventana Sesión de datos o bien hacerlo mediante el lenguaje.

Para cerrar una tabla en un área de trabajo

  • En la ventana Sesión de datos, seleccione el alias de la tabla y luego elija Cerrar.

    –O bien–

  • Escriba USE sin indicar un nombre de tabla.

    –O bien–

  • Utilice la cláusula IN del comando USE para referirse al área de trabajo de la tabla que desee cerrar.

Cuando ejecute el comando USE sin ningún nombre de tabla y haya un archivo de tabla abierto en el área de trabajo seleccionada actualmente, la tabla se cerrará. Por ejemplo, el código siguiente abre la tabla customer, muestra una ventana Examinar y luego cierra la tabla:

USE customer
BROWSE
USE

También se cierra la tabla automáticamente cuando se abre otra en la misma área de trabajo, o cuando se especifica el comando USE con la cláusula IN y se hace referencia al área de trabajo actual. El código siguiente abre, muestra y cierra la tabla customer utilizando USE IN y el alias de tabla customer:

USE customer
BROWSE
USE IN customer

No puede tener abierta más de una tabla a la vez en la misma área de trabajo.

Hacer referencia a un área de trabajo

Antes de abrir una tabla, puede hacer referencia a la siguiente área de trabajo disponible con el número de área de trabajo, como se indica a continuación:

SELECT 0

Vea también

Mejorar la eficacia de los índices | Trabajar con alias de tablas | Trabajar con registros | Establecer relaciones temporales entre tablas | Establecer relaciones persistentes entre índices | Ordenar por múltiples campos


Trabajar con alias de tablas

Un alias de tabla es el nombre que utiliza Visual FoxPro para referirse a una tabla abierta en un área de trabajo. Visual FoxPro utiliza automáticamente el nombre de archivo como alias predeterminado al abrir una tabla. Por ejemplo, si abre con los comandos siguientes el archivo Customer.dbf en el área de trabajo 0, se asignará automáticamente a la tabla el alias predeterminado customer:

SELECT 0
USE customer

A continuación puede utilizar el alias customer para identificar la tabla en un comando o función. También puede especificar otro alias.

Crear un alias definido por el usuario

Puede asignar el alias que desee a una tabla en el momento de abrirla.

Para abrir una tabla con un alias definido por el usuario

  • Escriba USE con un nombre de alias de tabla.

Por ejemplo, para abrir el archivo Customer.dbf en el área de trabajo 0 y asignarle el alias people, utilice los comandos siguientes:

SELECT 0
USE customer ALIAS people

A continuación podrá utilizar el alias people para referirse a la tabla abierta. Un alias puede tener hasta 254 letras, dígitos o signos de subrayado, y debe comenzar por una letra o un signo de subrayado. Visual FoxPro crea automáticamente un alias alternativo cuando el especificado contiene algún carácter no admitido.

Usar un alias asignado por Visual FoxPro

Visual FoxPro asigna un alias automáticamente a las tablas en determinadas situaciones:

  • Al abrir una misma tabla simultáneamente en varias áreas de trabajo incluyendo la cláusula AGAIN en el comando USE y sin especificar alias distintos al abrir la tabla en cada área.
  • Cuando se produce un conflicto con los alias.

Los alias predeterminados asignados a las primeras 10 áreas de trabajo son las letras de área de trabajo de “A” a “J”; los asignados a las áreas de 11 a 32767 van de W11 a W32767. Puede utilizar estos alias asignados por Visual FoxPro exactamente de la misma forma que cualquier otro alias predeterminado o definido por el usuario para referirse a una tabla abierta en un área de trabajo.

Seleccionar un área de trabajo con un alias

Para pasar de un área de trabajo a otra puede utilizar el comando SELECT. Por ejemplo, si se ha abierto Customer.dbf en un área de trabajo y tiene asignado su alias predeterminado CUSTOMER, puede pasar a esta área de trabajo con el comando SELECT siguiente:

SELECT customer

Hacer referencia a tablas abiertas en otras áreas de trabajo

También puede hacer referencia a campos de otras áreas de trabajo si precede el nombre del campo con el nombre de alias correspondiente y un punto, o el operador –>. Por ejemplo, si se encuentra en un área de trabajo y desea tener acceso al campo contact de la tabla Customer, abierta en un área distinta, puede utilizar la siguiente expresión para hacer referencia al campo:

customer.contact

Si la tabla a la que desea hacer referencia se ha abierto con un alias, puede utilizar el nombre del alias. Por ejemplo, si la tabla Customer se ha abierto con el alias people, puede referirse al campo lastname con la expresión siguiente:

people.lastname

El uso del nombre o el alias de una tabla la identifica específicamente, independientemente del área de trabajo en la que esté abierta.

Vea también

Trabajar con múltiples tablas | Establecer relaciones temporales entre tablas | Trabajar con registros | Establecer relaciones persistentes entre índices | USE (Comando)


Establecer relaciones temporales entre tablas

Al establecer una relación temporal entre tablas, se provoca que el puntero de registro de una tabla (la tabla secundaria) siga automáticamente los movimientos del puntero de registro de la otra tabla (la tabla primaria). Esto le permite seleccionar un registro en el lado “uno”, o primario, de una relación y tener acceso automáticamente a los registros relacionados del lado “varios”, o secundario.

Por ejemplo, puede relacionar las tablas customer y orders de forma que al colocar el puntero de registro en un cliente determinado de la tabla customer, el puntero de registro de la tabla orders se desplace hasta el registro con el mismo número de cliente.

Puede utilizar las áreas de trabajo y los alias de las tablas al establecer relaciones entre dos tablas abiertas con el comando SET RELATION. Si utiliza un formulario para trabajar con las tablas, puede almacenar estas relaciones como parte del entorno de datos del formulario.

Tablas relacionadas temporalmente

Puede utilizar la ventana Sesión de datos o el lenguaje para crear relaciones temporales entre las tablas.

Para relacionar tablas temporalmente

  • En la ventana Sesión de datos, seleccione las tablas y utilice el botón Relaciones para crear las relaciones.

    –O bien–

  • Utilice el comando SET RELATION.

Con el comando SET RELATION puede establecer una relación entre una tabla abierta en el área de trabajo seleccionada actualmente y otra tabla abierta en otra área. Normalmente se relacionan tablas que tienen un campo común y la expresión utilizada para establecer la relación es habitualmente la expresión del índice que controla la tabla secundaria.

Por ejemplo, puede que un cliente tenga varios pedidos asociados a su registro de cliente. Si crea una relación entre el campo común a ambas tablas, podrá ver fácilmente todos los pedidos de un cliente determinado. En el programa siguiente se utiliza un campo común a las dos tablas, cust_id, para crear una relación entre ambas, basada en el campo cust_id de la tabla customer y la etiqueta de índice cust_id de la tabla orders.

Uso de SET RELATION para establecer una relación entre dos tablas

Código Comentarios
USE customer IN 1
 Abre la tabla customer (tabla primaria) en el área de trabajo 1
USE orders IN 2
 Abre la tabla orders (tabla secundaria) en el área de trabajo 2
SELECT orders
 Selecciona el área de trabajo secundaria.
SET ORDER TO TAG cust_id
 Especifica el orden de la tabla secundaria mediante la etiqueta de índice cust_id.
SELECT customer
 Selecciona el área de trabajo primaria.
SET RELATION TO cust_id
INTO orders
 Crea la relación entre la tabla primaria y el índice que controla la tabla secundaria.
SELECT orders
BROWSE NOWAIT
SELECT customer
BROWSE NOWAIT
 Abre dos ventanas Examinar. Observe que al mover el puntero de registro en la tabla primaria, los datos de la tabla secundaria cambian.

La ventana Sesión de datos muestra las dos tablas abiertas, Orders y Customer, y la relación establecida con el comando SET RELATION.

La ventana Sesión de datos muestra los alias y las relaciones temporales de las tablas abiertas

El índice creado para la tabla secundaria, orders, ordena los registros de la tabla orders por grupos, según el cliente que ha realizado el pedido. Al establecer una relación entre la tabla primaria y el índice de la tabla secundaria, Visual FoxPro selecciona solamente los registros de la tabla secundaria cuya clave de índice coincide con la del registro primario seleccionado.

En el ejemplo anterior se ha establecido una relación simple entre dos tablas. También puede utilizar el comando SET RELATION para establecer relaciones múltiples entre una tabla primaria y varias tablas secundarias.

Guardar relaciones entre tablas en un entorno de datos

Si va a crear un formulario que utiliza más de una tabla, puede utilizar el entorno de datos para crear relaciones entre tablas y almacenarlas en el formulario. Las relaciones establecidas en el entorno de datos se abren automáticamente al ejecutar el formulario. Para obtener más información acerca de la creación de un entorno de datos, consulte Crear formularios

Relacionar registros de una sola tabla

También puede crear una relación entre registros de una sola tabla. Esta relación, denominada con referencia a sí misma, puede ser útil en aquellas situaciones en las que se tiene toda la información necesaria almacenada en una sola tabla. Por ejemplo, puede ser conveniente desplazarse por los supervisores de la tabla Employees haciendo que los empleados a cargo de cada supervisor cambien automáticamente al mover el puntero de registro de un supervisor a otro.

Para relacionar temporalmente registros de una sola tabla

  • En la ventana Sesión de datos, seleccione las tablas y utilice el botón Relaciones para crear las relaciones.

    –O bien–

  • Utilice el comando SET RELATION.

Para crear una relación con referencia a sí misma, debe abrir la misma tabla dos veces, la primera de ellas en un área de trabajo, y la segunda con el comando USE AGAIN en otra área distinta. A continuación utilizará un índice para relacionar los registros. Por ejemplo, el código siguiente establece y examina una relación con referencia a sí misma creando una etiqueta de índice llamada mgr_id que ordena la tabla Employee por el campo reports_to:

SELECT 0
USE employee ALIAS managers
SELECT 0
USE employee AGAIN ALIAS employees
INDEX ON reports_to TAG mgr_id
SET ORDER TO mgr_id
SELECT managers
SET RELATION TO emp_id INTO employees
BROWSE
SELECT employees
BROWSE

Al desplazar el puntero de registro de la ventana Examinar managers, la ventana Examinar employees se actualiza y sólo muestra los empleados que dependen del supervisor seleccionado.

Vea también

Trabajar con alias de tablas | Establecer relaciones persistentes entre índices | Trabajar con registros | Sesión de datos | SET RELATION (Comando) | Trabajar con múltiples tablas


Manejo de Datos usando CursorAdapters

En Visual FoxPro, puede usar CursorAdpater para acceder a datos locales o remotos que sean de los siguientes tipos:

  • Nativos
  • Conectividad Abierta de Base de Datos (ODBC)
  • Objetos de Datos ActiveX (ADO)
  • Extensible Markup Language (XML)

La clase CursorAdapter amplia las capacidades de Visual Foxpro, para trabajar con diferentes tipos de orígenes de datos usándolos como cursores nativos. El objeto CursorAdapter proporciona las siguientes posibilidades:

  • Usar diferentes tipos de orígenes de datos dinámicamente.
  • Indistintamente usar los datos del objeto CursorAdapter o el entorno de datos.
  • Compartir datos dentro de los límites de la tecnología del origen de datos.
  • Opcionalmente definir la estructura del cursor asociado con el objeto CursorAdapter.
  • Controlar la carga de los datos desde el origen a un cursor de Visual Foxpro asociado al objeto CursorAdapter.
  • Cargar datos a cursores de Visual Foxpro desde diferentes orígenes, basados en el tipo de datos origen.
  • Controlar como los datos son agregados, actualizados y borrados con los métodos y propiedades del CursorAdapter.
  • Agregar objetos CursorAdapter a diferentes contenedores con entorno de datos, tales como formularios, conjuntos de formularios y otros.
  • Usar la clase CursorAdapter independiente de un entorno de datos asociado.

El objeto CursorAdapter es un nexo entre el origen de datos y la capa de conversión, que carga los datos desde el origen de datos a un cursor de Visual FoxPro.

Nota Visual FoxPro no puede usar relaciones entre objetos CursorAdapter, aunque si puede usar relaciones entre cursores asociados a CursorAdapters.

Para más información sobre CursorAdapter, Entorno de Datos y clases Cursor, vea Clase CursorAdapter, Objeto DataEnvironment y Objeto Cursor.

Interacción con las funciones TABLEUPDATE( ) y TABLEREVERT( )

La función TABLEUPDATE( ) reconoce y puede trabajar con los objetos CursorAdapter. TABLEUPDATE( ) delega su funcionamiento al objeto CursorAdapter asociado con el cursor. TABLEREVERT( ) opera con los objetos CursorAdapter en la misma forma que lo hace con otros cursores que tengan activado el almacenamiento en búfer.

Para más información sobre la forma en que los objetos CursorAdapter afectan el funcionamiento de las funciones TABLEUPDATE( ) y TABLEREVERT( ) vea Función TABLEUPDATE( ) y Función TABLEREVERT( ).

Actualización automática y CursorAdapters

Con vistas locales y remotas Visual FoxPro automáticamente genera la instrucción SQL para los comandos INSERT, UPDATE y DELETE. Con los objetos CursorAdapter, usted puede controlar y modificar la forma en que Visual Foxpro genera las instrucciones SQL para los comandos INSERT, UPDATE, y DELETE.

Si las propiedades InsertCmd, UpdateCmd y DeleteCmd del CursorAdapter están vacías, Visual FoxPro genera automáticamente los correspondientes comandos SQL. Complementariamente, deberá determinar, si la generación automática de estos comandos es apropiada para el origen de datos que esta usando. Para generar automáticamente las instrucciones SQL de los comandos INSERT, UPDATE y DELETE, debe determinar las siguientes propiedades del CursorAdapter:

  • Tables
  • KeyFieldList
  • UpdatableFieldList
  • UpdateNameList

Las siguientes reglas generales se aplican para las propiedades Tables y UpdateNameList:

  • Tables

    Para permitir actualizaciones automáticas, debe especificar una lista de nombres de tablas en el orden exacto que desea que aparezcan en la instrucción SQL de los comandos INSERT, UPDATE y DELETE.

  • UpdateNameList

    Debe especificar una lista separada por comas, consistente en parejas, con el nombre del campo local seguido del nombre completo del campo remoto. El nombre completo del campo remoto debe aparecer como <nombre de tabla remota>, <nombre de campo remoto>, donde <nombre de tabla remota> es igual al nombre de la tabla en la propiedad Tables.

También, debe definir los campos principales del cursor si especifica como Verdadero (.T.) las siguientes propiedades del CursorAdapter:

  • AllowInsert
  • AllowUpdate
  • AllowDelete

Para más información sobre los comandos SQL usados para la actualización automática, vea Comando INSERT - SQL, Comando UPDATE - SQL y Comando DELETE - SQL.

Actualización por lotes

Los objetos CursorAdapter usan actualización por lotes si el valor de la propiedad BatchUpdateCount es mayor que 1 y una de las siguientes condiciones es verdadera:

  • El objeto CursorAdapter esta definido para usar el mismo controlador de conexión ODBC para todas las operaciones permitidas, tales como, INSERT, UDPATE y DELETE, definido por las propiedades AllowInsert, AllowUpdate y AllowDelete.
  • El objeto CursorAdapter esta definido para usar el mismo comando ADODB para todas las operaciones permitidas.
  • El objeto CursorAdapter usa "XML" como el origen de datos para todas las operaciones permitidas.

Si se utiliza actualización por lotes, los siguientes eventos no ocurren:

  • BeforeInsert
  • AfterInsert
  • BeforeUpdate
  • AfterUpdate
  • BeforeDelete
  • AfterDelete

Si dentro del lote falla una actualización, Visual FoxPro intentará enviar actualizaciones separadas por cada fila dentro del lote, en cualquier caso, la lista de eventos detenidos no ocurrirán.

Para más información, vea Propiedad BatchUpdateCount.

Actualización automática y Objetos de Datos ActiveX (ADO)

Cuando se trabaja con ADO, puede enviar actualizaciones usando dos métodos diferentes:

  • Usar el objeto CursorAdapter para enviar actualizaciones con el objeto RecordSet de ADO usado por el método CursorFill.

    Cuando se ejecutan actualizaciones automáticas usando un RecordSet de ADO, se aplican las siguientes reglas al establecer las siguientes propiedades: InsertCmdDataSource, UpdateCmdDataSource y DeleteCmdDataSource

    • El RecordSet de ADO debe ser de lectura y escritura y tener marcadores disponibles. Los Marcadores están siempre disponibles cuando se usa un Recordset del lado del cliente. Los Marcadores pueden estar disponibles cuando se usa un Keyset o un cursor estático del lado del servidor, pero solo si es soportado por el proveedor OLE DB.
    • Las actualizaciones son realizados campo por campo. Por cada registro actualizado, el objeto CursorAdapter busca el registro original, cambia los valores para los campos actualizables y ejecuta el método Update del RecordSet ADO. El objeto CursorAdapter no ejecuta el método UpdateBatch del RecordSet ADO, por lo que su aplicación debe llamar explícitamente el método UpdateBatch cuando sea necesario.

    Cuando se usa este método debe configurar el objeto CursorAdapter de la siguiente manera:

    THIS.DataSourceType="ADO"
THIS.UpdateCmdDataSourceType=""

    También puede usar los generadores de los objetos DataEnvironment y CursorAdapter para hacer un formulario actualizable o una biblioteca de clases, y usar la ficha AutoUpdate del generador, para definir campos únicos, campos actualizables y otra información necesaria.

  • Use el objeto CursorAdapter para enviar actualizaciones directamente a la base de datos usando una instrucción SQL definida por el usuario o generada automáticamente.

    Cuando se realizan actualizaciones automáticas directas, el objeto CursorAdapter necesita un objeto ADO con la propiedad ActiveConnection apuntando a un objeto Conexión ADO abierto.

    Cuando se usa este método, debe configurar el objeto CursorAdapter de la siguiente manera:

    THIS.UpdateCmdDataSourceType="ADO"
THIS.UpdateCmdDataSource=NewADODBCommandObject

    Definir THIS.DataSourceType="ADO" no se aplica cuando se usa este método.

Actualizaciones automáticas y XML

Cuando el origen de datos es XML, los objetos CursorAdapter no generan automáticamente instrucciones SQL para los comandos INSERT, UPDATE o DELETE, como se hace para otros orígenes de datos. Sin embargo, puede usar el objeto CursorAdapter para generar una declaración XML UpdateGram y asignarla a la propiedad UpdateGram del CursorAdapter.

Aunque el objeto CursorAdapter puede generar la declaración XML UpdateGram, para realizar las operaciones de actualización, hay que usar los protocolos apropiados, tales como SQL XML usando HTTP, SQL XML OLE DB, o Servicio Web XML del .NET.

Las siguientes reglas se aplican cuando se trabaja con proveedores de datos XML y generación de declaraciones XML UpdateGrams:

  • Definir los comandos para las propiedades InsertCmd, UpdateCmd y DeleteCmd del CursorAdapter de manera tal que Visual FoxPro pueda ejecutar las correspondientes operaciones de insertarr, actualizar y borrar. Si se esta usando actualización por lotes, y la propiedad BatchUpdateCount es mayor que 1, el método UpdateCmd es ejecutado solo una vez por cada lote.
  • Las siguientes propiedades del objeto CursorAdapter deben ser definidas como "XML":
    • InsertCmdDataSourceType
    • UpdateCmdDataSourceType
    • DeleteCmdDataSourceType

    Si estas propiedades no son definidas como "XML", Visual FoxPro ejecuta los comandos contenidos en las propiedades UpdateCmd, InsertCmd o DeleteCmd, pero no genera una declaración XML UpdateGram.

  • Para generar correctamente la declaración XML UpdateGram, el CursorAdapter requiere que las propiedades Tables, UpdatableFieldList y UpdateNameList contengan valores validos. El CursorAdapter puede generar múltiples declaraciones UpdateGram por tabla si se especifican apropiadamente las tablas y campos en las propiedades Tables, UpdatableFieldList y UpdateNameList. Por lo tanto, puede actualizar un cursor que represente la unión de varias tablas usando la función XMLUPDATEGRAM( ). Para más información, vea Función XMLUPDATEGRAM( ).
  • El objeto CursorAdapter usa la propiedad WhereType para generar la sección before en la declaración XML UpdateGram. Por lo tanto, cuando ejecute una operación de actualización o borrado, las propiedades KeyFieldList y UpdatableFieldList deben contener apropiadamente la información de los campos principales. Para más información, vea Propiedad WhereType.
  • Si el almacenamiento de filas en búfer esta activado, o la propiedad BatchUpdateCount tiene el valor 1, Visual FoxPro crea una declaración XML UpdateGram para cada operación de insertar, actualizar o borrar.

    Si el almacenamiento de tablas en búfer esta activado, se esta usando la actualización por lotes, y la propiedad BatchUpdateCount es mayor que 1, Visual FoxPro crea una declaración XML UpdateGram por el lote completo de cambios. En este caso, debe llamar explícitamente a la función TABLEUPDATE( ) para iniciar la actualización y la generación de la declaración XML UpdateGram.

Vea también

Trabajar con tablas | Clase CursorAdapter | CursorAdapter (Objeto: propiedades, métodos y eventos)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Trabajar con registros

Cuando haya diseñado y creado la estructura de una tabla, puede almacenar datos en ella agregándole registros. Después podrá modificar y eliminar los registros existentes. Cada una de estas tareas puede realizarse a través de la interfaz o mediante comandos. Esta sección se centra principalmente en el trabajo con registros por medio de programación.

En esta sección

Agregar registros
Proporciona instrucciones acerca de cómo agregar registros a una tabla, agregar un nuevo registro en blanco, anexar registros de otro archivo, mostrar registros para modificarlos y almacenar un valor NULL en un campo.
Eliminar registros
Proporciona instrucciones acerca de cómo marcar un registro para eliminarlo, quitar la marca de un registro marcado para eliminación y quitar registros marcados para eliminar del disco.
Crear índices para tablas
Ofrece los fundamentos acerca de las posibilidades de indización de tablas y su importancia en el desarrollo de aplicaciones.

Secciones relacionadas

Trabajar con datos
Averigüe cómo crear aplicaciones eficaces con índices, tablas y bases de datos según los datos que necesita.
Diseñar bases de datos
Aproveche la tecnología de bases de datos relacionales que ofrece Microsoft Visual FoxPro con bases de datos bien diseñadas.
Desarrollar bases de datos
Utilice bases de datos de Microsoft Visual FoxPro para establecer relaciones entre tablas, hacer cumplir la integridad referencial y administrar datos locales y remotos.
Trabajar con tablas
Asegúrese de que las tablas tengan la estructura que necesita la aplicación. La elección de los tipos de datos y los índices es esencial para el éxito de la aplicación.
Importar y exportar datos
Al importar a Microsoft Visual FoxPro y exportar desde esta aplicación se copian datos entre esta y otras aplicaciones.
Trabajar con múltiples tablas
Explica como abrir la ventana Sesión de datos, abrir una tabla en un área de trabajo y cerrar una tabla en un área de trabajo.


Agregar registros

Cuando cree una tabla de Visual FoxPro, la tabla estará abierta, pero vacía. Si intenta almacenar datos en una tabla sin crear primero un registro en ella, no sucederá nada. El primer paso para agregar registros a una tabla nueva es agregar filas en las que almacena los nuevos datos.

Para agregar registros a una tabla

  • Utilice el comando INSERT - SQL.

El comando INSERT - SQL puede utilizarse para insertar valores indicados en el mismo o tomados de una matriz o variable. Por ejemplo, para insertar un nuevo registro en la tabla customer de la base de datos TasTrade, puede ejecutar el comando siguiente:

INSERT INTO customer (cust_id, company, contact) ;
VALUES ("SMI007", "Smith's Delicatessen", "Sarah Smith")

El comando INSERT - SQL es útil en el caso de datos remotos, ya que sigue una sintaxis SQL compatible con ANSI.

Agregar nuevos registros en blanco a una tabla

Para agregar rápidamente nuevos registros a una tabla, puede colocar las ventanas Examinar o Modificar en modo Anexar. En el modo Anexar aparece una serie de campos en blanco en la parte inferior del archivo, de forma que pueda completarlos para crear un nuevo registro.

Para agregar un nuevo registro en blanco

  • En el menú Ver, elija Modo Anexar.

Rellene los campos del nuevo registro, pasando de un campo a otro con la tecla TAB. A medida que complete cada registro, se creará un nuevo registro en la parte inferior del archivo.

Para agregar un registro en blanco a una tabla y almacenar datos en sus campos puede utilizar el comando APPEND BLANK seguido del comando REPLACE. El comando APPEND BLANK agrega un nuevo registro en blanco a la tabla. El comando REPLACE sustituye el valor actual de un campo (incluso si está vacío) con un nuevo valor.

El comando REPLACE requiere:

  • Una tabla abierta.
  • Un registro existente.
  • El nombre del campo en el que desea almacenar el valor.
  • Un valor para cada campo válido según el tipo de datos correspondiente.

En el ejemplo siguiente se utiliza el comando APPEND para crear un registro en el que almacenar datos con el comando REPLACE:

APPEND BLANK                     && ahora hay un registro disponible
REPLACE lastname WITH "SMITH"   && almacena un valor carácter en el campo

Puede utilizar el comando UPDATE - SQL en lugar de REPLACE para actualizar los registros de una tabla.

Agregar registros en modo Examinar

Si desea agregar un nuevo registro a una tabla mientras se encuentra en modo Examinar, puede elegir Anexar registro en el menú Tabla. Por el contrario, si desea evitar que los usuarios puedan anexar registros en el modo Examinar, puede utilizar la cláusula NOAPPEND del comando BROWSE.

Agregar registros de otra tabla

Otra forma de almacenar datos en los registros es copiarlos de otras tablas o archivos. Por ejemplo, puede anexar registros de otra tabla o archivo.

Para anexar registros de otro archivo

  • Use the APPEND FROM (Comando).

    –O bien–

  • Use the IMPORT (Comando).

Los registros pueden aceptar los datos directamente, como en el ejemplo anterior, en el que el comando INSERT especificaba el texto que se va a insertar en campos específicos de la tabla customer y también tomarlos de constantes, variables, matrices, objetos u otros orígenes de datos. Para obtener más información acerca de otras formas para importar datos, consulte Importar y exportar datos.

Introducir datos en una tabla

Puede escribir datos en una tabla de forma interactiva, a través de una ventana Examinar, o por medio de programación, con los comandos REPLACE o UPDATE - SQL. Al utilizar REPLACE o UPDATE - SQL en una aplicación multiusuario, puede activar el almacenamiento en búfer de registros o tablas, lo que le permitirá modificar los datos sin bloquear el registro hasta que desee confirmar los cambios. Para obtener más información acerca del búfer de registros y tablas, consulte Programar para acceso compartido.

Modificar los registros de una tabla

Para mostrar y modificar los registros existentes en una tabla puede utilizar la interfaz o hacerlo mediante programación.

Para mostrar los registros y modificarlos

  • Utilice el comando EDIT.

    –O bien–

  • Utilice el comando CHANGE.

Por ejemplo, el código siguiente muestra la tabla customer en una ventana Examinar en modo de edición:

USE customer
EDIT

Si desea utilizar un formulario para modificar un registro, cree un cuadro de texto en el formulario y establezca su propiedad DataSource como el nombre de la tabla que desee modificar. Para obtener más información acerca de los formularios, consulte Crear formularios.

También puede utilizar los comandos CHANGE y EDIT para modificar campos específicos de una tabla.

Agregar gráficos a una tabla

Puede almacenar gráficos en una tabla de Visual FoxPro si crea un campo General e importa o pega en él objetos OLE, como mapas de bits o gráficos. El comando APPEND GENERAL sitúa un objeto OLE en un campo General. En el ejemplo siguiente se almacena un archivo gráfico de Microsoft Excel, ubicado en el directorio predeterminado de Visual FoxPro, en un campo de tipo General llamado Chart:

APPEND GENERAL Chart FROM "CHART1.CLX" CLASS EXCELCHART

Para obtener más información acerca del trabajo con objetos OLE en tablas de Visual FoxPro, consulte Compartir información y agregar objetos OLE.

Introducir valores NULL en los campos

Para introducir un valor NULL en un campo puede utilizar el lenguaje, con el elemento NULL, o hacerlo a través de la interfaz con una combinación de teclas si el campo admite valores NULL.

Para almacenar un valor NULL en un campo

  • En una ventana Examinar o en un control de formulario, presione CTRL+0 (cero).

    –O bien–

  • Utilice el elemento NULL.

Por ejemplo, el código siguiente sustituye el valor existente en el campo automobile por un valor NULL:

REPLACE automobile WITH NULL
Nota Utilice el comando SET NULLDISPLAY para especificar el texto mostrado para los valores NULL.

Vea también

Trabajar con registros | Eliminar registros | INSERT - SQL (Comando) | Crear índices para tablas | REPLACE (Comando) | APPEND (Comando)| BROWSE (Comando) | APPEND FROM (Comando) | Crear tablas | Ordenar por múltiples campos


Eliminar registros

Para eliminar registros debe marcarlos primero para eliminación y luego suprimir los registros marcados. Hasta su supresión, los registros marcados permanecen en el disco y puede quitarles la marca para restaurarlos. En esta sección se explica cómo marcar, desmarcar y suprimir los registros de una tabla.

Marcar registros para su eliminación

Para marcar registros para su eliminación puede utilizar la interfaz o bien el comando DELETE - SQL.

Para marcar un registro para su eliminación

  • En una ventana Examinar, haga clic en el marcador de eliminación para marcar el registro.

    –O bien–

  • En el menú Tabla, elija Eliminar registros.

    –O bien–

  • Use el comadno DELETE - SQL.

También puede utilizar el comando DELETE - SQL para especificar un intervalo de registros, así como una condición basada en una expresión lógica que los registros deben satisfacer para que se marquen para su eliminación. Por ejemplo, el código siguiente marca para eliminación todos los registros de productos que contienen ‘T’ en el campo Discontinu:

USE products
DELETE FROM products WHERE discontinu = .T.
BROWSE

También puede seleccionar un grupo de registros para su eliminación si establece las condiciones en el cuadro de diálogo Eliminar. Elija Eliminar registros en el menú Tabla para especificar los criterios de eliminación.

Elija el botón Alcance para establecer el intervalo de registros que desea eliminar.

Si puede describir una serie de registros que desea eliminar, podrá crear una expresión basada en dicha descripción. Elija el botón FOR para mostrar el Generador de expresiones de forma que pueda crear una expresión. Por ejemplo, la expresión FOR Country = 'UK' seleccionará todos los registros del Reino Unido y los marcará para su eliminación.

Los registros marcados para eliminación no se quitan físicamente de la tabla hasta que no se ejecuta el comando PACK. Al ver la tabla en la ventana Examinar, todos los registros eliminados tendrán un indicador de eliminación, pero aún serán visibles en la tabla, siempre que SET DELETED esté desactivado. Si SET DELETED está activado, los registros marcados para eliminación no aparecerán en la ventana Examinar.

La configuración del comando SET DELETED también afecta al acceso a los registros marcados para su eliminación por parte de los comandos que operan sobre registros.

Desmarcar los registros marcados para su eliminación

Para desmarcar los registros marcados para su eliminación puede utilizar el comando RECALL. El comando RECALL sólo puede recuperar los registros si aún no se ha ejecutado un comando PACK o ZAP, que eliminan físicamente los registros de la tabla.

Para eliminar la marca de un registro marcado para eliminación

  • En una ventana Examinar, haga clic en el marcador de eliminación para eliminarlo del registro.

    –O bien–

  • En el menú Tabla, elija Desmarcar registros.

    –O bien–

  • Use el comando RECALL.

Con el comando RECALL puede especificar un intervalo de registros, así como una condición basada en una expresión lógica que los registros deben satisfacer para que se les quite la marca de eliminación. Por ejemplo, el código siguiente quita la marca de eliminación de todos los registros de productos que contengan ‘T’ en el campo discontinu:

USE products
RECALL FOR discontinu = .T.
BROWSE

Cuando vea la tabla en la ventana Examinar, los registros especificados ya no tendrán la marca de eliminación.

Suprimir registros marcados para eliminación

Una vez marcado un grupo de registros para su eliminación, puede suprimirlos de forma definitiva del disco a través de la interfaz o mediante el lenguaje.

Para suprimir del disco los registros marcados para eliminación

  1. En una ventana Examinar, elija Quitar registros eliminados en el menú Tabla.
  2. Elija Sí cuando se le pregunte si desea empaquetar la tabla.

    –O bien–

  • Use el comando PACK.

El comando PACK tiene dos cláusulas: MEMO y DBF. Si ejecuta PACK sin las cláusulas MEMO o DBF, se quitarán tanto los registros del archivo de tabla como los del archivo memo asociado. Asegúrese de tener acceso exclusivo a la tabla. Por ejemplo, el código siguiente suprime los registros marcados para eliminación:

USE customer EXCLUSIVE
PACK

Para eliminar solamente los registros del archivo de tabla y dejar intactos los del archivo memo, utilice PACK DBF.

Conservar espacio

La información de los campos Memo de una tabla se almacena en un archivo memo asociado, con el mismo nombre de la tabla y la extensión .fpt. Si desea quitar el espacio no utilizado en el archivo memo, pero sin quitar los registros de la tabla marcados eliminación, ejecute el comando PACK con la cláusula MEMO. Asegúrese de tener acceso exclusivo a la tabla.

Suprimir todos los registros de una tabla

Si desea quitar todos los registros de una tabla y dejar sólo su estructura, puede utilizar el comando ZAP. El uso de ZAP equivale a ejecutar DELETE ALL y a continuación PACK, pero ZAP es mucho más rápido. Asegúrese de tener acceso exclusivo a la tabla.

Precaución Los registros de la tabla actual eliminados con ZAP no pueden recuperarse.

Vea también

Agregar registros | Crear índices para tablas | Trabajar con registros | DELETE - SQL (Comando) | ventana Examinar | PACK (Comando) | SET DELETED (Comando) | RECALL (Comando) | Ordenar por múltiples campos


Crear índices para tablas

Para desplazarse por los registros de una tabla, verlos o manipularlos en un orden determinado, debe utilizar un índice. Visual FoxPro utiliza los índices como mecanismos de ordenación para ofrecer flexibilidad y eficacia al programar una aplicación. La flexibilidad supone crear y utilizar múltiples claves de índice distintas para la misma tabla, lo que permite trabajar con los registros ordenados de formas diferentes, según las necesidades de la aplicación. Puede crear relaciones personalizadas entre las tablas, basadas en sus índices, lo que le permite tener acceso a los registros que desea.

Un índice de Visual FoxPro es un archivo que contiene punteros ordenados lógicamente según los valores de una clave de índice. El archivo de índice es independiente del archivo .dbf de la tabla y no cambia el orden físico de los registros contenidos en la misma. Al crear un índice, se crea un archivo que mantiene punteros en los registros del archivo .dbf. Cuando desee trabajar con los registros de la tabla en un orden determinado, elija un índice para controlar el orden y aumentar la velocidad a la que se ve y se tiene acceso a la tabla.

Nota Los índices son tan fáciles de crear, que puede caer en la tentación de definir uno para cada campo. Sin embargo, los índices que casi no utiliza pueden disminuir el rendimiento. Otros tipos de archivos de índice son mejores para almacenar los índices que no usa normalmente.

Vea también

Eliminar registros | Crear un índice | Trabajar con registros | Crear archivo de índice | Visualización de información de índices | Establecer un índice principal o candidato | Permitir valores duplicados | Crear múltiples índices | Crear tablas | Ordenar por múltiples campos | Crear índices para tablas


Crear un índice

Al crear una tabla, Visual FoxPro crea el archivo .dbf correspondiente y, si la tabla contiene campos de tipo Memo o General, el archivo .fpt asociado. Puede optar por agregar rápidamente un índice a un campo al definirlo; de lo contrario, no se generará ningún archivo de índice en ese momento. Los registros introducidos en la nueva tabla se almacenarán en el orden de introducción, y al examinar la tabla aparecerán en ese orden.

Normalmente, conviene poder ver y tener acceso a los registros de la nueva tabla en un orden específico. Por ejemplo, puede ser adecuado ver los registros de la tabla de clientes ordenados alfabéticamente por nombres de empresa. Cuando se desea controlar el orden en que se muestran los registros y se tiene acceso a los mismos, es necesario crear un archivo de índice para la tabla creando la primera ordenación de registros, o clave de índice, de la tabla. A continuación puede establecer como orden de la tabla la nueva clave de índice y tener acceso a los registros siguiendo ese orden.

Para crear una clave de índice de una tabla

  1. En el Administrador de proyectos, seleccione la tabla a la que quiere agregar un índice y, a continuación, elija Modificar.
  2. En el Diseñador de tablas, seleccione la ficha Índices.
  3. En el cuadro Nombre, escriba un nombre para el índice.
  4. En la lista Tipo, seleccione el tipo de índice Normal.
  5. En el cuadro Expresión, escriba el nombre del campo por el que quiere ordenar los registros.

    –O bien–

    Genere una expresión; para ello, elija el botón de diálogo situado al final del cuadro para mostrar el Generador de expresiones.

  6. Si quiere seleccionar registros, escriba una expresión de filtro en el cuadro Filtro o seleccione el botón situado al final del cuadro para generar una expresión.
  7. Elija Aceptar.

    –O bien–

  • Utilice el comando Index.

Por ejemplo, en el código siguiente se utiliza la tabla customer y se crea una clave de índice en el campo city. La palabra clave TAG y la palabra “city” que la sigue especifican un nombre, o etiqueta, para la nueva clave de índice asociada al campo de ciudad.

USE customer
INDEX ON city TAG city

En el ejemplo anterior, la etiqueta de la clave de índice tiene el mismo nombre que el campo de índice. Estos nombres no tienen que coincidir necesariamente; podría haber elegido uno distinto para la clave de índice.

Al crear un índice con el comando INDEX, Visual FoxPro lo utiliza automáticamente para establecer el orden de los registros de la tabla. Por ejemplo, si introduce algunos datos en la tabla utilizada en el ejemplo anterior y a continuación la examina, los registros aparecerán ordenados por ciudad.

Cuando haya creado un índice para una tabla puede usarlo para ordenar los registros.

Para ordenar registros mediante un índice

  1. En el Administrador de proyectos, seleccione la tabla que contiene el índice que ha creado.
  2. Elija Examinar.
  3. En el menú Tabla, elija Propiedades.
  4. En el cuadro Orden del índice, seleccione el índice que quiere usar.
  5. Elija Aceptar.

La tabla aparece en la ventana Examinar y muestra los registros en el orden especificado por el índice. También puede ordenar los resultados de consultas o informes si los ejecuta al seleccionar el índice.

Vea también

Crear índices para tablas | Crear archivo de índice | Trabajar con registros | Visualización de información de índices | Establecer un índice principal o candidato | Permitir valores duplicados | Crear múltiples índices | Optimizar tablas e índices | INDEX (Comando) | Ordenar por múltiples campos


Crear archivo de índice

Al crear la primera clave de índice para la tabla del tema Crear un índice, Visual FoxPro creó automáticamente un nuevo archivo, Customer.cdx, para almacenar la nueva clave de índice. El archivo de índice .cdx, llamado índice compuesto estructural, es el tipo de archivo de índice más importante y más común en Visual FoxPro. El archivo .cdx estructural:

  • Se abre automáticamente al abrir la tabla.
  • Puede contener distintos órdenes o claves de índice en el mismo archivo de índice.
  • Se actualiza automáticamente al agregar, cambiar o eliminar registros de la tabla.

Si una tabla de Visual FoxPro tiene un archivo de índice asociado, normalmente se tratará de un archivo .cdx estructural. El término “estructural” hace referencia al hecho de que Visual FoxPro trata al archivo como una parte intrínseca de la tabla y lo abre automáticamente cuando se usa la tabla. Ya sea a través del Diseñador de tablas o con la forma más simple del comando INDEX, como se mostraba en el ejemplo anterior, Visual FoxPro crea el archivo .cdx con el mismo nombre que la tabla actual y almacena la información de índice de la nueva clave, o etiqueta, dentro de él. Los archivos .cdx estructurales se utilizan para claves de índice de uso frecuente, como las que ordenan los registros para tareas diarias de presentación o entrada de datos, vínculos con SET RELATION, optimización de consultas Rushmore, al ver los registros o para informes que se imprimen con frecuencia.

Visual FoxPro ofrece otros dos tipos de archivos de índice: el archivo .cdx no estructural y el archivo .idx de una sola clave. Al ser el índice .cdx, o índice compuesto estructural, el más importante, la mayoría de los ejemplos de los temas relacionados utilizarán claves de índice de archivos .cdx para ordenar los registros de las tablas. Los dos tipos de índice restantes se usan con menos frecuencia y se tratan al final de la sección.

Vea también

Visualización de información de índices | Trabajar con registros | Establecer un índice principal o candidato | Permitir valores duplicados | Crear múltiples índices | Crear índices para tablas | Ordenar por múltiples campos


Visualización de información de índices

Puede ver el número de registros que se indexan durante el proceso de indexación, al establecer TALK en ON. El intervalo de registros mostrado durante la indexación puede especificarse con el comando SET ODOMETER. Para obtener más información acerca de los archivos de índice abiertos, utilice el comando DISPLAY STATUS. Este comando muestra los nombres de todos los archivos de índice abiertos, su tipo (estructural, .cdx o .idx), sus expresiones de índice y el nombre del archivo de índice principal o etiqueta principal.

Únicamente la cantidad de memoria y los recursos del sistema pueden limitar el número de archivos de índices (.idx o .cdx) que puede abrir.

Controlar los valores duplicados

Visual FoxPro cuenta con cuatro tipos de índices: principal, candidato, único y normal. Estos tipos determinan si se admiten o no valores duplicados en los campos y registros de la tabla.

Impedir valores duplicados

Un índice principal nunca permite valores duplicados en la expresión o en los campos especificados. Los índices principales se utilizan sobre todo en la tabla principal o “referenciada” para establecer la integridad referencial en una relación persistente. Sólo es posible crear un índice principal para cada tabla. Visual FoxPro devolverá un error si especifica un índice principal sobre un campo que contenga datos duplicados.

Un índice candidato nunca permite valores duplicados en la expresión o en los campos especificados. El nombre “candidato” hace referencia al estado del índice: puesto que estos índices no admiten valores duplicados, se convierten en “candidatos” para ser elegidos como índice principal de la tabla. Puede crear múltiples índices candidatos para una tabla. Los índices candidatos pueden utilizarse para hacer referencia o para ser referenciados en una relación persistente con el fin de establecer la integridad referencial. Visual FoxPro generará un error si especifica un índice candidato sobre un campo que contenga datos duplicados.

Por compatibilidad con versiones anteriores, también puede crear un índice único que selecciona y ordena un subconjunto de registros según la primera aparición de un valor en el campo que especifique. Si desea seleccionar registros de esta manera, es posible que quiera crear una consulta o una vista en lugar de ello.

Un índice normal determina el orden en que se procesa un registro, pero permite que se introduzcan valores duplicados en un campo. Puede agregar más de un índice normal a una tabla.

Vea también

Crear archivo de índice | Establecer un índice principal o candidato | Trabajar con registros | Crear índices para tablas | Permitir valores duplicados | Crear múltiples índices | Ordenar por múltiples campos


Establecer un índice principal o candidato

Los índices principales y candidatos pueden crearse con los comandos CREATE TABLE y ALTER TABLE. Puede utilizar ambos tipos de índices para definir el lado “uno” de una relación persistente de uno a varios o de uno a uno.

Para crear un índice principal o candidato

  • En el Diseñador de tablas, elija la ficha Índices y cree un índice, seleccionando como tipo Principal o Candidato.

    –O bien–

  • Utilice el comando ALTER TABLE - SQL.

Por ejemplo, cualquiera de los dos comandos siguientes hace de cust_id la clave principal de la tabla customer:

ALTER TABLE customer ADD PRIMARY KEY cust_id TAG cust_id
ALTER TABLE customer ALTER COLUMN cust_id c(5) PRIMARY KEY

Los índices principal y candidatos se almacenan en el archivo .cdx estructural de la tabla correspondiente. La base de datos almacena los nombres de los índice en el archivo .cdx y si los índices son o no principales o candidatos. No se puede almacenar estos tipos de índices en otros archivos .cdx, ni tampoco utilizar para ellos archivos .idx. El motivo principal es que el archivo que contiene estos índices siempre debe estar abierto cuando esté abierta la tabla a la que están asociados.

Las claves principales forman parte de una tabla que pertenece a una base de datos. Si libera una tabla de una base de datos, se elimina la clave principal.

Si utiliza una función definida por el usuario en una expresión de índice asociada a una base de datos, Visual FoxPro tratará la expresión de la misma forma que las expresiones de reglas y desencadenadores que contienen FDU.

Controlar la entrada de valores duplicados en un campo

Es posible que quiera controlar la entrada de valores duplicados en un campo. Por ejemplo, cada cliente debería tener un valor único en el campo Cust_ID de la tabla Customer.

Puede usar el campo como campo clave que identifica de forma única un registro. Si la tabla es parte de una base de datos, puede usar un índice principal o candidato. Si la tabla es una tabla libre o ya tiene un índice principal, tiene que usar un índice candidato.

Para crear un índice que exija valores únicos en un campo

  1. En el Administrador de proyectos, seleccione la tabla a la que desea agregar un índice y elija Modificar.
  2. En la ficha Índices, cree un índice.
  3. En la columna Tipo, seleccione Principal o Candidato.
  4. Elija Aceptar.

Vea también

Visualización de información de índices | Permitir valores duplicados | Trabajar con registros | Crear múltiples índices | Crear un índice | Ordenar por múltiples campos | Ventana Administrador de proyectos | Crear índices para tablas


Permitir valores duplicados

En Visual FoxPro, un índice único no evita el uso de valores duplicados, aunque sólo almacenan la primera aparición del valor o valores en el archivo de índice. En este sentido, la palabra “único” se refiere a las entradas del archivo de índice, que sólo contiene valores únicos, pues no almacena cada clave más de una vez e ignora la segunda y posteriores apariciones de los valores no únicos. Las tablas indizadas con índices únicos pueden contener valores duplicados. Los índices únicos se admiten principalmente por compatibilidad con las versiones anteriores.

Un índice normal es simplemente un índice que no es único, principal ni candidato. Los índices normales se utilizan para ordenar y buscar registros, pero no se exige que los datos de dichos registros sean únicos. También puede usar un índice normal como el lado “varios” de una relación persistente de uno a varios.

Para crear un índice normal

  • En el Diseñador de tablas, elija la ficha Índices y cree un índice seleccionando Normal como tipo.

    –O bien–

  • Utilice el comando INDEX.

Por ejemplo, los comandos siguientes hacen de city una clave normal para la tabla customer:

USE customer
INDEX ON city TAG city

Vea también

Establecer un índice principal o candidato | Crear múltiples índices | Trabajar con registros | Establecer el orden de los registros en tiempo de ejecución | Crear un índice | Ordenar por múltiples campos | Crear índices para tablas


Crear múltiples índices

A medida que trabaje con los registros de una tabla, descubrirá la necesidad de tener acceso a los registros utilizando varias secuencias diferentes. Por ejemplo, puede ser conveniente ordenar la tabla customer por el campo contact para encontrar rápidamente un nombre que se busca, o por postal_code, para generar etiquetas de correo ordenadas para un envío más eficiente.

Puede crear y almacenar varias ordenaciones distintas para una tabla creando múltiples claves de índice para la misma. Esto permite ordenar los registros de una forma distinta en cada momento, según las operaciones que vaya a realizar.

Para crear claves de índice adicionales para una tabla

  • En el Diseñador de tablas elija la ficha Índices e introduzca la información de las claves adicionales.

    –O bien–

  • Use INDEX Command.

Por ejemplo, el código siguiente crea dos nuevas claves de índice en la tabla employee: una sobre el campo last_name y otra sobre el campo country:

USE employee
INDEX ON last_name TAG last_name
INDEX ON country TAG country

Al crear una etiqueta de índice sin especificar el nombre de un archivo de índice, la etiqueta se agrega automáticamente al archivo de índice .cdx estructural de la tabla. En el diagrama siguiente se muestra un archivo de índice .cdx con tres etiquetas de índice.

Índice .cdx con múltiples etiquetas que representan múltiples ordenaciones de registros

Dos de las etiquetas del diagrama, emp_id y last_name, representan índices basados en un solo campo. El índice cntry_last ordena los registros según una expresión sencilla de índice de dos campos.

Controlar el orden de acceso a los registros

Una vez creadas las claves de índice para la tabla customer en los campos company, city y country puede tener acceso a la tabla y mostrarla en secuencias distintas, eligiendo la clave de índice que desee. Utilice el comando SET ORDER para elegir un índice determinado como clave de ordenación de la tabla..

Por ejemplo, el código siguiente abre una ventana Examinar con los registros de la tabla customer ordenados por países:

SET ORDER TO country
BROWSE

Vea también

Permitir valores duplicados | Establecer el orden de los registros en tiempo de ejecución | Trabajar con registros | Diseñador de tablas | INDEX (Comando) | Utilizar otros tipos de índices | Crear un índice | Ordenar por múltiples campos | Crear índices para tablas


Ordenar por múltiples campos

Para aumentar la velocidad de consultas o vistas que tienen filtros en más de un campo, puede ordenar los registros especificando varios campos en la expresión de índice. Los campos se evalúan en el mismo orden en que aparecen en la expresión. Si crea una expresión de índice con campos numéricos, el índice ordena los registros por la suma de los campos, no por los mismos campos.

Para ordenar registros por múltiples campos

  1. En el Administrador de proyectos, seleccione la tabla a la que desea agregar un índice y elija Modificar.
  2. En la ficha Índices, escriba un nombre y un tipo para el índice.
  3. En el cuadro Expresión, escriba una expresión que muestre los campos por los que quiere ordenar.

    Por ejemplo, es posible que quiera ordenar los registros por país, código postal dentro del país y nombre de la empresa dentro del código postal. Puede usar un signo más (+) para crear la expresión de índice a partir de campos de caracteres.

    customer.country + customer.postalcode + customer.company

    Observe que el campo que cambia menos es el primero en la lista.

  4. Elija Aceptar.

Si desea usar campos de distintos tipos de datos, puede convertir los campos que no sean de caracteres en caracteres; para ello, incluya el campo en STR( ). Por ejemplo, puede intentar ordenar los registros por el campo de cantidad máxima del pedido y después, por el nombre de la organización. En esta expresión, maxordamt es un campo de tipo moneda (Currency) y company es un campo de tipo caráter (Character).

STR(customer.maxordamt,20,4) + customer.company

Vea también

Permitir valores duplicados | Establecer el orden de los registros en tiempo de ejecución | Trabajar con registros | Diseñador de tablas | INDEX (Comando) | Utilizar otros tipos de índices | Crear un índice | Crear múltiples índices | Crear índices para tablas


Establecer el orden de los registros en tiempo de ejecución

El comando SET ORDER permite designar el archivo o etiqueta de índice que controla el orden de los registros. Una tabla puede tener abiertos simultáneamente varios archivos de índice. Sin embargo, para determinar el orden en que se muestran los registros de una tabla o se tiene acceso a ellos, hay que establecer como índice de control un archivo de un solo índice (.idx, archivo de control) o una etiqueta de un archivo de índice compuesto (.cdx, etiqueta de control). Algunos comandos, como SEEK, utilizan la etiqueta de índice de control para buscar registros. No es necesario usar SET ORDER para ejecutar consultas.

Establecer el orden de los registros de forma interactiva en un formulario

Puede utilizar SET ORDER en tiempo de ejecución para cambiar el orden de los registros en un formulario. Por ejemplo, puede ser conveniente que los usuarios de su aplicación puedan cambiar el orden de los registros de una cuadrícula haciendo clic en el encabezado de la columna que deseen ordenar.

Para ordenar los registros de una cuadrícula por columnas

  1. Cree un formulario con un control cuadrícula.
  2. Establezca en la propiedad ColumnCount de la cuadrícula el número de campos que desee mostrar en ella.
  3. En el evento Click del encabezado de cada columna de la cuadrícula, inserte código para:
    • Establecer como orden de los registros una clave de índice basada en la columna.
    • Actualizar el formulario.

Por ejemplo, si crea un formulario basado en la tabla Customer de la base de datos Testdata con una cuadrícula que contenga las cuatro columnas, company, contact, postal code y phone, la cuadrícula aparecerá en primer lugar ordenada alfabéticamente, ya que los registros de esa tabla se introdujeron por ese orden.

A continuación puede permitir que el usuario ordene la cuadrícula por contact o postal_code si inserta el código siguiente en el evento Click de cada encabezado de columna:

Ejemplo de código de evento para ordenar los registros de una cuadrícula al hacer clic en el encabezado de las columnas

Código Comentarios
SET ORDER TO company
GO TOP
THISFORM.Refresh
 En el código de evento Click del encabezado de Company, se vuelve a ordenar la cuadrícula por la clave de índice company y se actualiza el formulario para mostrar los registros ordenados por compañía.
SET ORDER TO contact
GO TOP
THISFORM.Refresh
 En el código de evento Click del encabezado de Contact, se vuelve a ordenar la cuadrícula por la clave de índice contact y se actualiza el formulario para mostrar los registros ordenados por el nombre de contacto.
SET ORDER TO
postalcode
GO TOP
THISFORM.Refresh
 En el código de evento Click del encabezado de Postal_Code, se vuelve a ordenar la cuadrícula por la clave de índice postalcode y se actualiza el formulario para mostrar los registros ordenados por código postal.
Como la ordenación por números de teléfono no es adecuada para esta aplicación, se deja en blanco el código del evento Click del encabezado de Phone.

En este ejemplo, al mostrar un formulario por primera vez, la cuadrícula aparece ordenada alfabéticamente por empresas. Cuando el usuario hace clic en el encabezado de la columna Contact, Visual FoxPro muestra los registros en la cuadrícula ordenados alfabéticamente por el nombre del contacto.

Si el usuario hace clic en el encabezado de la columna Postal_code, la cuadrícula se vuelve a ordenar y aparece ordenada por código postal.

Como en esta aplicación de ejemplo no hay necesidad de ordenar los contactos por sus números de teléfono, no se inserta el código con SET ORDER en el evento Click del encabezado de la columna phone. Cuando el usuario hace clic en el encabezado de la columna Phone, la cuadrícula no cambia.

Vea también

Crear múltiples índices | Utilizar otros tipos de índices | Trabajar con registros | SET ORDER (Comando) | Grid | ColumnCount (Propiedad) | Click (Evento) | Eliminar un índice | Crear un índice | Ordenar por múltiples campos | Crear índices para tablas


Usar otros tipos de índices

Además del índice más habitual, el compacto estructural compuesto .cdx, Visual FoxPro admite otros dos tipos de archivos de índice: el .cdx no estructural y el índice autónomo .idx. Los índices .cdx no estructurales se utilizan como etiquetas de clave múltiple de uso menos frecuente. Los índices autónomos, o .idx, se usan como índices de clave única de uso poco frecuente o temporal, y se admiten principalmente por la compatibilidad con las versiones anteriores.

La tabla siguiente es un resumen de los tres tipos de índices, su nombre, el número de claves que pueden contener y las limitaciones en caracteres de cada uno de ellos.

Tipos de índices de Visual FoxPro

Tipo de índice | Descripción | Número de claves | Límites
.cdx estructural | Utiliza el mismo nombre base que el archivo de tabla; se abre automáticamente con la tabla | Expresiones de múltiples claves, llamadas etiquetas | Límite de 240 caracteres en las expresiones evaluadas
.cdx no estructural | Debe abrirse explícitamente; utiliza un nombre distinto del nombre base de la tabla | Expresiones de múltiples claves, llamadas etiquetas | Límite de 240 caracteres en las expresiones evaluadas
.idx autónomo | Debe abrirse explícitamente; el usuario define el nombre del archivo .idx | Expresión de una sola clave | Límite de 100 caracteres en las expresiones evaluadas

Usar índices .cdx no estructurales

Un índice .cdx no estructural resulta útil cuando desea crear múltiples etiquetas de índice con un fin determinado, pero no quiere cargar sus aplicaciones manteniendo estos índices de una forma continua. Por ejemplo, su aplicación puede tener un conjunto especial de informes que analicen los datos basándose en campos normalmente no indizados. En este caso el programa puede crear un índice .cdx no estructural con las etiquetas necesarias, ejecutar los informes especiales y a continuación eliminar el índice .cdx no estructural.

Para crear una etiqueta de índice .cdx no estructural

  • Utilice el comando INDEX con las cláusulas TAG y OF.

Al especificar la cláusula OF con el comando INDEX, se indica a Visual FoxPro que debe almacenar la etiqueta en un archivo distinto del índice .cdx estructural de la tabla. Por ejemplo, el comando siguiente crea etiquetas llamadas title y hire_date en la tabla employee y las almacena en un índice .cdx no estructural llamado QRTLYRPT.CDX:

USE employee
INDEX ON title TO TAG title OF QRTLYRPT
INDEX ON hire_date TO TAG hiredate OF QRTLYRPT

Usar índices autónomos

Los índices autónomos, basados en una expresión de una sola clave, se almacenan como archivos .idx. Al contrario que los índices .cdx, que pueden almacenar expresiones de múltiples claves, los índices .idx se limitan a una sola.

Normalmente, los índices autónomos se utilizan de forma temporal, y se crean o vuelven a indizarse inmediatamente antes de su uso. Por ejemplo, puede tener un índice que sólo utilice para un informe resumen trimestral o anual. En lugar de incluir este índice de uso poco frecuente en el .cdx estructural, donde se actualizará cada vez que se utilice la tabla, puede crear un índice .idx autónomo. Una tabla determinada puede tener tantos archivos .idx como se desee.

Para crear un índice .idx autónomo

  • Utilice la cláusula COMPACT del comando INDEX.

    –O bien–

  • Utilice el comando COPY TAG.

Al utilizar el comando INDEX con la cláusula COMPACT se crea un nuevo índice autónomo en un archivo pequeño y de acceso rápido. Puede omitir la cláusula COMPACT si desea crear un archivo .idx autónomo no compacto y mantener así la compatibilidad con los formatos de índice de FoxBASE+® y FoxPro® versión 1.0.

El código siguiente crea un archivo .idx autónomo de order_date para la tabla orders, establece como orden el nuevo índice y luego abre una ventana Examinar, que muestra los pedidos ordenados por order_date:

USE ORDERS
INDEX ON order_date TO orddate COMPACT
SET ORDER TO orddate
BROWSE

Puede utilizar el comando COPY TAG para generar un archivo de índice autónomo a partir de una etiqueta de índice de un archivo .cdx existente. Esto puede ser útil, por ejemplo, si comprueba que uno de los índices que actualmente se incluyen en el .cdx estructural sólo se utiliza para informes trimestrales o anuales. En el código siguiente se crea un índice autónomo a partir de una etiqueta birth_date de la tabla employee:

COPY TAG birth_date to birthdt COMPACT

Una vez creado un índice autónomo a partir de una etiqueta de un archivo .cdx, normalmente deberá eliminar la etiqueta, ahora innecesaria, del archivo .cdx. En la sección siguiente se describe la forma de eliminar índices.

Vea también

Establecer el orden de los registros en tiempo de ejecución | Eliminar un índice | Trabajar con registros | Crear índices basados en expresiones | Crear un índice | Ordenar por múltiples campos | Crear índices para tablas


Eliminar un índice

Cuando no vaya a utilizar un índice, puede eliminar su etiqueta en el archivo .cdx o bien puede eliminar el propio archivo .idx en el caso de los índices autónomos. La eliminación de las etiquetas de índice no utilizadas mejora el rendimiento, ya que suprime la necesidad de que Visual FoxPro actualice etiquetas no utilizadas para reflejar los cambios en los datos de la tabla.

Eliminar una etiqueta del archivo .cdx estructural

Puede eliminar una etiqueta del archivo .cdx estructural con el Diseñador de tablas o el lenguaje.

Para eliminar una etiqueta de índice del .cdx estructural

  • En el Diseñador de tablas, utilice la ficha Índices para seleccionar el índice y eliminarlo.

    –O bien–

  • Utilice el comando DELETE TAG.

    –O bien–

  • Utilice las cláusulas DROP PRIMARY KEY o DROP UNIQUE TAG del comando ALTER TABLE - SQL.

Por ejemplo, si la tabla employee contiene una etiqueta llamada title, puede eliminarla con el código siguiente:

USE employee
DELETE TAG title

En el caso de que la etiqueta que desea eliminar sea la clave principal de la tabla employee, puede utilizar el comando ALTER TABLE:

USE employee
ALTER TABLE DROP PRIMARY KEY

Eliminar una etiqueta de un archivo .cdx no estructural

Los índices .cdx no estructurales y sus etiquetas no son visibles en el Diseñador de tablas. Para eliminar las etiquetas de un archivo .cdx no estructural debe utilizar el lenguaje.

Para eliminar un índice de un archivo .cdx no estructural

  • Utilice la cláusula OF del comando DELETE TAG.

Al utilizar la cláusula OF con el comando DELETE TAG, se indica a Visual FoxPro que debe eliminar una etiqueta de un archivo .cdx distinto del .cdx estructural. Por ejemplo, si tiene un archivo .cdx no estructural llamado QRTLYRPT.CDX con una etiqueta llamada title, puede eliminar la etiqueta title con el comando siguiente:

DELETE TAG title OF qtrlyrpt

Para eliminar todas las etiquetas de un archivo .cdx estructural o no estructural, utilice la cláusula ALL del comando DELETE TAG.

Eliminar un archivo de índice autónomo .idx

Como los archivos de índice autónomos solamente contienen una expresión de clave única, para eliminar la expresión basta con eliminar el archivo .idx del disco.

Para eliminar un archivo de índice autónomo .idx

  • Utilice el comando DELETE FILE.

Por ejemplo, el código siguiente elimina el archivo de índice autónomo .idx Orddate.idx:

DELETE FILE orddate.idx

También puede utilizar alguna utilidad, como el Explorador de Windows, para eliminar los archivos .idx autónomos innecesarios.

Vea también

Eliminar un índice | Crear índices basados en expresiones | Trabajar con registros | Diseñador de tablas | Crear un índice | Crear múltiples índices | Ordenar por múltiples campos | Crear índices para tablas


Crear índices basados en expresiones

Para hacer más eficaces sus aplicaciones puede crear índices basados en expresiones. Estas expresiones pueden ser simples o complejas, dependiendo de lo que se quiera lograr.

Indexar por expresiones simples

Las expresiones de índice simples se basan en un solo campo o en la concatenación de dos o más campos de caracteres para formar una clave de múltiples campos. Por ejemplo, para la tabla Customer de la base de datos TasTrade podría crear un índice basado en la expresión:

country + region + cust_id

Al examinar la tabla Customer ordenada según esta etiqueta de índice, los clientes aparecerán ordenados por países, dentro de cada país por regiones y dentro de cada región por Id. de cliente.

Evitar valores duplicados en una combinación de campos

Si desea evitar la duplicación de valores en múltiples campos, puede crear un índice principal o candidato basado en una expresión que combine múltiples campos.

Por ejemplo, si tiene una tabla que almacena el prefijo de zona y el número de teléfono en dos columnas:

Prefijo de zona | Número de teléfono
206 | 444-nnnn
206 | 555-nnnn
313 | 444-nnnn

En ambas columnas existen valores duplicados en otras filas. Sin embargo, no hay ningún número de teléfono duplicado, ya que el valor está formado por la combinación de los dos campos. Por ello, si se especifican las dos columnas en la expresión de un índice principal o candidato, las filas del ejemplo no se considerarán duplicadas. Si intenta introducir un valor con el mismo prefijo de zona y el mismo número de teléfono que una de las filas existentes, Visual FoxPro rechazará la entrada por estar duplicada.

Usar valores NULL en expresiones de índice

Puede crear índices sobre campos que contengan valores NULL. Las expresiones de índice cuyo resultado es .NULL. se insertan en el archivo .cdx o .idx, delante de las entradas no NULL. Todos los valores NULL quedan, por lo tanto, al principio del índice.

El ejemplo siguiente muestra uno de los efectos de indexar valores NULL. Es el estado de la tabla antes de aplicar el índice:

Hay valores NULL en el campo SocSec de dos registros

El valor .NULL. en dos registros representa el hecho de que los números de seguridad social de Anne Dunn y Alan Carter son desconocidos o no están disponibles. Puede crear un índice con el número SocSec, como en el ejemplo siguiente:

INDEX ON SocSec + LastName + FirstName TAG MyIndex

Al ver la tabla ordenada por este índice, el orden que se utiliza es el siguiente:

Al indexar por SocSec, los registros con valores NULL en SocSec aparecen en primer lugar

Cuando la expresión de índice contiene valores NULL, los registros cuyo valor de SocSec es .NULL. se colocan primero, ordenados por LastName, y a continuación se colocan los registros cuyos valores de SocSec no son NULL. Observe que hay dos entradas para Alan Carter. Como el registro 5 contiene un valor NULL, se indiza antes que el registro 2.

Indexar por expresiones complejas

También puede crear índices basados en expresiones más complejas. Las expresiones de clave de índice de Visual FoxPro pueden contener funciones de Visual FoxPro, constantes o funciones definidas por el usuario.

La expresión que cree debe ofrecer como resultado no más de 100 caracteres en el caso de índices autónomos (.idx) o de 240 caracteres para las etiquetas de índice .cdx. Puede utilizar campos de tipos de datos diferentes en una sola etiqueta, convirtiendo los componentes individuales de la expresión en datos de tipo Carácter.

Para aprovechar la optimización de consultas Rushmore, la expresión de índice debe cumplir exactamente los criterios.

Usar funciones de Visual FoxPro en una etiqueta de índice

Puede utilizar funciones de Visual FoxPro en las etiquetas de índice. Por ejemplo, puede utilizar la función STR( ) para convertir un valor numérico en una cadena de caracteres. Si desea crear una etiqueta de índice para la tabla customer que combine el campo cust_id con el campo maxordamt, puede convertir maxordamt de un campo Currency con ancho 8 en un campo de 8 caracteres con dos decimales, utilizando el código siguiente:

INDEX ON cust_id + STR(maxordamt, 8, 2) TAG custmaxord

Si desea reducir el tamaño de los índices para campos que contienen valores enteros, puede convertir los valores enteros en una representación de caracteres binarios con la función BINTOC( ). También puede convertir los valores binarios en valores enteros con la función CTOBIN( ).

Si desea crear un índice para ordenar una tabla en orden cronológico, puede utilizar la función DTOS( ) para convertir un campo de fecha en una cadena de caracteres. Para tener acceso a la tabla employee por hire_date y emp_id, puede crear la siguiente expresión de clave de índice:

INDEX ON DTOS(hire_date) + emp_id TAG id_hired

Incluir procedimientos almacenados o funciones definidas por el usuario

Para hacer más eficaz el índice puede hacer referencia en su expresión a un procedimiento almacenado o a una función definida por el usuario. Por ejemplo, puede utilizar un procedimiento almacenado o una FDU para extraer el nombre de la calle de un campo único que incluya además del nombre el número de la calle. Si el número de la calle es siempre numérico, el procedimiento almacenado o la FDU pueden devolver la parte de caracteres del campo y rellenar el resto con espacios hasta completar una clave de índice de longitud constante. A continuación puede utilizar esta clave de índice para tener acceso a los registros de la tabla ordenados por el nombre de calle.

Puede ser preferible utilizar un procedimiento almacenado en lugar de una FDU en las etiquetas de índice, si la tabla está asociada a una base de datos. Como las FDU se almacenan en archivos independientes de la base de datos, puede mover o eliminar el archivo de la FDU, lo que hará que la etiqueta que hace referencia a la misma deje de ser válida. El código de los procedimientos almacenados, por el contrario, se almacena en el archivo .dbc y Visual FoxPro puede encontrarlo siempre.

Otra ventaja de los procedimientos almacenados en las etiquetas de índice es que la referencia a un procedimiento almacenado garantiza que el índice se basará en el código especificado. Si utiliza una FDU en la expresión de índice, se usará en la indización toda FDU que se encuentre al alcance en ese momento y que tenga el mismo nombre que la FDU a la que hace referencia el índice.

Nota Tenga cuidado al hacer referencia a un procedimiento almacenado o una FDU en una expresión de índice, ya que el tiempo necesario para crear o actualizar el índice aumentará.

Usar datos de un campo en otra tabla

Puede crear una etiqueta de índice que haga referencia a una tabla abierta en otra área de trabajo. Lo mejor es utilizar un índice autónomo (.idx) para las etiquetas que hagan referencia a más de una tabla. Esto se debe a que si se incluye una etiqueta de este tipo en un archivo .cdx estructural, Visual FoxPro no permitiría abrir la tabla hasta que esté abierta la tabla referenciada en la etiqueta de índice.

Vea también

Eliminar un índice | Acceder a los registros en orden descendente | Trabajar con registros | STR( ) (Función) | BINTOC( ) (Función) | Filtrar datos | Crear un índice | Crear múltiples índices | Ordenar por múltiples campos | Crear índices para tablas


Acceso a los registros en orden descendente

Para ver los registros en orden descendente puede crear un índice descendente o bien leer un índice existente en orden descendente.

Para crear un índice descendente

  • En la ficha Índices del Diseñador de tablas, elija el botón de flecha situado a la izquierda del cuadro Nombre de forma que la flecha apunte hacia abajo.

    –O bien–

  • Utilice la cláusula DESCENDING con el comando INDEX ON para crear un índice descendente.

Para crear archivos de índice estructural compuesto, puede utilizar los dos métodos. Para crear otros tipos de archivos de índice, sólo puede utilizar el segundo. Por ejemplo, puede crear un nuevo índice descendente que ordene la tabla product de mayor a menor por unit_price y examinar la tabla con el nuevo orden, mediante el código siguiente:

USE products
INDEX ON unit_price TAG unit_price DESCENDING
BROWSE

Para leer un índice existente en orden descendente

  • Utilice la cláusula DESCENDING del comando SET ORDER para leer el índice en orden descendente.

Leer los índices en orden descendente permite aprovechar los índices existentes, en lugar de crear otros nuevos. Por ejemplo, puede que ya haya creado un índice que ordene la tabla product por unit_price con el código siguiente:

USE products
INDEX ON unit_price TAG unit_price

De forma predeterminada, el orden es ascendente. Ahora puede examinar la tabla en orden descendente con el siguiente código:

USE products
SET ORDER TO unit_price DESCENDING
BROWSE

En los ejemplos anteriores se trata el acceso a la información en orden descendente. Los comandos SET ORDER e INDEX cuentan con una cláusula ASCENDING. Si combina estos dos comandos puede obtener una gran flexibilidad en sus aplicaciones. Por ejemplo, si utiliza la cláusula ASCENDING o DESCENDING para crear un índice en el orden de uso más frecuente, puede utilizar la cláusula opuesta con el comando SET ORDER para ver o tener acceso a la información en el orden inverso cuando resulte más adecuado.

Vea también

Crear índices basados en expresiones | Filtrar datos | Trabajar con registros | Diseñador de tablas | Crear un índice | Crear múltiples índices | Ordenar por múltiples campos | Crear índices para tablas


Filtrar datos

Puede limitar el acceso a los registros que desee con un índice filtrado. Al crear un índice filtrado, solamente estarán disponibles para su presentación y acceso los registros que coincidan con la expresión de filtro.

Para filtrar los datos con un índice filtrado

  • En el Diseñador de tablas, seleccione la ficha Índices y escriba una expresión de filtro en el cuadro Filtro del índice por el que desea filtrar.

    –O bien–

  1. En el Administrador de proyectos, seleccione la tabla a la que desea agregar un índice y elija Modificar.
  2. En la ficha Índices, cree o seleccione un índice.
  3. En el cuadro Filtro, escriba una expresión de filtro.

    Por ejemplo, intente crear un filtro que seleccione únicamente los registros de clientes de Canadá:

    customer.country = "Canada"
  4. Elija Aceptar.

    –O bien–

  • Utilice la cláusula opcional FOR con el comando Index.

Si incluye la cláusula opcional FOR con el comando INDEX, el archivo de índice actuará como un filtro para la tabla. En el archivo de índice sólo se crearán claves para los registros que coincidan con la expresión de filtro. Por ejemplo, si prepara una circular destinada a los representantes de ventas de su empresa y desea ordenar el envío por países, puede crear un índice que filtre la tabla employee de forma que sólo aparezcan los registros de los representantes de ventas, ordenados por países y por apellidos. El código siguiente crea un índice filtrado y muestra los datos resultantes en una ventana Examinar:

USE employee
INDEX ON country+last_name FOR title = "Sales Representative" ;
TAG reps_cntry
BROWSE

Al ver la ventana Examinar, sólo aparecerán los representantes de ventas, no los registros de los demás empleados.

Un índice filtrado muestra solamente los registros que coinciden con la expresión de filtro.

Filtrar datos de forma temporal

Puede utilizar el comando SET FILTER para filtrar los datos de forma temporal, sin necesidad crear un índice filtrado especial. Este comando es especialmente útil cuando se desea especificar una condición temporal que los registros de una tabla deben satisfacer para ser accesibles. Para desactivar el filtro en la tabla actual, ejecute SET FILTER TO sin ninguna expresión. Por ejemplo, puede utilizar el comando siguiente para filtrar la tabla customer de forma que sólo muestre los clientes de Alemania:

USE customer
SET FILTER TO country = "Germany"
BROWSE

El comando SET FILTER admite como condición de filtro cualquier expresión lógica válida en Visual FoxPro. Una vez ejecutado el comando SET FILTER, sólo estarán disponibles en la tabla los registros que cumplan la condición de filtro. Todos los comandos de acceso a la tabla respetan la condición de SET FILTER. Puede establecer un filtro distinto para cada tabla abierta.

Vea también

Acceder a los registros en orden descendente | Mejorar la eficacia de los índices | Trabajar con registros | Diseñador de tablas | INDEX (Comando) | Crear un índice | Crear multiples índices | Ordenar por múltiples campos | Crear índices para tablas


Mejorar la eficacia de los índices

Puede mejorar el rendimiento de las tablas indizadas si mantiene los índices actualizados y utiliza en ellos expresiones optimizables.

Volver a generar un archivo de índice activo

Los archivos de índice quedan obsoletos cuando se abre una tabla sin abrir sus archivos de índice correspondientes y se modifican los campos clave. Los archivos de índice también pueden quedar invalidados a consecuencia de una caída del sistema o al tener acceso a una tabla y actualizarla desde otro programa. Cuando los archivos de índice queden obsoletos, puede actualizarlos volviendo a indizarlos con el comando REINDEX.

Para volver a generar un archivo de índice activo

  • En el menú Tabla, elija Volver a generar índices.

    –O bien–

  • Utilice el comando REINDEX.

Por ejemplo, el código siguiente actualiza el archivo de índice de la tabla Customer:

USE customer
REINDEX

Con REINDEX se actualizan todos los archivos de índice abiertos en el área de trabajo seleccionada. Visual FoxPro reconoce cada tipo de archivo de índice (.cdx compuestos, .cdx estructurales e .idx de índice único) y vuelve a indexar según corresponda. Al hacerlo, actualiza todas las etiquetas de los archivos .cdx y también los archivos .cdx estructurales, que se abren automáticamente con la tabla.

También puede actualizar los archivos de índice obsoletos con el comando REINDEX.

Volver a indexar en tiempo de ejecución

Volver a indexar lleva tiempo, especialmente cuando se trata de tablas de gran tamaño. Sólo debe volver a indexar cuando sea necesario. Para mejorar el rendimiento, puede volver a indexar durante la inicialización o la finalización del programa, en lugar de hacerlo durante la ejecución principal de la aplicación.

Usar índices para optimizar consultas

Puede utilizar índices para acelerar las consultas y otras operaciones. Para obtener más información acerca de la creación de expresiones de índice optimizables Rushmore, consulte Optimizar aplicaciones.

Vea también

Filtrar datos | Trabajar con múltiples tablas | Trabajar con registros | Trabajar con alias de tablas | Crear un índice | Crear múltiples índices | Ordenar por múltiples campos | Crear índices para tablas


Establecer relaciones persistentes entre índices

Los índices permiten establecer relaciones persistentes entre las tablas de una base de datos. Las relaciones persistentes son relaciones entre tablas de base de datos almacenadas en el archivo de la base de datos y se utilizan automáticamente como condiciones predeterminadas de combinación en el Diseñador de consultas y de vistas. Las relaciones persistentes aparecen también en el Diseñador de bases de datos en forma de líneas que unen los índices de las tablas y son las relaciones predeterminadas al utilizar las tablas en el entorno de datos.

A diferencia de las relaciones temporales definidas con el comando SET RELATION, las relaciones persistentes no necesitan volver a crearse cada vez que se utilizan las tablas. Sin embargo, las relaciones persistentes no controlan la relación entre los punteros de registro en las tablas, por lo que debe utilizar tanto las relaciones temporales definidas con SET RELATION como las relaciones persistentes al programar aplicaciones de Visual FoxPro. Para obtener más información acerca de la definición de relaciones persistentes, consulte Desarrollar bases de datos.

Vea también

Establecer relaciones temporales entre tablas | Trabajar con registros | Trabajar con alias de tablas | Trabajar con múltiples tablas | Mejorar la eficacia de los índices


Trabajar con consultas

Cuando la aplicación incluye tablas, puede seleccionar y mostrar los datos de las tablas utilizando consultas. Puede utilizar las consultas para varias tareas:

  • Responder rápidamente a una pregunta. Por ejemplo, puede encontrar información del tipo:
    • Nombre y dirección de cliente asociado a un número ID en particular
    • Número de órdenes a pagar
    • Número de clientes con saldos vencidos
    • Región o vendedor con mejor registro de ventas
  • Ver un subconjunto relevante de sus datos
  • Organizar y generar los datos para un informe. Puede además ejecutar informes sin que esté utilizando una consulta.

Puede crear consultas desde tablas, definir y organizar los resultados, agrupar entradas de usuarios utilizando consultas y personalizar consultas. Puede además, enviar los resultados de las consultas a diferentes destinos de tal forma que las pueda utilizar en otras partes de su aplicación.

En esta sección

Crear consultas
Describe los diferentes métodos que puede utilizar para crear consultas.
Consultar múltiples tablas y vistas
Describe como crear consultas desde múltiples tablas.
Controlar la selección de registros con combinaciones
Describe como usar las condiciones de unión (join) entre tablas para expandir o acotar los resultados.
Definir los resultados de la consulta
Describe como puede definir los datos que aparecen en los resultados de la consulta.
Organizar los resultados de la consulta
Describe como puede organizar los datos que aparecen en los resultados de la consulta.
Personalizar consultas
Describe los procedimientos para personalizar consultas en el Diseñador de Consultas, así como limitar o expandir los resultados de la consulta eliminando registros duplicados, obtener porcentajes del total de registros y añadir expresiones para filtrado.
Personalizar consultas usando instrucciones SELECT SQL
Describe como personalizar consultas al ver y editar la instrucción SELECT (SQL) generada para vistas en el Diseñador de Vistas.
Agrupar entradas de usuario con consultas
Describe cómo puede agrupar las entradas de usuario desde un formulario para utilizarlas el instrucciones SELECT (SQL) de consultas.
Ejecutar consultas
Describe cómo ejecutar consultas después que fueron definidas y explica los diferentes destinos a los que puede dirigir los resultados.

Temas relacionados

Trabajar con datos
Proporciona información que le ayuda a crear aplicaciones eficaces, analizando los requerimientos de datos y diseñando los componentes de aplicación para cubrir estas necesidades.
Trabajar con tablas
Debate cómo asegurarse de que las tablas tengan la estructura que requiere la aplicación. Los tipos de datos e índices escogidos son esenciales en el éxito de su aplicación.
Trabajar con registros
Explica cómo guardar datos en la tabla añadiendo nuevos registros y cómo cambiar y eliminar los registros existentes a través de la interfaz o utilizando comandos.

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Crear consultas

El proceso básico para crear una consulta generalmente es el mismo independientemente del método que se utilice. El siguiente proceso general describe la creación de una consulta desde una única tabla. También puede crear consultas desde múltiples tablas.

Para crear una consulta

  1. Determine el tipo de información que necesita encontrar y la tabla o vista desde la cual necesita recuperar los datos.
  2. Seleccione la tabla o vista y los campos correspondientes que desee de ella.
  3. Especifique cualquier criterio adicional para extraer registros desde la tabla o vista.
  4. Genere la consulta y dirija los resultados a una salida.

Cuando haya creado una consulta que desee mantener, puede guardarla dándole un nombre. Las consultas se almacenan como archivos con extensión .qpr

Puede usar diferentes métodos para crear consultas:

  • Utilice el Asistente para consultas que lo guía a través de los pasos para crear consultas.
  • Use el Diseñador de consultas para crear y personalizar rápidamente las consultas.
  • Utilice instrucciones SELECT SQL, las cuales ofrecen formas más potentes y flexibles para generar consultas usando código.

Crear consultas con el Asistente para consultas

Si desea ayuda para crear una consulta rápidamente, utilice uno de los Asistentes para consultas de Visual FoxPro. Un Asistente para consultas le pregunta en qué tablas o vistas desea buscar información y crea una consulta basada en sus respuestas a una serie de preguntas. Para obtener más información acerca de los Asistentes para consultas, presione F1 para ver la Ayuda mientras utiliza el asistente o vea Asistente para consultas.

Para crear una consulta con el Asistente para consultas

  1. Abra una tabla libre o en el Administrador de proyectos abra una base de datos o una tabla de una base de datos.
  2. En el menú Herramientas elija Asistentes y haga clic en Consulta.
  3. Seleccione Asistente para consultas y haga clic en Aceptar.
  4. Siga las instrucciones en las pantallas del asistente.

También pude empezar a crear una consulta con el Asistente para consultas, guardarla y después usar el Diseñador de consultas para modificarla.

Crear una consulta con el Diseñador de consultas

Si no desea utilizar ningún Asistente para consultas, puede emplear el Diseñador de consultas para crear su consulta. Con el Diseñador de consultas puede buscar aquellos registros que satisfacen los criterios que especifique, para recuperar información almacenada en tablas o vistas. Además, puede ordenar y agrupar los registros como necesite, así como crear informes, tablas y gráficos basándose en los resultados obtenidos. Para más información, vea Diseñador de consultas y de vistas.

Seleccionar tablas para consultas

Si está creando consultas a partir de tablas libres o vistas, puede seleccionarlas después de iniciar el Diseñador de consultas. Sin embargo, si desea seleccionar tablas o vistas de una base de datos, abra la base de datos antes de iniciar el Diseñador de consultas. Si sus tablas, bases de datos o vistas están en un proyecto, abra el Administrador de proyectos antes de iniciar el Diseñador de consultas. Para más información acerca de utilizar múltiples tablas y vistas, consulte Consultar múltiples tablas y vistas.

Cuando agregue mas de una tabla a su consulta, puede especificar condiciones de combinación para modificar el alcance de los resultados devueltos. Visual FoxPro muestra el cuadro de diálogo Condición de combinación para que especifique la condición para cada tabla adicional que agregue a la consulta. Para más información sobre especificar condiciones de combinación, vea Controlar la selección de registros con combinaciones, Condiciones de combinación para tablas, consultas y vistas y Cuadro de diálogo Condición de combinación.

Seleccionar una tabla libre para una consulta

  1. En el menú Archivo haga clic en Nuevo.
  2. En el cuadro de diálogo Nuevo, haga clic en Consulta y después en Nuevo archivo.
  3. En el cuadro de diálogo Agregar tabla o vista, haga clic en Otro.
  4. Seleccione una tabla y haga clic en Cerrar.

Seleccionar una tabla de una base de datos para una consulta

  1. Abra una base de datos o en el Administrador de proyectos seleccione una base de datos.
  2. En el menú Archivo haga clic en Nuevo.
  3. En el cuadro de diálogo Nuevo, haga clic en Consulta y luego en Nuevo archivo.
  4. En el cuadro de diálogo Agregar tabla o vista, seleccione una tabla de una base de datos y haga clic en Agregar.
  5. Cuando haya terminado la selección de tablas, elija Cerrar.

    Las tablas aparecen en la superficie del Diseñador de consultas.

También puede crear consultas usando el comando CREATE QUERY para abrir el Diseñador de consultas. Para más información, vea CREATE QUERY (Comando).

En lugar de utilizar el alias generado automáticamente cuando agrega una tabla o vista, puede especificar un alias para cada tabla que use, escribiéndolo en el cuadro Alias que aparece en el cuadro de diálogo Agregar tabla o vista.

Quitar y agregar otras tablas

Puede quitar tablas desde y agregar otras tablas a una consulta.

Para quitar una tabla desde y agregar otra tabla a una consulta

  1. En el Diseñador de consultas, haga clic en la tabla que desea quitar.
  2. En la barra de herramientas Diseñador de consultas, haga clic en Quitar tabla para quitar la tabla y después en Agregar tabla para seleccionar otra tabla o vista que desee.

Crear consultas con el Diseñador de consultas

Después de seleccionar las tablas que desea usar para su consulta, puede empezar a crear consultas en el Diseñador de consultas. También puede seleccionar tablas y crear una consulta con el Asistente para consultas, guardar la consulta y utilizar después el Diseñador de consultas para modificarla.

Para crear una consulta con el Diseñador de consultas

  1. En el Diseñador de consultas, haga clic en la ficha Campos.
  2. En la lista Campos disponibles, seleccione un campo y haga clic en Agregar.

    Para seleccionar múltiples campos, presione la tecla SHIFT mientras selecciona campos y a continuación haga clic en Agregar.

  3. Para especificar el orden en el cual aparecen los campos en la salida, haga clic en y arrastre el botón doble flecha que aparece a la izquierda del campo que desea mover en la lista Campos seleccionados. Mueva el botón a lo posición en la que desea dejar el campo.

Puede personalizar o definir su consulta más adelante en el Diseñador de Consultas realizando las siguientes tareas:

  • Cambie la condición de combinación de las tablas seleccionadas en la ficha Combinación.
  • Filtre los resultados por campo en la ficha Filtro.
  • Organice los resultados por campo en la ficha Ordenar por.
  • Agrupe los resultados por campo en la ficha Agrupar por.
  • Seleccione un tipo diferente de salida en la ficha Varios.

Para más información acerca de definir su consulta, vea Definir resultados de la consulta. Para mayor información sobre personalizar su consulta y utilizar las fichas del Diseñador de consultas, vea Personalizar consultas y Diseñador de consultas y de vistas. Para más información acerca de organizar los resultados de su consulta, vea Organizar los resultados de la consulta.

Agregar observaciones a consultas

También puede agregar observaciones o notas acerca de la consulta para describir su propósito.

Para agregar un comentario a una consulta

  1. Haga clic en la superficie del Diseñador de consultas para traerlo al frente.
  2. En el menú Consulta haga clic en Comentarios.
  3. En el cuadro de diálogo Comentario, escriba el comentario que desee hacer acerca de la consulta.

Los observaciones que agregue a una consulta se almacenan con instrucción SELECT SQL generada por del Diseñador de consultas. Puede ver los observaciones haciendo clic en el botón Mostrar ventana SQL en la barra de herramientas Diseñador de consultas para abrir la ventana SQL. Los observaciones que inserte utilizando el cuadro Comentario aparecen en la instrucción SELECT SQL mencionada antes, precedidos por un asterisco (*).

Nota Cuando modifique un comentario usando el cuadro Comentario, los cambios sólo se hacen al primer comentario y no afectan cualquier otro comentario que haya insertado manualmente en al ventana SQL.

Para más información acerca de la instrucción SELECT SQL generada por una consulta, vea SELECT - SQL (Comando). Para mayor información sobre personalizar consultas en el Diseñador de consultas y el uso del comando SELECT SQL en la ventana SQL, vea Personalizar consultas y Personalizar consultas usando instrucciones SELECT SQL.

Vea también

Trabajar con consultas | Definir resultados de la consulta | Consultar múltiples tablas y vistas | Organizar los resultados de la consulta | Ejecutar consultas | Diseñador de consultas y de vistas | Actualizar datos en una vista | Crear vistas


Consultar múltiples tablas y vistas

Cuando tenga que consultar información almacenada en dos o más tablas, bastará con agregar todas las tablas necesarias a su consulta y combinarlas según campos comunes. Después, podrá buscar la información necesaria en los registros de todas las tablas. En sus consultas puede usar cualquier combinación de tablas de base de datos, tablas libres y vistas locales o remotas.

Como el término “vista” puede referirse tanto a un origen de entrada como al objeto que se está creando en el Diseñador de vistas, el término “tabla” se usa tanto para tablas como para vistas usadas como orígenes de entrada.

Agregar vistas y tablas a una consulta

Cuando agregue tablas o vistas a su consulta, Visual FoxPro le sugerirá una posible combinación entre las tablas o las vistas según los nombres de campos coincidentes.

Por ejemplo, si agrega la tabla Customer del directorio ...\Samples\Data de Visual FoxPro al Diseñador de consultas y después agrega la tabla Orders, Visual FoxPro sugerirá una combinación entre las tablas basada en los campos coincidentes Customer.cust_id y Orders.cust_id.

Si usa una base de datos que contiene relaciones persistentes definidas entre las vistas o las tablas de la misma, Visual FoxPro usará las relaciones existentes como combinaciones predeterminadas.

Si desea agregar tablas de base de datos o vistas a la consulta, es posible que tenga que abrir la base de datos adecuada para poder disponer de ellas.

Para agregar una tabla o una vista a una consulta

  1. En la barra de herramientas Diseñador de consultas, elija Agregar tabla.
  2. En el cuadro de diálogo Agregar tabla o vista, seleccione la base de datos que desea usar, elija Tablas o Vistas, seleccione la tabla o vista que desea agregar y elija Aceptar.

    –O bien–

    Si desea agregar una tabla que no forme parte de la base de datos, elija Otras, busque la tabla en el cuadro de diálogo Abrir y elija Aceptar.

  3. En el cuadro de diálogo Condición de combinación, compruebe la combinación sugerida y elija Aceptar.

    Si Visual FoxPro no puede sugerir una coincidencia probable entre los campos, seleccione manualmente los campos coincidentes en el cuadro de diálogo Condición de combinación.

Vea también

Cuadro de diálogo Agregar tabla o vista | Cuadro de diálogo Condición de combinación | Controlar la selección de registros con combinaciones | Personalizar consultas | Crear consultas | Crear consultas | Ejecutar consultas


Controlar la selección de registros con combinaciones

Con múltiples tablas en la consulta o vista, puede controlar qué registros selecciona la consulta o vista si modifica o agrega combinaciones. Trabajar con combinaciones es similar para consultas y vistas, por lo tanto, los procedimientos usan consultas como ejemplos. Aunque puede ejecutar una consulta o vista sin combinaciones, el resultado generalmente tiene tiene poco valor práctico y podría necesitarse gran cantidad de tiempo para procesarlo.

Para más información acerca de las condiciones de combinación, consulte Condiciones de combinación para tablas, consultas y vistas. Para más información acerca de crear consultas y vistas, ver Crear consultas y Crear vistas.

Agregar condiciones de combinación

Las combinaciones aparecen automáticamente cuando se agregan las tablas a la consulta o vista. Sin embargo, si los nombres de campos relacionados no coinciden, tendrá que crear sus propias combinaciones entre tablas y agregarlas utilizando el cuadro de diálogo Condición de combinación en el Diseñador de vistas y consultas.

El proceso para agregar una combinación es similar entre los diseñadores de Vistas y de Consultas. El siguiente procedimiento describe como agregar una combinación en el Diseñador de consultas.

Para crear una combinación entre tablas usando el Diseñador de consultas

  1. Crear o abrir una consulta.
  2. Agregar una tabla a la consulta para tener dos o más tablas.
  3. En la barra de herramientas Diseñador de consultas, haga clic en Agregar combinación.
  4. En el cuadro de diálogo Condición de combinación, seleccione los nombres de campo relacionados en las dos tablas.
    Nota Combine columnas sólo si tienen el mismo tamaño y el mismo tipo de datos.
  5. Seleccione un tipo de combinación y haga clic en Aceptar.

También puede agregar combinaciones para tablas existentes que aparecen en la superficie del Diseñador de vistas o consultas, haciendo clic y arrastrando el ratón entre los campos en las tablas o eligiendo el botón Agregar combinación en la barra de herramientas del Diseñador de vistas o consultas, para mostrar el cuadro de diálogo Condición de combinación. También puede crear un tipo de combinación utilizando la cláusula FROM en la instrucción SELECT SQL.

Para más información acerca del cuadro de diálogo Condición de combinación, consulte Cuadro de diálogo Condición de combinación. Para mayor información sobre la instrucción SELECT SQL generada por los Diseñadores de vistas y consultas, vea Crear consultas, Crear vistas y SELECT - SQL (Comando).

Por ejemplo, suponga que desea recuperar información de órdenes, incluyendo información acerca del cliente que ha colocado la orden. El siguiente ejemplo crea una vista utilizando dos tablas, Customers y Orders. Ambas tablas tienen un campo identificador del cliente. Las tablas está relacionadas basadas en una combinación interior (inner join), la cual especifica que en resultados se incluyan sólo aquellas filas de la tabla Customer que coincidan con uno o mas registros de la tabla Orders.

El siguiente código abre la base de datos de ejemplo llamada TestData.dbc, crea una vista utilizando el comando CREATE SQL VIEW como se describe en el ejemplo, y usa la cláusula FROM para especificar la condición de combinación:

OPEN DATABASE testdata
CREATE SQL VIEW cust_orders_view AS ;
   SELECT * FROM testdata!customer ;
      INNER JOIN testdata!orders ;
      ON customer.cust_id = orders.cust_id

Modificar condiciones de combinación

Puede modificar combinaciones existentes de la siguiente forma:

  • Elija un tipo de combinación diferente para modificar el alcance de los registros devueltos.
  • Seleccione campos diferente en la tabla para la combinación.
  • Cambie el operador de comparación.
  • Cambie el orden de las combinaciones

El proceso para modificar una combinación es similar para los ambos diseñadores del vistas y el de consultas. El siguiente procedimiento describe cómo modificar una combinación en el Diseñador de consultas.

Para modificar una combinación

  1. Abra un consulta que contenga las tablas con las con las combinaciones que desea modificar.
  2. En la ficha Combinación del Diseñador de consultas, seleccione la combinación y cambie la condición de combinación como sea necesario.

También puede modificar tipos de combinaciones utilizando la cláusula FROM en el comando SELECT SQL. Para más información acerca de la instrucción SELECT SQL generada por los Diseñadores de vistas u de consultas, vea Crear consultas, Crear vistas y SELECT - SQL (Comando).

Eliminar condiciones de combinación

Puede eliminar combinaciones entre tablas. El proceso para quitar una combinación es similar para ambos diseñadores el de vistas y el de consultas. El siguiente procedimiento describe como eliminar una combinación en el Diseñador de consultas.

Para borrar una combinación

  1. Abra una consulta que contenga las tablas con la combinación que desea eliminar.
  2. En la ficha Combinación del Diseñador de consultas, seleccione la condición de combinación y haga clic en Quitar.

También puede seleccionar la línea de combinación que desea quitar entre dos tablas, en la superficie del Diseñador de vistas o de consultas. En el menú Consulta haga clic en Quitar condición de combinación.

Vea también

Trabajar con consultas | Personalizar consultas | Crear consultas | Ejecutar consultas | Consultar múltiples tablas y vistas | Operadores para el tipo Lógico | Cuadro de diálogo Condición de combinación


Definir los resultados de consultas

Cuando haya abierto el Diseñador de consultas y haya seleccionado la tabla o vista que contiene la información que desea, puede definir los resultados. Como mínimo, tiene que seleccionar los campos que desea. También puede definir los resultados si establece el orden en que se muestran los campos seleccionados y establece filtros para seleccionar qué registros se van a mostrar.

Seleccionar los campos deseados

Antes de ejecutar una consulta debe seleccionar algunos campos para incluirlos en los resultados. En algunos casos, quizá desee utilizar todos los campos de la tabla o la vista. Otras veces, quizá desee centrar la consulta en algunos campos seleccionados como, por ejemplo, los campos que desee incluir en un informe.

Asegúrese de incluir todos los campos que desee utilizar para ordenar o agrupar el resultado de la consulta. Cuando seleccione los campos, también podrá establecer el orden en que se mostrarán en el resultado.

Utilice la ficha Campos del panel inferior del Diseñador de consultas para seleccionar los campos que desea incluir en el resultado de la consulta.

Para agregar un campo al resultado de la consulta

  • Seleccione el nombre del campo y elija Agregar.

    –O bien–

  • Arrastre el nombre del campo hasta el cuadro Campos seleccionados.

Seleccionar todos los campos para el resultado

También puede seleccionar todos los campos por nombre o usar el comodín asterisco. Si selecciona los campos por nombre, los nombres exactos de los campos se incluyen en la consulta. Si ejecuta la consulta después de agregar campos a la tabla, los campos nuevos no se incluyen en los resultados.

Si usa el comodín, el asterisco se incluye en la consulta e incluye todos los campos que están en la tabla cuando se realice la consulta. Si la estructura de la tabla ha cambiado desde que se creó la consulta, los nuevos campos también aparecen en los resultados de la consulta.

Para agregar todos los campos disponibles a una consulta de una sola vez

  • Elija Agregar todos para agregar campos por nombre.

    –O bien–

  • Arrastre el asterisco de la parte superior de la tabla al cuadro Campos seleccionados.

Mostrar un alias para un campo

Puede hacer que el resultado de la consulta sea más fácil de leer y comprender si agrega un título descriptivo a un campo de resultados. Por ejemplo, es posible que desee mostrar la palabra “SumMaxOrd” en la parte superior de la columna de resultados en lugar del nombre o expresión del campo, SUM(MaxOrdAmount).

Para agregar un alias a un campo

  1. En el cuadro Funciones y expresiones, escriba el nombre del campo y, a continuación, escriba AS y el alias, como en este ejemplo:
    SUM(maxorderamt) AS SumMaxOrd
  2. Elija Agregar para colocar el campo con el alias en el cuadro Campos seleccionados.

Establecer el orden de los campos de resultados

El orden en que aparecen los campos en la ficha Campos determina el orden de las columnas de información del resultado de la consulta.

Para cambiar el orden de las columnas del resultado de la consulta

  • Arrastre hacia arriba o hacia abajo el cuadro de movimiento situado a la izquierda de un nombre de campo.

Si desea cambiar el orden en que se ordenan las filas de información, use la ficha Ordenar por.

Seleccionar los registros deseados

El paso clave que determina los resultados de la consulta es seleccionar los registros que desea buscar. En la ficha Filtro del Diseñador de consultas puede formular la cláusula WHERE de una instrucción Select para decirle a Visual FoxPro qué registros tiene que buscar y obtener.

Quizá desee buscar un subconjunto de datos determinado para incluirlo en un informe u otro resultado: por ejemplo, todos los clientes que tengan saldos pendientes, todos los clientes de una determinada región o código postal, etc. Para ver únicamente los registros que desea, especifique un valor o un intervalo de valores con los que comparar los registros.

En Visual FoxPro, la ficha Filtro le permite especificar qué campo desea utilizar para seleccionar registros, elegir un criterio de comparación y especificar un ejemplo del valor con el que desea comparar el campo.

Para especificar un filtro

  1. En la lista Nombre de campo, elija un campo que desee utilizar como base para seleccionar registros.
    Nota No puede utilizar campos de tipo General o Memo en un filtro.
  2. En la lista Criterios, elija el tipo de comparación que desea utilizar.
  3. En el cuadro Ejemplo, escriba el criterio de comparación.
    • Use comillas únicamente si la cadena es la misma que el nombre de un campo de una tabla de la consulta; si no es así, no escriba las cadenas de caracteres entre comillas.
    • No escriba entre llaves las fechas.
    • Escriba un punto antes y después de un literal lógico (.T.).
    • Si especifica un nombre de campo de una tabla en la consulta, Visual FoxPro lo reconocerá como un campo.
  4. Si quiere que se ignoren las diferencias entre mayúsculas y minúsculas en búsquedas de datos de tipo carácter, seleccione el botón M/m.

Si desea invertir el significado de un operador lógico, seleccione el botón No. Por ejemplo, si quiere buscar clientes de todas las regiones excepto Washington, use la expresión de selección mostrada en el ejemplo siguiente:

Customer.region Not Like WA

Para limitar la búsqueda, puede agregar más filtros en la ficha Filtro. Para obtener más información, consulte el tema Ajustar la búsqueda.

Si usa más de una tabla o vista en su consulta, puede expandir los registros que seleccione por el tipo de combinación que elija.

Seleccionar un número o porcentaje de registros

Si sólo necesita un cierto número o porcentaje de registros del conjunto de resultados que su consulta devolvería, puede usar la propiedad Registros incluidos de la ficha Varios de los Diseñadores de consultas o de vistas o puede agregar una cláusula TOP a su instrucción SELECT - SQL. El número que proporcione en una cláusula TOP puede variar entre 1 y 32.767. Para un porcentaje, puede usar un valor entre 0,001 y 99,99.

Por ejemplo, si quiere seleccionar los diez clientes principales con las cantidades de pedidos más altas, puede especificar un GROUP BY en CUST_ID para mostrar un registro agregado para cada cliente y ordenar por ORDER_AMT en la cláusula ORDER BY. Para obtener un TOP 10 verdadero, debe especificar un orden descendente en ORDER_AMT, de forma que los registros con los importes de pedidos más altos aparezcan en primer lugar en el resultado. Si usa un orden ascendente, los registros de resultados se ordenan desde la menor cantidad de pedidos a la mayor. Los registros incluidos que seleccione del conjunto de resultados tendrían en realidad los valores más bajos.

SELECT TOP 10 *;
FROM testdata!customer INNER JOIN testdata!orders ;
ON Customer.cust_id = Orders.cust_id;
GROUP BY Customer.cust_id;
ORDER BY Orders.order_amt DESC

Especificar destinos para resultados de consultas

Al utilizar cláusulas de la instrucción SELECT - SQL, puede especificar varios destinos para almacenar el resultado de sus consultas.

Para enviar los resultados a este destino | Utilice esta cláusula
Otra tabla | INTO TABLE mytable
Matriz | INTO ARRAY aMyArray
Tabla temporal | INTO CURSOR mycursor
Ventana activa | TO SCREEN
Ventana Examinar | Predeterminado si no se especifica otro destino.

Una vez que los resultados están almacenados, puede utilizar comandos para controlar cómo se integran los resultados almacenados para su presentación o impresión.

Vea también

Trabajar con consultas | Crear consultas | Organizar los resultados | Ficha Campos, Diseñadores de consultas y vistas | Consultar múltiples tablas y vistas | Actualizar datos en una vista


Organizar los resultados de consultas

Con el resultado de la consulta definida, puede organizar los registros que aparecen en los resultados, ordenando y agrupando los campos de resultados. Si quiere, también puede filtrar los grupos que aparecen en los resultados.

Ordenar el resultado de la consulta

La ordenación determina cómo se ordenarán los registros o las filas cuando aparezcan en el resultado de la consulta. Por ejemplo, puede ordenar los registros por Región y después por Ciudad, o bien, puede ordenarlos en sentido ascendente basándose en el saldo de cuenta pendiente.

Utilice la ficha Ordenar por para establecer el orden de la consulta. El orden determina cómo se ordenarán las filas o los registros en el resultado de su consulta.

En primer lugar, seleccione en el cuadro Campos seleccionados los campos que desee utilizar y muévalos al cuadro Criterios de ordenación. Después, organice los campos en el orden en que desee mostrarlos en el resultado de la consulta.

Para establecer los criterios de ordenación

  1. En el cuadro Campos seleccionados, seleccione un nombre de campo.
  2. Elija Agregar.

Para quitar criterios de ordenación

  1. Seleccione uno o varios campos que desee quitar.
  2. Elija Quitar.

El orden en que aparecen los campos en el cuadro Criterios de ordenación, determina su importancia cuando se ordene el resultado de la consulta. El primer campo determina el orden principal.

Por ejemplo, si el primer campo del cuadro Criterios de ordenación es Customer.region y el segundo campo de Criterios de ordenación es Customer.city, el resultado se ordenará por Customer.region. Si existe más de un registro en la tabla Customer con el mismo valor de campo region, estos registros se ordenarán también por Customer.city.

Para ajustar la importancia de un campo de ordenación, utilice el botón situado a la izquierda del campo para arrastrarlo hasta la ubicación deseada dentro del cuadro Criterios de ordenación.

Puede ordenar en sentido ascendente o descendente mediante los botones del área Opciones de ordenación. Cada campo de orden aparece en el cuadro Campos de resultados de la ficha Filtro con una flecha hacia arriba o hacia abajo, que indica si la ordenación de dicho campo se va a realizar en sentido ascendente o descendente.

Agrupar el resultado de la consulta

La agrupación consolida o recopila registros similares en un único registro de forma que pueda realizar cálculos basados en grupos de registros. Por ejemplo, suponga que desea calcular la suma de todos los pedidos de una determinada región. En lugar de examinar todos los registros individualmente, puede agrupar en un único registro todos los registros de la misma región y obtener la suma de todos los pedidos de dicha región. Para controlar cómo se agrupan los registros, utilice la ficha Agrupar por del Diseñador de consultas.

La agrupación resulta más útil cuando se emplea junto con una función de agregado, como SUM, COUNT, AVG, etc.

Por ejemplo, suponga que desea ver el importe total en dólares de los pedidos correspondientes a cada Id. de cliente de la tabla Orders. Necesita agrupar en un registro todos los registros de pedidos para un determinado Id. de cliente y calcular la suma de los importes de los pedidos.

En primer lugar, utilice la ficha Campos para agregar la expresión SUM(Orders.order_net) al resultado de la consulta y, a continuación, utilice la ficha Agrupar por para agrupar el resultado según el Id. de cliente. El resultado muestra los pedidos netos totales para cada cliente:

Para establecer las opciones de agrupación

  1. En la ficha Campos, escriba la expresión en el cuadro Funciones y expresiones.

    –O bien–

    Elija el botón de diálogo para usar el Generador de expresiones para introducir una expresión en el cuadro Funciones y expresiones.

  2. Elija el botón Agregar para colocar la expresión en el cuadro Campos seleccionados.
  3. En la ficha Agrupar por, agregue la expresión según la cual desea agrupar el resultado.

También puede establecer un filtro en los resultados agrupados.

Seleccionar los grupos deseados

Para establecer un filtro en registros agrupados o consolidados en lugar de hacerlo en registros individuales, elija Condiciones en la ficha Agrupar por. Puede usar un nombre de campo, una función de agregado en un nombre de campo u otra expresión en el cuadro Nombre de campo.

Basándose en el ejemplo anterior, podría utilizar la consulta que muestra las ventas totales por número de cliente y después, utilizar el botón Condiciones para restringir el resultado a aquellos clientes que tengan más de 50.000 dólares en pedidos netos:

Para establecer una opción Condiciones para un grupo

  1. En la ficha Agrupar por, elija Condiciones.
  2. En el cuadro de diálogo Condiciones, seleccione una función y un nombre de campo en Nombre de campo.
  3. Elija Aceptar.

Vea también

Trabajar con consultas | Definir resultados | Ejecutar consultas | Personalizar consultas | Ordenar por | Consultar múltiples tablas y vistas | Actualizar datos en una vista | Crear consultas


Personalizar consultas

Otras opciones disponibles con el Diseñador de consultas facilitan la personalización de sus consultas. Puede usar filtros para expandir o limitar la búsqueda. También puede agregar expresiones para realizar cálculos o aplicar funciones sobre los datos de los campos.

Ajustar la búsqueda

Quizá descubra que desea tener mayor control sobre el resultado devuelto por una consulta. Por ejemplo, suponga que desea buscar los registros que cumplan más de un criterio, como los clientes de una determinada región que tengan saldos pendientes superiores a 1.000 dólares. O bien, suponga que necesita obtener registros que cumplan un criterio u otro distinto: clientes de Washington o clientes de California. En cualquiera de los casos, necesitará agregar más instrucciones a la ficha Filtro.

En Visual FoxPro, las instrucciones de filtro se combinan automáticamente mediante un operador lógico AND al introducirlas en filas sucesivas de la ficha Filtro. Si desea recuperar los registros que cumplan dos o más condiciones alternativas, puede insertar un operador lógico OR entre las filas con el botón Agregar OR.

Limitar la búsqueda

Si desea que su consulta recupere únicamente los registros que cumplen más de un criterio, enumere los criterios en líneas distintas de la ficha Filtro. Los criterios de una serie se combinan mediante una instrucción implícita AND, de forma que sólo se recuperarán aquellos registros que cumplan todos los criterios enumerados.

Por ejemplo, suponga que busca en una tabla de empleados y desea ver todos los representantes de ventas del Reino Unido. Debe especificar en líneas distintas las dos condiciones que está buscando.

Para establecer condiciones AND

  • Introduzca filtros en la ficha Filtro y elija AND en la columna Lógico.

Expandir la búsqueda

Si desea que su consulta recupere los registros que cumplan cualquiera de una serie de filtros, combine dichos filtros insertando condiciones OR entre ellos.

Por ejemplo, suponga que desea buscar clientes que vivan en Washington o en California:

Para establecer condiciones OR

  • Seleccione un filtro y, a continuación, elija OR en la columna Lógico.

Combinar condiciones

También puede combinar condiciones AND y OR para seleccionar determinados conjuntos de registros.

Por ejemplo, suponga que desea recuperar los registros correspondientes a los clientes de Washington o de California con pedidos con importes máximos superiores a 5.000 dólares:

Eliminar registros duplicados de una consulta

Los registros duplicados son aquellos en los que coinciden todos los campos del resultado. Si desea quitar los registros duplicados del resultado de una consulta, seleccione la casilla Sin duplicados de la ficha Varios. De lo contrario, asegúrese de que la casilla Sin duplicados está desactivada.

Nota Si la casilla Sin duplicados está activada, la palabra DISTINCT precederá a los campos de la parte SELECT del comando SELECT.

Recuperar un número o un porcentaje de registros incluidos

Puede especificar cuántos registros o qué porcentaje de registros con los valores superiores o inferiores de un campo concreto debe devolver la consulta. Por ejemplo, la consulta puede mostrar los registros con los 10 valores superiores o inferiores de un campo específico, o los registros con el 10% de valores superiores o inferiores del campo.

Mediante el valor Registros incluidos de la ficha Varios, puede establecer un número o un porcentaje de registros que desea ver. Para establecer si elige los superiores o inferiores, establezca el tipo de ordenación de la consulta como descendente para ver los superiores o ascendente para ver los inferiores.

Para obtener un número o un porcentaje de registros incluidos

  1. En la ficha Ordenar por, seleccione el campo para el que desea obtener los valores superiores y, a continuación, elija Descendente para mostrar los valores superiores o Ascendente para ver los valores inferiores. Si está ordenando sobre campos adicionales, colóquelos por encima de los valores superiores de la lista Ordenar por.
  2. En la ficha Varios, escriba el número del porcentaje o el número de valores superiores o inferiores que desea obtener en el cuadro Número de registros. Para mostrar un porcentaje, elija Porcentaje.
  3. Si no quiere que se incluyan registros duplicados en el número o en el porcentaje, elija Sin duplicados.

Agregar una expresión a una consulta

Puede crear consultas más flexibles y eficaces si incorpora expresiones, bien sea como filtros o como campos de resultados.

Agregar expresiones a los resultados

También puede incluir funciones y expresiones en el resultado de su consulta, usando para ello el cuadro que aparece al final de la ficha Campos. Si desea asignar un nombre al campo que contiene la expresión, puede agregar un alias.

Por ejemplo, suponga que desea incluir en el resultado de su consulta la suma de los importes de todos los pedidos con el alias Total:

SUM(orders.order_amt) AS Total

Puede escribir una expresión directamente en el cuadro o usar el Generador de expresiones en la ficha Campos.

Para agregar una expresión al resultado de su consulta

  1. En la ficha Campos, escriba la expresión en el cuadro Funciones y expresiones.

    –O bien–

    Elija el botón del cuadro de diálogo para usar el Generador de expresiones e introduzca una expresión en el cuadro Funciones y expresiones.

  2. Elija el botón Agregar para colocar la expresión en el cuadro Campos seleccionados.
    Nota En los cálculos se pasan por alto los valores NULL. Para obtener más información sobre los valores NULL en expresiones, busque “Valores NULL” en la Ayuda.

Usar expresiones como filtros

En lugar de buscar simplemente aquellos registros que coincidan con uno o más campos, puede emplear una expresión para combinar dos campos, o realizar un cálculo basado en un campo y buscar aquellos registros que coincidan con el campo combinado o calculado.

Puede escribir expresiones directamente en el cuadro Ejemplo. Si necesita ayuda, puede usar el Generador de expresiones, que está disponible en el botón del diálogo ubicado junto al cuadro Funciones y expresiones de la ficha Campos.

Por ejemplo, si utiliza la tabla Orders, puede comprobar los descuentos totales para un cliente si combina el importe de los pedidos y el descuento de los mismos en una expresión como la siguiente:

Orders.order_amt * Orders.order_dsc

Vea también

Trabajar con consultas | Personalizar consultas usando instrucciones SELECT SQL | Ejecutar consultas | Organizar los resultados | Generador de expresiones | Ficha Campos, Diseñadores de consultas y vistas | Consultar múltiples tablas y vistas | Actualizar datos en una vista | Crear consultas | Personalizar vistas


Personalizar consultas utilizando lnstrucciónes SELECT - SQL

Al crear una consulta con el Diseñador de Consultas, Visual FoxPro utiliza una instrucción SELECT - SQL para obtener información contenida en los campos de las tablas. La instruccion SELECT - SQL es la herramienta más poderosa para manipular consultas, proporcionando mayor control sobre los resultados de la misma, y dónde serán almacenados. Para verificar la consulta o añadir observaciones, puede mostrar la instrucción SELECT - SQL en la ventana SQL, e incluso puede modificarla para personalizar la consulta.

Al añadir consultas a una aplicación puede utilizar la instrucción SELECT - SQL para combinar varias fuentes de datos, filtrar registros con precisión, manejar datos y ordenar los resultados. Puede utilizar la instrucción SELECT - SQL con consultas creadas en el Diseñador de Consultas, vistas en el Diseñador de Vistas o en código por un evento o procedimiento en un programa (.prg). Para más información acerca de dónde puede utilizar la instrucción o comando SELECT - SQL, vea Crear consultas y Comando SELECT - SQL.

Ver Instrucciones SELECT - SQL Creadas por Consultas

Puede ver instrucciones SQL que la consulta genera en la ventana SQL en cualquier momento, mientras se crean consultas. Al ver la instrucción SQL creada por el Diseñador de Consultas, puede estar seguro de que su consulta está definida adecuadamente.

Para ver la instrucción SELECT - SQL creada por la consulta

  1. Crear consultas utilizando el Diseñador de Consultas.
  2. En el menú Consulta elija Ver SQL.

La ventana SQL se abre para mostrar la instrucción SELECT - SQL creada por su consulta. La primera instrucción es la instrucción SELECT. Por ejemplo puede seleccionar todos los registros desde la tabla Customer en la base de datos TasTrade donde el campo country contenga el valor "Canada":

SELECT *;
FROM tastrade!customer;
WHERE Customer.country = Canada

La secuencia para la instrucción SELECT - SQL que aparece en la ventana SQL es generada automáticamente al cargar o modificar la consulta en el Diseñador de Consultas.

Para ejecutar inmediatamente la instrucción SELECT - SQL, escriba la instrucción en la ventana de comandos. Si desea que cada cláusula aparezca en una línea de la ventana, finalice cada línea exceptuando la última con punto y coma (;) así Visual FoxPro procesará el comando solo después de la última línea.

Para incluir la instrucción SELECT en el código, copie la instrucción SELECT - SQL en un archivo .prg.

Editar la instrucción SELECT - SQL en la ventana SQL

En la ventana SQL, puede editar la instrucción SELECT - SQL para la consulta.

Nota El diseñador de consultas analiza solo la primera instrucción SELECT - SQL en la ventana SQL, las cláusulas directamente involucradas con la instrucción SELECT y el primer comentario que aparece en la consulta. El diseñador de consulta ignora el resto del texto.

Para editar la instrucción SELECT - SQL en la ventana SQL

  1. Cree o abra una consulta.
  2. Abra la ventana SQL y edite la instrucción SELECT - SQL.

Puede especificar un asterisco tabla.* o una lista de campos delimitada por comas para la instrucción SELECT en la ventana SQL. Por ejemplo, puede especificar la instrucción SQL como SELECT * FROM o SELECT campo1, campo2, ... FROM. Sus preferencias son preservadas durante la carga o generación de la consulta. Además puede incluir varias veces el mismo campo en la lista del SELECT.

Para más información acerca de cómo utilizar la sintaxis para el comando SELECT - SQL, vea Comando SELECT - SQL.

Actualizar Cambios de la Instrucción SELECT - SQL Dentro del Diseñador de Consultas.

Después de editar la instrucción SELECT - SQL en la ventana SQL, actualizar los cambios en el Diseñador de Consultas.

Para actualizar la consulta en el Diseñador de Consultas

  • Cerrar la ventana SQL.

Puede actualizar la consulta haciendo clic en el Diseñador de Consultas para traerlo a primer plano.

Si el Diseñador de Consultas no puede ser actualizado después de haber hecho cambios en la ventana Ver SQL, un cuadro de diálogo aparecerá y preguntará lo siguiente:

"El Diseñador de Vista/Consulta no puede actualizar sus cambios. ¿Desea actualizar el contenido desde el Diseñador?"

Si selecciona Si, sus cambios son descartados en la ventana SQL y Visual FoxPro regresa al Diseñador de Vistas. Si selecciona No, Visual FoxPro regresa a la ventana SQL.

Para guardar una instrucción que no pueda ser analizada, tal como una llamada a un procedimiento almacenado, seleccione No y haga clic en el botón Guardar de la barra de herramientas. Visual FoxPro guarda la consulta. Puede también, hacer clic en el botón Guardar después de teclear el comando en la ventana SQL para guardar la consulta. No necesita hacer clic en el Diseñador de Consultas, que provocará que el Diseñador de Consultas intente cargar y analizar la consulta.

Vea también

Trabajar con consultas | Personalizar consultas | Agrupar entradas de usuario con consultas | Ejecutar consultas

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Recopilar entradas de usuario con consultas

Si desea recopilar valores desde un formulario, puede utilizar variables en una instrucción SELECT - SQL y utilizarlas inmediatamente en la instrucción, o ejecutar la instrucción más tarde. Para más información acerca de personalizar consultas utilizando instrucciones SELECT - SQL, vea Personalizar consultas usando instrucciones SELECT SQL y SELECT - SQL (Comando).

Para recopilar entradas de usuario que puedan utilizarse de inmediato

  • En la instrucción SELECT-SQL, incluya el nombre del formulario o una referencia al formulario donde sea conveniente.

El siguiente ejemplo ilustra cómo recopilar valores entrados por el usuario desde un formulario utilizando una referencia a un acceso directo que aparece en la cláusula WHERE de la instrucción SELECT SQL. La referencia al acceso directo, THISFORM, se refiere al formulario activo actualmente. Debe reemplazar los nombre de control ControlName1 y ControlName2.

SELECT * ;
FROM tastrade!customer ;
WHERE customer.country = ;
    THISFORM.ControlName1.Value ;
AND customer.region =
THISFORM.ControlName2.Value ;
GROUP BY customer.postal_code ;
ORDER BY customer.postal_code,
customer.company_name

Para recopilar entradas de usuario que puedan utilizarse más tarde

Para almacenar valores entrados por el usuario desde un formulario cuando no necesita utilizarlos mientras el formulario esté activo, utilice variables en el código. Por ejemplo, si no desea utilizar referencias a un control, puede definir variables en el código para almacenar los valores devueltos por el control.

  1. Define la variable que desea utilizar para almacenar el valor ingresado por el usuario.
  2. En la instrucción SELECT SQL, incluya el nombre de la variable donde sea necesario.

El siguiente ejemplo ilustra como recopilar valores ingresados por el usuario desde un formulario utilizando la variable, cValue, para almacenar el valor devuelto de un control en el formulario activo actualmente. La referencia de acceso directo, THISFORM, se refiere al formulario activo actualmente. La variable aparece en la cláusula WHERE de la instrucción SELECT SQL para seleccionar el país que coincide con cValue.

cValue = THISFORM.ControlName.Value
SELECT * ;
FROM tastrade!customer ;
WHERE customer.country = cValue ;
GROUP BY customer.postal_code ;
ORDER BY customer.postal_code, ;
customer.company_name

Si no define la variable antes de ejecutar la consulta, aparecerá un mensaje de error que indica que la variable no se pudo encontrar. Si la variable no está definida en el código, Visual FoxPro supondrá que la variable se inicializó previamente.

Vea también

Trabajar con consultas | Personalizar consultas usando instrucciones SELECT SQL | Crear consultas | Integrar consultas e informes | Guardar un informe como HTML | Crear informes y etiquetas


Ejecutar consultas

Cuando haya terminado de diseñar su consulta, puede iniciar la consulta; para ello, elija el botón Ejecutar. Visual FoxPro ejecuta la instrucción SELECT SQL creada con el Diseñador de consultas y envía los resultados a una ventana Examinar. Para más información acerca de generar consultas, vea Crear consultas.

Para ejecutar una consulta desde el Diseñador de consultas

  1. Abrir la consulta en el Diseñador de consultas antes de ejecutarla.
  2. En el menú Consulta seleccione Ejecutar consulta.

Visual FoxPro muestra los resultados de la consulta en una ventana Examinar.

También puede ejecutar una consulta desde la ventana Administrador de proyectos sin abrir la consulta, seleccionando el nombre de la consulta en el nodo Consultas de la rama Archivos y después elegir Ejecutar.

Dirigir el resultado de la consulta

Puede enviar a diferentes destinos el resultado de su consulta, como un cursor, tabla o pantalla. Si no ha seleccionado ningún destino de resultado, el resultado de la consulta aparecerá en una ventana Examinar.

Cuando elija Destino de la consulta en el menú Consulta o en la barra de herramientas Consulta, aparecerá el cuadro de diálogo Destino, en el que podrá elegir el destino del resultado de la consulta.

Para elegir un destino de la consulta

  1. En el menú Consulta elija Destino de la consulta.
  2. En el cuadro de diálogo Destino de la consulta, elija un destino para el resultado y rellene los campos adicionales según sea necesario.

En la siguiente tabla se describen los destinos del resultado de la consulta.

Opción de salida | Destino
Examinar | Muestra el resultado de la consulta en un ventana Examinar.
Cursor | Guarda los resultados de la consulta en una tabla temporal de sólo lectura con un nombre que usted especifique.
Tabla | Guarda los resultados de la consulta en una tabla con el nombre que usted especifique.
Pantalla | Muestra los resultados de la consulta en la ventana principal de Visual FoxPro o en la ventana activa actualmente.

Vea también

Organizar los resultados | Personalizar consultas | Ventana Examinar | SELECT - SQL (Comando) | Cuadro de diálogo Destino | Consultar múltiples tablas y vistas | Actualizar datos en una vista | Crear consultas


Almacenar los resultados en una tabla, matriz o cursor

Puede almacenar los resultados de sus consultas en una tabla, una matriz o un cursor para otros usos, tales como completar formularios e imprimir informes y etiquetas. Si desea almacenar los resultados sólo temporalmente, envíelos a una matriz o a un cursor. Si lo que desea es almacenar los resultados definitivamente, envíelos a una tabla.

Para especificar una tabla como destino

  • Utilice la cláusula INTO de la instrucción SELECT - SQL para especificar un destino.

Este ejemplo muestra una cláusula INTO para una tabla:

SELECT * ;
FROM tastrade!customer ;
WHERE customer.country = "Canada" ;
INTO TABLE mytable

Para especificar una matriz como destino

  • Utilice la cláusula INTO de la instrucción SELECT - SQL para especificar un destino.

El ejemplo siguiente muestra una cláusula INTO para una matriz:

SELECT * ;
FROM tastrade!customer ;
WHERE customer.country = "Canada" ;
INTO ARRAY aMyArray

Para especificar un cursor como destino

  • Utilice la cláusula INTO de la instrucción SELECT - SQL para especificar un destino.

Este ejemplo muestra una cláusula INTO para un cursor llamado mycursor:

SELECT * ;
FROM tastrade!customer ;
WHERE customer.country = "Canada" ;
INTO CURSOR mycursor

Si crea una tabla o una matriz, puede utilizarla como cualquier otra tabla o matriz en Visual FoxPro. Si crea un cursor, puede examinar su contenido. El cursor se abre en el menor área de trabajo disponible. Puede tener acceso al mismo con el nombre que le ha dado en la instrucción SELECT - SQL.

Los dos procedimientos siguientes describen dos formas comunes para incluir en una aplicación los resultados de consultas almacenados en tablas y cursores.

Vea también

Rellenar un control de formulario con los resultados | Imprimir los resultados en un informe o una etiqueta


Llenar un control de formulario con los resultados de la consulta

Si desea mostrar los resultados de sus consultas en un formulario, puede utilizar una tabla, una matriz o un cursor para colocarlos en una cuadrícula, un cuadro de lista o un cuadro combinado.

Para rellenar un control de tipo cuadro de lista o cuadro combinado con una tabla o cursor

  1. En el Diseñador de formularios, modifique el formulario que tiene el control que desea rellenar.
  2. Establezca la propiedad RowSourceType en 3 - Instrucción SQL.
  3. En la propiedad RowSource del control, escriba una instrucción SELECT - SQL que incluya una cláusula INTO TABLE o INTO CURSOR.

Para llenar un control de tipo cuadrícula con una tabla o un cursor

  1. En el Diseñador de formularios, modifique el formulario que tiene el control que desea rellenar.
  2. En el evento Load del formulario, escriba una instrucción SELECT - SQL que incluya una cláusula INTO TABLE o INTO CURSOR.
  3. Establezca la propiedad RecordSource de la cuadrícula como el nombre de la tabla o cursor que haya creado en el paso 2.
  4. Establezca la propiedad RecordSourceType de la cuadrícula en 0 – Tabla (para una tabla) o 1 – Alias (para un cursor).

Vea también

Almacenar los resultados en una tabla, matriz o cursor | Imprimir los resultados en un informe o una etiqueta | Mostrar los resultados en una ventana


Imprimir los resultados de la consulta en un informe o una etiqueta

Si su informe o etiqueta incluye grupos, o si necesita ordenar los datos de alguna otra manera, puede utilizar las distintas cláusulas de la instrucción SELECT - SQL para obtener el resultado exacto que necesita.

Para enviar los resultados a un informe o una etiqueta existente

  • Utilice la instrucción SELECT - SQL con un comando REPORT o LABEL.

    El ejemplo siguiente utiliza las cláusulas GROUP BY y ORDER BY, así como el comando REPORT FORM:

    SELECT * ;
FROM tastrade!customer ;
WHERE customer.country = "Canada" ;
GROUP BY customer.region ;
ORDER BY customer.postal_code, customer.company_name ;
INTO CURSOR MyCursor
REPORT FORM MYREPORT.FRX

    El ejemplo siguiente utiliza un comando LABEL FORM:

    SELECT * ;
FROM tastrade!customer ;
WHERE customer.country = "Canada" ;
GROUP BY customer.region ;
ORDER BY customer.postal_code, customer.company_name ;
INTO CURSOR mycursor
LABEL FORM MYLABEL.LBX

Aunque la instrucción SELECT - SQL es el método más flexible para rellenar sus informes o etiquetas, no es el único método.

Vea también

Rellenar un control de formulario | Mostrar los resultados en una ventana | SELECT - SQL (Comadno) | Integrar consultas e informes


Mostrar los resultados de la consulta en una ventana

Si desea mostrar el resultado de su instrucción SELECT - SQL, puede enviarlo a una ventana. La ventana Examinar es el destino predeterminado para los resultados de las consultas y no necesita incluir una cláusula de destino. Puede enviar también el resultado a la ventana principal de Visual FoxPro o a otra ventana activa.

Para mostrar resultados en la ventana principal de Visual FoxPro

  • Utilice la cláusula TO SCREEN de una instrucción SELECT - SQL.

Para mostrar resultados en otra ventana activa

  • Defina una ventana, muéstrela para activarla y, a continuación, ejecute una consulta SQL u otro comando que muestre resultados en una ventana.

Este ejemplo de código muestra la definición para una ventana temporal titulada “Top Customers”, que muestra los nombres de las empresas con una facturación anual de pedidos superior a los $5.000.

Mostrar los resultados de la consulta en una ventana

Código Comentarios
frmMyForm=createobj("form")
frmMyForm.Left = 1
frmMyForm.Top = 1
frmMyForm.Width = 130
frmMyForm.Height = 25
frmMyForm.Caption = "Top Customers"
frmMyForm.Show
 Crea e inicia un objeto ventana temporal.
SELECT customer.company_name,;
SUM(orders.freight) ;
FROM tastrade!customer,
tastrade!orders ;
WHERE customer.customer_id =
orders.customer_id ;
GROUP BY customer.company_name ;
HAVING SUM(orders.freight) > 5000 ;
ORDER BY 2 DESC
 Introduce una instrucción SELECT - SQL.

Vea también

Imprimir los resultados en un informe o una etiqueta | Crear informes y etiquetas | SELECT - SQL (Comando)


Trabajar con vistas

Cuando se necesite un conjunto de datos personalizables para la aplicación, puede crear y utilizar vistas. Las vistas combinan las cualidades de tablas y consultas, proporcionando procedimientos para extraer un conjunto de datos desde una o más tablas relacionadas.

Puede recuperar datos de fuentes locales o remotas creando y utilizando vistas locales y remotas, crear vistas para múltiples tablas o basadas en múltiples tablas u otras vistas, actualizar datos desde múltiples tablas, personalizar vistas, utilizar vistas para mostrar datos, actualizar vistas y mover datos fuera de línea para tratamiento posterior.

En esta sección

Crear vistas
Describe cómo crear vistas en general.
Crear vistas locales
Describe cómo crear vistas desde datos almacenados localmente.
Acceder a datos remotos con vistas
Describe cómo crear vistas desde datos almacenados en un servidor remoto.
Crear vistas con múltiples tablas
Describe cómo acceder a cierta información que está almacenada en tablas separadas, al crear o modificar vistas y añadir tablas.
Combinar vistas
Describe cómo crear vistas basadas en otras vistas.
Personalizar vistas
Describe los procedimientos para personalizar las vistas en el Diseñador de Vistas, así como limitar o expandir vistas eliminando registros duplicados, obtener porcentajes del total de registros y añadir expresiones para filtrado.
Personalizar vistas utilizando instrucciones SELECT SQL
Describe como personalizar vistas al ver y editar la instrucción SELECT (SQL) generada para vistas en el Diseñador de Vistas.
Modificar, renombrar y eliminar vistas
Describe cómo modificar vistas existentes.
Mostrar los datos con vistas
Describe como utilizar vistas para mostrar y actualizar datos.
Manipular datos sin conexión
Ofrece información conceptual para la utilización de vistas fuera de línea de Visual FoxPro, procedimientos para cambiar, agrupar, y mostrar datos alojados fuera de la base de datos.
Optimizar el rendimiento de una vista
Explica como determinar las características y opciones para la recuperación de datos.

Temas relacionados

Trabajar con datos
Proporciona información que le ayuda a crear aplicaciones eficientes, analizando los requerimientos de datos y diseñando los componentes para cubrir las necesidades.
Trabajar con tablas
Debate cómo asegurarse de que las tablas tengan la estructura que requiere la aplicación. Los tipos de datos e índices escogidos son esenciales en el éxito de la aplicación.
Trabajar con registros
Explica cómo guardar datos en tablas añadiendo nuevos registros, o cómo modificar o eliminar registros existentes, utilizando la interfaz adecuada o utilizando comandos.
Crear consultas
Describe cómo crear y utilizar consultas para seleccionar y mostrar datos a partir de tablas o vistas.

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Crear vistas

Como las vistas y las consultas tienen mucho en común, se siguen pasos parecidos para crear una vista y una consulta. Para más información acerca de crear consulta, ver Crear consultas.

Nota Las tablas que se utilicen deben ser parte de un proyecto o base de datos antes de que se pueda utilizar el Asistente para vistas o el Diseñador de vistas para crear una vista.

El siguiente proceso describe en forma general cómo crear una vista.

Para crear una vista

  1. Determine si necesita crear una vista local o una vista remota.
  2. Especifique las tablas desde las cuales desea incluir datos en la vista y especifique las condiciones de unión.
  3. Selecciones en las tablas los campos desde los cuales desea recuperar datos y especifique cualquier criterio adicional para recuperar registros desde aquellas tablas.
  4. Especifique si los cambios se envían la tabla original o base desde la cual se crea la vista.
  5. Genere la vista.

Cuando cree una vista debe guardarla y darle un nombre. Visual FoxPro agrega una definición de la vista a la base de datos actual. La definición de la vista contiene los nombres de las tablas, campos seleccionados y valores de propiedades para la vista.

Cuando utiliza la vista, Visual FoxPro construye y ejecuta una instrucción SQL que define el conjunto de datos para la vista usando la definición de la vista. Para información acerca de las propiedades de vistas, consulte Mostrar la estructura de una vista, DBGETPROP( ) (Función), o CURSORGETPROP( ) (Función).

Puede crear dos tipos de vistas, locales y remotas. Para más información, consulte Crear vistas locales y Acceder a datos remotos con vistas. También puede crear vistas de varias tablas. Para más información, ver Crear vistas con múltiples tablas.

Vea también

Trabajar con vistas | Combinar vistas | Personalizar vistas | Modificar, renombrar y eliminar vistas | Mostrar los datos con vistas | Manipular datos sin conexión | Optimizar el rendimiento de una vista


Crear Vistas Locales

Las vistas locales usan la sintaxis SQL de Visual FoxPro para seleccionar información desde tablas o vistas almacenadas localmente en su PC. Puede crear una vista local utilizando los Asistentes para vistas, el Diseñador de vistas, o el comando CREATE SQL VIEW.

También puede crear vistas remotas a una vista local, para poder acceder a información desde Visual FoxPro y orígenes de datos remotos ODBC usando la misma vista. Para mayor información, consulte Acceder a datos remotos con vistas.

Puede utilizar diferentes métodos para crear vistas:

  • Use el Asistente para vistas locales que lo guía a través de los pasos para crear vistas.
  • Use el Diseñador de vistas para crear y personalizar rápidamente vistas.
  • Use instrucciones SELECT SQL, las cuales ofrecen formas más potentes y flexibles para generar vistas utilizando código.
    Nota La tablas que desee usar deben ser parte de un proyecto o base de datos antes de que pueda usar el Asistente para vistas locales o el Diseñador de vistas par crear una vista.

Crear vistas locales usando el Asistente para vistas locales

Si desea ayuda para crear vistas locales, use el Asistente para vistas locales. El asistente le pide seleccionar tablas o vistas desde las cuales desea información y crea una consulta basada en sus respuestas a una serie de preguntas. Para mayor información acerca del asistente, presione la tecla F1 mientras esté usando el asistente o consulte Asistente para vistas locales.

Crear una vista local usando el Asistente para vistas locales

  1. Abra una base de datos, o en el Administrador de proyectos seleccione una tabla libre, base de datos o tabla de una base de datos.
  2. En el menú Herramientas, elija Asistentes, y haga clic en Todos los asistentes.
  3. En el cuadro de diálogo Selección de los asistentes, haga clic en Asistente para vistas locales, y haga clic en Aceptar.
  4. Siga las instrucciones en las pantallas del asistente.

Puede empezar creando una vista en el Asistente par vistas locales, guardar la vista, y entonces usar el Diseñador de vistas para modificarla. Para más información acerca del Administrador de proyectos, consulte Ventana administrador de proyectos.

Crear vistas locales utilizando el Diseñador de vistas

Si no necesita ayuda para crear vistas locales, utilice el Diseñador de vistas, el cual proporciona un forma para que busque los registros que cumplen criterios especificados para recuperar información almacenada en tablas u otras vistas. También puede organizar y agrupar registros como necesite. Para mayor información acerca del Diseñador de vistas, consulte Diseñador de consultas y de vistas.

Seleccionar tablas para vistas

Cuando agregue más de una tabla a su vista, puede especificar condiciones de unión para modificar el alcance de los resultados. Visual FoxPro muestra el cuadro de diálogo Condición de combinación en el cual se especifica la condición de combinación para cada tabla adicional que agregue a su consulta. Para mayor información sobre especificar condiciones de combinación, consulte Controlar la selección de registros con combinaciones, Condiciones de combinación para tablas, consultas y vistas, y Cuadro de diálogo Condiciones de combinación.

Seleccionar tablas para vistas locales usando el Diseñador de vistas

  1. Abra una base de datos o seleccione una en el Administrador de proyectos.
  2. En el menú Archivo haga clic en Nuevo.
  3. En el cuadro de diálogo Nuevo, haga clic en Vista, y luego en Nuevo archivo.
  4. En el cuadro de diálogo Agregar tabla o vista, seleccione la tabla que desea utilizar y haga clic en Agregar.
  5. Cuando haya terminado de seleccionar las tablas, elija Cerrar.

    Las tablas aparecen en la superficie del Diseñador de vistas.

En lugar de utilizar el alias generado automáticamente cuando agrega una tabla o vista, puede especificar un alias para cada tabla escribiéndolo en el cuadro Alias que aparece en el cuadro de diálogo Agregar tabla o vista.

También puede abrir el Diseñador de vistas usando el comando CREATE SQL VIEW cuando una base de datos esté abierta o cree una vista utilizando el comando CREATE SQL VIEW con la cláusula AS para especificar una instrucción SQL. Para más información, consulte CREATE SQL VIEW (Comando).

Por ejemplo, el código siguiente crea una vista llamada product_view que contiene todos los campos de la tabla products:

CREATE SQL VIEW product_view AS SELECT * ;
FROM testdata!products

El nombre de la nueva vista aparecerá en el Administrador de proyectos. Si abre el Diseñador de bases de datos, la vista se mostrará de la misma manera que una tabla en el esquema, con el nombre de la vista en lugar del nombre de la tabla.

En el ejemplo anterior, el nombre de la tabla está precedido, o calificado, por el nombre de la base de datos de la tabla y el símbolo (!). Si califica el nombre de la tabla al crear una vista, Visual FoxPro buscará la tabla tanto en la lista de bases de datos abiertas, incluidas las bases de datos actuales y las no actuales, como en la ruta de búsqueda predeterminada de la tabla. Si no califica una tabla con el nombre de una base de datos en una definición de vista, la base de datos debe estar abierta antes que pueda usar la vista.

Sugerencia Cuando cree o use una vista en el Administrador de proyectos, éste abrirá la base de datos automáticamente. Por consiguiente, si usa una vista fuera del proyecto, deberá abrir la base de datos o asegurarse de que la base de datos está en el alcance antes de poder utilizar la vista.

Quitar y agregar otras tablas

Puede quitar y agregar tablas a su vista.

Quitar una tabla desde y agregar otra a una vista

  1. En el Diseñador de vistas, haga clic en la tabla que desea quitar.
  2. En la barra de herramientas Diseñador de vistas, haga clic en Quitar tabla para remover la tabla y luego en Agregar tabla para seleccionar otra tabla o vista que desee agregar.

Para más información acerca de agregar varias tablas a vistas, consulte Crear vistas con múltiples tablas.

Construir vistas locales en el Diseñador de vistas

Después de seleccionar las tablas que desea utilizar para su vista local, puede empezar a construir vistas locales en el Diseñador de vistas. También puede seleccionar tablas y crear una vista local con el Asistente ara vistas locales, guardar la vista, y luego usar el Generador de vistas para modificarla.

Construir una vista local usando el Diseñador de vistas

  1. En el Diseñador de vistas, haga clic en la ficha Campos.
  2. En la lista Campos disponibles, seleccione un campo y haga clic en Agregar.

    Para seleccionar varios campos, presione la tecla SHIFT mientras selecciona los campos y luego haga clic en Agregar.

  3. Para especificar el orden en el cual aparecen los campos en la salida, haga clic y mantenga presionado el botón de doble flecha vertical que aparece a la izquierda del campo que desea mover en la lista Campos seleccionados. Mueva el botón a la posición en la que desea dejar el campo.

En el Diseñador de vistas además de personalizar o definir vistas puede realizar las siguientes tareas:

  • Cambiar la condición de combinación de las tablas seleccionadas en la ficha Combinación.
  • Filtre los resultados por campos en la ficha Filtro.
  • Organice los resultados por campos en la ficha Ordenar por.
  • Agrupe los resultados por campos en la ficha Agrupar por.
  • Especifique criterios de actualización en la ficha Criterios de actualización.
  • Seleccione un tipo diferente de salida en la ficha Varios.

Para más información acerca de personalizar su vista y utilizar las fichas del Diseñador de vistas, consulte Personalizar vistas y Diseñador de consultas y de vistas.

Agregar observaciones a vistas

También puede agregar observaciones o notas acerca de la vista para describir su propósito.

Agregar un comentario a una vista

  1. Haga clic en la superficie del Diseñador de vistas para traerla al frente.
  2. En el menú Consulta haga clic en Comentarios.
  3. En el cuadro Comentario escriba escriba el comentario que desee acerca de la vista.

Los observaciones que agregue a una vista se almacenan en el contenedor de base de datos (DBC), puede verlos haciendo clic en el botón Mostrar ventana SQL en la barra de herramienta Diseñador de vistas para abrir la ventana SQL. Puede modificar los observaciones llamando a la función DBSETPROP( ) en la ventana SQL a continuación de la instrucción SELECT SQL.

Para más información acerca de la instrucción SELECT SQL generada por una vista, consulte SELECT - SQL (Comando). Para mayor información sobre personalizar vistas en el Diseñador de vistas y el uso del comando SELECT SQL en la ventana SQL, consulte Personalizar vistas y Personalizar vistas usando instrucciones SELECT SQL.

Ejecutar vistas locales

Después de terminar la creación de la vista, puede ejecutarla.

Ejecutar una vista y ver los resultados

  • En el menú Consulta haga clic en Ejecutar consulta.

    Visual FoxPro muestra los resultados en una ventana Examinar.

Vea también

Trabajar con vistas | Crear vistas | Acceder datos remotos | Crear vistas multitabla | Modificar, renombrar y eliminar vistas | Mostrar los datos con vistas


Obtener acceso a datos remotos con las vistas

Para acceder a datos remotos necesita crear una conexión a un origen de datos remotos válido, el cual generalmente es un servidor para el cual se ha instalado un controlador Open Database Connectivity (ODBC) y se establece un nombre de origen de datos ODBC. Desde dentro de Visual FoxPro, puede definir un origen de datos y sus conexiones. Para más información, ver Configurar un origen de datos ODBC.

Para recuperar datos desde un origen de datos remoto, use vistas remotas, estas usan sintaxis SQL remota para seleccionar información de tablas almacenadas en un origen de datos ODBC.

Definir una conexión

En Visual FoxPro, puede crear y almacenar en una bases de datos una definición de conexión con nombre, a la que se puede referir desde ese momento por su nombre cuando cree una vista remota. También puede establecer propiedades de la conexión con nombre para optimizar la comunicación entre Visual FoxPro y el origen de datos remoto. Cuando active una vista remota, la conexión de la vista se convertirá en la canalización al origen de datos remoto.

Nota Para crear una conexión es imprescindible tener abierta una base de datos.

Para crear una nueva conexión

  1. En el Administrador de proyectos, seleccione una base de datos.
  2. Seleccione Conexiones y elija Nuevo.
  3. En el Diseñador de conexiones, introduzca las opciones correspondientes a los requisitos de su servidor.
  4. En el menú Archivo, elija Guardar.
  5. En el cuadro de diálogo Guardar, escriba un nombre para la conexión en el cuadro Nombre de conexión.
  6. Elija Aceptar. También puede crear una conexión si elige Nuevo en el menú Archivo y selecciona la opción Conexión.

    –O bien–

  • Abra una base de datos y utilice el comando CREATE CONNECTION para abrir el Diseñador de conexiones.

    –O bien–

  • Utilice el comando CREATE CONNECTION con un nombre de conexión.

Por ejemplo, para crear una conexión en la base de datos testdata que almacene la información necesaria para conectarse al origen de datos ODBC sqlremote, puede escribir el código siguiente:

OPEN DATABASE testdata
CREATE CONNECTION remote_01 DATASOURCE sqlremote userid password

Visual FoxPro muestra remote_01 como el nombre de la conexión en el Administrador de proyectos.

La creación de una conexión con nombre en su base de datos no utiliza ningún recurso remoto ni de red, ya que Visual FoxPro no activa la conexión hasta que usted utiliza la vista. Hasta que active la conexión, la conexión con nombre sólo existe como una definición de conexión almacenada como una fila en el archivo .dbc de la base de datos. Cuando utilice una vista remota, Visual FoxPro usará la conexión con nombre mencionada en la vista para crear una conexión activa con el origen de datos remoto y enviará la solicitud de datos al origen remoto utilizando la conexión activa como canalización.

Puede crear opcionalmente una vista que especifique únicamente el nombre del origen de datos, en lugar del nombre de la conexión. Cuando utilice la vista, Visual FoxPro usará la información de ODBC acerca del origen de datos para crear y activar una conexión con el origen de datos. Cuando cierre la vista se cerrará la conexión.

Prioridad de nombres para conexiones y orígenes de datos

Cuando utilice el comando CREATE SQL VIEW con la cláusula CONNECTION, especifique un nombre que represente una conexión o bien un origen de datos. Visual FoxPro buscará primero en la base de datos actual una conexión con el nombre que especificó. Si no existe ninguna conexión con ese nombre en la base de datos, Visual FoxPro buscará entonces un origen de datos ODBC establecido con el nombre especificado. Si su base de datos actual contiene una conexión con nombre cuyo nombre coincide con el de un origen de datos ODBC de su sistema, Visual FoxPro la encontrará y utilizará la conexión con nombre.

Mostrar instrucciones de inicio de sesión ODBC

Cuando use una vista cuya información de inicio de sesión de conexión no esté totalmente especificada, Visual FoxPro puede mostrar un cuadro de diálogo específico del origen de datos que le pida la información que falte.

Puede controlar si Visual FoxPro le pedirá la información que dejó sin especificar en el momento de la conexión.

Para controlar la presentación de instrucciones de inicio de sesión ODBC

  1. En el Administrador de proyectos, seleccione el nombre de la conexión y elija Modificar para abrir el Diseñador de conexiones.
  2. En el área Mostrar instrucciones de inicio de sesión ODBC, elija una opción.

    –O bien–

  • Utilice la propiedad DispLogin de las funciones DBSETPROP( ) o SQLSETPROP( ).

Usar una conexión existente

Puede utilizar una conexión con nombre ya existente para crear una vista remota. Puede ver una lista de las conexiones disponibles en la base de datos y utilizar el Administrador de proyectos o el comando DISPLAY CONNECTIONS.

Para determinar las conexiones existentes

  • En el Administrador de proyectos, seleccione una base de datos y seleccione Conexiones.

    –O bien–

  • Utilice el comando DISPLAY CONNECTIONS.

Por ejemplo, el código siguiente muestra las conexiones de la base de datos testdata:

OPEN DATABASE testdata
DISPLAY CONNECTIONS

Crear una vista remota

Cuando tiene un origen de datos o una conexión con nombre válidos, puede crear una vista remota con el Administrador de proyectos o el lenguaje de programación. Una vista remota es similar a una vista local, pero usted agrega un nombre de conexión o de origen de datos al definir la vista. La instrucción SQL de la vista remota utiliza la sintaxis nativa del servidor.

Para crear una vista remota

  1. En el Administrador de proyectos, seleccione una base de datos, seleccione Vistas remotas y elija Nuevo para abrir el Diseñador de vistas.
  2. Elija Nueva vista.
  3. En el cuadro de diálogo Seleccionar conexión u origen de datos, seleccione la opción Orígenes de datos disponibles.

    –O bien–

  • Utilice el comando CREATE SQL VIEW con la cláusula REMOTE o la cláusula CONNECTION.

Si usa la cláusula CONNECTION con el comando CREATE SQL VIEW, no necesitará incluir la palabra clave REMOTE. Visual FoxPro identifica la vista como remota por la presencia de la palabra clave CONNECTION. Por ejemplo, si tiene la tabla products de la base de datos Testdata en un servidor remoto, el código siguiente creará una vista remota de la tabla products:

OPEN DATABASE testdata
CREATE SQL VIEW product_remote_view ;
CONNECTION remote_01 ;
AS SELECT * FROM products

Puede utilizar el nombre de un origen de datos en lugar del nombre de una conexión cuando cree una vista remota. También puede elegir entre omitir el nombre de la conexión o del origen de datos remoto cuando utilice el comando CREATE SQL VIEW con la cláusula REMOTE. Visual FoxPro mostrará entonces el cuadro de diálogo Seleccionar conexión u origen de datos, en el que podrá elegir un origen de datos o una conexión válidos.

Crear una nueva vista remota

Para tener acceso a los datos remotos de una vista, puede usar una conexión existente o crear una conexión para usar la nueva vista.

Para crear una nueva vista remota

  1. Seleccione un origen de datos o una conexión y elija Aceptar.
  2. En el cuadro de diálogo de inicio de sesión de Microsoft SQL Server o en otro cuadro de diálogo de inicio de sesión, escriba su Id. de inicio de sesión y su contraseña, si es necesario.

    –O bien–

    Si previamente ha definido y guardado una conexión, seleccione la opción Conexiones.

También puede elegir Nuevo en el menú Archivo y seleccionar la opción Vista remota.

Una vez establecida la conexión aparecerá el cuadro de diálogo Abrir, que le permite seleccionar una tabla del servidor remoto.

Cuando haya seleccionado una tabla, aparecerá el Diseñador de vistas.

Para continuar con la creación de la vista remota, puede seleccionar campos de resultados y establecer filtros, igual que para una vista local.

Usar un Asistente para vistas

También puede crear una vista remota con un Asistente para vistas. Para configurar una vista actualizable mediante tablas de un origen de datos ODBC, utilice el Asistente para vistas remotas.

Para crear una vista remota con un asistente

  1. En el Administrador de proyectos, seleccione una base de datos.
  2. Seleccione Vistas remotas y elija Nuevo.
  3. Elija el botón Asistente para vistas.
  4. Siga las instrucciones de las pantallas del asistente.

Después de crear una vista, puede abrir el Diseñador de bases de datos y comprobar que la vista se muestra de la misma manera que una tabla en el esquema, con el nombre e icono de la vista en lugar del nombre e icono de la tabla.

Si combina dos o más tablas en el Diseñador de vistas remotas, el Diseñador usa combinaciones internas (o equicombinaciones) y coloca la condición de combinación en la cláusula WHERE. Si desea usar una combinación externa, el Diseñador de vistas remotas sólo proporciona combinaciones externas izquierdas, la sintaxis con la que es compatible ODBC. Si necesita combinaciones externas derechas o completas o sólo quiere usar una sintaxis nativa para una combinación externa izquierda, cree la vista mediante programación.

Vea también

Trabajar con vistas | Crear vistas con múltiples tablas | Mostrar los datos con vistas | Crear consultas | Administrador de proyectos | Diseñador de conexiones | DBSETPROP( ) | SQLSETPROP( ) | Asistente para vistas remotas | Personalizar vistas


Crear una vista de múltiples tablas

Para tener acceso a información almacenada en tablas separadas, puede agregar tablas a una vista nueva o existente. Cuando agrega tablas puede controlar los registros devueltos en la vista, definiendo una condición de combinación entre las tablas, si no existe una. Esto ayuda a determinar cuáles registros de las tablas pueden ser comparados y devueltos. Para mayor información acerca de especificar condiciones de combinación, consulte Controlar la selección de registros con combinaciones y Condiciones de combinación para tablas, consultas y vistas.

Agregar tablas a una vista local

Agregar una tabla a una vista local

  1. Desde el Administrador de proyectos, cree una vista local nueva o abra una existente.
  2. Haga clic en el Diseñador de vistas para traerlo al frente.
  3. En el menú Consulta elija Agregar tablas y seleccione la tabla o vista que desea agregar.

También puede abrir bases de datos y agregar nombres de tablas a la cláusula FROM y condiciones de combinación utilizando el comando CREATE SQL VIEW. Agregar tablas utilizando este comando produce un producto cruzado.

Nota Debe especificar una condición de combinación en cada cláusula FROM o WHERE de la instrucción SQL pasada a CREATE SQL VIEW que coincida con registros relacionados entre las tablas. Si existen relaciones persistentes entre las tablas, automáticamente se usan como condiciones de combinación.

Para más información, vea CREATE SQL VIEW (Comando).

Agregar tablas a una vista remota

Cuando se conecta a un origen de datos remoto, puede tener acceso a muchas tablas relacionadas. Puede seleccionar las tablas que necesite y ajustar las relaciones entre ellas, si es necesario, para obtener la información que necesite.

Crear una vista remota con varias tablas

  1. En el menú Archivo, elija Nuevo, seleccione Vista remota y elija Nuevo archivo.
  2. En el Cuadro de diálogo Seleccionar conexión u origen de datos, seleccione una conexión predefinida o un origen de datos disponible.
  3. Si es necesario, inicie sesión en el servidor.
  4. En el cuadro de diálogo Abrir, seleccione las tablas que desea utilizar.
  5. En el cuadro de diálogo Condición de combinación, establezca la condición aceptando la combinación predeterminada, o establezca una combinación si es necesario.

Como con las vistas locales, puede controlar como se realizan las actualizaciones en las tablas de origen, utilizando las opciones de la ficha Criterios de actualización en el Diseñador de vistas.

Vea también

Trabajar con vistas | Crear vistas | Acceder a datos remotos con vistas


Combinar vistas

Puede generar una vista basada en otras vistas. Puede que quiera hacerlo si necesita un subconjunto de la información disponible en varias vistas diferentes o si desea combinar datos locales y remotos en una única vista. Una vista basada en otras vistas, o en una combinación de tablas locales y vistas locales o remotas, se denomina una vista multicapa. La vista que combina otras vistas es la vista de nivel superior. Puede tener múltiples niveles de vistas entre la vista de nivel superior y las tablas base locales o remotas. Cuando utilice una vista multicapa, las vistas en las que se basa la vista de nivel superior y cualquier tabla base de Visual FoxPro usada en vistas de nivel superior o intermedio se mostrarán en la ventana Sesión de datos. Las tablas remotas no aparecen en la ventana Sesión de datos.

Combinar datos locales y remotos en una vista

Para combinar datos remotos y locales en una vista

  1. Cree una vista remota y agregue a la misma una o más tablas desde el servidor remoto.
  2. Cree una nueva vista local y agregue a la misma la vista remota que acaba de crear.
  3. Agregue a la vista la tabla local relacionada y combínela por un campo común.
  4. Establezca un filtro en la vista local y ejecútelo.
  5. Actualice el resultado de la vista para actualizar tanto la tabla local como la vista remota.
  6. Cierre la vista local y después la vista remota para actualizar los datos del servidor remoto.

También puede combinar datos locales y remotos en una vista si crea una nueva vista local basada en una vista local y una vista remota.

Para crear una vista que combina datos locales y remotos

  • En el Administrador de proyectos, seleccione una base de datos, elija Vistas locales y, a continuación, elija Nuevo para abrir el Diseñador de vistas. Agregue cualquier combinación de tablas, vistas locales y vistas remotas a su vista.

    –O bien–

  • Use the CREATE SQL VIEW command.

Por ejemplo, para crear una vista local que combine información de la tabla local Employee y la tabla remota Orders, puede utilizar el código siguiente:

OPEN DATABASE testdata
CREATE SQL VIEW remote_orders_view ;
CONNECTION remote_01 ;
AS SELECT * FROM orders
CREATE SQL VIEW local_employee_remote_orders_view ;
AS SELECT * FROM testdata!local_employee_view, ;
testdata!remote_orders_view ;
WHERE local_employee_view.emp_id = ;
remote_orders_view.emp_id

Actualizar datos locales y remotos en una vista

Cuando actualice datos en una vista multicapa, las actualizaciones bajarán un nivel, hasta la vista en que está basada la vista de nivel superior. Si desea actualizar las tablas base desde las que se genera una vista multicapa, deberá ejecutar un comando TABLEUPDATE para cada vista de la estructura.

Vea también

Trabajar con vistas | Crear reglas en campos y filas de vistas | Manipular datos sin conexión | Crear consultas | Ventana Sesión de datos | Crear vistas sin conexión | Personalizar vistas


Personalizar vistas

Para personalizar las vistas, defina cómo se muestran los campos en las vistas, controle la presentación de campos y la entrada de datos, utilice expresiones en las vistas, configure las vistas para que soliciten valores y establezca opciones avanzadas para ajustar cómo se intercambian los datos con un servidor.

Controlar la presentación de campos y la entrada de datos

Como la vista es parte de una base de datos, puede aprovechar algunas de las propiedades que las bases de datos proporcionan para campos de una tabla. Por ejemplo, puede asignar títulos, introducir observaciones o establecer reglas de validación para controlar la entrada de datos.

Para controlar la presentación de campos y la entrada de datos

  1. Cree o modifique una vista en el Diseñador de vistas.
  2. En la ficha Campos, seleccione un campo en la lista Campos seleccionados.
  3. Elija Propiedades.
  4. En el cuadro de diálogo Propiedades del campo de la vista, introduzca las opciones de validación, presentación y tipo de campo.

Controlar el método de actualización

Para controlar cómo se actualiza la información de los campos clave en el servidor, use las opciones del grupo de opciones Actualizar con. Estas opciones determinan qué comando SQL se usa en la instrucción de actualización enviada al servidor o a tablas de origen cuando se actualizan campos clave de registros.

Puede especificar que los registros se eliminen y después se reemplacen con los nuevos valores introducidos en la vista (SQL DELETE e INSERT), o que se cambien los registros de servidor a través de la función SQL UPDATE admitida por el servidor.

Agregar expresiones a vistas remotas

Como sucede con las consultas, en las vistas puede incluir funciones y expresiones como filtros.

Para agregar una expresión a una vista

  • En la ficha Filtro, seleccione Expresión en el cuadro Nombre de campo.

Si tiene una vista basada en un origen de datos remoto, las funciones mostradas en el Generador de expresiones reflejarán las funciones admitidas por dicho servidor. Consulte la documentación del servidor para ver una lista de las funciones que admite. Visual FoxPro no intenta analizar las expresiones que usted crea, sino que las envía al servidor remoto.

Solicitar parámetros

Puede establecer vistas que soliciten la entrada de un valor para completar la consulta. Por ejemplo, suponga que desea crear una consulta para buscar clientes de un país específico. Para hacer esto, tiene que definir un filtro en el campo de país y especificar un parámetro como ejemplo del filtro. Los nombres de parámetro pueden ser cualquier combinación de caracteres alfabéticos, números y comillas simples.

Para establecer un parámetro para una vista

  1. En el Diseñador de vistas, agregue un nuevo filtro o seleccione un filtro existente en la ficha Filtro.
  2. En el cuadro Ejemplo, escriba un signo de interrogación (?) y escriba el nombre del parámetro.

Cuando use la vista, aparecerá un cuadro de mensaje que solicita un valor para incluirlo en el filtro.

Establecer intervalos de tiempo de espera

Si tiene que ajustar la interacción entre Visual FoxPro y el servidor, puede establecer opciones de tiempo de espera.

Para establecer intervalos de tiempo de espera

  1. En el Administrador de proyectos, seleccione una conexión y elija Modificar.
  2. En el área Intervalos de tiempo de espera, establezca las opciones que considere necesarias.
  3. En el menú Archivo, elija Guardar.

Vea también

Trabajar con vistas | Actualizar datos | Diseñador de conexiones | Manipular datos sin conexión | Diseñador de consultas y de vistas | Trabajar con tablas | Crear consultas | cuadro de diálogo Propiedades del campo de la vista | Ventana Administrador de proyectos | Combinar vistas


Personalizar vistas utilizando instrucciones SELECT - SQL

Al crear una vista con el Diseñador de Vistas, Visual FoxPro utiliza una instrucción SELECT - SQL para obtener información contenida en los campos de las tablas. La instruccion SELECT - SQL brinda un mecanismo más poderoso para manipular vistas y proporciona mayor control sobre los resultados de la misma y dónde los resultados son almacenados. Para verificar la vista o añadir observaciones puede mostrar la instrucción SELECT - SQL en la ventana SQL y modificarla para personalizar posteriormente la vista.

Puede utilizar instrucciones SELECT - SQL con vistas creadas en el Diseñador de Consultas, vistas en el Diseñador de Vistas, o en código por un evento o procedimiento en un programa (.prg). Para más información acerca de dónde puede utilizar el comando SELECT - SQL, vea Comando SELECT - SQL.

Ver Instrucciones SELECT - SQL Creadas por Vistas

Puede ver instrucciones SQL que las vistas generan en la ventana SQL en cualquier momento, mientras se crea una vista. Al ver la instrucción SQL creada por el Diseñador de vistas, puede estar seguro de que la vista estará definida adecuadamente.

Para ver la instrucción SELECT - SQL creada por la vista

  1. Crear vistas utilizando el Diseñador de Vistas.
  2. En el menú Vista, elija Ver SQL.

La ventana SQL se abre para mostrar la instrucción SELECT - SQL creada por la vista. La primera instrucción es la instrucción SELECT. Por ejemplo puede seleccionar todos los registros desde la tabla Customer en la base de datos TasTrade donde el campo country contiene el valor "Canada":

SELECT *;
FROM tastrade!customer;
WHERE Customer.country = Canada

La secuencia para la instrucción SELECT - SQL que aparece en la ventana SQL es generada automáticamente al cargar o modificar la vista en el Diseñador de Vistas y contiene propiedades de vistas fijadas por la función DBSETPROP( ) que puede editar.

Para ejecutar inmediatamente la instrucción SELECT - SQL, escriba la instrucción en la ventana de comandos. Si desea que cada cláusula aparezca en una línea de la ventana, finalice cada línea exceptuando la última con punto y coma (;) así Visual FoxPro procesará el comando solo después de la última línea.

Para incluir la instrucción SELECT en el código, copie la instrucción SELECT - SQL en un archivo .prg.

Crear Vistas como Instrucciones SELECT - SQL Almacenadas

Puede utilizar macrosustitución para guardar la instrucción SELECT - SQL en una variable que pueda utilizar con la cláusula AS en el comando CREATE SQL VIEW. Por ejemplo, el siguiente código guarda una instrucción SELECT - SQL en una variable emp_cust_sql, la cual será utilizada para crear una vista nueva:

emp_cust_sql = "SELECT employee.emp_id, ;
customer.cust_id, customer.emp_id, ;
customer.contact, customer.company ;
FROM employee, customer ;
WHERE employee.emp_id = customer.emp_id"
CREATE SQL VIEW emp_cust_view AS &emp_cust_sql

Editar la Instrucción SELECT - SQL en la Ventana SQL

Puede editar la instrucción SELECT - SQL y sus propiedades, las que serán determinadas por llamadas a la función DBSETPROP( ) creada por la vista. Para más detalles acerca de las propiedades de las vistas, vea DBSETPROP( ) (Función), DBGETPROP( ) (Función), o CURSORGETPROP( ) (Función).

Para editar la instrucción SELECT - SQL en la ventana SQL

  • Abra la ventana SQL, y modifique la instrucción SELECT.

Puede especificar un asterisco tabla.* o una lista de campos delimitada por comas para la instrucción SELECT en la ventana SQL. Por ejemplo, puede especificar la instrucción SQL como SELECT * FROM o SELECT campo1, campo2, ... FROM. Sus preferencias son preservadas durante la carga o generación de la vista. Puede incluir además varias veces el mismo campo en la lista del SELECT.

Para más información acerca de cómo utilizar la sintaxis para el comando SELECT - SQL, vea Comando SELECT - SQL.

Actualizar la Instrucción SELECT - SQL Dentro del Diseñador de Vistas.

Después de editar la instrucción SELECT - SQL en la ventana SQL, actualizar los cambios en el Diseñador de Vistas.

Para actualizar la vista en el Diseñador de Vistas

  • Cerrar la ventana SQL

Puede actualizar la vista haciendo clic en el Diseñador de Vistas para traerlo a primer plano.

Si el Diseñador de Vistas no puede ser actualizado después de haber hecho cambios en la ventana Vista SQL, un cuadro de diálogo aparecerá y preguntará lo siguiente:

"El Diseñador de Vista/Consulta no puede actualizar sus cambios. ¿Desea actualizar el contenido desde el Diseñador?"

Si selecciona Si, sus cambios son descartados en la ventana SQL y Visual FoxPro regresa al Diseñador de vistas. Si selecciona No, Visual FoxPro regresa a la ventana SQL.

Para guardar una instrucción que no pueda ser analizada tal como una llamada a un procedimiento almacenado, seleccione No y haga clic en el botón Guardar de la barra de herramientas. Visual FoxPro guarda la vista. Puede también, hacer clic en el botón Guardar después de escribir el comando en la ventana SQL para guardar la vista. No necesita hacer clic en el Diseñador de Vistas, que provocará que el Diseñador de Vistas intente actalizar y analizar la vista.

Vea también

Trabajar con vistas | Crear vistas locales | Crear vistas con múltiples tablas | Personalizar vistas

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Modificar, renombrar y eliminar vistas

Puede modificar vistas existentes en el Diseñador de vistas mediante el Administrador de proyectos o a través del lenguaje Visual FoxPro.

Para modificar una vista en el Diseñador de vistas

  • En el Administrador de proyectos, seleccione el nombre de la vista y elija Modificar para abrir el Diseñador de vistas.

    –O bien–

  • Abra una base de datos y utilice el comando MODIFY VIEW con el nombre de la vista.

En el Diseñador de vistas, puede utilizar el menú Consulta o la barra de herramientas Diseñador de vistas para agregar una nueva tabla a la vista. El código siguiente muestra product_view en el Diseñador de vistas:

OPEN DATABASE testdata
MODIFY VIEW product_view

También puede modificar la instrucción SQL para la vista. Para más información, consulte Crear vistas.

Sugerencia Para crear vistas por medio de programación, puede abrir una vista existente, copiar la cadena SQL y pegarla en su código.

Cambiar el nombre de una vista

Puede cambiar el nombre de una vista desde el Administrador de proyectos o mediante el comando RENAME VIEW.

Para cambiar el nombre de una vista

  • En el Administrador de proyectos, seleccione una base de datos, después el nombre de la vista y, a continuación, elija Cambiar el nombre del archivo en el menú Proyecto.

    –O bien–

  • Use el comando RENAME VIEW.

Por ejemplo, el código siguiente cambia el nombre de product_view a products_all_view :

RENAME VIEW product_view TO products_all_view

La base de datos que contiene la vista debe estar abierta para que usted pueda cambiar el nombre de la vista.

Eliminar una vista

Puede eliminar la definición de vista de una base de datos en el Administrador de proyectos o con el comando DELETE VIEW. Antes de eliminar la vista, asegúrese de que la base de datos que la contiene está abierta y establecida como base de datos actual.

Para eliminar una vista

  • En el Administrador de proyectos, seleccione una base de datos, después el nombre de la vista y, a continuación, elija Quitar.

    –O bien–

  • Use comando DELETE VIEW o DROP VIEW.

Por ejemplo, el código siguiente elimina product_view y customer_view de la base de datos:

DELETE VIEW product_view
DROP VIEW customer_view
Nota Estos comandos producen el mismo resultado; DROP VIEW es la sintaxis estándar ANSI SQL para eliminar una vista SQL.

Vea también

Trabajar con vistas | Crear vistas locales | Crear vistas con múltiples tablas | Crear consultas | Acceder a datos remotos | Administrador de proyectos |


Mostrar los datos con las vistas

Después de haber creado una vista, puede utilizarla para mostrar y actualizar datos. También puede modificar las propiedades de una vista para aumentar el rendimiento de la misma. Se trata la vista como una tabla:

  • Abra la vista con el comando USE y escriba el nombre de la vista.
  • Cierre la vista con el comando USE.
  • Muestre los registros de la vista en una ventana Examinar.
  • Muestre los alias de vista abierta en la ventana Sesión de datos.
  • Use la vista como un origen de datos, como en un texto, un control cuadrícula, un formulario o un informe.

Puede utilizar una vista con el Administrador de proyectos o con el lenguaje de programación.

Para usar una vista

  • En el Administrador de proyectos, seleccione una base de datos, elija el nombre de la vista y elija Examinar para mostrar la vista en una ventana Examinar.

    –O bien–

  • Tenga acceso a la vista mediante programación con el comando USE.

El código siguiente muestra product_view en una ventana Examinar:

OPEN DATABASE testdata
USE product_view
BROWSE

Cuando utilice una vista, ésta se abrirá como un cursor en su propia área de trabajo. Si la vista está basada en tablas locales, Visual FoxPro también abrirá las tablas base en áreas de trabajo distintas. Las tablas base de una vista son las tablas a las que tiene acceso la instrucción SELECT - SQL que usted incluye en el comando CREATE SQL VIEW al crear una vista. En el ejemplo anterior, al usar product_view también se abre automáticamente la tabla products.

La ventana Sesión de datos muestra la vista y su tabla base

Cuando una vista está basada en tablas remotas, estas tablas no se abren en áreas de trabajo. En la ventana Sesión de datos sólo aparece el nombre de la vista remota.

Vea también

Trabajar con vistas | Acceder a datos remotos | Limitar el alcance de una vista | Crear consultas | Abrir múltiples instancias de una vista | Mostrar la estructura de una vista | Personalizar vistas


Limitar el alcance de una vista

Cuando tiene acceso a un origen de datos remoto, tendrá acceso a cantidades potencialmente masivas de datos. Puede limitar el alcance de los datos seleccionados en la vista únicamente a los registros que necesite en cada momento. Esto reduce el tráfico en la red y aumenta el rendimiento de su vista. Por ejemplo, si desea ver información acerca de los clientes de un determinado país y sus pedidos, mejorará el rendimiento si descarga en la vista sólo los registros correspondientes a ese país, en lugar de los de todos los clientes.

Un método que puede utilizar para limitar el alcance de su vista es agregar una cláusula WHERE a la instrucción SQL de su vista. Si deseara buscar los registros de los clientes de Suecia, podría crear esta cláusula SQL WHERE para su vista:

SELECT * FROM customer ;
WHERE customer.country = 'Sweden'

Este código limitará el alcance de su vista al descargar únicamente los registros correspondientes a los clientes de Suecia, pero también puede que sea necesaria la creación de una vista distinta para cada país, ya que el valor real de customer.country para un país está codificado en la instrucción SELECT de su vista.

Crear una vista parametrizada

Puede limitar el alcance de una vista sin crear una vista distinta para cada subconjunto de registros si crea vistas parametrizadas. Una vista parametrizada crea una cláusula WHERE en la instrucción SQL SELECT de la vista que limita los registros descargados únicamente a aquellos que cumplen las condiciones de la cláusula WHERE que se creó con los valores proporcionados para el parámetro. Este valor se puede proporcionar en tiempo de ejecución o se puede transferir a la vista mediante programación.

En el caso del ejemplo anterior, puede crear una vista que le permita descargar los registros para cualquier país escribiendo simplemente el nombre del país al abrir la vista.

Para crear una vista parametrizada

  • En el Diseñador de vistas, elija Parámetros de vista en el menú Consulta.

    –O bien–

  • Utilice el comando CREATE SQL VIEW con un símbolo “?” y un parámetro.

El parámetro que suministre se evalúa como expresión de Visual FoxPro y el valor se envía como parte de la instrucción SQL de la vista. Si hay errores en la evaluación, Visual FoxPro le pide el valor del parámetro. Por ejemplo, si tiene la tabla customer de la base de datos Testdata en un servidor remoto, el código siguiente creará una vista remota parametrizada que limita la vista a aquellos clientes cuyo país coincida con el valor proporcionado para el parámetro ?cCountry:

OPEN DATABASE testdata
CREATE SQL VIEW customer_remote_view ;
CONNECTION remote_01 ;
AS SELECT * FROM customer ;
WHERE customer.country = ?cCountry

Puede proporcionar un valor para ?cCountry mediante programación cuando utilice la vista. Por ejemplo, podría escribir el código siguiente:

cCountry = 'Sweden'
USE Testdata!customer_remote_view IN 0
BROWSE

Visual FoxPro mostrará los registros de los clientes para las compañías suecas en la ventana Examinar de Customer_remote_view.

Pedir al usuario que escriba un valor de parámetro

Si su parámetro no es una variable o una expresión, quizá desee pedir al usuario que suministre el valor del parámetro mediante la utilización de una cadena entre comillas como parámetro de la vista. Cuando cree un parámetro de vista con una cadena entre comillas después del símbolo “?”, Visual FoxPro no interpretará la cadena como una expresión. En su lugar, le pedirá que introduzca el valor del parámetro en tiempo de ejecución. Por ejemplo, el código siguiente crea una vista remota parametrizada que pide al usuario que suministre un valor para el parámetro ?'my customer id':

OPEN DATABASE testdata
CREATE SQL VIEW customer_remote_view ;
CONNECTION remote_01 ;
AS SELECT * FROM customer ;
WHERE customer.cust_id = ?'my customer id'
USE customer_remote_view

Cuando utilice la vista del ejemplo anterior aparecerá el cuadro de diálogo Parámetro de vista.

Cuando haya introducido un Id. de cliente válido, Visual FoxPro obtendrá el registro que coincide con ese Id. Si introduce el valor "ALFKI" en el ejemplo anterior y examina Customer_remote_view, verá el registro del cliente en la ventana Examinar.

Mediante la utilización de una cadena entre comillas como parámetro de vista, se asegurará de que Visual FoxPro pedirá siempre al usuario el valor del parámetro.

Vea también

Mostrar los datos con vistas | Abrir múltiples instancias de una vista | Crear consultas | Diseñador de vistas | CREATE SQL VIEW | Mostrar la estructura de una vista


Abrir múltiples instancias de una vista

Puede abrir múltiples instancias de una vista en áreas de trabajo distintas, del mismo modo que puede abrir una tabla en más de un área de trabajo. A diferencia de las tablas, las vistas buscan un nuevo conjunto de datos predeterminado cada vez que usted las utiliza.

Para abrir una vista en múltiples áreas de trabajo

  • En el Administrador de proyectos, elija el nombre de la vista y después Examinar, para mostrar la vista en una ventana Examinar. Repita este proceso para abrir la vista en áreas de trabajo adicionales.

    –O bien–

  • En la ventana Sesión de datos, elija Abrir y el nombre de la vista. Repita este proceso para abrir la vista en áreas de trabajo adicionales.

    –O bien–

  • Tenga acceso a la vista mediante programación con el comando USE.

Cuando tiene acceso a la vista mediante programación con el comando USE, puede elegir abrir otra instancia de la vista sin necesidad de volver a consultar el origen de datos. Esto resulta especialmente útil cuando quiere abrir una vista remota en múltiples áreas de trabajo sin esperar a que los datos se descarguen desde un origen de datos remoto.

Para usar una vista de nuevo sin descargar datos

  • Utilice la cláusula NOREQUERY con el comando USE.

    –O bien–

  • Utilice la cláusula AGAIN con el comando USE.

El código siguiente utiliza la cláusula NOREQUERY para mostrar el cursor obtenido de la primera instancia de product_remote_view en dos ventanas Examinar sin volver a consultar el origen de datos remoto:

OPEN DATABASE testdata
CREATE SQL VIEW product_remote_view ;
CONNECTION remote_01 ;
AS SELECT * FROM products
USE product_remote_view
BROWSE
SELECT 0
USE product_remote_view NOREQUERY
BROWSE

Puede especificar un número de sesión mediante la cláusula NOREQUERY. Si no especifica un número de sesión, Visual FoxPro buscará en todas las sesiones. Si se encuentra un conjunto de resultados ya abierto para la vista, se volverá a abrir un cursor con el mismo conjunto de resultados. Si no se encuentra un conjunto de resultados ya abierto, se obtendrá un nuevo conjunto para la vista. Del mismo modo que en las tablas, si no se encuentra la vista se abrirá un nuevo cursor de vista.

Si desea que Visual FoxPro busque sólo en la sesión actual un conjunto de resultados abierto para su vista, puede utilizar la cláusula AGAIN. El código siguiente muestra product_remote_view en dos ventanas Examinar:

OPEN DATABASE testdata
USE product_remote_view
BROWSE
USE product_remote_view AGAIN in 0
BROWSE

Cuando utilice la cláusula AGAIN, Visual FoxPro buscará un cursor de vista existente en la sesión actual y abrirá un alias adicional que apunta a este cursor de vista. Abrir otra instancia de una vista con la cláusula AGAIN equivale a ejecutar USE con la cláusula NOREQUERY y el número de sesión actual.

Vea también

Limitar el alcance de una vista | Mostrar la estructura de una vista | Crear consultas | Administrador de proyectos | Actualizar datos en una vista


Mostrar la estructura de una vista

Puede abrir y mostrar únicamente la estructura de una vista mediante la cláusula NODATA del comando USE. Esta opción resulta especialmente útil cuando se quiere ver la estructura de una vista remota sin tener que esperar a la descarga de datos.

Para abrir una vista sin datos

  • Tenga acceso a la vista mediante programación con el comando USE y la cláusula NODATA.

El código siguiente muestra customer_remote_view sin datos en una ventana Examinar:

OPEN DATABASE testdata
USE customer_remote_view NODATA in 0
BROWSE

El uso de una vista con la cláusula NODATA siempre abre un nuevo cursor de la vista. La cláusula NODATA es siempre el modo más rápido de obtener la estructura de una vista, porque crea el menor cursor posible en el origen de datos remoto. Cuando utilice la cláusula NODATA, Visual FoxPro creará una cláusula WHERE para la vista que siempre devolverá un valor falso. Puesto que ningún registro del origen de datos puede cumplir la condición de la cláusula WHERE, no se seleccionará ninguna fila en el cursor del origen de datos remoto. Su vista se recuperará rápidamente ya que no espera que el origen de datos remoto cree un cursor potencialmente grande.

Sugerencia El uso de la cláusula NODATA es más eficaz que usar un valor 0 para la propiedad MaxRecords en su vista o en el cursor. Cuando utilice la propiedad MaxRecords, deberá esperar mientras el origen de datos remoto construye un cursor para la vista que contiene todas las filas de datos que cumplen las condiciones normales de la cláusula WHERE. Las filas del cursor completo de la vista remota se descargarán de acuerdo con el valor de la propiedad MaxRecords.

Crear un índice en una vista

Puede crear índices locales en una vista, igual que en una tabla, mediante el comando INDEX ON. A diferencia de los índices generados para una tabla, los índices locales que cree en una vista no se almacenarán definitivamente: desaparecerán cuando cierre la vista.

Sugerencia Considere el tamaño del conjunto de resultados de su vista cuando decida si va a crear un índice local en una vista. Indexar un conjunto de resultados grande puede llevar un tiempo considerable y disminuir el rendimiento de la vista.

Para obtener más información acerca de la creación de índices, consulte Trabajar con tablas o INDEX.

Crear relaciones temporales en las vistas

Puede crear relaciones temporales entre índices de vistas o entre índices de vistas e índices de tablas mediante el comando SET RELATION.

Para obtener un mejor rendimiento cuando utilice el comando SET RELATION para relacionar una vista y una tabla, haga que la vista sea el objeto primario y la tabla el objeto secundario en la relación. Hacer que la tabla sea el objeto secundario es más eficaz porque el índice estructural de la tabla se mantiene constantemente, se tiene acceso al mismo de forma más rápida y puede ser usado por el entorno de datos para ordenar los registros. Hay que volver a generar el índice de la vista cada vez que ésta se activa y tarda más tiempo que el índice de la tabla. Un índice de una vista no forma parte de la definición de la vista; por lo tanto, si usa un entorno de datos, la vista no puede ser el objeto secundario porque el índice del objeto secundario tiene que existir como parte de la definición y esto no lo admiten las vistas.

Establecer las propiedades de vistas y conexiones

Cuando cree una vista, ésta heredará los valores de las propiedades, como UpdateType y UseMemoSize, del cursor de entorno o cursor 0 de la sesión actual. Puede cambiar estos valores predeterminados de las propiedades con la función CURSORSETPROP( ), utilizando 0 como número de cursor. Una vez creada la vista y almacenada en una base de datos, puede cambiar las propiedades de la vista mediante la función DBSETPROP( ). Los cambios que realice a las propiedades de una vista en una base de datos se almacenarán definitivamente en la base de datos.

Cuando utilice una vista, el cursor activo de la vista heredará los valores de las propiedades almacenados para la vista en la base de datos. Puede cambiar estas propiedades en el cursor activo mediante la función CURSORSETPROP( ) para el cursor de vista. Los cambios realizados por la función CURSORSETPROP( ) son temporales. El valor temporal para la vista activa desaparece al cerrar la vista, mientras que el valor temporal para el cursor 0 desaparece al cerrar la sesión de Visual FoxPro.

Las conexiones heredan las propiedades de forma similar. Las propiedades predeterminadas para la conexión 0 se heredan al crear y almacenar una conexión con nombre en una base de datos. Puede modificar estos valores predeterminados de las propiedades para la conexión 0 con la función SQLSETPROP( ). Una vez creada la conexión y almacenada en una base de datos, puede modificar las propiedades de la conexión con la función DBSETPROP( ). Cuando utilice una conexión, la conexión activa heredará los valores de las propiedades almacenados en la base de datos. Puede cambiar estas propiedades en la conexión activa con la función SQLSETPROP( ) para el controlador de la conexión.

Tanto las vistas como las conexiones pueden utilizar un origen de datos ODBC con nombre. Si utiliza un origen de datos ODBC en una vista, la conexión heredará las propiedades de la configuración predeterminada de la sesión.

El diagrama siguiente ilustra la herencia de propiedades para las vistas y conexiones. Las líneas grises representan el flujo de herencia de las propiedades y las líneas negras representan los comandos de Visual FoxPro.

Propiedades de vistas y conexiones, y sus herencias

Cambiar tipos de datos predeterminados al descargar vistas remotas

Cuando cree una vista, se establece la propiedad DataType para todos los campos a un valor predeterminado. El valor es la letra del tipo de datos (D, G, I, L, M, P, T, Y) para tipos de datos de longitud fija y la letra seguida por parámetros de precisión y escala entre paréntesis (B(d), C(n), N(n,d)) para tipos de longitud variable. Esta propiedad es de sólo lectura para vistas locales. Para ver una lista de tipos de datos predeterminados, vea Transferir datos de vistas remotas en Mejorar aplicaciones utilizando tecnología de paso a través de SQL (SPT).

Puede modificar el valor de la propiedad DataType para el campo de vista remota con la función DBSETPROP( ), como se muestra en esta tabla.

Tipos de datos ODBC para campos remotos | Tipos de datos posibles de un cursor de Visual FoxPro
SQL_CHAR SQL_VARCHAR SQL_LONGVARCHAR | Character o Memo1 (predeterminado); también General o Picture
SQL_BINARY SQL_VARBINARY SQL_LONGVARBINARY | Memo (predeterminado); también Character, General o Picture
SQL_DECIMAL SQL_NUMERIC | Numérico o Currency2 (predeterminado); también Character, Integer o Double
SQL_BIT | Logical (predeterminado); también Character
SQL_TINYINT SQL_SMALLINT SQL_INTEGER | Integer (predeterminado); también Character, Numérico, Double o Currency
SQL_BIGINT | Character (predeterminado); también Integer, Numérico, Double o Currency
SQL_REAL SQL_FLOAT SQL_DOUBLE | Double (predeterminado); el número de caracteres decimales es el valor de SET DECIMALS en Visual FoxPro; también Character, Integer, Numérico o Currency
SQL_DATE | Date (predeterminado); también Character o DateTime
SQL_TIME | DateTime3 (predeterminado); también Character
SQL_TIMESTAMP | DateTime4 (predeterminado); también Character o Date

1. Si el ancho del campo ODBC es menor que el valor de la propiedad de cursor UseMemoSize, se convierte en un campo Character en el cursor de Visual FoxPro; si no, se convierte en un campo Memo.

2. Si el campo de servidor es un tipo de datos monetario, se convierte en un tipo de datos Currency en Visual FoxPro.

3. El valor predeterminado del día es 1/1/1900.

4. Si el valor del campo SQL_TIMESTAMP contiene fracciones de segundo, las fracciones se truncan cuando el valor se convierte en un tipo de datos DateTime de Visual FoxPro.

Usar la propiedad DataType

Puede usar la propiedad DataType para elegir un tipo de datos diferente que el predeterminado. Por ejemplo, es posible que quiera descargar un campo de marca de hora del servidor a Visual FoxPro, pero la asignación del tipo de datos predeterminado a un campo DateTime de Visual FoxPro truncaría todas las fracciones de segundo almacenadas en la marca de hora de servidor. Para conservar las fracciones de segundo, puede usar la propiedad DataType para asignar el campo de marca de hora remoto a un campo de caracteres de Visual FoxPro.

Cerrar las tablas base de una vista

Las tablas base locales abiertas automáticamente cuando usa una vista no se cierran automáticamente cuando cierra una vista; debe cerrarlas explícitamente. Esto es coherente con el comando SELECT - SQL.

Vea también

Abrir múltiples instancias de una vista | Actualizar datos en una vista | Crear consultas | USE | SET RELATION | Actualizar múltiples tablas en una vista | Actualizar datos


Actualizar datos en una vista

Puede actualizar los datos en una vista del mismo modo que lo haría en una tabla. Con una vista también puede actualizar las tablas base de la vista. Las vistas se almacenan de forma predeterminada con un almacenamiento optimista de filas en búfer. Puede cambiarlo para que sea un almacenamiento de tablas en búfer; para obtener más información acerca del almacenamiento en búfer, vea Programar para acceso compartido.

Puede actualizar datos en una vista a través de la interfaz o mediante el lenguaje de programación. El primer paso para actualizar los datos de una vista consiste en hacer actualizable la vista. En la mayoría de los casos, los valores predeterminados de las propiedades preparan automáticamente la vista para que sea actualizable, pero las actualizaciones no se envían al origen de datos hasta que usted indique a Visual FoxPro que lo haga, estableciendo en On la propiedad SendUpdates.

Una vista utiliza cinco propiedades para controlar las actualizaciones. Estas propiedades se relacionan a continuación, junto con sus valores predeterminados:

Propiedades de actualización de vistas y sus valores predeterminados

Propiedad de la vista | Valor predeterminado
Tablas | Incluye todas las tablas que tienen campos actualizables y al menos un campo clave principal.
KeyField | Campos clave de la base de datos y claves principales y remotas de la tabla.
UpdateName | Table_name.column_name para todos los campos.
Updateable | Todos los campos excepto los campos de clave principal.
SendUpdates | De forma predeterminada son los valores predeterminados de la sesión, que originalmente se establece en falso (.F.); si cambia el valor a verdadero (.T.), se convertirá en el valor predeterminado para todas las vistas creadas en la sesión.
CompareMemo | El valor predeterminado es verdadero (.T.), lo cual significa que los campos memo se incluyen en la cláusula WHERE y se usan para detectar conflictos de actualización.

Si bien las cinco propiedades son necesarias para actualizar datos, la propiedad SendUpdates actúa como “conmutador principal” que controla si se envían o no las actualizaciones. A medida que desarrolla su aplicación, puede desactivar la propiedad SendUpdates y configurar las demás propiedades para permitir actualizaciones de los campos que desee actualizar. Cuando vaya a probar su aplicación, podrá activar la propiedad SendUpdates para iniciar el flujo de actualizaciones.

En algunas situaciones más complejas, puede que los valores predeterminados de actualización no proporcionen actualizaciones para una vista que usted creó mediante programación. Para permitir las actualizaciones, examine el valor predeterminado de cada una de las propiedades de actualización y ajústelo según sea necesario. También puede especificar propiedades adicionales, tales como UpdateType, WhereType, etc., de acuerdo con sus preferencias. Para ver una lista completa de las propiedades de vista, consulte DBGETPROP( ).

Para hacer que una vista sea actualizable desde el Diseñador de vistas

  • En el Diseñador de vistas, seleccione la ficha Criterios de actualización y compruebe la configuración predeterminada.

La configuración predeterminado de las vistas creadas con el Diseñador de vistas prepara normalmente la vista para que sea actualizable; sólo necesita activar la casilla de verificación "Enviar actualizaciones SQL" para activar las actualizaciones. Además puede modificar las tablas, los campos, la cláusula SQL WHERE y las opciones de actualización como desee.

Para hacer que una vista sea actualizable estableciendo las propiedades de actualización de la vista

  • Examine el valor predeterminado actual con el comando DISPLAY DATABASE y modifique después las propiedades de la definición de vista como desee con la función DBSETPROP( ).

El ejemplo siguiente muestra los pasos que podría seguir para especificar las cinco propiedades de actualización de vista mediante programación:

Nota Las propiedades View predeterminadas pueden suministrar toda la información necesaria para actualizar la vista.
  1. Establezca la propiedad Tables con al menos un nombre de tabla.

    Por ejemplo, si tiene una vista basada en la tabla customer denominada cust_view, puede establecer el nombre de la tabla con la siguiente función:

    DBSETPROP('cust_view','View','Tables','customer')
    Sugerencia Si una tabla aparece como un calificador en la propiedad UpdateName pero no está incluida en la lista predeterminada de la propiedad Tables, quizá no tenga especificado un campo clave principal. Haga que la tabla sea actualizable, agregando a la lista de la propiedad KeyField el campo que considere que es un campo clave y, a continuación, agregue la tabla a la lista de la propiedad Tables.
  2. Establezca la propiedad KeyField con uno o más nombres de campos locales de Visual FoxPro que, juntos, definan una clave única para la tabla de actualización.

    Con el mismo ejemplo, podría hacer que cust_id fuese el campo clave mediante el código siguiente:

    DBSETPROP('cust_view.cust_id','Field','KeyField',.T.)
    Precaución Asegúrese de que el campo o los campos clave que especifique definan una clave única tanto en la tabla base que desee actualizar como en la vista.
  3. Asigne los campos de la vista a los campos de su tabla base con la propiedad UpdateName. Esta propiedad resulta especialmente útil cuando la vista está basada en una combinación de dos tablas con un nombre de campo común o cuando los campos tienen alias en la vista. Para actualizar la tabla base deseada, asigne el nombre del campo de la vista de Visual FoxPro al campo de la tabla base y al nombre de la tabla.
    DBSETPROP('cust_view.cust_id','Field','UpdateName',;
'customer.cust_id')
    Sugerencia Para evitar la creación de campos sinónimos en la vista, puede calificar los nombres de campo en la instrucción SQL que utilice para generar la vista. Después, utilice la propiedad UpdateName de la vista de Visual FoxPro para asignar cada campo calificado a la tabla base y al nombre de campo correspondientes.
  4. Especifique el alcance de los campos que desea actualizar, utilizando la propiedad Updateable. Debe especificar solamente aquellos campos también especificados con la propiedad UpdateName.
    DBSETPROP('cust_view.cust_id','Field','Updateable',;
.T.)
  5. Establezca la propiedad SendUpdates en el valor verdadero (.T.). Este es el conmutador principal que indica a Visual FoxPro que debe crear y enviar actualizaciones a cualquiera de las tablas y campos especificados como actualizables.
    DBSETPROP('cust_view','View','SendUpdates',.T.)

Cuando utilice DBSETPROP( ) para establecer las propiedades de una vista antes de usarla, el valor se almacenará en la base de datos y se usará automáticamente siempre que active la vista. Cuando la vista está activa, puede utilizar CURSORSETPROP( ) para cambiar el valor de las propiedades de la vista activa. La configuración de las propiedades que establezca con CURSORSETPROP( ) para una vista activa no se guardará al cerrar la vista.

Vea también

Mostrar la estructura de una vista | Actualizar múltiples tablas en una vista | Crear consultas | DBGETPROP( ) | Diseñador de vistas | Actualizar datos


Actualizar una tabla en una vista

Puede usar vistas remotas o locales para actualizar las tablas.

Enviar actualizaciones a tablas

En el Diseñador de vistas, la ficha Criterios de actualización le permite controlar la forma en que se enviarán al origen de datos remoto las modificaciones que realice en los datos remotos (actualizaciones, eliminaciones e inserciones). También puede habilitar y deshabilitar la actualización para campos específicos de las tablas y establecer el método de actualización SQL apropiado para su servidor.

Convertir una tabla en actualizable

Si desea que los cambios realizados en la versión local de una tabla se envíen de nuevo a la tabla de origen, debe establecer la opción Enviar actualizaciones SQL. Debe establecer al menos un campo clave para usar esta opción. Si la tabla seleccionada tiene un campo clave principal definido y lo ha seleccionado en la ficha Campos, el Diseñador de vistas usa automáticamente el campo clave principal para la tabla como campo clave para la vista.

Para habilitar la actualización de las tablas de origen

  • En la ficha Criterios de actualización, establezca la opción Enviar actualizaciones SQL.

Establecer campos clave

La primera vez que abra una tabla en el Diseñador de vistas, la ficha Criterios de actualización mostrará los campos de la tabla que están definidos como campos clave. Visual FoxPro emplea campos clave para identificar de forma exclusiva en las tablas remotas los registros de actualización que usted ha modificado localmente.

Para definir un campo clave

  • En la ficha Criterios de actualización, haga clic en la columna clave situada junto al nombre del campo.

Si modificó los campos clave y desea restaurar su configuración original en la tabla de origen, elija Restablecer claves. Visual FoxPro comprobará las tablas remotas y utilizará los campos clave de dichas tablas.

Actualizar campos específicos

Puede especificar que solamente sean actualizables determinados campos de una tabla. Debe haber un campo clave definido en una tabla para poder convertir en actualizable cualquiera de sus campos. Si los campos no están marcados como actualizables, los usuarios pueden modificarlos en un formulario o en una ventana Examinar, pero estos cambios no se enviarán a la tabla remota.

Para convertir un campo en actualizable

  • En la ficha Criterios de actualización, haga clic en la columna actualizable (“lápiz”) situada junto al nombre del campo.

Actualizar todos los campos

Para poder realizar modificaciones en todos los campos de una tabla, puede establecerlos todos como actualizables.

Para convertir en actualizables todos los campos

  • En la ficha Criterios de actualización, elija Actualizar todos.
    Nota Tiene que tener un campo clave definido en una tabla para usar Actualizar todos. Actualizar todos no afecta a los campos clave.

Vea también

Actualizar datos en una vista | Ficha Criterios de actualización | Mostrar la estructura de una vista | Actualizar múltiples tablas en una vista | Crear consultas | Crear vistas | Mostrar los datos con vistas | Crear tablas | Programar para acceso compartido


Actualizar múltiples tablas en una vista

Puede actualizar múltiples tablas base desde una vista. Cuando la vista combine dos o más tablas, debe establecer las propiedades para asegurarse de que sólo sea actualizable el lado varios de la consulta de la vista.

Las vistas se actualizan tabla por tabla. Debe asegurarse de que para cada tabla a la que se tiene acceso en una vista, el conjunto de campos clave sea una clave única tanto para el conjunto de resultados de la vista como para la tabla base.

Para hacer actualizable una vista de varias tablas

  • En el Diseñador de vistas, elija la ficha Criterios de actualización y seleccione las tablas y los nombres de los campos que desea actualizar.

    –O bien–

  • Use la función DBSETPROP( ).

En la mayoría de los casos, los valores predeterminados proporcionados por Visual FoxPro preparan una vista de múltiples tablas para que sea actualizable, aunque cree la vista por medio de programación. El ejemplo de código siguiente crea y establece explícitamente propiedades para actualizar una vista de dos tablas. Puede usar este ejemplo como guía para personalizar los valores de las propiedades de actualización de una vista.

Actualizar múltiples tablas en una vista

Código Comentarios
CREATE SQL VIEW emp_cust_view AS ;
SELECT employee.emp_id, ;
employee.phone, customer.cust_id, ;
customer.emp_id, customer.contact, ;
customer.company ;
FROM employee, customer ;
WHERE employee.emp_id = customer.emp_id
 Crea una vista que tiene acceso a campos de dos tablas.
DBSETPROP('emp_cust_view', 'View', 'Tables',
'employee, customer')
 Configura las tablas para que se puedan actualizar.
DBSETPROP('emp_cust_view.emp_id', 'Field', ;                'UpdateName', 'employee.emp_id')
DBSETPROP('emp_cust_view.phone', 'Field', ;                'UpdateName', 'employee.phone')
DBSETPROP('emp_cust_view.cust_id', 'Field', ;             'UpdateName', 'customer.cust_id')
DBSETPROP('emp_cust_view.emp_id1', 'Field', ;             'UpdateName', 'customer.emp_id')
DBSETPROP('emp_cust_view.contact', 'Field', ;             'UpdateName', 'customer.contact')
DBSETPROP('emp_cust_view.company', 'Field', ;             'UpdateName', 'customer.company')
 Configura los nombres de actualización.
DBSETPROP('emp_cust_view.emp_id', 'Field', ;                'KeyField', .T.)
 Establece una clave única de campo único para la tabla Employee.
DBSETPROP('emp_cust_view.cust_id', 'Field', ;
'KeyField', .T.)

DBSETPROP('emp_cust_view.emp_id1', 'Field', ;
'KeyField', .T.)
Establece una clave única de dos campos para la tabla Customer.
DBSETPROP('emp_cust_view.phone', 'Field', ;
            'Updateable', .T.)
DBSETPROP('emp_cust_view.contact', 'Field', ;             'Updateable', .T.)
DBSETPROP('emp_cust_view.company', 'Field', ;             'Updateable', .T.)
Establece los campos actalizables. Normalmente, los campos clave no son actualizables.
DBSETPROP('emp_cust_view', 'View', ;
'SendUpdates', .T.)
 Activa la capacidad de actualización.
GO TOP

REPLACE employee.phone WITH "(206)111-2222"
REPLACE customer.contact WITH "John Doe"
Modifica los datos de la vista.
TABLEUPDATE()
 Confirma los cambios al actualizar las tablas base Employee y Customer.

Personalizar vistas con el diccionario de datos

Como las vistas están almacenadas en una base de datos, puede crear:

  • Títulos
  • Comentarios para la vista y los campos de vista
  • Valores predeterminados para campos de vista
  • Reglas a nivel de campo y a nivel de fila para mensajes de error de regla

Las características del diccionario de datos para vistas son similares en su funcionamiento a sus homólogos para tablas de base de datos. Sin embargo, se usa el lenguaje en lugar del Diseñador de tablas para crear títulos, observaciones, valores predeterminados y reglas para vistas.

Vea también

Actualizar datos en una vista | Crear valores predeterminados para campos de vista | Crear reglas en campos y filas de vistas | Diseñador de vistas | DBSETPROP( ) | Actualizar datos | Personalizar vistas


Crear valores predeterminados para campos de vista

De la misma manera que los valores predeterminados para campos de tabla, los valores predeterminados de campo de vista se almacenan en la base de datos y están disponibles cada vez que usa la vista. Visual FoxPro no compara los valores predeterminados que cree localmente con ningún valor predeterminado establecido en el origen de datos remoto. Debe crear valores predeterminados aceptables para el origen de datos.

Para asignar un valor predeterminado a un campo de vista

  • En la ficha Campos del Diseñador de vistas, seleccione un campo y, a continuación, elija Propiedades y escriba el valor predeterminado para el campo.

    –O bien–

  • Utilice la propiedad DefaultValue de la función DBSETPROP( ).

Por ejemplo, es posible que desee que su aplicación limite la cantidad de mercancías que un cliente nuevo puede pedir hasta que haya tenido tiempo de comprobar el crédito y de determinar la cantidad de crédito que desea conceder al cliente. En el ejemplo siguiente se crea un campo maxordamt con un valor predeterminado de 1000:

OPEN DATABASE testdata
USE VIEW customer_view
?DBSETPROP ('Customer_view.maxordamt', 'Field', 'DefaultValue', 1000)

También puede usar valores predeterminados para llenar automáticamente algunas filas para los usuarios. Por ejemplo, puede agregar un control cuadrícula para un formulario de entrada de pedidos basado en una vista remota de una tabla de elementos de pedido. El campo order_id es el campo clave que asigna cada fila de la cuadrícula a su homóloga de la tabla de elementos de pedido remota. Como el Id. de pedido será el mismo para todas las filas de la cuadrícula en un pedido, puede usar un valor predeterminado para guardar las pulsaciones de teclas y rellenar el campo order_id automáticamente.

Sugerencia Si alguna de las reglas de empresa de la aplicación requiere que un campo contenga siempre un valor, el uso de un valor predeterminado ayudará a asegurar que se cumpla una regla concreta a nivel de campo o a nivel de registro.

Vea también

Actualizar múltiples tablas en una vista | Crear reglas en campos y filas de vistas | Crear consultas | Combinar vistas | Actualizar datos en una vista


Crear reglas en campos y filas de vistas

Puede crear versiones locales de reglas de orígenes de datos remotos para:

  • Reducir el tiempo de respuesta.
  • Reducir el impacto en recursos de red.
  • Probar datos antes de enviarlos al origen de datos remotos.
  • Evitar el envío de datos defectuosos al origen de datos remoto.

Visual FoxPro no compara las reglas creadas localmente con reglas remotas. Debe crear reglas aceptables para el origen de datos. Si las reglas remotas cambian, debe cambiar las reglas locales para que se cumplan.

Para crear una regla en un campo o una fila de vista

  • En la ficha Campos del Diseñador de vistas, seleccione un campo y, a continuación, elija Propiedades y escriba la expresión de regla y el texto de mensaje para el campo.

    –O bien–

  • Utilice las propiedades RuleExpression y RuleText de la función DBSETPROP( ).

Por ejemplo, el código siguiente crea una regla a nivel de campo en orditems_view que evita la entrada de una cantidad inferior a 1:

OPEN DATABASE testdata
USE VIEW orditems_view
DBSETPROP('Orditems_view.quantity','Field', ;
'RuleExpression', 'quantity >= 1')
DBSETPROP('Orditems_view.quantity','Field', ;
'RuleText', ;
'"Quantities must be greater than or equal to 1"')

También puede utilizar la función DBSETPROP( ) para crear reglas en el nivel de fila.

Vea también

Crear valores predeterminados para campos de vista | Combinar vistas | Crear consultas | Manipular datos sin conexión | Crear vistas sin conexión | Mostrar los datos con vistas | Crear vistas


Manipular datos sin conexión

En ocasiones deseará mostrar, reunir o modificar datos independientemente de la base de datos host. Con las características de la vista sin conexión de Visual FoxPro, puede usar vistas para conectarse a una base de datos host y crear un subconjunto de datos para trabajar sin conexión. Entonces, al trabajar sin conexión podrá usar la vista directamente o mediante una aplicación que cree. Cuando haya terminado, puede cargar las modificaciones almacenadas en la vista a la base de datos host.

Algunos escenarios en los que son útiles las vistas sin conexión son:

  • Una situación de almacenamiento de datos, en la que se mantienen grandes bases de datos centralizadas en servidores MIS. Si sólo está interesado en datos pertenecientes a, por ejemplo, el departamento de Marketing, puede crear una vista que incluya sólo los datos que le importen. Entonces puede usar los datos sin conexión, permitir que varios usuarios del departamento de Marketing actualicen los datos y después, devolver los datos modificados a la base de datos de origen.
  • Una ubicación geográficamente remota que requiere que lleve un subconjunto de datos en su portátil, que los modifique de forma independiente en la base de datos host y después, que actualice la base de datos host con los datos modificados.
  • Datos sensibles al tiempo. Por ejemplo, puede querer actualizar datos que reflejen los aumentos de sueldo de los empleados antes de que se apliquen los nuevos sueldos.

Trabajar con vistas sin conexión

Si usa los datos sin conexión, puede mostrar y actualizar datos de la misma forma que lo hace en línea con los mismos formularios, informes o aplicaciones.

Para crear y usar datos de vista sin conexión, puede usar las siguientes características del lenguaje:

  • La función CREATEOFFLINE( )
  • El comando USE SQLNombreVista con las cláusulas ADMIN y ONLINE

    Por ejemplo, el código siguiente abre la vista Showproducts:

    USE Showproducts
  • La función TABLEUPDATE
  • La función DROPOFFLINE( )

Si no obtiene el subconjunto de datos que esperaba, compruebe la configuración de optimización para la vista remota. Si establece la propiedad MaxRecords mediante la función DBSETPROP( ), solo aparece ese número de registros en las vistas sin conexión. Sin embargo, si incluye un campo Memo en la lista de campos de la vista, se incluye automáticamente en el conjunto de resultados incluso si FetchMemo está establecido como falso (.F.).

Si pretende usar la vista sin conexión en un equipo distinto del utilizado para crear la vista sin conexión, debe preparar el destino sin conexión creando una copia del archivo de base de datos host (.dbc); asegúrese de que el origen de datos ODBC usado por la vista existe en el equipo de destino; y analice los requisitos de datos para determinar el contenido de la vista que necesita.

Nota Use el programa Administrador de ODBC para instalar orígenes de datos en un equipo. Puede tener acceso al programa Administrador de ODBC desde el grupo de programas Visual FoxPro o desde el Panel de control.

Después de crear la vista para sus datos sin conexión, puede usarla como cualquier vista de su aplicación: puede agregar, cambiar y eliminar registros. Múltiples usuarios pueden tener acceso a la vista sin conexión simultáneamente usando la misma base de datos en modo compartido. Si decide que no desea conservar los cambios, puede invertir la información para que refleje la información original.

Administrar datos sin conexión

En algunos casos (especialmente en un entorno de múltiples usuarios donde muchas personas modifican datos) puede querer examinar los cambios realizados a la vista sin conexión antes de confirmar los cambios en la base de datos de origen. Con el comando USE y la cláusula ADMIN, puede ver todos los cambios que se han confirmado en una vista desde que se usó sin conexión. Después, puede invertir de forma selectiva los cambios que se hayan realizado sin estar conectado al origen de datos. Por ejemplo, el código siguiente abre la vista Showproducts en modo administrador:

USE Showproducts ADMIN

Vea también

Trabajar con vistas | Combinar vistas | Crear vistas sin conexión | Crear consultas | Actualizar datos en línea | Personalizar vistas


Crear vistas sin conexión

Como con los datos en línea, analice sus requisitos antes de crear vistas sin conexión para determinar el diseño de vistas que necesita en la base de datos sin conexión. Cuando determine el subconjunto de datos que desea usar sin conexión, puede partir de una vista existente o crear una vista nueva. Si ya existe una vista que devuelve los registros que quiere usar sin conexión, puede usarla, o puede crear una vista mediante programación. La vista que usa sin conexión se almacena en un archivo .dbf en el contenedor de base de datos sin conexión.

Nota Si pretende modificar datos en una vista sin conexión, asegúrese de hacer la vista actualizable antes de usarla sin conexión. Cuando una vista está sin conexión sólo puede establecer sus propiedades de actualización por medio de programación; no puede modificar una vista sin conexión en el Diseñador de vistas.

Para usar una vista existente sin conexión

  • Utilice la función CREATEOFFLINE( ) y el nombre de la vista.

Por ejemplo, si desea ir a sitios cliente para actualizar cuentas, agregar clientes y registrar nuevas ventas, necesitará la información de los clientes así como los pedidos actuales y las descripciones de los productos en línea. Puede tener una vista llamada customerinfo que combine información de la tabla Customers, la tabla Orders y la tabla OrderItems. Para crear la vista, use este código:

CREATEOFFLINE("customerinfo")

Para crear una vista sin conexión mediante programación

  • Utilice el comando CREATE SQL VIEW, seguido del comando CREATEOFFLINE( ).

Por ejemplo, el código siguiente crea una vista que muestra datos de la tabla Products y la tabla Inventory desde la base de datos en línea. Como no se especifica ningún criterio de actualización, esta vista es de sólo lectura.

CREATE SQL VIEW showproducts ;
CONNECTION dsource ;
AS SELECT * FROM Products INNER JOIN Inventory ;
ON Products.ProductID = Inventory.ProductID ;
CREATEOFFLINE("showproducts")

Vea también

Manipular datos sin conexión | Crear consultas | Actualizar datos en línea | Optimizar el rendimiento de una vista


Actualizar datos en línea

Después de terminar de trabajar sin conexión, puede actualizar los datos en el servidor usando las mismas transacciones de actualización de tabla que utiliza normalmente con los datos en línea. Al trabajar con datos remotos, recuerde las sugerencias siguientes:

  • Para actualizaciones de registros individuales, use transacciones automáticas.
  • Para actualizaciones de procesamiento por lotes, use transacciones manuales.
  • Si es necesario, incluya código para detectar conflictos de actualización, cree un registro de conflictos y resuélvalos.

Antes de poder procesar sus actualizaciones, tiene que usar el comando USE y la palabra clave ONLINE para volver a conectarse a la base de datos host. Después de ejecutar el comando, Visual FoxPro intenta localizar la base de datos host con la información de origen de datos almacenada en la vista. Cuando la conexión está establecida, puede usar TABLEUPATE( ) para procesar las actualizaciones almacenadas en los datos sin conexión.

Para asegurarse de que la información de conexión es correcta independientemente de la ubicación del host y las tablas de vista, tiene que usar sintaxis de cadena de conexión en lugar de una conexión con nombre.

Actualizar lotes de registros en tablas locales

Para procesar un lote de cambios en tablas locales, puede usar transacciones manuales que le permiten procesar el lote de cambios en una única transacción en lugar de una serie de transacciones independientes.

Actualización de tablas locales con vistas sin conexión

Código Comentarios
USE myofflineview ONLINE EXCLUSIVE
 Vuelve a conectarse al host y abre la vista.
BEGIN TRANSACTION
IF TABLEUPDATE (2, .F., "myofflineview")
END TRANSACTION
ELSE
MESSAGEBOX("Error Occurred: Update unsuccessful.")
ROLLBACK
ENDIF
 Comprueba si hay conflictos de actualización y actualiza si es necesario.

Actualizar lotes de registros en tablas remotas

Para procesar un lote de cambios en tablas remotas, use transacciones manuales: empiece con TABLEUPDATE( ) y termine el procesamiento con SQLCOMMIT( ) o SQLROLLBACK( ).

Para establecer la conexión para administrar sus transacciones manualmente, tiene que usar CURSORGETPROP( ) en el cursor de la vista para obtener el controlador de conexión y, a continuación, establecer la propiedad Transactions en modo manual.

En el código siguiente, la identificación de conexión actual para la vista, myview, se almacena en hConn1. hConn1 se usa para establecer la propiedad Transactions en “2” para transacciones manuales.

hConn1 = CURSORGETPROP("CONNECTHANDLE","myview") ;
SQLSETPROP(hConn1,"TRANSACTIONS",2)

Después de establecer la conexión para controlar las actualizaciones, puede usar TABLEUPDATE( ) para controlar sus transacciones.

Si las tablas host residen en un servidor remoto, como SQL Server, puede usar el siguiente código como directiva.

Actualización de tablas remotas con vistas sin conexión

Código Comentarios
USE myofflineview ONLINE EXCLUSIVE
 Vuelve a conectarse al host y abre la vista.
SQLSetProp(liviewhandle,"transactions",2)
SQLSetProp(custviewhandle,"transactions",2)
SQLSetProp(ordviewhandle,"transactions",2)
Establece las conexiones en las vistas para controlar manualmente la transacción.
IF NOT TABLEUPDATE(.T.,.F.,"lineitemsview")
=SQLROLLBACK(ordviewhandle)
=MESSAGEBOX("Can't update line items table")
IF NOT TableUpdate(.T.,.F.,"ordersview")
=SQLROLLBACK(liviewhandle)
=MESSAGEBOX("unable to update the orders table")
IF NOT TABLEUPDATE(.T.,.F.,"customerview")
=SQLROLLBACK(custviewhandle)
=MESSAGEBOX("Can't update customer table")
Else *# check out failure scenarios
IF NOT SQLCOMMIT(liviewhandle)
=SQLROLLBACK(liviewhandle)
IF NOT SQLCOMMIT(ordviewhandle)
=SQLROLLBACK(ordviewhandle)
IF NOT SQLCOMMIT(custviewhandle)
=SQLROLLBACK(custviewhandle)
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
 Controla las actualizaciones y los conflictos de actualización.

Actualizar un registro

Si va a actualizar una única fila, puede usar transacciones automáticas. Como cada instrucción para procesar una actualización, eliminación o inserción se controla como una transacción independiente, no puede deshacer instrucciones de transacciones anteriores.

USE customerview ONLINE EXCLUSIVE
GO TO 3
IF TABLEUPDATE (0, .F. workarea)
* conflict handling code
ENDIF
Sugerencia Para actualizar un único registro en una tabla local, use la función GETNEXTMODIFIED( ).

Cancelar actualizaciones sin conexión

Si decide que quiere eliminar los datos sin conexión y convertir la vista en una vista en línea, puede usar la función DROPOFFLINE( ).

Para cancelar actualizaciones sin conexión

  • Use DROPOFFLINE( ) con el nombre de la vista.

Asegúrese de comprobar los valores devueltos. Verdadero (.T.) indica que se ha conseguido y falso (.F.) indica que la vista no se ha cerrado antes de ejecutar el comando.

El código siguiente omite todos los cambios realizados al subconjunto de datos de myview. La vista sigue formando parte de la base de datos, pero se ignora el conjunto de datos actual:

DROPOFFLINE("myview")

Puede eliminar registros sin conexión, pero no puede usar los comandos PACK, ZAP o INSERT con una vista sin conexión.

Vea también

Optimizar el rendimiento de una vista | Crear consultas | Establecer el número máximo de registros que se descargarán | USE | TABLEUPATE( ) | SQLCOMMIT( )


Optimizar el rendimiento de una vista

Puede optimizar las vistas si establece búsqueda de datos y opciones de rendimiento. Use el cuadro de diálogo Opciones avanzadas para ajustar la forma de obtener registros en una vista o la forma de actualizar tablas de origen o del servidor.

Para establecer opciones avanzadas

  1. En el menú Consulta, elija Opciones avanzadas.
  2. En el cuadro de diálogo Opciones avanzadas, establezca la información de conexión y las opciones de búsqueda de datos que necesite.
  3. Elija Aceptar.

Controlar el tamaño de búsqueda de la búsqueda progresiva

Puede controlar el número de filas que Visual FoxPro busca progresivamente en la base de datos host mediante la propiedad FetchSize de la vista y del cursor activo. Utilice DBSETPROP( ) y CURSORSETPROP( ) para establecer estas propiedades.

Controlar la búsqueda de Memo

Puede utilizar la característica de búsqueda diferida de Memo para acelerar la obtención de los datos de la vista. Si elige esta característica, Visual FoxPro no obtendrá el contenido de un campo Memo hasta que usted no abra y muestre el campo. Como Visual FoxPro necesita el campo clave y el nombre de la tabla para encontrar una fila en el origen de datos remoto, debe establecer la propiedad UpdateName o UpdateFieldList, la propiedad KeyField o KeyFieldList, y la propiedad Tables para que la búsqueda diferida de Memo funcione. No obstante, no tiene que establecer las propiedades SendUpdates o Updatable para que la búsqueda de Memo funcione.

Vea también

Trabajar con vistas | Actualizar datos en línea | Establecer el número máximo de registros que se descargarán | Crear consultas | Optimizar filtros y combinaciones | Compartir conexiones para múltiples vistas remotas | Opciones avanzadas | DBSETPROP( ) | CURSORSETPROP( )


Establecer el número máximo de registros que se descargarán

Puede controlar la cantidad de datos que se descargan al abrir una vista si establece la propiedad MaxRecords. Cuando Visual FoxPro envía una instrucción SQL al origen de datos para crear una vista, el origen de datos genera y almacena un conjunto de resultados. La propiedad MaxRecords especifica el número máximo de filas que se buscan del conjunto de resultados remoto para la vista. El valor predeterminado es –1, que descarga todas las filas en el conjunto de resultados.

Para controlar el número de filas que se descargan en una vista

  • En el menú Herramientas elija Opciones y seleccione la ficha Datos remotos. En el área Opciones predeterminadas de vista remota, junto al cuadro Máximo de registros para buscar, desactive Todos, introduzca un valor en el cuadro de texto y elija Aceptar.

    –O bien–

  • Utilice la propiedad MaxRecords de la función DBSETPROP( ) o CURSORSETPROP( ).

Por ejemplo, el código siguiente modifica la definición de la vista para limitar a 50 el número de filas descargadas en la vista, independientemente del tamaño del conjunto de resultados generado en el origen de datos remoto:

OPEN DATABASE testdata
USE VIEW remote_customer_view
?DBSETPROP ('Remote_customer_view', ;    'View','MaxRecords', 50)

Puede utilizar la función CURSORSETPROP( ) para establecer el límite de MaxRecords para una vista activa.

Sugerencia No puede usar la propiedad MaxRecords para detener una consulta en ejecución, ya que la propiedad MaxRecords no controla la creación del conjunto de resultados. Use la propiedad QueryTimeOut para controlar el tiempo de ejecución en el origen de datos remoto.

Vea también

Optimizar el rendimiento de una vista | Optimizar filtros y combinaciones | Crear consultas | Compartir conexiones para múltiples vistas remotas | Comprobar si una conexión está ocupada


Optimizar filtros y combinaciones

Para tomar decisiones de optimización para una vista o consulta, es posible que tenga que conocer el plan de ejecución: el orden en que se evalúan las cláusulas de combinación y filtrado. Con la función SYS(3054), puede mostrar uno de los tres niveles de optimización Rushmore. Los tres niveles indican el grado de utilización de la optimización Rushmore en las condiciones de filtro o combinación. Los niveles pueden ser: completamente optimizada (Full), parcialmente optimizada (Partial) o sin optimización (None).

Para mostrar el plan de ejecución para filtros

  1. En la ventana Comandos, escriba SYS(3054,1) para habilitar SQL ShowPlan.
  2. Escriba la instrucción SQL SELECT.

    Por ejemplo, puede escribir:

    SELECT * FROM customer, orders ;
AND Upper(country) = "MEXICO"
  3. Lea el plan de ejecución que aparece en pantalla.

    Para este ejemplo, la pantalla podría tener esta apariencia:

    Using Index Tag Country to optimize table customer
Rushmore Optimization Level for table customer: Full
Rushmore Optimization level for table orders: none
  4. En la ventana Comandos, escriba SYS(3054,0) para desactivar SQL ShowPlan.

Entonces puede pasar 11 a la función SYS para evaluar combinaciones en las cláusulas FROM o WHERE.

Para mostrar el plan de ejecución para combinaciones

  1. En la ventana Comandos, escriba SYS(3054,11) para habilitar SQL ShowPlan.
  2. Escriba su instrucción SQL SELECT.

    Por ejemplo, puede escribir:

    SELECT * ;
FROM customer INNER JOIN orders ;
ON customer.cust_id = orders.cust_id ;
WHERE Upper(country) = "MEXICO"
  3. Lea el plan de ejecución que aparece en pantalla.

    Para este ejemplo, la pantalla podría tener esta apariencia:

    Using Index Tag Country to optimize table customer
Rushmore Optimization Level for table customer: Full
Rushmore Optimization level for table orders: none
Joining table customer and table orders using Cust_id
  4. En la ventana Comandos, escriba SYS(3054,0) para desactivar SQL ShowPlan.

Controlar la evaluación de combinaciones

Si el plan de ejecución para sus combinaciones no satisface sus necesidades específicas, puede hacer que el orden de combinación se ejecute exactamente como está escrito sin optimización del procesador. Para forzar el orden de evaluación de la combinación, debe agregar la palabra clave FORCE y colocar sus condiciones de combinación en la cláusula FROM. Las condiciones de combinación que se colocan dentro de una cláusula WHERE no se incluyen en una evaluación de combinación forzada.

Nota No puede usar la palabra clave FORCE en instrucciones de paso a través de SQL ni en vistas remotas porque la palabra clave es una extensión de Visual FoxPro del estándar ANSI y no está admitida en otros diccionarios SQL. La cláusula FORCE es global, por lo que se aplica a todas las tablas de la cláusula JOIN. Asegúrese de que el orden en el que aparecen las tablas de combinación es exactamente el orden en el que se deben combinar. También puede usar los paréntesis para controlar el orden de evaluación de combinaciones.

En este ejemplo, la primera combinación especificada también es la primera combinación evaluada. La tabla Customer se combina con la tabla Orders en primer lugar. El resultado de la combinación se combina entonces con la tabla OrdItems:

SELECT * ;
FROM FORCE Customers ;
INNER JOIN Orders ;
ON Orders.Company_ID = Customers.Company_ID ;
INNER JOIN OrItems;
ON OrdItems.Order_NO = Orders.Order_NO

En el ejemplo, la combinación entre paréntesis para la tabla Orders y OrdItems se evalúa primero. El resultado de la combinación se utiliza en la evaluación de la combinación con Customers:

SELECT * ;
FROM FORCE Customers ;
INNER JOIN (orders INNER JOIN OrdItems ;
ON OrdItems.Order_No = Orders.Order_No) ;
ON Orders.Company_ID = Customers.Company_ID

Vea también

Establecer el número máximo de registros que se descargarán | Crear consultas | Compartir conexiones para múltiples vistas remotas | Comprobar si una conexión está ocupada | SYS(3054)


Compartir conexiones para múltiples vistas remotas

Puede utilizar una conexión activa como canalización de información para múltiples vistas remotas si comparte una conexión. Cuando comparte una conexión activa, usted:

  • Reduce el número de conexiones de un servidor remoto.
  • Reduce los costes por conexiones a servidores que se cobran por conexión.

Para compartir conexiones establece la definición de la vista para utilizar una conexión compartida al activarse. Cuando se utiliza la vista, Visual FoxPro se conecta al origen de datos remoto con la conexión compartida existente (en caso de que haya alguna). Si no hay ninguna conexión compartida en uso, Visual FoxPro creará una conexión exclusiva cuando se abra la vista, que puede compartirse con otras vistas.

Sólo una instancia activa de una definición de conexión con nombre se comparte durante una sesión de Visual FoxPro. Si hay varias instancias activas de la misma definición de conexión, la primera de ellas que se use como conexión compartida se convertirá en la conexión compartida designada. Todas las vistas que utilicen esa definición de conexión y empleen conexiones compartidas tendrán acceso al servidor remoto a través de la conexión compartida designada.

No se compartirán otras conexiones distintas de la conexión compartida designada. El uso compartido de conexiones no está ligado a las sesiones.

Para compartir una conexión

  • Elija Opciones en el menú Herramientas. Elija la ficha Datos remotos; active Compartir conexión en el área Opciones predeterminadas de vista remota y elija Aceptar.

    –O bien–

  • Utilice el Diseñador de vistas.

    –O bien–

  • Utilice el comando CREATE SQL VIEW con la cláusula SHARE.

El código siguiente crea una vista que, cuando se activa con el comando USE, comparte una conexión:

CREATE SQL VIEW product_view_remote ;
CONNECTION remote_01 SHARE AS ;
SELECT * FROM products
USE product_view_remote

Vea también

Optimizar filtros y combinaciones | Crear consultas | Comprobar si una conexión está ocupada | Establecer el número máximo de registros que se descargarán | Optimizar el rendimiento de una vista


Comprobar si una conexión está ocupada

Cuando una conexión está ocupada, como ocurre cuando Visual FoxPro busca datos de forma progresiva en un cursor, no querrá comenzar otra búsqueda o enviar actualizaciones por la misma conexión. Puede determinar si una conexión está ocupada mediante la propiedad ConnectBusy, que devuelve un valor verdadero (.T.) si la conexión está ocupada. Puede utilizar esta propiedad en su aplicación para comprobar si la conexión está ocupada o no antes de enviar una solicitud a un origen de datos remoto a través de una conexión compartida.

Para determinar si una conexión está ocupada

  • Utilice la propiedad ConnectBusy de la función SQLGETPROP( ).

Necesita el controlador de la conexión para utilizar la función SQLGETPROP( ). Puede identificar el controlador de la conexión para una vista activa mediante la propiedad ConnectHandle de la función CURSORGETPROP( ). El código siguiente identifica un controlador de conexión y lo utiliza para comprobar si la conexión está ocupada:

nConnectionHandle=CURSORGETPROP('ConnectHandle')
SQLGETPROP(nConnectionHandle, "ConnectBusy")

Vea también

Compartir conexiones para múltiples vistas remotas | Crear consultas | Optimizar filtros y combinaciones | Establecer el número máximo de registros que se descargarán | Optimizar el rendimiento de una vista


Importar y exportar datos

Puede copiar datos entre Visual FoxPro y otras aplicaciones importando y exportando desde Visual FoxPro. Los datos pueden estar en una amplia gama de formatos de archivo de texto, hoja de cálculo y tabla. Puede crear una nueva tabla de Visual FoxPro, agregar los datos a una tabla de Visual FoxPro existente o copiarlos en otro tipo de archivo diferente.

En esta sección

Conceptos sobre importar y exportar
Al importar o anexar datos, los datos se transfieren desde otra aplicación a Visual FoxPro. Al exportar los datos, se envían datos desde una tabla de Visual FoxPro a un tipo de archivo utilizado por otra aplicación.
Proceso de importación de datos
Si desea importar desde el archivo de origen, puede dejar que Visual FoxPro defina la estructura de la nueva tabla o bien utilizar el Asistente para importar para especificar su estructura.
Proceso de anexión de datos
Puede agregar sus datos de texto, de hoja de cálculo o de tabla a una tabla de Visual FoxPro existente. De manera predeterminada, Visual FoxPro utiliza el tipo de archivo para asignar los campos de origen a la tabla de destino.
Proceso de exportación de datos
Puede exportar datos desde tablas de Visual FoxPro a archivos de texto, hojas de cálculo o tablas utilizados en otras aplicaciones.

Secciones relacionadas

Trabajar con datos
Averigüe como crear aplicaciones eficaces con índices, tablas y bases de datos según los datos que necesita.
Uso de Visual FoxPro
Las características de programación de Visual FoxPro están diseñadas para mejorar la productividad del programador, incluidos los métodos Access y Assign, la compatibilidad con más formatos de archivos gráficos y lenguaje para simplificar las tareas de programación.
Desarrollar aplicaciones Visual FoxPro
En esta sección se incluye información conceptual acerca de como desarrollar aplicaciones Visual FoxPro, instrucciones para crear bases de datos y la interfaz de usuario y otras tareas necesarias para crear aplicaciones Visual FoxPro.
Programar en Visual FoxPro
Visual FoxPro es una eficaz herramienta de administración de datos, pero además podrá beneficiarse de toda su eficacia para crear aplicaciones. Comprender las técnicas de programación orientada a objetos y el modelo controlado por eventos puede aumentar su productividad como programador.


Conceptos sobre importar y exportar

Puede elegir entre tres formas de copiar datos a o desde Visual FoxPro:

  1. Importar
  2. Anexar
  3. Exportar

Al importar o anexar datos, los datos se transfieren desde otra aplicación a Visual FoxPro. Al exportar los datos, se envían datos desde una tabla de Visual FoxPro a un tipo de archivo utilizado por otra aplicación. Estos métodos le permiten copiar y utilizar los datos, en lugar de vincularlos o compartirlos.

Cuando se importan datos, éstos se copian desde un archivo de origen, se crea una nueva tabla y se rellena la tabla con los datos del archivo. Por ejemplo, puede importar los datos desde una tabla de dBASE para crear una tabla de Visual FoxPro. Tras importar un archivo, podrá utilizarlo como cualquier otra tabla de Visual FoxPro.

Cuando se anexan datos, se agregan datos del origen a una tabla de Visual FoxPro a continuación del último registro de la tabla. Puede especificar los campos para importar y seleccionar los registros que cumplan una condición de una expresión. Tras anexar datos desde el archivo, podrá ver y modificar los registros en la tabla de Visual FoxPro.

Cuando se exporta, se copian los datos desde una tabla de Visual FoxPro en un nuevo archivo cuyo formato permite utilizarlo en otra aplicación. Por ejemplo, puede exportar datos de Visual FoxPro a un archivo de hoja de cálculo de Excel.

El usuario selecciona los archivos de origen y de destino. También puede especificar los campos para exportar, establecer el alcance de los registros para exportar y seleccionar los registros que cumplen una condición.

Vea también

Importar y exportar datos | Proceso de importación de datos | Importar datos con el Asistente para importar | Importar datos a una nueva tabla | Importar desde Lotus 1-2-3 | Proceso de anexión de datos | Proceso de exportación de datos


Proceso de importación de datos

Si desea importar desde el archivo de origen, puede dejar que Visual FoxPro defina la estructura de la nueva tabla o bien utilizar el Asistente para importar para especificar su estructura. Visual FoxPro emplea el orden de los campos en el archivo de origen para definir la estructura de la tabla de destino. Si desea definir la estructura, puede modificar el archivo en la aplicación de origen o bien utilizar el Asistente para importar.

Si ya no tiene acceso a la aplicación que admite el archivo de origen y desea modificar el orden o el tipo de datos de los campos, podrá importar el archivo de origen y crear una consulta que sitúe los campos en el orden deseado en una nueva tabla.

Al importar un archivo, debe elegir el tipo de archivo que desea importar, así como especificar los nombres del archivo de origen y de la tabla de destino.

Elegir un tipo de archivo para importar

La tabla siguiente muestra los tipos de archivo que puede importar en Visual FoxPro:

Tipo de archivo | Extensión del archivo | Descripción
Microsoft Excel | xls | Formato de hoja de Microsoft Excel (versiones 2.0, 3.0, 4.0, 5.0 y 97). Las celdas de las columnas se convierten en campos y las filas se convierten en registros.
Lotus 1-2-3 | wks wk1 wk3 | Hoja de cálculo de Lotus 1-2-3 para las versiones 1-A, 2.x y 3.x. Las celdas de las columnas se convierten en campos y las filas se convierten en registros.
Borland Paradox | db | Tabla de Paradox para las versiones 3.5 y 4.0.

Si desea utilizar tablas procedentes de una versión anterior de FoxPro o usar archivos dBASE, puede abrirlos y utilizarlos sin necesidad de importarlos. Visual FoxPro le preguntará si desea convertir la tabla a la versión más reciente de Visual FoxPro. Cuando haya convertido una tabla creada con una versión anterior, esta tabla no se puede abrir en la versión anterior.

Para obtener más información acerca de como importar archivos, vea el comando IMPORT.

Para averiguar información acerca de consideraciones que afecten a la importación de datos de Microsoft Excel, Lotus y Microsoft Access, vea Elegir un tipo de archivo para importar.

Vea también

Importar y exportar datos | Conceptos sobre importar y exportar | Importar datos con el Asistente para importar | Importar datos a una nueva tabla | Importar desde Lotus 1-2-3 | Convertir campos de fecha de Lotus


Importar datos con el Asistente para importar

El Asistente para importar le ayuda a crear una nueva tabla a partir del archivo de origen. El asistente le plantea una serie de preguntas, importa el archivo con la información suministrada por sus respuestas y le permite controlar cómo se estructurará la nueva tabla.

Para importar un archivo con el Asistente para importar

  1. En el menú Archivo, elija Importar.
  2. En el cuadro de diálogo Importar, elija Asistente para importar.
  3. Siga las instrucciones de las pantallas del asistente.

Vea también

Proceso de importación de datos | Importar datos a una nueva tabla | Importar y exportar datos | Importar desde Lotus 1-2-3 | Convertir campos de fecha de Lotus | Importar desde Microsoft Excel

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Importar datos a una nueva tabla

Puede importar datos con formato de tabla u hoja de cálculo utilizando la estructura del archivo de origen para definir la nueva tabla.

Para importar datos a una tabla nueva

  1. En el menú Archivo, elija Importar.
  2. En el cuadro Tipo, indique el formato del archivo que desea importar.
  3. En el cuadro Desde, indique el nombre del archivo de origen.
  4. Si seleccionó una hoja de cálculo en el cuadro Tipo, escriba el número de hoja en el cuadro Hoja.
  5. Elija Aceptar.

    Visual FoxPro creará una nueva tabla utilizando el archivo de origen.

Si desea importar a una tabla nueva desde un archivo de texto sin usar el Asistente para importar, tiene que crear una tabla nueva con campos en los que coincidan el orden, el tipo de datos y el ancho de los campos del archivo de texto y a continuación anexar el texto a la nueva tabla.

Después de importar el archivo, podrá agregar la nueva tabla a la base de datos que elija. También puede modificar la nueva tabla mediante el Diseñador de tablas.

Vea también

Crear tablas | Diseñador de tablas | Agregar tablas a bases de datos | Importar datos con el Asistente para importar | Importar desde Lotus 1-2-3 | Importar y exportar datos | Convertir campos de fecha de Lotus | Importar desde Microsoft Excel | Proceso de anexión de datos


Importar desde Lotus 1-2-3

Al importar datos de una hoja de cálculo, Visual FoxPro usa la primera fila de la hoja de cálculo de Lotus 1-2-3 para determinar los tipos de datos de los campos de la nueva tabla. Si la primera fila tiene encabezados de texto para cada columna, todos los campos de la tabla serán campos de caracteres, aunque las demás filas contengan datos numéricos.

Para asegurarse de que los campos tienen el tipo de datos apropiado

  • En Lotus 1-2-3, modifique la hoja de cálculo de forma que la primera fila contenga el primer registro de datos que quiere en la tabla.
    Precaución Si su hoja es de la versión 2.x o 3.x (extensión de archivo .wk1 o .wk3) y tiene columnas con más de ocho o nueve caracteres, Visual FoxPro trunca los campos de caracteres en el noveno carácter en las hojas de la versión 2.x y en el octavo carácter en las de la versión 3.x. Para evitar que se trunquen campos de la tabla, puede utilizar el Asistente para importar o crear una tabla de Visual FoxPro y, a continuación, anexar los registros de la hoja.

Lotus almacena las fechas como los números no negativos de días desde el 1 de enero de 1900. Si la nueva tabla no tiene el tipo de datos correcto, puede convertir los campos de fecha de Lotus en Visual FoxPro.

Vea también

Importar datos a una nueva tabla | Convertir campos de fecha de Lotus | Importar y exportar datos | Importar desde Microsoft Excel | Proceso de anexión de datos | Importar datos con el Asistente para Importar | Importar datos a una nueva tabla

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Convertir campos de fecha de Lotus

Si los campos de fecha de Lotus se importaron incorrectamente, puede convertirlos agregando la fecha Juliana correspondiente al 1 de enero de 1900 (cuyo valor es 2415019) al valor de fecha en el campo.

Para convertir los campos de fecha de Lotus

  1. Importe la hoja de cálculo a una tabla de Visual FoxPro.
  2. Utilice el Diseñador de tablas para modificar la tabla y agregar un nuevo campo de fecha a la tabla.
  3. Si la fecha se importó como un valor numérico, use el comando REPLACE y la función CTOD( ) para copiar la fecha en el nuevo campo:
    REPLACE ALL NewDateField ;
WITH CTOD(SYS(10,OldDateField+2415019))

    –O bien–

    Si la fecha se ha importado como un valor de tipo carácter, use el siguiente comando para copiar la fecha en el nuevo campo:

    REPLACE ALL NewField ;
WITH CTOD(SYS(10,VAL(OldField)+2415019))
  4. En la tabla, elimine el campo de fecha incorrecto original.

Vea también

Importar desde Lotus 1-2-3 | Importar desde Microsoft Excel | Importar y exportar datos | Proceso de anexión de datos | Importar datos a una nueva tabla | Importar datos con el Asistente para importar


Importar desde Microsoft Excel

Cuando importe datos de una hoja, Visual FoxPro usará la primera fila de la hoja de Microsoft Excel para determinar los tipos de datos de los campos de la nueva tabla. Si la primera fila tiene encabezados de texto para cada columna, todos los campos de la tabla serán campos de caracteres, aunque las demás filas contengan datos numéricos.

Para asegurarse de que los campos tienen el tipo de datos apropiado

  • En Microsoft Excel, modifique la hoja de forma que la primera fila contenga el primer registro de datos que quiere en la tabla.
    Precaución Si un campo de la hoja de Microsoft Excel tiene una longitud de 255, dicho campo se trunca en el carácter 254 al importarse a una tabla de Visual FoxPro.

Vea también

Convertir campos de fecha de Lotus | Proceso de anexión de datos | Importar y exportar datos | Importar desde Lotus 1-2-3 | Importar datos con el Asistente para Importar | Proceso de importación de datos

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Proceso de anexión de datos

Puede agregar sus datos de texto, de hoja de cálculo o de tabla a una tabla de Visual FoxPro existente. De manera predeterminada, Visual FoxPro utiliza el tipo de archivo para asignar los campos de origen a la tabla de destino. También puede seleccionar los campos y registros que desea anexar. Si desea controlar la asignación de campos, podrá emplear el Asistente para importar, pero las opciones de selección de campos y expresión lógica no estarán disponibles.

Elegir un tipo de archivo para anexar

La siguiente tabla muestra los tipos de archivos que puede anexar a Visual FoxPro.

Tipo de archivo | Extensión del archivo | Descripción
Tabla | dbf | Tabla de FoxPro® de una base de datos que no es la activa o un archivo de dBASE.
Delimitado por tabulaciones | txt | Archivo de texto en el que cada campo está separado por una tabulación.
Delimitado por comas | txt | Archivo de texto en el que cada campo está separado por una coma.
Delimitado por espacios | txt | Archivo de texto en el que cada campo está separado por un espacio en blanco.
Formato de datos del sistema | sdf | Archivo de texto con registros de longitud fija que terminan con un retorno de carro y un avance de línea.
Microsoft Excel | xls | Formato de hoja de Microsoft Excel (versiones 2.0, 3.0, 4.0, 5.0 y 97). Las celdas de las columnas se convierten en campos y las filas se convierten en registros.
Lotus 1-2-3 | wks wk1 wk3 | Hoja de cálculo de Lotus 1-2-3 para las versiones 1-A, 2.x y 3.x. Las celdas de las columnas se convierten en campos y las filas se convierten en registros.
Borland Paradox | db | Tabla de Paradox para las versiones 3.5 y 4.0.

Para obtener más información acerca de cómo anexar archivos, consulte el comando APPEND FROM.

Vea también

Importar desde Microsoft Excel | Anexar datos con el Asistente para importar | Importar y exportar datos | Anexar datos a tablas existentes | Seleccionar campos para anexar | Proceso de importación de datos


Anexar datos con el Asistente para importar

El Asistente para importar le plantea una serie de preguntas y anexa los datos del archivo de origen con la información suministrada por sus respuestas. Con el asistente puede elegir si desea asignar los campos de origen a los de destino modificando los números de columna.

Para anexar desde un archivo con el Asistente para importar

  1. En el menú Archivo, elija Importar.
  2. En el cuadro de diálogo Importar, elija Asistente para importar.
  3. Siga las instrucciones de las pantallas del asistente.

Vea también

Proceso de anexión de datos | Anexar datos a tablas existentes | Importar y exportar datos | Seleccionar campos para anexar | Seleccionar registros para anexar | Proceso de exportación de datos


Anexar datos a tablas existentes

Puede agregar registros a la tabla activa desde otro archivo. De forma predeterminada, Visual FoxPro agrega a la tabla todos los registros y campos. Con las opciones de Anexar desde, puede especificar campos o seleccionar registros. Para obtener más información acerca de la selección de campos y registros, vea las secciones Seleccionar campos para anexar y Seleccionar registros para anexar.

Para anexar datos

  1. Examine la tabla de destino.
  2. En el menú Tabla, elija Anexar registros.
  3. En el cuadro Tipo, indique el formato del archivo de origen.
  4. En el cuadro Desde, indique el nombre del archivo de origen.
  5. Asegúrese de que en el cuadro A aparece el nombre correcto de tabla.
    Sugerencia Si el nombre de la tabla no es correcto, elija Cancelar y abra la tabla de destino deseada. En el cuadro A aparece la tabla que está activa en el momento de seleccionar el comando Anexar desde.
  6. Si desea especificar los campos o seleccionar los registros para anexar, elija Opciones y complete el cuadro de diálogo Opciones.
  7. Elija Aceptar.

    Visual FoxPro agregará los registros a la tabla.

Vea también

Anexar datos con el Asistente para importar | Seleccionar campos para anexar | Importar y exportar datos | Seleccionar registros para anexar | Proceso de exportación de datos


Seleccionar campos para anexar

Quizá desee anexar solamente determinados campos del archivo de origen. En este caso, puede seleccionar los campos para incluir mediante el proceso Anexar desde.

Para seleccionar los campos que va a anexar

  1. En el menú Tabla, elija Anexar registros.
  2. En el cuadro de diálogo Anexar desde, indique el tipo y el nombre del archivo de origen y, a continuación, elija Opciones.
  3. En el cuadro de diálogo Opciones de Anexar desde, elija Campos. En el cuadro de diálogo Selector de campos aparecerán los campos de la tabla de destino.
  4. Seleccione los campos que coincidan con los que desea anexar desde el archivo de origen y quiere mover y, a continuación, elija Aceptar.

    Los campos que seleccione se mostrarán en el cuadro Campos seleccionados.

  5. Elija Aceptar.

Vea también

Anexar datos a tablas existentes | Importar y exportar datos | Seleccionar registros para anexar | Proceso de exportación de datos | Anexar datos con el Asistente para importar


Seleccionar registros para anexar

Si solamente desea anexar determinados registros, puede utilizar una expresión FOR. Visual FoxPro utiliza esta expresión para buscar en todo el archivo y anexar únicamente los registros que coincidan con la expresión indicada. Los campos que especifique en la expresión FOR deberán existir tanto en los archivos de origen como de destino.

Para seleccionar los registros que va a anexar

  1. Examine la tabla de destino. A continuación, en el menú Tabla, elija Anexar registros.
  2. Indique el tipo y el nombre del archivo de origen y elija Opciones.
  3. Elija FOR si desea crear una expresión en el cuadro de diálogo Generador de expresiones.
    Nota No necesita introducir el comando FOR porque ya está implícito. Por ejemplo, escriba customer.country = "Canadá" para anexar solamente información canadiense.
  4. Elija Aceptar.

Anexar archivos de texto

Si anexa desde un archivo de texto, Visual FoxPro supone que los campos están separados por comas y que cada campo de caracteres está entre comillas. Si ha establecido la coma como carácter de punto decimal, es posible que los datos de tipo numérico (Numérico) y moneda (Currency) se analicen en campos separados.

Anexar texto de tipo Numérico o monetario (Currency)

Si ha cambiado el carácter de punto decimal de Visual FoxPro por una coma, es posible que los datos de tipo numérico y moneda se analicen en campos distintos cuando anexe o exporte los datos. Por ejemplo, Visual FoxPro convertirá el valor 100,00 en dos campos porque aparece delimitado por una coma. Elija uno de los dos métodos siguientes para asegurarse de que la coma se convierte de forma adecuada:

  • Use tabulaciones para separar campos en el archivo de texto.
  • Establezca de nuevo el punto como carácter de punto decimal.

Si desea anexar desde un archivo de texto, cambie los separadores de campo a tabuladores y a continuación, use el comando APPEND FROM con las palabras clave DELIMITED WITH TAB.

Si desea cambiar el carácter de punto decimal por un punto antes de anexar los archivos de texto, puede volver a establecer el carácter como coma después de anexar el archivo.

Para cambiar el carácter de punto decimal

  1. En la ventana Comandos, escriba el siguiente comando.
    SET POINT TO
  2. Importe el archivo con la palabra clave DELIMITED.
  3. En la ventana Comandos, escriba el siguiente comando para establecer de nuevo la coma como carácter de punto decimal.
    SET POINT TO ','

Vea también

Seleccionar campos para anexar | Proceso de exportación de datos | Importar y exportar datos | Anexar datos a tablas existentes | Anexar datos con el Asistente para importar | Proceso de anexión de datos


Proceso de exportación de datos

Puede exportar datos desde tablas de Visual FoxPro a archivos de texto, hojas de cálculo o tablas utilizados en otras aplicaciones. El proceso de exportación requiere una tabla de origen y el nombre y el tipo del archivo de destino. Si lo desea, puede seleccionar los campos y el registro que va a exportar. Puede utilizar el nuevo archivo en cualquier aplicación que admita el tipo de archivo que haya seleccionado.

Elegir un tipo de archivo para exportar

La siguiente tabla muestra los tipos de archivos que puede exportar desde Visual FoxPro:

Tipo de archivo | Extensión del archivo | Descripción
Delimitado por tabulaciones | txt | Archivo de texto en el que cada campo está separado por una tabulación.
Delimitado por comas | txt | Archivo de texto en el que cada campo está separado por una coma.
Delimitado por espacios | txt | Archivo de texto en el que cada campo está separado por un espacio en blanco.
Formato de datos del sistema | sdf | Archivo de texto con registros de longitud fija que terminan con un retorno de carro y un avance de línea.
Tabla | dbf | Tabla de Visual FoxPro, FoxPro, FoxBASE+®, dBASE o Paradox 3.5 ó 4.0.
Microsoft Excel | xls | Un formato de hoja de cálculo de Microsoft Excel (versiones 2.0, 3.0, 4.0, 5.0 y 97). Las celdas de las columnas se convierten en campos y las filas se convierten en registros. Puede exportar un máximo de 65,535, en las que se incluye una fila reservada para el encabezado del campo.
Lotus 1-2-3 | wks wk1 | Hoja de cálculo de Lotus 1-2-3 para las versiones 1-A, 2.x y 3.x. Las celdas de las columnas se convierten en campos y las filas se convierten en registros.

Para obtener más información acerca de como exportar, vea el comando COPY TO.

Vea también

Seleccionar registros para anexar | Exportar datos a un archivo nuevo | Importar y exportar datos | Exportar una cantidad o un intervalo de registros | Exportar los registros que cumplan una condición | Controlar el proceso de exportación de registros


Exportar datos a archivos nuevos

Puede copiar todos los campos y registros de la tabla de Visual FoxPro en un nuevo archivo o bien puede copiar solamente los campos y registros que haya seleccionado.

Para exportar datos

  1. En el menú Archivo, elija Exportar.
  2. En el cuadro Tipo, indique el tipo de archivo de destino.
  3. En el cuadro A, indique el nombre del archivo de destino.
  4. En el cuadro Desde, indique el nombre del archivo de origen.
  5. Si desea seleccionar los campos o registros para exportar, elija Opciones y complete el cuadro de diálogo Opciones de exportación.
  6. Elija Aceptar.

Seleccionar campos para exportar

De forma predeterminada, Visual FoxPro exporta todos los campos de la tabla de origen al archivo de destino. Puede seleccionar los campos que desea exportar en el cuadro de diálogo Opciones de exportación.

Para seleccionar los campos que va a exportar

  1. En el menú Archivo, elija Exportar.
  2. En el cuadro de diálogo Exportar, indique el nombre y tipo del archivo de destino.
  3. En el cuadro Desde, indique el nombre del archivo de origen.
  4. Elija Opciones.
  5. Elija Campos y seleccione los campos en el cuadro de diálogo Selector de campos.
  6. Elija Aceptar.

Seleccionar los registros para exportar

Al exportar datos, posiblemente desee limitar el número de registros que se copiarán en el nuevo archivo proporcionando un criterio de selección. Puede:

  • Elegir el alcance de registros si especifica una cantidad o intervalo.
  • Generar una expresión FOR que seleccione registros que cumplan una condición.
  • Crear una expresión WHILE que seleccione los registros hasta que encuentre uno que no cumpla una condición.

Puede usar cualquier combinación de estas opciones. La expresión WHILE pasa por alto los otros criterios.

Vea también

Proceso de exportación de datos | Exportar una cantidad o un intervalo de registros | Importar y exportar datos | Exportar los registros que cumplan una condición | Controlar el proceso de exportación de registros | Exportar archivos de texto


Exportar una cantidad o un intervalo de registros

Puede limitar el número de registros si especifica una cantidad o un intervalo de registros. Con la opción Alcance puede exportar un único registro o un grupo de registros situados secuencialmente en el archivo.

Nota El índice activo y el puntero de registro activo afectan a los resultados de las opciones de alcance Siguiente y Resto. Por ejemplo, el siguiente registro de una tabla indizada por apellido es probablemente diferente que el de una tabla indizada por estado. Esto no influye en la opción Registro, ya que el número de un registro no cambia cuando la tabla está indizada.

Para exportar un número limitado de registros

  1. En el menú Archivo, elija Exportar.
  2. Introduzca la información de la tabla de origen y del archivo de destino.
  3. Elija Opciones.
  4. Elija Alcance.
  5. Seleccione la opción de Alcance adecuada y complete el cuadro de diálogo Alcance.
    Para exportar | Elija
    Todos los registros del archivo de origen | Todas
    Un intervalo de registros a partir del registro activo | Siguiente
    Un registro específico por número | Grabar
    El registro actual más todos los siguientes hasta el final del archivo | Resto
  6. Elija Aceptar.

    Visual FoxPro exportará los registros incluidos en el alcance seleccionado.

Vea también

Exportar datos a un archivo nuevo | Exportar los registros que cumplan una condición | Importar y exportar datos | Controlar el proceso de exportación de registros | Exportar archivos de texto | Exportar valores de tipo Numérico o Monetario | Proceso de exportación de datos

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Exportar los registros que cumplan una condición

Si los registros que desea exportar no figuran en orden secuencial en la tabla, cree una expresión lógica que especifique los criterios de selección que debe cumplir un registro para poder exportarse. Por ejemplo, puede optar por exportar todos los registros que tengan un determinado valor en un campo.

Para introducir criterios para exportar registros

  1. En el menú Archivo, elija Exportar.
  2. Introduzca la información de la tabla de origen y del archivo de destino.
  3. Elija Opciones.
  4. Elija FOR si desea crear una expresión en el cuadro de diálogo Generador de expresiones.
    Nota No es necesario incluir el comando FOR en la expresión. Por ejemplo, escriba customer.country = "Canadá" para exportar solamente los datos canadienses.
  5. Elija Aceptar.

    Visual FoxPro evaluará todos los registros y exportará los que cumplan la condición de la expresión.

Vea también

Exportar una cantidad o un intervalo de registros | Controlar el proceso de exportación de registros | Importar y exportar datos | Exportar archivos de texto | Exportar valores de tipo Numérico o Monetario | Proceso de exportación de datos


Controlar el proceso de exportación de registros

Al exportar, puede especificar una condición que debe cumplirse para continuar con la evaluación y selección de registros. Esta condición se escribe en una expresión WHILE.

Mientras la expresión WHILE sea verdadera, Visual FoxPro procesará la tabla de origen. Cuando encuentre un registro que no cumpla la condición, Visual FoxPro terminará el proceso de evaluación y exportará los registros seleccionados. Esta opción le permite exportar basándose en información distinta de los valores contenidos en los campos.

Sugerencia Si utiliza una expresión WHILE en un archivo que no está indizado, el proceso de exportación puede terminar antes de que se evalúen todos los registros adecuados. Antes de realizar el procedimiento de exportación, asegúrese de que la tabla de origen tiene activo el índice adecuado para la expresión WHILE que desea utilizar.

Para introducir criterios que den por finalizada la exportación de registros

  1. En el menú Archivo, elija Exportar.
  2. Introduzca la información de la tabla de origen y del archivo de destino.
  3. Elija WHILE para crear una expresión en el cuadro de diálogo Generador de expresiones.
    Nota No tiene que incluir el comando WHILE en la instrucción. Por ejemplo, escriba ventas > 1000 para mostrar solamente las ventas que superen el valor de mil dólares.
  4. Elija Aceptar.

    Visual FoxPro exportará los registros que evalúe mientras la expresión sea verdadera.

Vea también

Exportar los registros que cumplan una condición | Exportar archivos de texto | Importar y exportar datos | Exportar valores de tipo Numérico o Monetario | Proceso de exportación de datos


Exportar archivos de texto

Si exporta a un archivo de texto, Visual FoxPro supone que los campos están separados por comas y que cada campo de caracteres está entre comillas. Si ha establecido la coma como carácter de punto decimal, es posible que los datos de tipo Numérico y Monetario se analicen en campos separados.

Para exportar a un archivo de texto, utilice el comando COPY TO con la cláusula DELIMITED apropiada como se indica en la tabla siguiente:

Para estos separadores | Use esta cláusula DELIMITED
Comas entre campos y campos de caracteres entre comillas | DELIMITED
Campos de caracteres entre caracteres distintos de las comillas | DELIMITED WITH delimitador
Tabulaciones entre campos | DELIMITED WITH TAB
Espacios en blanco entre campos | DELIMITED WITH BLANK1

1 Las fechas y horas separadas por un espacio se analizarán en dos campos con estas palabras clave.

Vea también

Controlar el proceso de exportación de registros | Importar y exportar datos | Exportar valores de tipo Numérico o Monetario | Exportar los registros que cumplan una condición | Exportar una cantidad o un intervalo de registros | Proceso de exportación de datos

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Exportar valores de tipo Numérico o Monetario (Currency)

Si ha cambiado el carácter de punto decimal de Visual FoxPro por una coma, es posible que los datos de tipo Numérico y Monetario se analicen en campos distintos cuando anexe o exporte los datos. Por ejemplo, Visual FoxPro traduciría el valor 100,00 en dos campos porque aparece delimitado por una coma. Elija uno de los dos métodos siguientes para asegurarse de que la coma se convierte de forma adecuada:

  • Use tabulaciones para separar campos en el archivo de texto.
  • Establezca de nuevo el punto como carácter de punto decimal.

Si desea exportar el texto, utilice el comando COPY TO con las palabras clave DELIMITED WITH TAB.

Si desea cambiar el carácter de punto decimal por un punto antes de exportar archivos de texto, puede volver a establecer este carácter como coma después de haber exportado el archivo.

Para cambiar el carácter de punto decimal

  1. En la ventana Comandos, escriba el siguiente comando.
    SET POINT TO
  2. Exporte el archivo con la palabra clave DELIMITED.
  3. En la ventana Comandos, escriba el siguiente comando para establecer de nuevo la coma como carácter de punto decimal.
    SET POINT TO ','

Vea también

Exportar archivos de texto | Controlar el proceso de exportación de registros | Importar y exportar datos | Exportar los registros que cumplan una condición | Exportar una cantidad o un intervalo de registros | Proceso de exportación de datos


Conversión de las bases de datos de Visual FoxPro

Cuando haya diseñado la aplicación cliente-servidor, estará en condiciones de generar y realizar un conversión del prototipo local. Un prototipo local es un modelo operativo de la aplicación que utiliza tablas, vistas y bases de datos de Microsoft® Visual FoxPro® para representar datos a los que se tiene acceso en algún momento a través de un servidor remoto. El Asistente para conversión se utiliza para mover bases de datos, tablas y vistas desde su sistema hasta un servidor remoto de Microsoft® SQL Server™.

En esta sección

Objetivos para la creación de prototipos
Cuando utiliza Microsoft® Visual FoxPro® para generar un prototipo de su aplicación, aprovecha las posibilidades que ofrecen los formularios, asistentes, generadores y diseñadores visuales y el Administrador de proyectos para programar rápidamente una aplicación operativa.
Generar un prototipo local de una aplicación
Para generar un prototipo local de la aplicación, puede comenzar desde cero o bien convertir una aplicación existente de Microsoft® Visual FoxPro® en una aplicación cliente-servidor.
Crear bases de datos con asistentes para conversión
El Asistente para conversión a SQL Server de Visual FoxPro crea servidores SQL que duplican, todo lo posible, la funcionalidad de un conjunto de tablas en una base de datos de Microsoft Visual FoxPro.
Preparar el Asistente para conversión a SQL Server
Antes de ejecutar el Asistente para conversión a SQL Server, debe preparar tanto la parte del cliente como la parte del servidor.

Secciones relacionadas

Desarrollar aplicaciones Visual FoxPro
Esta sección incluye información conceptual acerca de cómo desarrollar aplicaciones Visual FoxPro, instrucciones para crear bases de datos y la interfaz de usuario, y otras tareas necesarias para crear aplicaciones Visual FoxPro
Crear una aplicación
Discute cómo crear una aplicación Visual FoxPro, incluye una o más bases de datos, un programa principal que establece el entorno de sistema de su aplicación y una interfaz de usuario que involucra formularios, barras de herramientas y menús.
Establecer el punto de partida
Describe cómo el archivo principal es el punto de inicio de su aplicación y puede ser un programa o formulario. Cuando su aplicación se ejecuta, Visual FoxPro lanza el archivo principal de la misma, el cual a su vez ejecuta todos los otros componentes como sea necesario.
Inicializar el entorno
Establecer el entorno es la primera tarea que un archivo principal o aplicación debe cumplir.
Controlar el bucle de eventos
Aprenda cómo establecer un bucle de eventos, el cual hace que Visual FoxPro empiece a procesar los eventos de usuario como clics de ratón y golpes de tecla. Esto ocurre después de establecer el entorno y que se haya mostrado la interfaz de usuario inicial.
Crear aplicaciones con el marco de aplicaciones
Explica como crear aplicaciones con el Marco de aplicaciones utilizando el Asistente para aplicaciones y el Generador de aplicaciones.
Optimizar el rendimiento cliente/servidor
Aprenda cómo puede optimizar su aplicación para ganar rendimiento al incrementar la producción de datos.
Crear la interfaz de usuario
Aprenda cómo crear formularios, clases, controles y barras de herramientas para ofrecer un rico conjunto de herramientas en su interfaz de usuario.
Programar aplicaciones internacionales
Describe cómo puede diseñar y desarrollar sus aplicaciones Visual FoxPro para que sean tan efectivas internacionalmente como domésticamente.


Objetivos para la creación de prototipos

Cuando utilice Visual FoxPro para generar un prototipo de su aplicación, aprovechará las posibilidades de los formularios, asistentes, generadores y diseñadores visuales y del Administrador de proyectos para programar rápidamente una aplicación operativa. Aunque su objetivo último es implementar la aplicación a través de plataformas cliente-servidor, obtendrá grandes ventajas si genera un buen prototipo.

Reducir el tiempo de programación

Si construye un prototipo rápido, puede perfeccionar el diseño y la arquitectura local de su aplicación de forma rápida y sencilla, sin necesidad de tener acceso al servidor remoto para volver a generar tablas y bases de datos del servidor. También puede probar y depurar los formularios de la aplicación frente a almacenes de datos de menor tamaño, lo que le permite corregir y mejorar con mayor rapidez la interfaz de usuario de la aplicación. Puesto que los costos generales de la arquitectura son reducidos, evita pérdidas de tiempo de programación al volver a generar, indexar y conectar datos remotos simplemente para probar el prototipo.

Reducir los costos de programación y aumentar la satisfacción del cliente

Puesto que el prototipo local reside completamente en su PC, resulta sencillo hacer una demostración de un modelo operativo de la aplicación ante el usuario final en las primeras fases del ciclo de programación. Si el cliente ve la aplicación a medida que avanza, ganará confianza en su capacidad de proporcionar una solución que satisfaga sus necesidades. También le ofrece la oportunidad de obtener la opinión del cliente sobre la interfaz de usuario y los informes antes de invertir recursos en la implementación sobre un servidor remoto.

A medida que los usuarios vean e interactúen con su prototipo, pueden comenzar a identificar las áreas que les gustaría modificar, así como ver las posibilidades de agregar funcionalidad adicional a la aplicación. Puede implementar los cambios y volver a hacer demostraciones de la aplicación en un proceso repetitivo hasta que usted y el cliente estén satisfechos con el diseño y las funciones de la aplicación cuyo prototipo se ha realizado. Posteriormente, el prototipo sirve como especificación operativa para la aplicación cliente-servidor final implementada.

Contribuir al éxito de la implementación

También existe la posibilidad de proporcionar a los usuarios el prototipo de la aplicación como demostración, lo que les permite experimentar con el modelo operativo a medida que usted avanza en el proceso de implementación de la aplicación real. A medida que obtienen experiencia con el prototipo, su curva de aprendizaje se reduce y colaboran mejor a la hora de perfeccionar y ajustar la aplicación. También logran una posición mejor para conseguir una mayor productividad y satisfacción en la etapa de la implementación final porque ya comprenden la estructura básica de la aplicación.

Disponer de un modelo operativo aumenta el tiempo previo para que el usuario final se familiarice y se sienta cómodo con la aplicación. También proporciona un marco que permite al personal de su empresa o del cliente diseñar y desarrollar un plan de formación para la aplicación. El prototipo se puede utilizar incluso para formar a los usuarios finales antes de la entrega de la aplicación final, contribuyendo de esta forma al éxito en la implementación de la aplicación cliente-servidor final.

Vea también

Convertir las bases de datos de Visual FoxPro | Generar un prototipo local de una aplicación | Crear bases de datos con asistentes para conversión | Preparar el Asistente para conversión a SQL Server


Generar un prototipo local de una aplicación

Para generar un prototipo local de la aplicación, puede comenzar desde cero o bien convertir una aplicación existente de Visual FoxPro en una aplicación cliente-servidor. La principal diferencia entre crear un prototipo local de una aplicación cliente-servidor y programar cualquier otra aplicación de Visual FoxPro radica en el uso de vistas y tablas locales para representar datos en los que, posteriormente, se realiza un conversión.

Para crear y realizar un conversión sobre un prototipo local

  1. Cree su aplicación con vistas y tablas locales para representar los datos que desea mover a un servidor remoto.
  2. Utilice vistas locales en el entorno de datos de la aplicación para formularios e informes.
  3. Realice la conversión de vistas y tablas locales mediante el Asistente para Conversión a SQL Server:
    • En el paso Definir las opciones de conversión, en el área Cambios a realizar en la base de datos local, seleccione Redirigir vistas a datos remotos.

      Cuando seleccione esta opción, el Asistente para conversión copiará al servidor remoto las tablas locales que usted elija y redirigirá las vistas locales para utilizar datos remotos donde sea pertinente.

Para obtener más información acerca de la creación de vistas, vea Crear vistas. Para obtener información acerca de la creación de formularios y la utilización de un entorno de datos, vea Crear formularios.

Vea también

Objetivos para la creación de prototipos | Crear bases de datos con asistentes para conversión | Convertir las bases de datos de Visual FoxPro | Preparar el Asistente para conversión a SQL Server


Crear bases de datos con asistentes para conversión

El Asistente para Conversión a SQL Server de Visual FoxPro crea servidores SQL que duplican, todo lo posible, la funcionalidad de un conjunto de tablas en una base de datos de Visual FoxPro. También puede elegir si desea redirigir las vistas de Visual FoxPro de forma que utilicen los datos remotos recién creados en lugar de datos locales. Puede utilizar el Asistente para conversión con el fin de:

  • Mover datos locales a un servidor remoto.
  • Transformar tablas de base y vistas locales en tablas de base y vistas remotas.
  • Migrar una aplicación local hacia una aplicación cliente-servidor.
    Nota Aunque el Asistente para conversión tiene acceso a SQL Server, puede crear una aplicación cliente-servidor para cualquier origen de datos ODBC remoto. Para otros servidores distintos de SQL Server, puede utilizar las funciones de paso a través de SQL para crear tablas remotas y después usar Visual FoxPro para crear vistas remotas que tengan acceso a las tablas del servidor. Para obtener más información acerca del uso de las funciones de paso a través de SQL, consulte Mejorar aplicaciones utilizando tecnología de paso a través de SQL (SPT). Para obtener más información acerca de la creación de vistas remotas, consulte Crear vistas.

Vea también

Generar un prototipo local de una aplicación | Preparar el Asistente para conversión a SQL Server | Convertir las bases de datos de Visual FoxPro | Objetivos para la creación de prototipos


Preparar el Asistente para conversión a SQL Server

Antes de ejecutar el Asistente para conversión a SQL Server, debe preparar tanto la parte del cliente como la parte del servidor.

Preparar la parte SQL Server

Antes del conversión, debe asegurarse de que dispone de los permisos necesarios en el servidor, estimar el tamaño de la base de datos y comprobar que el espacio en disco del servidor es suficiente. También existen preparativos especiales para un conversión a múltiples discos o dispositivos.

Comprobar el espacio libre en disco

Asegúrese de que el espacio en disco disponible en el servidor es suficiente.

Precaución Si el Asistente para conversión a SQL Server se queda sin espacio libre en el servidor, se detendrá, dejando en el servidor una base de datos parcial y los dispositivos que haya creado. Puede eliminar los dispositivos, las bases de datos y las tablas con la herramienta de Administración de SQL Server.

Establecer permisos en las bases de datos de SQL Server

Para ejecutar el Asistente para conversión a SQL Server, tiene que disponer de determinados permisos en el servidor SQL Server hacia el que desea realizar la conversión. Los permisos necesarios dependen de las tareas que desee realizar.

  • Para un conversión hacia una base de datos existente, necesita los permisos CREATE TABLE y CREATE DEFAULT.
  • Para generar una nueva base de datos, necesita los permisos CREATE DATABASE y SELECT para las tablas del sistema de la base de datos master.
  • Para crear nuevos dispositivos, tiene que ser un administrador del sistema.

Para obtener más información acerca de la concesión de permisos del servidor, consulte la documentación de SQL Server.

Estimar el tamaño de la base de datos y los dispositivos de SQL Server

Cuando usted crea una nueva base de datos, el Asistente para conversión a SQL Server le pide que seleccione dispositivos para la base de datos y el registro. También le solicita que defina el tamaño de la base de datos y de los dispositivos.

Estimar el tamaño de la base de datos de SQL Server

Cuando SQL Server crea una base de datos, reserva una cantidad fija de espacio para dicha base de datos en uno o varios dispositivos. La base de datos no utiliza necesariamente todo este espacio; el tamaño solamente limita el crecimiento máximo de una base de datos antes de que se agote su espacio.

Nota Puede aumentar el tamaño de una base de datos de SQL Server después de haberla creado. Para obtener más información al respecto, consulte el comando ALTER DATABASE en la documentación de SQL Server.

Para estimar el espacio necesario para la base de datos, calcule el tamaño total de los archivos .dbf de Visual FoxPro para las tablas en las que desea realizar la conversión más la velocidad a la que crecerá la nueva base de datos de SQL Server. En general, cada megabyte de datos de Visual FoxPro requiere por lo menos entre 1,3 y 1,5 megabytes en SQL Server.

Si dispone de mucho espacio en disco en el servidor, multiplique por dos el tamaño de las tablas de Visual FoxPro. Esto le garantiza que el Asistente para conversión a SQL Server tendrá suficiente espacio para realizar la conversión de la base de datos y dejará espacio para el crecimiento. Si piensa agregar gran cantidad de datos a la base de datos, aumente el múltiplo.

Estimar el tamaño de los dispositivos de SQL Server

Todas las bases de datos y los registros de SQL Server se sitúan en dispositivos. Un dispositivo es una ubicación lógica donde se introducen bases de datos y registros, además de un archivo físico. Cuando se crea un dispositivo, SQL Server crea un archivo, reservando de esta forma una cantidad fija de espacio en disco para su uso propio.

El Asistente para conversión a SQL Server muestra la cantidad de espacio libre disponible en los dispositivos de SQL Server existentes. Seleccione un dispositivo que tenga como mínimo suficiente espacio libre para el tamaño estimado de la base de datos.

Si ninguno de los dispositivos existentes tiene espacio libre suficiente, puede crear un nuevo dispositivo con el Asistente para conversión a SQL Server. Los dispositivos nuevos deben tener como mínimo el tamaño estimado de su base de datos. Si es posible, defina el dispositivo con un tamaño mayor que el de la base de datos, lo que le permitirá ampliarla posteriormente o situar otras bases de datos o registros en el mismo dispositivo.

Nota El tamaño de los dispositivos no se puede modificar. Asegúrese de crear dispositivos con un tamaño suficientemente grande.

Usar múltiples discos o dispositivos de SQL Server

En la mayoría de los casos, el Asistente para conversión a SQL Server proporciona un control más que suficiente sobre los dispositivos de SQL Server. No obstante, si el servidor tiene múltiples discos o si desea situar una base de datos o un registro en múltiples dispositivos, quizá desee crear dispositivos antes de ejecutar el Asistente para conversión a SQL Server.

Servidores con múltiples discos físicos

Si su servidor tiene dos o más discos duros físicos, es posible que desee situar la base de datos en un disco y su registro en otro disco distinto. En caso de error del disco, tendrá más probabilidades de recuperar la base de datos si el registro y la base de datos están almacenados en distintos discos físicos.

El Asistente para conversión a SQL Server le permite crear nuevos dispositivos, pero solamente en un disco físico: el mismo en el que está situado el dispositivo de base de datos master.

Para situar una base de datos y un registro en discos separados, asegúrese de que dispone en ambos discos de dispositivos con el tamaño suficiente, creando nuevos dispositivos en caso necesario. A continuación, ejecute el Asistente para conversión a SQL Server.

Colocar bases de datos o registros en múltiples dispositivos

SQL Server permite que las bases de datos y los registros abarquen varios dispositivos. No obstante, el Asistente para conversión a SQL Server solamente le permite especificar un dispositivo para la base de datos y un dispositivo para el registro.

Para especificar múltiples dispositivos para una base de datos o un registro, convierta dichos dispositivos (y ningún otro) en predeterminados. Posteriormente, ejecute el Asistente para conversión a SQL Server y elija Predeterminado para el dispositivo de la base de datos o del registro.

Nota Si el tamaño de la nueva base de datos o del nuevo registro de SQL Server no necesita usar todos los dispositivos predeterminados, SQL Server solamente utilizará los dispositivos necesarios para alojar la base de datos o el registro.

Preparar el cliente

Antes de realizar la conversión, debe tener acceso a SQL Server a través de un origen de datos ODBC o de una conexión con nombre. También necesita tener una base de datos de Visual FoxPro, de la que debe realizar una copia de seguridad antes de ejecutar el Asistente para conversión a SQL Server.

Crear un origen de datos ODBC o una conexión con nombre

Al crear una nueva base de datos remota, se selecciona un origen de datos ODBC o una conexión con nombre en la base de datos de Visual FoxPro que tiene acceso al SQL Server al que quiere realizar la conversión. Como no puede iniciar el Asistente para conversión hasta que seleccione una conexión con nombre o un origen de datos, debe crear la conexión con nombre o el origen de datos adecuado antes de iniciar el proceso de conversión.

Para obtener más información acerca de la creación de una conexión con nombre, vea Crear vistas. Para crear un origen de datos ODBC, ejecute el Administrador de ODBC. Para obtener información acerca de cómo configurar orígenes de datos ODBC, vea Instalar Visual FoxPro.

Copia de seguridad de la base de datos

Es conveniente crear una copia de seguridad de la base de datos (archivos .dbc, .dct y .dcx) antes de realizar la conversión. Aunque el Asistente para conversión a SQL Server no modifica los archivos .dbf, sí maneja el .dbc directamente abriéndolo como tabla a veces e indirectamente cambiando el nombre de las tablas y vistas al crear nuevas vistas remotas. Si realiza una copia de seguridad de la base de datos, podrá devolverla a su estado original previo al conversión sobrescribiendo los archivos .dbc , .dct y .dcx modificados con las copias originales de la copia de seguridad, lo que invierte los cambios de nombre y la creación de vistas nuevas.

Cerrar tablas

El Asistente para conversión a SQL Server intenta abrir de forma exclusiva todas las tablas de la base de datos cuyo conversión se desea realizar. Si alguna de las tablas ya está abierta y compartida, el asistente la cierra y la vuelve a abrir de forma exclusiva. Al abrir las tablas de forma exclusiva antes del conversión, se protege contra usuarios que intenten modificar los registros de las tablas que se van a exportar durante la exportación de datos. Si alguna tabla no se puede abrir de forma exclusiva, el Asistente para conversión a SQL Server mostrará un mensaje y estas tablas no estarán disponibles para la conversión.

Vea también

Crear bases de datos con asistentes para conversión | Iniciar el Asistente para conversión a SQL Server | Convertir las bases de datos de Visual FoxPro | Funcionamiento del Asistente para conversión a SQL Server | Completar el proceso de conversión a SQL Server | Objetivos para la creación de prototipos |


Iniciar el Asistente para conversión a SQL Server

Después de crear su origen de datos ODBC y de completar los preparativos necesarios en el cliente y el servidor, podrá comenzar la conversión.

Para iniciar el Asistente para conversión a SQL Server

  1. En el menú Herramientas, elija Asistentes y, a continuación, elija Conversión.
  2. En el cuadro de diálogo Selección de los asistentes, elija Asistente para conversión a SQL Server.
  3. Siga las indicaciones de las pantallas del asistente, como se describe en las secciones posteriores.

    Puede elegir el botón Cancelar en cualquier momento para salir del asistente; el asistente no ejecuta ninguna acción en el servidor hasta que usted elija el botón Finalizar.

  4. Cuando vaya a hacer la conversión, elija el botón Finalizar.

Tras elegir el botón Finalizar, el Asistente para conversión a SQL Server comienza a exportar la base de datos al servidor.

El botón Finalizar está disponible después de proporcionar la información básica necesaria para la conversión. Si elige el botón Finalizar antes de completar todas las pantallas del asistente, el Asistente para conversión a SQL Server usará los valores predeterminados para las pantallas restantes.

Vea también

Preparar el Asistente para conversión a SQL Server | Funcionamiento del Asistente para conversión a SQL Server | Convertir las bases de datos de Visual FoxPro | Completar el proceso de conversión a SQL Server


Funcionamiento del Asistente para conversión a SQL Server

El Asistente para conversión a SQL Server hace que la exportación mediante conversión de una base de datos de Visual FoxPro a SQL Server sea casi transparente. Esta sección explica exactamente lo que ocurre al elegir el botón Finalizar: la forma en que el Asistente para conversión a SQL Server exporta los datos y asigna objetos de Visual FoxPro a objetos de SQL Server.

Métodos de exportación de datos

El Asistente para conversión a SQL Server exporta los datos utilizando un método entre dos disponibles. El primer método crea un procedimiento almacenado que ejecuta inserciones de múltiples filas. Este método puede ser muy rápido, puesto que los procedimientos almacenados se precompilan y se ejecutan rápidamente.

No obstante, los procedimientos almacenados no aceptan como parámetros variables binarias de longitud variable. Si desea exportar datos que se deben almacenar en tablas de SQL Server utilizando tipos de datos de texto o imagen, o bien tablas con más de 250 campos, el Asistente para conversión a SQL Server utilizará otro método de exportación distinto. Este segundo método crea una instrucción SQL INSERT para cada fila de la tabla y después ejecuta la instrucción.

Si el Asistente para conversión a SQL Server encuentra errores mientras exporta datos con el método SQL INSERT y el número de errores supera el 10% del número de registros de la tabla, o bien es superior a 100 registros (lo que sea mayor), el asistente cancelará la exportación de la tabla y guardará el número de errores de exportación para el informe de errores. No obstante, la tabla de servidor exportada no se borra y los registros que se lograron exportar sin problemas permanecen en la tabla del servidor.

Introducción a la asignación de objetos

Para realizar la conversión de una base de datos de Visual FoxPro hasta un servidor, el Asistente para conversión a SQL Server crea objetos de servidor que, en la medida de lo posible, hagan lo mismo que la base de datos de Visual FoxPro. La asignación de algunos objetos de Visual FoxPro a objetos del servidor es muy directa: bases de datos, tablas, campos, valores predeterminados e índices de Visual FoxPro se asignan a bases de datos, tablas, campos, valores predeterminados e índices de SQL Server de forma directa, uno a uno.

Sin embargo, no todos los objetos locales se asignan directamente a objetos del servidor. Las reglas de validación y la integridad referencial de Visual FoxPro forman parte del diccionario de datos y se exigen en el motor. Las reglas de validación y la integridad referencial de SQL Server no forman parte del diccionario de datos y se exigen mediante código enlazado a una tabla. Estas diferencias, así como las decisiones de diseño realizadas por el Asistente para conversión a SQL Server, implican que gran parte del diccionario de datos de Visual FoxPro no se puede asignar directamente a construcciones de SQL Server.

La siguiente tabla resume la forma en que se asignan los objetos desde Visual FoxPro hasta SQL Server:

Objetos de Visual FoxPro | Objetos de SQL Server
Base de datos | Base de datos
Tabla | Tabla
Índices | Índices
Campo | Campo
Valor predeterminado | Valor predeterminado
Regla de validación de tabla | Procedimientos almacenados de SQL Server, llamados desde desencadenadores UPDATE e INSERT
Regla de validación de campo | Procedimientos almacenados de SQL Server, llamados desde desencadenadores UPDATE e INSERT
Relaciones permanentes (cuando se usen para limitaciones de integridad referencial) | Desencadenadores UPDATE, INSERT y DELETE o limitaciones de tabla

Las siguientes secciones tratan cada uno de los objetos de Visual FoxPro y el objeto (o los objetos) de SQL Server al que se asigna.

Convenciones de nomenclatura para objetos exportados mediante conversión

A medida que el Asistente para conversión a SQL Server migra objetos a un origen de datos, crea objetos con nombre en el servidor. El asistente utiliza prefijos para los objetos que necesitan nombres nuevos debido a que no existía en Visual FoxPro ningún objeto autónomo de ese tipo (por ejemplo, valores predeterminados y reglas). Después del prefijo se incluye un nombre de tabla al que sigue un nombre de campo, en caso necesario. Esta convención de nomenclatura permite que todos los objetos del mismo tipo tengan el mismo prefijo y se ordenen juntos cuando se presenten en pantalla con las herramientas de administración del origen de datos. Los objetos creados en la misma tabla también se agrupan cuando se muestran en pantalla.

Objetos de base de datos y tabla

Una base de datos de Visual FoxPro se asigna directamente a una base de datos de SQL Server. Una tabla de Visual FoxPro, exceptuando parte de su diccionario de datos, se asigna a una tabla de SQL Server.

Los nombres de base de datos, tabla, índice y campo pueden cambiar durante el proceso de conversión, en caso de que infrinjan las convenciones de nomenclaturas de SQL Server. Los nombres de SQL Server deben tener 30 caracteres como máximo, y el primero de ellos debe ser una letra o el símbolo "@". Los demás caracteres pueden ser números, letras o los símbolos "$", "#" y "_"; no se admiten espacios en blanco. El Asistente para conversión a SQL Server sustituye los caracteres no válidos por el símbolo "_".

Los nombres que sean idénticos a palabras reservadas de SQL Server reciben el sufijo "_". Por ejemplo, FROM y GROUP se convierten en FROM_ y GROUP_. El Asistente para conversión a SQL Server también incluye el símbolo "_" delante de los nombres de objetos que comienzan por un número.

Tablas

El Asistente para conversión a SQL Server asigna a cada tabla exportada mediante conversión el mismo nombre que la tabla local a menos que contenga un espacio o sea una palabra clave para el origen de datos.

Vistas de nuevas tablas del servidor

Si selecciona Crear vistas remotas de las tablas, el Asistente para conversión a SQL Server creará vistas remotas y les asignará muchas de las propiedades de los campos de la tabla local original.

Asignar nombres de campos y tipos de datos de Visual FoxPro a sus homólogos de SQL Server

Los nombres de campos y los tipos de datos se convierten automáticamente en campos de SQL Server cuando se exporta una tabla de Visual FoxPro mediante el Asistente para conversión a SQL Server.

Los tipos de datos de Visual FoxPro se asignan a tipos de datos de SQL Server de la siguiente forma:

Abreviatura Tipo de datos de Visual FoxPro Tipo de datos de SQL Server
C Carácter
char
Y Monetario (Currency)
money
D Fecha
datetime
T DateTime
datetime
B Doble
float
F Flotante
float
G General
image
I Entero
int
L Lógico
bit
M Memo
text
M (binario) Memo (binario)
image
C (binario) Character (binario)
binary
N Numérico
float

Columnas Timestamp e Identity

Las columnas Timestamp se crean con el tipo de datos de marca de hora de Transact-SQL. Cuando selecciona la casilla de verificación de la columna Timestamp para una tabla específica en el paso 4 - Asociar los tipos de datos de campos, el Asistente para conversión a SQL Server crea un campo de marca de hora para la tabla.

Si la tabla contiene uno o más campos memo (M) o imagen (P), el Asistente para conversión a SQL Server selecciona la casilla de verificación de la columna Timestamp para la tabla de forma predeterminada y crea un campo de marca de hora en la versión de la tabla resultante del conversión.

Las columnas de identidad se crean con los campos de la propiedad IDENTITY de Transact-SQL.

Índices

Los índices de SQL Server y los de Visual FoxPro son muy parecidos. La siguiente tabla muestra la forma en que se convierten los tipos de índices de Visual FoxPro a tipos de índices de SQL Server:

Conversión de tipos de índices

Tipo de índice de Visual FoxPro | Tipo de índice de SQL Server
Principal | Único agrupado
Candidato | Único
Único Normal | No único

El Asistente para conversión a SQL Server utiliza los nombres de etiquetas de Visual FoxPro como nombres para los índices de SQL Server. Si el nombre de etiqueta es una palabra reservada en el servidor, el asistente modificará el nombre de la etiqueta anexando el carácter "_".

Nota SQL Server no admite índices en orden ascendente ni descendente, ni permite expresiones dentro de los índices del servidor. El Asistente para conversión a SQL Server elimina las expresiones de Visual FoxPro de las expresiones de índice al exportarlo; solamente envía al servidor los nombres de campos.

Valores predeterminados de SQL Server

Una expresión predeterminada de Visual FoxPro se asigna directamente a un único valor predeterminado de SQL Server. El Asistente para conversión a SQL Server intenta crear un valor predeterminado de SQL Server basándose en la expresión predeterminada para un campo de Visual FoxPro. Si logra crear el valor predeterminado, el Asistente para conversión a SQL Server lo enlazará al campo apropiado de SQL Server. El informe de conversión sobre los campos indica si el Asistente para conversión a SQL Server ha logrado convertir la expresión de Visual FoxPro a Transact-SQL de SQL Server. Para obtener más detalles acerca de la conversión, consulte Asignar expresiones.

Aunque los valores predeterminados de SQL Server y de Visual FoxPro son muy parecidos, existen algunas diferencias en cuanto a su creación y comportamiento entre ambos productos. Los valores predeterminados de SQL Server son objetos autónomos, independientes de cualquier campo o tabla. Una vez creado un valor predeterminado, se puede utilizar o enlazar a cualquier cantidad de campos distintos.

Convenciones de nomenclatura para valores predeterminados

El Asistente para conversión a SQL Server asigna nombres a los valores predeterminados mediante el prefijo Dflt_ más el nombre de la tabla y el del campo. Por ejemplo, un valor predeterminado para el campo ordamt de la tabla Customer se puede denominar Dflt_Customer_Ordamt en el servidor. Si la combinación del prefijo con los nombres de tabla y campo da como resultado un nombre predeterminado superior a 30 caracteres, Visual FoxPro truncará los caracteres sobrantes.

Los campos con una expresión predeterminada de cero se enlazan a un valor predeterminado llamado UW_ZeroDefault. Si dos o más campos tienen la misma expresión predeterminada distinta de cero, el Asistente para conversión a SQL Server creará dos valores predeterminados, con dos nombres distintos, cuya funcionalidad es idéntica.

Valores predeterminados para campos lógicos de Visual FoxPro

Los campos lógicos de SQL Server no aceptan valores nulos, mientras que los campos lógicos de Visual FoxPro sí los admiten. Para solucionar esta diferencia, el Asistente para conversión a SQL Server crea y enlaza automáticamente un valor predeterminado denominado UW_ZeroDefault a cada campo lógico exportado, aunque usted no elija exportar los valores predeterminados. Este valor predeterminado establece el valor del campo en el servidor a 0 (o False (.F.), si muestra el campo en Visual FoxPro) cuando no se proporciona ningún valor.

Si la tabla local de Visual FoxPro contiene un valor predeterminado para un campo lógico que establece el campo igual a True (.T.), el Asistente para conversión a SQL Server no enlazará el valor predeterminado UW_ZeroDefault a la tabla del servidor. En su lugar, el asistente crea un valor predeterminado que establece el campo igual a 1 y asigna al valor predeterminado un nombre de acuerdo con las convenciones de nomenclatura descritas anteriormente en este tema.

Los valores predeterminados de SQL Server se comportan de distinta forma que los de Visual FoxPro.

Desencadenadores de SQL Server

Un desencadenante de SQL Server es una serie de instrucciones Transact-SQL asociadas con una tabla determinada de SQL Server. Cuando elija exportar mediante conversión reglas de validación y relaciones en el paso 8, el Asistente para conversión a SQL Server convertirá las reglas de validación a nivel de campo y de registro de Visual FoxPro, así como las relaciones permanentes entre tablas en procedimientos almacenados que se llaman desde los desencadenadores de SQL Server. Cada desencadenante del servidor contiene código para emular la funcionalidad de varias reglas de validación e integridad referencial.

Nota El Asistente para conversión a SQL Server no exporta los desencadenadores de Visual FoxPro.

Una tabla del servidor puede tener tres desencadenadores, uno para cada comando que puede modificar datos en la tabla: UPDATE, INSERT y DELETE. El desencadenante se ejecuta automáticamente al ejecutar el comando asociado.

La siguiente tabla describe los desencadenadores creados por el Asistente para conversión a SQL Server. Un desencadenante específico puede contener código para emular las funciones indicadas de Visual FoxPro, en su totalidad o en parte.

desencadenante | Funcionalidad de Visual FoxPro emulada
UPDATE | Reglas de validación (validación a nivel de campo y de registro) Integridad referencial
INSERT | Reglas de validación (validación a nivel de campo y de registro) Integridad referencial (sólo desencadenadores de tablas secundarias)
DELETE (sólo tabla primaria) | Integridad referencial

Convenciones de nomenclatura para desencadenadores

El Asistente para conversión a SQL Server asigna nombres a los desencadenadores del servidor combinando un prefijo, que indica el tipo de desencadenante que se va a crear, con el nombre de la tabla de SQL Server a la que pertenece el desencadenante. El prefijo ("TrigU_" para desencadenadores UPDATE, "TrigD_" para desencadenadores DELETE y "TrigI_" para desencadenadores INSERT) se sitúa delante del nombre de la tabla. Por ejemplo, el desencadenante UPDATE de la tabla Customer se podría denominar TrigU_Customer.

Reglas de validación

El Asistente para conversión a SQL Server puede exportar reglas de validación a nivel de campo y de registro de Visual FoxPro, que convierte a procedimientos almacenados en SQL Server. El asistente asigna nombres a las reglas a nivel de campo combinando un prefijo "vrf" (del inglés, "regla de validación, campo") con los nombres de la tabla y del campo; un ejemplo puede ser vrf_customer_lname. Las reglas de validación de tabla se denominan con el prefijo "vrt" (del inglés, "regla de validación, tabla") más el nombre de la tabla, creando así un nombre como vrt_customer.

El Asistente para conversión a SQL Server utiliza desencadenadores que llaman a procedimientos almacenados en lugar de reglas de SQL Server para exigir una validación a nivel de campo porque las reglas de SQL Server no permiten ver mensajes de error personalizados. Para obtener más información acerca de las reglas de SQL Server, consulte el comando CREATE RULE en la documentación de SQL Server.

Integridad referencial

Visual FoxPro admite la integridad referencial a través de desencadenadores sobre los eventos UPDATE, DELETE e INSERT en relaciones de tablas permanentes que se exigen a nivel de motor. Puede elegir implementar restricciones de integridad referencial en SQL Server usando dos métodos:

  • Integridad referencial basada en desencadenadores

    –O bien–

  • Integridad referencial declarativa

Cuando elige integridad referencial basada en desencadenadores, el Asistente para conversión a SQL Server crea desencadenadores que incluyen el código Transact-SQL necesario para duplicar las restricciones de integridad referencial de Visual FoxPro. Si elige implementar integridad referencial declarativa, el Asistente para conversión a SQL Server crea restricciones de SQL Server mediante el comando ALTER TABLE con la palabra clave CONSTRAINT.

Integridad referencial basada en desencadenadores

En el método basado en desencadenadores, se exige la integridad referencial en SQL Server mediante código Transact-SQL en desencadenadores. Puede usar desencadenadores para proporcionar restricciones a instrucciones UPDATE, DELETE e INSERT, y para colocar en cascada las modificaciones resultantes de las instrucciones DELETE e INSERT.

El Asistente para conversión a SQL Server crea desencadenadores de SQL Server evaluando los desencadenadores de Visual FoxPro usados para exigir la integridad referencial en relaciones permanentes de la base de datos de Visual FoxPro. La siguiente tabla presenta la asignación entre las restricciones de integridad referencial de Visual FoxPro y los desencadenadores de SQL Server generados por el Asistente para conversión a SQL Server.

Restricción de integridad
referencial de Visual FoxPro desencadenante de SQL Server

UPDATE | Cascada | Colocar en cascada el desencadenante UPDATE
 | Restringir | Restringir el desencadenante UPDATE
 | Ignorar | No se genera ningún desencadenante
DELETE | Cascada | Colocar en cascada el desencadenante DELETE
 | Restringir | Restringir el desencadenante DELETE
 | Ignorar | No se genera ningún desencadenante
INSERT | Restringir | Restringir el desencadenante INSERT
 | Ignorar | No se genera ningún desencadenante

Una relación permanente de Visual FoxPro utilizada en una limitación de integridad referencial puede convertirse en hasta cuatro desencadenadores de SQL Server: dos para la tabla primaria y dos para la tabla secundaria.

Nota Si solamente se exporta mediante conversión una de las tablas de una relación o si no se exige la integridad referencial en Visual FoxPro, la relación no se exportará.

Tabla primaria

El Asistente para conversión a SQL Server crea un desencadenante UPDATE que impide que el usuario cambie la clave principal de la tabla primaria, o bien coloca en cascada ese cambio a través de la tabla secundaria, dependiendo del tipo de relación que se creó en Visual FoxPro.

El Asistente para conversión a SQL Server también crea un desencadenante DELETE que impide que el usuario elimine un registro con registros secundarios relacionados, o que elimine los registros secundarios, dependiendo siempre del tipo de relación existente entre las tablas de Visual FoxPro.

Tabla secundaria

El Asistente para conversión a SQL Server crea un desencadenante UPDATE que impide al usuario realizar en la clave externa cambios que convertirían el registro en huérfano. De la misma forma, un desencadenante INSERT se crea para impedir que el usuario agregue un registro nuevo que no tenga tabla primaria.

Valores de error personalizados

Cuando en tiempo de ejecución se infringe la integridad referencial establecida por el desencadenante creado por el Asistente para conversión a SQL Server, SQL Server incluye un valor de error personalizado en la variable @@ERROR. El Asistente para conversión a SQL Server define valores de errores posibles como parte del código del desencadenante. El valor de error devuelto en tiempo de ejecución depende de la acción que el usuario intentaba realizar: actualizar, insertar o eliminar.

La siguiente tabla indica los números de error generados para cada acción:

Acción | Error de SQL Server
Regla de validación infringida | 44444
Intento de eliminación | 44445
Intento de actualización | 44446
Intento de inserción | 44447
Instrucción Update o Delete que afecta a dos o más filas; la instrucción se deshace automáticamente | 44448

Integridad referencial declarativa

Si elige implementar integridad referencial declarativa, el Asistente para conversión a SQL Server crea restricciones de SQL Server mediante el comando ALTER TABLE con la palabra clave CONSTRAINT. La restricción de la tabla primaria usa la palabra clave PRIMARY KEY. La restricción de la tabla secundaria usa las palabras clave FOREIGN KEY y REFERENCES. La integridad referencial declarativa es compatible con los niveles RESTRICT, actualizaciones RESTRICT y eliminaciones RESTRICT.

Puede usar restricciones de SQL Server para proporcionar restricciones a instrucciones UPDATE, DELETE e INSERT.

Asignar expresiones

A pesar de que Visual FoxPro y Transact-SQL tienen algunas funciones en común, SQL Server no admite muchas de las funciones de Visual FoxPro. El Asistente para conversión a SQL Server intenta convertir las expresiones de Visual FoxPro en reglas de validación a nivel de campo y de registro y en valores predeterminados para Transact-SQL, utilizando para ello la siguiente asignación de expresiones.

Expresión de Visual FoxPro | Expresión de SQL Server
Verdadero (.T.) | 1
Falso (.F.) | 0
# | <>
.AND. | AND
.NOT. | NOT
.NULL. | NULL
.OR. | OR
=< | <=
=> | >=
ASC( ) | ASCII( )
AT( ) | CHARINDEX( )
CDOW( ) | DATENAME(dw, ...)
CHR( ) | CHAR( )
CMONTH( ) | DATENAME(mm, ...)
CTOD( ) | CONVERT(datetime, ...)
CTOT( ) | CONVERT(datetime, ...)
DATE( ) | GETDATE( )
DATETIME( ) | GETDATE( )
DAY( ) | DATEPART(dd, ...)
DOW( ) | DATEPART(dw, ...)
DTOC( ) | CONVERT(varchar, ...)
DTOR( ) | RADIANS( )
DTOT( ) | CONVERT(datetime, ...)
HOUR( ) | DATEPART(hh, ...)
LIKE( ) | PATINDEX( )
MINUTE( ) | DATEPART(mi, ...)
MONTH( ) | DATEPART(mm, ...)
MTON( ) | CONVERT(money, ...)
NTOM( ) | CONVERT(float, ...)
RTOD( ) | DEGREES( )
SUBSTR( ) | SUBSTRING( )
TTOC( ) | CONVERT(char, ...)
TTOD( ) | CONVERT(datetime, ...)
YEAR( ) | DATEPART(yy, ...)

Las siguientes expresiones son iguales para Visual FoxPro y para SQL Server.

Expresiones que se asignan directamente desde Visual FoxPro hasta SQL Server

CEILING( ) | LOG( ) | LOWER( )
LTRIM( ) | RIGHT( ) | RTRIM( )
SOUNDEX( ) | SPACE( ) | STR( )
STUFF( ) | UPPER( ) |

Archivos creados por el Asistente para conversión a SQL Server

El Asistente para conversión a SQL Server crea tablas para su propio uso durante el proceso de conversión. Estos archivos se eliminan del disco duro a menos que:

  • Elija producir un informe de conversión.
  • Desee guardar el código SQL generado.
  • Surjan errores durante el proceso de conversión y elija guardar la información de error.

Si se producen algunas de las condiciones anteriores, el Asistente para conversión a SQL Server creará un proyecto (denominado Report, Report1, Report2, etc.) y una base de datos (denominada Upsize, Upsize1, etc.) en un subdirectorio (llamado UPSIZE) del directorio definido por el comando SET DEFAULT para la sesión de Visual FoxPro. El asistente agrega a la base de datos las tablas utilizadas para producir el Informe de conversión, una tabla para almacenar el código SQL generado y cualquier tabla de error existente. La siguiente tabla indica los archivos que se pueden crear durante el proceso de conversión.

Tablas locales creadas durante el proceso de conversión

Objetivo del archivo | Nombre de tabla | Contenido
Tablas de informe | Errors_uw | Información acerca de cualquier error ocurrido durante el proceso de conversión.
 | Fields_uw | Información acerca de todas las tablas exportadas mediante conversión.
 | Indexes_uw | Información acerca de todos los índices exportados mediante conversión.
 | Misc_uw | Información diversa acerca del proceso de conversión.
 | Relations_uw | Información acerca de todas las restricciones de integridad referencial almacenadas en la base de datos de Visual FoxPro.
 | Tables_uw | Información acerca de todas las tablas de la base de datos que desea exportar mediante conversión.
 | Views_uw | Información acerca de las vistas locales redirigidas para tener acceso a datos remotos.
Tabla de archivos de comandos | SQL_uw | Un campo memo que contiene todo el código SQL generado por el Asistente para conversión a SQL Server.
Tablas de error de exportación de datos | ExportErrors_table_name | Para cada tabla que experimente errores de exportación de datos durante la conversión, el Asistente para conversión a SQL Server genera una tabla que contiene los registros que no se han logrado exportar.

Si el asistente se cancela durante el procesamiento o si se detiene debido a un error, no dejará ninguna de estas tablas en el disco duro.

Usar el código SQL generado

La tabla de archivos de comandos almacenada en el disco duro contiene todo el código SQL generado por el Asistente para conversión a SQL Server, se ejecute con o sin errores en el servidor. Si desea utilizar este código, el mejor enfoque es examinar el código SQL generado, copiar las partes que desee utilizar, ejecutar los fragmentos de código extraídos y repetir el proceso hasta obtener los resultados deseados. No puede ejecutar todo el archivo de comandos SQL en lugar del Asistente para conversión a SQL Server, puesto que el asistente ejecuta pasos adicionales que no quedan reflejados en el código SQL generado.

Vea también

Iniciar el Asistente para conversión a SQL Server | Completar el proceso de conversión a SQL Server | Convertir las bases de datos de Visual FoxPro | Asignar expresiones


Completar el proceso de conversión a SQL Server

Ahora puede ejecutar diversos pasos adicionales, tanto en el servidor como en la aplicación de Visual FoxPro, para asegurarse de que la aplicación y los datos están seguros y funcionan de forma apropiada.

También puede utilizar la información de esta sección cuando genere una aplicación desde vistas remotas en lugar de mediante conversión (conversión). Independientemente de la forma en que se crearon las tablas remotas, es posible llevar a cabo determinados pasos para garantizar que el servidor y el cliente están preparados para colaborar en la aplicación cliente-servidor.

Pasos en SQL Server

Puede finalizar el proceso de conversión en el servidor:

  • Asegurándose de que las tablas que desea modificar desde Visual FoxPro son actualizables.
  • Estableciendo permisos en la base de datos de forma que los usuarios puedan tener acceso a los objetos que necesitan.
  • Protegiendo el trabajo realizado transformando en recuperable la nueva base de datos, por si se daña o se pierde.

Agregar índices únicos para permitir actualizaciones

Una tabla remota debe tener un índice único para que se considere actualizable en Visual FoxPro. El Asistente para conversión a SQL Server puede exportar un índice único existente, pero no crea ninguno cuando no existe. Asegúrese de que las tablas que desea modificar desde Visual FoxPro son actualizables.

Establecer permisos

La nueva base de datos de SQL Server y sus objetos reciben un conjunto de permisos predeterminados de SQL Server. Establezca en la base de datos remota los permisos necesarios para que los usuarios puedan tener acceso a los objetos que necesitan.

Permisos de inicio de sesión en la base de datos

Los permisos predeterminados de una base de datos nueva la hacen accesible solamente a los administradores del sistema y al propietario de la base de datos.

Puede agregar nuevos usuarios y grupos mediante el Administrador de seguridad de SQL Server o los procedimientos del sistema sp_adduser y sp_addgroup.

Para obtener más información acerca de la forma de agregar usuarios y grupos, consulte la Ayuda del Administrador de seguridad de SQL Server y la documentación de los procedimientos del sistema sp_adduser y sp_addgroup en Microsoft SQL Server Transact-SQL Reference.

Permisos de objetos

Todos los objetos creados por el Asistente para conversión a SQL Server, incluyendo las tablas, los desencadenantes y los valores predeterminados, en principio solamente son accesibles para el propietario de la base de datos y para los administradores del sistema. Esto se cumple cuando se realiza una exportación mediante conversión (conversión) hasta una base de datos nueva o existente. Si sobrescribe los objetos existentes, también sobrescribirá todos los permisos de objetos.

Posibilidad de recuperación garantizada

Proteja su trabajo convirtiendo la nueva base de datos en recuperable por si se daña o se pierde.

Volcar la base de datos master

Cuando se crea una base de datos en un servidor SQL Server, se agregan nuevos registros a las tablas del sistema de la base de datos master. Volcar esta base de datos master le proporciona también una copia de seguridad que incluye todos los cambios más recientes.

Programar copias de seguridad

Programe copias de seguridad periódicas de la base de datos de forma que pueda restaurarla a partir de esta copia de seguridad en caso de que surja algún problema grave.

Reflejar dispositivos

Al reflejar dispositivos se duplica continuamente la información desde un dispositivo de SQL Server hasta otro. En caso de error en un dispositivo, el otro contiene una copia actualizada de todas las transacciones.

Si prevé que se realizarán muchos cambios en una base de datos entre una copia de seguridad y la siguiente, y no puede permitirse la pérdida de tales cambios, piense en el reflejo de dispositivos. Este proceso de reflejo es más efectivo cuando los dispositivos se encuentran en distintos discos, puesto que si están en el mismo disco y éste da un error, se perderán ambos dispositivos.

Pasos en el cliente de Visual FoxPro

Cuando haya transferido los objetos desde Visual FoxPro hasta un servidor SQL Server, probablemente necesitará modificar el código de la base de datos de Visual FoxPro original de manera que funcione adecuadamente con la nueva base de datos de SQL Server.

Optimizar vistas

Las vistas creadas por el Asistente para conversión a SQL Server no están parametrizadas, por lo que no están optimizadas. Para lograr un procesamiento más eficaz, agregue parámetros a las vistas creadas por el Asistente para conversión a SQL Server con el fin de descargar solamente los datos necesarios. Para obtener información acerca de cómo agregar un parámetro a una vista, vea Crear vistas.

SQL Server no admite algunas funciones de Visual FoxPro. Si la vista remota creada por el Asistente para conversión a SQL Server utiliza funciones que no se pudieron asignar a funciones de Transact-SQL, la vista no funcionará. Para obtener más información acerca de la asignación de expresiones de Visual FoxPro a expresiones de Transact-SQL, consulte Asignar expresiones.

Crear procedimientos almacenados y desencadenantes

El Asistente para conversión a SQL Server no exporta mediante conversión los procedimientos almacenados ni los desencadenantes de Visual FoxPro. Si desea crear procedimientos almacenados o desencadenantes de SQL Server, puede utilizar Transact-SQL en el servidor, o bien el paso a través de SQL en Visual FoxPro. Para obtener más información acerca del uso de Transact-SQL, consulte la documentación de SQL Server. Para obtener información acerca del uso del paso a través de SQL, consulte Mejorar aplicaciones utilizando tecnología de paso a través de SQL (SPT).

Comparar el orden de eventos

En Visual FoxPro, algunos eventos se producen en un orden distinto, dependiendo de si la aplicación utiliza datos de SQL Server o datos de Visual FoxPro. Estas diferencias pueden requerir cambios en el código.

Valores predeterminados

Los valores predeterminados de campo de Visual FoxPro aparecen cuando comienza a modificar un registro nuevo. Los valores predeterminados generados por SQL Server aparecen solamente después de insertar un registro. Necesita cambiar el código que dependa de si hay valores antes de confirmar el registro, como puede ser el código para búsquedas.

Reglas de validación

En Visual FoxPro, la validación de campo se produce cuando el foco abandona un campo. Al modificar datos de SQL Server en tablas adjuntas, los desencadenadores y las reglas no se activan hasta que no sale del registro. Quizá necesite modificar algunas reglas de validación de registros que dependen de que la validación del campo se realice al salir de dicho campo

Controlar expresiones sin convertir

El informe de conversión (conversión) indica si se ha logrado convertir cada una de las reglas de validación de tabla, reglas de validación de campo y expresiones predeterminadas de Visual FoxPro. Si una expresión o una regla de validación predeterminada no se ha convertido, deberá volver a escribirla en Transact-SQL.

También puede realizar la validación a nivel de formulario en Visual FoxPro. No obstante, si los datos del servidor se modifican posteriormente sin utilizar un formulario determinado, la validación no se aplicará y quizá se introduzcan datos no válidos.

Para obtener más información acerca de la conversión de expresiones, consulte Asignar expresiones. Para obtener más información acerca de las funciones de Transact-SQL, consulte la documentación de SQL Server.

Bloquear registros

Visual FoxPro utiliza el bloqueo optimista de forma interna al tener acceso a tablas de un servidor SQL Server. El bloqueo optimista significa que la fila se bloquea solamente mientras se confirma el valor modificado y se realiza el proceso de actualización, lo que suele ser un intervalo muy breve.

En SQL Server se utiliza el bloqueo optimista en lugar del bloqueo pesimista, porque este último se realiza en SQL Server bloqueando páginas, lo que puede bloquear gran cantidad de registros simultáneamente. Aunque el bloqueo de páginas impide a otros usuarios realizar cambios en el mismo registro que se está modificando, también puede impedir que los usuarios tengan acceso a muchos otros registros de la misma página (bloqueada). El bloqueo optimista proporciona el mejor acceso multiusuario para una aplicación cliente-servidor de Visual FoxPro.

Puede optimizar las actualizaciones y controlar la forma en que se tratan los conflictos de actualización con la propiedad WhereType de SQL. Para obtener más información acerca de cómo controlar conflictos de actualización, vea Crear vistas.

Vea también

Completar el proceso de conversión a SQL Server | Convertir las bases de datos de Visual FoxPro | Mejorar aplicaciones utilizando tecnología de paso a través de SQL (SPT) | Preparar el Asistente para conversión a SQL Server


Eventos del contenedor de bases de datos

Puede habilitar eventos del contenedor de base de datos (DBC) y agregar código a eventos específicos sobre los datos que contiene una base de datos. Puede crear este código manualmente en un archivo externo, o utilizar el cuadro de diálogo Propiedades de la base de datos, que proporciona una plantilla para que la complete en la ubicación que especifique. La tabla siguiente describe los eventos DBC disponibles:

Eventos DBC | Descripción
DBC_Activate | Se produce al activar una base de datos abierta.
DBC_Deactivate | Se produce al desactivar una base de datos.
DBC_BeforeAddRelation | Se produce antes de agregar una relación a la base de datos.
DBC_AfterAddRelation | Se produce después de agregar correctamente una relación a la base de datos.
DBC_BeforeAddTable | Se produce antes de agregar una tabla a una base de datos abierta.
DBC_AfterAddTable | Se produce después de agregar una tabla a una base de datos abierta.
DBC_BeforeAppendProc | Se produce antes de finalizar una operación de anexado en el procedimiento almacenado DBC actual. Se utiliza para impedir la operación de anexado. Además, se utiliza para descubrir el nombre del DBC implicado.
DBC_AfterAppendProc | Se produce después de finalizar la operación APPEND PROC.
DBC_BeforeCloseTable | Se produce antes de cerrar la tabla o la vista.
DBC_AfterCloseTable | Se produce después de cerrar la tabla o la vista.
DBC_BeforeCopyProc | Se produce antes de empezar una operación de copia en el DBC actual. Se utiliza para impedir la operación. Además, se utiliza para descubrir el nombre del DBC implicado.
DBC_AfterCopyProc | Se produce después de finalizar una operación de copia en el DBC actual. Se utiliza para descubrir el nombre del DBC implicado.
DBC_BeforeCreateConnection | Se produce antes de crear una conexión. Se utiliza para impedir la creación de la conexión o la apertura de diseñador de conexiones.
DBC_AfterCreateConnection | Se produce después de crear una conexión.
DBC_BeforeCreateOffline | Se produce antes de usar una vista fuera de línea. Se utiliza para impedir la vista fuera de línea.
DBC_AfterCreateOffline | Se produce después de haber finalizado CREATEOFFLINE( ).
DBC_BeforeCreateTable | Se produce antes de crear una tabla en una base de datos abierta.
DBC_AfterCreateTable | Se produce después de crear una tabla en una base de datos abierta.
DBC_BeforeCreateView | Se produce antes de crear una vista. Se utiliza para impedir que se cree una vista o que se abra el diseñador de vistas.
DBC_AfterCreateView | Se produce después de finalizar la creación de una vista.
DBC_BeforeDBGetProp | Se produce antes de ejecutar DBGetProp( ).
DBC_AfterDBGetProp | Se produce después de finalizar DBGetProp( ).
DBC_BeforeDBSetProp | Se produce antes de ejecutar DBSetProp( ). Además, el evento se activa cuando se cambia la propiedad "Event".
DBC_AfterDBSetProp | Se produce después de finalizar DBSetProp( ). Además, el evento se activa cuando se cambia la propiedad "Event".
DBC_BeforeDeleteConnection | Se produce antes de eliminar una conexión.
DBC_AfterDeleteConnection | Se produce después de eliminar una conexión.
DBC_BeforeDropOffline | Se produce antes de volver a poner en línea una vista. Se utiliza para impedir que una vista fuera de línea vuelva a estar en línea.
DBC_AfterDropOffline | Se produce después de haber finalizado DROPOFFLINE( ).
DBC_BeforeDropRelation | Se produce antes de eliminar una relación de la base de datos.
DBC_AfterDropRelation | Se produce después de eliminar correctamente una relación de la base de datos.
DBC_BeforeDropTable | Se produce antes de quitar la tabla del DBC y eliminarla del disco.
DBC_AfterDropTable | Se produce después de quitar la tabla del DBC y eliminarla del disco.
DBC_BeforeDropView | Se produce antes de quitar una vista del DBC. Se utiliza para impedir la eliminación de una vista.
DBC_AfterDropView | Se produce después de quitar una vista del DBC.
DBC_BeforeModifyConnection | Se produce antes de modificar una conexión.
DBC_AfterModifyConnection | Se produce después de modificar una conexión.
DBC_BeforeModifyProc | Se produce antes de modificar un procedimiento almacenado del DBC en un DBC abierto. Se utiliza para impedir la modificación. Además, se utiliza para descubrir el nombre del DBC.
DBC_AfterModifyProc | Se produce después de haber realizado todas las modificaciones y cerrar el archivo del procedimiento almacenado para el DBC.
DBC_BeforeModifyTable | Se produce antes de modificar una tabla.
DBC_AfterModifyTable | Se produce después de modificar una tabla.
DBC_BeforeModifyView | Se produce antes de modificar una vista.
DBC_AfterModifyView | Se produce después de modificar una vista.
DBC_BeforeOpenTable | Se produce antes de abrir una tabla o una vista.
DBC_AfterOpenTable | Se produce después de abrir una tabla o una vista.
DBC_BeforeRemoveTable | Se produce antes de quitar una tabla del DBC.
DBC_AfterRemoveTable | Se produce después de finalizar la eliminación de una tabla.
DBC_BeforeRenameConnection | Se produce antes de cambiar el nombre de una conexión.
DBC_AfterRenameConnection | Se produce después de cambiar el nombre de una conexión.
DBC_BeforeRenameTable | Se produce antes de cambiar el nombre de una tabla.
DBC_AfterRenameTable | Se produce después de cambiar el nombre de una tabla.
DBC_BeforeRenameView | Se produce antes de cambiar el nombre de una vista.
DBC_AfterRenameView | Se produce después de cambiar el nombre de una vista.
DBC_BeforeValidateData | Se produce antes de ejecutar VALIDATE DATABASE. Devuelve .F. para impedir la validación del DBC.
DBC_AfterValidateData | Se produce después de finalizar VALIDATE DATABASE.
DBC_ModifyData | Se produce inmediatamente después de ejecutar MODIFY DATA. Se utiliza para impedir la apertura de la ventana Esquema. Además, puede abrir una base de datos cerrada.
DBC_OpenData | Se produce al abrir una base de datos o al ejecutar un comando MODIFY DATABASE contra una base de datos cerrada. Se utiliza para cerrar una base de datos abierta.
DBC_CloseData | Cierra una base de datos abierta.
DBC_PackData | Se produce antes de ejecutar PACK DATABASE. Se utiliza para impedir el empaquetado del DBC.

Vea también

Habilitar o deshabilitar eventos DBC | Agregar código a eventos DBC


Agregar código a un evento DBC

Puede agregar código de método a un evento DBC en un archivo de programa o al archivo de procedimientos almacenados de su base de datos. Si activa eventos DBC en su base de datos, la base de datos se hace incompatible con versiones anteriores de Visual FoxPro. Para recuperar la compatibilidad con versiones anteriores de Visual FoxPro, desactive los eventos DBC.

Cuando utiliza el cuadro de diálogo Propiedades de la base de datos para agregar código a eventos DBC, Visual FoxPro inserta una plantilla Procedimiento para cada evento DBC seleccionado en el archivo de procedimientos para que pueda agregar código inmediatamente.

Para agregar código a un evento DBC

  1. En una base de datos abierta, desde el menú Base de datos o el menú contextual, seleccione Propiedades.
  2. En la lista Nombre de código o evento, seleccione un evento.

    Puede seleccionar múltiples eventos si mantiene presionadas las teclas Control o Mayúsculas mientras realiza sus selecciones.

  3. Si desea colocar el código en un procedimiento almacenado en la base de datos activa, haga clic en Modificar código.

    –O bien–

    Si desea colocar el código en un archivo externo, active Activar eventos, haga clic en Archivo de eventos, especifique o seleccione el archivo que desea modificar y haga clic en Modificar código.

El editor abre el archivo de procedimientos, por lo que puede agregar código a las plantillas del método del evento DBC agregado por Visual FoxPro.

Vea también

Eventos del contenedor de bases de datos | Habilitar o deshabilitar eventos DBC


Habilitar o deshabilitar eventos DBC

Puede habilitar eventos del contenedor de base de datos (DBC) directamente en código o mediante el cuadro de diálogo Propiedades de la base de datos.

Para habilitar eventos DBC

  1. Con el Diseñador de bases de datos abierto, en el menú Base de datos o en el menú contextual, seleccione Propiedades.
  2. En el cuadro de diálogo Propiedades de la base de datos, active Activar eventos.

    Esto activa la casilla de verificación Archivo de eventos, para que pueda elegir agregar código de evento DBC a un archivo externo en vez de procedimientos almacenados en la base de datos actual. También cambia la estructura de la base de datos, por lo que ya no es compatible con versiones anteriores de Visual FoxPro 7, o el controlador ODBC de Visual FoxPro. Si desactiva esta opción, volverá a ser compatible.

-O bien-

  • Active mediante programación los Eventos de base de datos utilizando la función DBSetProp( ) como en el siguiente código:
    DBSetProp(<DBCName>,'Database','DBCEvents',.T.)

    La base de datos debe estar abierta y activa antes de utilizar esta función. Cuando se activan los eventos DBC en una base de datos, se ejecutan los eventos y los métodos (en el código de procedimiento asociado) en los procedimientos almacenados.

Para deshabilitar eventos DBC

  1. En una base de datos abierta, desde el menú Base de datos o el menú contextual, seleccione Propiedades.
  2. En el cuadro de diálogo Propiedades de la base de datos, desactive Activar eventos.

    Esto desactiva la casilla de verificación Archivo de eventos.

–O bien–

  • Desactive mediante programación los Eventos de base de datos utilizando el siguiente código:
    DBSetProp(<DBCName>,'Database','DBCEvents',.F.)

Los eventos DBC no están disponibles en versiones anteriores de Visual FoxPro 7. Al intentar obtener acceso a una base de datos habilitada para eventos DBC de una versión anterior de Visual FoxPro, se genera un error.

Vea también

Eventos del contenedor de bases de datos | Agregar código a eventos DBC


Programar para acceso compartido

Si crea una aplicación que se va a ejecutar en varios equipos de un entorno de red o en la que varias instancias de un formulario tendrán acceso a los mismos datos, deberá programar para acceso compartido. Acceso compartido significa proporcionar modos eficaces de utilizar y compartir datos entre usuarios, así como de restringir el acceso cuando sea necesario.

Microsoft Visual FoxPro proporciona soporte para acceso compartido o exclusivo a datos, opciones de bloqueo, sesiones de datos, almacenamiento de registros y tablas en búfer, y transacciones. Aunque estas características son especialmente útiles en entornos compartidos, también puede utilizarlas en entornos de un solo usuario.

En esta sección

Controlar el acceso a datos
Discute la administración efectiva de datos en un entorno compartido, y como debe elegir la forma de acceder los datos y, cuándo y dónde limitar ese acceso.
Actualizar datos
Explica cómo actualizar datos utilizando búfer, transacciones, o vistas.
Administrar conflictos
Discute como puede anticipar y controlar los conflictos inevitables que resultan de las operaciones de actualización de datos.

Secciones relacionadas

Crear Servicios Web y Componentes
Describe como ampliar una aplicación básica de Microsoft Visual FoxPro, puede activarla para que funcione con múltiples usuarios, aprovechar las ventajas de los controles Microsoft ActiveX y las aplicaciones compatibles con la automatización, y agregar características internacionales.
Compartir información y agregar objetos OLE
Discute el uso de controles Microsoft ActiveX y vinculación e incrustación de objetos en su aplicación para vincular datos y aprovechar las posibilidades de otras aplicaciones.
Desarrollar aplicaciones internacionales
Describe cómo lanzar sus aplicaciones hacia el mercado mundial diseñándolas para su uso internacional.


Controlar el acceso a datos

Puesto que los datos se encuentran en los archivos, la administración eficaz de los datos comienza con el control del entorno de estos archivos. Debe elegir cómo tener acceso a los datos y cómo y cuándo limitar ese acceso.

Acceso a datos

En un entorno compartido, hay dos formas de tener acceso a datos: desde archivos exclusivos o desde archivos compartidos. Si abre una tabla para acceso compartido, otros usuarios también tendrán acceso al archivo. Si abre una tabla para acceso exclusivo, ningún otro usuario podrá leer o escribir en ese archivo. Puesto que el uso exclusivo elimina muchas de las ventajas que implica compartir datos en una red, deberá hacerse un uso comedido de esta característica.

Usar tablas con acceso exclusivo

La forma más restrictiva de abrir un archivo consiste en abrirlo de forma exclusiva. Cuando abra una tabla a través de la interfaz, se abrirá para uso exclusivo de forma predeterminada. También puede abrir explícitamente una tabla para uso exclusivo mediante comandos de Visual FoxPro.

Para abrir una tabla para uso exclusivo

  • Escriba los siguientes comandos en la ventana Comandos:
    SET EXCLUSIVE ON
USE cMyTable

    –O bien–

  • Escriba el siguiente comando en la ventana Comandos:
    USE cMyTable EXCLUSIVE

Los comandos siguientes requieren que abra una tabla para uso exclusivo:

  • ALTER TABLE
  • INDEX al crear, agregar o eliminar una etiqueta de índice compuesto.
  • INSERT [BLANK]
  • MODIFY STRUCTURE: si utiliza este comando para cambiar la estructura de una tabla, deberá abrir la tabla de forma exclusiva. Sin embargo, podrá utilizar este comando en modo de sólo lectura cuando abra la tabla para uso compartido.
  • PACK
  • REINDEX
  • ZAP

Visual FoxPro devolverá el error "Se requiere apertura exclusiva del archivo" si intenta ejecutar uno de estos comandos en una tabla compartida.

Puede restringir el acceso a una tabla mediante la función FLOCK( ). Si utiliza FLOCK( ) para bloquear la tabla, los demás usuarios no podrán escribir en ella, aunque sí podrán leerla.

Usar tablas con acceso compartido

Cuando abra una tabla para uso compartido, varias estaciones de trabajo podrán utilizar la misma tabla a la vez. Cuando abra una tabla a través de la interfaz, podrá anular la configuración predeterminada ON de SET EXCLUSIVE. Puede abrir explícitamente una tabla para uso compartido mediante los comandos de Visual FoxPro.

Para abrir una tabla para uso compartido

  • Escriba los siguientes comandos en la ventana Comandos:
    SET EXCLUSIVE OFF
USE cMyTable

    –O bien–

  • Escriba el siguiente comando en la ventana Comandos:
    USE cMyTable SHARED

Cuando agregue o cambie datos en una tabla compartida, en primer lugar deberá bloquear el registro afectado o toda la tabla. Hay varias formas de bloquear un registro o una tabla abierta para uso compartido:

  • Utilice un comando que realice un bloqueo automático de registro o tabla.
  • Bloquee manualmente uno o varios registros, o una tabla completa, mediante las funciones de bloqueo de registro o de tabla.
  • Inicie el almacenamiento en búfer con la función CURSORSETPROP( ).

Los archivos memo y de índice asociados siempre se abren con el mismo estado compartido que su tabla.

Si la aplicación sólo utiliza una tabla con fines de consulta y todos los usuarios de la aplicación tienen acceso a la misma, podrá mejorar el rendimiento de la tabla si la marca como de sólo lectura.

Vea también

Programar para acceso compartido | Bloquear datos | ALTER TABLE | INDEX | INSERT [BLANK] | MODIFY STRUCTURE | Utilizar sesiones de datos | Almacenar datos en búfer


Bloquear datos

Si comparte el acceso a los archivos, también deberá administrar el acceso a los datos bloqueando tablas y registros. Los bloqueos, a diferencia de los permisos de acceso, pueden proporcionar un control de los datos a largo y a corto plazo. Visual FoxPro proporciona tanto bloqueo automático como manual.

Elegir bloqueos de registro o de tabla

El bloqueo de registro, tanto si es automático como si es manual, impide que un usuario escriba en un registro en el que está escribiendo otro usuario. El bloqueo de tabla impide que otros usuarios escriban en la tabla, aunque pueden leerla. Puesto que el bloqueo de tabla prohíbe a otros usuarios actualizar los registros de una tabla, deberá hacer un uso comedido de esta característica.

Elegir entre bloqueo automático y manual

Además del bloqueo de registro o de tabla, también puede elegir entre bloqueo automático y manual. Muchos comandos de Visual FoxPro intentan bloquear automáticamente un registro o una tabla antes de que se ejecute el comando. Si el registro o la tabla están bloqueados correctamente, el comando se ejecutará y se liberará el bloqueo.

Comandos que bloquean automáticamente registros y tablas

(Comando) | Alcance del bloqueo
ALTER TABLE | Toda la tabla
APPEND | Encabezado de la tabla
APPEND | Encabezado de la tabla
APPEND FROM | Encabezado de la tabla
APPEND FROM ARRAY | Encabezado de la tabla
APPEND MEMO | Registro activo
BLANK | Registro activo
BROWSE, CHANGE y EDIT | Registro actual y todos los registros de campos con alias de tablas relacionadas cuando comienza la edición de un campo
CURSORSETPROP( ) | Depende de los parámetros
DELETE | Registro activo
DELETE NEXT 1 | Registro activo
DELETE RECORD n | Registro n
DELETE de más de un registro | Toda la tabla
DELETE - SQL | Registro activo
GATHER | Registro activo
INSERT | Toda la tabla
INSERT - SQL | Encabezado de la tabla
MODIFY MEMO | Registro actual cuando comienza la edición
READ | Registro actual y todos los registros de campos con alias
RECALL | Registro activo
RECALL NEXT 1 | Registro activo
RECALL RECORD n | Registro n
RECALL de más de un registro | Toda la tabla
REPLACE | Registro actual y todos los registros de campos con alias
REPLACE NEXT 1 | Registro actual y todos los registros de campos con alias
REPLACE RECORD n | Registro n y todos los registros de campos con alias
REPLACE de más de un registro | Toda la tabla y todos los archivos de campos con alias
SHOW GETS | Registro actual y todos los registros de campos con alias
TABLEUPDATE( ) | Depende del almacenamiento en búfer
UPDATE | Toda la tabla
UPDATE - SQL | Toda la tabla

Características del bloqueo de registros

Los comandos que intentan bloquear registros son menos restrictivos que los comandos que bloquean tablas. Si bloquea un registro, los demás usuarios podrán seguir agregando o eliminando otros registros. Si otro usuario ya ha bloqueado un registro o una tabla, no se podrá bloquear dicha tabla o registro. Los comandos que intentan bloquear el registro actual devuelven el error "Otra persona está usando el registro" si no es posible bloquear el registro.

Los comandos BROWSE, CHANGE, EDIT y MODIFY MEMO no bloquean un registro hasta que lo modifique. Si está modificando campos procedentes de registros de tablas relacionadas, los registros relacionados se bloquearán si es posible. El intento de bloqueo producirá errores si el registro actual o alguno de los registros relacionados está bloqueado por otro usuario. Si se consigue realizar el bloqueo, podrá modificar el registro; el bloqueo se liberará cuando usted vaya a otro registro o active otra ventana.

Características del bloqueo de tablas y encabezados

Algunos comandos de Visual FoxPro bloquean toda una tabla mientras que otros sólo bloquean su encabezado. Los comandos que bloquean la tabla completa interfieren en ella en mayor grado que los comandos que sólo bloquean el encabezado de la tabla. Cuando bloquee el encabezado de la tabla, otros usuarios no podrán agregar registros, aunque sí podrán cambiar los datos de los campos.

Los usuarios pueden compartir la tabla sin ocasionar conflictos cuando se ejecuta el comando APPEND pero puede producirse un error cuando otro usuario también anexa un registro BLANK a la tabla. Puede interceptar el error "Otra persona está utilizando el archivo", que se devuelve cuando dos o más usuarios ejecutan APPEND BLANK simultáneamente. Los comandos que bloquean toda la tabla devuelven el error "Otra persona está utilizando el archivo" si la tabla no puede bloquearse. Para cancelar el intento de bloqueo, presione ESC.

Ejemplo: bloqueo automático

En el ejemplo siguiente, el usuario bloquea automáticamente el encabezado de la tabla; para ello, anexa registros de otra tabla, aunque customer se haya abierto como un archivo compartido.

SET EXCLUSIVE OFF
USE customer
APPEND FROM oldcust FOR status = "OPEN"

Bloqueo manual

Puede bloquear manualmente un registro o una tabla mediante las funciones de bloqueo.

Para bloquear manualmente un registro o una tabla

  • Utilice uno de estos comandos:
    RLOCK()
LOCK()
FLOCK()

RLOCK( ) y LOCK( ) son idénticos y bloquean uno o más registros. FLOCK( ) bloquea un archivo. Las funciones LOCK( ) y RLOCK( ) pueden aplicarse a un encabezado de tabla. Si especifica 0 como el registro para LOCK( ) o RLOCK( ) y la prueba indica que el encabezado está desbloqueado, la función bloqueará el encabezado y devolverá True (.T.).

Una vez bloqueado un registro o una tabla, asegúrese de liberar el bloqueo mediante el comando UNLOCK lo antes posible para proporcionar acceso a otros usuarios.

Estas funciones de bloqueo manual realizan las siguientes acciones:

  • Comprueban el estado de bloqueo del registro o la tabla.
  • Si la prueba indica que el registro está desbloqueado, bloquean el registro o la tabla y devuelven True (.T.).
  • Si no se puede bloquear el registro o la tabla, vuelven a intentarlo, dependiendo del valor actual de SET REPROCESS.
  • Devuelven True (.T.) o False (.F.), indicando si el intento de bloqueo ha tenido éxito o no.
    Sugerencia Si desea comprobar el estado de bloqueo de un registro en la sesión sin bloquear el registro, use la función ISRLOCKED( ) o ISFLOCKED( ).

Si falla el intento de bloquear un registro o una tabla, el comando SET REPROCESS y la rutina de error actual determinarán si vuelve a intentarse el bloqueo. SET REPROCESS afecta al resultado de un intento de bloqueo sin éxito. Puede controlar el número de intentos de bloqueo o el período de tiempo durante el cual se intenta un bloqueo mediante SET REPROCESS.

Ejemplo: bloqueo manual

El ejemplo siguiente abre la tabla customer para acceso compartido y utiliza FLOCK( ) para intentar bloquearla. Si la tabla se bloquea con éxito, REPLACE ALL actualizará todos sus registros. UNLOCK libera el bloqueo de archivo. Si el archivo no puede bloquearse porque otro usuario haya bloqueado el archivo o uno de sus registros, se mostrará un mensaje.

SET EXCLUSIVE OFF
SET REPROCESS TO 0
USE customer    && Open table shared
IF FLOCK()
REPLACE ALL contact ;    && Replace and unlock
WITH UPPER(contact)
UNLOCK
ELSE  && Output message
WAIT "File in use by another." WINDOW NOWAIT
ENDIF

Desbloquear datos

Después de establecer un bloqueo de registro o de archivo y completar una operación de datos en un entorno compartido, deberá liberar el bloqueo lo antes posible. Hay varios modos de liberar los bloqueos. En algunos casos, basta con desplazarse al registro siguiente para desbloquear los datos. En otros casos es preciso ejecutar comandos explícitos.

Para desbloquear un registro que se ha bloqueado automáticamente, sólo necesitará mover el puntero de registro, aunque haya establecido MULTILOCKS ON. No obstante, deberá eliminar explícitamente el bloqueo de un registro que haya bloqueado manualmente; mover el puntero de registro no es suficiente.

En la tabla siguiente se describen los efectos que producen diversos comandos sobre el bloqueo manual y automático de registros y tablas.

(Comando) | Efecto
UNLOCK | Libera los bloqueos de registro y archivo en el área de trabajo actual.
UNLOCK ALL | Libera todos los bloqueos de todas las áreas de trabajo de la sesión actual.
SET MULTILOCKS OFF | Activa la liberación automática del bloqueo actual al asegurar un bloqueo nuevo.
FLOCK( ) | Libera todos los bloqueos de registro del archivo afectado antes de bloquear el archivo.
CLEAR ALL, CLOSE ALL, USE, QUIT | Libera todos los bloqueos de registro y archivo.
END TRANSACTION | Libera los bloqueos automáticos.
TABLEUPDATE( ) | Libera todos los bloqueos antes de actualizar la tabla.
Precaución Si se ha bloqueado automáticamente un registro en una función definida por el usuario y se desplaza el puntero fuera del registro y se vuelve a colocar sobre él, el bloqueo se liberará. Utilice el almacenamiento de tablas en búfer para evitar este problema.

Vea también

Controlar el acceso a datos | Utilizar sesiones de datos | Programar para acceso compartido | RLOCK( ) | LOCK( ) | FLOCK( ) | UNLOCK


Usar sesiones de datos

Para asegurarse de que todos los usuarios de un entorno compartido disponen de un duplicado exacto y seguro del entorno, y que múltiples instancias de un formulario pueden funcionar independientemente, Visual FoxPro proporciona sesiones de datos.

Una sesión de datos es una representación del entorno de trabajo dinámico actual. Podría considerar la sesión de datos como un entorno de datos en miniatura dentro de una sesión de Visual FoxPro abierta en un equipo. Cada sesión de datos contiene:

  • Una copia de los elementos en el entorno de datos del formulario
  • Cursores que representan las tablas abiertas, sus índices y relaciones.

El concepto de una sesión de datos se entiende fácilmente cuando se considera lo que ocurre al abrir el mismo formulario simultáneamente en dos estaciones de trabajo diferentes en una aplicación multiusuario. En este caso, cada estación de trabajo ejecuta una sesión de Visual FoxPro diferente y, por tanto, tiene su propio conjunto de áreas de trabajo: cursores que representan las tablas base abiertas, los índices y las relaciones.

Sin embargo, si abre en un solo equipo múltiples instancias del mismo formulario en un solo proyecto, dentro de la misma sesión de Visual FoxPro, los formularios comparten la sesión de datos predeterminada, lo que representa un único entorno de trabajo dinámico. Cada instancia del formulario abierto en la misma sesión de Visual FoxPro usa el mismo conjunto de áreas de trabajo y las acciones en una única instancia de un formulario que mueven el puntero de registro en un área de trabajo afectan automáticamente a otras instancias del mismo formulario.

Usar sesiones privadas de datos

Si desea tener más control sobre múltiples instancias de un formulario, puede implementar sesiones privadas de datos. Cuando el formulario utiliza sesiones privadas de datos, Visual FoxPro crea una nueva sesión de datos para cada instancia del control Form, FormSet o Toolbar que crea la aplicación. Cada sesión privada de datos contiene:

  • Una copia diferente de cada tabla, índice y relación del entorno de datos del formulario.
  • Un número ilimitado de áreas de trabajo.
  • Punteros de registro para la copia de cada tabla, independientes de las tablas base del formulario.

El número de sesiones de datos disponibles está limitado sólo por la memoria y el espacio en disco disponible en el sistema.

Las sesiones privadas de datos se implementan al establecer la propiedad DataSession para el formulario. La propiedad DataSession tiene dos configuraciones:

  • 1 – Sesión predeterminada de datos (la configuración predeterminada).
  • 2 – Sesión privada de datos.

El valor predeterminado de la propiedad DataSession de un formulario es 1.

Para activar las sesiones privadas de datos

Elija una de las opciones siguientes:

  • En el Diseñador de formularios, establezca la propiedad DataSession del formulario en 2 – Sesión privada de datos.

    –O bien–

  • En el código, establezca la propiedad DataSession en 2.

    Por ejemplo, escriba:

    frmFormName.DataSession = 2
    Nota La propiedad DataSession sólo se puede establecer en tiempo de diseño. La propiedad DataSession es de sólo lectura en tiempo de ejecución.

Cuando un formulario utiliza sesiones privadas de datos, cada instancia de un formulario abierta en un solo equipo en una única sesión de Visual FoxPro usa su propio entorno de datos. El uso de sesiones privadas de datos es similar a la ejecución simultánea del mismo formulario desde diferentes estaciones de trabajo.

Múltiples sesiones de datos equivalentes

Identificar sesiones de datos

Cada sesión privada de datos se identifica por separado. Puede ver el contenido de cada sesión de datos en la ventana Sesión de datos. También puede cambiar la descripción de la sesión de datos mediante comandos en el código del evento Load.

Puede ver el número de identificación de cada sesión de datos mediante la propiedad de tiempo de ejecución DataSessionID. El ejemplo siguiente muestra la propiedad DataSessionID de un formulario denominado frmMyForm:

DO FORM frmMyForm
? frmMyForm.DataSessionID

Si activa el formulario mediante la cláusula NAME, puede usar el nombre del formulario para tener acceso a la propiedad DataSessionID, como en el código siguiente:

DO FORM MyForm NAME one
? one.DataSessionID

La propiedad DataSessionID sirve para identificar una sesión de datos determinada. Evite cambiar la propiedad DataSessionID de una instancia de un formulario porque los controles enlazados a datos pierden sus orígenes de datos cuando se modifica esta propiedad.

Actualizar datos con múltiples instancias de un formulario

Mientras que las sesiones privadas de datos generan áreas de trabajo diferentes que contienen copias independientes de las tablas abiertas, índices y relaciones de un formulario, cada copia del formulario hace referencia a los mismos archivos de tablas base y de índices base subyacentes. Cuando un usuario actualiza un registro en una instancia de un formulario, se actualiza la tabla base a la que hace referencia el formulario. Los cambios realizados en otra instancia del formulario pueden verse al desplazarse por el registro modificado.

Los bloqueos realizados en registros o tablas en una sesión privada de datos son respetados por otras sesiones privadas de datos. Por ejemplo, si el usuario de la sesión de datos 1 pone un bloqueo en un registro, el usuario de la sesión de datos 2 no puede bloquear el registro. Si el usuario de la sesión 1 abre una tabla de forma exclusiva, el usuario de la sesión de datos 2 no puede abrir la tabla. Respetando los bloqueos realizados por otras sesiones de datos, Visual FoxPro protege la integridad de las actualizaciones en las tablas base subyacentes.

Personalizar el entorno de una sesión de datos

Debido a que las sesiones de datos controlan el alcance de determinados comandos SET, puede usar sesiones privadas de datos para establecer configuraciones personalizadas de comandos SET dentro de una sola sesión de Visual FoxPro.

Por ejemplo, el comando SET EXACT, que controla las reglas utilizadas al comparar cadenas de carácteres de diferentes longitudes, pertenece al ámbito de la sesión de datos actual. La configuración predeterminada de SET EXACT es OFF, lo que especifica que, para ser equivalentes, las expresiones deben coincidir, carácter a carácter, hasta que se llega al final de las expresiones en el lado derecho. Tal vez desee activar búsquedas aproximadas o equivalentes; para ello, establezca SET EXACT como OFF para la sesión predeterminada de datos. Sin embargo, la aplicación podría contener un formulario determinado que requiriera coincidencias exactas. Podría establecer la propiedad DataSession como 2 para el formulario que requiere coincidencias exactas, para activar las sesiones privadas de datos y después establecer SET EXACT a ON para ese formulario. Si ejecuta un comando SET solo para el formulario que utiliza sesiones privadas de datos, se mantiene intacta la configuración global de la sesión de Visual FoxPro a la vez que permite la configuración personalizada para un formulario determinado.

Ignorar la asignación automática de sesión privada de datos

Cuando las sesiones privadas de datos para un formulario están en uso, los cambios realizados en los datos de un formulario no se representan automáticamente en otras instancias del mismo formulario. Si desea que todas las instancias de un formulario tengan acceso a los mismos datos y reflejen automáticamente los cambios realizados en datos comunes, puede ignorar la asignación automática de sesión de datos.

Para ignorar la asignación automática de sesión de datos

  • Utilice uno de estos comandos:
    SET DATASESSION TO 1

    –O bien–

    SET DATASESSION TO

Ambos comandos permiten controlar la sesión de datos predeterminada mediante la ventana Comandos y el Administrador de proyectos.

Vea también

Bloquear datos | Almacenar datos en búfer | Programar para acceso compartido | Diseñador de formularios | DataSession | DataSessionID


Almacenar datos en búfer

Si desea proteger los datos durante las actualizaciones, utilice búferes. El almacenamiento en búfer de registros y tablas de Visual FoxPro ayuda a proteger las operaciones de mantenimiento y actualización de datos en registros individuales y múltiples registros de datos en entornos multiusuario. Los búferes pueden comprobar, bloquear y liberar automáticamente registros o tablas.

Mediante el almacenamiento en búfer es posible detectar y resolver fácilmente conflictos en operaciones de actualización de datos: el registro actual se copia a una ubicación de memoria o de disco administrada por Visual FoxPro. Los demás usuarios podrán seguir teniendo acceso al registro original simultáneamente. Cuando se desplace fuera del registro o intente actualizarlo mediante programación, Visual FoxPro intentará bloquear el registro, comprobará que otros usuarios no hayan realizado cambios y, a continuación, escribirá las modificaciones. Después de intentar actualizar los datos, deberá resolver los conflictos que impiden que las modificaciones se escriban en la tabla original.

Elegir un método de almacenamiento en búfer

Antes de activar el almacenamiento en búfer, evalúe el entorno de datos para elegir el método de almacenamiento en búfer y las opciones de bloqueo que mejor se ajusten a las necesidades de edición de la aplicación, los tipos y tamaños de registros y tablas, y cómo se utiliza y actualiza la información, entre otros factores. Una vez activado el almacenamiento en búfer, permanecerá en vigor hasta que lo desactive o hasta que cierre la tabla.

Visual FoxPro dispone de dos tipos de almacenamiento en búfer: registro y tabla.

Almacenamiento en búfer de registros y tablas de Visual FoxPro

  • Para tener acceso, modificar y escribir un registro individual cada vez, elija el almacenamiento de registros en búfer.

    El almacenamiento de registros en búfer proporciona la validación del proceso adecuado con una repercusión mínima sobre las operaciones de actualización de datos que realizan otros usuarios en un entorno multiusuario.

  • Para almacenar en búfer las actualizaciones a varios registros, elija el almacenamiento de tablas en búfer.

    El almacenamiento de tablas en búfer es el modo más efectivo de administrar varios registros de una tabla o registros secundarios en una relación de uno a varios.

  • Para proporcionar la máxima protección para los datos existentes, utilice transacciones de Visual FoxPro.

    Las transacciones pueden utilizarse por sí solas, pero obtendrá una mayor efectividad si las emplea como empaquetadores para comandos de almacenamiento en búfer de tablas o registros.

Elegir un modo de bloqueo

Visual FoxPro proporciona almacenamiento en búfer en dos modos de bloqueo: pesimista y optimista. Estas opciones determinan cuándo se bloquean uno o más registros y cuándo y cómo se liberan.

Almacenamiento en búfer pesimista

El almacenamiento en búfer pesimista impide que otros usuarios de un entorno multiusuario tengan acceso a un determinado registro o tabla mientras usted realiza cambios en el mismo. Un bloqueo pesimista proporciona el entorno más seguro para cambiar registros individuales, aunque puede hacer más lentas las operaciones del usuario. Este modo de almacenamiento en búfer es bastante similar al mecanismo de bloqueo estándar de versiones anteriores de FoxPro, con la ventaja adicional del almacenamiento en búfer de datos integrados.

Almacenamiento en búfer optimista

El almacenamiento en búfer optimista es un modo eficaz de actualizar registros ya que los bloqueos sólo se realizan en el momento en que se escribe el registro, minimizando de este modo el tiempo que un único usuario monopoliza el sistema en un entorno multiusuario. Cuando utilice el almacenamiento en búfer de registros o tablas para vistas, Visual FoxPro impondrá el bloqueo optimista.

El valor de la propiedad Buffering, establecido mediante la función CURSORSETPROP( ) determina los métodos de almacenamiento en búfer y de bloqueo.

En la tabla siguiente se resumen los valores válidos para la propiedad Buffering:

Para activar | Utilice este valor
Sin almacenamiento en búfer. El valor predeterminado. | 1
Bloqueos pesimistas de registros que bloquean el registro ahora y actualizan cuando el puntero se mueve o se ejecuta TABLEUPDATE( ). | 2
Bloqueos optimistas de registros que esperan hasta que el puntero se mueve y después bloquean y actualizan. | 3
Bloqueos pesimistas de tablas que bloquean el registro ahora y actualizan posteriormente al ejecutarse TABLEUPDATE( ). | 4
Bloqueos optimistas de tablas que esperan hasta TABLEUPDATE( ) para bloquear y actualizar los registros modificados. | 5

El valor predeterminado de Buffering es 1 para las tablas y 3 para las vistas. Si utiliza el almacenamiento en búfer para tener acceso a datos remotos, la propiedad Buffering tendrá un valor 3, almacenamiento optimista de filas en búfer o 5, almacenamiento optimista de tablas en búfer. Para obtener más información acerca del acceso a datos de tablas remotas, consulte Consultar múltiples tablas y vistas.

Nota Establezca MULTILOCKS como ON para todos los modos de almacenamiento en búfer por encima de 1.

Activar el almacenamiento de registros en búfer

Habilite el almacenamiento de registros en búfer mediante la función CURSORSETPROP( ).

Para activar el bloqueo pesimista de registros en el área de trabajo actual

  • Utilice esta función y este valor:
    CURSORSETPROP("Buffering", 2)

Visual FoxPro intenta bloquear el registro en la ubicación del puntero. Si el bloqueo tiene éxito, Visual FoxPro situará el registro en un búfer y permitirá su modificación. Cuando mueva el puntero de registro o ejecute el comando TABLEUPDATE( ), Visual FoxPro escribirá el registro almacenado en búfer en la tabla original.

Para activar el bloqueo optimista de registros en el área de trabajo actual

  • Utilice esta función y este valor:
    CURSORSETPROP("Buffering", 3)

Visual FoxPro escribe en un búfer el registro situado en la ubicación del puntero y permite modificaciones. Cuando mueva el puntero de registro o ejecute el comando TABLEUPDATE( ), Visual FoxPro intentará un bloqueo del registro. Si se produce el bloqueo, Visual FoxPro comparará el valor actual del registro en el disco con el valor original del búfer. Si ambos valores son iguales, las modificaciones se escribirán en la tabla original; si los valores son distintos, Visual FoxPro generará un error.

Activar el almacenamiento de tablas en búfer

Habilite el almacenamiento de tablas en búfer mediante la función CURSORSETPROP( ).

Para activar el bloqueo pesimista de múltiples registros en el área de trabajo actual

  • Utilice esta función y este valor:
    CURSORSETPROP("Buffering", 4)

Visual FoxPro intenta bloquear el registro en la ubicación del puntero. Si el bloqueo tiene éxito, Visual FoxPro situará el registro en un búfer y permitirá su modificación. Utilice el comando TABLEUPDATE( ) para escribir en la tabla original los registros almacenados en búfer.

Para activar el bloqueo optimista de múltiples registros en el área de trabajo actual

  • Utilice esta función y este valor:
    CURSORSETPROP("Buffering", 5)

Visual FoxPro escribe los registros en un búfer y permite modificarlos hasta que se ejecute un comando TABLEUPDATE( ). A continuación, Visual FoxPro llevará a cabo la siguiente secuencia en cada registro del búfer:

  • Intenta un bloqueo en cada registro modificado.
  • Cuando realiza el bloqueo, compara el valor actual de cada registro del disco con el valor original del búfer.
  • Escribe las modificaciones en la tabla original si la comparación indica que ambos valores son iguales.
  • Genera un error si los valores son distintos.

Cuando se activa el almacenamiento de tablas en búfer, Visual FoxPro sólo intentará realizar actualizaciones después de que se ejecute el comando TABLEUPDATE( ).

Agregar y eliminar registros de búferes de tablas

Puede anexar y eliminar registros mientras está activado el almacenamiento de tablas en búfer: los registros anexados se agregan al final del búfer. Para tener acceso a todos los registros del búfer, incluidos los registros anexados, utilice la función RECNO( ). La función RECNO( ) devuelve números negativos secuenciales para los registros que usted anexe a un búfer de tabla. Por ejemplo, si inicia el almacenamiento de tablas en búfer, modifica los registros 7, 8 y 9, y a continuación anexa tres registros, el búfer contendrá valores RECNO( ) de 7, 8, 9, – 1, – 2 y – 3.

Nota Las tablas con valores de campo auto incremental agrega registros con búfer de tabla aproximadamente un 35% más lento que las tablas sin valores de campo auto incremental, lo cual podría afectar el rendimiento. Cuando utilice búfer de tabla, la cabecera de la tabla se bloquea cuando se agrega el registro.

Búfer después de modificar y anexar registros

Sólo podrá quitar del búfer registros anexados si utiliza el comando TABLEREVERT( ). Para cualquier registro anexado, TABLEUPDATE( ) y TABLEREVERT( ) eliminan el valor negativo de RECNO( ) para ese registro y mantienen la secuencia.

Búfer después de modificar, eliminar un registro anexado y anexar otro

Mientras utiliza un búfer de tabla, puede usar el comando GO con el valor negativo de RECNO( ) para tener acceso a un determinado registro anexado. Por ejemplo, utilizando el ejemplo anterior, puede escribir:

GO 7      && se mueve al primer registro en búfer
GO -3     && se mueve al sexto registro en búfer (tercero agregado)

Agregar registros a un búfer de tabla

  • Utilice el comando APPEND o APPEND BLANK después de habilitar el almacenamiento de tablas en búfer.

Los registros anexados tienen números de RECNO( ) negativos y secuenciales en sentido ascendente.

Para quitar un registro anexado de un búfer de tabla

  1. Utilice el comando GO con un valor negativo para situar el puntero de registro en el registro que desea eliminar.
  2. Utilice el comando DELETE para marcar el registro para su eliminación.
  3. Utilice el comando TABLEREVERT( ) para quitar el registro del búfer.
    Nota La función TABLEREVERT( ) también afecta al estado de las filas eliminadas o modificadas.

Para quitar todos los registros anexados de un búfer de tabla

  • Utilice TABLEREVERT( ) con un valor True (.T.).

TABLEREVERT( ) quita de un búfer de tabla los registros anexados sin escribir los registros en la tabla. TABLEUPDATE( ) escribe en una tabla todos los registros que están almacenados en búfer, aunque se hayan marcado para su eliminación.

Vea también

Utilizar sesiones de datos | Actualizar datos | Programar para acceso compartido | Controlar el acceso a datos | CURSORSETPROP( )


Actualizar datos

Para actualizar datos, puede usar almacenamiento en búfer, transacciones o vistas.

Realizar actualizaciones con almacenamiento en búfer

Después de elegir el método de almacenamiento en búfer y el tipo de bloqueo, active el almacenamiento en búfer de registros o tablas.

Para activar el almacenamiento en búfer

Elija una de las opciones siguientes:

  • En el Diseñador de formularios, establezca la propiedad BufferModeOverride del cursor en el entorno de datos del formulario.

    –O bien–

  • En el código, establezca la propiedad Buffering.

    Por ejemplo, puede activar el almacenamiento pesimista de filas en búfer si coloca el código siguiente en el procedimiento Init de un formulario:

    CURSORSETPROP('Buffering', 2)

Después escriba código para las operaciones de actualización en el código del método apropiado para los controles.

Para escribir las modificaciones en la tabla original, utilice TABLEUPDATE( ). Para cancelar las modificaciones después de una operación errónea de actualización en una tabla restringida por reglas, utilice TABLEREVERT( ). TABLEREVERT( ) es válido aunque el almacenamiento explícito de tablas en búfer no esté activado. Para especificar un nivel de verificación de la integridad de tabla, más bajo que el de la configuración predeterminada, utilice el comando SET TABLEVALIDATE.

El ejemplo siguiente muestra cómo actualizar registros cuando está activado el almacenamiento pesimista de registros en búfer.

Ejemplo de actualización mediante búferes de registros y tablas

Código Comentarios
OPEN DATABASE testdata
USE customers
CURSORSETPROP('Buffering', 2)
En el código Init del formulario, abre la tabla y activa el almacenamiento pesimista de registros en búfer.
lModified = .F.
FOR nFieldNum = 1 TO FCOUNT()
IF GETFLDSTATE(nFieldNum) = 2
lModified = .T.
EXIT
ENDIF
ENDFOR
Se desplaza por campos y comprueba los que se han modificado.

Nota Este código podría estar en el evento Click de un botón de comando "Guardar" o "Actualizar".

IF lModified
nResult = MESSAGEBOX;
("El registro fue modigiaco. Guardarlo?", ;
4+32+256, "Datos cambiaron")
 Busca el siguiente registro modificado.
   IF nResult = 7
TABLEREVERT (.F.)
ENDIF
ENDIF
 Muestra el valor actual y da al usuario la posibilidad de invertir el cambio del campo actual.
SKIP
IF EOF()
MESSAGEBOX( "already at bottom")
SKIP -1
ENDIF
THISFORM.Refresh

SKIP garantiza que se escribe el último cambio.

Administrar actualizaciones mediante transacciones

Incluso si utiliza el almacenamiento en búfer pueden surgir problemas. Si desea proteger las operaciones de actualización y recuperar una sección completa de código como una unidad, utilice transacciones.

La incorporación de transacciones a su aplicación proporciona una protección adicional al almacenamiento en búfer de registros y tablas de Visual FoxPro, situando una sección completa de código en una unidad protegida y recuperable. Puede anidar transacciones y emplearlas para proteger actualizaciones almacenadas en búfer. Las transacciones de Visual FoxPro sólo están disponibles con tablas y vistas pertenecientes a una base de datos.

Ajustar segmentos de código

Una transacción actúa como un empaquetador que almacena en memoria caché o en disco las operaciones de actualización de datos, en lugar de aplicar directamente esas actualizaciones a la base de datos. La actualización real de la base de datos se realiza al final de la transacción. Si por alguna razón el sistema no puede realizar las operaciones de actualización en la base de datos, podrá deshacer la transacción completa para que no se lleve a cabo ninguna actualización.

Nota Las operaciones de actualización almacenadas en búfer que se hayan realizado fuera de una transacción se ignoran en otra transacción de la misma sesión de datos.

Comandos que controlan transacciones

Visual FoxPro proporciona tres comandos y una función para administrar una transacción:

Para | Utilice
Iniciar una transacción | BEGIN TRANSACTION
Determinar el nivel actual de la transacción | TXNLEVEL( )
Invertir todos los cambios realizados desde la instrucción BEGIN TRANSACTION más reciente | ROLLBACK
Bloquear registros, grabar en disco todos los cambios realizados en tablas de la base de datos desde la instrucción BEGIN TRANSACTION más reciente y, a continuación, desbloquear los registros | END TRANSACTION

Puede utilizar transacciones para ajustar modificaciones de tablas, archivos .cdx estructurales y archivos memo asociados a tablas de una base de datos. Las operaciones en las que intervienen variables y otros objetos no respetan las transacciones, por lo que no se pueden deshacer o confirmar.

Nota Cuando se utilicen los datos almacenados en tablas remotas, el control de los comandos de la transacción sólo actualiza los datos de la copia local del cursor de la vista; las actualizaciones de tablas base remotas no se ven afectadas. Para habilitar las transacciones manuales en tablas remotas, utilice SQLSETPROP( ) y, a continuación, controle la transacción mediante SQLCOMMIT( ) y SQLROLLBACK( ).

En general, deberá utilizar las transacciones con búferes de registro en lugar de almacenamiento de tablas en búfer, salvo para ajustar llamadas de TABLEUPDATE( ). Si incluye un comando TABLEUPDATE( ) en una transacción, podrá deshacer una actualización errónea, resolver la causa del error y, a continuación, volver a intentar TABLEUPDATE( ) sin perder datos. De este modo se asegurará de que la actualización se produce como una operación de "todo o nada".

Aunque el procesamiento simple de transacciones proporciona operaciones seguras de actualización de datos en situaciones normales, no ofrece protección total contra errores del sistema. Si se interrumpe el suministro eléctrico o el sistema queda bloqueado durante el procesamiento del comando END TRANSACTION, se puede producir un error en la actualización de datos.

Utilice el código siguiente como plantilla para transacciones:

BEGIN TRANSACTION
* Update records
IF lSuccess = .F. && an error occurs
ROLLBACK
ELSE && commit the changes
* Validate the data
IF && error occurs
ROLLBACK
ELSE
END TRANSACTION
ENDIF
ENDIF

Usar transacciones

Las reglas siguientes se aplican a las transacciones:

  • Una transacción comienza con el comando BEGIN TRANSACTION y termina con el comando END TRANSACTION o ROLLBACK. Una instrucción END TRANSACTION que no vaya precedida de una instrucción BEGIN TRANSACTION generará un error.
  • Una instrucción ROLLBACK que no vaya precedida de una instrucción BEGIN TRANSACTION generará un error.
  • Una vez comenzada una transacción, permanecerá en vigor hasta que comience el END TRANSACTION correspondiente (o hasta que se ejecute un comando ROLLBACK), incluso en programas y funciones, a menos que se termine la aplicación, lo que producirá una anulación.
  • Visual FoxPro utiliza datos almacenados en caché en el búfer de transacciones antes de utilizar datos del disco para consultas acerca de los datos relacionados con transacciones. De este modo se asegura la utilización de los datos más actuales.
  • Si la aplicación termina durante una transacción, todas las operaciones se desharán.
  • Una transacción sólo funciona en un contenedor de base de datos.
  • No es posible utilizar el comando INDEX si sobrescribe un archivo de índice existente o si hay abierto algún archivo de índice .cdx.
  • Las transacciones pertenecen al ámbito de las sesiones de datos.

Las transacciones presentan los comportamientos de bloqueo siguientes:

  • En una transacción, Visual FoxPro impone un bloqueo en el momento en que un comando lo solicita directa o indirectamente. Cualquier comando de desbloqueo directo o indirecto procedente del sistema o del usuario se almacena en caché hasta que se complete la transacción mediante los comandos ROLLBACK o END TRANSACTION.
  • Si utiliza un comando de bloqueo como FLOCK( ) o RLOCK( ) en una transacción, la instrucción END TRANSACTION no liberará el bloqueo. En ese caso, deberá desbloquear explícitamente todos los bloqueos realizados en una transacción. Las transacciones que contienen los comandos FLOCK( ) o RLOCK( ) deben ser lo más breves posible; en caso contrario, los usuarios podrían encontrar los registros bloqueados durante mucho tiempo.

Anidar transacciones

Las transacciones anidadas proporcionan grupos lógicos de operaciones de actualización de tablas que están aislados de los procesos concurrentes. No es necesario que los pares BEGIN TRANSACTION...END TRANSACTION estén en la misma función o el mismo procedimiento. Las transacciones anidadas tienen estas reglas:

  • Se pueden anidar hasta cinco pares BEGIN TRANSACTION...END TRANSACTION.
  • Las actualizaciones realizadas en una transacción anidada no se confirman hasta que se llama a la instrucción END TRANSACTION más externa.
  • En las transacciones anidadas, una instrucción END TRANSACTION sólo funciona sobre la transacción iniciada por la última instrucción BEGIN TRANSACTION ejecutada.
  • En las transacciones anidadas, una instrucción ROLLBACK sólo funciona sobre la transacción iniciada por la última instrucción BEGIN TRANSACTION ejecutada.
  • La actualización más interna de una serie de transacciones anidadas sobre los mismos datos tiene prioridad sobre todas las demás del mismo bloque de transacciones anidadas.

Observe en el ejemplo siguiente que, puesto que los cambios en una transacción anidada no se escriben en disco, sino en el búfer de transacciones, la transacción más interna sobrescribirá los cambios realizados en los mismos campos STATUS de la transacción anterior:

BEGIN TRANSACTION &&  transaction 1
UPDATE EMPLOYEE ; &&  first change
SET STATUS = "Contract" ;
WHERE EMPID BETWEEN 9001 AND 10000
BEGIN TRANSACTION &&  transaction 2
UPDATE EMPLOYEE ;
SET STATUS = "Exempt" ;
WHERE HIREDATE > {^1998-01-01}  &&  overwrites
END TRANSACTION &&  transaction 2
END TRANSACTION    &&  transaction 1

El siguiente ejemplo de transacción anidada elimina un registro de cliente y todas las facturas relacionadas. La transacción se deshará si se producen errores durante un comando DELETE. Este ejemplo muestra la agrupación de operaciones de actualización de tablas para impedir que las actualizaciones se completen parcialmente y para evitar conflictos de simultaneidad.

Ejemplo de modificación de registros en transacciones anidadas

Código Comentarios
DO WHILE TXNLEVEL( ) > 0
ROLLBACK
ENDDO
 Limpia el entorno de otras transacciones.
CLOSE ALL
SET MULTILOCKS ON
SET EXCLUSIVE OFF
 Establece el entorno para el almacenamiento en búfer.
OPEN DATABASE test
USE mrgtest1
CURSORSETPROP('buffering',5)
GO TOP

Activa el almacenamiento optimista de tablas en búfer.

REPLACE fld1 WITH "changed"
SKIP
REPLACE fld1 WITH "another change"
MESSAGEBOX("modify first field of both" + ;
"records on another machine")
 Cambia un registro.

Cambia otro registro.
BEGIN TRANSACTION
lSuccess = TABLEUPDATE(.T.,.F.)
 Inicia la transacción 1 e intenta actualizar todos los registros modificados que no están vigentes.
IF lSuccess = .F.
ROLLBACK
AERROR(aErrors)
DO CASE
CASE aErrors[1,1] = 1539
...
CASE aErrors[1,1] = 1581
...
CASE aErrors[1,1] = 1582
Si se producen errores en la actualización, deshace la transacción.
Obtiene un error de AERROR( ).
Determina la causa del error.
Si un desencadenante ha producido errores, soluciona el problema.

Si un campo no acepta valores nulos, soluciona el problema.
Si se ha infringido una regla de campo, soluciona el problema.
   CASE aErrors[1,1] = 1585
nNextModified = getnextmodified(0)
DO WHILE nNextModified <> 0
GO nNextModified
RLOCK()
FOR nField = 1 to FCOUNT()
cField = FIELD(nField)

if OLDVAL(cField) <> CURVAL(cField)
 Si otro usuario ha modificado un registro, localiza el primer registro modificado.
Hace un bucle a través de todos los registros modificados, comenzando con el primero.
Bloquea cada registro para asegurarse de que se puede actualizar.
Comprueba si hay cambios en cada campo.

Compara el valor almacenado en búfer con el valor en disco; a continuación, muestra un cuadro de diálogo al usuario.
               nResult = MESSAGEBOX;
("Data was changed " + ;
"by another user — keep"+ ;
"changes?", 4+48, ;
"Modified Record")

               IF nResult = 7
TABLEREVERT(.F.)
UNLOCK record nNextModified
ENDIF
 Si el usuario responde "No", invierte el registro uno y lo desbloquea.
               EXIT
ENDIF
ENDFOR
 Sale del bucle "FOR nField...".
      ENDDO
 Obtiene el siguiente registro modificado.
      BEGIN TRANSACTION
TABLEUPDATE(.T.,.T.)
END TRANSACTION
UNLOCK
 Inicia la transacción 2 y actualiza todos los registros no invertidos que están en vigor.
Finaliza la transacción 2.
Libera el bloqueo.
   CASE aErrors[1,1] = 109
...
CASE aErrors[1,1] = 1583
...
CASE aErrors[1,1] = 1884
...
OTHERWISE
MESSAGEBOX( "Unknown error "+;
"message: " + STR(aErrors[1,1]))
ENDCASE
 Si el registro está en uso por otro usuario, soluciona el problema.

Si se ha infringido una regla de fila, soluciona el problema.

Si hubo una infracción de índice único, soluciona el problema.

De lo contrario, muestra un cuadro de diálogo al usuario.
ELSE
END TRANSACTION
ENDIF
Termina la transacción 1.

Proteger actualizaciones remotas

Las transacciones pueden protegerle frente a los errores generados por el sistema durante actualizaciones de datos en tablas remotas. El ejemplo siguiente utiliza una transacción para ajustar operaciones de escritura de datos en una tabla remota.

Ejemplo de una transacción de una tabla remota

Código Comentarios
hConnect = CURSORGETPROP('connecthandle')
SQLSETPROP(hConnect, 'transmode',
DB_TRANSMANUAL)
 Obtiene el controlador de conexión
y activa transacciones manuales.
BEGIN TRANSACTION
 Comienza la transacción manual.
lSuccess = TABLEUPDATE(.T.,.F.)
IF lSuccess = .F.
SQLROLLBACK (hConnect)
ROLLBACK
 Intenta actualizar todos los registros que no están en vigor.
Si la actualización ha producido errores,
deshace la transacción en
la conexión del cursor.
   AERROR(aErrors)
DO CASE
Obtiene un error de AERROR( ).
   CASE aErrors[1,1] = 1539
...
 Si un desencadenante ha producido errores, soluciona el problema.
   CASE aErrors[1,1] = 1581
...
 Si un campo no acepta valores nulos, soluciona el problema.
   CASE aErrors[1,1] = 1582
...
 Si se ha infringido una regla de campo, soluciona el problema.
   CASE aErrors[1,1] = 1585
nNextModified = GETNEXTMODIFIED(0)
DO WHILE nNextModified <> 0
GO nNextModified
 Si otro usuario ha cambiado un registro, soluciona el problema.

Hace un bucle a través de todos los registros modificados, comenzando con el primero.
         FOR nField = 1 to FCOUNT()
cField = FIELD(nField)
IF OLDVAL(cField) <> CURVAL(cField)
nResult = MESSAGEBOX;
("Data has been changed ;
by another user. ;
Keep changes?",4+48,;
"Modified Record")
 Comprueba si hay cambios en cada campo.

Compara el valor almacenado en búfer
con el valor del disco y, a continuación, muestra un cuadro de diálogo al usuario.
               IF nResult = 7
TABLEREVERT(.F.)
ENDIF
EXIT
ENDIF
ENDFOR
nNextModified = ;
GETNEXTMODIFIED(nNextModified)
ENDDO
 Si el usuario respondió "No",
invierte el registro uno.

Sale del bucle "FOR nField...".

Obtiene el siguiente registro modificado.
      TABLEUPDATE(.T.,.T.)
SQLCOMMIT(hConnect)
 Actualiza todos los registros no invertidos que están vigentes y ejecuta una confirmación.
   CASE aErrors[1,1] = 109
* Handle the error
 El error 109 indica que otro usuario está utilizando el registro.
   CASE aErrors[1,1] = 1583
* Handle the error
 El error 1583 indica que se ha infringido una regla de la fila.
   CASE aErrors[1,1] = 1884
* Handle the error
 El error 1884 indica que se ha infringido la unicidad del índice.
   OTHERWISE
* Handle generic errors.

      MESSAGEBOX("Unknown error message:" ;
+ STR(aErrors[1,1]))
ENDCASE
 Muestra un cuadro de diálogo al usuario.

Fin del control de errores.
ELSE
SQLCOMMIT(hConnect)
END TRANSACTION
ENDIF
Si se controlaron todos los errores y la transacción completa se ha realizado con éxito, ejecuta una confirmación y termina la transacción.

Vea también

Almacenar datos en búfer | Administrar el rendimiento | Programar para acceso compartido | TABLEUPDATE( ) | TABLEREVERT( ) | Controlar el acceso a datos | Administrar conflictos


Administrar el rendimiento

Cuando haya creado una aplicación multiusuario, podrá emplear las siguientes sugerencias para mejorar su rendimiento:

  • Sitúe los archivos temporales en una unidad local.
  • Elija entre ordenar e indexar archivos.
  • Prepare el acceso exclusivo a los archivos.
  • Sincronice el bloqueo de archivos.

Colocar los archivos temporales en una unidad local

Visual FoxPro crea sus archivos temporales en el directorio Temp predeterminado de Windows. Las sesiones de modificación de texto también pueden crear temporalmente una copia de seguridad del archivo que se está modificando (un archivo .bak).

Si las estaciones de trabajo locales disponen de disco duro con abundante espacio libre, podrá mejorar el rendimiento si sitúa estos archivos temporales en la unidad local o en una unidad RAM. Al redirigir estos archivos a una unidad local o RAM aumentará el rendimiento, ya que se reduce el acceso a la unidad de red.

Para especificar una ubicación alternativa para estos archivos, incluya las instrucciones EDITWORK, SORTWORK, PROGWORK y TMPFILES en el archivo de configuración Config.fpw. Para obtener más información acerca de la administración de archivos, consulte Optimizar el sistema.

Elegir entre ordenar e indexar archivos

Cuando los datos que contiene una tabla son relativamente estáticos, el procesamiento de tablas ordenadas secuencialmente sin un orden establecido mejora el rendimiento. Esto no significa que las tablas ordenadas no puedan o no deban aprovechar los archivos de índice; el comando SEEK, que requiere un índice, es incomparable para encontrar registros rápidamente. Sin embargo, cuando encuentre un registro con SEEK, podrá desactivar la ordenación.

Preparar el acceso exclusivo a los archivos

Los comandos que se ejecutan cuando ningún otro usuario necesita tener acceso a los datos, como las actualizaciones nocturnas, pueden verse beneficiados si abre los archivos de datos para uso exclusivo. Cuando se abren archivos para uso exclusivo, el rendimiento mejora porque Visual FoxPro no necesita comprobar el estado de los bloqueos de registros o archivos.

Sincronizar el bloqueo de archivos

Para disminuir los conflictos entre los usuarios para tener acceso de escritura a una tabla o un registro, reduzca el tiempo que un registro o una tabla permanecen bloqueados. Para ello, bloquee el registro únicamente después de modificarlo en lugar de hacerlo durante la modificación. El almacenamiento optimista de filas en búfer proporciona el menor tiempo de bloqueo.

Para obtener más información acerca de la mejora del rendimiento, consulte Optimizar el sistema. También encontrará información acerca de la mejora del rendimiento en aplicaciones cliente-servidor en Optimizar el rendimiento cliente/servidor.

Vea también

Actualizar datos | Administrar actualizaciones mediante vistas | Programar para acceso compartido | Administrar conflictos | Almacenar datos en búfer


Administrar actualizaciones mediante vistas

Puede usar la tecnología de administración de conflictos de actualización en las vistas de Visual FoxPro para administrar el acceso de múltiples usuarios a los datos. Las vistas controlan lo que se envía a las tablas base de la vista mediante la propiedad WhereType. Puede establecer esta propiedad para vistas locales y remotas. La propiedad WhereType proporciona cuatro configuraciones:

  • DB_KEY
  • DB_KEYANDUPDATABLE
  • DB_KEYANDMODIFIED (la predeterminada)
  • DB_KEYANDTIMESTAMP

Si elige una de estas cuatro configuraciones, puede controlar como genera Visual FoxPro la cláusula WHERE de la instrucción SQL Update enviada a las tablas base de la vista. Puede elegir la configuración que desee mediante la ficha Criterios de actualización del Diseñador de vistas o puede usar DBSETPROP( ) para establecer WhereType para una definición de vista. Para cambiar la configuración de WhereType para un cursor en la vista activa, utilice CURSORSETPROP( ).

Para... | Elija esta opción SQL WHERE...
Impedir la actualización si en la tabla de origen se ha modificado un campo clave | Sólo campos clave
Impedir la actualización si en la tabla remota se ha modificado alguno de los campos marcados como actualizables | Campos clave y actualizables
Impedir la actualización si los campos que modifique localmente se han modificado en la tabla de origen | Campos clave y modificados
Impedir la actualización si la marca de hora del registro en la tabla remota ha cambiado desde la primera vez que lo recuperó (disponible únicamente si la tabla remota tiene una columna de marca de hora) | Clave y marca de hora

Por ejemplo, suponga que tiene una vista remota sencilla basada en la tabla Customer que incluye siete campos: cust_id, company, phone, fax, contact, title y timestamp. La clave principal de la vista es cust_id.

Solo ha establecido como actualizables dos campos: contact_name y contact_title. Desea que el usuario pueda cambiar el nombre de la persona de contacto de la empresa y su cargo desde la vista. Sin embargo, si cambian otros datos de la compañía, como su dirección, los cambios deben pasar a un coordinador que identificará el efecto de los cambios en la empresa, como si cambiára la región de ventas del cliente. Ahora que la vista se ha configurado para enviar actualizaciones, puede elegir WhereType según sus preferencias.

Ahora suponga que cambia el nombre del campo contact para un cliente, pero no cambia el valor en el otro campo actualizable, title. Según este ejemplo, la sección siguiente trata acerca de como afectará la configuración de WhereType a la cláusula WHERE que Visual FoxPro genera para enviar el nombre del nuevo contacto a las tablas base.

Comparar únicamente el campo clave

La actualización menos restrictiva usa la configuración DB_KEY. La cláusula WHERE utilizada para actualizar tablas remotas consta únicamente del campo de clave principal con la propiedad KeyField o KeyFieldList. A menos que se haya modificado o eliminado el campo de clave principal en la tabla base desde que se recuperó el registro, se inicia el proceso de actualización.

En el caso del ejemplo anterior, Visual FoxPro prepararía una instrucción de actualización con una cláusula WHERE que compara el valor del campo cust_id con el del campo cust_id en la fila de la tabla base:

WHERE OLDVAL(customer.cust_id) = CURVAL(customer_remote_view.cust_id)

Cuando la instrucción de actualización se envía a la tabla base, solo se comprueba el campo clave.

El campo clave de la vista se compara con el campo correspondiente de la tabla base

Comparar los campos clave y los campos modificados en la vista

La configuración DB_KEYANDMODIFIED, que es la predeterminada, es ligeramente más restrictiva que DB_KEY. DB_KEYANDMODIFIED compara tan solo el campo clave y los campos actualizables que se han modificado en la vista con sus campos correspondientes en la tabla base. Si modifica un campo en la vista, pero no es actualizable, los campos no se comparan con los datos de la tabla base.

La cláusula WHERE utilizada para actualizar tablas base consta de los campos principales especificados con la propiedad KeyFieldList y de todos los campos que se hayan modificado en la vista. En el caso del ejemplo anterior, Visual FoxPro preparará una instrucción de actualización que compare los valores del campo cust_id, porque es el campo principal, y el campo contact, porque se ha cambiado el nombre de la persona de contacto. Aunque sea actualizable, el campo title no se incluye en la instrucción de actualización porque no se ha modificado.

Los campos clave y modificados de la vista se comparan con sus campos correspondientes de la tabla base

Comparar el campo clave y todos los campos actualizables

La configuración DB_KEYANDUPDATABLE compara el campo clave y todos los campos actualizables (independientemente de si se han modificado o no) de la vista con sus correspondientes en la tabla base. Si el campo es actualizable y no se ha modificado en la vista pero sí en la tabla base, se produce un error en la actualización.

La cláusula WHERE utilizada para actualizar tablas base consta de campos principales especificados con la propiedad KeyField o KeyFieldList y de todos los demás campos que son actualizables. En el caso del ejemplo, Visual FoxPro prepararía una instrucción de actualización que compare los valores de los campos cust_id, contact y title con los mismos campos de la fila de la tabla base.

Todos los campos actualizables de la vista se comparan con sus correspondientes en la tabla base

Comparar la marca de hora de todos los campos de un registro de la tabla base

DB_KEYANDTIMESTAMP es el tipo de actualización más restrictivo y sólo está disponible si la tabla base tiene una columna de marca de hora. Visual FoxPro compara la marca de hora actual del registro de la tabla base con la marca de la hora en el momento en que los datos se incorporaron a la vista. Si se modifica un campo del registro de la tabla base, aunque no sea el campo que se pretende cambiar, o incluso un campo de la vista, se produce un error en la actualización.

En el caso del ejemplo, Visual FoxPro prepara una instrucción de actualización que compara los valores del campo cust_id y el valor del campo timestamp con los de los campos de la fila de la tabla base.

La marca de hora del registro de la vista se compara con la marca de hora del registro de la tabla base.

Para actualizar correctamente los datos mediante la configuración DB_KEYANDTIMESTAMP con una vista en la que haya múltiples tablas, debe incluir el campo de marca de hora en la vista para todas las tablas que sean actualizables. Por ejemplo, si tiene tres tablas en una vista y desea actualizar sólo dos y elige la configuración DB_KEYANDTIMESTAMP, debe bajar los campos de marca de hora de las dos tablas actualizables al conjunto de resultados. También puede usar valores lógicos en la propiedad CompareMemo para determinar si los campos memo se incluyen en la detección de conflictos.

Vea también

Administrar el rendimiento | Administrar conflictos | Programar para acceso compartido | Criterios de actualización | DBSETPROP( ) | CURSORSETPROP( )


Administrar conflictos

Cuando elija el almacenamiento en búfer, transacciones o vistas, debe administrar los conflictos que puedan surgir durante el proceso de actualización.

Administrar conflictos en el almacenamiento en búfer

Puede hacer que las operaciones de actualización de datos sean más eficientes si elige cuidadosamente como y cuándo abrir, almacenar en búfer y bloquear datos en un entorno multiusuario. Deberá limitar el tiempo que un registro o una tabla están sometidos a conflictos de acceso. A pesar de todo, tendrá que anticiparse a los conflictos que se producen de forma inevitable y administrarlos. Un conflicto se produce cuando un usuario intenta bloquear un registro o una tabla que ya ha bloqueado otro usuario. Dos usuarios no pueden bloquear el mismo registro o la misma tabla a la vez.

La aplicación deberá contener una rutina para administrar estos conflictos. Si la aplicación no tiene una rutina de conflictos, el sistema puede quedar bloqueado. Se produce un interbloqueo cuando un usuario ha bloqueado un registro o una tabla e intenta bloquear otro registro ya bloqueado por un segundo usuario que, a su vez, está intentando bloquear el registro bloqueado por el primer usuario. Aunque esto no suele ocurrir, cuanto más tiempo permanezca bloqueado un registro o una tabla, mayores posibilidades habrá de que se produzca un interbloqueo.

Detectar errores

Diseñar una aplicación multiusuario o agregar soporte de red a un sistema de un solo usuario exige interceptar colisiones y errores. El uso de los búferes de registro y tabla de Visual FoxPro simplifica parte de este trabajo.

Si intenta bloquear un registro o una tabla que ya están bloqueados por otro usuario, Visual FoxPro devolverá un mensaje de error. Puede utilizar SET REPROCESS para resolver automáticamente los intentos fallidos de bloqueo. Este comando, en combinación con una rutina ON ERROR y el comando RETRY permite continuar o cancelar los intentos de bloqueo.

El ejemplo siguiente muestra el reprocesamiento automático de una operación fallida mediante SET REPROCESS.

Ejemplo del uso de SET REPROCESS y ON ERROR para administrar colisiones de usuarios

Código Comentarios
ON ERROR DO err_fix WITH ERROR(),MESSAGE()
SET EXCLUSIVE OFF
SET REPROCESS TO AUTOMATIC
USE customer
IF !FILE('cus_copy.dbf')
COPY TO cus_copy
ENDIF
 Esta rutina se ejecuta si se produce un error.
Abre los archivos de forma no exclusiva.
El reprocesamiento de bloqueos fallidos es automático.
Abra la tabla.

Si es necesario, crea la tabla APPEND FROM.

DO app_blank
DO rep_next
DO rep_all
DO rep_curr
DO add_recs
 La rutina principal comienza aquí.
Estos comandos son ejemplos de los códigos que podrían ejecutarse en el curso del programa.
ON ERROR
 La rutina principal termina aquí.
PROCEDURE app_blank
APPEND BLANK
RETURN
ENDPROC
 Rutina que anexa un registro en blanco.
PROCEDURE rep_next
REPLACE NEXT 1 contact WITH ;
PROPER(contact)
RETURN
ENDPROC
 Rutina que reemplaza los datos del registro actual.
PROCEDURE rep_all
REPLACE ALL contact WITH ;
PROPER(contact)
GO TOP
RETURN
ENDPROC
 Rutina que reemplaza los datos de todos los registros.
PROCEDURE rep_curr
REPLACE contact WITH PROPER(contact)
RETURN
ENDPROC
 Rutina que reemplaza los datos del registro actual.
PROCEDURE add_recs
APPEND FROM cus_copy
RETURN
ENDPROC
 Rutina que anexa registros de otro archivo.

El ejemplo siguiente muestra un procedimiento de error que se inicia cuando el usuario presiona ESC.

Ejemplo de control de errores mediante la tecla ESC

Código Comentarios
PROCEDURE err_fix
PARAMETERS errnum, msg
 Este programa se activa cuando surge un error y el usuario sale del proceso de espera.
DO CASE
 Averigua de qué tipo de error se trata.
¿Es "Otra persona está utilizando el archivo"?
   CASE errnum = 108
line1 = "File cannot be locked."
line2 = "Try again later..."

   CASE errnum = 109 .OR. errnum = 130
line1 = "Record cannot be locked."
line2 = "Try again later."
 ¿O bien, "Otra persona está usando el registro"?
   OTHERWISE
line1 = msg + " "
line2 = ;
"See your system administrator."
ENDCASE
 ¿O es desconocido?

=MESSAGEBOX( line1 + line2, 48, "Error!" )
RETURN
Muestra el mensaje de error en un cuadro de diálogo con un signo de exclamación y un botón "Aceptar".

Vea también

Administrar actualizaciones mediante vistas | Detectar y resolver conflictos | Programar para acceso compartido | SET REPROCESS | ON ERROR | RETRY


Detectar y resolver conflictos

Durante las operaciones de actualización de datos, sobre todo en entornos compartidos, puede resultar conveniente determinar qué campos han cambiado o cuáles son los valores originales o actuales de los campos modificados. El almacenamiento en búfer de Visual FoxPro y las funciones GETFLDSTATE( ), GETNEXTMODIFIED( ), OLDVAL( ) y CURVAL( ) permiten determinar qué campo ha cambiado, buscar los datos modificados y comparar los valores actuales, originales y modificados para decidir cómo solucionar un error o un conflicto.

Para detectar un cambio en un campo

  • Después de una operación de actualización, utilice la función GETFLDSTATE( ).

GETFLDSTATE( ) funciona sobre datos no almacenados en búfer. Sin embargo, esta función es aún más efectiva cuando se ha activado el almacenamiento de registros en búfer. Por ejemplo, utilice GETFLDSTATE( ) en el código de un botón Omitir de un formulario. Cuando mueva el puntero de registro, Visual FoxPro comprobará el estado de todos los campos del registro como en el ejemplo siguiente:

lModified = .F.
FOR nFieldNum = 1 TO FCOUNT( ) && Comprobar todos los campos
if GETFLDSTATE(nFieldNum) = 2  && Modificado
lModified = .T.
EXIT 	&& aquí rutina para insertar, acrualizar/guardar.
ENDIF 	&& Ver el próximo ejemplo
ENDFOR

Para detectar y localizar un registro modificado en datos almacenados en búfer

  • Utilice la función GETNEXTMODIFIED( ).

GETNEXTMODIFIED( ), con cero como parámetro, busca el primer registro modificado. Si otro usuario realiza cambios en la tabla almacenada en búfer, los cambios que encuentre el comando TABLEUPDATE( ) en el búfer ocasionarán conflictos. Puede evaluar los valores conflictivos y resolverlos mediante las funciones CURVAL( ), OLDVAL( ) y MESSAGEBOX( ). CURVAL( ) devuelve el valor actual de registro en el disco, mientras que OLDVAL( ) devuelve el valor del registro en el momento en que se almacenó en el búfer.

Para determinar el valor original de un campo almacenado en búfer

  • Utilice la función OLDVAL( ).

OLDVAL( ) devuelve el valor de un campo almacenado en búfer.

Para determinar el valor actual de un campo almacenado en búfer en el disco

  • Utilice la función CURVAL( ).

CURVAL( ) devuelve el valor actual en el disco de un campo almacenado en búfer antes de realizar modificaciones.

Puede crear un procedimiento de control de errores que compare los valores actual y original, lo que le permitirá determinar si desea confirmar el cambio actual o aceptar un cambio anterior en los datos de un entorno compartido.

El ejemplo siguiente utiliza GETNEXTMODIFIED( ), CURVAL( ) y OLDVAL( ) para proporcionar al usuario una opción informada en una operación de actualización. Este ejemplo continúa a partir de la detección del primer registro modificado y puede estar contenido en un botón Actualizar o Guardar de un formulario.

Código del evento Click para un botón Actualizar o Guardar

Código Comentarios
   nCurRec = GETNEXTMODIFIED(nCurRec)
   DO WHILE nCurRec <> 0
GO nCurRec
RLOCK( )
 Hace un bucle a través del búfer.

Bloquea el registro modificado.
   FOR nField = 1 TO FCOUNT(cAlias)
cField = FIELD(nField)
IF OLDVAL(cField) <> CURVAL(cField)
nResult = MESSAGEBOX("Data was ;
changed by another user. ;
Keep changes?", 4+48+0, ;
"Modified Record")
 Busca el conflicto.

Compara el valor original con el valor actual del disco y, a continuación, pregunta al usuario qué debe hacer en relación con el conflicto.

         IF nResult = 7
TABLEREVERT(.F.)
UNLOCK RECORD nCurRec
ENDIF
ENDIF
ENDFOR
nCurRec = GETNEXTMODIFIED(nCurRec)
ENDDO
 Si el usuario selecciona "No", invierte este registro y, a continuación, elimina el bloqueo.

Busca el siguiente registro modificado.
TABLEUPDATE(.T., .T.)
Fuerza la actualización de todos los registros.

Detectar conflictos con campos memo

Puede usar la propiedad CompareMemo para controlar cuándo deben usarse campos memo para detectar conflictos en la actualización. Esta propiedad de la vista y del cursor determina si los campos memo (de los tipos M o G) están incluidos en la cláusula WHERE de actualización. La configuración predeterminada, True (.T.), significa que los campos memo están incluidos en la cláusula WHERE. Si establece esta propiedad como False (.F), los campos memo no participan en la cláusula WHERE de actualización, independientemente de la configuración de UpdateType.

La detección optimista de conflictos de los campos memo se desactiva cuando CompareMemo se establece como False. Para activarla, establezca CompareMemo como True (.T.).

Reglas para administrar conflictos

La administración de los conflictos encontrados en entornos multiusuario pueden requerir código extenso y repetitivo. Una rutina completa de administración de conflictos hace lo siguiente:

  • Detecta un conflicto
  • Identifica la naturaleza y la ubicación del conflicto
  • Proporciona suficiente información para que el usuario pueda resolver el conflicto correctamente

Para obtener un ejemplo de una rutina de administración de conflictos, vea la clase del comprobador de datos en Samples.vcx, ubicado en el directorio ...\Samples\Classes de Visual FoxPro. Simplemente agregue la clase a un formulario y llame al método CheckConflicts antes de realizar cualquier operación que escriba datos almacenados en búfer en la tabla, por ejemplo, mover el puntero de registro si está utilizando el almacenamiento de filas en búfer, cerrar una tabla o ejecutar TABLEUPDATE( ).

Vea también

Administrar conflictos | Programar para acceso compartido | Administrar actualizaciones mediante vistas | GETFLDSTATE( ) | GETNEXTMODIFIED( )


Acceso a datos de Visual FoxPro utilizando el proveedor OLE DB

Puede acceder a los datos de Visual Foxpro desde otras aplicaciones o lenguajes de programación. Utilizando el Proveedor OLE DB de Microsoft, se puede conectar a las bases de datos y tablas de Visual FoxPro para recuperar información y utilizarla en archivos de Visual Studio o Aplicaciones de Microsoft Office.

En esta Sección

Proveedor OLE DB de Visual FoxPro
Describe el Proveedor OLE DB para Visual FoxPro, las tareas que puede realizar y la funcionalidad que éste proporciona.
Acceder a datos de Visual FoxPro desde Visual Studio .NET
Explica las formas de acceder a la información en las bases de datos y tablas de Visual FoxPro usando el proveedor OLE DB cuando esté desarrollando aplicaciones en Visual Studio .NET.
Acceder a datos de Visual FoxPro desde Microsoft Office XP
Describe como acceder a los datos en las aplicaciones Microsoft Office, tales como Word y Excel, desde bases de datos y tablas de Visual FoxPro usando el Proveedor OLE.

Temas Relacionados

Referencia del lenguaje para desarrollo OLE DB
Describe el uso del Proveedor OLE DB con el lenguaje y sintaxis nativos de Visual FoxPro.

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Proveedor OLE DB para Visual FoxPro

El proveedor OLE DB de Visual FoxPro (VfpOleDB.dll) expone interfaces OLE DB que puede usar para acceder a bases de datos y tablas Visual FoxPro desde otros lenguajes de programación y aplicaciones.

El proveedor OLE DB de Visual FoxPro incluye lo siguiente:

  • Admite la funcionalidad de la mayoría de controladores Open Database Connectivity (ODBC) de versiones anteriores de FoxPro
  • Mejora el modelo de subprocesamiento para escalabilidad
    Nota El proveedor OLE DB de Visual FoxPro OLE DB no admite múltiples conjuntos de resultados.
  • Mejora la funcionalidad y acceso para procedimientos almacenados

    Los procedimientos almacenados devuelven resultados escalables en conjuntos de filas y pueden aceptar parámetros. EL proveedor OLE DB de Visual FoxPro implementa la interfaz ICommandPersist que le permite crear, modificar y borrar código y módulos de procedimientos almacenados.

  • Admite eventos DBC y tiene la capacidad par crear, modificar y borrar funciones y procedimientos en el módulo de procedimientos almacenados de la DBC
  • Admite lo siguiente para el Schema Roewset: Tabla, Columna, Tipos de proveedor, Indices, Claves primarias, Procedimientos, Claves foráneas, Vistas, Integridad de tabla, Comprobar integridad e Integridad referencial

Puede realizar las siguientes funciones a través del proveedor OLE DB de Visual FoxPro:

  • Acceder a datos Visual FoxPro desde aplicaciones externas.
  • Crear clientes grandes y n-capas que heredan el acceso a datos Visual FoxPro.
  • Utilizar un subconjunto del lenguaje Visual FoxPro en procedimientos almacenados de bases de datos.
  • Crear y mantener contenedores de bases de datos (DBC) mediante la funcionalidad del Lenguaje de manipulación de datos (DML) y las mejoras ADOX de ADO.

El proveedor de OLE DB de Visual FoxPro admite las nuevas características de Visual FoxPro, como los eventos DBC, el acceso a procedimientos almacenados y la posibilidad de crear, modificar y eliminar funciones y procedimientos en el módulo de procedimientos almacenados DBC.

El proveedor OLE DB de Visual FoxPro está admitido por los Componentes de sistemas OLE DB como los proporcionados por MDAC 2.6 o posterior. Los requerimientos para ejecutar el proveedor OLE DB de Visual FoxPro son los mismos que para Visual FoxPro 8.0.

Nota Cuando utiliza el proveedor OLE DB de Visual FoxPro como un servidor SQL Server-vinculado, sólo se admiten consultas. Este proveedor no admite operaciones actualizar, insertar o borrar a través de un servidor vinculado.

Procedimientos almacenados en el proveedor OLE DB

El proveedor OLE DB de Visual FoxPro acepta comandos de procedimientos almacenados en los siguietnes formatos:

  • Llamar un procedimiento almacenado utilizando la sintaxis convencional:
    myStoredProc( Param1, Param2, ... )
  • Llamar un procedimiento almacenado utilizando la palabra reservada EXEC de SQL, con la siguiente sintaxis:
    EXEC myStoredProc( Param1, Param2, ... )

    donde cada parámetro está en el formato esperado por su tipo de datos o es una expresión válida que devuelve el formato como en el siguiente ejemplo:

    EXEC myStoredProc( 'characterparm', {^2002/09/09}, dateTime(), 100, 99.99, .T.)
    Nota Asegúrese de reemplazar myStoredProc con el nombre del procedimiento almacenado que desea.
    Sugerencia Cuando está utilizando ADO o ADO.NET y establece el Tipo de comando para el Procedimiento almacenado, no necesita incluir la palabra reservada EXEC. Si el Tipo de comando no está establecido como Procedimiento almacenado, debe utilizar la sintaxis convencional para procedimientos almacenados o utilizar la palabra reservada EXEC.

Entradas del registro

Cuando instala el proveedor OLE DB de Visual FoxPro, el programa de instalación actualiza el registro del sistema, HKEY CLASSES_ROOT y agrega las siguientes claves nuevas:

HKEY_CLASSES_ROOT\VFPOLEDB

HKEY_CLASSES_ROOT\VFPOLEDB.1

HKEY_CLASSES_ROOT\Vfpoledb.ConnectionPage

HKEY_CLASSES_ROOT\Vfpoledb.ConnectionPage.1

HKEY_CLASSES_ROOT\VFPOLEDB.ErrorLookup

HKEY_CLASSES_ROOT\VFPOLEDB.ErrorLookup.1

Soporte internacional

El proveedor OLE DB de Visual FoxPro admite lenguajes internacionales en la siguiente forma:

  • Conjunto de caracteres de dos bytes (Double-byte character sets) (DBCS)
  • Varias secuencias de intercalación

    Una secuencia de ordenación define el orden para los datos almacenados en una tabla o base de datos de Visual FoxPro. El proveedor OLE DB de Visual FoxPro está configurado en forma predeterminada para utilizar secuencias de ordenación que admita la versión de lenguaje de su sistema operativo.

Vea también

Acceder a datos de Visual FoxPro utilizando el proveedor OLE DB | Acceder a datos de Visual FoxPro desde Visual Studio .NET | Acceder a datos de Visual FoxPro desde Microsoft Office XP | Referencia del lenguaje para desarrollo OLE DB


Acceso a datos de Visual FoxPro desde Visual Studio .NET

Puede tener acceso a bases de datos y tablas de Visual FoxPro en Visual Studio .NET usando el Proveedor OLE DB de Visual FoxPro. El Proveedor OLE DB de Visual FoxPro está disponible a través del Explorador de Servidores de Visual Studio o usando instrucciones de conexión en el código.

Acceso a Orígenes de Datos de Visual FoxPro Usando el Explorador de Servidores de Visual Studio

Se puede tener acceso a bases de datos y tablas desde Visual Studio con sólo añadirlas a la lista de conexiones que aparecen en el Panel del Explorador de Servidores de Visual Studio. Para ello necesita especificar una conexión a través del Proveedor OLE DB de Visual FoxPro con la base de datos o las tablas que desee, para que estas aparezcan en el panel del Explorador de Servidores de Visual Studio.

Nota Deberá especificar el directorio de la base de datos o tabla que desee tener acceso, proporcionándo la ruta y el nombre del archivo o examinando hasta él.

Para conectar una base de datos de Visual FoxPro a través del Proveedor OLE DB de Visual FoxPro

  1. Abrir Visual Studio.
  2. Del menú Ver, seleccione Explorador de Servidores.
  3. En el panel de Explorador de Servidores, hacer un clic en el botón secundario del ratón en Conexiones de Datos, y luego clic en Añadir Conexión.
  4. En el cuadro de diálogo de Propiedades del Vínculo de Datos, hacer clic en la ficha de Proveedor.
  5. Seleccione Microsoft OLE DB Provider for Visual FoxPro.

    La Ficha de Conexión aparecerá disponible, en el cuadro de diálogo de Propiedades del Vínculo de Datos.

Para añadir una base de datos o tabla de Visual FoxPro

  1. En la Ficha de Conexión y la casilla de Seleccionar o dar un nombre de base de datos, escriba el nombre de la base de datos o el directorio de la tabla que se desee.

    -o-

    Para examinar hasta la base de datos o directorio de tablas de Visual FoxPro, hacer clic en el botón de puntos suspensivos (...) que se encuentra a la derecha de la casilla Seleccionar o dar un nombre de la base de datos para abrir el cuadro de diálogo de Configurar la Conexión.

  2. Si desea se puede especificar una secuencia de tabulación diferente.
  3. Para probar la conexión, hacer clic en Probar Conexión. Si la conexión es exitosa, hacer clic en Aceptar.

La base de datos o directorio de tablas especificada aparecerá en el Panel del Explorador de Servidores de Visual Studio debajo del nodo de Conexión de Datos.

Acceso a Orígenes de Datos de Visual FoxPro Usando Instrucciones de Conexión

Para tener acceso a un Orígen de Datos de Visual FoxPro, en el código, deberá usar una instrucción de conexión válida para indicar el Proveedor OLE DB de Visual FoxPro, el origen de Datos o el Nombre del Orígen de Datos (DNS). Por ejemplo, se puede tener acceso al Proveedor OLE DB de Visual FoxPro usando el código de Visual FoxPro.

Para conectar un Proveedor OLE DB de Visual FoxPro en Visual FoxPro

  1. Establecer una conexión a un Objeto de Datos Activex (ADO) y crear un objeto de datos en Visual FoxPro.
  2. Especificar el Proveedor OLE DB de Visual FoxPro y el Origen de Datos en una instrucción de conexión, tal como se muestra en el código siguiente:
    oConn = CREATEOBJECT("ADODB.Connection")
oConn.ConnectionString = "provider=vfpoledb.1;;
data source=.\MiBaseDeDatosDePrueba.dbc"
oConn.Open

Este código crea un objeto de datos que se puede usar para obtener datos.

Nota Asegúrese de reemplazar MiBaseDeDatosDePrueba con el nombre de la base de datos requerida.

En lugar de un origen de datos, se puede usar una Conexión Abierta de Base de Datos Existente (ODBC) y un Nombre de Datos de Orígen (DSN) en la instrucción de conexión con el Proveedor de OLE DB de Visual FoxPro. El Proveedor OLE DB de Visual FoxPro acepta el argumento, DSN = cDSNName, y usa el origen de datos especificado por el DSN como se muestra en el siguiente ejemplo:

oConn=CREATEOBJECT("adodb.connection")
oConn.ConnectionString="Provider=vfpoledb;DSN=ODBCorigenDeDatos"
oConn.Open()
Nota Asegúrese de reemplazar ODBCorigenDeDatos con el nombre de ODBC DSN requerido, por ejemplo, vfpTestData.

Después que la conexión se encuentre abierta, se puede preguntar por el valor de ConnectionString para determinar si el origen de datos esta siendo evaluado.

Una instrucción de conexión incluye las siguientes claves y valores de atributos:

Provider=cVFPOLEDBProvider
Especifica el Proveedor OLE DB de Visual FoxPro (VFPOLEDB).
Data Source=cPath
Especifica la ruta hasta la base de datos o directorio de Tablas Libres de Visual FoxPro. Por ejemplo, c:\Microsoft Visual FoxPro\Samples\Data\Testdata.dbc
DSN=cDSNName
Especifica un ODBC DSN existente.
Mode=cMode
Especifica uno de los siguientes modos: Read (leer), ReadWrite (leer y escribir), Share Deny None (no compartir - predeterminado), Share Deny Read (no compartir lectura), Share Deny Write (no compartir escritura), o Share Exclusive (Exclusivo), el cual incluye los dos últimos modos.

Para una completa explicación de la sintáxis de una instrucción de conexión, vea Microsoft OLE DB 2.5 Programmer's Reference and SDK Guide.

Actualización de Datos en Visual FoxPro

Se pueden actualizar los Datos en Visual FoxPro a través del Proveedor OLE DB de Visual FoxPro, usando ADO. El siguiente procedimiento describe tres formas para actualizar datos de Visual FoxPro usando los datos de la tabla de ejemplo, NorthWind.dbc.

Nota Asegúrese de reemplazar NorthWind.dbc con la base de datos que se desea usar.

Para actualizar datos de Visual FoxPro a través del Proveedor OLE DB de Visual FoxPro, usando ADO

  • Llamar directamente un comando para actualizar, insertar, o borrar.

    Para usar un comando que actualice, use el método de ADO Execute. Por ejemplo:

    CLEAR
LOCAL oConn as "adodb.connection"
LOCAL oRS as "adodb.recordset"
oConn = CREATEOBJECT('adodb.connection')
oRS = CREATEOBJECT('adodb.recordset')
cConnStrng = ;
"Provider=vfpoledb;Data Source="+HOME(2)+"northwind\northwind.dbc"
oConn.Open(cConnStrng)
oConn.BeginTrans()
oConn.Execute("UPDATE Customers SET contactname = 'Patricio X. Simpson';
WHERE customerid='CACTU'")
oRS = oConn.Execute("SELECT * FROM customers WHERE customerid = 'CACTU'")
?oRS.Fields("contactname").Value
oConn.RollbackTrans()
oRS.Requery()
?oRS.Fields('contactname').Value
oRS.Close()
oConn.Close()

    -o-

  • Use un cursor cliente.

    Por ejemplo:

    CLEAR
LOCAL oConn as "adodb.connection"
LOCAL oRS as "adodb.recordset"
oConn = CREATEOBJECT('adodb.connection')
oRS = CREATEOBJECT('adodb.recordset')
cConnStrng = ;
"Provider=vfpoledb;Data Source="+HOME(2)+"northwind\northwind.dbc"
oConn.CursorLocation= 3            && adUseClient
oConn.Open(cConnStrng)
*!* Open RecordSet using keyset cursor and optimistic locking.
oRS.Open(;
"SELECT * FROM customers WHERE customerid = 'CACTU'",oConn,1,3,1)
? 'Current value:',oRS.Fields("contactname").Value
oRS.Fields("contactname").Value = "Patricio X. Simpson"
oRS.Update()
oRS.Requery()
? 'New value:',oRS.Fields("contactname").Value
oRS.Close()
oConn.Close()

    -o-

  • Usando un cursor servidor.

    Por ejemplo:

    LOCAL oRS as "adodb.recordset"
oConn = CREATEOBJECT('adodb.connection')
oRS = CREATEOBJECT('adodb.recordset')
cConnStrng = ;
"Provider=vfpoledb;Data Source="+HOME(2)+"northwind\northwind.dbc"
oConn.Open(cConnStrng)
*!* Updatable server cursors must use the USE <table name> command to
*!* open the table, not a SELECT statement. Server cursor is updatable,
*!* opened keyset, and lock optimistic.
oRS.Open("USE customers",oconn,1,3,1)
? 'CursorLocation:',IIF(oRS.CursorLocation2,"adUseServer","adUseClient")
* Find CACTU.
? oRS.Find("customerid='CACTU'")
? 'Current value:',oRS.Fields("contactname").Value
oRS.Fields("contactname").Value = "Patricio Simpson"
oRS.Update()
oRS.Requery()
oRS.Find("customerid='CACTU'")
? 'New value:',oRS.Fields("contactname").Value
oRs.Close()
oRS =''
oConn.Close()oConn=''

Acceso a Datos de Visual FoxPro desde Otros Lenguajes

Se puede tener acceso al Proveedor OLE DB de Visual FoxPro desde otros lenguajes usando instrucciones de conexión, que dependerán del lenguaje a usar. Por ejemplo, para conectar una base de datos de Visual FoxPro desde una aplicación en Visual C#, se puede usar la siguiente instrucción de conexión, reemplazando myVFPDatabase con el apropiado Nombre de Oríden de Datos:

oleDbConnection1.ConnectionString = "Provider=VFPOLEDB.1;" +
"Data Source=C:\\myVFPDatabase.DBC;";

El siguiente código ilustra como se usa la instrucción de conexión que especifíca al Proveedor OLE DB de Visual FoxPro y el Orígen de Datos cuando se tiene acceso a datos de Visual FoxPro desde otros lenguajes.

Nota Asegúrese de reemplazar myVFPDatabase con el nombre apropiado de datos de origen o DSN.

Para tener acceso a datos de Visual FoxPro en Visual C#

  • Use la instrucción de conexión para especificar el Proveedor OLE DB de Visual FoxPro OLE DB y el acceso al origen de datos como se muestra en el código siguiente:
    OleDbConnection oleDbConnection1 = new   OleDbConnection("Provider=VFPOLEDB.1;"+
"Data Source=C:\\myVFPDatabase.DBC;");
oleDbConnection1.Open();
OleDbConnection oleDbConnection1 = new OleDbConnection();
oleDbConnection1.ConnectionString = "Provider=VFPOLEDB.1;" +
"Data Source=C:\\myVFPDatabase.DBC;";
oleDbConnection1.Open();

Para tener acceso a datos de Visual FoxPro en Visual Basic

  • Use la instrucción de conexión para especficicar el Proveedor OLE DB de Visual FoxPro OLE DB y el Orígen de Datos como se muestra en el código siguiente, donde oConnection representa una conexión al objeto ADO:
    oConnection.Open("Provider=vfpoledb.1;
Data Source=.\myVFPDatabase.dbc")

Para tener acceso a datos de Visual FoxPro usando Objetos de Datos ActiveX (ADO) en Visual Basic .NET

  • Use la instrucción de conexión para especificar el Proveedor OLE DB de Visual FoxPro y el Orígen de Datos como se muestra en el siguiente código:
    Imports System.Data.OleDb
Public Class ConnectToVFP
Public Function ADONETOpenVFPDatabase() As Boolean
Dim bIsConnected As Boolean = True
Try
Dim cnn As New OleDbConnection("Provider=VFPOLEDB.1;" + _
"Data Source=.\MyTestDatabase.dbc;")
cnn.Open()
Catch e As System.Exception
bIsConnected = False
End Try
Return bIsConnected
End Function
End Class
    Nota Asegúrese de reemplazar MyTestDatabase con el nombre de la base de datos o el directorio de tablas que se desee tener acceso.

Para tener acceso a datos de Visual FoxPro en Visual C++

  • Ajuste las propiedades de la base de datos especificando la matriz DBSetProp, la matriz DBProp, y el puntero IDBProperties, seguido de una instrucción de conexión que especifique el Proveedor OLE DB de Visual FoxPro, tal como se muestra en el siguiente código:
    HRESULT hr;
CLSID clsid;
// Set the DBProp array.
DBPROP iProp[1];
DBPROPSET rgIP;
IDBProperties* pIDBProperties = NULL;
IDBInitialize *pIDBInitialize = NULL;
VariantInit(&iProp[0].vValue);
iProp[0].dwOptions = DBPROPOPTIONS_OPTIONAL;    // Required
iProp[0].colid = DB_NULLID;
// Set the location of data source.
iProp[0].dwPropertyID = DBPROP_INIT_DATASOURCE;
iProp[0].vValue.vt = VT_BSTR;
iProp[0].vValue.bstrVal = L"c:\myVFPDatabase.dbc"; // Data source
// Set DBpropset to point to the DBPROP array.
rgIP.guidPropertySet = DBPROPSET_DBINIT;
rgIP.cProperties = 1;
rgIP.rgProperties = iProp;
::CoInitialize(NULL);
hr = CLSIDFromProgID(L"vfpoledb.1",&clsid); // Specify OLE DB Provider.
hr = CoCreateInstance(clsid,
NULL,
CLSCTX_INPROC_SERVER,
IID_IDBInitialize,
(void**)&pIDBInitialize);
// Initialize.
hr = piDBInitialize->QueryInterface(_uuidof(IDBProperties), (void**)&pIDBProperties);
hr = pIDBProperties->SetProperties(1 , &rgIP) ;
hr = pIDBProperties->Release();
hr = pIDBInitialize->Initialize();

Para tener acceso a datos de Visual FoxPro en ASP usando Objetos de Datos ActiveX (ADO)

  1. Crear un página ASP con los apropiados índices HTML.
  2. Para establecer la conexión y ejecutar comandos usando ADO, añada código de Visual Basic Scripting Language (VBScript):
    <%
Set conn = Server.CreateObject("ADODB.Connection")
conn.ConnectionString="Provider=VFPOLEDB.1;
Data Source=myVFPDatabase.dbc"
conn.Open
sql = "select * from tableName"
Set rsArrival = conn.Execute(sql)
%>
    Nota Asegúrese de reemplazar tableName con el nombre de la tabla deseada.

Para tener acceso a datos de Visual FoxPro en JScript

  • Use una instrucción de conexión para especificar el Proveedor OLE DB de Visual FoxPro y el origen de datos como se muestra en el siguiente código:
    var vbOKCancel = 0;
var vbInformation = 64;
var vbCancel = 2;
var L_Welcome_MsgBox_Message_Text = "This script demonstrates how to access VFP OLE DB Provider using the Windows Scripting Host.";
var L_Welcome_MsgBox_Title_Text = "VFP OLE DB Provider JScript Sample";
var sBuffer = "";
var sConnString = "Provider=vfpoledb.1;Data Source=myVFPDatabase.dbc";
var oConn = new ActiveXObject("ADODB.Connection");
var oRS = new ActiveXObject("ADODB.Recordset");
oConn.Open(sConnString);
oRS.Open("select * from tableName where fieldName1='fieldValue'",oConn,3,3);
// Get tableName.fieldName2
sBuffer = oRS.Fields('fieldName2').value;
var WSHShell = WScript.CreateObject("WScript.Shell");
var intDoIt;
intDoIt =  WSHShell.Popup(sBuffer,
0,
L_Welcome_MsgBox_Title_Text,
vbOKCancel );
if (intDoIt == vbOKCancel) {
oRS.Close();
oConn.Close();
WScript.Quit();
}
    Nota Asegúrese de reemplazar myVFPDatabase, tableName, fieldName1, fieldName2, y fieldValue con los valores apropiados. Deberá usar el carácter de secuencia de escape backslash (\) para incluir el carácter barra invertida en la ruta del archivo, por ejemplo, "c:\\MyFolder\\MyVFP.dbc".

Vea También

Acceder a datos de Visual FoxPro utilizando el proveedor OLE DB | Proveedor OLE DB de Visual FoxPro | Acceder a datos de Visual FoxPro desde Microsoft Office XP | Referencia del lenguaje para desarrollo OLE DB

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico".


Acceso a un origen de datos de Visual FoxPro desde componentes de Microsoft Office XP

Se puede tener acceso al contenido de bases de datos y tablas de Visual FoxPro en aplicaciones Microsoft Office XP, como Microsoft Excel o Microsoft Word, mediante el proveedor de OLE DB de Visual FoxPro.

Nota Puede importar datos de Visual FoxPro a Microsoft Excel o Microsoft Word desde el proveedor OLE DB de Visual FoxPro sólo en Office XP.

Conectarse a una base de datos o tabla de Visual FoxPro desde Excel

  1. Abrir una hoja de Excel.
  2. Desde el menú Datos, seleccione Obtener Datos Externos, y haga clic en Importar Datos.
  3. En el cuadro de diálogo Seleccionar archivos de origen de datos, haga clic en Conectar con nuevo origen de datos.
  4. En el Asistente para la conexión de datos, seleccione Otro o avanzado.
  5. En la ficha Proveedor, elija el Proveedor OLE DB de Microsoft Visual FoxPro.

Aparecerá la ficha de conexión con el cuadro de dialogo Propiedades de enlace a datos.

Conectarse a una base de datos o tabla de Visual FoxPro desde Word

  1. Abrir un documento de Word.
  2. Desde el menú Ver, seleccione Barras de herramientas, y haga clic en Base de datos.
  3. En la barra de herramientas Base de datos, haga clic en el icono Insertar base de datos.
  4. En el cuadro de diálogo Base de datos, presione el botón Obtener Datos.
  5. En el cuadro de diálogo Seleccionar archivos de origen de datos, haga clic en Conectar con nuevo origen de datos.
  6. En el Asistente para la conexión de datos, seleccione Otro o avanzado.
  7. En la ficha Proveedor, elija el Proveedor OLE DB de Microsoft Visual FoxPro.

Aparecerá la ficha de conexión con el cuadro de dialogo Propiedades de enlace a datos.

Agregar una carpeta con una base de datos o tabla de Visual FoxPro

  1. En el cuadro Seleccione o ingrese el nombre de la base de datos de la ficha conexión, escriba la ruta y el nombre de la carpeta con la base de datos o tabla que necesite.

    -o-

    Utilice la ventana Examinar para ubicar una carpeta con la base de datos o tabla, haciendo clic sobre el botón puntos suspensivos (...) a la derecha del cuadro de texto Seleccione o ingrese el nombre de la base de datos.

  2. Especifique un criterio de orden diferente si lo desea.
  3. Para verificar la conexión, haga clic en Comprobar conexión. Si se establece exitosamente, haga clic en OK.

Vea también

Acceder a datos de Visual FoxPro utilizando el proveedor OLE DB | Proveedor OLE DB de Visual FoxPro | Acceder a datos de Visual FoxPro desde Visual Studio .NET | Referencia del lenguaje para desarrollo OLE DB

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Mejorar aplicaciones utilizando tecnología de paso a través de SQL (SPT)

Tanto si ha creado un prototipo de trabajo local y ha realizado un conversión del mismo, como si ha desarrollado la aplicación para datos remotos con vistas remotas, tendrá acceso a los grandes almacenes de datos disponibles normalmente en una base de datos de servidor. Además, puede aprovechar las posibilidades de procesamiento de transacciones y de seguridad del servidor remoto. Mientras las vistas remotas controlan las tareas principales de administración de datos, puede mejorar la aplicación mediante la tecnología de paso a través de SQL (SQL pass-through, SPT) para crear objetos en el servidor, ejecutar procedimientos almacenados del servidor y ejecutar comandos con la sintaxis nativa de servidor.

Los siguientes temas tratan técnicas para implementar la tecnología cliente-servidor en una aplicación que utiliza vistas remotas.

En esta sección

Configurar un origen de datos ODBC
Describe cómo instalar un controlador ODBC y establecer un origen de datos ODBC, para que pueda crear vistas remotas o utilizar tecnología de paso a través de SQL.
Utilizar la tecnología de paso a través de SQL
Describe cómo las vistas remotas proporcionan el método más común y fácil para acceder y actualizar datos remotos. El Asistente para conversión puede crear automáticamente vistas remotas en su base de datos como parte de la conversión, o puede usar Microsoft Visual FoxPro para crear vistas remotas después de la conversión.
Trabajar con datos remotos mediante la tecnología de paso a través de SQL
Explica que después de recuperar un conjunto resultante utilizando paso a través de SQL, puede ver y controlar las propiedades de su cursor o conjunto resultante utilizando las funciones CURSORGETPROP( ) y CURSORSETPROP( ) de Microsoft Visual FoxPro.
Administrar errores de paso a través de SQL
Explica que si una función de paso a través de SQL devuelve un error, Microsoft Visual FoxPro almacenará el mensaje de error en una matriz.

Secciones relacionadas

Uso de Visual FoxPro
Describe las características de programación de Visual FoxPro diseñadas para mejorar la productividad del programador, incluidos los métodos Access y Assign, la compatibilidad con más formatos de archivos gráficos y lenguaje para simplificar las tareas de programación.
Desarrollar aplicaciones Visual FoxPro
Esta sección incluye información conceptual acerca de cómo desarrollar aplicaciones Visual FoxPro, instrucciones para crear bases de datos y la interfaz de usuario y otras tareas necesarias para crear aplicaciones Visual FoxPro.
Planificar aplicaciones
Discute cómo un cuidadoso diseño ahorra tiempo, esfuerzo y dinero, además muchas de las decisiones que tome durante la etapa de diseño impactarán en la forma en que cree los elementos de su aplicación.
Crear una aplicación
Discute cómo crear una aplicación Visual FoxPro, incluye una o más bases de datos, un programa principal que establece el entorno de sistema de su aplicación y una interfaz de usuario que involucra formularios, barras de herramientas y menús.
Crear Servicios Web y Componentes
Explica cómo puede extender su aplicación Visual FoxPro para permitirle trabajar con varios usuarios, tomar ventaja de controles Microsoft ActiveX y aplicaciones habilitadas para automatización.
Trabajar con datos
Informa cómo crear aplicaciones efectivas con índices, tablas y bases de datos basadas en sus necesidades de datos.
Trabajar con proyectos
Definir una configuración de proyecto y un grupo de archivos que producen un programa o archivos o archivos binarios finales.
Crear Ayuda
Puede incluir archivos de Ayuda en su aplicación con el fin de proporcionar información valiosa para los usuarios de su aplicación.
Compilar una aplicación
Explica cómo utilizar la aproximación modular para verificar la funcionalidad de cada componente que cree y luego compilarlos en una aplicación, la cual ensambla en un ejecutable los componentes de su proyecto.
Probar y depurar aplicaciones
Describe las herramientas de depuración de Visual FoxPro que le ayudan a encontrar y corregir cualquier error que haya descubierto en sus aplicaciones.
Distribuir aplicaciones
Para distribuir sus aplicaciones debe incluir todos los archivos necesarios y crear discos de distribución después que haya completado el desarrollo y prueba de su aplicación.


Configurar un origen de datos ODBC

Antes de que pueda crear vistas remotas o usar un paso a través de SQL, tiene que instalar un controlador ODBC y configurar el origen de datos ODBC.

Elegir un controlador ODBC

Para instalar los controladores ODBC para estos tipos de datos, use el programa de instalación de Visual FoxPro. Si elige la opción de instalación Completa, se instalan todos los controladores.

Cuando haya elegido un controlador, puede usar el origen de datos predeterminado o agregar un origen de datos ODBC.

Para agregar un origen de datos ODBC

  1. Elija el icono Herramientas administrativas en el Panel de control de Windows.
  2. Elija el acceso directo Orígenes de datos ODBC.
  3. En el cuadro de diálogo Administrador de orígenes de datos ODBC, haga clic en Agregar y, a continuación, seleccione el controlador que desee en la lista Controladores ODBC instalados y elija Aceptar.
  4. En el cuadro de diálogo Configuración de ODBC, establezca los valores de las opciones conforme sea necesario y elija Aceptar.

Para obtener información acerca de cómo configurar un origen de datos específico del controlador elegido, elija el botón Ayuda en el cuadro de diálogo Configuración de ODBC.

Instalar orígenes de datos ODBC

Puede obtener soporte para Conectividad abierta de bases de datos (ODBC) si elige la opción de instalación Completa o Personalizada. Con ODBC, puede tener acceso a un origen de datos SQL Server desde Visual FoxPro; sin embargo, antes de tener acceso al origen de datos, deberá definirlo.

Conexión de Visual FoxPro con los orígenes de datos ODBC

Para definir un origen de datos

  1. Cambie al Panel de control de Windows y elija el icono ODBC.
  2. En el cuadro de diálogo Orígenes de datos, elija Agregar.
  3. En el cuadro de diálogo Agregar origen de datos, seleccione el controlador ODBC SQL Server y elija Aceptar.
  4. En el cuadro de diálogo Instalación de ODBC SQL Server, escriba el nombre, la descripción y cualquier otra información del origen de datos y, a continuación, elija Aceptar.
  5. En el cuadro de diálogo Orígenes de datos, elija Cerrar.

Vea también

Instalar Visual FoxPro | Actualizar desde versiones anteriores


Utilizar la tecnología de paso a través de SQL

Su aplicación cliente-servidor puede tener acceso a datos del servidor mediante:

  • Vistas remotas
  • Paso a través de SQL

Las vistas remotas proporcionan el método más común y más fácil para tener acceso a datos remotos y actualizarlos. Los asistentes para conversión pueden crear automáticamente vistas remotas en la base de datos como parte del conversión, o puede usar Visual FoxPro para crear vistas remotas después de hacer la conversión. Para obtener más información acerca de las vistas remotas, vea Crear vistas.

La tecnología de paso a través de SQL le permite enviar instrucciones SQL directamente a un servidor. Las instrucciones de paso a través de SQL, como se ejecutan en el servidor backend, son formas eficaces de mejorar el rendimiento de las aplicaciones cliente-servidor. La tabla siguiente compara las vistas remotas con el paso a través de SQL:

Comparación de las tecnologías de vista remota y paso a través de SQL

Vista remota | Paso a través de SQL
Se basa en una instrucción SQL SELECT. | Se basa en cualquier instrucción nativa de SQL Server, que permiten instrucciones de definición de datos o la ejecución de procedimientos almacenados del servidor.
Se puede usar como origen de datos para controles en tiempo de diseño. | No se puede usar como origen de datos para controles.
No ofrece la posibilidad de ejecutar comandos DDL sobre el origen de datos. | Proporciona un método para usar comandos DDL sobre el origen de datos.
Busca un conjunto de resultados. | Busca uno o varios conjuntos de resultados.
Proporciona administración de conexiones incorporadas. | Requiere administración de conexiones explícita.
Proporciona información de actualización predeterminada incorporada para actualizar, insertar y eliminar. | No proporciona información de actualización predeterminada.
Proporciona ejecución SQL implícita y búsqueda de datos. | Proporciona ejecución SQL explícita y control de búsqueda de resultados.
No proporciona control de transacciones. | Proporciona control de transacciones explícito.
Almacena propiedades de forma persistente en bases de datos. | Proporciona propiedades temporales para cursor de paso a través de SQL, sobre la base de propiedades de sesiones.
Utiliza búsqueda progresiva asíncrona al ejecutar SQL. | Es compatible con búsqueda asíncrona a través de programa.

La tecnología de paso a través de SQL ofrece las siguientes ventajas frente a las vistas remotas:

  • Puede usar funcionalidad específica de servidor, como procedimientos almacenados y funciones intrínsecas basadas en servidor.
  • Puede usar extensiones a SQL admitidas por el servidor, así como definición de datos, administración de servidor y comandos de seguridad.
  • Tiene más control sobre instrucciones Update, Delete e Insert de paso a través de SQL.
  • Tiene más control sobre transacciones remotas.
    Sugerencia Visual FoxPro puede controlar consultas de paso a través de SQL que devuelven más de un conjunto de resultados.

Las consultas de paso a través de SQL también tienen desventajas:

  • De forma predeterminada, una consulta de paso a través de SQL siempre devuelve una instantánea no actualizable de datos remotos, que se almacena en un cursor de vista activo. Puede convertir el cursor en actualizable al definir propiedades con la función CURSORSETPROP( ). En cambio, una vista remota actualizable normalmente no requiere que establezca propiedades para poder actualizar datos remotos, porque los valores de las propiedades se almacenan en la base de datos con la definición de la vista.
  • Tiene que escribir comandos SQL directamente en la ventana Comandos o en un programa, en lugar de usar el Diseñador de vistas gráfico.
  • Es usted quién crea y administra la conexión al origen de datos.

Si usa vistas remotas o paso a través de SQL, puede consultar y actualizar datos remotos. En muchas aplicaciones utilizará tanto vistas remotas como paso a través de SQL.

Usar funciones de paso a través de SQL

Para usar el paso a través de SQL para conectarse a un origen de datos ODBC remoto, debe llamar en primer lugar a la función SQLCONNECT( ) de Visual FoxPro para crear una conexión. Una vez hecho esto, use las funciones de paso a través de SQL para enviar comandos al origen de datos remoto para su ejecución.

Para usar funciones de paso a través de SQL de Visual FoxPro

  1. Confirme que el sistema puede conectar su equipo al origen de datos. Use una utilidad como ODBC Test para ODBC.
  2. Establezca una conexión al origen de datos mediante las funciones SQLCONNECT( ) o SQLSTRINGCONNECT( ).

    Por ejemplo, si está conectando Visual FoxPro al origen de datos de SQL Server sqlremote, puede iniciar una sesión con el siguiente comando:

    nConnectionHandle = SQLCONNECT('sqlremote','<userid>','<password>')
    Nota También puede usar la función SQLCONNECT( ) para conectarse a una conexión con nombre.
  3. Use funciones de paso a través de SQL de Visual FoxPro para obtener datos en cursores de Visual FoxPro y procesar la obtención de datos con comandos y funciones estándar de Visual FoxPro.

    Por ejemplo, puede consultar a la tabla authors y examinar el cursor resultante usando este comando:

    ? SQLEXEC(nConnectionHandle,"select * from authors","mycursorname")
BROWSE
  4. Desconéctese del origen de datos con la función SQLDISCONNECT( ).

Funciones de paso a través de SQL de Visual FoxPro

La siguiente tabla muestra las funciones SQL de Visual FoxPro que admiten el trabajo con orígenes de datos remotos, agrupados según la tarea.

Tarea | Función | Objetivo
Administración de conexiones | SQLCONNECT( ) | Conectarse a un origen de datos para operaciones de paso a través de SQL.
 | SQLSTRINGCONNECT( ) | Conectarse a un origen de datos con sintaxis de cadena de conexión ODBC.
 | SQLDISCONNECT( ) | Interrumpir una conexión a un origen de datos ODBC, haciendo obsoleto el controlador de conexión especificado.
Control y ejecución de instrucciones SQL | SQLCANCEL( ) | Cancelar una consulta SQL que se ejecuta de forma asíncrona en una conexión activa.
 | SQLEXEC( ) | Ejecutar una consulta de paso a través de SQL en una conexión activa; devuelve el número de conjuntos de resultados generados o 0 si SQLEXEC( ) se sigue ejecutando (procesamiento asíncrono).
 | SQLMORERESULTS( ) | Colocar otro conjunto de resultados en un cursor. Devuelve 0 si la instrucción que crea el conjunto de resultados se sigue ejecutando.
 | SQLPREPARE( ) | Precompilar la instrucción SQL en el origen de datos y vincular los parámetros de Visual FoxPro, es decir, guardar las expresiones de parámetros reales para todos los parámetros de la instrucción SQL.
 | SQLCOMMIT( ) | Solicitar una confirmación de transacción.
 | SQLROLLBACK( ) | Solicitar que se deshaga una transacción.
Información de origen de datos | SQLCOLUMNS( ) | Almacenar una lista de nombres de columnas e información acerca de cada una en un cursor. Devuelve 1 si la función tiene éxito o 0 si la función se sigue ejecutando.
 | SQLTABLES( ) | Almacenar los nombres de tablas del origen en un cursor. Devuelve 1 si la función tiene éxito o 0 si la función se sigue ejecutando.
Control variado | SQLGETPROP( ) | Obtener una propiedad de conexión de una conexión activa.
 | SQLSETPROP( ) | Establecer una propiedad de una conexión activa.

Las instrucciones SQLEXEC( ), SQLMORERESULTS( ), SQLTABLES( ) y SQLCOLUMNS( ) se pueden cancelar en modo síncrono al presionar ESC si SET ESCAPE está activado. Puede cancelar estas instrucciones en cualquier momento en modo asíncrono si ejecuta SQLCANCEL( ). Todas las demás instrucciones de paso a través de SQL funcionan de forma síncrona y no se pueden interrumpir.

Crear conjuntos de resultados

Cuando usa las funciones de paso a través de SQL SQLEXEC( ) o SQLMORERESULTS( ) para consultar datos, Visual FoxPro le devuelve los datos en uno o muchos conjuntos de resultados. Los conjuntos de resultados se originan a partir de cursores del origen de datos del servidor y se convierten en cursores de Visual FoxPro. El nombre predeterminado para un conjunto de resultados es SQLRESULT.

Vea también

Mejorar aplicaciones utilizando tecnología de paso a través de SQL (SPT) | Acceder a procedimientos almacenados en servidor con funciones de paso a través de SQL | Devolver múltiples conjuntos de resultados | Procesar múltiples conjuntos de resultados | Diseñar aplicaciones cliente /servidor | Convertir las bases de datos de Visual FoxPro | Crear vistas

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Acceso a procedimientos almacenados en servidor con funciones de paso a través de SQL

Puede usar la tecnología de paso a través de SQL de Visual FoxPro para crear y ejecutar procedimientos almacenados en un servidor remoto. Los procedimientos almacenados pueden mejorar en gran medida la potencia, eficacia y flexibilidad de SQL y mejorar mucho el rendimiento de lotes e instrucciones SQL. Muchos servidores proporcionan procedimientos almacenados para definir y manipular objetos de base de datos de servidor y para realizar administración de sistemas servidor y de usuarios.

Nota Los ejemplos de esta sección usan la sintaxis de Microsoft SQL Server, a no ser que se indique lo contrario.

Para llamar a un procedimiento almacenado en servidor

  • Use la función SQLEXEC( ) con el nombre del procedimiento almacenado.

Por ejemplo, el código siguiente muestra el resultado de llamar a un procedimiento almacenado llamado sp_who en SQL Server mediante una conexión activa al origen de datos sqlremote:

nConnectionHandle = SQLCONNECT('sqlremote')
? SQLEXEC(nConnectionHandle, 'use pubs')
? SQLEXEC(nConnectionHandle, 'sp_who')
BROWSE

Para obtener más información acerca de la creación y ejecución de procedimientos almacenados en servidor, vea la documentación del servidor.

Vea también

Utilizar la tecnología de paso a través de SQL | Devolver múltiples conjuntos de resultados | Mejorar aplicaciones utilizando tecnología de paso a través de SQL (SPT) | Diseñar aplicaciones cliente /servidor | Convertir las bases de datos de Visual FoxPro | Crear vistas


Devolver múltiples conjuntos de resultados

Si ejecuta un procedimiento almacenado que contiene instrucciones SELECT con sintaxis nativa de servidor, cada conjunto de resultados se devuelve en un cursor de Visual FoxPro distinto. Puede usar estos cursores para devolver valores o parámetros de un procedimiento almacenado de servidor al cliente de Visual FoxPro.

Para devolver múltiples conjuntos de resultados

  • Use la función SQLEXEC( ) para seleccionar múltiples conjuntos de resultados usando su sintaxis nativa de servidor.

Por ejemplo, el código siguiente crea y ejecuta un procedimiento almacenado de servidor SQL, my_procedure, que devuelve tres cursores de Visual FoxPro: sqlresult, sqlresult1 y sqlresult2:

=SQLEXEC(nConnectionHandle,'create procedure my_procedure as ;
select * from sales; select * from authors;
select * from titles')
=SQLEXEC(nConnectionHandle,'execute my_procedure')

Cómo procesa el servidor conjuntos de resultados y errores

Como el servidor compila cada procedimiento almacenado cuando lo crea, el usuario recibe los errores de sintaxis del servidor durante la creación. Cuando ejecute el procedimiento almacenado, el servidor ejecutará secuencialmente las instrucciones SQL compiladas (como en un programa de Visual FoxPro) y Visual FoxPro busca cada conjunto de resultados de cada instrucción SQL en el procedimiento almacenado de forma independiente, en el orden en que se ejecutan.

Los conjuntos de resultados y los errores se devuelven en el orden de recepción y el procesamiento se detiene si se encuentra un error. Por ejemplo, si ocurre un error en tiempo de ejecución cuando el servidor ejecuta la tercera instrucción de un procedimiento almacenado de cuatro instrucciones, recibirá los dos primeros conjuntos de resultados y, a continuación, recibirá el error que ocurrió al procesar el tercer conjunto de resultados. El procesamiento se detiene cuando se devuelve el error; el cuarto conjunto de resultados no se obtiene. Puede usar la función AERROR( ) para obtener información acerca del error más reciente.

Nota Sólo puede ejecutar procedimientos almacenados de servidor desde Visual FoxPro mediante las funciones de paso a través de SQL de Visual FoxPro. Las vistas no admiten procedimientos almacenados de servidor, porque cada vista contiene una instrucción SQL SELECT explícita en su definición SQL.

Transferir una instrucción SQL al origen de datos

La función SQLEXEC( ) le permite enviar una instrucción SQL al origen de datos sin interpretación. En el caso más sencillo, cualquier cadena que escriba en el segundo parámetro de la función SQLEXEC( ) se pasa al origen de datos sin interpretación. Esto le permite ejecutar cualquier instrucción mediante el SQL nativo del origen de datos.

También puede usar la función SQLEXEC( ) para crear una consulta parametrizada o pasar extensiones ODBC a SQL al origen de datos.

Vea también

Acceder a procedimientos almacenados en servidor con funciones de paso a través de SQL | Crear una consulta parametrizada | Utilizar la tecnología de paso a través de SQL | Mejorar aplicaciones utilizando tecnología de paso a través de SQL (SPT) | Diseñar aplicaciones cliente /servidor | Convertir las bases de datos de Visual FoxPro | Crear vistas


Crear una consulta parametrizada

Así como puede crear vistas parametrizadas mediante el Diseñador de vistas o el lenguaje, también puede crear una consulta de paso a través de SQL parametrizada.

Para crear una consulta parametrizada con paso a través de SQL

  • Coloque un signo de cierre de interrogación (?) antes de un parámetro de Visual FoxPro y, a continuación, incluya el parámetro en una cadena SQL que envíe con SQLEXEC( ).

El parámetro que suministre se evalúa como una expresión de Visual FoxPro y el valor se envía como parte de la instrucción SQL de la vista. Si hay errores en la evaluación, Visual FoxPro le pide el valor del parámetro.

Por ejemplo, si tiene la tabla customer de la base de datos Testdata en un servidor remoto, el código siguiente crea una consulta parametrizada que limita la vista a aquellos clientes cuyo país coincida con el valor suministrado para el parámetro ?cCountry:

? SQLEXEC(1,'SELECT * FROM customer WHERE customer.country = ?cCountry')

Si desea pedir al usuario el valor de un parámetro, escriba la expresión de parámetro entre comillas. Para obtener más información acerca de la petición del valor de un parámetro, vea Crear vistas.

El origen de datos ODBC no acepta parámetros en las siguientes ubicaciones:

  • En una lista de tablas o campos SELECT.
  • Como las dos expresiones de un predicado de comparación.
  • Como los dos operandos de un operador binario.

Un origen de datos ODBC no aceptará parámetros en las siguientes ubicaciones en las cláusulas WHERE o HAVING de una instrucción SELECT:

  • Como los operandos primero y segundo de un predicado BETWEEN.
  • Como los operandos primero y tercero de un predicado BETWEEN.
  • Como la expresión y el primer valor de un predicado IN.
  • Como el operando de un operador unario + o -.
  • Como el argumento de una función SET.

Usar parámetros de entrada/salida de SQL Server

Puede usar parámetros de entrada/salida para pasar valores entre Visual FoxPro y SQL Server. Los parámetros de entrada/salida sólo están disponibles mediante paso a través de SQL; no se pueden usar en vistas.

La tabla siguiente proporciona un ejemplo del uso de parámetros de entrada/salida para pasar valores desde Visual FoxPro a un procedimiento almacenado de SQL Server y devolver el resultado a una variable de Visual FoxPro.

Usar parámetros de entrada/salida en un procedimiento almacenado de SQL Server

Código Comentarios
resultCode = SQLExec(connHand,
"CREATE PROCEDURE sp_test;
@mult1 int, @mult2 int, @result int;
OUTPUT AS SELECT
@result = @mult1 * @mult2")
 Crea un procedimiento almacenado, sp_test, que multiplica dos variables (mult1 y mult2) y, a continuación, almacena la cantidad resultante en la variable result.
outParam = 0
 Crea una variable de Visual FoxPro para recibir el valor del parámetro de salida cuando se pasa desde SQL Server a Visual FoxPro.
resultCode = SQLExec(connHand, ;
"{CALL sp_test (2, 4, ?@outParam)}")
 Ejecuta el procedimiento almacenado en SQL Server, pasando los valores ‘2’ y ‘4’ para que se multipliquen en el procedimiento almacenado.
? "outParam =", outParam  && the value is 8
 Muestra el valor del parámetro de salida.

Definir parámetros

La sintaxis para los parámetros de salida es:

?@parameter_name

Cuando implemente parámetros de entrada/salida, defina las variables de Visual FoxPro que desee incluir en su comando de paso a través de SQL antes de usar las variables en la instrucción SQL. Para enviar y recibir correctamente información con parámetros de entrada/salida, debe definir:

  • Un parámetro de procedimiento almacenado, con un tipo de salida, que devuelva un valor.

    Por ejemplo, si el parámetro del procedimiento almacenado es @result, debe asignar un tipo de salida, como int, a @result y debe asignar un valor a @result.

  • Una expresión de parámetro de salida (@parameter_name) que se evalúa a una variable existente de Visual FoxPro.

    Por ejemplo, si la expresión de parámetro de salida es ?@outParam, la aplicación debe tener definida la variable outParam de Visual FoxPro.

    Nota Si no usa un parámetro de salida, en Visual FoxPro o en el procedimiento almacenado, o no define una variable de Visual FoxPro para recibir el valor devuelto, el parámetro de Visual FoxPro no cambiará.

Convertir tipos de datos

Visual FoxPro convierte valores devueltos de variable siguiendo las reglas siguientes:

  • Las variables de tipo de datos de coma flotante (N, F, B) se convierten en N.
  • El tamaño de presentación se establece como 20.
  • La configuración decimal se establece como la actual. La configuración decimal sólo afecta al formato de presentación predeterminado y no afecta a la precisión decimal.
  • Las variables de fecha y hora (D, T) se convierten a variables de hora (T).

No puede usar tipos de datos Memo, General, Picture o NULL en parámetros de entrada/salida.

Si la aplicación usa campos de cursor como parámetros, Visual FoxPro intentará convertir el resultado otra vez al tipo de datos original.

Devolver valores de parámetros

Los parámetros de entrada/salida sólo están disponibles después de que se ha buscado el último conjunto de resultados de una instrucción. Esto significa que los valores de entrada/salida se devuelven a Visual FoxPro sólo después de que:

  • SQLEXEC( ) devuelva (1) en modo de procesamiento por lotes;

    –O bien–

  • SQLMORERESULTS( ) devuelve (2) si no está en modo de procesamiento por lotes.

Si la instrucción SQLEXEC( ) solicita múltiples conjuntos de resultados, los parámetros de salida sólo estarán disponibles con seguridad después de que se haya buscado el último conjunto de resultados en el origen de datos.

Vea también

Devolver múltiples conjuntos de resultados | Utilizar la tecnología de paso a través de SQL | Mejorar aplicaciones utilizando tecnología de paso a través de SQL (SPT) | Diseñar aplicaciones cliente /servidor | Convertir las bases de datos de Visual FoxPro | Crear vistas


Ejecutar extensiones ODBC de SQL

Puede usar SQLEXEC( ) para ejecutar extensiones ODBC de SQL si incluye la instrucción SQL con sintaxis de escape estándar o extendida de grupo de acceso SQL. Para obtener más información acerca de las extensiones ODBC de SQL, vea el apéndice Gramática SQL de la documentación de ODBC.

Crear combinaciones externas mediante cláusula de escape ODBC

Puede usar paso a través de SQL para realizar combinaciones externas en datos remotos con la sintaxis de escape ODBC, si su servidor admite combinaciones externas. Una combinación externa combina información de una o más tablas independientemente de si se han encontrado filas coincidentes.

La sintaxis para combinaciones externas con la cláusula de escape de ODBC es:

{oj outer-join expression}

El ejemplo siguiente crea un conjunto de resultados de los nombres y departamentos de los empleados que trabajan en el proyecto 544:

SELECT employee.name, dept.deptname;
FROM {oj employee LEFT OUTER JOIN dept;
ON employee.deptid = dept.deptid};
WHERE employee.projid = 544

Para obtener más información sobre sintaxis de combinaciones externas y tipos de combinaciones externas, vea la documentación del servidor. Para obtener más información acerca de la creación de conexiones con nombre, vea "Definir una conexión" en Crear vistas.

Vea también

Administrar conexiones con paso a través de SQL | Utilizar la tecnología de paso a través de SQL | Mejorar aplicaciones utilizando tecnología de paso a través de SQL (SPT) | Diseñar aplicaciones cliente /servidor | Convertir las bases de datos de Visual FoxPro | Crear vistas


Administrar conexiones con paso a través de SQL

Cuando se crea una vista remota, debe elegir un nombre de origen de datos ODBC o un nombre de conexión que posteriormente se utiliza como canalización para el servidor remoto, una vez activada la vista. Para tener acceso a datos remotos directamente con paso a través de SQL, es necesario disponer del controlador para una conexión activa. Un controlador es un valor que hace referencia a un objeto; en este caso, el controlador hace referencia a una conexión de origen de datos. Para obtener un controlador, debe solicitar una conexión con el origen de datos utilizando la función SQLCONNECT( ) o SQLSTRINGCONNECT( ). Si la conexión se realiza correctamente, la aplicación recibirá un controlador de conexión para su uso en llamadas posteriores de Visual FoxPro.

La aplicación puede solicitar múltiples conexiones para un origen de datos. También puede trabajar con múltiples orígenes de datos ODBC solicitando una conexión con cada origen de datos al que desea tener acceso. Si desea reducir el número de conexiones utilizadas, puede configurar vistas remotas para compartir la misma conexión. Puede desconectarse de un origen de datos mediante la función SQLDISCONNECT( ).

Sugerencia Visual FoxPro se basa en la definición del origen de datos ODBC almacenada en Windows para conectarse a un origen de datos. Si cambia el nombre de la información de inicio de sesión para un origen de datos, tenga presente que estos cambios pueden influir en que una aplicación que utilice ese origen de datos pueda conectarse o no al servidor remoto deseado.

Controlar propiedades de entorno y de conexión

El entorno cliente-servidor se establece cada vez que se abre Visual FoxPro. El entorno existe para esa sesión y desaparece al cerrar Visual FoxPro. El entorno cliente-servidor contiene:

  • Propiedades globales que actúan como prototipos para las nuevas conexiones.
  • Valores de error para los errores que ocurren fuera de una conexión especificada.

Puede utilizar un controlador 0, el controlador de entorno, para hacer referencia a la configuración de propiedades globales. La función SQLSETPROP( ) sirve para controlar la configuración predeterminada de las propiedades y el entorno de conexión en las conexiones individuales. Los métodos empleados para introducir valores SQLSETPROP( ) son coherentes con el entorno y las conexiones individuales:

  • Las propiedades especificadas con uno de los dos valores pueden emplear un valor lógico (.F. o .T.) para eExpression.
  • Los nombres de propiedad se pueden abreviar hasta la forma más breve que no dé lugar a ambigüedades. Por ejemplo, puede utilizar "Asynchronous", "Asynch" o "A" para especificar la propiedad Asynchronous. En los nombres de propiedades no se distingue entre mayúsculas y minúsculas.

Cuando se inicia una conexión, ésta hereda valores predeterminados para las propiedades de la conexión. Puede usar SQLSETPROP( ) para modificar estos valores.

Establecer propiedades de conexión

Para ver la configuración actual de las propiedades de una conexión, utilice SQLGETPROP( ) con el controlador de conexión adecuado. La siguiente tabla indica las propiedades de conexión a las que puede tener acceso con SQLGETPROP( ).

Propiedades de conexión de Visual FoxPro

Para | Use esta propiedad | Objetivo
Mostrar la información utilizada para crear la conexión activa | ConnectString | La cadena de conexión de inicio de sesión.
 | DataSource | El nombre del origen de datos, según lo ha definido ODBC.
 | Password | La contraseña de conexión.
 | UserID | La identificación del usuario.
Trabajar con conexiones compartidas | ConnectBusy | Verdadero (.T.) si una conexión compartida está ocupada; falso si no lo está (.F.).
Controlar la apariencia de la interfaz | DispLogin | Controla cuándo se muestra el cuadro de diálogo Inicio de sesión de ODBC.
 | DispWarnings | Controla si se muestran o no los mensajes de error menos graves.
Controlar los intervalos de tiempo | ConnectTimeout | Especifica el tiempo (en segundos) que hay que esperar antes de devolver un error de fin de tiempo de espera para la conexión.
 | IdleTimeout | Especifica el intervalo de tiempo de espera inactivo (en segundos). Las conexiones activas pertinentes se desactivan tras el intervalo de tiempo especificado.1
 | WaitTime | Controla la cantidad de tiempo en milisegundos que transcurre antes de que Visual FoxPro compruebe si la instrucción SQL ha terminado de ejecutarse.
 | QueryTimeout | Controla el tiempo (en segundos) que hay que esperar antes de devolver un error general de fin de tiempo de espera.
Administrar transacciones | Transactions | Determina la forma en que la conexión administra las transacciones en la tabla remota.
Controlar la búsqueda de conjuntos de resultados en los cursores de presentación | Asynchronous | Especifica si los conjuntos de resultados se devuelven de forma síncrona (valor predeterminado) o asíncrona.
 | BatchMode | Especifica si SQLEXEC( ) devuelve todos los conjuntos de resultados a la vez (valor predeterminado), o individualmente con SQLMORERESULTS( ).
 | PacketSize | Especifica el tamaño del paquete de red utilizado por la conexión.
Mostrar controladores ODBC internos | ODBChdbc2 | El controlador interno de conexión ODBC que pueden utilizar los archivos de bibliotecas externas (archivos .fll) para llamar a las funciones de la API de ODBC.
 | ODBChstmt2 | El controlador interno de instrucciones ODBC que pueden utilizar los archivos de bibliotecas externas (archivos .fll) para llamar a las funciones de la API de ODBC.

1. En el modo de transacción manual, la conexión no se desactiva.

2. Si una conexión se desactiva, los valores ODBChdbc y ODBChstmt dejan de ser válidos. No libere estos valores en una biblioteca de usuario.

Para obtener más información acerca de las propiedades de las conexiones y su configuración predeterminada, vea SQLSETPROP( ).

Controlar valores de propiedades de entorno

Los valores que establezca en el entorno Visual FoxPro con el controlador 0 se usarán como prototipos o valores predeterminados para todas las conexiones o los adjuntos posteriores.

Para ver el valor actual de las propiedades de entorno

  • Utilice SQLGETPROP( ) con 0 como valor para el controlador.

El ejemplo siguiente muestra en la pantalla el valor de la propiedad WaitTime del entorno actual:

? SQLGETPROP(0, "WaitTime")

Si establece la propiedad DispWarnings en el valor verdadero (.T.), Visual FoxPro mostrará los errores de entorno a partir de ese punto y también establecerá DispWarnings en verdadero (.T.) para las conexiones recién creadas.

Aunque los valores que establece para el controlador 0 se utilizan como valores prototipo para cada conexión, también puede establecer propiedades personalizadas para una conexión individual si ejecuta SQLSETPROP( ) para ese controlador de conexión. Las excepciones son las propiedades ConnectTimeout, PacketSize y DispLogin, cuya configuración hereda la conexión en el momento de la conexión. Si cambia el valor de las propiedades ConnectTimeout, PacketSize y DispLogin, el nuevo valor no se utilizará hasta que establezca una nueva conexión.

Controlar objetos de conexión y de vista

Puede controlar las conexiones y vistas estableciendo propiedades en el objeto de conexión o de vista. Las propiedades que controlan bases de datos, tablas, campos de tablas, definiciones de vistas, campos de vistas, conexiones con nombre, conexiones activas o cursores de vista activos se llaman propiedades de motor. Puede mostrar o establecer propiedades de motor con una de las siguientes funciones de Visual FoxPro:

Para mostrar propiedades de motor use | Para establecer propiedades de motor use
CURSORGETPROP( ) | CURSORSETPROP( )
DBGETPROP( ) | DBSETPROP( )
SQLGETPROP( ) | SQLSETPROP( )

La función que use depende de si desea establecer propiedades en el objeto 0 (conexión 0 y cursor 0), la definición de objeto de una base de datos (conexión con nombre o definición de vista) o el objeto activo (conexión activa o cursor de vista activo). La tabla siguiente muestra objetos y las funciones que se usan para establecer propiedades de cada objeto:

Para establecer propiedades para | Conexión | Vista
Objeto 0 | SQLSETPROP( ) | CURSORSETPROP( )
Definición de objeto de una base de datos | DBSETPROP( ) | DBSETPROP( )
Objeto activo | SQLSETPROP( ) | CURSORSETPROP( )

Propiedades de motor

La tabla siguiente presenta propiedades de motor ordenadas alfabéticamente con los objetos que usan cada propiedad.

Propiedad de motor | Aplicable a
Asynchronous Definiciones de conexión: vea DBSETPROP( ).
Conexiones activas: vea SQLSETPROP( ).
BatchMode Definiciones de conexión: vea DBSETPROP( ).
Conexiones activas: vea SQLSETPROP( ).
BatchUpdateCount1 Definiciones de vista: vea DBSETPROP( ).
Cursores de vista activos: vea CURSORSETPROP( ).
Almacenamiento en búfer | Cursores de vista activos: vea CURSORSETPROP( ).
Título | Campos de tablas, campos de definiciones de vista: vea DBSETPROP( ).
Comentarios | Bases de datos, tablas, campos de tablas, definiciones de vista, campos de definiciones de vista, definiciones de conexión: vea DBSETPROP( ).
CompareMemo Definiciones de vista: vea DBSETPROP( ).
Cursores de vista activos: vea CURSORSETPROP( ).
ConnectBusy | Conexiones activas: vea SQLGETPROP( ).
ConnectHandle | Cursores de vista activos: vea CURSORGETPROP( ).
ConnectName1 Definiciones de vista: vea DBSETPROP( ).
Conexiones activas: vea SQLGETPROP( ).
Cursores de vista activos: vea CURSORGETPROP( ).
ConnectString Definiciones de conexión: vea DBSETPROP( ).
Conexiones activas: vea SQLGETPROP( ).
ConnectTimeout Definiciones de conexión: vea DBSETPROP( ).
Conexiones activas: vea SQLSETPROP( ).
Base de datos | Cursores de vista activos: vea CURSORGETPROP( ).
DataSource Definiciones de conexión: vea DBSETPROP( ).
Conexiones activas: vea SQLGETPROP( ).
DataType | Campos en definiciones de vista: vea DBSETPROP( ).
DefaultValue | Campos de tablas, campos de definiciones de vista: vea DBSETPROP( ).
DeleteTrigger | Tablas: vea DBGETPROP( ).
DispLogin Definiciones de conexión: vea DBSETPROP( ).
Conexiones activas: vea SQLSETPROP( ).
DispWarnings Definiciones de conexión: vea DBSETPROP( ).
Conexiones activas: vea SQLSETPROP( ).
FetchAsNeeded Definiciones de vista: vea DBSETPROP( ).
Cursores de vista activos: vea CURSORGETPROP( ).
FetchMemo1 Definiciones de vista: vea DBSETPROP( ).
Cursores de vista activos: vea CURSORGETPROP( ).
FetchSize1 Definiciones de vista: vea DBSETPROP( ).
Cursores de vista activos: vea CURSORSETPROP( ).
IdleTimeout Definiciones de conexión: vea DBSETPROP( ).
Conexiones activas: vea SQLSETPROP( ).
InsertTrigger | Tablas: vea DBGETPROP( ).
KeyField | Campos en definiciones de vista: vea DBSETPROP( ).
KeyFieldList2 | Cursores de vista activos: vea CURSORSETPROP( ).
MaxRecords1 Definiciones de vista: vea DBSETPROP( ).
Cursores de vista activos: vea CURSORSETPROP( ).
ODBCHdbc | Conexiones activas: vea SQLGETPROP( ).
ODBCHstmt | Conexiones activas: vea SQLGETPROP( ).
Offline | Definiciones de vista: vea DBGETPROP( ).
PacketSize Definiciones de conexión: vea DBSETPROP( ).
Conexiones activas: vea SQLSETPROP( ).
ParameterList Definiciones de vista: vea DBSETPROP( ).
Cursores de vista activos: vea CURSORSETPROP( ).
Password Definiciones de conexión: vea DBSETPROP( ).
Conexiones activas: vea SQLGETPROP( ).
Path | Tablas: vea DBGETPROP( ).
Prepared | Definiciones de vista: vea DBSETPROP( ).
PrimaryKey | Tablas: vea DBGETPROP( ).
QueryTimeout Definiciones de conexión: vea DBSETPROP( ).
Conexiones activas: vea SQLSETPROP( ).
RuleExpression | Tablas, campos de tablas, definiciones de vista, campos de definiciones de vista: vea DBSETPROP( ).
RuleText | Tablas, campos de tablas, definiciones de vista, campos de definiciones de vista: vea DBSETPROP( ).
SendUpdates2 Definiciones de vista: vea DBSETPROP( ).
Cursores de vista activos: vea CURSORSETPROP( ).
ShareConnection Definiciones de vista: vea DBSETPROP( ).
Cursores de vista activos: vea CURSORGETPROP( ).
SourceName | Cursores de vista activos: vea CURSORGETPROP( ).
SourceType Definiciones de vista: vea DBGETPROP( ).
Cursores de vista activos: vea CURSORGETPROP( ).
SQL Definiciones de vista: vea DBGETPROP( ).
Cursores de vista activos: vea CURSORGETPROP( ).
Tables2 Definiciones de vista: vea DBSETPROP( ).
Cursores de vista activos: vea CURSORSETPROP( ).
Transactions Definiciones de conexión: vea DBSETPROP( ).
Conexiones activas: vea SQLSETPROP( ).
Updatable | Campos en definiciones de vista: vea DBSETPROP( ).
UpdatableFieldList2 | Cursores de vista activos: vea CURSORSETPROP( ).
UpdateName | Campos en definiciones de vista: vea DBSETPROP( ).
UpdateNameList2 | Cursores de vista activos: vea CURSORSETPROP( ).
UpdateTrigger | Tablas: vea DBGETPROP( ).
UpdateType Definiciones de vista: vea DBSETPROP( ).
Cursores de vista activos: vea CURSORSETPROP( ).
UseMemoSize1 Definiciones de vista: vea DBSETPROP( ).
Cursores de vista activos: vea CURSORGETPROP( ).
UserID Definiciones de conexión: vea DBSETPROP( ).
Conexiones activas: vea SQLGETPROP( ).
Version | Bases de datos: vea DBGETPROP( ).
WaitTime Definiciones de conexión: vea DBSETPROP( ).
Conexiones activas: vea SQLSETPROP( ).
WhereType Definiciones de vista: vea DBSETPROP( ).
Cursores de vista activos: vea CURSORSETPROP( ).

1. Propiedad principalmente útil para vistas remotas; el valor no tiene efecto sobre el rendimiento de vistas locales. Puede configurar esta propiedad en vistas locales si desea preestablecer la propiedad en la vista local y, a continuación, hacer un conversión para crear una vista remota.

2. La propiedad se tiene que establecer para que se envíen actualizaciones al origen de datos remoto.

Usar transacciones con datos remotos

Puede utilizar uno de los dos métodos siguientes para ajustar automáticamente las transacciones sobre las actualizaciones, eliminaciones e inserciones de datos remotos:

  • Modo de transacción automático
  • Modo de transacción manual

El modo de transacción que seleccione determina cómo administra Visual FoxPro las transacciones en su equipo local.

Vea también

Ejecutar extensiones ODBC de SQL | Usar el modo de transacción automático | Utilizar la tecnología de paso a través de SQL | Mejorar aplicaciones utilizando tecnología de paso a través de SQL (SPT) | Diseñar aplicaciones cliente /servidor | Convertir las bases de datos de Visual FoxPro | Crear vistas


Usar el modo de transacción automático

De forma predeterminada, Visual FoxPro ajusta automáticamente en una transacción todos los comandos que se pueden incluir en una transacción enviados al servidor remoto. Este control de transacción automática predeterminada se proporciona cuando la propiedad Transactions está establecida en 1 o en DB_TRANSAUTO.

Para usar el modo de transacción automático

  • Utilice la función DBSETPROP( ) para establecer la propiedad Transactions de la conexión en 1 o en DB_TRANSAUTO;

    –O bien–

  • Utilice la función SQLSETPROP( ) para establecer la propiedad Transactions de la conexión activa en 1 o en DB_TRANSAUTO.

El proceso de transacciones para la tabla remota se controla automáticamente.

Nota Los comandos de Visual FoxPro BEGIN TRANSACTION y END TRANSACTION crean una transacción únicamente para el cursor local de Visual FoxPro. No extienden la transacción al servidor remoto.

Vea también

Administrar conexiones con paso a través de SQL | Controlar manualmente las transacciones | Utilizar la tecnología de paso a través de SQL | Mejorar aplicaciones utilizando tecnología de paso a través de SQL (SPT) | Diseñar aplicaciones cliente /servidor | Convertir las bases de datos de Visual FoxPro | Crear vistas


Controlar manualmente las transacciones

Si desea controlar de forma manual las transacciones, puede establecer la propiedad Transactions como 2 o como DB_TRANSMANUAL. Con la administración de transacciones manual, Visual FoxPro inicia automáticamente una transacción cuando se ejecuta la primera instrucción SQL que se puede incluir en transacciones, pero es necesario ejecutar la función SQLCOMMIT( ) o SQLROLLBACK( ) de Visual FoxPro para finalizar la transacción.

Para usar el modo de transacción manual

  • Utilice el comando DBSETPROP( ) para establecer la propiedad Transactions de la conexión como 2 o DB_TRANSMANUAL;

    –O bien–

  • Utilice el comando SQLSETPROP( ) para establecer la propiedad Transactions en la conexión activa como 2 o DB_TRANSMANUAL.

El proceso de transacciones se controla automáticamente mediante SQLCOMMIT( ) y SQLROLLBACK( ).

Tras confirmar o deshacer la transacción previa, Visual FoxPro inicia automáticamente una nueva transacción cuando se ejecuta la siguiente instrucción SQL que puede incluir en transacciones. Para obtener más información sobre las transacciones, consulte Programar para acceso compartido.

Transacciones anidadas

Visual FoxPro admite transacciones anidadas hasta un máximo de cinco niveles. El paso a través de SQL incorpora un solo nivel de anidamiento de transacciones.

Si su servidor admite múltiples niveles de transacciones, puede utilizar la tecnología de paso a través de SQL con el fin de controlar explícitamente los niveles de transacciones. No obstante, la administración explícita de transacciones no es recomendable, ya que puede dificultar el control de la interacción entre la transacción incorporada y la temporización de las transacciones del servidor remoto. Para obtener más información sobre la administración explícita de transacciones, vea la documentación de ODBC.

Vea también

Usar el modo de transacción automático | Trabajar con datos remotos mediante la tecnología de paso a través de SQL | Utilizar la tecnología de paso a través de SQL | Mejorar aplicaciones utilizando tecnología de paso a través de SQL (SPT) | Diseñar aplicaciones cliente /servidor | Convertir las bases de datos de Visual FoxPro | Crear vistas


Seleccionar los métodos adecuados

Puede utilizar vistas remotas, paso a través de SQL o ambos para crear su aplicación cliente-servidor. La combinación de ambos métodos ofrece eficaces resultados: utilice las vistas para la mayoría de los requisitos de administración de datos y emplee el paso a través de SQL para mejorar la eficacia de la aplicación.

Utilizar vistas

Puede utilizar las vistas como método básico para programar una eficaz aplicación cliente-servidor. Las vistas remotas constituyen una tecnología eficaz, diseñada para permitirle seleccionar únicamente los datos que necesita desde un servidor remoto e incluirlos en un cursor local de Visual FoxPro, que puede utilizar posteriormente para ver y actualizar datos remotos. Una vista es, básicamente, un conjunto de resultados de una instrucción SELECT de SQL.

Las vistas son persistentes: la definición de la vista se almacena en una base de datos. Las definiciones de vistas tienen propiedades que usted puede establecer, y personalizar para el cursor de vista activa. Las vistas son la mejor herramienta para la definición de datos de un conjunto de resultados actualizable.

Puede utilizar las vistas locales para generar un prototipo local y, posteriormente, utilizar el Asistente para conversión con el fin de transformar las vistas locales en vistas remotas. Para obtener información acerca del uso del Asistente para conversión, consulte Convertir las bases de datos de Visual FoxPro.

Si los usuarios de la aplicación quieren usar datos para trabajar cuando están de viaje, puede utilizar vistas sin conexión. Las vistas sin conexión hacen que los datos sean portátiles, permitiendo a los usuarios de equipos portátiles trabajar con una copia almacenada de un origen de datos que pueden actualizar mientras están de viaje. Cuando el usuario vuelve a conectarse al servidor, la aplicación puede combinar fácilmente los cambios realizados sin conexión en las tablas de origen.

Es posible que también desee utilizar tecnología de vistas sin conexión para permitir a los usuarios locales trabajar con datos "sin conexión", combinando sus actualizaciones posteriormente. Para obtener información, consulte Crear vistas.

Utilizar paso a través de SQL

La tecnología de paso a través de SQL le proporciona acceso directo a un servidor remoto con las funciones de paso a través de SQL de Visual FoxPro. Estas funciones facilitan un acceso y un control adicionales del servidor que superan las capacidades de las vistas. Por ejemplo, puede efectuar definición de datos en el servidor remoto, establecer propiedades del servidor y tener acceso a procedimientos almacenados en el servidor.

El paso a través de SQL es la mejor herramienta para crear conjuntos de resultados de sólo lectura y para utilizar cualquier otra sintaxis nativa de SQL. A diferencia de las vistas, que son conjuntos de resultados de instrucciones SELECT de SQL, el paso a través de SQL le permite enviar al servidor todo lo que desee mediante la función SQLEXEC( ). La tabla siguiente muestra las funciones de paso a través de SQL de Visual FoxPro.

Funciones de paso a través de SQL

SQLCANCEL( ) | SQLCOLUMNS( ) | SQLCOMMIT( )
SQLCONNECT( ) | SQLDISCONNECT( ) | SQLEXEC( )
SQLGETPROP( ) | SQLMORERESULTS( ) | SQLPREPARE( )
SQLROLLBACK( ) | SQLSETPROP( ) | SQLSTRINGCONNECT( )
SQLTABLES( ) |  |

Puede crear cursores personalmente mediante la tecnología de paso a través de SQL. Si bien el paso a través de SQL proporciona un acceso más directo al servidor, este acceso es menos persistente que el de las vistas. A diferencia de las vistas, cuyas definiciones se almacenan definitivamente en una base de datos, los cursores creados mediante paso a través de SQL solamente existen durante la sesión actual. Para obtener más información, consulte Mejorar aplicaciones utilizando tecnología de paso a través de SQL (SPT).

Combinar vistas y paso a través de SQL

El paradigma más eficaz de la generación de aplicaciones cliente-servidor con Visual FoxPro combina las tecnologías de vistas y de paso a través del SQL. Puesto que las vistas son fáciles de generar y proporcionan capacidades automáticas de almacenamiento en búfer y actualización, se utilizan para la mayoría de las tareas de administración de datos. Posteriormente puede usar el paso a través de SQL para llevar a cabo tareas específicas en el servidor remoto, como la definición de datos y la creación y ejecución de procedimientos almacenados en el servidor.

Vea también

Ubicar los datos en la plataforma óptima | Desarrollo rápido de aplicaciones | Diseñar aplicaciones cliente /servidor | Crear aplicaciones con precisión e integridad de datos | Mejorar el rendimiento mediante el acceso a datos basados en conjuntos | Diseño cliente / servidor para un elevado rendimiento | Optimizar el rendimiento cliente/servidor |


Trabajar con datos remotos mediante la tecnología de paso a través de SQL

Cuando recupere un conjunto de resultados mediante paso a través de SQL, puede ver y controlar las propiedades de su cursor de conjunto de resultados mediante las funciones CURSORGETPROP( ) y CURSORSETPROP( ) de Visual FoxPro. Estas funciones son las mismas que las que se emplean para establecer las propiedades en un cursor de vista activo.

Nota Los cursores no son objetos y no están vinculados al modelo de objetos. No obstante, puede ver sus propiedades o atributos, con CURSORGETPROP( ) y establecer sus propiedades con CURSORSETPROP( ).

Establecer las propiedades del cursor para datos remotos

La siguiente tabla indica las propiedades de cursor de Visual FoxPro que permiten trabajar con vistas y conjuntos de resultados conectados, agrupadas por categorías de tareas.

Propiedades de cursor de Visual FoxPro

Tarea | Propiedad | Objetivo
Ver la definición del cursor | SQL | Contiene la instrucción SQL a partir de la cual se creó el cursor.
Controlar las interacciones entre Visual FoxPro y ODBC | ConnectHandle | Controlador para la conexión remota empleada por el cursor.
 | ConnectName | Nombre de la conexión empleada por el cursor.
 | Prepare | Especifica si la consulta para la vista se prepara antes de ejecutarse.
 | FetchAsNeeded | Especifica si las filas se buscan automáticamente durante el bucle inactivo o sólo cuando es necesario.
 | CompareMemo | Especifica si los campos Memo y General participan en la cláusula WHERE de una instrucción UPDATE, independientemente del valor de la propiedad UpdateType
 | FetchMemo | Especifica si los campos Memo y General se buscan automáticamente con los conjuntos de resultados o si se buscan después, previa petición, cuando se abra el campo Memo o General.
 | UseMemoSize | Especifica el tamaño mínimo de columna (1 a 255) de los conjuntos de resultados para los que se devuelven columnas en campos Memo.
 | FetchSize | Especifica el número de filas que se buscan simultáneamente desde el conjunto de resultados remoto.
 | MaxRecords | Especifica el número máximo de filas buscadas cuando se devuelven los conjuntos de resultados.
Actualizar datos | SendUpdates* | Especifica si las actualizaciones del cursor se envían a las tablas en las que se basa el cursor.
 | BatchUpdateCount | Especifica el número de instrucciones de actualización enviadas al servidor backend para tablas almacenadas en búfer.
 | Tables* | Lista delimitada por comas de nombres de tablas del origen de datos; se usa para definir el alcance de las propiedades UpdateNameList y UpdatableFieldsList.
 | KeyFieldList* | Lista delimitada por comas de campos de Visual FoxPro que representan la clave principal del conjunto de resultados utilizado para las actualizaciones.
 | UpdateNameList* | Lista delimitada por comas que combina los campos de Visual FoxPro del cursor con los nombres de tabla y columna de los campos a los que desea enviar las actualizaciones.
 | UpdatableFieldList* | Lista delimitada por comas de los campos de Visual FoxPro para los que se envían actualizaciones.
 | Almacenamiento en búfer | Especifica el tipo de almacenamiento en búfer que se ejecuta en el cursor.
 | UpdateType | Especifica si se debe realizar una actualización utilizando cláusulas UPDATE o DELETE, y luego INSERT.
 | WhereType | Especifica qué se debe incluir en la cláusula WHERE para las actualizaciones de los datos de la tabla.

* Propiedades que es necesario establecer para poder actualizar datos.

Estas propiedades se utilizan para controlar la forma en que la aplicación interactúa con datos remotos, como el establecimiento del número de filas recuperadas durante la búsqueda progresiva y el control de almacenamiento en búfer y de actualizaciones de datos remotos.

Usar la ficha Datos remotos del cuadro de diálogo Opciones

Algunas propiedades de cursor heredan sus valores iniciales del entorno, mientras que otras solamente están disponibles a nivel del cursor. Algunas propiedades están disponibles para cursores que representan vistas remotas y tablas conectadas de paso a través de SQL u ODBC.

Puede controlar algunas configuraciones de propiedades de conexión y de cursor a través de la ficha Datos remotos del cuadro de diálogo Opciones. Al presentar la ficha Datos remotos, los valores del cuadro de diálogo representan los valores del cursor para la sesión actual y los valores predeterminados globales de Visual FoxPro para la conexión. Cuando modifique los valores de la ficha Datos remotos y elija Aceptar, los nuevos valores se guardarán en la sesión actual del cursor y en los valores predeterminados globales de la conexión. Si elige Establecer como predeterminado, los valores se incluirán en los valores del sistema configurables en su equipo. El siguiente diagrama ilustra estas interacciones.

Ver y establecer valores globales y de sesión con el cuadro de diálogo Opciones

Establecer propiedades con paso a través de SQL

Cuando cree un cursor, éste heredará los valores de sus propiedades, tales como UpdateType y UseMemoSize, del cursor del entorno o del cursor 0 de la sesión actual. Puede cambiar estos valores predeterminados de las propiedades mediante la función CURSORSETPROP( ) con 0 como número de cursor.

Tras crear un cursor de vista con paso a través de SQL, puede modificar los valores de las propiedades del cursor activo mediante la función CURSORSETPROP( ) para el cursor de vista. Los cambios que realice con CURSORSETPROP( ) serán temporales: los valores temporales de la vista activa desaparecen cuando se cierra dicha vista y los valores temporales del cursor 0 se eliminan cuando se cierra la sesión de Visual FoxPro.

Las conexiones heredan las propiedades de forma similar. Las propiedades predeterminadas para la conexión 0 se heredan al crear y almacenar una conexión con nombre en una base de datos. Puede modificar estos valores predeterminados de las propiedades para la conexión 0 con la función SQLSETPROP( ). Una vez creada la conexión y almacenada en una base de datos, puede modificar las propiedades de la conexión con la función DBSETPROP( ). Cuando utilice una conexión, la conexión activa heredará los valores de las propiedades almacenados en la base de datos. Puede modificar estas propiedades en la conexión activa mediante la función SQLSETPROP( ) para el controlador de conexión.

Tanto los cursores de vista de paso a través de SQL como las conexiones con nombre pueden utilizar un origen de datos ODBC con nombre. Si utiliza un origen de datos ODBC en un cursor de vista de paso a través de SQL, la conexión heredará sus propiedades de los valores predeterminados de la sesión.

El siguiente diagrama ilustra las propiedades heredadas de los cursores y las conexiones creados con paso a través de SQL. Las líneas grises representan el flujo de herencia de las propiedades y las líneas negras representan los comandos de Visual FoxPro.

Herencia de las propiedades de cursor y conexión de paso a través de SQL (SPT)

Vea también

Controlar manualmente las transacciones | Actualizar datos remotos con paso a través de SQL | Mejorar aplicaciones utilizando tecnología de paso a través de SQL (SPT) | Diseñar aplicaciones cliente /servidor | Convertir las bases de datos de Visual FoxPro | Crear vistas


Actualizar datos remotos con paso a través de SQL

Al utilizar funciones de paso a través de SQL para actualizar datos en un servidor remoto, se controla si los datos se actualizan, así como detalles específicos acerca de las actualizaciones, mediante el establecimiento de propiedades en el cursor del conjunto de resultados. Visual FoxPro comprueba estas propiedades cuando se solicita una actualización antes de confirmarla.

Para actualizar datos remotos es necesario definir cinco propiedades: Tables, KeyFieldList, UpdateNameList, UpdatableFieldList y SendUpdates. Puede especificar propiedades adicionales, tales como Buffering, UpdateType y WhereType, para adecuarse mejor a los requisitos de la aplicación.

Para permitir actualizaciones en un cursor de vista activo

  • Utilice la función CURSORSETPROP( ) para especificar las propiedades de actualización del cursor de vista: Tables, KeyFieldList, UpdateNameList, UpdatableFieldList y SendUpdates.
    Sugerencia Los cursores de vista de paso a través de SQL no admiten actualizaciones hasta que no especifique propiedades de actualización para el cursor de vista. Si desea almacenar los valores de las propiedades de actualización de forma definitiva, cree una definición de vista. Visual FoxPro suministra valores predeterminados que preparan la vista para que sea actualizable cuando se crea mediante el Diseñador de vistas o el lenguaje. Puede utilizar la función CURSORSETPROP( ) con el fin de agregar información adicional para personalizar o aumentar la cantidad de valores predeterminados.

Las propiedades de actualización que se establecen en el cursor de vista activo tienen nombres ligeramente distintos que sus correspondientes en DBSETPROP( ). La siguiente tabla incluye los nombres utilizados para definiciones de vista y para cursores activos.

Propiedades de actualización de vistas y cursores

Objetivo | Propiedades de definición de vista1 | Propiedades del cursor activo2
Hacer actualizables las tablas remotas. | Tablas | Tablas
Especificar nombres remotos para campos de vista. | UpdateName (propiedad a nivel de campo) | UpdateNameList
Especificar campos de vista que desea usar como claves. | KeyField (propiedad a nivel de campo) | KeyFieldList
Especificar los campos de vista que son actualizables. | Updatable (propiedad a nivel de campo) | UpdatableFieldList
Activar actualizaciones. | SendUpdates | SendUpdates

1 Se establecen con DBSETPROP( ).
2 Se establecen con CURSORSETPROP( ).

Para obtener más información acerca de cómo establecer propiedades de actualización, vea Crear vistas, o vea DBSETPROP( ) o CURSORSETPROP( ).

Controlar la temporización de actualizaciones remotas

El control del almacenamiento en búfer de las actualizaciones de datos remotos se realiza estableciendo la propiedad Buffering del cursor. De los cinco posibles valores para la propiedad Buffering, dos son válidos para vistas remotas:

  • 3, o DB_BUFOPTROW, el valor predeterminado, que bloquea la fila de forma optimista.
  • 5, o DB_BUFOPTTABLE, que bloquea la tabla de forma optimista.

Visual FoxPro solamente admite el bloqueo optimista en cursores remotos.

Nota Los valores de almacenamiento pesimista en búfer de tabla y fila, 2 y 4, no se aplican a vistas remotas, porque Visual FoxPro no bloquea los datos del servidor. El valor de la propiedad de almacenamiento en búfer 1 no se aplica a vistas remotas porque las vistas siempre se almacenan en búfer.

Usar el almacenamiento optimista de filas en búfer

El valor predeterminado de Buffering, DB_BUFOPTROW, bloquea de forma optimista datos remotos de fila en fila. Por ejemplo, si desea que los cambios confirmados en la tabla titles se realicen fila a fila, como cuando se utiliza el comando SKIP, puede establecer la propiedad Buffering con el valor 3:

CURSORSETPROP('buffering', 3, 'titles')

Cuando establece Buffering para el almacenamiento de filas en búfer, dispone de dos métodos para enviar actualizaciones al servidor remoto. Puede:

  • Llamar a la función TABLEUPDATE( ).
  • Usar un comando que mueva el puntero de registro a un lugar fuera de la fila, como SKIP o GO BOTTOM.

La función TABLEUPDATE( ) actualiza el servidor sin mover el puntero de registro. Los comandos que mueven el puntero de registro envían actualizaciones al servidor remoto como efecto secundario de su salida del registro actualizado.

Si utiliza el almacenamiento de filas en búfer y desea tener la posibilidad de revertir los cambios realizados en las filas, debe ajustar los cambios en las transacciones manuales utilizando funciones de transacción de paso a través de SQL.

Usar almacenamiento optimista de tablas en búfer

Si desea que los cambios confirmados en una tabla se realicen por lotes, como cuando el usuario hace clic en un botón Guardar o Aceptar en un formulario, puede establecer la propiedad Buffering con el valor 5, o DB_BUFOPTTABLE. Es necesario llamar a la función TABLEUPDATE( ) para enviar la actualización al servidor.

En el ejemplo siguiente, se establece la propiedad Buffering como el código de inicialización del formulario y luego se confirman los cambios en el código de almacenamiento (save).

Código Comentarios
CURSORSETPROP('buffering', 5, 'sqltitles')
 Establecer en código Init
* Update batched changes;
* ignore changes made by others

TABLEUPDATE(.T., .T., 'titles')
 Establecer en código Save

Para restaurar en una tabla los valores originales e impedir que las actualizaciones se envíen al servidor remoto, llame a TABLEREVERT( ). Puede controlar si se revierte una sola fila o varias combinando el valor de la propiedad Buffering del cursor con el comando TABLEREVERT( ). El siguiente ejemplo revierte solamente la fila actual. Quizá le resulte conveniente invocar este código cuando el usuario haga clic en un botón Cancelar de un formulario:

= TABLEREVERT(.F., 'titles')      && Revert current row

Si desea revertir todas las filas, por ejemplo cuando el usuario presiona ESC para salir de un formulario, puede utilizar el mismo ejemplo, pero cambiando el valor de la propiedad Buffering y el comando TABLEREVERT( ) para revertir todas las filas, con toda la tabla almacenada en búfer:

= TABLEREVERT(.T., 'titles')      && Revert all rows

Para obtener más información acerca del almacenamiento en búfer, vea Programar para acceso compartido.

Detectar cambios realizados por otros usuarios

En aplicaciones multiusuarios, los conflictos con las actualizaciones de otros usuarios se detectan mediante la consulta SQL Update, que se genera cuando se intenta realizar una escritura localmente. El nivel de detección depende del valor de la propiedad WhereType. Para obtener más información acerca de los valores de la propiedad WhereType, vea Crear vistas.

Imponer actualizaciones

Puede utilizar la función TABLEUPDATE( ) para controlar si los cambios realizados en una tabla o cursor por otro usuario de la red se sobrescriben cuando usted envía sus propias actualizaciones. Si establece el parámetro Force de TABLEUPDATE( ) como verdadero (.T.) y la propiedad CURSORSETPROP( ) UpdateType está establecida en el valor predeterminado 1, los datos anteriores se actualizarán con los nuevos datos enviados, siempre y cuando el valor del campo clave del registro en la tabla remota no se haya modificado. Si el valor del campo clave de la tabla remota ha cambiado o si la propiedad UpdateType está establecida en 2, Visual FoxPro enviará una instrucción DELETE y luego una instrucción INSERT a la tabla remota.

Mensajes de error de actualización

La tabla siguiente muestra los mensajes de error de Visual FoxPro y ODBC que se aplican específicamente a actualizaciones remotas. La columna Acción contiene la acción que debe llevar a cabo para resolver la condición de error.

Mensaje de error | Significado | Acción
No especificó tablas de actualización. Use la propiedad de cursor Tables. | La propiedad de cursor Tables no contiene nombres de tablas remotas. Se necesita al menos una tabla para permitir actualizaciones en el servidor remoto. | Use la propiedad Tables para especificar al menos una tabla para el cursor.
No hay columnas clave especificadas para la tabla de actualización nombre_tabla. Use la propiedad de cursor KeyFieldList. | La clave principal para la tabla remota especificada en el mensaje de error no está incluida en la propiedad KeyFieldList para el cursor; se necesita una clave principal para cada tabla que se va a actualizar. | Use la propiedad KeyFieldList para especificar la clave principal para la tabla remota.
No se especificó una tabla de actualización válida para la columna nombre_columna. Use las propiedades de cursor UpdateNameList y Tables. | La propiedad UpdateName de la columna nombre_columna tiene un cualificador de tabla no válido. | Establezca el cualificador de tabla con la propiedad UpdateNameList o agregue el cualificador de tabla al valor de la propiedad Tables, o ambas cosas.
La propiedad de cursor KeyFieldList no define una clave única. | Varios registros remotos tienen la misma clave. | Use la propiedad KeyFieldList para definir una clave única para la tabla remota.
De ODBC: objeto ODBC no válido. | ODBC no encuentra la tabla o columna remota porque no existe con ese nombre. Visual FoxPro valida los nombres de campos de Visual FoxPro; los nombres de tabla y columna remotas solamente los valida el servidor remoto. | Compruebe el nombre del objeto.

Para obtener más información acerca de la administración de errores, consulte Administrar errores de paso a través de SQL.

Vea también

Trabajar con datos remotos mediante la tecnología de paso a través de SQL | Seleccionar un modo de procesamiento eficaz de paso a través de SQL | Mejorar aplicaciones utilizando tecnología de paso a través de SQL (SPT) | Diseñar aplicaciones cliente /servidor | Convertir las bases de datos de Visual FoxPro | Crear vistas


Seleccionar un modo de procesamiento eficaz de paso a través de SQL

Visual FoxPro proporciona dos modos de procesamiento para recuperar y actualizar datos remotos mediante paso a través de SQL: síncrono y asíncrono. Si utiliza las funciones de paso a través de SQL, puede elegir el método que prefiera. No necesita elegir ningún método para las vistas remotas, pues Visual FoxPro utiliza automáticamente la recopilación progresiva y administra el modo de procesamiento para las vistas remotas.

Ventajas del modo síncrono

De forma predeterminada, las funciones SQL de Visual FoxPro se procesan de manera síncrona: Visual FoxPro no devuelve el control a una aplicación hasta que no termine la llamada a la función. El procesamiento síncrono es útil cuando se trabaja con Visual FoxPro de forma interactiva.

Ventajas del modo asíncrono

El procesamiento asíncrono proporciona mayor flexibilidad que el síncrono. Por ejemplo, cuando su aplicación procesa una función de forma asíncrona, puede generar un indicador que muestre el progreso de la instrucción en ejecución, mostrar el movimiento del puntero del ratón, crear bucles y establecer cronómetros para permitir la interrupción del procesamiento que tarda demasiado tiempo.

Vea también

Actualizar datos remotos con paso a través de SQL | Usar el modo asíncrono de paso a través de SQL | Trabajar con datos remotos mediante la tecnología de paso a través de SQL | Mejorar aplicaciones utilizando tecnología de paso a través de SQL (SPT) | Diseñar aplicaciones cliente /servidor | Convertir las bases de datos de Visual FoxPro | Crear vistas


Usar de forma asíncrona el paso a través de SQL

Su aplicación puede solicitar el procesamiento asíncrono para las cuatro funciones que envían peticiones a un origen de datos y que recuperan datos: SQLEXEC( ), SQLMORERESULTS( ), SQLTABLES( ) y SQLCOLUMNS( ). El procesamiento asíncrono se activa estableciendo la propiedad Asynchronous de la conexión con la función SQLSETPROP( ). Al establecer la comunicación asíncrona en la conexión, las cuatro funciones trabajan de forma asíncrona.

Para comprobar el valor de la propiedad Asynchronous

  • Utilice la función SQLGETPROP( ) para ver el valor de la propiedad Asynchronous. En el ejemplo siguiente, nConnectionHandle representa el número de controlador para la conexión activa:
    ? SQLGETPROP(nConnectionHandle,'Asynchronous')

Para activar el procesamiento asíncrono

  • Utilice la función SQLSETPROP( ) para especificar la propiedad Asynchronous:
    ? SQLSETPROP(nConnectionHandle,'Asynchronous', .T.)

En el modo asíncrono, es necesario llamar a cada función varias veces hasta que devuelva un valor distinto de 0 (en ejecución). Mientras la función esté en ejecución, podrá cancelar el procesamiento de la función si presiona la tecla ESC en caso de que la propiedad SET ESCAPE esté definida con el valor verdadero (.T.).

Hasta que la función haya terminado de procesarse, la aplicación sólo podrá utilizar un controlador de conexión con SQLCANCEL( ) o con la función asíncrona (SQLEXEC( ), SQLMORERESULTS( ), SQLTABLES( ) o SQLCOLUMNS( )) asociada originalmente al controlador. No puede llamar a ninguna de las otras tres funciones asíncronas ni a SQLDISCONNECT( ) con el mismo controlador de conexión hasta que la función haya terminado.

Vea también

Seleccionar un modo de procesamiento eficaz de paso a través de SQL | Procesar múltiples conjuntos de resultados | Trabajar con datos remotos mediante la tecnología de paso a través de SQL | Mejorar aplicaciones utilizando tecnología de paso a través de SQL (SPT) | Diseñar aplicaciones cliente /servidor | Convertir las bases de datos de Visual FoxPro | Crear vistas


Procesar múltiples conjuntos de resultados

Su aplicación recupera múltiples conjuntos de resultados cuando se utiliza la función SQLEXEC( ) para ejecutar varias instrucciones SELECT de SQL, o para ejecutar un procedimiento almacenado que ejecuta múltiples instrucciones SELECT. Los resultados de cada instrucción SELECT de SQL se devuelven en un cursor de Visual FoxPro distinto.

El nombre predeterminado SQLRESULT se utiliza para el primer cursor; los demás cursores reciben nombres únicos indizando el nombre predeterminado. Por ejemplo, los nombres predeterminados para los cursores devueltos por una instrucción SQLEXEC( ) que solicita tres conjuntos de resultados son Sqlresult, Sqlresult1 y Sqlresult2.

En el modo por lotes, si una función devuelve múltiples conjuntos de resultados, sus respectivos nombres de cursor en Visual FoxPro tendrán sufijos únicos y podrán incluir un máximo de 255 caracteres. Por ejemplo, el ejemplo siguiente establece la propiedad BatchMode en el modo por lotes y después ejecuta una instrucción SQLEXEC( ) que contiene cuatro instrucciones SELECT de SQL que generan cuatro conjuntos de resultados:

? SQLSETPROP(nConnectionHandle,'BatchMode', .T.)
? SQLEXEC(nConnectionHandle,'select * from authors ;
select * from titles ;
select * from roysched ;
select * from titleauthor','ITEM')

Cuando termina de procesarse la función anterior, Visual FoxPro devuelve los cuatro conjuntos de resultados como los cursores de Visual FoxPro Item, Item1, Item2 e Item3.

Puede cambiar el nombre predeterminado mediante el parámetro cCursorname con las funciones SQLEXEC( ) o SQLMORERESULTS( ). Si el nombre especificado para un conjunto de resultados ya se ha utilizado, el nuevo conjunto de resultados sobrescribirá el cursor existente.

Cuando la aplicación recupera múltiples conjuntos de resultados, puede elegir entre el procesamiento síncrono o asíncrono y entre los modos por lotes o sin lotes.

Usar el modo de procesamiento por lotes

La propiedad BatchMode, establecida con SQLSETPROP( ), controla la forma en que SQLEXEC( ) devuelve múltiples conjuntos de resultados. Su valor predeterminado es .T., para el modo por lotes. El procesamiento mediante el modo por lotes significa que Visual FoxPro no devuelve ningún resultado desde una llamada SQLEXEC( ) en ejecución hasta que no se hayan recuperado todos los conjuntos de resultados individuales.

Usar el modo de procesamiento sin lotes

Si utiliza SQLSETPROP( ) para establecer la propiedad BatchMode en el valor falso (.F.), para el modo sin lotes, cada conjunto de resultados se devolverá de manera individual. La llamada a la función SQLEXEC( ) devuelve el primer conjunto de resultados. A continuación, la aplicación debe llamar a SQLMORERESULTS( ) repetidas veces hasta que devuelva un valor de 2, que indica que no hay más resultados disponibles.

En el modo sin lotes, el nombre del cursor se puede modificar en cada llamada SQLMORERESULTS( ) subsiguiente. De esta forma, si para el ejemplo anterior el nombre del primer cursor de una secuencia SQLEXEC( ) es Item, y la segunda llamada a SQLMORERESULTS( ) cambia el parámetro cCursorName por Otheritem, los cursores resultantes se denominarán Item, Item1, Otheritem y Otheritem1.

La siguiente sección describe el procesamiento en modo por lotes y en modo sin lotes, anexando la condición de síncrono y asíncrono. El diagrama que se muestra a continuación proporciona una representación de las cuatro combinaciones posibles de procesamiento. Los números 0, 1 y 2 representan los valores devueltos cuando se llama a cada función.

Modos de procesamiento síncrono y asíncrono de Visual FoxPro

A continuación se explica el comportamiento de cada tipo de procesamiento; las etiquetas A, B, C y D hacen referencia al diagrama anterior. Cada explicación se basa en la ejecución de una instrucción que devuelve tres conjuntos de resultados, representados en el diagrama por tres bandas horizontales.

Usar el procesamiento síncrono

En el modo síncrono, el control no vuelve a la aplicación hasta que no se haya completado la ejecución de la función.

A: Modo síncrono por lotes

Cuando se ejecuta una instrucción de paso a través de SQL de forma síncrona en el modo por lotes, el control no vuelve hasta que no se hayan recuperado todos los conjuntos de resultados. El nombre del primer cursor se especifica mediante el parámetro cCursorname en la función original. Si el cursor especificado ya existe, el conjunto de resultados sobrescribirá el cursor existente. Cuando se solicitan múltiples conjuntos de resultados en el modo síncrono por lotes, Visual FoxPro crea los nombres de cursores adicionales indizando de forma exclusiva el nombre del primer cursor.

B: Modo síncrono sin lotes

Cuando se ejecuta una instrucción de paso a través de SQL de manera síncrona en el modo sin lotes, la primera instrucción recupera el primer conjunto de resultados y devuelve un 1. A continuación, debe llamar a la función SQLMORERESULTS( ) repetidas veces y, si lo desea, especificar un nuevo nombre para el cursor. Si no especifica ningún nombre nuevo para el cursor, se crearán nombres distintos para los diferentes conjuntos de resultados indizando de forma exclusiva el nombre básico. Cuando SQLMORERESULTS( ) devuelve un valor de 2, no hay más resultados disponibles.

Usar el procesamiento asíncrono

En el modo asíncrono, la aplicación debe continuar llamando a la misma función de paso a través de SQL hasta que devuelva un valor distinto de 0 (en ejecución). El nombre predeterminado para el conjunto de resultados, Sqlresult, se puede cambiar explícitamente con el parámetro cCursorname la primera vez que llama a la función. Si el nombre especificado para un conjunto de resultados ya se ha utilizado, el nuevo conjunto de resultados sobrescribirá la información del cursor existente.

C: Modo asíncrono por lotes

Cuando ejecuta el modo por lotes de forma asíncrona, cada llamada repetida de la función original devuelve un 0 (en ejecución) hasta que se devuelven todos los conjuntos de resultados a los cursores especificados. Una vez recuperados todos los resultados, el valor de retorno es el número de cursores o bien un número negativo que indica un error.

D: Modo asíncrono sin lotes

Cuando se procesa en modo asíncrono sin lotes, SQLEXEC( ) devuelve un valor de 1 al completar la recuperación de cada conjunto de resultados. A continuación, la aplicación debe llamar a SQLMORERESULTS( ) repetidas veces hasta que devuelva un valor de 2, que indica que no hay más resultados disponibles.

Sugerencia Los conjuntos de resultados remotos se recuperan en dos etapas: primero se prepara el conjunto de resultados en el servidor; a continuación, el conjunto de resultados se busca en un cursor local de Visual FoxPro. En el modo asíncrono, puede llamar a la función USED( ) para ver si Visual FoxPro ha comenzado a buscar el cursor solicitado.

Vea también

Usar el modo asíncrono de paso a través de SQL | Controlar la conversión de tipos de datos | Trabajar con datos remotos mediante la tecnología de paso a través de SQL | Mejorar aplicaciones utilizando tecnología de paso a través de SQL (SPT) | Diseñar aplicaciones cliente /servidor | Convertir las bases de datos de Visual FoxPro | Crear vistas


Controlar la conversión de tipos de datos

Al mover datos entre un servidor remoto y Visual FoxPro, pueden surgir diferencias en cuanto a la cantidad de tipos de datos disponibles en el servidor o en Visual FoxPro, porque raras veces hay una correlación exacta entre los tipos de datos disponibles en un origen de datos remoto y los de Visual FoxPro. Para resolver estas diferencias, Visual FoxPro utiliza los tipos de datos de ODBC o ADO para asignar tipos de datos remotos a tipos de datos locales de Visual FoxPro. Si comprende la forma en que se asignan los tipos de datos entre ODBC o ADO y Visual FoxPro, puede prever la forma en que se manejarán los datos remotos del servidor en su aplicación de Visual FoxPro.

Si lo necesita, también puede ajustar los tipos de datos utilizados en el servidor o en la aplicación. El tipo de datos predeterminado para los campos en Visual FoxPro se puede anular creando una vista para el conjunto de datos remoto y luego estableciendo la propiedad del campo de vista DataType en la base de datos. La propiedad DataType es una propiedad de tipo carácter que indica el tipo de datos deseado para cada campo de una vista remota. Para obtener más información acerca de la propiedad DataType, vea DBSETPROP( ).

Conversión de tipos de datos entre vistas remotas y cursores Visual FoxPro

Cuando se recuperan datos desde un origen de datos remoto ODBC o ADO, Visual FoxPro convierte el tipo de datos de cada campo ODBC o ADO en un tipo de datos equivalente de Visual FoxPro para el cursor del conjunto de resultados.

Tipos de datos de vistas remotas a Tipos de datos Visual FoxPro

La siguiente tabla indica los tipos de datos disponibles cuando utilice vistas remotas u objetos CursorAdapter junto con orígenes de datos ODBC o ADO y los tipos de datos equivalentes en Visual FoxPro. Para más información acerca de especificar un esquema de cursor, vea el CursorAdapter CursorFill (Método).

Tipo de datos ODBC/ADO | Tipo de datos aceptable para cursor Visual FoxPro
SQL_CHAR / adChar SQL_VARCHAR / adChar SQL_LONGVARCHAR / adChar SQL_BINARY / adBinary SQL_VARBINARY / adVarbinary SQL_LONGVARBINARY / adVarbinary | Carácter, Memo1, o General
SQL_WCHAR / adWchar SQL_WVARCHAR / adWchar SQL_WLONGVARCHAR / adWchar | Carácter, Memo
SQL_BIT / adBoolean | Lógico o carácter
SQL_REAL / adSingle SQL_FLOAT / adDouble SQL_DOUBLE / adSingle SQL_DECIMAL / adNumeric SQL_NUMERIC / adNumeric SQL_TINYINT / adVarbinary SQL_SMALLINT / adSmallInt SQL_INTEGER / adInteger SQL_BIGINT / adBigInt | Carácter, Entero, Numérico, Flotante, Doble (el número de lugares decimales es el valor de SET DECIMAL en Visual FoxPro), o Monetario2
SQL_DATE / adDBTimeStamp SQL_TIMESTAMP / adBinary | Carácter, Fecha, DateTime3
SQL_TIME / adDBTTimeStamp | Carácter, DateTime4

1 Si el ancho del campo ODBC es menor que el valor de la propiedad UseMemoSize del cursor, se convierte en un campo Carácter en el cursor Visual FoxPro; de lo contrario, se convierte en un campo Memo.
2 Si el campo en el servidor es tipo monetario, se convierte en un tipo de dato Currency (monetario) en Visual FoxPro.
3 Si el valor en el campo SQL_TIMESTAMP contiene fracciones de segundo, las fracciones se truncan cuando se convierten a un tipo de dato DateTime de Visual FoxPro.
4 El día predeterminado es 1/1/1900.

Nota Los valores Null en los campos de origen de datos ODBC se convierten en valores nulos en el cursor Visual FoxPro, independientemente si la configuración SET NULL en Visual FoxPro al momento que su aplicación recupera los datos remotos.

En la siguiente tabla se muestran los tipos de datos Visual FoxPro disponibles y sus equivalencias, cuando cuando utilice vistas remotas con objetos CursorAdapter y datos nativos de Visual FoxPro.

Tipos de datos nativos Visual FoxPro | Tipos de datos aceptables para un cursor Visual FoxPro
Carácter, Memo, General | Carácter, Memo, o General
Numérico, Flotante, Monetario, Entero, Doble | Numérico, Flotante, Monetario, Entero, Doble, o Carácter
Lógico | Carácter o Lógico
Fecha, DateTime | Carácter, Fecha o DateTime

Asignar parámetros Visual FoxPro a tipos de datos remoto

Si hay datos de Visual FoxPro en un cursor que se originó a partir de datos remotos, los datos recuperarán el tipo ODBC o ADO original cuando se envíen al servidor remoto. Si envía datos originados en Visual FoxPro al servidor remoto mediante paso a través de SQL, se aplicarán las siguientes conversiones.

Tipo de datos de Visual FoxPro | Tipo de datos de ODBC
Carácter | SQL_CHAR o SQL_LONGVARCHAR1
Monetario (Currency) | SQL_DECIMAL
Fecha | SQL_DATE o SQL_TIMESTAMP2
DateTime | SQL_TIMESTAMP
Doble | SQL_DOUBLE
Entero | SQL_INTEGER
General | SQL_LONGVARBINARY
Lógico | SQL_BIT
Memo | SQL_LONGVARCHAR
Numérico | SQL_DOUBLE

1 Si la variable de Visual FoxPro que se asigna a un parámetro crea una expresión cuyo ancho es menor que 255, se convertirá en un tipo SQL_CHAR en el origen de datos ODBC; de lo contrario, se convertirá en un tipo SQL_LONGVARCHAR.
2 Los datos de tipo Date de Visual FoxPro se convierten en SQL_DATE para todos los orígenes de datos ODBC excepto para SQL Server, donde se convierten en SQL_TIMESTAMP.

Equivalencia para asignar un parámetro Visual FoxPro a un tipo de datos remoto

Puede asignar un valor de parámetro de Visual FoxPro a un tipo de datos remoto concreto si aplica al parámetro el formato como una expresión de caracteres que utilice la sintaxis para el tipo de datos remoto deseado. Por ejemplo, si el servidor proporciona un tipo de datos DateTime, puede crear el parámetro de Visual FoxPro como una expresión de caracteres en el formato utilizado por el servidor para representar los datos de tipo DateTime. Cuando el servidor recibe el valor del parámetro, intenta asignar los datos con formato al tipo de datos DateTime.

Nota Cuando envíe un parámetro al servidor remoto, asegúrese de que el tipo de datos de la cláusula WHERE coincide con el tipo de datos utilizado para la expresión de parámetro.

Vea también

Procesar múltiples conjuntos de resultados | Administrar errores de paso a través de SQL | Trabajar con datos remotos mediante la tecnología de paso a través de SQL | Mejorar aplicaciones utilizando tecnología de paso a través de SQL (SPT) | Diseñar aplicaciones cliente /servidor | Convertir las bases de datos de Visual FoxPro | Crear vistas


Administrar errores de paso a través de SQL

Si una función de paso a través de SQL devuelve un error, Visual FoxPro almacenará el mensaje de error en una matriz. La función AERROR( ) proporciona información relativa a los errores detectados en cualquiera de los niveles de componentes: Visual FoxPro, el origen de datos ODBC o el servidor remoto. Examinando los valores devueltos por AERROR( ), puede determinar el error de servidor producido y el texto de su mensaje de error.

Precaución Es necesario llamar inmediatamente a AERROR( ) para obtener información acerca del error. Si genera otro error antes de llamar a AERROR( ), la información del primer error se perderá.

Vea también

Controlar la conversión de tipos de datos | Procesar múltiples conjuntos de resultados | Trabajar con datos remotos mediante la tecnología de paso a través de SQL | Mejorar aplicaciones utilizando tecnología de paso a través de SQL (SPT) | Diseñar aplicaciones cliente /servidor | Convertir las bases de datos de Visual FoxPro | Crear vistas


Compilar una aplicación

Puede crear aplicaciones orientadas a objetos controladas por eventos, de una en una. Este enfoque modular le permite comprobar la funcionalidad de cada componente a medida que lo crea. Cuando haya creado todos los componentes funcionales, podrá compilarlos en una única aplicación, que ensamblará los componentes ejecutables del proyecto (formularios, informes, menús, programas, etc.) en un único archivo que podrá distribuir a los usuarios junto con los datos.

Para crear rápidamente un proyecto completo con Archivos del marco de aplicaciones, puede utilizar el Asistente para aplicaciones. Una vez creado el proyecto, se abrirá el nuevo Generador de aplicaciones de modo que pueda agregar una base de datos, tablas, informes y formularios.

En esta sección

Generar aplicaciones
Describe cómo desarrollar aplicaciones y crear archivos distribuibles desde su proyecto de aplicación.
Referencias a archivos modificables
Discute cómo identificar en su aplicación archivos específicos que los usuarios finales puedan modificar.
Generar un archivo de aplicación desde un proyecto
Discute cómo crear el archivo final de su proyecto.

Secciones relacionadas

Desarrollar aplicaciones Visual FoxPro
Esta sección incluye información conceptual acerca de cómo desarrollar aplicaciones Visual FoxPro, instrucciones para crear bases de datos y la interfaz de usuario, y otras tareas necesarias para crear aplicaciones Visual FoxPro.
Planificar aplicaciones
Discute como un cuidadoso diseño ahorra tiempo, esfuerzo y dinero, además muchas de las decisiones que tome durante la etapa de diseño impactarán en la forma en que cree los elementos de su aplicación.
Crear una aplicación
Discute como crear una aplicación Visual FoxPro, incluye una o más bases de datos, un programa principal que establece el entorno de sistema de su aplicación y una interfaz de usuario que involucra formularios, barras de herramientas y menús.
Crear Servicios Web y Componentes
Explica cómo puede extender su aplicación Visual FoxPro para permitirle trabajar con varios usuarios, aprovechar las ventajas de controles Microsoft ActiveX y aplicaciones habilitadas para automatización.
Mejorar aplicaciones utilizando tecnología de paso a través de SQL (SPT)
Puede utilizar la tecnología de paso a través de SQL (SPT) para crear objetos en el servidor, ejecutar procedimientos almacenados en el servidor y ejecutar comandos utilizando sintaxis nativa del servidor.
Trabajar con datos
Informa cómo crear aplicaciones efectivas con índices, tablas y bases de datos basadas en sus necesidades de datos.
Trabajar con proyectos
Explica cómo definir una configuración de proyecto y un grupo de archivos que producen un programa o archivos o archivos binarios finales.
Crear Ayuda
Puede incluir archivos de Ayuda en su aplicación con el fin de proporcionar información valiosa para los usuarios de su aplicación.
Probar y depurar aplicaciones
Describe las herramientas de depuración de Visual FoxPro que le ayudan a encontrar y corregir cualquier error que haya descubierto en sus aplicaciones.
Distribuir aplicaciones
Para distribuir sus aplicaciones debe incluir todos los archivos necesarios y crear discos de distribución después que haya completado el desarrollo y prueba de su aplicación.


Generar aplicaciones

Una vez que el proyecto de aplicación contenga todos los archivos necesarios, estará en condiciones de generar un archivo distribuible. Puede generar su proyecto como una aplicación estándar que solamente se ejecuta cuando se dispone de Visual FoxPro, o bien como una aplicación ejecutable que funcione sin Visual FoxPro.

Nota También puede generar su aplicación como servidor de Automatización OLE. Para obtener más información, consulte Crear servidores de Automatización.

Generar una aplicación estándar de Visual FoxPro

Puede generar una aplicación estándar de Visual FoxPro con el Administrador de proyectos o bien con el comando BUILD APP. No obstante, el Administrador de proyectos pone a su disposición más opciones para la generación de aplicaciones.

Para generar una aplicación estándar

  • En el Administrador de proyectos, elija Generar. En el cuadro de diálogo Opciones para generar, elija Generar aplicación.

    –O bien–

  • Utilice el comando BUILD APP.

Generar un archivo ejecutable

Puede generar un archivo ejecutable de Visual FoxPro con el Administrador de proyectos o con el comando BUILD EXE.

Para generar un archivo ejecutable

  • En el Administrador de proyectos, elija Generar. En el cuadro de diálogo Opciones para generar, elija Generar ejecutable.

    –O bien–

  • Utilice el comando BUILD EXE.

    Si incluye las cláusulas STANDALONE o EXTENDED del comando BUILD EXE, Visual FoxPro generará un mensaje de error "El comando contiene una frase / palabra clave no reconocida". Estas claúsulas fueron utilizadas en FoxPro, pero son irrelevantes en Visual FoxPro.

También puede generar un servidor de Automatización, que crea una DLL que se puede llamar desde otros programas para Windows.

Para compilar un servidor de Automatización

  • En el Administrador de proyectos, elija Generar. En el cuadro de diálogo Opciones para generar, elija Generar DLL OLE.

    –O bien–

  • Utilice el comando BUILD DLL.

Vea también

Personalizar la apariencia de las aplicaciones | Crear servidores de Automatización


Referencias a archivos modificables

Cuando compile un proyecto en una aplicación, los archivos incluidos en el proyecto se ensamblan en un único archivo de aplicación. Una vez compilado el proyecto, los archivos del proyecto que estén marcados como “incluidos” pasarán a ser de sólo lectura.

Los archivos que forman parte del proyecto, como las tablas, suelen estar diseñados para que los usuarios puedan modificarlos. En esos casos, debería agregar los archivos al proyecto pero marcándolos como excluidos. Los archivos excluidos siguen formando parte de la aplicación por lo que Visual FoxPro los registra como parte del proyecto, pero no se compilan en el archivo de aplicación y, de este modo, los usuarios podrán actualizarlos.

Nota Como opción predeterminada las tablas se marcan como excluidas porque Visual FoxPro supone que las tablas serán modificables en una aplicación.

Como regla general, los archivos que contengan programas ejecutables (formularios, informes, consultas, menús y programas) deberán incluirse en el archivo de aplicación y los archivos de datos deberán excluirse. Sin embargo, ha de determinar si va a incluir o excluir archivos según los requisitos de la aplicación. Por ejemplo, una tabla que contenga información sobre el sistema o datos utilizados únicamente para consulta puede incluirse en el archivo de aplicación para proteger dicha información ante cambios que se realicen sin previo aviso. A la inversa, puede excluir un archivo de informe (.frx) si la aplicación permite a los usuarios modificarla dinámicamente.

Si excluye un archivo, deberá asegurarse de que Visual FoxPro pueda encontrar el archivo excluido cuando se ejecute la aplicación. Por ejemplo, cuando en un formulario se hace referencia a una biblioteca de clases visuales, el formulario almacena una ruta de acceso relativa a esa biblioteca. Si incluye la biblioteca en el proyecto, pasará a formar parte del archivo de la aplicación y el formulario siempre podrá ubicarla. Sin embargo, si excluye la biblioteca, el formulario debe buscarla usando la ruta de acceso relativa o la ruta de acceso de búsqueda de Visual FoxPro (definida mediante el comando SET PATH). Si la biblioteca no se encuentra en las ubicaciones previstas (por ejemplo, si se ha cambiado de ubicación desde que se creó el formulario), Visual FoxPro muestra un cuadro de diálogo en el que se solicita al usuario que busque la biblioteca. Tal vez desee que los usuarios no vean este cuadro de diálogo. Para estar seguro, incluya todos los archivos que no necesiten actualización por parte de los usuarios.

Nota No puede incluir archivos de aplicación (.app) y debe optar por excluir los archivos de biblioteca (.ocx, .fll y .dll).

Para excluir archivos modificables

  1. Seleccione el archivo modificable en el Administrador de proyectos.
  2. En el menú Proyecto, elija Excluir.

    Si el archivo ya está excluido, el comando Excluir no está disponible; aparecerá el comando Incluir en su lugar.

Los archivos excluidos tienen el símbolo Æ a la izquierda de sus nombres.

Nota Los archivos marcados como archivos principales no se pueden marcar como excluidos. Para obtener detalles acerca de los archivos principales, vea Establecer el punto de partida.
Sugerencia Para ver simultáneamente todos los archivos de proyecto, elija Información de proyecto en el menú Proyecto y seleccione la ficha Archivos.

Vea también

Agregar archivos a un proyecto | Compilar una aplicación | SET PATH | Administrador de proyectos


Generar un archivo de aplicación desde un proyecto

Para crear un archivo terminado desde la aplicación, genérelo en un archivo de aplicación. Los archivos de aplicación tienen la extensión .app. Para ejecutar la aplicación, los usuarios deben iniciar Visual FoxPro primero y después cargar el archivo .app.

Puede optar por generar un archivo de aplicación (.app) o un archivo ejecutable (.exe) desde el proyecto. Los usuarios pueden ejecutar un archivo .app si ya tienen una copia de Visual FoxPro. De forma alternativa puede crear un archivo .exe. El archivo .exe funciona con dos bibliotecas de vínculos dinámicos de Visual FoxPro (Vfp8r.dll y Vfp8renu.dll), que se distribuyen con la aplicación para ofrecer un entorno en tiempo de ejecución completo para Visual FoxPro. El segundo archivo es específico de la región del mundo destino de la aplicación. Para obtener más información, vea Distribuir aplicaciones.

Para generar una aplicación

  1. En el Administrador de proyectos, elija Generar.
  2. En el cuadro de diálogo Opciones para generar, elija Generar aplicación si desea generar un archivo .app o Generar ejecutable si desea generar un archivo .exe.
  3. Seleccione cualquier otra opción que necesite y elija Aceptar.

    –O bien–

  • Utilice los comandos BUILD APP o BUILD EXE.

Por ejemplo, para generar una aplicación denominada Myapp.app a partir de un proyecto denominado Myproj.pjx, escriba:

BUILD APP myapp FROM myproj

Para crear una aplicación denominada Myapp.exe a partir de un proyecto llamado Myproj.pjx, escriba:

BUILD EXE myapp FROM myproj
Nota También puede usar el cuadro de diálogo Opciones para generar para crear un servidor de Automatización desde la aplicación de Visual FoxPro. Para obtener más información, vea Crear servidores de Automatización en “Agregar OLE”.

Una vez creado y terminado un archivo de aplicación para el proyecto, todos los usuarios podrán ejecutarlo.

Para ejecutar una aplicación como un archivo .app

  • En Visual FoxPro, elija Ejecutar en el menú Programa y seleccione el archivo de aplicación.

    –O bien–

  • En la ventana Comandos, escriba DO y el nombre del archivo de aplicación.

    Por ejemplo, para ejecutar una aplicación denominada MYAPP, escriba:

    DO myapp.app

Si ha creado un archivo .exe desde la aplicación, los usuarios podrán ejecutarlo de diversas maneras.

Para ejecutar una aplicación como un archivo .exe

  • En Visual FoxPro, elija Ejecutar en el menú Programa y seleccione el archivo de aplicación o, en la ventana Comandos, escriba DO y el nombre del archivo de aplicación.

    Por ejemplo, para ejecutar un archivo .exe denominado Myapp.exe, escriba:

    DO myapp.exe

    –O bien–

  • En Windows, haga doble clic en el icono del archivo .exe.

Vea también

Probar el proyecto | Referencias a archivos modificables | Compilar una aplicación | Opciones para generar | BUILD APP | BUILD EXE


Probar y depurar aplicaciones

El proceso de prueba implica la búsqueda de problemas en el código, mientras que la depuración consiste en aislar y resolver los problemas. La prueba y la depuración son partes inevitables del ciclo de desarrollo, que es mejor incorporar en una etapa inicial. La prueba exhaustiva y la depuración de componentes individuales simplifica notablemente estos procesos en las aplicaciones integradas.

Los programadores suelen buscar diferentes niveles de solidez cuando comprueban y depuran sus aplicaciones:

  1. Ejecución sin bloqueos ni generación de mensajes de error.
  2. Acciones apropiadas en situaciones frecuentes.
  3. Acciones razonables o mensajes de error en diversas situaciones.
  4. Recuperación inmediata ante interacciones imprevistas del usuario.

Visual FoxPro ofrece un variado conjunto de herramientas para facilitar la tarea de aislar e identificar los problemas del código para que puedan resolverse de forma eficaz. Sin embargo, una de las mejores maneras de crear aplicaciones robustas es buscar los posibles problemas antes de que se produzcan.

En esta sección

Crear marcadores y accesos directos a la lista de tareas
Discute cómo utilizar marcadores y accesos directos en el Editor para moverse fácilmente a través de su código.
Probar el proyecto
Proporciona información acerca de comprobar sus aplicación antes de la compilación final.
Controlar errores de tiempo de ejecución
Discute qué puede hacer cuando ocurren errores de tiempo de ejecución después que la aplicación empieza a ejecutarse.
Control estructurado de errores
Discute sobre la utilización de la estructura del control TRY...CATCH...FINALLY para controlar errores o excepciones que pueden ocurrir en su código en tiempo de ejecución.
Depurar antes de que aparezcan los errores
Describe como una buena práctica de codificación (utilizar espacios en blanco, incluir observaciones, adoptar una convención para nombres, etcétera) automáticamente tiende a reducir el número de errores en su código.
Aislar los problemas
Describe como utilizar el entorno de depuración de Visual FoxPro para aislar aquellos problemas que se identifican en las pruebas.

Secciones relacionadas

Desarrollar aplicaciones Visual FoxPro
Esta sección incluye información conceptual acerca de cómo desarrollar aplicaciones Visual FoxPro, instrucciones para crear bases de datos y la interfaz de usuario y otras tareas necesarias para crear aplicaciones Visual FoxPro
Trabajar con proyectos
Definir una configuración de proyecto y un grupo de archivos que producen un programa o archivos o archivos binarios finales.
Compilar una aplicación
Explica cómo utilizar la aproximación modular para verificar la funcionalidad de cada componente que cree y luego compilarlos en una aplicación, la cual ensambla en un ejecutable los componentes de su proyecto.
Distribuir aplicaciones
Para distribuir sus aplicaciones debe incluir todos los archivos necesarios y crear discos de distribución después que haya completado el desarrollo y prueba de su aplicación.


Crear marcadores y accesos directos a lista de tareas

Los marcadores y los accesos directos le permiten examinar el código con facilidad. Puede establecer marcadores y accesos directos, y después utilizar teclas de método abreviado para activarlos. Los marcadores son temporales, se conservan si cierra y abre la ventana de edición, pero se eliminan si sale y reinicia Visual FoxPro..

Los accesos directos son como marcadores con nombre y persisten entre las sesiones de modificación. Al incluir un acceso directo en el código, se crea una entrada en la Lista de tareas, lo que permite examinar con mayor facilidad el código marcado. Se puede pasar de uno a otro acceso directo de la misma manera que con los marcadores.

Los marcadores están relacionados con la ventana de edición mas que con su contenido. Durante una sesión de edición, los marcadores están relacionados con la posición dentro de la ventana y no con el contenido del archivo actual. Por lo tanto, ciertas operaciones de edición, como insertar texto antes de un marcador, hace que el marcador se relacione a una línea diferente a la cual estaba asociado previamente. Si no desea la asociación con la nueva línea debe quitar el marcador o acceso directo existente y agregar uno nuevo en la posición que deseada.

Cada línea de código puede contener un marcador o un acceso directo, pero no ambos.

Si el Margen de selección no está disponible en el Editor, utilice el Ficha Editor, cuadro de diálogo Opciones para especificar el margen.

Para crear marcadores

  • En el Editor, coloque el cursor del ratón en el Margen de selección próximo a la línea de código que desea marcar, y presione la tecla Mayús mientras hace doble clic.

    –O bien–

    En el Editor, coloque el cursor en la línea de código que desea marcar y presione la combinación de teclas Alt + Mayús + F2.

Para crear accesos directos a lista de tareas

  • En el Editor, coloque el cursor del ratón en el Margen de selección próximo a la línea de código que desea marcar y presione la tecla Ctrl mientras hace doble clic.

    –O bien–

    En el Editor, coloque el cursor en la línea de código que desea marcar y presione la combinación de teclas Alt + F2.

Para moverse entre marcadores y accesos directos

  1. Para ir al siguiente marcador, presione F2.
  2. Para ir al marcador anterior, presione Mayús + F2.

Para eliminar un marcador

  • En el Editor, coloque el cursor del ratón en el Margen de selección del icono del marcador y presione Mayús mientras hace doble clic.

    –O bien–

    En el Editor, coloque el cursor en la línea de código en la que desea eliminar la marca y presione la combinación de teclas Alt + Mayús + F2.

    –O bien–

    Elimine el código que contiene el marcador.

Para eliminar un acceso directo

  • En el Editor, coloque el cursor del ratón en el Margen de selección del icono del marcador y presione Ctrl mientras hace doble clic.

    –O bien–

    En el Editor, coloque el cursor en la línea de código de la que desea eliminar la marca y presione la combinación de teclas Alt + F2.

    –O bien–

    Elimine el código que contiene el acceso directo.

Vea también

Probar el proyecto | Ficha Editor, cuadro de diálogo Opciones | Usar el Administrador de lista de tareas | Ventana Administrador de lista de tareas


Probar el proyecto

Para comprobar las referencias y que todos los componentes están disponibles antes de compilar una aplicación, compruebe el proyecto. Para ello, deberá volver a generar el proyecto. Visual FoxPro tendrá que resolver las referencias a archivos y volver a compilar los archivos no actualizados.

Utilice marcadores, accesos directos y puntos de interrupción para marcar posiciones en el código a las que pueda tener acceso con facilidad. Para obtener más información, consulte Crear marcadores y accesos directos a la lista de tareas.

Para probar un proyecto

  1. En el Administrador de proyectos, elija Generar.
  2. En el cuadro de diálogo Opciones para generar elija Volver a generar el proyecto.
  3. Seleccione cualquier otra opción que necesite y elija Aceptar.

    –O bien–

  • Use el comando BUILD PROJECT.

Por ejemplo, para generar una aplicación denominada Myproj.pjx, escriba:

BUILD PROJECT myproj

Si se producen errores durante el proceso de generación, se incluyen en un archivo que recibe el nombre del proyecto y la extensión .err y se localiza en el directorio actual. El recuento de errores de compilación se muestra en la barra de estado. También puede ver el archivo de errores de forma inmediata.

Para mostrar el archivo de errores de forma inmediata

  • Seleccione el cuadro Mostrar errores.

Una vez generado el proyecto correctamente, deberá intentar ejecutarlo antes de crear una aplicación.

Para ejecutar una aplicación

  • En el Administrador de proyectos, resalte el programa principal y, a continuación, elija Ejecutar.

    –O bien–

  • En la ventana Comandos, ejecute un comando DO con el nombre del programa principal:
    DO MAINPROG.PRG

Si el programa se ejecuta correctamente, estará preparado para generar un archivo de aplicación que contenga todos los archivos incluidos en el proyecto.

Debería repetir los pasos de regeneración y ejecución del proyecto siempre que agregue componentes al proyecto. A menos que elija Volver a compilar todos los archivos en el cuadro de diálogo Opciones para generar, sólo se volverán a compilar los archivos que se hayan modificado desde la última generación.

Vea también

Generar un archivo de aplicación desde un proyecto | Compilar una aplicación | Administrador de proyectos | Opciones para generar | Uso del Dominio de prueba automatizada


Controlar errores de tiempo de ejecución

Los errores en tiempo de ejecución se producen después de que comienza la ejecución de la aplicación. Entre las acciones que podrían generar errores en tiempo de ejecución se encuentran la escritura en un archivo que no existe, el intento de abrir una tabla que ya está abierta, el intento de seleccionar una tabla que se ha cerrado, la presencia de un conflicto de datos, la división de un valor entre cero, etc.

A veces surgen errores cuando los usuarios ejecutan su aplicación. Puede llamar a su propia rutina de tratamiento de errores incluyendo ON ERROR. Normalmente, ON ERROR utiliza un comando DO para ejecutar una rutina que controla el error, como en este ejemplo:

ON ERROR DO My_Error

Si su aplicación no contiene ninguna rutina de tratamiento de errores y se produce un error, la aplicación se interrumpirá y Visual FoxPro presentará un mensaje de error con las siguientes opciones:

  • Cancelar Si el usuario elige "Cancelar", Visual FoxPro detendrá inmediatamente la ejecución de la aplicación y devolverá el control al sistema.
  • Ignorar Si el usuario elige "Ignorar", Visual FoxPro pasará por alto la línea que originó el error y continuará con la línea siguiente del programa.

Para ver una lista completa de los mensajes de error de Visual FoxPro y una explicación de los mismos, vea Mensajes de error ordenados alfabéticamente.

Sugerencia Asegúrese de proporcionar documentación a los usuarios que describa los errores que sean visibles y que sugiera posibles formas de corregirlos.

Los comandos y funciones siguientes resultan útiles para anticiparse y controlar los errores en tiempo de ejecución.

Para | Utilice
Llenar una matriz con información de error | AERROR( )
Abrir la ventana Depurador o Seguimiento | DEBUG o SET STEP ON
Generar un error específico para probar el control de errores | ERROR
Devolver un número de error | ERROR( )
Devolver una línea de programa en ejecución | LINENO( )
Devolver una cadena de mensajes de error | MESSAGE( )
Ejecutar un comando cuando se produce un error | ON ERROR
Devolver comandos asignados a los comandos de control de errores | ON( )
Devolver el nombre del programa actualmente en ejecución | PROGRAM( ) o SYS(16)
Volver a ejecutar el comando anterior | RETRY
Devolver cualquier parámetro de mensaje de error actual | SYS(2018)

Previsión de errores

La primera línea de defensa contra los errores en tiempo de ejecución es anticiparse y codificarlos antes de que ocurran. Por ejemplo, esta línea de código mueve el puntero al siguiente registro de la tabla:

SKIP

Este código funciona a menos que el puntero de registro ya esté situado detrás del último registro de la tabla y es en este punto donde se producirá el error.

Las líneas de código siguiente se anticipan a este error y lo evitan:

IF !EOF()
SKIP
IF EOF()
GO BOTTOM
ENDIF
ENDIF

Otro ejemplo es esta línea de código que muestra el cuadro de diálogo Abrir para permitir al usuario abrir una tabla en un área de trabajo nueva:

USE GETFILE('DBF') IN 0

El problema es que el usuario podría elegir Cancelar en el cuadro de diálogo Abrir o escribir el nombre de un archivo que no existe. El código siguiente se anticipa a esta situación comprobando que el archivo existe antes de que el usuario intente utilizarlo:

cNewTable = GETFILE('DBF')
IF FILE(cNewTable)
USE (cNewTable) IN 0
ENDIF

El usuario final también podría escribir el nombre de un archivo que no sea una tabla de Visual FoxPro. Para solucionar este problema, podría abrir el archivo con las funciones de E/S de archivo a bajo nivel, analizar el encabezado binario y comprobar que el archivo es una tabla válida. Sin embargo, esto implica algo de trabajo y podría hacer que la aplicación se ejecutara mucho más lentamente. Lo mejor sería controlar la situación durante el tiempo de ejecución mostrando un mensaje como “Abra otro archivo. Este archivo no es una tabla.” cuando se produzca el error 15, “No es una tabla”.

No puede, y probablemente tampoco lo desee, prever todos los errores posibles, por lo que tendrá que interceptar algunos con código que se ejecutará en caso de que se produzca un error en tiempo de ejecución.

Controlar errores de procedimientos

Cuando se produzca un error en el código de procedimientos, Visual FoxPro comprobará el código de control de errores asociado a una rutina ON ERROR. Si no existe ninguna rutina ON ERROR, Visual FoxPro muestra el mensaje de error predeterminado de Visual FoxPro. Para obtener una lista completa de los mensajes de error de Visual FoxPro y los números de error, vea la Ayuda.

Crear una rutina ON ERROR

Puede incluir cualquier comando o expresión válida de FoxPro después de ON ERROR, pero normalmente se llama a un procedimiento o programa de control de errores.

Para ver el funcionamiento de ON ERROR, puede escribir en la ventana Comandos un comando irreconocible, como:

qxy

Aparecerá un cuadro de diálogo de mensaje de error estándar de Visual FoxPro que indica “No se reconoce el verbo de comando”. No obstante, si ejecuta las líneas de código siguientes, aparecerá el error número 16 impreso en la ventana Resultados activa en lugar de mostrarse el mensaje de error estándar en un cuadro de diálogo:

ON ERROR ?ERROR()
qxy

Si se ejecuta ON ERROR sin escribir nada más, se restablecerán los mensajes de error integrados de Visual FoxPro:

ON ERROR

De forma esquemática, el código siguiente ilustra un controlador de errores ON ERROR:

LOCAL lcOldOnError
* Save the original error handler
lcOldOnError = ON("ERROR")
* Issue ON ERROR with the name of a procedure
ON ERROR DO errhandler WITH ERROR(), MESSAGE()
* code to which the error handling routine applies
* Reset the original error handler
ON ERROR &lcOldOnError
PROCEDURE errhandler
LOCAL aErrInfo[1]
AERROR(aErrInfo)
DO CASE
CASE aErrInfo[1] = 1 && File Does Not Exist
* display an appropriate message
* and take some action to fix the problem.
OTHERWISE
* display a generic message, maybe
* send high priority mail to an administrator
ENDPROC

Controlar errores en clases y objetos

Cuando se produce un error en el código del método, Visual FoxPro comprueba el código de control de errores asociado al evento Error del objeto. Si no se ha escrito código a nivel del objeto para el evento Error, se ejecuta el código del evento Error heredado de la clase principal o de otra clase superior de la jerarquía de clases. Si no se ha escrito código para el evento Error en ninguna clase de la jerarquía, Visual FoxPro comprueba la existencia de una rutina ON ERROR. Si no existe ninguna rutina ON ERROR, Visual FoxPro muestra el mensaje de error predeterminado de Visual FoxPro.

Nota El evento Error no ocurre si hay una rutina ON ERROR en la pila de llamadas.

En las clases puede encapsularse todo lo que necesita un control, incluido el control de errores para que el control pueda utilizarse en diversos entornos. Si posteriormente descubre otro error que podría encontrar el control, puede agregar la gestión de ese error a la clase; de este modo, todos los objetos basados en la clase heredarán automáticamente la función de control del nuevo error.

Por ejemplo, la clase vcr de la biblioteca de clases Buttons.vcx, ubicada en el directorio ...\Samples\Classes de Visual FoxPro se basa en la clase de contenedor de Visual FoxPro.

Cuatro botones de comandos del contenedor controlan el desplazamiento por la tabla moviendo el puntero de registro en una tabla con los comandos siguientes:

GO TOP
SKIP - 1
SKIP 1
GO BOTTOM.

Podría producirse un error si un usuario elige uno de los botones y no hay ninguna tabla abierta. Visual FoxPro intenta escribir en una tabla valores almacenados en el búfer cuando se mueve el puntero de registro. Por tanto, podría producirse un error si se habilita el almacenamiento optimista de filas en búfer y otro usuario ha cambiado un valor en el registro almacenado en el búfer.

Estos errores podrían producirse cuando el usuario elige cualquiera de los botones; por tanto, no tiene sentido tener cuatro métodos diferentes de control de errores. El código siguiente asociado al evento Error de cada uno de los botones de comando transfiere la información del error a una sola rutina de control de errores de la clase:

LPARAMETERS nError, cMethod, nLine
THIS.Parent.Error(nError, cMethod, nLine)

El código siguiente está asociado al evento Error de la clase vcr. El código real es diferente debido a los requisitos de codificación para la localización.

Parameters nError, cMethod, nLine
DO CASE
CASE nError = 13 && Alias not found
cNewTable = GETFILE('DBF')
IF FILE(cNewTable)
SELECT 0
USE (cNewTable)
This.SkipTable = ALIAS()
ELSE
This.SkipTable = ""
ENDIF
CASE nError = 1585 && Data Conflict
* Update conflict handled by a datachecker class
nConflictStatus = ;
THIS.DataChecker1.CheckConflicts()
IF nConflictStatus = 2
MESSAGEBOX "Can't resolve a data conflict."
ENDIF
OTHERWISE
* Display information about other errors.
cMsg="Error:" + ALLTRIM(STR(nError)) + CHR(13) ;
+ MESSAGE()+CHR(13)+"Program:"+PROGRAM()
nAnswer = MESSAGEBOX(cMsg, 2+48+512, "Error")
DO CASE
CASE nAnswer = 3   &&Abort
CANCEL
CASE nAnswer = 4   &&Retry
RETRY
OTHERWISE       && Ignore
RETURN
ENDCASE
ENDCASE

Es posible que desee estar seguro de que suministra información para un error que nunca ha controlado. De lo contrario, el código del evento de error se ejecutará pero no realizará ninguna acción y ya no se mostrará el mensaje de error predeterminado de Visual FoxPro. El resultado es que ni el programador ni el usuario sabrán lo que ha sucedido.

Dependiendo de los usuarios a los que esté destinada la aplicación, podría suministrar más información en el caso de un error no controlado, como el nombre y número de teléfono de la persona a la que se puede solicitar ayuda.

Retorno desde el código de control de errores

Después de ejecutarse el código de control de errores, se ejecuta la línea de código que sigue a la que ha producido el error. Si desea volver a ejecutar la línea de código que ha producido el error cuando haya cambiado la situación que lo ha producido, use el comando RETRY.

Nota Puede llamar al evento Error cuando el error encontrado no esté asociado a una línea del código. Por ejemplo, si llama al método CloseTables de un entorno de datos cuando AutoCloseTables está establecido como verdadero (.T.) y se libera el formulario, se generará un error interno cuando Visual FoxPro intente volver a cerrar las tablas. Puede interceptar este error, pero no existe ninguna línea de código para ejecutar RETRY.

Utilizar las rutinas de cierre de sesión

Puede crear su propia rutina de cierre de sesión si incluye el comando ON SHUTDOWN en el código. Normalmente, ON SHUTDOWN utiliza un comando DO para llamar a una rutina si intenta salir de la aplicación, como en este ejemplo:

ON SHUTDOWN DO My_Shutdown

Esta rutina suele incluir un cuadro de diálogo que pregunta al usuario si realmente desea salir de la aplicación actual. Si el usuario desea salir de la aplicación, la rutina puede cerrar los archivos abiertos y limpiar el entorno y posteriormente ejecutar el comando QUIT. Si el usuario no desea salir de la aplicación actual, la rutina puede devolver el control a la aplicación.

Vea también

Registrar el trayecto del código | Mostrar resultados | Probar y depurar aplicaciones | ON ERROR | Mostrar los valores almacenados


Control Estructurado de Errores

Visual FoxPro proporciona la estructura de control TRY...CATCH...FINALLY para manejar errores o excepciones, que puedan ocurrir en el código en tiempo de ejecución.

TRY...CATCH…FINALLY

TRY…CATCH…FINALLY contiene bloques de código para cada una de las instrucciones TRY, CATCH, y FINALLY. En estos bloques es posible realizar las siguientes tareas de manejo de errores:

  • Generar una excepción
  • Capturar una excepción
  • Anidar bloques TRY…CATCH
  • Elevar una excepción
  • Salir de TRY…CATCH…FINALLY
  • Utilizar comandos
  • Ejecutar instrucciones finales

La estructura TRY...CATCH…FINALLY comienza con la instrucción TRY, la cual marca el inicio del bloque TRY. En el bloque TRY es posible especificar un conjunto de instrucciones de código en las cuales puede producirse algún error de tiempo de ejecución. Si su programa completa el bloque TRY sin generar ninguna excepción, omite el bloque CATCH y busca el bloque FINALLY al final de la misma. Si existe, entonces ejecuta las instrucciones correspondientes. Si el bloque FINALLY no existe, el programa abandona la estructura y continúa con la siguiente instrucción posterior al comando ENDTRY, que marca el final de ella.

Generar una Excepción

Si ocurre un error en el bloque TRY, Visual FoxPro genera una excepción, que provoca que el PC trate el error en una rutina separada. Cuando ocurre el error, el código "lanza" una excepción, y las instrucciones especificadas en el bloque CATCH se ejecutan para manejar la excepción adecuadamente. Una vez que el programa resuelve el error, el programa salta al bloque FINALLY para ejecutar las instrucciones restantes y abandonar la estructura TRY…CATCH…FINALLY.

Capturar una excepción

Cuando ocurre un error en el bloque TRY, Visual FoxPro genera una excepción, y el programa se mueve a la primera instrucción CATCH. El programa busca instrucciones CATCH sólo cuando ocurre un error. Se puede especificar cualquier número de instrucciones CATCH, incluso ninguna. El programa examina las instrucciones CATCH en el orden en que aparecen en el bloque CATCH para ver si alguna de ellas puede manejar la excepción. Si el programa encuentra una instrucción CATCH que maneje la excepción, ejecuta el código correspondiente.

La instrucción CATCH puede contener cláusulas opcionales TO y WHEN. Es posible especificar una variable de memoria en la cláusula TO para almacenar una referencia a un objeto Exception, que es creado sólo cuando ocurre una excepción. Si se quiere establecer una condición para que se ejecute el bloque CATCH, se puede especificar una expresión en la cláusula WHEN, que debe evaluarse a Verdadero (.T.) para que se ejecute el bloque CATCH. Las instrucciones CATCH funcionan de modo similar a las instrucciones CASE en cuanto a que la condición especificada en la cláusula WHEN debe evaluarse como una expresión lógica. Si las cláusulas TO y WHEN no existen, la instrucción CATCH se evalúa como CATCH WHEN .T. (Verdadero).

Después de que el programa ha ejecutado instrucciones en el bloque CATCH, no regresa a la instrucción TRY, y no busca otras instrucciones CATCH. En vez de eso, el programa procede directamente a la instrucción FINALLY, si existe. De otro modo, el programa se mueve a la instrucción inmediatamente posterior a ENDTRY.

Nota Visual FoxPro permite la existencia de estructuras TRY...CATCH…FINALLY que no contengan bloques CATCH y FINALLY. Visual FoxPro simplemente envía el error generado a un controlador de errores de nivel superior.

Prioridad del administrador de errores

Si ocurre un error en un método de un objeto llamado desde un bloque TRY, Visual FoxPro sigue el procedimiento del controlador de errores para ese objeto particular. Este protocolo proporciona una manera de mantener el encapsulamiento y control de sus componentes. Por ejemplo, supongamos que la línea MyForm.Refresh() en el bloque TRY produce un error. Si existe código en el evento Error del formulario para ser utilizado, el evento Error tiene preferencia. Si no existe ningún evento Error, entonces la instrucción CATCH se ejecuta para tratar de controlar el error.

La prioridad del controlador de errores para el código del objeto se describe a continuación:

  • TRY…CATCH en el código del método en el que ocurre la excepción. Esto se aplica a procedimientos externos, no a otros métodos, que se llaman en el método
  • Evento Error, si existe
  • TRY...CATCH más alto en la cadena de llamadas que pueda existir en un método de nivel superior
  • Controlador de errores del sistema de Visual FoxPro
Precaución: El uso de TRY...CATCH en un método de una clase que no tenga un evento Error puede interferir con código existente y posiblemente romper la compatibilidad con versiones anteriores. Por tanto, las instrucciones TRY...CATCH que aparezcan en métodos sólo deberían llamar otros métodos de clases que contengan un evento Error.

El siguiente ejemplo muestra cómo la línea de código, ? "BBB", nunca se ejecuta debido a que se llama myMethod2 desde myMethod1 sin que exista un evento Error para myMethod2. Sin embargo, si myMethod2 fuera llamado directamente, ON ERROR DO errorHandler controla el error y devuelve la ejecución al programa de modo que ? "BBB" pueda ejecutarse.

ON ERROR DO errorHandler
x=CREATEOBJECT("myClass")
x.myMethod1()
DEFINE CLASS myClass AS Session
PROCEDURE myMethod1
TRY
THIS.myMethod2()
CATCH TO oErr
? "Catch:",oErr.ErrorNo
ENDTRY
ENDPROC
PROCEDURE myMethod2
? "AAA"
x=y         && No existe la variable y.
&& CATCH captura este error.
? "BBB"      && No se ejecuta si CATCH ha capturado el error previo.
ENDPROC
ENDDEFINE

Si ocurre un error en la cadena de bloques TRY…CATCH dentro del método de un objeto, son de aplicación las siguientes reglas:

  • Si el mismo código del bloque TRY genera una excepción, la instrucción CATCH emplea la excepción. Si no existe ninguna instrucción CATCH para usar la excepción, el evento Error utiliza la excepción. De otro modo, Visual FoxPro eleva el error a un controlador adecuado. El mismo comportamiento se aplica si el error ocurre en un procedimiento externo llamado desde un bloque TRY. Por ejemplo:
    x=CREATEOBJECT("myClass")
x.myMethod()
DEFINE CLASS myClass AS Session
PROCEDURE myMethod
TRY
DO myProc
CATCH TO oErr
? "Catch:",oErr.Errorno
ENDTRY
ENDPROC
PROCEDURE Error(nError, cMethod, nLine)
? "Error:",nError
ENDPROC
ENDDEFINE
PROCEDURE myProc
x=y   && La variable y no existe. CATCH maneja este error.
ENDPROC
  • Si el método de un objeto llamado desde el bloque TRY genera una excepción, el evento Error para el método del objeto maneja la excepción. Esto mantiene la encapsulación del objeto porque dicho método puede haber sido llamado desde otro método. Por ejemplo:
    x=CREATEOBJECT("myClass")
x.myMethod1()
DEFINE CLASS myClass AS Session
PROCEDURE myMethod1
TRY
THIS.myMethod2()
CATCH TO oErr
? "Catch:",oErr.Errorno
ENDTRY
ENDPROC
PROCEDURE myMethod2
x=y   && El evento Error maneja este error.
ENDPROC
PROCEDURE Error(nError, cMethod, nLine)
? "Error:",nError
ENDPROC
ENDDEFINE

Anidar bloques TRY…CATCH

  • Los bloques TRY...CATCH pueden anidarse. Esto es, se puede insertar una estructura TRY...CATCH…FINALLY en el interior de un bloque TRY, CATCH, o FINALLY.

Devolver una excepción a un nivel anterior

Es posible incluir una instrucción THROW si se quiere devolver la excepción a un controlador de errores de nivel superior. Se puede ejecutar THROW desde cualquier bloque de código de una estructura TRY…CATCH…FINALLY. Sin embargo, solo se puede usar THROW en un fragmento de código donde haya un controlador de errores para capturar la excepción; No es posible por tanto, ejecutar THROW desde la Ventana de Comandos.

Precaución: Ejecutar el comando THROW fuera de una estructura TRY...CATCH...FINALLY sin un controlador de errores adecuado, provoca que el programa termine.

Si se ejecuta THROW fuera de la sección TRY...CATCH, donde la excepción provocada se controla por una rutina ON ERROR o bien por el controlador del sistema de Visual FoxPro en lugar de ser por el evento Error, la ejecución del programa no regresa al punto donde se encuentra la instrucción THROW. El siguiente ejemplo muestra cómo la línea de código, ?2, no se ejecuta. Este comportamiento difiere del comportamiento tradicional en que la ejecución del programa regresaba al punto en que ocurrió el error:

ON ERROR ? ERROR()
DO myProc1
PROCEDURE myProc1
?1
THROW 11
?2
ENDPROC

Hay que recuerdar que el propósito de ejecutar THROW es devolver el error a un controlador de errores de nivel superior.

Si existe un bloque TRY...CATCH externo a una instrucción THROW cuando se ejecuta desde un bloque CATCH o FINALLY, Visual FoxPro reasigna la variable de memoria especificada en la cláusula TO de la referencia al objeto de la excepción anterior a una referencia al objeto más reciente creado por la excepción provocada. Si no existe una estructura TRY...CATCH externa, Visual FoxPro relanza la excepción a la rutina ON ERROR o un evento error, si es que existen. En caso contrario, Visual FoxPro llama al controlador del sistema.

Salir de TRY…CATCH…FINALLY

Se puede incluir una instrucción EXIT en un bloque TRY o CATCH para salir del bloque de código inmediatamente. El programa continúa ejecutando el código tras la instrucción FINALLY, si existe, o tras la línea inmediatamente posterior a la instrucción ENDTRY.

Uso de comandos en TRY…CATCH…FINALLY

Se pueden utilizar distintos comandos de Visual FoxPro que afectan al modo en que se ejecuta normalmente el código en el interior de un bloque TRY o CATCH. Sin embargo, si se usa alguno de estos comandos en un bloque no permitido, Visual FoxPro genera un error en tiempo de ejecución. La instrucción FINALLY siempre se ejecuta antes de utilizar estos comandos salvo que se use CANCEL o QUIT. La siguiente tabla enumera los comandos de Visual FoxPro que pueden o no pueden usarse en un bloque TRY, CATCH, o FINALLY.

Comando | TRY | CATCH | FINALLY
CANCEL | Sí | Sí | Sí
CLEAR ALL | Sí | No | No
CLOSE ALL | Sí | Sí | Sí
DOEVENTS | Sí | Sí | Sí
ERROR | Sí | Sí | Sí
EXIT | Sí | Sí | Sí
LOOP | No | No | No
QUIT | Sí | Sí | Sí
RELEASE | Sí | Sí | Sí
RESUME | Sí | Sí | Sí
RETRY | No | No | No
RETURN | No | No | No
RETURN TO MASTER | No | No | No
RETURN TO <ProcedureName> | No | No | No
SET STEP ON | Sí | Sí | Sí
SUSPEND | Sí | Sí | Sí
THROW | Sí | Sí | Sí
Nota Es posible incluir comandos como LOOP en un bloque, siempre y cuando se encuentren en el interior de una instrucción de control como FOR EACH...ENDFOR o DO WHILE…ENDDO. Se puede ejecutar el comando ERROR desde bloques TRY, CATCH, o FINALLY.

TRY...CATCH…FINALLY trata el comando ERROR como cualquier otra excepción o como el uso del comando THROW.

Ejecutar instrucciones finales

Si el programa encuentra una instrucción FINALLY, ejecuta el código del bloque FINALLY. El bloque FINALLY suele usarse para liberar los recursos utilizados por el bloque TRY y siempre es el último fragmento de código en ejecutarse antes de salir de la estructura TRY...CATCH…FINALLY.

El bloque FINALLY siempre se ejecuta cuando ocurre una excepción, utilizada o no, incluso si es aplicable otro administrador de errores, como la rutina ON ERROR o el evento error de un objeto.

Nota No es posible transferir explícitamente el control del programa directamente a un bloque CATCH o FINALLY. No es posible evitar la instrucción FINALLY si existe, a menos que se use el comando CANCEL para detener la ejecución del programa. Si desea evitar la instrucción FINALLY, debe incluir código al principio del bloque FINALLY para comprobar si existe una condición determinada y salir del bloque si dicha condición se cumple.

Tras la ejecución del bloque FINALLY, el programa continúa en la instrucción inmediatamente posterior a la instrucción ENDTRY. La instrucción ENDTRY termina la estructura TRY...CATCH…FINALLY.

Objetos Exception

Cuando ocurre un error en un bloque TRY, Visual FoxPro crea automáticamente un objeto Exception, que contiene detalles acerca del error. Este objeto suele utilizarse en una instrucción CATCH, y se almacena en la variable de memoria especificada por VarName en la cláusula TO.

El objeto Exception siempre se crea como una instancia de la clase base Exception. No es posible ejecutar código de usuario cuando se crea un objeto Exception. Si se desea usar una subclase de la clase Exception, se deberá relanzar la excepción en el bloque CATCH o FINALLY.

Si ocurre un error o una excepción en el bloque CATCH o FINALLY, la misma estructura TRY...CATCH…FINALLY no maneja dicha excepción. En vez de eso, Visual FoxPro pasa los errores que ocurran en los bloques CATCH o FINALLY a un controlador de errores externo, como un evento error o el comando ON ERROR, que a su vez pueden incluir otra estructura TRY...CATCH…FINALLY. El controlador externo se hace cargo de los errores en el caso que TRY...CATCH…FINALLY no contenga ninguna instrucción CATCH o si no existe ninguna instrucción CATCH que pueda controlar el error. Si se desea una estructura TRY...CATCH…FINALLY que capture todos los errores, asegúrese de que contenga una instrucción CATCH que siempre se evalúe a Verdadero (.T.).

Nota Sólo los archivos de programa de Visual FoxPro (.prg) soportan objetos Exception. No así las librerías vcx.

Vea también

Nuevas clases, comandos y funciones | Probar y depurar aplicaciones | TRY...CATCH...FINALLY (Comando) | Exception (Clase)


Depurar antes de que aparezcan los errores

La teoría muestra que las buenas costumbres de escritura de código (uso de espacios en blanco, inclusión de observaciones, adhesión a las convenciones de nomenclatura, etc.) tienden a reducir automáticamente el número de errores del código. Además, hay algunos pasos que se pueden realizar en el proceso de programación para que las operaciones de prueba y depuración resulten más fáciles posteriormente; por ejemplo, la creación de un entorno de pruebas, el establecimiento de aserciones y la presentación de secuencias de eventos.

Crear un entorno de prueba

El entorno de sistema en el que piensa ejecutar una aplicación tiene la misma importancia que el entorno de datos que ha instalado para la propia aplicación. Para asegurar la portabilidad y crear un contexto adecuado de pruebas y depuración, es necesario tener en cuenta el hardware y el software, las rutas de acceso del sistema, la estructura de carpetas, y las propiedades y ubicación de los archivos.

Hardware y software

Para obtener la máxima portabilidad, debe programar las aplicaciones en la plataforma común de menor nivel en la que va a ejecutarlas. Para establecer una plataforma de base:

  • Programe las aplicaciones utilizando el modo de vídeo común más bajo.
  • Determine los requisitos básicos para la RAM y el espacio de almacenamiento de medios, incluyendo los controladores necesarios o el software que se ejecute de forma simultánea.
  • Tenga en cuenta casos especiales de memoria, archivo y bloqueo de registros para las versiones en red y autónoma de las aplicaciones.

Rutas de acceso del sistema y propiedades de archivos

Con el fin de garantizar que todos los archivos de programa necesarios sean fácilmente accesibles en todos los equipos en los que se ejecuta la aplicación, también puede necesitar una configuración de archivo de base. Para definir una línea de base para la configuración, responda a las siguientes preguntas:

  • ¿Necesita su aplicación rutas de acceso comunes de sistema?
  • ¿Ha establecido propiedades adecuadas de acceso a archivos?
  • ¿Se han establecido correctamente permisos de red para cada usuario?

Estructura de directorios y ubicaciones de archivos

Si el código fuente hace referencia a rutas de acceso o a nombres de archivos absolutos, es indispensable que estas rutas de acceso y archivos existan en el momento de instalar la aplicación en cualquier otro equipo. Para evitar este caso puede seguir uno de estos procedimientos:

  • Utilice archivos de configuración de Visual FoxPro. Para obtener información adicional acerca del uso de los archivos de configuración, vea Personalizar el entorno de Visual FoxPro .
  • Cree un directorio o una estructura de directorios independiente para mantener los archivos de origen apartados de los archivos de aplicación generados. De esta forma, puede comprobar las referencias de la aplicación terminada y saber exactamente los archivos que necesita distribuir.
  • Use rutas de acceso relativas.

Establecer aserciones

Puede incluir aserciones en el código para comprobar las suposiciones que tiene sobre el entorno en tiempo de ejecución del código.

Para establecer una aserción

  • Use el comando ASSERT para identificar las suposiciones del programa.

    Cuando la condición estipulada en el comando ASSERT se evalúa con el resultado falso (.F.), aparece un cuadro de mensajes de aserciones y se repite en la ventana Resultados del depurador.

Por ejemplo, podría escribir una función que espera un valor del parámetro distinto de cero. La línea de código siguiente en la función le avisa si el valor del parámetro es 0:

ASSERT nParm != 0 MESSAGE "Recibido un parámetro de 0"

Puede especificar si los mensajes de aserciones se van a mostrar mediante el comando SET ASSERTS. Como valor predeterminado, los mensajes de aserciones no se muestran.

Mostrar secuencias de eventos

Cuando vea que se producen eventos en relación con otros eventos, puede determinar la ubicación más eficaz para incluir el código.

Para hacer un seguimiento de eventos

  • En el menú Herramientas de la ventana Depurador, elija Seguimiento de eventos.

    –O bien–

  • Utilice el comando SET EVENTTRACKING.

El cuadro de diálogo Seguimiento de eventos permite seleccionar los eventos que desee ver.

Nota En este ejemplo, los eventos MouseMove y Paint se han eliminado de la lista Eventos para seguir, porque estos eventos se producen con tanta frecuencia que dificultan la visión de las secuencias de los demás eventos.

Cuando el seguimiento de eventos está habilitado, cada vez que se produzca un evento de sistema en la lista Eventos para seguir, el nombre del evento aparecerá en la ventana Resultados del depurador o se escribirá en un archivo. Si opta por mostrar los eventos en la ventana Resultados del depurador, también podrá guardarlos en un archivo según se describe en Mostrar resultados.

Nota Si la ventana Resultados del depurador no está abierta, los eventos no se presentarán en la lista aun cuando esté activado el cuadro Ventana Resultados del depurador.

Vea también

Establecer aserciones | Aislar los problemas | Probar y depurar aplicaciones | Depurador | Mostrar los valores almacenados | Uso del Dominio de prueba automatizada


Aislar los problemas

Una vez identificados los problemas mediante la prueba, puede usar el entorno de depuración de Visual FoxPro para aislarlos con los pasos siguientes:

  • Iniciar una sesión de depuración
  • Realizar seguimiento con el código
  • Suspender la ejecución del programa
  • Mostrar los valores almacenados
  • Mostrar resultados

Iniciar una sesión de depuración

Para iniciar una sesión de depuración, abra el entorno de depuración.

Para abrir el depurador

  • En el menú Herramientas, elija Depurador.
    Nota Si va a realizar la depuración en el entorno de Visual FoxPro, elija la herramienta de depuración que desee abrir en el menú Herramientas.

También puede abrir el depurador con cualquiera de los comandos siguientes:

DEBUG

SET STEP ON

SET ECHO ON

El depurador se abre automáticamente siempre que se encuentra una condición de punto de interrupción.

Realizar seguimiento con el código

Una de las estrategias de depuración más útiles que tiene a su disposición es la posibilidad de realizar un seguimiento del código, ver cada línea de código según se ejecute y comprobar los valores de las variables, propiedades y la configuración del entorno.

Para hacer el seguimiento del código

  1. Inicie una sesión de depuración.
  2. Si no hay ningún programa abierto en la ventana Seguimiento, elija Ejecutar en el menú Depurar.
  3. Elija Paso a paso por instrucciones en el menú Depurar o haga clic en el botón Paso a paso de la barra de herramientas.

Una flecha en el área gris situada a la izquierda del código indica la siguiente línea que se va a ejecutar.

Sugerencia Puede aplicar las sugerencias siguientes:
  • Establezca puntos de interrupción para reducir el intervalo de código por el que necesita pasar.
  • Puede ignorar una línea de código que sepa que va a generar un error colocando el cursor sobre la línea de código después de la línea problemática y eligiendo Configurar siguiente instrucción en el menú Depurar.
  • Si tiene mucho código asociado con eventos Timer, puede evitar el seguimiento de este código desactivando Mostrar eventos Timer en la ficha Depurar del cuadro de diálogo Opciones.

Si aísla un problema cuando esté depurando código de un programa u objeto, podrá repararlo inmediatamente.

Para reparar los problemas encontrados durante el seguimiento del código

  • En el menú Depurar, elija Reparar.

Cuando elija Reparar en el menú Depurar, la ejecución del programa se cancela y el editor de código se abre donde esté situado el cursor en la ventana Seguimiento.

Vea también

Mostrar secuencias de eventos | Suspender la ejecución del programa | Probar y depurar aplicaciones | DEBUG | Mostrar los valores almacenados | Uso del Dominio de prueba automatizada


Suspender la ejecución del programa

Los puntos de interrupción permiten suspender la ejecución del programa. Una vez suspendida, puede comprobar los valores de las variables y propiedades, ver la configuración del entorno y examinar secciones de código línea a línea sin tener que recorrer todo el código.

Sugerencia También puede suspender la ejecución de un programa que esté en ejecución si presiona la tecla ESC en la ventana Seguimiento.

Suspender la ejecución en una línea de código

Puede establecer puntos de interrupción en el código para suspender la ejecución del programa de diferentes maneras. Si conoce el punto exacto en el que desea suspender la ejecución del programa, puede establecer un punto de interrupción directamente en esa línea de código.

Para establecer un punto de interrupción en una línea de código determinada

En la ventana Seguimiento, busque la línea de código en la que desee establecer el punto de interrupción y realice una de las operaciones siguientes:

  1. Sitúe el cursor en la línea de código.
  2. Presione F9 o haga clic en el botón Alternar punto de interrupción de la barra de herramientas Depurador.

    –O bien–

  • Haga doble clic en el área gris situada a la izquierda de la línea de código.

Aparecerá un punto sólido en el área gris de la izquierda de la línea de código para indicar que se ha establecido un punto de interrupción en esa línea.

Sugerencia Si va a depurar objetos, puede localizar líneas de código determinadas en la ventana Seguimiento; para ello, elija el objeto en la lista Objeto y el método o evento en la lista Procedimiento.

También puede establecer puntos de interrupción si especifica ubicaciones y archivos en el cuadro de diálogo Puntos de interrupción.

Ejemplos de ubicaciones y archivos de puntos de interrupción

Ubicación Archivo Dónde se suspende la ejecución
ErrHandler
 C:\Myapp\Main.prg La primera línea ejecutable de un procedimiento denominado ErrHandler en Main.prg.
Main,10
 C:\Myapp\Main.prg La décima línea del programa denominado Main.
Click
 C:\Myapp\Form.scx La primera línea ejecutable de cualquier procedimiento, función, método o evento denominado Click en Form.scx.
cmdNext.Click
 C:\Myapp\Form.scx La primera línea ejecutable asociada al evento Click de cmdNext en Form.scx.
cmdNext::Click
 La primera línea ejecutable del evento Click de cualquier control cuya ParentClass sea cmdNext en cualquier archivo.

Suspender la ejecución cuando los valores cambian

Si desea saber cuándo cambia el valor de una variable o una propiedad, o cuándo cambia una condición del tiempo de ejecución, puede establecer un punto de interrupción en una expresión.

Para suspender la ejecución del programa cuando ha cambiado el valor de una expresión

  1. En el menú Herramientas de la ventana Depurador, elija Puntos de interrupción para abrir el cuadro de diálogo Puntos de interrupción.
  2. En la lista Tipo, elija Punto de interrupción cuando la expresión ha cambiado.
  3. Escriba la expresión en el cuadro Expresión.

Ejemplos de expresiones de puntos de interrupción

Expresión Uso
RECNO( )
 Suspende la ejecución cuando el puntero de registro se mueve en la tabla.
PROGRAM( )
 Suspende la ejecución en la primera línea de cualquier programa, procedimiento, método o evento nuevo.
myform.Text1.Value
 Suspende la ejecución siempre que se cambie el valor de esta propiedad de forma interactiva o por medio de programación.

Suspender de forma condicional la ejecución

A menudo deseará suspender la ejecución de un programa no en una línea determinada, sino cuando una determinada condición sea verdadera.

Para suspender la ejecución del programa cuando una expresión se evalúe como verdadera

  1. En el menú Herramientas de la ventana Depurador, elija Puntos de interrupción para abrir el cuadro de diálogo Puntos de interrupción.
  2. En la lista Tipo, elija Punto de interrupción cuando la expresión es verdadera.
  3. Escriba la expresión en el cuadro Expresión.
  4. Elija Agregar para agregar el punto de interrupción a la lista Puntos de interrupción.

Ejemplos de expresiones de puntos de interrupción

Expresión Uso
EOF( )
 Suspende la ejecución cuando el puntero de registro ha sobrepasado el último registro de una tabla.
'CLICK'$PROGRAM( )
 Suspende la ejecución de la primera línea de código asociada a un evento Click o DblClick.
nReturnValue = 6
 Si el valor devuelto de un cuadro de mensajes se almacena en nReturnValue, se suspende la ejecución cuando un usuario elige Sí en el cuadro de mensajes.

Suspender de forma condicional la ejecución en una línea de código

Puede especificar que la ejecución del programa se suspenda en una línea determinada sólo cuando una condición concreta sea verdadera.

Para suspender la ejecución del programa en una línea determinada cuando la expresión se evalúa como verdadera

  1. En el menú Herramientas de la ventana Depurador, elija Puntos de interrupción para abrir el cuadro de diálogo Puntos de interrupción.
  2. En la lista Tipo, elija Punto de interrupción cuando la expresión es verdadera.
  3. Escriba la ubicación en el cuadro Ubicación.
  4. Escriba la expresión en el cuadro Expresión.
  5. Elija Agregar para agregar el punto de interrupción a la lista Puntos de interrupción.
  6. Elija Aceptar.
    Sugerencia Suele ser más fácil buscar la línea de código en la ventana Seguimiento, establecer un punto de interrupción y modificarlo en el cuadro de diálogo Punto de interrupción. Para ello, cambie el Tipo de Punto de interrupción en la ubicación a Punto de interrupción cuando la expresión es verdadera y, a continuación, agregue la expresión.

Quitar puntos de interrupción

Puede deshabilitar los puntos de interrupción sin quitarlos en el cuadro de diálogo Puntos de interrupción. Puede eliminar puntos de interrupción del tipo “punto de interrupción en la ubicación” en la ventana Seguimiento.

Para quitar un punto de interrupción de una línea de código

En la ventana Seguimiento, busque el punto de interrupción y realice una de las operaciones siguientes:

  • Sitúe el cursor en la línea de código y elija Alternar punto de interrupción en la barra de herramientas Depurador.

    –O bien–

  • Haga doble clic en el área gris situada a la izquierda de la línea de código.

Vea también

Aislar los problemas | Mostrar los valores almacenados | Probar y depurar aplicaciones | Mostrar resultados | Seguimiento | Depurador


Mostrar los valores almacenados

En la ventana Depurador, puede ver fácilmente los valores de tiempo de ejecución de las variables, elementos de matriz, propiedades y expresiones en las ventanas siguientes:

  • Ventana Locales
  • Ventana Inspección
  • Ventana Seguimiento

Mostrar los valores almacenados en la ventana Locales

La ventana Locales muestra todas las variables, matrices, objetos y miembros de objetos que están visibles en cualquier programa, procedimiento o método de la pila de llamadas. Como opción predeterminada, los valores del programa que se está ejecutando actualmente se muestran en la ventana Locales. Puede ver estos valores para otros programas o procedimientos de la pila de llamadas si elige los programas o procedimientos en la lista Locales para.

Puede desglosar las matrices u objetos si hace clic en el signo más (+) junto al nombre de la matriz u objeto, en las ventanas Locales e Inspección. Cuando desglose, podrá ver los valores de todos los elementos de las matrices y las configuraciones de propiedades de los objetos.

Puede incluso cambiar los valores de las variables, elementos de matrices y propiedades en las ventanas Locales e Inspección seleccionando la variable, elemento de matriz o propiedad si hace clic en la columna Valor y escribe un valor nuevo.

Mostrar los valores almacenados en la ventana Inspección

En el cuadro Inspección de la ventana Inspección, escriba cualquier expresión válida de Visual FoxPro y presione ENTRAR. El valor y el tipo de expresión aparecen en la lista de la ventana Inspección.

Nota En la ventana Inspección no se pueden introducir expresiones que creen objetos.

También puede seleccionar variables o expresiones en la ventana Seguimiento o en otras ventanas del Depurador y arrastrarlas hasta la ventana Inspección.

Los valores que se hayan modificado aparecen en rojo en la ventana Inspección.

Para quitar un elemento de la lista de la ventana Inspección

Seleccione el elemento y elija una de las opciones siguientes:

  • Presione SUPR.

    –O bien–

  • En el menú contextual, elija Eliminar inspección.

Para modificar una inspección

  • Haga doble clic en la inspección en la ventana Inspección y modifíquela.

Mostrar los valores almacenados en la ventana Seguimiento

Sitúe el cursor sobre cualquier variable, elemento de matriz o propiedad de la ventana Seguimiento para mostrar su valor actual en una sugerencia del valor.

Sugerencia del valor en la ventana Seguimiento

Vea también

Suspender la ejecución del programa | Mostrar resultados | Probar y depurar aplicaciones | Registrar el trayecto del código | Controlar errores de tiempo de ejecución


Mostrar resultados

El comando DEBUGOUT permite escribir valores de la ventana Resultados del depurador en un registro de archivo de texto. También puede utilizar el comando SET DEBUGOUT TO o la ficha Depurar del cuadro de diálogo Opciones.

Si no está escribiendo comandos DEBUGOUT en un archivo de texto, la ventana Resultados del depurador debe estar abierta para que pueda escribir los valores de DEBUGOUT. La siguiente línea de código se imprime en la ventana Resultados del depurador en el momento en que se ejecuta la línea de código:

DEBUGOUT DATETIME( )

Además, puede habilitar el seguimiento de eventos y optar por hacer que el nombre y los parámetros de cada evento que se produzca se muestren en la ventana Resultados del depurador.

Vea también

Mostrar los valores almacenados | Registrar el trayecto del código | Probar y depurar aplicaciones | Controlar errores de tiempo de ejecución | Suspender la ejecución del programa


Distribuir aplicaciones

Después de haber programado y probado una aplicación, puede prepararla para su distribución con todos los archivos necesarios y crear discos de distribución.

En esta sección

Proceso de distribución de aplicaciones
Muestra una introducción a los pasos necesarios para distribuir su aplicación.
Preparar para distribuir aplicaciones
Describe las consideraciones al preparar la aplicación para el entorno en tiempo de ejecución, es posible que desee elegir el tipo de generación, tener en cuenta los problemas del entorno, asegurar el comportamiento correcto del tiempo de ejecución e incluir opciones del menú de sistema de Visual FoxPro.
Archivos de recursos en las aplicaciones
Describe los archivos de recursos que puede incluir en su aplicación para extender sus funciones, como FoxUser.dbf, archivos de bibliotecas externas, controles ActiveX y componentes COM, archivos de configuración y de ayudas, etcétera.
Características y archivos restringidos y distribuibles de Visual FoxPro
Describe las características y archivos restringidos de Visual FoxPro que debe quitar de su aplicación, así como aquellos archivos que puede distribuir con su aplicación.
Incluir archivos con aplicaciones para distribución
Describe cómo agregar o incluir archivos que desee distribuir con la aplicación.

Secciones relacionadas

Desarrollar aplicaciones Visual FoxPro
Esta sección incluye información conceptual acerca de cómo desarrollar aplicaciones Visual FoxPro, instrucciones para crear bases de datos y la interfaz de usuario, y otras tareas necesarias para crear aplicaciones Visual FoxPro.
Trabajar con proyectos
Definir una configuración de proyecto y un grupo de archivos que producen un programa o archivos o archivos binarios finales.
Crear Ayuda
Puede incluir archivos de Ayuda en su aplicación con el fin de proporcionar información valiosa para los usuarios de su aplicación.
Compilar una aplicación
Explica cómo utilizar la aproximación modular para verificar la funcionalidad de cada componente que cree y luego compilarlos en una aplicación, la cual ensambla en un ejecutable los componentes de su proyecto.
Probar y depurar aplicaciones
Describe las herramientas de depuración de Visual FoxPro que le ayudan a encontrar y corregir cualquier error que haya descubierto en sus aplicaciones.


Proceso de distribución de una aplicación

La lista siguiente identifica los pasos que necesita seguir para distribuir una aplicación de Visual FoxPro.

  1. Crear y depurar la aplicación mediante el entorno de programación de Visual FoxPro.
  2. Preparar y personalizar la aplicación para el entorno en tiempo de ejecución. Para obtener detalles, consulte Preparar una aplicación para su distribución.
  3. Asegúrese que su proyecto incluye todos los archivos necesarios para su aplicación, incluyendo archivos de recursos, archivos gráficos o plantillas. Para más información acerca de los tipos de archivos que puede incluir en su aplicación y cómo incluir archivos, consulte Archivos de recursos en las aplicaciones e Incluir archivos con aplicaciones para distribución.
  4. Quitar de su aplicación cualquier característica o archivo restringido de Visual FoxPro. Ciertas características del entorno de desarrollo no están disponibles en el entorno de tiempo de ejecución y debe quitarlas de su aplicación. Asegúrese que cualquier archivo que planea distribuir cumple las directrices para la redistribución de archivos. Para más información sobre archivos restringidos y distribuibles, ver Características y archivos restringidos y distribuibles de Visual FoxPro.
  5. Crear documentación y Ayuda en línea. Para más información acerca de crear Ayudas para su aplicación, consulte Crear Ayuda.
  6. Compile un archivo aplicación (.app), ejecutable (.exe) o un componente COM (servidor de automatización) con extensión .dll o .exe. Para más información acerca de generar una aplicación, consulte Compilar una aplicación.
  7. Crear un paquete de instalación utilizando un programa de distribución Windows Installer. Para más información acerca de crear paquetes de instalación, consulte Guía: Crear un programa de instalación de una aplicación Visual FoxPro utilizando InstallShield Express.
    Nota El programa para la creación del instalador que utilice debe usar la tecnología Windows Installer para crear un programa Instalar (.msi) o (.msm) compatible con Microsoft Windows Installer. Las directrices para el logo Windows 2000 requieren que los programas instaladores estén basados en la tecnología Windows Installer.
  8. Empaque y distribuya sus discos de la aplicación y cualquier documentación impresa. Dependiendo del programa que use para crear la instalación, el programa podría crear las imágenes de disco por usted, o podría necesitar copiar manualmente los archivos a la ubicación de la distribución. Consulte la documentación sobre el programa para crear la instalación, para más información.

Vea también

Preparar una aplicación para su distribución | Distribuir aplicaciones


Preparación para distribuir aplicaciones

En esta sección se describen los temas que se deben considerar para preparar la distribución de una aplicación.

  • Seleccionar tipo de compilación
  • Hardware, memoria y características de red
  • Asegurar la correcta ejecución
  • Opciones predeterminadas de menú

Seleccionar tipo de compilación

Antes de distribuir una aplicación se debe generar un archivo (.app), un ejecutable (.exe) o un componente COM (Servidor de Automatización) con extensiones .dll o .exe. Una vez seleccionado el tipo que se quiere crear, considere el tamaño final del archivo de la aplicación y si los usuarios tienen instalado Visual FoxPro en sus ordenadores.

La siguiente tabla muestra las diferencias entre los tipos de generación.

Tipo de distribución | Descripción
Archivo de aplicación (.app) | Este archivo requiere que el usuario posea una copia de Visual FoxPro instalada. Un archivo .app es generalmente más pequeño que uno .exe
Archivo ejecutable (.exe) | Este archivo incluye la carga de Visual FoxPro, por lo tanto los usuarios no necesitan tenerlo instalado. Se deben proporcionar dos archivos de soporte, el Vfp8r.dll y el Vfp8resn.dll. Las letras, "es", denotan la versión en Español. Estos archivos deben estar en el mismo directorio que el archivo .exe o incluido en la ruta de búsqueda (DOS path). Vea BUILD EXE (Comando), para mayor detalle de como crear y distribuir archivos ejecutables.
Archivo servidor COM (.dll or .exe) | Este archivo es utilizado para crear otro archivo que es llamado por otra aplicación. En Visual FoxPro, se pueden crear dos tipo de servidores COM, archivos (.dll, formalmente, OLE). Se deben proporcionar los archivos de soporte para ejecución, incluyendo el Vfp8r.dll, Vfp8t.dll y el Vfp8resn.dll. Para mayor información, vea: Agregar objetos OLE a las aplicaciones.

Hardware, memoria y temas de red

Debe considerar probar su aplicación con los requerimientos mínimos que pueda operar, incluyendo la capacidad de memoria y de espacio en disco. Los resultados de estas pruebas y los otros puntos tratados en esta sección le ayudarán a determinar el tipo de distribución a elegir y los archivos que se incluirán en ella.

Las aplicaciones que se crean deben tener los mismos requerimientos de hardware, memoria y entornos de red que el Visual FoxPro. Para más información acerca de estos requerimientos, vea Requerimientos de sistema en Instalar Visual FoxPro. Para mayor información acerca de crear aplicaciones en entornos multiusuario, vea Programar para acceso compartido.

Asegurar la correcta ejecución

Un archivo de aplicación (.exe), siempre se asegura que existan las bibliotecas de ejecución de Visual FoxPro, Vfp8r.dll. En ciertos casos, los servidores Visual FoxPro en proceso, o archivos dll, utilizan en cambio un archivo Vfp8t.dll más sencillo. Para mayor información acerca de las bibliotecas de ejecución, vea las Bibliotecas de ejecución: VFP8R.DLL y VFP8T.DLL.

Para ejecutar un archivo de aplicación .exe utilizando la versión de desarrollo de Visual FoxPro, se debe en cambio obligar a la aplicación a utilizar el archivo Vfp8.exe.

Para ejecutar una aplicación en Visual FoxPro

  • Desde el menú Proyectos, seleccione Do. En el cuadro de diálogo Do, seleccione el nombre del archivo ejecutable .exe.

Una aplicación que consista solamente de formularios tipo "NoModal", no funcionará apropiadamente en un entorno en tiempo de ejecución hasta que se ejecute el comando READ EVENTS. Se puede asegurar la correcta ejecución de la aplicación agregando un programa que llame al comando, o configurando la propiedad WindowType como Modal.

Se puede también ejecutar DO seguido del nombre de archivo .exe de la aplicación en la ventana de Comandos, o utilizar el parámetro -E en la línea de comandos que inicia Visual FoxPro. Por ejemplo, si la aplicación es llamada MYAPP, se puede ejecutar la siguiente línea de Código:

MYAPP.EXE -E

Este parámetro de línea de comando obliga a la aplicación a utilizar el archivo ejecutable, Vfp8.exe. Para que este atributo funcione correctamente, Vfp8.exe debe estar incluido en la ruta de búsqueda. (Path)

Ejecutar un formulario en entorno de ejecución

  • Ejecute el formulario desde un programa conteniendo el comando READ EVENTS.

    -ó-

  • Configure la propiedad WindowType del formulario a Modal.

Varias aplicaciones Visual FoxPro se apoyan fuertemente en los menús de sistema de Visual FoxPro. En tiempo de ejecución, varios comandos y menús no están disponibles y sin la inclusión del comando READ EVENTS, una aplicación realizada con menús, finaliza tan pronto como comienza. Utilice la siguiente sección para revisar cualquier menú que incluya en su aplicación.

Para mayor información acerca de cómo estructurar una aplicación con el comando READ EVENTS, vea Controlar el bucle de eventos y vea los ejemplos de como estructurar una aplicación en Compilar una aplicación.

Opciones predeterminadas de menú

Si utiliza el menú de sistema de Visual FoxPro, el archivo de aplicación incluye sólo los siguientes menús predeterminados y los comandos de menú.

Menú | Elementos de menú
Archivo | Cerrar, Guardar, Guardar como, Salir
Editar | Deshacer, Rehacer, Cortar, Copiar, Pegar, Pegado especial, Seleccionar todo, Buscar, Reemplazar
Ventana | Organizar todo, Ocultar, Ocultar todo, Mostrar todo, Borrar, Recorrer, todas las ventanas abiertas
Ayuda | Contenido, Búsqueda, Soporte de producto, Acerca de Visual FoxPro

Puede deshabilitar o quitar cualquiera de los menús y comandos por defecto, o agregar los suyos propios en tiempo de ejecución.

Sugerencia Si el Menú de sistema trabaja en entorno de desarrollo pero se cierra prematuramente, asegúrese de tener el comando READ EVENTS mientras es ejecutado. Asegúrese también de incluir el comando CLEAR EVENTS al salir del menú de sistema.

Para mayor información acerca de configurar menús, vea Diseñar menús y barras de herramientas.

Vea también

Distribuir aplicaciones | Proceso de distribución de aplicaciones | Archivos de recursos en las aplicaciones | Características y archivos restringidos y distribuibles de Visual FoxPro | Incluir archivos con aplicaciones para distribución


Archivos de recursos en las aplicaciones

Visual FoxPro proporciona varios archivos de recursos que amplían la funcionalidad básica de las aplicaciones, entre los que se incluyen archivos de recursos FoxUser, bibliotecas API y controles ActiveX. Si utiliza estos tipos de archivo, necesitará incluirlos en el árbol del proyecto o de distribución.

La siguiente tabla muestra algunos de los archivos que pueden ser incluidos en sus aplicaciones como parte de los proyectos. Para más información sobre incluir archivos en las aplicaciones para su distribución, vea Incluir archivos con aplicaciones para distribución.

Si está | Añada estos archivos a su proyecto
Aplicando una configuración personalizada a la aplicación | Config.fpw
Aplicando valores personalizados a la aplicación | FoxUser.dbf y FoxUser.fpt

Para más detalles sobre cómo incluir archivos en su programa de configuración, consulte la ayuda asociada a la creación del programa de configuración que esté utilizando. El programa de configuración debería crearse utilizando el asistente MSI del Windows Installer.

Archivos de recursos FoxUser.*

Los archivos de recursos almacenan información útil para las aplicaciones, incluyendo la posición de las ventanas, la configuración de la ventana Examinar y definición de etiquetas. Si su aplicación utiliza cualquiera de estos elementos de recursos, deberá distribuir con ella la tabla FoxUser y los archivos memo o los archivos de recursos que cree específicamente para su aplicación. Estos archivos de recursos constan de una tabla de Visual FoxPro asociada a un archivo memo, normalmente denominados FoxUser.dbf y FoxUser.fpt.

Nota El archivo de recursos FoxUser.dbf, no es el mismo archivo de recursos que depende de la configuración regional, que contiene cuadros de diálogo y mensajes de error. El archivo de recursos FoxUser.dbf almacena información de aplicación como por ejemplo macros definidas; el archivo de recursos que depende de la configuración regional guarda cadenas de texto del sistema.

Bibliotecas externas

Si su aplicación incluye archivos de biblioteca externa como controles ActiveX (archivos .ocx) o bibliotecas de API de Visual FoxPro (archivos .fll), utilice el Asistente para instalación, para asegurarse de que se colocan en el directorio apropiado. Puede distribuir el archivo FoxTools.fll de Visual FoxPro con sus aplicaciones. Para obtener más información sobre la creación de bibliotecas externas para tener acceso a la API de Visual FoxPro, consulte Acceso a las APIs.

Controles ActiveX y Componentes COM

Si incluye controles ActiveX o ha creado un Servidor de Automatización (un componente COM) como parte de su aplicación, incluya cualquier archivo .ocx o .dll en su proyecto y asegúrese de que se instalan los archivos de soporte necesarios en el equipo del usuario.

Nota Las pautas de Windows 2000 no recomiendan instalar componentes en el directorio de sistema Windows. Sólo puede distribuir controles ActiveX que disponga de licencia. Para Servidores de Automatización, también debe incluir los componentes de registro, tales como tipo bibliotecas (archivos .tlb) y archivos de registro (archivos .vbr), con su aplicación.

Si utiliza un asistente para la creación de los discos de distribución, puede incluir estos archivos automáticamente. Cuando haga esto, el Asistente se asegura de que los componentes COM son registrados apropiadamente en el equipo del usuario, cuando la aplicación sea instalada. Para obtener más información sobre incluir archivos con el asistente; utilice la ayuda asociada a ese programa.

Todos los usuarios pueden ejecutar formularios que contengan controles ActiveX; sin embargo, podría no realizar ciertas tareas si está en tiempo de ejecución en Visual FoxPro. Recuerde las siguientes consideraciones:

  • Su aplicación debe ejecutar una versión completa de Visual FoxPro para modificar los formularios, clases o subclases que incluyan controles ActiveX.
  • Su aplicación debe ejecutar una versión completa de Visual FoxPro para añadir un control ActiveX al formulario en tiempo de ejecución. Por ejemplo, se necesita la versión completa de Visual FoxPro para añadir el control Outline al formulario mediante la ejecución del siguiente código:
    PUBLIC frmOleNewForm
frmOleNewForm = CREATEOBJECT("form")
frmOleNewForm.Show
frmOleNewForm.ScaleMode = 3
frmOleNewForm.Addobject("NewOutline","OLEControl",;
"MSOutl.Outline")
    Nota Cuando se cierra un formulario, los controles añadidos en tiempo de ejecución no son guardados.
  • Su aplicación debe ejecutar una versión completa o en tiempo de ejecución de Visual FoxPro para añadir una subclase de un control ActiveX a un formulario en tiempo de ejecución. Por ejemplo, puede definir la subclase RedOutline desde la clase Outline y distribuir la subclase en Olelib.vcx; todos los usuarios entonces podrán añadir el control RedOutline en un formulario ejecutando el siguiente código:
    PUBLIC frmOleNewForm
frmOleNewForm = CREATEOBJECT("form")
frmOleNewForm.Show
frmOleNewForm.ScaleMode = 3
SET CLASSLIB TO CURR() + OLELIB.VCX
frmOleNewForm.Addobject("NewOutline","RedOutline")

Archivos de configuración

El archivo de configuración, Config.fpw, puede establecer numerosos valores predeterminados de Visual FoxPro. Por ejemplo, es posible cambiar el título de Visual FoxPro, el color de fondo y la forma en que el usuario se desplaza mediante el teclado.

Si desea que el archivo de configuración sea de sólo lectura, sitúelo en su proyecto y márquelo como incluido. Si desea que el archivo de configuración sea modificado, márquelo como excluido. A continuación distribuya el archivo de configuración con el archivo de aplicación o el ejecutable en forma de archivo independiente. Por defecto, Visual FoxPro siempre busca un archivo de configuración llamado Config.fpw. Sin embargo, puede especificar un nombre diferente para el archivo de configuración utilizando el modificador -C en la línea de comandos al iniciar Visual FoxPro.

Para más información sobre las opciones que puede cambiar el archivo de configuración, consulte "Utilizar un archivo de configuración" en Personalizar el Entorno de Visual FoxPro.

Archivos de recursos para configuración regional

Si va a distribuir su aplicación con la versión en tiempo de ejecución de Visual FoxPro, es posible que tenga que incluir un Archivo de recursos que dependa de la configuración regional. Este archivo contiene los cuadros de diálogo y otros elementos de la interfaz de usuario. Hay un archivo de recursos en tiempo de ejecución diferente para cada idioma que tenga una versión disponible de Visual FoxPro.

Para obtener más información sobre la utilización de archivos en tiempo de ejecución que dependan de la configuración regional, consulte "Distribuir archivos de tiempo de ejecución que dependen de la configuración regional" en Desarrollar aplicaciones internacionales.

Nota El archivo de recursos que depende de la configuración regional no es el mismo que el archivo de recursos FOXUSER, que almacena información de la aplicación como macros que ha definido. El archivo de recursos que depende de la configuración regional almacena cadenas de texto del sistema.

Si está creando aplicaciones para plataformas del Medio Este, asegúrese de añadir el archivo VBAME.DLL en su distribución y tiene que ser instalado en el directorio de Sistema de Windows.

Archivos de Ayuda

Si crea ayuda gráfica para su aplicación, incluya el archivo .chm o .hlp en la distribución de su aplicación para que el programa de instalación los incluya en sus discos de distribución. Para más información sobre crear ayudas, vea Crear Ayuda.

Nota No puede distribuir los archivos de Ayuda o WinHelp.exe incluidos en Visual FoxPro.

Vea también

Distribuir aplicaciones | Preparar para distribuir aplicaciones | Características y archivos restringidos y distribuibles de Visual FoxPro | Incluir archivos con aplicaciones para distribución | Opciones de menú


Características de archivos distribuibles y restringidos de Visual FoxPro

Visual FoxPro y su entorno de desarrollo contienen muchos archivos y características que están autorizadas sólo para utilizarlas mientras diseña, desarrolla y prueba sus aplicaciones. Si su aplicación contiene cualquiera de estos archivos o características restringidas, salvo las expresamente autorizadas en Redist.txt, entonces debe quitarlas. Bajo las condiciones del Microsoft License Agreement que recibió con este producto, no puede incluir y redistribuir los archivos restringidos en sus aplicaciones.

Puede distribuir cualquier archivo de Visual FoxPro que no este restringido. Para una lista de archivos redistribuibles, vea Redist.txt, ubicado en el directorio de Visual FoxPro (C:\Program Files\Microsoft Visual FoxPro 8) y las directivas para incluir archivos redistribuibles en este tema.

Características restringidas de Visual FoxPro

No puede incluir los siguientes menús restringidos de Visual FoxPro y sus comandos de menú en un archivo ejecutable (.exe) para distribuir:

  • Base de Datos
  • Formulario
  • Menú
  • Programa
  • Proyecto
  • Consulta
  • Tabla

La siguiente tabla lista los comandos para los cuales su aplicación devuelve el error "Característica no disponible" si son incluidos. Aunque no pueda incluir los comandos que se utilizan para crear o modificar menús, formularios o consultas, puede ejecutar menús, formularios o programas de consultas compilados en su aplicación.

Comandos no disponibles |
APPEND PROCEDURES | MODIFY DATABASE
BUILD APP | MODIFY FORM
BUILD EXE | MODIFY MENU
BUILD PROJECT | MODIFY PROCEDURE
CREATE FORM | MODIFY PROJECT
CREATE MENU | MODIFY QUERY
CREATE QUERY | MODIFY SCREEN
CREATE SCREEN | MODIFY VIEW
CREATE VIEW | MODIFY CONNECTION
SET STEP |

La siguiente tabla lista los comandos que son ignorados cuando son utilizados en una aplicación distribuida.

Comandos Ignorados |
ASSERT | DEBUGOUT
SET DEBUG | SET DOHISTORY
SET DEVELOPMENT | SET ECHO

Archivos restringidos de Visual FoxPro

Visual FoxPro instala archivos en su PC que están restringidos y no pueden ser reproducidos o distribuidos:

  • Algunos archivos asistentes
  • Fuentes TrueType
  • Archivos de Ayuda de Visual FoxPro

Archivos Visual FoxPro Distribuibles

De conformidad con el Microsoft License Agreement que recibió con este producto, puede distribuir archivos junto con la aplicación correspondiente. Las siguientes directivas se aplican a los archivos distribuibles.

Ejemplos

Visual FoxPro proporciona archivos en el directorio ...\Samples\ que se utilizan para probar y aprender. Aunque no puede distribuir ejemplos Visual FoxPro sin modificar, si puede utilizar partes del código de los archivos de muestra para generar sus aplicaciones.

Si utiliza algún archivo de estos directorios, incluyendo todos los archivos con extensión .bmp, .ico y .cur, tendrá que incluirlos en su proyecto para la generación de la aplicación. No deben aparecer por sus nombre en los discos distribuibles y no pueden ser distribuidos independientemente de sus aplicaciones.

Biblioteca de Clases

Puede utilizar sin modificación para sus aplicaciones, cualquier archivo .vcx, incluyendo los del directorios \Ffc y \Gallery, el asistente de la biblioteca de clase Wizstyle.vcx y las bibliotecas de clase de muestra. En tal caso, debe incluir las bibliotecas en su proyecto para la generación de aplicación.

Archivos ODBC

Por favor refiérase al Microsoft License Agreement que recibió con este producto para restricciones específicas con relación a su redistribución de archivos ODBC.

Controles ActiveX

Visual FoxPro incluye un conjunto de controles ActiveX (archivos .ocx) los que puede agregar y distribuir en sus aplicaciones.

Vea También

Distribuir aplicaciones | Preparar para distribuir aplicaciones | Archivos de recursos en las aplicaciones | Incluir archivos con aplicaciones para distribución | Introducción a los controles ActiveX

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Incluyendo Archivos con Aplicaciones para Distribución

Referencia de Visual FoxPro

Incluir archivos con aplicaciones para distribución

Puede reproducir y distribuir libremente algunos archivos de Visual FoxPro, gráficos, y programas con las aplicaciones que usted haya creado; Sin embargo, debe quitar los archivos restringidos de su aplicación. Para más información, vea, Características y archivos restringidos y distribuibles de Visual FoxPro.

Antes de que genere su aplicación, asegúrese que su proyecto incluye los archivos necesarios para su aplicación así como también cualquier archivo adicional de recursos, como archivos gráficos o plantillas.

Para agregar archivos a su aplicación

  • Incluya los archivos en su proyecto.

    Si usted no quiere cambiar estos archivos en la aplicación distribuida, coloque los archivos en su proyecto y márquelos como incluidos. Los archivos son entonces de solo lectura y no pueden ser modificados.

    -o-

  • Agregue los archivos en el directorio de la aplicación para hacerlos fácilmente accesibles para su programa de creación de instalaciones.

    Si usted quiere modificarlos, coloque los archivos en su proyecto y márquelos como excluidos. Luego distribúyalos con su aplicación como archivos separados.

Para más información acerca de crear un proyecto e incluir o excluir archivos en un proyecto, vea Compilar una aplicación.

Vea también

Distribuir aplicaciones | Preparar para distribuir aplicaciones | Archivos de recursos en las aplicaciones | Menú Opciones


Programar en Visual FoxPro

Microsoft Visual FoxPro es una herramienta eficaz de administración interactiva de datos, pero además podrá beneficiarse de toda su eficacia para crear aplicaciones. Comprender las técnicas de programación orientada a objetos y el modelo controlado por eventos puede aumentar su productividad como programador.

En esta sección

Crear programas
Explica las dos formas para crear un programa Visual FoxPro, el cual es un archivo de texto que contiene una serie de comandos.
Programación orientada a objetos
Describe cómo puede utilizar programación orientada a objetos para crear componentes de aplicación auto contenidos que respondan a acciones del usuario y al sistema, los cuales pueden reutilizarse y mantenerse fácilmente.
Optimizar aplicaciones
Discute formas para optimizar el rendimiento haciendo su aplicación más pequeña y rápida.
Acceder APIs
Describe cómo extender Visual FoxPro si su aplicación tiene requerimientos que no pueden cumplirse con las características nativas, tomando ventaja de bibliotecas externas como controles Microsoft ActiveX o bibliotecas de enlace dinámico (DLLs).

Secciones relacionadas

Uso de Visual FoxPro
Describe las características de programación de Visual FoxPro diseñadas para mejorar la productividad del programador, incluidos los métodos Access y Assign, la compatibilidad con más formatos de archivos gráficos y lenguaje para simplificar las tareas de programación.
Guías paso a paso
Proporciona escenarios comunes y guías paso a paso sobre cómo crear diferentes tipos de aplicaciones y componentes.
Introducción a las características de Visual FoxPro
Discute cómo Visual FoxPro le da más de todo lo que espera en un sistema de administración de bases de datos (DBMS) como velocidad, eficacia y flexibilidad.
Personalizar el entorno de Visual FoxPro
Describe cómo personalizar su entorno de desarrollo después de instalar Visual FoxPro. La configuración del entorno incluye el título de la ventana principal, directorio predeterminado, proyecto, editor, depurador y herramientas para formulario, almacenar archivos temporales, equivalencia de campos para operaciones arrastrar y soltar y otras opciones.
Desarrollar aplicaciones Visual FoxPro
Esta sección incluye información conceptual acerca de cómo desarrollar aplicaciones Visual FoxPro, instrucciones para crear bases de datos y la interfaz de usuario y otras tareas necesarias para crear aplicaciones Visual FoxPro.
Herramientas de productividad
Discute las diversas herramientas disponibles para ayudarle a crear aplicaciones de Visual FoxPro de una manera más rápida y sencilla.


Trabajar con programas

Puede escribir código que ejecute series de comandos y guardarlo en un archivo de programa en vez de ejecutarlo inmediatamente. Así mismo puede formatear bloques de código y archivos de programas, buscar y reemplazar referencias de código, y ver definiciones del mismo.

En esta sección

Crear programas
Describe como crear un programa Visual FoxPro.
Formatear código en los programas
Describe como puede definir preferencias de formato para el código en los programas.
Ejecutar código manualmente
Describe cuando puede utilizar la ventana de comandos para ejecutar código.
Buscar y reemplazar referencias de código
Describe como buscar y reemplazar referencias de código y texto en archivos de programa y texto.
Ver definiciones de código
Describe como ver la definición de un elemento de código encontrado por medio de la búsqueda de referencias de código en el archivo actual del programa.

Secciones relacionadas

Programar en Visual FoxPro
Describe como entendiendo las técnicas de programación orientada a objetos y el sistema de eventos, pueden mejorar su productividad de programación y le permiten acceder a toda la potencia de Visual FoxPro.
Desarrollar aplicaciones Visual FoxPro
Explica los conceptos sobre como desarrollar aplicaciones Visual FoxPro, instrucciones para crear bases de datos, el interfaz de usuario y otras tareas necesarias para crear aplicaciones de Visual FoxPro.
Referencia del lenguaje
Contiene descripciones de los elementos del lenguaje en Visual FoxPro.
Herramientas de productividad para el desarrollo
Describe las herramientas de desarrollo de Visual FoxPro que usted puede utilizar para el desarrollo de aplicaciones con Visual FoxPro.


Crear programas

En Visual FoxPro puede escribir código que ejecute comandos y los guarde en un archivo de programa. Aunque puede ejecutar código en la ventana Comandos, ejecutar un programa tiene algunas ventajas como las siguientes:

  • Puede modificar y ejecutar programas muchas veces.
  • Puede ejecutar programas desde menús, formularios y barras de herramientas.
  • Puede usar programas para ejecutar otros programas.

Crear un programa

  1. En el menú Archivo, elija Nuevo.
  2. En el cuadro de diálogo Nuevo, seleccione Programa y haga clic en Nuevo archivo.
  3. En la ventana de edición escriba el código para el programa.

También puede crear un programa en usando el comando MODIFY COMMAND en la ventana Comandos o seleccionando Programas bajo el nodo Código en el Administrador de proyectos y eligiendo Nuevo. Para mayor información, consulte MODIFY COMMAND (Comando) y ventana Administrador de proyectos.

Nota Asegúrese de guardar el programa después de crearlo.

Para guardar un programa

  • En el menú Archivo, elija Guardar.

Los programas se guardan con la extensión .prg.

Si intenta cerrar un programa sin antes guardarlo, aparecerá un cuadro de diálogo en el que se le preguntará si desea guardar o descartar los cambios realizados en el mismo.

Si guarda un programa creado a partir del Administrador de proyectos, el programa se agregará al proyecto.

Si guarda un programa al que todavía no ha asignado un nombre, se abrirá el cuadro de diálogo Guardar como, en el que podrá especificar el nombre del programa. Cuando haya guardado el programa, podrá ejecutarlo o modificarlo.

Modificar programas

Para hacer cambios a un programa, abra el programa.

Para abrir un programa

  1. En el menú Archivo elija Abrir.
  2. En el cuadro de diálogo Abrir, elija Programa en la lista Tipo para mostrar solamente archivos de programa.
  3. Seleccione el programa que desea modificar y elija Aceptar.

Si el programa es parte de un proyecto, puede seleccionar el programa en el Administrador de proyectos y elegir Modificar. También puede escribir el comando MODIFY COMMAND con el nombre del programa en el ventana Comandos así:

MODIFY COMMAND MyProgram

-o-

MODIFY COMMAND ?

En la lista de archivos, seleccione el programa que desea modificar y elija Abrir.

Después de abrir el programa, podrá realizar cambios en el mismo. Cuando haya terminado de introducir los cambios, asegúrese de guardar el programa.

Ejecutar programas

Después de crear un programa, podrá ejecutarlo.

Para ejecutar un programa

  1. En el menú Programa elija Ejecutar.
  2. En la lista de programas, seleccione el programa y luego elija Ejecutar.

Si el programa es parte de un proyecto, puede seleccionarlo en el Administrador de proyectos y elegir Ejecutar. También puede escribir el comando DO con el nombre del programa ene la ventana de Comandos así:

DO MyProgram

Vea también

Programar en Visual FoxPro | Ejecutar código manualmente | Buscar y reemplazar referencias de código | Ver definiciones de código | ventana Administrador de proyectos | Funcionamiento de la ventana Comandos


Formateando código en los programas

Puede dar formato a programas completos o bien partes del código de acuerdo con las preferencias que haya establecido en el cuadro de diálogo 'Opciones de Presentación'.

Para más información sobre las preferencias de formato que se pueden establecer, ver Cuadro de diálogo Opciones de presentación.

Para establecer las preferencias de formato

  1. Abrir el archivo de programa.
  2. Para formatear una sección específica del código, hay que seleccionar el código que se desea formatear. Para formatear el programa completo, asegúrese de no tener nada seleccionado.
  3. Seleccione la opción Presentación del menú Herramientas.
  4. En el cuadro de diálogo Opciones de Presentación, seleccione las preferencias que desee.

También puede hacer un clic con el botón secundario del ratón en la ventana de edición de código y seleccionar la opción 'Presentación' del menú contextual.

El proceso de formateo usa la primera línea del código seleccionado para determinar el nivel de sangría.

Para formatear el código

  • En el cuadro de diálogo Opciones de Presentación, hacer clic en Ejecutar.

Después de formatear el código usando la herramienta de presentación, podrá hacer cambios adicionales manualmente en el formato del mismo.

Vea también

Trabajar con programas | Crear programas | Variable del sistema _BEAUTIFY

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Ejecutar código manualmente

Generalmente, se puede hacer en la ventana de comandos todo lo que se hace en un programa. Se puede ejecutar código en la Ventana de Comandos de la misma manera que lo ejecutaría en un Programa. Sin embargo, hay ciertas ventajas que existen cuando ejecuta código desde un programa. Para más información, vea Crear Programas

El siguiente ejemplo describe los pasos para ver la información de clientes en una tabla usando la interfaz de Visual FoxPro. Observe que algunos de los pasos son repetidos en la Ventana de Comandos.

Para encontrar un registro en una Tabla

  1. En el menú Archivo, escoja Abrir.
  2. En el cuadro Tipo de Archivos, escoja Tabla.
  3. En la lista de archivos, haga doble clic en el archivo Customer.dbf para abrir la tabla Customer.
  4. En el menú Ver, escoja Examinar para examinar la Tabla.

Se puede desplazar a través de la Tabla y mirar en el Campo Company al Cliente "Ernst Handel." Sin embargo puede hacer la misma tarea en la Ventana de Comandos.

Para encontrar un pedido en una tabla mediante programación

  • Escriba los siguientes comandos en la Ventana de Comandos
    USE Customer
LOCATE FOR Company = "Ernst Handel"
BROWSE

Para más información acerca de la Ventana de Comandos, vea Ventana Comandos y Funcionamiento de la ventana Comandos

Cuando haya localizado el pedido de esta empresa, tal vez desee incrementar la cantidad máxima del pedido en un 3%.

Para incrementar manualmente la cantidad máxima del pedido

  1. Presione la tecla Tab para desplazarse hasta el campo max_ord_amt.
  2. Multiplique el valor mostrado en el campo max_ord_amt por 1,03 y escriba el nuevo valor en el campo.

Para incrementar mediante programación la cantidad máxima del pedido.

  • Escriba el siguiente comando de Visual FoxPro en la ventana Comandos:
    REPLACE max_ord_amt WITH max_ord_amt * 1.03

Es relativamente sencillo cambiar la cantidad máxima del pedido para un cliente, ya sea de forma manual o escribiendo el código en la Ventana de Comandos.

Sin embargo, suponga que quiere incrementar la cantidad máxima del pedido de todos los clientes al 3%. Ejecutar esta tarea usando la interfaz podría ser laborioso, y estaría propenso a cometer errores. Si especifica las instrucciones correctas en un archivo de programa, Visual FoxPro podrá realizar esta tarea con rapidez y facilidad, sin cometer ningún error.

El siguiente ejemplo muestra un bloque de código que puede ser usado para abrir la Tabla Customer.dbf, examinar todos los registros de la tabla y realizar las instrucciones comprendidas entre SCAN y ENDSCAN para cada registro, e incrementar la cantidad máxima de pedido en un 3% para todos los clientes:

USE customer
SCAN
REPLACE max_ord_amt WITH ;
max_ord_amt * 1.03
ENDSCAN

El punto y coma (;) indica que el comando sigue en la línea siguiente. Para más información, vea SCAN ... ENDSCANy REPLACE.

Vea también

Trabajar con programas | Crear programas


Buscar y Reemplazar Referencias de Código

En Visual FoxPro puede buscar y reemplazar referencias de código y texto en los proyectos o directorios.

Buscar referencias de código en proyectos y directorios

Puede utilizar la herramienta Referencias de Código para ubicar un texto o código específico que aparezca en su proyecto o directorio.

Para buscar referencia de código en un proyecto

  1. Para buscar en uno o más proyectos, abra el o los proyectos en los que desea hacer la búsqueda.
  2. En el menú Herramientas, seleccione Referencias de Código.

    Si no ha hecho una búsqueda previa en el proyecto, se mostrará la caja de diálogo Buscar Referencia. De otro modo, aparecerá la ventana Referencias de Código mostrando los resultados de la última búsqueda.

  3. Escriba el código o comando que quiere buscar en la caja Buscar por.
  4. Cerciórese de que el Alcance esta en Todo el proyecto y el nombre del proyecto es sobre el que desea hacer la búsqueda. Para elegir otro proyecto abierto, haga clic en la flecha de Alcance para mostrar una lista de los proyectos abiertos.
    • Para cambiar el alcance de proyecto a directorio, haga clic en la flecha de Alcance y seleccione Directorio. Debe especificar el directorio en el cual hará la búsqueda en la caja Buscar en.
    • Para restringir la búsqueda al directorio y subdirectorios del proyecto, seleccione la casilla de verificación Limitar la búsqueda al directorio y subdirectorios del proyecto.
    • Para especificar otros tipos de archivos que no sean los predeterminados de la búsqueda, haga clic en la flecha de Tipos de Archivo para mostrar una lista de los tipos de archivo.
    • Para opciones adicionales en la búsqueda, haga los cambios en el grupo Opciones o un clic en el botón Opciones para abrir el cuadro de diálogo Opciones.
  5. Hacer clic en Buscar para comenzar la búsqueda.

La ventana de Referencia de Códigos muestra la cadena de búsqueda como un nodo de referencia de código en el panel de búsqueda y si esta es exitosa los resultados serán mostrados en el panel de resultados.

Puede ver todos los resultados seleccionando el nodo de referencia de código en el panel de búsquedas, o puede filtrarlos por archivo si selecciona un nombre de archivo en el panel de búsquedas. Puede también hacer doble clic en un resultado en el panel de resultados para abrir el archivo e ir directamente al código de referencia.

Para obtener más información acerca de las opciones y la ventana de diálogo Referencia de Búsqueda, vea Cuadro de diálogo Buscar referencia y Caja de diálogo Buscar referencia, cuadro de diálogo Opciones.

Para buscar una referencia de código en un directorio

  1. En el menú Herramientas, elija Referencias de código.

    Si no ha efectuado una búsqueda en el directorio, aparecerá la ventana de diálogo Referencia de Búsqueda. De otro modo, la ventana Referencia de Código será mostrada con los resultados de búsquedas anteriores.

  2. Escriba el código o texto que desea buscar en el cuadro de diálogo Buscar.
  3. Asegurese de que el cuadro Alcance muestre Directorio y el cuadro Buscar en indica el directorio en el cual quiere hacer la búsqueda.
    • Para incluir los subdirectorios en su búsqueda, active la casilla de verificación Buscar subdirectorios.
    • Para especificar otros archivos en su búsqueda que no sean los predeterminados, haga clic en la flecha de Tipos de Archivo para mostrar una lista con los tipos de archivos.
    • Para especificar opciones adicionales a la búsqueda, active las casillas de verificación en el grupo Opciones o haciendo clic en el botón Opciones para abrir la ventana de diálogo Opciones.
  4. Hacer clic en Búsqueda para empezar la búsqueda.

La ventana de Referencia de Código muestra la cadena de búsqueda en el panel de búsqueda y cualquier resultado de la búsqueda en el panel de resultados, si esta fue exitosa.

Puede ver todos los resultados seleccionando el nodo de referencia de código apropiado en el panel de búsquedas, o puede filtrarlos por cada archivo si selecciona un nombre de archivo el el panel de búsquedas. Puede también hacer doble clic en un resultado del panel de resultados para abrir el archivo e ir directamente al nodo de referencia de código.

Para obtener más información acerca de las opciones y la ventana de diálogo Referencia de Búsqueda, vea Cuadro de diálogo Buscar referencia y Caja de diálogo Buscar referencia, cuadro de diálogo Opciones..

Reemplazando referencias de código

Puede usar la herramienta Referencias de Código para reemplazar código o texto que aparezca en su proyecto o directorios.

Reemplazar referencia de código en un proyecto o directorio

  1. Ejecute una búsqueda usando la herramienta de Referencias de Código para localizar el código o texto que quiera reemplazar.

    Si la búsqueda tiene éxito, la herramienta de Referencia de Código mostrará los resultados de la búsqueda en el panel de resultados de la ventana Referencias de Código.

  2. Identifique todas las líneas en la cuales quiera reemplazar la referencia de código o texto.
  3. Utilice una de las opciones siguientes::
    • Para especificar algunas líneas de código en las que quiera reemplazar la referencia de código o texto, active el cuadro de verificación por cada línea en el panel de resultados.
    • Para especificar todas la líneas de código para reemplazar, haga un clic con el botón secundario del ratón en el panel de resultados para mostrar el menú contextual, y elija Seleccionar Todo.
  4. Hacer clic en Reemplazar de la barra de herramientas de la ventana Referencias de Código para abrir el cuadro de diálogo Reemplazar.

    Si selecciona líneas de código para reemplazar que puedan afectar archivos de datos o cambien la estructura de datos, valores de propiedades o propiedades y métodos en formularios (.scx) o bibliotecas de Clases Visuales (.vcx), Visual FoxPro pedirá una confirmación o denegación de la operación de reemplazo.

    Si confirma el reemplazo, VisualFoxPro solo hará los cambios que no afecten archivos de datos y proporcionará código en la cadena del nodo de búsqueda bajo el nodo de Registro de Reemplazos para que pueda hacer los cambios deseados manualmente.

    Si no acepta el reemplazo, no se hará ningún cambio.

  5. Escriba el código o texto de reemplazo en el cuadro de texto Remplazar con. Seleccione cualquier otra opción adicional en el grupo Opciones.
  6. Hacer clic en Reemplazar para empezar el reemplazo.

Si ha seleccionado Confirmar reemplazos en el grupo Opciones, debe confirmar la operación para cada línea de código que haya seleccionado.

Luego de que la herramienta Referencia de Código termine de reemplazar el código o texto, debe confirmar si quiere actualizar los resultados en la ventana de Referencia de Código.

La ventana de Referencia de Código mostrará un registro de la operación de reemplazos como un nodo de registro bajo el Registro de Reemplazos en el panel de búsqueda y los resultados en la panel de resultados.

Vea también:

Crear programas | Cuadro de diálogo Buscar referencia | Ventana Referencia de código

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Ver definiciónes de código

Puede localizar la definición de código de un elemento encontrado en una búsqueda de referencia de código del programa actual, si la definición existe, utilizando el comando de Definicion de Vistas que aparece en el menú contextual de la ventana de Edición.

Ver la definición de un elemento de código

  1. Abrir el archivo de programa para localizar el elemento de código.
  2. Hacer doble clic en el texto del elemento de código para seleccionarlo.
  3. Clic en el botón secundario del ratón para mostar el menú contextual y seleccionar Definición de Búsqueda.

También puede llamar a Definición de Vistas utilizando el comando DO (_FOXREF) WITH... . Para obtener más información, vea _FOXREF (Variable del sistema).

Si el elemento de código es una definición de usuario y la definición es encontrada, Visual FoxPro abre la ventana de Edición para localizar la definición. Si el ítem que ha seleccionado es es un comando o función nativo de Visual FoxPro, la ayuda de Visual de FoxPro se abrirá mostrando ese ítem. Si el ítem que ha seleccionado es un nombre de archivo que forma parte de una instrucción #INCLUDE o un comando SET PROCEDURE, Visual FoxPro abre el archivo.

Si existen varias definiciones, Visual FoxPro abre la ventana Ir a la Definición para que seleccione la definición correcta. La Definición de Vistas busca primero otras referencias de archivo externas que estén en el archivo fuente, seguidos por los archivos del proyecto activo.

Si la definición no es encontrada en un archivo del proyecto activo, la Definición de Vistas buscará en otros proyectos abiertos o directorios. Si la definición es encontrada en una de estas ubicaciones, se abrirá la ventana Ir a la Definición para que seleccione la ubicación correcta.

Vea también

Crear programas | Cuadro de diálogo Buscar referencia | Ventana Referencia de código | Ventana Ir a la Definición

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Programación orientada a objetos

Aunque Visual FoxPro admite la programación estándar por procedimientos, se ha ampliado la capacidad del lenguaje para proporcionar la potencia y la flexibilidad propias de la programación orientada a objetos. El diseño orientado a objetos y la programación orientada a objetos representan un cambio de perspectiva con respecto a la programación estándar por procedimientos. En lugar de pensar en el flujo del programa desde la primera hasta la última línea de código, se debe pensar en la creación de objetos: componentes independientes de una aplicación que tienen funcionalidad privada además de la funcionalidad que se puede exponer al usuario.

En esta sección

Conceptos básicos de programación
Proporciona una introducción a los fundamentos de programación necesarios para trabajar en Visual FoxPro, incluyendo almacenar datos, tipos de datos, contenedores, operadores, funciones, comandos y controlar el flujo del programa.
Clases y objetos: los bloques funcionales de las aplicaciones
Explica las diferencias entre clases y objetos y resalta las propiedades, métodos y eventos de los objetos.
Clases de Visual FoxPro
Presenta los tipos de clases de Visual FoxPro y describe sus características más importantes.
Referenciar objetos de la jerarquía de contenedores
Describe cómo se referencian los objetos en la jerarquía de contenedores y explica la importancia de identificar objetos en relación con la jerarquía del contenedor.
Establecer propiedades
Describe cómo establecer las propiedades de un objeto en tiempo de diseño y en tiempo de ejecución.
Llamar a métodos
Describe cómo llamar métodos de un objeto desde cualquier lugar en una aplicación, una vez que ha sido creado.
Métodos Access y Assign
Discute los métodos Access y Assign que puede utilizar para ejecutar código cuando se consulta el valor de una propiedad o cuando intenta cambiar el valor de la propiedad.
Procedimientos y funciones definidas por el usuario
Discute procedimientos y funciones, los cuales le permiten mantener en un único lugar el código utilizado comúnmente y llamarlo a través de su aplicación cuando lo necesite.
Descripción del modelo de eventos
Proporciona enlaces a información o eventos, seguimiento de eventos y sugerencias sobre cómo situar el código basado en la secuencia de eventos.

Secciones relacionadas

Crear programas
Explica las dos formas para crear un programa Visual FoxPro.
Optimizar aplicaciones
Describe formas para optimizar el rendimiento de la aplicación haciéndola más pequeña y rápida.
Acceso a las APIs
Describe cómo extender Visual FoxPro si su aplicación tiene requerimientos que no pueden cumplirse con las características nativas, tomando ventaja de bibliotecas externas como controles Microsoft ActiveX o bibliotecas de enlace dinámico (DLLs).
Preparar la creación de clases
Contiene información sobre cómo planear el diseño de clases y cómo seleccionar su funcionalidad.
Crear clases
Proporciona tres formas para crear clases nuevas.
Modificar una definición de clase
Describe los pasos necesarios para modificar una clase en el Administrador de proyectos.
Crear una subclase de una definición de clase
Contiene directrices sobre cómo crear una subclase a partir de una clase definida por el usuario.


Conceptos básicos de programación

Cuando se programa, se almacenan datos y se manipulan mediante una serie de instrucciones. Los datos y los contenedores en los que se almacenan los datos constituyen la materia prima de la programación. Las herramientas utilizadas para manipular esta materia prima son comandos, funciones y operadores.

Almacenar datos

Los datos con los que trabaja probablemente incluyan períodos de tiempo, dinero y elementos contables, así como fechas, nombres, descripciones, etc. Cada dato corresponde a un determinado tipo, es decir, pertenece a una categoría de datos que se manipula de maneras similares. Podría trabajar directamente con estos datos sin almacenarlos, si bien perdería la mayor parte de la flexibilidad y eficacia que ofrece Visual FoxPro. Visual FoxPro aporta numerosos contenedores de almacenamiento con el fin de ampliar su capacidad para manipular fácilmente los datos.

Los tipos de datos determinan la manera en que se almacenan los datos y la forma en que se pueden utilizar tales datos. Puede multiplicar dos números, pero no puede multiplicar caracteres. Puede imprimir caracteres en mayúsculas, pero no puede imprimir números en mayúsculas. En la tabla siguiente se muestran algunos de los principales tipos de datos de Visual FoxPro.

Tipos de datos

Tipo | Ejemplos
Numérico | 123 3.1415 – 7
Carácter | "Prueba" "123" "01/01/98"
Lógico | .T. (verdadero) .F. (falso)
Fecha DateTime | {^1998-01-01} {^1998-01-01 12:30:00 p}

Contenedores de datos

Los contenedores de datos le permiten realizar las mismas operaciones con varios datos. Por ejemplo, sumar las horas que ha trabajado un empleado, multiplicarlas por el salario por hora y restar los impuestos para determinar el sueldo que ha percibido el empleado. Deberá realizar estas operaciones para cada empleado y para cada período de pago. Si almacena esta información en contenedores y realiza las operaciones sobre éstos, bastará con sustituir los datos antiguos por los nuevos datos y volver a ejecutar el mismo programa. En la siguiente tabla se enumeran algunos de los principales contenedores de datos disponibles en Visual FoxPro:

Tipo | Descripción
Variables | Elementos individuales de datos almacenados en la memoria RAM (memoria de acceso aleatorio) del PC.
Registros de tabla | Varias filas de campos predeterminados, cada uno de los cuales puede contener un dato definido previamente. Las tablas se guardan en disco.
Matrices | Varios elementos de datos almacenados en la memoria RAM.

Manipular datos

Los contenedores y los tipos de datos le ofrecen los bloques funcionales que necesita para manipular los datos. Los elementos finales son los operadores, las funciones y los comandos.

Utilizar operadores

Los operadores se utilizan para vincular los datos. A continuación se muestran los operadores utilizados habitualmente en Visual FoxPro.

Operador Tipos de datos válidos Ejemplo Resultado
= Todas
? n = 7
 Imprime .T. si el valor almacenado en la variable n es 7; de lo contrario, imprime .F.
+ Numérico, Character, Date, DateTime
? "Fox" + "Pro"
 Imprime "FoxPro"
! o NOT Lógicas
? !.T.
 Imprime .F. (falso)
*, / Numérico
? 5 * 5
? 25 / 5
 Imprime 25
Imprime 5
Nota Un signo de interrogación (?) situado delante de una expresión imprime el resultado de la expresión y un carácter de nueva línea en la ventana de resultados activa, que es normalmente la ventana principal de Visual FoxPro.

Recuerde que debe utilizar el mismo tipo de datos con cada operador. Las siguientes instrucciones almacenan dos datos numéricos en dos variables. Los nombres de variable empiezan con la letra n, por lo que se puede determinar de inmediato que contienen datos numéricos, pero puede nombrarlas con cualquier combinación de caracteres alfanuméricos y caracteres de subrayado.

nFirst = 123
nSecond = 45

Las instrucciones siguientes almacenan dos datos de caracteres en dos variables. Los nombres de variable empiezan con la letra c para indicar que contienen caracteres.

cFirst = "123"
cSecond = "45"

Las dos operaciones siguientes, suma y concatenación, producen resultados distintos, ya que el tipo de datos es diferente en cada una de ellas.

? nFirst + nSecond
? cFirst + cSecond

Resultados

168
12345

Puesto que cFirst contiene caracteres y nSecond contiene datos numéricos, se producirá un error de tipo de datos incorrecto si se intenta ejecutar el siguiente comando:

? cFirst + nSecond

Puede evitar este problema si utiliza funciones de conversión. Por ejemplo, STR( ) devuelve el carácter equivalente de un valor numérico, mientras que VAL( ) devuelve el equivalente numérico de una cadena de caracteres formada por números. Estas funciones y LTRIM( ), que elimina los espacios iniciales, le permiten realizar las operaciones siguientes:

? cFirst + LTRIM(STR(nSecond))
? VAL(cFirst) + nSecond

Resultados

12345
168

Utilizar funciones

Las funciones devuelven un tipo específico de datos. Por ejemplo, las funciones STR( ) y VAL( ) utilizadas en la sección anterior devuelven valores de tipo Carácter y Numérico, respectivamente. Al igual que ocurre con todas las funciones, estos tipos devueltos están documentados con las funciones.

Hay cinco maneras de llamar a una función de Visual FoxPro:

  • Asignar a una variable el valor devuelto por la función. La siguiente línea de código almacena la fecha actual del sistema en una variable denominada dToday:
    dToday = DATE( )
  • Incluir la llamada a la función en un comando de Visual FoxPro. El siguiente comando establece el directorio predeterminado como el valor devuelto por la función GETDIR( ):
    CD GETDIR( )
  • Imprimir el valor devuelto en la ventana de resultados activa. La siguiente línea de código imprime la hora actual del sistema en la ventana de resultados activa:
    ? TIME( )
  • Llamar a la función sin almacenar en ningún lugar el valor devuelto. La siguiente llamada a la función desactiva el cursor:
    SYS(2002)
  • Incluir la función dentro de otra función. La siguiente línea de código imprime el día de la semana:
    ? DOW(DATE( ))

Otros ejemplos de funciones son:

Función | Descripción
ISDIGIT( ) | Devuelve el valor verdadero (.T.) si el carácter situado al comienzo de una cadena es un número; de lo contrario, devuelve el valor falso (.F.).
FIELD( ) | Devuelve el nombre de un campo.
LEN( ) | Devuelve el número de caracteres de una expresión de caracteres.
RECCOUNT( ) | Devuelve el número de registros de la tabla que está activa en este momento.
SUBSTR( ) | Devuelve el número especificado de caracteres a partir de una cadena de caracteres, empezando en una posición especificada de la cadena.

Utilizar comandos

Un comando hace que se realice una determinada acción. Cada comando dispone de una sintaxis específica, que indica lo que se debe incluir con el fin de que se ejecute correctamente el comando. Hay también cláusulas opcionales asociadas a los comandos que permiten especificar de forma más detallada la acción que se desea realizar.

Por ejemplo, el comando USE permite abrir y cerrar tablas:

Sintaxis de USE Descripción
USE
 Cierra la tabla que aparece en el área de trabajo actual.
USE customer
 Abre la tabla CUSTOMER en el área de trabajo actual y cierra cualquier tabla que ya esté abierta en el área de trabajo.
USE customer IN 0
 Abre la tabla CUSTOMER en la siguiente área de trabajo disponible.
USE customer IN 0 ;

  ALIAS mycust
 Abre la tabla CUSTOMER en la siguiente área de trabajo disponible y asigna al área de trabajo el alias mycust.

Algunos ejemplos de comandos son:

(Comando) | Descripción
DELETE | Selecciona registros especificados de una tabla para su eliminación.
REPLACE | Sustituye el valor almacenado en el campo del registro por un nuevo valor.
Go | Coloca el puntero de registro en una posición específica de la tabla.

Control del flujo del programa

Visual FoxPro incluye una categoría especial de comandos que "envuelven" a otros comandos y funciones, y determinan cuándo y con qué frecuencia se ejecutan. Estos comandos permiten realizar bucles y bifurcaciones condicionales, dos herramientas de programación muy eficaces. El siguiente programa muestra el uso de los bucles y las bifurcaciones condicionales. Estos conceptos se describen de forma más detallada después del ejemplo.

Suponga que su empresa cuenta con 10.000 empleados y desea conceder a todos aquellos que ganan 30.000 dólares estadounidenses o más un aumento salarial del 3%, y a todos los que ganan menos de 30.000 dólares estadounidenses un aumento del 6%. El siguiente programa de ejemplo le permite hacerlo.

Este programa presupone hay una tabla abierta en el área de trabajo actual, que contiene un campo numérico denominado salary. Si desea obtener información sobre las áreas de trabajo, consulte "Usar múltiples tablas" en Trabajar con tablas.

Programa de ejemplo para aumentar el salario de los empleados

Código Comentarios
SCAN
 El código comprendido entre SCAN y ENDSCAN se ejecuta tantas veces como registros haya en la tabla. Cada vez que se ejecuta el código, el puntero de registro se desplaza al siguiente registro de la tabla.
   IF salary >= 30000.00
      REPLACE salary WITH ;
         salary * 1.03
 Para cada registro, si el salario es mayor o igual que 30.000, este valor se sustituye por un nuevo salario que es un 3% superior.

El signo de punto y coma (;) que aparece después de WITH indica que el comando continúa en la siguiente línea.

   ELSE
      REPLACE salary WITH ;
         salary * 1.06
 Para cada registro, si el salario no es mayor o igual que 30.000, se sustituye este valor por un nuevo salario que es un 6% superior.
     ENDIF
ENDSCAN
 Final de la instrucción condicional IF.

Final del código que se ejecuta para cada registro de la tabla.

Este ejemplo utiliza comandos de bifurcación condicional y bucle para controlar el desarrollo del programa.

Bifurcación condicional

La bifurcación condicional permite someter a prueba condiciones y, a continuación, en función del resultado de la prueba, realizar distintas operaciones. Visual FoxPro ofrece dos comandos que permiten realizar una bifurcación condicional:

  • IF ... ELSE ... ENDIF
  • DO CASE ... ENDCASE

El código comprendido entre la instrucción inicial y la instrucción ENDIF o ENDCASE sólo se ejecuta si una condición lógica se evalúa con el resultado verdadero (.T.). En el programa de ejemplo, el comando IF se utiliza para distinguir entre dos estados: o el salario es de 30.000 dólares estadounidenses o más, o no lo es. Se adoptan diferentes medidas, dependiendo del estado.

En el siguiente ejemplo, si el valor almacenado en la variable nWaterTemp es menor que 100, no se realizará ninguna acción:

* set a logical variable to true if a condition is met.
IF nWaterTemp >= 100
   lBoiling = .T.
ENDIF
Nota Un asterisco al principio de una línea de un programa indica que la línea es un comentario. Los observaciones ayudan al programador a recordar la función que debe realizar cada segmento de código, si bien Visual FoxPro los pasa por alto.

Si se desea comprobar varias condiciones posibles, un bloque DO CASE ... ENDCASE puede resultar más eficaz que varias instrucciones IF y además es más fácil realizar un seguimiento del mismo.

Bucles

Un bucle le permite ejecutar una o más líneas de código tantas veces como sea necesario. En Visual FoxPro hay tres comandos que permiten realizar bucles:

  • DO WHILE ... ENDDO
  • FOR ... ENDFOR
  • FOR EACH ... ENDFOR
  • SCAN ... ENDSCAN

Utilice SCAN cuando realice una serie de acciones para cada uno de los registros de una tabla, como en el programa de ejemplo descrito anteriormente. El bucle SCAN permite escribir el código una vez y ejecutarlo para cada registro a medida que el puntero de registro se desplaza por la tabla.

Utilice FOR cuando sepa cuántas veces debe ejecutarse la sección de código. Por ejemplo, sabe que una tabla contiene un número específico de campos. Puesto que la función FCOUNT( ) de Visual FoxPro devuelve este número, puede utilizar un bucle FOR para imprimir los nombres de todos los campos de la tabla:

FOR nCnt = 1 TO FCOUNT( )
   ? FIELD(nCnt)
ENDFOR

Utilice DO WHILE cuando desee ejecutar una sección de código mientras cumpla una determinada condición. Tal vez no sepa cuántas veces debe ejecutarse el código, pero sí sabe cuándo debe detenerse la ejecución. Por ejemplo, supongamos que dispone de una tabla en la que figuran los nombres y las iniciales de una serie de personas y desea utilizar las iniciales para consultar los nombres de las personas. Surgiría un problema la primera vez que intentase agregar una persona cuyas iniciales fuesen las mismas que las de otra persona contenida en la tabla.

Para resolver este problema, podría agregar un número a las iniciales. Por ejemplo, el código de identificación de Miguel Suárez podría ser MS. La siguiente persona cuyas iniciales fuesen las mismas, Margarita Sánchez, sería MS1. Si a continuación agregara María Sanz a la tabla, su código de identificación sería MS2. Un bucle DO WHILE permite localizar el número correcto que se debe adjuntar a las iniciales.

Programa de ejemplo que utiliza DO WHILE para generar un identificador exclusivo

Código Comentarios
nHere = RECNO()
 Guarda la posición del registro.
cInitials = LEFT(firstname,1) + ;
   LEFT(lastname,1)

nSuffix = 0
 Obtiene las iniciales de la persona a partir de las primeras letras de los campos firstname y lastname.

Si es necesario, establece una variable que contenga el número que se debe agregar al final de las iniciales de una persona.

LOCATE FOR person_id = cInitials
 Comprueba si hay otra persona en la tabla cuyas iniciales son las mismas.
DO WHILE FOUND( )
 Si en otro registro de la tabla hay un valor person_id que coincide con cInitials, la función FOUND( ) devolverá el valor verdadero (.T.) y se ejecutará el código contenido en el bucle DO WHILE.
Si no se encuentra ninguna coincidencia, la siguiente línea de código que se ejecute será la línea que figura a continuación de ENDDO.
   nSuffix = nSuffix + 1
   cInitials = ;
      LEFT(cInitials,2);
      + ALLTRIM(STR(nSuffix))
 Prepara un sufijo nuevo y lo anexa al final de las iniciales.
     CONTINUE
 CONTINUE hace que se vuelva a evaluar el último comando LOCATE. El programa comprueba si el nuevo valor contenido en cInitials ya existe en el campo person_id de otro registro. Si es así, FOUND( ) seguirá devolviendo el valor .T. y se volverá a ejecutar el código contenido en el bucle DO WHILE. Si el nuevo valor contenido en cInitials es efectivamente único, FOUND( ) devolverá el valor .F. y la ejecución del programa continuará con la línea de código que aparece después de ENDDO.
ENDDO
 Final del bucle DO WHILE.
GOTO nHere
REPLACE person_id WITH cInitials
 Vuelve al registro y almacena el código de identificación exclusivo en el campo person_id.

Puesto que no hay manera de saber de antemano cuántas veces se encontrarán los códigos de identificación coincidentes que ya se están utilizando, se utiliza el bucle DO WHILE.

Vea también

Trabajar con tablas | SCAN ... ENDSCAN | FOR ... ENDFOR | DO WHILE ... ENDDO | IF ... ELSE ... ENDIF | DO CASE ... ENDCASE | GETDIR( ) | USE


Clases y objetos: los bloques funcionales de las aplicaciones

Las clases y los objetos están estrechamente relacionados, pero no son lo mismo. Una clase contiene información sobre cuál debe ser la apariencia y el comportamiento de un objeto. Una clase es el plano o esquema de un objeto. Por ejemplo, el esquema eléctrico y de diseño de un teléfono sería algo similar a una clase. El objeto o una instancia de la clase sería el teléfono.

Los objetos tienen propiedades

Un objeto tiene ciertas propiedades o atributos. Por ejemplo, un teléfono tiene un color y un tamaño determinados. Cuando se instala un teléfono en la oficina, tiene una determinada posición sobre la mesa. El auricular puede estar colgado o descolgado.

Los objetos que se crean en Visual FoxPro también tienen propiedades que están determinadas por la clase en la que se basa el objeto. Estas propiedades pueden establecerse en tiempo de diseño o en tiempo de ejecución.

Por ejemplo, en la tabla siguiente se indican algunas propiedades que puede tener una casilla de verificación.

Propiedad | Descripción
Título | Texto descriptivo que aparece junto a la casilla de verificación.
Enabled | Especifica si un usuario puede activar una casilla de verificación.
ForeColor | Color del texto del título.
Izquierda | Posición del extremo izquierdo de la casilla de verificación.
MousePointer | Apariencia del puntero del ratón cuando está situado sobre la casilla de verificación.
Primero | Posición de la parte superior de la casilla de verificación.
Visible | Especifica si la casilla de verificación es visible o no.

Los objetos tienen eventos y métodos asociados

Cada objeto reconoce y puede responder a determinadas acciones denominadas eventos. Un evento es una actividad específica y predeterminada, iniciada por el usuario o por el sistema. Los eventos, en la mayor parte de los casos, se generan por interacción del usuario. Por ejemplo, con un teléfono, se desencadena un evento cuando un usuario descuelga el auricular. Los eventos también se desencadenan cuando el usuario presiona los botones para efectuar una llamada.

En Visual FoxPro, las acciones del usuario que desencadenan eventos incluyen clic, movimientos del ratón y pulsaciones de teclas. Inicializar un objeto y encontrar una línea de código que produce un error son eventos iniciados por el sistema.

Los métodos son procedimientos asociados a un objeto. Los métodos se diferencian de los procedimientos normales de Visual FoxPro en que están vinculados inseparablemente a un objeto y tienen nombres distintos que los procedimientos normales de Visual FoxPro.

Los eventos pueden tener métodos asociados. Por ejemplo, si escribe código de método para el evento Click, ese código se ejecutará cuando se produzca el evento Click. Los métodos también pueden existir independientemente de los eventos. Se debe llamar a estos métodos de forma explícita en el código.

El conjunto de eventos es limitado, aunque amplio. No es posible crear nuevos eventos. Sin embargo, el conjunto de métodos puede ampliarse indefinidamente.

La tabla siguiente muestra algunos eventos asociados a una casilla de verificación:

Evento | Descripción
Click | El usuario hace clic en la casilla de verificación.
GotFocus | El usuario activa la casilla de verificación al hacer clic en ella o al llegar a ella a través de la tecla TAB.
LostFocus | El usuario selecciona otro control.

La tabla siguiente muestra algunos métodos asociados a una casilla de verificación:

Método | Descripción
Refresh | El valor de la casilla de verificación se actualiza para reflejar los cambios que se puedan haber producido en el origen de datos subyacente.
SetFocus | El enfoque se establece en la casilla de verificación como si el usuario hubiera presionado la tecla TAB hasta activar la casilla de verificación.

Vea también

Programación orientada a objetos | Clases de Visual FoxPro | Preparar la creación de clases | Crear clases | Modificar una definición de clase | Crear una subclase de una definición de clase | Utilizar el Diseñador de clases | Proteger y ocultar miembros de clases | Especificar la apariencia de una clase en tiempo de diseño | Crear, copiar y eliminar archivos de biblioteca de clases | Agregar clases a formularios | Anular los valores predeterminados | Referenciar objetos de la jerarquía de contenedores | Establecer propiedades | Llamar a métodos | Responder a eventos


Clases de Visual FoxPro

Todas las propiedades, eventos y métodos de un objeto se especifican en la definición de clase. Además, las clases tienen las siguientes características que las hacen especialmente útiles para crear código reutilizable y fácil de mantener:

  • Encapsulamiento
  • Subclases
  • Herencia

Ocultar la complejidad innecesaria

Cuando instale un teléfono en la oficina, lo más probable es que no le interese el funcionamiento interno del aparato para la recepción de llamadas, la realización o la finalización de conexiones con centralitas electrónicas o la conversión de las pulsaciones de tecla en señales electrónicas. Lo único que necesitará saber es que puede levantar el auricular, marcar los números apropiados y hablar con la persona con la que desea hablar. La complejidad de realizar esa conexión queda oculta. La ventaja de ignorar los detalles internos de un objeto para poder centrarse en los aspectos del objeto que necesita utilizar se denomina abstracción.

El encapsulamiento, que empaqueta el código de métodos y propiedades en un mismo objeto, contribuye a la abstracción. Por ejemplo, las propiedades que determinan los elementos de un cuadro de lista y el código que se ejecuta al elegir un elemento de la lista pueden encapsularse en un único control que se agrega a un formulario.

Aprovechar la eficacia de las clases existentes

Una subclase puede tener toda la funcionalidad de una clase existente, además de la funcionalidad y los controles adicionales que quiera darle. Si la clase es un teléfono básico, podrá tener subclases que tengan toda la funcionalidad del teléfono original y todas las características especializadas que desee darles.

La creación de subclases es un modo de reducir la cantidad de código que hay que escribir. Puede comenzar definiendo un objeto que sea similar al deseado y personalizarlo.

Simplificar el mantenimiento de código

Con la herencia, si realiza un cambio en una clase, ese cambio se reflejará en todas las subclases que se basen en ella. Esta actualización automática ahorra tiempo y trabajo. Por ejemplo, si un fabricante de teléfonos quisiera cambiar los teléfonos de dial por teléfonos de botones, se ahorraría mucho trabajo si pudiera hacer el cambio en el diagrama original y hacer que todos los teléfonos fabricados anteriormente con ese diagrama heredaran automáticamente la nueva característica, en lugar de tener que agregarla a todos los teléfonos existentes individualmente.

La herencia no funciona con el hardware, pero sí en el software. Si descubre un error en una clase, en lugar de tener que cambiar el código de todas las subclases podrá corregirlo una única vez en la clase y el cambio se propagará a todas las subclases pertenecientes a ella.

Contenedores y no contenedores

Los dos tipos principales de clases de Visual FoxPro y por extensión, de objetos de Visual FoxPro, son las clases de contenedor y las clases de control.

Clases de contenedor

Los contenedores pueden incluir otros objetos y permiten el acceso a los objetos que contienen. Por ejemplo, si crea una clase de contenedor que consta de dos cuadros de lista y dos botones de comando y, a continuación, agrega a un formulario un objeto basado en esta clase, cada objeto individual podrá manipularse en tiempo de ejecución y en tiempo de diseño. Puede cambiar fácilmente las posiciones de los cuadros de lista o los títulos de los botones de comando. También puede agregar objetos al control en tiempo de diseño; por ejemplo, puede agregar etiquetas para identificar los cuadros de lista.

La tabla siguiente muestra los posibles componentes de cada clase de contenedor:

Contenedor | Puede contener
Grupos de botones de comando | Botones de comando
Contenedor | Cualquier control
Control | Cualquier control
Custom | Cualquier control, entorno de datos, marco de página, contenedor, personalizado
DataEnvironment | Objetos Cursor, Relation y CursorAdapter
Conjuntos de formularios | Formularios, barras de herramientas
Formularios | Marcos de página, entorno de datos, cualquier control, contenedores, personalizado
Columnas de cuadrícula | Encabezados y cualquier objeto excepto conjuntos de formularios, formularios, barras de herramientas, cronómetros y otras columnas
Cuadrículas | Columnas de cuadrícula
Grupos de botones de opción | Botones de opción
Marcos de página | Páginas
Páginas | Cualquier control, contenedores, personalizado
Proyecto | Archivos, servidores
Barras de herramientas | Cualquier control, marcos de página, contenedor

Clases de control

Las clases de control están más encapsuladas que las clases de contenedor, pero por esa misma razón es posible que sean menos flexibles. Las clases de control no tienen un método AddObject.

Vea también

Programación orientada a objetos | Clases y objetos: los bloques funcionales de las aplicaciones | Preparar la creación de clases | Crear clases | Modificar una definición de clase | Crear una subclase de una definición de clase | Utilizar el Diseñador de clases | Proteger y ocultar miembros de clases | Especificar la apariencia de una clase en tiempo de diseño | Crear, copiar y eliminar archivos de biblioteca de clases | Agregar clases a formularios | Sobrescribir valor predeterminado de la propiedad | Referenciar objetos de la jerarquía de contenedores | Establecer propiedades | Llamar a métodos | Responder a eventos


Preparar la creación de clases

Es conveniente poder usar clases en muchos contextos distintos. Un diseño inteligente le permitirá decidir con mayor efectividad qué clases desea diseñar y qué funcionalidad va a incluir en la clase.

Decidir cuándo crear clases

Puede crear una clase para cada control y cada formulario que utilice, aunque éste no es el modo más efectivo de diseñar aplicaciones. Es muy probable que acabe con múltiples clases que tengan prácticamente la misma función y que deban mantenerse por separado.

Encapsular funcionalidad genérica

Cree una clase de control para funcionalidad genérica. Por ejemplo, los botones de comando que permiten al usuario mover el puntero de registro en una tabla, un botón para cerrar un formulario y un botón de ayuda pueden guardarse como clases y agregarse a formularios en cualquier momento que desee que los formularios tengan esta funcionalidad.

Puede exponer propiedades y métodos en una clase de modo que el usuario pueda integrarlos en el entorno de datos concreto de un formulario o un conjunto de formularios.

Proporcionar una apariencia y un uso coherentes

Puede crear clases de conjunto de formularios, de formulario y de control con una apariencia característica, de modo que todos los componentes de la aplicación tengan la misma apariencia. Por ejemplo, podría agregar gráficos y patrones de color específicos a una clase de formulario y utilizarla como plantilla para todos los formularios que cree. Podría crear una clase de cuadro de texto con una apariencia característica, como un efecto de sombreado, y usar esta clase en la aplicación en cualquier momento que desee agregar un cuadro de texto.

Decidir qué tipo de clase va a crear

Visual FoxPro permite crear distintos tipos de clases, cada uno con sus propias características. Especifique el tipo de clase que desea crear en el cuadro de diálogo Nueva clase o en la cláusula AS del comando CREATE CLASS.

Clases de base de Visual FoxPro

En el Diseñador de clases puede crear subclases para la mayoría de las clases de base de Visual FoxPro.

Clases de base de Visual FoxPro

CheckBox | EditBox | Line | ProjectHook
Column* | Form | ListBox | Separator
CommandButton | FormSet | OLE Bound (Control) | Shape
CommandGroup | Grid | OLE Container (Control) | Spinner
ComboBox | Header* | OptionButton* | TextBox
Container | Hyperlink (Objeto) | OptionGroup | Timer
Control | Image | Page* | ToolBar
Custom | Label | PageFrame |

* Estas clases son parte integral de un contenedor primario y no pueden usarse como subclases en el Diseñador de clases.

Todas las clases de base de Visual FoxPro reconocen el siguiente conjunto mínimo de eventos:

Evento | Descripción
Init | Ocurre cuando se crea el objeto.
Destroy | Ocurre cuando el objeto se libera de la memoria.
Error | Ocurre siempre que tiene lugar un error en procedimientos de evento o de método de la clase.

Todas las clases de base de Visual FoxPro tienen el siguiente conjunto mínimo de propiedades:

Propiedad | Descripción
Class | El tipo de clase de que se trata.
BaseClass | La clase de base de la que se deriva, como Form, Commandbutton, Custom, etc.
ClassLibrary | La biblioteca de clases en la que está almacenada.
ParentClass | La clase de la que se deriva la clase actual. Si la clase se deriva directamente de una clase de base de Visual FoxPro, la propiedad ParentClass es la misma que la propiedad BaseClass.

Ampliación de las clases de base de Visual FoxPro

Puede convertir en subclases estas clases para establecer sus propias propiedades de control predeterminadas. Por ejemplo, si quiere que los nombres predeterminados de controles que agregue a formularios de sus aplicaciones reflejen automáticamente sus convenciones de nombres, puede crear clases basadas en las clases de base de Visual FoxPro para hacerlo. Puede crear clases de formulario con una apariencia o un comportamiento personalizado para que sirvan como plantillas para todos los formularios que cree.

También podría convertir en subclases las clases de base de Visual FoxPro para crear controles con funcionalidad encapsulada. Si quiere que un botón libere formularios cuando haga clic en él, puede crear una clase basada en la clase de botón de comando de Visual FoxPro, establecer como título "Salir" e incluir el siguiente comando en el evento Click:

THISFORM.Release

Puede agregar este nuevo botón a cualquier formulario de la aplicación.

Crear controles con múltiples componentes

Las subclases no están limitadas a clases de base únicas. Puede agregar múltiples controles a una única definición de clase de contenedor. Muchas de las clases de la biblioteca de clases de ejemplo de Visual FoxPro están incluidas en esta categoría.

Creación de clases no visuales

Una clase basada en la clase personalizada de Visual FoxPro no tiene un elemento visual de tiempo de ejecución. Puede crear métodos y propiedades para la clase personalizada en el entorno del Diseñador de clases. Por ejemplo, podría crear una clase personalizada llamada StrMethods e incluir en ella una serie de métodos para manipular cadenas de caracteres. Podría agregar esta clase a un formulario con un cuadro de edición y llamar a los métodos cuando lo necesitara. Si tuviera un método llamado WordCount, podría llamarlo cuando lo necesitara:

THISFORM.txtCount.Value = ;
THISFORM.StrMethods.WordCount(THISFORM.edtText.Value)

Las clases no visuales (como el control personalizado y el control de tipo cronómetro) tienen una representación visual, únicamente en tiempo de diseño en el Diseñador de formularios. Establezca la propiedad de imagen de la clase personalizada como el archivo .bmp que desea mostrar en el Diseñador de formularios cuando se agregue la clase personalizada a un formulario.

Vea también

Programación orientada a objetos | Clases y objetos: los bloques funcionales de las aplicaciones | Clases de Visual FoxPro | Crear clases | Modificar una definición de clase | Crear una subclase de una definición de clase | Utilizar el Diseñador de clases | Proteger y ocultar miembros de clases | Especificar la apariencia de una clase en tiempo de diseño | Crear, copiar y eliminar archivos de biblioteca de clases | Agregar clases a formularios | Sobrescribir valor predeterminado de la propiedad | Referenciar objetos de la jerarquía de contenedores | Establecer propiedades | Llamar a métodos | Responder a eventos


Utilizar el Diseñador de clases

Cuando especifica la clase en la que está basada la nueva clase y la biblioteca en la que se va a almacenar, se abre el Diseñador de clases.

El Diseñador de clases proporciona la misma interfaz que el Diseñador de formularios, que le permite ver y modificar las propiedades de la clase en la ventana Propiedades. La ventana de edición de código le permite escribir código para que se ejecute cuando ocurran eventos o se llame a métodos.

Agregar objetos a una clase de control o a una clase de contenedor

Si basa la nueva clase en una clase de control o en una clase de contenedor, podrá agregarle controles del mismo modo que en el Diseñador de formularios: elija el botón del control en la barra de herramientas Controles de formularios y arrastre para ajustar el tamaño en el Diseñador de clases.

Independientemente del tipo de clase en el que base la nueva clase, puede establecer propiedades y escribir código de método. También podrá crear nuevas propiedades y métodos para la clase.

Si presiona y mantiene presionada la tecla CTRL mientras arrastra objetos de la barra de herramientas a una clase de formulario, se desactiva el comportamiento de forzar a la cuadrícula predeterminado.

Agregar propiedades y métodos a una clase

Puede agregar a la nueva clase tantas propiedades y métodos nuevos como desee. Las propiedades contienen valores, mientras que los métodos contienen código de procedimiento que se ejecutará cuando llame al método.

Crear propiedades y métodos nuevos

Cuando crea propiedades y métodos nuevos para clases, las propiedades y los métodos tienen como alcance la clase, no los componentes individuales de la misma.

Para agregar una propiedad nueva a una clase

  1. En el menú Clase, elija Nueva propiedad.
  2. En el cuadro de diálogo Nueva propiedad, escriba el nombre de la propiedad.
  3. Especifique la visibilidad: Public, Protected o Hidden.

    Puede tener acceso a una propiedad Public desde cualquier lugar de la aplicación. Las propiedades Protected y Hidden se tratan en Proteger y ocultar miembros de clases.

  4. Elija Agregar.

    También puede incluir una descripción de la propiedad que aparecerá en la parte inferior de la ventana Propiedades en el Diseñador de clases y en el Diseñador de formularios cuando se agregue el control a un formulario.

    Precaución Cuando agregue una propiedad a una clase que un usuario de la clase pueda establecer, el usuario puede introducir un valor incorrecto para la propiedad que cause errores en tiempo de ejecución. Tiene que documentar de forma explícita los valores válidos de la propiedad. Si la propiedad puede establecerse como 0, 1 ó 2, por ejemplo, indíquelo en el cuadro Descripción del cuadro de diálogo Nueva propiedad. También es conveniente comprobar el valor de la propiedad en código que haga referencia a ella.

Para crear una propiedad de matriz

  • En el cuadro Nombre del cuadro de diálogo Nueva propiedad, especifique el nombre, el tamaño y las dimensiones de la matriz.

    Por ejemplo, para crear una propiedad de matriz llamada myarray con diez filas y dos columnas, escriba lo siguiente en el cuadro Nombre:

    myarray[10,2]

La propiedad de matriz es de sólo lectura en tiempo de diseño y se muestra en cursiva en la ventana Propiedades. Se puede administrar y redimensionar en tiempo de ejecución. Para ver un ejemplo del uso de una propiedad de matriz, consulte Administrar múltiples instancias de un formulario en Crear formularios.

Para agregar un método nuevo a una clase

  1. En el menú Clase, elija Nuevo método.
  2. En el cuadro de diálogo Nuevo método, escriba el nombre del método.
  3. Especifique la visibilidad: Public, Protected o Hidden.
  4. Seleccione la casilla de verificación Access para crear un método Access, seleccione la casilla de verificación Assign para crear un método Assign o seleccione ambas casillas de verificación para crear métodos Access y Assign.

Los métodos Access y Assign le permiten ejecutar código cuando se consulta el valor de una propiedad o cuando se intenta cambiar su valor.

El código de un método Access se ejecuta cuando se consulta el valor de una propiedad, generalmente al utilizar la propiedad en una referencia de objeto, al almacenar el valor de una propiedad en una variable o al mostrar el valor de la propiedad con un signo de interrogación (?).

El código de un método Assign se ejecuta cuando intenta modificar el valor de una propiedad, generalmente mediante los comandos STORE o = para asignar un nuevo valor a la propiedad.

También puede incluir una descripción del método.

Vea también

Programación orientada a objetos | Clases y objetos: los bloques funcionales de las aplicaciones | Clases de Visual FoxPro | Preparar la creación de clases | Crear clases | Modificar una definición de clase | Crear una subclase de una definición de clase | Proteger y ocultar miembros de clases | Especificar la apariencia de una clase en tiempo de diseño | Crear, copiar y eliminar archivos de biblioteca de clases | Agregar clases a formularios | Sobrescribir valor predeterminado de la propiedad | Referenciar objetos de la jerarquía de contenedores | Establecer propiedades | Llamar a métodos | Responder a eventos


Crear clases

Puede crear nuevas clases en el Diseñador de clases y puede ver cómo verá el usuario cada objeto a medida que lo diseña.

Para crear una clase nueva

  • En el Administrador de proyectos, seleccione la ficha Clases y elija Nuevo.

    –O bien–

  • En el menú Archivo, elija Nuevo, seleccione Clase y elija Nuevo archivo.

    –O bien–

  • Utilice el comando CREATE CLASS.

El cuadro de diálogo Nueva clase le permite especificar el nombre de la nueva clase, la clase en la que se basa la nueva clase y la biblioteca en la que se almacenará.

Vea también

Programación orientada a objetos | Clases y objetos: los bloques funcionales de las aplicaciones | Clases de Visual FoxPro | Preparar la creación de clases | Modificar una definición de clase | Crear una subclase de una definición de clase | Utilizar el Diseñador de clases | Proteger y ocultar miembros de clases | Especificar la apariencia de una clase en tiempo de diseño | Crear, copiar y eliminar archivos de biblioteca de clases | Agregar clases a formularios | Anular los valores predeterminados | Referenciar objetos de la jerarquía de contenedores | Establecer propiedades | Llamar a métodos | Responder a eventos


Modificar una definición de clase

Cuando haya creado una clase, podrá modificarla. Los cambios realizados a una clase afectan a todas las subclases y a todos los objetos basados en esta clase. Puede agregar una mejora a una clase o reparar un error en la clase, y todas las subclases y los objetos basados en dicha clase heredarán el cambio.

Para modificar una clase en el Administrador de proyectos

  1. Seleccione la clase que desea modificar.
  2. Elija Modificar.

    Se abrirá el Diseñador de clases.

También puede modificar una definición de clase visual mediante el comando MODIFY CLASS.

Precaución No cambie la propiedad Name de una clase si la usan otros componentes de la aplicación. De lo contrario, Visual FoxPro no podrá encontrar la clase cuando la necesite.

Vea también

Programación orientada a objetos | Clases y objetos: los bloques funcionales de las aplicaciones | Clases de Visual FoxPro | Preparar la creación de clases | Crear clases | Crear una subclase de una definición de clase | Utilizar el Diseñador de clases | Proteger y ocultar miembros de clases | Especificar la apariencia de una clase en tiempo de diseño | Crear, copiar y eliminar archivos de biblioteca de clases | Agregar clases a formularios | Sobrescribir valor predeterminado de la propiedad | Referenciar objetos de la jerarquía de contenedores | Establecer propiedades | Llamar a métodos | Responder a eventos


Crear una subclase de una definición de clase

Hay dos formas de crear una subclase de una clase definida por el usuario.

Para crear una subclase de una clase definida por el usuario

  1. En el cuadro de diálogo Nueva clase del Administrador de proyectos, haga clic en el botón situado a la derecha del cuadro Basada en.
  2. En el cuadro de diálogo Abrir, elija la clase en la que desea basar la nueva clase.

    –O bien–

  • Utilice el comando CREATE CLASS.

    Por ejemplo, para basar una nueva clase, x, en parentclass de Mylibrary.vcx, use el código siguiente:

    CREATE CLASS x OF y AS parentclass ;
FROM mylibrary

Vea también

Programación orientada a objetos | Clases y objetos: los bloques funcionales de las aplicaciones | Clases de Visual FoxPro | Preparar la creación de clases | Crear clases | Modificar una definición de clase | Utilizar el Diseñador de clases | Proteger y ocultar miembros de clases | Especificar la apariencia de una clase en tiempo de diseño | Crear, copiar y eliminar archivos de biblioteca de clases | Agregar clases a formularios | Sobrescribir valor predeterminado de la propiedad | Referenciar objetos de la jerarquía de contenedores | Establecer propiedades | Llamar a métodos | Responder a eventos


Proteger y ocultar un miembro de una clase

Las propiedades y métodos de una definición de clase son Public de forma predeterminada: el código de otras clases u otros procedimientos puede establecer las propiedades o llamar a los métodos. A las propiedades y los métodos definidos como Protected sólo pueden tener acceso otros métodos de la definición de la clase o de subclases de la clase. A las propiedades y los métodos definidos como Hidden sólo pueden tener acceso otros miembros de la definición de la clase. Las subclases de la clase no pueden "ver" o hacer referencia a miembros ocultos.

Para asegurar un correcto funcionamiento en algunas clases, deberá impedir que los usuarios cambien las propiedades o llamen al método desde fuera de la clase mediante programación.

El ejemplo siguiente ilustra el uso de propiedades y métodos protegidos de una clase

La clase stopwatch incluida en Samples.vcx, en el directorio ...\Samples\Classes de Visual FoxPro, incluye un cronómetro y cinco etiquetas que muestran el tiempo transcurrido:

La clase Stopwatch contiene etiquetas y un cronómetro.

Valores de las propiedades de la clase Stopwatch

Control | Propiedad | Valor
lblSeconds | Caption | 00
lblColon1 | Título | :
lblMinutes | Título | 00
lblColon2 | Título | :
lblHours | Título | 00
tmrSWatch | Interval | 1000

Esta clase tiene también tres propiedades protegidas, nSec, nMin y nHour, así como un método protegido, UpdateDisplay. Los otros tres métodos personalizados de la clase, Start, Stop y Reset no están protegidos.

Sugerencia Elija Información de clase en el menú Clase para ver la visibilidad de todas las propiedades y métodos de una clase.

Las propiedades protegidas se utilizan en cálculos internos en el método UpdateDisplay y el evento Timer. El método UpdateDisplay establece los títulos de las etiquetas para que reflejen el tiempo transcurrido.

Método UpdateDisplay

Código Comentarios
cSecDisplay = ALLTRIM(STR(THIS.nSec))
cMinDisplay = ALLTRIM(STR(THIS.nMin))
cHourDisplay = ALLTRIM(STR(THIS.nHour))
 Convierte las propiedades numéricas al tipo Carácter para mostrarlas en los títulos de etiqueta.
THIS.lblSeconds.Caption = ;
 IIF(THIS.nSec < 10, ;
"0" ,"") + cSecDisplay
THIS.lblMinutes.Caption = ;
IIF(THIS.nMin < 10, ;
"0", "") + cMinDisplay
THIS.lblHours.Caption = ;
IIF(THIS.nHour < 10, ;
"0", "") + cHourDisplay
 Establece los títulos de etiqueta, conservando los 0 iniciales si el valor de la propiedad numérica es menor que 10.

La tabla siguiente muestra el código del evento tmrSWatch.Timer.

Evento Timer

Código Comentarios
THIS.Parent.nSec = THIS.Parent.nSec + 1
IF THIS.Parent.nSec = 60
  THIS.Parent.nSec = 0
  THIS.Parent.nMin = ;
  THIS.Parent.nMin + 1
ENDIF
 Incrementa el valor de la propiedad nSec cada vez que se desencadena el evento de cronómetro cada segundo.
Si nSec ha llegado a 60, lo restablece a 0 e incrementa la propiedad nMin.
IF THIS.Parent.nMin = 60
  THIS.Parent.nMin = 0
  THIS.Parent.nHour = ;
  THIS.Parent.nHour + 1
ENDIF
THIS.Parent.UpdateDisplay
 Si nMin llega a 60, lo restablece en 0 e incrementa la propiedad nHour.

Llama al método UpdateDisplay cuando se establecen los nuevos valores de la propiedad.

La clase Stopwatch tiene tres métodos que no están protegidos: Start, Stop y Reset. Un usuario puede llamar directamente a estos métodos para controlar el cronómetro.

El método Start contiene la línea de código siguiente:

THIS.tmrSWatch.Enabled = .T.

El método Stop contiene la línea de código siguiente:

THIS.tmrSWatch.Enabled = .F.

El método Reset establece las propiedades protegidas a 0 y llama al método protegido:

THIS.nSec = 0
THIS.nMin = 0
THIS.nHour = 0
THIS.UpdateDisplay

El usuario no puede establecer directamente estas propiedades o llamar a este método, pero el código del método Reset sí puede hacerlo.

Especificar el valor predeterminado para una propiedad

Al crear una nueva propiedad, su valor predeterminado es falso (.F.). Para especificar un valor predeterminado distinto para una propiedad, utilice la ventana Propiedades. En la ficha Otras, haga clic en la propiedad y establezca el valor deseado. Este será el valor inicial de la propiedad cuando se agregue la clase a un formulario o a un conjunto de formularios.

También puede establecer cualquiera de las propiedades de clase de base en el Diseñador de clases. Cuando un objeto basado en la clase se agregue al formulario, reflejará el valor de su propiedad en lugar del valor de la propiedad de la clase de base de Visual FoxPro.

Sugerencia Si desea convertir el valor predeterminado de una propiedad en una cadena vacía, seleccione el valor en el cuadro Modificar propiedades y presione la tecla RETROCESO.

Vea también

Programación orientada a objetos | Clases y objetos: los bloques funcionales de las aplicaciones | Clases de Visual FoxPro | Preparar la creación de clases | Crear clases | Modificar una definición de clase | Crear una subclase de una definición de clase | Utilizar el Diseñador de clases | Especificar la apariencia de una clase en tiempo de diseño | Crear, copiar y eliminar archivos de biblioteca de clases | Agregar clases a formularios | Sobrescribir valor predeterminado de la propiedad | Referenciar objetos de la jerarquía de contenedores | Establecer propiedades | Llamar a métodos | Responder a eventos


Especificar la apariencia de una clase en tiempo de diseño

Puede especificar el icono de barra de herramientas y el de contenedor para su clase en el cuadro de diálogo Información de clase.

Para establecer un icono de barra de herramientas para una clase

  1. En el Diseñador de clases, elija Información de clase en el menú Clase.
  2. En el cuadro de diálogo Información de clase, escriba el nombre y la ruta de acceso del archivo .bmp en el cuadro Icono de la barra de herramientas.
    Sugerencia El archivo de mapa de bits (archivo .bmp) para el icono de la barra de herramientas debe tener 15 por 16 píxeles. Si la imagen es mayor o menor, se ajustará a 15 por 16 píxeles y posiblemente no tendrá la apariencia deseada.

El icono de barra de herramientas especificado se muestra en la barra de herramientas Controles de formularios cuando se llena la barra de herramientas con las clases de la biblioteca de clases.

También puede especificar que se muestre el icono para la clase en el Administrador de proyectos y el Examinador de clases si establece el icono contenedor.

Para establecer un icono contenedor para una clase

  1. En el Diseñador de clases, elija Información de clase en el menú Clase.
  2. En el cuadro Icono contenedor, escriba el nombre y la ruta de acceso del archivo .bmp que se va a mostrar en el botón de la barra de herramientas Controles de formularios.

Vea también

Programación orientada a objetos | Clases y objetos: los bloques funcionales de las aplicaciones | Clases de Visual FoxPro | Preparar la creación de clases | Crear clases | Modificar una definición de clase | Crear una subclase de una definición de clase | Utilizar el Diseñador de clases | Proteger y ocultar miembros de clases | Crear, copiar y eliminar archivos de biblioteca de clases | Agregar clases a formularios | Sobrescribir valor predeterminado de la propiedad | Referenciar objetos de la jerarquía de contenedores | Establecer propiedades | Llamar a métodos | Responder a eventos


Crear, copiar y eliminar archivos de biblioteca de clases

Todas las clases diseñadas visualmente se almacenan en una biblioteca de clases con la extensión de archivo .vcx.

Crear una biblioteca de clases

Una biblioteca de clases puede crearse de una de estas tres formas.

Para crear una biblioteca de clases

  • Cuando cree una clase, especifique un nuevo archivo de biblioteca de clases en el cuadro Almacenar en del cuadro de diálogo Nueva clase.

    –O bien–

  • Utilice el comando CREATE CLASS, especificando el nombre de la nueva biblioteca de clases.

    Por ejemplo, la instrucción siguiente crea una nueva clase llamada myclass y una nueva biblioteca de clases llamada new_lib:

    CREATE CLASS myclass OF new_lib AS CUSTOM

    –O bien–

  • Utilice el comando CREATE CLASSLIB.

    Por ejemplo, escriba el comando siguiente en la ventana Comandos para crear una biblioteca de clases llamada new_lib:

    CREATE CLASSLIB new_lib

Copiar y quitar clases de bibliotecas de clases

Cuando agregue una biblioteca de clases a un proyecto, podrá copiar clases de una biblioteca a otra con facilidad o, simplemente, quitar clases de las bibliotecas.

Para copiar una clase de una biblioteca a otra

  1. Asegúrese de que ambas bibliotecas están en un proyecto (no necesariamente en el mismo).
  2. En el Administrador de proyectos, seleccione la ficha Clases.
  3. Haga clic en el signo más (+) situado a la izquierda de la biblioteca de clases en la que se encuentra ahora la clase.
  4. Arrastre la clase desde la biblioteca original y colóquela en la nueva.
    Sugerencia Es conveniente y más rápido guardar en una biblioteca de clases una clase y todas las subclases basadas en ella. Si tiene una clase que contiene elementos de muchas bibliotecas de clases distintas, estas bibliotecas deberán estar abiertas, por lo que se tardará un poco más en cargar inicialmente la clase en tiempo de ejecución y en tiempo de diseño.

Para quitar una clase de una biblioteca

  • Seleccione la clase en el Administrador de proyectos y elija Quitar.

    –O bien–

  • Utilice el comando REMOVE CLASS.

Puede utilizar el comando RENAME CLASS para cambiar el nombre de una clase de una biblioteca de clases. Sin embargo, recuerde que cuando cambia el nombre de una clase, los formularios que contienen la clase y las subclases en otros archivos .vcx siguen haciendo referencia al nombre antiguo y no volverán a funcionar correctamente.

Visual FoxPro incluye un Examinador de clases para facilitar el uso y la administración de clases y bibliotecas de clases. Para obtener más información, consulte Examinador de clases.

Vea también

Programación orientada a objetos | Clases y objetos: los bloques funcionales de las aplicaciones | Clases de Visual FoxPro | Preparar la creación de clases | Crear clases | Modificar una definición de clase | Crear una subclase de una definición de clase | Utilizar el Diseñador de clases | Proteger y ocultar miembros de clases | Especificar la apariencia de una clase en tiempo de diseño | Agregar clases a formularios | Sobrescribir valor predeterminado de la propiedad | Referenciar objetos de la jerarquía de contenedores | Establecer propiedades | Llamar a métodos | Responder a eventos


Agregar clases a formularios

Puede arrastrar una clase desde el Administrador de proyectos hasta el Diseñador de formularios o hasta el Diseñador de clases. También puede registrar las clases de modo que puedan mostrarse directamente en la barra de herramientas Controles de formularios del Diseñador de formularios o el Diseñador de clases y agregarse a contenedores de la misma forma que los controles estándar.

Para registrar una biblioteca de clases

  1. En el menú Herramientas, elija Opciones.
  2. En el cuadro de diálogo Opciones, elija la ficha Controles.
  3. Seleccione Bibliotecas de clases visuales y elija Agregar.
  4. En el cuadro de diálogo Abrir, elija una biblioteca de clases para agregar el registro y, a continuación, elija Abrir.
  5. Elija Establecer como predeterminado si desea que la biblioteca de clases esté disponible en la barra de herramientas Controles de formularios en sesiones futuras de Visual FoxPro.

También puede agregar la biblioteca de clases a la barra de herramientas Controles de formularios si elige Agregar en el submenú del botón Ver clases. Para que estas clases estén disponibles en la barra de herramientas Controles de formularios en sesiones futuras de Visual FoxPro, tendrá que establecer el valor predeterminado en el cuadro de diálogo Opciones.

Vea también

Programación orientada a objetos | Clases y objetos: los bloques funcionales de las aplicaciones | Clases de Visual FoxPro | Preparar la creación de clases | Crear clases | Modificar una definición de clase | Crear una subclase de una definición de clase | Utilizar el Diseñador de clases | Proteger y ocultar miembros de clases | Especificar la apariencia de una clase en tiempo de diseño | Crear, copiar y eliminar archivos de biblioteca de clases | Sobrescribir valor predeterminado de la propiedad | Referenciar objetos de la jerarquía de contenedores | Establecer propiedades | Llamar a métodos | Responder a eventos


Sobrescribir valor predeterminado de la propiedad

Al agregar a un formulario objetos basados en una clase definida por el usuario, puede cambiar el valor de todas las propiedades de la clase que no estén protegidas, anulando los valores predeterminados. Si posteriormente cambia las propiedades de clase en el Diseñador de clases, no se verá afectada la configuración del objeto del formulario. Si no ha cambiado el valor de una propiedad del formulario y cambia el de la clase, el cambio también surtirá efecto en el objeto.

Por ejemplo, un usuario puede agregar a un formulario un objeto basado en su clase y cambiar la propiedad BackColor de blanco a rojo. Si cambia a verde la propiedad BackColor de la clase, el objeto del formulario del usuario seguirá teniendo un valor rojo para el color de fondo. Por otra parte, si el usuario no cambia la propiedad BackColor del objeto y usted cambia a verde el color de fondo de la clase, la propiedad BackColor del objeto del formulario heredará el cambio y también será verde.

Llamar al código de métodos de clase primaria

Un objeto o una clase que se basa en otra clase hereda automáticamente la funcionalidad de la clase original. Sin embargo, puede anular fácilmente el código de métodos heredado. Por ejemplo, puede escribir nuevo código para el evento Click de una clase después de haberla convertido en subclase o después de agregar al contenedor un objeto basado en la clase. En ambos casos, el nuevo código se ejecuta en tiempo de ejecución; el código original no se ejecuta.

Sin embargo, es más frecuente que quiera agregar funcionalidad a la nueva clase u objeto conservando la funcionalidad original. De hecho, una de las decisiones clave que tiene que hacer en la programación orientada a objetos es qué funcionalidad va a incluir a nivel de clase, a nivel de subclase y a nivel de objeto. Puede optimizar el diseño de la clase con la función DODEFAULT( ) o el operador de resolución de alcance (::) para agregar código a distintos niveles de la jerarquía del contenedor o de la clase.

Agregar funcionalidad a subclases

Puede llamar al código de la clase primaria desde una subclase mediante la función DODEFAULT( ).

Por ejemplo, cmdOK es una clase de botón de comando almacenada en Buttons.vcx, ubicado en el directorio ...\Samples\Classes de Visual FoxPro. El código asociado al evento Click de cmdOk libera el formulario que contiene el botón. cmdCancel es una subclase de cmdOk de la misma biblioteca de clases. Para agregar funcionalidad a cmdCancel para descartar cambios, por ejemplo, puede agregar el código siguiente al evento Click:

IF USED( ) AND CURSORGETPROP("Buffering") != 1
TABLEREVERT(.T.)
ENDIF
DODEFAULT( )

Como los cambios se escriben de forma predeterminada en una tabla almacenada en búfer cuando se cierra la tabla, no tiene que agregar código TABLEUPDATE( ) a cmdOk. El código adicional de cmdCancel deshace los cambios realizados en la tabla antes de llamar al código de cmdOk, la clase primaria, para liberar el formulario.

Vea también

Programación orientada a objetos | Clases y objetos: los bloques funcionales de las aplicaciones | Clases de Visual FoxPro | Preparar la creación de clases | Crear clases | Modificar una definición de clase | Crear una subclase de una definición de clase | Utilizar el Diseñador de clases | Proteger y ocultar miembros de clases | Especificar la apariencia de una clase en tiempo de diseño | Crear, copiar y eliminar archivos de biblioteca de clases | Agregar clases a formularios | Referenciar objetos de la jerarquía de contenedores | Establecer propiedades | Llamar a métodos | Responder a eventos


Escribir definiciones de clases mediante programación

Las clases se pueden definir visualmente en el Diseñador de clases y el Diseñador de formularios o mediante programación en archivos .PRG. En esta sección se explica cómo escribir definiciones de clase. Para obtener más información acerca de los formularios, vea Crear Formularios.

En esta sección

Definición de clases mediante programación
Se muestra la sintaxis del shell básico para la creación de una clase.
Proteger y ocultar miembros de clases
Mediante un ejemplo, se muestra como proteger u ocultar propiedades y métodos en una definición de clase con palabras clave del comando DEFINE CLASS.
Crear objetos a partir de clases
Se describe como crear un objeto basado en una clase visual guardada.
Agregar objetos a una clase contenedora
Se detalla como agregar objetos a un contenedor utilizando la cláusula ADD OBJECT en el comando DEFINE CLASS o en el método AddObject.
Directrices para el código de métodos y eventos
Se presentan las reglas para crear código de evento y métodos.
Crear un conjunto de botones de desplazamiento por tablas
Se proporciona una explicación acerca de cómo diseñar y crear botones para desplazamiento por tablas mediante código.
Definir un control cuadrícula
Se explica cómo definir un control cuadrícula mediante programación.
Crear una referencia de objeto
Se explica como hacer referencia a un objeto y se describen las ventajas de crear referencias sobre realizar copias de objetos.
Matrices de miembros y objetos
Se indica como definir miembros de clases como matrices y cómo crear matrices de objetos.
Almacenamiento de datos con objetos
Se describe cuando y como se almacenan datos en objetos.
Integración de objetos y datos
Contiene información acerca de porque es importante la integración de objetos y datos.

Secciones relacionadas

Programar en Visual FoxPro
Microsoft® Visual FoxPro® es una eficaz herramienta de administración interactiva de datos, pero además podrá beneficiarse de toda su eficacia para crear aplicaciones. Comprender las técnicas de programación orientada a objetos y el modelo controlado por eventos puede aumentar su productividad como programador.
Programación orientada a objetos
Con la programación orientada a objetos, puede crear componentes de aplicación independientes que respondan a acciones del usuario y al sistema, y que se puedan mantener y reutilizar fácilmente.
Descripción del modelo de eventos
El modelo de eventos define cuando y como tienen lugar las interacciones con el usuario y el sistema.


Definición de clases mediante programación

En un archivo de programa es posible tener código de programa delante de las definiciones de clase, pero no después de ellas, del mismo modo que el código de programa no puede ir después de los procedimientos de un programa. El shell básico para la creación de clases tiene la sintaxis siguiente:

DEFINE CLASS ClassName1 AS ParentClass [OLEPUBLIC]    [[PROTECTED | HIDDEN PropertyName1, PropertyName2 ...]       [Object.]PropertyName = eExpression ...]    [ADD OBJECT [PROTECTED] ObjectName AS ClassName2 [NOINIT]       [WITH cPropertylist]]...    [[PROTECTED | HIDDEN] FUNCTION | PROCEDURE Name[_ACCESS | _ASSIGN]       [NODEFAULT]       cStatements
   [ENDFUNC | ENDPROC]]... ENDDEFINE

Vea también

Escribir definiciones de clases mediante programación | Responder a eventos | Proteger y ocultar miembros de clases | Llamar a métodos | Establecer propiedades | Programación orientada a objetos


Proteger y ocultar miembros de clases

Puede proteger u ocultar propiedades y métodos de una definición de clase con las palabras clave PROTECTED y HIDDEN del comando DEFINE CLASS. Las propiedades protegidas (PROTECTED) y ocultas (HIDDEN) pueden ser declaradas juntas en una lista separada por comas. Los métodos protegidos deben ser declarados individualmente

Por ejemplo, si crea una clase para almacenar información sobre empleados y no desea que los usuarios puedan modificar la fecha de contratación, puede proteger la propiedad HireDate. Si los usuarios necesitan averiguar cuándo se contrató a un empleado determinado, podrá incluir un método para devolver la fecha de contratación.

DEFINE CLASS employee AS CUSTOM
PROTECTED HireDate
First_Name = ""
Last_Name = ""
Address = ""
HireDate = { - - }
PROCEDURE GetHireDate
RETURN This.HireDate
ENDPROC
ENDDEFINE

Vea también

Escribir definiciones de clases mediante programación | Definición de clases mediante programación | Crear objetos a partir de clases | Responder a eventos | Programación orientada a objetos


Crear objetos a partir de clases

Cuando haya guardado una clase visual, puede crear un objeto basado en ella mediante la función CREATEOBJECT( ). El ejemplo siguiente muestra la ejecución de un formulario guardado como una definición de clase en el archivo de biblioteca de clases Forms.vcx:

Crear y mostrar un objeto Form cuya clase se diseñó en el Diseñador de formularios

Código Comentarios
SET CLASSLIB TO Forms ADDITIVE
 Establece como biblioteca de clases el archivo .vcx en el que se guardó la definición del formulario. La palabra clave ADDITIVE impide que este comando cierre otras bibliotecas de clases que estén abiertas.
frmTest = CREATEOBJECT("TestForm")
 Este código supone que el nombre de la clase de formulario guardada en la biblioteca de clases es TestForm.
frmTest.Show
 Muestra el formulario.

Vea también

Escribir definiciones de clases mediante programación | Proteger y ocultar miembros de clases | Agregar objetos a una clase contenedora | Definición de clases mediante programación | Programación orientada a objetos


Agregar objetos a una clase contenedora

Puede utilizar la cláusula ADD OBJECT en el comando DEFINE CLASS o en el método AddObject para agregar objetos a un contenedor.

Por ejemplo, la siguiente definición de clase se basa en un formulario. El comando ADD OBJECT agrega dos botones de comando al formulario:

DEFINE CLASS myform AS FORM
ADD OBJECT cmdOK AS COMMANDBUTTON
ADD OBJECT PROTECTED cmdCancel AS COMMANDBUTTON
ENDDEFINE

Utilice el método AddObject para agregar objetos a un contenedor después de crear el objeto contenedor. Por ejemplo, las líneas de código siguientes crean un objeto Form y le agregan dos botones de comando:

frmMessage = CREATEOBJECT("FORM")
frmMessage.AddObject("txt1", "TEXTBOX")
frmMessage.AddObject("txt2", "TEXTBOX")

También puede utilizar el método AddObject en el código de método de una clase. Por ejemplo, la definición de clase siguiente utiliza AddObject en el código asociado al evento Init para agregar un control a una columna de cuadrícula.

DEFINE CLASS mygrid AS GRID
ColumnCount = 3
PROCEDURE Init
THIS.Column2.AddObject("cboClient", "COMBOBOX")
THIS.Column2.CurrentControl = "cboClient"
ENDPROC
ENDDEFINE

Agregar y crear clases en código de métodos

Puede agregar objetos a un contenedor mediante programación con el método AddObject. También puede crear objetos con la función CREATEOBJECT( ) en los métodos Load, Init o en cualquier otro método de la clase.

Cuando agregue un objeto con el método AddObject, el objeto se convierte en un miembro del contenedor. La propiedad Parent del objeto agregado se refiere al contenedor. Cuando un objeto basado en el contenedor o en la clase del control se libera de la memoria, también se libera el objeto agregado.

Cuando crea un objeto con la función CREATEOBJECT( ), el objeto tiene como alcance una propiedad de la clase o una variable del método que llama a esta función. La propiedad primaria del objeto no está definida.

Vea también

Escribir definiciones de clases mediante programación | Crear objetos a partir de clases | Directrices para el código de métodos y eventos | Proteger y ocultar miembros de clases | Programación orientada a objetos | Referencia a objetos padre


Directrices para el código de métodos y eventos

Además de escribir código para los métodos y eventos de un objeto, puede ampliar el conjunto de métodos en las subclases de clases de base de Visual FoxPro. Estas son las reglas para escribir código de evento y métodos:

  • El conjunto de eventos para las clases de base de Visual FoxPro es limitado y no puede ampliarse.
  • Todas las clases reconocen un conjunto fijo de eventos predeterminados, que incluye como mínimo los eventos Init, Destroy y Error.
  • Al crear en una definición de clase un método con el mismo nombre que un evento reconocible por la clase, el código del método se ejecutará cuando se produzca el evento.
  • Puede agregar métodos a las clases mediante la creación de un procedimiento o una función en la definición de clase.
  • Puede crear métodos Access y Assign para sus clases si crea un procedimiento o una función con el mismo nombre que una propiedad de clase y anexa _ACCESS o _ASSIGN al nombre de procedimiento o de función.

Llamar al código de evento en la jerarquía de clases

Al crear una clase, ésta hereda automáticamente todas las propiedades, los métodos y los eventos de la clase primaria. Si se escribe código para un evento en la clase primaria, ese código se ejecutará cuando se produzca el evento con respecto a un objeto basado en la subclase. Sin embargo, podrá sobrescribir el código de la clase primaria escribiendo código para el evento en la subclase.

Para llamar explícitamente al código de evento en una clase primaria cuando la subclase tiene código escrito para el mismo evento, utilice la función DODEFAULT( ).

Por ejemplo, podría tener una clase llamada cmdBottom basada en la clase de base de botón de comando que tuviera el siguiente código en el evento Click:

GO BOTTOM
THISFORM.Refresh

Al agregar un objeto basado en esta clase a un formulario llamado, por ejemplo, cmdBottom1, puede decidir que también desea mostrar un mensaje para informar al usuario de que el puntero de registro está en la parte inferior de la tabla. Podría agregar el código siguiente al evento Click del objeto para mostrar el mensaje:

WAIT WINDOW "At the Bottom of the Table" TIMEOUT 1

Sin embargo, al ejecutar el formulario se muestra el mensaje, pero el puntero de registro no se mueve porque nunca se ejecuta el código del evento Click de la clase primaria. Para asegurarse de que también se ejecuta el código del evento Click de la clase primaria, incluya las siguientes líneas de código en el procedimiento del evento Click del objeto:

DODEFAULT( )
WAIT WINDOW "At the Bottom of the Table" TIMEOUT 1
Nota Puede utilizar la función ACLASS( ) para determinar todas las clases de la jerarquía de clases de un objeto.

Impedir la ejecución del código de clase de base

En algunos casos, deseará evitar que se produzca el comportamiento predeterminado de la clase de base en un evento o método. Para ello, incluya la palabra clave NODEFAULT en el código de método que escriba. Por ejemplo, el programa siguiente utiliza la palabra clave NODEFAULT en el evento KeyPress de un cuadro de texto para impedir que se muestren en el cuadro los caracteres escritos:

frmKeyExample = CREATEOBJECT("test")
frmKeyExample.Show
READ EVENTS
DEFINE CLASS test AS FORM
ADD OBJECT text1 AS TEXTBOX
PROCEDURE text1.KeyPress
PARAMETERS nKeyCode, nShiftAltCtrl
NODEFAULT
IF BETWEEN(nKeyCode, 65, 122) && between 'A' and 'z'
This.Value = ALLTRIM(This.Value) + "*"
ACTIVATE SCREEN      && send output to main Visual FoxPro window
?? CHR(nKeyCode)
ENDIF
ENDPROC
PROCEDURE Destroy
CLEAR EVENTS
ENDPROC
ENDDEFINE

Vea también

Escribir definiciones de clases mediante programación | Agregar objetos a una clase contenedora | Crear un conjunto de botones de desplazamiento por tablas | Init | Destroy | Error | Métodos Access y Assign | Programación orientada a objetos | NODEFAULT (Comando)


Crear un conjunto de botones de desplazamiento por tablas

Una característica común de muchas aplicaciones es una serie de botones de desplazamiento que permiten a los usuarios moverse por una tabla. Suelen incluir botones para mover el puntero de registro al registro siguiente o anterior de la tabla, así como al registro superior o inferior de la tabla.

Diseño de los botones de desplazamiento

Todos los botones tendrán algunas características y funciones comunes, por lo que es conveniente crear una clase de botones de desplazamiento. A continuación, los botones individuales pueden aprovechar fácilmente esta apariencia y funcionalidad comunes. Esta clase primaria es la clase Navbutton que se definirá posteriormente en esta sección.

Una vez definida la clase primaria, las subclases siguientes definen la funcionalidad y apariencia específicas de cada uno de los cuatro botones de desplazamiento: navTop, navPrior, navNext, navBottom.

Por último se crea una clase de contenedor vcr, a la que se agregan todos los botones de desplazamiento. El contenedor puede agregarse a un formulario o una barra de herramientas para proporcionar funcionalidad de desplazamiento por tablas.

Definición de la clase NAVBUTTON

Para crear Navbutton, guarde las seis definiciones de clase siguientes (Navbutton, navTop, navBottom, navPrior, navNext y vcr) en un archivo de programa como Navclass.prg.

Definición de la clase genérica botón de comando de desplazamiento

Código Comentarios
DEFINE CLASS Navbutton AS
COMMANDBUTTON
Height = 25
Width = 25
  TableAlias = ""
 Define la clase primaria de los botones de desplazamiento.

Asigna dimensiones a la clase.

Incluye una propiedad personalizada, TableAlias, que contiene el nombre del alias por el que desplazarse.

PROCEDURE Click
IF NOT EMPTY(This.TableAlias)
SELECT (This.TableAlias)
ENDIF
ENDPROC
 Si se ha establecido TableAlias, este procedimiento de clase primaria selecciona el alias antes de ejecutar el código real de desplazamiento en las subclases. De lo contrario, se supondrá que el usuario desea desplazarse por la tabla del área de trabajo seleccionada actualmente.
PROCEDURE RefreshForm
_SCREEN.ActiveForm.Refresh
ENDPROC
 Al emplear _SCREEN.ActiveForm.Refresh en lugar de THISFORM.Refresh puede agregar la clase a un formulario o una barra de herramientas y hacer que funcione perfectamente también.
ENDDEFINE
 Finaliza la definición de clase.

Los botones de desplazamiento específicos se basan en la clase Navbutton. El código siguiente define el botón Superior para el conjunto de botones de desplazamiento. Los tres botones de desplazamiento restantes se definen en la tabla siguiente. Las cuatro definiciones de clase son similares. Por ello, sólo se ofrecen observaciones extensos para la primera definición.

Definición de la clase botón de desplazamiento Superior

Código Comentarios
DEFINE CLASS navTop AS Navbutton
Caption = "|<"
 Define la clase botón de desplazamiento Superior y establece la propiedad Caption.
PROCEDURE Click
 Crea código de método que se ejecutará cuando se produzca el evento Click para el control.
  DODEFAULT( )

GO TOP

THIS.RefreshForm
 Llama al código de evento Click de la clase primaria, Navbutton, de modo que se pueda seleccionar el alias adecuado si se ha establecido la propiedad TableAlias.

Incluye el código para establecer el puntero de registro en el primer registro de la tabla: GO TOP.

Llama al método RefreshForm de la clase primaria. No es necesario utilizar el operador de resolución de alcance (::) en este caso porque no hay ningún método en la subclase que tenga el mismo nombre que el método de la clase primaria. Por otra parte, tanto la clase primaria como la subclase tienen código de método para el evento Click.
ENDPROC
 Termina el procedimiento Click.
ENDDEFINE
 Finaliza la definición de clase.

Los restantes botones de desplazamiento tienen definiciones de clase similares.

Definición de las demás clases de botones de desplazamiento

Código Comentarios
DEFINE CLASS navNext AS Navbutton
Caption = ">"
 Define la clase de botón de desplazamiento Siguiente y establece la propiedad Caption.
PROCEDURE Click
DODEFAULT( )
SKIP 1
IF EOF( )
GO BOTTOM
ENDIF
THIS.RefreshForm
ENDPROC
ENDDEFINE

Incluye el código para establecer el puntero de registro en el siguiente registro de la tabla.

Finaliza la definición de clase.
DEFINE CLASS navPrior AS Navbutton
Caption = "<"
 Define la clase de botón de desplazamiento Anterior y establece la propiedad Caption.
PROCEDURE Click
DODEFAULT( )
SKIP –1
IF BOF( )
GO TOP
ENDIF
THIS.RefreshForm
ENDPROC
ENDDEFINE

Incluye el código para establecer el puntero de registro en el registro anterior de la tabla.

Finaliza la definición de clase.
DEFINE CLASS navBottom AS
Navbutton
Caption = ">|"
 Define la clase de botón de desplazamiento Inferior y establece la propiedad Caption.
PROCEDURE Click
DODEFAULT( )
GO BOTTOM
THIS.RefreshForm
ENDPROC
ENDDEFINE

Incluye el código para establecer el puntero de registro en el último registro de la tabla.

Finaliza la definición de clase.

La siguiente definición de clase contiene los cuatro botones de desplazamiento para poder agregarlos como una unidad a un formulario. La clase también incluye un método para establecer la propiedad TableAlias de los botones.

Definición de una clase de controles de desplazamiento por tabla

Código Comentarios
DEFINE CLASS vcr AS CONTAINER
Height = 25
Width = 100
Left = 3
Top = 3
 Comienza la definición de clase. La propiedad Height se establece en el mismo alto que los botones de comando que contendrá.
   ADD OBJECT cmdTop AS navTop ;
WITH Left = 0
ADD OBJECT cmdPrior AS navPrior ;
WITH Left = 25
ADD OBJECT cmdNext AS navNext ;
WITH Left = 50
ADD OBJECT cmdBot AS navBottom ;
WITH Left = 75
 Agrega los botones de desplazamiento.
PROCEDURE SetTable(cTableAlias)
IF TYPE("cTableAlias") = 'C'
THIS.cmdTop.TableAlias = ;
cTableAlias
THIS.cmdPrior.TableAlias = ;
cTableAlias
THIS.cmdNext.TableAlias = ;
cTableAlias
THIS.cmdBot.TableAlias = ;
cTableAlias
ENDIF
ENDPROC
 Este método se utiliza para establecer la propiedad TableAlias de los botones. TableAlias se define en la clase primaria Navbutton.

También podría utilizar el método SetAll para establecer esta propiedad:
IF TYPE ("cTableAlias") = 'C'
This.SetAll("TableAlias", "cTableAlias")
ENDIF
Sin embargo, esto produciría un error si se agregara a la clase un objeto que no tuviera la propiedad TableAlias.
ENDDEFINE
 Termina la definición de clase.

Una vez definida la clase, puede dividirla en subclases o agregarla a un formulario.

Crear una subclase basada en la nueva clase

También puede crear subclases basadas en vcr que tengan botones adicionales como Buscar, Modificar, Guardar y Salir. Por ejemplo, vcr2 incluye un botón Salir:

Definición de una subclase de control de desplazamiento por tablas

Código Comentarios
DEFINE CLASS vcr2 AS vcr
ADD OBJECT cmdQuit AS
COMMANDBUTTON WITH ;
Caption = "Quit",;
Height = 25, ;
Width = 50
Width = THIS.Width + THIS.cmdQuit.Width
cmdQuit.Left = THIS.Width - ;
THIS.cmdQuit.Width
 Define una clase basada en vcr y le agrega un botón de comando.
PROCEDURE cmdQuit.CLICK
   RELEASE THISFORM
ENDPROC
 Cuando el usuario haga clic en cmdQuit, este código liberará el formulario.
ENDDEFINE
 Termina la definición de clase.

Vcr2 tiene todo lo de vcr más el nuevo botón de comando y no es necesario volver a escribir ninguna parte del código.

Cambios en VCR reflejados en la subclase

A causa de la herencia, los cambios realizados en la clase primaria se reflejan en todas las subclases que se basan en ella. Por ejemplo, puede informar al usuario de que se ha llegado al final de la tabla si cambia la instrucción IF EOF( ) de navNext.Click por la siguiente:

IF EOF( )
GO BOTTOM
SET MESSAGE TO "Bottom of the table"
ELSE
SET MESSAGE TO
ENDIF

Puede indicar al usuario que ha llegado al principio de la tabla, cambiando la instrucción IF BOF( ) de navPrior.Click por la siguiente:

IF BOF()
GO TOP
SET MESSAGE TO "Top of the table"
ELSE
SET MESSAGE TO
ENDIF

Si se realizan estos cambios en las clases navNext y navPrior, también se aplicarán automáticamente a los botones apropiados de vcr y vcr2.

Agregar VCR a una clase de formulario

Una vez definido vcr como un control, el control puede agregarse a la definición de un contenedor. Por ejemplo, el código siguiente agregado a Navclass.prg define un formulario al que se han agregado botones de desplazamiento:

DEFINE CLASS NavForm AS Form
ADD OBJECT oVCR AS vcr
ENDDEFINE

Ejecutar el formulario que contiene VCR

Una vez definida la subclase de formulario, podrá mostrarla fácilmente con los comandos apropiados.

Para mostrar el formulario

  1. Cargue la definición de clase:
    SET PROCEDURE TO navclass ADDITIVE
  2. Cree un objeto basado en la clase navform:
    frmTest = CREATEOBJECT("navform")
  3. Llame al método Show del formulario:
    frmTest.Show

Si no llama al método SetTable de oVCR (el objeto VCR de NavForm), cuando el usuario haga clic en los botones de desplazamiento el puntero de registro se moverá por la tabla del área de trabajo seleccionada actualmente. Puede llamar al método SetTable para especificar en qué tabla se va a desplazar.

frmTest.oVCR.SetTable("customer")
Nota Cuando el usuario cierre el formulario, frmTest se establecerá en un valor NULL (.NULL.). Para liberar de la memoria la variable de objeto, utilice el comando RELEASE. Las variables de objeto creadas en los archivos de programa se liberan de la memoria cuando se completa el programa.

Vea también

Escribir definiciones de clases mediante programación | Directrices para el código de métodos y eventos | Definir un control cuadrícula | Propiedad Caption | Propiedad Height | Método SetAll | Programación orientada a objetos


Definir un control cuadrícula

Una cuadrícula contiene columnas que, a su vez, pueden contener encabezados y cualquier otro control. El control predeterminado contenido en una columna es un cuadro de texto, por lo que la funcionalidad predeterminada de la cuadrícula se aproxima a una ventana Examinar. Sin embargo, la arquitectura subyacente de la cuadrícula la abre hasta una extensión ilimitada.

El ejemplo siguiente crea un formulario que contiene un objeto Grid con dos columnas. La segunda columna contiene una casilla de verificación para mostrar los valores en un campo lógico de una tabla.

control cuadrícula con una casilla de verificación en una columna

Definición de una clase de cuadrícula con una casilla de verificación en una columna de cuadrícula

Código Comentarios
DEFINE CLASS grdProducts AS Grid
Left = 24
Top = 10
Width = 295
Height = 210
Visible = .T.
RowHeight = 28
ColumnCount = 2
 Comienza la definición de clase y establece las propiedades que determinan la apariencia de la cuadrícula.

Al establecer la propiedad ColumnCount en 2, se agregan dos columnas a la cuadrícula. Cada columna contiene un encabezado con el nombre Header1. Además, cada columna tiene un grupo de propiedades independiente que determina su apariencia y comportamiento.
Column1.ControlSource ="prod_name"
Column2.ControlSource ="discontinu"
 Al establecer la propiedad ControlSource de una columna, la columna muestra los valores de ese campo para todos los registros de la tabla.
Discontinu es un campo lógico.
Column2.Sparse = .F.
 Column2 contendrá la casilla de verificación. Establezca la propiedad Sparse de la columna en .F. de modo que la casilla de verificación sea visible en todas las filas, no sólo en la celda seleccionada.
Procedure Init
THIS.Column1.Width = 175
THIS.Column2.Width = 68
THIS.Column1.Header1.Caption = ;
"Product Name"
THIS.Column2.Header1.Caption = ;
"Discontinued"
THIS.Column2.AddObject("chk1", ;
"checkbox")
THIS.Column2.CurrentControl = ;
"chk1"
THIS.Column2.chk1.Visible = .T.
THIS.Column2.chk1.Caption = ""
ENDPROC
 Establece el ancho de las columnas y los títulos de los encabezados.

El método AddObject permite agregar un objeto a un contenedor ; en este caso, una casilla de verificación llamada chk1.
Establece la propiedad SYS(18) - Control actual de la columna en la casilla de verificación, de modo que se muestre la casilla de verificación.
Comprueba que la casilla de verificación es visible.
Establece el título en una cadena vacía de modo que no se muestre el título predeterminado "chk1".
ENDDEFINE
 Termina la definición de clase.

La siguiente definición de clase es el formulario que contiene la cuadrícula. Ambas definiciones de clase pueden incluirse en el mismo archivo de programa.

Definición de una clase de formulario que contiene la clase de cuadrícula

Código Comentarios
DEFINE CLASS GridForm AS FORM
Width = 330
Height = 250
Caption = "Grid Example"
ADD OBJECT grid1 AS grdProducts
 Crea una clase de formulario y le agrega un objeto basado en la clase de cuadrícula.
PROCEDURE Destroy
CLEAR EVENTS
ENDPROC
ENDDEFINE
 El programa que crea un objeto basado en esta clase utilizará READ EVENTS. Al incluir CLEAR EVENTS en el evento Destroy del formulario, el programa podrá terminar cuando el usuario cierre el formulario.
Termina la definición de clase.

El programa siguiente abre la tabla donde están incluidos los campos que se van a mostrar en las columnas de cuadrícula, crea un objeto basado en la clase GridForm y ejecuta el comando READ EVENTS.

CLOSE DATABASE
OPEN DATABASE (HOME(2) + "data\testdata.dbc")
USE products
frmTest= CREATEOBJECT("GridForm")
frmTest.Show
READ EVENTS

Este programa puede incluirse en el mismo archivo en el que están incluidas las definiciones de clase si aparece al principio del archivo. También puede usar el comando SET PROCEDURE TO para especificar el programa que contiene las definiciones de clase e incluir este código en un programa distinto.

Vea también

Escribir definiciones de clases mediante programación | Crear un conjunto de botones de desplazamiento por tablas | Crear una referencia de objeto | Examinar | Sparse (Propiedad) | AddObject (Método) | SYS(18) - Control actual | Programación orientada a objetos


Crear una referencia de objeto

En lugar de realizar una copia de un objeto, puede crear una referencia a dicho objeto. Una referencia ocupa menos memoria que un objeto adicional, puede transferirse fácilmente entre procedimientos y puede ayudar a escribir código genérico.

Devolver una referencia a un objeto

En algunas ocasiones puede resultar conveniente manipular un objeto por medio de una o varias referencias al mismo. Por ejemplo, el programa siguiente define una clase, crea un objeto basado en la clase y devuelve una referencia al objeto:

*--NEWINV.PRG
*--Devuelve una referencia a un nuevo formulario factura.
frmInv = CREATEOBJECT("InvoiceForm")
RETURN frmInv
DEFINE CLASS InvoiceForm AS FORM
ADD OBJECT txtCompany AS TEXTBOX
* código para establecer propiedades, agregar otros objetos, etcétera
ENDDEFINE

El programa siguiente establece una referencia al objeto creado en Newinv.prg. La variable de referencia puede manipularse exactamente del mismo modo que la variable de objeto:

frmInvoice = NewInv() && almacena la referencia de objeto en una variable
frmInvoice.SHOW

También puede crear una referencia a un objeto de un formulario, como en el ejemplo siguiente.

txtCustName = frmInvoice.txtCompany
txtCustName.Value = "Fox User"
Sugerencia Cuando ha creado un objeto, puede usar el comando DISPLAY OBJECTS para mostrar la jerarquía de clases del objeto, los valores de las propiedades, los objetos contenidos y los métodos y eventos disponibles. Puede llenar una matriz con las propiedades (no los valores de las propiedades), eventos, métodos y objetos contenidos de un objeto con la función AMEMBERS( ).

Liberar objetos y referencias de la memoria

Si existe una referencia a un objeto, la liberación del objeto no borra el objeto de la memoria. Por ejemplo, el comando siguiente libera el objeto original, frmInvoice:

RELEASE frmInvoice

Sin embargo, puesto que sigue existiendo una referencia a un objeto perteneciente a frmInvoice, el objeto no se liberará de la memoria hasta que se libere txtCustName con el comando siguiente:

RELEASE txtCustName

Comprobar si existe un objeto

Puede utilizar las funciones TYPE( ), ISNULL( ) y VARTYPE( ) para determinar si existe un objeto. Por ejemplo, las líneas de código siguientes comprueban si existe un objeto llamado oConnection:

IF TYPE("oConnection") = "O" AND NOT ISNULL(oConnection)
* Objeto existe
ELSE
* Objeto no existe
ENDIF
Nota El comando ISNULL( ) es necesario porque .NULL. se almacena en la variable de objeto de formulario cuando un usuario cierra un formulario, pero el tipo de variable sigue siendo "O".

Vea también

Escribir definiciones de clases mediante programación | Definir un control cuadrícula | Matrices de miembros y objetos | DISPLAY OBJECTS | AMEMBERS( ) | Programación orientada a objetos


Matrices de miembros y objetos

Puede definir miembros de clases como matrices. En el ejemplo siguiente, choices es una matriz de controles:

DEFINE CLASS MoverListBox AS CONTAINER
DIMENSION choices[3]
ADD OBJECT lstFromListBox AS LISTBOX
ADD OBJECT lstToListBox AS LISTBOX
ADD OBJECT choices[1] AS COMMANDBUTTON
ADD OBJECT choices[2] AS COMMANDBUTTON
ADD OBJECT choices[3] AS CHECKBOX
PROCEDURE choices.CLICK
PARAMETER nIndex
DO CASE
CASE nIndex = 1
* code
CASE nIndex = 2
* code
CASE nIndex = 3
* code
ENDCASE
ENDPROC
ENDDEFINE

Cuando un usuario hace clic en un control incluido en una matriz de controles, Visual FoxPro transfiere el número de índice del control al procedimiento de evento Click. En este procedimiento, puede utilizar una instrucción CASE para ejecutar código distinto según el botón en el que se haya hecho clic.

Crear matrices de objetos

También puede crear matrices de objetos. Por ejemplo, MyArray contiene cinco botones de comando:

DIMENSION MyArray[5]
FOR x = 1 TO 5
MyArray[x] = CREATEOBJECT("COMMANDBUTTON")
ENDFOR

Hay una serie de consideraciones que conviene tener en cuenta con respecto a las matrices de objetos:

  • No se puede asignar un objeto a una matriz completa mediante un comando. Es necesario asignar individualmente el objeto a cada miembro de la matriz.
  • No se puede asignar un valor a una propiedad de una matriz completa. El comando siguiente produciría un error:
    MyArray.Enabled = .F.
  • Al redimensionar una matriz de objetos para que sea más grande que la matriz original, los elementos nuevos se inicializarán como falso (.F.), como ocurre con todas las matrices de Visual FoxPro. Cuando redimensione una matriz de objetos para que sea más pequeña que la matriz original, se liberarán los objetos cuyo subíndice sea mayor que el mayor subíndice nuevo.

Vea también

Escribir definiciones de clases mediante programación | Crear una referencia de objeto | Almacenamiento de datos con objetos | Integración de objetos y datos | Programación orientada a objetos


Almacenamiento de datos con objetos

En los lenguajes orientados a objetos, una clase ofrece un medio útil y cómodo para almacenar datos y procedimientos relacionados con una entidad. Por ejemplo, podría definir una clase de cliente para incluir en ella información sobre un cliente, así como un método para calcular la edad del cliente:

DEFINE CLASS customer AS CUSTOM
LastName = ""
FirstName = ""
Birthday = { - - }
PROCEDURE Age
IF !EMPTY(THIS.Birthday)
RETURN YEAR(DATE()) - YEAR(THIS.Birthday)
ELSE
RETURN 0
ENDIF
ENDPROC
ENDDEFINE

Sin embargo, los datos almacenados en objetos que se basan en la clase de cliente sólo se almacenan en memoria. Si estos datos estuvieran en una tabla, ésta se almacenaría en disco. Si tuviera que hacer un seguimiento de varios clientes, la tabla le daría acceso a todos los comandos y las funciones de administración de bases de datos de Visual FoxPro. De este modo, podría localizar información rápidamente, ordenarla, agruparla, realizar cálculos, crear informes y consultas basándose en la información, etc.

Visual FoxPro ofrece un resultado incomparable en cuanto al almacenamiento y la manipulación de datos de bases de datos y tablas. Sin embargo, en determinadas ocasiones deseará almacenar datos en objetos. Generalmente, los datos sólo serán significativos mientras se esté ejecutando la aplicación y pertenecerán a una única entidad.

Por ejemplo, en una aplicación que incluye un sistema de seguridad, normalmente tendría una tabla de los usuarios que tienen acceso a la aplicación. La tabla incluiría la identificación, la contraseña y el nivel de acceso del usuario. Cuando un usuario haya iniciado una sesión no necesitará toda la información de la tabla. Lo único que necesitará es la información sobre el usuario actual y esta información se puede almacenar y manipular fácilmente en un objeto. Por ejemplo, la definición de clase siguiente inicia una sesión al crear un objeto basado en la clase:

DEFINE CLASS NewUser AS CUSTOM
PROTECTED LogonTime, AccessLevel
UserId = ""
PassWord = ""
LogonTime = { - - : : }
AccessLevel = 0
PROCEDURE Init
DO FORM LOGON WITH ; && assuming you have created this form
This.UserId, ;
This.PassWord, ;
This.AccessLevel
This.LogonTime = DATETIME( )
ENDPROC
* Create methods to return protected property values.
PROCEDURE GetLogonTime
RETURN This.LogonTime
ENDPROC
PROCEDURE GetAccessLevel
RETURN This.AccessLevel
ENDPROC
ENDDEFINE

En el programa principal de la aplicación, podría crear un objeto basado en la clase NewUser:

oUser = CREATEOBJECT('NewUser')
oUser.Logon

En cualquier parte de la aplicación, cuando necesite información sobre el usuario actual, podrá obtenerla del objeto oUser. Por ejemplo:

IF oUser.GetAccessLevel( ) >= 4
DO ADMIN.MPR
ENDIF

Vea también

Escribir definiciones de clases mediante programación | Matrices de miembros y objetos | Integración de objetos y datos | Crear una referencia de objeto | Programación orientada a objetos


Integración de objetos y datos

En la mayoría de las aplicaciones, puede sacar el máximo partido de la eficacia de Visual FoxPro si integra objetos y datos. La mayoría de las clases de Visual FoxPro tienen propiedades y métodos que permiten integrar la eficacia de un administrador de base de datos relacional y un sistema completo orientado a objetos.

Propiedades para integrar datos de clases y bases de datos de Visual FoxPro

Clase | Propiedades de datos
Cuadrícula | RecordSource, ChildOrder, LinkMaster
Todos los demás controles | ControlSource
Cuadro de lista y cuadro combinado | ControlSource, RowSource
Formulario y conjunto de formularios | DataSession

Puesto que estas propiedades de datos pueden cambiarse en tiempo de diseño o en tiempo de ejecución, puede crear controles genéricos con funcionalidad encapsulada que opere con datos diversos.

Para obtener más información sobre la integración de datos y objetos, consulte Crear formularios y Utilizar controles".

Vea también

Escribir definiciones de clases mediante programación | Almacenamiento de datos con objetos | Matrices de miembros y objetos | Crear una referencia de objeto | Programación orientada a objetos


Examinar clases con el Examinador de clases

Puede examinar, modificar y hacer un seguimiento de las clases con el Examinador de clases de Visual FoxPro.

Para | Vea
Ejecutar el Examinador de clases | Ejecutar el Examinador de clases
Ver la jerarquía de una clase | Ver jerarquías de clases
Ver clases específicas | Filtrar la lista de clases del Examinador de clases
Ver el código de una clase | Ver el código de la definición de clase
Ver información de bibliotecas de tipos e información de bibliotecas de objetos | Ver información de bibliotecas de tipos
Crear, quitar, redefinir o copiar clases | Administrar clases con el Examinador de clases
Agregar una instancia de una clase a un formulario | Agregar controles a formularios con el Examinador de clases
Modificar clases | Modificar los iconos y las descripciones de clases
Modificar el Examinador de clases | Personalizar el Examinador de clases

Vea también

Agregar controles a formularios con el Examinador de clases | Botones del Examinador de clases | Ventana Examinador de clases | Personalizar el Examinador de clases | Filtrar la lista de clases del Examinador de clases | Administrar clases con el Examinador de clases | Modificar los iconos y las descripciones de clases | Ejecutar el Examinador de clases | Ver el código de la definición de clase | Ver jerarquías de clases


Ejecutar el Examinador de clases

Puede ejecutar el Examinador de clases en el menú de Visual FoxPro o en la ventana Comandos.

Para ejecutar el Examinador de clases

  1. En el menú Herramientas, elija Examinador de clases.

    –O bien–

    Use el comando DO y la variable del sistema _BROWSER:

    DO (_BROWSER)

El programa almacenado de forma predeterminada en la variable del sistema _BROWSER es Browser.app. Browser.app acepta cinco argumentos opcionales:

DO (_BROWSER) [WITH [tcFileName][, tcDefaultClass[.member]][, tlListBox][, tcClassType][, tnWindowState]]

Argumento | Descripción
cFileName | El nombre del archivo .vcx, .scx, .olb, .tlb, .pjx o .exe que se va a abrir en el Examinador de clases.
cDefaultClass[.member] | La clase del archivo .vcx que se selecciona de forma predeterminada. Si no se especifica ninguna clase predeterminada, se selecciona la biblioteca de clases. Si se especifica un miembro, el miembro se selecciona en la lista Miembros.
lListBox | Especifica si se muestran las clases y los miembros en cuadros de lista en lugar de mostrarse en controles Treeview. Incluya verdadero (.T.) en este parámetro para mostrar los cuadros de lista. El valor predeterminado es falso (.F.)
cClassType | Especifica el filtro Type inicial para las clases mostradas en el Examinador de clases. Puede cambiar el filtro del Examinador de clases si elige otro valor de la lista Tipo. El valor predeterminado es sin filtro.
nWindowState | 0 - Normal (valor predeterminado) 1 - Minimizada 2 – Maximizada
lGallery | Valor predeterminado: .F. Especifica si se abre en la Galería de componentes en lugar de en el Examinador de clases. Use verdadero (.T.) para abrirlo en la Galería de componentes.

Por ejemplo, el siguiente comando abre el Examinador de clases maximizado con la clase print_report de Samples.vcx seleccionada, el objeto cmdOK seleccionado en la lista Miembros, y los formularios y miembros de Samples.vcx mostrados en cuadros de lista:

DO (_BROWSER) WITH "samples.vcx", "print_report.cmdOK", .T., "form", 2

Para especificar una clase predeterminada y el nombre de miembro que se va a abrir con el Examinador de clases

  1. Abra el archivo en el Examinador de clases.
  2. Resalte el archivo en la lista de clases del Examinador de clases.
  3. En la ventana Comandos, escriba el código siguiente:
    DO (_BROWSER) WITH "mylib","myclass.cMessage"

También puede usar el Examinador de clases para especificar el archivo predeterminado que se abrirá cuando inicie el Examinador de clases en el menú Herramientas o en la ventana Comandos.

Para especificar la biblioteca que se abre de forma predeterminada con el Examinador de clases

  1. Abra el archivo en el Examinador de clases.
  2. Resalte el archivo en la lista de clases del Examinador de clases.
  3. En la ventana Comandos, escriba el código siguiente:
    _oBrowser.SetDefaultFile

Esto restablece las bibliotecas predeterminadas especificadas previamente.

Puede agregar archivos a la biblioteca predeterminada abierta en el Examinador de clases.

Para especificar bibliotecas adicionales que se van a abrir con el Examinador de clases

  1. Abra el archivo adicional en el Examinador de clases.
  2. Resalte el archivo en la lista de clases del Examinador de clases.
  3. En la ventana Comandos, escriba el código siguiente:
    _oBrowser.SetDefaultFile(.T.)

Para quitar bibliotecas de la lista del Examinador de clases

  1. Resalte el archivo en la lista de clases del Examinador de clases.
  2. En la ventana Comandos, escriba el código siguiente:
    _oBrowser.ResetDefaultFile

Para quitar todas las bibliotecas de la lista del Examinador de clases

  1. En la ventana Comandos, escriba el código siguiente:
    _oBrowser.ResetDefaultFile(.T.)

Vea también

Agregar controles a formularios con el Examinador de clases | _BROWSER (Variable del sistema) | Examinar clases con el Examinador de clases | Botones del Examinador de clases | Métodos del Examinador de clases | Propiedades del Examinador de clases | Ventana Examinador de clases | Personalizar el Examinador de clases | Filtrar la lista de clases del Examinador de clases | Administrar clases con el Examinador de clases | Modificar los iconos y las descripciones de clases | Ejecutar el Examinador de clases | Ver el código de la definición de clase


Ver jerarquías de clases

El Examinador de clases permite ver la jerarquía de una biblioteca de clases. También es posible ver los miembros definidos por el usuario de una clase y seguir la herencia de los miembros entre clases relacionadas.

Para ver miembros y jerarquías de clases

  1. Ejecute el Examinador de clases.
  2. Abra una biblioteca de clases.
  3. En la lista Clases, seleccione una clase. El Examinador de clases muestra el icono para la clase en la lista Clases y junto al menú desplegable Tipo. Los miembros de clase definidos por el usuario se muestran en la lista Miembros.

Si el modo Jerárquico está seleccionado en el menú contextual, se muestran las subclases por debajo de las clases primarias.

Cuando se selecciona una clase, puede ver fácilmente su clase primaria.

Para ver la clase primaria

  • Haga clic con el botón secundario del ratón y, a continuación, elija Seleccionar clase primaria en el menú contextual. El Examinador de clases selecciona la clase primaria.

Si junto a la clase aparece el símbolo (<<), la clase primaria correspondiente se encuentra en una biblioteca de clases (.vcx) que no aparece en la lista. Cuando elige Seleccionar clase primaria en el menú contextual de la clase, la biblioteca de clases que contiene la clase primaria se agrega a la lista de clases y se selecciona la clase primaria.

Puede ver varias bibliotecas de clases o archivos de formularios si abre otro archivo en la ventana del Examinador de clases o si abre otra ventana del Examinador. También puede abrir el mismo archivo en varias ventanas del Examinador de clases.

Vea también

Agregar controles a formularios con el Examinador de clases | _BROWSER (Variable del sistema) | Examinar clases con el Examinador de clases | Botones del Examinador de clases | Métodos del Examinador de clases | Propiedades del Examinador de clases | Ventana Examinador de clases | Personalizar el Examinador de clases | Filtrar la lista de clases del Examinador de clases | Administrar clases con el Examinador de clases | Modificar los iconos y las descripciones de clases | Ejecutar el Examinador de clases | Ver el código de la definición de clase


Filtrar la lista de clases del Examinador de clases

Es posible utilizar filtros tales como el tipo de clase de base de Visual FoxPro o un nombre de clase para mostrar un conjunto específico en la lista Clases.

Para filtrar la lista de clases

  1. Abra un archivo en el Examinador de clases.
  2. En el cuadro Tipo, escriba un nombre de clase o seleccione uno de la lista.

    –O bien–

    En el cuadro Tipo, escriba uno o varios filtros separados por comas. La coma actúa como un operador OR lógico: basta con que una clase coincida con un filtro para que se incluya en la lista de clases.

    Las clases que coinciden con los filtros aparecen en la lista de clases y el filtro especificado se agrega a la lista desplegable. Esta lista mantiene un historial de los tipos y filtros seleccionados en la instancia activa de la ventana Examinador de clases. La lista no se guarda cuando se cierra la instancia.

    Nota Cuando se utiliza Alfabético, Visual FoxPro evalúa todas las clases. Cuando se utiliza Jerárquico, que es la opción predeterminada, Visual FoxPro evalúa las clases primarias. Si una clase primaria coincide con el filtro, se evalúan sus clases secundarias. Si la clase primaria no coincide con el filtro, sus clases secundarias no se evalúan y no aparecerán en la lista aunque coincidan con el filtro.

Puede crear un filtro que combine caracteres con comodines para los nombres de clases, según se indica en la tabla siguiente:

Plantilla de búsqueda | Descripción
+cTargetName | El nombre debe comenzar por cTarget.
%cTargetName% | El nombre contiene cTarget. Por ejemplo, para ver todas las clases que contienen la cadena "mover", escriba %MOVER%.
-cTarget - tiene prioridad sobre otros filtros de búsqueda. | El nombre NO contiene cTarget.
~cTarget | El nombre contiene algo similar a cTarget.
cTarget* Un asterisco (*) reemplaza un número ilimitado de caracteres. | El nombre contiene algo después de cTarget. Por ejemplo, para ver todas las clases que empiecen por "VCR", escriba VCR*.
"cTarget" | El nombre ES cTarget. Si cTarget no es una clase de base, la búsqueda informa del resultado de la búsqueda de nombre de clase.
cTarget | Si cTarget es una clase de base, la búsqueda indicará todos los miembros de la clase de base, independientemente del nombre.
[?…]cTarget[?…] Un signo de interrogación reemplaza un único carácter. Puede usar todos los que necesite en cualquier lugar. | El nombre contiene cTarget más los caracteres desconocidos en las posiciones relativas especificadas. Por ejemplo, para ver todas las clases que empiecen por MsgBox y algún número, como MsgBox1, escriba MsgBox?.

Puede usar combinaciones de parámetros de búsqueda separados por espacios que indican un operador OR como en los ejemplos siguientes:

Si desea esto | Use una expresión como ésta
El destino es una cadena que debe comenzar con “test” pero NO es una clase “form”. | -%form% +test*
El destino es cualquier cadena que NO contenga “debug” y empiece por “c” O contenga “test”. | c* %test% -%debug%
El destino es cualquier cadena que NO empiece por “debug”, y es similar a “test” O es la cadena “myform”. | ~test -debug* “myform”

También puede ampliar la búsqueda a las clases que incluyan una cadena de caracteres específica en su nombre o en su descripción.

Para buscar por nombre de clase y texto de descripción

  1. Abra un archivo en el Examinador de clases y, a continuación, elija el botón Buscar.
  2. En el cuadro de diálogo Buscar, escriba la cadena de texto que desee buscar.
  3. Aparecerá una lista de clases que contienen la cadena en su nombre o descripción en la lista de clases. Si la lista es jerárquica, sólo se mostrarán las clases primarias y sus subclases asociadas coincidentes. Si desea ver todas las clases que contengan la cadena de texto, elija la opción alfabética.

Vea también

Agregar controles a formularios con el Examinador de clases | Examinar clases con el Examinador de clases | Botones del Examinador de clases | Ventana Examinador de clases | Personalizar el Examinador de clases | Administrar clases con el Examinador de clases | Modificar los iconos y las descripciones de clases | Ejecutar el Examinador de clases | Ver el código de la definición de clase | Ver jerarquías de clases


Ver el código de la definición de clase

Si desea ver los parámetros específicos o la lógica que hay detrás de una clase, puede utilizar el Examinador de clases para ver el código para la clase de tres formas. Puede incluso ver el código de clase primaria para un método definido por el usuario.

Para ver el código de definición de clase

  1. En el Examinador de clases, seleccione la clase que desea ver.
  2. Elija el botón Ver código de clase.
  3. Visual FoxPro mostrará el código de definición de la clase seleccionada en una ventana de sólo lectura. Puede utilizar algunos de los comandos del menú Edición, como Buscar, Copiar y Seleccionar todo.

La definición de clase mostrada en la ventana de sólo lectura incluye todos los valores de propiedades, y el código de métodos y eventos.

Nota El código mostrado es para información. En muchos casos, puede guardarlo en un programa y ejecutarlo directamente, pero el código con contenedores anidados generará errores. Para ver la información de la biblioteca de tipos, use el Examinador de objetos.

Para modificar una clase que se muestra en el Examinador de clases

  • Haga doble clic en la clase de la lista Clases o presione la barra espaciadora sobre la clase seleccionada.

Para modificar el código de un método de la lista Miembros

  • Haga doble clic en el método de la lista Miembros.

Cuando modifica una clase o formulario mientras la ventana Examinador de clases esté abierta, puede ver fácilmente el código de la clase primaria para ver un método o un evento.

Para ver código de un método de clase primaria

  1. Haga doble clic en una clase o miembro.
  2. Si no se abre ninguna ventana de código en el Diseñador de formularios o el Diseñador de clases, elija Código en el menú Ver.
  3. Elija el botón de barra de herramientas de edición del método de clase primaria.
    Nota También puede ver código o modificar una clase si selecciona la clase en la lista Miembros y presiona la BARRA ESPACIADORA.

Para guardar el código de definición de clases

  1. Elija Exportar en el menú contextual.

    –O bien–

  2. Haga clic con el botón secundario del ratón en el botón Ver código.
  3. Especifique el nombre de archivo en el cuadro de diálogo Abrir.

Vea también

Agregar controles a formularios con el Examinador de clases | Examinar clases con el Examinador de clases | Botones del Examinador de clases | Ventana Examinador de clases | Personalizar el Examinador de clases | Filtrar la lista de clases del Examinador de clases | Administrar clases con el Examinador de clases | Modificar los iconos y las descripciones de clases | Ejecutar el Examinador de clases | Ventana Seguimiento | Ver jerarquías de clases | Ver información de bibliotecas de tipos | Examinador de objetos


Ver información de bibliotecas de tipos

Las bibliotecas de tipos son archivos de definición de componentes COM que incluyen información sobre los tipos y objetos que ofrece una aplicación OLE. Una biblioteca de tipos puede ser un archivo binario independiente (.tlb), compilado en un archivo de aplicación (.exe), incrustado en un control ActiveX (.ocx) o incluido en un archivo .dll. Los archivos .dll con una o más bibliotecas de tipos se suelen compilar como bibliotecas de objetos (.olb).

Para ver información de bibliotecas de tipos

  1. En el Examinador de objetos, elija Abrir biblioteca de tipos.
  2. En el cuadro de diálogo Abrir, seleccione la ficha que proporciona acceso a la biblioteca que necesita.

    La ficha Historial reciente muestra las últimas bibliotecas utilizadas.

    La ficha Bibliotecas COM muestra las bibliotecas disponibles y proporciona un botón Examinar para que pueda buscar la biblioteca que necesita.

    Selección actual muestra una lista de todas las bibliotecas abiertas.

    En la lista desplegable Tipo de archivos del cuadro de diálogo Abrir, elija Aplicación, *.dll, *.ocx, *.olb o *.tlb.

  3. Seleccione una biblioteca y haga clic en Aceptar.

La información de biblioteca de tipos para el archivo seleccionado se muestra en la lista Clases y miembros.

Vea también

_OBJECTBROWSER (Variable del sistema) | Utilizar el Examinador de objetos


Administrar clases con el Examinador de clases

Es posible crear subclases, copiar clases de una biblioteca a otra, quitar archivos de clases y bibliotecas, cambiar el nombre de las clases o redefinir la relación de una clase.

Precaución Si quita, redefine o cambia el nombre de una clase, es posible que los formularios que no se muestran actualmente en una ventana Examinador de clases y que dependen de la clase no se ejecuten correctamente.

Para agregar una subclase

  1. En el Examinador de clases, abra una biblioteca de clases.
  2. Seleccione la clase que desee agregar como subclase y, luego, elija el botón Nueva clase.
  3. En el cuadro de diálogo Nueva clase, escriba el nombre de la nueva subclase.
  4. En el Diseñador de clases, defina y guarde la subclase.
  5. El Examinador de clases mostrará la nueva subclase.

Para copiar una clase de una biblioteca de clases a otra

  1. En el Examinador de clases, abra la biblioteca de clases de origen.
  2. En el menú Herramientas, abra una segunda instancia del Examinador de clases y seleccione el archivo de la biblioteca de destino.
  3. En la biblioteca de clases de origen, seleccione la clase que desee copiar y, a la vez que presiona la tecla Ctrl, arrastre el icono Mover clase que aparece sobre la lista de clases hasta el icono de clase de la biblioteca de destino. El cursor aparecerá con un signo más cuando se encuentre sobre el icono de la clase de destino.

Para copiar múltiples clases de un archivo de biblioteca de clases a otro

  1. Abra la biblioteca de clases de origen en el Examinador de clases.
  2. Si desea filtrar la lista de clases, escriba un filtro en el cuadro Tipo para limitar las clases a copiar.
  3. En el menú Herramientas, abra una segunda instancia del Examinador de clases y seleccione el archivo de la biblioteca de destino.
  4. En la biblioteca de clases de origen, seleccione la clase que desee copiar y, a la vez que presiona la tecla Ctrl, arrastre el icono de clase que aparece sobre la lista de clases hasta el icono de clase de la biblioteca de destino. El cursor aparecerá con un signo más cuando se encuentre sobre el icono de clase de destino.

Para quitar una clase, una biblioteca de clases o un formulario

  1. Abra la biblioteca de clases o el formulario en el Examinador de clases.
  2. En la lista Clases, seleccione la clase, biblioteca de clases o formulario que desee quitar o eliminar, y luego elija el botón Quitar. En el caso de las clases, el registro de la biblioteca se marcará para su eliminación la siguiente vez que se elija Limpiar biblioteca de clases. En el caso de las bibliotecas y formularios, el archivo se eliminará del disco.

Para cambiar el nombre de una clase de una biblioteca

  1. Abra la biblioteca de clases en el Examinador de clases.
  2. En la lista Clases, seleccione aquélla cuyo nombre desee cambiar y, luego, elija el botón Cambiar nombre.
    Precaución Si cambia el nombre de una clase que tiene subclases asociadas que no están contenidas actualmente en una ventana Examinador de clases, las subclases no podrán establecer referencias a propiedades heredadas de la clase cuyo nombre se ha cambiado.
  3. En el cuadro de diálogo Cambiar nombre de clase, escriba el nuevo nombre y, luego, elija Cambiar nombre.
  4. El Examinador de clases muestra el nuevo nombre, al que se establecen referencias en todos los formularios y clases afectados mostrados simultáneamente en las ventanas del Examinador de clases.

Para cambiar la clase primaria de una clase

  1. Abra la biblioteca de clases en el Examinador de clases.
  2. En la lista Clases, seleccione la clase que desee redefinir y, a continuación, elija el botón Redefinir.
  3. En el cuadro Como del cuadro de diálogo Redefinir, seleccione el nombre de la nueva clase primaria en la lista desplegable. Puede volver a definir algunas clases de base.

También puede usar la funcionalidad de arrastrar y soltar para administrar clases en el Examinador de clases. Administrar archivos en el Examinador de clases es la forma recomendada de actualizar archivos de proyecto así como bibliotecas de clases y formularios. Los cambios realizados en el Examinador de clases se propagan por cada archivo .vcx y .scx abierto. La operación normal de arrastrar y soltar mueve un objeto de una ubicación a otra. Las teclas modificadoras con capacidad de arrastrar y soltar proporcionan los siguientes comportamientos:

Arrastre y coloque con… | Para…
CTRL | Copiar una clase entre ventanas del Examinador de clases.
Botón secundario del ratón | Crear una instancia de un objeto en un contenedor: En la ventana Comandos: genera código de creación de instancia. En el escritorio: crea una instancia en el Examinador de clases. En un formulario: crea una instancia de un objeto y puede abrir un generador.
MAYÚS | Crea una instancia de la clase pero no la muestra. Arrastrar a la ventana Comandos funciona como arrastrar y soltar normal.

Vea también

Examinar clases con el Examinador de clases | Botones del Examinador de clases | Métodos del Examinador de clases | Propiedades del Examinador de clases | Ventana Examinador de clases | Personalizar el Examinador de clases | Filtrar la lista de clases del Examinador de clases | Modificar los iconos y las descripciones de clases | Ejecutar el Examinador de clases | Ver jerarquías de clases | Ver información de bibliotecas de tipos


Crear instancias de clases con el Examinador de clases

Puede crear fácilmente instancias de clases mostradas en el Examinador de clases.

Para crear una instancia de una clase

  1. Abra la biblioteca de clases o el formulario en el Examinador de clases.
  2. En la lista Clases, seleccione la clase o el formulario del que quiere crear una instancia.
  3. Arrastre el icono para mover la clase desde la lista Tipo y colóquelo en la ventana principal de Visual FoxPro.

Si coloca un formulario o una clase de formularios en la ventana principal de Visual FoxPro, se crea y se muestra el formulario. Si coloca un control en la ventana principal de Visual FoxPro, se agrega el control al objeto _SCREEN. Si mantiene presionada la tecla MAYÚS durante la operación de arrastre, se crea el objeto pero no se hace visible. Para suprimir mensajes de error generados al crear instancias, mantenga presionada la tecla CTRL durante la operación de arrastre.

También puede colocar el icono Mover clase en la ventana Comandos de forma que pueda ejecutar el código NEWOBJECT o CREATEOBJECT apropiado para crear una instancia de la clase.

Nota Cuando se crea una instancia de una clase, se ejecuta el código del evento Init, y posiblemente el de otros eventos. Tiene que saber qué código está asociado a sus clases antes de crear una instancia. Si la clase requiere un entorno determinado que no se ha configurado, Visual FoxPro generará errores. El Examinador de clases no proporciona control de errores para clases definidas por el usuario.

Para quitar un objeto del objeto _SCREEN

  • Use el método RemoveObject de _SCREEN.

Por ejemplo, si arrastra la clase VCR de ...\Samples\Vfp7\classes\buttons.vcx y la coloca en el formulario, la siguiente línea de código de la ventana Comandos la eliminará:

_SCREEN.RemoveObject("VCR1")

Vea también

Examinar clases con el Examinador de clases | Botones del Examinador de clases | Ventana Examinador de clases | Personalizar el Examinador de clases | SaveAs (Método) | SaveAsClass (Método) | Ver jerarquías de clases | Ver información de bibliotecas de tipos


Agregar controles a formularios con el Examinador de clases

Al diseñar o ejecutar un formulario, es posible agregarle controles del Examinador de clases.

Para agregar controles a un formulario o contenedor

  1. En el Diseñador de formularios, abra el formulario.
  2. En el Examinador de clases, abra el archivo de biblioteca de clases que contenga la clase de objeto que desea agregar al formulario.
  3. En la lista Clases, seleccione el nombre de la clase y arrastre el icono de clase hasta el formulario. El icono de clase se encuentra sobre la lista Clases.

Para ver la clase de un control de un formulario o contenedor

  1. En el Diseñador de formularios, seleccione el control.
  2. En el menú Herramientas, elija Examinador de clases. Se abrirá el Examinador de clases, que muestra la clase del control seleccionado en el formulario.

Puede diseñar sus formularios de forma que se les puedan agregar objetos de una clase del Examinador de clases mientras se estén ejecutando. Puede ser conveniente diseñar una clase de formulario que tenga esta característica como propiedad.

Para agregar objetos a un formulario en ejecución o a un contenedor de un formulario

  1. Ejecute el formulario.
  2. Abra el Examinador de clases y vea la lista de clases que contiene la clase de objeto que desea agregar al formulario.
  3. Seleccione la clase deseada y arrastre el icono de clase desde el Examinador de clases al formulario.
  4. Aparecerá un nuevo objeto en el formulario, basado en la clase seleccionada en el Examinador de clases.
    Sugerencia También puede agregar una instancia de la clase seleccionada a cualquier contenedor si coloca el puntero del ratón en el contenedor y escribe la siguiente línea de código en la ventana Comandos: _oBrowser.FormAddObject(SYS(1270))

Para ver la clase de un control de un formulario en ejecución

  1. Lleve el enfoque al control.
  2. En el menú Herramientas, elija Examinador de clases. El Examinador de clases evaluará _SCREEN.ActiveForm.ActiveControl y mostrará la clase del control seleccionado en el formulario.

Vea también

Examinar clases con el Examinador de clases | Botones del Examinador de clases | Ventana Examinador de clases | Personalizar el Examinador de clases | SaveAs (Método) | SaveAsClass (Método) | Ver jerarquías de clases | Ver información de bibliotecas de tipos


Modificar los iconos y las descripciones de clases

Con el Examinador de clases puede modificar el icono contenedor de una clase, su descripción y la de sus miembros. También puede modificar una clase a través del Diseñador de clases del Examinador de clases.

Al seleccionar una clase en el Examinador de clases, su icono aparece sobre la lista de clases. Es posible asignar a la clase un mapa de bits o un icono distinto. De forma predeterminada, el icono contenedor y el de barra de herramientas de una clase son los mismos que los de la clase primaria correspondiente.

Para cambiar el icono de la clase

  1. En el Examinador de clases, seleccione la clase cuyo icono desea cambiar.
  2. Con el botón secundario del ratón, elija la imagen Icono de clase situada sobre la lista de clases.
  3. En el cuadro de diálogo Abrir, seleccione el nuevo icono o mapa de bits y, a continuación, elija Aceptar.
  4. El nuevo icono reemplazará al antiguo en el Examinador de clases. Si el antiguo icono de barra de herramientas era el mismo que el de contenedor, ambos se cambiarán por el nuevo. Si eran distintos, sólo cambiará el icono de contenedor.
  5. Puede que se le pregunte si desea restablecer el icono predeterminado de la biblioteca de clases, que es el icono que Visual FoxPro utiliza para sus clases de base. Si desea cambiar el icono de forma que concuerde con su clase de base, elija Sí.

Para cambiar las descripciones de las clases y sus miembros sin abrir cada una en el Diseñador de clases, puede utilizar los cuadros de descripción del Examinador de clases.

Para modificar la descripción de una clase, método o propiedad

  1. En el Examinador de clases, seleccione la clase que desee modificar.
  2. En el cuadro de edición situado en la esquina inferior izquierda de la ventana, escriba el nuevo texto de descripción de la clase.
  3. En la lista Miembros, seleccione un método o una propiedad.
  4. En el cuadro de edición de la esquina inferior derecha de la ventana, escriba el nuevo texto de descripción de la propiedad.

Si no se selecciona ningún miembro de la lista Miembros, el cuadro de edición de la esquina inferior derecha de la ventana muestra la clase y la información de marca de hora para la clase seleccionada en la lista Clases.

Nota Puede cambiar las descripciones de los métodos y propiedades. Las descripciones de las clases, miembros objeto e instancias son de sólo lectura.

Si desea modificar algo más que el icono y las descripciones de una clase, puede abrir el Diseñador de clases al seleccionar una clase o nombre de archivo en el Examinador de clases.

Para modificar una clase en el Diseñador de clases

  • En la lista de clases, haga doble clic en el nombre de una clase para abrir el Diseñador de clases.

    –O bien–

  • En la lista Clases, haga doble clic en el nombre de un archivo y, luego, elija una clase en el cuadro de diálogo Abrir.

Vea también

Examinar clases con el Examinador de clases | Botones del Examinador de clases | Ventana Examinador de clases | Diseñador de clases | Personalizar el Examinador de clases | Filtrar la lista de clases del Examinador de clases | Administrar clases con el Examinador de clases | MODIFY CLASS (Comando) | Ver el código de la definición de clase | Ver jerarquías de clases | Ver información de bibliotecas de tipos


Personalizar el Examinador de clases

Es posible modificar las propiedades, eventos y métodos del Examinador de clases.

Para manipular el Examinador de clases mediante programación

  1. Abra el Examinador de clases para crear automáticamente la variable pública _oBrowser. Puede utilizar esta variable para hacer referencia al formulario del Examinador de clases o manipularlo de igual forma que cualquier objeto formulario.
  2. Establezca las propiedades del Examinador de clases que desea modificar.

    Por ejemplo, antes de abrir el Examinador de clases, puede establecer la propiedad Caption del Examinador de clases como “Hello” y la propiedad Left como 10 con las siguientes líneas de código:

    _OBROWSER.Caption = "Hello"
_OBROWSER.Left = 10

Vea también

Examinar clases con el Examinador de clases | _BROWSER (Variable del sistema) | Botones del Examinador de clases | Métodos del Examinador de clases | Miembros objeto del Examinador de clases | Propiedades del Examinador de clases | Ventana Examinador de clases | Valores iniciales de las propiedades del Examinador de clases


Referencias a objetos de la jerarquía de contenedores

Las jerarquías de clases y de contenedores son dos entidades distintas. Visual FoxPro busca código de evento en la jerarquía de clases, mientras que se hace referencia a los objetos en la jerarquía de contenedores. Para manipular un objeto, hay que identificarlo con relación a la jerarquía de contenedores. Por ejemplo, para manipular un control de un formulario perteneciente a un conjunto de formularios, deberá hacer referencia al conjunto de formularios, al formulario y por último, al control. Para obtener más información acerca de las jerarquías de clases, consulte Llamar al código de evento en la jerarquía de clases.

Hacer referencia a un objeto dentro de su jerarquía de contenedores se puede comparar con dar una dirección del objeto a Visual FoxPro. Cuando describe la ubicación de una casa a otra persona fuera de su marco inmediato de referencia, debe indicar el país, la provincia o la región, la ciudad, la calle o bien sólo el número de la calle donde se encuentra la vivienda, según lo lejos que se encuentre esa otra persona. De lo contrario, podría haber cierta confusión.

La ilustración siguiente muestra una posible situación de anidamiento del contenedor.

Contenedores anidados

Para desactivar el control de la columna de cuadrícula, deberá proporcionar la dirección siguiente:

Formset.Form.PageFrame.Page.;
Grid.Column.Control.Enabled = .F.

La propiedad ActiveForm del objeto Application (_VFP) le permite manipular el formulario activo aunque no conozca su nombre. Por ejemplo, la siguiente línea de código cambia el color de fondo del formulario activo, independientemente del conjunto de formularios al que pertenezca:

_VFP.ActiveForm.BackColor = RGB(255,255,255)

De forma similar, la propiedad ActiveControl permite manipular el control activo del formulario activo. Por ejemplo, la expresión siguiente introducida en la ventana Inspección muestra el nombre del control activo de un formulario a medida que se eligen interactivamente los distintos controles:

_VFP.ActiveForm.ActiveControl.Name

Referencias relativas

Cuando haga referencia a objetos desde la jerarquía de contenedores (por ejemplo, en el evento Click de un botón de comando de un formulario perteneciente a un conjunto de formularios), puede utilizar algunos menús contextuales para identificar el objeto que desea manipular. La tabla siguiente indica las propiedades o las palabras clave que facilitan la referencia a un objeto desde la jerarquía de objetos:

Propiedad o palabra clave | Referencia
Parent | El contenedor más inmediato del objeto
THIS | El objeto
THISFORM | El formulario que contiene el objeto
THISFORMSET | El conjunto de formularios que contiene el objeto
Nota Sólo puede utilizar THIS, THISFORM y THISFORMSET en código de métodos y eventos.

La tabla siguiente proporciona ejemplos del uso de THISFORMSET, THISFORM, THIS y Parent para establecer propiedades de objetos:

(Comando) Dónde incluir el comando
THISFORMSET.frm1.cmd1.Caption = "OK"
 En el código de evento o de método de cualquier control de cualquier formulario del conjunto de formularios.
THISFORM.cmd1.Caption = "OK"
 En el código de evento o de método de cualquier control del mismo formulario en el que está cmd1.
THIS.Caption = "OK"
 En el código de evento o de método del control cuyo título desee cambiar.
THIS.Parent.BackColor = RGB(192,0,0)
 En el código de evento o de método de un control de un formulario. El comando cambia a rojo oscuro el color de fondo del formulario.

Vea también

Programación orientada a objetos | Clases y objetos: los bloques funcionales de las aplicaciones | Clases de Visual FoxPro | Preparar la creación de clases | Crear clases | Modificar una definición de clase | Crear una subclase de una definición de clase | Utilizar el Diseñador de clases | Proteger y ocultar miembros de clases | Especificar la apariencia de una clase en tiempo de diseño | Crear, copiar y eliminar archivos de biblioteca de clases | Agregar clases a formularios | Sobrescribir valor predeterminado de la propiedad | Establecer propiedades | Llamar a métodos | Responder a eventos


Establecer propiedades

Las propiedades de un objeto pueden establecerse en tiempo de ejecución o en tiempo de diseño.

Para establecer una propiedad

  • Utilice esta sintaxis:

    Contenedor.Objeto.Propiedad = Valor

    Por ejemplo, las instrucciones siguientes establecen varias propiedades de un cuadro de texto llamado txtDate en un formulario llamado frmPhoneLog:

    frmPhoneLog.txtDate.Value = DATE( ) && Display the current date
frmPhoneLog.txtDate.Enabled = .T. && The control is enabled
frmPhoneLog.txtDate.ForeColor = RGB(0,0,0)    && black text
frmPhoneLog.txtDate.BackColor = RGB(192,192,192)  && gray background

Para la configuración de propiedades de los ejemplos anteriores, frmPhoneLog es el objeto contenedor de mayor nivel. Si frmPhoneLog estuviera incluido en un conjunto de formularios, también debería incluir el conjunto de formularios en la ruta de acceso primaria:

frsContacts.frmPhoneLog.txtDate.Value = DATE( )

Establecer múltiples propiedades

La estructura WITH ... ENDWITH simplifica el establecimiento de varias propiedades. Por ejemplo, para establecer múltiples propiedades de una columna en una cuadrícula de un formulario perteneciente a un conjunto de formularios, podría utilizar la sintaxis siguiente:

WITH THISFORMSET.frmForm1.grdGrid1.grcColumn1
.Width = 5
.Resizable = .F.
.ForeColor = RGB(0,0,0)
.BackColor = RGB(255,255,255)
.SelectOnEntry = .T.
ENDWITH

Vea también

Programación orientada a objetos | Clases y objetos: los bloques funcionales de las aplicaciones | Clases de Visual FoxPro | Preparar la creación de clases | Crear clases | Modificar una definición de clase | Crear una subclase de una definición de clase | Utilizar el Diseñador de clases | Proteger y ocultar miembros de clases | Especificar la apariencia de una clase en tiempo de diseño | Crear, copiar y eliminar archivos de biblioteca de clases | Agregar clases a formularios | Sobrescribir valor predeterminado de la propiedad | Referenciar objetos de la jerarquía de contenedores | Llamar a métodos | Responder a eventos


Llamar a métodos

Una vez creado un objeto, puede llamar a los métodos de ese objeto desde cualquier lugar de la aplicación.

Para llamar a un método

  • Utilice esta sintaxis:

    Primario.Objeto.Método

Las instrucciones siguientes llaman a métodos para mostrar un formulario y establecer el enfoque en un cuadro de texto:

frsFormSet.frmForm1.Show
frsFormSet.frmForm1.txtGetText1.SetFocus

Los métodos que devuelven valores y se utilizan en expresiones deben terminar en paréntesis de apertura y de cierre. Por ejemplo, la instrucción siguiente establece el título de un formulario como el valor devuelto por el método definido por el usuario GetNewCaption:

Form1.Caption = Form1.GetNewCaption( )
Nota Los parámetros transferidos a métodos deben incluirse entre paréntesis después del nombre del método; por ejemplo, Form1.Show(nStyle). transfiere nStyle al código del método Show de Form1.

Vea también

Programación orientada a objetos | Clases y objetos: los bloques funcionales de las aplicaciones | Clases de Visual FoxPro | Preparar la creación de clases | Crear clases | Modificar una definición de clase | Crear una subclase de una definición de clase | Utilizar el Diseñador de clases | Proteger y ocultar miembros de clases | Especificar la apariencia de una clase en tiempo de diseño | Crear, copiar y eliminar archivos de biblioteca de clases | Agregar clases a formularios | Sobrescribir valor predeterminado de la propiedad | Referenciar objetos de la jerarquía de contenedores | Establecer propiedades | Responder a eventos


Métodos Access y Assign

Microsoft Visual FoxPro admite los métodos Access y Assign. Estos métodos definidos por el usuario permiten ejecutar código cuando se consulta el valor de una propiedad o cuando se intenta modificar el valor de una propiedad.

El código de un método Access se ejecuta cuando se consulta el valor de una propiedad, generalmente al utilizar la propiedad en una referencia de objeto, al almacenar el valor de una propiedad en una variable o al mostrar el valor de la propiedad con un signo de interrogación (?).

El código de un método Assign se ejecuta cuando intenta modificar el valor de una propiedad, generalmente mediante los comandos STORE o = para asignar un nuevo valor a la propiedad.

Los métodos Access y Assign sólo se ejecutan cuando se consultan o modifican los valores de las propiedades en tiempo de ejecución no en tiempo de diseño.

Nota Como el valor que intenta asignar a la propiedad se pasa al método Assign, debe incluir una instrucción PARAMETERS o LPARAMETERS en el método Assign para aceptar el valor.

Puede crear independientemente los métodos Access y Assign (puede crear un método Access sin un método Assign o un método Assign sin un método Access). Puede crear métodos Access y Assign para propiedades que se crean por medio de programación con una instrucción DEFINE CLASS o interactivamente para un formulario o clase con el Diseñador de formularios o de clases.

Nota Puede crear métodos Access y Assign para todas las propiedades nativas de Visual FoxPro. Por ejemplo, puede crear un método Access para la propiedad Left de un formulario, para ejecutar código cuando se consulta la propiedad Left. Puede crear un método Assign para una propiedad nativa de Visual FoxPro de sólo lectura, por ejemplo, la propiedad ParentClass, sin embargo, el método nunca se ejecutará.

Visual FoxPro trata los métodos Access y Assign como Protegidos en tiempo de ejecución, por lo tanto no se pueden acceder fuera de la definición de la clase. Sin embargo, Visual FoxPro trata esto métodos de una forma especial en el Diseñador de clases. Generalmente, Visual FoxPro marca el método Protegido de un objeto colocado en un contenedor (por ejemplo, un botón de comando colocado en un formulario), como de sólo lectura y no modificable en el diseñador, sin embargo, puede modificar en el diseñador los métodos Access y Assign de objetos.

Nota El método Assign no se admite para la propiedad Value de un control.

Ventajas de los métodos Access y Assign

Los métodos Access y Assign proporcionan las ventajas siguientes:

  • Puede crear una interfaz pública para una clase o un objeto que separe la interfaz de la implementación.
  • Puede implementar fácilmente la validación de las propiedades.
  • Puede proteger fácilmente las propiedades en controles ActiveX que derivan de clases.

Método THIS_ACCESS

El código de un método THIS_ACCESS se ejecuta siempre que se intente modificar el valor de un miembro de un objeto o siempre que se intente consultar un miembro de un objeto.

El método THIS_ACCESS se crea en el código en un comando DEFINE CLASS o en los cuadros de diálogo Nuevo método o Modificar propiedades de las bibliotecas de clases visuales .vcx. Un método THIS_ACCESS siempre debe devolver una referencia de objeto; si no es así, se generará un error. Normalmente se devuelve la referencia de objeto THIS. El método THIS_ACCESS también debe incluir un parámetro para aceptar el nombre del miembro del objeto que se modifica o consulta.

El siguiente ejemplo muestra cómo crear un método THIS_ACCESS en el código de un comando DEFINE CLASS. Cuando este ejemplo se ejecuta como programa, 'Caption' se muestra dos veces, la primera cuando se le asigna un valor a la propiedad Caption y la segunda cuando se consulta el valor de la propiedad Caption. Después se muestra el valor de la propiedad Caption ('abc').

CLEAR
oTempObj = CREATEOBJECT('MyForm')  && Instancia el formulario
oTempObj.Caption = 'abc'  && Asigna un valor, desencadena THIS_ACCESS
? oTempObj.Caption  && Consulta un valor, desencadena THIS_ACCESS
DEFINE CLASS MyForm AS Form
   PROCEDURE THIS_ACCESS
      LPARAMETER cMemberName  && Nombre de objeto miembro
      IF cMemberName = 'caption'
         ? cMemberName  && Muestra el nombre del objeto miembro
      ENDIF
      RETURN THIS
   ENDPROC
ENDDEFINE

Observe que THIS_ACCESS no pretende ser un sustituto global de los métodos Access y Assign (sólo proporciona información acerca del miembro del objeto al que se tiene acceso o se consulta). A diferencia de los métodos Access y Assign, THIS_ACCESS no proporciona control sobre los valores devueltos a miembros de objeto específicos.

Vea también

Programación orientada a objetos | Clases de Visual FoxPro | Llamar a métodos | Crear métodos Access y Assign


Crear métodos Access y Assign

Las mejoras del comando DEFINE CLASS y de los Diseñadores de formularios y de clases le permiten crear métodos Access y Assign mediante programación y de forma interactiva. Consulte DEFINE CLASS para obtener más detalles acerca de las adiciones de los métodos Access y Assign.

Los Diseñadores de clases y de formularios

Puede crear métodos Access y Assign para propiedades nuevas con el elemento Nueva propiedad, en el menú Formulario del Diseñador de formularios.

Para crear un método Access o Assign en el Diseñador de formularios

  1. Elija Nueva propiedad en el menú Formulario.

    Se muestra el cuadro de diálogo Nueva propiedad.

  2. Escriba el nombre de la propiedad que va a crear en el cuadro de texto Nombre y, a continuación, seleccione la casilla de verificación Método Access o la casilla de verificación Método Assign (o ambas).
  3. Elija Agregar para crear la propiedad del formulario y para crear los métodos Access y Assign de la propiedad.

Puede crear métodos Access y Assign para propiedades intrínsecas con el elemento Nuevo método, en el menú Formulario del Diseñador de formularios.

Para crear un método Access o Assign para una propiedad intrínseca de Visual FoxPro en el Diseñador de formularios

  1. Elija Nuevo método en el menú Formulario.

    Se muestra el cuadro de diálogo Nuevo método.

  2. Escriba el nombre de la propiedad intrínseca seguido de _Access o _Assign en el cuadro de texto Nombre. Por ejemplo, para crear un método Access para la propiedad Left, escriba Left_Access en el cuadro de texto Nombre.
  3. Elija Agregar para crear métodos Access o Assign para la propiedad intrínseca.
    Nota En el Diseñador de formularios sólo puede crear propiedades con métodos Access y Assign para un formulario o un conjunto de formularios. Para crear propiedades con métodos Access y Assign para un control o un objeto, utilice el Diseñador de clases para crear la clase de control o de objeto. En el Diseñador de clases, agregue propiedades con métodos Access y Assign al control o al objeto y después agregue la clase de control u objeto al formulario en el Diseñador de formularios.

Puede crear un método Access o Assign para una clase con el elemento Nueva propiedad, en el menú Clases del Diseñador de clases.

Para crear un método Access o Assign para una clase en el Diseñador de clases

  1. Elija Nueva propiedad en el menú Clase.

    Se muestra el cuadro de diálogo Nueva propiedad.

  2. Escriba el nombre de la propiedad que va a crear en el cuadro de texto Nombre y, a continuación, seleccione la casilla de verificación Método Access o la casilla de verificación Método Assign (o ambas).
  3. Elija Agregar para crear una propiedad para la clase y crear los métodos Access o Assign de la propiedad.

Para obtener más información acerca de la creación de métodos Access y Assign, vea el tema Cuadro de diálogo Nueva propiedad.

Vea también

Métodos Access y Assign | Llamar a métodos


Procedimientos y funciones definidas por el usuario

Los procedimientos y funciones permiten mantener en un único lugar el código que utiliza con frecuencia y llamarlo a través de su aplicación siempre que lo necesite. Esto hace que su código sea más fácil de leer y mantener, ya que en un procedimiento el cambio se realiza una sola vez, no varias veces como ocurre en un programa.

En Visual FoxPro, los procedimientos son similares a éste:

PROCEDURE myproc
* Este es un comentario, pero podría ser código ejecutable
ENDPROC

Tradicionalmente, los procedimientos contienen código que usted escribe para realizar una operación y funciones que calculan y devuelven un valor. En Visual FoxPro, las funciones son similares a los procedimientos:

FUNCTION myfunc
* Este es un comentario, pero podría ser código ejecutable
ENDFUNC

Puede incluir procedimientos y funciones en un archivo de programa distinto o al final de un archivo de programa que contenga código normal de programa. En un archivo de programa no puede tener código ejecutable de programa a continuación de los procedimientos y las funciones.

Si incluye sus procedimientos y funciones en un archivo de programa distinto, podrá hacer accesibles estos procedimientos y funciones desde su programa si utiliza el comando SET PROCEDURE TO. Por ejemplo, para un archivo llamado FUNPROC.PRG, utilice el siguiente comando en la ventana Comandos:

SET PROCEDURE TO funproc.prg

Llamar a un procedimiento o a una función

Hay dos formas de llamar a un procedimiento o a una función en sus programas:

  • Utilizar el comando DO. Por ejemplo:
    DO myproc

    –O bien–

  • Incluir detrás del nombre de la función un par de paréntesis. Por ejemplo:
    myfunc( )

Cada uno de estos métodos puede ampliarse enviando o recibiendo valores desde el procedimiento o la función.

Enviar valores a un procedimiento o a una función

Para enviar valores a procedimientos o funciones se incluyen parámetros. Por ejemplo, el procedimiento siguiente acepta un solo parámetro:

PROCEDURE myproc( cString )
* The following line displays a message
MESSAGEBOX ("myproc" + cString)
ENDPROC
Nota Incluir los parámetros entre paréntesis en la línea de definición de un procedimiento o una función, por ejemplo PROCEDURE myproc(cString), indica que el parámetro tiene alcance local al procedimiento o la función. También puede permitir que una función o un procedimiento acepte parámetros de alcance local mediante LPARAMETERS.

Los parámetros funcionan de manera idéntica en una función. Para enviar un valor como un parámetro a este procedimiento o a una función, podría utilizar una cadena o una variable que contuviera una cadena, como se muestra en la tabla siguiente.

Transferencia de parámetros

Código Comentarios
DO myproc WITH cTestString
DO myproc WITH "test string"
 Llama a un procedimiento y transfiere una variable de caracteres o una cadena literal.
myfunc("test string")
myfunc( cTestString )
 Llama a una función y transfiere una copia de una cadena literal o una variable de caracteres.
Nota Si llama a un procedimiento o función sin usar el comando DO, la configuración de UDFPARMS controla cómo se transfieren los parámetros. De forma predeterminada, UDFPARMS se establece como VALUE, por lo que se transferirán copias de los parámetros. Cuando utilice DO, se empleará el parámetro real (el parámetro se transfiere por referencia) y cualquier cambio realizado en el procedimiento o en la función se reflejará en los datos originales, cualquiera que sea la configuración de UDFPARMS.

Puede enviar múltiples valores a un procedimiento o función si los separa mediante comas. Por ejemplo, el siguiente procedimiento espera tres parámetros: una fecha, una cadena de caracteres y un número.

PROCEDURE myproc( dDate, cString, nTimesToPrint )
FOR nCnt = 1 to nTimesToPrint
? DTOC(dDate) + " " + cString + " " + STR(nCnt)
ENDFOR
ENDPROC

Podría llamar a este procedimiento mediante la siguiente línea de código:

DO myproc WITH DATE(), "Hola mundo", 10

Recibir valores desde una función

El valor devuelto de forma predeterminada es verdadero (.T.), pero puede utilizar el comando RETURN para devolver cualquier valor. Por ejemplo, la siguiente función devuelve una fecha correspondiente a dos semanas después de la fecha que se ha pasado como parámetro.

FUNCTION plus2weeks
PARAMETERS dDate
RETURN dDate + 14
ENDFUNC

La siguiente línea de código almacena el valor devuelto desde esta función en una variable:

dDeadLine = plus2weeks(DATE())

En la tabla siguiente se muestran las formas en que puede almacenar o mostrar valores devueltos por una función.

Manipular valores devueltos

Código Comentarios
var = myfunc( )
 Almacena en una variable el valor devuelto por la función.
? myfunc( )
 Imprime en la ventana de resultado activa el valor devuelto por la función.

Comprobar parámetros en un procedimiento o en una función

Es conveniente comprobar que los parámetros enviados a su procedimiento o a su función son los que espera recibir. Puede utilizar las funciones TYPE( ) y PARAMETERS( ) para comprobar el tipo y el número de parámetros enviados a su procedimiento o a su función.

El ejemplo de la sección anterior necesita recibir un parámetro de tipo Date. Puede utilizar la función TYPE( ) para asegurarse de que el valor que su función recibe es del tipo adecuado.

FUNCTION plus2weeks( dDate )
IF TYPE("dDate") = "D"
RETURN dDate + 14
ELSE
MESSAGEBOX( "Debe pasar una fecha como parámetro!" )
RETURN { - - }      && Devuelve una fecha vacía
ENDIF
ENDFUNC

Si un procedimiento espera menos parámetros de los que recibe, Visual FoxPro generará un mensaje de error. Por ejemplo, si especificó dos parámetros pero llamó al procedimiento con tres parámetros, obtendrá un mensaje de error. Pero si un procedimiento espera más parámetros de los que recibe, los parámetros adicionales simplemente se inicializarán como falso (.F.). Puesto que no hay ninguna forma de decir si el último parámetro se estableció como falso (.F.) o se omitió, el siguiente procedimiento comprueba que se ha enviado el número correcto de parámetros:

PROCEDURE SaveValue( cStoreTo, cNewVal, lIsInTable )
IF PARAMETERS( ) < 3
MESSAGEBOX( "Se pasaron pocos parámetros." )
RETURN .F.
ENDIF
IF lIsInTable
REPLACE (cStoreTo) WITH (cNewVal)
ELSE
&cStoreTo = cNewVal
ENDIF
RETURN .T.
ENDPROC

Procedimiento de ejemplo para devolver caracteres numéricos de una cadena

Código Comentarios
FUNCTION NumbersOnly( cMixedVal )
 Principio de la función, que acepta una cadena de caracteres.
  cNumOnly = ""
FOR nCnt = 1 TO LEN(cMixedVal)
cCharacter = ;
SUBSTR(cMixedVal, nCnt, 1)
IF ISDIGIT(cCharacter)
cNumOnly = ;
cNumOnly + cCharacter
ENDIF
ENDFOR
 Crea una cadena que sólo tiene los caracteres numéricos de la cadena original.
RETURN cNumOnly
 Devuelve la cadena que sólo tiene caracteres numéricos.
ENDFUNC
 Fin de la función.

Además de permitirle utilizar este código en múltiples situaciones, esta función mejora la legibilidad del programa:

SCAN
REPLACE FieldName WITH NumbersOnly(FieldName)
ENDSCAN

O, más sencillo aún:

REPLACE ALL FieldName WITH NumbersOnly(FieldName)

Vea también

Funciones de caracteres | Conceptos básicos de programación | Ejecutar código manualmente | Crear programas | TYPE( ) | PARAMETERS( ) | RETURN


Descripción del modelo de eventos

Microsoft Visual FoxPro ofrece un auténtico funcionamiento sin modo, así puede coordinar múltiples formularios automáticamente y ejecutar simultáneamente múltiples instancias de un formulario. Además, Visual FoxPro se encarga del procesamiento de los eventos, por lo que puede ofrecer a los usuarios un entorno interactivo mucho más rico.

En esta sección

Eventos de Visual FoxPro
Describe qué eventos están en Microsoft Visual FoxPro y proporciona una tabla que contiene el núcleo central de los eventos de Visual FoxPro.
Seguimiento de secuencias de eventos
Explica cómo activar el seguimiento de eventos y proporciona un formulario de ejemplo para mostrar cómo el orden de eventos depende de la interacción del usuario.
Asignar código a eventos
Proporciona sugerencias útiles acerca de cómo colocar código basado en una secuencia de eventos.

Secciones relacionadas

Programar en Visual FoxPro
Microsoft Visual FoxPro es una eficaz herramienta de administración interactiva de datos, pero además podrá beneficiarse de toda su eficacia para crear aplicaciones. Comprender las técnicas de programación orientada a objetos y el modelo controlado por eventos puede aumentar su productividad como programador.
Programación orientada a objetos
Con la programación orientada a objetos, puede crear componentes de aplicación independientes que respondan a acciones del usuario y al sistema, y que se puedan mantener y reutilizar fácilmente.
Escribir definiciones de clases mediante programación
Las clases se pueden definir visualmente en el Diseñador de clases y en el Diseñador de formularios o mediante programación en archivos .PRG.


Responder a eventos

El código incluido en un procedimiento de evento se ejecuta cuando se produce el evento. Por ejemplo, el código incluido en el procedimiento de evento Click de un botón de comando se ejecutará cuando el usuario haga clic en el botón de comando.

Mediante programación puede activar los eventos Click, DblClick, MouseMove y DragDrop con el comando MOUSE Event o utilizar el comando ERROR para generar eventos Error y el comando KEYBOARD para generar eventos KeyPress. No puede hacer que se produzca ningún otro evento mediante programación, pero sí puede llamar al procedimiento asociado con el evento. Por ejemplo, la instrucción siguiente hace que se ejecute el código del evento Activate de frmPhoneLog; pero no activa el formulario:

frmPhoneLog.Activate

Si desea activar el formulario, utilice el método Show del formulario. Al llamar al método Show se mostrará y activará el formulario, momento en el que también se ejecutará el código del evento Activate:

frmPhoneLog.Show

Vea también

Programación orientada a objetos | Clases y objetos: los bloques funcionales de las aplicaciones | Clases de Visual FoxPro | Preparar la creación de clases | Crear clases | Modificar una definición de clase | Crear una subclase de una definición de clase | Utilizar el Diseñador de clases | Proteger y ocultar miembros de clases | Especificar la apariencia de una clase en tiempo de diseño | Crear, copiar y eliminar archivos de biblioteca de clases | Agregar clases a formularios | Sobrescribir valor predeterminado de la propiedad | Referenciar objetos de la jerarquía de contenedores | Establecer propiedades | Llamar a métodos


Eventos de Visual FoxPro

El sistema desencadena automáticamente un código de evento como respuesta a alguna acción del usuario. Por ejemplo, el sistema procesa automáticamente el código escrito para el evento Click cuando el usuario hace clic en un control. El código de un evento también puede desencadenarse mediante eventos del sistema, como es el caso del evento Timer en un control de cronómetro.

Los eventos básicos

La tabla siguiente contiene una lista del principal conjunto de eventos de Visual FoxPro que se aplican a la mayoría de los controles.

Conjunto básico de eventos

Evento | Cuándo se desencadena el evento
Init | Al crear un objeto.
Destroy | Al liberar de la memoria un objeto.
Click | Cuando el usuario hace clic en el objeto con el botón principal del ratón.
DblClick | Cuando el usuario hace doble clic en el objeto con el botón principal del ratón.
RightClick | Cuando el usuario hace clic en el objeto con el botón secundario del ratón.
GotFocus | Cuando el objeto recibe el enfoque, ya sea como resultado de una acción del usuario o al hacer clic, o porque se cambie el enfoque en el código mediante el método SetFocus.
LostFocus | Cuando el objeto pierde el enfoque, ya sea como resultado de una acción del usuario, por ejemplo, presionar la tecla TAB hasta otro objeto o hacer clic sobre éste, o porque se cambie el enfoque en el código mediante el método SetFocus.
KeyPress | Cuando el usuario presiona y suelta una tecla.
MouseDown | Cuando el usuario presiona el botón del ratón mientras el puntero del ratón se encuentra sobre el objeto.
MouseMove | Cuando el usuario mueve el ratón sobre el objeto.
MouseUp | Cuando el usuario libera un botón del ratón mientras el puntero del ratón se encuentra sobre el objeto.

Contenedores y eventos de objeto

A la hora de escribir código de eventos para los controles se deben tener en cuenta dos reglas básicas:

  • Los contenedores no procesan los eventos asociados a los controles que contienen.
  • Si no hay código de evento asociado a un control, Visual FoxPro comprobará si hay código asociado al evento en algún nivel superior de la jerarquía de clase para dicho control.

Cuando un usuario interactúa con un objeto de alguna forma, ya sea presionando la tecla TAB, haciendo clic en él, moviendo el puntero del ratón sobre él, etc., tienen lugar los eventos de objeto. Cada objeto recibe sus eventos de forma independiente. Por ejemplo, aunque un botón de comando se encuentre en un formulario, el evento Click del formulario no se desencadenará cuando un usuario haga clic en el botón de comando; sólo se desencadenará el evento Click del botón de comando.

Si no hay ningún código de evento Click asociado al botón de comando, cuando el usuario haga clic en el botón no ocurrirá nada, incluso cuando haya un código de evento Click asociado al formulario.

Esta regla también es aplicable a los controles Grid. La cuadrícula contiene columnas que a su vez contienen encabezados y controles. Cuando ocurren los eventos, sólo el objeto más interno implicado en el evento reconoce el evento. Los contenedores de mayor nivel no reconocen el evento.

No obstante, hay una excepción a esta regla. Si ha escrito código de evento para un grupo de botones de opción o para un grupo de botones de comando pero no hay código para el evento en un determinado botón del grupo, el código de evento del grupo se ejecutará cuando se produzca el evento del botón.

Nota Cuando se inicia una secuencia de eventos, como MouseDown y MouseUp, para un control, toda la secuencia de eventos pertenece al control. Por ejemplo, si presiona el botón primario del ratón en un botón de comando y arrastra el puntero del ratón desde el botón de comando, los eventos MouseMove del botón de comando seguirán produciéndose, aunque el puntero del ratón se esté moviendo fuera del formulario. Si suelta el botón primario del ratón sobre el formulario en lugar de hacerlo sobre el botón de comando, el evento MouseUp que ocurrirá será el asociado al botón de comando, no al formulario.

Clases y eventos de controles

Si un control de un formulario está basado en una clase definida por el usuario (que, a su vez, está basada en otra clase definida por el usuario), cuando se produzca un evento, Visual FoxPro comprobará el código de evento del control inmediato. Si hay código en ese procedimiento de evento, Visual FoxPro lo ejecutará. Si no existe código en el procedimiento de evento, Visual FoxPro comprobará un nivel superior en la jerarquía de clases. Si en algún lugar de la jerarquía de clases Visual FoxPro encuentra código para el evento, se ejecutará dicho código. Cualquier código que haya más allá dentro de la jerarquía no se ejecutará.

No obstante, puede incluir código en un procedimiento de evento y llamar explícitamente al código en clases en las cuales se base el control; para ello se utiliza la función DODEFAULT( ).

Vea también

Descripción del modelo de eventos | Seguimiento de secuencias de eventos | Asignar código a eventos | Método SetFocus


Seguimiento de secuencias de eventos

El modelo de eventos de Visual FoxPro es amplio y le concede bastante control sobre los componentes de la aplicación en respuesta a una amplia variedad de acciones de usuario. Algunas de las secuencias de eventos son fijas como, por ejemplo, la creación o destrucción de un formulario. Algunos eventos ocurren de forma independiente, pero la mayor parte ocurre con otros eventos basados en la interacción con el usuario.

Establecer el seguimiento de eventos

La mejor manera de ver las secuencias de eventos de Visual FoxPro es establecer el seguimiento de eventos en el depurador. El seguimiento de eventos le permite ver cuándo tiene lugar cada evento asociado a sus propios formularios y controles en relación a otros eventos, de forma que puede determinar el lugar más eficiente para incluir el código.

Para establecer el seguimiento de eventos

  1. En el menú Herramientas de la ventana Depurador, elija Seguimiento de eventos.
  2. En el cuadro de diálogo Seguimiento de eventos, seleccione Activar el seguimiento de eventos.

Los eventos de la lista Eventos para seguir se escriben en la ventana Resultados del depurador o en un archivo cuando tengan lugar.

Nota En este ejemplo, los eventos MouseMove y Paint se han eliminado de la lista Eventos para seguir, porque estos eventos se producen con tanta frecuencia que dificultan la visión de las secuencias de los demás eventos.

Observar cómo ocurren los eventos

A veces una acción de un usuario desencadena un único evento, como mover el puntero del ratón sobre un control, por ejemplo. Sin embargo, con frecuencia una acción del usuario desencadena múltiples eventos.

En esta sección se describe el orden en que ocurren los eventos como respuesta a la interacción del usuario, utilizando el siguiente formulario como ejemplo.

Formulario de ejemplo para ilustrar las secuencias de eventos

En esta situación de ejemplo, el usuario realiza las siguientes acciones en el formulario:

  1. Ejecuta el formulario.
  2. Escribe texto en Text1.
  3. Selecciona el campo y lo copia al Portapapeles.
  4. Va a Text2.
  5. Pega el texto en Text2.
  6. Cierra el formulario haciendo clic en Command2.

Estas acciones desencadenan uno o más eventos del sistema para cada objeto. En las tablas siguientes se describen los eventos desencadenados como respuesta a cada acción del usuario.

Acción 1

El usuario ejecuta el formulario escribiendo el siguiente comando en la ventana Comandos:

DO FORM form1 NAME frmObject

Visual FoxPro carga el formulario, inicializa cada objeto y después inicializa el formulario; el formulario se activa y el primer campo recibe el enfoque de entrada.

Objeto | Evento
DataEnvironment | BeforeOpenTables
Form1 | Load
DataEnvironment | Init
Text1 | Init
Text2 | Init
Command1 | Init
Command2 | Init
Form1 | Init
Form1 | Activate
Form1 | GotFocus
Text1 | When
Text1 | GotFocus

Acción 2

El usuario escribe Test en Text1. Cada pulsación de teclas genera dos eventos. El evento KeyPress recibe 2 parámetros: la tecla presionada y el estado de las teclas MAYÚS, ALT y CTRL.

Objeto | Evento
Text1 | KeyPress(84, 1) "T"
Text1 | InteractiveChange
Text1 | KeyPress(101, 0) "e"
Text1 | InteractiveChange
Text1 | KeyPress(115,0) "s"
Text1 | InteractiveChange
Text1 | KeyPress(116,0) "t"
Text1 | InteractiveChange

Acción 3

El usuario hace doble clic en Text1 para seleccionar el texto y presiona CTRL+C para copiar el texto al Portapapeles. Los eventos Mouse y un evento Click acompañan al evento DblClick. Los eventos MouseMove y MouseDown reciben cuatro parámetros: un número que indica el botón que se ha presionado, el estado de MAYÚS y las ubicaciones X e Y. Las ubicaciones X e Y son relativas al formulario y reflejan el modo de escala (por ejemplo, píxeles) del formulario. Sólo se presenta un evento MouseMove para cada control. En realidad, este evento se activaría probablemente media docena de veces o más.

Objeto | Evento
Form1 | MouseMove(0, 0, 100, 35)
Text1 | MouseMove(0,0,44,22)
Text1 | MouseDown(1, 0, 44, 22)
Text1 | MouseUp(1, 0, 44, 22)
Text1 | Click
Text1 | MouseDown(1, 0, 44, 22)
Text1 | MouseUp(1, 0, 44, 22)
Text1 | DblClick

Acción 4

El usuario presiona TAB para pasar a Text2.

Objeto | Evento
Text1 | KeyPress(9, 0)
Text1 | Valid
Text1 | LostFocus
Text2 | When
Text2 | GotFocus

Acción 5

El usuario pega en Text2 el texto copiado al presionar CTRL+V.

Objeto | Evento
Text2 | InteractiveChange

Acción 6

El usuario hace clic en Command2, que cierra el formulario.

Objeto | Evento
Form1 | MouseMove
Command2 | MouseMove
Text2 | Valid
Command2 | When
Text2 | LostFocus
Command2 | GotFocus
Command2 | MouseDown(1, 0, 143, 128)
Command2 | MouseUp(1, 0, 143, 128)
Command2 | Click
Command2 | Valid
Command2 | When

Cuando se cierra el formulario y se libera el objeto se producen estos eventos adicionales, en orden inverso a los eventos de la Acción 1.

Objeto | Evento
Form1 | Destroy
Command2 | Destroy
Command1 | Destroy
Text2 | Destroy
Text1 | Destroy
Form1 | Unload
DataEnvironment | AfterCloseTables
DataEnvironment | Destroy

La secuencia de eventos de Visual FoxPro

La tabla siguiente muestra la secuencia de activación general de los eventos de Visual FoxPro. Se supone que la propiedad AutoOpenTables del entorno de datos está establecida en el valor verdadero (.T.). Otros eventos pueden tener lugar en base a interacciones de usuario y a respuesta del sistema.

Objeto | Eventos
Entorno de datos | BeforeOpenTables
Conjunto de formularios | Load
Formulario | Load
Cursor o cursores del entorno de datos | Init
Entorno de datos | Init
Objetos 1 | Init
Formulario | Init
Conjunto de formularios | Init
Conjunto de formularios | Activate
Formulario | Activate
Object1 2 | When
Formulario | GotFocus
Object1 | GotFocus
Object1 | Message
Object1 | Valid 3
Object1 | LostFocus
Object2 3 | When
Object2 | GotFocus
Object2 | Message
Object2 | Valid 4
Object2 | LostFocus
Formulario | QueryUnload
Formulario | Destroy
Objeto 5 | Destroy
Formulario | Unload
Conjunto de formularios | Unload
Entorno de datos | AfterCloseTables
Entorno de datos | Destroy
Cursor o cursores del entorno de datos | Destroy

1 Para cada objeto, desde el objeto más interno hasta el contenedor más externo
2 Primer objeto según el orden de tabulación
3 Siguiente objeto que va a recibir el enfoque
4 Cuando el objeto pierde el enfoque
5 Para cada objeto, desde el contenedor más externo hasta el objeto más interno

Vea también

Eventos de Visual FoxPro | Asignar código a eventos | Depurador | Comandos | Evento KeyPress | Evento Click | Evento DblClick | MouseMove | MouseDown | Propiedad AutoOpenTables | Descripción del modelo de eventos


Asignar código a eventos

A menos que asocie código a un evento, no pasará nada cuando se produzca dicho evento. Casi nunca escribirá código para los eventos asociados a cualquier objeto de Visual FoxPro, pero querrá incorporar funcionalidad como respuesta a ciertos eventos clave de sus aplicaciones. Para agregar código que se va a ejecutar cuando se produzca un evento, utilice la ventana Propiedades del Diseñador de formularios.

La secuencia de eventos afecta a dónde debe situar el código. Tenga en cuenta las siguientes sugerencias:

  • Los eventos Init de todos los controles del formulario se ejecutan antes que el evento Init del formulario, por lo que puede incluir código en el evento Init del formulario para manipular cualquier control del formulario antes de que se muestre el formulario.
  • Si desea que se procese código siempre que el valor de cuadro de lista, cuadro combinado o casilla de verificación cambia, asóciela al evento InteractiveChange. El evento Click puede no tener lugar o puede ser llamado incluso si el valor no ha cambiado.
  • Cuando arrastra un control, los otros eventos de ratón se suspenden. Por ejemplo, los eventos MouseUp y MouseMove no tienen lugar durante una operación de arrastrar y soltar.
  • Los eventos Valid y When devuelven un valor. El valor predeterminado es verdadero (.T.) Si devuelve falso (.F.) ó 0 desde el evento When, el control no puede obtener el enfoque. Si devuelve falso (.F.) ó 0 desde el evento Valid, el enfoque no puede abandonar el control.

Para obtener más información acerca del uso del Diseñador de formularios, consulte Crear formularios. Para obtener información acerca de la codificación de clases y la forma de agregar código de eventos, consulte Programación orientada a objetos.

Vea también

Seguimiento de secuencias de eventos | Eventos de Visual FoxPro | Asignar código a eventos | Descripción del modelo de eventos


Enlace de Eventos (Event Binding) para objetos

Puede utilizar el evento Binding cuando quiera enlazar un objeto de Visual FoxPro a un evento, método o propiedad de otro objeto de Visual FoxPro o un evento de un objeto COM (Component Object Model), ya que ambos pueden actuar como origen de eventos. La forma de enlazar eventos de objetos nativos y COM es diferente.

En esta sección

Enlace de Eventos para objetos de Visual FoxPro
Explica el enlace de eventos, métodos y propiedades de otros objetos nativos de Visual FoxPro a objetos de Visual FoxPro.
Enlace de eventos para objetos COM
Explica el enlace de eventos de objetos COM a objetos de Visual FoxPro.

Secciones Relacionadas

Lo Nuevo en Visual FoxPro 8.0
Describe nuevas características y mejoras para esta versión de Visual FoxPro.
Referencia general
Incluye información técnica de Visual FoxPro como tipos de archivos, estructuras de archivos, y otra información de referencia sobre elementos de Visual FoxPro.


Enlace de Eventos para objetos de Visual FoxPro

Puede utilizar el enlace de eventos ("event binding") para disparar eventos, propiedades o métodos de objetos nativos de Visual FoxPro desde otros objetos de Visual FoxPro usando las siguientes funciones:

  • BINDEVENT( )

    Asocia un evento de un objeto nativo de Visual FoxPro con el método o evento de otro objeto de Visual FoxPro.

  • UNBINDEVENTS( )

    Rompe el enlace de eventos previamente asociados a objetos de Visual FoxPro.

  • RAISEEVENT( )

    Activa o desencadena eventos para métodos definidos por el programador. También puede usar RAISEEVENT( ) para eventos o métodos nativos.

  • AEVENTS( )

    Obtiene información de la cantidad de enlaces a eventos existentes.

Para enlazar eventos de objetos COM (Component Object Model), ver Enlace de eventos para objetos COM y función EVENTHANDLER( ).

Enlazar un evento

Puede usar la función BINDEVENT( ) para enlazar un evento, método o propiedad de un objeto de Visual FoxPro u origen de eventos, al método o evento de otro objeto Visual FoxPro o al controlador de eventos. El método que maneja el evento, actúa como "delegado" para el controlador de eventos.

Puede enlazar a cualquier objeto, método o evento válido de Visual FoxPro, incluyendo los métodos Access y Assign. Tener en cuenta que ambos, el origen del evento y el controlador deben ser objetos válidos de Visual FoxPro. No puede utilizar objetos COM o enlazar a métodos de objetos en colecciones referenciadas por la variable del sistema _VFP, porque esas colecciones también pasan por COM.

Nota Cuando especifique objetos para enlazar eventos, asegúrese que están instanciados completamente. No enlace eventos, métodos o propiedades a un objeto en su evento Load o Init, porque el objeto aún no está instanciado completamente y esto hará fallar la operación de enlace.

Puede usar el mismo objeto como origen de evento y controlador. El siguiente ejemplo muestra como Form1 actúa como origen y controlador:

BINDEVENT(Form1,"Resize",Form1,"miresize1")

Puede utilizar diferentes objetos de la misma clase como origen y controlador de eventos. Atención que el evento de un objeto que es usado como origen y controlador no puede ser el mismo que un método delegado.

Puede enlazar múltiples controladores de eventos al mismo origen de evento y a eventos en una acción llamada "multi-casting." Si existen múltiples controladores para el mismo evento, estos eventos ocurren con el orden de primero en entrar, primero en salir (FIFO).

Puede enlazar múltiples métodos delegados de un controlador de eventos a un origen de evento en particular. Por ejemplo:

BINDEVENT(Form1,"Resize",oHandler,"miresize1")
BINDEVENT(Form1,"Resize",oHandler,"miresize2")

No puede enlazar a un evento con parámetros pasados por referencia. A pesar de que la llamada a BINDEVENT( ) ejecuta, disparar el evento, por ejemplo, usando RAISEEVENT( ), falla.

Visual FoxPro no soporta enlace de eventos en diseñadores como los de formularios y clases, aunque puede obtener una referencia a un objeto usando las funciones ASELOBJ( ) o SYS(1270).

Para más información, ver las funciones BINDEVENT( ), ASELOBJ( ) y SYS(1270).

Desconectar un Evento

Puede usar la función UNBINDEVENTS( ) para desconectar eventos, métodos y propiedades que fueron enlazadas con BINDEVENT( ), de objetos nativos de Visual FoxPro. UNBINDEVENTS( ) devuelve la cantidad de eventos que desconecta, si lo consigue. Puede especificar un origen del evento de un objeto Visual FoxPro o una referencia al objeto, el cual puede ser utilizado como el origen del evento o del controlador de eventos.

Para más información, ver la función UNBINDEVENTS( ).

Disparar un Event

Puede usar la función RAISEEVENT( ) para "despertar" o disparar eventos para eventos nativos o sus propios. Llamando a métodos directamente no desencadena los eventos, a menos que haya seleccionado las banderas apropiadas cuando use BINDEVENT( ) para enlazar eventos a otros objetos. Por ello necesita RAISEEVENT( ) para disparar esos eventos.

Para más información, ver la función RAISEEVENT( ).

Recuperar información de Enlace de Eventos

Puede utilizar la función AEVENTS( ) para recuperar el número de eventos de Visual FoxPro que están enlazados a objetos de Visual FoxPro. Visual FoxPro guarda la información en una matriz. Dependiendo de los parámetros que pase, AEVENTS( ) devuelve una matriz de un sólo elemento conteniendo una referencia a un objeto apuntando al origen de evento o, una matriz que representa cada enlace existente como una fila y contiene información del enlace en cinco columnas.

Para más información, vea la función AEVENTS( ).

Vea también

Enlce de eventos (Event Binding) para objetos


Event Binding para Objetos COM

Puede enlazar objetos COM (Component Object Model) a objetos de Visual FoxPro usando la función EVENTHANDLER( ). Por ejemplo, enlazando un evento de un recordset ActiveX Data Object (ADO), puede correr el código de Visual FoxPro cuando el puntero de registros se mueve en el recordset. La función EVENTHANDLER( ) específicamente maneja el enlace de eventos ("event binding") disparados por objetos COM y por interfaz IConnectionPoint, el cual es parte de COM.

Sin embargo, Visual FoxPro no soporta levantar o disparar eventos a través de la interfaz IConnectionPoint directamente. Para enlazar un evento COM a un objeto de Visual FoxPro, el objeto debe implementar la interfaz de eventos del objeto COM, una acción referida como manejo de eventos fuertemente atados ("tightly-coupled event handling"), donde ambos, el origen del evento y su objeto de destino están ocurriendo cuando ocurre el evento. Los destinos del enlace en este caso son clientes que enlazan a un objeto conectable porque estos reciben eventos disparados por el objeto conectable.

En lugar de COM puede utilizar Eventos COM+, parte de los Servicios COM+, estos proporcionan la estrategia preferida para el manejo de eventos entre componentes COM. El Evento COM+ envía y entrega notificaciones de eventos entre aplicaciones. Las aplicaciones pueden enviar y recibir notificaciones de eventos, tales como el tomar a un nuevo empleado, un cambio en el precio de una acción de bolsa, o una baja en el nivel de inventario que requiere una compra.

En el modelo de Eventos COM+, las aplicaciones que envían notificaciones de eventos, actúan como origen de eventos y son llamados publicadores. Las aplicaciones que reciben notificaciones de eventos son llamadas suscriptores. Los Eventos COM+ son muchas veces llamados eventos atados débilmente ("loosely coupled events") porque el publicador y el suscriptor no poseen ningún conocimiento uno del otro y permiten a los suscriptores permanecer inactivos hasta que el evento ocurre. En ese caso, usted define un juego de eventos dentro del alcance de una clase eventos que es instalada en una aplicación COM+.

Para utilizar Eventos COM+, usted crea una clase de eventos la cual implementa uno o más interfases. Cada interfaz define un grupo de métodos, quienes representan un juego de eventos. Usted escribe componentes suscriptores que implementan esas interfases y responden a los eventos cuando estos ocurren. Finalmente, usted escribe una aplicación publicador para crear objetos desde la clase eventos e invoca varios métodos. Cuando la aplicación está lista desencadena los eventos. El servicio del evento controla el proceso del método y entrega los eventos a cada suscriptor.

Vea también

Enlce de eventos (Event Binding) para objetos | Enlace de Eventos para objetos de Visual FoxPro | EVENTHANDLER( ) (Función)


Optimizar las aplicaciones

Cuando utilice Visual FoxPro para diseñar y ejecutar aplicaciones, querrá obtener el máximo rendimiento tanto de su sistema operativo como de Visual FoxPro y de su aplicación.

En esta sección

Optimizar tablas e índices
Describe cómo puede agilizar el acceso a datos de tablas mediante índices y almacenamiento en búfer de forma eficaz. Además, puede usar la tecnología Rushmore para optimizar las consultas.
Utilizar optimización de consultas Rushmore para acelerar el acceso de datos
Para ayudarle a optimizar el rendimiento de las aplicaciones, Visual FoxPro incluye la tecnología Rushmore para acceso a los datos.
Optimizar formularios y controles
Describe como puede mejorar de forma significativa los formularios y controles de la aplicación.
Optimizar programas
Discute como escribiendo código cuidadosamente, puede escribir programas más rápidos.
Optimizar controles ActiveX
Explica que si utiliza controles Microsoft ActiveX o Automatización en la aplicación, puede ajustar la aplicación para obtener el máximo rendimiento de estos controles.
Optimizar aplicaciones en entornos multiusuario
Discute que si va a escribir aplicaciones para un entorno multiusuario, el rendimiento es un factor especialmente importante, porque las operaciones ineficaces se multiplican.
Optimizar el acceso a datos remotos
Describe cómo la recuperación de datos de cualquier base de datos remota resulta cara.
Optimizar aplicaciones internacionales
Explica que si va a programar aplicaciones internacionales, podría desear administrar la secuencia de ordenación de los datos para obtener el máximo rendimiento.

Secciones relacionadas

Programar en Visual FoxPro
Describe cómo acceder a toda la eficacia de Visual FoxPro creando aplicaciones que incorporan técnicas de programación orientada a objetos el modelo controlado por eventos para maximizar su productividad mientras programa.
Crear programas
Explica las dos formas para crear un programa Visual FoxPro.
Programación orientada a objetos
Describe cómo puede utilizar programación orientada a objetos para crear componentes de aplicación auto contenidos que respondan a acciones del usuario y al sistema, los cuales puede reutilizarse y mantenerse fácilmente.
Acceso a las APIs
Describe cómo extender Visual FoxPro si su aplicación tiene requerimientos que no pueden cumplirse con las características nativas, tomando ventaja de bibliotecas externas como controles Microsoft ActiveX o bibliotecas de enlace dinámico (DLLs).


Optimizar tablas e índices

Puede agilizar el acceso a datos de tablas mediante índices y almacenamiento en búfer de forma eficaz. Además, puede usar la tecnología Rushmore para optimizar las consultas.

Usar índices

El uso de índices permite agilizar el acceso a los datos de una tabla. Si se agrega un índice a una tabla se agilizan las búsquedas, especialmente si se puede utilizar la tecnología Rushmore para optimizar la búsqueda. El uso de índices también permite trabajar con los datos en un orden determinado, como ver una tabla de clientes ordenada por apellido.

Si los registros de una tabla tienen claves únicas, cree un índice principal o candidato en el campo. Estos tipos de índice permiten que Visual FoxPro valide la clave en un nivel inferior, con lo que se consigue el máximo rendimiento.

Además de usar índices en los campos utilizados para buscar y ordenar, también debería indexar todos los campos relacionados con una combinación. Si combina dos tablas en campos que no están indizados, la operación de combinación puede tardar mucho más tiempo en realizarse.

Una característica importante de Visual FoxPro es que puede crear un índice en cualquier expresión. (En algunas bases de datos sólo puede indexar los campos). Esta capacidad permite usar índices para optimizar las operaciones de búsqueda, ordenación o combinación en conjuntos de campos o en expresiones derivadas de campos. Por ejemplo, puede crear un índice de un campo de nombres basado en una expresión que use la función SOUNDEX( ). De esa manera, la aplicación puede proporcionar un acceso muy rápido a los nombres que guarden un cierto parecido.

Al agregar índices a las tablas, debe ver si la mejora en los tiempos de recuperación compensa la pérdida de rendimiento al actualizar la tabla. A medida que agregue más índices a la tabla, las actualizaciones e inserciones en la tabla se ralentizarán porque Visual FoxPro necesita actualizar cada índice.

Por último, evite el uso de índices en campos que contengan sólo unos cuantos valores discretos, como los campos lógicos. En estos casos, el índice sólo contiene un pequeño número de entradas y el trabajo de mantener el índice probablemente sea mayor que la ventaja que se consigue a la hora de realizar búsquedas.

Para obtener detalles acerca de la forma de crear índices de forma eficaz al usar la tecnología Rushmore, vea Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.

Optimizar combinaciones

Cuando vaya a crear combinaciones mediante SELECT - SQL, las situaciones siguientes pueden reducir el rendimiento y producir resultados imprevistos:

  • Combinación de tablas en datos que no sean una clave principal o única en una de las tablas.
  • Combinación de tablas que contengan campos vacíos.

Para evitar estas situaciones, cree combinaciones que se basen en la relación entre las claves principales de una tabla y las claves externas de la otra. Si crea una combinación basada en datos que no sean únicos, el resultado final puede ser el producto de las dos tablas. Por ejemplo, la instrucción SELECT - SQL siguiente crea una combinación que puede producir un resultado muy extenso:

SELECT *;
FROM  tastrade!customer INNER JOIN tastrade!orders ;
ON  Customer.postal_code = Orders.postal_code

En el ejemplo, el código postal identifica de forma exclusiva una ubicación en una ciudad, pero tiene poco valor si lo que pretende es establecer una correspondencia entre las filas de clientes y las filas de sus pedidos. El código postal no identifica necesariamente a un cliente o a un pedido de forma exclusiva. En su lugar, cree una combinación con una instrucción como la siguiente:

SELECT *;
FROM  tastrade!customer INNER JOIN tastrade!orders ;
ON  Customer.customer_id = Orders.customer_id

En este ejemplo, el campo customer_id identifica de forma exclusiva a un cliente determinado y a los pedidos que pertenecen a ese cliente y, por tanto, crea un conjunto de resultados que combina la fila de clientes con cada fila de pedidos.

Además, tenga cuidado al combinar tablas que tengan campos vacíos porque Visual FoxPro establecerá una correspondencia con los campos vacíos. Sin embargo, no establece una correspondencia con los campos que contengan valores NULL. Al crear una combinación, califique las expresiones del campo en la condición de combinación, comprobando si hay una cadena vacía.

Por ejemplo, si piensa que el campo de identificación del cliente de la tabla Orders podría estar vacío, use una instrucción como la siguiente para filtrar los registros de pedidos que no tengan número de cliente:

SELECT *;
FROM  tastrade!customer INNER JOIN tastrade!orders ;
ON  Customer.customer_id = Orders.customer_id;
WHERE tastrade!orders <> ""
Sugerencia También puede probar una cadena vacía con la función EMPTY( ), pero la inclusión de una llamada a la función dentro de la expresión de filtro no resulta tan rápida como efectuar una comparación con un valor constante.

Usar el Administrador de proyectos

Cuando use el Administrador de proyectos, puede combinar un número ilimitado de programas y procedimientos en un solo archivo .app o .exe. Con esto se aumenta considerablemente la velocidad de ejecución del programa por varias razones.

En primer lugar, Visual FoxPro abre un archivo de programa y lo deja abierto. Después, cuando se ejecuta un comando DO en un programa contenido en el archivo, Visual FoxPro no necesita abrir un archivo adicional.

En segundo lugar, una aplicación de uno o dos archivos reduce el número de archivos necesarios en el directorio de trabajo. La velocidad de todas las operaciones del archivo aumentará a medida que el sistema operativo tenga menos entradas de directorios que examinar al abrir, cambiar el nombre o eliminar archivos.

Para obtener más información acerca del uso del Administrador de proyectos para crear aplicaciones, vea Compilar una aplicación.

Sugerencias generales para la optimización de tablas e índices

Para crear tablas e índices de la forma más rápida posible, siga las recomendaciones que se muestran a continuación.

  • Si no está habilitado el almacenamiento de registros o tablas en búfer, use INSERT - SQL en lugar de APPEND BLANK seguido por REPLACE, especialmente con una tabla indizada en un entorno multiusuario, ya los índices deben actualizarse una sola vez.
  • Si necesita anexar un gran número de registros a una tabla indizada, quizá sea más rápido quitar el índice, anexar los registros y después volver a crear el índice.
  • En las instrucciones SQL, evite las llamadas a funciones en la medida de lo posible, especialmente en instrucciones que devuelvan más de un registro, porque la instrucción debe volverse a evaluar (lo que implica una nueva llamada a las funciones) para cada registro. Si crea una instrucción SQL con datos variables, use las expresiones de nombre o la sustitución de macros en lugar de la función EVALUATE( ). Una estrategia aún mejor es crear toda la instrucción de forma dinámica, no en cláusulas individuales. Para obtener más información, vea Utilizar macros y Crear expresiones de tipo Nombre.
  • Si suele usar un orden de índice determinado, puede mejorar el rendimiento si ordena periódicamente la tabla en este orden.
  • Use archivos .cdx en lugar de .idx en entornos multiusuario, ya es más rápido actualizar un solo archivo .cdx que varios archivos .idx.

Vea también

Optimizar aplicaciones | Optimizar el sistema | Utilizar optimización de consultas Rushmore para acelerar el acceso de datos | Optimizar formularios y controles | Optimizar programas


Utilizar Rushmore para agilizar el acceso a los datos

Para ayudarle a optimizar el rendimiento de las aplicaciones, Visual FoxPro incluye la tecnología Rushmore para acceso a los datos. Con Rushmore puede ejecutar determinadas operaciones complejas con tablas de forma muchísimo más rápida que sin esta tecnología.

Descripción de la tecnología Rushmore

La tecnología Rushmore es una técnica de acceso a datos que usa los índices estándar de Visual FoxPro para optimizar el acceso a datos. Puede utilizar Rushmore con cualquier índice de Visual FoxPro, incluyendo los índices de FoxPro 1.x (.idx), los índices compactos (.idx) o los índices compuestos (.cdx).

Tanto los índices .cdx como los índices compactos .idx utilizan una técnica de compresión que genera índices con una sexta parte del tamaño de los índices de formato tradicional sin comprimir. Visual FoxPro puede procesar un índice comprimido más rápido porque requiere menos acceso a disco y porque una mayor parte del índice se puede almacenar en búfer en memoria. Aunque Rushmore, como otras técnicas de acceso a archivos, se beneficia del menor tamaño de los índices compactos, también funciona correctamente con los índices de formatos antiguos.

Cuando Visual FoxPro procesa tablas muy grandes en equipos con poca memoria RAM, es posible que Rushmore no disponga de suficiente memoria para funcionar. En este caso, aparecerá un mensaje de advertencia (“No hay suficiente memoria para la optimización”). Su programa funcionará correctamente sin perder ningún dato; sin embargo, la consulta no se beneficiará de la tecnología Rushmore.

En su forma más sencilla, Rushmore incrementa la velocidad de los comandos en operaciones con una sola tabla mediante cláusulas FOR que especifican los conjuntos de registros en función de los índices existentes. Además, Rushmore puede aumentar la velocidad de funcionamiento de algunos comandos, como LOCATE e INDEX. Para ver una lista completa de los comandos optimizables, vea la sección siguiente “Usar Rushmore con tablas”.

Los comandos SQL de Visual FoxPro utilizan la tecnología Rushmore como herramienta básica para la optimización de consultas de múltiples tablas, utilizando los índices existentes e incluso creando nuevos índices con fines específicos para aumentar la velocidad de dichas consultas.

Usar Rushmore con tablas

Utilice Rushmore para optimizar el acceso a datos según el número de tablas que intervengan. Cuando tenga acceso a una única tabla, podrá beneficiarse de Rushmore siempre que aparezca una cláusula FOR. Cuando tenga acceso a múltiples tablas, las consultas SELECT - SQL prevalecen sobre todas las optimizaciones Rushmore. En un comando SQL, Visual FoxPro decide lo que se necesita para optimizar una consulta y realiza las operaciones automáticamente. No es necesario que abra tablas o índices. Si SQL decide que necesita índices, crea índices temporales para su propio uso.

Para utilizar Rushmore

Elija una de las opciones siguientes:

  • Para tener acceso a datos que estén contenidos en una única tabla, utilice una cláusula FOR en un comando como AVERAGE, BROWSE o LOCATE o use comandos SQL para actualizar tablas. Para obtener una lista completa de comandos que utilizan la cláusula FOR, vea la tabla siguiente.

    –O bien–

  • Para tener acceso a datos contenidos en más de una tabla, utilice un comando SELECT - SQL, DELETE - SQL y UPDATE - SQL.

La tabla siguiente muestra una relación de los comandos que utilizan cláusulas FOR. Rushmore está diseñado para que su velocidad sea proporcional al número de registros obtenidos en la operación.

Comandos que se pueden optimizar con cláusulas FOR

AVERAGE | BLANK
BROWSE | CALCULATE
CHANGE | COPY TO
COPY TO ARRAY | COUNT
DELETE | DISPLAY
EDIT | EXPORT TO
INDEX | JOIN WITH
LABEL | LIST
LOCATE | RECALL
REPLACE | REPLACE FROM ARRAY
REPORT | SCAN
SET DELETED | SET FILTER
SORT TO | SUM
TOTAL TO |

Si utiliza una cláusula de alcance, además de una expresión de cláusula FOR optimizable, el alcance debe ser ALL o REST para poder aprovechar la tecnología Rushmore. Las cláusulas de alcance NEXT o RECORD desactivan Rushmore. Puesto que el alcance predeterminado es ALL para la mayoría de los comandos, Rushmore funcionará cuando omita la cláusula de alcance.

Rushmore puede utilizar cualquiera de los índices abiertos salvo los índices filtrados y UNIQUE.

Nota Para obtener un rendimiento óptimo, no establezca el orden de la tabla.

Si crea índices o etiquetas, el orden se establecerá automáticamente. Si desea obtener el máximo rendimiento de Rushmore cuando trabaje con un conjunto de datos extenso con un orden determinado, ejecute SET ORDER TO para desactivar el control de los índices y luego utilice el comando SORT.

Crear índices de forma eficaz para Rushmore

Rushmore no puede aplicarse a todos los índices. Si usa una cláusula FOR en el comando INDEX, Rushmore no puede utilizar el índice para la optimización. Por ejemplo, debido a que contiene una cláusula FOR, la instrucción siguiente no puede optimizarse:

INDEX ON ORDNUM FOR DISCOUNT > 10 TAG ORDDISC

De forma análoga, Rushmore no puede usar un índice creado con una condición NOT. Por ejemplo, la expresión siguiente puede optimizarse:

INDEX ON DELETED() TAG DEL

Sin embargo, ésta no puede optimizarse:

INDEX ON NOT DELETED() TAG NOTDEL
  • En el caso especial de que desee excluir los registros eliminados de una consulta, use un índice como el del primer ejemplo para agilizar las operaciones una vez establecido SET DELETED en ON.

Funcionamiento sin Rushmore

Las operaciones de obtención de datos se ejecutan sin la optimización Rushmore en las siguientes situaciones:

  • Cuando Rushmore no puede optimizar la expresión de la cláusula FOR en un comando posiblemente optimizable.
  • Cuando un comando que puede beneficiarse de Rushmore contiene una cláusula WHILE.
  • Cuando se disponga de poca memoria. La recuperación de datos sigue su curso, pero no se optimiza.

Deshabilitar Rushmore

Aunque no deseará hacerlo a menudo, es posible deshabilitar Rushmore. Cuando ejecute un comando que utilice Rushmore, Visual FoxPro determinará inmediatamente qué registros coinciden con la expresión de la cláusula FOR. A continuación, el comando manipula estos registros.

Si un comando que se puede optimizar modifica la clave de índice en la cláusula FOR, el conjunto de registros sobre el que opera Rushmore puede quedarse desfasado. En este caso, puede deshabilitar Rushmore para asegurarse de que dispone de la información más actualizada de la tabla.

Para deshabilitar Rushmore para un comando individual

  • Utilice la cláusula NOOPTIMIZE.

    Por ejemplo, este comando LOCATE no está optimizado:

    LOCATE FOR DueDate < {^1998-01-01} NOOPTIMIZE

Puede deshabilitar o habilitar Rushmore globalmente para todos los comandos que se benefician de Rushmore, con el comando SET OPTIMIZE.

Para deshabilitar Rushmore globalmente

  • Utilice el código siguiente:
    SET OPTIMIZE OFF

Para habilitar Rushmore globalmente

  • Utilice el código siguiente:
    SET OPTIMIZE ON

El valor predeterminado de la optimización Rushmore está definido como ON.

Optimizar expresiones Rushmore

La tecnología Rushmore depende de la presencia de una expresión básica optimizable en una cláusula FOR o en una cláusula SQL WHERE. Una expresión básica optimizable puede formar una expresión completa o puede aparecer como parte de una expresión. También puede combinar expresiones básicas para formar una expresión optimizable compleja.

Crear expresiones básicas optimizables

Una expresión básica optimizable toma una de las dos formas siguientes:

eIndex relOp eExp

–O bien–

eExpr relOp eIndex

Una expresión básica optimizable tiene las siguientes características:

  • eIndex coincide exactamente con la expresión sobre la cual está construido un índice.
  • eExpr es cualquier expresión y puede incluir variables y campos de otras tablas no relacionadas.
  • relOp es uno de los siguientes operadores relacionales: <, >, =, <=, >=, <>, #, ==, o !=. También puede utilizar las funciones ISNULL( ), BETWEEN( ) o INLIST( ) (o sus equivalentes SQL, como IS NULL, etc.).

Puede utilizar BETWEEN( ) o INLIST( ) de las dos formas siguientes:

BETWEEN(eIndex, eExpr, eExpr)

–O bien–

INLIST(eIndex, eExpr [, eExpr, eExpr, ...])
Nota ISBLANK( ) y EMPTY( ) no son optimizables con la tecnología Rushmore.

Si crea los índices firstname, custno, UPPER(lastname) y hiredate, todas las siguientes expresiones serán optimizables:

firstname = "Fred"
custno >= 1000
UPPER(lastname) = "SMITH"
hiredate < {^1997-12-30}

Una expresión optimizable puede contener variables y funciones que se evalúan como un valor concreto. Por ejemplo, al usar el índice addr, si ejecuta el comando STORE "WASHINGTON AVENUE" TO cVar, las siguientes instrucciones también serán expresiones básicas optimizables:

ADDR = cVar
ADDR = SUBSTR(cVar,8,3)

Cuándo se optimizan las consultas

Es importante entender cuándo se optimizarán las consultas y cuándo no. Visual FoxPro optimiza las condiciones de búsqueda; para ello, busca una coincidencia exacta entre el lado izquierdo de una expresión de filtro y una expresión de clave de índice. Por tanto, Rushmore puede optimizar una expresión sólo si busca la expresión exacta usada en un índice.

Por ejemplo, imagine que acaba de crear una tabla y va a agregar el primer índice mediante un comando como el siguiente:

USE CUSTOMERS
INDEX ON UPPER(cu_name) TAG name

El comando siguiente no es optimizable porque la condición de búsqueda se basa únicamente en el campo cu_name y no en una expresión que esté indizada:

SELECT * FROM customers WHERE cu_name ="ACME"

En su lugar, debería crear una expresión optimizable con un comando como el siguiente, donde la expresión que está buscando coincida exactamente con la expresión indizada:

SELECT * FROM customers WHERE UPPER(cu_name) = "ACME"
Sugerencia Para determinar el nivel de optimización Rushmore utilizado, llame a SYS(3054).

Combinar expresiones básicas optimizables

Puede combinar expresiones simples o complejas basadas en las cláusulas FOR o WHERE para incrementar la velocidad de recuperación de datos. Esto es posible si las expresiones FOR tienen las características de las expresiones básicas optimizables.

Las expresiones básicas pueden ser optimizables. Puede combinar expresiones básicas con los operadores lógicos AND, OR y NOT para formar una expresión de cláusula FOR compleja que también se puede optimizar. Una expresión creada con una combinación de expresiones básicas optimizables es totalmente optimizable. Si una o más de las expresiones básicas no son optimizables, la expresión compleja se podría optimizar parcialmente o bien no ser optimizable en absoluto.

Un conjunto de reglas determina si una expresión formada por expresiones básicas optimizables o no optimizables se puede optimizar totalmente, parcialmente o no se puede optimizar. La tabla siguiente resume las reglas de optimización de consultas de Rushmore.

Combinar expresiones básicas

Expresión básica | Operador | Expresión básica | Resultados de la consulta
Optimizable | AND | Optimizable | Totalmente optimizable
Optimizable | OR | Optimizable | Totalmente optimizable
Optimizable | AND | No optimizable | Parcialmente optimizable
Optimizable | OR | No optimizable | No optimizable
No optimizable | AND | No optimizable | No optimizable
No optimizable | OR | No optimizable | No optimizable
— | NOT | Optimizable | Totalmente optimizable
— | NOT | No optimizable | No optimizable

Puede utilizar el operador AND para combinar dos expresiones optimizables en una expresión totalmente optimizable:

FIRSTNAME = "FRED" AND HIREDATE < {^1997-12-30}      && Optimizable

En el siguiente ejemplo, el operador OR combina una expresión básica optimizable con una expresión no optimizable para crear una expresión que no es optimizable:

FIRSTNAME = "FRED" OR "S" $ LASTNAME      && Not optimizable

Puede crear una expresión totalmente optimizable si utiliza el operador NOT con una expresión optimizable:

NOT FIRSTNAME = "FRED"      && Fully optimizable

También puede utilizar paréntesis para agrupar combinaciones de expresiones básicas.

Combinar expresiones complejas

Del mismo modo que puede combinar expresiones básicas, puede combinar expresiones complejas para crear una expresión aún más compleja totalmente optimizable, parcialmente optimizable o no optimizable. A su vez, puede combinar estas expresiones más complejas para crear expresiones que se pueden optimizar total o parcialmente o que no se pueden optimizar. La tabla siguiente describe los resultados de combinar estas expresiones complejas. Estas reglas también se aplican a expresiones agrupadas con paréntesis.

Combinar expresiones complejas

Expresión | Operador | Expresión | Resultado
Totalmente optimizable | AND | Totalmente optimizable | Totalmente optimizable
Totalmente optimizable | OR | Totalmente optimizable | Totalmente optimizable
Totalmente optimizable | AND | Parcialmente optimizable | Parcialmente optimizable
Totalmente optimizable | OR | Parcialmente optimizable | Parcialmente optimizable
Totalmente optimizable | AND | No optimizable | Parcialmente optimizable
Totalmente optimizable | OR | No optimizable | No optimizable
— | NOT | Totalmente optimizable | Totalmente optimizable
Parcialmente optimizable | AND | Parcialmente optimizable | Parcialmente optimizable
Parcialmente optimizable | OR | Parcialmente optimizable | Parcialmente optimizable
Parcialmente optimizable | AND | No optimizable | Parcialmente optimizable
Parcialmente optimizable | OR | No optimizable | No optimizable
— | NOT | Parcialmente optimizable | No optimizable
No optimizable | AND | No optimizable | No optimizable
No optimizable | OR | No optimizable | No optimizable
— | NOT | No optimizable | No optimizable

Puede combinar expresiones totalmente optimizables con el operador OR para crear una expresión que también sea totalmente optimizable:

* Fully-optimizable expression
(FIRSTNAME = "FRED" AND HIREDATE < {^1997-12-30}) ;
OR (LASTNAME = "" AND HIREDATE > {^1996-12-30})

Para crear expresiones parcialmente optimizables, combine una expresión totalmente optimizable con una expresión que no sea optimizable. En el siguiente ejemplo, el operador AND se utiliza para combinar estas expresiones:

* Partially-optimizable expression
(FIRSTNAME = "FRED" AND HIREDATE < {^1997-12-30}) ;
AND "S" $ LASTNAME

Las expresiones parcialmente optimizables se pueden combinar para crear una expresión que también sea parcialmente optimizable:

* Partially-optimizable expression
(FIRSTNAME = "FRED" AND "S" $ LASTNAME) ;
OR (FIRSTNAME = "DAVE" AND "T" $ LASTNAME)

La combinación de expresiones que no sean optimizables crea una expresión que tampoco se puede optimizar:

* Expression that is not optimizable
("FRED" $ FIRSTNAME OR "S" $ LASTNAME) ;
OR ("MAIN" $ STREET OR "AVE" $ STREET)

Vea también

Optimizar tablas e índices | Optimizar formularios y controles | Optimizar aplicaciones | Optimizar el sistema | LOCATE | INDEX


Optimizar formularios y controles

También puede mejorar de forma significativa los formularios y controles de la aplicación.

Usar el entorno de datos

Si utiliza el entorno de datos del Diseñador de formularios o el Diseñador de informes, el rendimiento de la apertura de la tabla es mucho más rápido que si se ejecutan los comandos USE, SET ORDER y SET RELATION en el evento Load del formulario. Cuando use el entorno de datos, Visual FoxPro utiliza las llamadas al motor de nivel inferior para abrir las tablas y configurar los índices y las relaciones.

Limitar el número de formularios en un conjunto de formularios

Utilice conjuntos de formularios solamente cuando necesite que un grupo de formularios comparta una sesión privada de datos. Cuando utilice un conjunto de formularios, Visual FoxPro crea instancias de todos los formularios y de todos los controles de todos los formularios del conjunto, aun cuando sólo se muestre en pantalla el primer formulario del conjunto. Esto puede resultar lento e innecesario si los formularios no tienen que compartir una sesión privada de datos. En su lugar, debería ejecutar DO FORM para los otros formularios cuando sean necesarios.

Sin embargo, si utiliza un conjunto de formularios, obtendrá una pequeña mejora del rendimiento cuando tenga acceso a los formularios del conjunto, porque los formularios ya estarán cargados aunque no serán visibles.

Carga dinámica de controles de página en un marco de página

Los marcos de página, al igual que los conjuntos de formularios, cargan todos los controles de cada página en el momento de cargar el marco de página lo que da lugar a una demora perceptible cuando se carga este último. En su lugar, podría cargar los controles de página dinámicamente a medida que se fueran necesitando, creando una clase fuera de los controles de cada página y cargándolos cuando se activara la página.

Para cargar dinámicamente los controles de página

  1. Diseñe el formulario de la forma habitual, incluyendo todos los controles en todas las páginas.
  2. Una vez terminado el diseño, vaya a la segunda página del marco de página y guarde los controles allí existentes como una clase.
  3. Abra la clase que acaba de crear y compruebe que los controles sigan dispuestos de la forma correcta.
  4. Repita los pasos 2 y 3 para la tercera página y las siguientes del marco de página.
  5. En el evento Activate de la segunda página y de las siguientes del marco de página, agregue objetos y déjelos visibles.

    Por ejemplo, si la clase de controles se llama cnrpage1, debe agregar el código siguiente:

    IF THIS.ControlCount = 0
THIS.AddObject("cnrpage1","cnrpage1")
THIS.cnrpage1.Visible = .T.
ENDIF

Enlace dinámico de controles a datos

Puede reducir el tiempo de carga de un formulario que contenga un gran número de controles enlazados a datos si retrasa el enlace de esos controles hasta el momento en que sean necesarios.

Para enlazar dinámicamente controles a datos

  1. Sitúe las tablas y vistas del formulario en el entorno de datos de modo que se abran cuando se cargue el formulario.
  2. Para cada control dependiente, agregue código al código de evento GotFocus que enlaza el control al valor de los datos. Por ejemplo, el código siguiente enlaza un control ComboBox al campo customer.company:
    * Check to see if the control has been bound yet.
IF THIS.RecordSource = ""
* Set the record source to the right value
* and set the record source type to "fields"
THIS.RecordSource = "customer.company"
THIS.RecordSourceType = 6
THIS.Refresh
ENDIF

Retardo de la actualización de pantalla

Si realiza varios cambios en la pantalla, por ejemplo, cambia los valores de varios controles a la vez, puede reducir el tiempo global necesario para actualizar la pantalla si retarda la actualización de pantalla hasta que se realicen todos los cambios. Por ejemplo, si hace que los controles queden visibles o invisibles, cambia los colores de los controles o mueve los registros de controles dependientes, resulta mucho más eficaz retardar el relleno de color de estos controles hasta que se hayan completado todos los cambios:

Para retardar la actualización de la pantalla

  1. Establezca la propiedad LockScreen del formulario en el valor verdadero.
  2. Actualice los controles cuando sea necesario.
  3. Llame al método Refresh del formulario.
  4. Establezca la propiedad LockScreen del formulario en el valor falso.

El ejemplo siguiente cambia varias propiedades de la pantalla a la vez, se desplaza a un registro nuevo y sólo entonces actualiza la pantalla con información nueva. Si LockScreen no se hubiera establecido como verdadero, en cada una de estas operaciones se volverían a dibujar los controles afectados individualmente y el rendimiento global de la actualización parecería retardado.

THISFORM.LockScreen = .T.
THISFORM.MyButton.Caption = "Save"
THISFORM.MyGrid.BackColor = RGB (255, 0, 0) && Red
SKIP IN customers
SKIP IN orders
THISFORM.Refresh
THISFORM.LockScreen = .F.
Sugerencia Esta técnica no proporciona ninguna ventaja si está actualizando un único control.

Reducir código en métodos usados con frecuencia

Puesto que el método Refresh y el evento Paint suelen utilizarse con frecuencia, puede aumentar el rendimiento de formularios si reduce la cantidad de código de estos métodos. De forma análoga, para reducir el tiempo de carga de un formulario, puede mover código desde el evento Init a los eventos usados con menos frecuencia como Activate, Click y GotFocus. Después, use una propiedad del control (como Tag o una propiedad personalizada) para hacer un seguimiento de si el control ya ha ejecutado el código que sólo necesita ejecutarse una vez.

Vea también

Utilizar optimización de consultas Rushmore para acelerar el acceso de datos | Optimizar programas | Optimizar aplicaciones | Optimizar el sistema


Optimizar programas

Escribiendo código cuidadosamente, puede escribir programas más rápidos. Son varias las maneras de aumentar el rendimiento de los programas en Visual FoxPro:

  • Seguir las sugerencias generales sobre el rendimiento de programación que aparecen a continuación.
  • Usar expresiones de nombres en lugar de la sustitución mediante macros.
  • Hacer referencia a propiedades de objetos de forma eficaz.

Sugerencias generales sobre el rendimiento de programación

Para escribir programas más rápidos, siga las recomendaciones que se indican a continuación.

  • Elija el tipo de datos correcto. En particular, use el tipo de datos Integer para la información numérica cuando sea posible, puesto que se procesa de forma más eficaz. Siempre que sea posible, use el tipo de datos Integer para los valores de claves externas y principales, lo que dará lugar a archivos de datos e índices más pequeños (y, por tanto, más rápidos), y a combinaciones más rápidas.
    Nota Para ver un ejemplo que muestre cómo crear un índice más pequeño y, por tanto, más rápido, ejecute Solution.app en el directorio ...\Samples\Solution de Visual FoxPro. Elija Ver los ejemplos mediante una lista filtrada, seleccione Índice en la lista desplegable y después elija Crear índices pequeños mediante BINTOC( ) en la lista que aparece.
  • Evite volver a abrir archivos, puesto que esto ralentiza el rendimiento. En su lugar, asigne archivos a áreas de trabajo cuando los abra y después use el comando SELECT para elegir un área de trabajo específica cuando se precise.
  • Si es posible, utilice bucles FOR ... ENDFOR, pues son más rápidos que los bucles DO WHILE ... ENDDO.
  • Cuando copie datos de varios campos, SCATTER TO ARRAY es más rápido que SCATTER MEMVAR.
  • Para optimizar el uso de la memoria, evite la creación de objetos antes de necesitarlos y borre los objetos cuando deje de trabajar con ellos para liberar memoria.
    Sugerencia Puede comprobar cuánta memoria consume cada objeto si llama a la función SYS(1016).
  • Envíe los resultados a la ventana superior siempre que sea posible; la actualización de ventanas colocadas detrás de la superior es bastante más lenta. No se debe, en ningún caso, hacer que los resultados se desplacen detrás de una ventana.
  • Deshabilite la presentación del estado con el comando SET TALK OFF, que elimina el trabajo de la actualización de la pantalla.
  • Establezca el comando SET DOHISTORY como OFF para evitar la actualización de la ventana de comandos cada vez que se ejecute un programa.

Usar expresiones de nombre en lugar de sustitución de macros

Si utiliza expresiones de nombre en lugar de la sustitución de macros, el rendimiento del programa aumentará notablemente. Por ejemplo, si asigna un valor a la variable cFile, una expresión de nombre creada con cFile será más rápida que la sustitución de macros.

cFile = "CUST"
use &cFile      && Macro substitution, slow
use (cFile)      && Name expression: faster, preferred

Referencias a propiedades de objetos de forma eficaz

Comprendiendo la forma en que funciona Visual FoxPro con las propiedades y objetos, puede optimizar la ejecución de las aplicaciones.

Optimizar referencias a una propiedad repetidas

Cuando haga referencia a una propiedad de objeto con la sintaxis objeto.propiedad, Visual FoxPro debe buscar el objeto antes de poder tener acceso a la propiedad. Si debe tener acceso a la propiedad repetidas veces, esta estrategia de búsqueda puede ralentizar el rendimiento.

Para evitar las referencias al mismo procedimiento varias veces (como en un bucle), lea el valor de la propiedad en una variable, realice los cambios y establezca la propiedad una sola vez cuando termine. Por ejemplo, el código siguiente rellena una matriz de propiedades; para ello, crea primero una matriz en la memoria, la rellena y después establece la propiedad una sola vez al final:

* Copiar cadena a una variable local
lcChar = THISFORM.cCharString
LOCAL laCharArray[256]   && Crear una matriz local
FOR nCounter = 1 to 256
laCharArray[x] = SUBSTR(laChar,x,1)
ENDFOR
* Copia la matriz local a la propiedad matriz
ACOPY(laCharArray,THISFORM.aCharArray)

Hacer referencia a múltiples propiedades de forma eficaz

Si actualiza más de una propiedad para el objeto, Visual FoxPro debe buscar el objeto varias veces, lo que puede afectar al rendimiento. En el ejemplo siguiente, el código hace que Visual FoxPro busque en cuatro objetos (como THISFORM, pgfCstInfo, pgCstName y txtName) para encontrar la propiedad que se va a establecer. Dado que el código establece dos propiedades, la búsqueda a cuatro niveles se realiza dos veces:

THISFORM.pgfCstInfo.pgCstName.txtName.Value = ;
"Fred Smith"
THISFORM.pgfCstInfo.pgCstName.txtName.BackColor = ;
RGB (0,0,0)  & Rojo oscuro

Para evitar este volumen de trabajo, utilice el comando WITH ... ENDWITH. Este método hace que Visual FoxPro busque el objeto una sola vez. Por ejemplo, el siguiente código realiza la misma tarea que el anterior, pero de forma más rápida:

WITH THISFORM.pgfCstInfo.pgCstName.txtName
.Value = "Fred Smith"
.BackColor = RGB (0,0,0)  & Rojo oscuro
ENDWITH

También puede almacenar una referencia a un objeto en una variable y después incluir la variable en lugar de la referencia al objeto:

oControl = THISFORM.pgfCstInfo.pgCstName.txtName
oControl.Value = "Fred Smith"
oControl.BackColor = RGB (0,0,0)  & Rojo oscuro

Vea también

Optimizar formularios y controles | Optimizar controles ActiveX | Optimizar aplicaciones | Optimizar el sistema | SELECT | FOR ... ENDFOR | SCATTER


Optimizar controles ActiveX

Si utiliza controles ActiveX o Automatización en la aplicación, puede ajustar la aplicación para obtener el máximo rendimiento de estos controles.

Usar controles ActiveX de forma eficaz

Para obtener el máximo rendimiento a la hora de utilizar controles ActiveX en los formularios, siga estas recomendaciones:

  • Inicie los servidores de Automatización en primer lugar. Los controles enlazados a campos generales suelen funcionar mejor cuando los servidores de estos tipos de datos (como Microsoft Excel o Word) ya se están ejecutando en el equipo cliente.
  • Inserte objetos “como un icono”. Cuando inserte un control ActiveX en un campo, hágalo como un icono o un marcador de posición en lugar de insertar el objeto completo. Esto reduce la cantidad de espacio de almacenamiento necesario porque Visual FoxPro almacena una imagen de presentación con el objeto, lo que consume gran cantidad de espacio de almacenamiento. Si se inserta un objeto como un icono también se aumenta el rendimiento para dibujar el objeto.
  • Use controles de imágenes. Si desea mostrar un mapa de bits (como el logotipo de una empresa), los controles de imágenes son mucho más rápidos que los controles OLEBound.
  • Use vínculos manuales siempre que sea posible. Los vínculos manuales a los objetos son más rápidos porque evitan el tiempo de notificación requerido para los vínculos automáticos y porque el servidor no necesita iniciarse para dibujar el objeto. Si no necesita actualizar un objeto con frecuencia, use vínculos manuales.

Optimizar el rendimiento de Automatización

Si la aplicación interactúa con otras aplicaciones, puede conseguir el máximo rendimiento mediante las técnicas siguientes.

Evitar múltiples instancias del servidor

En algunos casos, los servidores de Automatización (como Microsoft Excel) iniciarán una nueva instancia, aun cuando ya haya una ejecutándose. Para evitar esto y aumentar el rendimiento, use la función GetObject( ) en lugar de CreateObject( ). Por ejemplo, la llamada siguiente siempre utilizará una instancia existente:

x = GetObject(,"excel.Application")

De lo contrario, la llamada siguiente creará una instancia nueva:

x = CreateObject("excel.Application")

Si llama a GetObject( ) pero el servidor no está funcionando, aparecerá el error 1426. En ese caso, puede interceptar el error y llamar a CreateObject( ):

ON ERROR DO oleErr WITH ERROR()
x = GetObject(,"excel.application")
ON ERROR  && restore system error handler
PROCEDURE oleErr
PARAMETER mError
IF mError = 1426 then
x = CreateObject("excel.application")
ENDIF

Hacer referencia a objetos de forma eficaz

La ejecución de expresiones que usen objetos en un servidor de Automatización puede resultar muy costosa, especialmente cuando se evalúan varias veces. Es mucho más rápido almacenar las referencias de objetos en variables para usarlas como referencia.

Vea también

Optimizar programas | Optimizar aplicaciones en entornos multiusuario | Optimizar el acceso a datos remotos | Optimizar aplicaciones | Optimizar el sistema


Optimizar aplicaciones en entornos multiusuario

Si va a escribir aplicaciones para un entorno multiusuario, el rendimiento es un factor especialmente importante, porque las operaciones ineficaces se multiplican. Además, si varios usuarios tienen acceso a datos, la aplicación debe gestionar problemas de simultaneidad y acceso a la red.

Para administrar estos problemas, puede:

  • Ajustar el intervalo de reintentos de bloqueo.
  • Usar el procesamiento de transacciones de forma eficaz.

Asimismo, las sugerencias para trabajar con datos almacenados en servidores remotos pueden resultarle especialmente útiles. Para obtener detalles, vea Optimizar el acceso a datos remotos.

Ajustar el intervalo de reintentos de bloqueo

Si la aplicación intenta bloquear un registro o una tabla sin éxito, puede hacer que Visual FoxPro reintente el bloqueo automáticamente después de un breve intervalo. Sin embargo, cada intento de bloqueo da lugar a un tráfico de red más intenso. Si ya fuera intenso, el envío de repetidas solicitudes de bloqueo agregará una sobrecarga de trabajo a la red y provocará una ralentización global para todos los usuarios.

Para controlar esta situación, puede ajustar el intervalo entre los intentos de bloqueo. Si usa un intervalo más grande (lo que provocaría menos reintentos por segundo) se reducirá el tráfico de la red y se aumentará el rendimiento.

Para ajustar el intervalo de reintentos de bloqueo

  • Llame a la función SYS(3051); para ello, indique el número de milisegundos que debe esperar entre cada intento de bloqueo.

Usar el procesamiento de transacciones de forma eficaz

Cuando utiliza el procesamiento de transacciones, debe diseñar las transacciones de forma que se reduzca al mínimo el efecto que puedan tener en otros usuarios. Mientras esté abierta una transacción, todos los bloqueos establecidos durante la transacción permanecerán bloqueados hasta que se confirmen o se deshagan. Aun cuando ejecute un comando UNLOCK explícito, los bloqueos se mantendrán hasta que ejecute el comando END TRANSACTION o ROLLBACK.

Además si anexa registros a una tabla, es imprescindible que Visual FoxPro bloquee el encabezado de la tabla. El encabezado permanece bloqueado durante el proceso de la transacción, lo que impide que los demás usuarios también puedan anexar registros.

Para reducir al mínimo el impacto de las transacciones, diséñelas de modo que comiencen y terminen lo más cerca posible de la actualización real de los datos; la transacción ideal sólo contiene instrucciones de actualización de datos.

Si va a agregar el proceso de transacciones a actualizaciones de datos realizadas en un formulario, no abra una transacción, ejecute el formulario y después confirme la transacción cuando el formulario esté cerrado. En su lugar, incluya las instrucciones del procesamiento de transacciones en el código de eventos del botón Guardar, por ejemplo:

* Save method from the cmdSave command button
BEGIN TRANSACTION
UPDATE PRODUCTS SET reorder_amt = 0 WHERE discontinued = .T.
END TRANSACTION

Vea también

Optimizar controles ActiveX | Optimizar el acceso a datos remotos | Optimizar aplicaciones | Optimizar el sistema | Optimizar aplicaciones internacionales


Optimizar el acceso a datos remotos

La recuperación de datos de cualquier base de datos remota resulta cara. Con el fin de obtener datos de una base de datos del servidor, hay que seguir estos pasos:

  1. El cliente ejecuta la consulta en la base de datos remota.
  2. El servidor analiza y compila la consulta.
  3. El servidor genera un conjunto de resultados.
  4. El servidor indica al cliente que se ha completado el resultado.
  5. El cliente obtiene los datos del servidor a través de la red. Este paso puede realizarse en una sola operación o el cliente puede solicitar que los resultados se envíen en partes a medida que se vayan necesitando.

Puede utilizar varias técnicas para aumentar la velocidad de la recuperación o actualización de los datos, tales como:

  • Recuperar sólo los datos necesarios
  • Actualizar tablas remotas de forma eficaz
  • Enviar instrucciones en un lote
  • Establecer el tamaño del paquete
  • Retrasar la recuperación de datos memo y binarios
  • Almacenar localmente datos de consulta
  • Crear reglas locales

Obtener sólo los datos necesarios

La mayor parte de las aplicaciones que usan datos remotos, formularios e informes no necesitan tener acceso a todos los datos de una tabla a la vez. Por tanto, puede aumentar el rendimiento si crea vistas remotas que busquen o actualicen únicamente los campos y registros que desee, reduciendo al mínimo la cantidad de datos que deben transmitirse a través de la red.

Para crear consultas que minimicen el trabajo de recuperación de datos de orígenes remotos, siga estas sugerencias:

  • Especifique sólo los campos que necesite. No use la instrucción SELECT * FROM customers a menos que necesite todos los campos de la tabla.
  • Incluya una cláusula WHERE para limitar el número de registros transferidos. Cuanto más específica sea la cláusula WHERE, menos registros se transmitirán al equipo y con más rapidez se terminará la consulta.
  • Si no puede predecir durante el diseño los valores que se van a utilizar en una cláusula WHERE, puede utilizar parámetros en la cláusula. Cuando se ejecute la consulta, Visual FoxPro usará el valor de una variable de parámetro o solicitará al usuario el valor de búsqueda. Por ejemplo, esta consulta permite a la aplicación o al usuario rellenar la región en el tiempo de ejecución:
    SELECT cust_id, company, contact, address ;
FROM customers ;
WHERE region = ?pcRegion
  • Establezca la propiedad NoDataOnLoad del objeto Cursor en el entorno de datos correspondiente. Esta técnica se suele utilizar con vistas parametrizadas en las que los datos del parámetro proceden del valor de un control de un formulario.

Actualizar tablas remotas de forma eficaz

Cuando se usa una vista para actualizar una tabla en un origen de datos remoto, Visual FoxPro debe comprobar si los registros que se están actualizando han sufrido alguna modificación. Para ello, Visual FoxPro debe examinar los datos en el servidor y compararlos con los datos existentes en su equipo. En algunos casos, esta operación puede resultar lenta.

Para optimizar el proceso de actualización de datos en orígenes de datos remotos, puede especificar la forma en que Visual FoxPro debe comprobar los registros modificados. Para ello, tiene que indicar la cláusula WHERE que Visual FoxPro debe generar para realizar la actualización.

Imagine, por ejemplo, que está usando una vista basada en una tabla de clientes en un origen de datos remoto. Ha creado la vista mediante una instrucción SELECT - SQL como la siguiente:

SELECT cust_id, company, address, contact ;
FROM customers ;
WHERE region = ?vpRegion

Desea actualizar los cuatro campos que ha especificado en la vista, excepto el campo clave (cust_id). En la tabla siguiente se presenta la cláusula WHERE que Visual FoxPro generará para cada una de las opciones disponibles en la cláusula SQL WHERE.

Nota La función OLDVAL( ) devuelve la versión preactualizada de los campos que se han modificado y la función CURVAL( ) devuelve el valor actual almacenado en el origen de datos remoto. Si compara estos valores, Visual FoxPro puede determinar si el registro ha cambiado en el origen de datos remoto desde que se transfirió al equipo.
Valor Cláusula WHERE resultante
Sólo campos clave
WHERE OLDVAL(cust_id) = CURVAL(cust_id)
Campos clave y actualizables
(predeterminado)
WHERE OLDVAL(cust_id) = CURVAL(cust_id) AND

   OLDVAL(<mod_fld1>) = CURVAL(<mod_fld2>) AND
OLDVAL(<mod_fld2>) = CURVAL(<mod_fld2>) AND
...
Campos clave y modificados
WHERE OLDVAL(cust_id) = CURVAL(cust_id) AND

   OLDVAL(company) = CURVAL(company) AND
OLDVAL(contact) = CURVAL(contact) AND
   OLDVAL(address) = CURVAL(address)
Clave y marca de hora
WHERE OLDVAL(cust_id) = CURVAL(cust_id) AND

   OLDVAL(timestamp) = CURVAL(timestamp)

En general, debería elegir una opción para la cláusula SQL WHERE en este orden de preferencia:

  1. Clave y marca de hora, si la base de datos remota admite los campos de marca de hora, que es la forma más rápida de indicar si se ha modificado algún registro.
  2. Campos clave y modificados, porque los campos que se actualizan en el servidor son casi siempre un subconjunto del número total de campos que se podría actualizar.
  3. Campos clave y actualizables.
  4. Sólo campos clave. El uso de esta configuración implica que el servidor remoto insertará un registro totalmente nuevo que use la clave modificada y eliminará el registro anterior.

Enviar instrucciones en un lote

Algunos servidores (como Microsoft SQL Server) permiten enviar un lote de instrucciones SQL en un solo paquete. Esto aumenta el rendimiento porque se reduce el tráfico de la red y porque el servidor puede compilar múltiples instrucciones a la vez.

Por ejemplo, si especifica un tamaño de lote de cuatro y actualiza 10 registros en una base de datos, Visual FoxPro envía en un solo lote cuatro instrucciones como la siguiente a la base de datos del servidor:

UPDATE customer SET contact = "John Jones" ;
WHERE cust_id = 1;
UPDATE customer SET contact = "Sally Park" ;
WHERE cust_id = 2;
UPDATE customer SET company = "John Jones" ;
WHERE cust_id = 3;
UPDATE customer SET contact = "John Jones" ;
WHERE cust_id = 4

Para enviar instrucciones en un lote

  • En el cuadro de diálogo Opciones, elija la ficha Datos remotos y en Registros para actualizar por lotes especifique el número de registros que van a incluirse en el lote.

    –O bien–

  • Llame a las funciones DBSETPROP( ) o CURSORSETPROP( ) para establecer estas propiedades:
    • Establezca Transaction a 2.
    • Establezca BatchUpdateCount al número de instrucciones que se van a enviar en un lote.

      –O bien–

  1. En el Diseñador de vistas, elija Opciones avanzadas del menú Consulta para abrir el cuadro de diálogo Opciones avanzadas.
  2. En el área Rendimiento, situada junto a Número de registros para actualizar por lotes, especifique el número de instrucciones que se van a enviar en un lote.
    Nota Debería probar con diferentes valores para esta propiedad y la propiedad PacketSize para optimizar las actualizaciones.

Establecer el tamaño del paquete

Puede optimizar el acceso a servidores remotos; para ello, ajuste el tamaño del paquete de red que se envía y se obtiene de la base de datos remota. Por ejemplo, si la red admite paquetes grandes (más de 4.096 bytes), puede aumentar el tamaño del paquete en Visual FoxPro con el fin de enviar más datos cada vez que lea o escriba en la red.

Para establecer el tamaño del paquete

  • Llame a las funciones DBSETPROP( ) o CURSORSETPROP( ) y establezca la propiedad PacketSize a un valor entero positivo. El valor predeterminado es 4.096.
    Nota Es posible que distintos proveedores de red administren esta propiedad de forma distinta por lo que deberá consultar la documentación de su servicio de red. Novell® NetWare®, por ejemplo, tiene un tamaño de paquete máximo de 512 bytes, por lo que si se establece la propiedad PacketSize en un valor superior no obtendrá ninguna ventaja adicional.

Retardo de la recuperación de datos memo y binarios

Si está almacenando datos memo o binarios en un servidor remoto, puede aumentar el rendimiento; para ello, retarde la transferencia de estos datos hasta que la aplicación la requiera realmente.

Para retardar la recuperación de los datos memo y binarios

  • En el cuadro de diálogo Opciones, elija la ficha Datos remotos y en Opciones predeterminadas de vista remota, establezca Buscar memo.

    –O bien–

  • Llame a las funciones DBSETPROP( ) o CURSORSETPROP( ) para establecer la propiedad FetchMemo:

Almacenamiento local de datos de consulta

Muchas aplicaciones incluyen datos de consulta estáticos, como abreviaturas de estados, códigos postales y cargos de empleados. Si la aplicación contiene este tipo de datos y si la tabla no es demasiado grande, podría aumentar la velocidad de la aplicación; para ello, mantenga copias de esta información en el equipo de cada usuario, ya que las consultas no generan tráfico de red.

Esta técnica es especialmente útil para los datos que nunca cambian o lo hacen muy esporádicamente. Si los datos cambian en alguna ocasión, debe diseñar una estrategia para transferir una copia nueva de la tabla de consultas al equipo de cada usuario.

Crear reglas locales

Puede aumentar el rendimiento de la aplicación si crea reglas locales a nivel de campo y de registro en Visual FoxPro, en lugar de utilizar las reglas definidas en el servidor. Estas reglas pueden impedir que los datos que no son compatibles con las reglas de datos o de la empresa se introduzcan en la base de datos.

Con la definición de reglas en Visual FoxPro, los datos no válidos se interceptan antes de enviarse a través de la red, lo que es más rápido y permite controlar mejor las condiciones de error. Sin embargo, el uso de reglas locales también implica su coordinación con las reglas del servidor remoto. Por ejemplo, si se modifican las reglas del servidor, tendría que cambiar las reglas locales para que coincidieran.

Para obtener más información acerca de la creación de reglas locales, vea Actualizar datos en una vista en Crear vistas.

Vea también

Optimizar aplicaciones en entornos multiusuario | Optimizar aplicaciones internacionales | Optimizar aplicaciones | Optimizar el sistema | NoDataOnLoad | SELECT - SQL


Optimizar aplicaciones internacionales

Si va a programar aplicaciones internacionales, podría necesitar administrar la secuencia de ordenación de los datos para obtener el máximo rendimiento. Esta sección trata sobre lo siguiente:

  • Usar secuencias de ordenación de forma eficaz.
  • Usar SELECT - SQL con múltiples secuencias de ordenación.

Usar secuencias de ordenación de forma eficaz

Si los datos no incluyen marcas diacríticas, como acentos (á) o diéresis (ü), puede aumentar el rendimiento mediante la secuencia de ordenación del equipo porque:

  • Las claves de índices que no son del equipo son dos veces más grandes puesto que contienen la información diacrítica.
  • La intercalación fuera del equipo usa muchas reglas especiales para indexar caracteres con el fin de que devuelvan los resultados adecuados.

Dado que la secuencia de ordenación del equipo es más rápida, se suele preferir para combinaciones y búsquedas mientras que otras secuencias de ordenación resultan perfectas para ordenar registros.

Cuando cree un índice, Visual FoxPro utiliza la secuencia de ordenación actual establecida utilizando los comandos SET COLLATE, CREATE TABLE - SQL, ALTER TABLE - SQL, o INDEX. Por tanto, si desea crear dos índices con dos secuencias de ordenación, puede usar SET COLLATE y una secuencia de comandos como la siguiente:

SET COLLATE TO "MACHINE"
INDEX ON lastname TAG _lastname     && Indice para unir o buscar.
SET COLLATE TO "GENERAL"
INDEX ON lastname TAG lastname  && Indice para ordenar.

Cuando desee buscar, seleccionar o combinar el campo lastname, ejecute el comando SET COLLATE TO “MACHINE” antes de realizar la operación. Rushmore utilizará el índice creado en la secuencia de ordenación del equipo y la operación de búsqueda será muy rápida.

Usar SQL SELECT con múltiples secuencias de ordenación

Cuando ejecute un comando SELECT - SQL, Visual FoxPro usará la secuencia de ordenación actual para realizar la búsqueda y para las cláusulas ORDER BY y GROUP BY. Si desea buscar y ordenar mediante diferentes secuencias de ordenación, puede dividir los comandos SQL en dos pasos, como se indica a continuación:

* Selecciona registro utilizando una secuencia de ordenación.
SET COLLATE TO "MACHINE"
SELECT * FROM table INTO CURSOR temp1 ;
WHERE lname = "Müller"
* Ordena registros utilizando un secuencia de ordenación diferente.
SET COLLATE TO "GENERAL"
SELECT * FROM temp1 INTO TABLE output ORDER BY lastname

Vea también

Optimizar el acceso a datos remotos | Optimizar aplicaciones | Optimizar el sistema | Optimizar aplicaciones en entornos multiusuario | Optimizar controles ActiveX


Acceso a las API

Si su aplicación exige requisitos que no pueden cumplir las características integradas en Visual FoxPro, puede ampliar el programa con bibliotecas externas, controles Microsoft ActiveX o bibliotecas de vínculos dinámicos (DLL). Gracias a las bibliotecas externas podrá agregar objetos a su aplicación, desde cuadros de texto mejorados hasta calendarios y otras aplicaciones completas y también aprovechar la funcionalidad ofrecida por otros programas (como Microsoft Windows) a través de sus interfaces de programación de aplicaciones (API).

En esta sección

Ampliar Visual FoxPro con bibliotecas externas
Puede agregar fácilmente controles Microsoft ActiveX (archivos .ocx) a su aplicación, lo que le ofrece nuevos objetos que puede usar en formularios para crear subclases y administrar su forma de trabajar con controles nativos de Visual FoxPro. Además, puede establecer un vínculo con una biblioteca externa como una DLL y llamar a las funciones de la biblioteca para usarlas en sus propios programas.
Acceso a la API de Visual FoxPro
Si no encuentra una biblioteca externa adecuada, puede escribir su propio control Microsoft ActiveX o biblioteca de vínculos dinámicos (archivo .fll) específicos de Visual FoxPro. Puede llamar a las funciones disponibles en la API de Visual FoxPro y crear controles o bibliotecas muy integradas con Visual FoxPro y optimizadas para su uso.

Secciones relacionadas

Programar en Visual FoxPro
Visual FoxPro es una eficaz herramienta interactiva para la administración de datos, pero también puede acceder a toda la eficacia de Visual FoxPro creando aplicaciones. Entender las técnicas de programación orientada a objetos y el modelo controlado por eventos puede mejorar la productividad del programador.
Crear programas
Explica las dos formas de crear un programa Visual FoxPro, el cual es un archivo de texto que contiene una serie de comandos.
Programación orientada a objetos
Con programación orientada a objetos, puede crear componentes de la aplicación auto contenidos que respondan a acciones del usuario y al sistema, que pueden reutilizarse y mantenerse fácilmente.
Optimizar aplicaciones
Describe formas para optimizar el rendimiento y estabilidad al ejecutar la aplicación, haciendo su aplicación más pequeña y rápida.


Ampliar Visual FoxPro con bibliotecas externas

Puede ampliar las posibilidades nativas de Microsoft® Visual FoxPro® aprovechando las ventajas de los controles Microsoft® ActiveX® (archivos .ocx), objetos ActiveX y las bibliotecas de vínculos dinámicos (DLL). Las bibliotecas externas permiten tener acceso no sólo a las funciones que ofrecen otros programas sino también a las de Microsoft® Windows®. Por ejemplo, puede usar un control ActiveX para leer y actualizar directamente el registro de Windows, o puede llamar a las funciones a nivel de sistema vinculándose a una de las DLL de Windows.

En esta sección

Acceso a bibliotecas externas
En la mayor parte de los casos, Visual FoxPro proporciona todas las herramientas necesarias para terminar la aplicación. Sin embargo, en algunas ocasiones es posible que la aplicación necesite otras funciones que aún no están disponibles en Visual FoxPro.
Acceso a controles y objetos ActiveX
Puede usar cualquier control Microsoft® ActiveX® disponible en su equipo. Para usar un control ActiveX, agréguelo a un formulario y establezca sus propiedades, escriba controladores para sus eventos o llame a sus métodos.
Acceso a bibliotecas de vínculos dinámicos
Si la función que requiere está disponible en una DLL, puede establecer un vínculo con la biblioteca y llamar a sus funciones.
Acceso a la biblioteca de Visual FoxPro
Como una DLL, una biblioteca de Visual FoxPro (archivo .fll) contiene funciones que puede llamar de la misma manera que haría con cualquier otra función.

Secciones relacionadas

Acceso a las APIs
Si su aplicación exige requisitos que no pueden cumplir las características que ya están integradas en Visual FoxPro, puede ampliar el programa con bibliotecas externas, como controles Microsoft® ActiveX® o bibliotecas de vínculos dinámicos (DLL).
Acceso a la API de Visual FoxPro
Si no encuentra una biblioteca externa adecuada, puede escribir su propio control Microsoft® ActiveX® o biblioteca de vínculos dinámicos (archivo .fll) específicos de Visual FoxPro. Puede llamar a las funciones disponibles en la API de Visual FoxPro y crear controles o bibliotecas muy integradas con Visual FoxPro y optimizadas para su uso.


Acceso a bibliotecas externas

En la mayor parte de los casos, Visual FoxPro proporciona todas las herramientas necesarias para terminar la aplicación. Sin embargo, ocasionalmente verá que la aplicación necesita funciones adicionales que aún no están disponibles en Visual FoxPro. En estos casos, puede salir de Visual FoxPro y aprovechar las posibilidades de las bibliotecas externas.

Visual FoxPro le permite tener acceso a estos tipos de bibliotecas externas:

  • Objetos y controles ActiveX (archivos .ocx). Los controles y objetos ActiveX son programas que incluyen objetos diseñados para realizar tareas específicas. La mayor parte de los controles y objetos ActiveX agregan nuevos objetos a Visual FoxPro, todo desde un nuevo tipo de cuadro de texto hasta un calendario, una calculadora u otro objeto complejo. Algunos controles y objetos ActiveX también incorporan funciones adicionales, como la obtención de acceso al sistema de correo electrónico o al puerto de comunicaciones de su equipo. Como regla, después de incorporar un control u objeto ActiveX a Visual FoxPro, puede usar los objetos que contienen igual que lo haría con cualquier clase de base de Visual FoxPro.
  • Bibliotecas de vínculos dinámicos (archivos .dll). Un archivo .dll es una biblioteca de funciones que puede llamar desde programas de Visual FoxPro de la misma manera que cualquier función definida por el usuario de Visual FoxPro. Muchos programas para Windows y el mismo Windows, ofrecen su funcionalidad mediante archivos .dll. Por ejemplo, puede tener acceso a la configuración de colores del sistema para Windows vinculándose a un archivo .dll del sistema y llamando a funciones del mismo.
  • Bibliotecas externas de Visual FoxPro (archivos .fll). Un archivo .fll es como un archivo .dll, pero usa un protocolo especial para compartir datos con Visual FoxPro y, a menudo, llama a funciones internas de Visual FoxPro. Como consecuencia, los archivos .fll son específicos de Visual FoxPro, a diferencia de los archivos .dll, que se pueden llamar desde cualquier programa para Windows. Puede llamar a las funciones de un archivo .fll igual que a cualquier función definida por el usuario de Visual FoxPro.

Antes de usar una biblioteca, tiene que estar familiarizado con las convenciones usadas para tener acceso a sus controles o funciones. Por ejemplo, si desea incluir un control ActiveX en un formulario, debe saber qué propiedades, eventos y métodos puede usar para administrar el control. Para un control ActiveX, puede usar un Explorador de clases de Visual FoxPro para determinar las propiedades, eventos y métodos que puede utilizar. De forma similar, si desea llamar a una función de un archivo .dll, tiene que saber el nombre de función, el número y el tipo de datos del parámetro que requiere, y el tipo de datos del valor devuelto. En general, puede obtener este tipo de información de la documentación que acompaña a una biblioteca, ya sea un libro o un sistema de ayuda. Para obtener información acerca de archivos .dll del sistema para Windows, puede consultar el Software Development Kit (SDK) apropiado para su versión de Windows.

Vea también

Ampliar Visual FoxPro con bibliotecas externas | Acceso a controles y objetos ActiveX | Acceso a bibliotecas de vínculos dinámicos | Acceso a la biblioteca de Visual FoxPro | Acceso a la API de Visual FoxPro


Acceso a controles y objetos ActiveX

Puede usar cualquier control ActiveX disponible en su equipo. Para usar un control ActiveX, lo agrega a un formulario y establece sus propiedades, escribe controladores para sus eventos o llama a sus métodos. Puede agregar un control ActiveX a un formulario con la barra de herramientas Controles de formularios o con el control OLE Container, o mediante código. Para obtener detalles acerca de cómo agregar un control ActiveX en el Diseñador de formularios, vea Agregar OLE.

Puede crear un control ActiveX en código de la misma forma que crearía cualquier control de Visual FoxPro. Sin embargo, antes de crear el control debe determinar el nombre de la biblioteca de clases del control, que está almacenada en el Registro de Windows. Si no tiene otra forma de determinar el nombre de la biblioteca de clases, use el Diseñador de formularios para crear el control (como se describe en la sección anterior) y, a continuación, obtenga la propiedad OLEClass del control.

Los objetos ActiveX se pueden crear directamente con CREATEOBJECT( ) y no requieren una instancia de un formulario.

Para crear un control ActiveX en código

  1. Llame a CREATEOBJECT( ) para crear un formulario.
  2. Llame al método AddObject del nuevo formulario para agregar el control, especificando olecontrol como la clase. Debe pasar el nombre de la biblioteca de clases del control como tercer parámetro del método AddObject.

Por ejemplo, el programa siguiente crea un formulario nuevo y le agrega un control de esquema:

oMyForm = CREATEOBJECT("form")
oMyForm.AddObject("oleOutline","olecontrol", ;
"MSOutl.Outline")

Después de crear el formulario y el control, puede mostrar el formulario llamando a su método Show y mostrar el control estableciendo su propiedad Visible en verdadero:

oMyForm.oleOutline.Visible = .T.
oMyForm.Show

Algunos controles ActiveX no están diseñados principalmente para su uso de forma interactiva por parte de un usuario. Por ejemplo, un control de tipo cronómetro no admite métodos para la interacción con el usuario. Incluso en este caso, aún puede crear el control en un formulario porque el control normalmente ofrecerá un componente visible predeterminado, como un icono. Con frecuencia, no podrá cambiar o redimensionar el icono.

Si no desea que la aplicación muestre el icono para controles que no interactúan, puede ocultar el control si establece la propiedad Visible de su control OLE Container en falso o si establece su propiedad Left en un valor negativo (como –100) que lo desplace fuera de la parte visible de la pantalla. De forma alternativa, puede colocar el control en un formulario que nunca sea visible (es decir, para el que nunca se llama el método Show). En todos los casos, podrá llamar a los métodos del control como si éste fuese visible.

Vea también

Acceso a bibliotecas externas | Acceso a bibliotecas de vínculos dinámicos | Acceso a la biblioteca de Visual FoxPro | Ampliar Visual FoxPro con bibliotecas externas | Acceso a la API de Visual FoxPro | Agregar OLE | CREATEOBJECT( )


Acceso a bibliotecas de vínculos dinámicos

Si la función que requiere está disponible en una DLL, puede establecer un vínculo con la biblioteca y llamar a sus funciones. Antes de llamar a una función de DLL tiene que determinar su protocolo de llamada, incluidos el nombre de la función, el número y los tipos de datos de sus parámetros y el tipo de datos del valor que devuelve.

En Visual FoxPro, sólo puede usar bibliotecas DLL que se hayan escrito para un entorno de 32 bits. Sin embargo, si necesita acceso a una DLL de 16 bits, puede llamarla mediante funciones disponibles en Foxtools.fll. Para obtener más detalles, vea la ayuda para Foxtools (Foxtools.chm).

Para llamar a una función de DLL

  1. Registre la función de DLL mediante el comando DECLARE - DLL. Los nombres de función distinguen mayúsculas de minúsculas.
    Nota Si especifica WIN32API como nombre de biblioteca, Visual FoxPro busca la función de la DLL de Windows de 32 bits en Kernel32.dll, Gdi32.dll, User32.dll, Mpr.dll y Advapi32.dll.
  2. Llame a la función de igual forma que llamaría a una función de Visual FoxPro.

Por ejemplo, el siguiente programa registra la función GetActiveWindow( ) de la DLL del sistema USER de Windows, que muestra el controlador de la ventana principal de Visual FoxPro. GetActiveWindow( ) no requiere parámetros y devuelve un valor entero:

DECLARE INTEGER GetActiveWindow IN win32api
MESSAGEBOX(STR( GetActiveWindow() ) )

La DLL que contiene la función que registra debe estar disponible en el directorio predeterminado, en los directorios Windows o System, o en la ruta de acceso de DOS.

Si la función que desea llamar tiene el mismo nombre que otra función ya disponible en Visual FoxPro (una función nativa o una función de DLL declarada previamente), puede asignar un alias a la función con el nombre duplicado y, a continuación, llamarla con el alias.

DECLARE INTEGER GetActiveWindow IN win32api AS GetWinHndl
MESSAGEBOX(STR( GetWinHndl() ) )

Las funciones de DLL vinculadas permanecerán disponibles hasta que salga de Visual FoxPro, por lo que sólo tiene que declararlas una vez por sesión. Si no pretende volver a llamar a las funciones de una DLL, puede ejecutar el comando CLEAR DLLS para quitarla de la memoria y liberar recursos.

Nota Ejecutar CLEAR DLLS borra de la memoria todas las funciones de DLL declaradas.

Transferir parámetros a una DLL

Cuando registra una función de DLL, tiene que especificar el número y el tipo de datos de sus parámetros. De forma predeterminada, los datos se pasan por valor. Puede hacer que un parámetro se pase por referencia si incluye un signo at (@) delante del parámetro.

En general, las funciones de DLL siguen las convenciones de tipos de datos usadas en C, que son diferentes de las usadas en Visual FoxPro. Por ejemplo, las funciones de DLL no admiten un tipo de datos Date (fecha) o Currency (moneda). Si los datos que pasa a una función de una DLL están en un tipo de datos no admitido por la función, tiene que convertirlos a un tipo de datos apropiado antes de pasarlos. Por ejemplo, puede convertir una fecha a un formato numérico de fecha Juliana con comandos como el siguiente:

cDate = sys(11, date())
nDate = val( cDate )

Algunas funciones de DLL requieren parámetros más complejos, como estructuras o matrices. Si la función requiere un puntero a una estructura, debe determinar la distribución de la estructura y emularla como una cadena en Visual FoxPro antes de transferirla a la función de DLL o recibirla de ésta. Por ejemplo, la función del sistema de Windows GetSystemTime( ) espera un puntero a una estructura formada por ocho palabras o enteros de 16 bits sin signo que indican el año, el mes, el día, etc. La estructura se define de esta forma:

typedef struct _SYSTEMTIME {
WORD wYear ;
WORD wMonth ;
WORD wDayOfWeek ;
WORD wDay ;
WORD wHour ;
WORD wMinute ;
WORD wSecond ;
WORD wMilliseconds ;
} SYSTEMTIME

Para transferir datos entre Visual FoxPro y la función GetSystemTime( ), tiene que crear un búfer de cadena de 40 bytes (formado inicialmente por espacios) y, a continuación, transferir la dirección de esta cadena a la función para llenarla. Cuando se devuelve la cadena, debe analizarla en incrementos de 2 bytes para extraer los campos individuales de la estructura. El siguiente fragmento muestra cómo podría extraer tres de los campos de la estructura:

DECLARE INTEGER GetSystemTime IN win32api STRING @
cBuff=SPACE(40)
=GetSystemTime(@cBuff)
tYear = ALLTRIM(STR(ASC(SUBSTR(cBuff,2)) *  ;
256 + ASC(SUBSTR(cBuff,1))))
tMonth = ALLTRIM(STR(ASC(SUBSTR(cBuff,4)) * ;
256 + ASC(SUBSTR(cBuff,3))))
tDOW = ALLTRIM(STR(ASC(SUBSTR(cBuff,6)) * ;
256 + ASC(SUBSTR(cBuff,5))))

Para obtener más información, puede examinar el formulario de ejemplo Systime.scx del directorio ...\Samples\Solution\Winapi de Visual FoxPro. Para ver otros ejemplos de cómo pasar parámetros a funciones de DLL, vea el programa Registry.prg que se encuentra en el directorio ...\Samples\Classes de Visual FoxPro.

Si los datos con los que está trabajando en Visual FoxPro se encuentran en una matriz, debe crear un bucle en la matriz y concatenar los datos en una única cadena que represente una matriz de tipo C antes de transferirlos a la función de DLL. Si la función de Windows espera valores de 16 bits o de 32 bits, tiene que convertir los valores a sus equivalentes hexadecimales antes de concatenarlos en una cadena. Al transferir la cadena que contiene los datos de la matriz, Visual FoxPro pasa la dirección de la variable de tipo cadena a la DLL, que puede manipularla como una matriz. Para ver un ejemplo de esto, vea el formulario de ejemplo Syscolor.scx que se encuentra en el directorio ...\Samples\Solution\Winapi de Visual FoxPro.

Vea también

Acceso a controles y objetos ActiveX | Acceso a la biblioteca de Visual FoxPro | Ampliar Visual FoxPro con bibliotecas externas | Acceso a la API de Visual FoxPro | DECLARE - DLL | CLEAR DLLS


Acceso a la biblioteca de Visual FoxPro

Como una DLL, una biblioteca de Visual FoxPro (archivo .fll) contiene funciones que puede llamar de la misma manera que haría con cualquier otra función. Como los archivos .fll están creados específicamente para llamarlos desde Visual FoxPro, generalmente es más fácil transferir parámetros a funciones .fll y desde estas funciones.

Para usar una biblioteca de Visual FoxPro, se especifica el nombre del archivo .fll y, a continuación, se llama normalmente a la función. A diferencia del registro de funciones de DLL, no tiene que registrar las funciones individuales del archivo .fll, ni tiene que especificar información acerca de los parámetros o los tipos de datos usados por la función.

Nota Si quiere usar una biblioteca .fll de una versión anterior de Visual FoxPro, hay que recompilar la biblioteca de modo que funcione con Visual FoxPro versión 5.0.

Para llamar a una función .fll

  1. Registre la función .fll ejecutando el comando SET LIBRARY.
  2. Llame a cualquiera de las funciones de la biblioteca de la misma manera en que lo haría para cualquier función.

Por ejemplo, el siguiente programa llama a una función de la biblioteca Foxtools.fll para determinar qué tipo de unidad es la unidad C:.

SET LIBRARY TO "C:\Program Files\Microsoft ;
Visual FoxPro 8.0\Foxtools.fll"
? DriveType("C:")

Si tiene que registrar más de un archivo .fll, incluya la palabra clave ADDITIVE en el comando SET LIBRARY. Si no lo hace, se borrará el archivo .fll previamente registrado y se reemplazará por el último registrado.

Si un nombre de función es incompatible con el de otra función ya disponible en Visual FoxPro, la última función definida tiene la prioridad. Si el nombre de una función de una biblioteca vinculada coincide con el nombre de una función intrínseca de Visual FoxPro, la función de Visual FoxPro tiene prioridad.

Las funciones de un archivo .fll permanecerán disponibles hasta que salga de Visual FoxPro, por lo que sólo tiene que registrarlas una vez por sesión. Si no pretende volver a llamar a las funciones de un archivo .fll, ejecute RELEASE LIBRARY, RELEASE ALL, o SET LIBRARY TO para eliminarlas de la memoria y liberar recursos.

Vea también

Acceso a bibliotecas de vínculos dinámicos | Acceso a controles y objetos ActiveX | Acceso a bibliotecas externas | Ampliar Visual FoxPro con bibliotecas externas | Acceso a la API de Visual FoxPro


Acceso a la API de Visual FoxPro

Si Visual FoxPro no incluye las características que requiere para su aplicación, puede ampliar sus posibilidades creando un control Microsoft ActiveX (archivo .ocx) o una biblioteca (archivo .fll) específicos de Visual FoxPro.

En esta sección

Crear bibliotecas u objetos ActiveX
Para ampliar las posibilidades de Visual FoxPro, cree programas que realicen las tareas que requiere su aplicación.
Agregar llamadas a la API de Visual FoxPro
Para integrar el programa del usuario con Visual FoxPro, puede llamar a las rutinas de la API de Visual FoxPro.
Transmitir y recibir parámetros
Cuando Visual FoxPro llama al programa del usuario, éste puede recibir parámetros.
Devolver un valor a Visual FoxPro
El método que se usa para devolver un valor desde un programa a Visual FoxPro depende de si está creando un control Microsoft ActiveX o una biblioteca FLL.
Transferir parámetros a funciones de la API de Visual FoxPro
A menudo, las rutinas de la API de Visual FoxPro requieren parámetros de una estructura de datos concreta de Visual FoxPro.
Acceso a variables y campos de Visual FoxPro
Puede tener acceso a los valores de variables o campos de Visual FoxPro en el control ActiveX o función FLL, para leerlos o establecerlos.
Administrar la memoria
La API de Visual FoxPro proporciona acceso directo al administrador de memoria dinámica de Visual FoxPro.
Generar y depurar bibliotecas y controles ActiveX
Después de crear un proyecto, ya está preparado para generarlo y depurarlo.

Secciones relacionadas

Acceso a las APIs
Si su aplicación exige requisitos que no pueden cumplir las características integradas en Visual FoxPro, puede ampliar el programa con bibliotecas externas, como controles Microsoft ActiveX o bibliotecas de vínculos dinámicos (DLL).
Ampliar Visual FoxPro con bibliotecas externas
Puede agregar fácilmente controles ActiveX (archivos .ocx) a su aplicación, lo que le ofrece nuevos objetos que puede usar en formularios para crear subclases y administrar su forma de trabajar con controles nativos de Visual FoxPro. Además, puede establecer un vínculo con una biblioteca externa como una DLL y llamar a las funciones de la biblioteca para usarlas en sus propios programas.
Crear bibliotecas API
Material de referencia acerca de las rutinas de bibliotecas API, los eventos del sistema y los códigos de tecla.


Crear bibliotecas u objetos ActiveX

Puede ampliar las posibilidades de Visual FoxPro creando programas en C o C++ que cumplan tareas necesarias para su aplicación. Por ejemplo, si la aplicación requiere acceso directo a las funciones de Windows, puede escribir un programa de C o C++ que haga las llamadas a la API de Windows y, a continuación, devuelva la información a Visual FoxPro.

Puede crear tres tipos de programas que tengan acceso a la API de Visual FoxPro:

  • Un control ActiveX (archivo .ocx).
  • Un objeto COM.
  • Una DLL específica de Visual FoxPro. Como la DLL sólo se puede llamar desde Visual FoxPro, se le suele dar la extensión .fll.

Cada tipo de programa tiene sus ventajas. Un control ActiveX:

  • Se puede tener acceso a éstos mediante técnicas estándar orientadas a objetos, como establecer sus propiedades y llamar a sus métodos.
  • Se puede convertir en subclase y se puede pasar por alto sus métodos.
  • Está encapsulado y se puede llamar (crear instancias) varias veces sin administración compleja del entorno para conservar estados de usuarios.
  • La transferencia de parámetros es más sencilla.
  • También se puede llamar desde otros programas para Windows, si lo programa para esto.

Las ventajas de los objetos COM son:

  • Se puede tener acceso a estos mediante técnicas estándar orientadas a objetos, como establecer sus propiedades y llamar a sus métodos.
  • Se pueden pasar por alto sus métodos.
  • Está encapsulado y se puede llamar (crear instancias) varias veces sin administración compleja del entorno para conservar estados de usuarios.
  • La transferencia de parámetros es más sencilla.
  • También se puede llamar desde otros programas para Windows, si lo programa para esto.

Por otra parte, una biblioteca.fll:

  • Puede resultarle familiar si ha utilizado versiones anteriores de Visual FoxPro.

Vea también

Acceso a la API de Visual FoxPro | Crear bibliotecas API | Crear un objeto ActiveX básico | Crear una biblioteca FLL básica | Ampliar Visual FoxPro con bibliotecas externas | Agregar llamadas a la API de Visual FoxPro


Crear un objeto ActiveX básico

Puede crear objetos COM con ActiveX Template Library, proporcionada con Microsoft® Visual C++.

Los controles Microsoft ActiveX específicos de Visual FoxPro se crean de la misma manera que cualquier control similar. La mayor parte de los compiladores de C++ le permiten crear la estructura del control y pueden crearse con Microsoft Visual Basic Control Creation Edition.

La sección siguiente describe los pasos para crear un control ActiveX con Microsoft Visual C++ para utilizarlo con Visual FoxPro.

Para crear un proyecto para un control ActiveX

  1. Inicie Microsoft Visual C++.
  2. En el menú Archivo, elija Nuevo.
  3. En el cuadro de diálogo Nuevo, elija Área de trabajo del proyecto.
  4. En el cuadro de diálogo Nueva área de trabajo del proyecto, especifique un nombre de proyecto.
  5. En la lista Tipo, elija OLE ControlWizard.
  6. Elija Crear y, a continuación, siga los pasos del asistente.

Cuando el asistente haya terminado puede generar inmediatamente el control ActiveX. Sin embargo, también tendrá que definir propiedades y métodos para el control.

Para agregar propiedades y métodos al control ActiveX

  1. En el menú Ver, elija ClassWizard.
  2. Elija la ficha OLEAutomation.
  3. Elija Agregar método o Agregar propiedad.
  4. Escriba el nombre, el parámetro y la otra información necesaria para el elemento que está creando y, a continuación, elija Aceptar.
  5. Elija Editar código para mostrar el editor y, a continuación, escriba el código que define la propiedad o método que está creando.

Por ejemplo, para crear una propiedad Version que devuelva la versión del archivo .ocx como un número entero (como 101), se crea la propiedad con un tipo de retorno long y se agrega código similar al siguiente:

#define VERSION 101
long CPyCtrl::GetVersion()
{
// set the version number here
return VERSION;
}

Como el número de versión suele ser de sólo lectura, no tiene que crear una función SetVersion( ).

Vea también

Crear bibliotecas u objetos ActiveX | Crear una biblioteca FLL básica | Acceso a la API de Visual FoxPro | Ampliar Visual FoxPro con bibliotecas externas | Agregar llamadas a la API de Visual FoxPro


Crear una biblioteca FLL básica

Como una biblioteca FLL es esencialmente una DLL que llama a la API de Visual FoxPro, puede crear una biblioteca FLL siguiendo los pasos siguientes en el entorno de programación para crear una DLL.

Para crear un proyecto para la biblioteca FLL

  1. Inicie Microsoft Visual C/C++.
  2. En el menú Archivo, elija Nuevo.
  3. En el cuadro de diálogo Nuevo, elija Áreade trabajo del proyecto.
  4. En el cuadro de diálogo Nueva área de trabajo del proyecto, especifique un nombre de proyecto.
  5. En la lista Tipo, elija Biblioteca de vínculos dinámicos (DLL).

Después de crear la estructura de la DLL básica, agregue las funciones que desee llamar desde Visual FoxPro. Las siguientes secciones proporcionan estructuras para crear funciones en C y C++.

Establecer una plantilla de biblioteca

Cada biblioteca de funciones que cree tiene la misma estructura básica. Si utiliza una plantilla para la estructura, lo único que tiene que hacer es rellenar los espacios en blanco apropiados para su rutina de biblioteca específica.

Hay cinco elementos en un plantilla de biblioteca de Visual FoxPro:

  1. Instrucción #include
  2. Definición de función
  3. Código de función
  4. Estructura FoxInfo
  5. Estructura FoxTable

Una plantilla de ejemplo en C

Puede usar la siguiente plantilla para crear bibliotecas escritas en C:

#include <Pro_ext.h>
void Internal_Name(ParamBlk *parm)
{
// function code goes here.
}
FoxInfo myFoxInfo[] = {
{"FUNC_NAME", (FPFI) Internal_Name, 0, ""},
};
FoxTable _FoxTable = {
(FoxTable *)0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Una plantilla de ejemplo en C++

Para rutinas en C++, puede usar la siguiente plantilla. Esta plantilla se diferencia de la plantilla en C porque declara la estructura FoxTable como externa:

#include <Pro_ext.h>
void Internal_Name(ParamBlk  *parm)
{
// function code goes here.
}
FoxInfo myFoxInfo[] = {
{"FUNC_NAME", (FPFI) Internal_Name, 0, ""},
};
extern "C" {
FoxTable _FoxTable = {
(FoxTable *)0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};
}

Usar la plantilla

Para usar el archivo de encabezado y crear una biblioteca compilada, necesita:

  • El archivo de encabezado Pro_ext.h. Puede imprimir este archivo para ver las declaraciones de función, definiciones de tipos y estructuras utilizadas en la API de Visual FoxPro.
  • El archivo Winapims.lib.

Estos dos archivos se instalan en el subdirectorio API cuando instala Visual FoxPro.

La definición de función devuelve void y espera el siguiente parámetro: ParamBlk *parm. La estructura ParamBlk se trata en Transmitir y recibir parámetros.

Además de los archivos que se han mostrado, los únicos elementos necesarios de una biblioteca de Visual FoxPro son las estructuras FoxInfo y FoxTable.

Usar las estructuras FoxInfo y FoxTable

Las funciones de biblioteca del usuario se comunican con Visual FoxPro a través de la estructura FoxInfo. De esta estructura, Visual FoxPro determina el nombre de función y el número y tipo de parámetros. La estructura FoxTable es una lista vinculada que sigue las estructuras FoxInfo. Vea Pro_ext.h en el directorio API de Visual FoxPro para consultar las definiciones de estructura FoxInfo y FoxTable.

Estructura FoxInfo

La estructura FoxInfo es el vehículo usado para comunicar nombres de funciones y descripciones de parámetros entre Visual FoxPro y la biblioteca del usuario. Una estructura FoxInfo genérica tiene la siguiente apariencia:

FoxInfo arrayname[ ] = {    {funcName1, FPFI function1, parmCount1, parmTypes1}    {funcName2, FPFI function2, parmCount2, parmTypes2}       . . .    {funcNameN, FPFI functionN, parmCountN, parmTypesN} };

Los marcadores se definen así:

arrayname
Variable de tipo FoxInfo. Observe que puede incluir varias líneas de estructura FoxInfo en esta matriz.
funcName
Contiene el nombre que el usuario de Visual FoxPro llama para invocar la función.
function
Dirección de la rutina del lenguaje C. Es el nombre exacto (se distingue entre mayúsculas y minúsculas) utilizado para definir la función.
parmCount
Especifica el número de parámetros descrito en la cadena parmTypes o uno de los siguientes valores de indicadores.
Valor | Descripción
INTERNAL | Especifica que la función no se puede llamar directamente desde Visual FoxPro.
CALLONLOAD | Especifica que la rutina se va a llamar cuando se cargue la biblioteca. CALLONLOAD no puede llamar a ninguna rutina que devuelva resultados a Visual FoxPro.
CALLONUNLOAD | Especifica que la rutina se va a llamar cuando la biblioteca se descargue o cuando se ejecute el comando QUIT de Visual FoxPro. CALLONUNLOAD no puede llamar a ninguna rutina que devuelva resultados a Visual FoxPro.
parmTypes
Describe el tipo de datos de cada parámetro. La tabla siguiente muestra los valores válidos para parmTypes.
Valor Descripción
""
 Ningún parámetro
"?"
 Se puede pasar cualquier tipo. En el cuerpo de la función, tendrá que comprobar el tipo del parámetro pasado
"C"
 Parámetro de tipo Carácter
"D"
 Parámetro de tipo Fecha
"I"
 Parámetro de tipo Entero
"L"
 Parámetro de tipo Lógico
"N"
 Parámetro de tipo Numérico
"R"
 Referencia
"T"
 Parámetro de tipo Fechahora
"Y"
 Parámetro de tipo Moneda
"O"
 Parámetro de tipo Objeto

Incluya un valor de tipo para cada parámetro transferido a la biblioteca. Por ejemplo, si crea una función que acepta un parámetro de tipo Carácter y de tipo Numérico, sustituya parmType por "CN".

Nota Para indicar que un parámetro es opcional, ponga como prefijo un punto. Sólo se pueden omitir los parámetros finales.

La siguiente estructura FoxInfo define una biblioteca con una función (llamada internamente dates y a la que se tiene acceso externo como DATES) que acepta un parámetro de tipo Carácter:

FoxInfo myFoxInfo[] = {
{ "DATES", (FPFI) dates, 1, "C" }
};

Cuando haya compilado la biblioteca con esta estructura FoxInfo y la haya cargado en Visual FoxPro con el comando SET LIBRARY TO, puede llamar a esta función en Visual FoxPro con la siguiente línea de código:

=DATES("01/01/95")

Estructura FoxTable

La estructura FoxTable es una lista vinculada que hace un seguimiento de todas las estructuras FoxInfo que tiene para una biblioteca determinada:

FoxTable _FoxTable = {nextLibrary, infoCount,infoPtr};

siendo la definición de los indicadores la siguiente:

nextLibrary
Un puntero usado internamente por Visual FoxPro; se debe inicializar en 0.
infoCount
El número de rutinas externas de Visual FoxPro definidas en esta biblioteca.
infoPtr
La dirección del primer elemento de una matriz de estructuras FoxInfo. Este nombre tiene que coincidir con el nombre listado en la instrucción FoxInfo.

A continuación se muestra un ejemplo de instrucción FoxTable. Si su nombre de matriz FoxInfo es myFoxInfo, nunca tendrá que cambiar esta instrucción:

FoxTable _FoxTable = {
(FoxTable  *) 0,
sizeof( myFoxInfo) / sizeof( FoxInfo ),
myFoxInfo
};

Visual FoxPro detecta errores de protección general (General Protection Faults, GPF) en los controles ActiveX situados en un formulario o en instancias de objetos COM creadas en Visual FoxPro. Ahora se trata un GPF de un control ActiveX o de un objeto COM como errores detectables de Visual FoxPro (Error de excepción OLE: "nombre" El objeto OLE puede estar dañado (Error 1440) - El objeto OLE puede estar dañado).

Vea también

Crear un objeto ActiveX básico | Crear bibliotecas API | Agregar llamadas a la API de Visual FoxPro | Acceso a la API de Visual FoxPro | Ampliar Visual FoxPro con bibliotecas externas | Transmitir y recibir parámetros | SET LIBRARY TO


Agregar llamadas a la API de Visual FoxPro

Para integrar el programa del usuario con Visual FoxPro, puede llamar a las rutinas de la API de Visual FoxPro. Estas rutinas de la API son funciones que puede llamar desde cualquier programa C o C++, incluido un archivo .ocx o .fll, que le proporcionan acceso a variables, le permiten administrar operaciones de bases de datos y realizar muchas otras tareas específicas de Visual FoxPro.

La tabla siguiente muestra las categorías generales de llamadas a la API disponibles en Visual FoxPro. Para obtener detalles acerca de funciones particulares de la API, vea Rutinas externas de biblioteca API ordenadas alfabéticamente o Rutinas externas de biblioteca API ordenadas por categoría.

Para usar las rutinas de la API de Visual FoxPro, tiene que incluir el archivo Pro_ext.h, disponible en el directorio API de Visual FoxPro. Este archivo incluye los prototipos para las funciones y estructuras que le permiten compartir información con Visual FoxPro.

Si está programando un control ActiveX, también tiene que agregar llamadas para inicializar y borrar la API.

Para agregar rutinas de la API de Visual FoxPro a su objeto ActiveX

  1. Use #INCLUDE para incluir el archivo Pro_ext.h junto con otros archivos de encabezado necesarios.
  2. En el Constructor (método Init) del control, llame a _OCXAPI( ) para inicializar la interfaz para comunicarse con Visual FoxPro mediante este código:
    _OCXAPI(AfxGetInstanceHandle(),DLL_PROCESS_ATTACH);
  3. Incluya llamadas a la API de Visual FoxPro como lo requiera su objeto.
  4. En el Destructor (método Destroy) del objeto, vuelva a llamar a _OCXAPI( ) para liberar el proceso creado en el Constructor, mediante este código:
    _OCXAPI(AfxGetInstanceHandle(),DLL_PROCESS_DETACH);

Para ver un ejemplo de archivo .fll que incluya llamadas a la API de Visual FoxPro, vea los programas de ejemplo que se encuentran en el directorio \Api\Samples y que tengan extensión C: EVENT.C, HELLO.C, etc.

Si usa llamadas a la API de Visual FoxPro en su control ActiveX, su objeto COM o su biblioteca .FLL, el código que contiene las llamadas es incompatible con otras aplicaciones. Es posible que entonces desee generar una o más pruebas en el programa para determinar si Visual FoxPro puede llamar al objeto.

Por ejemplo, cuando crea un control ActiveX con Microsoft Foundation Classes, puede cambiar el código del constructor del control para que incluya una prueba y avise al usuario si se ha llamado al control desde un programa distinto de Visual FoxPro:

if (!_OCXAPI(AfxGetInstanceHandle(),DLL_PROCESS_ATTACH))
{
::MessageBox(0,"This OCX can only be hosted by Visual Foxpro","",0);
//Here you can do whatever you want when the host isn't VFP:
// you might want to reject loading or you
// might want to set a property
// saying that the host isn't VFP and the control will use other
// means to achieve it's purpose.
}

Si crea un control ActiveX con Microsoft ActiveX Template Library, utilice el código siguiente:

if (!_OCXAPI(_Module.GetModuleInstance(),DLL_PROCESS_ATTACH))
{
::MessageBox(0,"This OCX can only be hosted by Visual Foxpro","",0);
//Here you can do whatever you want when the host isn't VFP:
// you might want to reject loading or you
// might want to set a property
// saying that the host isn't VFP and the control will use other
// means to achieve it's purpose.
}

En este ejemplo, el control no finaliza y seguirá ejecutándose después de que el usuario haya recibido el mensaje. La estrategia que elija dependerá de cómo crea que se va a usar el control. Por ejemplo, si detecta que se está usando el control fuera de Visual FoxPro, puede establecer un indicador que realiza una prueba en cada punto del control donde llama a la API de Visual FoxPro. Si el indicador muestra que el control está fuera de Visual FoxPro, puede ramificar la llamada de la API como forma alternativa de realizar la misma tarea.

Vea también

Crear una biblioteca FLL básica | Acceso a la API de Visual FoxPro | Transmitir y recibir parámetros | Devolver un valor a Visual FoxPro | Ampliar Visual FoxPro con bibliotecas externas | Crear bibliotecas API


Transmitir y recibir parámetros

Cuando Visual FoxPro llama al programa del usuario, éste puede recibir parámetros. Por ejemplo, un control ActiveX puede recibir parámetros cuando se llama a uno de sus métodos. De forma similar, un programa de Visual FoxPro puede llamar a una función de la biblioteca FLL y pasarle parámetros.

Visual FoxPro puede transferir parámetros al programa del usuario por valor o por referencia. De forma predeterminada, los parámetros respetan la configuración realizada con SET UDFPARMS. Otras variables (como matrices o campos) y expresiones se pasan por valor.

Para obligar a que un parámetro se pase por referencia, tiene que usar como prefijo de la referencia de variable el operador @. Para forzar la transferencia por valor de un parámetro, inclúyalo entre paréntesis.

Nota En Visual FoxPro, los elementos de matriz individuales siempre se pasan por valor. Cuando SET UDFPARMS se establece en VALUE y no se especifica ningún elemento de matriz, el nombre de matriz se refiere al primer elemento de la matriz (a no ser que tenga el prefijo @).

Como los controles ActiveX y los objetos COM son programas estándar de Windows, no es necesario ningún mecanismo especial para transferir parámetros entre Visual FoxPro y el programa del usuario. Puede escribir el programa como si estuviera recibiendo parámetros desde cualquier programa escrito en C o C++.

En contraste, las funciones de una biblioteca FLL usan la estructura FoxInfo para recibir datos desde Visual FoxPro. La estructura FoxInfo muestra sus funciones de biblioteca y el número y tipo de parámetros que esperan. Por ejemplo, la siguiente estructura FoxInfo pertenece a una biblioteca con una función, internamente llamada dates, que acepta un parámetro Character:

FoxInfo myFoxInfo[] = {
{ "DATES", (FPFI) dates, 1, "C" }
};

Las funciones que defina en sus bibliotecas reciben realmente un único parámetro: un puntero al bloque de parámetros. Este bloque de parámetros, definido en la estructura ParamBlk, guarda toda la información acerca de los parámetros que se pasaron en la llamada de función de Visual FoxPro. La declaración de función tiene el siguiente formato:

void function_name(ParamBlk *parm)

Por ejemplo, la definición de función para dates es:

void dates(ParamBlk *parm)

La estructura de ParamBlk se compone de un entero que representa el número de parámetros, seguido inmediatamente por una matriz de uniones de parámetros. La definición de estructura se incluye en Pro_ext.h:

/* A parameter list to a library function.      */
typedef struct {
short int pCount;      /* number of parameters passed */
Parameter p[1];         /* pCount parameters */
} ParamBlk;

El parámetro typedef incluido en la estructura ParamBlk es una unión de una estructura Value y una estructura Locator. La llamada por valor se controla mediante una estructura Value; la llamada por referencia se controla mediante una estructura Locator. Estas estructuras se usan para tener acceso a parámetros pasados a la función del usuario cuando Visual FoxPro la llama.

La siguiente información sale del archivo Pro_ext.h y muestra la definición del tipo Parameter:

/* A parameter to a library function.         */
typedef union {
Value val;
Locator loc;
} Parameter;

Definir la estructura Value

Si se pasa por valor un parámetro a la función, use la estructura Value para tener acceso al mismo. La siguiente definición de estructura Value se extrae del archivo Pro_ext.h:

// An expression's value.
Typedef struct {
char         ev_type;
char         ev_padding;
short         ev_width;
unsigned      ev_length;
long         ev_long;
double         ev_real;
CCY         ev_currency;
MHANDLE      ev_handle;
ULONG         ev_object;
} Value;

Campos de la estructura Value

La siguiente tabla es una guía para los valores que puede pasar a la estructura Value y recibir de ésta para distintos tipos de datos. Sólo los campos de la estructura mostrados para un tipo de datos se usan para ese tipo de datos.

Contenido de una estructura Value para distintos tipos de datos

Tipo de datos Campo de estructura Valor
Character
ev_type
 ‘C’
ev_length
 longitud de cadena
ev_handle
 MHANDLE a cadena
Numérico
ev_type
 ‘N’
ev_width
 Ancho de presentación
ev_length
 Posiciones decimales
ev_real
 Precisión doble
Integer
ev_type
 ‘I’
ev_width
 Ancho de presentación
ev_long
 Entero largo
Date
ev_type
 ‘D’
ev_real
 Fecha1
Date Time
ev_type
 ‘T’
ev_real
 Fecha + (segundos/86400.0)
Currency
ev_type
 ‘Y’
ev_width
 Ancho de presentación
ev_currency
 Valor2 de tipo Currency
Logical
ev_type
 ‘L’
ev_length
 0 ó 1
Memo
ev_type
 ‘M’
ev_wdith
 FCHAN
ev_long
 Longitud de campo memo
ev_real
 Desplazamiento de campo memo
General
ev_type
 ‘G’
ev_wdith
 FCHAN
ev_long
 Longitud de campo general
ev_real
 Desplazamiento de campo general
Object
ev_type
 ‘O’
ev_object
 Identificador de objeto
Null
ev_type
 ‘0’ (cero)
ev_long
 Tipo de datos

1. La fecha está representada como un número de día Juliano de coma flotante de doble precisión calculado mediante el algoritmo 199 de Collected Algorithms de la ACM.
2. El valor de tipo Currency es un entero largo, con una coma decimal implícita delante de los cuatro últimos dígitos.

Nota ev_length es el único indicador verdadero de la longitud de una cadena. La cadena no puede tener un terminador nulo porque no puede contener caracteres nulos incrustados.

Definir la estructura Locator

Use la estructura Locator para manipular parámetros pasados por referencia. La siguiente definición de estructura Locator se extrae del archivo Pro_ext.h:

typedef struct {
char  l_type;
short l_where, /* Database number or -1 for memory */
l_NTI,      /* Variable name table offset*/
l_offset,  /* Index into database*/
l_subs,  /* # subscripts specified 0 <= x <= 2 */
l_sub1, l_sub2; /* subscript integral values */
} Locator;

Campos de estructura Locator

La tabla siguiente es una guía acerca de los campos de la estructura Locator.

Campo Locator Uso del campo
l_type
 'R'
l_where
 Número de tabla que contiene este campo, o – 1 para una variable.
l_NTI
 Índice de tabla de nombres. Uso interno de Visual FoxPro.
l_offset
 Número de campo de tabla. Uso interno de Visual FoxPro.
l_subs
 Sólo para variables, el número de subíndices (0 – 2).
l_sub1
 Sólo para variables, el primer subíndice si l_subs no es 0.
l_sub2
 Sólo para variables, el segundo subíndice si l_subs es 2.
Nota Es una buena práctica de programación comprobar el tipo de parámetro de ev_type para ayudarle a determinar a qué campos se tiene acceso desde la estructura Value.

Un ejemplo de parámetros de acceso a una biblioteca FLL

El siguiente ejemplo usa StrCpy( ) para devolver a Visual FoxPro un tipo Carácter que es la concatenación de sus dos parámetros Character. Observe que aunque el controlador de la estructura Value de cada parámetro se usa como memoria de trabajo para realizar la concatenación, los cambios a esta asignación de memoria no afectan al argumento de Visual FoxPro que se ha pasado por valor.

#include <Pro_ext.h>
Example(ParamBlk *parm)
{
// make the paramBlk structure easier
// to manage by using #define shortcuts
#define p0 (parm->p[0].val)
#define p1 (parm->p[1].val)
// make sure there is enough memory
if (!_SetHandSize(p0.ev_handle, p0.ev_length + p1.ev_length))
_Error(182); // "Insufficient memory"
// lock the handles
_HLock(p0.ev_handle);
_HLock(p1.ev_handle);
// convert handles to pointers and make sure the
// strings are null-terminated
((char *)_HandToPtr(p0.ev_handle))[p0.ev_length] = '\0';
((char *)_HandToPtr(p1.ev_handle))[p1.ev_length] = '\0';
// concatenate strings using the API function _StrCpy
_StrCpy((char *)_HandToPtr(p0.ev_handle) + p0.ev_length,
_HandToPtr(p1.ev_handle));
// return the concatenated string to Visual FoxPro
_RetChar(_HandToPtr(p0.ev_handle));
// unlock the handles
_HUnLock(p0.ev_handle);
_HUnLock(p1.ev_handle);
}
FoxInfo myFoxInfo[] = {
{"STRCAT", Example, 2, "CC"},
};
FoxTable _FoxTable = {
(FoxTable *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

Agregar llamadas a la API de Visual FoxPro | Devolver un valor a Visual FoxPro | Acceso a la API de Visual FoxPro | Transferir parámetros a funciones de la API de Visual FoxPro | Ampliar Visual FoxPro con bibliotecas externas | Crear bibliotecas API


Devolver un valor a Visual FoxPro

El método que se usa para devolver un valor desde un programa a Visual FoxPro depende de si está creando un control ActiveX o una biblioteca FLL.

Devolver un valor desde un control ActiveX

Para devolver un valor desde un control ActiveX a Visual FoxPro, use la instrucción RETURN en el control, pasando un único valor, como en el siguiente ejemplo:

#define VERSION 101
// other code here
long CPyCtrl::GetVersion()
{
// set the version number here in variable fVersion
return VERSION;
}

Devolver un valor desde una biblioteca FLL

Para devolver valores desde una biblioteca FLL, use funciones de la API, no comandos nativos de C o C++. Las siguientes funciones le permiten devolver valores a Visual FoxPro.

Nota No use la siguiente función de la API para devolver un valor desde un archivo .ocx; use la instrucción RETURN. Las funciones de devolución de la API sólo deben usarse en bibliotecas FLL.
Función | Descripción
_RetChar(char *string) | Establece el valor devuelto de la función en una cadena que termina en carácter nulo.
_RetCurrency(CCY cval, int width) | Establece el valor devuelto de la función en un valor de tipo Currency.
_RetDateStr(char *string) | Establece el valor devuelto de la función en una fecha. La fecha se especifica en el formato dd/mm/aa[aa].
_RetDateTimeStr(char *string) | Establece el valor devuelto de la función en un valor de fecha y hora especificado en el formato mm/dd/aa[aa] hh:mm:ss.
_RetFloat(double flt, int width, int dec) | Establece el valor devuelto de la función en un valor de tipo Float.
_RetInt(long ival, int width) | Establece el valor devuelto de la función en un valor de tipo Numérico.
_RetLogical(int flag) | Establece el valor devuelto de una función en un valor de tipo Logical. Cero se considera FALSE. Cualquier valor distinto de cero se considera TRUE.
_RetVal( ) | Pasa una estructura Value completa de Visual FoxPro; se puede devolver cualquier tipo de datos de Visual FoxPro excepto memo. Tiene que llamar a _RetVal( ) para devolver una cadena que contiene incrustados caracteres nulos o para devolver un valor .NULL.
Nota Para devolver el valor de un tipo de datos de objeto, use la función _RetVal(), rellenando el campo ev_object de la estructura Value.

El siguiente ejemplo, Sum, acepta una referencia a un campo de tipo Numérico de una tabla y usa _RetFloat para devolver la suma de los valores del campo:

#include <Pro_ext.h>
Sum(ParamBlk *parm)
{
// declare variables
double tot = 0, rec_cnt;
int i = 0, workarea = -1; // -1 is current workarea
Value val;
// GO TOP
_DBRewind(workarea);
// Get RECCOUNT( )
rec_cnt = _DBRecCount(workarea);
// Loop through table
for(i = 0; i < rec_cnt; i++)
{
//Place value of the field into the Value structure
_Load(&parm->p[0].loc, &val);
// add the value to the cumulative total
tot += val.ev_real;
// SKIP 1 in the workarea
_DBSkip(workarea, 1);
}
// Return the sum value to Visual FoxPro
_RetFloat(tot, 10, 4);
}
// The Sum function receives one Reference parameter
FoxInfo myFoxInfo[] = {
{"SUM", Sum, 1,"R"}
};
FoxTable _FoxTable = {
(FoxTable *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Suponiendo que haya un campo de tipo Numérico denominado amount en la tabla abierta actualmente, la siguiente línea de código de un programa de Visual FoxPro llama a la función:

? SUM(@amount)

Vea también

Transmitir y recibir parámetros | Transferir parámetros a funciones de la API de Visual FoxPro | Acceso a la API de Visual FoxPro | Ampliar Visual FoxPro con bibliotecas externas | Acceso a variables y campos de Visual FoxPro | Crear bibliotecas API


Transferir parámetros a funciones de la API de Visual FoxPro

A menudo, las rutinas de la API de Visual FoxPro requieren parámetros de una estructura de datos concreta de Visual FoxPro. Las siguientes secciones proporcionan una lista de tipos de datos y estructuras de datos adicionales de Visual FoxPro. Para consultar las definiciones de tipos y las definiciones de estructuras reales, consulte el archivo Pro_ext.h.

Tipos de datos de la API de Visual FoxPro

Los siguientes tipos de datos se usan en las rutinas de la API de Visual FoxPro.

Tipo de datos Descripción
EDLINE
 El número de una línea de un archivo abierto en una ventana de edición. La primera línea es 1.
EDPOS
 La posición de desplazamiento de un carácter de un archivo abierto en una ventana de edición. La posición de desplazamiento del primer carácter del archivo o campo memo es 0.
FCHAN
 Canal de archivo. A cada archivo abierto por Visual FoxPro, o mediante la API con _FCreate( ) y _FOpen( ), se asigna un FCHAN.
FPFI
 Un puntero de 32 bits a una función que devuelve un entero.
ITEMID
 Un identificador único asignado a un comando individual de un menú.
MENUID
 Un identificador único asignado a un menú.
MHANDLE
 Un identificador único dado a cada bloque de memoria asignado por Visual FoxPro o asignado mediante la API con _AllocHand( ). Se puede eliminar la referencia a su puntero con _HandToPtr( ).
NTI
 Índice de tabla de nombres. Cada variable y nombre de campo de tabla tiene una entrada en esta tabla.
WHANDLE
 Controlador de ventana. Identificador único asignado a cada ventana abierta por Visual FoxPro o abierta mediante la API con _WOpen( ).
Nota Como los punteros FAR no son apropiados para compiladores de 32 bits, las instrucciones #define de Pro_ext.h redefinen FAR, _far y __far como valores nulos.

Estructuras de datos de la API de Visual FoxPro

Las estructuras de datos principales usadas en la biblioteca de la API de Visual FoxPro se muestran en la tabla siguiente.

Estructura Descripción
EventRec
 Estructura usada para describir qué está haciendo el sistema en un instante determinado.
FoxInfo
 Se usa en las bibliotecas FLL para establecer una comunicación entre Visual FoxPro y el programa del usuario; no se usa en los archivos .ocx.
FoxTable
 Se usa en las bibliotecas FLL para establecer una comunicación entre Visual FoxPro y el programa del usuario; no se usa en los archivos .ocx.
Locator
 Estructura usada para tener acceso a valores de parámetros (FLL) o variables o campos de Visual FoxPro (FLL y ocx).
ParamBlk
 Se usa en las bibliotecas FLL para comunicarse entre Visual FoxPro y el programa del usuario; no se usa en los archivos .ocx.
Parameter
 Se usa en las bibliotecas FLL para establecer una comunicación entre Visual FoxPro y el programa del usuario; no se usa en los archivos .ocx.
Point
 Estructura que define las coordenadas verticales y horizontales de un punto único de la pantalla. Las coordenadas se especifican en filas y columnas.
Rect
 Estructura que define las coordenadas de un rectángulo en la pantalla. La esquina superior izquierda del rectángulo se define mediante (top,left) y la esquina inferior derecha mediante (bottom-1,right-1). Las coordenadas se especifican en filas y columnas.
Value
 Estructura usada para tener acceso a valores de parámetros (FLL) o variables o campos de Visual FoxPro (FLL y OCX).

Vea también

Devolver un valor a Visual FoxPro | Acceso a variables y campos de Visual FoxPro | Acceso a la API de Visual FoxPro | Ampliar Visual FoxPro con bibliotecas externas | Administrar la memoria | Crear bibliotecas API


Acceso a variables y campos de Visual FoxPro

Puede tener acceso a los valores de variables o campos de Visual FoxPro en el control ActiveX o función FLL, para leerlos o establecerlos. Además, puede crear nuevas variables a las que se puede tener acceso desde Visual FoxPro.

Las variables y los campos están disponibles en Visual FoxPro en una tabla de nombres, que es una matriz que contiene los nombres de todas las variables y todos los campos definidos actualmente. Puede tener acceso a un elemento individual de la matriz mediante un índice de tabla de nombres (Name Table Index, NTI). Una función especial de la API, _NameTableIndex( ), devuelve el índice de una variable o un campo existente en función del nombre proporcionado. Después de haber determinado el NTI para una variable dada, puede leerla mediante la función _Load( ) de la API o establecerla mediante la función _Store( ) de la API. Para crear una variable nueva, puede llamar a la función _NewVar( ) de la API.

Para tener acceso a las variables o campos de Visual FoxPro, se usan las estructuras Value y Locator definidas en Pro_ext.h. Si está creando una biblioteca FLL, puede usar la misma técnica que ha usado para tener acceso a parámetros transferidos a sus funciones. Para obtener detalles acerca de las estructuras Value y Locator, vea Transmitir y recibir parámetros.

El ejemplo siguiente, extraído del programa Foxtlibctl.cpp que se encuentra en el directorio Api\Samples\Foxtlib de Visual FoxPro, ilustra cómo puede usar las estructuras Value y Locator de un control ActiveX para tener acceso a las variables de Visual FoxPro:

long CFoxtlibCtrl::TLGetTypeAttr(long pTypeInfo, LPCTSTR szArrName)
{
int nResult = 1;
TYPEATTR *lpTypeAttr;
Locator loc;
Value val;
OLECHAR szGuid[128];
char *szBuff;
__try {
if (_FindVar(_NameTableIndex(( char *)szArrName),-1,&loc)) {
((ITypeInfo *)pTypeInfo)->GetTypeAttr(&lpTypeAttr);
if (_ALen(loc.l_NTI, AL_ELEMENTS) < 16) {
_Error(631); //Array argument not of proper size.
}
//1 = Guid
StringFromGUID2(lpTypeAttr->guid, (LPOLESTR )&szGuid,sizeof(szGuid));
OLEOleToAnsiString(szGuid,&szBuff);
val.ev_type = 'C';
val.ev_length = strlen(szBuff);
val.ev_handle = _AllocHand(val.ev_length);
_HLock(val.ev_handle);
_MemMove((char *) _HandToPtr( val.ev_handle ), szBuff, val.ev_length);
OLEFreeString((void **)&szBuff);
_HUnLock(val.ev_handle);
loc.l_sub1 = 1;
_Store(&loc,&val);
_FreeHand(val.ev_handle);
//2 = LCID
loc.l_sub1 = 2;
val.ev_type = 'I';
val.ev_long = lpTypeAttr->lcid;
_Store(&loc,&val);
// code for values 3 - 16 here
((ITypeInfo *)pTypeInfo) -> ReleaseTypeAttr(lpTypeAttr);
}
} __except  (EXCEPTION_EXECUTE_HANDLER) {
nResult = 0;
}
return nResult;

Vea también

Transferir parámetros a funciones de la API de Visual FoxPro | Administrar la memoria | Acceso a la API de Visual FoxPro | Ampliar Visual FoxPro con bibliotecas externas | Generar y depurar bibliotecas y controles ActiveX | _NameTableIndex( )


Administrar la memoria

La API de Visual FoxPro proporciona acceso directo al administrador de memoria dinámica de Visual FoxPro. Para las rutinas de la API que requieran asignaciones de memoria, se devuelve un identificador de memoria o un controlador. La arquitectura de carga de segmentos de Visual FoxPro usa controladores en lugar de punteros, de forma que puede administrar la memoria de forma más eficaz.

Nota Las técnicas descritas en esta sección para administrar la memoria con la API de Visual FoxPro se aplican tanto a controles ActiveX como a bibliotecas FLL.

Usar controladores

Un controlador se refiere a un controlador de memoria, que es esencialmente un índice a una matriz de punteros. Los punteros apuntan a bloques de memoria que Visual FoxPro conoce. Casi todas las referencias a la memoria en la API se hacen a través de controladores en lugar de los punteros de C, más tradicionales.

Para asignar y usar memoria en la biblioteca

  1. Asigne un controlador con _AllocHand( ).
  2. Bloquee el controlador con _HLock( ).
  3. Convierta el controlador en un puntero con _HandToPtr( ).
  4. Haga referencia a la memoria mediante el puntero.
  5. Desbloquee el controlador con _HUnLock( ).
    Nota Para evitar que se dañen los archivos memo, no escriba en un archivo memo antes de llamar a _AllocMemo( ).

Para dirigir la memoria asignada, las rutinas de la API deben convertir el controlador en un puntero llamando a la rutina _HandToPtr( ). Aunque el administrador de memoria de Visual FoxPro tenga que reorganizar la memoria a fin de obtener más memoria contigua para sucesivas solicitudes de memoria, el controlador seguirá siendo el mismo. También se proporcionan rutinas que aumentan, reducen, liberan y bloquean asignaciones de memoria.

Cuando esté creando rutinas externas, intente minimizar el uso de memoria. Si crea una rutina externa que asigna de forma dinámica memoria, intente usar la menor cantidad posible de memoria. Sea especialmente cuidadoso al bloquear grandes asignaciones de memoria durante largos períodos de tiempo. No olvide desbloquear los controladores de memoria con _HUnLock( ) cuando ya no sea necesario que estén bloqueados, porque el rendimiento de Visual FoxPro puede verse afectado negativamente si hay controladores de memoria bloqueados.

Precaución El uso excesivo de memoria dinámica priva a Visual FoxPro de memoria para búferes, ventanas, menús, etc., y disminuye el rendimiento, porque la memoria dada para las solicitudes de la API la administra el administrador de memoria de Visual FoxPro. Asignar grandes controladores y conservarlos puede causar que la memoria de Visual FoxPro se agote y el programa termine de forma anómala. El entorno de Visual FoxPro no tiene protección de memoria. La rutina de la API externa no puede proporcionar toda la validación inherente a un programa estándar de Visual FoxPro. Si daña la memoria, recibirá mensajes como "Controlador transgredido", "Error de coherencia interna" y "Nodo transgredido durante la compactación".

La siguiente función de una biblioteca FLL ilustra la asignación de memoria. El ejemplo usa _RetDateStr( ) para devolver un tipo Date de Visual FoxPro (presuponiendo que el parámetro Character es una fecha adecuada):

#include <Pro_ext.h>
void dates(ParamBlk  *parm)
{
MHANDLE mh;
char *instring;
if ((mh = _AllocHand(parm->p[0].val.ev_length + 1)) == 0) {
_Error(182); // "Insufficient memory"
}
_HLock(parm->p[0].val.ev_handle);
instring = _HandToPtr(parm->p[0].val.ev_handle);
instring[parm->p[0].val.ev_length] = '\0';
_RetDateStr(instring);
_HUnLock(parm->p[0].val.ev_handle);
}
FoxInfo myFoxInfo[] = {
{"DATES", (FPFI) dates, 1, "C"}
};
FoxTable _FoxTable = {
(FoxTable *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Descripción de las pilas

El control o biblioteca que crea no tiene pila propia. En lugar de ello, usa la pila del programa que lo llama, en este caso la pila de Visual FoxPro. No puede controlar el tamaño de la pila de Visual FoxPro o modificar la cantidad de espacio de pila disponible para un control ActiveX o un archivo .fll.

En circunstancias normales, esta distinción no es importante. La pila de Visual FoxPro suele ser suficientemente grande para guardar las variables automáticas que se deban asignar en un control o biblioteca. Si se agota el espacio de la pila, siempre puede asignar memoria adicional al montón de una manera dinámica.

Seguir reglas de controlador

Las reglas siguientes se aplican a la propiedad de controladores y la responsabilidad de liberarlos:

  • Los usuarios deben liberar todos los controladores que asignen, incluidos los controladores asignados por funciones como _Load().
  • _Load() sólo crea un controlador cuando la variable que está cargando es una cadena de tipo Carácter (es decir, ev_type = 'C'). Todos los demás tipos de datos almacenan sus valores en la propia estructura Value, mientras que cargar una cadena de tipo Carácter coloca un MHANDLE en el ev_handle de la estructura Value.
  • En la biblioteca FLL, Visual FoxPro asume la responsabilidad de liberar todos los controladores devueltos por _RetVal( ). Los usuarios no deben liberar estos controladores, aunque los hayan asignado.
  • Los usuarios no deben liberar controladores que se les hayan transferido en su ParamBlk.
    Precaución Cuando escriba una rutina externa que llama a funciones, asegúrese de seguir todas las reglas y compruebe los resultados devueltos. Un puntero perdido o una referencia de controlador podría dañar las estructuras de datos internas de Visual FoxPro, provocando un final erróneo inmediato o problemas a posteriori, lo cual podría producir pérdida de datos.

Vea también

Acceso a variables y campos de Visual FoxPro | Generar y depurar bibliotecas y controles ActiveX | Acceso a la API de Visual FoxPro | Ampliar Visual FoxPro con bibliotecas externas | _AllocHand( ) | Crear bibliotecas API


Generar y depurar bibliotecas y controles ActiveX

Después de crear un proyecto, ya está preparado para generarlo y depurarlo.

Generar el proyecto

Antes de generar, tiene que establecer las opciones del proyecto. Algunos de los valores de configuración que elija dependerán de si desea crear una versión de depuración o una versión final del control o de la biblioteca. Por norma, puede crear versiones de depuración del programa hasta que esté satisfecho de su funcionamiento y, a continuación, crear una versión final.

Parar especificar una versión de depuración o final

  1. En el menú Generar, elija Set Default Configuration.
  2. Elija si va a crear una versión de depuración o una versión final del control.
  3. Elija Aceptar.

Para establecer las opciones del proyecto

  1. En el menú Generar, elija Configuración.
  2. En Settings For, elija si va a crear una versión de depuración o final del programa.
  3. Haga clic en la ficha C/C++ y, a continuación, elija estas opciones:
    • En la lista Categoría, elija Generación de código.
    • En la lista Convención de llamada, elija _fastcall.
    • En la lista Use run-time library, elija Multithreaded DLL.
  4. Elija la ficha Link y, a continuación, en el cuadro de texto Object/Library Modules, agregue una de las bibliotecas siguientes:
    • Si está generando un .ocx, agregue OCXAPI.LIB del directorio API de Visual FoxPro.
    • Si está generando un .fll, agregue WINAPIMS.LIB del directorio API de Visual FoxPro.
  5. Desactive Omitir todas las bibliotecas predeterminadas.
  6. Elija Aceptar.

Para asegurarse de que el compilador puede encontrar los archivos necesarios

  1. En el menú Herramientas, elija Opciones.
  2. Haga clic en la ficha Directorios.
  3. En la lista Mostrar directorios para, elija Archivos de inclusión.
  4. En la barra de herramientas Directorios, haga clic en el botón Agregar.
  5. Agregue el directorio que contiene Pro_ext.h.
  6. En la lista Mostrar directorios para, elija Archivos de bibliotecas.
  7. En la barra de herramientas Directorios, haga clic en el botón Agregar.
  8. Agregue el directorio que contiene OCXAPI.LIB del directorio API de Visual FoxPro (al crear un control) o agregue WINAPIMS.LIB del directorio API de Visual FoxPro (al crear un FLL).
  9. En el cuadro de diálogo Opciones, elija Aceptar.

Después de especificar la configuración, puede compilar y vincular el programa.

Para compilar y vincular un archivo .ocx

  • En el menú Generar, elija Generar nombreproyecto.ocx.

Cuando compile y vincule el archivo .ocx, Visual C++ registrará automáticamente el control en el equipo en el que se generó. Si por alguna razón tiene que registrar el control de otra forma, puede hacerlo mediante el siguiente procedimiento.

Para registrar el control ActiveX

  • En el menú Herramientas de Microsoft Development Environment, elija Registrar Control.

    –O bien–

  • Declare y llame a DLLRegisterServer( ) desde su programa.

Depurar un control ActiveX Control o una biblioteca FLL

Depurar el control o la biblioteca en el contexto de una aplicación de Visual FoxPro es más difícil que depurar de forma independiente de la aplicación. Es una buena idea crear un programa de prueba sencillo para probar el funcionamiento del control o la biblioteca.

Depurar con Microsoft Development Environment

Microsoft Visual C++ versión 4.0 o posterior ofrece un entorno integrado de depuración que facilita el establecimiento de puntos de interrupción para ejecutar el código paso a paso. Puede incluso ejecutar Visual FoxPro desde Visual C++.

Para iniciar la depuración con Microsoft Visual C++

  1. En el menú Generar, elija Configuración.
  2. En el cuadro de diálogo Configuración del proyecto, haga clic en la ficha Depurar.
  3. En el cuadro de texto Archivo ejecutable para sesión de depuración, escriba la ruta de acceso seguida por Vfp7.exe.

    Por ejemplo, escriba:
    C:\Archivos de programa\Microsoft Visual FoxPro 8.0\Vfp8f.exe.

  4. Elija Aceptar.
  5. Establezca un punto de interrupción en la biblioteca.
  6. En el menú Generar, elija Depurar. A continuación, elija Go en el submenú.
  7. Cuando Visual Studio muestre el mensaje "Vfp8.exe no contiene información de depuración", elija Sí para continuar.

Para obtener más información acerca de la depuración en Visual C++, consulte el conjunto de documentación de Visual C++.

Depurar con otros depuradores

Debe poder depurar un control o biblioteca con cualquier depurador que controle correctamente un INT 3 (_BreakPoint( )) incrustado en su programa. Puede usar cualquier depurador para depuración simbólica siempre que pueda hacer lo siguiente:

  • Crear una tabla de símbolos a partir de un archivo de asignaciones.
  • Cargar la tabla de símbolos independiente del programa.
  • Volver a colocar los símbolos en una nueva dirección.

Para depurar una biblioteca

  1. Agregue una llamada _BreakPoint( ) a la rutina en el punto en el que comienza la depuración.
  2. Genere el control o biblioteca.
  3. Llame al depurador.
  4. Si el depurador admite símbolos, cargue la tabla de símbolos para la biblioteca.
  5. Inicie Visual FoxPro.
  6. Llame a la rutina de biblioteca desde Visual FoxPro.
  7. Cuando se alcance el punto de interrupción, realice ajustes en la base de símbolos para alinear los símbolos con la ubicación real en la que se cargó la biblioteca.
  8. Incremente el registro del puntero de instrucción (IP) en una unidad para saltar la instrucción INT 3.
  9. Siga depurando como si fuera un programa normal.
    Nota Elimine siempre todos los puntos de interrupción especificados en el depurador antes de distribuir el producto.

Vea también

Administrar la memoria | Acceso a variables y campos de Visual FoxPro | Acceso a la API de Visual FoxPro | Ampliar Visual FoxPro con bibliotecas externas | Devolver un valor a Visual FoxPro


Herramientas de productividad para el desarrollo

Visual FoxPro sigue proporcionando las herramientas necesarias para la programación de aplicaciones con la aplicación FoxPro y el lenguaje XBase. Visual FoxPro ha agregado y mejorado el lenguaje orientado a objetos y los comportamientos. Esta versión de Visual FoxPro incluye lenguaje y herramientas orientados a Web diseñados para ayudar a desarrollar rápidamente aplicaciones en entornos de varios niveles (capas) y modernizar las tareas de mantenimiento.

En esta sección

Introducción a IntelliSense
Describe cómo IntelliSense de Visual FoxPro muestra información en ventanas emergentes y listas desplegables que le ayudan con la sintaxis de instrucciones y funciones y muestra las variables, objetos, propiedades, métodos y eventos de objetos disponibles.
Introducción a la Galería de componentes
Describe la Galería de componentes, un contenedor para catálogos de objetos programados, como bibliotecas de clases, formularios, botones, etcétera.
Aplicación Analizador de trayecto
Describe una aplicación de trayecto, la cual escribe información acerca de las líneas de código de un archivo que se han ejecutado. Una aplicación de analizador proporciona información acerca de las líneas que se han ejecutado realmente, cuántas veces se ha ejecutado una línea, su duración, etcétera.
Herramientas de productividad
Discute las diversas herramientas disponibles para ayudarle a crear aplicaciones de Visual FoxPro de una manera más rápida y sencilla.

Secciones relacionadas

Uso de Visual FoxPro
Describe cómo las características de programación de Visual FoxPro están diseñadas para mejorar la productividad del programador, incluidos los métodos Access y Assign, la compatibilidad con más formatos de archivos gráficos y lenguaje para simplificar las tareas de programación.
Guías paso a paso
Proporciona escenarios comunes e instrucciones paso a paso para crear diferentes tipos de aplicaciones y componentes.
Introducción a las características de Visual FoxPro
Discute cómo Visual FoxPro le da más de todo lo que puede esperar en un sistema de administración de bases de datos (DBMS) — velocidad, eficacia y flexibilidad.
Personalizar el Entorno de Visual FoxPro
Describe cómo personalizar su entorno de desarrollo después de instalar Visual FoxPro. La configuración del entorno incluye el título de la ventana principal, directorio predeterminado, proyecto, editor, depurador y herramientas para formulario, almacenar archivos temporales, equivalencia de campos para operaciones arrastrar y soltar y otras opciones.
Desarrollar aplicaciones Visual FoxPro
Esta sección incluye información conceptual acerca de cómo desarrollar aplicaciones Visual FoxPro, instrucciones para crear bases de datos y la interfaz de usuario y otras tareas necesarias para crear aplicaciones Visual FoxPro.
Programar en Visual FoxPro
Describe cómo acceder a toda la eficacia de Visual FoxPro creando aplicaciones que incorporan técnicas de programación orientada a objetos el modelo controlado por eventos para maximizar su productividad mientras programa.
Enlaces del administrador de proyectos
Explica que en Visual FoxPro, puede acceder a un proyecto a través de programación, permitiéndole manipular un proyecto como un objeto.


Introducción a IntelliSense

IntelliSense en Visual FoxPro muestra información en ventanas emergentes y listas desplegables que le ayuda a completar la sintaxis de las funciones e instrucciones y muestra las variables, objetos, propiedades, métodos y eventos de objetos disponibles. IntelliSense ofrece la posibilidad de completar automáticamente instrucciones en la ventana Comandos y el Editor de Visual FoxPro mejorado, así como también en Mostrar miembros, Información rápida y Mostrar valores. También se puede utilizar la propiedad _vfp.EditorOptions para cambiar mediante programación el estado de Mostrar miembros a Automático, Manual o Deshabilitado. Para obtener más información, vea EditorOptions (Propiedad).

En Visual FoxPro, aunque IntelliSense siempre está disponible para los comandos y las funciones nativas, el uso estricto de tipos en el código permite compatibilidad con IntelliSense completa en las ventanas del editor para todos los elementos de código definidos por el usuario. El uso estricto de tipos en el código también se utiliza en bibliotecas de tipo OLEPUBLIC.

En esta sección

Compatibilidad con IntelliSense en Visual FoxPro
Mostrar miembros de IntelliSense es compatible con las variables del sistema _VFP y _Screen, con objetos instanciados, objetos visuales, controles ActiveX, servidores COM, clases Visual FoxPro nativas y miembros definidos por el usuario. Información rápida de IntelliSense es compatible con métodos de objetos y eventos. Mostrar valores de IntelliSense es compatible y se puede mostrar para asignaciones de propiedades que tienen un conjunto de valores fijo.
Uso de IntelliSense en Visual FoxPro
La funcionalidad de IntelliSense se activa según escribe en el Editor de Visual FoxPro, en las ventanas del editor de código para métodos y en la ventana Comandos.
Personalizar IntelliSense mediante FoxCode
Si modifica el contenido de FoxCode.dbf puede modificar o agregar funcionalidad de IntelliSense en Visual FoxPro. De forma predeterminada, la tabla FoxCode.dbf se instala en su carpeta de aplicaciones de usuario de Windows o en la ubicación HOME( ).
Nombres de tabla, campo o variable automáticos
Cuando escribe una palabra clave relacionada con tablas en esta versión del Editor de Visual FoxPro o en la ventana Comandos, la lista desplegable automática tabla o campo muestra los miembros válidos en el contexto actual.
Archivos MRU (usados más recientemente) automáticos
Cuando escribe uno de los comandos enumerados en la ventana Comandos, Visual FoxPro muestra una lista desplegable de los archivos usados más recientemente (MRU) apropiados.

Secciones relacionadas

Herramientas de productividad para el desarrollo
Discute las diversas herramientas disponibles para ayudarle a crear aplicaciones de Visual FoxPro de una manera más rápida y sencilla.
Introducción a la Galería de componentes
Describe la Galería de componentes, un contenedor para catálogos de objetos programados, como bibliotecas de clases, formularios, botones, etcétera.
Aplicación analizador de trayecto
Una aplicación de trayecto escribe información acerca de las líneas de código de un archivo que se han ejecutado. Una aplicación de analizador proporciona información acerca de las líneas que se han ejecutado realmente, cuántas veces se ha ejecutado una línea, su duración, etcétera.
Enlaces del Administrador de proyectos
Explica que en Visual FoxPro, puede acceder a un proyecto a través de programación, permitiéndole manipular un proyecto como un objeto.
Automatización de tareas de pulsación de teclas con macros
Si descubre que usa repetidamente las mismas pulsaciones de teclas, o si desea automatizar algunas tareas de pulsaciones para sus usuarios, puede recorrer y guardar estas pulsaciones en macros utilizando el cuadro de diálogo Macros.
Herramientas de productividad
Aprenda acerca de las diferentes herramientas disponibles para ayudarle a crear fácil y rápidamente aplicaciones Visual FoxPro.


Compatibilidad con IntelliSense en Visual FoxPro

La lista de miembros de IntelliSense (IntelliSense List Members) es compatible con las variables del sistema _VFP y _Screen, objetos instanciados, objetos visuales, controles Microsoft ActiveX, servidores COM, clases nativas de Visual FoxPro y miembros definidos por el usuarios. La lista de miembros de IntelliSense a partir de los objetos y funciones nativas son compatibles en la ventana Seguimiento.

Información rápida de IntelliSense es compatible con métodos de objetos y eventos.

Mostrar valores de IntelliSense es compatible y se puede mostrar para asignaciones de propiedades que tienen un conjunto de valores fijo.

Nota Determinados comandos y funciones nativas (por ejemplo, SET) también muestran una lista similar a IntelliSense. Están definidos en FoxCode.dbf.

En los diseñadores visuales de Visual FoxPro, como el Diseñador de formularios, puede tener acceso automáticamente a la funcionalidad IntelliSense para contenedores y controles. Para utilizar la funcionalidad IntelliSense con referencias de clase, controles ActiveX y servidores COM en programas, debe declarar estos objetos como codificados restrictivamente antes de hacer referencia a los mismos. Para obtener más información, vea Uso estricto de tipos en código de clases, objetos y variables.

IntelliSense es compatible con el Editor de Visual FoxPro para programas, en otras ventanas del editor de código para métodos y en la ventana Comandos según el siguiente esquema:

Característica de Visual FoxPro | Editor de Visual FoxPro | Ventana del Editor de código | Ventana Comandos
_SCREEN | A | A | A
_VFP/Aplicación | A | A | A
Objetos instanciados |  |  | A
Objetos visuales | S | A |
Referencias de clase | S | S |
Controles ActiveX | S | A |
Servidores COM | S | S |
THIS, THISFORM, THISFORMSET | S | A |
Nombres de campo y tabla |  |  | A
Definido por el usuario | A | A | A

A = Todos los miembros apropiados S = sólo los miembros codificados restrictivamente

Valores predeterminados de IntelliSense

Al iniciar Visual FoxPro, Mostrar valores, Mostrar miembros e Información rápida están habilitados. Puede deshabilitar o habilitar la funcionalidad IntelliSense predeterminada en la opción Administrador de IntelliSense en el menú Herramientas. Aún cuando IntelliSense automático esté deshabilitado, puede habilitar la funcionalidad IntelliSense mediante métodos abreviados de teclado (CTRL+I para Información rápida y CTRL +J Mostrar miembros y Mostrar valores).

Además puede habilitar o deshabilitar la funcionalidad IntelliSense mediante programación estableciendo el valor de la propiedad _VFP.EditorOptions. Para obtener más información, vea EditorOptions (Propiedad).

Puede agregar o modificar cierta funcionalidad IntelliSense de Visual FoxPro agregando o modificando registros en FoxCode.dbf o seleccionando opciones en Administrador de IntelliSense.

Vea también

Introducción a IntelliSense | Nombres de tabla, campo o variable automáticos | Archivos MRU (usados más recientemente) automáticos | Uso de IntelliSense en Visual FoxPro | Personalizar IntelliSense mediante FoxCode | Mostrar miembros | Información rápida | Mostrar valores | FoxCode (Referencia de objeto)


Mostrar miembros

Se enumeran los miembros válidos (propiedades, métodos, eventos y objetos) como referencia de objeto específica. Cuando escribe el nombre de un objeto, propiedad o comando o función de Visual FoxPro válido, una tecla Activator muestra una lista desplegable de valores válidos para el miembro actual.

Para objetos, la tecla Activator normalmente es un punto (.). Para comandos y funciones, la tecla Activator puede ser la barra espaciadora o el paréntesis a la izquierda (apertura).

Según escribe o se desplaza en la lista, Mostrar miembros muestra una sugerencia que describe el tipo o el intervalo del elemento seleccionado.

La lista desplegable Mostrar miembros permanece abierta hasta que haga lo siguiente:

  • Escribir todos los parámetros requeridos, seguidos de espacio
  • Escribir una tecla de terminación (Esc, Fin, Inicio o una tecla de un carácter no válido)
  • Cambiar la ventana activa

El estado de Mostrar miembros puede cambiarse a Automático, Manual o Deshabilitado en la ficha General del Administrador de IntelliSense. Para obtener más información, vea Ventana Administrador de IntelliSense de Visual FoxPro. También se puede utilizar la propiedad _vfp.EditorOptions para cambiar mediante programación el estado de Mostrar miembros a Automático, Manual o Deshabilitado. Para obtener más información, vea EditorOptions (Propiedad).

Si el estado es Automático, Mostrar miembros aparece al presionar una tecla Activator. Si Mostrar miembros está establecido en Manual, puede activar Mostrar miembros mediante el menú Edición, el menú contextual o CTRL+J si el cursor se encuentra en una posición con propiedades, métodos o eventos disponibles.

Mostrar miembros está disponible donde pueda escribir código Visual FoxPro, incluido el editor de Visual FoxPro, la ventana Comandos y todas las ventanas del editor de código.

Vea también

Introducción a IntelliSense | Compatibilidad con IntelliSense en Visual FoxPro | Información rápida | Mostrar valores | EditorOptions (Propiedad)


Información rápida

Información rápida es una lista de información acerca de la sintaxis de comandos, funciones, variables y propiedades, métodos y eventos de objetos instanciados.

Información rápida normalmente se activa con el paréntesis a la izquierda (apertura) para funciones y con un espacio (" ") para comandos.

Cuando escribe el nombre de una instrucción o función de Visual FoxPro válida se muestra inmediatamente la sintaxis debajo de la línea actual con el primer parámetro en negrita. Después de escribir un valor de argumento, el siguiente argumento aparece en negrita.

El estado de Información rápida puede cambiarse a Automático, Manual o Deshabilitado en la ficha General del Administrador de IntelliSense. Para obtener más información, vea Ventana Administrador de IntelliSense de Visual FoxPro. También se puede utilizar la propiedad _vfp.EditorOptions para cambiar mediante programación el estado de Información rápida a Automático, Manual o Deshabilitado. Para obtener más información, vea EditorOptions (Propiedad).

Si el estado es Automático, Información rápida aparece al presionar una tecla Activator. Si Información rápida está establecida en Manual, puede activar Información rápida mediante el menú Edición, el menú contextual o CTRL+J si el cursor se encuentra en una posición con Información rápida disponible.

Información rápida está disponible donde pueda escribir código Visual FoxPro, incluido el editor de Visual FoxPro, la ventana Comandos y todas las ventanas del editor de código.

Vea también

Introducción a IntelliSense | Compatibilidad con IntelliSense en Visual FoxPro | Mostrar miembros | Mostrar valores | EditorOptions (Propiedad)


Mostrar valores

Mostrar valores es una lista de valores de propiedad válidos. Por ejemplo, si la propiedad es de tipo Lógico, la lista que se muestra contiene Verdadero y Falso. Para propiedades en bibliotecas de tipos, Mostrar valores admite listas. Mostrar valores se habilita como Mostrar miembros en el Administrador de IntelliSense o mediante CTRL+J. También puede utilizar la propiedad _vfp.EditorOptions para habilitar o deshabilitar mediante programación la opción Información rápida.

Mostrar valores normalmente se activa con la tecla igual (=).

Nota Mostrar miembros, Información rápida y Mostrar valores, una vez activados con el Administrador de IntelliSense, se activan siempre que escriba una tecla Activator.

Vea también

Introducción a IntelliSense | Compatibilidad con IntelliSense en Visual FoxPro | Mostrar miembros | Información rápida | EditorOptions (Propiedad)


Uso de IntelliSense en Visual FoxPro

La funcionalidad de IntelliSense se activa según escribe en el Editor de Visual FoxPro, en las ventanas del editor de código para métodos, en la ventana Comandos y en la ventana Seguimiento cuando depura código.

Para mostrar listas desplegables y cuadros de diálogo de IntelliSense

  • Escriba palabras clave de Visual FoxPro o definidas por el usuario en un editor.

    En este caso, las palabras clave son elementos sintácticos de comandos, funciones y definiciones de clase de Visual FoxPro; métodos y eventos de controles ActiveX; servidores COM y palabras clave definidas por el usuario. Cuando utilice la cláusula AS en código, IntelliSense muestra una lista desplegable de tipos disponibles, incluidos los tipos de los siguientes orígenes:

    • Clases de base de objetos Visual FoxPro
    • Tipos de datos de Visual FoxPro

    Se enumerarán los siguientes elementos si los agrega en el Administrador de IntelliSense:

    • Bibliotecas de tipos registradas
    • Tipos y valores enumerados definidos por el usuario y clases personalizadas

    Para implementar IntelliSense en clases Visual FoxPro y COM en archivos de código (.prg), debe utilizar la codificación restrictiva. Internamente, para objetos creados en tiempo de ejecución con comandos como CREATEOBJECT( ), CREATEOBJECTEX( ), NEWOBJECT( ) y GETOBJECT( ), Visual FoxPro crea una instancia de un objeto de memoria temporal para proporcionar la lista de propiedades, métodos y eventos. IntelliSense crea una lista desplegable de las propiedades, los métodos y los eventos disponibles en la definición de la clase o en biblioteca de tipos, que se buscan en las siguientes ubicaciones:

    • Clases de base de objetos Visual FoxPro
    • Definiciones de clases en memoria, en el orden en que se cargaron
    • Definiciones de clase en el programa actual
    • Definición de clase en el archivo de bibliotecas de clases (.vcx) abierto mediante el comando SET CLASS
    • Definiciones de clase en los archivos de procedimiento abiertos con el comando SET PROCEDURE
    • Definiciones de clase en la cadena de ejecución del programa Visual FoxPro (para obtener más información, vea DO(Comando))
    • La base de datos de registro del sistema (el Registro)
    • Métodos abreviados de teclado de Información rápida y Mostrar miembros
  • Escriba una tecla Activator en una instrucción de código.

    Las teclas Activator (que están determinadas por el tipo del elemento en FoxCode.dbf) son " " (espacio en blanco), "." (punto), "(" (paréntesis de apertura) y "=" (signo igual). Además de las teclas Activator, IntelliSense responde a teclas Navigator y de terminación (Terminator). Las teclas alfanuméricas seleccionan secuencialmente elementos de la lista disponible, y las teclas de dirección y movimiento de página filtran y se desplazan entre los miembros de la lista disponibles.

Métodos abreviados del teclado

Puede utilizar las opciones del menú contextual o, en la ubicación apropiada de la ventana del editor, puede utilizar los siguientes métodos abreviados de teclado para ejecutar características de IntelliSense:

Métodos abreviados de teclado | Característica de IntelliSense
CTRL+I | Información rápida
CTRL+J | Mostrar miembros, Mostrar valores

Opciones de IntelliSense

Puede modificar o restaurar la lista predeterminada de opciones automáticas de Mostrar miembros, Mostrar valores e Información rápida en la Ventana Administrador de IntelliSense de Visual FoxPro. El contenido de la lista desplegable Mostrar valores automáticamente está determinado por la biblioteca de tipos del objeto referenciado.

La forma más directa de influir en la funcionalidad de IntelliSense con funciones y comandos nativos es cambiar el contenido de la tabla FoxCode.dbf. La tabla FoxCode.dbf no afecta a las propiedades, métodos y eventos de objeto.

Puede habilitar o deshabilitar la funcionalidad de IntelliSense mediante programación al establecer el valor de la propiedad _VFP.EditorOptions. Para obtener más información, vea EditorOptions (Propiedad).

Puede establecer la fuente y el esquema de colores de la lista desplegable en Pantalla, en el Panel de control de Windows. Puede establecer el número máximo de elementos que se muestran en la lista desplegable mediante la casilla de verificación Nº elementos de la lista de la ficha Editor del cuadro de diálogo Opciones en el menú Herramientas.

Puede tener acceso a las referencias almacenadas en la tabla FoxCode.dbf en tiempo de diseño desde el Administrador de IntelliSense y mediante la variable de sistema _FoxCode, como en el ejemplo siguiente:

USE (_FoxCode) SHARED

Vea también

Introducción a IntelliSense | Teclas de IntelliSense Activator, Navigation y Terminator | Nombres de tabla, campo o variable automáticos | Archivos MRU (usados más recientemente) automáticos | Compatibilidad con IntelliSense en Visual FoxPro | Personalizar IntelliSense mediante FoxCode | FoxCode (Referencia de objeto) | EditorOptions (Propiedad) | _FOXCODE (variable de sistema)


Teclas de IntelliSense Activator, Navigation y Terminator

Para ejecutar la funcionalidad IntelliSense, escriba una palabra clave seguida de una de las teclas Activator (de activación), Navigation (de desplazamiento) o Terminator (de terminación) enumeradas en la tabla siguiente:

Teclas Activator

Tecla | Descripción
 | Espacio en blanco. Tecla Activator para tipos elemento comando. Abre una lista desplegable de palabras clave de Visual FoxPro y definidas por el usuario o muestra la ventana Sugerencias.
. | Punto. Tecla Activator para tipos elemento función. Abre una lista desplegable para propiedades, métodos o eventos Object (Mostrar miembros) o activa información sobre herramientas o información sobre valores.
( | Paréntesis a la izquierda (apertura). Tecla Activator. Abre una lista desplegable para funciones Visual FoxPro o activa información sobre herramientas o información sobre valores.
= | Signo igual. Tecla Activator para propiedades. Comprueba el espacio en blanco entre la propiedad y el carácter "=". Abre una lista desplegable de valores disponibles o un editor de valores apropiado, como fuentes o colores, o activa información sobre herramientas o información sobre valores.

Teclas Navigation

Tecla | Descripción
aA - zZ, 0 - 9 | Alfanuméricas. Mueve el cursor entre los elementos coincidentes disponibles en la lista desplegable hasta que no existan más valores coincidentes.
<— | Tecla de flecha a la izquierda. Mueve el cursor un carácter a la izquierda. Puede terminar la lista desplegable si el cursor se mueve fuera del contexto (por ejemplo, antes de un punto).
—> | Tecla de flecha a la derecha. Mueve el cursor un carácter a la derecha. Puede terminar la lista desplegable si el cursor se mueve fuera del contexto (por ejemplo, más allá de lo que ya se ha escrito).
RE PÁG | Tecla Navigator. Mueve el cursor una página hacia arriba en la lista desplegable.
AV PÁG | Tecla Navigator. Mueve el cursor una página hacia abajo en la lista desplegable.
Tabulador | Tecla Navigator. Selecciona el miembro resaltado de la lista desplegable y coloca el cursor inmediatamente después de la palabra agregada en el editor.

Teclas Terminator

Tecla | Descripción
Esc | Tecla Terminator. Finaliza la lista desplegable de IntelliSense.
Inicio | Tecla Terminator. Finaliza la lista desplegable de IntelliSense y mueve el cursor al inicio de la línea actual.
Fin | Tecla Terminator. Finaliza la lista desplegable de IntelliSense y mueve el cursor al final de la línea actual.
Entrar, espacio en blanco y otros caracteres no alfanuméricos | Teclas terminator. Finalizan la lista desplegable de IntelliSense y mueven el cursor al final de la línea actual.

Vea también

Introducción a IntelliSense | Uso de IntelliSense en Visual FoxPro


Personalizar IntelliSense mediante FoxCode

Si modifica el contenido de FoxCode.dbf puede modificar o agregar funcionalidad de IntelliSense en Visual FoxPro. De forma predeterminada, la tabla FoxCode.dbf se instala en su carpeta de aplicaciones de usuario de Windows.

Nota Cuando ejecute Visual FoxPro por primera vez, un duplicado de FoxCode.dbf se copia en su ubicación de datos de aplicación personal de Windows. Esto puede restablecerse en la ficha Archivos del cuadro de diálogo Opciones.

Para personalizar IntelliSense

  • Modifique el contenido de FoxCode.dbf descrito en la tabla siguiente directamente o mediante la Ventana Administrador de IntelliSense de Visual FoxPro.

El soporte limitado de IntelliSense existe en la ventana del Reloj de la tabla de FoxCode.dbf, mientras sigue dependiendo si una expresión es válida para la ventana del Reloj. IntelliSense da soporte para lo siguiente:

  • Instanciando objetos de la lista desplegable miembros de la lista
  • Instanciando objetos de la lista despeglable sugerencias rápidas.
  • funciones _FOXCODE
  • m.memory variable de expansión

IntelliSense no da soporte para lo siguiente:

  • Instanciando objetos de la lista desplegable Lista de Valores.
  • _FOXCODE comandos
  • _FOXCODE default script handlers
  • _FOXCODE editores de valor de propiedad
  • _FOXCODE comandos de usuarios
  • El mas reciente archivo usado (MRU)

Estructura de FoxCode.dbf

Nombre de campo | Tipo (tamaño) | Descripción
Type | C (1) | Especifica el tipo de referencia que contiene este registro.
Abbrev | C (24) | Representa el conjunto mínimo de pulsaciones de teclas que activa IntelliSense para este elemento.
Expanded | C (26) | Especifica qué se inserta en el cursor.
Cmd | C (15) | Especifica la secuencia de comandos que se va a ejecutar para este elemento.
Tip | M | Especifica el contenido de la Sugerencia rápida (parámetros).
Data | M | Especifica todo lo que hay en Mostrar valores o un código de Visual FoxPro específico para este elemento y puede, opcionalmente, contener otro texto de secuencias de comandos.
Case C (1) Especifica cómo se reemplaza el texto.
U = MAYÚSCULAS
L = minúsculas
M o <en blanco> = Mixto
P = Nombre propio
X = Sin cambios

Cualquier valor que especifique en este campo del registro de versión establece un valor predeterminado global para los registros individuales que no tienen un valor Case.
Save | L | Especifica si se guarda el registro cuando se actualice el campo.
TimeStamp | T | Representa la marca de tiempo exclusiva de este elemento.
Source | M | Especifica el origen del contenido del registro. El contenido principal de esta versión de Visual FoxPro se especifica como RESERVED. Este campo puede contener la ruta y el nombre de referencia absoluta de los registros proporcionados por el usuario.
UniqueID | C (10) | Especifica un identificador exclusivo para este registro.
User | M | Especifica información del usuario.

Valores válidos de la columna Type de FoxCode.dbf

Valor | Tipo | Descripción
C | Comando | Especifica los elementos de relleno automático y de comando de Visual FoxPro.
F | Función | Especifica las funciones de Visual FoxPro que se utilizan en las Sugerencias rápidas.
O | Componente COM | Especifica la referencia de COM Typelib para utilizar con la lista desplegable AS.
P | Propiedad | Especifica las propiedades de Visual FoxPro.
S | Secuencia de comandos | Especifica que el campo de datos contiene una secuencia de comandos de Visual FoxPro que se va a ejecutar.
T | Codificación | Especifica los elementos que aparecen en la lista desplegable AS o cuando se les hace referencia como un objeto.
U | Usuario | Especifica los elementos con expansión automática definidos por el usuario. Estos elementos, a diferencia de los tipos de elementos Command, no tienen que coincidir exactamente con modelos absolutos.
V | Versión | Especifica el registro especial de la información de versión (reservado).

Tipo de elemento Componente COM

El tipo de elemento Componente COM es un registro de FoxCode.dbf cuyo contenido aparecerá en una lista desplegable de la cláusula AS, como, por ejemplo, un registro de tipo de elemento Codificación. El registro de tipo de elemento Codificación COM representa el nombre de la biblioteca de tipos COM que contiene una colección de clases (ProgIDs), cuyas instancias se pueden crear con Visual FoxPro mediante la función CreateObject( ).

El campo Data de este tipo de registro contiene el GUID y la versión de la biblioteca de tipos en vez de código, como en la siguiente tabla:

Nombre de campo | Ejemplo
Type | O
Abbrev | Excel
CMD | {}
Tip | Biblioteca de objetos Microsoft Excel 9.0
Data | {00020813-0000-0000-C000-000000000046}#1.3

Tipo de elemento Comando

El tipo de elemento Comando es un registro de FoxCode.dbf cuyo contenido representa el relleno del comando Visual FoxPro o las instrucciones de sustitución como en la siguiente tabla:

Nombre de campo | Ejemplo
Type | C
Abbrev | MC
Expanded | MODIFY COMMAND

El contenido de estos registros se desencadena en IntelliSense escribiendo el campo Abbrev o el contenido del valor expandido seguido de un espacio en blanco en un editor.

Tipo de elemento Función

El tipo de elemento Función es un registro de FoxCode.dbf cuyo contenido representa las funciones, los procedimientos y las funciones definidas por el usuario de Visual FoxPro, como en la siguiente tabla:

Nombre de campo | Ejemplo
Type | F
Abbrev | FCOU
Expanded | FCOUNT
Tip | [nWorkArea | cTableAlias]

El contenido del campo Tip de estos registros se muestra en una ventana Sugerencias escribiendo el valor de Abbrev o el valor expandido seguido de un paréntesis a la izquierda.

Tipo de elemento Propiedad

El tipo de elemento Propiedad es un registro de FoxCode.dbf cuyo contenido especifica una propiedad. Utilice este tipo para agregar un Editor de valores personalizado cuando asigne valores a la propiedad especificada.

A continuación, se muestra un ejemplo de especificación de editores de valores para propiedades (las entradas de tipo P de la tabla):

Nombre de campo | Ejemplo
Type | P
Abbrev | .Picture
Cmd | {picture}

El campo Cmd contiene una referencia, "{picture}", a un registro de secuencias de comandos de FoxCode cuyo campo ABBREV contiene el valor "picture" (para obtener más información, vea el tipo de elemento Secuencia de comandos). Al escribir ".picture=" ejecuta el código que contiene el registro de secuencia de comandos relacionado con este registro de propiedad.

Excepto en los registros Type = "T" u "O", si el campo Cmd sólo contiene las llaves de apertura y cierre ("{}") sin ninguna referencia a una secuencia de comandos, el registro contiene su propia secuencia de comandos en el campo Data como en la tabla siguiente:

Nombre de campo | Ejemplo
Type | C
Abbrev | NOW
Cmd | {}
Data | LPARAMETER oFoxCode RETURN TRANSFORM(DATE( ))

Tipo de elemento Secuencia de comandos

El tipo de elemento Secuencia de comandos es un registro de FoxCode.dbf que puede contener texto como código en su campo de datos. Otro registro ejecuta este código haciendo referencia al mismo en el campo Cmd. Este tipo de registro puede contener lo siguiente:

  • FoxCode en el campo Data que se va a evaluar como texto.
  • Un Id. en el campo Cmd que hace referencia a otro registro que contiene el código. Si escribe código en un tipo de elemento Secuencia de comandos independiente, como en la tabla siguiente, habilite múltiples elementos para hacer referencia al mismo código:
    {picture}…
    Nombre de campo | Ejemplo
    Type | S
    Abbrev | Picture
    Data (En el campo Memo)
    LPARAMETER oFoxcode
LOCAL lcPicture
oFoxcode.valuetype="V"
lcPicture = getpict()
IF LEN(lcPicture) > 0
lcPicture = ['] + lcPicture+ [']
ENDIF
RETURN lcPicture

En este ejemplo, un registro de tipo de elemento Propiedad con el valor "picture" en el campo ABBREV hace referencia a este registro de tipo de elemento Secuencia de comandos y ejecuta el código del campo Data, mostrando el cuadro de diálogo Abrir imagen.

La secuencia de comandos en los registros Secuencia de comandos debe contener una instrucción PARAMETERS o LPARAMETERS para albergar la referencia del objeto.

El valor devuelto reemplaza el texto escrito. Si el valor devuelto se evalúa como una cadena vacía (""), Visual FoxPro no cambia el texto escrito.

Cada secuencia de comandos llamada por IntelliSense debe contener un parámetro que se pasa al objeto de parámetro de FoxCode. Este objeto contiene metadatos que detallan cómo se llamó la secuencia de comandos, incluyendo el registro de origen de la tabla FoxCode. Para obtener más detalles, vea FoxCode (Referencia de objeto).

Tipo de elemento Codificación

El tipo de elemento Codificación es un registro de FoxCode.dbf que representa el contenido de un elemento mostrado en la lista desplegable de una cláusula AS. Opcionalmente, el campo Data de este registro puede contener código cuyo valor devuelto se inserta en la posición del cursor en la pantalla. Si incluye texto en el campo Data, finalícelo con una instrucción RETURN.

Nombre de campo | Ejemplo
Type | T
Abbrev | CommandButton

Tipo de elemento Usuario

El tipo de elemento Usuario es un registro de FoxCode.dbf que se utiliza para especificar abreviaturas de contenido definido por el usuario, como en la tabla siguiente. A diferencia del tipo de elemento Comando, la abreviatura del tipo de elemento Usuario no tiene que ser la misma que los caracteres iniciales del contenido de expansión.

Nombre de campo | Ejemplo
Type | U
Abbrev | MYADDRESS
Expanded | 101 Main Street

Tipo de elemento Versión

El tipo de elemento Versión es el registro de FoxCode.dbf que se utiliza para los valores predeterminados y para hacer un seguimiento de la información de versión. Está reservado para uso interno.

Nombre de campo | Ejemplo
Type | V
Expanded | <Identifica la última versión de FoxCode> Para uso interno.

Vea también

Introducción a IntelliSense | Uso de secuencias de comandos en FoxCode.dbf | Ventana Administrador de IntelliSense de Visual FoxPro | Nombres de tabla, campo o variable automáticos | Archivos MRU (usados más recientemente) automáticos | Compatibilidad con IntelliSense en Visual FoxPro | Uso de IntelliSense en Visual FoxPro | FoxCode (Referencia de objeto)


Uso de secuencias de comandos en FoxCode.dbf

Puede mejorar de forma significativa la funcionalidad en tiempo de diseño de Visual FoxPro modificando la tabla FoxCode.dbf. Puede agregar sus propios procedimientos modificando valores de campo o agregando código de Visual FoxPro al campo Data de los tipos de elementos Secuencia de comandos. Puede crear elementos Secuencia de comandos que proporcionen código para cualquier otro elemento o puede incluir código dentro de un elemento que sea específico a ese registro.

Para habilitar la secuencia de comandos para cualquier elemento

  1. Coloque una referencia a las pulsaciones desencadenadoras (desde el campo Abbrev) en el campo Cmd de un elemento. Una referencia consta de pulsaciones desencadenadoras delimitadas por llaves de apertura y cierre como en este ejemplo:

    {picture}

  2. Copie las pulsaciones desencadenadoras en el campo Abbrev del elemento Secuencia de comandos de referencia.

    Para aplicar una secuencia de comandos existente a este elemento, haga referencia al contenido del campo Abbrev del registro de tipo de elemento Secuencia de comandos que contiene el código que desea utilizar en su campo Data.

  3. Agregue el código Visual FoxPro pertinente al campo Data del elemento Secuencia de comandos como en el siguiente ejemplo desde el campo Data del tipo de elemento Secuencia de comandos referenciado por el campo Cmd del ejemplo anterior:
    LPARAMETER oFoxcode
LOCAL lcPicture
oFoxcode.valuetype="V"
lcPicture = getpict()
IF LEN(lcPicture) > 0
lcPicture = ['] + lcPicture+ [']
ENDIF
RETURN lcPicture

    Puede tener acceso a los tipos de elementos Secuencia de comandos desde otro tipo de elemento mediante este procedimiento, lo que permite a un elemento Secuencia de comandos servir a muchos elementos.

En el ejemplo siguiente, cada elemento requiere dos registros para habilitar su funcionalidad, el elemento de llamada, que contiene la información de referencia y el tipo de elemento Secuencia de comandos, que contiene el código que se va a ejecutar.

Para habilitar la secuencia de comandos en un tipo de elemento

  • Proporcione el código Visual FoxPro apropiado en el campo Data del registro de elemento.

    Este ejemplo utiliza el código del tipo de elemento Secuencia de comandos anterior en el campo Data.

    LPARAMETER oFoxcode
LOCAL lcPicture
oFoxcode.valuetype="V"
lcPicture = getpict()
IF LEN(lcPicture) > 0
lcPicture = ['] + lcPicture+ [']
ENDIF
RETURN lcPicture

Campos Data y el objeto FoxCode

El campo Data generalmente contiene código de secuencia de comandos para ejecutarse mediante secuencias de comandos IntelliSense definidas por el usuario. No obstante, también puede utilizarse únicamente para almacenar datos utilizados por secuencias de comandos. El objeto de parámetro FoxCode transfiere automáticamente este tipo de metadatos a una secuencia de comandos.

Para obtener más detalles acerca del objeto FoxCode, vea FoxCode (Referencia de objeto).

Vea también

Introducción a IntelliSense | Personalizar IntelliSense mediante FoxCode | Ventana Administrador de IntelliSense de Visual FoxPro | FoxCode (Referencia de objeto)


Nombres de tabla, campo o variable automáticos

Al escribir USE o USE + el alias en la ventana Comandos se hace referencia a las funcionalidades de Nombres de tabla, campo o variable automática de la lista de nombres de campo de IntelliSense en la tabla abierta. La información de esta lista desplegable consta de nombres de tabla o nombres de campo, dependiendo de la referencia.

Cuando escribe una palabra clave relacionada con tablas en el Editor de Visual FoxPro o en la ventana Comandos, la lista desplegable de nombres de tabla o campo automáticos muestra los miembros válidos en el contexto actual. Según escribe o se desplaza en la lista de campos, una ventana Sugerencias muestra el tipo y el tamaño del campo en el enfoque.

En la siguiente tabla se enumeran las palabras clave para nombres de tabla o campo automáticos:

Palabra clave | Función
USE | Muestra las tablas de la base de datos activa y las tablas MRU.
REPLACE | Muestra los campos de la tabla, cursor o vista en el área de trabajo seleccionada actualmente.
MODIFY MEMO | Muestra campos memo de la tabla, cursor o vista en el área de trabajo seleccionada actualmente.
MODIFY GENERAL | Muestra los campos de tipo general de la tabla, cursor o vista en el área de trabajo seleccionada actualmente.

Además, puede escribir "m." en la ventana Comandos para ver una lista de todas las variables declaradas en una ventana desplegable. Cuando selecciona una variable, su valor se muestra en un menú de sugerencias.

Vea también

Introducción a IntelliSense | Archivos MRU (usados más recientemente) automáticos | Compatibilidad con IntelliSense en Visual FoxPro | Uso de IntelliSense en Visual FoxPro | Personalizar IntelliSense mediante FoxCode


Archivos MRU (usados más recientemente) automáticos

La funcionalidad MRU (usados más recientemente) automática de IntelliSense es una lista de los archivos usados más recientemente disponibles de los tipos asociados con comandos específicos. Cuando escribe uno de los comandos enumerados en la ventana Comandos, Visual FoxPro muestra una lista desplegable de los archivos MRU apropiados. Los archivos MRU automáticos se activan mediante la tecla de barra espaciadora.

Existen comandos específicos de Visual FoxPro que buscan y abren archivos de un conjunto predeterminado de extensiones de archivo según se describe en la lista siguiente:

Comando | Extensiones y tipos de archivo
CD | ruta
DO | .prg, .mpr, .qpr, .fxp, .app, .exe
DO FORM | .scx
LABEL FORM | .frx, .lbx
MODIFY CLASS | .vcx
MODIFY COMMAND | .prg, .mpr, .qpr
MODIFY DATABASE | .dbc
MODIFY FILE | cualquier tipo y extensión de archivo
MODIFY FORM | .scx
MODIFY LABEL | .lbx
MODIFY MENU | .mnx
MODIFY PROJECT | .pjx
MODIFY QUERY | .qpr
MODIFY REPORT | .frx
MODIFY VIEW | vistas locales y remotas
OPEN DATABASE | .dbc
REPORT FORM | .frx, .lbx
SET DATABASE | .dbc
USE | .dbf, view

Puede controlar la funcionalidad MRU mediante el cuadro de diálogo Opciones y la funcionalidad IntelliSense predeterminada mediante la ventana Administrador de IntelliSense de Visual FoxPro.

Vea también

Introducción a IntelliSense | Uso estricto de tipos en código de clases, objetos y variables | Nombres de tabla, campo o variable automáticos | Compatibilidad con IntelliSense en Visual FoxPro | Uso de IntelliSense en Visual FoxPro | Personalizar IntelliSense mediante FoxCode


Uso estricto de tipos en código de clases, objetos y variables

Visual FoxPro no es un lenguaje de codificación restrictiva en el que debe declarar variables como un tipo de datos específico. No obstante, cuando se hace un uso estricto de tipos en el código, se proporciona un control que facilita la codificación, reduce los errores y admite IntelliSense para estos elementos en el editor.

Nota La codificación restrictiva no se exige en tiempo de diseño ni en tiempo de ejecución. En Visual FoxPro, la codificación restrictiva permite objetos IntelliSense en el editor. La codificación restrictiva también se utiliza en bibliotecas de tipo OLEPUBLIC.

Para implementar la codificación restrictiva, utilice la cláusula AS en las declaraciones de variables y parámetros del LPARAMETERS (Comando), PARAMETERS (comando), el LOCAL (comando) y el PUBLIC (comando), así como en las instrucciones FUNCTION (comando) y PROCEDURE (comando) como se indica en los ejemplos siguientes:

LOCAL oExcel AS "excel.application"
oExcel = CreateObject("excel.application")
oExcel.   &&displays dropdown
PUBLIC ARRAY MyArray[2] AS _form OF ffc\_base
LPARAMETERS MyParam1 AS string OF _base.vcx
PARAMETERS MyParam1 AS custom OF Mybase.vcx
FUNCTION MyFunction AS custom

También puede utilizar la cláusula AS en el DEFINE CLASS (Comando) para aplicar la codificación restrictiva a objetos, parámetros de métodos y valores.

DEFINE CLASS MyClass1 AS custom OLEPUBLIC
FUNCTION MyMethod (MyParam1 AS integer, MyParam2 AS string) AS integer
RETURN MyParam1
ENDFUNCTION
ENDDEFINE

Vea también

Introducción a IntelliSense | Archivos MRU (usados más recientemente) automáticos


Utilizar la Galería de componentes

La Galería de componentes es un contenedor de catálogos de objetos de software tales como bibliotecas de clases, formularios, botones, etcétera. También contiene clases de Visual FoxPro. Puede utilizar la Galería de componentes para organizar los componentes por objetos, proyectos, aplicaciones u otras agrupaciones. Estas agrupaciones visuales pueden personalizarse dinámicamente de forma que pueda utilizar, duplicar o reorganizar los componentes de varias clasificaciones en la Galería de componentes. Puede tener acceso a un componente específico desde cualquier punto de la Galería de componentes donde sitúe una referencia a dicho componente. También puede tener varias referencias a un mismo objeto en distintos catálogos o carpetas. Por ejemplo, un botón puede aparecer en una o más categorías de proyecto de la Galería de componentes (representadas como carpetas), pero también puede ser visible en una categoría llamada "Herramientas" que contenga referencias a todos los botones que utilice.

La Galería de componentes se puede utilizar para todas las funciones proporcionadas por el Administrador de proyectos, el Examinador de clases y la barra de herramientas Controles de formularios. Cada uno de los restantes componentes de Visual FoxPro proporciona un enfoque muy específico de los proyectos o clases desde el entorno especial del archivo de proyecto o de la biblioteca de clases. La Galería de componentes permite administrar las relaciones entre los componentes y muchos de sus comportamientos, desde un nivel abstracto de diseño y también desde una perspectiva de desarrollo más concreta.

Puede arrastrar y soltar componentes dentro de la Galería de componentes y también desde la Galería de componentes a proyectos o formularios. También puede cambiar las propiedades de los objetos o clases desde la Galería de componentes.

La Galería de componentes puede contener cualquier elemento de Visual FoxPro, como documentos, archivos o carpetas locales y remotos, servidores de automatización del tipo Microsoft Excel y Word, y ubicaciones y archivos HTML. También puede incluir archivos .prg con miniprogramas de código, clases, asistentes, generadores o elementos gráficos.

En esta sección

Administrar proyectos con la Galería de componentes
Explica como usar la Galería de componentes. Para utilizar plantillas, generadores y asistentes en la Galería de componentes para crear el proyecto o aplicaciones.
Catálogos de la Galería de componentes
Describe cómo usar los catálogos de la Galería de componentes de Visual FoxPro y el catálogo predeterminado, el cual incluye elementos agrupados en varias categorías como formularios, controles y otras.
Personalizar la Galería de componentes
Describe cómo puede cambiar el comportamiento predeterminado del catálogo de la Galería de componentes, carpetas elementos de la galería, personalizando la Galería de componentes.
Objetos miembros de la Galería de componentes>/DT>
Proporciona una lista de clases y elementos que referencian las clases, la cual comprende la interfaz de la Galería de componentes de Visual FoxPro.
Biblioteca de clases de la Galería de componentes (Vpfgallery.vcx)
Explica cómo la biblioteca de clases de la Galería de componentes, Vpfgallery.vcx, proporciona los tipos de elementos como clases.
Estructura de la tabla de la Galería de componentes
Describe la estructura de la tabla de la Galería de componentes de Visual FoxPro.

Secciones relacionadas

Herramientas de productividad para el desarrollo
Proporciona información sobre las herramientas para el desarrollador que puede utilizar con la aplicación y lenguaje Visual FoxPro.
Introducción a IntelliSense
Proporciona información sobre IntelliSense, la cual muestra información en ventanas y listas desplegables que le ayudan a completar la sintaxis de instrucciones y funciones.
Aplicación analizador de trayecto
Describe una aplicación de trayecto, la cual escribe información acerca de las líneas de código de un archivo que se han ejecutado. Una aplicación de analizador proporciona información acerca de las líneas que se han ejecutado realmente, cuántas veces se ha ejecutado una línea, su duración, etcétera.
Enlaces del Administrador de proyectos
Explica que en Visual FoxPro, puede acceder a un proyecto a través de programación, permitiéndole manipular un proyecto como un objeto.
Automatización de tareas de pulsación de teclas con macros
Describe cómo puede automatizar algunas tareas de pulsaciones para sus usuarios, puede recorrer y guardar estas pulsaciones en macros utilizando el cuadro de diálogo Macros.
Herramientas de productividad
Discute las diversas herramientas disponibles para ayudarle a crear aplicaciones de Visual FoxPro de una manera más rápida y sencilla.


Administrar proyectos con la Galería de componentes

Puede utilizar la Galería de componentes para crear proyectos y aplicaciones, y también para administrar su desarrollo. Utilice la Galería de componentes para organizar los componentes que contiene o utilizar sus plantillas, generadores y asistentes para crear el proyecto o la aplicación deseados.

Para crear un proyecto o una aplicación desde la Galería de componentes

  • Utilice el Asistente para aplicaciones o la Plantilla Nueva aplicación de la carpeta Aplicaciones del catálogo de Visual FoxPro.

En el caso de los catálogos y carpetas, seleccione las fichas y opciones para realizar el cambio que desee. Para obtener más detalles, vea Cuadro de diálogo Opciones de la Galería de componentes en la Ayuda.

Mover y ver elementos en la Galería de componentes

Puede mover los elementos del panel Objeto situado en la parte derecha de la ventana Galería de componentes hasta el escritorio o hasta un proyecto o formulario abierto. El Administrador de proyectos reconoce el elemento al que se refiere la Galería de componentes y lo coloca en el lugar apropiado. Los elementos de la Galería de componentes colocados en el escritorio no son funcionales. No hay ninguna representación en el escritorio para la Base de datos, Carpeta y elementos de galería que representen archivos no visuales.

Para mover elementos desde la Galería de componentes

  1. En el panel derecho, haga clic en el elemento que desee mover.

    El icono Mover, situado en la esquina superior izquierda de la ventana Galería de componentes, cambia según el elemento seleccionado.

  2. Arrastre el icono Mover y colóquelo en el escritorio o en un proyecto o formulario abierto.

Si la Galería de componentes no localiza el elemento original representado por el elemento de galería, se abre un cuadro de diálogo Buscar a fin de localizarlo.

En la tabla siguiente se identifican los elementos de galería incluidos en Visual FoxPro, así como sus comportamientos predeterminados.

Tipo de elemento de la Galería de componentes | Proyecto | Formulario | Pantalla | Controles
Clase (_ClassItem) |  |  | 6 |
Archivo (_FileItem) |  |  |  |
Dirección URL (_UrlItem) |  | 1 |  |
Formulario (_FormItem) |  | 9 | 11 |
Informe (_ReportItem) |  | 9 | 11 |
Programa (_ProgramItem) |  |  | 11 |
Menú (_MenuItem) |  | 10 | 11 |
Imagen (_ImageItem) |  | 2 | 7 | 2
Sonido (_SoundItem) |  | 3 |  |
Vídeo (_VideoItem) |  | 3 |  |
ActiveX (_ActiveXItem) |  |  |  |
Datos (_DataItem) |  | 4 |  |
Plantilla (_TemplateItem) | 5 |  |  |
Catálogo (_CatalogItem) |  |  | 8 |
Ejemplo (_SampleItem) |  |  |  |
Proyecto (_ProjectItem) |  |  | 11 |

1 – Agrega una clase de hipervínculo
2 – Agrega una clase de imagen o establece una propiedad Picture
3 – Agrega una clase multimedia
4 – Agrega una clase de cuadrícula
5 – Según el tipo (por ejemplo, formulario) crea un nuevo archivo y lo agrega al proyecto
6 – Crea una instancia en Pantalla
7 – Establece el papel tapiz de Visual FoxPro
8 – Inicia una nueva ventana de la Galería con ese catálogo
9 – Agrega una clase Button para iniciar un formulario o informe
10 – Agrega un menú contextual a un formulario
11 – Se abre en un diseñador (para modificación)

Usar menús contextuales en la Galería de componentes

Haga clic con el botón secundario en el elemento seleccionado en el panel derecho, Objeto, para que aparezca un menú contextual del elemento con todas las acciones correspondientes, como Agregar al proyecto o Agregar al formulario. Puede utilizar el menú contextual para modificar o, en algunos casos, ejecutar el elemento de galería. Los menús contextuales son característicos de cada tipo de elemento de la galería. Puede cambiar algunas de las propiedades del elemento seleccionado con la opción Propiedades del menú contextual, que abrirá el cuadro de diálogo Propiedades de elemento.

Organizar los componentes de Visual FoxPro o Windows en grupos definidos por el usuario

Las carpetas de la Galería de componentes representan una agrupación arbitraria de los elementos de galería. Puede reorganizar los elementos de la galería con la técnica de arrastrar y soltar, o bien puede duplicarlos en otras carpetas. También puede copiar y cambiar el nombre de un catálogo o carpeta, o reordenar los elementos que contiene. Hay pocos límites, si es que hay alguno, en el modo de utilizar, modificar o crear catálogos o carpetas.

Revisar y modificar clases

Debido a que los elementos de la Galería de componentes representan elementos reales que pueden ser objetos o clases, para revisarlos o modificarlos puede lograr el acceso al objeto original a través de la Galería de componentes.

Para revisar una clase

  1. En la Galería de componentes, haga clic con el botón secundario en una clase.
  2. En el menú contextual, haga clic en Ver en examinador.

    Se abrirá el Examinador de clases, en el que puede ver las propiedades y métodos de la clase seleccionada.

Para modificar una clase

  1. En la Galería de componentes, haga clic con el botón secundario en una clase.
  2. En el menú contextual, haga clic en Modificar.

    Se abrirá la clase en el Diseñador de clases.

Crear y modificar formularios

Puede utilizar la Galería de componentes para duplicar o modificar formularios y para agregar al proyecto formularios y otros elementos de la galería.

Para crear un formulario desde la Galería de componentes

  • Haga doble clic en cualquier plantilla, o bien seleccione Nuevo formulario en el menú contextual de cualquier plantilla de la carpeta Formularios de la Galería de componentes.

    –O bien–

    Haga doble clic en el Asistente para formularios en la carpeta Formularios de la Galería de componentes.

    –O bien–

    Seleccione Crear formulario en el menú contextual de los elementos de la carpeta Formularios de la Galería de componentes.

Características de edición avanzadas de la Galería de componentes

La configuración predeterminada de los catálogos y carpetas permite realizar tareas básicas de revisión y administración de elementos de la galería. Si desea modificar las características de los catálogos o carpetas, o si desea tener un mayor acceso a las propiedades de galería, seleccione Edición avanzada activada en el cuadro de diálogo Opciones de la Galería de componentes.

Vea también

Introducción a la Galería de componentes | Catálogos de la Galería de componentes | Herramientas de productividad para el desarrollo | Personalizar la Galería de componentes | Objetos miembros de la Galería de componentes


Catálogos de la Galería de componentes

Al abrir la Galería de componentes, en el panel Catálogo, situado a la izquierda, se muestra el catálogo predeterminado incluido en la Galería de componentes. Un catálogo es una representación visual de los elementos que pertenecen a un grupo de elementos de Visual FoxPro o definido por el usuario. Dentro de cada catálogo, puede crear carpetas para organizar con más detalle subgrupos de elementos. Los elementos pueden ser formularios, consultas, programas, plantillas, archivos gráficos, archivos de sonido u otros objetos. El catálogo predeterminado de la Galería de componentes de Visual FoxPro incluye elementos agrupados en varias categorías, como formularios y controles, entre otros. También incluye una carpeta vacía denominada Favoritos, que puede utilizar para crear o copiar en ella elementos de la galería. Puede copiar y cambiar el nombre del catálogo predeterminado, o crear los suyos propios.

Las opciones de catálogo de la Galería de componentes determinan el contenido del catálogo y su comportamiento al abrirlo. Los catálogos globales pueden contener cualquier tipo de elemento de la Galería de componentes. Los catálogos predeterminados se abren automáticamente al iniciar la Galería de componentes. Si desea más información, vea la ficha Catálogos del cuadro de diálogo Opciones de la Galería de componentes en la Ayuda.

La Galería de componentes incluye los catálogos siguientes.

Catálogo | Descripción
VFPGLRY | Contiene componentes que utilizan otros catálogos de la galería. Contiene todos los catálogos incluidos con Visual FoxPro. Catálogo predeterminado y global.
Visual FoxPro | Contiene las Foundation Classes de Visual FoxPro. Catálogo predeterminado.
Favoritos | Carpeta vacía. Global catalog
Mis clases de base | Contiene clases de base de Visual FoxPro en subclases. Catálogo predeterminado
ActiveX | Catálogo dinámico que contiene una lista de todos los controles ActiveX registrados, o bien una lista de todos los controles ActiveX de Visual FoxPro. Catálogo predeterminado.
World Wide Web | Colección de direcciones URL de sitios Web.
Multimedia | Diversos elementos con imágenes, sonidos y vídeos que puede utilizar en sus aplicaciones.
Ejemplos | Referencias a los ejemplos Solutions, Tastrade, servidores ActiveX y cliente-servidor.

Al hacer clic en un catálogo en la vista de lista, el panel derecho, Objeto, muestra su contenido. Puede abrir otros catálogos si hace doble clic en ellos en uno de los dos paneles. En la carpeta Galería se incluyen varios catálogos.

Vea también

Administrar proyectos con la Galería de componentes | Personalizar la Galería de componentes | Objetos miembros de la Galería de componentes | Biblioteca de clases de la Galería de componentes (Vpfgallery.vcx) | Herramientas de productividad para el desarrollo | Introducción a la Galería de componentes


Personalizar la Galería de componentes

Si desea personalizar la Galería de componentes, puede cambiar el comportamiento predeterminado de los elementos de los catálogos, carpetas y galerías a través de los cuadros de diálogo Propiedades correspondientes.

Para crear un catálogo de la Galería de componentes

  1. Seleccione el botón Opciones en la barra de herramientas Galería de componentes.
  2. Haga clic en la ficha Catálogos del cuadro de diálogo Opciones de la Galería de componentes.
  3. Haga clic en Nuevo y dé nombre al nuevo catálogo en el cuadro de diálogo Abrir.
  4. Haga clic en Aceptar.
  5. La Galería de componentes agregará el catálogo al árbol para que pueda empezar a utilizarlo como lo haría con cualquier otro catálogo existente.

Para cambiar la configuración de un catálogo o carpeta

  1. Haga clic con el botón secundario en el catálogo o carpeta.
  2. En el menú contextual, haga clic en Propiedades.
  3. En el cuadro de diálogo Propiedades de catálogo o en el cuadro de diálogo Propiedades de Carpeta, seleccione la ficha que contiene las opciones que desea configurar.

    Los catálogos y las carpetas de Galería mostrados en el panel Catálogo de la ventana Galería de componentes pueden representar direcciones URL, carpetas o archivos del disco duro. Puede ver una carpeta de la galería como Vista de Web o como Vista de Explorador, según como se especifique el nombre en la ficha General del cuadro de diálogo de propiedades de la carpeta.

Vistas de Web

Puede especificar direcciones URL o archivos como catálogos o elementos de galería. Al configurar un elemento como carpeta de galería, se abrirá automáticamente como vista de Web en el panel Objeto (derecho) al seleccionarlo en el panel Catálogo.

Para configurar un catálogo o carpeta de galería como vista de Web

  1. En el cuadro de diálogo Propiedades de Carpeta, seleccione la ficha Nodo.
  2. En el campo Carpeta dinámica, especifique el nombre de la página Web o del archivo como se hace en los ejemplos siguientes:

    http:\\www.microsoft.com\

    archivo:\\c:\mis documentos\paginatest.htm

    archivo:\\c:\mis documentos\archword.doc

Al resaltar el icono de vista Web en el panel Catálogo, la barra de herramientas se modifica para incluir los botones de navegación por el Web. La vista de Web reflejará la configuración del Explorador de Windows.

Vistas de Explorador

Puede especificar un directorio como una carpeta o catálogo de galería que tenga las características del Explorador de Windows.

Para configurar un catálogo o carpeta de galería como vista de Explorador

  1. En el cuadro de diálogo Propiedades de Carpeta, seleccione la ficha Nodo.
  2. En el campo Carpeta dinámica, especifique el nombre de una carpeta o de un archivo y una barra inversa (\), como en el ejemplo siguiente:

    C:\Mis documentos\

    Nota Esta especificación crea una vista de archivos reales, a diferencia de otras vistas de la Galería de componentes. En esta vista sí puede eliminar archivos del disco. Para crear una vista de Explorador que mantenga la protección de los archivos mostrados, especifique el destino con una designación de comodín, como en el ejemplo siguiente:

    C:\Mis documentos\*.*

Evite el uso de comodines para crear carpetas dinámicas cuando prevea encontrar más de 512 elementos, a no ser que disponga de un equipo rápido con gran cantidad de RAM.

Vea también

Catálogos de la Galería de componentes | Objetos miembros de la Galería de componentes | Herramientas de productividad para el desarrollo | Introducción a la Galería de componentes | Biblioteca de clases de la Galería de componentes (Vpfgallery.vcx)


Objetos miembros de la Galería de componentes

La Galería de componentes consta de una interfaz, cuyas clases están contenidas en Vfpglry.vcx y de elementos que hacen referencia a las Foundation Classes de Visual FoxPro siguientes:

Objeto | Descripción | Biblioteca de clases
Cuadro de diálogo Acerca de | Proporciona un sencillo cuadro de diálogo Acerca de... para aplicaciones personalizadas. | _dialogs.vcx
Calendario ActiveX | Control de calendario que puede asociarse a un campo de fecha. | _datetime.vcx
Controlador de matrices | Proporciona métodos para tratar operaciones con matrices que no realizan las funciones nativas de matrices. | _utility.vcx
Botón Cancelar | Libera un formulario y descarta los datos que queden almacenados en búfer. | _miscbtns.vcx
Reloj | Control de reloj simple para un formulario o contenedor. | _datetime.vcx
Detector de conflictos | Cuadro de diálogo para resolver los conflictos de filas que aparezcan al modificar con almacenamiento optimista en búfer. | _dataquery.vcx
Cookies (Foundation Class) | Clase simple de Web para el tratamiento de cookies entre páginas Web. | _internet.vcx
Referencias cruzadas | Genera una referencia cruzada. | _utility.vcx
Botones de edición de datos | Conjunto completo de botones de edición (como los que utilizan los Asistentes para formularios). | Wizbtns.vcx
Botones de desplazamiento en datos | Grupo de botones de desplazamiento Principio, Siguiente, Anterior y Fin y la clase DataChecker para comprobar si hay conflictos al mover registros. | _datanav.vcx
Objeto de desplazamiento en datos | Objeto de desplazamiento no visual que otras clases pueden utilizar. | _table.vcx
Administrador de sesiones de datos | Administra sesiones de datos y se ocupa de las actualizaciones. | _app.vcx
Validación de datos | Intercepta conflictos de datos almacenados en búfer. | _datanav.vcx
DBF a HTML (Foundation Class) | Convierte un cursor de Visual FoxPro (.dbf) a HTML. | _internet.vcx
Cuadro combinado de valores diferentes | Realiza una búsqueda de valores únicos en el campo de origen del control para rellenar un cuadro combinado. | _dataquery.vcx
Objeto Error | Controlador genérico de errores que funciona con código de objeto y también con código de procedimiento. | _app.vcx
Selector de campos | Cuadro de lista supermover que carga automáticamente campos del origen de datos actual. | _movers.vcx
Registro de aplicaciones | Proporciona un conjunto de funciones de registro que devuelve información específica de la aplicación. | Registry.vcx
Versión de archivo | Recupera información del recurso de versión de un archivo. | _utility.vcx
Botón del cuadro de diálogo Filtro | Muestra un cuadro de diálogo en el que especificar un filtro de datos para un campo determinado. | _table2.vcx
Cuadro de diálogo Filtro | Cuadro de diálogo que permite especificar condiciones de filtrado de los datos. | _table.vcx
Cuadro de diálogo Expresión de filtro | Crea un cuadro de diálogo para expresiones de filtro avanzadas. | _table.vcx
Botones Buscar (Buscar siguiente) | Conjunto de botones Buscar/Buscar siguiente genérico. | _table.vcx
Botón Buscar | Localiza un registro según unos criterios específicos. | _table.vcx
Cuadro de diálogo Buscar | Cuadro de diálogo Buscar con opciones simples, tales como elección de campos. | _table.vcx
Buscar archivos o texto | Utiliza el objeto COM Filer.DLL para buscar archivos. | _utility.vcx
Buscar objeto | Crea un objeto genérico que busca un registro según unos criterios específicos. | _table.vcx
Cuadro combinado Fuente | Cuadro combinado que contiene las fuentes disponibles. También lo utilizan las clases tbrEditing y rtfControls. | _format.vcx
Cuadro combinado Tamaño de fuente | Cuadro combinado que contiene los tamaños de fuente disponibles. También lo utilizan las clases tbrEditing y rtfControls. | _format.vcx
Barra de herramientas Formato | Proporciona una barra de herramientas para aplicar formato de fuente al texto del control activo. | _format.vcx
FRX a HTML | Convierte el resultado de un informe de Visual FoxPro (.frx) al formato HTML. | _internet.vcx
Obtener archivos y directorios | Recupera un nombre de archivo y de carpeta. | _controls.vcx
Botón del cuadro de diálogo Ir a | Crea un botón que muestra el cuadro de diálogo Ir a. | _table2.vcx
Cuadro de diálogo Ir a | Crea un cuadro de diálogo Ir a registro. | _table.vcx
Gráfico por registro | Grupo de botones de desplazamiento que permite actualizar un nuevo gráfico por cada registro instantáneamente. | _utility.vcx
Objeto Graph | Genera un gráfico con el motor del Asistente para gráficos. | Autgraph.vcx
Botón Ayuda | Muestra el archivo de ayuda mientras comienza a buscar el HelpContextID especificado. | _miscbtns.vcx
Botón Hipervínculo | Inicia un explorador Web desde un botón. | _hyperlink.vcx
Imagen Hipervínculo | Inicia un explorador Web desde una imagen. | _hyperlink.vcx
Etiqueta Hipervínculo | Inicia un explorador Web desde una etiqueta. | _hyperlink.vcx
Acceso a INI | Conjunto de funciones de registro que permiten el acceso a las configuraciones de archivo del antiguo tipo INI. | Registry.vcx
Localizador de elementos | Este botón abre un cuadro de diálogo con el que puede buscar un registro. | _dialogs.vcx
Cuadro de diálogo Palabras clave | Crea un cuadro de diálogo similar al cuadro de palabras clave de la Galería de componentes. | _dialogs.vcx
Botón Iniciar | Inicia una aplicación con un documento opcional. | _miscbtns.vcx
Botón Encontrar | Muestra un cuadro de diálogo con el que buscar un registro. | _table2.vcx
Cuadro combinado Búsqueda | Realiza una búsqueda de valores en un campo para rellenar un cuadro combinado. | _dataquery.vcx
Objeto Combinar correspondencia | Genera una combinación de Word Mail con el motor del Asistente para combinar correspondencia. | Mailmerge.vcx
Controlador de cuadro de mensaje | Envoltura simple de la función MessageBox. | _dialogs.vcx
Efectos MouseOver | Resalta un control cuando pasa el ratón sobre él. | _ui.vcx
Selector | Proporciona una clase sencilla de cuadro de lista de movimiento con botones mover/quitar. | _movers.vcx
Menú contextual de desplazamiento | Menú contextual que puede colocarse en un formulario. | _table2.vcx
Barra de herramientas de desplazamiento | Conjunto de botones de navegación en una barra de herramientas. | _table2.vcx
Objeto State | Determina el estado de un objeto y guarda o restablece la configuración de sus propiedades. | _app.vcx
Registro ODBC | Conjunto de funciones del Registro que devuelven información específica de ODBC. | Registry.vcx
Conmutador sin conexión | Proporciona una vista de datos con conexión para su uso sin conexión. | _dataquery.vcx
Botón Aceptar | Realiza una liberación simple de formulario. | _miscbtns.vcx
Control Output | Muestra un cuadro de diálogo complejo que solicita al usuario una opción de resultado de informe. | _reports.vcx
Cuadro de diálogo Resultados | Muestra un cuadro de diálogo que solicita al usuario una opción de resultado de informe. | _reports.vcx
Objeto Output | Diversas opciones de resultado de informe. | _reports.vcx
Cuadro de diálogo Contraseña | Sencillo cuadro de diálogo Contraseña para aplicaciones personalizadas. | _dialogs.vcx
Tabla dinámica | Genera una tabla dinámica de Microsoft Excel con el motor del Asistente para tablas dinámicas. | Pivtable.vcx
Vista previa del informe | Botón genérico para ejecutar un informe. | _miscbtns.vcx
QBF | Proporciona un conjunto de botones para consultas de tipo Consulta por formulario. | _dataquery.vcx
Acceso al registro | Proporciona acceso a la información del Registro de Windows. | _registry.vcx
Objeto Resize | Hace que los objetos de un formulario cambien de tamaño y posición cuando se produce el evento Resize del objeto Form. | _controls.vcx
Controles RTF | Proporciona un conjunto de botones para aplicar formato de fuente al texto del control activo. | _format.vcx
Botón Ejecutar formulario | Botón que ejecuta un formulario. | _miscbtns.vcx
SCX a HTML | Convierte un formulario .scx a formato HTML. | _internet.vcx
Botones Enviar correo | Utiliza el control ActiveX de MAPI para enviar un mensaje de correo desde un formulario. | _miscbtns.vcx
Ejecutar shell | Proporciona el comportamiento de doble clic del Explorador de Windows. | _environ.vcx
Clase de menú contextual | Esta clase envolvente crea dinámicamente menús contextuales emergentes. | _menu.vcx
Botones de edición simple | Proporciona sencillos botones Agregar, Editar, Eliminar, Duplicar, Guardar y Cancelar (como los de los Asistentes para formularios). | Wizbtns.vcx
Botones de desplazamiento simple | Proporciona un conjunto de botones de exploración Siguiente y Anterior. | _table.vcx
Botones de desplazamiento simple con imágenes | Conjunto de botones de exploración con imágenes sencillas. | _table2.vcx
Botón del cuadro de diálogo Ordenar | Muestra un cuadro de diálogo que permite ordenar los datos de un campo determinado de forma ascendente o descendente. | _table2.vcx
Cuadro de diálogo Ordenar | Permite realizar una ordenación ascendente o descendente de los datos de un campo determinado. | _table2.vcx
Selección de orden | Esta subclase de la clase cuadro de lista supermover se ocupa de la ordenación de los datos. | _movers.vcx
Objeto Sort | Realiza una ordenación de un origen de datos. | _table.vcx
Selector de orden | Realiza una ordenación ascendente o descendente, basada en el control actual. | _table2.vcx
Reproductor de sonido | Esta clase carga y reproduce un archivo de sonido. | _multimedia.vcx
Pantalla de inicio | Proporciona una sencilla pantalla de inicio para aplicaciones personalizadas. | _dialogs.vcx
Paso a través de SQL | Proporciona paso a través de SQL y permite ejecutar procedimientos almacenados en la base de datos host. | _dataquery.vcx
Cronómetro | Proporciona un control de cronómetro para un formulario o contenedor. | _datetime.vcx
Biblioteca de cadenas | Realiza diversas conversiones de cadenas. | _utility.vcx
Selección global | Proporciona los botones Mover, Quitar, Mover todos y Quitar todos. | _movers.vcx
Barras de herramientas del sistema | Clase administrativa que maneja y hace un seguimiento de las barras de herramientas del sistema. | _app.vcx
Selección de tablas | Esta subclase de la clase cuadro de lista supermover carga automáticamente tablas y campos desde el origen de datos actual. | _movers.vcx
Vista previa de texto | Proporciona un visor del texto resultante. | _reports.vcx
Termómetro | Proporciona una clase termómetro estándar. | _controls.vcx
Cronómetro adaptado a trazas | Utilidad de aplicación que determina si la ventana de seguimiento está abierta. | _app.vcx
Biblioteca de tipos | La rutina principal ExportTypeLib crea un archivo de texto con el resultado Typelib. | _utility.vcx
Cuadro combinado dirección URL | Crea un cuadro combinado para escribir en una dirección URL de Web. Inicia Microsoft Internet Explorer y se sitúa en el sitio correspondiente. | _internet.vcx
Cuadro de diálogo Abrir dirección URL | Proporciona un cuadro de diálogo que crea una lista desplegable con el historial de direcciones URL. | _internet.vcx
Botones VCR | Grupo de botones de desplazamiento Principio, Siguiente, Anterior y Fin. | _table.vcx
Botones de desplazamiento VCR con imágenes | Conjunto de botones de desplazamiento VCR con imágenes. | _table2.vcx
Reproductor de vídeo | Carga y reproduce un archivo de vídeo mediante comandos MCI. | _multimedia.vcx
Control Web Browser | Subclase de control Browser de Internet Explorer 4.0, que proporciona enlaces con el código de Visual FoxPro. | _webview.vcx
Controlador de ventana | Realiza diversas operaciones comunes de ventanas habituales en las aplicaciones. | _ui.vcx

Para obtener información completa acerca de estas bibliotecas de clases, vea Ejemplos Foundation Classes de Visual FoxPro, en la Ayuda. Para obtener información acerca de cómo usar Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro, en la Ayuda.

Vea también

Personalizar la Galería de componentes | Herramientas de productividad para el desarrollo | Introducción a la Galería de componentes | Biblioteca de clases de la Galería de componentes (Vpfgallery.vcx) | Estructura de la tabla de la Galería de componentes


Biblioteca de clases de la Galería de componentes (Vpfgallery.vcx)

La biblioteca de clases de la Galería de componentes, Vpfgallery.vcx, proporciona los tipos de elemento como clases.

Tipo de elemento | Descripción
Clase (_ClassItem) | Tipo de elemento genérico de cualquier clase de Visual FoxPro. Puede provenir de archivos .vcx o .prg.
Archivo (_FileItem) | Cualquier archivo. Visual FoxPro busca en el Registro funciones de shell y las agrega al menú. La galería incluye una rutina de búsqueda que comprueba si hay extensiones específicas y redirige el tipo de elemento. La galería admite las convenciones de nomenclatura UNC para el desarrollo en equipo (compartir catálogos entre redes).
ActiveX (_ActiveXItem) | Control o servidor ActiveX, como por ejemplo, un .ocx creado por Visual Basic CCE, o un archivo .exe o .dll creado por Visual FoxPro.
Datos (_DataItem) | Origen de datos de Visual FoxPro (.dbc, .dbf, Vista, etc.).
Imagen (_ImageItem) | Tipo de elemento de archivo cuya extensión corresponde a una imagen, como por ejemplo .bmp, .jpg, .gif, .ico, .cur, .ani, etcétera.
Sonido (_SoundItem) | Tipo de elemento de archivo cuya extensión es .wav o .rmi.
Vídeo (_VideoItem) | Tipo de elemento de archivo cuya extensión es .avi.
Dirección URL (_UrlItem) | Tipo de elemento de Web que incluye documentos de Web y locales, como por ejemplo archivos HTML.
Ejemplo (_SampleItem) | Tipo de elemento de archivo para archivos que se ejecutan en Visual FoxPro y que pueden ser archivos ejecutables de Visual FoxPro, como por ejemplo .app, .exe, .prg, .scx o .frx.
Plantilla (_TemplateItem) | Tipo de elemento de secuencia de comandos que abre un generador para el elemento de Visual FoxPro representado por el tipo del elemento resaltado, como un formulario o un informe.
Catálogo (_CatalogItem) | Tipo de Galería de componentes que permite agregar y abrir catálogos de Visual FoxPro.
Formulario (_FormItem) | Tipo para formularios de Visual FoxPro (.scx).
Informe (_ReportItem) | Tipo para informes de Visual FoxPro (.frx).
Menú (_MenuItem) | Tipo para menús de Visual FoxPro (.mnx).
Programa (_ProgramItem) | Tipo para programas de Visual FoxPro (.prg).
Proyecto (_ProjectItem) | Tipo para proyectos de Visual FoxPro (.pjx).

Puede utilizar el Examinador de clases para examinar los detalles de cualquiera de las clases anteriores.

Si desea más información acerca de otras clases utilizadas en la Galería de componentes, vea Ejemplos Foundation Classes de Visual FoxPro de la Ayuda o bien utilice el Examinador de clases para examinar las bibliotecas de la carpeta Ffc.

Vea también

Objetos miembros de la Galería de componentes | Estructura de la tabla de la Galería de componentes | Herramientas de productividad para el desarrollo | Aplicación Analizador de trayecto | Introducción a la Galería de componentes


Estructura de tabla de la Galería de componentes

La estructura de la Galería de componentes se describe en la siguiente tabla.

Campo | Nombre de campo | Tipo | Ancho | Índice
1 | TYPE | Carácter | 12 | No
2 | ID | Carácter | 12 | No
3 | PARENT | Memo | 4 | No
4 | LINK | Memo | 4 | No
5 | TEXT | Memo | 4 | No
6 | TYPEDESC | Memo | 4 | No
7 | DESC | Memo | 4 | No
8 | PROPERTIES | Memo | 4 | No
9 | FILENAME | Memo | 4 | No
10 | CLASS | Memo | 4 | No
11 | PICTURE | Memo | 4 | No
12 | FOLDERPICT | Memo | 4 | No
13 | SCRIPT | Memo | 4 | No
14 | CLASSLIB | Memo | 4 | No
15 | CLASSNAME | Memo | 4 | No
16 | ITEMCLASS | Memo | 4 | No
17 | ITEMTPDESC | Memo | 4 | No
18 | VIEWS | Memo | 4 | No
19 | KEYWORDS | Memo | 4 | No
20 | SRCALIAS | Memo | 4 | No
21 | SRCRECNO | Numérico | 6 | No
22 | UPDATED | DateTime | 8 | No
23 | COMMENT | Memo | 4 | No
24 | USER | Memo | 4 | No

Vea también

Biblioteca de clases de la Galería de componentes (Vpfgallery.vcx) | Aplicación Analizador de trayecto | Herramientas de productividad para el desarrollo | Introducción a la Galería de componentes | Objetos miembros de la Galería de componentes


Aplicación Analizador de trayecto

Una aplicación de trayecto escribe información acerca de las líneas de código de un archivo que se han ejecutado. Una aplicación de analizador proporciona información acerca de las líneas que se han ejecutado realmente, cuántas veces se ha ejecutado una línea, su duración, etcétera. El trayecto y el análisis permiten que el programador identifique las áreas problemáticas de las aplicaciones, especialmente el código que no se utiliza y atascos de rendimiento.

El Analizador de trayecto de Visual FoxPro se divide en dos partes: un motor de trayecto que puede utilizar o personalizar y una aplicación de varias ventanas que puede utilizar para analizar los programas y proyectos. Los archivos de origen del Analizador de trayecto no se instalan de forma predeterminada. Para utilizar estos archivos, debe descomprimir el archivo xsource.zip en la carpeta \Tools\XSource del directorio principal de Visual FoxPro.

La aplicación Analizador de trayecto ofrece distintas formas de ver los datos que proporciona el motor de trayecto. Coverage.app es una subclase del motor de trayecto. Puede automatizar el trayecto, modificar la interfaz de usuario para adaptarla a sus necesidades, ejecutar el Analizador de trayecto en modo no supervisado y no mostrar la ventana de la aplicación o utilizar las características del motor sin usar la interfaz.

Al iniciarse, la aplicación de trayecto suspende el registro de trayecto activado con un comando SET COVERAGE TO. Al liberar el objeto Coverage, la aplicación permite elegir si se desea restablecer el valor de SET COVERAGE.

En esta sección

Archivo de registro del analizador de trayecto
Describe cómo analizador de trayecto de Visual FoxPro usa un archivo de registro, que consta de registros dispuestos en líneas delimitadas por comas.
Examinar el trayecto y el perfil de una aplicación
Proporciona la información sobre cómo el archivo de registro del analizador de trayecto puede proporcionar la información exacta y útil sobre su proyecto o aplicación.
Modificar el Analizador de trayectos
Describe cómo cambiar la configuración predefinida de la aplicación analizador de trayectos para que pueda correr dentro de la ventana de FoxPro Visual, en lugar de en una ventana separada.
Complementos del Analizador de trayectos
Describe cómo escribir los complementos y reforzar la aplicación analizador de trayectos.
Registrar el trayecto del código
Explica cómo el trayecto del código ofrece información acerca de las líneas de código que se han ejecutado y el tiempo empleado para ejecutarlas. Puede usar esta información para perfeccionar su código para obtener un mejor rendimiento y garantizar que ha probado el código adecuadamente.
Conservar el espacio de disco en las ejecuciones de Coverage
Describe como puede modificar el tamaño de algunos de los campos de las tablas de trabajo del motor para que dichas tablas sean algo más pequeñas. Para evitar errores "no hay espacio en el disco" durante las ejecuciones con trayecto

Secciones relacionadas

Herramientas de productividad para el desarrollo
Proporciona la información sobre las herramientas necesarias para la programación de aplicaciones con la aplicación FoxPro.
Introducción a IntelliSence
Proporciona la información de IntelliSense en ventanas emergentes y listas desplegables que le ayuda a completar la sintaxis de las funciones e instrucciones.
Aplicación Analizador de trayectos
Una aplicación de trayecto escribe información acerca de las líneas de código de un archivo que se han ejecutado. Una aplicación de analizador proporciona información acerca de las líneas que se han ejecutado realmente, cuántas veces se ha ejecutado una línea, su duración y así sucesivamente.
Enlaces del administrador de proyectos
Describe como puede acceder a un proyecto.
Automatización de tareas de pulsación de teclas con macros
Describe como puede grabar y guardar esas secuencias de teclas en macros utilizando el cuadro de diálogo Macros
Herramientas de productividad
Describe las diferentes herramientas disponibles para crear aplicaciones con Visual FoxPro mas fácil y rápidamente.


Archivo de registro del analizador de trayecto

El analizador de trayecto utiliza un archivo de registro generado por Visual FoxPro cuando activa la opción Seguimiento en el menú Herramientas del Depurador, o cuando se utiliza SET COVERAGE TO como en el siguiente ejemplo:

SET COVERAGE TO cArchivoRegistro.log

Cuando se utiliza este comando, la cláusula ADDITIVE evita que se sobre-escriba un archivo de registro existente. Este comando inicia el flujo de datos y abre el archivo cArchivoregistro.log, que es un archivo de texto utilizado para almacenar el flujo de datos del archivo o aplicación examinada.

Un archivo de registro consiste en líneas de registros delimitados por comas. La siguiente lista describe la estructura de cada registro.

Elemento | Descripción
1 | Tiempo de ejecución
2 | Clase que ejecuta el código
3 | Objeto, método, o procedimiento en el que se encuentra o se invoca el código
4 | Número de línea dentro del método o procedimiento
5 | Archivo completamente definido
6 | Nivel en la pila de llamadas

Después de definir el nombre del archivo de registro, ejecute el programa o aplicación que desea examinar. Cuando termine de correr el programa, puede utilizar el comando SET COVERAGE TO para detener el flujo de datos hacia el archivo de registro de trayecto.

Puede ver el archivo de registro de trayecto iniciando el Analizador de trayecto en el menú Herramientas, o utilizando DO como en el siguiente ejemplo:

DO (_COVERAGE) [WITH cArchivoRegistro]

Si no especifica un nombre de archivo de registro, Visual FoxPro le pedirá un archivo. La variable de sistema de Visual FoxPro _COVERAGE tiene como valor predeterminado la aplicación Analizador de trayecto, Coverage.app.

Vea también

Estructura de la tabla de la Galería de componentes | Examinar el trayecto y el perfil de una aplicación | Herramientas de productividad para el desarrollo | Introducción a la Galería de componentes | Modificar el Analizador de trayecto

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Examinar el trayecto y el perfil de una aplicación

Para utilizar eficazmente el Analizador de trayecto, debe preparar cuidadosamente la aplicación y el entorno. Si sigue las directrices indicadas a continuación, el Analizador de trayecto le proporcionará información útil y precisa acerca de su proyecto o aplicación.

Para utilizar el Analizador de trayecto con el fin de examinar el trayecto de una aplicación

  1. Utilice la opción Registro de trayecto del menú Herramientas del depurador, o bien ejecute el comando SET COVERAGE para iniciar el flujo de datos de trayecto y abrir el archivo para registrar los datos.
  2. Ejecute el programa o aplicación cuyo trayecto desea examinar.
  3. Ejecute la aplicación de trayecto en el menú Herramientas o bien utilice DO (_COVERAGE) en la ventana de comandos.

    La aplicación Analizador de trayecto se iniciará de forma predeterminada en modo Trayecto.

Para utilizar el Analizador de trayecto con el fin de examinar el perfil de una aplicación

  1. Utilice el comando SET COVERAGE para iniciar el flujo de datos de trayecto y abrir el archivo en el que va a registrar los datos.
  2. Ejecute el programa o aplicación que desea analizar.
  3. Ejecute la aplicación de trayecto desde el menú Herramientas, o bien utilice DO (_COVERAGE) en la ventana de comandos.
  4. Haga clic en el botón Modo perfil del cuadro de diálogo Analizador de trayecto.

    Si se da cuenta de que va a utilizar el perfilado con más frecuencia, puede cambiar la opción predeterminada por el modo perfil en el cuadro de diálogo Opciones del Analizador de trayecto.

Para utilizar el Analizador de trayecto con un archivo de registro específico

  • Ejecute la aplicación de trayecto con la opción WITH y el nombre del archivo de registro como en el ejemplo siguiente:
    DO (_COVERAGE) WITH "Mylog.LOG"

    En este ejemplo se utiliza el archivo de registro Mylog.log y se abre la ventana de la aplicación Analizador de trayecto para mostrar el resultado. Si no especifica un nombre de archivo, el Analizador de trayecto utilizará el registro especificado en el comando SET COVERAGE TO actual o mostrará el cuadro de diálogo Abrir archivo si el registro de trayecto está desactivado (OFF).

Para utilizar el Analizador de trayecto sin la interfaz de usuario

  • Ejecute la aplicación de trayecto con la opción WITH y especifique verdadero (.T.) para utilizar el modo no supervisado, como en el ejemplo siguiente:
    DO (_COVERAGE) WITH "Mylog.LOG",.T.

    En este ejemplo, la aplicación Analizador de trayecto utiliza el archivo de registro Mylog.log, y se ejecuta sin mostrar su ventana de aplicación Analizador de trayecto.

Para utilizar el Analizador de trayecto con un archivo de complemento específico

  • Ejecute la aplicación de trayecto con la opción WITH y el nombre del archivo de complemento, como en el ejemplo siguiente:
    DO (_COVERAGE) WITH "Mylog.LOG",, "add_ui.prg"

    En este ejemplo se utiliza el archivo de registro Mylog.log, se abre la ventana de la aplicación Analizador de trayecto para mostrar el resultado y, a continuación, se ejecuta el programa complemento ADD_UI.PRG. El segundo parámetro, no especificado, es una variable lógica que indica si el motor de trayecto funciona en modo no supervisado. Con la opción predeterminada, falso (.F.), aparece la ventana del Analizador de trayecto.

Además de ver la información del analizador, puede insertar en ella observaciones o marcas, y guardarla en un archivo para utilizarla posteriormente.

Vea también

Aplicación Analizador de trayecto | Modificar el Analizador de trayecto | Herramientas de productividad para el desarrollo | Complementos del Analizador de trayecto | Enlaces del Administrador de proyectos


Modificar el Analizador de trayectos

De forma predeterminada, la aplicación Analizador de trayecto se ejecuta en una ventana independiente. Si lo desea, puede cambiar la opción Entorno para que se ejecute dentro de la ventana principal de Visual FoxPro. En el cuadro de diálogo Opciones del Analizador de trayecto, cambie la selección de Entorno de Marco de trayecto a Marco de FoxPro y a continuación, reinicie el Analizador de trayecto.

También puede utilizar el cuadro de diálogo Opciones del Analizador de trayecto para modificar las siguientes características del Analizador de trayecto:

Característica | Descripción
Complementos | Especifica si se deben registrar los complementos en el Analizador de trayecto cuando se utilizan.
Marcas de trayecto | Especifica si el Analizador de trayecto debe marcar el código que se ejecuta o el que no se ejecuta. Especifica los caracteres empleados para marcar el código. Especifica si se marca el código.
Fuentes | Especifica las fuentes que utiliza el Analizador de trayecto para el código y las presentaciones.
Búsqueda inteligente | Especifica si el Analizador de trayecto debe buscar automáticamente archivos en las ubicaciones especificadas anteriormente.
Modo inicio | Especifica si el Analizador de trayecto se debe abrir en el modo trayecto o en el modo perfil.

Asegurar la corrección de los datos del Analizador de trayecto

Para garantizar que los archivos que procesa el Analizador de trayecto sean los correctos:

  • Establezca el directorio del proyecto como predeterminado antes de iniciar el registro del trayecto, de forma que los archivos a los que haga referencia sean relativos a ese directorio.
  • Evite cambiar dinámicamente el nombre de los objetos. El Analizador de trayecto no encontrará los objetos cuyo nombre haya cambiado en tiempo de ejecución.
  • Evite el uso de archivos de origen cuyos nombres tengan exactamente la misma raíz, aunque las extensiones sean distintas. Internamente, el Analizador de trayecto no puede distinguirlos.
  • Asegúrese de que el proyecto sólo contiene las versiones correctas de los archivos modificados con frecuencia.
  • Asegúrese de que el proyecto no contiene varias copias de un mismo archivo en subdirectorios distintos.
  • Realice una compilación para la ejecución del trayecto:
    • Asegúrese de que la aplicación contiene información de depuración.
    • Desactive el cifrado (OFF).
    • Utilice RECOMPILE o Generar todo para imponer una nueva compilación de todo el código fuente.
    • Realice la compilación inmediatamente antes de la ejecución del trayecto, para asegurar que el código fuente concuerde exactamente con el código de objeto.

Algunas líneas del código, como los observaciones, las instrucciones DEFINE CLASS y ELSE, así como las líneas comprendidas entre TEXT .... ENDTEXT no aparecen en los registros de trayecto, ya que no son ejecutables ni siquiera potencialmente. Además, las líneas partidas por símbolos de continuación (puntos y comas) se consideran como una sola línea de código y se marcan únicamente en la última línea física.

Vea también

Examinar el trayecto y el perfil de una aplicación | Complementos del Analizador de trayecto | Herramientas de productividad para el desarrollo | Aplicación Analizador de trayecto | Enlaces del Administrador de proyectos


Complementos del Analizador de trayectos

Los complementos son archivos de código (normalmente .prg o .scx) que proporcionan un método sencillo para reajustar el Analizador de trayecto. La subclase cov_standard del motor de trayecto, que engloba la interfaz de usuario de Coverage.app, sólo muestra una pequeña parte de lo que puede hacer con el motor. El motor analiza el registro de trayecto; mientras que cov_standard simplemente muestra el resultado en una de las numerosas formas en que puede obtenerse.

Puede crear una subclase de cov_engine distinta con una presentación muy diferente. Por ejemplo, esa subclase podría mostrar un cuadro de diálogo que ejecutase consultas sobre las estadísticas de trayecto reunidas por el motor. Las opciones de presentación podrían ofrecer una vista del código marcado para un conjunto filtrado de entradas del registro o únicamente un gráfico con los resultados de perfilado.

Es posible que desee que una subclase cov_engine no cree una nueva interfaz a partir de cero, ya que la clase cov_engine proporciona un proceso más sencillo. Puede agregar funcionalidad a cov_standard, o a cualquier subclase cov_engine, mediante los complementos. Cov_standard expone esta característica a través de un botón del cuadro de diálogo principal del Analizador de trayecto. Al ejecutar un complemento en una instancia de cov_standard, como por ejemplo el Analizador de trayecto, el complemento puede manipular la capacidad de cov_engine, las tablas de trayecto y también cov_standard. Los complementos podrían además agregar nuevos cuadros de diálogo y otras características a la interfaz visual de cov_standard.

Escribir complementos

Puede escribir complementos para mejorar la interfaz estándar o bien puede crear una subclase de cov_standard para formar su propia interfaz, completamente nueva.

Mejorar la aplicación estándar

En la lista siguiente se incluyen características que se pueden proporcionar mediante complementos:

  • Agregar una característica visible al cuadro de diálogo principal.
  • Agregar un cuadro de diálogo al conjunto de formularios del motor de trayecto (observe más abajo la limitación sobre la forma de asegurarse de que el cuadro de diálogo aparezca en el lugar correcto).
  • Mostrar un cuadro de diálogo aparte para tener acceso a una característica del motor de trayecto (observe más abajo la limitación sobre la forma de asegurarse de que el cuadro de diálogo aparezca en el lugar correcto).
  • Proporcionar una interfaz de consultas que utilice la tabla de origen y presente una lista con todas las líneas que cumplan los criterios, y que filtre y ordene el resultado.
    Nota Puede utilizar los métodos Adjust… del motor (AdjustCoverageFilenameCursor( ), AdjustSourceCursor( ) y AdjustTargetCursor( )) para agregar campos a las tablas de origen y destino cuando el motor las crea y utilizar esos campos en los complementos.
  • Agregar nombres de archivo al cursor IgnoredFiles, para descartar esos archivos del análisis. Así se puede ahorrar tiempo de análisis.
  • Utilizar el enganche especial Init para los complementos.
  • Registrar los complementos para recuperarlos y tener acceso a los mismos fácilmente desde una lista.

    La clase de diálogo modal cov_AddInDialog de la subclase del motor de trayecto estándar presenta en una lista desplegable los cuadros de diálogo registrados previamente. Al establecer el valor ON en la opción IRegisterAdd-In del motor de trayecto, se agrega al Registro de Windows la ruta de acceso completa de los complementos ejecutados correctamente, lo que permite volver a ejecutarlos fácilmente. La clase Standard UI también permite establecer esta propiedad en el cuadro de diálogo Opciones del Analizador de trayecto.

    El objeto Coverage Engine mantiene en la propiedad aAddIns una lista con todos los complementos registrados.

  • Utilizar la información de los campos del archivo final coverage.log, la pila de llamadas, para diseñar su propia interfaz o su propia vista del registro de trayecto.

Al escribir complementos, considere lo siguiente:

  • Puede utilizar cualquiera de los tipos de archivo admitidos como complementos. Los tipos de archivo admitidos son .qpr, .qpx, .mpr, .mpx, .app, .exe, .scx, .fxp, .prg y los procedimientos (si ya están disponibles en una biblioteca de procedimientos abierta).
  • El conjunto de formularios del Motor de trayecto tiene una barra de herramientas "invisible". Si un complemento no es visual, puede utilizar esta barra de herramientas para que lo contenga. Si el complemento es un control visual, probablemente el lugar más adecuado para ubicarlo sea el contenedor del miembro .Cov_tools del cuadro de diálogo principal de la subclase estándar. De este modo, la posición y tamaño de la barra de herramientas se sincronizará automáticamente con el resto del cuadro de diálogo al cambiar el tamaño de éste.
  • Todos los métodos del motor que utilizan las tablas de origen y destino tienen argumentos opcionales que permiten al usuario que dichos método apunten en los alias correspondientes mientras trabaje con ellos. También puede cambiar el contenido actual de las propiedades cSourceAlias y cTargetAlias para hacerlo coincidir con el par de cursores que le interesen. Así podrá comparar diversas ejecuciones del registro de trayecto entre sí desde la misma interfaz.
  • Limitaciones:
    • Los complementos deben aceptar un parámetro (el motor de trayecto se transfiere una referencia a sí mismo).
    • Los complementos deben ser de uno de los tipos de archivo permitidos indicados anteriormente.
    • Los procedimientos que se utilicen como complementos deben estar disponibles en una biblioteca de procedimientos actualmente cargada (vea SET PROCEDURE) en la Ayuda. El motor no utiliza la sintaxis IN NombreArchivo y no llama a los procedimientos ni a los archivos .prg como funciones, ni obtiene sus valores con RETURN. Tampoco utiliza las palabras clave NAME o LINK en el comando DO FORM, por lo que puede administrar usted mismo la referencia o hacer que el formulario sea miembro del conjunto de formularios del motor para que éste lo alcance automáticamente.
    • Si ejecuta un complemento al inicio deberá utilizar una referencia, ya que la variable pública _oCoverage aún no estará disponible. En las demás ocasiones, puede utilizar la referencia de variable pública en el código propio, si lo prefiere.
    • Al escribir un complemento como un formulario, si crea el formulario con ShowWindow = 1 y ejecuta el trayecto en su propio marco, los formularios complemento deberán aparecer en el marco del trayecto.
    • Si utiliza .RunAddIn desde la ventana Comandos, asegúrese de que el marco del trayecto sea el marco MDI activo antes de crear instancias de los formularios.

Crear una subclase de la clase Cov_Standard

Puede crear una subclase del motor de trayecto o de su subclase estándar. En la lista siguiente se describe la estructura del conjunto de archivos de origen del proyecto COVERAGE.

Archivo | Descripción
Coverage.prg | "Envoltura" del objeto Coverage, que crea una instancia el objeto.
Coverage.vcx
Coverage.vct 		Todas las clases del motor y su subclase estándar.
Cov_short.mnx
Cov_short.mnt 		Menú contextual.
Cov_pjx.frx
Cov_pjx.frt 		Mecanismo predeterminado para obtener resultados del proyecto.
Coverage.h Archivo de encabezado para todo el código de trayecto, que incorpora los elementos siguientes:

*— Constantes de caracteres de trayecto para registro y análisis:

   #INCLUDE COV_CHAR.H

*— Cadenas de trayecto localizadas (puede utilizar algunas constantes de registro y análisis):

   #INCLUDE COV_LOCS.H

*— Constantes de componentes de cuadros de diálogo comunes del trayecto:

   #INCLUDE COV_DLGS.H

*— Especificaciones y requisitos del trayecto:

   #INCLUDE COV_SPEC.H

*— Constantes de objetos del registro de trayecto:

   #INCLUDE COV_REGS.H

*— Opciones de ajuste de trayecto:

   #INCLUDE COV_TUNE.H

El conjunto de archivos de origen del proyecto COVERAGE también incluye otros archivos .ico .bmp y .msk.

Puede utilizar el archivo COV_TUNE.H (que contiene los observaciones y explicaciones correspondientes) para familiarizarse con las opciones disponibles sin tener que rescribir el código.

Como el uso de complementos está controlado por la superclase del motor de trayecto, cualquier otra subclase de trayecto que cree podrá utilizar complementos de la misma forma en que lo hace la subclase estándar.

La subclase del motor de trayecto cuya instancia ha creado la aplicación predeterminada Coverage.app no aumenta el método RunAddIn( ) del motor de trayecto de ningún modo. No obstante, invoca un cuadro de diálogo modal para que el usuario pueda seleccionar un complemento antes de invocar al método RunAddIn( ) del motor de trayecto. El cuadro de diálogo modal recibe una referencia al objeto Coverage y establece la propiedad cAddIn del motor de trayecto.

Si escribe su propia subclase del motor de trayecto, asegúrese de que la subclase pueda utilizar la misma clase de cuadro de diálogo modal (cov_AddInDialog) para tratar los complementos como lo hace la aplicación de trayecto estándar. El cuadro de diálogo no se basa en ninguna característica de la subclase estándar.

Puede llamar a un cuadro de diálogo modal distinto, establecer el nombre de archivo cAddin directamente en la propiedad cAddIn o anular el contenido de esta propiedad al pasar el nombre del archivo de complemento que desea ejecutar al método RunAddIn( ).

Independientemente del modo en que logre el acceso a un complemento para ejecutarlo en una subclase, puede observar la lista de complementos registrados en Coverage.app si busca los nombres de los archivos en la propiedad aAddIns del motor de trayecto.

Si desea información acerca de las propiedades, eventos y métodos del motor de trayecto, vea Objeto Coverage Engine en la Ayuda.

Vea también

Modificar el Analizador de trayecto | Enlaces del administrador de proyectos | Herramientas de productividad para el desarrollo | Jerarquía de objetos de un proyecto | Aplicación Analizador de trayecto


Registrar el trayecto del código

En un proceso de programación posterior, podría perfeccionar el código para obtener un mejor rendimiento y garantizar que lo ha probado correctamente mediante un registro de la información de trayecto del código.

El trayecto del código ofrece información acerca de las líneas de código que se han ejecutado y el tiempo empleado para ejecutarlas. Esta información puede ayudarle a identificar las áreas de código que no se están ejecutando y, por tanto, tampoco se están comprobando, así como las que podría modificar para obtener mayor rendimiento.

Puede activar y desactivar el trayecto del código si hace clic en el botón Trayecto de código de la barra de herramientas de la ventana Depurador. Si activa el trayecto de código, se abre el cuadro de diálogo Trayecto donde puede especificar un archivo en el que se guardará esta información.

También puede activar o desactivar el registro de trayecto mediante programación con el comando SET COVERAGE TO. Por ejemplo, podría incluir el comando siguiente en la aplicación inmediatamente antes de la parte de código que desea investigar:

SET COVERAGE TO mylog.log

Después de la sección de código cuyo trayecto desee registrar, podría incluir el comando siguiente para desactivar el trayecto de código:

SET COVERAGE TO

Una vez especificado un archivo para la información de trayecto, cambie a la ventana principal de Visual FoxPro y ejecute el programa, formulario o aplicación. En el archivo de registro se escribe la información siguiente para cada línea de código que se ejecute:

  • Tiempo, en segundos, empleado en la ejecución de la línea.
  • La clase a la que pertenece el código.
  • El método o procedimiento en el que se encuentra la línea.
  • El número de la línea de código.
  • El archivo en el que se encuentra el código.
  • Call stack level in which the line of code executes.

La forma más sencilla de extraer información del archivo de registro es convertirla en una tabla de modo que se puedan establecer filtros, ejecutar consultas e informes, ejecutar comandos y manipular la tabla de otras maneras.

La aplicación Analizador de trayecto crea un cursor a partir de los datos generados en el registro de trayecto y lo utiliza en una ventana para facilitar el análisis.

El programa siguiente convierte el archivo de texto creado por el registro de trayecto en una tabla:

cFileName = GETFILE('DBF')
IF EMPTY(cFileName)
RETURN
ENDIF
CREATE TABLE (cFileName) ;
(duration n(7,3), ;
class c(30), ;
procedure c(60), ;
line i, ;
file c(100))
APPEND FROM GETFILE('log') TYPE DELIMITED

Vea también

Mostrar resultados | Controlar errores de tiempo de ejecución | Probar y depurar aplicaciones | Depurador | Trayecto | SET COVERAGE TO


Conservar el espacio de disco en las ejecuciones de Coverage

Si recibe errores "no hay espacio en el disco" durante las ejecuciones con trayecto, puede modificar el tamaño de algunos de los campos de las tablas de trabajo del motor para que dichas tablas sean algo más pequeñas.

El valor predeterminado de dichos campos es 115, ya que permite nombres largos de rutas de acceso, y nombres de objetos y de métodos también largos. No se recomiendan valores superiores a 115, puesto que dos de dichos campos podrían utilizarse en claves concatenadas en las que la suma de las longitudes de los dos campos no puede sobrepasar la longitud máxima de las claves (240).

No reduzca el tamaño del campo Hostfile a menos que pueda asegurar que las longitudes de los nombres de sus archivos de origen no la vayan a sobrepasar. De otro modo, el motor podría generar errores cuando vaya a buscar las versiones no compiladas de dichos archivos.

Si sabe que va a anidar marcos y cuadrículas en varios niveles, o que tiende a utilizar nombres de clase muy largos, especifique valores mayores que la longitud máxima de las cadenas que los campos ObjClass o Executing vayan a contener, más un margen de error. Podría desear examinar antes los archivos de origen y destino para ver cómo el motor utiliza dichos campos.

Después de haber reducido el tamaño de los campos ObjClass o Executing, preste atención a las posibles estadísticas de trayecto y análisis incorrectas. Incluso si el Analizador no genera errores obvios al analizar el registro, se producirán errores estadísticos si los nombres de los objetos y los métodos quedan recortados en dichos campos.

Normalmente, para modificar el tamaño de dichos campos se utilizan los valores de las propiedades iLenHostfile, iLenObjClass e iLenExecuting. Incluso puede modificarlos dinámicamente mientras Coverage esté abierto, antes de abrir un registro de trayecto que vaya a ser anormalmente grande.

Nota Al abrir un registro, no modifique estos valores hasta que esté preparado para evaluar un registro nuevo, ya que podría recibir errores estadísticos cuando se marquen nuevas entradas de código de destino.

Sin embargo, si ha establecido COV_TOPSPEED en verdadero (.T.) en el archivo COV_TUNE.H para aumentar la velocidad haciendo que el motor haga llamadas en línea, el motor utiliza las constantes también definidas en COV_TUNE.H, en lugar de los valores de las propiedades, para determinar el tamaño de dichos campos. (Dichos valores se utilizan repetidamente para asegurar comparaciones exactas cuando el motor analiza las líneas de código.) Si establece COV_TOPSPEED en verdadero (.T.), tiene que establecer los valores de COV_TUNE.H directamente.

Vea también

Aplicación Analizador de trayecto | Objeto Coverage Engine


Herramientas de productividad

Visual FoxPro dispone de varias herramientas que pueden utilizarse para aumentar la productividad al crear aplicaciones.

En esta sección

Usar el Administrador de lista de tareas
Describe como utilizar el Administrador de lista de tareas para realizar un seguimiento de tareas personalizadas, de acceso directo y definidas por el usuario.
Utilizar el Examinador de objetos
Con el Examinador de objetos puede ver información acerca de componentes como los objetos, clases, propiedades, métodos y eventos.
Funcionamiento de la ventana Comandos
La ventana Comandos puede utilizarse para ejecutar código. Al escribir un comando de Visual FoxPro en la ventana, el código se ejecuta de manera inmediata.
Uso del Explorador de accesibilidad
Use el Explorador de accesibilidad para comprobar que su aplicación sea compatible para gente discapacitada.
Uso del Dominio de prueba automatizada
El Dominio de prueba automatizada puede utilizarse para ejecutar secuencias de comandos que le ayuden a automatizar las pruebas a su aplicación.
Programas de utilidad
Describe las herramientas proporcionadas con Microsoft Visual FoxPro para ayudar a agilizar el proceso de desarrollo de aplicaciones.

Secciones relacionadas

Herramientas de productividad para el desarrollo
Proporciona información sobre herramientas para el desarrollador proporcionadas para programar aplicaciones con la aplicación y el lenguaje Visual FoxPro.
Introducción a IntelliSense
Describe cómo IntelliSense de Visual FoxPro muestra información en ventanas emergentes y listas desplegables que le ayudan con la sintaxis de instrucciones y funciones, y muestra las variables, objetos, propiedades, métodos y eventos de objetos disponibles.
Introducción a la Galería de componentes
Describe la Galería de componentes, un contenedor para catálogos de objetos programados, como bibliotecas de clases, formularios, botones, etcétera.
Aplicación Analizador de trayecto
Describe una aplicación de trayecto, la cual escribe información acerca de las líneas de código de un archivo que se han ejecutado. Una aplicación de analizador proporciona información acerca de las líneas que se han ejecutado realmente, cuántas veces se ha ejecutado una línea, su duración, etcétera.
Enlaces del Administrador de proyectos
Explica que en Visual FoxPro, puede acceder a un proyecto a través de programación, permitiéndole manipular un proyecto como un objeto.
Automatización de tareas de pulsación de teclas con macros
Si descubre que usa repetidamente las mismas pulsaciones de teclas, o si desea automatizar algunas tareas de pulsaciones para sus usuarios, puede recorrer y guardar estas pulsaciones en macros utilizando el cuadro de diálogo Macros.


Personalizar la Caja de Herramientas

La Caja de herramientas puede ser personalizada para que contenga las categorías y elementos que más utilice. También puede ordenar los elementos de la manera que encuentre más efectiva. Esto puede hacerse agregando o borrando una categoría, cambiando el orden de categorías, y agregando o borrando elementos de un categoría.

Antes de poder personalizar la Caja de Herramientas, es necesario que la abra primero.

Para abrir la Caja de herramientas

  • Sobre el menú Herramientas, haga clic en Caja de herramientas.

Agregar una nueva categoría

  1. Haga clic con el botón secundario sobre la Caja de herramientas, y seleccione Personalizar Caja de Herramientas en el menú contextual.
  2. En el cuadro de dialogo Personalizar caja de herramientas, haga clic sobre la carpeta de Categorías.
  3. En la parte superior del cuadro de diálogo de Personalizar caja de herramientas, haga clic en Agregar categoría.
  4. Dentro del cuadro de diálogo Agregar categoría, escriba el nombre de la nueva categoría en la caja de texto Nombre categoría.
  5. Dentro de la lista de Tipos de categoría, seleccione el tipo de la categoría que está agregando, y haga clic en ACEPTAR.

Borrar una categoría

  1. Haga clic con el botón secundario sobre la barra de herramientas, y seleccione Personalizar caja de herramientas sobre el menú contextual.
  2. En el cuadro de diálogo Personalizar caja de herramientas, haga clic sobre la categoría que quiera borrar.
  3. En la parte superior del cuadro de diálogo Personalizar caja de herramientas, haga clic en Remover categoría.
  4. Cuando se le pregunte para borrar la categoría, haga clic en Aceptar.

Agregar un elemento a una categoría

  1. Haga clic con el botón secundario sobre la caja de herramienta, y seleccione Personalizar Caja de herramientas sobre el menú contextual.
  2. En el cuadro de diálogo Personalizar Caja de herramientas, seleccione la categoría que se quiere agregar a su clase.
  3. Haga clic en Agregar Item sobre el cuadro de diálogo Personalizar Caja de herramientas.
  4. Dentro del cuadro de diálogo Agregar Item, seleccione el tipo de elemento que desee agregar, y haga clic en Aceptar.
  5. En cuado de diálogo Agregar biblioteca de clases, seleccione la categoría para agregar a su Biblioteca de clases.
  6. Haga clic en el botón Puntos (...) próximo de la caja de Biblioteca de clases, seleccione una clase para agregar desde el cuadro Abrir, y haga clic en Aceptar
  7. En el cuadro de diálogo Agregar Biblioteca de clases, haga clic en Aceptar.

Borrar un elemento de una categoría

  1. Haga clic con el botón secundario sobre la caja de herramientas, y seleccione Personalizar caja de herramientas sobre el menú contextual.
  2. En el cuadro de diálogo Personalizar caja de herramientas, seleccione la categoría de la cual se desea borrar un elemento.
  3. En la lista de Categorías de Items, seleccione el elemento que quiere borrar.
  4. Haga clic en Remover Item en el cuadro de diálogo Personalizar caja de herramientas.
  5. Cuando se le pregunte para borrar el elemento, haga clic en Aceptar.

Vea también

Herramientas de productividad | Caja de herramientas


Uso del Administrador de lista de tareas

Puede mantener el rastro de tareas usando el Administrador de lista de tareas, el cual almacena tareas en el archivo de tabla FoxTask.dbf. Puede crear los siguientes tipos de tareas:

  • Acceso directo Hace referencia a una línea específica del código fuente a la que podría querer volver para modificarla o verla más adelante.
  • Tarea definida por el usuario Especifica una tarea pendiente o un elemento de información cuyo seguimiento desea realizar. Se agregan manualmente.
  • Otra tarea Una tarea personalizada. Su aplicación debe agregar este tipo de tarea mediante programación.
    • Nota Asegúrese de establecer el campo Type de una tarea personalizada como "O" en el archivo FoxTask.dbf, el cual se referencia por la variable de sistema _FOXTASK. Para más información, consulte _FOXTASK (Variable de sistema).

Para abrir el Administrador de lista de tareas

  • En el menú Herramientas haga clic en Lista de tareas.

Para más información, vea ventana Administrador de lista de tareas.

Trabajar con tareas

Puede realizar algunas acciones en el Administrador de lista de tareas, tales como agregar, editar, priorizar, establecer estado para y borrar tareas.

Agregar tareas

Puede agregar tareas de acceso directo y definidas por el usuario en el Administrador de lista de tareas.

Para agregar una tarea de acceso directo

  1. Abra el archivo de programa en el cual desea crear el acceso directo.
  2. En la ventana de edición de código fuente, seleccione la línea de código en la que desea crear un acceso directo.
  3. En el menú Editar, señale Marcadores y haga clic en Alternar acceso directo a la lista de tareas.

También puede agregar un acceso directo haciendo uno de los siguientes después de seleccionar la línea de código:

  • Haga clic derecho en el código seleccionado y luego haga clic en Agregar acceso directo a la lista de tareas.
  • Presione ALT+F2 para agregar o quitar el acceso directo.
  • Mantenga presionada la tecla CTRL y haga doble clic en Margen de selección del editor.

Las tareas de acceso directo se indican por una flecha en la columna tipo de tarea.

Para agregar una tarea definida por el usuario

  1. En la ventana Tareas, haga clic en Haga clic aquí para agregar una nueva tarea en la columna Contenido.

    Aparece un cursor en el cuadro de texto.

  2. Escriba información acerca de la tarea que desea realizar.
  3. Cuando haya terminado, presione Entrar o haga clic fuera del cuadro de texto.

    La tarea se agrega al final de la lista y puede entrar información adicional.

Las tareas definidas por el usuario se indican con una persona en la columna tipo de tarea.

Editar tareas

Puede editar una tarea directamente en la Lista de tareas o utilizar el cuadro de diálogo Propiedades de la tarea, este cuadro de diálogo contiene las fichas Tarea y Campos, las cuales muestran información para todos los campos disponibles, aunque no se muestren en la ventana Tareas.

Nota Al hacer doble clic en una tarea de acceso directo en la ventana Tareas, se abre la ventana de edición apropiada y se mueve directamente a ese acceso directo.

Para editar una tarea en el cuadro de diálogo Propiedades de la tarea

  1. En la columna tipo de tarea (tercera columna desde la izquierda), haga doble clic en el icono próximo a la tarea.
  2. En el cuadro de diálogo Propiedades de la tarea haga clic en la ficha Tarea.
  3. Edite los campos y establezca lo que desea.

También puede abrir el cuadro de diálogo Propiedades de la tarea haciendo clic derecho en la tarea y, haciendo clic en Abrir tarea.

Priorizar tareas

Puede establecer y organizar prioridades para tareas.

Para establecer una prioridad para una tarea

  1. En la columna prioridad, indicada por una marca de exclamación (!), haga clic en el cuadro para la tarea que desea
  2. En la lista, seleccione una prioridad.

Puede organizar tareas por prioridad haciendo clic en la cabecera de la columna prioridad. También puede entrar una fecha de vencimiento para una tarea.

Marcar tareas

Puede marcar tareas para indicar su estado como leída o completa en el Administrador de lista de tareas.

Marcar tareas como leídas

Las tareas que todavía no están leídas aparecen en negrita. Puede marcar una tarea como leída cuando haya terminado de leer acerca de la tarea.

Para marcar una tarea como leída

  • Haga clic derecho en la tarea, y luego haga clic en Marcar como leída.

    Cuando una tarea está leída, no aparece más en negrita.

También puede marcar una tarea como leída abriendo el cuadro de diálogo Propiedades de la tarea, haciendo clic en la ficha Tarea y, seleccionando la casilla Leída.

Marcar tareas como completa

Puede marcar tareas como completa cuando haya terminado con la tarea.

Para marcar una tarea como completa

  • En la columna Lista de tareas o segunda columna desde la izquierda, active la casilla de verificación para la tarea que desea completar.

    Cuando una tarea está completa, aparece como texto tachado.

También puede marcar una tarea como completa haciendo clic derecho en la tarea y luego haciendo clic en Marcar como completa o abriendo el cuadro de diálogo Propiedades de la tares hacer clic en la ficha Tarea y activar la casilla Completa.

Eliminar tareas

Puede eliminar tareas en el Administrador de lista de tareas.

Nota Las tareas de acceso directo también se eliminan automáticamente cuando se quita el acceso directo del editor.

Para eliminar una tarea

  • Haga clic derecho en la tarea y luego clic en Eliminar tarea.

Agregar archivos a tareas definidas por el usuario

Las tareas de acceso directo tienen un archivo asociado automáticamente con ellas. Puede agregar asociaciones de archivos para tareas definidas por el usuario u otras tareas, aunque esto no se requiere.

Para agregar una asociación de archivo

  • En el campo Nombre de archivo para la tarea, escriba la ruta completa y nombre de archivo y cualquier información adicional necesaria, tal como una línea o método.

También puede agregar una asociación de archivo abriendo el cuadro de diálogo Propiedades de la tarea e ingresando el nombre de archivo en el campo Nombre de archivo.

Abrir archivos para editar

Puede abrir y editar archivos asociados con tareas.

Para abrir y editar un archivo asociado con una tarea

  • Haga doble clic sobre la tarea en la ventana Tareas.

También puede hacer clic derecho en tareas de acceso directo o definidas por el usuario que tengan archivos asociados, y luego hacer clic en Abrir archivo.

Editar campos personalizados

Puede editar campos personalizados existentes en el Administrador de lista de tareas.

Para editar campos personalizados

  1. En la columna tipo (tercera columna desde la izquierda), haga doble clic en el icono próximo a la tarea.
  2. En el cuadro de diálogo Propiedades de la tarea haga clic en la ficha Campos.

    Aparece una lista de campos personalizados disponibles.

Limpiar y editar la tabla de lista de tareas

Puede limpiar la tabla de lista de tareas y editar la estructura de las columnas definidas por el usuario.

Para limpiar la tabla de lista de tareas

  1. Haga clic derecho en la ventan Tareas y luego clic en Opciones.
  2. En el cuadro de diálogo Opciones de lista de tareas haga clic en Limpiar FoxTask.

Para editar la estructura de columnas definidas por el usuario

  1. Haga clic derecho en la ventana Tareas y entonces haga clic en Opciones.
  2. En el cuadro de diálogo Opciones de lista de tareas, haga clic en Editar estructura.

Personalizar el Administrador de lista de tareas

La vista del Administrador de lista de tareas se puede personalizar de diferentes maneras:

  • Ordenar las tareas Para ordenar la lista de tareas haga clic en el encabezado de la columna del campo por el que desea ordenar. Al hacer clic repetidamente en una columna se alterna el orden ascendente y descendente.
  • Filtrar los tipos de tareas Para filtrar los tipos de tareas que desea mostrar en la Lista de tareas, seleccione los tipos de tareas en el submenú Mostrar tareas del menú contextual Lista de tareas. El submenú contiene opciones para mostrar tareas de acceso directo, definidas por el usuario y otras.
  • Elegir los campos que se van a mostrar Para elegir los campos que desea ver en la Lista de tareas, elija Seleccionador de columnas en el menú contextual Lista de tareas. Se muestra un cuadro de selección de columnas para que pueda agregar nuevos campos mediante la técnica de arrastrar y soltar directamente en la Lista de tareas. Para quitar un campo, haga clic con el botón secundario en el encabezado de la columna y seleccione Quitar esta columna.
  • Agregar campos personalizados Puede agregar campos personalizados a la Lista de tareas. Los campos personalizados se almacenan en una tabla diferente de la tabla _FOXTASK (Foxtask.dbf) principal. Esta tabla de campos personalizados debe tener un campo UniqueID para que se pueda vincular al campo en la tabla Foxtask. Los campos personalizados se pueden modificar en la ficha Campos del cuadro de diálogo Propiedades de la tarea.

    Puede agregar una tabla de campos personalizados nueva o existente en el cuadro de diálogo Opciones. Para abrir el cuadro de diálogo Opciones, seleccione Opciones en el menú contextual Lista de tareas. Todos los campos personalizados se muestran en el cuadro de diálogo Seleccionador de columnas, de modo que puede agregarlos o quitarlos de la Lista de tareas.

Vea también

Ventana Administrador de lista de tareas | _FoxTask (Variable del sistema) | _TASKLIST (Variable del sistema) | Crear marcadores y accesos directos a la lista de tareas


Uso del Examinador de objetos

El Examinador de objetos permite examinar, filtrar y buscar componentes que desea utilizar en sus proyectos.

Para invocar al Examinador de objetos

  • Haga clic en el botón Examinador de objetos en la barra de herramientas Estándar.

Usted también puede abrir el examinador de Objeto pulsando el botón de examinador de Objeto en la barra de herramientas principal de Visual FoxPro, o, teclee la línea siguiente de código en la ventana de comandos:

DO (_OBJECTBROWSER)

Note Después de cargarlo, se puede tener acceso al Examinador de objetos mediante programación, utilizando la variable global _objectbrowser.

Se puede ver cualquier biblioteca de tipos de clases COM que esté registrada en el sistema. El panel izquierdo muestra una lista de todas las bibliotecas de tipos de clases cargadas. Puede expandir cada una de ellas para que muestre las clases que contienen una biblioteca. En el panel derecho se muestran los miembros asociados a esas clases.

Trabajar con clases

Las clases proporcionan información de miembro completa acerca de un componente COM o control ActiveX determinado que desee utilizar en su aplicación. Normalmente, las instancias de estos objetos se crean mediante una de las siguientes funciones de Visual FoxPro:

CREATEOBJECT( ), CREATEOBJECTEX( ), NEWOBJECT( ), GETOBJECT( ), Método ADDOBJECT
Nota Normalmente, los controles ActiveX se colocan directamente en una clase de formulario y sus instancias se crean en el formulario.

Para aumentar los detalles de una clase y ver la información del miembro, seleccione la clase en el nodo Clases, en el panel Clases y miembros. Una vez seleccionada, las propiedades, métodos y eventos de esa clase se muestran en el panel Miembros situado a la derecha. Los miembros protegidos se muestran con un icono de candado.

Al hacer clic en los miembros de clase en el panel Miembros, se muestra información detallada en el panel Descripción. El contenido del panel Descripción proporciona detalles acerca del tipo de datos de los parámetros y valores devueltos del miembro. Los elementos subrayados en el panel Descripción son vínculos donde puede hacer clic para ir directamente a ese elemento y ver más información. Si está disponible, en el panel Descripción también se mostrará una descripción funcional del miembro.

Trabajar con propiedades, métodos y eventos

La mejor manera de ver las propiedades, métodos y eventos es utilizar una clase determinada en el panel Miembros. Normalmente, sólo se trabaja con una clase al mismo tiempo. Es posible que alguna vez desee ver todas las propiedades, métodos y eventos de una biblioteca sin filtrarlos por clase. Para ello, haga clic en el nodo correspondiente en el panel Clases y miembros. Dependiendo del tamaño de la biblioteca de tipos, la enumeración de todos los miembros podría llevar algunos segundos o minutos.

Al hacer clic en una propiedad, método o evento en el panel Clases y miembros, en el panel Miembros podrá ver todas las clases e interfaces que lo utilizan.

Trabajar con clases en la caché

Al expandir uno de los nodos Propiedades, Métodos o Eventos en el panel Clases y miembros, la presentación de todo el contenido podría llevar algún tiempo. Por ello, el Examinador de objetos almacena esta información en la caché, en el archivo Objectbrowser.dbf. Así se ahorra tiempo cuando desee volver a cargar la biblioteca más adelante. Haga clic en el botón Actualizar para que las propiedades, métodos y eventos se vuelvan a cargar la siguiente vez que se expanda uno de esos nodos.

Trabajar con constantes y enumeraciones

Muchas bibliotecas de tipos contienen constantes. Una constante equivale a una directiva #DEFINE numérica con la que están familiarizados los programadores de Visual FoxPro. Las enumeraciones son colecciones de dos o más constantes.

La peculiaridad de las enumeraciones es que un miembro puede especificar una enumeración como el tipo de datos de un parámetro o valor devuelto. Para un parámetro, esto significa que el valor que se pasa a un parámetro debe ser una de las constantes asociadas a la enumeración especificada.

Para ver el valor de una constante, haga clic en ella y vea el valor numérico en el panel Descripción.

Al especificar una constante para el parámetro de un método, debe pasar el valor numérico real. A diferencia de otros lenguajes, como Visual Basic, Visual FoxPro no reconoce el nombre de la constante como referencia.

Para crear un conjunto de directivas #DEFINE que representen todas las constantes, utilice la técnica de arrastrar y soltar desde el nodo Constantes de una biblioteca de tipos a una ventana del editor.

Trabajar con interfaces

Los programadores avanzados podrían querer trabajar con interfaces específicas en la biblioteca COM. En Visual FoxPro, las interfaces resultan especialmente útiles cuando se crean servidores COM que utilizan la cláusula IMPLEMENTS del comando DEFINE CLASS. La cláusula IMPLEMENTS toma el nombre de una interfaz y se puede utilizar asociada a diferentes servicios COM+ así como con la función EVENTHANDLER( ).

Para crear una plantilla de clase, utilice la técnica de arrastrar y colocar desde un nodo Interfaz a una ventana del editor. Esta plantilla contendrá todas las instrucciones IMPLEMENTS y la información de miembro de la interfaz.

Buscar en bibliotecas

Para realizar búsquedas de texto en una biblioteca, haga clic en el botón Buscar. El botón Buscar muestra una vista Buscar única encima de los dos paneles principales. La vista "Busqueda Simple" busca la cadena especificada en todas las bibliotecas abiertas. Se realiza una búsqueda de las cadenas “contenidas en” en todos los elementos de una biblioteca. La vista Búsqueda avanzada permite realizar búsquedas más refinadas.

Persistencia de los datos del Examinador de objetos

La sesión del Examinador de objetos se mantiene de una vez a otra. La información del Examinador de objetos se guarda en la tabla objectbrowser.dbf almacenada en la misma ubicación que el Examinador de objetos. Esta información incluye:

  • La lista Historial reciente con todas las bibliotecas abiertas anteriormente, de modo que pueda volver a recuperar una de estas bibliotecas rápidamente.
  • Las propiedades, métodos y eventos de una biblioteca almacenados en la caché para que se puedan cargar rápidamente la próxima vez que se necesiten.
  • Todos los complementos anteriormente instalados.
  • Las preferencias del usuario especificadas en el cuadro de diálogo Opciones.
  • Los componentes COM y los controles ActiveX mostrados en el cuadro de diálogo Abrir (almacenados en Foxrefs.dbf).

Trabajar con complementos

  • Los complementos del Examinador de objetos pueden realizar diferentes funciones que no son nativas del propio examinador. Estas son, entre otras, agregar elementos adicionales de la interfaz de usuario, nuevos elementos de menú y la técnica de arrastrar y soltar.

    Normalmente, los complementos se crean como clases VCX.

Asistente para instalar complementos existentes

En el primer paso del asistente para instalar complementos existentes se especifican las siguientes opciones:

  • Escriba un nombre significativo para el complemento, tal y como desea que aparezca en la lista Complementos del cuadro de diálogo Opciones.
  • Escriba la descripción del complemento, tal y como desea que aparezca en la lista Complementos del cuadro de diálogo Opciones.
  • Seleccione el icono que se mostrará en la lista Complementos del cuadro de diálogo Opciones (opcional).

En el segundo paso se especifica la información de clase del complemento.

  • Seleccione la clase del complemento y su biblioteca de clases.

En el tercer paso, opcional, se proporciona información de soporte:

  • Puede especificar la dirección URL de una página Web que proporciona información adicional acerca de cómo utilizar el complemento. También puede proporcionar el HTML específico que aparece en la descripción del complemento.

El último paso permite terminar la instalación del complemento.

  • Puede especificar algunas opciones avanzadas. Entre otras, Propiedades y Opciones definidas por el usuario.

Vea también

Examinador de objetos | Examinador de clases | _ObjectBrowser (Variable del sistema) | DEFINE CLASS | EVENTHANDLER( ) | Ver información de bibliotecas de tipos


Funcionamiento de la ventana Comandos

Puede ejecutar un comando de Visual FoxPro si lo escribe en la ventana Comandos y presiona ENTRAR. Para volver a ejecutar el comando, lleve el cursor a cualquier lugar de una línea que contenga el comando y presione nuevamente ENTRAR.

Puede ejecutar varias líneas de código en la ventana Comandos como si constituyeran un programa independiente.

Para ejecutar varias líneas de código en la ventana Comandos

  1. Seleccione las líneas de código.
  2. Presione ENTRAR o elija Ejecutar selección en el menú emergente.

Como la ventana Comandos es una ventana de edición, puede modificar comandos con las herramientas disponibles en Visual FoxPro. Puede modificar, insertar, eliminar, cortar, copiar o pegar texto en la ventana Comandos.

La ventaja que supone poder escribir código en la ventana Comandos radica en el hecho de que las instrucciones se ejecutan de inmediato. No es necesario guardar un archivo y ejecutarlo como un programa.

Además, las opciones que elige en los menús y los cuadros de diálogo aparecen en la ventana Comandos como comandos. Puede copiar y pegar estos comandos en un programa de Visual FoxPro y a continuación ejecutar el programa repetidamente, lo cual facilita la ejecución de miles de comandos repetidamente.

Vea también

Ejecutar código manualmente | Crear programas | Ventana Comandos


Uso del Explorador de accesibilidad

El Explorador de accesibilidad es una sencilla herramienta de exploración que permite programar aplicaciones más accesibles para personas con discapacidades. Siguiendo las instrucciones del diseño de accesibilidad y utilizando Active Accessibility cuando sea necesario, puede hacer que las aplicaciones sean más accesibles. Además, el Explorador de accesibilidad puede ayudarle a escribir grupos de prueba automatizados o a seleccionar y comprar software de prueba externo.

El Explorador de accesibilidad permite examinar las propiedades IAccessible de los objetos y cómo se relacionan los objetos entre sí. El Explorador de accesibilidad se instala en la carpeta MSAA del subdirectorio Tools. Se incluye el código fuente para que pueda mejorar la funcionalidad de esta herramienta de exploración.

Para iniciar el Explorador de accesibilidad

  1. En el menú Programa, seleccione Ejecutar.
  2. En el cuadro de diálogo Ejecutar, seleccione el archivo ..\Tools\MSAA\accbrow.app y haga clic en el botón Ejecutar.

Vea también

Ventana Explorador de accesibilidad | Herramientas de productividad para el desarrollo | Accesibilidad para personas con discapacidades | SYS(2800) - Soporte de accesibilidad


Uso del Arnés de prueba automatizado

El Dominio de prueba automatizada es una herramienta destinada a ayudar a crear secuencias de comandos que se pueden ejecutar para automatizar las pruebas de las aplicaciones de Visual FoxPro. La herramienta utiliza la tecnología Microsoft Accessibility (MSAA) para grabar y reproducir los eventos del ratón y el teclado.

Los archivos de la herramienta se instalan en la carpeta Microsoft Visual FoxPro 8.0\Tools\Test\.

Para obtener información adicional acerca de la herramienta, consulte el archivo léame (aatesthelp.htm) en la carpeta \Tools\Test.

Para ejecutar el Dominio de prueba automatizada

  1. Ejecute el Dominio de prueba automatizada situado en \Tools\Test\AATEST.APP o bien, en el símbolo del sistema de Visual FoxPro, escriba:
    DO (HOME() + "tools\test\aatest")
  2. Para grabar la secuencia de comandos, haga clic en Grabar en la barra de herramientas o en el menú Grabar. Se muestra una lista de las aplicaciones disponibles.
  3. Seleccione una aplicación de Visual FoxPro y, cuando se le pida, escriba el nombre de la secuencia de comandos de texto.

    Se muestra la aplicación o ventana de Visual FoxPro seleccionada y la herramienta está lista para grabar los eventos.

  4. Grabe los eventos. Ejecute la aplicación como haría normalmente utilizando el teclado y el ratón. Asegúrese de desplazarse por todos los elementos de la interfaz de usuario, incluidos formularios, menús, ventanas y cuadros de diálogo.
  5. Cuando termine, haga clic en Detener en la barra de herramientas. También puede hacer una pausa y continuar la grabación cuando lo necesite.

Para ver el registro de eventos, que se ha seleccionado o grabado, haga clic en "Edit the script".

Para reproducir las secuencias de comandos, seleccione la secuencia de comandos que desea ejecutar y haga clic en Reproducir. Si el programa detecta un error, verá un mensaje en la aplicación de prueba.

Para ver el registro de la prueba, seleccione la ficha Test Log.

Nota Sólo se puede ejecutar una instancia de la herramienta de prueba en una instalación, porque las tablas de prueba se abren de forma exclusiva.

Vea también

Probar y depurar aplicaciones | Ventana Explorador de accesibilidad | Depuración y control de errores


Programas de utilidad

Estas herramientas se ofrecen junto con Microsoft Visual FoxPro para acelerar el proceso de programación de la aplicación.

En esta sección

Addlabel.app (Ejemplo)
Agrega tamaños de etiqueta al cuadro de diálogo de la nueva etiqueta en el Diseñador de etiquetas.
Analizador de código (Ejemplo)
Proporciona control visual, un menú y opciones de teclado para desplazarse a través del código en el archivo de la aplicación, utilizando la salida del Asistente para documentación.
Filer.dll
Admite las características más populares de Filer, incluyendo buscar cadenas de texto en archivos y abrir múltiples archivos para editarlos.
Gendbc.prg
Genera un programa que puede volver a crear una base de datos.
Genhtml.prg
Genera una página Web basada en los datos de una tabla.
Hexedit.app
Examina o cambia valores de dirección, bytes y ASCII de los datos de un archivo.

Secciones relacionadas

Herramientas de productividad
Discute las diversas herramientas disponibles para ayudarle a crear aplicaciones de Visual FoxPro de una manera más rápida y sencilla.
Usar el Administrador de lista de tareas
Explica como el Administrador de lista de tareas puede ayudar a mantener el rastro de tareas de acceso directo, definidas por el usuario y personalizadas.
Utilizar el Examinador de objetos
Describe cómo el Examinador de objetos le permite ver información acerca de componentes, tales como objetos, clases, propiedades, métodos y eventos.
Funcionamiento de la ventana Comandos
Explica que la Ventana de comandos puede usarse para ejecutar código que cuando escribe un comando de Visual FoxPro en la ventana, el código se ejecuta inmediatamente.
Uso del Explorador de accesibilidad
Describe cómo puede utilizar el Examinador de accesibilidad para comprobar si su aplicación es accesible a personas con discapacidades.
Uso del Dominio de prueba automatizada
Explica el Dominio de prueba automatizada puede utilizarse para ejecutar secuencias de comandos que le ayuden a automatizar la prueba de su aplicación.


Addlabel.app

La aplicación Addlabel.app, que se encuentra en el directorio Tools\Addlabel de Visual FoxPro, le permite agregar tamaños de etiqueta al cuadro de diálogo Etiqueta nueva del Diseñador de etiquetas al agregar nuevos tamaños al Registro de Windows.

DO Addlabel.app

Agregar tamaños de etiqueta

Si no ve el tamaño de etiqueta que necesita en el Diseñador de etiquetas, puede agregar tamaños de etiquetas al cuadro de diálogo Nueva etiqueta si agrega las definiciones de la nueva etiqueta.

Para agregar una definición de etiqueta

  1. Ejecute Addlabel.app.
  2. En el cuadro de diálogo Etiquetas personalizadas, elija Nueva.
  3. En el cuadro Nombre de etiqueta del cuadro de diálogo Definición de nueva etiqueta, escriba un nombre para definir la nueva etiqueta. Este nombre se mostrará en el cuadro de diálogo Nueva etiqueta cuando se cree una nueva etiqueta.
  4. En los cuadros de texto que se muestran a lo largo de la explicación de la etiqueta, escriba los valores de alto, ancho y márgenes de la etiqueta. También debe especificar cuántas etiquetas se van a imprimir en una fila en el control de tipo numérico Número de etiquetas.
  5. Elija Agregar.

Vea también

Analyzer.app (Ejemplo) | Cpzero.prg (Ejemplo) | Gendbc.prg | Genhtml.prg | Hexedit.app | Diseñador de etiquetas | Programas de utilidad


Analizador de código

La aplicación Analyzer.app, que se encuentra en la carpeta Tools\Analyzer de Visual FoxPro, proporciona una forma de realizar un seguimiento dinámico de la estructura y de los símbolos de los archivos de aplicación de Visual FoxPro. El Analizador de código proporciona controles visuales, un menú y opciones de teclado para desplazarse a través del código de archivo de aplicación mediante los datos procedentes del Asistente para documentación.

DO HOME( ) + 'tools\analyzer\analyzer' WITH 'DocWizTargetDirectory'

Parámetros

DocWizTargetDirectory
Especifica el nombre del directorio de destino del Asistente para documentación.

Fichas del Analizador de código

Símbolos
Proporciona acceso a todos los símbolos del usuario en el documento de código abierto.
Jerarquías
Muestra la jerarquía del árbol al que se ha llamado o la jerarquía de clases del programa.

Vea también

Addlabel.app (Ejemplo) | Cpzero.prg (Ejemplo) | Gendbc.prg | Hexedit.app | Genhtml.prg | Asistente para documentación | Ficha Jerarquías, Analizador de código | Ficha Símbolos, Analizador de código | Programas de utilidad


Ficha Símbolos, Analizador de código

En esta ficha se muestran los símbolos disponibles en su código documentado y ofrece una manera de desplazarse por el código y entre símbolos. La ficha contiene los siguientes controles.

Opciones de la ficha

Ir a
Abre una ventana de texto o mueve el cursor a la primera aparición del símbolo seleccionado en la cuadrícula Archivos.
Siguiente
Mueve el cursor de la ventana de texto a la primera aparición del símbolo seleccionado en la cuadrícula Archivos.
Símbolos
Muestra todos los símbolos disponibles en el archivo documentado.
Archivos
Muestra los procedimientos y los archivos en los que aparece el símbolo seleccionado.

Vea también

Asistente para documentación | Ficha Jerarquías, Analizador de código | ANALYZER.app (Ejemplo) | Programas de utilidad


Ficha Jerarquías, Analizador de código

Esta ficha muestra la jerarquía del árbol que llama o el diagrama de clases de su programa. La ficha contiene los siguientes controles:

Opciones de la ficha

Archivos
Muestra la jerarquía del árbol o el diagrama de clases de su programa.
Opción
Selecciona las presentaciones que se alternan del control Outline de Archivos.

Vea también

Asistente para documentación | Ficha Símbolos, Analizador de código | ANALYZER.app (Ejemplo) | Programas de utilidad


Cpzero.prg

Ubicado en la carpeta Tools\Cpzero de Visual FoxPro, Cpzero.prg quita la marca de página de códigos de cualquier archivo que tenga una estructura de archivos de tabla. Tras haber quitado la marca, Cpzero aplica cualquier otra marca que especifique.

Normalmente se usa Cpzero con archivos de otras plataformas o de versiones anteriores de FoxPro. Si estos archivos no tienen marca de página de códigos cuando los abre, Visual FoxPro le pide una página de códigos. Sin embargo, si se especifica una página de códigos equivocada los datos de los archivos no se mostrarán adecuadamente. Para corregir la página de códigos, use Cpzero.

DO Cpzero [WITH "filename"[, codepage_number]]

Parámetros

filename
Especifica el nombre del archivo y debe escribirse entre comillas simples o dobles. Si no se incluye filename, se muestra el cuadro de diálogo Buscar archivo.
codepage_number
Especifica el Páginas de códigos compatibles con Visual FoxPro deseada. Si no se incluye, se muestra el cuadro de diálogo Página de códigos.
Nota Antes de ejecutar Cpzero en una tabla, asegúrese de que esté cerrada.

Ejemplo

* Remove the code page from MYFILE.DBF and specify 437
* as the new code page.
*
DO Cpzero WITH 'MYFILE.DBF',437

Vea también

Addlabel.app (Ejemplo) |Analizador de código (Ejemplo) | Gendbc.prg | Genhtml.prg | Hexedit.app | Páginas de códigos compatibles con Visual FoxPro | CPCONVERT( ) (Función) | CPCURRENT( ) (Función) | CPDBF( )(Función) | GETCP( ) (Función) | Programas de utilidad | SET CPDIALOG (Comando) | SET NOCPTRANS (Comando)


Filer.dll

Filer.dll es una versión componente del accesorio de escritorio Filer, disponible en versiones anteriores de Microsoft Visual FoxPro (versiones 3.0b y anteriores). Filer.dll acepta las funciones más conocidas de Filer, incluida la búsqueda de cadenas de texto en archivos y la edición de varios archivos al mismo tiempo.

Filer.dll es un objeto COM, y como tal, acepta Automatización. Por lo tanto, puede crear una instancia de Filer.dll en Visual FoxPro o en otros servidores de Automatización como Microsoft Visual Basic y Microsoft Excel.

Filer.dll es un componente base que proporciona el motor de búsqueda de archivos y de texto, pero no incluye la interfaz de usuario. Por ejemplo, puede crear una instancia del objeto Filer en un programa, y buscar y manipular archivos sin necesidad de entradas por parte del usuario. No obstante, se proporciona un formulario de Visual FoxPro, Filer.scx (y Filer.sct), para demostrar como se puede crear una interfaz de usuario para Filer.dll.

El siguiente comando creará una instancia del motor de búsqueda no visual de Filer en Visual FoxPro. La sintaxis para otros servidores de Automatización sería similar.

oMyFiler = CREATEOBJECT('Filer.FileUtil')

Después de que se haya creado el objeto Filer, puede especificar las condiciones de búsqueda de archivos con las propiedades de Filer y, después, ejecutar la búsqueda con el método Find( ). El método Find crea un objeto de colección Files, con su propio conjunto de propiedades, que le permiten determinar información acerca de los archivos que cumplen las condiciones de búsqueda. También existen métodos para el objeto de colección Files que le permiten abrir o eliminar los archivos que cumplen las condiciones.

El siguiente ejemplo de Visual FoxPro muestra cómo se pueden buscar y abrir archivos de texto desde Visual FoxPro.

*** Instantiate the Filer object
oMyFiler = CREATEOBJECT('Filer.FileUtil')

oMyFiler.SearchPath = HOME() && Home directory
oMyFiler.FileExpression = '*.TXT' && Text file search
oMyFiler.Find(0) && Search, discard last collection
FOR nFileCount = 1 TO oMyFiler.Files.Count
oMyFiler.Files.Item(nFileCount).Edit && Open files
ENDFOR

Distribución

Está permitida la distribución de los archivos Filer.dll y sus relacionados, filer.ico, filer.scx y filer.sct, junto con las aplicaciones en tiempo de ejecución de Visual FoxPro.

Nota Estos archivos no disponen de soporte técnico.

Propiedades del objeto Filer

La siguiente tabla describe las propiedades asociadas con el objeto Filer.

Propiedad | Tipo de datos | Descripción
SearchPath | C | La carpeta desde la que empieza la búsqueda. Acepta nombres UNC. Lectura y escritura.
FileExpression | C | La máscara de búsqueda de archivos, puede incluir varias máscaras separadas por puntos y comas (;). Por ejemplo, la máscara de búsqueda de archivos *.scx; *.sct especifica la búsqueda de todos los archivos que tengan las extensiones .scx y .sct. La máscara de búsqueda predeterminada es *.*. Lectura y escritura.
SubFolder | N | Un valor numérico que especifica si se va a ejecutar una búsqueda recursiva desde la carpeta especificada en la propiedad SearchPath. Si SubFolder es 0, la búsqueda sólo se ejecuta en la carpeta especificada en la propiedad SearchPath. Si SubFolder es 1, la búsqueda se ejecuta en la carpeta especificada en la propiedad SearchPath y en todas sus subcarpetas. Observe que Filer ignora las carpetas del sistema. El valor predeterminado es 0. Lectura y escritura.
SearchText1 | C | Una cadena de texto que se va a buscar en los archivos que cumplan la máscara de búsqueda de archivos especificada en la propiedad FileExpression. El valor predeterminado es una cadena vacía. Lectura y escritura.
SearchText2 | C | Una cadena de texto adicional que se va a buscar en los archivos que cumplan la máscara de búsqueda de archivos especificada en la propiedad FileExpression. Se pasa por alto si SearchText1 contiene una cadena vacía. El valor predeterminado es una cadena vacía. Lectura y escritura.
SearchText3 | C | Una cadena de texto adicional que se va a buscar en los archivos que cumplan la máscara de búsqueda de archivos especificada en la propiedad FileExpression. Se pasa por alto si SearchText1 y SearchText2 contienen cadenas vacías. El valor predeterminado es una cadena vacía. Lectura y escritura.
IgnoreCase | N | Un valor numérico que especifica si la búsqueda de las cadenas de texto especificadas en SearchText1, SearchText2 y SearchText3 va a distinguir entre mayúsculas y minúsculas. Si IgnoreCase es 0, va a distinguir entre mayúsculas y minúsculas. Si IgnoreCase es 1, no va a distinguir entre mayúsculas y minúsculas. El valor predeterminado es 1. Lectura y escritura.
WholeWords | N | Un valor numérico que especifica si el texto de las cadenas de texto especificadas en SearchText1, SearchText2 y SearchText3 tiene que coincidir con palabras completas. Si WholeWords es 0, el texto de las cadenas de texto no tiene que coincidir con palabras completas. Si WholeWords es 1, el texto de las cadenas de texto tiene que coincidir con palabras completas. El valor predeterminado es 0. Lectura y escritura.
SearchAnd | N | Un valor numérico que especifica si la búsqueda admite la coincidencia o no de todas las cadenas de texto especificadas en SearchText1, SearchText2 y SearchText3. Si SearchAnd es 0, la búsqueda admite la coincidencia de cualquiera de las cadenas de texto. Si SearchAnd es 1, la búsqueda solo admite la coincidencia de todas las cadenas de texto. El valor predeterminado es 0. Lectura y escritura.
Editor | C | El editor con el que se abren los archivos mediante el método Open de la colección Files. Se pasa por alto si el valor de la propiedad IsHostedByFox es 1. El editor predeterminado es el Bloc de notas. Lectura y escritura.
IsHostedByFox | N | Un valor numérico que indica el cliente que ha creado una instancia de Filer.dll. Si IsHostedByFox es 1, el cliente es Visual FoxPro y se utiliza el editor de Visual FoxPro para abrir los archivos. Si IsHostedByFox es 0, el cliente es una aplicación distinta de Visual FoxPro y el editor utilizado para abrir los archivos es el especificado por la propiedad Editor. El valor predeterminado es 1 en Visual FoxPro. Lectura y escritura.
SortBy | N | Un valor numérico que especifica la ordenación de la colección Files. La siguiente tabla enumera los valores de la propiedad SortBy y el correspondiente criterio de ordenación de los archivos. 0 Sin orden 1 Ruta y nombre de archivo 2 Nombre de archivo 3 Extensión 4 Tamaño 5 Último acceso de escritura 6 Último acceso de lectura 7 Fecha de creación 8 Atributos El valor predeterminado es 1. Lectura y escritura.
SortDirection | N | Un valor numérico que especifica si la colección Files se debe ordenar de forma ascendente o descendente. Si SortDirection es 0, la colección Files estará ordenada ascendentemente. Si SortDirection es 1, la colección Files estará ordenada descendentemente. El valor predeterminado es 0. Lectura y escritura.

Métodos del objeto Filer

La siguiente tabla describe los métodos asociados con el objeto Filer.

Método | Descripción
Find(nValue) | El método que ejecuta la búsqueda y crea la colección Files. El método Find contiene un valor numérico que indica el estado de la colección Files. nValue es un valor numérico que especifica si se mantienen o no las colecciones Files de búsquedas anteriores. Si nValue es 0, las colecciones Files de búsquedas anteriores se pasan por alto. Si nValue es 1, la colección resultante de la búsqueda actual se anexa a la colección Files de las búsquedas anteriores. Observe que nValue no es opcional.

Objetos de la colección Files

La siguiente tabla describe las referencias de objetos asociados con la colección Files.

Objeto | Descripción
Item(nValue) | Una referencia de objeto a un archivo de la colección Files. nValue es el índice del archivo dentro de la colección Files. nValue empieza por 1 y llega hasta el número de archivos de la colección Files. Para determinar el número de archivos de la colección Files puede utilizar la propiedad Count, descrita a continuación.

Propiedades de la colección Files

La siguiente tabla describe las propiedades asociadas a la colección Files.

Propiedad | Tipo de datos | Descripción
Count | N | Contiene el número de archivos de la colección Files. Sólo lectura.
Nombre | C | El nombre del archivo, sin incluir la ruta de acceso. Sólo lectura.
Tamaño | N | El tamaño del archivo, en bytes. Sólo lectura.
SizeHigh | N | Los cuatro 4 bytes superiores del tamaño del archivo si dicho tamaño fuera superior a 4 gigabytes. Sólo lectura.
Attr | N | Los atributos de Windows del archivo. La siguiente lista contiene los valores numéricos de los atributos de archivo comunes. 0 Sin atributos 1 Sólo lectura 2 Oculto 4 Sistema 32 Guardado El valor de Attr puede constar de varios atributos de archivo. Por ejemplo, si Attr es 7 (1+2+4), el archivo es un archivo oculto de sistema y de sólo lectura. Para obtener más información acerca de otros atributos de archivo para los que Attr puede devolver valores, consulte la función GetFileAttributes descrita en la biblioteca Microsoft Developer’s Network. Lectura y escritura.
DateTime | N | La fecha asignada por Windows al archivo cuando éste fue creado. La parte entera de la fecha es el número de días desde el 30/12/1899 y el resto es la parte fraccional del día, a partir de la cual se puede determinar la hora de creación del archivo. El formulario Filer, Filer.scx, contiene un método definido por el usuario llamado GetTime que muestra cómo se puede determinar la fecha y la hora de creación de un archivo a partir de la propiedad DateTime. Sólo lectura.
LastAccessTime | N | La fecha asignada por Windows al archivo cuando se tuvo acceso a él por última vez. Sólo lectura.
LastWriteTime | N | La fecha asignada por Windows al archivo cuando se escribió por última vez. Sólo lectura.
AlternateName | C | El nombre corto del archivo si la longitud del nombre del archivo es superior a la convención de nombres de MS-DOS® 8.3. Sólo lectura.
Path | C | La ruta completa de acceso al archivo. Sólo lectura.

Métodos de la colección Files

La siguiente tabla describe los métodos asociados a la colección Files.

Método | Descripción
Modificar | Abre el archivo especificado para modificarlo. Si la propiedad IsHostedByFox es 1 (valor predeterminado en Visual FoxPro), el archivo se abre en el editor de Visual FoxPro. Si la propiedad IsHostedByFox es 0, el archivo se abre en el editor especificado por la propiedad Editor (de forma predeterminada, el Bloc de notas).
Eliminar | Elimina del disco el archivo especificado. El archivo no pasa por la Papelera de reciclaje.

Ejecución de Filer.scx

Para demostrar cómo se puede crear una interfaz de usuario para Filer.dll en Visual FoxPro, se incluye el formulario de ejemplo Filer.scx. Para ejecutar el formulario Filer, utilice el comando DO FORM de la manera siguiente:

DO FORM (HOME(1) + 'Tools\Filer\Filer.scx')

Cuando se ejecuta el formulario Filer, se agrega un elemento Filer al menú Herramientas de Visual FoxPro y dicho elemento permanece en el menú durante toda la sesión en Visual FoxPro. Para volver a ejecutar Filer, elija el elemento Filer desde el menú Herramientas.

Para abrir el formulario Filer y ver el código de la interfaz o para modificar el formulario, escriba el comando siguiente:

MODIFY FORM (HOME(1) + 'Tools\Filer\Filer.scx')

Vea también

Biblioteca de tiempo de ejecución VFP8R.DLL | Biblioteca de tiempo de ejecución VFP8T.DLL | COMPOBJ( ) (Función) | DO FORM (Comando)


Gendbc.prg

Ubicada en la carpeta Tools\Gendbc de Visual FoxPro, esta herramienta genera un programa que recrea una base de datos. GenDBC.prg soporta auto incremento, secuencias de ordenación y filtrado de claves principales. Puede utilizar este programa para generar lo siguiente:

  • Código para analizar y aprender como se crea una base de datos con código de programa
  • Código que puede insertar en sus programas, eliminando la necesidad de adjuntar las bases de datos en la distribución de sus aplicaciones
  • Código que puede insertar en sus programas para recrear una base de datos si los datos del usuario están corruptos
DO GENDBC WITH NombreArchivo

Parámetros

NombreArchivo
Especifica una cadena de caracteres conteniendo el nombre de un archivo de salida. NombreArchivo puede contener información sobre la ruta de acceso y extensión del archivo. Si no se especifica extensión, la extensión predeterminada .prg, será utilizada.
Nota Este programa solo trabaja con base de datos activas.

Ejemplo

El siguiente ejemplo crea un programa llamado MyData.prg, el cual contiene código para recrear una base de datos, MyDatabase. El programa, Main.prg es creado en la carpeta C:\VFP y contiene el código para recrear la base de datos, Main.

OPEN DATABASE MyDatabase

DO gendbc WITH 'MyData.prg'

SET DATABASE TO Main
DO gendbc WITH 'c:\vfp\main'

Vea también

Addlabel.app (Ejemplo) | Analizador de código (Ejemplo) | Genhtml.prg | Hexedit.app | Cpzero.prg (Ejemplo) | Programas de utilidad


Genhtml.prg

Genhtml.prg es el programa predeterminado al que llama la variable del sistema _GENHTML.

Puede utilizar _GenHTML para recoger fácilmente datos estadísticos o para convertir formularios, etiquetas, informes y menús para su visualización o transmisión por correo electrónico, o para exponerlos como páginas Web. Puede usar _GenHTML para compartir datos con sitios que no tienen instalado Visual FoxPro o para crear plantillas de páginas Web.

El acceso a GenHTML.PRG se realiza a través del menú Archivo al elegir la opción Guardar como HTML. Esta opción está disponible cuando están activos el Diseñador de formularios, el Diseñador de etiquetas, el Diseñador de menús o el Diseñador de informes, o cuando está abierta una tabla o un cursor en una ventana Examinar. GenHTML utiliza el origen de datos especificado como base para generar un documento HTML con las clases contenidas en la biblioteca de clases _HTML.VCX.

Puede ejecutar GenHTML desde la ventana Comandos con la siguiente sintaxis:

DO (_GENHTML) WITH <cOutFile> <cSourceFile> [, <nShow>][,<vIELink>][,...
Parámetro | Descripción
cOutFile | Valor predeterminado = "" Especifica el nombre del archivo de resultados. Cuando no se indica ninguna extensión, la predeterminada es .HTM.
cSourceFile | Valor predeterminado: = "" Especifica el nombre del archivo de origen, alias u objeto.
nShow | Valor predeterminado:= 0 Especifica si GenHTML va a crear y abrir el archivo de resultados. tnShow puede tener los valores siguientes: 0 = Generar archivo de resultados.1 = Generar y mostrar el archivo de resultados en el editor de Visual FoxPro.2 = Generar y mostrar el archivo de resultados en Internet Explorer.3 = Generar y mostrar el archivo de resultados después de utilizar el cuadro de diálogo Guardar como.4 = Crear un objeto PUBLIC _oHTML y generar un archivo.5 = Crear un objeto PUBLIC _oHTML sin generar un archivo.
vIELink | Valor predeterminado: Especifica un vínculo con un objeto de Internet Explorer o un control de explorador de Web.
Object | Valor predeterminado: Especifica una referencia a un objeto de Internet Explorer.
cStyle | Valor predeterminado: Especifica un identificador de estilo de GenHTML.DBF.
tcScope | Valor predeterminado: Especifica el ámbito de búsqueda al establecer la propiedad cScope.
cHTMLClass | Valor predeterminado: Especifica la clase y, opcionalmente, la biblioteca de clases cuya instancia se crea para el objeto HTML.

Vea también

Addlabel.app (Ejemplo)| Analizador de código (Ejemplo) | Gendbc.prg | Hexedit.app | Cpzero.prg (Ejemplo) | Programas de utilidad


HexEdit

La aplicación Hexedit.app, que se encuentra en la carpeta Tools\Hexedit de Visual FoxPro, ofrece una manera de examinar los valores de direcciones, así como de examinar o modificar valores de bytes o ASCII de los datos de un archivo. HexEdit es el equivalente visual del comando DUMP del programa Debug de MS-DOS.

Advertencia Si desea modificar un archivo, asegúrese de que no está en uso o, en cualquier caso, de que no esté bloqueado.
DO HEXEDIT.app

Cuando elija un archivo, HexEdit mostrará un cuadro de diálogo con las siguientes opciones de control.

Nota Si desea modificar el archivo, asegúrese de que no esté en uso ni bloqueado.

Opciones del cuadro de diálogo

Seleccionar archivo
Muestra el cuadro de diálogo Abrir para que pueda modificar el archivo en uso.
Dirección
Muestra la dirección de desplazamiento del archivo del primer byte de datos en un bloque de 16 bytes presentado en las siguientes columnas.
0...F
Muestra dieciséis números de 2 dígitos, que representan el valor de byte hexadecimal en esa ubicación de archivo.
Texto
Muestra la representación ASCII del valor de byte en la ubicación correspondiente en las columnas de valores de bytes.
Guardar modificaciones
Guarda las modificaciones realizadas en el archivo abierto.
Deshacer ediciones
Descarta todas las modificaciones efectuadas en el archivo abierto.
Buscar
Le permite especificar el carácter que desea localizar en el archivo. También puede escoger buscar hacia adelante o hacia atrás desde cualquier parte del archivo.
Saltar
Le permite especificar una dirección hexadecimal o decimal para modificarla.
Cerrar
Cierra HexEdit y el archivo abierto.

Vea también

Addlabel.app (Ejemplo) | Analyzer.app (Ejemplo) | Gendbc.prg | Cpzero.prg (Ejemplo) | Genhtml.prg | Programas de Utilidad | Códigos de teclas de Visual FoxPro (creación de bibliotecas API)


Ejemplos y guías

Microsoft Visual FoxPro incluye numerosos ejemplos de código, así como guías paso a paso para ayudar en el aprendizaje y en la experiencia con varias características del lenguaje.

En esta Sección

Ejemplos
Suministra librerías de clases, servidor, soluciones y ejemplos de código de clases principales que puede usar para experimentar y conocer las características particulares en Visual FoxPro.
Guías paso a paso
Proporciona una lista de escenarios comunes en Visual FoxPro y da instrucciones paso a paso para cada una, siendo un buen lugar para empezar a aprender acerca de varias característica de Visual FoxPro.

Secciones relacionadas

Introducción a Visual FoxPro
Proporciona enlaces a áreas que lo ayudan a crear soluciones de gestión de Base de datos, incluyendo información sobre instalar, Actualizar y personalizar Visual FoxPro.
Programar en Visual FoxPro
Dota de enlaces a información básica acerca de como crear aplicaciones en Visual FoxPro para maximizar su productividad en programación.


Ejemplos

Visual FoxPro incluye numerosos ejemplos de código que puede utilizar para experimentar y familiarizarse con las características del producto.

Para ejemplos adicionales, vea la carpeta \Samples de Microsoft Visual FoxPro 8.0, la cual contiene ejemplos que puede utilizar para aprender acerca del uso de APIs, servicios COM+, y acceso a datos.

En esta sección

Bibliotecas de clases de ejemplo
Lista de bibliotecas de clases de ejemplo que proporcionan funcionalidad encapsulada que puede agregar fácilmente a sus aplicaciones.
Ejemplos de servidor
Lista de ejemplos de servidor que se enfocan en servidores de Automatización como una aplicación de componente COM que expone la funcionalidad que puede utilizarse y reutilizarse por otras aplicaciones a través de Automatización.
Ejemplos de Soluciones
Contiene algunos ejemplos de cosas útiles que puede hacer usando Microsoft Visual FoxPro.
Ejemplos Foundation Classes de Visual FoxPro
Contiene descripciones de ejemplos en los cuales puede utilizar Visual FoxPro Foundation Classes junto con la Galería de componentes para desarrollar aplicaciones rápidamente.

Secciones relacionadas

Introducción a Visual FoxPro
Proporciona información acerca de instalar, actualizar y configurar Visual FoxPro, así como personalizar el entorno de desarrollo.
Desarrollar aplicaciones Visual FoxPro
Esta sección incluye información conceptual acerca de cómo desarrollar aplicaciones Visual FoxPro, instrucciones para crear bases de datos y la interfaz de usuario y otras tareas necesarias para crear aplicaciones Visual FoxPro
Programar en Visual FoxPro
Describe cómo acceder a toda la eficacia de Visual FoxPro creando aplicaciones que incorporan técnicas de programación orientada a objetos el modelo controlado por eventos para maximizar su productividad mientras programa.
Referencia
Incluye temas sobre herramientas de productividad, también sobre controles, objetos, propiedades, métodos, eventos, instrucciones, funciones y constantes disponibles.
Guías paso a paso
Proporciona instrucciones paso a paso para escenarios comunes, haciéndolas un buen lugar para empezar a aprender acerca de varias características de Visual FoxPro.


Bibliotecas de clases de ejemplo

La biblioteca de clases de ejemplo de Visual FoxPro ofrece una funcionalidad encapsulada que puede agregar fácilmente a sus aplicaciones. Los Ejemplos de Soluciones ilustran el uso de la mayoría de las clases de ejemplo. Las clases de ejemplo se encuentran en los archivos siguientes:

  • Biblioteca de clases Buttons
  • Biblioteca de clases Samples
  • Biblioteca de clases Typelib
  • Biblioteca de clases Utility
  • Programa Registry

Biblioteca de clases Buttons

Buttons.vcx contiene las clases siguientes:

Clase | Descripción
CmdOK | Botón de comando que libera el formulario al que se agrega. Si el formulario está contenido en un conjunto de formularios, cmdOK libera el conjunto.
CmdCancel | Subclase de cmdOK con el valor "Cancel" establecido en la propiedad Caption.
CmdHelp | Botón de comando que invoca la Ayuda con el valor de HelpContextID del formulario al que se agrega.
MailBtn | Contenedor con un botón de comando, un control Microsoft MAPI Message y un control Microsoft MAPI Session. El evento Click del botón de comando inicia una sesión de correo y redacta un mensaje con los valores del registro actual de una tabla. Para ver un ejemplo de uso de la clase MailBtn, vea SENDMAIL.SCX en la carpeta Samples\Solution\OLE de Visual FoxPro.
VCR | Conjunto de botones de desplazamiento que permiten al usuario situar el puntero en el registro siguiente, anterior, primero o último de una tabla. Establezca en la propiedad Skiptable el alias de la tabla cuyo puntero desee desplazar. Si Skiptable está vacía, el puntero de registro se mueve al área de trabajo seleccionada actualmente.

Biblioteca de clases Samples

Samples.vcx contiene las clases siguientes:

Clase | Descripción
CboFontName | Cuadro combinado que muestra todas las fuentes disponibles actualmente en el sistema.
CboFontSize Cuadro combinado que muestra todos los tamaños en puntos disponibles para una fuente determinada. Pase un nombre de fuente al método FillList para rellenar el cuadro combinado. Las propiedades nLargestFont y nSmallestFont delimitan los tamaños de fuente máximo y mínimo que se mostrarán. Puede utilizar este control junto con la clase cboFontName. En el evento InteractiveChange del objeto cboFontName, llame al método FillList del objeto cboFontSize:

THISFORM.cboFontSize1.FillList(THIS.Value)

Si desea un ejemplo de uso de esta clase, vea la clase tbrEditing de la misma biblioteca.
Clock Contenedor que muestra la fecha y hora actuales.

El componente "Mostrar un reloj de sistema" del ejemplo Solutions también utiliza la clase Clock.
DataChecker Clase personalizada que administra la resolución de conflictos de datos. El código del evento Error de la clase VCR de BUTTONS.vcx llama al método CheckConflicts de esta clase si al intentar escribir datos de búfer en una tabla se encuentran valores cambiados:

nConflictStatus = ; THIS.DataChecker1.CheckConflicts()

El componente "Ejecutar múltiples instancias de un formulario" del ejemplo Solutions utiliza también esta clase para comprobar si hay conflictos de datos.

Si desea más información, abra la clase y lea los observaciones del código.
Distinct_values_combo | Cuadro combinado que se rellena durante la inicialización con los valores distintos del alias ControlSource. Por ejemplo, si agrega esta clase a un formulario y establece como ControlSource "customer.country", el cuadro combinado se rellenará con los países de la tabla cliente, sin mostrar los nombres más de una vez.
FrmNoTitle Formulario cuyas propiedades están establecidas de modo que no se muestre ningún título. Si desea mostrar información en una ventana aparte, puede crear un objeto basado en esta clase y utilizar los métodos gráficos de los formularios.

El componente "Mostrar animación de líneas en un formulario" del ejemplo Solutions también utiliza un formulario sin título para mostrar la animación.
Lookup_combo Cuadro combinado que permite presentar los valores de un campo, por ejemplo el nombre de compañía, al enlazar un origen de control a otro campo, por ejemplo un número de identificación de compañía. Esta clase tiene cuatro propiedades personalizadas:

order_column: columna por la que se ordena la tabla (opcional).

lookup_table: tabla con la que se llena el cuadro combinado.

display_column: columna de la tabla que se muestra.

return_column: columna cuyo valor se escribe en el origen del control.
MoverLists Contenedor con dos cuadros de lista y cuatro botones de comando. El usuario puede mover los elementos seleccionados de una lista a la otra al hacer clic en los botones de comando, o mediante la operación de arrastrar y soltar.

Debe asegurarse de que la propiedad RowSourceType de cada cuadro de lista tiene el valor 0 y de utilizar el método AddItem para agregar elementos al cuadro de lista de origen.

MoverLists tiene tres propiedades personalizadas:

CanDropIcon: cursor que se mostrará sobre un destino válido en las operaciones de arrastrar y soltar.

NoDropIcon: cursor que se mostrará cuando la operación de colocar no agregue los elementos seleccionados al cuadro de lista.

DragThreshold: número de píxeles antes de comenzar la operación de arrastre.

El componente "Mover elementos entre cuadros de lista" del ejemplo Solutions ilustra el uso de esta clase.
Print_reports Formulario modal que permite a un usuario tener una vista previa de un informe, imprimirlo o dirigirlo a un archivo. Puede establecer en la propiedad cReport de la clase el nombre del informe o pasarlo como un parámetro:

o = CREATEOBJECT(print_reports, ; "myreport.frx")
QBF Contenedor con tres botones de comando. Puede agregar esta clase y la clase VCR a un formulario con controles enlazados a datos. Cuando el usuario elige Escribir QBF, los valores de los controles quedan en blanco. Los valores que el usuario escribe en los controles especifican el filtro que se establecerá en la tabla cuando el usuario elija Consulta.

Los controles deben tener establecida la propiedad ControlSource y su propiedad Parent debe ser el formulario, en vez de contenedor.

El componente "Crear un formulario de consulta según ejemplo" del ejemplo Solutions ilustra el uso de esta clase.
Resizable Clase personalizada que administra el cambio de tamaño y posición de los controles de un formulario en tiempo de ejecución, a la vez que mantiene sus tamaños y posiciones relativos. Puede agregar la clase a un formulario e invocar el método AdjustControls en su evento Resize:

THIS.Resizable2.AdjustControls

Resizable tiene dos propiedades personalizadas que debe establecer:

RepositionList: cadena que contiene todas las clases cuyos objetos cambian de posición.

ResizeList: cadena que contiene todas las clases cuyos objetos cambian de tamaño.

El componente "Cambiar el tamaño y la posición de los controles en tiempo de ejecución" del ejemplo Solutions ilustra el uso de esta clase.
RTFcontrols Clase contenedora que contiene cboFontName, cboFontSize y botones de comando para Negrita, Cursiva y Color de primer plano. El control cboFontSize se actualiza en el evento InteractiveChange de cboFontName, pero no hay ninguna funcionalidad adicional codificada para los botones de comando Negrita, Cursiva y Color de primer plano.

El componente "Utilizar el control RichText" del ejemplo Solutions ilustra el uso de esta clase.
SoundPlayer | Esta clase puede utilizarse para reproducir un archivo multimedia no visual, por ejemplo un archivo de audio .WAV. Para obtener más información acerca de esta clase, vea la sección siguiente, Clases multimedia de ejemplo.
StopWatch Clase contenedora con un cronómetro y etiquetas para mostrar los valores de detención del reloj.

StopWatch tiene tres métodos personalizados que puede usar:

Start: inicia el cronómetro.

Stop: detiene el cronómetro.

Reset: restablece el tiempo mostrado a 0:00.

El componente "Mostrar un cronómetro" del ejemplo Solutions ilustra el uso de esta clase.
TbrEditing tbrEditing tiene una propiedad personalizada y un método que puede utilizar:

nAppliesTo: esta propiedad puede tener los valores 1, 2 ó 3.

  1. Las elecciones del usuario afectan al control actual del formulario activo.
  2. Las elecciones del usuario afectan a todos los cuadros de texto y de edición del formulario activo.
  3. Las elecciones del usuario afectan a todos los controles del formulario activo.

Refresh: toma como parámetro una referencia a un objeto y establece en todos los controles de edición los valores adecuados para ese objeto. Puede llamar al método Refresh en el evento GotFocus de un control.

El componente "Cambiar atributos de fuente" del ejemplo Solutions ilustra el uso de esta clase.
VideoFrame | Esta clase se puede utilizar para reproducir un archivo multimedia visual, por ejemplo un archivo de vídeo para Windows. Para obtener más información acerca de esta clase, vea la sección siguiente, Clases multimedia de ejemplo.

Clases multimedia de ejemplo

Dos de las clases (SoundPlayer y VideoFrame) de la biblioteca de clases de Visual FoxPro Samples\Classes\Samples.vcx permiten utilizar la interfaz de comandos multimedia (Multimedia Command Interface, MCI) para reproducir archivos multimedia.

Para encontrar documentación acerca de los comandos MCI, busque "Multimedia Commands" en la biblioteca MSDN (http://www.microsoft.com/spanish/).

Clase Sound Player

Esta clase puede utilizarse para reproducir un archivo multimedia no visual, por ejemplo un archivo de audio .WAV. Permite especificar el nombre del archivo y proporciona métodos integrados para reproducirlo fácilmente.

Propiedad | Descripción
AutoOpen | Especifica si el archivo de sonido se debe abrir y mostrar automáticamente al crear una instancia del objeto. El valor predeterminado es verdadero (.T.).
AutoPlay | Especifica si el archivo de sonido se debe reproducir automáticamente al abrirlo. El valor predeterminado es verdadero (.T.).
AutoRepeat | Especifica si el archivo de sonido se debe reproducir de forma continua. El valor predeterminado es falso (.F.).
ControlSource | Especifica la columna que contiene la referencia al archivo de sonido. Si está vacía, la clase espera un nombre de archivo estático en la propiedad SoundFile.
MCIAlias | Especifica el alias que debe usar MCI. Si se deja vacía, el alias predeterminado será la propiedad Name de la clase. Normalmente esta propiedad puede dejarse vacía, pero si el usuario desea reproducir el mismo archivo de sonido dos veces al mismo tiempo, deberá especificar un alias distinto cada vez.
SoundFile | Contiene el nombre del archivo de sonido que desea reproducir, como por ejemplo "C:\WINDOWS\CHIMES.WAV".
Método | Descripción
OpenSound | Abre el archivo de sonido.
PlaySound | Reproduce el archivo de sonido. El archivo debe abrirse con el método OpenSound antes de reproducirlo.
PauseSound | Hace una pausa en la reproducción de un archivo de sonido. La reproducción puede continuar al llamar al método PlaySound.
SetPosition | Permite al usuario especificar la posición en el archivo multimedia. Puede ejecutarse en cualquier momento posterior a la apertura del archivo. Los valores válidos son "Start" (inicio), "End" (fin) o cualquier milisegundo específico del sonido.
CloseSound | Cierra el archivo de sonido y libera todos los recursos asociados a él.

Clase VideoFrame

La clase VideoFrame se puede utilizar para reproducir archivos multimedia no visuales, por ejemplo un archivo de vídeo para Windows. Esta clase permite determinar la posición y el tamaño del vídeo, y ofrece métodos integrados para facilitar su reproducción.

Si desea ver un ejemplo de uso de esta clase, vea Video.scx en la carpeta de Visual FoxPro Samples\Solution\Forms.

Propiedad | Descripción
AutoOpen | Especifica si el archivo de vídeo se debe abrir y mostrar automáticamente cuando se crea una instancia del objeto. El valor predeterminado es verdadero (.T.).
AutoPlay | Especifica si el archivo de vídeo se debe reproducir automáticamente al abrirlo. El valor predeterminado es verdadero (.T.).
AutoRepeat | Especifica si el archivo de vídeo debe reproducirse en bucle. Al establecer el valor .T., el vídeo se reproducirá continuamente. El valor predeterminado es falso (.F.).
ControlSource | Especifica un campo que contiene la referencia al archivo de vídeo. Si se deja vacía, la clase espera un nombre de archivo estático en la propiedad VideoFile.
MCIalias | Especifica el alias que debe usar MCI. Si se deja vacía, el alias predeterminado será la propiedad Name de la clase. Normalmente, esta propiedad puede dejarse vacía, pero si el usuario desea reproducir el mismo vídeo dos veces al mismo tiempo, deberá especificar un alias distinto cada vez.
VideoFile | Contiene el nombre del archivo de vídeo a reproducir, por ejemplo: "C:\VFP\SAMPLES\SOLUTION\FORMS\FOX.AVI".
Método | Descripción
CloseVideo | Cierra el archivo de vídeo y libera todos los recursos asociados a él.
DoMCI | Llamado por otros métodos para ejecutar comandos de MCI. También puede llamarlo un usuario para ejecutar un comando de MCI específico.
OpenVideo | Abre el archivo de vídeo y muestra la primera imagen.
PauseVideo | Hace una pausa en la reproducción de un vídeo. El vídeo puede reiniciarse utilizando el método PlayVideo.
PlayVideo | Reproduce el archivo de vídeo. El archivo se debe abrir con el método OpenVideo antes de reproducirlo.
SetPosition | Permite al usuario especificar la posición en el archivo multimedia. Puede ejecutarse en cualquier momento posterior a la apertura del archivo de vídeo. Los valores válidos son "Start" (inicio), "End" (fin) o un milisegundo específico del vídeo.

Biblioteca de clases Typelib

Typelib.vcx contiene la clase siguiente.

Clase | Descripción
Typelib | El componente "Ver información de la biblioteca de tipos" del ejemplo Solutions ilustra el uso de esta clase.

Biblioteca de clases Utility

Utility.vcx contiene las clases siguientes:

Clase | Descripción
Arraylib | Clase personalizada con métodos para insertar y eliminar elementos de matrices y explorar columnas de matrices.
Execsp | Clase personalizada con métodos que facilitan el paso a través de SQL y la ejecución de procedimientos almacenados en una base de datos remota.
Filelib | Clase personalizada con métodos que realizan tareas comunes con cadenas utilizadas al manipular nombres de archivos, como quitar la extensión, agregar una barra inversa a una ruta de acceso, etc.
Menulib | Clase contenedora con métodos para crear un menú contextual a partir de una matriz. El componente "Crear menús contextuales dinámicos" del ejemplo Solutions ilustra el uso de esta clase.

Programa Registry

Registry.prg contiene las clases siguientes:

Clase | Descripción
FileReg | Subclase de la clase Registry que proporciona métodos para leer la aplicación asociada a extensiones de archivos determinadas, así como la ruta de acceso a la misma.
FoxReg | Subclase de la clase Registry que proporciona métodos para leer y escribir las opciones de configuración de Visual FoxPro en el Registro de Windows.
ODBCReg | Subclase de la clase Registry que proporciona métodos para leer información de orígenes de datos y controladores ODBC.
OldINIReg | Subclase de la clase Registry que proporciona métodos para leer y escribir en un archivo .INI.
Registry | Clase personalizada que proporciona métodos de acceso a funciones de la API de Windows para modificar el Registro de Windows.

Si desea ver ejemplos del uso de las clases relacionadas con el registro, ejecute SOLUTION.app en la carpeta ..\Samples\Solution.

Vea también

Ejemplos de Soluciones | Ejemplos Foundation Classes de Visual FoxPro | Ejemplos de servidor


Ejemplos de servidor

Visual FoxPro incluye varios ejemplos, que ponen el enfoque en los servidores de Automatización. Un servidor de Automatización es una aplicación de componente COM con una funcionalidad que otras aplicaciones pueden utilizar y reutilizar mediante Automatización. Además, puede crear una o más clases para administrar las reglas de empresa de toda una compañía. Una aplicación cliente que utilice el objeto de reglas de empresa pasará los parámetros de entrada en una llamada a un método y el servidor de Automatización realizará numerosas operaciones para recuperar o almacenar datos de diversas fuentes y realizar cálculos complejos antes de devolver la respuesta.

En esta sección

Servidor de Automatización FoxISAPI (Ejemplo)
Visual FoxPro incluye una extensión ISAPI denominada Foxisapi.dll que crea una instancia de un servidor de Automatización de Visual FoxPro y, a continuación, llama a un método en ese servidor que devuelve HTML. La extensión FoxISAPI le permite tener acceso a los servidores de Automatización personalizados de Visual FoxPro de cualquier servidor Web compatible con ISAPI, como por ejemplo Microsoft Internet Information Server y Microsoft Personal Web Server.
Ejemplos COM+
Los ejemplos para el uso de componentes en cola, eventos COM+ y administradores de recursos de compensación se ubican en la carpeta ..\Samples\COM+. Para obtener más información, vea el archivo Readme.htm de la carpeta.

Secciones relacionadas

Uso de Visual FoxPro
Las características de programación de Visual FoxPro están diseñadas para mejorar la productividad del programador, incluidos los métodos Access y Assign, la compatibilidad con más formatos de archivos gráficos y lenguaje para simplificar las tareas de programación.
Desarrollar aplicaciones Visual FoxPro
En esta sección se incluye información conceptual acerca de cómo desarrollar aplicaciones Visual FoxPro, instrucciones para crear bases de datos y la interfaz de usuario y otras tareas necesarias para crear aplicaciones Visual FoxPro.
Programar en Visual FoxPro
Visual FoxPro es una eficaz herramienta de administración de datos, pero además podrá beneficiarse de toda su eficacia para crear aplicaciones. Comprender las técnicas de programación orientada a objetos y el modelo controlado por eventos puede aumentar su productividad como programador.
Bibliotecas de clases de ejemplo
Podrá agregar funcionalidad a sus aplicaciones con facilidad mediante las bibliotecas de clases de ejemplo.
Ejemplos Foundation Classes de Visual FoxPro
Las Foundation Classes de Visual FoxPro se proporcionan junto con la Galería de componentes como una forma de proporcionar un desarrollo de aplicaciones rápido, con el mínimo código posible, mediante estructuras y herramientas de desarrollo de bases de datos comunes, componentes genéricos extensibles y rápidos, componentes que mejoran el desarrollo de páginas Web y empaquetadores eficaces para funciones API del sistema.


Ejemplos de servidor de Automatización FoxISAPI

Visual FoxPro incluye una extensión de ISAPI llamada Foxisapi.dll que permite el acceso a servidores de Automatización personalizados de Visual FoxPro desde cualquier servidor de Web que admita ISAPI, como Microsoft Internet Information Server (IIS) versión 5.0 o el posterior Microsoft Personal Web Server. La extensión FoxISAPI funciona al crear una instancia de un servidor de Automatización de Visual FoxPro y al llamar, a continuación, a un método de ese servidor que devuelve código HTML. El código HTML se traslada del servidor a un explorador de Web, como Microsoft Internet Explorer.

Visual FoxPro incluye dos ejemplos de servidor de Automatización FoxISAPI que ilustran el modo de aprovechar las posibilidades de Visual FoxPro para mantener dinámicamente un sitio Web. El primer ejemplo, FoxWeb, que se encuentra en la carpeta Samples\Servers\FoxIsapi\FoxWeb, es una muestra sencilla diseñada para exponer los conceptos básicos de FoxISAPI. Con él puede recorrer los pasos del proceso de configuración y construcción de los servidores FoxISAPI, tanto de forma local como remota. Además, este ejemplo recorre las etapas necesarias para implementar conjuntos de servidores para una mejor escalabilidad.

El segundo ejemplo, FoxIs, que se encuentra en la carpeta Samples\Servers\FoxIsapi\FoxIs, es una muestra más compleja que contiene rutinas para asignar contenido visual y funcional de un formulario de Visual FoxPro a código HTML. Los conceptos son los mismos que en FoxWeb: FoxISAPI crea una instancia de un servidor e invoca un método para obtener código HTML. Al utilizar el ejemplo FoxIs un formulario visual, ofrece más versatilidad, pues le permite ejecutarlo como un programa independiente, desde clientes OLE y desde un explorador de Web.

Si no está familiarizado con la creación de servidores de Automatización de Visual FoxPro, vea Crear servidores de Automatización.

Componentes de FoxISAPI

En la tabla siguiente se relacionan los archivos de ejemplo de servidor de Automatización FoxWeb más importantes y se da una descripción de cada uno de ellos.

Archivo | Descripción
Foxisapi.dll | Componente principal de los ejemplos FoxWeb y FoxIs del servidor de Automatización FoxISAPI. Foxisapi.dll se utiliza con IIS o con Microsoft Personal Web Server. Foxisapi.dll crea una instancia de servidor de Automatización de Visual FoxPro y ejecuta un método en ese servidor. El método devuelve entonces el código HTML que muestra el explorador de Web. Foxisapi.dll se utiliza principalmente con Visual FoxPro, aunque puede usarse con cualquier servidor de Automatización.
Foxisapi.ini | Archivo de inicialización de Foxisapi.dll que permite configurarlo.
Odebug.prg | Programa de Visual FoxPro utilizado para depurar aplicaciones de Internet.

Configurar los componentes de FoxISAPI

Para instalar los componentes fundamentales de FoxISAPI, siga estos pasos:

  1. Copie los archivos Foxisapi.dll y Foxisapi.ini a la carpeta de archivos de comandos del servidor de Web. Por ejemplo, C:\InetPub\scripts\.
  2. Copie el archivo de programa Oldebug.prg a la carpeta raíz de Visual FoxPro (la ubicación que devuelve la función HOME( )). Por ejemplo, C:\Archivos de programa\Microsoft Visual FoxPro\.

Vea también

FoxWeb, un servidor de Automatización de Visual FoxPro para Internet simplificado | FoxIs, un servidor de Internet de Visual FoxPro | Ejemplos de Soluciones | Ejemplos de servidor


FoxWeb, un servidor de Automatización de Visual FoxPro para Internet simplificado

FoxWeb es un ejemplo de servidor de Automatización ISAPI simplificado, diseñado para poner en funcionamiento rápidamente un sitio Web. FoxWeb ofrece una nueva versión de Foxisapi.dll (también incluida en el ejemplo de servidor de Visual FoxPro FoxIs). Esta nueva versión puede administrar múltiples instancias de servidores de Automatización de Visual FoxPro y cuenta con métodos de depuración adicionales para las aplicaciones de Visual FoxPro diseñadas para Internet.

El servidor de Automatización FoxWeb

El ejemplo FoxWeb utiliza una clase sencilla de servidor de Visual FoxPro, destinada a ilustrar el uso básico de un servidor bajo FoxISAPI. Todo el código se almacena en un archivo llamado Foxweb.prg. Este archivo contiene una clase llamada Server, marcada con OLEPUBLIC para que al generarse se registre como componente COM del servidor de Automatización. FoxISAPI crea una instancia de esta clase, que contiene diversos métodos que se pueden invocar (como Hello o Delay), tal como se indica más adelante. Estos métodos ilustran las estructuras que requiere FoxISAPI para funcionar correctamente.

Archivos del ejemplo FoxWeb

Los archivos del nuevo ejemplo del servidor de Automatización FoxWeb de Visual FoxPro se encuentran en el directorio de Visual FoxPro …\Samples\Servers\Foxisapi\FoxWeb.

Configurar el servidor de Automatización FoxWeb

En las secciones siguientes se describe cómo utilizar Visual FoxPro para poner en funcionamiento rápidamente un sitio Web con FoxWeb.

Registrar el servidor de Automatización de Visual FoxPro FoxWeb

Los servidores de Automatización de Visual FoxPro que devuelven código HTML deben estar registrados. El registro se realiza automáticamente cuando se genera el archivo .exe o .dll con el Administrador de proyectos de Visual FoxPro, o con los comandos BUILD EXE, BUILD DLL o BUILD MTDLL. Por ejemplo, si abre el proyecto Foxweb del ejemplo FoxWeb incluido en el Administrador de proyectos, puede elegir Generar para crear un servidor de Automatización como .dll en proceso o como archivo .exe fuera de proceso. Observe que el registro sólo se produce en el equipo en que se genera el archivo.

Un servidor de Automatización de Visual FoxPro generado como un archivo .exe fuera de proceso también se puede registrar si especifica el nombre de servidor de Automatización y utiliza el modificador /RegServer. Por ejemplo, el comando siguiente registra el servidor de Automatización de Visual FoxPro FoxWeb:

Foxweb.exe /RegServer

Un servidor de Automatización de Visual FoxPro generado como .dll en proceso también se puede registrar con Regsvr32.exe. Por ejemplo, el comando siguiente registra el servidor de Automatización de Visual FoxPro FoxWeb:

Regsvr32 Foxweb.dll
Nota Si un servidor de Automatización ISAPI de Visual FoxPro utiliza archivos adicionales, como .gif o .jpg, asegúrese de colocarlos en directorios a los que tengan acceso Internet Information Server o Personal Web Server.

Utilizar un explorador de Web para el acceso a un servidor de Automatización ISAPI de Visual FoxPro

Desde un explorador de Web, el acceso a un servidor de Automatización ISAPI de Visual FoxPro se realiza al especificar la dirección URL (Ubicador uniforme de recursos) del servidor de Automatización. El explorador de Web hace una petición HTTP que se traslada a Internet Information Server o Personal Web Server. El servidor de Automatización lleva la petición a Foxisapi.dll, que a su vez la traslada a su servidor de Automatización.

Por ejemplo, la dirección URL siguiente da acceso a un servidor de Automatización ISAPI llamado Foxweb.Server:

HTTP://MyServer/Scripts/Foxisapi.dll/Foxweb.server.Delay?30

En la tabla siguiente se describe cada uno de los elementos de la dirección URL del ejemplo anterior.

Elemento de la dirección URL | Descripción
Myserver | Carpeta virtual de IIS o Personal Web Server.
Scripts/Foxisapi.dll | Carpeta de archivos de comandos y Foxisapi.dll de IIS o Personal Web Server.
Foxweb.Server Nombre registrado (ProgID) del servidor de Automatización ISAPI de Visual FoxPro que se va a invocar.

En este ejemplo, Foxweb es el nombre del archivo .exe o .dll del servidor de Automatización de Visual FoxPro. Server es el nombre de clase especificado en la cláusula OLEPUBLIC del comando DEFINE CLASS que crea el servidor de Automatización.

Foxweb.Server es también el ProgID del servidor de Automatización tal y como está almacenado en el Registro de Windows. Puede utilizar RegEdit para ver o modificar el ProgID del servidor de Automatización.
Delay | Nombre del método que se va a ejecutar en el servidor de Automatización ISAPI de FoxPro.
?30 | Parámetro pasado al método. El signo de interrogación es un delimitador que especifica que a continuación se incluye un parámetro. En este método, 30 indica que la ejecución se retrasa 30 segundos. El parámetro se pasa como cadena de caracteres.

Paso de parámetros a los métodos

El código siguiente corresponde al método Delay de Foxweb.prg e ilustra la estructura de los métodos ejecutados en los servidores de Automatización ISAPI de Visual FoxPro.

PROCEDURE Delay
LPARAMETERS cParm1, cIniFile, nPersistInstance
*** Your code here ***
RETURN AnHTMLString
ENDPROC
cParm1
Cadena de caracteres pasada al método. En el método Delay, este parámetro especifica el número de segundos que se retrasa la ejecución.
cIniFile
Nombre del archivo .ini (que Foxisapi.dll pasa al método) creado cada vez que se tiene acceso a un servidor de Automatización ISAPI de Visual FoxPro. Los archivos .ini se crean en la carpeta Scripts y cada uno tiene un nombre único que comienza por "Fox". Puede utilizar la función GetPrivateProfileString de Foxweb.prg, por ejemplo, para leer información del archivo .ini y obtener código HTML personalizado basado en la configuración de cada usuario.
nPersistInstance
Especifica si la instancia del servidor de Automatización ISAPI de Visual FoxPro debe mantenerse después de que termine de ejecutar un método. Foxisapi.dll pasa nPersistInstance por referencia al método. Si nPersistInstance se establece en 0 en la aplicación Web, la instancia del servidor de Automatización sigue activa después de que se finalice la ejecución. Si el valor de nPersistInstance es distinto de 0, la instancia del servidor de Automatización se liberará. Para un rendimiento óptimo, nPersistInstance debería establecerse en 0; si no, el servidor de Automatización deberá iniciarse de nuevo la próxima vez que se le invoque.

Utilizar Foxisapi.dll para conjuntos de servidores de Automatización

Al ser Foxisapi.dll una aplicación de subproceso libre, ahora puede agrupar múltiples servidores de Automatización ISAPI de Visual FoxPro y lograr así una mejor escalabilidad en sus aplicaciones para Web. La agrupación de varios servidores de Automatización ISAPI permiten que uno que esté libre atienda una petición cuando los otros estén ocupados. Para aprovechar el agrupamiento de servidores de Automatización ISAPI, sus instancias deben ser persistentes, por lo que debe establecer nPersistInstance en 0 en la aplicación para Web.

El número de servidores de Automatización ISAPI que se encuentran disponibles para atender peticiones está determinado por la configuración del archivo de inicialización Foxisapi.ini. Para crear un grupo de varios servidores de Automatización ISAPI, incluya una entrada entre corchetes con el nombre del servidor de Automatización ISAPI para el que se crea el grupo. Esta entrada irá seguida de la lista de servidores de Automatización ISAPI que forman el grupo, con un valor numérico que especifica el número máximo de instancias de cada servidor de Automatización ISAPI que se pueden crear.

Por ejemplo, al incluir las líneas siguientes en Foxisap.ini se crea un grupo de siete servidores de Automatización ISAPI para atender las peticiones a Foxweb.myserver. Foxisapi.dll creará hasta cuatro instancias del servidor de Automatización ISAPI Foxweb.server y hasta tres instancias del servidor de Automatización ISAPI Foxweb2.server para atender las peticiones.

[FOXWEB.MYSERVER]
FOXWEB.SERVER=4
FOXWEB2.SERVER=3

La dirección URL siguiente ejecuta el método Delay sobre una instancia de los servidores de Automatización ISAPI Foxweb.server o Foxweb2.server:

HTTP://MyServer/Scripts/Foxisapi.dll/Foxweb.Myserver.Delay?30

Foxisapi.ini puede especificar que se creen instancias de los servidores de Automatización ISAPI antes de que se reciba una petición de servicio. Para ello, agregue una coma seguida de un asterisco (*) después del número de instancias, como ilustra el ejemplo siguiente:

[FOXWEB.MYSERVER]
FOXWEB.SERVER=4,*
FOXWEB2.SERVER=3,*

Utilizar el Administrador de grupo en varios equipos

Foxisapi.dll ofrece la capacidad de administrar servidores de Automatización ISAPI de Visual FoxPro de múltiples equipos. Puede utilizar Automatización remota o DCOM (Distributed Component Object Model, Modelo de objetos de componentes distribuido) para el acceso a los servidores de Automatización ISAPI. Observe que para un rendimiento y escalabilidad óptimos, debe hacer que las instancias de los servidores de Automatización ISAPI sean persistentes al establecer nPersistInstance en 0 en la aplicación para Web.

En el ejemplo siguiente se describe una situación en la que dos servidores de Automatización ISAPI de Visual FoxPro, Foxweb y Foxweb2, se ubican en dos equipos distintos.

Machine_A es su equipo local con Windows 98, DCOM y Personal Web Server. Machine_B es su equipo remoto, al que se tiene acceso por la red, con Windows NT 4.0 o posterior y DCOM.

  1. Machine_A es su equipo de desarrollo de Visual FoxPro, en el que ha instalado los ejemplos de servidor de Automatización FoxISAPI de Visual FoxPro. En este equipo, abra el proyecto Foxweb en el Administrador de proyectos de Visual FoxPro y elija Generar para crear un servidor de Automatización ISAPI como archivo .exe fuera de proceso. Al generar el archivo .exe, el servidor de Automatización ISAPI se registra automáticamente en el equipo como Foxweb.exe. A continuación, abra el proyecto Foxweb2 en el Administrador de proyectos de Visual FoxPro y elija Generar para crear y registrar otro servidor de Automatización ISAPI como archivo .exe.
  2. Para comprobar que los servidores de Automatización ISAPI Foxweb y Foxweb2 están registrados correctamente, puede utilizar RegEdit y buscar Foxweb y Foxweb2. Observe que los ProgID de los servidores son Foxweb.Server y Foxweb2.Server, respectivamente. Server es el nombre de clase especificado en la cláusula OLEPUBLIC del comando DEFINE CLASS que crea el servidor de Automatización ISAPI. Foxweb.prg es la aplicación para Internet de Visual FoxPro incluida en ambos proyectos, Foxweb y Foxweb2.

    3. Los dos ProgIDs para el servidor de Automatización ISAPI apuntan a Machine_A, el equipo local. La configuración del Registro para el servidor de Automatización FoxWeb2 ISAPI necesita cambiarse para apuntar a Machine_B, el equipo remoto.

  3. Copie ahora los archivos Foxweb2.exe, Foxweb2.vbr y Foxweb2.tlb de Machine_A, el equipo local, a Machine_B, el equipo remoto.
  4. En el indicador de MS-DOS, utilice la opción /RegServer para registrar Foxweb2.exe en Machine_B:
    C:\VFP\FOXWEB2.EXE /RegServer
  5. Por último, detenga y reinicie Personal Web Server en Machine_A para asegurar que se tengan en cuenta los cambios del Registro.

Puede ejecutar el comando Status de Foxisapi.dll para comprobar el estado de todos los servidores de Automatización ISAPI registrados en Foxisapi.ini. La dirección URL siguiente ejecuta el comando Status:

HTTP://Machine_A/Scripts/FoxISAPI.dll/Status

Puede ejecutar el comando Reset en Foxisapi.dll para restablecer todos los servidores de Automatización ISAPI registrados en Foxisapi.ini. El comando Reset libera todas las instancias de servidores de Automatización ISAPI. La dirección URL siguiente ejecuta el comando Reset:

HTTP://Machine_A/Scripts/FoxISAPI.dll/Reset

Para probar la instalación, puede abrir tantas instancias del explorador de Web como servidores de Automatización ISAPI haya en el grupo. Los exploradores de Web pueden estar en varios equipos conectados a la red. Entonces puede llamar al método Delay en la dirección URL desde cada explorador de Web para que Foxisapi.dll dirija las peticiones de servicio a los servidores de Automatización ISAPI que estén libres. Una vez ejecutado el método Delay desde cada explorador de Web, puede usar Status para ver si todos los servidores de Automatización ISAPI del grupo han recibido peticiones de servicio.

Utilizar FoxISAPI con servidores de archivos DLL

Si se utiliza FoxISAPI con servidores en proceso de varios subprocesos en la versión anterior de Visual FoxPro, necesitará desactivar la compatibilidad del administrador de grupo en FoxISAPI. Para ello, utilice la opción PoolMode en el archivo Foxisapi.ini. La opción PoolMode afecta a todos los servidores, por lo que le recomendamos que no permita que un único archivo Foxisapi.dll se utilice tanto para los servidores de archivos EXE como de archivos DLL. En su lugar, copie y cambie el nombre de los archivos Foxisapi.dll y Foxisapi.ini para tener un grupo para servidores de archivos EXE y otro para servidores de archivos DLL.

Depurar los servidores de Automatización ISAPI

Foxisapi.dll también le permite depurar los servidores de Automatización ISAPI en el equipo local. Establezca 0 como número de instancias del servidor de Automatización que desee depurar, como se indica en el siguiente ejemplo de archivo Foxisapi.ini:

[FOXWEB.MYSERVER]
FOXWEB.SERVER=0

El archivo de programa Odebug.prg debe encontrarse en la carpeta raíz de Visual FoxPro y deben estar presentes los archivos de origen del servidor de Automatización ISAPI. Asegúrese de que el servidor de Automatización ISAPI que desea depurar esté configurado como persistente y de que la información de depuración esté activada en el proyecto que contiene los archivos de origen del servidor de Automatización ISAPI.

Cuando se crea una instancia del servidor de Automatización ISAPI, Foxisapi.dll inicia Visual FoxPro para la depuración, lo que le permitirá establecer puntos de interrupción, hacer un seguimiento del código, etc.

Comandos de Foxisapi.dll

Foxisapi.dll tiene comandos que puede invocar para determinar el estado de los servidores de Automatización ISAPI y restablecerlos. En la tabla siguiente se relacionan los comandos de Foxisapi.dll con una descripción de cada uno de ellos.

Comando | Descripción
MultiMode | Ejecuta el comando Reset y, a continuación, limita el número de instancias de los servidores de Automatización ISAPI a los valores especificados en Foxisapi.ini.
PoolMode | Activa o desactiva la compatibilidad con el Administrador de grupo en FoxISAPI. Utilice este comando para desactivar el Administrador de grupo para servidores de archivos DLL en proceso. 0 – activa 1 - desactiva (predeterminado)
Reset | Libera todas las instancias de los servidores de Automatización ISAPI.
SingleMode | Ejecuta el comando Reset y, a continuación, limita a uno el número de instancias de los servidores de Automatización ISAPI. Puede ejecutar este comando para realizar tareas de mantenimiento. Por ejemplo, puede abrir tablas en modo exclusivo cuando SingleMode esté activo.
Status | Muestra el estado actual de los servidores de Automatización ISAPI, las opciones de configuración de Foxisapi.ini y si está activo SingleMode o MultiMode.

Los comandos de Foxisapi.dll se invocan con una dirección URL especificada en Foxisapi.ini. El siguiente es el contenido del archivo Foxisapi.ini de ejemplo, con las direcciones URL predeterminadas:

[FOXISAPI]
StatusURL = Status
ResetURL = Reset
SingleModeURL = SingleMode
MultiModeURL = MultiMode

La dirección URL siguiente ejecuta el comando Status:

HTTP://MyServer/Scripts/Foxisapi.dll/Status

En el ejemplo de archivo Foxisapi.ini siguiente, la dirección URL del comando Status cambia de Status a MyStatus:

[FOXISAPI]
StatusURL = MyStatus
ResetURL = Reset
SingleModeURL = MSingleMode
MultiModeURL = MultiMode

Después de este cambio en Foxisapi.ini, la dirección URL siguiente ejecuta el comando Status:

HTTP://MyServer/Scripts/FoxISAPI.dll/MyStatus
Nota Después de hacer cambios en el archivo Foxisapi.ini, debe restablecer Foxisapi.dll con el comando Reset para que tengan efecto.

Opciones adicionales de FoxISAPI.ini

Foxisapi.dll lee Foxisapi.ini y configura sus opciones según los elementos que contenga. En la tabla siguiente se describen los elementos adicionales que puede incluir en el archivo Foxisapi.ini.

Elemento | Descripción
AutoRefreshStatus | Especifica el número de segundos entre actualizaciones de la página Status. El valor predeterminado es 0 segundos (la página no se actualiza) cuando se omite este elemento o no existe Foxisapi.ini.
BusyTimeout | Especifica el número de segundos que Foxisapi.dll espera que los servidores de aplicaciones Visual FoxPro respondan antes de generar un mensaje de fin de tiempo de espera. El valor predeterminado es 2 segundos cuando se omite este elemento o no existe Foxisapi.ini.
ReleaseTimeout | Especifica el número de segundos que Foxisapi.dll espera a que un servidor de aplicaciones Visual FoxPro responda, antes de ejecutar el comando Reset. El valor predeterminado es 2 segundos cuando se omite este elemento o no existe Foxisapi.ini.

El fragmento siguiente está tomado del archivo Foxisapi.ini de ejemplo y muestra los formatos de los elementos adicionales que puede incluir en este archivo:

[FOXISAPI]
BusyTimeout = 5
ReleaseTimeout = 15
Nota Después de hacer cambios en el archivo Foxisapi.ini, debe restablecer Foxisapi.dll con el comando Reset para que tengan efecto.

Sugerencias para la configuración de Microsoft Internet Information Server (IIS)

Puede agregar al registro dos entradas para IIS, PoolThreadLimit y ThreadTimeout, con el fin de mejorar el rendimiento con los servidores de Automatización FoxISAPI de Visual FoxPro. Estas entradas determinan el número total de subprocesos que Internet Information Server puede crear y su duración. Si desea más información acerca de estas entradas del registro, vea la documentación de Internet Information Server.

En www.microsoft.com encontrará un artículo de Microsoft Knowledge Base titulado "How to Launch Automation servers from ISAPI Extensions" (número Q156223). Este artículo contiene información acerca de los permisos de seguridad de acceso necesarios para iniciar servidores de Automatización, tales como los servidores de Automatización ISAPI de Visual FoxPro.

Vea también

Ejemplos de Soluciones | Servidor de Automatización FoxISAPI (Ejemplo) | FoxIs, un servidor de Internet de Visual FoxPro


FoxIs, un servidor de Internet de Visual FoxPro

FoxIs, que se encuentra en el directorio …\Samples\Servers\Foxisapi\FoxIs de Visual FoxPro, ilustra la creación de un .exe fuera de proceso o de una .dll en proceso con funcionalidad ISAPI, lo que permite el acceso a él desde Visual FoxPro como programa independiente, desde clientes de Automatización o desde un explorador de Web. Los cambios que realice en sus clases pueden mejorar el servidor de Automatización, independientemente de cómo se ejecute.

Para abrir el proyecto de ejemplo FoxIs

  • Escriba la siguiente línea de código en la ventana Comandos:
    MODIFY PROJECT (HOME(2) + 'servers\foxisapi\foxis\foxis')

Ejecutar el ejemplo FoxIs

Puede ejecutar el ejemplo FoxIs de cuatro maneras distintas. Cuando esté probando el código, se recomienda que ejecute el ejemplo en el orden siguiente:

Ejecutar desde Visual FoxPro

Para ejecutar el ejemplo FoxIs desde Visual FoxPro, ejecute el siguiente código en la ventana Comandos.

SET DEFAULT TO (HOME(2) + 'servers\foxisapi\foxis\')
SET CLASSLIB TO employee
ox = CREATEOBJECT('employee')
ox.show

Ejecutar como un ejecutable independiente

Puede generar el ejemplo en un archivo ejecutable con la siguiente línea de código:

BUILD EXE foxis FROM foxis

El archivo compilado, FOXIS.EXE, es un programa de Windows que se puede agregar al menú Inicio de Windows o que se puede iniciar desde el Explorador de Windows, etc.

Ejecutar como servidor de Automatización

Una vez compilado el ejemplo FoxIs para crear un archivo .exe o .dll, se registra como un servidor de Automatización en el Registro de Windows. Puede crear un objeto basado en la clase Employee desde cualquier controlador de OLE, como Excel, Visual Basic y Visual FoxPro:

ox = CREATEOBJECT('foxis.employee')
ox.SHOW

Ejecutar desde un explorador de Web

Incluso puede ejecutar el ejemplo FoxIs desde un explorador de Web, que podría estar en otro equipo, por ejemplo un 286 que trabaje con MS-DOS, un equipo Unix, un Macintosh o un Personal Digital Assistant.

Requisitos del sistema para la utilización de Internet

Para ejecutar el ejemplo FoxIs desde un explorador de Web, es necesario que trabaje con:

  • Windows 98 o Windows NT 4.0 o posterior.
  • Un servidor de Web compatible con ISAPI, como Microsoft Personal Web Server para Windows 98 o Microsoft Internet Information Server (IIS). IIS está incluido con Windows NT 4.0 y posterior, y se puede descargar gratuitamente desde www.microsoft.com; Personal Web Server también se puede descargar desde www.microsoft.com.

Si está utilizando Windows NT 4.0 o posterior, debe ejecutar la aplicación DCOMCNFG para configurar DCOM de forma que conceda derechos al servicio IIS para crear instancias de objetos OLE.

Para configurar DCOM de Windows NT 4.0 o posterior

  1. En la línea de comandos, escriba DCOMCNFG y presione Entrar.
  2. En la ficha Aplicaciones, seleccione el nombre del servidor de Automatización. Cuando se genera el servidor, la aplicación predeterminada será "employee".
  3. En la ficha Seguridad predeterminada del cuadro de diálogo Propiedades de configuración de COM distribuido, elija Modificar valor predeterminado para cada área: Permisos de acceso predeterminados, Permisos de inicio predeterminados y Permisos de configuración predeterminados.
  4. En el cuadro de diálogo Registrar permisos de valores para cada área, elija Agregar.
  5. En el cuadro Agregar nombres del cuadro de diálogo Agregar usuarios y grupos, escriba el nombre de su servidor de WWW y su nombre de usuario para el inicio de sesión.

    Puede ver el nombre del servidor en la ventana de Propiedades de Microsoft Internet Service Manager. Si el nombre de su equipo es MINE, la siguiente línea en el cuadro Agregar nombres configura un usuario predeterminado:

    \MINE\IUSR_MINE

    Si el nombre de su equipo es MINE y su nombre de usuario es HOMER, la siguiente línea del cuadro Agregar nombres configura permisos para usted cuando inicia una sesión:

    \MINE\HOMER

Configurar el ejemplo FoxIs para el acceso a Internet

Para configurar el ejemplo FoxIs, debe crear un archivo .exe o .dll desde el proyecto FoxIs y, luego, copiarlo al directorio Inetsvr\Scripts.

Para configurar el ejemplo FoxIs

  1. Abra el proyecto FOXIS.
  2. Elija el botón Generar y, después, Generar DLL COM.
  3. Copie Foxisapi.dll a la carpeta Inetsrv\Scripts.

Pruebas preliminares

Puede probar la aplicación de ejemplo FoxIs a varios niveles para ver si está correctamente configurada.

Para ver si funciona el código

  1. En el menú Programa elija Ejecutar.
  2. Seleccione Main.prg en la carpeta Samples\Servers\Foxisapi de Visual FoxPro.
  3. Elija Ejecutar.

Para ver si funciona el archivo .EXE

  1. En la ventana Comandos de Visual FoxPro, ejecute el comando siguiente:
    BUILD EXE Foxis.exe FROM foxis
  2. Haga doble clic en Foxis.exe en el Explorador de Windows.

Para ver si funciona el servidor de Automatización FoxIs

  • Ejecute los siguientes comandos:
    OX= CREATEOBJECT('FOXIS.EMPLOYEE')
OX.Show    && Ver si trabaja como un servidor de Automatización ISAPI
?OX.Startup( )  && Ver si retorna html

Es mucho más fácil depurar servidores de Automatización desde un controlador de Automatización (como Visual FoxPro) que crear una instancia en FoxIs.

Instalar la página HTML

Para empezar a trabajar, necesita una página HTML que contenga una referencia a una dirección URL. Por ejemplo, ponga el siguiente código en el archivo Wwwroot\default.htm.

<a HREF="/scripts/foxisapi.dll/FoxIS.employee.startup"> <i>VFP ISAPI AUTOMATION SERVER DEMO PAGE</i> </a>

Después utilice un explorador (que puede estar en el mismo equipo) y conéctese a YourMachineName. Por ejemplo, si su equipo se llama "myMachine", escriba "myMachine" como la dirección URL a la que desea dirigirse. Esto hará que la página Default.htm aparezca en el servidor con el nombre "myMachine".

Se ha iniciado un método CreateObject("foxis.employee") y se ha invocado el método Startup en el objeto, que devuelve una página HTML generada. Si todavía no se ha generado el servidor de Automatización ISAPI, Foxisapi.dll devolverá una página de error de HTML.

Después utilice su explorador de Web para el acceso a la anterior referencia de controlador (href). Si recibe una página HTML de error que indica un "Error de Foxisapi", significa que la DLL se está cargando y está trabajando.

 <FORM ACTION = "/scripts/foxisapi.dll/foxis.employee.cmd">
<INPUT NAME="Cmd" VALUE = "Reset">
<INPUT TYPE="submit" VALUE="Dos Command">
</FORM>

Además, puede colocar cualquier comando de MS-DOS válido y se ejecutará en el equipo servidor. Si el comando es "Reset" (predeterminado), hará que el servidor de Automatización ISAPI libere la primera instancia así como la suya propia, con lo que se liberará completamente el servidor de Automatización ISAPI.

También puede evaluar cualquier expresión de Visual FoxPro. De todas formas, si la expresión de Visual FoxPro muestra una interfaz modal, como hace la función MESSAGEBOX( ), el servidor de Automatización se bloqueará en espera de una respuesta que no se puede obtener. Sin embargo, en el caso de una .dll en proceso, la interfaz modal se administra automáticamente y el servidor de Automatización no se bloquea.

<FORM ACTION = "/scripts/foxisapi.dll/foxis.employee.cmd?FOXCMD">
<INPUT NAME="Cmd">
<INPUT TYPE="submit" VALUE="Fox Expression">
like "today is "+ cdow(date()) or 45 * 3 or SYS(2004)
</FORM>

Depurar el servidor

Un servicio de Windows NT carece de escritorio, por consiguiente no aparecerá ninguna interfaz de usuario en el servidor. Esto quiere decir que usted debería depurar las aplicaciones de su servidor antes de distribuirlas.

Para realizar un seguimiento de Foxisapi.dll con Visual C++ 5.0

  1. Abra Foxisapi.mak.
  2. Quite la marca de comentario de la siguiente línea en HttpExtensionProc:
    //   _asm int 3
  3. Vuelva a generar el proyecto.
  4. Inicie MSDEV con el Id. de proceso (PID) de Inetinfo.exe. Puede obtener el Id. de proceso en el Administrador de tareas de Windows.

Este proceso se aplica a Windows NT 4.0 o posterior.

Sugerencia Durante la depuración, no es necesario que cierre el servidor Web para cambiar el servidor de Automatización. Puede, simplemente, terminar el componente fuera de proceso al enviar un valor de reinicio al método cmd, como se describió anteriormente, o al utilizar las herramientas SDK TLIST, KILL, PVIEW de Win32 o el Administrador de tareas en Windows NT 4.0 o posterior.

La clase ISForm

El "motor" del ejemplo es la clase ISForm en Isapi.vcx.

Punto de entrada a la clase ISForm

Se puede llamar a los siguientes métodos desde el explorador de Web, mediante Foxisapi.dll, para devolver páginas HTML.

Método | Devuelve
Cmd | Evaluación de una expresión de Visual FoxPro o el resultado de un comando de MS-DOS.
DoSave | Guarda los cambios realizados en los datos por el usuario y devuelve la página HTML del empleado.
Skipit | La información del empleado especificado en la tabla. Skipit toma información de cookies pasada como un parámetro desde el explorador de Web, examina la tabla de cookies en busca del número del registro anterior y desplaza el puntero del registro hacia delante o hacia atrás respecto al número de registro almacenado en la tabla de cookies. Se vuelve a escribir el número del registro nuevo en la tabla de cookies y se llama al método GenHTML.
Startup | La información acerca del primer empleado de la tabla. Startup crea un nuevo Id. de cookie para el usuario y vuelve a enviarlo en forma de un área de entrada oculta en la página HTML.

Mantener activo el servidor

Generalmente, para cada petición de un cliente de Web, se crea una instancia del servidor de Automatización, se genera una página HTML y se libera con la llamada Release( ) en CallObject( ) de Foxisapi.cpp. Esto quiere decir que el tiempo de ejecución de Visual FoxPro se iniciará y cerrará por completo para cada petición.

Si el servidor de Automatización ISAPI está registrado como Uso múltiple y no se llama a Release( ), la primera petición iniciará el servidor, pero las siguientes peticiones utilizarán la misma instancia del servidor, lo que mejorará considerablemente el rendimiento. El código de Foxisapi.dll y de los métodos Load, Cmd, DoSave, Startup y Skipit de ISForm controlarán el mantenimiento de la misma instancia del servidor activo.

Variables de la DLL

Hay dos variables declaradas: pdispObj y pdispDoRelease. En la creación del servidor, pdispObj es el controlador de ejecución del objeto OLE. La variable pdispDoRelease se establece con el mismo valor que pdispObj y se pasa por referencia como un parámetro al método del servidor ISForm solicitado por el explorador de Web. El código del servidor de Automatización ISForm de Visual FoxPro puede cambiar el valor de pdispDoRelease.

Sugerencia Si desea más información acerca de este ejemplo, vea los observaciones en el código de ISForm y Foxisapi.cpp.

El evento Load del formulario

Cuando se crea ISForm, el código del evento Load crea dos variables públicas, gpInstance y gpDisp. La primera vez que se carga el servidor ISForm, la variable gpInstance se establece como 1. Las instancias subsiguientes aumentarán esta variable. Cuando se libera una instancia, disminuye el valor de gpInstance.

Los métodos de punto de entrada

Cuando se invoca un método (Cmd, DoSave, Skipit o Startup) de ISForm a través de Foxisapi.dll, la DLL pasa un puntero de ejecución por referencia como un parámetro para el método.

La primera vez que se ejecuta el servidor, el contador de instancias se establece en 1 y el puntero de ejecución se almacena en la variable global. A continuación se almacena el valor 0 en el puntero de ejecución.

IF m.gnInstance = 1
IF TYPE('pDisp') $ 'NI'
gpDisp = m.pDisp
pDisp = 0
ENDIF
ENDIF

En este momento hay dos variables que señalan al mismo valor de puntero de ejecución: gpDisp del servidor de Automatización ISForm y pdispObj de Foxisapi.dll. El valor de pdispDoRelease en la DLL es 0, pues se ha modificado en el servidor de Automatización ISForm.

Las próximas veces que se llame al servidor, aumentará el contador de instancias, se generará un nuevo pdispObj en la DLL, almacenado en pdispDoRelease, y se pasará por referencia al método solicitado. Dado que el valor de gnInstance es distinto de 1, no se modifica la variable gpDisp. A partir de este punto, gpDisp en el servidor de Automatización tendrá un valor distinto que el de pdispObj y pdispDoRelease en la DLL.

El código de la DLL

El siguiente código de C++ de Foxisapi.cpp administra la liberación del servidor. Una vez creada la primera instancia, las siguientes instancias se liberarán generalmente con la llamada Release( ) en CallObject( ) de Foxisapi.cpp porque pdispObj y pdispDoRelease están establecidas con el mismo valor distinto de cero.

if (pdispDoRelease != 0) {
pdispObj->Release();  //diferente de zero, por lo tanto solo quita el objeto actual
if (pdispObj != pdispDoRelease) {
__try {
(pdispDoRelease)->Release();
} __except  (EXCEPTION_EXECUTE_HANDLER) {
}
}
}

El evento Destroy del ISForm disminuye el contador de instancias. En el caso de que sólo haya una instancia, pdispDoRelease se ha establecido en 0 y no se llamará al código de liberación. Si pdispObject y pdispDoRelease son la misma, se liberarán las instancias subsiguientes, pero no así la instancia original.

Liberar el servidor

Para forzar una liberación, pdispDoRelease tiene que ser distinta de 0 y debe tener un valor diferente que el de pdispObject. El siguiente texto HTML envía un valor al servidor que afecta a la liberación:

 <FORM ACTION = "/scripts/foxisapi.dll/foxis.employee.cmd">
<INPUT NAME="Cmd" VALUE = "Reset">
<INPUT TYPE="submit" VALUE="Dos Command">
</FORM>

El siguiente código del método cmd establece el valor de pdispDoRelease como el valor de ejecución de la primera instancia.

CASE 'RESET'$upper(m.p1)
m.pDisp= m.gpDisp

El código de la DLL ahora liberará la instancia actual y la instancia original que se ha mantenido existente para impedir que el tiempo de ejecución de Visual FoxPro tuviera que volverse a cargar cada vez que se llamara al servidor.

Enviar HTML de vuelta al cliente

Se llama al método GenHTML de la clase ISForm desde cada método de punto de entrada. La página HTML devuelta desde el método GenHTML se devuelve al explorador de Web a través del Internet Information Server.

Si el parámetro de modo que se ha pasado al método GenHTML no es "FORM", el método GenHTML simplemente buscará en una tabla y mandará la página HTML antes de que reciba formato.

IF m.mode != 'FORM'
=SEEK(m.mode,'html')
rv = html.html
RETURN m.rv
ENDIF

Si el parámetro de modo es "FORM", el código en GenHTML identificará cada una de las etiquetas y cuadros de texto del formulario, los ordenará de izquierda a derecha y de arriba a abajo, evaluará las propiedades Caption y ControlSource de los controles y utilizará la capacidad de mostrar texto de Visual FoxPro para generar el texto HTML adecuado para aproximar la presentación del formulario.

Si agrega etiquetas y cuadros de texto adicionales al formulario, se mostrarán automáticamente en el código HTML generado.

Crear y utilizar cookies

Como servidor de Web, muchos clientes pueden tener acceso a esta aplicación muchas veces y necesitamos realizar un seguimiento del estado del usuario. En este caso, sólo realizamos un seguimiento del número del registro actual para dicho usuario. Podríamos presentar al usuario una pantalla de inicio de sesión y utilizar el nombre de usuario como una clave para el cookie, pero en lugar de eso, generamos un valor de cookie en el método MakeCookie y lo pasamos como un valor oculto del código HTML que se devuelve al usuario. Cada vez que el usuario escoge ir a un registro distinto, podemos leer el valor del cookie desde la cadena de HTTP enviada a la DLL, localizar el cookie en la tabla Cookies, encontrar el número de registro actual y desplazar el número de registro correspondiente a este número.

En el proceso de manipulación de cookies se utilizan la siguiente propiedad y los siguientes métodos:

  • Propiedad Cookie
  • Método GetCookie
  • Método MakeCookie
  • Método WriteCookieInfo

Tratamiento de errores

Si se produce un error, el código del evento Error de la clase ISForm llama al método GenHTML con un parámetro "ERROR". GenHTML lee el texto de HTML, aún sin formato, en busca de errores y lo devuelve al código del evento Error. El código del evento Error substituye la información de error para marcadores de posición en el código HTML:

   LOCAL rv
rv = THIS.GenHTML('ERROR')
rv = strtran(m.rv,'%METHOD%',m.cMethod)
rv = strtran(m.rv,'%ERRORNO%',STR(m.nError,4))
rv = strtran(m.rv,'%ERRORMSG%',Message(1))
rv = strtran(m.rv,'%LINENO%',STR(m.nLine,4))
THIS.ErrorHTML = m.rv

Cuando la propiedad ErrorHTML no está vacía, GenHTML envía el valor de ErrorHTML al cliente.

Tablas utilizadas en el ejemplo FoxIs

Además de la tabla de empleados utilizada para la entrada y la presentación de datos, el ejemplo FoxIs utiliza las siguientes tablas.

Tabla | Descripción
HTML | Contiene el texto HTML que se va a enviar al explorador de Web como un encabezado para las evaluaciones de FoxCMD y DosCMD o en caso de que se produzca un error.
Cookies | Realiza un seguimiento de números de registro para distintos exploradores de Web. El valor de campo de cookie único se pasa como un valor oculto en el texto HTML enviado a un usuario específico.

Vea también

Ejemplos de Soluciones | Servidor de Automatización FoxISAPI (Ejemplo) | FoxWeb, un servidor de Automatización de Visual FoxPro para Internet simplificado


Ejemplos COM+

Windows 2000 introduce un nuevo conjunto de servicios de componentes (servicios COM+) que amplían la capacidad de crear eficaces soluciones de transacciones distribuidas para aplicaciones Windows o Web. Visual FoxPro incluye nuevas y mejoradas características de servidor para una mayor compatibilidad con muchos de estos servicios. Los ejemplos COM+ son muy sencillos y pretenden mostrar los conceptos básicos del uso de un servicio COM+ específico. Los ejemplos para el uso de componentes en cola, eventos COM+ y administradores de recursos de compensación se ubican en la carpeta ..\Samples\COM+. Para obtener más información, vea el archivo Readme.htm de la carpeta.

Algunos de los servicios COM+, como por ejemplo Transactions, ya existían antes de Windows 2000 y eran compatibles con Visual FoxPro. Los nuevos servicios, como por ejemplo los eventos COM+ y los componentes en cola, ofrecen nuevas opciones para sus aplicaciones que no estaban disponibles con anterioridad en Visual FoxPro.

Vea también

Ejemplos de servidor | Servidor de Automatización FoxISAPI (Ejemplo)


Ejemplos de Soluciones

Los ejemplos de Soluciones de Visual FoxPro demuestran características particular de Visual FoxPro y pueden ejecutarse independientemente. Los ejemplos de Soluciones también incluyen ejemplos basados en las Foundation Classes de Visual FoxPro (A-Z).

Ejecutar los ejemplos de Soluciones

Puede ejecutar los ejemplos de Soluciones de Visual FoxPro desde le Administrador del panel de tareas, el cual incluye funcionalidad para buscar e instalar ejemplos adicionales.

Para ejecutar los ejemplos de Soluciones desde el Administrador del panel de tareas

  1. Abra el Administrador del panel de tareas, seleccione Panel de tareas en el menú Herramientas.
  2. En la barra de herramientas Administrador del panel de tareas, seleccione Ejemplos de Soluciones.
  3. En una de las categorías de ejemplo, elija un ejemplo que desee ejecutar.
  4. Para ejecutar el ejemplo, haga clic en el enlace para el ejemplo. Para ver el código del ejemplo, haga clic en Ver código localizado a la derecha de la descripción del ejemplo.

Para más información acerca del Administrador del panel de tareas, vea Administrador del panel de tareas.

También pude ejecutar los ejemplos de Soluciones desde la aplicación Solution localizada en ...\Samples\Solution\Solution.app.

Vea también

Ejemplos | Guías paso a paso | Referencia | Uso de Visual FoxPro


Nuevos Ejemplos de Soluciones en Visual FoxPro 8.0

Esta versión de Visual FoxPro contiene gran cantidad de ejemplos Solution para demostrar las nuevas características y mejoras del lenguaje.

En esta sección

Agrupar, elevar, desagrupar y obtener eventos (Ejemplo)
Enseña como enlazar, activar, desenlazar y recuperar eventos programáticamente.
Controlar MSN Messenger (Ejemplo)
Muestra como controlar MSN Messenger usando la API de Messenger y Windows Scripting Host.
Crear un cursor desde un DayaSet XML (Ejemplo)
Explica como crear un cursor a partir de un conjunto de datos XML usando las clases CursorAdapter y XMLAdpter y como enlazar los datos a controles en un formulario.
Ejemplo de como crear formularios con forma irregular (Ejemplo)
Indica como usar la función API de Windows SetLayeredWindowAttributes para cambiar la forma rectangular de la ventana principal de Visual FoxPro o cualquier otro formulario.
Colorear un grid, redimensionar columnas e insertar imagenes en los encabezados de las columnas (Ejemplo)
Guía como seleccionar los colores y el estilo para colorear un grid, redimensionar automáticamente las columnas para ajustarse al ancho de los datos, bloquear la primera columna para evitar que se desplace e insertar imágenes en los encabezados de las columnas.
Cargar y generar XML usando la clase XMLAdapter (Ejemplo)
Presenta algunos de los muchos usos de la clase XMLAdapter, tales como usar datos en formato XML para crear cursores o generar datos XML a partir de múltiples tablas.
Utilizar y acceder a datos usando CursorAdapters (Ejemplo)
Exlica como los objetos CursorAdapter pueden obtener datos de tres diferentes proveedores.
Miembros de clase (Ejemplo)
Nos muestra como definir y subclasear clases miembro, es posible seleccionar un contenedor padre, establecer la biblioteca de clases miembro, aumentar o disminuir el número de miembros y ver el comportamiento en tiempo de diseño o ejecución.
Pasar matrices fuertemente tipadas (Ejemplo)
Explica como pasar por referencia matrices fuertemente referenciadas a un servidor COM usando la función COMARRAY. Este ejemplo también muestra la sintaxis de la declaración de interfaz para especificar tipos de matrices ByRef en la biblioteca generada de tipo COM.
SCATTER NAME...ADDITIVE (Ejemplo)
Muestra como actualizar y guardar algunas propiedades de formularios hacia una tabla usando los comandos SCATTER con las clausulas NAME y ADDITIVE y GATHER con la clausula NAME.
Manejo estructurado de excepciones (Ejemplo)
Este ejemplo muestra como atrapar excepciones usando bloques TRY y CATCH, limpiar los recursos usando el bloque FINALLY , y descartar o escalar las excepciones usando la declaración THROW.
Ubicar un icono en la bandeja de sistema (System Tray) (Ejemplo)
Presenta algunos usos comunes de la clase Systray, la que puede usar íconos en el area de notificaciones o System Tray. La clase Systray también ofrece soporte para eventos de ratón, globos de información y menús contextuales de Visual FoxPro en el icono del System Tray, para que pueda usar todas las características del diseñador de menús de Visual FoxPro .
Soporte para los temas de Windows XP (Ejemplo)
Muestra los diferentes niveles de soporte de Visual FoxPro para los temas de Windows XP .

Secciones relacionadas

Ejemplos de Soluciones
Contiene una colección independiente de ejemplos que demuestran características particulares de Visual Foxpro. Los ejemplos Solution también incluyen ejemplos basados en las Foundation Classes de Visual FoxPro (A-Z).
Ejemplos de servidor
Contiene ejemplos que demuestran servidores de automatización. Los servidores de automatización son componentes COM que exponen funcionalidad que otras aplicaciones pueden usar a través de automatización.
Ejemplos Foundation Classes de Visual FoxPro
Contiene ejemplos que demuestran las Foundation Clasess de Visual FoxPro que son suministradas con la Galería de Componentes para ayudar en el desarrollo rápido de aplicaciones.
Guías paso a paso
Contiene instrucciones paso a paso para escenarios comunes.


Ejemplo de los eventos Enlazar, Activar, Desenlazar y Recuperar

Archivo: ...\Samples\Solution\Toledo\FrmEvents.scx

Este ejemplo muestra el enlace y disparo de eventos programáticamente, desconectando y recuperando eventos para la variable de sistema _SCREEN o para la ventana principal de Visual FoxPro. En el ejemplo, puede disparar un evento enlazado manualmente en _SCREEN seleccionando un evento del cuadro de lista o invocando los mismos eventos y sus controladores respectivos usando el ratón.

Para más información sobre _SCREEN, ver variable del sistema _SCREEN.

Enlazar un evento

Para responder a eventos de Visual FoxPro, use la función BINDEVENT( ). En este ejemplo, la función BINDEVENT( ) es llamada en el método InitBindEvent y enlaza a varios eventos de _SCREEN a métodos del formulario. Cuando uno de los eventos de _SCREEN desencadena, el método controlador asociado es llamado:

BINDEVENT(_SCREEN,"Resize",ThisForm,"screenresize")
BINDEVENT(_SCREEN,"Mousedown",ThisForm,"screenmousedown")
BINDEVENT(_SCREEN,"Mouseup",ThisForm,"screenmouseup")
BINDEVENT(_SCREEN,"Rightclick",ThisForm,"screenrightclick")
BINDEVENT(_SCREEN,"Dblclick",ThisForm,"screendblclick")

Para más información, ver la función BINDEVENT( )y el Evento Init.

Enlazando Eventos Programáticamente

Para enlazar eventos programáticamente, use la función RAISEEVENT( ). En este ejemplo, cuando el cuadro combinado es seleccionado, el evento InteractiveChange usa el valor devuelto para programáticamente disparar el evento especificado.

RAISEEVENT(_SCREEN,this.Value)

Para más información, ver la función RAISEEVENT() y el Evento InteractiveChange.

Desconectar Eventos

Para desconectar controladores de eventos, use la función UNBINDEVENTS( ). En este ejemplo, el método UnbindHandlers desconecta eventos en _SCREEN.

UNBINDEVENTS(_SCREEN)

Para más información, ver la función UNBINDEVENTS( ).

Recuperar información de Eventos Enlazados

Para recuperar información de eventos a una matriz, use la función AEVENTS( ). En este ejemplo, el método ScreenDblClick, el cual está enlazado al evento _SCREEN DblClick, utiliza la función AEVENTS( ) para reportar el número de enlaces existentes:

AEVENTS(laEvents,Thisform)

Para más información, ver la función AEVENTS( ) y el evento DblClick.

Vea también

Ejemplos de Soluciones | Enlace de Eventos para objetos de Visual FoxPro


Ejemplo del controlador de MSN Messenger

Archivo: ...\Samples\Solution\Toledo\Messenger.scx

Este ejemplo muestra como realizar operaciones con MSN Messenger usando el API de Messenger y Windows Scripting Host. Se pueden usar estos métodos para el envío automático de mensajes, correo electrónico y archivos a cualquiera de los usuarios de MSN desde procesos automatizados. Adicionalmente, si los usuarios tienen mensajería a móviles, pueden ser enviadas alertas a sus localizadores.

Este ejemplo no pretende ser una interfaz de usuario alternativo del MSN MESSENGER. Para mayor información sobre el API de MSN MESSENGER, ver MSDN en línea en http://msdn.microsoft.com.

El API de MSN Messenger

Este ejemplo muestra las APIs de Messenger a las cuales se puede acceder através del Modelo de Objetos de Componentes (COM). En este ejemplo, el objeto Messenger es instanciado en el evento Init:

ThisForm.oMessenger = CREATEOBJECT("Messenger.UIAutomation.1")

El evento Init también declara alguna de las funciones del API de Windows, usadas para traer a primer plano la ventana del Messenger, de forma que se pueda automatizar la composición de mensajes de correo electrónico y enviar archivos.

DECLARE LONG SetForegroundWindow IN WIN32API LONG
DECLARE INTEGER FindWindow IN WIN32API STRING @ cClase, STRING @ cTitulo
DECLARE LONG CloseWindow IN WIN32API LONG
DECLARE Sleep IN WIN32API long

Después de crear una instancia del objeto Messenger, se puede llamar a todos los métodos como AutoSignin, InstantMessage, OpenInbox, SendFile, SendMail, y SignOut. Los métodos SendFile y SendEmail también usan las funciones del API de Windows para traer la ventana de Messenger a primer plano, de esta manera el objeto Windows Scripting Host Shell puede ser usado para enviar pulsaciones de teclado a la ventana activa.

Windows Scripting Host

Este ejemplo ilustra como usar el Windows Scripting Host para enviar pulsaciones de teclado a la ventana activa y rellenar los formularios automáticamente, para enviar mensajes de correo electrónico y archivos. Windows Scripting Host es requerido porque el API de MSN Messenger no tiene esta funcionalidad. El objeto Windows Scripting Host Shell es instanciado en el evento Init del formulario ejemplo:

ThisForm.oWsh = CREATEOBJECT("wscript.Shell")

Para enviar pulsaciones de teclado a la ventana activa, el método SendKeys del formulario ejemplo, llama a la función del Windows Scripting Host Shell, SendKeys( ), y automatiza la composición del correo electrónico y el envio de archivos.

ThisForm.oWsh.SendKeys(tcKeys)

Ver también

Ejemplos de Soluciones | Evento Init

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Ejemplo Crear un Cursor desde un DataSet XML

Archivo: ...\Samples\Solution\Toledo\CAXML.scx

Este ejemplo, enseña como crear un cursor desde un DataSet XML utilizando las clases CursorAdapter y XMLAdapter y como llevar los datos hacia los controles de un formulario.

Para ver los cambios en un XML DiffGram

  • Realizar los cambios en la cuadrícula y luego hacer clic en Mostrar DiffGram.

Para ver las propiedades de un CursorAdapter

  • Hacer clic en Mostar Propiedades de CursorAdapter .

Para más información sobre CursorAdapter y XMLAdapter, vea Clase CursorAdapter, Clase XMLAdapter.

Cargando XML en un Cursor

En este ejemplo, el método XMLAdapter LoadXML carga un DataSet XML en un objeto XMLAdapter y utiliza el objeto CursorAdapter para crear un cursor. Cargando el dataSet en un XMLAdapter, se crea un objeto XMLTable en la colección XMLAdapter Tables correspondiente a las tablas en el DataSet XML. La propiedad CursorAdapter SelectCmd se cambia al objeto XMLTable que desee mostrar. Cuando el método CursorAdapter CursorFill es llamado en el objeto CursorAdapter, es creado el cursor.

Para obtener más información, vea Método LoadXML, Clase XMLTable, y Método CursorFill.

Este ejemplo usa un DataSet ADO.NET como archivo XML, pero el archivo XML también puede ser un DataSet XML generado por Visual Foxpro.

Cargar un DataSet en un objeto XMLAdapter

  1. En el evento Init del formulario de ejemplo, crear una propiedad como una referencia de objeto a un XMLAdapter mediante el diseñador de Formularios o Clases o utilizando el método AddProperty:
    ThisForm.AddProperty('oXMLAdapter',CREATEOBJECT('XMLAdapter'))
  2. Para crear la colección Tables en el objeto XMLAdapter, cargar el archivo XML como se muestra en el siguiente código:
    WITH ThisForm.oXMLAdapter
.LoadXML(ThisForm.cRunPath+'getcustomers.xml',.T.)
ENDWITH
  3. Cambiar CursorAdapter SelectCmd al objeto XMLTable y llamar al método CursorAdapter CursorFill:
    ThisForm.DataEnvironment.cursor1.SelectCmd= ;
"ThisForm.oXMLAdapter.Tables.Item(1)"
ThisForm.DataEnvironment.cursor1.CursorFill()

Para ver las propiedades del objeto CursorAdapter, buscar en el objeto DataEnvironment. Abrir el Diseñador de DataEnvironment pulsando el botón derecho del ratón en el objeto CursorAdapter y seleccionar Generador. Las propiedades del CursorAdapter pueden ser cambiadas por el Generador del CursorAdapter.

Para obtener más información, vea Objeto DataEnvironment, Evento Init, y Generador de CursorAdapter.

Controlando el enlace de datos (Data Binding)

El cursor que contiene los datos que usa el formulario, normalmente no existe cuando ocurre el enlace. Esto es porque se carga el XML en el evento Init del formulario, que ocurre después de que ha enlazado los datos. sin embargo, puede controlar cuando se enlazaran los datos mediante la propiedad Form BindControls.

En este ejemplo, la propiedad BindControls del formulario esta en Falso (.F.). Luego de que el método CursorAdapter CursorFill cree el cursor que contiene los datos, BindControls se cambia a Verdadero (.T.). Puede enlazar los controles del formulario utilizando el siguiente código:

ThisForm.BindControls = .T.

Para obtener más información, vea Propiedad BindControls.

Generar XML DiffGrams con el XMLAdapter

Para generar un XML DiffGram, utilice el método XMLAdapter ToXML, como esta ilustrado en el evento cmdDiffgram.Click de este ejemplo:

WITH ThisForm.oXMLAdapter
.ReleaseXML(.F.)      && Elimina el documento XML pero conserva el esquema.
.UTF8Encoded = .T.    && Indica caracteres Internacionales.
.IsDiffgram = .T.     && Genera XML DiffGram.
llIncludeBefore = .T. && Incluye formato <diffgram:before>.
llChangesOnly = .T.   && Genera solo cambios hechos.
llIsFile = .F.        && XML es una variable.
lcSchemaLocation = "" && Genera el esquena en línea.
.ToXml("lcXML",lcSchemaLocation,llIsFile,llIncludeBefore,llChangesOnly)
ENDWITH

Vea también

Ejemplos de Soluciones | Funcionalidad XML: Usando XMLAdapters


Ejemplo de como crear formularios con forma irregular

Archivo: ...\Samples\Solution\Toledo\Irregular.scx

La ventana principal de Visual FoxPro y cualquier formulario que cree, por defecto tienen forma rectangular. Para cambiar la forma, puede usar la función API de Windows SetLayeredWindowAttributes, la que determina lo opaco o transparencia de una ventana. SetLayeredWindowAttributes está disponible en Microsoft Windows 2000 y Windows XP.

Declarar la función API de Windows

En este ejemplo el evento Init del formulario contiene las siguientes declaraciones para las funciones API necesarias:

DECLARE INTEGER SetLayeredWindowAttributes IN win32api;
INTEGER HWND, INTEGER crKey, INTEGER bAlpha, INTEGER dwFlags
DECLARE INTEGER SetWindowLong IN user32.DLL ;
INTEGER hWnd, INTEGER nIndex, INTEGER dwNewLong
DECLARE INTEGER GetWindowLong IN user32.DLL ;
INTEGER hWnd, INTEGER nIndex

Para más información sobre el evento Init, vea el Evento init. Para información detallada sobre estas declaraciones y funciones vea MSDN en línea en: http://msdn.microsoft.com.

Mostrar ventanas de forma irregular

Puede desplegar un formulario no rectangular usando la función SetLayeredWindowAttributes para establecer un color transparente. Las formas que son dibujadas usando este color aparecen transparentes. Los clic del ratón dados sobre estas formas transparentes, actúan sobre el formulario que está visible.

Esta funcionalidad requiere Microsoft Windows 2000 y Windows XP, pero es más eficiente que técnicas anteriores para establecer solo ciertas regiones en el formulario. Aunque esta técnica crea un formulario transparente, el formulario debe ser formateado adecuadamente para usar esta funcionalidad.

Preparar el formulario

  1. En el formulario, establezca la propiedad ShowWindow a 2 (Como formulario de nivel superior)
  2. Debido a que el borde del formulario no se vuelve transparente, Desactívelo con las siguientes propiedades del formulario:
    BorderStyle = 0
Caption = ""
Closable = .F.
ControlBox = .F.
TitleBar = 0
  3. En el método MakeIrregular del formulario de ejemplo, establezca las áreas magenta como transparentes, especificando el valor de la variable nColor, con el siguiente código:
    * Gets existing flags from the window.
lnFlags = GetWindowLong(nHWND, GWL_EXSTYLE)
ThisForm.nFlags = lnFlags
* Appends Layered flag to existing flags.
lnFlags = BITOR(lnFlags, WS_EX_LAYERED)
* Sets new flags to the window.
SetWindowLong(nHWND, GWL_EXSTYLE, lnFlags)
SetLayeredWindowAttributes(nHWND, nColor, 0, LWA_COLORKEY)

Para más información, vea Diseñador de formularios, Crear formularios y Propiedad ShowWindow.

Vea también

Ejemplos de Soluciones


Ejemplos de resaltado de cuadrículas, ajuste de columnas e imágenes en las cabeceras

Archivo: ...\Samples\Solution\Toledo\Griders.scx

Este ejemplo muestra como ejecutar las siguientes acciones:

  • Seleccionar el estilo y colores para el resaltado del grid.
  • Ajustar las columnas automáticamente de acuerdo al ancho de los datos.
  • Evitar el desplazamiento de la primera columna del grid.
  • Especificar imágenes para las cabeceras de las columnas.

Seleccionar un estilo para el resaltado de un grid

Puede utilizar estilos para controlar el resaltado y como se comporta un grid cuando seleccione filas o navegue a través del mismo. Para cambiar el estilo de resaltado, utilice la propiedad Grid HighlightStyle.

En el ejemplo, para cambiar HighlightStyle, seleccione un estilo en el cuadro combinado del formulario. El cuadro combinado contiene el siguiente código:

ThisForm.grdCustomers.HighlightStyle = VAL(this.Value)

Para obtener mas información sobre HighlightStyle, vea Propiedad HighlightStyle.

También puede cambiar los colores del resaltado. Para obtener más información, vea Propiedad HighlightBackColor, Propiedad HighlightForeColor, Propiedad SelectedItemBackColor, y Propiedad SelectedItemForeColor.

Ajustando las columnas al ancho de los datos

Este ejemplo ajusta automáticamente el ancho de las columnas de un grid utilizando el método Grid AutoFit como sigue:

ThisForm.grdCustomers.AutoFit()

También puede ajustar el ancho de las columnas de una cuadrícula mediante un doble clic en el esquina superior izquierda del grid. Para ajustar automáticamente solo una columna, haga doble clic en la linea de división a la derecha de la columna. Puede controlar este comportamiento utilice la propiedad Grid AllowAutoColumnFit.

Para obtener más información, vea Método AutoFit y Propiedad AllowAutoColumnFit.

Bloquear columnas en un grid

Puede bloquear columnas de tal manera que estas queden fijas cuando se desplace horizontalmente a través de la cuadrícula utilizando la propiedad Grid LockColumns.

En el ejemplo, puede bloquear la primera columna en la cuadrícula cambiando grdCustomers.LockColumns a 1 como se muestra en el siguiente código:

ThisForm.grdCustomers.LockColumns = 1

También puede bloquear la columna Customer ID haciendo clic en la cabecera de la columna. La marca en la cabecera de columna indica si esta bloqueada. Para bloquear columnas individuales, haga doble clic en el área entre las cabecera de columna.

Para obtener más información, vea Propiedad LockColumns y Propiedad LockColumnsLeft.

Mostrar imágenes en las cabeceras de columna

Puede especificar una imágen para una cabecera de columna utilizando la propiedad Picture y cambiar la orientación utilizando la propiedad Header Alignment.

En el ejemplo, una imágen aparece en la cabecera de la columna Company Name para indicar la dirección del ordenamiento en la columna. Haciendo clic en la cabecera de la columna se mostrarán diferentes imágenes para indicar un ordenamiento ascendente o descendente.

Para obtener más información, vea Propiedad Picture y Propiedad Alignment.

Vea también

Ejemplos de Soluciones | Personalizar una ventana Examinar


Ejemplo de como Cargar y Generar XML usando la Clase XMLAdapter

Archivo: ...\Samples\Solutions\Toledo\XMLAdapter.scx

Puede usar la clase XMLAdapter para crear múltiples cursores a partir de fuentes XML, tales como DataSets de ADO.NET, y al contario, para generar XML a partir de varios cursores.

Este ejemplo muestra algunos de los muchos usos de la clase XMLAdapter, tales como seleccionar un archivo XML para crear cursores o generar XML a partir de múltiples tablas.

Para más información, vea Clase XMLAdapter.

Cargando XML

En este ejemplo, puede cargar un DataSet en formato XML en un objeto XMLAdapter haciendo clic en Cargar XML de la pestaña Tablas XML y seleccionando un archivo XML válido, como el generado desde un DataSet de ADO.NET o cualquier otro objeto XMLAdapter. El evento Click del botón Cargar XML contiene el siguiente código, el cual utiliza el método LoadXML del XMLAdapter:

ThisForm.oXMLAdapter.LoadXML(cNombreArchivo, .T.)

El nombre del archivo seleccionado es pasado como primer parámetro al método LoadXML. El segundo parámetro indica que el primer parámetro es un archivo; de lo contrario, se asume que se trata de una variable que contiene una cadena XML.

Despues de seleccionar un archivo, la colección Tables del XMLAdapter se llena con tantos objetos XMLTable como tablas existan en el DataSet XML, los cuales pueden ser usados para generar cursores.

Añadiendo Tablas

En este ejemplo, puede añadir tablas y generar un XML eligiendo Añadir Tabla de la pestaña Tablas XML, seleccionando una tabla y haciendo clic en A XML.

Cuando selecciona Añadir Tabla, una lista de tablas de de la base de datos Northwind aparece de modo que pueda seleccionar una o más de ellas. Después de seleccionar la tabla, es añadida al objeto XMLAdapter usando el método AddTableSchema tal como se muestra a continuación:

USE ? SHARED IN 0
cTabla = LOWER(ALIAS())
ThisForm.oXMLAdapter.AddTableSchema(cTabla)

Generando XML

En este ejemplo, puede generar XML después de añadir tablas al objeto XMLAdapter y configurar cualquier propiedad adicional en la pestaña Propiedades de XMLAdapter.

Para generar el XML, seleccione A XML en la pestaña Tablas XML, el cual invoca al método ToXML del XMLAdapter:

ThisForm.oXMLAdapter.ToXML(XML_FILENAME,, .T., ;
ThisForm.tabXMLAdapter.Page1.chkBefore.Value, ;
ThisForm.tabXMLAdapter.Page1.chkChangesOnly.Value)

En ToXML, el hecho de dejar el segundo parámetro en blanco indica que el esquema debe ser generado en linea. El tercer parámetro indica si el primer parámetro es el nombre de un archivo (Verdadero - .T.) o una variable (Falso - .F.).

Vea también:

Ejemplos de Soluciones | Funcionalidad XML: Usando XMLAdapters

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Ejemplo de Administración de Acceso a Datos Usando CursorAdapters

Archivo: ...\Samples\Solution\Toledo\CASample.scx

Este ejemplo, muestra como los objetos CursorAdapter obtienen datos desde tres orígenes distintos de datos:

  • Nativo

    Este ejemplo, muestra un cursor Nativo conectado a la base de datos Northwind de Visual FoxPro.

  • Open Database Connectivity (ODBC)

    Este ejemplo, muestra un cursor ODBC conectado a la base de datos Northwind en SQL Server, si la misma está instalada.

  • ActiveX Data Object (ADO)

    Este ejemplo, muestra un cursor ADO conectado a la base de datos Northwind de SQL Server, si la misma está instalada.

Los cursores usan buffer a nivel de registro y actualización automática, de modo que cuando se mueve el puntero de registro fuera del registro actual, cualquier cambio en el registro es enviado a la base de datos.

Para ver los valores actuales de las propiedades de los objetos CursorAdapter, pulse el botón Ver Propiedades de CursorAdapter. Estos valores fueron establecidos a través del Generador de CursorAdapter.

Vea también:

Ejemplos de Soluciones | Clase CursorAdapter | Manejo de datos utilizando CursorAdapters | Generador de CursorAdapter


Ejemplo de Miembros de Clases

Archivo: ...\Samples\Solution\Toledo\frmMember.scx

Puede especificar miembros de clases para los siguientes contenedores de clases:

  • PageFrame (Clase de miembro Page)
  • OptionGroup (Clase de miembro OptionButton)
  • CommandGroup (Clase de miembro CommandButton)
  • Grid (Clase de miembro Column)
  • Column (Clase de miembro Header)

También puede crear subclases de las clases Page, OptionButton, CommandButton, Column, y Header.

En este ejemplo, puede seleccionar un contenedor primario, cambiar la biblioteca de miembro de clase, aumentar o disminuir el número de miembros y cambiar el comportamiento en tiempo de diseño o ejecución.

Nota Observar las diferencias de comportamiento que existem durante el tiempo de diseño y en tiempo de ejecución: los cambios en MemberClass afectan a todos los miembros de la clase en tiempo de diseño, pero solo a los miembros nuevos en tiempo de ejecución.

Este ejemplo utiliza programas (.prg) y miembros de clase basados en bibliotecas de clases visuales (.vcx). Para obtener más información, vea Clases Miembro.

Especificar una Clase de miembro y una Biblioteca de Clase de miembro

Se puede especificar la clase de miembro y la biblioteca de clase de miembro que desee utilizar para los contenedores PageFrame, OptionGroup, CommandGroup, Grid, y Column cambiando las propiedades MemberClass y MemberClassLibrary para estos objetos como se muestra en el siguiente código:

MemberClassLibrary = "MyClasses.vcx"
MemberClass = "MyClassName"

-o-

MemberClassLibrary = "MyClasses.prg"
MemberClass = "MyClassName"

Se debe cambiar MemberClassLibrary antes de modificar la propiedad MemberClass.

Para obtener más información, vea MemberClass (Propiedad), y MemberClassLibrary (Propiedad).

Ver También

Ejemplos de soluciones


Pasando matrices fuertemente tipadas

File: ...\Samples\Solution\Toledo\ComArray.scx

Este ejemplo muestra como pasar matrices de tipo estricto, por referencia, a un servidor COM, usando la función COMARRAY. El servidor COM realiza cálculos y modifica el contenido de la matriz. El formulario cliente, usa el comando DIMENSION con la cláusula AS para declarar la matriz como fuertemente tipada.

El servidor COM del ejemplo fué escrito usando Visual FoxPro. En el ejemplo se muestra la sintaxis de declaración para especificar matrices estrictas, pasadas por referencia, en la biblioteca de tipos COM generada.

Cuando este abriendo el ejemplo, se le preguntará sí desea registrar el servidor COM. El servidor es eliminado del registro al cerrar el ejemplo.

Para pasar una matriz como una matriz de tipo extricto a un servidor COM

  • En el ejemplo, ingrese valores dentro de la matriz y pulse Determinante.

El servidor COM calcula el determinante de la matriz usando el método de reducción Gauss-Jordan.

Para más información, ver Función COMARRAY( ) y Comando DIMENSION.

Pasando matrices de tipo estricto

En el ejemplo, el formulario usa DIMENSION...AS para declarar una matriz de tipo extricto, como se muestra en el método de usuario CallCOMServer:

DIMENSION laMatrix(ThisForm.Matrixdim, ThisForm.Matrixdim) AS Double

La matriz se pasa por referencia al servidor COM usando la función COMARRAY( ):

* Instanciando el Servidor COM.
loMatrixCalc = CREATEOBJECT("VFPCOMArray.COMARRAYDemo")
* El indice de la matriz comienza en uno y, la misma, es pasada por referencia.
COMARRAY(loMatrixCalc,11)
* Pasa la matriz al servidor COM por referencia "como Double".
lnResult = loMatrixCalc.Determinant(@laMatrix)

Pasando parámetros por referencia a un COM

En el ejemplo, el método RegisterCOMServer contiene el código que compila y registra un servidor COM Visual Foxpro al ejecutarse. El código del servidor COM muestra la sintaxis de declaración para especificar matrices extrictas, pasadas por referencia, en la biblioteca de tipos COM generada, como sigue:

FUNCTION Determinant(mat[] AS Double @) AS Double

La matriz es escrita correctamente en la biblioteca de tipos como una matriz de tipo estricto. El símbolo arroba (@) indica que la misma es pasada por referencia en la biblioteca de tipos.

Vea también

Ejemplos de Soluciones


Ejemplo SCATTER NAME...ADDITIVE

Archivo: ...\Samples\Solution\Toledo\ScatterName.scx

Este ejemplo muestra como actualizar y guardar algunas propiedades de los formularios desde y hacia una tabla usando el comando SCATTER con las cláusulas NAME y ADDITIVE y el comando GATHER con la cláusula NAME.

En este ejemplo, puede actualizar un objeto existente con valores del registro actual usando la cláusula ADDITIVE junto con el comando SCATTER NAME. Puede cambiar el color, tamaño, mover o minimizar el formulario y también cerrarlo. Cuando ejecute el formulario nuevamente, aparecerá con el color, tamaño, ubicación y estado previo a cuando fue cerrado.

Para más información, vea Comando GATHER y Comando SCATTER.

Configurando las propiedades de un formulario desde una tabla utilizando SCATTER...NAME... ADDITIVE

Como ejemplo, el siguiente código incluido en el evento Init del formulario, abre una tabla y establece las propiedades de ese formulario con los campos coincidentes de la tabla:

USE (ThisForm.cRunPath+"FormProps")
SCATTER NAME ThisForm ADDITIVE
USE IN FormProps

La cláusula ADDITIVE hace posible actualizar y agregar propiedades de objetos.

Guardar propiedades de formularios en una tabla usando GATHER NAME

Al cerrar el formulario, los valores de las propiedades son guardados en los campos coincidentes en la tabla, al desencadenarse el evento Destroy.

USE (ThisForm.cRunPath+"FormProps")
GATHER NAME ThisForm
USE IN FormProps
Nota Esta tabla es creada en una base de datos teniendo en cuenta que las longitudes de los campos debe ser de 10 caracteres o más.

Vea también

Ejemplos de Soluciones


Ejemplo de Manejo Estructurado de Errores

Archivo: ...\Samples\Solution\Toledo\TryCatch.scx

Se puede implementar un control estructurado de excepciones mediante el uso de la estructura TRY...CATCH...FINALLY para ejecutar un bloque determinado de instrucciones si ocurre una determinada excepción mientras se ejecuta su programa. Cuando ocurre un error o excepción, se crea un objeto Exception.

Este ejemplo muestra cómo capturar excepciones usando los bloques TRY y CATCH, cómo liberar recursos usando el bloque FINALLY, y cómo lanzar o elevar excepciones usando una instrucción THROW.

Para más información, vea Control estructurado de errores, TRY...CATCH...FINALLY (Comando) y Exception (Objeto).

Captura de excepciones

En este ejemplo, puede escoger un error o excepción que desee causar en el bloque TRY y ver las propiedades del objeto Exception generado por la excepción.

Para generar una excepción

  • En la pestaña CATCHing Exceptions, se selecciona el error deseado en la lista desplegable y se pulsa Ejecutar bloque TRY.

Se ejecutará el bloque CATCH y se mostrarán en pantalla las propiedades del objeto Exception.

El código siguiente muestra la estructura de control de errores en este ejemplo concreto. Por lo general, el código que puede generar una excepción aparece en el bloque TRY; sin embargo, se llama específicamente al comando ERROR para mostrar cómo se traspasa el flujo de control al bloque CATCH sólo cuando ocurre una excepción.

Puede usar la propiedad UserValue del objeto Exception para almacenar información adicional acerca del error.

TRY
ERROR nErrorCode
CATCH TO myException
myException.UserValue = "No puedo controlar esto."
ENDTRY

Liberación de Recursos

El bloque FINALLY suele liberar los recursos ocupados por el bloque TRY, y siempre es el último fragmento de código en ejecutarse antes de que el control abandone la estructura TRY...CATCH...FINALLY.

Para observar cómo se ejecuta FINALLY después de cualquier otro código

  • En la pestaña Utilizar FINALLY, seleccione una opción o escriba un nombre de tabla incluyendo su ruta de acceso en el cuadro combinado y pulse TRY.

El código siguiente muestra cómo se ejecuta FINALLY después de cualquier otro código.

TRY
lnPrevArea = SELECT()
USE CUSTOMERS IN 0 EXCLUSIVE
* Controla el error cuando no existe el archivo.
CATCH TO myException WHEN myException.ErrorNo = 1
* Controla el error cuando el archivo está en uso.
CATCH TO myException WHEN myException.ErrorNo = 3
* Controla el error cuando se deniega el acceso al archivo.
CATCH TO myException WHEN myException.ErrorNo = 1704
* Controla cualquier otro error.
CATCH TO myException
* El código en el bloque FINALLY siempre se ejecuta.
FINALLY
IF USED('CUSTOMERS')
USE IN CUSTOMERS
ENDIF
SELECT (lnPrevArea)
ENDTRY

Lanzamiento de Excepciones

Para devolver una excepción a un controlador de errores de nivel superior, se usa la instrucción THROW del bloque CATCH.

Este ejemplo usa bloques TRY anidados. El bloque TRY interno sólo puede manejar el primer error. Para los errores subsiguientes, el bloque TRY interno eleva el objeto Exception al bloque TRY externo. Cuando se lanza una excepción específica, en concreto THROW oMyException en este ejemplo, la propiedad UserValue de la excepción capturada en el bloque externo contendrá la excepción lanzada desde el bloque interno.

TRY
* Se ejecuta cierto código.
TRY
* Ocurre un error.
ERROR 3
CATCH TO InnerException WHEN InnerException.ErrorNo = 1
InnerException.UserValue = "INNER TRY: I can handle this."
CATCH TO InnerException
InnerException.UserValue = "INNER TRY: I can't handle this."
* No puede manejarse el error y se eleva al bloque TRY externo.
THROW InnerException
ENDTRY
CATCH TO OuterException
* En este caso, cuando se eleva la excepción, la propiedad UserValue
* de la excepción capturada contiene la excepción elevada desde el TRY interno.
? OuterException.UserValue.UserValue
ENDTRY

También se puede elevar un mensaje de texto. En este caso, el mensaje de texto se almacena en la propiedad UserValue de la excepción externa:

TRY
* Se ejecuta cierto código.
TRY
* Ocurre un error.
ERROR 1
CATCH
THROW "INNER TRY: I can't handle this one."
ENDTRY
CATCH TO OuterException
? OuterException.UserValue
ENDTRY

Ver también

Ejemplos de Soluciones


Ejemplo de Icono en la Bandeja de Sistema

Archivo: ...\Samples\Solution\Toledo\SysTray_Sample.scx
Biblioteca: ...\ Samples\Solution\Toledo\SysTray.vcx
Léame: ...\Samples\Solution\Toledo\SysTray_ReadMe.htm

Este ejemplo muestra algunos usos comunes de la Clase Systray (Bandeja de Entrada). Esta clase soporta la utilización de un Icono en el Área de Notificación de la Barra de Tarea, el cual es comúnmente conocido como Bandeja de Entrada. La clase Systray también soporta algunos eventos del ratón, ventanas de Información, y el sistema de Menú contextual de Visual FoxPro para su icono en la Bandeja de entrada, usted puede usar todas las características del Diseñador de Menú de Visual FoxPro.

Para información detallada acerca de estas propiedades, eventos, y métodos de la Biblioteca de Clase Systray incluidos con este ejemplo, vea SysTray_ReadMe.htm.

Vea también

Ejemplos de Soluciones | Diseñador de Menús contextuales


Ejemplos de como Soportar los Temas Visuales de Windows XP

Archivo: ...\Samples\Solution\Toledo\Themes.scx

Este ejemplo muestra las diferentes formas en que Visual FoxPro sostiene los Temas Visuales de Windows XP. Estos Temas Visuales están activados en forma predeterminada.

Visual FoxPro soporta tres (3) niveles de Temas Visuales de Windows XP:

  • Usándolo a Nivel de Aplicación SYS(2700) - Activar los Temas Visuales de Windows XP y la propiedad _SCREEN.Themes
  • Utilizando la Propiedad del Formulario Form.Themes
  • Nivel de controles independientes

Soporte de los Temas Visuales a nivel de aplicación

En este ejemplo, puede activar los temas visuales enteramente sobre las aplicaciones de Visual FoxPro utilizando la función SYS(2700) - Activar los Temas Visuales de Windows XP seleccionándola como Activa, los Temas Visuales son aplicados a este nivel - SYS(2700). Para activarlo se debe utilizar el siguiente código:

SYS(2700,1)

Para desactivar los Temas Visuales, se pasa un Cero (0) como segundo parámetro a la función SYS(2700).

SYS(2700,0)

Para activar los temas visuales usando la variable _SCREEN, Activará los Temas Visuales a nivel de aplicación - _SCREEN.Themes, el cual se debe configurar _SCREEN.Themes a Verdadero (.T.):

_SCREEN.Themes = .T.

Para desactivar los Temas Visuales usando _SCREEN, configure _SCREEN Themes a Falso (.F.):

_SCREEN.Themes = .F.

Para más información, vea SYS(2700) - Activar Temas de Windows XP y Propiedades de los Temas visuales.

Soporte de temas a nivel de formulario

En este ejemplo, para cambiar los Temas Visuales a nivel del formulario, seleccione Activar Temas a nivel de formulario, el cual configurará la propiedad Themes del formulario a Verdadero (.T.):

ThisForm.Themes = .T.

Soporte de los Temas Visuales a Nivel de Controles Individuales

También se puede activar el soporte de los Temas Visuales para Controles Individuales. Desactivando los Temas Visuales a Nivel de Controles, anulará la configuración de los Temas Visuales de la aplicación o a nivel del formulario. Dependiendo del control, se puede configurar el soporte de los Temas Visuales a través de las propiedades Themes o Style.

Para más información, vea la Propiedad Style.

Vea también

Ejemplos de Soluciones


Ejemplo de agregar y quitar elementos en un control Treeview

Archivo: ...\Samples\Solution\OLE\Bldtree.scx

Un control Treeview muestra una colección de objetos Node, cada uno de los cuales consta de una etiqueta y de un mapa de bits opcional. Después de crear un control Treeview, puede agregar, quitar, organizar y manipular objetos Node de otra manera estableciendo propiedades y llamando a métodos.

Este ejemplo ilustra la manera de agregar nodos a un control Treeview, eliminar nodos, seleccionar nodos mediante programa, y escribir y leer una jerarquía de árbol en una tabla.

Agregar nodos

En un control Treeview cada nodo necesita una clave única que está formada por una cadena de caracteres, generada por el método NewKey en este formulario de ejemplo.

*NewKey method
cKey = THIS.cNextKey
THIS.cNextKey = ALLTRIM(STR(VAL(THIS.cNextKey) + 1) + "_")
RETURN cKey

El método Add del control Treeview se utiliza para agregar nodos nuevos. El código asociado al evento Click de cmdNewNode agrega un nodo en el nivel de la raíz utilizando el método Add.

o = THISFORM.oleTree
o.Nodes.Add(,1,THISFORM.NewKey(),"Click to edit text",0)

El código asociado al evento Click de cmdNewChild agrega un nodo secundario del nodo seleccionado actualmente.

o = THISFORM.oleTree
IF !ISNULL(o.SelectedItem) THEN
o.Nodes.Add(o.SelectedItem.Key, 4, THISFORM.NewKey(), "Click to edit text",0)
ENDIF

Eliminar nodos

Puede eliminar todos los nodos llamando al método Clear.

THISFORM.oleTree.Nodes.Clear

O puede utilizar el método Remove para eliminar los nodos seleccionados. También se eliminan todos los nodos secundarios del nodo eliminado.

THISFORM.oleTree.Nodes.Remove(THISFORM.oleTree.SelectedItem.Key)

Escribir y leer jerarquías en tablas

Para guardar la jerarquía de árbol en una tabla de forma que la pueda volver a cargar y editar, realice un bucle a través de todos los nodos del control Treeview y escriba el valor de Key (la clave del nodo), el valor de Key del nodo principal y el valor de Text (el texto del nodo) en los campos apropiados de una tabla.

FOR i = 1 TO loNodes.Count
IF ISNULL(loNodes.Item(i).Parent)
lcParent = "0_" && Root
ELSE
lcParent = loNodes.Item(i).Parent.Key
ENDIF
INSERT INTO (lcDBFName) VALUES ;
(loNodes.Item(i).Key, ;
lcParent, ;
loNodes.Item(i).Text)
ENDFOR

Para reconstruir la jerarquía de árbol, examine los registros de la tabla utilizando la clave principal, la clave y los valores de texto que almacenó anteriormente.

* Fill the TreeView control with values in the table.
o = THISFORM.oleTree.Nodes
SCAN
IF ALLTRIM(parent) = '0_'
o.add(,1,ALLTRIM(key),ALLTRIM(text),0)
ELSE
o.add(ALLTRIM(parent),4,ALLTRIM(key), ALLTRIM(text),0)
ENDIF
THISFORM.cNextKey = ALLTRIM(STR(VAL(key) + 1) + "_")
ENDSCAN

Vea también

Arrastrar y soltar en controles Treeview y Listbox (Ejemplo) | Ejemplos de Soluciones


Personalizar el cuadro de diálogo Abrir

Archivo: ...\Samples\Solution\OLE\Commdlog.scx

Este ejemplo ilustra como personalizar el aspecto y el comportamiento del cuadro de diálogo Abrir que se presenta mediante el control Common Dialog.

Para especificar el comportamiento del cuadro de diálogo Abrir, puede establecer la propiedad Flags del control Common Dialog como la suma de los valores específicos para la propiedad. La siguiente tabla muestra los posibles valores individuales que puede usar.

Valor | Descripción
1 | Hace que la casilla de verificación Sólo lectura esté inicialmente activada al crearse el cuadro de diálogo. Este indicador también señala el estado de la casilla de verificación Sólo lectura cuando se cierra el cuadro de diálogo.
2 | Hace que el cuadro de diálogo Guardar como genere un cuadro de mensaje si el archivo seleccionado ya existe. El usuario debe confirmar si quiere sobrescribir el archivo.
4 | Oculta la casilla de verificación Sólo lectura.
8 | Obliga al cuadro de diálogo a establecer el directorio actual cuando se abre el cuadro de diálogo.
16 | Hace que el cuadro de diálogo muestre el botón Ayuda.
256 | Especifica que el cuadro de diálogo común permita caracteres no válidos en el nombre del archivo devuelto.
512 | Especifica que el cuadro de lista Nombre de archivo permita múltiples selecciones. El usuario puede seleccionar más de un archivo en tiempo de ejecución presionando la tecla Mayús y utilizar las teclas de Flecha arriba y Flecha abajo para seleccionar los archivos que desee. Cuando se realice esto, la propiedad FileName devuelve una cadena que contiene los nombres de todos los archivos seleccionados. Los nombres de la cadena se separan mediante espacios.
1024 | Indica que la extensión del nombre del archivo devuelto es diferente de la extensión especificada por la propiedad DefaultExt. Este indicador no se establece si la propiedad DefaultExt es Null, si las extensiones coinciden o si el archivo no tiene extensión. Este valor del indicador se puede comprobar cerrando el cuadro de diálogo.
2048 | Especifica que el usuario solo puede introducir rutas de acceso válidas. Si se establece este indicador y el usuario escribe una ruta de acceso no válida, se mostrará un mensaje de advertencia.
4096 | Especifica que el usuario solo puede escribir nombres de archivos que ya existen en el cuadro de texto Nombre de archivo. Si se establece este indicador y el usuario escribe un nombre de archivo no válido, se mostrará una advertencia. Este indicador establece automáticamente el indicador 2048.
8192 | Especifica que el cuadro de diálogo pida datos al usuario para crear un archivo que no exista actualmente. Este indicador establece automáticamente los indicadores 4096 y 2048.
16384 | Especifica que se ignorarán los errores de infracción de uso compartido.
32768 | Especifica que se utilice la plantilla del cuadro de diálogo Abrir archivo del Explorador de Windows.
524288 | Utiliza la plantilla del cuadro de diálogo Abrir archivo de tipo explorador.
1048576 | No hace referencia a vínculos del Shell (también conocidos como accesos directos). De forma predeterminada, al elegir un vínculo del Shell, el Shell deja de hacer referencia al vínculo.
1048576 | No se eliminan las referencias a accesos directos (vínculos del Shell). De forma predeterminada, elegir un acceso directo hace que se elimine su referencia en el Shell.
2097152 | Permite al usuario utilizar nombres de archivo largos.

El siguiente código en el evento Click de cmdFiles comprueba los valores de varias casillas de verificación del formulario y establece la propiedad Flags del control Common Dialog.

Establecer el indicador de la casilla de verificación de sólo lectura

IF !thisform.chkRead.Value
m.nFlags = m.nFlags + 4
ENDIF

Establecer el indicador de múltiples archivos

IF thisform.chkMulti.Value
m.nFlags = m.nFlags + 512
ENDIF

Establecer el indicador del botón de Ayuda

IF thisform.chkHelp.Value
m.nFlags = m.nFlags + 16
ENDIF

Establecer el indicador de forzar la existencia del archivo

IF thisform.chkMulti.Value
m.nFlags = m.nFlags + 4096
ENDIF

Establecer la propiedad Flags del control Common Dialog

THISFORM.oleCommDlog.Flags = m.nFlags

Establecer la propiedad Filter del control Common Dialog

Puede utilizar la propiedad Filter del control Common Dialog para especificar qué archivos puede elegir un usuario.

THISFORM.oleCommDlog.Filter = "All files" + ;
"(*.*)|*.*|Text (*.txt)|*.txt" + ;
"|Pictures(*.bmp;*.ico)|*.bmp;*.ico"

Vea también

Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de mostrar información del sistema

Archivo: ...\Samples\Solution\OLE\Sysinfo.scx

Este ejemplo ilustra como utilizar SysInfoControl para mostrar información del sistema y como avisar cuando se modifique una configuración del sistema.

La mayor parte del código de este ejemplo se encuentra en el método CheckStatus. El código de este método comprueba los valores de varias propiedades SysInfoControl para ver sus valores actuales y rellena un control Treeview con esta información. Por ejemplo, el siguiente fragmento de código comprueba el valor de BatteryLifePercent:

IF ThisForm.SysInfo.BatteryLifePercent = 255
* Add a node to display the information
ENDIF

Cuando un valor del sistema cambia, se produce un evento SysInfoControl. El código asociado con cada uno de estos eventos establece el título de una etiqueta y llama al método CheckStatus para actualizar el control Treeview. Por ejemplo, el código siguiente se asocia al evento SysColorsChanged:

ThisForm.Status.Caption = SysColorsChanged_LOC
ThisForm.CheckStatus

Vea también

Agregar y quitar elementos en un control Treeview (Ejemplo) | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Reproducir un archivo AVI en un control ActiveX

Archivo: ...\Samples\Solution\OLE\Mmsample.scx

Este ejemplo muestra cómo utilizar el control Multimedia para reproducir un archivo AVI en un control que tiene una propiedad hWnd.

El control con hWnd es un control ActiveX personalizado llamado hWin, creado con el Asistente para controles OLE de Microsoft Visual C++ 4.0. Al crear hWin .ocx, se eligieron todas las opciones predeterminadas en el Asistente para controles, se agregaron al control todas las propiedades predeterminadas y se compiló el código.

En el evento Init del formulario, la siguiente línea de código ordena al control Multimedia que reproduzca el AVI del formulario.

ThisForm.VCR.hWndDisplay = ThisForm.Test.hWnd

Vea también

Reproductor de vídeo | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Proporcionar una presentación jerárquica de los elementos

Archivo: ...\Samples\Solution\OLE\Outline.scx

Este ejemplo muestra dos tipos distintos de controles ActiveX, que puede utilizar para un esquema. En este ejemplo se muestra una estructura de directorio. Se llama recursivamente a un método personalizado de un formulario llamado FillTree para interactuar a través de la estructura de árbol completa.

El control Treeview también permite mostrar imágenes con cada nodo.

Control Treeview

El nuevo control Treeview puede proporcionar a las aplicaciones un aspecto auténtico de Windows. A diferencia del control Outline, que utiliza índices de elementos y métodos, el control Treeview utiliza una colección Nodes.

Nota Para mostrar imágenes en un control Treeview, debe agregar un control ImageList al formulario.
* Añade elementos al control Treeview
o = THIS.PageFrame1.Page2.oleTreeview
IF cnt = 1
oNode = o.nodes.add(,1,LOWER(m.path)+"_",LOWER(m.path),,)
oNode.Image = "world"  &&nombre de la imagen
ELSE
oNode = o.nodes.add(m.pkey,4,LOWER(m.path)+"_",LOWER(m.path),,)
oNode.Image = "fldr"   &&nombre de la imagen
ENDIF

Vea también

Arrastrar y soltar en controles Treeview y Listbox (Ejemplo) | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Enviar correo

Archivo: ...\Samples\Solution\OLE\Sendmail.scx

Este ejemplo ilustra el uso de la clase mailbtn en ...\Samples\Classes\Buttons.vcx para crear un sencillo formulario de mensaje que puede enviar datos de Visual FoxPro a una dirección de correo electrónico.

Mailbtn es una clase contenedora que contiene un botón de comando y dos controles ActiveX: MAPI Session y MAPI Messages, que están definidos en msmapi32.ocx. El control MAPI Session establece una sesión MAPI, y el control MAPI Messages permite que el usuario ejecute varias funciones del sistema de mensajería.

La clase mailbtn inicia una nueva sesión de correo, recoge datos del registro actual y le proporciona el cuadro de diálogo Enviar correo con los datos insertados como texto del mensaje.

Esta clase incluye dos métodos personalizados AddTabs y StripPath, para dar formato a la información recogida de la tabla e insertada en el mensaje.

Esta clase también aprovecha otro método personalizado llamado signon así como una propiedad personalizada llamada logsession, que está establecida inicialmente a .F.

Cuando el usuario hace clic en el botón cmdMail, el código del evento Click llama al método signon, estableciendo logsession a True (.T.):

this.logsession = .T.
this.OLEMSess.signon

Si se produce un fallo en el método signon, se llama al evento Error de la clase y logsession se establece a .F.

Los controles MAPI son invisibles en tiempo de ejecución. Además, no hay eventos para los controles. Para usarlos debe especificar los métodos apropiados. Para que funcionen estos controles deben estar presentes los servicios MAPI. Los servicios MAPI se proporcionan con Microsoft Mail y el sistema de correo electrónico Exchange para Microsoft Windows versión 95 o posterior.

Vea también

Botones enviar correo | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de utilizar controles Slider y Status Bar

Archivo: ...\Samples\Solution\OLE\Slider.scx

Este ejemplo ilustra la utilización de los controles Slider y StatusBar.

Controles Slider

El código del evento Scroll de cada control deslizante establece la propiedad Value de los otros controles:

#DEFINE TXT_LOC "slider value: "
THISFORM.Olecontrol2.Panels(2).Text = TXT_LOC + ALLTRIM(STR(THIS.value))
THIS.Parent.spn1.Value = THIS.Value
THIS.Parent.oleV.Value = THIS.Value

Control StatusBar

El cuadro de diálogo Propiedades del control StatusBar convierte el establecimiento de las propiedades de la barra de estado en una operación sencilla.

Para abrir el cuadro de diálogo Propiedades del control StatusBar , elija Propiedades del control StatusBar en el menú contextual de un control StatusBar.

Vea también

Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de utilizar el control RichText

Archivo: ...\Samples\Solution\OLE\Rtf.scx

Este ejemplo ilustra el uso del control RichText para mostrar y modificar texto RTF almacenado en un campo memo de una tabla.

Puede establecer la propiedad ControlSource de un control RichText directamente a un campo carácter, pero no a un campo memo. En su lugar, cree una propiedad de formulario para mediar entre el control RichText y el campo memo.

Para almacenar texto RTF en un campo memo

  1. Establezca la propiedad ControlSource del control RichText a la propiedad del formulario.
    THISFORM.oleRTF.ControlSource = THISFORM.cText
  2. Almacene el contenido del campo memo en la propiedad del formulario.
    THISFORM.cText = rtf.source
  3. Antes de mover el puntero del registro, almacene la propiedad TextRTF del control RichText en el campo memo.
    REPLACE rtf.Source WITH THISFORM.oleRTF.TextRTF

El texto almacenado en el campo memo está en formato RTF estándar, por ejemplo:

{\rtf1\ansi\deff0\deftab720{\fonttbl{\f0\fswiss MS Sans Serif;}{\f1\froman\fcharset2 Symbol;}{\f2\fswiss Arial;}{\f3\fswiss Arial;}} {\colortbl\red0\green0\blue0;\red255\green0\blue0;} \deflang1033\pard\qc\plain\f3\fs32\i The RichTextBox Control \par \pard\plain\f3\fs20

Vea también

Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de automatizar una hoja de cálculo de Microsoft Excel

Archivo: ...\Samples\Solution\OLE\Olexl.scx

Este formulario muestra dos ejemplos de Visual FoxPro llamando a una hoja de cálculo Excel mediante automatización.

El botón Tendencia realiza una consulta seguida de una tabla de referencias cruzadas con objeto de crear un conjunto de datos para pasar a Excel mediante automatización con el objeto Excel.Sheet. Una vez en Excel, Visual FoxPro puede llamar a una función Trend para realizar un simple análisis de regresión.

El botón Gráfico automatiza el objeto Excel.Chart para crear un gráfico. Excel admite el paso de datos mediante automatización, pero MS Graph no. Sin embargo, puede distribuir MS Graph con sus aplicaciones.

Vea también

Automatizar un documento de Microsoft Word en un formulario (Ejemplo) | Automatizar Microsoft Word y Excel (Ejemplo) | Ejemplos de Soluciones


Ejemplo de automatizar un documento de Microsoft Word en un formulario

Archivo: ...\Samples\Solution\OLE\Oleword.scx

Este ejemplo muestra como puede automatizar un objeto de Word incrustado en un formulario, insertar texto enriquecido y, a continuación, dar formato al texto. La automatización habitual con Word generalmente se hace mediante el objeto "Word.Basic" utilizado de forma interactiva con una función CREATEOBJECT( ).

oForm = THISFORM
oForm.AddObject('oWordDoc','OleControl','WordDocument')
oForm.oWordDoc.Visible =  .t.
oForm.oWordDoc.DoVerb(0)

Vea también

Automatizar una hoja de cálculo de Microsoft Excel (Ejemplo) | Automatizar Microsoft Word y Excel (Ejemplo) | Ejemplos de Soluciones


Ejemplo de automatizar Microsoft Word y Excel

Archivo: ...\Samples\Solution\OLE\Oleaut1.scx

Este es un sencillo ejemplo que muestra a Visual FoxPro como un controlador de Automatización. Muestra como seleccionar datos de una base de datos de Visual FoxPro, colocar los datos en una hoja de cálculo de Microsoft Excel, representar gráficamente los datos utilizando Chart y, a continuación, mostrar el gráfico en Word. Para utilizar este ejemplo, necesita al menos Excel 5.0, Word 6.0 y Testdata.dbc, ubicado en el directorio...\Samples\Vfp98\Data.

La línea de código siguiente crea una referencia a una hoja de cálculo de Microsoft Excel.

objXLsheet=createobject("Excel.Sheet")

La línea de código siguiente agrega un gráfico a la hoja de cálculo.

objChart1 = objXLsheet.ChartObjects.Add(100, 100, 200, 200)

La línea de código siguiente crea una referencia a Microsoft Word.

objWDdoc=createobject("word.basic")
oWordRef = GetObject('','word.basic')

Vea también

Automatizar un documento de Microsoft Word en un formulario (Ejemplo) | Automatizar una hoja de cálculo de Microsoft Excel (Ejemplo) | Ejemplos de Soluciones


Manipular las características de presentación de un gráfico

Archivo: ...\Samples\Solution\OLE\Olegraph.scx

Este ejemplo muestra cómo incorporar MS Graph a sus aplicaciones. MS Graph 5.0 es un servidor de Automatización OLE que Visual FoxPro puede automatizar mediante la función estándar CREATEOBJECT(&nbsp;). Con Visual FoxPro, los objetos Graph pueden incrustarse en controles OLE enlazados o no enlazados. Un OleBoundControl (enlazado a un campo General) es la única forma de insertar datos en un gráfico mediante programación.

La automatización de MS Graph permite el acceso sólo a un objeto gráfico, no a su hoja de datos. Los datos pueden insertarse en un Graph sólo con el comando APPEND GENERAL en un campo General. El código siguiente utiliza la propiedad HasLegend y es un ejemplo de automatización:

cGData = ""+TAB+"Cats"+TAB+"Dogs"+CRLF+;
"1994"+TAB+"11"+TAB+"22"+CRLF+;
"1995"+TAB+"33"+TAB+"44"+CRLF+;
"1996"+TAB+"55"+TAB+"55"+CRLF
APPEND GENERAL gen1 CLASS "msgraph.chart" DATA m.cGData
THIS.OleBoundControl1.ControlSource = "Gen1"
THIS.OleBoundControl1.HasLegend = .F.

El comandoAPPEND GENERAL , en este caso, crea un nuevo objeto gráfico. Si no incluye la cláusula CLASS "msgraph.chart" el gráfico sólo se actualiza. La cláusula CLASS creará un gráfico nuevo y anulará cualquier formato existente.

Vea también

Graph (Objeto) | Proporcionar una presentación jerárquica de los elementos (Ejemplo) | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de actualizar un gráfico en un formulario

Archivo: ...\Samples\Solution\OLE\Stock.scx

Este ejemplo muestra la selección de datos de una tabla y como se pasan a MS Graph para actualizar los valores del gráfico. La mayor parte del código necesario para realizarlo está asociado al evento InteractiveChange del cuadro combinado cboMonth:

Seleccionar los datos en el cursor

SELECT date, close;
FROM Stock1 WHERE MONTH(date) = THIS.Value ;
ORDER BY date INTO CURSOR wtemp

Crear una cadena de caracteres que contenga los datos seleccionados

SELECT wtemp
lcData = " " + TAB + "Closing Price" + CRLF
SCAN
lcData = lcData + DTOC(date)
lcData = lcData + TAB
lcData = lcData + ALLTRIM(STR(close)) + CRLF
ENDSCAN

Enviar la cadena de caracteres a MS Graph

SELECT Graph
APPEND GENERAL msgraph DATA lcData

Vea también

Manipular las características de presentación de un gráfico (Ejemplo) | Objeto Graph | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de permitir a los usuarios arrastrar y soltar controles

Archivo: ...\Samples\Solution\Forms\Ddrop.scx

Este ejemplo explica como implementar operaciones de arrastrar y soltar. Una página en el formulario muestra el arrastre manual de controles llamando al método Drag. Llamar explícitamente al método Drag le permite procesar otro código en el evento Click del control. La otra página muestra la utilización del valor Automático de la propiedad DragMode de manera que la operación de arrastrar y soltar se inicie automáticamente cuando el usuario presione el botón del ratón (ratón) sobre los controles.

Cambiar la posición del botón de comando

En el evento MouseMove de cmdDrop, si el botón primario del ratón (ratón) está presionado, averigüe a qué distancia se encuentra el puntero del ratón de la parte superior izquierda del botón del comando y comience la operación de arrastre.

LPARAMETERS nButton, nShift, nXCoord, nYCoord
IF nButton = 1 && Left button
THISFORM.XOffset = nXCoord – THIS.Left
THISFORM.YOffset = nYCoord - THIS.Top
THIS.Drag
ENDIF

En el evento DragDrop de la página en la que se encuentra el botón del comando, cambie de posición el botón del comando.

oSource.Left = nXCoord - THISFORM.XOffset
oSource.Top = nYCoord - THISFORM.Yoffset

Cambiar el color de la forma

La propiedad DragMode de los cuadros coloreados de la página Cambiar colores del formulario se establece a 1 - Automático. La operación de arrastre comenzará tan pronto como el usuario presione el botón del ratón (ratón) en los cuadros. El código agregado al evento Click de las figuras nunca se ejecutará.

El código del evento DragDrop del círculo cambia su propiedad BackColor para que coincida con el origen del arrastre.

LPARAMETERS oSource, nXCoord, nYCoord
THIS.BackColor = oSource.BackColor

Vea también

Permitir a los usuarios elegir valores de una lista (Ejemplo) | Ejemplos de Soluciones | Formatos de datos de Arrastrar y soltar de OLE (Ejemplo)


Ejemplos de efectos Hot Tracking y Hover

Archivo: ...\Samples\Solution\Sedona\Dvds.scx

Este ejemplo muestra varios eventos y propiedades nuevos que permiten agregar efectos especiales, como el seguimiento activo, a los controles de formularios.

Para obtener más detalles acerca de las clases disponibles en las Foundation Classes, vea Foundation Classes de Visual FoxPro (A-Z).

Vea también

Foundation Classes de Visual FoxPro (A-Z) | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro


Cambiar el tamaño y la posición de controles en tiempo de ejecución

Archivo: ...\Samples\Solution\Forms\Cresize.scx

El usuario puede ajustar el tamaño de este formulario de ejemplo como desee. Los controles del formulario se cambian de tamaño o posición de forma relativa a las nuevas propiedades Height y Width del formulario.

Este formulario utiliza la clase ajustable en ...\Samples\Classes\Samples.vcx para administrar el cambio de tamaño y posición de los controles. La siguiente línea de código se agrega al evento Resize del formulario, llamando al método AdjustControls de la clase ajustable:

THIS.Resizable2.AdjustControls

En el evento Init de la clase ajustable, el código realiza un bucle a través de todos los controles del formulario almacenando en una matriz las posiciones y tamaños relativos al formulario. Cuando el formulario cambia de tamaño, el método AdjustControls cambia el tamaño y la posición de los controles a sus posiciones y tamaños relativos.

Puede agregar más controles al formulario y sus tamaños y posiciones también cambiarán.

Las propiedades RepositionList y ResizeList contienen una lista delimitada por espacios de todas las clases cuyo tamaño y posición desee cambiar. Si no quiere cambiar de tamaño determinadas clases, elimínelas de ResizeList.

Puede evitar que el usuario haga demasiado pequeño el formulario para los objetos que contiene estableciendo las propiedades MinHeight y MinWidth del formulario.

Vea también

Resize (Objeto) | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Usar casillas de verificación para especificar estados

Puede utilizar casillas de verificación para permitirle al usuario especificar un estado Booleano: verdadero o falso, encendido o apagado, abierto o cerrado. Sin embargo, hay momentos en que no es es exacto evaluar algo como verdadero o falso, por ejemplo preguntas no contestadas en un cuestionario verdadero/falso.

Para ver ejemplos de uso de casillas de verificación

  1. Ejecutar Solution.app en la carpeta de Visual FoxPro ...\Samples\Solution.
  2. En la vista de árbol, haga clic en Controles y a continuación, en Casillas de verificación.

Vea también

Agregar imágenes a elementos de una lista | Aceptar entradas que no pueden ser predeterminadas | CheckBox (Control) | Utilizar la propiedad InputMask | Utilizar controles | Controles y objetos


Ejemplo de ver opciones de diseño de casillas de verificación

Archivo: ...\Samples\Solution\Controls\Checkbox\Checkbox.scx

Este ejemplo ilustra varias de las propiedades que pueden establecerse para personalizar la presentación de las casillas de verificación.

Propiedad | Descripción
ControlSource | Una variable o un campo de una tabla numérica o lógica.
Picture | Mapa de bits mostrado si Style es Graphical.
Style | Graphical para imágenes o estándar para casillas.
Value | .T., .F., 0, 1, 2 o .NULL.

Vea también

Cuadro combinado de valores diferentes | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de agregar elementos nuevos a un cuadro combinado

Archivo: ...\Samples\Solution\Controls\Combobox\Lookup.scx

Este ejemplo ilustra la manera de agregar texto introducido por el usuario a un cuadro combinado desplegable y proporcionar la capacidad de búsqueda.

Agregar texto del usuario a un cuadro combinado desplegable

Un cuadro combinado permite al usuario introducir texto o seleccionar un elemento de una lista desplegable. También puede agregar el texto que escriba el usuario en el cuadro combinado como un elemento nuevo en la lista desplegable, de forma que el usuario no tenga que escribir el mismo texto varias veces.

Existen varias formas de agregar texto del usuario a la lista desplegable de un cuadro combinado, dependiendo del valor de la propiedad RowSourceType del cuadro combinado. En este ejemplo la propiedad RowSourceType del cuadro combinado es 1- Valor. Si el valor que el usuario escribe no está en la lista desplegable cboCombo, el código siguiente agrega una coma y el nuevo valor a la propiedad RowSource:

cCountryName = ALLTRIM(Custs.Country)
IF ATC(m.cCountryName,THIS.RowSource)=0 AND !EMPTY(m.cCountryName)
THIS.RowSource=THIS.RowSource+","+m.cCountryName
ENDIF

En el ejemplo Manipular texto por programa (Ejemplo) el cuadro combinado tiene un RowSourceType de 0 - Ninguno. El código siguiente del evento Valid de cboSearchString en ...\Samples\Solution\Controls\TXT_EDT\Text.scx agrega un valor introducido por el usuario a la lista desplegable del cuadro combinado:

IF !EMPTY(THIS.Text)
FOR i = 1 TO THIS.ListCount
IF THIS.List(i) = THIS.Text
RETURN
ENDIF
ENDFOR
THIS.AddItem(THIS.Text)
ENDIF

Si la propiedad RowSource del cuadro combinado es una matriz, necesitará agregar el texto de usuario a la matriz y llamar al método Requery del cuadro combinado.

Si la propiedad RowSource es una tabla o un cursor, necesitará agregar un registro, realizar un REPLACE del campo en blanco con el valor introducido por el usuario y realizar un Requery en el cuadro combinado.

Proporcionar la capacidad de búsqueda

Además de mostrar como agregar elementos a un cuadro combinado, este ejemplo ilustra tres maneras de permitir que un usuario filtre una tabla para valores determinados. El usuario puede:

  • Introducir valores en un cuadro combinado.
  • Seleccionar un elemento de una lista desplegable.
  • Introducir valores parciales en un cuadro combinado para realizar una búsqueda incremental.

Introducir valores en un cuadro combinado

El código principal está asociado al evento LostFocus del cboCombo. Después de asegurarse de que el usuario ha introducido un valor, el código LostFocus selecciona los registros que coinciden con el texto del usuario y establece la propiedad RecordSource de la cuadrícula al conjunto de resultados.

cDisplayValue = ALLTRIM(THIS.DisplayValue)
IF THIS.Value = "(All)"
SELECT country AS location,* FROM CUSTOMER;
INTO CURSOR Custs
thisform.grdcust.recordsource = "Custs"
ELSE
SELECT country AS location,* FROM CUSTOMER ;
WHERE UPPER(ALLTRIM(Customer.Country)) = UPPER(m.cDisplayValue);
INTO CURSOR Custs
THISFORM.grdCust.RecordSource = "Custs"
ENDIF

Seleccionar un elemento de una lista desplegable

Básicamente se asocia el mismo código de búsqueda al evento InteractiveChange de cboDrop: si Value del cuadro combinado es "(All)", selecciona todos los registros dentro del cursor, en cualquier otro caso, selecciona los registros que coinciden con la elección del usuario.

Introducir valores parciales para realizar una búsqueda incremental

El código en el evento InteractiveChange de cboIntSearch realiza la búsqueda cada vez que el usuario escribe un carácter en el cuadro combinado.

#DEFINE DELKEY 127
LPARAMETERS nKeyCode, nShiftAltCtrl
LOCAL cDisplayValue
IF nKeyCode = DELKEY
cDisplayValue = ALLTRIM(THIS.DisplayValue)
IF LEN(m.cDisplayValue)=1
cDisplayValue = ""
ELSE
cDisplayValue = LEFT(cDisplayValue,LEN(cDisplayValue)-1)
ENDIF
ELSE
cDisplayValue = ALLTRIM(THIS.DisplayValue)+CHR(nKeyCode)
ENDIF
THISFORM.LockScreen = .T.
DO CASE
CASE EMPTY(m.cDisplayValue)
THISFORM.grdCust.RecordSource = " "
CASE THIS.Value = "(All)"
SELECT country AS location,* FROM CUSTOMER;
INTO CURSOR Custs
THISFORM.grdCust.RecordSource = "Custs"
OTHERWISE
SELECT country AS location,* FROM CUSTOMER ;
WHERE UPPER(ALLTRIM(Customer.Country)) = UPPER(m.cDisplayValue);
INTO CURSOR Custs
THISFORM.grdCust.RecordSource = "Custs"
ENDCASE
THISFORM.ResetCombos(THIS)
THISFORM.LockScreen = .F.

Vea también

Agregar cuadros combinados de búsqueda de datos (Ejemplo) | Manipular texto por programa (Ejemplo) | Ejemplos de Soluciones


Ejemplo de permitir a los usuarios elegir valores de una lista

Archivo: ...\Samples\Solution\Forms\Datalook.scx

Este ejemplo ilustra la forma de proporcionar a los usuarios un conjunto de valores, seleccionados de otra tabla, en un cuadro de lista y en un cuadro de lista desplegable. El valor que el usuario elige se almacena en la tabla actual.

Normalmente es más conveniente para el usuario elegir de una lista de valores predeterminados; de esta forma se minimizará el riesgo de que se equivoque en un valor. Para proporcionar esta capacidad, todo lo que se requiere es establecer algunas propiedades del cuadro de lista. Por ejemplo, las propiedades siguientes se establecen como cboEmp_id en la página Utilizar el cuadro combinado:

Propiedad | Valor
BoundColumn | 2
ColumnCount | 2
ControlSource | orders.emp_id
RowSource | SELECT DISTINCT ALLTRIM( employee.first_name) + " " + ALLTRIM( employee.last_name) , EMP_ID FROM employee INTO CURSOR cEmpCombo ORDER BY first_name
RowSourceType | 3 – SQL Statement

En lugar de que el usuario tenga que elegir un número de identificador de empleado en la lista desplegable, la instrucción SELECT le permite mostrar al usuario los nombres y apellidos de los empleados.

Como la instrucción SELECT crea un cursor, el código en el evento Destroy cierra el cursor:

IF USED("cEmpCombo") THEN
USE IN cEmpCombo
ENDIF

Vea también

Permitir a los usuarios Arrastrar y soltar controles (Ejemplo) | Ejemplos de Soluciones


Ejemplo de ver opciones de diseño de botones de comando

Archivo: ...\Samples\Solution\Controls\Buttons\Cmdbtn.scx

Este ejemplo ilustra varias de las propiedades que se pueden establecer para personalizar la presentación de los botones de comando.

Propiedad | Descripción
Cancel | El código del evento Click del botón de comando, con Cancel establecida a verdadero (.T.), se ejecuta cuando el usuario presiona Esc.
Default | El código del evento Click del botón de comando, con Default establecida a verdadero (.T.), se ejecuta cuando el usuario presiona Intro.
Picture | Mapa de bits mostrado si Style es Graphical.

Vea también

Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de modificar un campo memo o un archivo de texto

Archivo: ...\Samples\Solution\Controls\TXT_EDT\Editbox.scx

Este ejemplo le permite ver y editar texto de un campo memo o de un archivo de texto en un cuadro de texto.

Mostrar texto de un campo memo es tan fácil como establecer el ControlSource de un cuadro de edición al campo memo.

Hay dos formas con las que puede modificar un archivo de texto en un cuadro de edición: utilizar funciones de archivos de bajo nivel y crear un cursor para contener el texto. Este ejemplo crea un cursor en lugar de utilizar funciones de archivos de bajo nivel.

Modificar un archivo de texto con funciones de archivo de bajo nivel

Puede abrir un archivo utilizando FOPEN( ), leer el contenido del archivo utilizando FREAD( ) y almacenarlo en una variable de memoria o en la propiedad Value del cuadro de edición. A continuación, puede escribir las modificaciones realizados al archivo utilizando FWRITE( ) y cerrar el archivo utilizando FCLOSE( ).

Modificar un archivo de texto cargándolo en un campo Cursor

La ventaja de crear un cursor para un archivo de texto, además de que el código es más simple, es que Visual FoxPro administra la escritura de grandes cantidades de texto de un cursor en archivos temporales si no hay memoria suficiente.

IF SELECT("textfile") = 0
CREATE CURSOR textfile (filename c(60),mem m)
APPEND BLANK
ENDIF
REPLACE textfile.FileName WITH GETFILE("TXT")
IF EMPTY(textfile.FileName)
RETURN
ENDIF
SELECT textfile
APPEND MEMO mem FROM (textfile.FileName) OVERWRITE
THIS.Parent.edtText.ControlSource = "textfile.mem"
THIS.Parent.cmdSave.Enabled = .T.
THIS.Parent.lblFileName.Caption = ALLTRIM(textfile.FileName)
THIS.Parent.Refresh

Vea también

Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de manipulación de texto por programa

Archivo: ...\Samples\Solution\Controls\TXT_EDT\Text.scx

Este ejemplo muestra el uso de las propiedades SelStart, SelLength y SelText de un cuadro de edición para manipular texto en tiempo de ejecución. El ejemplo también cuenta los caracteres, palabras y párrafos de un archivo de texto y permite al usuario buscar una cadena en un archivo de texto.

Dar formato al texto

El código siguiente está incluido en el evento Click del botón que cambia el formato del texto seleccionado a mayúsculas:

lo = THIS.Parent.edtText
lnOldStart = lo.SelStart
lnOldLength = lo.SelLength
lo.SelText = UPPER(lo.SelText)
lo.SelStart = lnOldStart
lo.SelLength = lnOldLength

Si quiere especificar los atributos de la fuente del texto seleccionado, utilice un control RichText.

Buscar texto

Después de obtener el texto que buscar, el código siguiente realiza un bucle por todo el texto del cuadro de texto, comparándolo con la cadena de destino.

llKeepLooking = .T.
DO WHILE llKeepLooking
FOR i = lnStart TO LEN(loEDT.Value)
loEDT.SelStart = i
loEDT.SelLength = lnLen
IF loEDT.SelText = ALLTRIM(loCBO.Text) OR ;
(!llCaseSensitive AND ;
(UPPER(loEDT.SelText) = UPPER(ALLTRIM(loCBO.Text))))
llFound = .T.
llKeepLooking = .F.
EXIT
ENDIF
ENDFOR
IF !llFound
lnChoice=MESSAGEBOX("Search string not found.", ;
64+0+4)
IF lnChoice = 6 && Yes
llKeepLooking = .T.
lnStart = 0
ELSE
llKeepLooking = .F.
ENDIF
ENDIF
ENDDO
Sugerencia Asegúrese de establecer la propiedad LockScreen del formulario a True (.T.) antes de la búsqueda y a False (.F.) después de la búsqueda. Si no es así, el formulario se volverá a dibujar cada vez que cambie la propiedad SelStart del cuadro de edición.

Vea también

Manipular objetos por programa (Ejemplo) | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de mostrar valores calculados en una columna

Archivo: ...\Samples\Solution\Controls\Grid\Calc.scx

Este ejemplo muestra como mostrar un valor calculado en una columna.

Establece la propiedad ControlSource de la columna a una expresión mediante un cálculo. Por ejemplo, la siguiente expresión para la propiedad ControlSource de la columna Profit muestra la diferencia entre el precio y el coste.

Products.Unit_Price - Products.Unit_Cost

Cuando cambie uno o más valores en la expresión, el valor de la columna se actualizará automáticamente.

Nota Las columnas que muestran una expresión con un cálculo son de solo lectura.

Vea también

Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de mostrar registros secundarios de una relación

Archivo: ...\Samples\Solution\Controls\Grid\1_many.scx

Este ejemplo muestra la forma de coordinar un formulario de tipo uno a varios con dos cuadrículas que muestran la parte varios de las relaciones. En este ejemplo se necesita muy poco código. Todo lo que se requiere es establecer algunas propiedades.

Valores de la propiedad

Cuadros de texto para la parte "uno" de la relación:

ControlSource = Customer.cust_id
ControlSource = Customer.company

Cuadrícula para la primera parte "varios" de la relación:

ChildOrder = cust_id
LinkMaster = customer
RecordSource = orders
RecordSourceType = 1 - Alias
RelationalExpr = customer.cust_id
ColumnCount = 4
Column1.ControlSource = "orders.order_no"
Column1.Header1.Caption = "Order"
Column2.ControlSource = "orders.order_date"
Column2.Header1.Caption = "Date"
Column3.ControlSource = "orders.to_name"
Column3.Header1.Caption = "Ship To"
Column4.ControlSource = "orders.order_amt"
Column4.Sparse = .F.
Column4.Header1.Caption = "Total"
Column4.Text1.InputMask = "$$999,999.99"

Cuadrícula para la segunda parte "varios" de la relación:

ChildOrder = order_id
LinkMaster = Orders
RecordSource = Orditems
RecordSourceType = 1 - Alias
RelationalExpr =Orders.order_id
ColumnCount = 4
Column1.ControlSource = "orditems.line_no"
Column1.Header1.Caption = "Item"
Column2.ControlSource = "products.prod_name"
Column2.Header1.Caption = "Product"
Column3.ControlSource = "orditems.quantity"
Column3.Header1.Caption = "Qty."
Column4.ControlSource = "orditems.unit_price"
Column4.Sparse = .F.
Column4.Header1.Caption = "Price"
Column4.Text1.InputMask = "$$9,999.99"

Además de los cuadros de texto y de la cuadrícula, el formulario contiene un objeto basado en la clase VCR en BUTTONS.VCX. La propiedad SkipTable de esta clase se establece a la tabla en la que quiere que se mueva el puntero del registro cuando el usuario elija un botón de desplazamiento de la tabla. Puesto que el usuario puede moverse fácilmente de forma manual a través de los registros de las cuadrículas (Orders y Orditems), SkipTable está establecido a Customer.

Vea también

Crear un formulario para introducir datos de tipo uno a varios (Ejemplo) | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de mostrar controles en una cuadrícula

Archivo: ...\Samples\Solution\Controls\Grid\Controls.scx

Este ejemplo muestra controles presentados en columnas de cuadrícula.

Puede agregar controles a una columna en el Diseñador de formularios seleccionando una columna y agregando un control, o mediante programación con el método AddObject.

Hay algunas propiedades importantes para mostrar controles en una columna:

CurrentControl (Propiedad)

Después de agregar un control a una columna de la cuadrícula, necesitará establecer la propiedad CurrentControl de la columna para que se muestre el nuevo control.

Sparse (Propiedad)

Las casillas de verificación del formulario le permiten alternar la propiedad Sparse de las columnas de la cuadrícula que contienen controles. Cuando la propiedad Sparse se establece como .T., el control sólo se muestra si el enfoque está en una celda de la columna. Cuando la propiedad Sparse se establece como .F., el control se muestra siempre en cada celda de la columna.

Controles y eventos

Observe que el control de la columna procesa los eventos cuando establece el enfoque en una celda de la columna. Por ejemplo, si selecciona una celda en una columna con un control de tipo numérico, cuando presione las teclas de desplazamiento arriba y abajo, aumentará o disminuirá el valor en el control de tipo numérico. Este es el comportamiento predeterminado de un control de tipo numérico, no es el comportamiento predeterminado de un cuadro de texto de una celda de la cuadrícula.

Vea también

Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de Dar formato dinámicamente a columnas de la cuadrícula

Archivo: ...\Samples\Solution\Controls\Grid\Dyngrid.scx

Este ejemplo ilustra la configuración de las propiedades DynamicForeColor y DynamicBackColor de las columnas de una cuadrícula.

El código más interesante de este ejemplo está asociado al evento InteractiveChange de la lista desplegable cboFormat.

En primer lugar, el código borra los valores de los colores dinámicos del texto y del fondo:

oGrd.SetAll("dynamicbackcolor", "", "Column")
oGrd.SetAll("dynamicforecolor", "", "Column")

A continuación, el código de una instrucción CASE establece las propiedades DynamicForeColor o DynamicBackColor. Por ejemplo, la siguiente línea de código muestra elementos discontinuos con un ForeColor gris.

oGrd.SetAll("dynamicforecolor", ;
"IIF(discontinu, RGB(192,192,192), RGB(0,0,0))", "Column")

Discontinu es un campo lógico de la tabla Products.

Vea también

Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de agregar elementos de forma interactiva a un cuadro de lista

Archivo: ...\Samples\Solution\Controls\Lists\Ladd.scx

Este ejemplo muestra la manera de agregar y eliminar los elementos de un cuadro de lista. Cuando un usuario escribe texto en el cuadro de texto y presiona Intro, el texto se agrega a la lista y el cursor vuelve de nuevo al cuadro de texto para que el usuario pueda introducir otro valor.

Para permitir a un usuario agregar elementos a una lista de forma interactiva, utilice el método AddItem. En el ejemplo, el código siguiente del evento KeyPress del cuadro de texto agrega el texto al cuadro de lista y borra el cuadro de texto cuando el usuario presiona Intro:

PARAMETERS nKeyCode, nShiftCtrlAlt
IF nKeyCode = 13     && Enter Key
THISFORM.lstAdd.AddItem (This.Value)
THIS.Value = ""
ENDIF

El código siguiente del evento DblClick del cuadro de lista quita el elemento en el que ha hecho doble clic, enviando el valor al cuadro de texto:

THISFORM.txtAddText.Value = This.List(This.ListIndex)
THIS.RemoveItem (This.ListIndex)

Vea también

Agregar elementos de menú en tiempo de ejecución (Ejemplo) | Ejemplos de Soluciones


Ejemplo de mostrar múltiples columnas en un cuadro de lista

Archivo: ...\Samples\Solution\Controls\Lists\Lmulcol.scx

Este ejemplo muestra cómo mostrar múltiples columnas en un cuadro de lista. El formulario mostrado contiene un cuadro de lista y un control de tipo numérico. El número de columnas del cuadro de lista está establecido al valor de la propiedad Value del control de tipo numérico: 1, 2, 3 ó 4.

Para establecer el ancho de las columnas en un cuadro de lista de múltiples columnas, utilice la propiedad ColumnWidths. Por ejemplo, si hay 3 columnas en el cuadro de lista, el comando siguiente establecerá los anchos de la columna a 10, 15 y 20 respectivamente:

Form.List.ColumnWidths = "10, 15, 20"

Para establecer los campos que se muestran en las columnas, establezca la propiedad RowSource. Por ejemplo, el comando siguiente establece los orígenes de tres columnas en un cuadro de lista de tres columnas como los campos contact, city y country de la tabla customer:

Form.List.RowSource = "contact,city,country"

La propiedad ColumnLines determina si las líneas se muestran entre las columnas en la lista.

Vea también

Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de mostrar imágenes en una lista

Archivo: ...\Samples\Solution\Controls\Lists\Piclist.scx

Este ejemplo muestra como puede mejorar el aspecto de sus cuadros de lista agregando gráficos de imágenes junto a los elementos individuales de texto. En este ejemplo, puede elegir cualquier archivo de base de datos (.dbc) y el cuadro de lista mostrará diferentes imágenes junto a los nombres de las tablas, vistas locales y vistas remotas.

El siguiente código de cmdDatabase.Click recorre un .dbc y agrega imágenes de manera selectiva a los elementos de lista mediante la propiedad Picture. Esta propiedad se basa en un valor de índice para determinar a qué elemento de la lista va a afectar.

FOR i = (m.nTblCount+1) TO thisform.lstDatabase.ListCount
IF DBGETPROP(ALLTRIM(thisform.lstDatabase.List[m.i]),; "view","sourcetype") = 1
*Local view
thisform.lstDatabase.Picture[m.i] = m.cLViewBMP
ELSE
* Remote view
thisform.lstDatabase.Picture[m.i] = m.cRViewBMP
ENDIF
ENDFOR
Nota Debe asegurarse de que las imágenes utilizadas se ajustan correctamente para que quepan dentro del espacio del elemento del cuadro de lista sencillo, que se diferencia del FontSize de la lista.

Vea también

Agregar elementos de forma interactiva a un cuadro de lista (Ejemplo) | Mostrar imágenes en un control Image (Ejemplo) | Ejemplos de Soluciones


Ejemplo de rellenar una lista con valores de orígenes distintos

Archivo: ...\Samples\Solution\Controls\Lists\Multdat1.scx

Este ejemplo muestra cómo establecer la propiedad RowSourceType de un cuadro de lista en tiempo de ejecución a un valor, un alias, una instrucción SQL, una consulta (.qpr), una matriz, campos de una tabla, archivos en un directorio y a la estructura de la tabla.

El cuadro combinado del formulario contiene todos posibles RowSourceTypes de una lista (excepto para 9 - emergente, que se incluye para ofrecer compatibilidad con versiones anteriores). El código asociado con el evento InteractiveChange establece las nuevas propiedades RowSourceType y RowSource para la lista.

Cuando cambie las propiedades RowSourceType y RowSource de un cuadro de lista en tiempo de ejecución, necesitará:

  1. Establecer RowSourceType a 0.
  2. Establecer RowSource al nuevo origen.
  3. Establecer RowSourceType al nuevo tipo.

Si no sigue este orden, los valores de RowSource y RowSourceType existentes podrían entrar en conflicto después de que se haya establecido un nuevo valor y antes de que se establezca el valor correspondiente.

Vea también

Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Mover elementos entre cuadros de lista

Archivo: ...\Samples\Solution\Controls\Lists\Lmover.scx

Este ejemplo muestra cómo se pueden mover elementos de un cuadro de lista a otro. Un usuario puede hacer doble clic en un elemento y moverlo, seleccionar uno o más elementos y arrastrarlos o utilizar el botón de comando apropiado para mover elementos entre las listas.

Los dos cuadros de lista y cuatro botones de comando asociados se guardan como una clase: MoverLists en samples.vcx. La clase de base de MoverLists es Container. Para poder agregar o quitar elementos de las listas, la propiedad RowSourceType de las listas debe estar establecida a 0 - Ninguno. Si quiere rellenar el cuadro de lista con elementos de una matriz o valores de una tabla, puede usar código parecido al siguiente:

*array
FOR i = 1 to ALEN(myarray)
List.AddItem(myarray[i])
ENDFOR
*table
SCAN
List.AddItem(table.field)
ENDSCAN

Para mover elementos haciendo doble clic

El código siguiente está asociado al evento DblClick del cuadro de lista izquierdo (lstSource). El mismo código se asocia al evento DblClick del cuadro de lista derecho (lstSelected).

THIS.Parent.lstSelected.AddItem(THIS.List(THIS.ListIndex))
This.RemoveItem(THIS.ListIndex)
THIS.Parent.Refresh

"THIS" se refiere a lstSource. "THIS.Parent" se refiere a la clase Moverlists, la contenedora de las listas.

Para mover todos los elementos de una lista a otra

El código siguiente está asociado al evento Click de cmdAddAll:

  DO WHILE THIS.PARENT.lstSource.ListCount > 0
THIS.PARENT.lstSelected.AddItem;
(THIS.PARENT.lstSource.List(1))
THIS.PARENT.lstSource.RemoveItem(1)
ENDDO
THIS.PARENT.Refresh

Para mover elementos seleccionados de una lista a otra

Si quita un elemento de un cuadro de lista, la propiedad ListCount del cuadro de lista se decrementa, como el ListIndex de todos los elementos subsiguientes de la lista. Para mover múltiples elementos seleccionados deberá utilizar un bucle DO WHILE. El siguiente código esta asociado al evento Click de cmdAdd:

nCnt = 1
DO WHILE nCnt <= THIS.PARENT.lstSource.ListCount
IF THIS.PARENT.lstSource.Selected(nCnt)
THIS.PARENT.lstSelected.AddItem;
(THIS.PARENT.lstSource.List(nCnt))
THIS.PARENT.lstSource.RemoveItem(nCnt)
ELSE
nCnt = nCnt + 1
ENDIF
ENDDO
THIS.PARENT.Refresh

Para arrastrar y soltar elementos de una lista a otra

Implementar la funcionalidad de arrastrar y soltar entre cuadros de lista supone utilizar código asociado a los eventos MouseDown, MouseMove, DragOver y DragDrop. Tres propiedades definidas por el usuario (DragThreshold, MouseX y MouseY) aumentan la utilidad de la clase.

El código de MouseDown almacena las coordenadas X e Y del puntero del ratón (ratón) en las propiedades de la clase.

*MouseDown
Parameters nButton, nShift, nXCoord, nYCoord
THIS.PARENT.MouseX = nXCoord
THIS.PARENT.MouseY = nYCoord

El código de MouseMove asegura que se ha presionado el botón primario del ratón antes de comenzar con el procedimiento de arrastrar. Además, para evitar un arrastre accidental, el código comprueba que el usuario ha movido el ratón una distancia mayor que un margen establecido (predeterminado a 8 píxeles).

*MouseMove
Parameters nButton, nShift, nXCoord, nYCoord
IF nButton = 1 && Left Mouse
IF ABS(nXCoord - THIS.PARENT.MouseX) > ;
THIS.Parent.DragThreshold OR ;
ABS(nYCoord - THIS.PARENT.MouseY) > ;
THIS.Parent.DragThreshold
THIS.Drag
ENDIF
ENDIF

El código de DragOver cambia el DragIcon del origen cuando el puntero del ratón entra y sale del área del cuadro de lista.

*DragOver
Parameters oSource, nXCoord, nYCoord, nState
DO CASE
CASE nState = 0 && Enter
oSource.DragIcon = THIS.Parent.CanDropIcon
CASE nState = 1 && Leave
oSource.DragIcon = THIS.Parent.NoDropIcon
ENDCASE

El código de DragDrop asegura que el origen del arrastre no es el mismo que el destino y llama al método asociado al evento Click del botón de comando cmdAdd (en este caso lstSelected) o cmdRemove (en este caso lstSource).

*DragDrop
Parameters oSource, nXCoord, nYCoord
IF oSource.Name != THIS.Name
THIS.PARENT.cmdAdd.Click
ENDIF

Vea también

Ordenar elementos de un cuadro de lista (Ejemplo) | Seleccionar varios elementos en un cuadro de lista (Ejemplo) | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Seleccionar varios elementos en un cuadro de lista

Archivo: ...\Samples\Solution\Controls\Lists\Lmsel.scx

Este ejemplo muestra cómo controlar múltiples elementos seleccionados en un cuadro de lista. El formulario contiene un cuadro de lista con la propiedad MultiSelect establecida a True (.T.). Un cuadro combinado en el formulario contiene todos los elementos que se han seleccionado en el cuadro de lista.

Para procesar los múltiples elementos seleccionados en un cuadro de lista, copiarlos a una matriz o incorporarlos a su aplicación, realice un bucle a través de los elementos de la lista y procese aquellos que tienen la propiedad Selected establecida a True (.T.). El siguiente código está incluido en el evento Click del cuadro de lista para mostrar los elementos seleccionados en el cuadro combinado y el número de elementos seleccionados en un cuadro de texto:

nNoSelected = 0               && variable para almacenar el número de elementos seleccionados
THISFORM.cboSelected.Clear    && Vaciar el cuadro combinado
* Bucle de procesamiento principal
FOR i = 1 TO THIS.ListCount
IF THIS.Selected(i)
nNoSelected = nNoSelected + 1
THISFORM.cboSelected.Additem (THIS.List(i))
ENDIF
ENDFOR
THISFORM.txtNoSelected.Value = nNoSelected

En el código asociado al evento Init de este formulario, y en muchos otros sitios de esta aplicación de ejemplo, el valor de la cadena de caracteres agregada inicialmente a la lista está definida con una directiva #DEFINE. Cada una de las constantes definidas terminan con "_LOC". Las herramientas internas de localización de Microsoft extraen estas definiciones de forma que las cadenas pueden traducirse en el lenguaje al que se va a traducir la aplicación.

Vea también

Mover elementos entre cuadros de lista (Ejemplo) | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de abrir de forma interactiva varios archivos

Archivo: ...\Samples\Solution\Controls\Lists\Multfile.scx

Este ejemplo muestra cómo se llena una lista con archivos. Cuando llene una lista con archivos, la funcionalidad incorporada permite al usuario seleccionar nuevas unidades y directorios. En este ejemplo, un usuario puede seleccionar uno o más archivos de la lista y abrirlos para editarlos.

El siguiente código realiza un bucle con los elementos del cuadro de lista y abre los archivos seleccionados para editar:

FOR nFile = 5 to THISFORM.lstFiles.ListCount
IF THISFORM.lstFiles.Selected(nFile)
MODIFY FILE (THISFORM.lstFiles.List(2) + ;
THISFORM.lstFiles.List(nFile)) NOWAIT
ENDIF
ENDFOR

When the RowSourceType property is set to 7 - Files:

  • lstFiles.List(1) hace referencia a la unidad.
  • lstFiles.List(2) hace referencia a la ruta de acceso.
  • lstFiles.List(3) es una línea separadora.
  • lstFiles.List(4) es [..]. Haga clic para ir al directorio principal.

Los archivos pueden comenzar en lstFiles.List(5)

Vea también

Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de ordenar elementos de un cuadro de lista

Archivo: ...\Samples\Solution\Controls\Lists\Lsort.scx

Este ejemplo muestra como se permite al usuario reorganizar u ordenar los elementos de una lista. Las principales propiedades que hay que establecer son:

   List.MoverBars = .T.
List.Sorted = .T.

Establezca la propiedad MoverBars en True (.T.) para permitir al usuario reorganizar un elemento de la lista arrastrando el botón situado a la izquierda del elemento a la nueva posición.

Establezca la propiedad Sorted a True (.T.) para mostrar la lista de elementos en orden alfabético. Todavía puede reorganizar los elementos de la lista después de que se hayan ordenado. Establezca la propiedad Sorted a .T. otra vez para ordenar la lista en orden alfabético de nuevo.

La propiedad Sorted se aplica sólo si la propiedad RowSourceType de la lista está establecida a 0 (None) o 1 (Value).

Vea también

Utilizar cuadros de lista de selección para seleccionar datos (Ejemplo) | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Arrastrar y soltar entre Treeview y Listbox (Ejemplo)

Archivo: ...\Samples\Solution\Tahoe\Listdd.scx

Este ejemplo proporciona demostraciones de valores para las propiedades OLEDragMode y OLEDropMode en los controles Treeview y Listbox.

Para obtener más detalles acerca de las clases disponibles en las Foundation Classes, vea Foundation Classes de Visual FoxPro (A-Z).

Vea también

Ejemplos Foundation Classes de Visual FoxPro | Agregar y quitar elementos en un control Treeview (Ejemplo) | Foundation Classes de Visual FoxPro (A-Z) | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro


Ejemplo de cambiar páginas cuando un usuario elige un botón

Archivo: ...\Samples\Solution\Controls\PgFrame\Msgbox.scx

Este ejemplo le permite generar interactivamente un cuadro de mensaje.

Hay seis combinaciones posibles de botones de comandos en un cuadro de mensaje. Cada una de estas combinaciones se muestra en una página independiente en un marco de página en el formulario Generador de cuadros de mensaje.

Los botones de opción, etiquetados de 0 a 5, le permiten especificar qué combinación de botones de comando desea que se muestre en su cuadro de mensaje. El botón seleccionado en la página indica la selección del botón Messagebox predeterminado. La propiedad ActivePage del marco de página se establece al mismo valor del grupo Option.

Construir el código de MESSAGEBOX

En el evento InteractiveChange de los controles del formulario, se llama al método WriteCode del formulario para generar dinámicamente el código de MESSAGEBOX.

* WriteCode Method
#DEFINE QM '"'
cString = '=MESSAGEBOX('
cString = cString + QM + ALLTRIM(STRTRAN(THIS.edtMessage.Value, CHR(13)+CHR(10), QM + '+CHR(13)+' + QM)) + QM + ','
cString = cString + THIS.cboIcon.Value + '+'
cString = cString + THIS.DefaultButton + '+'
cString = cString + ALLTRIM(STR(THIS.opgButtons.Value - 1)) + ','
cString = cString + QM + ALLTRIM(THIS.txtCaption.Value) + QM + ')'
THIS.edtCode.Value = cString

Vea también

Controlador de cuadro de mensaje | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de presentar múltiples opciones a un usuario

Archivo: ...\Samples\Solution\Controls\Buttons\Quiz.scx

Este ejemplo muestra el uso de un grupo de botones de opción sin selección predeterminada y el enlace de un campo de tipo carácter al grupo de opciones.

Para mostrar un grupo de opciones sin botones seleccionados realice una de estas dos acciones:

  • Establezca la propiedad Value de cada uno de los botones de opción del grupo a 0 o .F.
  • Establezca la propiedad Value del grupo de botones de opción a 0.

Para almacenar el título de los botones de opción en un campo de tabla

  • Establezca la propiedad ControlSource del grupo de botones de opción al campo.

Vea también

Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de cambiar el número de fichas en tiempo de ejecución

Archivo: ...\Samples\Solution\Controls\Pgframe\Pfsam1.scx

Este ejemplo muestra como usar un marco de página con fichas. El número de fichas cambia dinámicamente cuando un usuario elige un valor nuevo en un control de tipo numérico. Cuando el usuario selecciona una ficha, un cuadro de lista muestra valores específicos de la ficha.

Para cambiar el número de fichas en tiempo de ejecución

  • Establezca la propiedad PageCount con el número de páginas que desee.

El cuadro de lista de este ejemplo se sitúa en el formulario, no en las páginas del marco de página. Esta situación le permite tener un único control visible en todas sus páginas.

Dos métodos de formulario definidos por el usuario establecen los títulos de las fichas y aseguran que coincidan los valores en el cuadro de lista: UpdateList y SetCaption.

Método UpdateList

Se llama al método UpdateList cuando el número de fichas cambia y cuando el usuario selecciona una ficha nueva.

LOCAL lnPage, lcHigh, lcLow
#define NO_MATCH_LOC 'No Matching Names for '
DIMENSION THISFORM.aCustomers[1,2]
lnPage = THISFORM.pgfRolodex.activepage
THISFORM.aCustomers[1,1] = NO_MATCH_LOC + ;
THISFORM.pgfRolodex.Pages(lnPage).Caption
THISFORM.aCustomers[1,2] = ""
lcHigh = substr(THISFORM.pgfrolodex.Pages(lnPage).caption,3,1)
lcLow = substr(THISFORM.pgfrolodex.Pages(lnPage).caption,1,1)
SELECT company, phone FROM customer;
WHERE company <= lcHigh and company => lcLow;
ORDER BY company;
INTO ARRAY THISFORM.aCustomers
THISFORM.lstCustomers.Requery
THISFORM.lstCustomers.Value = 1

Método SetCaption

Se llama al método SetCaption en los eventos UpClick y DownClick del control deslizante para calcular qué títulos deben aparecer en las fichas.

THISFORM.LockScreen = .T.
FOR n = 1 to THISFORM.pgfRolodex.PageCount
FirstLetter = SUBSTR(THISFORM.Alphabet,((n - 1)*ROUND(LEN(THISFORM.Alphabet)/THISFORM.pgfRolodex.PageCount,0))+1,1)
IF n = THISFORM.pgfRolodex.PageCount   &&last page
LastLetter = right(THISFORM.Alphabet,1)
ELSE
LastLetter = SUBSTR(THISFORM.Alphabet,((n)*ROUND(LEN(THISFORM.Alphabet)/THISFORM.pgfRolodex.PageCount,0)),1)
ENDIF
THISFORM.pgfRolodex.Pages(n).Caption = FirstLetter + "-" + LastLetter
ENDFOR
THISFORM.LockScreen = .F.

Alphabet es una propiedad de formulario definida por el usuario que se utiliza para determinar los títulos de cada ficha. Para conseguir la misma funcionalidad con otros lenguajes, establezca la propiedad Alphabet a una cadena que contenga todas las letras del alfabeto del lenguaje de destino.

Vea también

Mostrar páginas diferentes sin fichas (Ejemplo) | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de mostrar páginas diferentes sin fichas

Archivo: ...\Samples\Solution\Controls\PgFrame\Pfsam2.scx

Este ejemplo muestra la manera de manipular páginas sin fichas en una página de formulario. El marco del centro del formulario contiene tres páginas que se colocan en primer plano mientras el usuario elige los botones de comando. Cada página puede tener sus propios controles y apariencia.

El método que coloca una página determinada en primer plano es ZOrder. Por ejemplo, la siguiente línea de código del evento Click de uno de los botones de comando trae al frente a pagCustomers:

THISFORM.pgfPeople.pagCustomers.ZOrder

También puede utilizar la propiedad ActivePage del marco de la página para determinar qué páginas se muestran:

THISFORM.pgfPeople.ActivePage = 1

Vea también

Cambiar páginas cuando un usuario elige un botón (Ejemplo) | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de dar formato a datos de entrada y validar datos de un cuadro de texto

Archivo: ...\Samples\Solution\Controls\TXT_EDT\Textbox.scx

Este ejemplo muestra como establecer las propiedades de un cuadro de texto para facilitar al usuario la entrada de datos en el formato adecuado.

Formato | Propiedad | Valor
Permitir solo dígitos | InputMask | 999999999
Seleccionar al entrar | SelectOnEntry | .T.
Todas en mayúsculas Format !
Solo lectura | ReadOnly | .T.
Número de teléfono US | InputMask | (999) 999-9999
Texto de contraseña PasswordChar
*
Formato de fecha | DateFormat | un número entre 0 y 14

Validar entrada

El código siguiente del evento Valid de un cuadro de texto impide al usuario abandonar el cuadro de texto si la letra 'a' se encuentra en el texto.

IF "a"$ THIS.Value
#DEFINE MESSAGE_LOC "The text box value cannot contain the letter 'a'"
MESSAGEBOX(MESSAGE_LOC,48+0+0)
RETURN 0
ELSE
RETURN .T.
ENDIF

Vea también

Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de mostrar un cronómetro

Archivo: ...\Samples\Solution\Controls\Timer\Swatch.scx

Este ejemplo incluye la clase Stopwatch.

La clase Stopwatch

La clase Stopwatch incluye un cronómetro y varias etiquetas. El cronómetro incrementa las propiedades personalizadas numéricas de la clase y establece la propiedad Caption de las etiquetas.

El método Start de la clase establece la propiedad Enabled del cronómetro en verdadero (.T.). El método Stop establece la propiedad Enabled del cronómetro en falso (.F.). El método Reset establece las propiedades numéricas a 0.

El formulario Swatch

El formulario Swatch contiene un objeto que se deriva de la clase Stopwatch, junto con algunos botones de comando. El código escrito para el evento Click del primer botón de comando del formulario llama a los métodos Start y Stop de la clase Stopwatch. El segundo botón llama al método Reset de la clase Stopwatch.

Vea también

Cronómetro | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de mostrar un reloj del sistema

Archivo: ...\Samples\Solution\Controls\Timer\Clock.scx

Este ejemplo contiene el control personalizado Clock de Samples.vcx en un formulario. La clase incluye un cuadro de texto para mostrar la fecha y la hora y un cronómetro para actualizar la pantalla.

La propiedad TimeFormat de la clase Clock puede establecerse en formato de 0 a 24 horas o en formato de 1 a 12 horas. El código del evento Timer del cronómetro actualiza la hora:

#DEFINE LONGDATE_LOC CDOW(DATE())+" "+CMONTH(DATE())+" "+ ;
ALLTRIM(STR(DAY(DATE())))+", "+ALLTRIM(STR(YEAR(DATE())))
IF This.Parent.TimeFormat = 0
This.Parent.txtTime.Value = IIF(VAL(SUBSTR(TIME(),1,2))>12, ;
ALLTRIM(STR((VAL(SUBSTR(TIME(),1,2))-12)))+SUBSTR(TIME(),3,6),TIME())
ELSE
This.Parent.txtTime.Value = TIME()
ENDIF
THIS.Parent.txtDate.Value = LONGDATE_LOC

Esta clase contiene un cuadro de texto independiente para los valores de fecha y hora. Si desea ocultar uno u otro, puede hacerlo fácilmente estableciendo su propiedad Visible en falso (.F.). Una manera más fácil de mostrar la hora y la fecha es utilizar un cuadro de texto simple y establecer el valor de este cuadro de texto en un control de tipo cronómetro a DATETIME( ). Esto le permite aprovechar las propiedades Hours, Seconds y DateFormat del cuadro de texto.

Vea también

Reloj | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de ejecutar comandos a intervalos especificados

Archivo: ...\Samples\Solution\Controls\Timer\Timecomm.scx

Este formulario de ejemplo contiene un cuadro de texto y un control de tipo numérico. El texto que escribe en el cuadro de texto se muestra en una WAIT WINDOW. Puede establecer el control de tipo numérico al número de segundos que quiere que transcurran entre cada comando WAIT WINDOW

En el evento InteractiveChange del control de tipo numérico se establece el intervalo de cronómetro apropiado. La propiedad Interval es 1/1000 de segundo, por lo tanto, el intervalo del control de tipo numérico se establece al valor del control de tipo numérico * 1000:

THISFORM.Timer1.Interval = (THIS.Value * 1000)

El comando WAIT WINDOW se ejecuta en el evento Timer:

WAIT WINDOW ALLTRIM(THISFORM.Text1.Value) TIMEOUT 0.5

El código asociado al evento Timer puede incluir cualquier comando o procedimiento: código para actualizar datos, comprobar correo, mostrar recursos del sistema, entre otros.

Vea también

Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de crear un valor de Id. único predeterminado para un campo

Archivo: ...\Samples\Solution\Db\Newid.scx

Este ejemplo utiliza un procedimiento almacenado en una base de datos para proporcionar un valor predeterminado de clave primaria.

Para crear un Id. único predeterminado

  1. Agregue una tabla independiente a la base de datos que almacena el siguiente Id. para cada tabla de la base de datos. El nombre de esta tabla, en el ejemplo, es IDS.DBF. Contiene dos campos: Table C(10), NextID I.
  2. Cree una función en los procedimientos almacenados de la base de datos para devolver el siguiente valor de Id. de la tabla de Id. El nombre de esta función en el ejemplo es NewID. Se muestra a continuación.
  3. Establezca el valor predeterminado para el campo de la función.

Procedimiento almacenado NewID

FUNCTION NewID(tcAlias)
LOCAL lcAlias, lnID, lcOldReprocess, lnOldArea
lnOldArea = SELECT()
IF PARAMETERS() < 1
lcAlias = UPPER(ALIAS())
ELSE
lcAlias = UPPER(tcAlias)
ENDIF
lcOldReprocess = SET('REPROCESS')
* Lock until user presses Esc
SET REPROCESS TO AUTOMATIC
IF !USED("IDS")
USE newid!ids IN 0
ENDIF
SELECT ids
IF SEEK(lcAlias, "Ids", "table")
IF RLOCK()
lnID = ids.nextid
REPLACE ids.nextid WITH ids.nextid + 1
UNLOCK
ENDIF
ENDIF
SELECT (lnOldArea)
SET REPROCESS TO lcOldReprocess
RETURN lnID
ENDFUNC

Vea también

Crear un formulario para introducir datos de tipo uno a varios (Ejemplo) | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Crear índices pequeños utilizando BINTOC( )

Archivo: ...\Samples\Solution\Db\Index1.scx

Este ejemplo muestra varios esquemas de índices que puede utilizar con tipos de datos numéricos y enteros para conseguir un importante ahorro en el tamaño del índice y en el espacio de disco consumido. Además, los índices más pequeños normalmente dan como resultado búsquedas más rápidas. La nueva función BINTOC() le permite convertir un valor entero (numérico) en una representación de caracteres.

Sintaxis

BINTOC(nExpression [, nSize])

Dependiendo del tamaño de su expresión, puede establecer el parámetro nSize para ajustar el valor de su expresión con la menor cantidad de caracteres.

La siguiente línea de código crea un índice en un campo numérico.

INDEX on line_no TAG line_no

La próxima vez que trabaje con índices de datos numéricos integer, considere utilizar algo parecido a esto:

INDEX on BINTOC(line_no,1) TAG line_no

Vea también

Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Indexar según expresiones

Archivo: ...\Samples\Solution\Db\Index2.scx

Este ejemplo de índices muestra diferentes opciones que puede considerar cuando utilice un campo de tipo carácter para representar un Id. único (uno formado normalmente por datos numéricos). Una etiqueta de índice basada en un campo de tipo carácter se ordenará basándose en los valores ASCII de los datos, mientras que una expresión numérica, utilizando la función VAL( ), se ordenará como una sucesión numérica. La tabla siguiente muestra las diferencias de ordenación de los dos índices.

cExpresion | VAL(cExpresion)
1 | 1
11 | 2
2 | 11
Nota Cuando utilice la función VAL( ), todos los valores no numéricos se convertirán a 0.

Incorporando la función BINTOC( ), también puede reducir el tamaño de la etiqueta de índice considerablemente.

Vea también

Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de anidar transacciones

Archivo: ...\Samples\Solution\Db\Trans.scx

Este ejemplo muestra cómo iniciar, terminar y deshacer las transacciones. Puede decidir confirmar o descartar cambios en una tabla simple cuando utilice almacenamiento de tablas en búfer, pero también puede decidir confirmar o descartar cambios para cualquier número de tablas cuando utilice las transacciones.

Antes de modificar cada tabla, haga clic en el botón Comenzar. Después de modificarla, puede hacer clic de nuevo en el botón Comenzar para anidar otra transacción, o puede hacer clic en el botón Terminar, para confirmar sus modificaciones, o en el botón Deshacer, para descartar sus cambios.

Los comandos clave en este ejemplo son:

BEGIN TRANSACTION
END TRANSACTION
ROLLBACK

La función que devuelve el número actual de transacciones anidadas es:

TXNLEVEL( )

Vea también

Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Comprobar mediante programa las propiedades de una tabla (Ejemplo)

Archivo: ...\Samples\Solution\Db\Info.scx

Este ejemplo muestra como obtener información acerca de una tabla en tiempo de ejecución.

Información de campo

La función AFIELDS( ) proporciona la mayor parte de la información acerca de los campos de la tabla mostrada en el ejemplo. Además de esta información, AFIELDS( ) proporciona información acerca de campos, expresiones y mensajes de validación de tablas, expresiones de desencadenadores y mensajes, así como nombres largos de tablas y observaciones de tablas de la base de datos.

Información de índices

Las funciones TAG( ) y KEY( ) proporcionan información acerca de los índices:

lo = THISFORM.edtProperties
FOR i = 1 TO 254
IF !EMPTY(TAG(i))  && Verifica las etriquetas en el índice
lo.Value = lo.Value + TAG(i) + "  " + KEY(i)
ELSE
EXIT
ENDIF
ENDFOR

Vea también

Manipular objetos por programa (Ejemplo) | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de clasificar u ordenar una tabla en tiempo de ejecución

Archivo: ...\Samples\Solution\Db\Order.scx

Este ejemplo muestra cómo se cambia el orden de presentación de los registros de una tabla. La tabla de clientes, Customer, tiene una etiqueta de índice en los campos presentados en la cuadrícula. En el evento MouseUp de cada uno de los encabezados de la cuadrícula, el orden de la tabla está establecido por la etiqueta de índice asociada al campo mostrado en la columna. Por ejemplo, el código siguiente está asociado al evento MouseUp del encabezado Company:

LPARAMETERS nButton, nShift, nXCoord, nYCoord
IF nShift = 2 && CTRL
SET ORDER TO Company DESCENDING
ELSE
SET ORDER TO Company ASCENDING
ENDIF
GO TOP
THISFORM.Refresh

Ver también

Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo para buscar texto empleando expresiones regulares

Archivo: ...\Samples\Solution\FFC\Regexp.scx

Puede usar búsqueda con expresiones regulares en las aplicaciones. Las expresiones regulares proporcionan un conjunto más complejo de criterios de búsqueda/filtro sobre una selección de texto, comparada con las búsquedas con comodines disponible en el cuadro de diálogo Buscar.

El ejemplo contiene las siguientes clases

Clase | Biblioteca | Descripción
_regexp | _ regexp.vcx | Proporciona métodos para realizar búsquedas con expresiones regulares en bloques de texto.

La clase fundacional (Foundation Class) de expresiones regulares proporciona acceso a rutinas para usar expresiones regulares en las aplicaciones. Para más información, ver Expresiones regulares (Foundation Class).

Ver también

Ejemplos Foundation Classes de Visual FoxPro | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro| Foundation Classes de Visual FoxPro (A-Z)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Ejemplos de utilizar eventos DBC

Archivo: ...\Samples\Solution\Sedona\Dbcevents.scx

Este ejemplo muestra eventos de base de datos que permiten que se ejecuten acciones cuando se abre, obtiene acceso o manipula una base de datos y sus objetos (tablas, vistas, relaciones, etc.).

Para obtener más detalles acerca de las clases disponibles en las Foundation Classes, vea Foundation Classes de Visual FoxPro (A-Z).

Ver también

Foundation Classes de Visual FoxPro (A-Z) | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro


Interactively Build a SELECT Statement Sample

Archivo: ...\Samples\Solution\Forms\Makesql.scx

Este ejemplo muestra como un usuario puede crear una consulta a medida en tiempo de ejecución. Los cuadros combinados en el formulario permiten al usuario elegir campos de la tabla actualmente abierta. El método BldSQL procesa los nombres de los campos y los valores que el usuario escribe en los cuadros de texto para crear una instrucción ejecutable SQL SELECT.

Los métodos adicionales ValidateType y SetTextboxFormat, aseguran que se escriban valores apropiados en los cuadros de texto y que se incorporen correctamente dentro de la instrucción SELECT.

Después de que se haya construido la cláusula WHERE y almacenado en la variable lcWhere, el siguiente comando crea la instrucción SELECT:

lcSQL = "SELECT * FROM " + lcAlias + " " + lcWHERE

Cuando se haya construido la instrucción SELECT, podrá ejecutarse con una macro de sustitución:

&lcSQL

Vea también

Controlador de matrices | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Seleccionar clientes de un país específico (Ejemplo)

Archivo: ...\Samples\Data\Testdata.dbc

Este ejemplo ilustra el uso de una vista parametrizada ("clientes de un país específico" de la base de datos testdata) para mostrar un subconjunto de registros que coincidan con una variable establecida en tiempo de ejecución.

Para crear una vista parametrizada en el Diseñador de vistas, escriba una variable fijada previamente con una marca de interrogación (?) en el cuadro Ejemplo de la ficha Filtro.

Si la variable no existe en tiempo de ejecución, se pedirá al usuario que escriba un valor para esa variable, whichcountry en este ejemplo. Si la variable ya existe, la vista muestra los registros encontrados sin preguntar por un nuevo valor.

Vea también

Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Seleccionar registros de una combinación externa completa

Archivo: ...\Samples\Data\Fouterj.qpr

La consulta FOUTERJ del proyecto Solutions combina información de la tabla de países, Country, y la tabla de clientes, Customer, utilizando una combinación externa completa. Cada registro de resultados tiene un campo por cada uno de los campos de la tabla Country, y los campos country y cust_id para el campo de la tabla Customer, como se especifica en la cláusula SELECT de la instrucción SQL SELECT.

SELECT Country.*, Customer.country, Customer.cust_id;
FROM testdata!customer FULL JOIN country ;
ON Customer.country = Country.country

Normalmente, una combinación externa completa responde a tres preguntas acerca de los registros de su base de datos. Algunas de las preguntas que esta consulta puede responder son:

  • ¿Qué clientes hay y en qué países?
  • ¿Qué países no tienen alguno de sus clientes en él?
  • ¿Qué registros de clientes han perdido la información del país?

Esta información puede ayudar a alguien a decidir si debe ampliar sus negocios a otros países, cambiar la estrategia de márketing en algunos países o, simplemente, que algunos registros de la base de datos necesitan actualizar la información del país.

La combinación externa completa devuelve todos los registros de las dos tablas y combina los registros que coincidan con la condición de combinación. El conjunto de resultados incluye tres subconjuntos de registros.

  • Registros que cumplan la condición de combinación que combina información de un registro en cada tabla.
  • Registros de la tabla Country que no cumplan la condición de combinación.
  • Registros de la tabla Customers que no cumplan la condición de combinación.

Como cada registro del resultado tiene los mismos campos, los registros que no coincidan en la otra tabla tendrán valores NULL en los campos que, de otra forma, contendrían valores de otra tabla. Por ejemplo, si un registro con el país Rusia no tiene algún registro de cliente relacionado en la tabla Customers, el registro aparecerá en los resultados con NULL como valor de los campos cust_id y country_b.

Puede cambiar el resultado de la consulta especificando filtros, un orden de clasificación, grupos u otras opciones en la consulta.

Vea también

Seleccionar registros de una combinación interna (Ejemplo) | Seleccionar registros de una combinación externa derecha (Ejemplo) | Seleccionar registros de una combinación anidada (Ejemplo) | Seleccionar registros de una combinación externa izquierda (Ejemplo) | Ejemplos de Soluciones


Seleccionar registros de una combinación externa izquierda

Archivo: ...\Samples\Data\Louterj.qpr

La consulta LOUTERJ del proyecto Solutions combina información de la tabla de pedidos, Order, y de la tabla de clientes, Customer, utilizando una combinación externa izquierda. Cada registro del resultado tiene un campo order_id de la tabla Order y los campos cust_id, company y country de la tabla Customer como se especifica en la cláusula SELECT de la instrucción SQL SELECT.

SELECT Customer.cust_id, Customer.company, Customer.country,;
Orders.order_id;
FROM testdata!orders LEFT OUTER JOIN testdata!customer ;
ON Orders.cust_id = Customer.cust_id

Normalmente, una combinación externa izquierda puede responder a dos preguntas acerca de los registros de su base de datos. Algunas de las preguntas que esta consulta puede responder son:

  • ¿Qué pedidos pertenecen a qué clientes?
  • ¿Qué pedidos no tienen relacionada información de cliente?

Esta información ayuda al administrador de la base de datos a determinar a qué registros de pedidos les falta información.

La combinación externa izquierda devuelve todos los registros de la tabla de la parte izquierda de la condición de combinación, combinada con los registros de la tabla de la parte derecha de la condición, que coincide con la condición. El conjunto de resultados incluye dos subconjuntos de registros.

  • Registros que cumplan la condición de combinación que combina información de un registro en cada tabla.
  • Registros de la tabla Order que no cumplan la condición de combinación.

Como cada registro del resultado tiene los mismos campos, los registros con un order_id que no tengan un registro coincidente en la tabla Customer tendrán valores NULL en los campos que, de otra forma, contendrían valores de la tabla Customer. Por ejemplo, si el registro del pedido 11079 no tiene ningún registro de cliente relacionado en la tabla Customer, el registro aparecerá en el resultado con el valor NULL en los campos cust_id, company y country.

Puede cambiar el resultado de la consulta especificando filtros, un orden de clasificación, grupos u otras opciones en la consulta.

Vea también

Seleccionar registros de una combinación externa completa (Ejemplo) | Seleccionar registros de una combinación interna (Ejemplo) | Seleccionar registros de una combinación externa derecha (Ejemplo) | Seleccionar registros de una combinación anidada (Ejemplo) | Ejemplos de Soluciones


Seleccionar registros de una combinación anidada

Archivo: ...\Samples\Data\Nested.qpr

La consulta NESTED del proyecto Solutions combina información de las tablas de clientes, Customer; pedidos, Order; y elementos de pedido, Orditems, mediante dos condiciones de combinación interna. Una condición de combinación se realiza entre Customer y Order y la otra entre Order y Orditems. Cada registro del resultado tiene campos cust_id y company de la tabla Customers, order_id de la tabla Orders y line_no de la tabla Orditems como se especifica en la cláusula SELECT de la instrucción SQL SELECT.

SELECT Customer.cust_id, Customer.company, Orders.order_id, Orditems.line_no;
FROM testdata!customer INNER JOIN testdata!orders;
INNER JOIN testdata!orditems ;
ON Orders.order_id = Orditems.order_id ;
ON Customer.cust_id = Orders.cust_id

El orden en que se combinan las tablas determina el orden en que se evalúan las condiciones de combinación. En esta consulta, se evalúa primero la combinación entre las tablas Orders y Orditems, produciendo un subconjunto de registros que cumplen la condición de combinación. Este subconjunto de registros coincide con los registros de la tabla Customers y produce el conjunto de resultados final.

Puede cambiar el resultado de la consulta especificando filtros, un orden de clasificación, grupos u otras opciones en la consulta.

Vea también

Seleccionar registros de una combinación externa izquierda (Ejemplo) | Seleccionar registros de una combinación externa derecha (Ejemplo) | Seleccionar registros de una combinación externa completa (Ejemplo) | Seleccionar registros de una combinación interna (Ejemplo) | Seleccionar registros de una combinación externa derecha (Ejemplo) | Ejemplos de Soluciones


Seleccionar registros de una combinación externa derecha

Archivo: ...\Samples\Data\Routerj.qpr

La consulta ROUTERJ del proyecto Solutions utiliza la base de datos testdata y combina información de la tabla de pedidos, Orders, y la tabla de empleados, Employee, utilizando una combinación externa derecha. Cada registro del resultado tiene un campo order_id de la tabla Orders y un campo lastname de la tabla Employee.

SELECT Orders.order_id, Employee.last_name;
FROM testdata!employee RIGHT OUTER JOIN testdata!orders ;
ON Employee.emp_id = Orders.emp_id

Normalmente, una combinación externa derecha puede responder a dos preguntas acerca de los registros de su base de datos. Algunas de las preguntas que esta consulta puede responder son:

  • ¿Qué pedidos se introdujeron y por qué empleados?
  • ¿Qué pedidos no tienen un empleado especificado?

Esta información puede ayudarle a realizar un seguimiento de pedidos específicos e identificar pedidos que no tengan un empleado especificado cuando se realiza el pedido.

La combinación externa derecha recupera todos los registros de la tabla de la parte derecha de la condición de combinación, combinada con los registros de la parte izquierda de la combinación que coincidan con la condición. El conjunto de resultados incluye dos subconjuntos de registros.

  • Registros que cumplan la condición de combinación que combina información de un registro en cada tabla.
  • Registros de la tabla Order que no cumplan la condición de combinación.

Como cada registro del resultado tiene los mismos campos, los registros con un lastname que no coincidan en la tabla Orders, tendrán valores NULL en el campo que, de otra forma, contendrían valores de la tabla Orders. Por ejemplo, si un registro del pedido número 11078 no tiene ningún registro de empleado relacionado en la tabla Employee, el registro aparecerá en el resultado con el valor NULL en el campo lastname.

Puede cambiar el resultado de la consulta especificando filtros, un orden de clasificación, grupos u otras opciones en la consulta.

Vea también

Seleccionar registros de una combinación anidada (Ejemplo) | Seleccionar registros de una combinación externa izquierda (Ejemplo) | Seleccionar registros de una combinación externa completa (Ejemplo) | Seleccionar registros de una combinación interna (Ejemplo) | Seleccionar registros de una combinación externa derecha | Ejemplos de Soluciones


Seleccionar registros de una combinación interna

Archivo: ...\Samples\Data\Innerj.qpr

La consulta INNERJ del proyecto Solutions utiliza la base de datos TESTDATA y combina información de las tablas de pedidos, Order, y de clientes, Customer, mediante una condición de combinación interna. Cada registro del resultado tiene un campo CUST_ID, COMPANY y COUNTRY de la tabla Customer y ORDER_ID de la tabla Order, como se especifica en la cláusula SELECT de la instrucción SQL SELECT.

SELECT Customer.cust_id, Customer.company, Customer.country,;
Orders.order_id;
FROM testdata!orders INNER JOIN testdata!customer ;
ON Orders.cust_id = Customer.cust_id

Esta consulta obtiene y combina los registros entre las dos tablas que cumplan la condición de combinación. La condición especifica que los registros deben tener el mismo valor en el campo cust_id.

Una combinación interna normalmente responde a una pregunta básica. En esta consulta la pregunta es: ¿qué pedidos realizó cada cliente? Si un cliente tiene un registro en la base de datos pero no tiene un pedido, el registro no aparecerá en el resultado puesto que no forma parte del subconjunto que cumpla la condición de combinación.

Puede cambiar el resultado de la consulta especificando filtros, un orden de clasificación, grupos u otras opciones en la consulta.

Vea también

Seleccionar registros de una combinación anidada (Ejemplo) | Seleccionar registros de combinaciones internas y externas (Ejemplo) | Seleccionar registros de una combinación externa izquierda (Ejemplo) | Seleccionar registros de una combinación externa completa (Ejemplo) | Ejemplos de Soluciones


Seleccionar registros de combinaciones internas y externas

Archivo: ...\Samples\Data\Comboj.qpr

La consulta COMBOJ utiliza la base de datos testdata y combina información de las tablas de clientes, Customer; pedidos, Order; y elementos de pedido, Orditems. Cada registro del resultado tienen un campo company de la tabla Customer, un order_date de la tabla Order y un line_no de la tabla Orditems, como se especifica en la cláusula SELECT de la instrucción SQL SELECT.

SELECT Customer.company, Orders.order_id, Orditems.line_no;
FROM testdata!customer LEFT OUTER JOIN testdata!orders;
INNER JOIN testdata!orditems ;
ON Orders.order_id = Orditems.order_id ;
ON Customer.cust_id = Orders.cust_id

El orden en que se combinan las tablas determina el orden en que se evalúan las condiciones de combinación. En esta consulta, se evalúa primero la combinación entre las tablas Orders y Orditems, produciendo un subconjunto de registros que cumplen la condición de combinación. A causa de la combinación interna, el subconjunto de registros tiene sólo los registros de las dos tablas que cumplan la condición. Este subconjunto de registros se compara con los registros de la tabla Customers. A causa de la combinación externa entre Customer y Orders, algún cliente que no tenga pedidos también aparecerá en el resultado y tendrá el valor NULL.

Puede cambiar el resultado de la consulta especificando filtros, un orden de clasificación, grupos u otras opciones en la consulta.

Vea también

Seleccionar registros de una combinación anidada (Ejemplo) | Seleccionar registros de una combinación externa izquierda (Ejemplo) | Seleccionar registros de una combinación externa completa (Ejemplo) | Ejemplos de Soluciones


Ejemplo seleccionar 10 productos menos vendidos

Archivo: ...\Samples\Data\Worstten.qpr

Esta consulta muestra los 10 productos menos vendidos basándose en las ventas registradas en la tabla de elementos de pedidos, Orditems. La consulta utiliza la característica TOP n de la instrucción SELECT y, puesto que el orden predeterminado es de menor a mayor, al ordenar por la suma del precio y la cantidad se obtienen los 10 valores menores.

SELECT TOP 10 Products.prod_name,;
SUM(Orditems.unit_price*Orditems.quantity);
FROM testdata!products INNER JOIN testdata!orditems ;
ON Products.product_id = Orditems.product_id;
GROUP BY Products.prod_name;
ORDER BY 2

Vea también

Seleccionar los 10 productos más vendidos (Ejemplo) | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z) Foundation Classes de Visual FoxPro (A-Z)


Ejemplo seleccionar los 10 productos más vendidos

Archivo: ...\Samples\Data\Topten.qpr

Esta consulta muestra los 10 productos más vendidos basándose en las ventas registradas en la tabla de elementos de pedidos, Orditems. La consulta utiliza la característica TOP n de la instrucción SELECT. Como el orden está establecido como DESCENDING, ordenar por la suma del precio y de la cantidad da como resultado los 10 valores mayores.

SELECT TOP 10 Products.prod_name,;
SUM( Orditems.unit_price*  Orditems.quantity);
FROM testdata!products INNER JOIN testdata!orditems ;
ON Products.product_id = Orditems.product_id;
GROUP BY Products.prod_name;
ORDER BY 2 DESC

Vea también

Seleccionar los 10 productos menos vendidos (Ejemplo) | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de crear un formulario para introducir datos de tipo uno a varios

Archivo: ...\Samples\Solution\Forms\Many.scx

Este ejemplo muestra las tareas básicas asociadas a un formulario de entrada de datos de tipo uno a varios.

Cuando elige el botón Nuevo situado junto a los cuadros de texto de la tabla principal, se ejecuta el código siguiente:

SELECT CUSTOMER
APPEND BLANK
THISFORM.Refresh

Cuando elige el botón Nuevo situado junto a la cuadrícula que muestra los registros secundarios, se ejecuta más código.

Después de seleccionar la tabla de pedidos, el código calcula un nuevo valor de id. para el pedido, agrega el registro en blanco y, a continuación, almacena el id principal y el id del pedido para los campos apropiados.

CALCULATE MAX(order_id) ALL TO lMaxID
lMaxID = ALLTRIM(STR(VAL(lMaxID) + 1))
APPEND BLANK
REPLACE cust_id WITH Customer.Cust_id IN orders
REPLACE order_id with lMaxID in orders
Nota Este método para crear un nuevo valor de Id. no sería fiable si muchos usuarios agregaran nuevos pedidos al mismo tiempo. En cambio, puede crear un nuevo Id. como se muestra en el ejemplo Crear un valor de Id. único predeterminado para un campo (Ejemplo).

Vea también

Crear un formulario de entrada de datos en una única tabla (Ejemplo) | Ejemplos de Soluciones | Crear un valor de Id. único predeterminado para un campo (Ejemplo)


Ejemplo de crear un formulario de tipo consulta por ejemplo

Archivo: ...\Samples\Solution\Forms\Qbf.scx

Este ejemplo permite a los usuarios buscar y filtrar registros con la misma interfaz en la que ven los registros.

Cuando un usuario elige Escribir QBF, el código asociado al evento Click de cmdQBFMode inicia una transacción y añade un registro en blanco a la tabla para almacenar el texto de consulta del usuario.

* extract from cmdQBFMode.Click
BEGIN TRANSACTION
APPEND BLANK
THISFORM.Refresh

Cuando el usuario elige Consulta, el código asociado al evento Click de cmdExecuteQBF deshace la transacción, desechando el nuevo registro.

Puede utilizar transacciones sólo con tablas contenidas en una base de datos. Si quiere incluir capacidades QBF para una tabla que no esté en una base de datos, puede realizar un bucle a través de todos los controles del formulario, guardar el valor anterior de la propiedad ControlSource y establecer de nuevo el valor de esta propiedad de los controles a una cadena vacía. Después de obtener la cadena de consulta del usuario, puede realizar un bucle a través de los controles y restablecer las propiedades de la propiedad ControlSource.

El código asociado al evento Click de cmdExecuteQBF también realiza un bucle a través de los controles del formulario, comprueba los valores introducidos por el usuario y llama al método ParseCondition para agrupar la cadena del filtro.

Un usuario puede escribir un valor simple para la búsqueda o una expresión. Por ejemplo, un usuario puede escribir cualquiera de los valores siguientes en el cuadro de texto Título para establecer un filtro:

Sales Manager
!= "Sales Manager"

Si el usuario no escribe una expresión, no se requieren las comillas.

El método ParseCondition

LPARAMETERS cCondition, cControlSource
LOCAL lcRetCondition, lcFieldName
IF TYPE('cCondition') = 'C'
cCondition = ALLTRIM(cCondition)
ENDIF
lcFieldName = SUBSTRC(cControlSource,(RATC(".",cControlSource)+1))

IF !EMPTY(cCondition) THEN
IF TYPE('cCondition')$ "CM"
IF ("<"   $ cCondition OR ;
"=="   $ cCondition OR ;
"LIKE" $ cCondition OR ;
"<>"   $ cCondition OR ;
"!="   $ cCondition OR ;
"#"    $ cCondition OR ;
"="    $ cCondition OR ;
">"    $ cCondition)
lcRetCondition = lcFieldName + cCondition
ENDIF
ENDIF
IF EMPTY(lcRetCondition)
DO CASE
* put quotes around character expressions
CASE TYPE(cControlSource) $ "CM"
lcRetCondition = lcFieldName + " = " + CHR(34) + cCondition + CHR(34)
* put braces around date expressions
CASE TYPE(cControlSource) $ "DT"
lcRetCondition = lcFieldName + " = {" + DTOC(cCondition) + "}"
OTHERWISE
lcRetCondition = lcFieldName + " = " + STR(cCondition)
ENDCASE
ENDIF
ELSE
lcRetCondition = ""
ENDIF
RETURN lcRetCondition

Vea también

Crear un formulario para introducir datos de tipo uno a varios (Ejemplo) | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de crear un formulario de entrada de datos en una única tabla

Archivo: ...\Samples\Solution\Forms\Single.scx

Este ejemplo muestra la situación más sencilla de formulario, con un sólo usuario y una entrada de datos en una tabla única.

La propiedad ControlSource de cada cuadro de texto y de los cuadros combinados del formulario se establece a un campo en la tabla de clientes, Customer.

En el evento Click de cmdNew se incluye el comando APPEND BLANK.

APPEND BLANK
THISFORM.Refresh

En el evento Click de cmdDelete se incluye el comando DELETE.

* cmdDelete.Click
#DEFINE MSGBOX_YES      6
#DEFINE C_MSGBOX1      36
#DEFINE C_DELETE_LOC   "Are you sure you want to delete this record?"
IF MESSAGEBOX(C_DELETE_LOC,C_MSGBOX1) = MSGBOX_YES
DELETE
IF !EOF()
SKIP 1
ENDIF
IF EOF() AND !BOF()
SKIP -1
ENDIF
THISFORM.Refresh
ENDIF

Ampliar el formulario de introducción de datos

Para crear un formulario de introducción de datos más robusto, que permita al usuario cancelar cambios o a varios usuarios tener acceso a los mismos datos, debe utilizar las transacciones y el almacenamiento de filas o de tablas en búfer.

Vea también

Crear un formulario de tipo consulta por ejemplo (Ejemplo) | Crear un formulario para introducir datos de tipo uno a varios (Ejemplo) | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de crear un formulario SDI

Archivo: ...\Samples\Solution\Forms\Sdiform.scx

Este ejemplo muestra la compatibilidad de Visual FoxPro con formularios SDI. Para crear un formulario SDI, todo lo que tiene que hacer es establecer la propiedad ShowWindow del formulario a 2- Formulario de nivel superior. Los formularios SDI no necesitan que la ventana de Visual FoxPro esté visible.

Agregar formularios

Hay dos formas de agregar formularios a un formulario de nivel superior (SDI). La primera y más fácil es crear un formulario nuevo y establecer su propiedad ShowWindow a 1 - Formulario de nivel superior. Aunque este método puede parecer el más apropiado, no siempre es la mejor solución puesto que la propiedad ShowWindow solo se puede establecer en tiempo de diseño.

Otro método consiste en utilizar el comando ACTIVATE WINDOW. El código siguiente del ejemplo SDIForm muestra exactamente esto. Puesto que este comando no está basado en objetos, debe hacer referencia a un formulario mediante su nombre de ventana (propiedad Name).

ACTIVATE WINDOW (thisform.oWindows[m.nGetWin].NAME) ;
IN WINDOW (thisform.name)

Agregar menús

Los menús también se pueden agregar a formularios SDI. Ahora existe una nueva casilla de verificación Formulario de nivel superior en el menú Vista del Diseñador de menús del cuadro de diálogo Opciones generales. Se generará un menú Formulario de nivel superior si activa esta opción y puede llamarla como se muestra a continuación.

DO sdiform.mpr WITH THISFORM,.T.
Nota Si los elementos de menú del sistema esperan que la ventana principal de Visual FoxPro sea visible, no se producirán los resultados esperados cuando la ventana principal de Visual FoxPro esté oculta.

Agregar barras de herramientas

Además de menús y ventanas, también puede agregar barras de herramientas a sus formularios SDI. Las barras de herramientas son objetos como los formularios, por lo que puede aprovechar las ventajas del modelo de objetos de Visual FoxPro y extender el alcance de la barra de herramientas al formulario. El ejemplo del formulario SDI utiliza una propiedad personalizada para crear y mantener la barra de herramientas dentro del alcance.

SET CLASSLIB TO sditbar ADDITIVE
thisform.oToolbar=create("sditb1")
thisform.oToolbar.show

Vea también

Crear un formulario de entrada de datos en una única tabla (Ejemplo) | Crear un formulario de tipo consulta por ejemplo (Ejemplo) | Crear un formulario para introducir datos de tipo uno a varios (Ejemplo) | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de mostrar animación de líneas en un formulario

Archivo: ...\Samples\Solution\Forms\Graphics\Anim.scx

Este ejemplo ilustra el dibujo de líneas en un formulario. Más específicamente, se muestra guardando las coordenadas de conjuntos de líneas dibujadas en un formulario y dibujándolas de nuevo, junto con líneas adicionales dibujadas en posiciones intermedias, dando la sensación de movimiento.

Agregar líneas a la tabla

Cada vez que un usuario dibuja una línea en un formulario, sus coordenadas se almacenan en una tabla con la estructura siguiente:

Nombre | Tipo | Descripción
Frameno | I | Se incrementa cada vez que el usuario elige Nuevo marco.
Objno | I | Se incrementa cada vez que se agrega una línea al marco.
X1 | I | Coordenada X inicial de una línea.
X2 | I | Coordenada X final de una línea.
Y1 | I | Coordenada Y inicial de una línea.
Y2 | I | Coordenada Y final de una línea.

Reproducir los marcos

El código que reproduce los marcos vuelve a utilizar la tabla en otra área de trabajo, selecciona la segunda área de trabajo y continúa con el marco siguiente:

USE (lcTable) AGAIN IN 0 ALIAS shadow
SELECT shadow
LOCATE FOR frameno # &lcTable..frameno

La variable nBetween determina cuántas líneas intermedias se dibujan en el formulario entre una línea en un marco y la correspondiente en el marco siguiente.

FOR nb = 1 TO nBetween

Dentro del bucle FOR, el código busca todas las líneas asociadas a un marco y calcula las coordenadas para las líneas intermedias, por ejemplo:

nx1 = frames.x1 + nb * (shadow.x1 - frames.x1) / nBetween
ny1 = frames.y1 + nb * (shadow.y1 - frames.y1) / nBetween

Entonces el código imprime cada línea intermedia y después un WAIT de 0,05 segundos borra el formulario y el bucle continúa.

THISFORMSET.frmAnimation.line(nx1,ny1,nx2,ny2)

Vea también

Dibujar líneas y formas en un formulario (Ejemplo) | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de mostrar imágenes en un control Image

Archivo: ...\Samples\Solution\Forms\Image.scx

Este ejemplo ilustra cómo mostrar mapas de bits o iconos en un control Image.

El cuadro de lista del formulario muestra archivos. En el evento InteractiveChange del cuadro de lista, si el archivo es un .bmp o .ico, la propiedad Picture del control Image se establecerá al archivo seleccionado.

* lstFiles.InteractiveChange
cSelected = UPPER(THIS.List(THIS.ListIndex))
CD THIS.List(2)
IF ".BMP"$cSelected OR ".ICO"$cSelected
THISFORM.imgDisplay.Picture = THIS.List(2) + cSelected
ENDIF

Vea también

Mostrar imágenes en una lista (Ejemplo) | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de dibujar líneas y formas en un formulario

Archivo: ...\Samples\Solution\Forms\Graphics\Fdmain.scx

Este ejemplo ilustra cómo puede utilizar los métodos gráficos (PSet, Line y Circle) y las propiedades (DrawMode, DrawStyle, DrawWidth) de formularios para permitir al usuario dibujar figuras y formas en un formulario con diferentes colores y anchos de pincel.

Este ejemplo incluye una barra de herramientas (definida en fdproc.prg) y un formulario (basado en frmFD in fd.vcx). El usuario puede seleccionar valores en la barra de herramientas que afectan a las propiedades gráficas del formulario. Cuando el formulario se establece para permitir al usuario que dibuje, el MousePointer se establece a 2 (forma de cruz).

La funcionalidad del dibujo se codifica en los métodos asociados a los eventos MouseDown y MouseMove del formulario:

* MouseDown
PARAMETERS nButton, nShift, nXCoord, nYCoord
IF THIS.MousePointer = 2
THIS.PSet(nXCoord, nYCoord)
ENDIF
* MouseMove
PARAMETERS nButton, nShift, nXCoord, nYCoord
IF THIS.MousePointer = 2
THISFORM.LINE(nXCoord, nYCoord)
ENDIF

Vea también

Mostrar animación de líneas en un formulario (Ejemplo) | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Representar ecuaciones gráficamente en un formulario

Archivo: ...\Samples\Solution\Forms\Graphics\Graph.scx

Este ejemplo muestra cómo representar gráficamente ecuaciones en un formulario. El usuario puede escalar la ecuación seleccionando los botones de comando Zoom. El usuario también puede mover el origen del gráfico haciendo clic en él y arrastrándolo.

Los motores de gráficos de este ejemplo se encuentra en dos programas: cgraph.prg y pgraph.prg. CGRAPH representa gráficamente ecuaciones basándose en coordenadas cartesianas. PGRAPH representa gráficamente ecuaciones basándose en coordenadas polares. Estos programas utilizan los métodos PSet y Line de un formulario para dibujar la ecuación.

EL siguiente código, asociado al método OneGraph del conjunto de formularios, ejecuta el programa CGRAPH cuando un usuario elige el botón Gráfico.

THISFORMSET.frmGraph.Draw
DO cgraph WITH ;
graph.equation, ;
graph.step, ;
graph.ecolor, ;
graph.connect, ;
THISFORMSET.nFormX, ;
THISFORMSET.nFormY, ;
.F., ;
THISFORMSET.frmgraph, ;
THISFORMSET.nFormScale

La siguiente tabla enumera los parámetros para CGRAPH:

Parámetro | Tipo | Descripción
equation | C | La ecuación respecto a X. La solución se representará como Y.
step | N | Incremento.
ecolor | N | Color de la ecuación.
connect | L | Indica si el punto anterior y el siguiente se conectan con una línea.
nFormX | N | Punto en el formulario cuando x = 0.
nFormY | N | Punto en el formulario cuando y = 0.
lAddCoords |  | Indica si se dibujan las líneas de coordenadas.
frmgraph | C | Nombre del formulario donde escribir.
nFormScale | N | Indica la escala del gráfico.

Vea también

Objeto Graph | Actualizar un gráfico en un formulario (Ejemplo) | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de pasar parámetros entre formularios

Archivo: ...\Samples\Solution\Forms\Param.scx

Este ejemplo muestra cómo pasar parámetros a un formulario y devolver un valor.

Formulario PARAM

Este formulario hace que el usuario escriba una pregunta y las respuestas posibles. Después, en el evento Click del botón cmdAsk, el formulario ParamAsk se abre pasando la pregunta y las respuestas posibles.

cParam1 = THISFORM.txtPassValue1.value
nParam2 = THISFORM.opgPassValue2.value
DO FORM LOCFILE("ParamAsk.scx") WITH cParam1, nParam2 TO nRetValue

Formulario PARAMASK

PARAMETERS se pasa al evento Init del formulario en que se procesan los parámetros.

PARAMETERS cQuestion, nButtons
THISFORM.txtQuestion.caption = cQuestion

En el evento Unload del formulario, el valor almacenado en retValue se devuelve para llamar al formulario:

RETURN THISFORM.retValue

Vea también

Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de manipulación de objetos por programa

Archivo: ...\Samples\Solution\Forms\Objects.scx

Este ejemplo muestra cómo establecer propiedades en tiempo de ejecución de objetos en un conjunto de formularios. El conjunto de formularios de ejemplo contiene dos formularios. El código asociado al evento Click de los controles de los dos formularios cambia los valores de las propiedades de otros controles.

Cuando se establecen propiedades de controles en tiempo de ejecución, debe hacer referencia al control mediante su jerarquía en el contenedor. Por ejemplo, para establecer la propiedad Value de un control en un formulario mediante código de un método de otro formulario, haga referencia al contenedor de nivel más alto (el conjunto de formularios) y a todos los contenedores subsiguientes.

THISFORMSET.frmLeft.chkBold.Value = .F.

Vea también

Manipular texto por programa (Ejemplo) | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de proporcionar ayuda de tipo "¿Qué es esto?" en un formulario

Archivo: ...\Samples\Solution\Forms\Whatthis.scx

Cuando proporciona ayuda de tipo "¿Qué es esto?" en un formulario, se muestra un botón con un interrogante en la esquina superior derecha del formulario.

Cuando un usuario hace clic en este botón o presiona Mayús-F1, el formulario se activa en modo ¿Qué es esto? También puede activar este estado mediante programación llamando al método WhatsThisMode del formulario. Cuando el formulario está en modo ¿Qué es esto?, cambia el puntero del ratón. Un usuario puede hacer clic en un control y obtener ayuda interactiva sobre ese control en una ventana emergente.

Nota Si el WhatsThisHelpID de un control o un formulario está establecido a -1 (el valor predeterminado), el texto de la ventana emergente indica que no hay tema de ayuda disponible para el control.

Para proporcionar ayuda de tipo "¿Qué es esto?"

  1. Cree un archivo de Ayuda con un tema por cada control del formulario.
  2. En la sección Map del proyecto de Ayuda, asocie los valores HelpContextID a los temas.
  3. Establezca la propiedad WhatsThisHelp del formulario a verdadero (.T.).
  4. Establezca la propiedad WhatsThisButton del formulario a verdadero (.T.).
  5. Establezca el WhatsThisHelpID de los controles al valor helpcontextID apropiado.
  6. En el evento Load o Init del formulario, utilice el comando SET HELP TO para especificar el archivo de ayuda para el formulario.

Además de Whatthis.scx, este ejemplo incluye los archivos siguientes:

Archivo | Descripción
Whatthis.hlp | Archivo de ayuda del formulario.
Whatthis.hpj | Archivo de proyecto de la ayuda.
Whatthis.rtf | Documento origen para el archivo de ayuda.

Vea también

Botón Ayuda | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Devolver un valor desde un formulario (Ejemplo)

Archivo: ...\Samples\Solution\Forms\Logform.scx

Este ejemplo ilustra cómo devolver un valor desde un formulario de acceso. El formulario de acceso (Logform.scx) utiliza el comando DO FORM para ejecutar un formulario de identificación y almacenar el valor retornado en una variable (cUser).

DO FORM Login TO cUser
Nota Para devolver un valor desde un formulario, la propiedad WindowType del formulario debe estar establecida a 1 - Modal.

El formulario de inicio e identificación (Login.scx) permite escribir el nombre de usuario y la clave de acceso. El código asociado al evento Click de cmdOK verifica que una clave de acceso fue ingresada.

LOCATE FOR UPPER(login.userid) = UPPER(ALLTRIM(THISFORM.txtUserName.Value))
IF FOUND() AND ALLTRIM(password) == ALLTRIM(THISFORM.txtPassword.Value)
THISFORM.cUser = ALLTRIM(login.userid)
THISFORM.Release
ELSE
#DEFINE MISMATCH_LOC "El nombre de usuario o clave de acceso es incorrecta. Por favor intente nuevamente."
WAIT WINDOW MISMATCH_LOC TIMEOUT 1.5
THISFORM.txtUserName.Value = ""
THISFORM.txtPassword.Value = ""
THISFORM.txtUserName.SetFocus
ENDIF

El código asociado con el evento Unload del formulario de identificación devuelve el nombre de usuario, si el usuario escribió la clave de acceso correcta, o una cadena vacía.

RETURN THIS.cUser

Vea también

Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de ejecutar múltiples instancias de un formulario

Archivo: ...\Samples\Solution\Forms\Launch.scx

Este ejemplo muestra cómo puede ejecutar múltiples instancias de un formulario. aForms es una propiedad de tipo matriz del formulario que inicia las múltiples instancias. El siguiente código está asociado al evento Click del botón de comando que inicia múltiples formularios:

Obtiene el número del último elemento de la matriz:

nInstance = ALEN(THISFORM.aForms)

Determina las propiedades Top y Left para poner en cascada los nuevos formularios. Estos valores se pasan como parámetros cuando se inician las instancias de los formularios.

IF nInstance > 1 AND ;
TYPE('THISFORM.aForms[nInstance -1]') = 'O'
nFormTop = THISFORM.aForms[nInstance -1].Top + 1
nFormLeft = THISFORM.aForms[nInstance -1].Left + 1
ELSE
nFormTop = 1
nFormLeft = 1
ENDIF

Establece el título para reflejar el número de instancia:

cFormCaption = "Instance" + ALLTRIM(STR(nInstance))

Ejecuta el formulario y asigna la variable objeto al elemento de la matriz. La palabra clave Linked indica que todas las instancias se liberarán cuando se libere la matriz. Sin LINKED, las múltiples instancias de formularios persistirían después de haber liberado la matriz.

DO FORM Multi NAME THISFORM.aForms[nInstance] WITH ;
nFormTop, nFormLeft, cFormCaption LINKED

Vuelve a dimensionar la matriz de forma que puedan iniciarse más instancias del formulario.

DIMENSION THISFORM.aForms[nInstance + 1]

Ver también

Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Formularios transparentes (Ejemplo)

Archivo: ...\Samples\Solution\Sedona\Fadeaway.scx

Microsoft Windows 2000 es compatible con ventanas en capas. Las ventanas en capas pueden aumentar el rendimiento y los efectos visuales de forma considerable en ventanas con formas complejas, con formas animadas o con efectos de combinación de caracteres de letra. El sistema compone y vuelve a pintar las ventanas en capas y las ventanas de las aplicaciones subyacentes, de forma automática. Como resultado, las ventanas en capas se muestran correctamente, sin el parpadeo habitual de regiones de ventanas complejas. Además, las ventanas en capas pueden ser parcialmente traslúcidas, es decir, con efecto de combinación de caracteres de letra. Este ejemplo le mostrará como utilizar ventanas en capas en Visual FoxPro para agregar efectos especiales de opacidad y transparencia.

Para obtener más detalles acerca de las clases disponibles en las Foundation Classes, vea Foundation Classes de Visual FoxPro (A-Z).

Vea también

Foundation Classes de Visual FoxPro (A-Z) | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro


Utilizar un cuadro de diálogo Openfile mejorado (Ejemplo)

Archivo: ...\Samples\Solution\FFC\Getfilex.scx

Los comandos estándar GETFILE() y PUTFILE() de Visual FoxPro proporcionan cuadros de diálogo de selección de archivos con un aspecto y diseño distinto de los cuadros de diálogo más actualizados. Este ejemplo muestra como utilizar la nueva Foundation Class Cuadro de diálogo Archivo común. Gracias a esta clase, ahora puede incluir características extendidas de la interfaz de usuario en los cuadros de diálogo, como la nueva barra de sitios de la parte izquierda del cuadro de diálogo, que permite el acceso rápido a otras ubicaciones de búsqueda tales como Historial, Escritorio y Mis documentos.

Este ejemplo contiene las clases siguientes.

Clase | Biblioteca | Descripción
_comdlg | _ system.vcx | Contiene un conjunto de propiedades y métodos que le permiten utilizar los cuadros de diálogo Abrir y Guardar nativos de Windows.

Para obtener más detalles acerca de las clases disponibles en las Foundation Classes, vea Foundation Classes de Visual FoxPro (A-Z).

Vea también

Foundation Classes de Visual FoxPro (A-Z) | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro


Ejemplos de Foundation Classes

Foundation Classes de Visual FoxPro se ha incluido en la Galería de componentes como sistema de desarrollo rápido de aplicaciones con el mínimo código posible. Las clases funcionan de forma inmediata y satisfacen las siguientes necesidades:

  • Proporcionar herramientas y estructuras comunes para el desarrollo orientado a las bases de datos
  • Proporcionar componentes genéricos rápidos y ampliables
  • Proporcionar componentes que amplíen y faciliten el desarrollo de páginas Web
  • Proporcionar empaquetados efectivos para las funciones de la API del sistema
  • Proporcionar un rico conjunto de funciones a toda la gama de usuarios de Visual FoxPro

En esta sección

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro
Proporciona una introducción de las situaciones y soluciones en las cuales usar foundation classes.
Agregar calendario enlazado a datos (Ejemplo)
muestra el uso de un control ActiveX de un calendario de datos enlazado calendar para mejorar el ingreso de datos en campos de fecha en formularios.
Agregar cuadros combinados de búsqueda de datos (Ejemplo)
Realiza una búsqueda de valores en un campo para llenar un cuadro combinado.
Agregar consultas de datos a formularios (Ejemplo)
muestra opciones que le permiten desplazarse dentro de una tabla y localizar datos.
Agregar ordenación y filtrado de datos a formularios (Ejemplo)
muestra el uso de opciones avanzadas de consulta en un formulario como también opciones para ordenar datos en forma ascendente o descendente.
Agregar varios botones de formulario (Ejemplo)
Muestra el uso de botones de comando en aplicaciones para realizar tareas como iniciar y detener una aplicación, mostrar un formulario o vista previa de un informe.
Agregar desplazamiento a formularios (Ejemplo)
muestra varias opciones para proporcionar desplazamiento de datos en formularios.
Agregar menús contextuales a objetos (Ejemplo)
muestra el uso de menús contextuales en un formulario, incluyendo el uso de separadores, texto en negrita, comandos marcados y menús en cascada.
Agregar enlaces Web a formularios (Ejemplo)
muestra como agregar la funcionalidad de enlaces y lanzar un explorador Web desde varios controles.
Control de errores de la aplicación (Ejemplo)
muestra el control de errores de la aplicación y el registro de detalles del estado de la aplicación.
Crear un explorador Web de Visual FoxPro (Ejemplo)
muestra como ofrecer un control explorador web en un formulario para mostrar datos en HTML.
Crear gráficos enlazados a registros (Ejemplo)
Muestra el uso de datos en campos para generar gráficos registro por registro.
Crear efectos en un control Coolbar (Ejemplo)
muestra varios efectos que puede lograr en controles toolbar cuando el ratón se mueve sobre ellos.
Mostrar opciones de presentación de resultados (Ejemplo)
muestra un simple editor de texto y proporciona una variedad de opciones para salidas de informe.
Ampliar el método SetAll (Ejemplo)
Utiliza la clase SetAllx de Foundation Class para permitir la configuración por medio de programación de propiedades de objetos basadas en criterios ampliados no disponibles con el método SetAll( ) nativo.
Probar métodos Access y Assign (Ejemplo)
muestra formas para utilizar los métodos Access y Assign en un formulario.
Probar arrastrar y soltar de OLE (Ejemplo)
Muestra formas para usar arrastrar y soltar de OLE, agregando código a los eventos OLEDragDrop y OLEDragOver.
Generar HTML (Ejemplo)
Muestra como puede usar clases HTML para crear páginas Web con sus datos, formularios e informes.
Controlar tareas de entorno de aplicación (Ejemplo)
muestra utilidades para guardar y restaurar configuraciones de estado crítico y controlar operaciones comunes de la aplicación.
Controlar tareas frecuentes de ventanas (Ejemplo)
muestra varias formas de organizar formularios en el escritorio.
Controlar conflictos de datos (Ejemplo)
muestra como resolver conflictos de datos, permitiendo al usuario actualizar datos en el formulario.
Formatos de datos de Arrastrar y soltar de OLE (Ejemplo)
Proporciona formatos de datos para arrastrar y soltar de OLE y muestra como usarlo para informar datos acerca del elemento arrastrado.
Pool Manager (Ejemplo)
muestra como usar la clase Pool Manager, la cual administra un conjunto o colección de objetos desde una clase y resulta útil cuando necesite usar objetos repetidamente por un corto período de tiempo.
Obtener la ubicación y el nombre del proyecto (Ejemplo)
Proporciona al usuario un lugar para ingresar una ubicación de archivo y directorio, fundamentalmente para crear nuevos proyectos.
Ejecutar Automatización de Word, Excel y Graph (Ejemplo)
muestra como agregar rutinas de automatización a una aplicación para crear tablas dinámicas en Microsoft Excel, combinar archivos de correspondencia en Microsoft Word, y crear gráficos con Graph a partir de datos Visual FoxPro.
Buscar texto utilizando Expresiones regulares (Ejemplo)
muestra el uso de expresiones regulares para búsqueda en aplicaciones.
Sugerencias para el programa Logo Windows 2000 (Ejemplo)
Muestra varias Foundation Classes que proporcionan información que podría usar para crear aplicaciones que cumplan con el Logo Windows 2000.
Realizar el seguimiento de las actividades de un proyecto (Ejemplo)
muestra como puede utilizarse el enlace a un proyecto para rastrear actividades del proyecto, incluyendo agregar, borrar y modificar archivos.
Arrastrar y soltar en controles Treeview y Listbox (Ejemplo)
Proporciona ejemplos de configuraciones para las propiedades OLEDragMode y OLEDropMode de los controles Treeview y Listbox.
Utilizar los métodos Access y Assign para obtener polimorfismo (Ejemplo)
muestra el polimorfismo de objetos.
Usar control de matrices (Ejemplo)
muestra métodos útiles para ampliar la funcionalidad del control de matrices. Este ejemplo utiliza ACOLSCAN( ) para buscar una columna específica en un matriz.
Utilizar un cuadro de diálogo Openfile mejorado (Ejemplo)
Muestra el uso de Common File Dialog de Foundation Class.
Usar cuadros de diálogo comunes de aplicación (Ejemplo)
Muestra como puede usar cuadros de diálogo en aplicaciones para operaciones comunes tales como inicio de sesión, pantallas de inicio, cuadros acerca de, etcétera.
Usar botones de edición para un formulario complejo (Ejemplo)
muestra el uso de botones de edición para formularios que involucran relaciones uno a muchos.
Usar botones de edición para un formulario sencillo (Ejemplo)
muestra el uso de un botón para editar datos en un formulario sencillo con una única tabla.
Utilizar cuadros de lista de selección para seleccionar datos (Ejemplo)
muestra como usar cuadros de lista para cargar tablas y campos desde un origen de datos y ordenar esos datos.
Usar termómetro de progreso (Ejemplo)
muestra el uso de una pantalla estándar para mostrar el progreso en aplicaciones.

Secciones relacionadas

Foundation Classes de Visual FoxPro (A-Z)
Lista las foundation classes en orden alfabético. Algunas de estas foundation classes se utilizan el los ejemplos Soluciones ubicados en la carpeta ...\Samples\Solution.


Recomendaciones para la utilización de las Foundation Classes de Visual FoxPro

Las bibliotecas de clases visuales .vcx de Visual FoxPro que se encuentran en la carpeta \Ffc\ contienen una variedad de clases que amplían sus aplicaciones Visual FoxPro con poca o casi ninguna programación. Puede distribuir libremente estas clases con sus aplicaciones. Estas clases se encuentran en la Galería de componentes. La Galería de componentes proporciona una forma rápida y cómoda de aprender las propiedades, eventos y métodos de cada una de las Foundation Classes.

También se puede abrir una de estas Foundation Classes en el Diseñador de clases o en el Examinador de clases para ver su estructura y su código. Ésta es una buena forma de conocer el funcionamiento de estas clases, así como de iniciarse en la programación de Visual FoxPro.

Las siguientes recomendaciones proporcionan información acerca de cómo puede agregar las Foundation Classes de Visual FoxPro a sus aplicaciones.

Tipos de clases

Para agregar una Foundation Class a una aplicación, tiene que conocer su clase de base de Visual FoxPro. Algunas Foundation Classes sólo se pueden utilizar como objetos visuales en los formularios, mientras que otras no son visuales y pueden ejecutarse por programa sin tener que incluirlas en un formulario. La documentación de las Foundation Classes de Visual FoxPro indica la clase de base de cada Foundation Class para que pueda determinar si la Foundation Class puede agregarse a un formulario o tiene que ejecutarse desde el código de la aplicación. Observe que, en la Galería de componentes, puede hacer clic con el botón secundario en una Foundation Class para presentar un menú contextual. Elija Propiedades en dicho menú y, a continuación, elija la ficha Clase para mostrar la clase de base.

La siguiente tabla enumera las clases de base de Visual FoxPro y cómo se pueden agregar a sus aplicaciones.

Categoría A: clases de base que pueden colocarse en un formulario. | Categoría B: clases de base que pueden colocarse en un formulario o ejecutarse desde el código de su aplicación. | Categoría C: clases de base que sólo pueden ejecutarse desde el código de su aplicación.
CheckBox | Custom | Form
ComboBox | Container | Formset
CommandButton | Timer | Toolbar
CommandGroup | ProjectHook |
EditBox |  |
Grid |  |
Hyperlink |  |
Image |  |
Label |  |
Line |  |
ListBox |  |
OLE Control |  |
OptionButton |  |
OptionGroup |  |
Shape |  |
Spinner |  |
TextBox |  |

Agregar Foundation Classes a los formularios

En la mayoría de las ocasiones, agregará Foundation Classes a formularios. Puede arrastrar y soltar Foundation Classes en los formularios desde la Galería de componentes, el Examinador de clases, el Administrador de proyectos y la barra de herramientas Controles de formularios.

Nota Puede seleccionar una foundation class agregada a un formulario y, eligiendo el Examinador de Clases en el menú Herramientas, puede obtener más información sobre es Foundation class.

Galería de componentes: la Galería de componentes proporciona la forma más sencilla de agregar Foundation Classes a un formulario. En las Foundation Classes de las clases de base de las categorías A y B, puede arrastrar la Foundation Class desde la Galería de componentes y, después, colocarla en un formulario. También puede hacer clic con el botón secundario del ratón en una Foundation Class dentro de la Galería de componentes para presentar un menú contextual y, después, elegir Agregar al formulario para agregar la Foundation Class al formulario.

Algunas de las Foundation Classes tienen asociados generadores que se inician automáticamente para pedirle la información que necesita la Foundation Class.

Class Browser Puede arrastrar las Foundation classes con clases de base de Categoría A y B directamente desde el Examinador de clases a un formulario, usando el ícono ubicado en la esquina superior izquierda del Examinador de clases. Seleccione la Foundation class en el Examinador de clases, haga clic sobre el ícono de la Foundation class en la esquina superior izquierda del Examinador de clases, y entonces arrastre el ícono sobre el formulario. Suelte el botón del ratón sobre el lugar del formulario donde quiere que aparezca la Foundation class.

Las Foundation Classes arrastradas desde el Examinador de clases al formulario no inician sus generadores asociados. Sin embargo, puede iniciar el generador después de colocar las Foundation Classes en los formularios. Seleccione la Foundation Class en el formulario y, después, haga clic con el botón secundario del ratón para presentar el menú contextual. Elija Generador en dicho menú para iniciar el generador asociado.

Administrador de proyectos: las Foundation Classes de las clases de base de las categorías A y B se pueden arrastrar desde el Administrador de proyectos para colocarlas en un formulario.

Las Foundation Classes arrastradas desde el Administrador de proyectos a un formulario no inician sus generadores asociados. Sin embargo, puede iniciar el generador después de colocar las Foundation Classes en los formularios. Seleccione la Foundation Class en el formulario y, después, haga clic con el botón secundario para presentar el menú contextual. Elija Generador en dicho menú para iniciar el generador asociado.

Barra de herramientas Controles de formularios: las Foundation Classes de las clases de base de las categorías A y B agregadas a la barra de herramientas Controles de formularios pueden agregarse a un formulario.

Si el bloqueo del generador no esta activado, la Foundation class soltada sobre el formulario desde la barra de herramientas de control del formulario puede iniciar un generador asociado. Si el bloqueo del generador esta activado, puede iniciar el generador después que la Foundation class haya sido agregada al formulario. Seleccione la Foundation class sobre el formulario, y entonces haga clic en el botón secundario del ratón para ver el menú contextual. Seleccione Generador en el menú contextual para iniciarlo.

Agregar Foundation Classes a los proyectos

Cuando un formulario que contiene Foundation Classes se incluye en un proyecto de Visual FoxPro, el Administrador de proyectos agrega automáticamente al proyecto las bibliotecas de clases visuales que contienen las Foundation Classes. Sin embargo, puede haber otras ocasiones en las que tenga que agregar Foundation Classes a un proyecto. Por ejemplo, la aplicación puede ejecutar una Foundation Class de la categoría C, de modo que tenga que agregarse al proyecto de la aplicación.

Se puede agregar las Foundation Classes a un proyecto desde la Galería de componentes, si se arrastra la biblioteca de clases visuales .vcx que contiene las Foundation Classes desde el Explorador de Windows, o si se elige el botón Agregar en el Administrador de proyectos.

Agregar Foundation Classes desde la Galería de componentes

Puede arrastrar una Foundation Class desde la Galería de componentes a un proyecto o puede hacer clic con el botón secundario en la Foundation Class dentro de la Galería de componentes para presentar un menú contextual y, después, elegir Agregar al proyecto para agregar la Foundation Class al proyecto. Cuando se agrega una Foundation Class a un proyecto, se presenta el cuadro de diálogo Agregar clase al proyecto, que presenta las siguientes opciones:

Agregar clase al proyecto
Elija esta opción para agregar la Foundation Class y su biblioteca de clases .vcx al proyecto. De nuevo, esto se hace automáticamente para las clases que arrastra a un formulario (categorías A y B). Para algunas clases de las categorías B y C que piense utilizar desde el código de su aplicación, podrá utilizar esta opción.
Crear una nueva clase a partir de la clase seleccionada
Elija esta opción para crear una nueva subclase a partir de la Foundation Class que va a agregar al proyecto. Esta opción le permite ampliar la funcionalidad de la Foundation Class original, normalmente al agregar código de programa adicional.
Crear un nuevo formulario a partir de la clase seleccionada
Elija esta opción para las Foundation Classes que tengan una clase de base Form (por ejemplo, las Foundation Classes de _dialogs.vcx). Esta opción le permite crear un nuevo formulario a partir de la Foundation Class y ampliar la funcionalidad de la Foundation Class original.

Agregar Foundation Classes desde el Explorador de Windows

Se puede agregar una Foundation Class a un proyecto si se arrastra la biblioteca de clases visuales .vcx que la contiene desde el Explorador de Windows hasta el Administrador de proyectos. La biblioteca de clases visuales se agrega al elemento Bibliotecas de clases del Administrador de proyectos.

Agregar Foundation Classes desde el Administrador de proyectos

Se puede agregar una Foundation Class a un proyecto si se selecciona la ficha Clases y se elige el botón Agregar. En la carpeta \Ffc\, seleccione la biblioteca de clases que contenga la Foundation Class que quiera agregar al proyecto.

Incorporación de clases a su aplicación

En muchos casos, la mayoría de las Foundation classes no requieren programación adicional para trabajar en su aplicación. Sin embargo, puede agregar código de programación adicional para ciertas Foundation classesyou may need to provide additional program code for certain foundation classes (las de clase base no-visuales de Categoría B y Categoría C).

Foundation Classes no visuales

Por ejemplo, las Foundation Classes suelen estar basadas en la clase Custom de la categoría B y requieren programación adicional. Estas clases no visuales suelen realizar tareas comunes como la comprobación de la información del registro de Windows, el control de los valores de entorno, la administración de los errores de la aplicación y el uso de la Automatización con otras aplicaciones, como la combinación de correspondencia con Microsoft Word.

Puede colocar estas clases no visuales en un formulario, pero tendrá que aportar un esfuerzo adicional para que funcionen en su aplicación. En algunos casos se inicia un generador al arrastrar una Foundation Class a un formulario.

El siguiente ejemplo muestra parte del código que suele ser necesario para poder utilizar una Foundation Class no visual en su aplicación:

  1. Arrastre la Foundation Class File Version desde la Galería de componentes (carpeta Foundation Classes\Utilities) a un formulario.
  2. Agregue un botón de comando al formulario y agregue el siguiente código a su evento Click:
    WITH THISFORM._FILEVERSION1
.cFileName = HOME( )+ 'VFP8.EXE'
.GetVersion( )
.DisplayVersion( )
ENDWITH
  3. Ejecute el formulario y haga clic en el botón de comando.

Puede incorporar una clase no visual a su aplicación sin arrastrarla al formulario, mientras la incluya en el proyecto utilizado para crear la aplicación. El siguiente código ilustra cómo se ejecuta la misma Foundation Class File Version si la clase no se ha arrastrado a un formulario.

LOCAL oFileVersion
oFileVersion = NewObject('_fileversion', '_utilities.vcx')
WITH oFileVersion
.cFileName = HOME( )+ 'VFP8.EXE'
.GetVersion( )
.DisplayVersion( )
ENDWITH
Nota Este ejemplo asume que el código puede encontrar la biblioteca de clases _utilities.vcx o puede ejecutarse desde un archivo .app que contenga _utilities.vcx.

Cuando se utiliza una Foundation Class no visual, tiene que conocer cómo y cuándo se utiliza la clase dentro de su aplicación, para que pueda tener el alcance correcto. Si la clase sólo se utiliza en un formulario, puede arrastrar la clase en el formulario. Sin embargo, si la clase va a ser utilizada por varios formularios o va a ser utilizada globalmente por la aplicación, la Foundation Class debe tener alcance global para que esté siempre accesible en la aplicación. El alcance global también puede mejorar el rendimiento.

Foundation Classes visuales

También puede agregar Foundation Classes visuales a su aplicación por programa, como con las clases de base Form. El siguiente ejemplo muestra cómo puede agregar código a su aplicación para presentar un cuadro de diálogo Acerca de.

LOCAL oAbout
oAbout = NewObject('_aboutbox','_dialogs.vcx')
oAbout.Show( )

Puede crear una subclase del cuadro de diálogo de la Foundation Class para cada una de sus aplicaciones, de forma que pueda personalizar el contenido del cuadro de diálogo en cada una de ellas. El siguiente ejemplo ilustra cómo puede crear una subclase de la Foundation Class Aboutbox:

  1. Arrastre y coloque la clase Aboutbox desde la Galería de componentes (carpeta Foundation Classes\Dialogs) al proyecto de su aplicación.
  2. Seleccione Crear nuevo formulario a partir de la clase seleccionada en el cuadro de diálogo Agregar clase al proyecto que aparecerá y escriba el nombre del formulario.
  3. Modifique la propiedad Caption del nuevo formulario de su aplicación. Guarde y cierre el formulario.
  4. Agregue código (DO FORM FormName) al procedimiento que ejecute el formulario, por ejemplo un procedimiento de un elemento de menú Acerca de.

    –O bien–

Arrastre la clase de botón Ejecutar formulario desde la Galería de componentes (carpeta Foundation Classes\Buttons) al formulario. Se inicia un generador y podrá especificar el nombre del formulario que se va a ejecutar.

Si utiliza el marco de aplicaciones de Visual Foxpro 8.0, el Generador de aplicaciones automáticamente manipulará el agregado a formularios (de .scx y clases de formularios .vcx). El nuevo Asistente para aplicaciones o el elemento Galería de componentes instala el marco para la nueva aplicación y le permite especificar como y donde el formulario será iniciado.

Al utilizar un marco de trabajo generado con el Asistente para aplicaciones, el Generador de aplicaciones y la Galería de componentes, dispone de un rico conjunto de herramientas para crear aplicaciones completas con una programación mínima.

Convenciones de nomenclatura de clases

Las Foundation Classes de Visual FoxPro, sus propiedades y sus métodos utilizan las siguientes convenciones de nomenclatura.

Clases y bibliotecas de clases

La mayor parte de las Foundation Classes son subclases de las clases de la biblioteca de clases visuales _base.vcx, que también puede encontrar en la carpeta \Ffc\. Las convenciones de nomenclatura para estas clases reflejan la clase de base utilizada. Por ejemplo, una subclase de la clase Custom se denomina _Custom en _base.vcx. Todas las clases utilizan un subrayado ( _ ) como prefijo del nombre de la clase en _base.vcx.

Pocas bibliotecas de clases no contienen clases que sean subclases de _base.vcx, porque dichas clases las comparten otros componentes de Visual FoxPro, como asistentes y generadores. Estas clases están contenidas en bibliotecas de clases sin el prefijo del subrayado, como Registry.vcx.

Métodos y propiedades

Los nombres de los métodos suelen estar basados en la acción, como RunForm. Si el nombre contiene varias palabras, por ejemplo, RunForm, se utilizan letras mayúsculas para distinguirlas. Las propiedades suelen incluir un prefijo de una letra que indica el tipo de datos de cada propiedad. Por ejemplo, cFileName indica que el tipo de datos de la propiedad es un carácter. Además, los valores predeterminados de las propiedades también se establecen con el tipo de datos adecuado. Por ejemplo, una propiedad lógica puede inicializarse con falso (.F.), mientras que una propiedad numérica puede inicializarse con 0.

Las propiedades de las clases de versiones anteriores de Visual FoxPro no cumplen estrictamente estas convenciones de nomenclatura en sus propiedades y conservan sus nombres para evitar conflictos de compatibilidad con el código que haga referencia a dichas propiedades.

Ampliar y modificar las Foundation Classes de FoxPro

Puede ampliar o modificar las Foundation Classes de Visual FoxPro para satisfacer las necesidades de su aplicación. Sin embargo, se recomienda que no modifique las propias Foundation Classes. Las Foundation Classes pueden actualizarse periódicamente para incluir nuevas funciones.

Crear subclases de una Foundation Class

Se proporciona el código fuente de las Foundation Classes, de forma que se puede hacer una subclase de cualquier Foundation Class para omitir o ampliar sus propiedades y sus métodos. Esta opción es muy común cuando el comportamiento de una Foundation Class específica varía entre diferentes aplicaciones. Una aplicación puede utilizar una Foundation Class directamente mientras otra aplicación utiliza una subclase de la misma.

Actualizar _base.vcx

Si quiere agregar modificaciones globales a las Foundation Classes de Visual FoxPro, puede modificar _base.vcx. Como las Foundation Classes son subclases de _base.vcx, las modificaciones en esta biblioteca de clases se propagan automáticamente a las Foundation Classes. En todas las clases de _base.vcx se proporciona un conjunto común de métodos y propiedades. Sin embargo, puede modificar las clases de _base.vcx si así agrega el comportamiento deseado a sus aplicaciones (al contrario que las Foundation Classes, que no se recomienda que se modifiquen).

Sin embargo, en lugar de modificar _base.vcx, debería volver a definir las clases de _base.vcx para que hereden su comportamiento desde sus clases de base personalizadas (en vez de desde las clases de base de Visual FoxPro actualmente en uso). Si ya tiene una biblioteca de clases personalizadas con subclases de las clases de base de Visual FoxPro, puede volver a definir las clases de _base.vcx para que hereden el comportamiento de sus clases personalizadas, de forma que cuando los componentes utilicen las clases de base también puedan heredar el comportamiento de sus clases personalizadas. Puede utilizar el Examinador de clases para volver a definir la clase primaria de una clase.

Nota Si vuelve a definir las clases para que hereden de sus propias clases de base personalizadas, debería agregar las llamadas DODEFAULT( ) en las ubicaciones adecuadas si desea que pueda ejecutarse el código de método de clase primaria.

Si reemplaza todas las clases de _base.vcx con sus propias clases, asegúrese de que contengan el mismo conjunto de nombres y clases; de lo contrario, las Foundation Classes contendrán vínculos abiertos.

Vea también

Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro | Versión de archivo (Foundation Class) | Cuadro de diálogo Acerca de (Foundation Class) | Botón Ejecutar formulario (Foundation Class)


Agregar calendario enlazado a datos (Ejemplo)

Archivo: ...\Samples\Solution\Ffc\Datacal.scx

Este ejemplo contiene las clases siguientes.

Clase | Biblioteca | Descripción
_olecalendar | _datetime.vcx | Muestra un calendario que resalta una fecha, enlazada a un campo de una tabla.
_nav2buttons | _table.vcx | Muestra un par de botones de desplazamiento.

Para detalles sobre todas las clases disponibles en foundation classes, vea Foundation Classes de Visual FoxPro (A-Z).

Vea también

Ejemplos Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro


Agregar cuadros combinados de búsqueda de datos (Ejemplo)

Archivo: ...\Samples\Solution\Ffc\DataLook2.scx

Este ejemplo contiene las clases siguientes.

Clase | Biblioteca | Descripción
_cbodistinctvalues | _dataquery.vcx | Realiza una consulta de valores únicos en el campo ControlSource para rellenar un cuadro combinado.
_cbolookup | _dataquery.vcx | Realiza una búsqueda de valores en un campo para rellenar un cuadro combinado.
_nav2buttons | _table.vcx | Presenta un par de botones que proporcionan las funciones GoNext( ) y GoPrevious( ).

Para obtener más detalles acerca de las clases disponibles en las Foundation Classes, vea Foundation Classes de Visual FoxPro (A-Z).

Vea también

Ejemplos Foundation Classes de Visual FoxPro | Cuadro combinado Búsqueda | Foundation Classes de Visual FoxPro (A-Z) | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro


Agregar consultas de datos a formularios (Ejemplo)

Archivo: ...\Samples\Solution\Ffc\DataQry.scx

Este ejemplo contiene las clases siguientes.

Clase | Biblioteca | Descripción
_findnextbuttons | _table.scx | Proporciona un botón Buscar/Buscar siguiente para recorrer una tabla.
_locatebutton | _table2.vcx | Proporciona un botón Encontrar que muestra un cuadro de diálogo para recorrer una tabla.
_findbutton | _table.vcx | Proporciona un botón Buscar genérico.

Para detalles sobre todas las clases disponibles en foundation classes, vea Foundation Classes de Visual FoxPro (A-Z).

Vea también

Ejemplos Foundation Classes de Visual FoxPro | Botón Buscar | Botón Encontrar | Agregar ordenación y filtrado de datos a formularios (Ejemplo) | Foundation Classes de Visual FoxPro (A-Z) | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro


Agregar ordenación y filtrado de datos a formularios (Ejemplo)

Archivo: ...\Samples\Solution\Ffc\DataSort.scx

Este ejemplo contiene las clases siguientes.

Clase | Biblioteca | Descripción
_sortbutton | _table2.vcx | Proporciona botones que ordenan ascendente o descendentemente los datos.
_navtoolbarclass | _table2.vcx | Proporciona controles de desplazamiento en una barra de herramientas.
_navmenu | _table2.vcx | Proporciona un menú contextual que puede incluir opciones de desplazamiento a través de los datos.

Para obtener más detalles acerca de las clases disponibles en las Foundation Classes, vea Foundation Classes de Visual FoxPro (A-Z).

Vea también

Ejemplos Foundation Classes de Visual FoxPro | Objeto de desplazamiento en datos | Botones de desplazamiento en datos | Agregar consultas de datos a formularios (Ejemplo) | Foundation Classes de Visual FoxPro (A-Z) | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro


Agregar cifrado a aplicaciones (Ejemplo)

Archivo: ...\Samples\Solution\FFC\Crypto.scx

Este ejemplo muestra como utilizar la nueva Foundation Class Crypto, que amplía las rutinas de Crypto API de Windows. Puede agregar cifrado a texto, a archivos y a datos en las aplicaciones. Se muestran diversos estilos de cifrado junto con la firma de archivos.

Este ejemplo contiene las clases siguientes.

Clase | Biblioteca | Descripción
_cryptapi | _ crypt.vcx | La Foundation Class contiene propiedades y métodos extendidos para agregar cifrado a las aplicaciones. Utiliza las rutinas de Crypto API de Windows.

Para obtener más detalles acerca de las clases disponibles en las Foundation Classes, vea Foundation Classes de Visual FoxPro (A-Z).

Vea también

Foundation Classes de Visual FoxPro (A-Z) | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro


Agregar varios botones de formulario (Ejemplo)

Archivo: ...\Samples\Solution\Ffc\Buttons.scx

Este ejemplo contiene las clases siguientes.

Clase | Biblioteca | Descripción
_shellexecute | _environ.vcx | Ejecuta otras aplicaciones distintas de Visual FoxPro en el shell de Windows.
_mailbtn | _miscbtns.vcx | Utiliza el control ActiveX MAPI para enviar un mensaje de correo electrónico desde un formulario.
_cmdlaunch | _miscbtns.vcx | Proporciona un botón que inicia una aplicación a través del comando Run.
_cmdok | _miscbtns.vcx | Libera un formulario y actualiza los datos pendientes almacenados en el búfer.
_cmdcancel | _miscbtns.vcx | Libera un formulario y descarta los datos que queden almacenados en búfer.
_cmdhelp | _miscbtns.vcx | Proporciona un botón que muestra un tema de Ayuda.
_cmdrunform | _miscbtns.vcx | Proporciona un botón que ejecuta un formulario.
_cmdrunreport | _miscbtns.vcx | Proporciona un botón que ejecuta un informe.

Este ejemplo muestra la inclusión de botones de comando en su aplicación. Los botones de comando realizan las funciones siguientes:

  • Ejecutar una aplicación
  • Abrir una página Web en el shell de Windows
  • Mostrar un formulario
  • Mostrar la vista previa de un informe
  • Terminar un programa con las opciones Aceptar o Cancelar
  • Mostrar un tema de Ayuda

Para detalles sobre todas las clases disponibles en foundation classes, vea Foundation Classes de Visual FoxPro (A-Z).

Vea también

Ejemplos Foundation Classes de Visual FoxPro | Botón Ejecutar formulario | Foundation Classes de Visual FoxPro (A-Z) | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro


Agregar desplazamiento a formularios (Ejemplo)

Archivo: ...\Samples\Solution\Ffc\DataNav.scx

Este ejemplo contiene las clases siguientes.

Clase | Biblioteca | Descripción
_nav2buttons | _table2.vcx | Presenta un par de botones que proporcionan las funciones GoNext( ) y GoPrevious( ).
_nav4buttons | _table2.vcx | Muestra dos botones adicionales que proporcionan las funciones GO TOP y GO BOTTOM de la clase _Nav2Button.
_tablenav | _table.vcx | Una clase no visual que proporciona desplazamiento a través de los datos en otros controles.
_nav2picbuttons | _table2.vcx | Muestra un par de botones con imagen que proporcionan las funciones GoNext( ) y GoPrevious( ).
_gotobutton | _table2.vcx | Proporciona un botón que presenta un cuadro de diálogo Ir a.

Para obtener más detalles acerca de las clases disponibles en las Foundation Classes, vea Foundation Classes de Visual FoxPro (A-Z).

Vea también

Ejemplos Foundation Classes de Visual FoxPro | Botones de desplazamiento simple | Botones de desplazamiento en datos | Agregar consultas de datos a formularios (Ejemplo) | Foundation Classes de Visual FoxPro (A-Z) | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro


Agregar menús contextuales a objetos (Ejemplo)

Archivo: ...\Samples\Solution\Ffc\NewMenu.scx

Este ejemplo contiene las clases siguientes.

Clase | Biblioteca | Descripción
_shortcutmenu | _menu.vcx | Crea menús contextuales dinámicamente.

Para obtener más detalles acerca de las clases disponibles en las Foundation Classes, vea Foundation Classes de Visual FoxPro (A-Z).

Vea también

Ejemplos Foundation Classes de Visual FoxPro | Clase de menú contextual | Foundation Classes de Visual FoxPro (A-Z) | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro


Agregar hipervínculos Web a un formulario (Ejemplo)

Archivo: ...\Samples\Solution\Ffc\HyperLnk.scx

Este ejemplo contiene las clases siguientes.

Clase | Biblioteca | Descripción
_urlcombobox | Internet.vcx | Crea un cuadro combinado para especificar y explorar sitios Web.
_hyperlinklabel | Internet.vcx | Proporciona la funcionalidad de hipervínculo e inicia un explorador de Web desde una etiqueta.
_hyperlinkimage | Internet.vcx | Proporciona la funcionalidad de hipervínculo e inicia un explorador de Web desde una imagen.
_hyperlinkcommandbutton | Internet.vcx | Proporciona la funcionalidad de hipervínculo e inicia un explorador de Web desde un botón.

Para obtener más detalles acerca de las clases disponibles en las Foundation Classes, vea Foundation Classes de Visual FoxPro (A-Z).

Vea también

Ejemplos Foundation Classes de Visual FoxPro | Botón Hipervínculo | Foundation Classes de Visual FoxPro (A-Z) | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro


Control de errores de aplicación (Ejemplo)

Archivo: ...\Samples\Solution\Ffc\Error.scx

Este ejemplo contiene las clases siguientes.

Clase | Biblioteca | Descripción
_error | _app.vcx | Proporciona control de errores a código orientado a objetos y a código orientado a procedimientos.

Para obtener más detalles acerca de las clases disponibles en las Foundation Classes, vea Foundation Classes de Visual FoxPro (A-Z).

Vea también

Ejemplos Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro


Crear un explorador de Web de Visual FoxPro (Ejemplo)

Archivo: ...\Samples\Solution\Ffc\DoHTML.scx

Este ejemplo contiene las clases siguientes.

Clase | Biblioteca | Descripción
_webbrowser4 | _webview.vcx | Proporciona un control Web Browser en un formulario de Visual FoxPro.

Para obtener más detalles acerca de las clases disponibles en las Foundation Classes, vea Foundation Classes de Visual FoxPro (A-Z).

Vea también

Ejemplos Foundation Classes de Visual FoxPro | Control Web Browser | Foundation Classes de Visual FoxPro (A-Z) | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro


Crear gráficos enlazados a registros (Ejemplo)

Archivo: ...\Samples\Solution\Ffc\GraphRec.scx

Este ejemplo contiene las clases siguientes.

Clase | Biblioteca | Descripción
_graphbyrecord | _utility.vcx | Proporciona botones de desplazamiento y genera gráficos registro por registro utilizando datos de campos.
_nav4buttons | _table2.vcx | Muestra dos botones adicionales que proporcionan las funciones GO TOP y GO BOTTOM de la clase _Nav2Button.

Para obtener más detalles acerca de las clases disponibles en las Foundation Classes, vea Foundation Classes de Visual FoxPro (A-Z).

Vea también

Ejemplos Foundation Classes de Visual FoxPro | Gráfico por registro | Botones de desplazamiento en datos | Foundation Classes de Visual FoxPro (A-Z) | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro


Crear efectos en un control Toolbar (Ejemplo)

Archivo: ...\Samples\Solution\Ffc\MouseFx.scx

Este ejemplo contiene las clases siguientes.

Clase | Biblioteca | Descripción
_mouseoverfx | _ui.vcx | Resalta un control cuando el ratón se arrastra por encima de él.

Para obtener más detalles acerca de las clases disponibles en las Foundation Classes, vea Foundation Classes de Visual FoxPro (A-Z).

Vea también

Ejemplos Foundation Classes de Visual FoxPro | Mostrar controles en una cuadrícula (Ejemplo) | Efectos MouseOver | Foundation Classes de Visual FoxPro (A-Z) | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro


Mostrar opciones de presentación de resultados (Ejemplo)

Archivo: ...\Samples\Solution\Ffc\Output.scx

Este ejemplo contiene las clases siguientes.

Clase | Biblioteca | Descripción
_showtext | _reports.vcx | Proporciona un editor de texto sencillo en un cuadro de diálogo que también contiene botones para formatear o guardar el texto, y para cerrar el editor.
_outputdialog | _reports.vcx | Muestra un cuadro de diálogo que le pide al usuario las opciones de salida de un informe.

Para obtener más detalles acerca de las clases disponibles en las Foundation Classes, vea Foundation Classes de Visual FoxPro (A-Z).

Vea también

Ejemplos Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro


Ampliar el método SetAll (Ejemplo)

Archivo: ...\Samples\Solution\FFC\Setallx.scx

Este ejemplo utiliza la nueva Foundation Class SetAllx para permitir el establecimiento con programación de las propiedades de objetos según criterios extendidos que no se encuentran disponibles con el método SetAll() original.

Este ejemplo contiene las clases siguientes.

Clase | Biblioteca | Descripción
_setallx | _setallx.vcx | Proporciona el método contenedor SetAllx, que agrega capacidades SetAll ampliadas.

Para obtener más detalles acerca de las clases disponibles en las Foundation Classes, vea Foundation Classes de Visual FoxPro (A-Z).

Vea también

Foundation Classes de Visual FoxPro (A-Z) | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro


Probar métodos Access y Assign (Ejemplo)

Archivo: ...\Samples\Solution\Tahoe\Aa_fun.scx

Este ejemplo muestra las maneras de utilizar los métodos Access y Assign en un formulario.

Este ejemplo contiene las clases siguientes.

Método | Descripción
caption_assign | Asigna un valor nuevo a la propiedad Caption de un formulario.
mybuttons_access | Devuelve el índice del botón.
oshape_access | Devuelve la forma del objeto.
cshapecolor_access | Devuelve el color del objeto.
this_access | Agrega una propiedad nueva y después devuelve su valor.

Para obtener más detalles acerca de las clases disponibles en las Foundation Classes, vea Foundation Classes de Visual FoxPro (A-Z).

Vea también

Ejemplos Foundation Classes de Visual FoxPro | Utilizar los métodos Access y Assign para obtener polimorfismo (Ejemplo) | Foundation Classes de Visual FoxPro (A-Z) | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro


Probar arrastrar y soltar de OLE (Ejemplo)

Archivo: ...\Samples\Solution\Tahoe\Oledd.scx

Este ejemplo muestra las maneras de utilizar la función arrastrar y colocar de OLE mediante la inclusión de código en los eventos OLEDragDrop y OLEDragOver.

Para obtener más detalles acerca de las clases disponibles en las Foundation Classes, vea Foundation Classes de Visual FoxPro (A-Z).

Vea también

Ejemplos Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro


Generar HTML (Ejemplo)

Archivo: ...\Samples\Solution\Ffc\DoHTML.scx

Este ejemplo contiene las clases siguientes.

Clase | Biblioteca | Descripción
_webform | Webview.vcx | Proporciona un formulario de Visual FoxPro que contiene un control Web Browser para mostrar texto HTML.
_resizable | Controls.vcx | Hace que los objetos colocados en un formulario cambien su tamaño y se muevan en respuesta a los eventos Resize del formulario.
_dbf2html | Internet.vcx | Convierte una tabla de Visual FoxPro (.dbf) en HTML.
_frx2html | Internet.vcx | Convierte un informe de Visual FoxPro (.frx) en HTML.

Para obtener más detalles acerca de las clases disponibles en las Foundation Classes, vea Foundation Classes de Visual FoxPro (A-Z).

Vea también

Ejemplos Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro


Controlar tareas de entorno de aplicación (Ejemplo)

Archivo: ...\Samples\Solution\Ffc\Environ.scx

Este ejemplo contiene las clases siguientes.

Clase | Biblioteca | Descripción
Barra de herramientas del sistema | _app.vcx | Controla y administra las barras de herramientas del sistema.
_objectstate | _app.vcx | Determina el estado de un objeto y le permite guardar o restablecer su estado.
_traceawaretimer | _app.vcx | Detecta si la ventana de seguimiento está abierta y controla la temporización de depuración adecuadamente.

Para obtener más detalles acerca de las clases disponibles en las Foundation Classes, vea Foundation Classes de Visual FoxPro (A-Z).

Vea también

Ejemplos Foundation Classes de Visual FoxPro | Barra de herramientas del sistema | Controlar tareas frecuentes de ventanas (Ejemplo) | Foundation Classes de Visual FoxPro (A-Z) | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro


Controlar tareas frecuentes de ventanas (Ejemplo)

Archivo: ...\Samples\Solution\Ffc\WHandler.scx

Este ejemplo contiene las clases siguientes.

Clase | Biblioteca | Descripción
_windowhandler | Ui.vcx | Ejecuta varias operaciones comunes que se realizan con las ventanas, habituales en las aplicaciones.

Para obtener más detalles acerca de las clases disponibles en las Foundation Classes, vea Foundation Classes de Visual FoxPro (A-Z).

Vea también

Ejemplos Foundation Classes de Visual FoxPro | Controlador de ventana | Foundation Classes de Visual FoxPro (A-Z) | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro


Controlar conflictos de datos (Ejemplo)

Archivo: ...\Samples\Solution\Ffc\Conflicts.scx

Este ejemplo contiene las clases siguientes.

Clase | Biblioteca | Descripción
_conflicts | _dataquery.vcx | Muestra un cuadro de diálogo que le permite resolver las filas conflictivas encontradas en las sesiones de modificación de datos con almacenamiento optimista en búfer.
_nav4picbutton | _table.vcx | Muestra dos botones adicionales que proporcionan las funciones GO TOP y GO BOTTOM de la clase _Nav2PicButton.
_resizable | _controls.vcx | Hace que los objetos colocados en un formulario cambien su tamaño y se muevan en respuesta a los eventos Resize del formulario.
_datachecker | _datanav.vcx | Intercepta conflictos en los datos.

Para obtener más detalles acerca de las clases disponibles en las Foundation Classes, vea Foundation Classes de Visual FoxPro (A-Z).

Vea también

Ejemplos Foundation Classes de Visual FoxPro | Detector de conflictos | Foundation Classes de Visual FoxPro (A-Z) | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro


Formatos de datos de arrastrar y soltar de OLE (Ejemplo)

Archivo: ...\Samples\Solution\Tahoe\Querydd.scx

Este ejemplo muestra cómo se utiliza la función de arrastrar y soltar de OLE para presentar datos acerca del elemento arrastrado mediante la inclusión de código en los eventos OLEDragDrop y OLEDragOver.

Para los detalles de todas las foundation clases disponibles, vea Foundation Classes de Visual FoxPro (A-Z).

Vea también

Ejemplos Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro


Ejemplo de Pool Manager

Archivo: ...\Samples\Solution\Ffc\_PoolManager.scx

Este ejemplo muestra como usar la clase Pool Manager, que maneja un conjunto o colección de objetos de una clase y es útil cuando necesite utilizar objetos repetidamente por un breve periodo de tiempo.

Para obtener más información, vea Pool Manager (Foundation Class).

Agrupando (Pooling) Objetos

En este ejemplo, los formularios son agrupados en un conjunto para que pueda reutilizar cualquier formulario que este disponible en el conjunto, en lugar de tener que crear un nuevo formulario cada vez que selecciona un cliente en la lista desplegable.

Para utilizar la clase Pool Manager en este ejemplo, debe cambiar la siguiente propiedad de la clase en la ventana Propiedades:

cClass = frmCustomer

cClassLibrary = frmCustomer.vcx

Enlazando los eventos de Pool Manager

Puede enlazar los eventos de _PoolManager. En este ejemplo, el evento Init del formulario contiene código que enlazan a los métodos controlados del formulario customer (cliente), PoolManager_ObjectRequested y PoolManager_ObjectReturned, a los eventos ObjectRequested y ObjectReturned de _PoolManager de modo que el estado pueda ser recibido en el formulario de ejemplo:

BINDEVENT(This.PoolManager,"ObjectRequested",ThisForm,"PoolManager_ObjectRequested")
BINDEVENT(This.PoolManager,"ObjectReturned",ThisForm,"PoolManager_ObjectReturned")

Solicitar objetos

Para solicitar un objeto al conjunto (pool), llame al método _PoolManager.Get.

Para abrir un formulario customer (cliente) en este ejemplo

  1. Seleccione un nombre de cliente en la lista desplegable.
  2. Clic en Ver Cliente.

Puede abrir varios formularios haciendo clic repetidamente en Ver Cliente, que cade vez solicita un objeto form de la clase Pool Manager. El método ViewCustomer del formulario contiene el siguiente código:

loForm = ThisForm.PoolManager.Get(m.lcCustID)
If Vartype(m.loForm) == "O"
loForm.Show()
EndIf

En este ejemplo, el método Get devuelve un objeto sin uso que existe en el pool o crea un nuevo objeto. Cuando un nuevo formulario de cliente es creado, el codigo del evento Init enlaza al método _PoolManager ObjectRequested y ObjectReturned utilizando la variable privada THISPOOLMANAGER creada en el método Get:

BINDEVENT(THISPOOLMANAGER,"ObjectRequested",This,"PoolManager_ObjectRequested")
BINDEVENT(THISPOOLMANAGER,"ObjectReturned",This,"PoolManager_ObjectReturned")

Este enlace hace posible llamar el método Hide en lugar del método Release asi que el formulario regresa al pool en lugar de ser destruído.

Devolver Objetos

Para regresar los objetos al pool, llame el método _PoolManager.Free. En este ejemplo, el evento QueryUnload del formulario se ejecuta cuando el formulario clientes es cerrado y regresa al pool:

If Vartype(This.oPoolManager) == "O"
This.oPoolManager.Free(This)
NoDefault
EndIf

Vea también

Foundation Classes de Visual FoxPro (A-Z) | Form (Objeto: propiedades, métodos y eventos)


Obtener la ubicación y el nombre del proyecto (Ejemplo)

Archivo: ...\Samples\Solution\Ffc\GetProject.scx

Este ejemplo contiene las clases siguientes.

Clase | Biblioteca | Descripción
_folder | _controls | Proporciona un cuadro de diálogo para obtener un nombre de archivo y un nombre de carpeta.

Para obtener más detalles acerca de las clases disponibles en las Foundation Classes, vea Foundation Classes de Visual FoxPro (A-Z).

Vea también

Ejemplos Foundation Classes de Visual FoxPro | Obtener archivos y directorios | Foundation Classes de Visual FoxPro (A-Z) | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro


Ejecutar Automatización de Word, Excel y Graph (Ejemplo)

Archivo: ...\Samples\Solution\Ffc\Automate.scx

Este ejemplo contiene las clases siguientes.

Clase | Biblioteca | Descripción
Referencias cruzadas | _utility.vcx | Genera un informe de referencias cruzadas.
Combinar correspondencia | Mailmerge.vcx | Genera una combinación de correspondencia de Word mediante el motor del Asistente para combinar correspondencia.
Tabla dinámica | Pivtable.vcx | Genera una tabla dinámica de Excel mediante el motor del Asistente para tablas dinámicas.
Objeto Graph | _utility.vcx | Genera un gráfico mediante el motor del Asistente para gráficos.

Este ejemplo muestra la inclusión de rutinas de automatización en su aplicación. Elija los botones del cuadro de diálogo para generar un resumen de referencias cruzadas, una tabla dinámica de Excel, un documento de combinación de correspondencia de Word y un gráfico de datos.

Para obtener más detalles acerca de las clases disponibles en las Foundation Classes, vea Foundation Classes de Visual FoxPro (A-Z).

Vea también

Ejemplos Foundation Classes de Visual FoxPro | Referencias cruzadas | Foundation Classes de Visual FoxPro (A-Z) | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro


Ejemplo de sugerencias para el programa Logotipo de Windows 2000

Archivo: ...\Samples\Solution\FFC\Logo.scx

Pueden enviarse aplicaciones personalizadas para obtener el logotipo de Windows 2000. La aplicación debe cumplir varios requisitos para poder obtener el logotipo (vea http://www.microsoft.com/winlogo). Este ejemplo muestra varias Foundation Classes con información que puede resultarle útil para hacer que las aplicaciones sean compatibles con el logotipo.

Este ejemplo contiene las clases siguientes.

Clase | Biblioteca | Descripción
_sysmetrics | _ system.vcx | Devuelve información del sistema, como el número de botones del ratón, el número de monitores y la presencia de un ratón con rueda.
_userpriv | _ system.vcx | Devuelve los derechos de acceso del usuario que ha iniciado la sesión (invitado, usuario avanzado, administrador).
_commonfolder | _ system.vcx | Devuelve la ruta de acceso a carpetas comunes del sistema, como Mis documentos.

Para obtener más detalles acerca de las clases disponibles en las Foundation Classes, vea Foundation Classes de Visual FoxPro (A-Z).

Vea también

Foundation Classes de Visual FoxPro (A-Z) | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro


Realizar el seguimiento de las actividades de un proyecto (Ejemplo)

Archivo: ...\Samples\Solution\Tahoe\Acttrack.scx

Este ejemplo contiene las clases siguientes.

Clase | Biblioteca | Descripción
activity_tracker | project_hook.vcx | Crea un proyecto y un registro para documentar la actividad del proyecto.

Para obtener más detalles acerca de las clases disponibles en las Foundation Classes, vea Foundation Classes de Visual FoxPro (A-Z).

Vea también

Ejemplos Foundation Classes de Visual FoxPro | Obtener la ubicación y el nombre del proyecto (Ejemplo) | Foundation Classes de Visual FoxPro (A-Z) | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro


Utilizar los métodos Access y Assign para obtener polimorfismo (Ejemplo)

Archivo: ...\Samples\Solution\Tahoe\Aa_outline.scx

Este ejemplo utiliza los métodos Access y Assign para demostrar el polimorfismo de los objetos.

Para obtener más detalles acerca de las clases disponibles en las Foundation Classes, vea Foundation Classes de Visual FoxPro (A-Z).

Vea también

Ejemplos Foundation Classes de Visual FoxPro | Probar métodos Access y Assign (Ejemplo) | Foundation Classes de Visual FoxPro (A-Z) | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro


Usar control de matrices (Ejemplo)

Archivo: ...\Samples\Solution\Ffc\Arrays.scx

Este ejemplo contiene las clases siguientes.

Clase | Biblioteca | Descripción
_arraylib | _utility.vcx | Proporciona métodos para controlar ciertas operaciones con matrices no proporcionadas por las funciones de matrices de Visual FoxPro.

Para obtener más detalles acerca de las clases disponibles en las Foundation Classes, vea Foundation Classes de Visual FoxPro (A-Z).

Vea también

Ejemplos Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro


Usar cuadros de diálogo comunes de aplicación (Ejemplo)

Archivo: ...\Samples\Solution\Ffc\Dialogs.scx

Este ejemplo contiene las clases siguientes.

Clase | Biblioteca | Descripción
_splash | _dialogs.vcx | Proporciona una pantalla de inicio a una aplicación.
_login | _dialogs.vcx | Proporciona un cuadro de inicio de sesión a una aplicación.
_aboutbox | _dialogs.vcx | Proporciona un cuadro Acerca de, a una aplicación.
_keywords | _dialogs.vcx | Proporciona acceso a la tabla de palabras clave (.dbf).
_locateitem | _dialogs.vcx | Presenta cuadros de diálogo Buscar elemento en una aplicación.

Para obtener más detalles acerca de las clases disponibles en las Foundation Classes, vea Foundation Classes de Visual FoxPro (A-Z).

Vea también

Ejemplos Foundation Classes de Visual FoxPro | Cuadro de diálogo Contraseña | Pantalla de inicio | Foundation Classes de Visual FoxPro (A-Z) | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro


Usar botones de edición para un formulario complejo (Ejemplo)

Archivo: ...\Samples\Solution\Ffc\Dataedit.scx

Este ejemplo contiene las clases siguientes.

Clase | Biblioteca | Descripción
picbtns | Wizbtns.vcx | Proporciona un conjunto completo de botones de edición y desplazamiento.

Para obtener más detalles acerca de las clases disponibles en las Foundation Classes, vea Foundation Classes de Visual FoxPro (A-Z).

Vea también

Ejemplos Foundation Classes de Visual FoxPro | Botones de edición simple | Botones de edición de datos | Usar botones de edición para un formulario sencillo (Ejemplo) | Foundation Classes de Visual FoxPro (A-Z) | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro


Usar botones de edición para un formulario sencillo (Ejemplo)

Archivo: ...\Samples\Solution\Ffc\Dataedit2.scx

Este ejemplo contiene las clases siguientes.

Clase | Biblioteca | Descripción
_picformbtns | _wizbtns.vcx | Muestra botones que proporcionan las funciones Buscar, Imprimir, Agregar, Eliminar y Salir.

Para obtener más detalles acerca de las clases disponibles en las Foundation Classes, vea Foundation Classes de Visual FoxPro (A-Z).

Vea también

Ejemplos Foundation Classes de Visual FoxPro | Usar botones de edición para un formulario complejo (Ejemplo) | Botones de edición simple | Botones de edición de datos | Foundation Classes de Visual FoxPro (A-Z) | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro


Utilizar cuadros de lista para seleccionar datos

Archivo: ...\Samples\Solution\Ffc\Movers.scx

Este ejemplo contiene las clases siguientes.

Clase | Biblioteca | Descripción
_tablemover | _movers.scx | Carga automáticamente tablas y campos desde el origen de datos seleccionado.
_fieldmover | _movers.scx | Carga automáticamente campos desde el origen de datos actual.
_sortmover | _movers.scx | Controla la ordenación de los datos automáticamente.
_supermover | _movers.scx | Proporciona un cuadro de lista de selector con botones Mover, Eliminar, Mover todos y Eliminar todos.

Para obtener más detalles acerca de las clases disponibles en las Foundation Classes, vea Foundation Classes de Visual FoxPro (A-Z).

Vea también

Ejemplos Foundation Classes de Visual FoxPro | Agregar elementos de forma interactiva a un cuadro de lista (Ejemplo) | Selector | Foundation Classes de Visual FoxPro (A-Z) | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro


Usar termómetro de progreso (Ejemplo)

Archivo: ...\Samples\Solution\Ffc\Therm.scx

Este ejemplo contiene las clases siguientes.

Clase | Biblioteca | Descripción
_thermometer | _therm.vcx | Proporciona una clase termómetro de progreso estándar.

Para obtener más detalles acerca de las clases disponibles en las Foundation Classes, vea Foundation Classes de Visual FoxPro (A-Z).

Vea también

Ejemplos Foundation Classes de Visual FoxPro | Termómetro | Foundation Classes de Visual FoxPro (A-Z) | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro


Trabajar con Microsoft Agent (Ejemplo)

Archivo: ...\Samples\Solution\FFC\Agent.scx

Este ejemplo muestra cómo mejorar las aplicaciones mediante el uso de personajes animados, utilizando la tecnología de Microsoft Agent. Estos personajes se parecen a los Ayudantes de Office y pueden llevar a cabo diversas acciones.

Este ejemplo contiene las clases siguientes.

Clase | Biblioteca | Descripción
_agent | _agent.vcx | Proporciona métodos para controlar operaciones con Microsoft Agent.

Para obtener más detalles acerca de las clases disponibles en las Foundation Classes, vea Foundation Classes de Visual FoxPro (A-Z).

Vea también

Foundation Classes de Visual FoxPro (A-Z) | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro


Ejemplo de agregar elementos de menú en tiempo de ejecución

Archivo: ...\Samples\Solution\Menus\Fillmenu.scx

Este ejemplo ilustra la forma de agregar elementos de menú a un menú en tiempo de ejecución.

En este ejemplo, la definición del menú se obtiene en un Diseñador de menús, con un indicador único y un submenú vacío llamado empty_pop.

El código que se incluye se ejecuta cuando un usuario elige cualquier elemento del menú:

PROCEDURE takeaction(cPrompt)
#DEFINE MSG_LOC "You chose " + cPrompt + "."
IF cPrompt = "Release this menu"
RELEASE PAD dynmenu of _MSYSMENU
ELSE
WAIT WINDOW MSG_LOC TIMEOUT 1
ENDIF

El código asociado al evento Click de cmdRefresh en el formulario ejecuta el menú.

DO dynamic.mpr

Entonces, para cada elemento de la lista, el código define un elemento de menú con el indicador y el texto del mensaje.

FOR i = 1 TO THISFORM.lstMenu.ListCount
DEFINE BAR i OF empty_pop PROMPT (ALLTRIM(THISFORM.lstMenu.List(i,1))) ;
MESSAGE (THISFORM.lstMenu.List(i,2))
ENDFOR

También hay código que proporciona el indicador para permitir al usuario que libere el menú.

DEFINE BAR i + 1 OF empty_pop PROMPT "\-"
DEFINE BAR i + 2 OF empty_pop PROMPT "Release this menu" ;
MESSAGE "Remove the Dynamic Items menu from the menu bar."

Vea también

Coordinar elementos de menú y botones de barra de herramientas (Ejemplo) | Ejemplos de Soluciones


Agregar menús personalizados (Ejemplo)

Archivo: ...\Samples\Solution\Sedona\Mrumenu.scx

Puede agregar menús personalizados similares a los de Microsoft Office 2000, en los que se muestran en el menú únicamente los elementos de menú más utilizados. Este ejemplo utiliza un menú de ejemplo (Dvdmenu.mnx) que contiene el código de menú especial.

Para obtener más detalles acerca de las clases disponibles en las Foundation Classes, vea Foundation Classes de Visual FoxPro (A-Z).

Vea también

Foundation Classes de Visual FoxPro (A-Z) | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro


Ejemplo de cambiar atributos de fuentes

Archivo: ...\Samples\Solution\Toolbars\Format.scx

Este ejemplo muestra cómo utilizar una barra de herramientas para establecer las propiedades FontName, FontSize, FontBold, FontItalic, ForeColor y BackColor de controles en un formulario.

La barra de herramientas es la clase tbrEditing en ...\Samples\Classes\Samples.vcx. La propiedad nApplies de la clase especifica si se establecen las propiedades del control actualmente seleccionado, de todos los cuadros de texto y los cuadros de edición en el formulario o de todos los controles del formulario. El código en el evento InteractiveChange o Click de los controles de la barra de herramientas establece las propiedades. Por ejemplo, el código siguiente está asociado al evento Click de cmdBold:

IF TYPE("_SCREEN.ActiveForm") = 'O'
oForm = _SCREEN.ActiveForm
ELSE
RETURN
ENDIF
DO CASE
CASE THIS.Parent.nAppliesTo = 1   && Current Control
oForm.ActiveControl.FontBold = THIS.Value
CASE THIS.Parent.nAppliesTo = 2   && Text and edit boxes
oForm.SetAll('FontBold', THIS.Value, 'TEXTBOX')
oForm.SetAll('FontBold', THIS.Value, 'EDITBOX')
CASE THIS.Parent.nAppliesTo = 3   && All Controls
oForm.SetAll('FontBold', THIS.Value)
ENDCASE

El código del formulario está asociado al evento GotFocus de los controles. Cada evento GotFocus contiene la siguiente línea de código:

THISFORMSET.tbrEditing.Refresh(THIS)

El método Refresh de tbrEditing establece los valores de los controles de edición de la barra de herramientas para reflejar la configuración actual del objeto cuya referencia se pasa como parámetro.

Vea también

Cuadro combinado Fuente | Cuadro combinado Tamaño de fuente | Ejemplos de Soluciones


Ejemplo de coordinar elementos de menú y botones de barra de herramientas

Archivo: ...\Samples\Solution\Menus\Toolmenu.scx

Este ejemplo muestra la coordinación de los elementos del menú y los botones de la barra de herramientas que proporcionan la misma funcionalidad.

Ocasionalmente deseará poner una funcionalidad determinada a disposición de los elementos de menú y de los botones de la barra de herramientas. Por ejemplo, en Visual FoxPro puede guardar un archivo eligiendo el botón de la barra de herramientas Guardar o eligiendo Guardar en el menú Archivo.

En este ejemplo tenemos tres componentes:

Componente | Descripción
Toolmenu.scx | El formulario.
tbrBackColor en Solution.vcx | La barra de herramientas.
Toolmenu.mnx | El menú.

En el evento Init del formulario, se crea un objeto de barra de herramientas cuya referencia al objeto es una propiedad del formulario, oToolbar.

SET CLASSLIB TO ..\solution
This.oToolbar = CREATEOBJECT('tbrbackcolor')
* Position the toolbar and show it
THIS.oToolbar.Left = THIS.Left + 10
THIS.oToolbar.Top = THIS.Top - 50
THIS.oToolbar.Visible = .T.
* Push the current menu on the stack so it can be
* restored in the Destroy event of the form.
PUSH MENU _MSYSMENU
* Run the menu
DO toolmenu.mpr

En lugar de codificar dos veces la funcionalidad en la barra de herramientas y en el menú, actualizando ambos si se requieren cambios, el código asociado a los elementos del menú llama al código asociado a los botones de la barra de herramientas. Por ejemplo, el comando siguiente se asocia al primer elemento de menú:

_VFP.ActiveForm.oToolbar.cmdRed.click

La cláusula SKIP FOR de los elementos del menú hace que se desactiven cuando lo haga el botón de la barra de herramientas asociada. Por ejemplo, la expresión siguiente está asociada a la cláusula SKIP FOR del primer elemento de menú:

!_VFP.ActiveForm.oToolbar.cmdRed.Enabled

Vea también

Localizador de elementos | Barra de herramientas Formato | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de crear menús contextuales dinámicos

Archivo: ...\Samples\Solution\Menus\Dynshort.scx

Este ejemplo muestra una forma alternativa de crear menús contextuales.

Los menús contextuales del ejemplo Mostrar menús contextuales (Ejemplo) se crean en el Diseñador de menús. Las ventajas de utilizar el Diseñador de menús son la facilidad de diseño, la capacidad para crear menús en cascada y la sencilla integración en un formulario. Sin embargo, con el Diseñador de menús necesita un archivo .MNX, .MNT y .MPR diferente para cada menú contextual. Si realiza un cambio, necesitará generar y compilar el código del menú de nuevo.

El motor del menú contextual dinámico es una clase personalizada que puede agregar a cualquier formulario: menulib en ...\Samples\Classes\Utility.vcx. El método ShowMenu de esta clase define un menú y lo muestra en la ubicación del puntero del ratón (MousePointer) que determinan las funciones MROW( ) y MCOL( ).

En el evento RightClick de los objetos para los que desea crear un menú contextual, haga lo siguiente:

  1. Cree una matriz con los elementos del menú contextual.
  2. Pase la matriz al método ShowMenu de la clase menulib.
  3. Procese la elección del usuario mediante la comprobación del valor BAR( ).

Por ejemplo, el código siguiente se asocia al evento RightClick del formulario:

LOCAL laMenu[5]
laMenu=""
laMenu[1]="\<Center"
laMenu[2]="\<Font..."
laMenu[3]="\<Minimize"
laMenu[4]="\-"
laMenu[5]="E\<xit"
THISFORM.oMenuShortcut.ShowMenu(@laMenu)
DO CASE
CASE BAR()=1
THISFORM.AutoCenter=.T.
CASE BAR()=2
THISFORM.SetFont
CASE BAR()=3
THISFORM.WindowState=1
CASE BAR()=5
THISFORM.Release
ENDCASE

Vea también

Agregar menús contextuales a objetos (Ejemplo) | Mostrar menús contextuales (Ejemplo) | Ejemplos de Soluciones


Ejemplo de desactivar o mostrar una marca junto a un elemento de menú

Archivo: ...\Samples\Solution\Menus\Chkmenu.scx

Este ejemplo muestra cómo se pueden desactivar dinámicamente elementos de menú y mostrar marcas de verificación junto a los elementos de menú especificados.

En este ejemplo, el menú se creó con el Diseñador de menús y se ejecuta al inicializarse el formulario.

DO chkmenu.mpr

Para desactivar un elemento de menú, incluya una expresión que dé como resultado Falso (.F.) en el comando SET SKIP OF. Por ejemplo, la siguiente línea de código del evento InteractiveChange de una casilla de verificación ejecuta SET SKIP OF con el inverso del valor de la casilla de verificación, desactivando el elemento de menú cuando no está seleccionada la casilla de verificación.

SET SKIP OF BAR 1 OF checkitems !THIS.Value

Para mostrar una marca de verificación junto a un elemento de menú, incluya una expresión que se evalúe en verdadero (.T.) después de la palabra clave TO del comando SET MARK OF. Por ejemplo, la siguiente línea de código del evento InteractiveChange de la casilla de verificación ejecuta el comando SET MARK OF con el valor de la propiedad Value de la casilla de verificación.

SET MARK OF BAR 1 OF checkitems TO THIS.Value

Vea también

Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de mostrar menús contextuales

Archivo: ...\Samples\Solution\Menus\Shortcut.scx

Este ejemplo muestra menús contextuales cuando un usuario hace clic con el botón secundario del ratón en el objeto. Cuando se crea un menú contextual con el Diseñador de menús, el código del formulario para activar el menú es muy sencillo. El código siguiente se asocia al evento RightClick del formulario:

DO frmshort.mpr WITH THIS

El código siguiente se asocia al evento RightClick de los cuadros de edición del formulario:

DO edtshort.mpr WITH THIS

El menú FRMSHORT

El menú FRMSHORT se diseñó para obtener un parámetro de objeto. El código siguiente esta incluido en el código de configuración del menú:

PARAMETER oREF
#PREPOP

La directiva de compilación #PREPOP hace que el código del postprograma del menú se genere antes que el comando ACTIVATE POPUP. Esto le permite desactivar o activar elementos de menú en tiempo de ejecución y mostrar marcas de verificación junto a elementos del menú.

El código asociado a los elementos de menú establecen las propiedades del objeto que se pasó al .mpr como parámetro. Por ejemplo, el elemento Siempre visible establece la propiedad AlwaysOnTop del formulario.

El código siguiente, incluido en el postprograma del menú, muestra una marca de verificación junto al elemento Siempre visible cuando la propiedad AlwaysOnTop del formulario está establecida en verdadero (.T.).

SET MARK OF BAR 4 OF frmshort TO oRef.AlwaysOnTop

El menú EDTSHORT

El menú EDTSHORT también acepta un parámetro de objeto en su programa de iniciación. La directiva de generador #PREPOP no se utiliza ya que no necesita mostrar una marca de verificación junto a los elementos de este menú.

Como alternativa para mostrar menús contextuales, vea el ejemplo Crear menús contextuales dinámicos (Ejemplo).

Vea también

Ejemplos de Soluciones | Crear menús contextuales dinámicos (Ejemplo) | Foundation Classes de Visual FoxPro (A-Z)


Utilizar barras de herramientas de estilo nuevo (Ejemplo)

Archivo: ...\Samples\Solution\Sedona\Newtbars.scx

Este ejemplo muestra una barra de herramientas personalizada que contiene un cuadro desplegable de botón con imagen similar a los de las barras de herramientas de estilo de Microsoft Office. Estos cuadros desplegables se pueden crear fácilmente con una combinación de dos botones de comando y la propiedad VisualEffect para mostrar su funcionamiento conjunto. Puede utilizarse un menú emergente estándar para el propio cuadro desplegable.

Este ejemplo contiene las clases siguientes.

Clase | Biblioteca | Descripción
tbar1 | newtbars.vcx | Contiene una clase de barra de herramientas que utiliza botones de comando para mostrar el ejemplo de cuadro desplegable con imagen.

Para obtener más detalles acerca de las clases disponibles en las Foundation Classes, vea Foundation Classes de Visual FoxPro (A-Z).

Vea también

Foundation Classes de Visual FoxPro (A-Z) | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro


Ejemplo de imprimir un porcentaje del total en un informe

Archivo: ...\Samples\Solution\Reports\Percent.frx

El informe de ejemplo Percent.frx muestra una forma de calcular y mostrar valores en el comienzo del informe antes de que se hayan impreso todos los registros del origen de registros. Este ejemplo de informe imprime un porcentaje basándose en un total que normalmente se calcula e imprime al final de un informe.

El informe de ejemplo utiliza las tablas EMPLOYEE y ORDERS en su entorno de datos. Para calcular los porcentajes se utilizan una variable pública y unas expresiones que usan el campo ORDER_AMT.

Para ordenar los datos apropiadamente para el grupo definido en el informe, la propiedad Order de Cursor1 está establecida al índice EMP_ID.

La variable pública nTotalSales definida en el evento Init de Cursor2, almacena el total de todos los pedidos. La variable está declarada como pública para hacerse visible más allá del código Init de Cursor2.

Un control de campo en la banda Pie de grupo calcula y muestra el porcentaje de cada empleado utilizando la siguiente expresión:

STR(INT((emp_total / nTotalSales)*100)) + " " + "%"

Un control de campo en la banda Resumen calcula y muestra el porcentaje total para todos los empleados utilizando la siguiente expresión.

STR(INT((nTotalSales / nTotalSales)*100)) + " " + "%"

Vea también

Imprimir una factura (Ejemplo) | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de imprimir una factura

Archivo: ...\Samples\Solution\Reports\Invoice.frx

Este informe muestra una factura y utiliza una vista para combinar información de varias tablas, una función para recoger datos del usuario y un diseño de informe del tipo uno a varios. Cuando se ejecuta el informe, se inicia primero la vista y se solicita al usuario un intervalo de fechas utilizando una función llamada Datepick.prg. Cuando el usuario ha proporcionado las fechas, se ejecuta la vista y se selecciona los registros que se van a mostrar en el informe.

El origen de registros La vista INVOICE, utilizada en este informe, reside en la base de datos TESTDATA proporcionada con el proyecto Solutions. Esta vista combina los datos de cuatro tablas, CUSTOMER, ORDERS, ORDITEMS y PRODUCTS. Para filtrar las tablas con los registros en el intervalo de datos, la vista dispone de dos filtros con un parámetro dStart_Date y dEnd_Date cada uno de ellos.

El entorno de datos La vista está incluida en el entorno de datos. Para almacenar valores recogidos en la vista y restaurar el valor de la ruta de acceso, el método BeforeOpenTables del entorno de datos declara tres variables públicas dStart_date, dEnd_Date y cOldPath. Las dos primeras buscan los parámetros especificados en la vista. El tercero, cOldPath, guarda el valor de la ruta de acceso actual de forma que pueda restaurarse en el método Destroy. Se cambia la ruta de acceso, pero el informe es capaz de encontrar la función que pide al usuario un intervalo de fechas. El comando final ejecuta la función.

El método Destroy del entorno de datos tiene variables públicas para las fechas de inicio y final, el valor de la ruta de acceso para devolver la ruta de acceso predeterminada que tenía antes de ejecutarse el informe e instrucciones para liberar las tres variables públicas.

Datepick.prg Esta función define y ejecuta una clase de formulario llamada frmDATEPICK. La clase de formulario incluye cuatro cuadros combinados que muestran y recogen valores para ser utilizados en las variables públicas dStart_Date y dEnd_Date. Las cuatro variables recogidas son nFromMonth, nFromYear, nToMonth y nToYear. Estas variables almacenan la entrada del usuario y se utilizan para determinar el valor de dStart_Date y dEnd_Date. La función también comprueba que el usuario ha introducido valores para cada elemento de la fecha y que la fecha final es posterior a la fecha de inicio.

Diseño del formulario En la distribución del formulario, una banda Encabezado de grupo contiene los controles para la información del cliente, la banda Detalles contiene los controles para los artículos pedidos y la banda Pie de grupo contiene los controles que muestran los valores calculados en la factura.

Para dar un formato apropiado a la dirección, una expresión del control concatena varios campos con la puntuación apropiada. Para calcular los valores de la banda Pie de grupo, dos variables de informe, nSubtotal y nDiscount, almacenan los valores del subtotal y el porcentaje de descuento.

Vea también

Imprimir etiquetas postales de clientes (Ejemplo) | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de imprimir etiquetas postales de clientes

Archivo: ...\Samples\Solution\Reports\Cust.lbx

Este ejemplo muestra la impresión de etiquetas postales, una por cada cliente de la tabla de clientes (Customer).

Las etiquetas incluyen 4 elementos:

  • Empresa
  • Contacto + ", " + Cargo
  • Dirección
  • Ciudad + ", " + Región + " " + País

El logotipo se muestra en cada etiqueta utilizando el control contenedor OLE.

Vea también

Imprimir una factura (Ejemplo) | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de imprimir información del diccionario de datos

Archivo: ...\Samples\Solution\Reports\Dbctofrx.scx

Este ejemplo ilustra una sencilla forma de generar un informe con el contenido de una base de datos de Visual FoxPro (dbc). Simplemente elija, cuando se le solicite, un archivo .dbc y, a continuación, se generará un informe que podrá ver en una vista preliminar. Puede hacer clic en el botón Imprimir para generar una copia impresa.

El ejemplo crea un cursor temporal e inserta nuevos registros según se lea el archivo .dbc. La tabla y los registros se agregan junto con su campo asociado e información de índice.

Vea también

Imprimir una factura (Ejemplo) | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de imprimir en formato de catálogo

Archivo: ...\Samples\Solution\Reports\Wrapping.frx

El informe de ejemplo Wrapping.frx imprime un directorio de empleados y muestra cómo puede ajustar el texto alrededor de los gráficos, alternando la posición de impresión de los controles y de los controles flotantes debajo de los campos que ajusten el tamaño. El entorno de datos de este informe contiene la tabla EMPLOYEE de Testdata.dbc del proyecto Solutions.

Distribución del informe

La banda Título contiene el nombre y la descripción del informe. La banda Detalles contiene los controles campo y etiqueta que se imprimen en cada registro. Para cada registro el informe muestra cuatro categorías de información.

  • Nombre de empleado y cargo
  • Biografía
  • Cuadro de información de referencia rápida sobre el teléfono y dirección
  • Fotografía

Después de imprimir el nombre y el cargo, este informe ajusta el texto de la biografía alrededor de la fotografía, alternando información de izquierda a derecha y colocando el cuadro en la parte inferior de la página con respecto a la biografía.

Ajustar texto alrededor de los gráficos

Para ajustar el campo memo alrededor del gráfico, el informe utiliza dos controles campo para mostrar el contenido del campo memo. El primer control está por encima del gráfico para mostrar dos líneas de texto. El segundo campo también se ajusta para mostrar dos líneas de texto, pero es más estrecho y se sitúa junto al gráfico.

El primer control de tipo campo imprime todas las palabras del campo memo hasta la posición donde se produzca una ruptura para que continúe escribiendo en el segundo control. La expresión se muestra a continuación.

LEFTC(employee.notes,nWrapCharPos)

El segundo control de tipo campo imprime las palabras restantes del campo memo. La expresión del segundo control de tipo campo se muestra a continuación.

LTRIM(RIGHTC(employee.notes,(nMemoLen-(nWrapCharPos))))

Las expresiones de los controles utilizan variables de informe para determinar las palabras que muestra el control del campo memo.

  • nFirstMemoLen determina el número de caracteres que pueden mostrarse en el primer campo sin truncar texto. En este informe, el valor de la variable es siempre 185. Si utiliza esto en su informe, tendrá que cambiar esta constante para indicar el máximo número de caracteres que quiere por encima del gráfico.
  • nMemoLen determina la longitud del campo memo para el registro actual. Esta expresión de variable es LENC(employee.notes).
  • nSpace determina la posición del carácter del primer espacio después de los caracteres mostrados en el primer control. Esta expresión de variables es: AT_C(CHR(32),RIGHTC(employee.notes,(nMemoLen - nFirstMemoLen))).
  • nWrapCharPos determina la posición del carácter dentro del campo memo donde se produce la ruptura. Esta expresión de variable es nSpace + nFirstMemoLen.

Alternar la posición de los objetos impresos

En este informe, la posición de la biografía de los empleados, el grupo de referencia rápida y la fotografía se alternan de izquierda a derecha en cada registro. Para alternar las posiciones, el informe tiene dos conjuntos de controles para las partes que se alternen. Puesto que se utilizan dos controles para ajustar el texto de la biografía, el primer control no se alterna y, por lo tanto, no necesitan incluirse en los dos conjuntos.

Un conjunto de controles especifica la impresión de la fotografía en el lado izquierdo. Un segundo conjunto especifica la impresión de la fotografía en el lado derecho. Los dos controles utilizan una variable de informe, nCounter, que calcula un número que determina cuándo se debe imprimir el conjunto. Se imprime un conjunto cuando el valor de nCounter es 0; el otro cuando el valor es 1. La expresión Imprimir-Condiciones del primer conjunto de controles es MOD(nCounter,2) = 0. Para el segundo conjunto, la expresión es MOD(nCounter,2) = 1.

Controles flotantes debajo de los controles ajustables

Este informe imprime un cuadro de información debajo de la biografía. Puesto que la longitud de la biografía varía con cada registro, el control que muestra la información de la biografía que está al lado de la imagen se establece para que se ajuste y utiliza sólo el espacio necesario para imprimir el contenido del campo. El cuadro que imprime debajo de la biografía flota hacia abajo en la página dependiendo de la longitud de la biografía. Este cuadro es un grupo de controles con un control de tipo campo, etiqueta y rectángulo. Para evitar que la biografía se imprima en la parte superior del grupo, la posición del campo de cada uno de los controles del grupo está establecida como flotante.

Vea también

Imprimir detalles de informes con estilo Doble carta (Ejemplo) | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Imprimir pedidos de producto por trimestres (Ejemplo)

Archivo: ...\Samples\Solution\Reports\Ordgraph.scx

Este ejemplo ilustra la generación e impresión rápida de gráficos. Visual FoxPro le permite agregar gráficos a los formularios como OleControls u OleBoundControls. Estos últimos representan un gráfico, vinculado a los datos mediante un campo General.

Si pretende utilizar el generador de informes de Visual FoxPro para imprimir gráficos, necesitará utilizar campos General para almacenar los gráficos. La forma más fácil de crear un nuevo gráfico en un campo General es utilizar el comando APPEND GENERAL, por ejemplo:

APPEND GENERAL graphfield CLASS "msgraph"

El ejemplo anterior creará un gráfico en un campo General, sin embargo, no contendrá los datos. La cláusula DATA es la que pasa los datos al gráfico.

El siguiente código realiza un bucle a través de los registros que ya contienen datos y construye una cadena para pasarla al gráfico con APPEND GENERAL .... DATA.

SCAN NEXT m.totrecs
m.cData = ""+TAB+m.f2+TAB+m.f3+TAB+m.f4+CRLF+;
EVAL(fields(1))+ TAB + ;
ALLTRIM(STR(EVAL(field(2))))+ TAB +;
ALLTRIM(STR(EVAL(field(3))))+ TAB + ;
ALLTRIM(STR(EVAL(field(4))))
m.cDetails = ;
f2+"-" +ALLTRIM(STR(EVAL(FIELD(2)))) ;
+ CRLF + f3+"-" +ALLTRIM(STR(EVAL(FIELD(3)))) ;
+ CRLF + f4+" - "+ALLTRIM(STR(EVAL(FIELD(4)))) +CRLF
INSERT INTO prodsales ;
VALUES(SalesData.prod_name,tmpgrph.graph,m.cDetails)
APPEND GENERAL prodsales.sales DATA m.cData
ENDSCAN

Una vez que tenga una tabla o cursor que contiene un campo General con sus gráficos, podrá imprimirlo en un informe de Visual FoxPro utilizando el comando REPORT FORM. No puede incluir un control ActiveX en un informe.

Vea también

Crear gráficos enlazados a registros (Ejemplo) | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Imprimir detalles de informes con estilo Doble carta (Ejemplo)

Archivo: ...\Samples\Solution\Reports\Ledger.frx

El informe, ledger.frx, imprime una lista de teléfonos de empleados que alterna la impresión de un fondo gris detrás de los registros. El entorno de datos de este informe contiene la tabla EMPLOYEE de testdata.dbc del proyecto Solutions.

En el diseño del informe, la banda Encabezado de página tiene controles etiqueta que imprimen el título del informe, la descripción y los encabezados de columna. La banda Detalles tiene los controles campo y etiqueta que imprimen la información de cada empleado.

Para imprimir con estilo Doble carta, los controles para la información de los empleados están en la parte superior de un rectángulo. El color del rectángulo es gris y su modo es opaco. El informe imprime el rectángulo para cada registro evaluando una expresión en las opciones Imprimir-Condiciones del control de tipo rectángulo. La expresión es MOD(nCounter,2) = 1 que utiliza una variable de informe, nCounter, que se incrementa en cada registro impreso. El informe utiliza el valor de esta variable para determinar cuándo debe imprimir el rectángulo.

Vea también

Imprimir en formato de catálogo (Ejemplo) | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de utilizar formato condicional en un informe

Archivo: ...\Samples\Solution\Reports\Colors.frx

Este ejemplo de informe muestra cómo puede utilizar las opciones de Imprimir-Condiciones en controles para cambiar el formato de los campos basándose en los valores del registro. El ejemplo imprime un "Informe de inventario de productos". Si el artículo del producto está descatalogado, se imprime tachado. Si la cantidad en existencias está por debajo del nivel del nuevo pedido y el producto no está descatalogado, el artículo se imprime en rojo. Si no es así, el artículo del producto se imprime en negro estándar.

Este informe utiliza la tabla de productos (Products), de la base de datos Testdata, en el entorno de datos. La banda Detalles tiene controles de campo con la información del producto como el Id., el nombre, la cantidad en almacén y la cantidad que pedir. Otro control de campo imprime un recordatorio de la cantidad de productos que queda en el almacén.

Para controlar los tres casos, se colocan tres conjuntos de controles de campo para la información del producto en la banda Detalles. Para el primer conjunto, el color del texto es rojo, para el segundo es negro y para el tercero el efecto de la fuente es Tachado.

Cada valor de control tiene una expresión distinta de Imprimir-Condiciones.

  • Para los campos en negro:
    (products.in_stock > products.reorder_at) and products.discontinu = .F.
  • Para los campos tachados:
    products.discontinu = .T.
  • Para los campos con color de texto en rojo:
    products.in_stock <= products.reorder_at and products.discontinu = .F.

Vea también

Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de obtener información de la aplicación en el Registro de Windows

Archivo: ...\Samples\Solution\WINAPI\Regfile.scx

Este ejemplo muestra cómo tener acceso al registro de Windows mediante el comando nativo de Visual FoxPro DECLARE-DLL. La API de Windows proporciona varias funciones que puede utilizar para tener acceso, leer y escribir en el registro. La biblioteca de clases Registry.prg en ...\Samples\Classes contiene un conjunto completo de estas funciones que puede utilizar en sus aplicaciones.

En este ejemplo específico, puede utilizar las funciones del registro para comprobar la existencia de una aplicación en particular. Por ejemplo, puede querer distribuir una aplicación que se base en la utilización de Excel para automatizar la creación de una tabla dinámica. El registro contiene la ubicación, versión y otra información acerca de una aplicación determinada.

Vea también

Acceso al registro | Registro de aplicaciones | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de obtener información de la versión

Archivo: ...\Samples\Solution\WINAPI\Getver.scx

Este ejemplo le permite mostrar la información de versión de un archivo de tipo .dll o .exe.

Se ha agregado a Foxtool.fll una nueva función denominada GetFileVersion( ) para permitirle obtener información de la versión en un archivo. El código siguiente ilustra cómo puede llamar a la función. Vea tools\foxtools.hlp para obtener más detalles de los elementos específicos de una matriz.

SET LIBRARY TO FoxTools ADDITIVE
DIMENSION aFileVer[12]
nRetVal = GetFileVersion(GetFile("EXE"),@aFileVer)
IF nRetVal = 0
DISPLAY MEMO LIKE aFileVer
ENDIF
SET LIBRARY TO
Nota Ahora Visual FoxPro le permite agregar información de versión de archivo a los archivos EXE y DLL en tiempo de generación. Esta información de versión se almacena en un recurso de archivo y se puede tener acceso a ella mediante el Explorador de Windows. Los archivos EXE creados en Visual FoxPro 3.0 no tienen un recurso de versión de archivo.

Vea también

Versión de archivo | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Reproducir archivos multimedia utilizando comandos MCI (Ejemplo)

Archivo: ...\Samples\Solution\Forms\Mci_play.scx

Este formulario de ejemplo utiliza MCI (Multimedia Command Interface) para reproducir archivos multimedia y reproducir cualquier medio visual o no visual instalado en el sistema. Sin embargo, la función GETFILE( ) le pedirá los archivos de medios más usuales .avi, .wav, .mov y .mid. Para elegir otro tipo de archivo, seleccione Todos los archivos y elija el archivo que desee. Si desea obtener documentación acerca de los comandos MCI, busque "Multimedia Commands" en MSDN Library (<a> href="http://msdn.microsoft.com/library/">http://msdn.microsoft.com
/library</a>).

Tres funciones de la API de Windows están declaradas en el evento Init del formulario:

  • mciSendString
  • mciGetErrorString
  • SetWindowPos

El método DoMCI del formulario ejecuta un comando MCI que se pasa como parámetro.

Clases

Puede abrir el formulario para ver todo el código necesario para ejecutar archivos multimedia. También se ha extraído la funcionalidad de las clases para que pueda incorporarla fácilmente en sus propias aplicaciones.

Clase VideoFrame

La clase VideoFrame de la biblioteca de clases ...\Samples\Classes\Samples.vcx de Visual FoxPro puede utilizarse para reproducir un archivo visual multimedia, como un archivo de vídeo para Windows. La clase le permite situar y dimensionar el vídeo que se va a reproducir y proporciona métodos incorporados para facilitarle la reproducción del archivo.

Para ver un ejemplo acerca de cómo utilizar esta clase, vea Video.scx en el directorio ...\Samples\Solution\Forms de Visual FoxPro.

Propiedad | Descripción
AutoOpen | Especifica si el archivo de vídeo se debe abrir y mostrar automáticamente cuando se cree la instancia del objeto. El valor predeterminado es verdadero (.T.).
AutoPlay | Especifica si el archivo de vídeo se debe reproducir automáticamente al abrirlo. El valor predeterminado es verdadero (.T.).
AutoRepeat | Especifica si el archivo de vídeo debe reproducirse en bucle. Al establecer el valor .T., el vídeo se reproducirá continuamente. El valor predeterminado es falso (.F.).
ControlSource | Especifica un campo que contiene la referencia al archivo de vídeo. Si se deja vacía, la clase espera un nombre de archivo estático en la propiedad VideoFile.
MCIalias | Especifica el alias que debe usar MCI. Si se deja vacía, el alias predeterminado será la propiedad Name de la clase. Normalmente, esta propiedad puede dejarse vacía, pero si el usuario desea reproducir el mismo vídeo dos veces al mismo tiempo, deberá especificar un alias distinto cada vez.
VideoFile | Guarda el nombre de un archivo de vídeo para reproducir, por ejemplo: "D:\...\Samples\Solution\FORMS\FOX.AVI"
Método | Descripción
CloseVideo | Cierra el archivo de vídeo y libera todos los recursos asociados a él.
DoMCI | Llamado por otros métodos para ejecutar comandos de MCI. También puede llamarlo un usuario para ejecutar un comando MCI específico.
OpenVideo | Abre el archivo de vídeo y muestra la primera imagen.
PauseVideo | Hace una pausa en la reproducción de un vídeo. El vídeo puede reiniciarse utilizando el método PlayVideo.
PlayVideo | Reproduce el archivo de vídeo. El archivo se debe abrir con el método OpenVideo antes de reproducirlo.
SetPosition | Permite que el usuario especifique la posición en el archivo multimedia. Puede ejecutarse en cualquier momento posterior a la apertura del archivo de vídeo. Los valores válidos son "Start" (inicio), "End" (fin) o un milisegundo específico del vídeo.

Clase Sound Player

Esta clase también está incluida en la biblioteca de clases ...\Samples\Classes\Samples.vcx. Puede utilizarse para reproducir un archivo multimedia no visual, como un archivo de audio .WAV. La clase le permite especificar el archivo que se va a reproducir y proporciona métodos incorporados para reproducir fácilmente el archivo multimedia.

Propiedad | Descripción
AutoOpen | Especifica si el archivo de sonido se debe abrir y mostrar automáticamente al crear una instancia del objeto. El valor predeterminado es verdadero (.T.).
AutoPlay | Especifica si el archivo de sonido se debe reproducir automáticamente al abrirlo. El valor predeterminado es verdadero (.T.).
AutoRepeat | Especifica si el archivo de sonido se debe reproducir de forma continua. El valor predeterminado es falso (.F.).
ControlSource | Especifica la columna que contiene la referencia al archivo de sonido. Si está vacía, la clase espera un nombre de archivo estático en la propiedad SoundFile.
MCIAlias | Especifica el alias que debe usar MCI. Si se deja vacía, el alias predeterminado será la propiedad Name de la clase. Normalmente esta propiedad puede dejarse vacía, pero si el usuario desea reproducir el mismo archivo de sonido dos veces al mismo tiempo, deberá especificar un alias distinto cada vez.
SoundFile | Guarda el nombre de un archivo de sonido para reproducir, por ejemplo "C:\WINDOWS\CHIMES.WAV"
Método | Descripción
OpenSound | Abre el archivo de sonido.
PlaySound | Reproduce el archivo de sonido. El archivo debe abrirse con el método OpenSound antes de reproducirlo.
PauseSound | Hace una pausa en la reproducción de un archivo de sonido. La reproducción puede continuar llamando al método PlaySound.
SetPosition | Permite que el usuario especifique la posición en el archivo multimedia. Puede ejecutarse en cualquier momento posterior a la apertura del archivo. Valores válidos son "Start", "End" o un milisegundo específico en el sonido.
CloseSound | Cierra el archivo de sonido y libera todos los recursos asociados a él.

Vea también

Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Leer y escribir valores del registro de Visual FoxPro (Ejemplo)

Archivo: ...\Samples\Solution\WINAPI\Regfox.scx

Este ejemplo muestra cómo tener acceso al registro de Windows usando el comando nativo de Visual FoxPro DECLARE-DLL. La API de Windows proporciona varias funciones que puede utilizar para tener acceso, leer y escribir en el registro. La biblioteca de clases Registry.prg situada en ...\Samples\Classes contiene una definición de clase que expone estas funciones como métodos a los que puede llamar en sus aplicaciones.

El contenido del cuadro de diálogo Opciones de Visual FoxPro, los valores de asignación de campos y definiciones de etiqueta (por nombrar algunos) están almacenados en el registro. Puesto que muchos de estos valores no están disponibles por medio de las funciones SET, puede utilizar las funciones del registro para tener acceso a estos valores. El siguiente código rellena una matriz con todos los valores del cuadro de diálogo Opciones.

regfile = HOME(2)+"classes\registry.prg"
SET PROCEDURE TO (m.regfile) ADDITIVE
oReg = CreateObject("FoxReg")
DIMENSION aFoxOptions[1,2]
m.nErrNum = oReg.EnumFoxOptions(@aFoxOptions)

El siguiente código llama al método SetFoxOption de la clase FoxReg (definida en registry.prg) para establecer TALK OFF en el registro.

regfile = HOME(2)+"classes\registry.prg"
SET PROCEDURE TO (m.regfile) ADDITIVE
oReg = CreateObject("FoxReg")
m.nErrNum = oReg.SetFoxOption("TALK","OFF")

Vea también

Obtener información de la aplicación en el Registro de Windows (Ejemplo) | Acceso al registro | Registro del sistema de Aplicaciones | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Leer valores del registro de ODBC (Ejemplo)

Archivo: ...\Samples\Solution\WINAPI\Regodbc.scx

Este ejemplo muestra cómo tener acceso al registro de Windows usando el comando nativo de Visual FoxPro DECLARE-DLL. La API de Windows proporciona varias funciones que puede utilizar para tener acceso, leer y escribir en el registro. La biblioteca de clases Registry.prg situada en ...\Samples\Classes contiene una definición de clase que expone estas funciones como métodos a los que puede llamar en sus aplicaciones.

El registro contiene una lista de todos los controladores ODBC instalados y todos los orígenes de datos. Si su aplicación va a contar con el uso de ODBC, puede querer realizar una comprobación del registro para ver si tiene instalado un controlador en particular o un origen de datos. Este ejemplo muestra cómo consultar la información de ODBC.

LOCAL oReg,regfile,nErrNum,lDrivers
PUBLIC aODBCData
regfile = HOME(2)+"classes\registry.prg"
SET PROCEDURE TO (m.regfile) ADDITIVE
oReg = CreateObject("ODBCReg")
DIMENSION aODBCData[1]
m.nErrNum = oReg.GetODBCDrvrs(@aODBCData)

Vea también

Acceso al registro | Registro del sistema de ODBC | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Establecer comandos VFP Shell Open (Ejemplo)

Archivo: ...\Samples\Solution\Winapi\Shellopen.scx

Este ejemplo es una utilidad que sirve para modificar los valores de configuración de Shell Open de varios tipos de archivo (extensiones). Los valores de configuración de Shell Open controlan la apertura de archivos cuando se hace doble clic en ellos en el Explorador de Windows. Mientras que la versión anterior de los valores predeterminados de Visual FoxPro abría siempre un archivo en una instancia de Visual FoxPro que ya se estaba ejecutando, esta versión de los valores predeterminados de Visual FoxPro abre el archivo en una instancia nueva. Este ejemplo le permite controlar la apertura de archivos según el tipo de archivo.

Este ejemplo contiene las clases siguientes.

Clase | Biblioteca | Descripción
registry | _registry.vcx | Contiene rutinas para obtener acceso al registro de Windows.

Para obtener más detalles acerca de las clases disponibles en las Foundation Classes, vea Foundation Classes de Visual FoxPro (A-Z).

Vea también

Foundation Classes de Visual FoxPro (A-Z) | Recomendaciones para utilizar las Foundation Classes de Visual FoxPro


Utilizar las funciones de la API que requieren STRUCT (Ejemplo)

Archivo: ...\Samples\Solution\Winapi\Systime.scx

Este ejemplo muestra la llamada a la función de la API de Windows GetSystemTime. GetSystemTime rellena una estructura de tipo WORD (un entero de 16 bits sin signo) con información de la hora del sistema.

Declaración de la función C y definición de la estructura

VOID GetSystemTime(
LPSYSTEMTIME lpSystemTime    // dirección de la estructura del tiempo del sistema
);

Esta es la definición de la estructura:

typedef struct _SYSTEMTIME {
WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliseconds;
} SYSTEMTIME;

Llamar a funciones en Visual FoxPro

EL código de Visual FoxPro pasa una referencia de GetSystemTime a una variable de tipo carácter, que se rellena con los valores de tipo WORD.

* Visual FoxPro Code: cmdSystemTime.Click
DECLARE INTEGER GetSystemTime IN win32api STRING @
cBuff=SPACE(40)
GetSystemTime(@cBuff)

Para obtener la información de la variable de tipo carácter cBuff, el siguiente código convierte caracteres ASCII de 8 bits del año y mes en variables equivalentes de 16 bits.

THIS.Parent.lblYear.Caption = ALLTRIM(STR(ASC(SUBSTR(cBuff,2)) * 256 + ASC(SUBSTR(cBuff,1))))
THIS.Parent.lblMonth.Caption = MONTH_LOC + ALLTRIM(STR(ASC(SUBSTR(cBuff,4)) * 256 + ASC(SUBSTR(cBuff,3))))

Vea también

Utilizar funciones de la API que requieren punteros a matrices (Ejemplo) | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Utilizar funciones de la API que requieren punteros a matrices (Ejemplo)

Archivo: ...\Samples\Solution\Winapi\Syscolor.scx

Este ejemplo utiliza dos funciones de la API de Windows para obtener el valor del color del sistema (GetSysColor) en primer lugar, y después restablecer los colores del sistema con nuevos valores (SetSysColors). Dos de los tres argumentos requeridos por SetSysColors son punteros a matrices nativas de C.

GetSysColor

La función GetSysColor acepta un parámetro integer, un número entre 0 y 18 y devuelve un valor de tipo DWORD (un entero sin signo de 32 bits) indicando el valor del color actual.

DWORD GetSysColor(
int nIndex    // elemento mostrado
);

nIndex es un valor que representa un área de la interfaz, como se define en la lista siguiente.

#define COLOR_SCROLLBAR         0
#define COLOR_BACKGROUND        1
#define COLOR_ACTIVECAPTION     2
#define COLOR_INACTIVECAPTION   3
#define COLOR_MENU              4
#define COLOR_WINDOW            5
#define COLOR_WINDOWFRAME       6
#define COLOR_MENUTEXT          7
#define COLOR_WINDOWTEXT        8
#define COLOR_CAPTIONTEXT       9
#define COLOR_ACTIVEBORDER      10
#define COLOR_INACTIVEBORDER    11
#define COLOR_APPWORKSPACE      12
#define COLOR_HIGHLIGHT         13
#define COLOR_HIGHLIGHTTEXT     14
#define COLOR_BTNFACE           15
#define COLOR_BTNSHADOW         16
#define COLOR_GRAYTEXT          17
#define COLOR_BTNTEXT           18
#define COLOR_INACTIVECAPTIONTEXT 19
#define COLOR_BTNHIGHLIGHT      20
#if(WINVER >= 0x0400)
#define COLOR_3DDKSHADOW        21
#define COLOR_3DLIGHT           22
#define COLOR_INFOTEXT          23
#define COLOR_INFOBK            24
#define COLOR_DESKTOP           COLOR_BACKGROUND
#define COLOR_3DFACE            COLOR_BTNFACE
#define COLOR_3DSHADOW          COLOR_BTNSHADOW
#define COLOR_3DHIGHLIGHT       COLOR_BTNHIGHLIGHT
#define COLOR_3DHILIGHT         COLOR_BTNHIGHLIGHT
#define COLOR_BTNHILIGHT        COLOR_BTNHIGHLIGHT
#endif /* WINVER >= 0x0400 */

SetSysColors

La función SetSysColors requiere tres argumentos: las direcciones de dos matrices y su número de elementos.

BOOL WINAPI SetSysColors(
int cElements,                  // número de elementos a cambiar
CONST INT *lpaElements,         // dirección de la matriz de elementos
CONST COLORREF *lpaRgbValues    // dirección de la matriz de los valores RGB
);

Llamar a SetSysColors en Visual FoxPro

El código siguiente está extraído de cmdSetSysColors.Click:

DECLARE INTEGER SetSysColors IN win32api INTEGER, STRING, STRING

Construye el elemento de la primera matriz en una variable de tipo carácter.

cElements = ""
FOR i = 0 TO 18
cElements = cElements + THISFORM.DecToHex(i)
ENDFOR

Construye los elementos de la segunda matriz en una variable de tipo carácter. El cursor que se está explorando se rellena con valores GetSysColor en el evento Init del formulario.

cColors = ""
SCAN
cColors = cColors + THISFORM.DecToHex(INT(color))
ENDSCAN
=SetSysColors(18,cElements,cColors)

Vea también

Utilizar las funciones de la API que requieren STRUCT (Ejemplo) | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Ejemplo de ver información de la biblioteca de tipos

Archivo: ...\Samples\Solution\Winapi\Typelib.scx

El ejemplo TYPELIB utiliza una clase de Visual FoxPro denominada Typelib, que está almacenada en ...\Samples\Classes\Typelib.vcx. Esta clase contenedora tiene un control ActiveX llamado FoxTlib que contiene varios métodos para leer la información de la biblioteca de tipos de cualquier archivo .dll, .exe o .tlb.

La clase encapsuladora Typelib le ahorrará tiempo realizando por usted gran parte del trabajo pesado. Hay un método llamado ExportTypeLib en esta clase que exporta a un archivo de texto el contenido de una biblioteca de tipos especificada:

THISFORM.typelib1.TypeLibName = THISFORM.txtFileName.Value
THISFORM.typelib1.ExportTypeLib( )

Si examina el archivo de texto generado, observará que una biblioteca de tipos consiste en muchas Informaciones de tipos. Cada información de tipo representa una clase específica. Cuando genere un EXE o DLL nuevo desde un proyecto utilizando Visual FoxPro, cada clase del proyecto que esté marcado como OLEPUBLIC generará un Servidor OLE personalizado diferente. Cuando el usuario genera un nuevo archivo EXE o DLL desde un proyecto con Visual FoxPro, cada clase del proyecto marcada como OLEPUBLIC, generará un servidor OLE personalizado individual.

Nota Usted sólo tiene un archivo .exe o .dll; sin embargo, este archivo puede contener varios servidores (uno por cada clase OLEPUBLIC). Además, Visual FoxPro genera un archivo .tbl único para el proyecto. Esta biblioteca de tipos contiene una Información de tipo diferente para cada clase OLEPUBLIC.

Dentro de cada Información de tipo (clase OLEPUBLIC), hay también descripciones de funciones. Representan todas las propiedades y métodos de una clase. Para los métodos, la biblioteca de tipos contiene los parámetros y los tipos que devuelve. Algunos de los tipos posibles son boolean, string y variant. Puesto que Visual FoxPro no trabaja con tipos de variables de memoria potentes, algunos de los tipos utilizados en sus métodos personalizados serán variant.

Si examina las funciones exportadas, encontrará entradas duplicadas en muchas de las propiedades. Esto se debe a que los usuarios pueden establecer u obtener el valor de esa propiedad. Algunos lenguajes, como Visual Basic, le permiten tener código ejecutándose cuando se está asignando o teniendo acceso a una de esas propiedades. Por lo tanto, la biblioteca de tipos representará una única propiedad con dos entradas. Si sólo existe una entrada, entonces la propiedad es de sólo lectura. Las propiedades y los métodos que están marcados como Ocultos o Protegidos no aparecerán en la biblioteca de tipos.

Vea también

Biblioteca de tipos | Ejemplos de Soluciones | Foundation Classes de Visual FoxPro (A-Z)


Guias

Las guías le dan instrucciones paso a paso de escenarios comunes que las convierte en un buen lugar para empezar el aprendizaje acerca de Visual FoxPro sobre un tema en particular.

En esta sección

Guía: Crear aplicaciones con Visual FoxPro
Explica los pasos para crear programas sencillos, incluyendo movilización de datos y creación de formularios, y muestra como usarlos, como base para las aplicaciones.
Guía: Crear informes con Visual FoxPro
Muestra los pasos para la creación de informes usando el Asistente y el Diseñador de informes, y muestra los pasos a considerar cuando se planifican y crean los informes.
Guía: Recuperar datos desde diferentes origenes
Indica los pasos para recuperar Datos desde tablas nativas de Visual FoxPro o usando Conexión Abierta de Base de Datos (ODBC), ActiveX Data Objects (ADO), o Origenes de Datos XML.
Guía: Crear tablas con Visual FoxPro
Nos orienta sobre como crear tablas nuevas, así como modificar las ya existentes y muestra las diferentes herramientas para acceder y manipular todo tipo de Datos rápidamente.
Guía: Crear Servicios Web XML con Visual FoxPro
Nos enseña como crear y publicar un servidor COM de Visual FoxPro y un servicio Web XML.
Guía: Crear un programa de instalación de una aplicación Visual FoxPro utilizando InstallShield Express
Nos explica los pasos para compactar y implementar una aplicación usando el InstallShield Express, permitiéndo a los usuarios instalar y configurar sus productos eficientemente.

Secciones relacionadas

Uso de Visual FoxPro
Microsoft Visual FoxPro suministra las herramientas necesarias para crear y administrar Aplicaciones de Base de Datos y componentes de 32-bit de alto rendimiento. Con sus herramientas robustas y un lenguaje orientado a Objeto basado en Datos, se pueden crear aplicaciones modernas, escalables, y de capas multiples que integran programación tipo cliente /servidor e Internet.
Introducción a las características de Visual FoxPro
Visual FoxPro da más de lo que se espera en el manejo de Sistemas de Base de Datos (DBMS): Velocidad, Poder, y Flexibilidad.
Personalizar el Entorno de Visual FoxPro
Describe como, después de instalar Visual FoxPro, se puede personalizar el entorno de desarrollo tales como el título de la ventana principal, directorio predeterminado, el editor, el depurador, las opciones de herramientas, almacenamiento de archivos temporales, asignación de campos para las tareas de arrastrar y soltar, y otras muchas opciones.
Desarrollar aplicaciones Visual FoxPro
Incluye información conceptual acerca de como desarrollar aplicaciones en Visual FoxPro, instrucciones para crear Bases de Datos e interfases de usuario, y otras tareas para crear aplicaciones.
Programar en Visual FoxPro
Explica como entender las técnicas de programación orientada a Objetos y el modelo de manejo de Eventos, que pueden mejorar la productividad para acceder a toda la potencia de Visual FoxPro.
Herramientas de productividad para el desarrollo
Muestra como Visual FoxPro facilita herramientas de desarrollo de aplicaciones entre una aplicación Foxpro y el lenguaje.


Guía: Crear aplicaciones con Visual FoxPro

Con Visual FoxPro puede crear programas simples o aplicaciones empresariales elaboradas, servidores y servicios Web XML (Web Services). Por el diseño único de Visual FoxPro, se puede escribir un programa, hacer que Visual FoxPro cree un programa, o cualquier combinación de ambas posibilidades usando código, menús, asistentes, diseñadores, generadores, objetos y demás.

Contenido

Introduccción

Usar datos

Crear un programa para un formulario

Crear una aplicación

Introducción

Los programas de Microsoft Visual FoxPro (Archivos .prg) se crean fácilmente usando las opciones de menú o las herramientas de Visual FoxPro, tales como diseñadores, asistentes y generadores. Las aplicaciones, son programas de Visual FoxPro que fueron compilados luego de su creación, y convertidos en archivos .app para correr en un entorno de Visual FoxPro o en archivos .exe o .dll para ser llamados desde cualquier lugar en un entorno de Microsoft Windows.

Este texto lo guía a través de los pasos necesarios para crear un programa simple y luego le muestra como usarlo como base para una aplicación.

Usando Datos

Los programas y aplicaciones de Visual FoxPro están basados en datos de tablas o cursores. Los datos pueden estar alojados en el disco duro, en un servidor remoto o sitio Web, o pueden ser creados con Visual FoxPro. Los datos pueden estar en cualquiera de los formatos reconocidos por Visual FoxPro, incluyendo objetos OLE.

Para esta aplicación de ejemplo, se usarán datos copiados desde la tabla Orders, que se incluye con Visual FoxPro en la carpeta \Program Files\Microsoft Visual FoxPro 8\Samples\Data.

Mover datos de una tabla a otra

  1. En el menú Archivo, elija Exportar.
  2. En la lista desplegable Tipo del cuadro de diálogo Exportar, seleccionar Visual FoxPro 3.0 (DBF).
  3. En el cuadro de texto A, escriba miAplic como el nombre del archivo a crear.
  4. Elija el botón Puntos suspensivos (...) y guardar el archivo en la carpeta Visual FoxPro Projects (..\Mis Documentos\Visual FoxPro Projects).
  5. En el cuadro de texto Desde del cuadro de diálogo Exportar, hacer clic en el botón Puntos suspensivos (...), y busque la tabla Orders.dbf en la carpeta \Archivos de Programa\Microsoft Visual FoxPro 8\Samples\Data.
  6. En el cuadro de diálogo Exportar, elija Opciones.
  7. En el cuadro de diálogo Opciones de Exportación, elija Campos, mover cust_id, to_city, to_country y order_amt desde la lista Todos los campos a la lista Campos seleccionados y luego elija Aceptar. Hacer clic en Aceptar dos veces más para cerrar el cuadro de diálogo Opciones de Exportación y el cuadro de diálogo Exportar.
  8. En el menú Archivo, elija Abrir.
  9. En la lista desplegable Tipo, elegir Tabla, marcar la casilla de verificación Abrir exclusivo, y buscar miAplic.dbf.
  10. En el menú Ver, elejir Diseñador de Tablas.
  11. En la solapa Campos, seleccionar el campo to_city, hacer clic en la lista desplegable Índice y elija Ascendente.
  12. Elegir Aceptar y haga clic en Sí para hacer permanente el cambio de estructura.
  13. En el menú Ventana, elija Sesión de datos para ordenar la tabla de acuerdo con el nuevo índice.
    Nota Se ha creado una tabla que por ser indexada, soporta cálculos de grupos en el Diseñador de informes.
  14. En la ventana Sesión de datos elija Propiedades.
  15. En la lista desplegable Orden del índice elegir miAplic_to_city y luego hacer clic en Aceptar.

    Se han exportado campos seleccionados de una tabla a otra y se ha establecido un índice en la nueva tabla. Dejar abierta la ventana Sesión de datos y usar esta tabla para el resto del ejemplo.

Crear un programa para un formulario

Se pueden crear programas simples de Visual FoxPro desde los menús y utilizando el entorno de programación interactivo (IDE). Estos programas pueden ser ejecutados ya sea en Visual FoxPro o accediendo al Runtime de Visual FoxPro.

Crear un formulario

  1. En el menú Archivo elegir Nuevo.
  2. Hacer clic en Formulario y luego Nuevo archivo.

    Esto abre el Diseñador de Formularios, agrega el menú Formulario y la barra de herramientas Controles de formularios, y muestra la ventana Propiedades para el formulario. Si la barra de herramientas no es visible, se puede abrir desde el menú Ver.

  3. En la ventana Propiedades del formulario seleccionar Caption y escribir miFormulario.

Agregar una etiqueta

  1. En la barra de herramientas Controles de formularios, elegir Etiqueta y arrastrar haciendo un rectángulo sobre el formulario.
  2. En la ventana de propiedades para el control etiqueta, seleccionar Caption y cambiarlo por Mi Formulario de Datos. Después, seleccionar FontSize y escribir 20.
  3. Si es necesario, cambie el tamaño de la etiqueta para que entre el texto.

Agregar un cuadrícula

  1. En la barra de herramientas Controles de formularios elija Grid y arrastre dibujando un rectángulo sobre el formulario.
  2. Hacer un clic con el botón secundario del ratón sobre la cuadrícula y seleccionar Generador desde el menú contextual.
  3. En el Generador de cuadrículas elegir la tabla miAplic.
  4. En la solapa Elementos del cuadrícula, mover todos los campos de la lista Campos disponibles a la lista Campos Seleccionados y luego cerrar el generador con el botón Aceptar.

Agregar un botón.

  1. En la barra de herramientas Controles de formularios hacer un clic el icono Botón de comando y luego arrastrar dibujando un rectángulo sobre el formulario debajo de la cuadrícula.
  2. Hacer un doble clic sobre el botón recientemente creado y escribir el siguiente código en la ventana de edición. Cerrar la ventana de edición al terminar.
    THISFORM.RELEASE

    Este código cerrará el formulario cuando así lo requiera.

  3. En la ventana de propiedades para el control botón de comando seleccionar Caption y escribir Salir.
  4. En el menú Archivo elegir Guardar como y guardar el formulario como miFormulario.
  5. Haga clic en Ejecutar (!) de la barra de herramientas para hacer una vista previa del formulario.

Completar el programa

  1. En el menú Archivo elegir Nuevo.
  2. Elija Programa y luego Nuevo archivo. Esto abre la ventana de edición de Visual FoxPro.
  3. En la ventana de edición escriba lo siguiente:
    DO FORM miFormulario.scx
  4. Guardar este programa como miPrograma. Esto crea un programa Visual FoxPro (Archivo .prg) para ejecutar el formulario, con el siguiente comando desde la ventana Comandos:
    DO miPrograma

Hasta ahora se ha ubicado una tabla (como un cuadrícula), una etiqueta y un botón sobre un formulario y se ha creado el programa que se ejecutará desde la ventana de comandos o desde el menú Programa. En la siguiente sección, la aplicación intercambia datos con otro formulario de revisión y lo agrega a la aplicación para compilarlo en un archivo.

Crear una aplicación

Para poder ejecutar el programa creado, se requiere que Visual FoxPro este instalado en el PC. Sin embargo, se puede crear una aplicación con Visual FoxPro para ser ejecutado en un PC que no tenga instalado Visual FoxPro.

El programa anterior sólo contiene un formulario y no tiene mucha funcionalidad. Esta sección es una guía de cómo agregar un formulario de revisión de datos con algunos controles adicionales y luego compilar los dos formularios: primero en una aplicación Visual FoxPro y luego en una aplicación Windows. Una aplicación Visual FoxPro (archivo .app) o un ejecutable Visual FoxPro (archivo .exe) pueden ejecutarse sobre plataforma Windows si Visual FoxPro está instalado. Una aplicación Visual FoxPro compilada como un ejecutable (archivo .exe) puede ser ejecutada sobre plataforma Windows solo si está instalado el Runtime de Visual FoxPro.

En esta sección, se creará una aplicación usando el Asistente para aplicaciones, el Generador de aplicaciones y el Administrador de proyectos.

  • El Asistente para aplicaciones crea un proyecto y proporciona un framework avanzado de aplicaciones, con el que se pueden agregar componentes que ya hubieran sido creados o bien crear una aplicación desde el principio hasta el final, incluyendo ventanas de presentación y otras mejoras.
  • El Generador de aplicaciones hace posible crear y agregar tablas, formularios e informes a un proyecto existente.
  • El Administrador de Proyectos es la herramienta fundamental de generación de aplicaciones en Visual FoxPro, proporciona acceso a todos los componentes que se desea incluir en la aplicación y los contiene para su compilación.

Para esta aplicación, primero usaremos el Asistente para aplicaciones.

Crear una aplicación

  1. En el menú Herramientas, hacer clic en Asistentes y elegir Aplicación.
  2. En el cuadro de texto Nombre del proyecto, escribir MiAplicación, guardar el proyecto en la carpeta Visual FoxPro Projects (..\Mis Documentos\Visual FoxPro Projects) y luego hacer clic en Aceptar.

Visual FoxPro se prepara para crear un archivo de proyecto con el nombre especificado. Cuando ha terminado de crear el proyecto, aparecen dos ventanas: el Administrador de proyectos y el Generador de aplicaciones. En los siguientes procedimientos, se usará el Generador de aplicaciones para añadir componentes y funcionalidad a la aplicación.

Especificar información para la ventana de presentación y el diálogo Acerca de...

  1. En la solapa General del Generador de aplicaciones, hacer clic en el botón Puntos suspensivos (...) al lado del cuadro Imagen.
  2. Encontrar el logo de Visual FoxPro, fox.bmp, en la carpeta de Visual FoxPro (..\Archivos de Programa\Microsoft Visual FoxPro 8) y hacer clic en Aceptar. Esta imagen aparecerá en la ventana de presentación de la aplicación.
    Nota Si se cierra el Generador de aplicaciones, se puede reabrir desde el menú Herramientas, eligiendo Asistentes y haciendo clic en Todos los asistentes.... Elegir Generador de aplicaciones en el cuadro de diálogo Selección de asistente y luego hacer clic en Aceptar.
  3. En la solapa Créditos del Generador de aplicaciones agregar la información apropiada sobre el autor y la versión.

Especificar el origen de datos

  • En la solapa Datos elija Seleccionar, busque y seleccione miAplic (la tabla usada anteriormente en el programa simple).
    Nota Se puede elegir cualquier tabla disponible aquí. Esta solapa también proporciona botones con los que se pueden crear tablas o bases de datos fácilmente.

Crear un formulario y un informe

  • En la solapa Datos se pueden seleccionar plantillas de formularios e informes que son parte del Framework Avanzado de Aplicaciones (incluido en el Generador de aplicaciones). Aceptar los valores por defecto en las listas desplegables y luego pulsar Generar.

    Visual FoxPro genera un formulario y un informe desde la tabla que se ha especificado y permite el acceso a ellos desde las solapas Formularios e Informes del Generador de aplicaciones. Estos componentes se convierten en partes del proyecto que se está construyendo y los archivos se guardan en las carpetas Forms y Reports respectivamente de la carpeta de Proyectos de Visual FoxPro (..\Mis Documentos\Visual FoxPro Projects).

Agregar controles al formulario

  1. En la solapa Formularios del Generdor de aplicaciones, elija Editar para abrir el Diseñador de Formularios, donde se pueden realizar cambios o adiciones.

    Tal como está, el formulario mostrará solamente el primer registro, de manera que es necesario agregar por lo menos un control más. En este procedimiento se agregarán otros dos controles.

  2. En la barra de herramientas del Diseñador de Formularios, hacer clic en el icono Botón de comando y arrastre dibujando un rectángulo en el formulario. En la propiedad Caption escribir Siguiente.
  3. Hacer doble clic sobre el botón Siguiente en el formulario y escribir el siguiente código en la ventana de edición de código. Cerrar la ventana de edición de código al terminar.
    IF ! EOF()
SKIP
THISFORM.REFRESH
ELSE
GO TOP
ENDIF

    Este código recorre los registros de la tabla y muestra cada uno de ellos hasta llegar al final. También se podría agregar otro botón, con el código apropiado, para mover el puntero de registro hacia atrás en la tabla.

  4. Copiar el botón Siguiente y colocar la copia en el extremo derecho del formulario. En la propiedad Caption escribir Salir.
  5. Hacer doble clic sobre el botón Salir y, en la ventana de edición del evento Click, reemplazar el código en la ventana con lo siguiente y luego cerrar la ventana.
    THISFORM.RELEASE

    Este código cierra el formulario.

Agregar cálculos al informe

  1. En la solapa Informes del Generdor de Aplicaciones hacer clic en Editar para MiAplic con el fin de abrir el Diseñador de Informes. Expandir todas las bandas del informe para que sea más fácil realizar las siguientes operaciones.
    Nota Es aquí donde se pueden realizar adiciones o modificaciones, tales como reordenar campos o añadir controles.
  2. En el menú Ver hacer clic en Entorno de datos....
  3. Hacer clic con el botón secundario del ratón sobre la ventana del Entorno de datos y seleccionar Propiedades desde el menú contextual.

    Esto mostrará la ventana de propiedades para el Entorno de datos.

  4. En la ventana de propiedades, elegir el cursor desde la lista desplegable Descripción de propiedades y cambiar la propiedad Order a to_city para hacer posible el agrupado.
  5. En el menú Informe elegir Agrupar datos.
  6. En el cuadro de diálogo Agrupar datos hacer clic en el botón Puntos suspensivos (...) bajo Expresiones de agrupación. En el Generador de expresiones hacer doble clic sobre to_city en la lista de Campos. Hacer clic en Aceptar en ambos cuadros de diálogo.
  7. En el Diseñador de informes, copiar y pegar el elemento to_city y luego arrastrar el elemento pegado desde la banda de Detalle a la banda Pie de grupo para totales de grupo. Repetir este procedimiento para colocar otra copia del elemento to_city en el Pie de página para el total general de la tabla.
  8. Para cada copia del elemento to_city hacer doble clic sobre él para abrir el cuadro de diálogo Expresión de informe.
  9. Hacer clic en Cálculos.
  10. En el cuadro de diálogo Calcular campo elegir Recuento.

    La lista desplegable Restablecer debería mostrar la selección por defecto, que es el campo to_city. Esto significa que la función Recuento se reiniciará a cero cada vez que cambie el valor del elemento to_city al recorrer la tabla. Esto es correcto para la banda Pie de grupo pero se debe cambiar esta selección para el elemento to_city en la banda de Pie de página.

  11. Después de seleccionar Recuento en el cuadro de diálogo Calcular campo del elemento to_city que se ha colocado en la banda Pie de página, cambiar el valor de Restablecer a Fin de informe.
  12. Después de establecer el Calcular campo para cada elemento to_city, hacer clic en Aceptar para cerrar el cuadro de diálogo.
  13. Hacer clic en Aceptar para cerrar el Generador de aplicaciones.
Nota Adicionalmente a las características que fueron especificadas en el Asistente para aplicaciones, Visual FoxPro crea otros componentes para la aplicación. Cuando se la ejecute, se podrá usar un menú Archivo personalizado y un cuadro de diálogo desde el cual se puede ejecutar el formulario y el informe.

Ahora se puede usar el Administrador de proyectos para revisar los componentes que se han creado. Encontrará que el Asistente para aplicaciones ha creado muchos componetes que pueden ser modificados con el Generador de aplicaciones y los diseñadores de formularios e informes. Estos componentes se pueden examinar y modificar con varias herramientas de Visual FoxPro, tales como los diseñadores o el Examinador de clases y el Examinador de objetos.

En este punto, el uso más importante que se le puede dar al Administrador de proyectos es compilar todos los componentes del proyecto en una aplicación.

Generar la aplicación

  1. En el Administrador de proyectos elegir Generar.
  2. Hacer clic en Aplicación (app) para crear una aplicación que pueda ser ejecutada sólo en Visual FoxPro.
    Nota Si se selecciona Ejecutable Win 32 o servidor COM (exe) se crea una aplicación que puede ejecutarse en un PC que tenga sólo el Runtime de Visual FoxPro instalado.
  3. Hacer clic en Aceptar.

Cuando el proceso de generación se completa, se tiene una aplicación que se puede ejecutar haciendo un doble clic sobre el archivo .app. Cuando el programa se inicia, muestra la ventana de presentación y luego el cuadro de diálogo Inicio rápido desde el que se puede visualizar el formulario y el informe. La aplicación también proporciona una opción del menú para Inicio rápido.

Para más información sobre la creación de programas y aplicaciones, ver Asistente para aplicaciones y Generador de aplicaciones.

Para más información sobre el Administrador de proyectos y para detalles sobre las opciones de la generación de aplicaciones, ver Ventana Administrador de proyectos y Cuadro de diálogo Opciones para generar.

Vea también

Asistente para aplicaciones | Generador de aplicaciones | Guías paso a paso

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Crear informes con Visual FoxPro

Esta guía muestra como crear informes en Visual FoxPro y trata temas a considerar más allá del acceso directo a los datos y temas relacionados con la planificación y creación de informes en línea y fuera de conexión. Puede utilizar el Asistente para informes, para obtener rápidamente un informe de cualquier tabla simple o relacionada. Si quiere personalizar su informe, o agregar elementos que no son datos, utilice el Diseñador de informes.

Contenidos

Introducción

¿Qué son los datos?

Planificar un Informe

Crear informes de una tabla simple

Crear informes de múltiples tablas

Introducción

Aunque los datos de Microsoft Visual FoxPro pueden ser mostrados en pantalla simplemente con una ventana Examinar o un formulario, el diseño apropiado de los informes ayuda a la claridad, legibilidad y distribución de los datos entregados para información del usuario. Los Informes son excelentes para mostrar y distribuir la información disponible en los datos, porque ellos son fácilmente repetidos, duplicados y compartidos.

Es fácil generar un informe simple en Visual FoxPro. Verdaderamente, las mismas herramientas que utiliza para crear tablas, proporcionan formas que inmediatamente permiten ver todos los datos disponibles (para mayor información, ver Guía: Crear tablas con Visual FoxPro.

El Diseñador de informes o Asistente para informes son especialmente útiles si quiere crear informes que muestren en una vista las relaciones o información combinada entre dos o más tablas. Este tema utiliza el Asistente para informes, para crear dos informes - un informe simple con una tabla y un informe con múltiples tablas.

¿Que son los datos?

Visual FoxPro trata con datos que están en tablas. Los datos son discretos y pueden ser encontrados en un amplio rango de tipos. Visual FoxPro puede acceder a la mayor parte de éstos, pero el acceso a menudo no es suficiente. Para utilizar datos efectivamente, debe convertir estos en información, es decir, debe informarlos. Esto no es un proceso mágico. La utilidad puede ser tan simple como una pequeña pre-planificación. La eficacia puede requerir mayor esfuerzo. Generalmente, pasará más tiempo utilizando o diseñando informes que el empleado creando tablas.

Planificar un Informe

Con los informes, la planificación no sólo es importante, también es recurrente y algunas veces recursiva. Utilice un informe cuando quiera obtener la misma información repetidamente o cuando quiera fomentar una actividad específica o ayudar a procesos particulares.

Un informe efectivo es aquel que hace posible que pueda utilizar la información rápidamente, si utiliza todos los datos disponibles o no. La forma de comenzar con la planeación de un informe es pensar como será utilizado.

A menudo, la información es más inspiradora o generadora de opinión cuando está formateada apropiadamente o cuidadosamente organizada. Por ejemplo, si se está preparando para una reunión de asesores, podría ser útil crear informes en los que los datos están organizados por responsabilidades de los asesores, así como por tiempo, región geográfica, o relaciones financieras. Si se trata de su lista de contactos o libreta de direcciones, podría hallar útil crear uno o más informes organizados por código postal (estado), o mes de cumpleaños, código de área telefónico, etc. .

Cuando reúne la información para los registros en una libreta de direcciones o lista de contactos, ingresa toda la información acerca de cada uno en forma individual; no obstante, podría crear cada registro varias veces en diferentes lugares. Aún si crea varios registros al mismo tiempo, completará un registro antes de comenzar con el próximo. Varios registros pueden tener valores idénticos, pero sin un informe puede ser difícil conocer cuáles o cuantos son. Puede ser importante y útil tener una forma de ver esas y otras relaciones.

Informes en línea o impresos

Si está listo para mostrar datos en línea o en una impresora, hay algunos temas que deberá considerar:

  • Desplazamiento Si su información no puede ser mostrada en una página de la pantalla, entonces considere separarla en páginas mas que tener un desplazamiento largo. Además, considere una organización visual diferente de los datos, tales como etiquetas, posición, o el uso de espacios en blanco.
  • Etiquetas Esto influye tanto en la visión (dónde ven la información los usuarios) como en el pensamiento (que es lo que los usuarios esperan encontrar).
  • Espaciado y posición Esto puede ser tan importante como el tamaño de la letras para el enfoque y la claridad.
  • Espacios en blanco La mayoría de las personas no disfruta leer bloques largos de texto en línea, así, es mejor utilizar espacios en blanco que hacen que el informe sea más efectivo.
  • Localización Es tan importante la posición real de la pantalla, como la forma de ser mostrado. Hacia arriba, al centro, a la derecha, y hacia la izquierda son a menudo las áreas más importantes de la pantalla.

Si su informe puede acceder a la información en segundo plano o directamente a los datos relevantes en lugar de mostrarlos siempre, entonces un informe básico es más efectivo ( y tiene más espacio para la información más importante).

Crear un informe de una tabla simple

Si solo quiere mostrar lo que tiene, utilice la ventana de Examinar con cualquier tabla.

Acceder a la ventana Examinar

  1. Desde el menú Archivo, abrir la tabla.
  2. En el menú Vista, seleccione Examinar.

Si quiere imprimir o enviar por correo un informe en forma rápida, puede exportar el archivo como texto, y entonces imprimirlo o enviarlo por correo electrónico. Las opciones del cuadro de diálogo Exportar le permiten seleccionar parte de la tabla para convertirla a texto. (Recuerde verificar la orientación del papel para tablas amplias.)

Crear un informe con datos de una tabla como texto en forma rápida

  1. En el menú Archivo, haga clic en Abrir.
  2. En el cuadro de diálogo Abrir, seleccione Tabla en la lista desplegable Tipo de archivos, localice la tabla que quiere, y haga clic en Aceptar.
  3. En el menú Vista, haga clic en Examinar.

    Esto mostrará la tabla seleccionada. Al mismo tiempo, en el IDE, puede cambiar los anchos de las columnas o la posición, o puede realizar cambios permanentes desde el menú Tabla.

  4. En el menú Archivo, haga clic en Exportar.
  5. En el cuadro de diálogo Exportar, seleccione Texto delimitado en el cuadro combinado Tipo.

    Si fuera a utilizar la tabla en otra aplicación, tal como Microsoft Excel, deberá seleccionar la aplicación de la lista y la tabla será convertida al formato apropiado y guardada con la extensión correcta.

  6. Haga clic en A, e ingrese el nuevo nombre del archivo, incluyendo la extensión.
  7. En el cuadro combinado Separador de campo, seleccione el delimitador que quiere para el nuevo archivo, y entonces haga clic en Aceptar.

Asistente para informes de Visual FoxPro

Si busca tener presentaciones formales, resúmenes, calculos, o debe utilizar la misma información en forma repetida, entonces utilice el Asistente para informes o el Diseñador de informes para generar informes reutilizables, actualizables y modificables.

El Asistente para informes le indica con opciones que puede ser posible crear informes bien formateados de una o más tablas rápidamente. En muchas circunstancias, esos informes rápidos trabajan muy bien.

Utilizar el Asistente para informes

  1. En el menú Archivo, haga clic en Nuevo.
  2. En el cuadro de diálogo Nuevo, seleccione Informe.
  3. Haga clic en el botón Asistente, y seleccione el tipo de informe que quiere crear.

En el Asistente, puede previsualizar el informe antes de guardarlo. Además, puede grabarlo y luego abrirlo con el Diseñador de Informes para utilizarlo con el IDE de Visual FoxPro y agregar su diseño al informe.

Para experimentar con el Asistente para informes, utilice la tabla Labels.dbf, que viene con Visual FoxPro. Utilice los siguientes procedimientos para trabajar con un informe de una sola tabla

Crear un informe simple utilizando la tabla Labels.dbf

  1. En el menú Archivo, haga clic en Nuevo.
  2. En el cuadro de diálogo Nuevo, seleccione Informe y luego clic en el botón Asistente.
  3. En el cuadro de diálogo Selección de los asistentes, haga doble-clic en Asistente para informes.
  4. En el Asistente para informes, seleccione Tablas libres en el cuadro combinado Bases de datos y tablas, y seleccione o localice la tabla Labels.
  5. Seleccione cualquiera o todos los campos disponibles, y continúe con el asistente, realizando las selecciones apropiadas hasta el Paso 5.
  6. En el Paso 5, elija un estilo de informe y la orientación.

    Además, puede hacer clic en Opciones de Resumen y acceder a 5 funciones — Sum, Avg, Count, Min, y Max — para mostrar los campos en su informe. Las funciones seleccionadas son agregadas automáticamente con la etiqueta y posición apropiados.

  7. En el Paso 6, haga clic en el botón Vista Previa para ver el informe que se creará si hace clic en Finalizar. Puede imprimir la vista previa sin crear el archivo de informe.

    El Asistente para Informes crea etiquetas y selecciona tipos de letra, tamaño de letras, sangría, y otras características de estilo y formato para ayudarlo a convertir los datos de la tabla en información. A menudo, crear informes con el asistente es más rápido que crearlo copiando de la ventana Examinar, y los resultados a menudo se ven mucho mejor.

  8. Haga Clic en Finalizar.

Para mayor información, ver Asistente para Informes y Asistente para informes uno a varios.

Diseñador de informes de Visual FoxPro

Puede utilizar el Diseñador de informes para crear informes simples, llamados Informes Rápidos. Además, el Diseñador de informes es una herramienta poderosa para la creación de informes formateados. La principal diferencia entre usar el Asistente para informes y el Diseñador de informes es que el diseñador proporciona un mayor control de posición para los datos y otros contenidos.

Crear informes rápidos con el Diseñador de informes

  1. En el menú Archivo, haga clic en Nuevo.
  2. En el cuadro de diálogo Nuevo, seleccione Informe, y haga clic en el botón Nuevo archivo.
  3. En el menú Informe, haga clic en Informe rápido.

    Si tiene una tabla abierta, Visual FoxPro utilizará esta como origen de datos para su informe. Si no hay una tabla abierta, Visual FoxPro muestra el cuadro de diálogo Abrir, para que seleccione una tabla.

El Diseñador de informes llena las bandas Detalle y Pie de página. Después, le permite llenar los detalles. Así tiene más control que con el Asistente para informes; también tiene más responsabilidad. Su desea generar información, tal como sumas, promedios, o contar, utilice Agrupar datos en el menú Informe. Su condición para agrupar datos puede ser tan simple como el nombre del campo índice seleccionado en el Generador de expresiones.

Crear un informe que contenga cálculos

Para realizar esta acción, abra una tabla ordenada (indexada sobre cust_id), genere un Informe rápido básico, especifique el agrupamiento de datos, y luego especifique cómo y dónde se mostrarán los cálculos en el informe. Los pasos finales son vista previa, imprimir, y guardar el informe.

  1. Desde el menú Archivo, abrir la tabla ..\samples\DATA\orders.dbf.
  2. En el menú Ventana, haga clic en Sesión de datos y clic en Propiedades para la tabla orders.
  3. En el cuadro de diálogo Propiedades del área de trabajo elija Orders.cust_id como el Orden del índice, haga clic en Aceptar, y luego cierre el cuadro de diálogo Sesión de datos.
  4. En el menú Archivo, haga clic en Nuevo. El el cuadro de diálogo Nuevo, seleccione Informe, y luego haga clic en Nuevo archivo.
  5. En el menú Informe, haga clic en Informe rápido y luego seleccione en Diseño de campos el vertical.
    Nota Para este ejemplo, no necesita todos los campos, así que podría querer eliminar las etiquetas y campos a continuación de order_amt, así como las etiquetas y campos entre emp_id y order_date. Mover todos los campos juntos y redimensionar las bandas del informe.
  6. En el menú Informe, haga clic en Agrupar datos.
  7. En el cuadro de diálogo Agrupar datos, haga clic en el botón con puntos (...) bajo Expresiones de agrupación. En la lista de Campos del Generador de expresiones, haga doble clic en Orders.cust_id. Haga clic en Aceptar en ambos cuadros de diálogo.
  8. En el Diseñador de Informes, sitúe una copia del campo order_amt en la banda del Pie de grupo para agrupar totales, y sitúe otra copia en el Pie de página para la toda la tabla.
  9. Copie, pegue, y entonces arrastre los campos copiados de la banda Detalle.
  10. Para cada copia de order_amt, haga doble clic en el campo para abrir el cuadro de diálogo Expresión de informe.
  11. Haga clic en el botón Cálculos.
  12. Seleccione la función Suma del Grupo de opciones.

    El cuadro combinado Restablecer mostrará la selección predeterminada, la cual es el campo Order.cust_id. Esto significa que la función Suma restablece a cero cada vez que el valor del campo cust_id cambia al recorrer la tabla. Esto es bueno para la agrupación de subtotales, pero debe cambiar esta selección para el campo order_amt en la banda del Pie de página.

  13. Después de seleccionar la función Suma en el cuadro de diálogo Calcular campo del campo order_amt situado en la banda Pie de página, cambia el valor Restablecer a la opción Fin del Informe.
  14. Después de configurar Calcular campo de cada order_amt, cierre el cuadro de diálogo haciendo clic en Aceptar.

Utilice la vista previa para ver lo que ha creado y asegúrese que obtiene la información que esperaba. Grabe el informe si está satisfecho con este. La última página muestra el total para todas las órdenes, información no específicamente incluida en la tabla.

Mientras el Diseñador de informes está abierto, tiene acceso a herramientas y otros diseñadores, así puede revisar la tabla actual o modificar el entorno de datos seleccionando otras tablas o índices. Además, puede agregar funcionalidad al informe a través de la barra de herramientas Controles de informes y el menú Informe.

Para mayor información sobre el diseñador de Informes, vea Diseñador de informes y Cuadro de diálogo Bandas del diseñador de informes.

Crear informes de múltiples tablas

Además de los datos de una tabla simple, los informes de Visual FoxPro pueden mostrar datos de diversas tablas relacionadas y puede realizar cálculos y resúmenes.

Este procedimiento utiliza dos tablas, customer y orders, de la base de datos testdata.dbc en la carpeta Samples.

Crear un informe usando la base de datos Testdata que viene con Visual FoxPro

  1. En el menú Archivo, haga clic en Nuevo.
  2. En el cuadro de diálogo Nuevo, seleccione Informe, y haga clic en el botón Asistente.
  3. En el cuadro de diálogo Selección de los asistentes, haga doble clic en Asistente para informes uno a varios.
  4. En el Asistente para informes uno a varios, seleccione la base de datos TESTDATA en el cuadro combinado Bases de datos y tablas, y seleccione la tabla Customer.
  5. En el Paso 1 del asistente, resalte la tabla Customer, y seleccione los campos cust_id y Customer de la lista Campos disponibles.
  6. En el Paso 2, resalte la tabla Orders, y seleccione los campos cust_id, to_city, y order_amt de la lista Campos disponibles.

    En el Paso 3, verá la forma en que están relacionadas las dos tablas customer.cust_id a orders.cust_id; en otras palabras, las tablas están indexadas por campos coincidentes.

    Si quiere una relación diferente, deberá elegir del cuadro combinado para las tablas padre e hijo. Si usted cambia la relación especificada, debería asegurarse que ha elegido los campos correctos en los pasos 1 y 2.

  7. En el Paso 5, seleccione un estilo de informe y la orientación.

    Además, puede hacer clic en Opciones de Resumen para acceder a cinco funciones: SUM, AVG, COUNT, MIN, y MAX para los campos mostrados en su informe. Las funciones seleccionadas son agregadas automáticamente con la etiqueta y la posición apropiadas.

  8. En el Paso 6, haga clic en Vista previa para ver el informe que sus selecciones crearán si hace clic en Finalizar. Se puede imprimir la vista previa sin crear el archivo del informe.
  9. Haga clic en Finalizar.

Se puede crear el mismo informe en el Diseñador de informes, pero para especificar la Base de datos y las tablas, debe establecer en entorno de datos del informe. Luego utiliza el entorno de datos en un Informe rápido o arrastrando y colocando los campos necesarios en el IDE para crear su informe.

Para ejemplos de varias clases de informes que puede crear, vea el Ejemplos de Soluciones.

Para mayor información sobre utilizar informes, vea Utilizar expresiones y funciones en controles de campo.

Vea también

Asistente para informes | Asistente para informes uno a varios | Diseñador de informes | Cuadro de diálogo Bandas del diseñador de informes | Ejemplos de Soluciones | Utilizar expresiones y funciones en controles de campo | Guías paso a paso


Guía: Recuperar Datos desde Diferentes Orígenes de Datos

Esta guía le proporciona los pasos básicos para la recuperación de datos usando varios tipos de conexión de orígenes de datos. Puede crear cursores Visual FoxPro o cursor adapters usando los datos recuperados. Con Cursor adapters puede recuperar datos desde un rango más amplio de orígenes de datos que lo que es posible con los cursores convencionales.

Específicamente, esta guía explica cómo generar un entorno de datos para un formulario Visual FoxPro usando el Generador de Entorno de Datos y cómo crear cursor adapters en el entorno de datos usando el Generador CursorAdapter.

Esta guía requiere lo siguiente:

  • Orígenes de datos usando los siguientes tipos de conexión:
    • Nativa La base de datos Northwind.dbc incluida en Visual FoxPro y localizada en el directorio ...\Samples\Northwind
    • ODBC o ADO Acceso a un servidor SQL local o remoto (SQL Server 7 or 2000) con la base de datos Northwind.dbc instalada
    • XML archivo GetCustomers.XML DataSet incluido con Visual FoxPro y localizado en el directorio ...\Samples\Solution\Toledo
  • Un formulario de Visual FoxPro basado en la clase FrmSolution incluida en la biblioteca de clases Solution.vcx, la cual está localizada en la carpeta ...\Samples\Solution. Un formulario basado en la clase FrmSolution aparece de forma similar en los formularios usados en los ejemplos de soluciones.

Puede crear un formulario basado en la clase FrmSolution creando una categoría en el Cuadro de herramientas y creando un formulario basado en esta clase.

Para crear el formulario usado en esta guía

  1. En el menú Herramientas, elija Caja de herramientas.
  2. Haga clic con el botón secundario en la Caja de herramientas y seleccione Añadir categoría.
  3. En el cuadro de texto Nombre de categoría escriba un nombre de categoría.

    La categoria que ha creado aparece en el Cuadro de herramientas.

  4. En el Cuadro de herramientas, haga clic con el botón secundario en la nueva categoría y elija Añadir Biblioteca de Clases.
  5. En el cuadro de diálogo Añadir Biblioteca de Clases, haga clic en el botón puntos suspensivos (...), examine la carpeta ...\Samples\Solution, y seleccione Solution.vcx.

    Las clases de la biblioteca de clases aparecerán en la categoría que ha creado en el Cuadro de herramientas.

En el Cuadro de herramientas, haga clic con el botón secundario en frmsolution (SOLUTION), y elija Crear formulario.

Contenido

Introducción

Entorno de datos para un Formulario

Recuperar datos para Cursor Adapters

Usar Cursor Adapter en un Formulario

Introducción

En Visual FoxPro, puede recuperar datos desde orígenes de datos locales o remotos con los siguientes tipos:

  • Nativa
  • Conecividad Abierta de Base de Datos (ODBC)
  • Objetos de Datos ActiveX (ADO)
  • Lenguaje Extensible de Marcas (XML)

Puede crear cursores Visual FoxPro con los datos recuperados, basados en el tipo de origen de datos, a través de los cursor adapters. Cursor adapters proporciona las siguientes capacidades cuando se trabaja con diferentes origenes de datos:

  • Recuperar datos desde orígenes de datos con los tipos listados de origen de datos.
  • Controlar la carga de datos dentro del cursor asociado con el cursor adapter.
  • Controlar cómo los datos son agregados, actualizados y borrados usando las propiedades, y métodos del objeto CursorAdapter.
  • Agregar cursor adapters a contenedores distintos al entorno de datos, tales como un formulario, un conjunto de formularios, u otros contenedores.

Para mayor información acerca de cursor adapters, vea Manejo de datos utilizando CursorAdapters y Clase CursorAdapter.

Puede configurar un origen de datos y si es necesario, un tipo de conexión, que se aplique a todos los cursor adapters en el entorno de datos, usando el Generador de Entorno de Datos. Puede entonces crear rápidamente cursores que tienen propiedades específicas para el acceso de datos usando el Generador CursorAdapter.

Para mayor información, vea Generador de Entorno de datos y Generador de CursorAdapter.

Entorno de Datos para un Formulario

Cuando crea un formulario, Visual FoxPro crea un objeto DataEnvironment como un contenedor para los objetos Cursor, CursorAdapter, y Relation que están asociados con el formulario, un conjunto de formularios o un informe. Necesitará abrir y configurar el entorno de datos del formulario con el tipo apropiado y el origen de datos para recuperar datos a partir de éste.

Para mayor información acerca de los objetos DataEnvironment, vea DataEnvironment (Objeto).

Abrir el Entorno de Datos

Abra el entorno de datos del formulario y el Generador de Entorno de Datos antes de seleccionar el tipo de origen de datos y el origen de datos desde el cual se van a recuperar los datos.

Para abrir el entorno de datos del formulario y el Generador de Entorno de Datos

  1. Abra el formulario.
  2. En el Diseñador de formularios, haga clic con el botón secundario en el formulario, y elija Entorno de Datos para abrir el entorno de datos.

    Para un formulario con entorno de datos vacío, aparece el cuadro de diálogo Abrir.

  3. En el cuadro de diálogo Abrir, elija Cancelar.
  4. Para abrir el Generador de Entorno de Datos, haga clic con el botón secundario en la superficie del Entorno de Datos, y elija Generar.

    El Generador de Entorno de Datos se abre y muestra las siguientes fichas: Origen de Datos y Cursores.

Configurar los Tipos de Origen de Datos y los Orígenes de Datos

Establezca el tipo de origen de datos y configure el origen de datos apropiado que desea para recuperar datos, desde las opciones de configuración en la ficha Origen de Datos del Generador de Entorno de Datos.

Para seleccionar el tipo de origen de datos para el entorno de datos del formulario

  1. En el Generador de Entorno de Datos, elija la ficha Origen de Datos para hacerla visible si todavía no lo está.
  2. Sobre la ficha Origen de Datos, seleccione el tipo apropiado de origen de datos: ADO, Nativa, ODBC o XML.

Dependiendo de su selección, aparecerán las opciones apropiadas. El siguiente procedimiento muestra cómo establecer el entorno de datos para tablas nativas Visual FoxPro, ODBC, ADO y XML.

Para mayor información, vea Ficha Origen de datos, Generador de Entorno de datos.

Especificar Orígenes de Datos Nativos de Visual FoxPro

Siga el siguiente procedimiento para usar orígenes de datos nativos de Visual FoxPro.

Para configurar el entorno de datos para tablas nativas de Visual FoxPro

  1. Después de seleccionar Nativa sobre la ficha Origen de Datos, haga clic en el botón puntos suspensivos (...) a la derecha del cuadro de texto Base de Datos
  2. Examine el directorio ...\Samples y seleccione la base de datos Northwind.dbc.

Para continuar con esta guía, vea Recuperar datos para Cursor Adapters.

Especificar un Orígen de Datos usando ODBC

Siga el siguiente procedimiento para usar orígenes de datos conectados a través de ODBC.

Para configurar el entorno de datos del formulario para orígenes de datos usando ODBC

  1. Después de seleccionar ODBC en la ficha Origen de Datos, elija Usar cadena de conexión.
  2. Escriba la cadena de conexión para conectar a la base de datos Northwind.dbc en el servidor SQL Server local o remoto. Por ejemplo:
    Driver={Sql Server};Server=localhost;Database=Northwind;Int Security=yes;
    Nota Deberá tener acceso al servidor SQL Server local o remoto (SQL Server 7 or 2000) con la base de datos Northwind.dbc instalada. Si su servidor no es local, puede cambiar el valor del parámetro Server= en la cadena de conexión con el nombre del servidor remoto.
  3. Haga clic en Comprobar conexión para comprobar la conexión.

Si la conexión es exitosa, puede continuar y recuperar datos desde el origen de datos.

Para continuar esta guía, vea Recuperar datos para Cursor Adapters.

Especificar Orígen de Datos Usando ADO

Siga el siguiente procedimiento para usar orígenes de datos conectados a través de ADO.

Para configurar el entorno de datos del formulario para orígenes de datos que usan ADO

  1. Después de seleccionar ADO en la ficha Origen de Datos, elija Usar cadena de conexión.
  2. Escriba la cadena de conexión para conectar a la base de datos Northwind.dbc en su servidor SQL Server local o remoto. Por ejemplo:
    Provider=SQLOLEDB.1;Integrated Security=SSPI;Initial Catalog=Northwind;Data Source=localhost
    Nota Deberá tener acceso a un servidor SQL Server local o remoto con la base de datos Northwind.dbc instalada. Si su servidor SQL Server no es local, deberá cambir el valor del parámetro Data Source= en la cadena de conexión con el nombre del servidor remoto.
  3. Haga clic en Comprobar conexión para comprobar la conexión.

    Si la conexión es exitosa, puede continuar y recuperar datos desde el origen de datos.

Si desea generar una cadena de conexión en vez de escribir una sobre la ficha Origen de Datos, elija Generar para abrir el cuadro de diálogo Propiedades de enlace de datos en el Proveedor OLE DB de Visual FoxPro. Para mayor información, vea Proveedor OLE DB de Visual FoxPro.

Par continuar esta guía, vea Recuperar datos para Cursor Adapters.

Especificar Orígen de Datos XML

En esta guía, el método para crear cursor adapters desde XML muestra sólo un ejemolo de cómo puede acceder a un origen de datos XML, más especificamente, un archivo XML DataSet generado desde ADO.NET. El código actual puede variar dependiendo de sus necesidades específicas.

También puede usar Cursor Adapters con cursores generados desde XML con adaptadores XML u objetos XMLAdapter. Puede usar esta combinación para acceder a características más avanzadas del entorno, en tiempo de diseño, y vincular los controles de un formulario a campos en el Cursor Adapter. El adaptador XML desarrolla el trabajo actual en tiempo de ejecución.

Para configurar un Entorno de Datos para orígenes de datos XML

  • Después de seleccionar XML sobre la ficha Origen de datos, elija la ficha Cursores.

Cuando crea un Cursor Adapter desde XML, podrá usar el Generador CursorAdapter para configurar las propiedades del CursorAdapter. Sin embargo, necesitará crear un objeto XMLAdapter para cargar el XML dentro de su colección de Tablas. Después de crear el XML adapter, podrá cargar un archivo XML dentro del XML adapter, estableciendo el comando Select del cursor adapter a la referencia del objeto XMLTable deseado en la coleección de Tablas XMLAdapter Tables, y luego llamar al método CursorFill CursorAdapter para rellenar el cursor con datos XML.

Para continuar esta guía, vea Recuperar datos para Cursor Adapters.

Para mayor información acerca de cómo trabajan los cursor adapters con los XML adapters, vea Crear un cursor desde un DataSet XML (Ejemplo) como un ejemplo de cómo acceder a un archivo XML y generar el XML DiffGrams y Funcionalidad XML: Usando XMLAdapters.

Para mayor información acerca de XML adapters y a Cursor Adapters, vea XMLAdapter (Clase) y CursorAdapter (Clase).

Recuperar Datos para Cursor Adapters

Después de configurar el entorno de datos de un formulario en el Generador de Entorno de Datos para el origen de datos que desea usar, debe crear objectos CursorAdapter en el entorno de datos del formulario para recuperar datos desde un origen de datos. Puede crear objetos CursorAdapter configurando las opciones en la ficha Cursores del Generador CursorAdapter.

Para crear un nuevo Cursor Adapter

  1. En el Generador de Entorno de Datos, haga clic en la ficha Cursores para hacerla visible.
  2. Sobre la ficha Cursores, elija Nuevo para abrir el Generador CursorAdapter.

Aparece el Generador CursorAdapter, muestra las fichas Propiedades, Acceso de datos, y Actualización Automática, y crea un nuevo cursor adapter denominado Cursor1.

Para mayor información, vea Ficha Cursores, Generador de Entorno de datos.

Configurar las Propiedades de Cursor Adapters

Configure las propiedades de un nuevo cursor adapter editando las configuraciones en la ficha Propiedades del Generador CursorAdapter.

Para configurar las propiedades para un nuevo cursor adapter

  1. En el Generador CursorAdapter, haga clic en la ficha Propiedades para hacerla visible si todavía no lo está.
  2. Sobre la ficha Propiedades, edite el nombre para el Cursor1 si lo desea; renombre el alias del cursor adapter como Customer.
    Nota Usualmente, se escribe el nombre y el alias necesarios para el cursor adapter.
  3. Elija Usar Origen de Datos del Entorno de Datos para usar el origen de datos configurado previamente para el entorno de datos del formulario.

Para mayor información, vea Ficha Propiedades, Generador de CursorAdapter.

Especificar cómo el Cursor Adapters debe Recuperar Datos

Después de crear un nuevo Cursor Adapter, especifique cómo recuperará datos desde el origen de datos, estableciendo las opciones en la ficha Acceso de datos del Generador CursorAdapter.

Si está usando el tipo de origen de datos nativa, ODBC, o ADO, siga las instrucciones siguientes para generar el comando Select que recuperará datos desde un origen de datos. Si está usando el tipo de origen de datos XML, siga las instrucciones para especificar un archivo XML bien diseñado que contiene el diseño.

Para generar el comando Select en Orígenes de Datos nativos, ODBC, y ADO

  1. En el Generador CursorAdapter, haga clic en la ficha Acceso de datos para hacerla visible.
  2. Sobre la ficha Acceso de datos, elija Generar para abrir el cuadro de diálogo del Generador del comando Select.
  3. En el cuadro de diálogo del Generador del comando Select, seleccione la tabla CUSTOMERS de la lista de Tablas.

    Los campos que contiene la tabla CUSTOMERS aparecen en la lista en el lado izquierdo del cuadro de diálogo del Generador del comando Select.

  4. En la lista de la derecha, haga clic en CUSTOMERS.* para incluir la tabla CUSTOMERS y todos sus campos en el comando Select.
    Nota Usualmente, si desea seleccionar campos de forma individual en la tabla, para el comando Select, haga clic en NombreTabla.NombreCampo para agregar cada campo separadamente a la lista de campos seleccionados que aparece en el lado derecho del cuadro de diálogo del Generador del comando Select.
  5. Haga clic en la flecha simple derecha (>) para añadir CUSTOMERS.* a la lista de campos seleccionados, y luego elija Aceptar.

    El comando Select construido aparecerá en el cuadro de texto del Comando Select, y el esquema para el cursor adapter aparecerá en el cuadro de texto Esquema.

Puede establecer las opciones adicionales para la recuperación de datos. Sin embargo, esta guía usa la configuración predeterminada para estas opciones.

Nota En esta guía, el modo de almacenamiento en búfer para el cursor adapter, está configurado de forma predeterminada al modo de almacenamiento en búfer optimista de registro, en la ficha Acceso de datos para los tipos de origen de datos nativa, ODBC, y ADO. Sin embargo, cuando haga cambios en una fila de una cuadrícula de un formulario, y se mueva a otra fila, estos cambios serán enviados a la tabla Customer.dbf en el origen de datos a través de la conexión apropiada. Para mayor información acerca de modos de almacenamientos en búfer, vea BufferModeOverride (Propiedad).

Para mayor información acerca de las opciones adicionales que puede configurar, vea Ficha Acceso a datos, Generador de CursorAdapterer.

Para especificar un archivo XML para orígenes de datos XML

  1. En el Generador CursorAdapter, haga clic en la ficha Acceso a Datos para hacerla visible.
  2. Sobre la ficha Acceso a Datos, elija Generar localizada encima del cuadro de texto Esquema para mostrar el cuadro de diálogo Abrir.
  3. Examine la carpeta ...\Samples\Solution\Toledo\, y seleccione el archivo GetCustomers.XML.

    El esquema para el cursor adapter aparece en el cuadro de texto Esquema.

  4. En el cuadro de texto Anular modo de almacenamiento en búfer, seleccione Almacenamiento de tabla en búfer.
    Nota En esta guía, el modo de almacenamiento en búfer para el cursor adapter está configurado al modo de almacenamiento optimista de tabla en búfer, en la ficha Acceso a Datos para los tipos de origen de datos XML para permitir al XML adapter crear XML DiffGrams. Para mayor información acerca de la configuración del modo de almacenamiento en búfer, vea BufferModeOverride (Propiedad).
  5. Elija Aceptar para cerrar el Generador CursorAdapter, y elija de nuevo Aceptar para cerrar el Generador de Entorno de Datos.

    El nuevo cursor adapter, ahora denominado Customer, aparecerá en entorno de datos del formulario y contiene todos los campos del archivo GetCustomer.xml.

Puede establecer opciones adicionales para la recuperación de datos. Sin embargo, excepto para la configuración del modo de almacenamiento en búfer del cursor creado por el cursor adapter en el ejemplo XML, esta guía utiliza la configuración predeterminada para estas opciones. Para obtener más información, vea Ficha Acceso a datos, Generador de CursorAdapterer.

Para continuar con el ejemplo XML, vea Usar Cursor Adapter en un Formulario.

Configurar Actualizaciones para Cursor Adapters

Después de generar el comando Select del cursor adapter para recuperar datos, puede especificar cómo el cursor adapter desarrollará la actualización en la fuente de datos, configurando las opciones en la ficha Actualización Automática del Generador de CursorAdapter.

Para configurar cómo el cursor adapter actualiza el origen de datos

  1. En el Generador del CursorAdapter, haga clic en la ficha Actualización Automática.
  2. En la ficha Actualización Automática, seleccione la casilla de verificación Actualización Automática.

    Seleccionando la casilla de verificación Actualización Automática, se rellena la lista de campos sobre la ficha Actualización Automática con los campos que ha seleccionado sobre la ficha Acceso a datos, y permite la actualización automática para campos específicos.

  3. Seleccione la casilla de verificación Actualizar todos los campos para desginar todos los campos de la tabla especificada para la actualización automatica.

    Una marca de verificación aparece en la columna de actualización automática, indicada por el símbolo de lápiz, para cada campo de la lista..

  4. Seleccione la casilla de verificación en la columna del campo clave, indicada por símbolo de llave, para el campo CUSTOMERID para designar a éste como el campo de la clave primaria.
  5. Desactive la casilla de verificación en la columna de actualización automática para el campo CUSTOMERID para prevenir que éste sea modificado como la clave primaria.
  6. Elija Aceptar para cerrar el Generador de CursorAdapter, y elija Aceptar de nuevo para cerrar el Generador de Entorno de Datos.

    El nuevo cursor adapter, ahora denominado Customer, aparecerá en el entorno de datos del formulario y contendrá todos los campos de la tabla Customer como se ha especificado.

Puede establecer opciones adicionales, como por ejemplo, cómo actualizar el cursor adapter al origen de datos. Sin embargo, esta guía utiliza la configuración predeterminada para estas opciones.

Para obtener más información, vea Ficha Auto-Actualizar, Generador de CursorAdapter.

Usar Cursor Adapter en un Formulario

Después de crear un cursor adapter en el entorno de datos del formulario, podrá colocar el cursor adapter sobre el formulario para crear un grid.

Para crear una control cuadrícula usando el nuevo cursor adapter

  1. En el entorno de datos del formulario, arrastre el cursor adapter Customer sobre el formulario, para crear una control cuadrícula.

    Si está usando el tipo de origen de datos XML, escriba el siguiente código en el evento Init del formulario para crear y configurar el objeto XMLAdapter:

    LOCAL oXMLAdapter as XMLAdapter
DODEFAULT()
ThisForm.AddProperty('oXMLAdapter',CREATEOBJECT('XMLAdapter'))
WITH ThisForm.oXMLAdapter
.LoadXml(ThisForm.cRunPath+'getcustomers.xml',.T.)
ENDWITH
ThisForm.DataEnvironment.cursor1.SelectCmd="ThisForm.oXMLAdapter.Tables.Item(1)"
ThisForm.DataEnvironment.cursor1.CursorFill()
GO TOP
ThisForm.BindControls = .T.
ThisForm.grdCustomer.AutoFit()
  2. En la ventana de propiedades, configure la propiedad BindControls del formulario a falso (.F.).
  3. Guarde el formulario en la carpeta ...\Samples\Solution\Toledo.
  4. En la barra de herramientas de Visual FoxPro, haga clic en el botón Ejecutar (!) para ejecutar el formulario.

El formulario aparece y muestra una control cuadrícula que contiene lo siguiente:

  • Tipos de orígenes de datos nativa, ODBC y ADO: Datos de los campos en la tabla CUSTOMER
  • Tipo de origen de datos XML: Datos cargados desde un XML DataSet, GetCustomer.xml

    Cuando se usa XML adapters con cursor adapters, puede generar XML DiffGrams usando el adaptador XML creado. Por ejemplo, el siguiente código crea una cadena de caracteres XML DiffGram en una variable local denominada lcXML:

    LOCAL lcXML, llIncludeBefore, llChangesOnly, llIsFile, lcSchemaLocation
WITH ThisForm.oXMLAdapter
* Release XML document but preserve schema.
.ReleaseXML(.F.)
.UTF8Encoded = .T.    && Indicates international characters.
.IsDiffgram = .T.     && Generate XML DiffGram.
llIncludeBefore = .T. && Include <diffgram:before> format.
llChangesOnly = .T.   && Generate only changes made.
llIsFile = .F.        && Sample XML is a stream.
lcSchemaLocation = "" && Sample schema is inline.
.ToXML("lcXML",lcSchemaLocation,llIsFile,llIncludeBefore,llChangesOnly)
ENDWITH

Vea también

Guías paso a paso | Administrar el Acceso a Datos Usando CursorAdapters (Ejemplo) | Cargar y generar XML Usando la Clase XMLAdapter (Ejemplo)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Guía: Crear tablas con Visual FoxPro

Con Visual FoxPro, se pueden crear y manejar, relacional e individualmente, tablas de datos de cualquier origen. Se puede utilizar el lenguaje Visual FoxPro, o su gran número de herramientas para acceder o manipular rápidamente todos los tipos de datos, si están en un disco local, una red o el internet.

Contenido

Introducción

¿Qué son los datos?

Importar datos en tablas

Organizar datos en tablas

Acceder datos en tablas

Introducción

Microsoft Visual FoxPro es una aplicación, un lenguaje, y un conjunto de herramientas para el desarrollo de aplicaciones. Las herramientas Visual FoxPro están escritas en el lenguaje Visual FoxPro y ellas mismas están basadas en tablas.

En Visual FoxPro, se pueden utilizar asistentes, generadores, o comandos para crear o manipular tablas rápidamente tablas de datos. Puede utilizar los asistentes Importar y Tabla para crear tablas, el Diseñador de tablas para manejar tablas, y el comando Browse para ver tablas.

Para un acceso simple a datos, utilice directamente Visual FoxPro desde comandos, menús, y la ventana Sesión de datos. Para un acceso y manipulación de datos más complejo, puede crear formularios, informes, o vistas para ingresar y mostrar tablas.

Este tema describe cómo acceder a datos existentes con el asistente Importar y cómo crear la estructura para datos nuevos utilizando el asistente Tabla y el Diseñador de tablas desde los menús Visual FoxPro.

Qué son los datos?

Visual FoxPro trabaja con y manipula datos de tablas. Los datos pueden estar compuestos de cualquiera de los siguientes tipos de información, solos o en combinaciones: Carácter, Monetario, Fecha, DateTime, Lógico, Numérico, Memo, General, Flotante, y Doble. Visual FoxPro también puede acceder a objetos (tale como documentos Word y Excel), gráficos, o archivos de sonido, como datos.

Puede utilizar esos datos almacenados en diferentes tipos de tablas, incluyendo archivos de texto delimitados por comas o tabuladores o tablas producidas por otras aplicaciones, tales como Microsoft Excel o Microsoft SQL Server.

Para más información sobre tipos de datos válidos, ver Tipos de datos y campos.

Importar datos en tablas

Para obtener datos existentes en un formato tabulado, abra Visual FoxPro, e importe el archivo utilizando el asistente Importar. si desea crear los datos en Visual FoxPro, utilice el asistente Tabla.

El asistente Importar

Este asistente da la opción de importar archivos de texto en los cuales los datos estén delimitados por comas, espacios, tabuladores, u otros separadores.

Cuando utilice el asistente Importar para copiar los datos en una nueva tabla Visual FoxPro, debe saber cómo está delimitado el archivo de texto. Además, debe estar seguro que se utiliza el mismo carácter para delimitar todos los campos o los datos no se importarán correctamente.

Utilizar el asistente Importar

  1. En el menú Archivo, haga clic en Importar.
  2. En el cuadro de diálogo Importar, haga clic en el botón Asistente para importar.

Puede utilizar este asistente para otros formatos de datos, pero es especialmente bueno para archivos de texto. Por ejemplo, si los datos están en un archivo creado con Microsoft Excel, puede seleccionar Excel de la lista Tipo en el asistente. Si está más familiarizado con otra aplicación que genera datos, podría ser fácil exportar datos desde esa aplicación, a un archivo de texto delimitado para importarlos en Visual FoxPro.

El asistente Tabla

Cuando utilice el asistente Tabla para crear una nueva tabla Visual FoxPro, debe conocer el tipo y tamaño máximo de los datos que planea colocar en cada campo. Además, debe considerar cómo se ingresarán y usarán los datos, así puede decidir si permite valores nulos.

El asistente Tabla proporciona algunas plantillas que se pueden utilizar o personalizar:

  • Plantillas de negocios Veintiséis plantillas que puede utilizar en entornos y transacciones comerciales.
  • Plantillas personales Veinte plantillas para elementos o actividades relacionadas con sus pasatiempos, grupo familiar o posesiones personales.

Utilizar el asistente Tabla

  1. En el menú Archivo, haga clic en Nuevo.
  2. Haga clic en Tabla, y luego en el botón Asistente.
    Nota La opción Nuevo archivo también permite crear una tabla, pero debe hacer más trabajo por su cuenta.

Después de seleccionar una plantilla, sigue el recordatorio de los pasos del asistente para seleccionar campos, especifique si se indexa la tabla y cómo, y especifique si es una tabla libre o contenida en una base de datos. Cuando complete el asistente, Visual FoxPro crea una tabla vacía con la estructura que haya especificado. Ahora puede guardar la estructura de la tabla y, hacer alguna otra cosa como ver la tabla o modificar la tabla nueva en el Diseñador de tablas.

El Diseñador de tablas

Si desea crear una tabla sin utilizar un asistente, utilice el Diseñador de tablas, en él puede ingresar el nombre, tipo de datos, y tamaño de cada campo. Además de esta características, también puede especificar el número de decimales de campos numéricos, si hay un índice, y si se permiten valores nulos (NULL).

Nota No confunda valores nulos (NULL) con espacios en blanco o valores vacíos. La configuración NULL no tiene nada que ver con si se pueden almacenar espacios en blanco o valores vacíos en un campo.

Si la tabla está en una base de datos, se pueden especificar formatos de ingreso y visualización, reglas de validación para campos, y mensajes con sugerencias de valores, así como configurar la tabla para que se comporte de formas específicas y potentes cundo se utilicen los campos en un formulario.

Acceder al Diseñador de tablas

  1. En el menú Archivo, haga clic Nuevo.
  2. En el cuadro de diálogo Nuevo, seleccione como tipo de archivo Tabla, y haga clic en el botón Nuevo archivo.

Organizar datos en tablas

Las tablas Visual FoxPro pueden ser libres o asociadas a una base de datos. Una base de datos actúa como un contenedor para una o más tablas, vistas, conexiones, y procedimientos almacenados. Las tablas que no están contenidas en una base de datos se llaman tablas libres.

Cuando se abre una tabla contenida en una base de datos, la base de datos asociada también se abre. Cuando se abre una tabla libre, solamente se abre esa tabla.

Abrir una tabla

  1. En el menú Archivo, haga clic en Abrir
  2. En la lista desplegable Tipo de archivo, seleccione Table (*.dbf), y luego seleccione una tabla en la lista desplegable Nombre de archivo.
  3. Haga clic en Aceptar para abrir la tabla.

Hay beneficios al utilizar una tabla contenida en una base de datos en lugar de una tabla libre. Por ejemplo, una tabla contenida puede tener nombres de campos que excedan 10 caracteres de longitud; las tablas libres no pueden.

Las tablas pueden ser simples o complejas. Con una buena planeación los datos de las tablas se pueden utilizar más eficientemente — un diseño cuidadoso no sólo de la estructura de la tabla sino también de las relaciones.

Por ejemplo, si está diseñando un sistema de facturación, podría crear una tabla que mantenga la información de cada factura. Sin embargo, podría ser más eficiente crear tablas que contengan información de los clientes (nombre, dirección, números de teléfono, ID de cliente, y código postal), inventario (ítem, costo, precio, existencia y proveedor), proveedores (nombre, dirección, números de teléfono, ID, descuento y contacto), y otra de grupos de información (código postal, ciudad, estado, etcétera). Luego estas tablas pueden combinarse para producir una vez facturas, otra vez órdenes de compra, e informes de varios tipos, incluyendo declaración de facturación y otras cosas. Cada archivo individual puede ser más manejable, se pueden eliminar duplicaciones, y las operaciones diarias o repetitivas pueden tomar menos tiempo de PC y de personal. El ingreso de datos puede simplificarse, mejorarse o eliminarse, ya que las tablas relacionadas pueden obtener la información automáticamente.

Para más información sobre diseño de tablas, ver Elegir tipos de datos.

Acceder datos de tablas

Cuando se tienen datos en tablas, hay innumerables formas para utilizarlos y manipularlos, pero primero se debe acceder a ellos.

La ventana Sesión de datos proporciona la forma más efectiva para acceder a tablas. Cada tabla se abre en su propia área de trabajo. Esta ventana ofrece información sobre propiedades de la tabla y cualquier relación que exista entre tablas.

Liberar el entorno de datos

  1. En la ventana Comandos, escriba lo siguiente:
    CLOSE ALL TABLES
  2. Presione ENTER.

Ver propiedades de tabla

  1. En el menú Ventana, haga clic en Sesión de datos.
  2. En la ventana Sesión de datos, seleccione una tabla
    • Si hay una tabla abierta, se lista en el cuadro desplegable Alias, así que puede seleccionarla.
    • Si ninguna tabla está abierta, haga clic en Abrir para acceder al cuadro de diálogo Abrir, el cual permite especificar qué tabla abrir.
    • Si la tabla listada está en una base de datos, y hace clic en Open, el cuadro de diálogo Abrir muestra una lista de las otras tablas en esa base de datos. Se puede seleccionar una de la lista o hacer clic en el botón Otra para especificar una tabla libre.
      Nota El cuadro de diálogo Abrir muestra los archivos de tabla (.dbf) disponibles. Se pueden abrir las que quiera. Si selecciona una tabla que es parte de una base de datos, se abre un segundo cuadro de diálogo Abrir para seleccionar la siguiente tabla. Este cuadro de diálogo muestra las tablas disponibles en la base de datos que se abrió al seleccionar la tabla dentro de ella. Si desea seleccionar más tablas libres, haga clic en Otra, y luego elija una tabla.

Acceder a una tabla para verla o modificarla

  • En la ventana Sesión de datos, seleccione abrir tabla, y después haga clic en Examinar. Puede hasta que se muestren todas las tablas listadas (abiertas).
    Nota Cada vez que examine una tabla en la ventan Sesión de datos, la ventana de Comandos muestra una nueva instrucción SELECT seguida por la instrucción EXAMINAR.

Para ver y modificar características de una tabla

  • En la ventana Sesión de datos, seleccione una tabla abierta, y luego haga clic en Propiedades. Esto abre el cuadro de diálogo Propiedades del área de trabajo, el cual proporciona información y acceso a la estructura e índices de la tabla.

En este entorno, puede seleccionar cualquier tabla y modificarla, agregar y borrar registros o modificar la estructura de la tabla.

Cuando se abre una tabla, puede desplazarse por ella, modificar o borrar registros o agregar nuevos datos. Utilice las opciones del menú Ver para seleccionar el tipo de acceso que desea. Use las opciones del menú Tabla para desplazarse o modificar la tabla.

Nota Si desea mayor control de acceso o manipular datos complejos, o si desea utilizar vistas remotas y tablas relacionadas, cree una base de datos para la tabla. Si desea crear una aplicación, Servidor COM o Servicio Web, usando más características, como etiquetas, formularios, informes y bibliotecas de clases, cree un proyecto Visual FoxPro Project (empezar con un Proyecto es la mejor manera para cualquier aplicación).

Para más información sobre utilizar tablas, vea Trabajar con tablas. Para más información sobre la ventana Sesión de datos, vea Utilizar sesiones de datos.

Vea también

Tipos de datos y campos de Visual FoxPro | Elegir tipos de datos | Trabajar con tablas | Utilizar sesiones de datos | Guías paso a paso


Crear Servicios Web XML con Visual FoxPro

Los Servicios Web XML son los bloques constructores fundamentales para la informática distribuida en Internet. Están disponibles en cualquier lugar de Internet con HTTP. Pueden ser creados por uno mismo, o acceder a ellos por la red desde donde ellos han sido publicados. Puede utilizar Visual FoxPro para crear un Servicio Web XML, o para acceder a un Servicio Web XML creado en otros lenguajes de programación.

Contenido

Introducción

Servicios Web XML

Internet Information Services

Crear un Servidor COM

Crear y publicar un Servicio Web XML

Verificar un Servicio Web XML

Utilizar un Servicio Web XML

Introducción

Crear un Servicio Web XML utilizando Visual FoxPro implica utilizar Microsoft Internet Information Services (IIS), SOAP, y Servidor COM de Visual FoxPro.

SOAP es automáticamente instalado cuando se instala Visual FoxPro. IIS es un componente opcional para Windows 2000 y es automáticamente instalado en Windows 2000 Server.

Los servidores IIS brindan Servicios Web XML desde un directorio virtual para usuarios en Internet. El directorio virtual referencia la localización en su disco duro donde coloca sus Servicios Web XML.

Utilice Visual FoxPro para crear objetos COM. Después que sus objetos COM son creados, puede utilizar el generador de Servicios Web Visual FoxPro XML para publicarlos en su directorio virtual.

Esta guía explica como crear un Servidor COM y publicarlo como un Servicio Web XML. Adicionalmente, es una guía para utilizar el recién creado Servicio Web XML. El Servicio Web XML proporciona una lista de clientes desde una tabla donde los clientes cumplen una determinada condición. La lista es enviada como una cadena XML y es colocada en el cursor utilizando la clase XMLAdapter.

Servicios Web XML

Un Servicio Web XML es un objeto o clase que se distribuye en Internet y a la que se puede acceder programáticamente a través de una típica llamada de método. Un Servicio Web XML proporciona funcionalidad y acceso a datos entre plataformas y a través de conexiones diversas. El aspecto más importante de los Servicios Web XML es que debido a cómo ellos utilizan HTTP y SOAP, la funcionalidad está disponible a través de los cortafuegos. Puede llamar a un Servicio Web XML sin tener en cuenta la plataforma que se está ejecutando debido a que HTTP y SOAP operan independientemente de la plataforma del PC. En algunos casos, puede proporcionar funcionalidad que no existía mediante el COM distribuido.

Internet Information Services

IIS proporciona las referencias de localización de su Servicio Web XML a los usuarios que acceden a través de Internet. Para publicar un Servicio Web XML, debe crear un directorio virtual en IIS que contenga los archivos de Web Services Description Language (.wsdl) necesarios. Estos archivos son creados por el Asistente de Servicio Web desde su componente COM.

Crear una carpeta virtual

  1. En la carpeta principal Visual FoxPro (..\Program Files\Microsoft Visual FoxPro 8), cree una carpeta llamada Servicios Web.
  2. En el panel de control, haga clic en Herramientas administrativas, luego haga clic en Internet Information Services.

    La ventana Internet Information Services se abre, mostrando un control tree a la izquierda que muestra una lista de Internet information services en su PC.

  3. Haga un clic con el botón secundario del ratón en el nodo Sitio Web predeterminado.
  4. Haga clic en Nuevo, y luego haga clic en Directorio virtual para abrir un Asistente de Creación de Directorio Virtual.
  5. Siga las instrucciones del asistente, y especifique la carpeta Servicios Web que ha creado en el paso 1 como su directorio virtual.

    Este directorio virtual referencia la carpeta Web Services donde se guardarán todos los Servicios Web XML que serán creados.

Crear un Servidor COM

Debido a que un Servicio Web XML es una biblioteca de enlace dinámico (.dll) o un archivo ejecutable (.exe), debe utilizar un servidor COM como base para su Servicio Web XML. Un servidor COM en Visual FoxPro es un archivo con extensión .dll o .exe que contiene una clase custom basada en el objeto Session. La clase custom es especificada como OLEPUBLIC cuando es definida. Esto expone la funcionalidad ya que puede ser utilizado y reutilizado por otras aplicaciones a través de automation.

Para este ejemplo de servidor COM, debe crear una clase custom que reporta alguna información básica. Escriba el programa que creará la clase con un método, compile el proyecto contenido en el servidor COM, y luego publíquelo como un Servicio Web XML.

Para crear un servidor COM

  1. En el menú Archivo de Visual FoxPro, haga clic en Nuevo.
  2. En el cuadro de diálogo Nuevo, haga clic en Proyecto, y luego haga clic en Archivo nuevo. Guarde el proyecto como miWServ1.
  3. En la ficha Todos del Administrador de proyectos, expanda Código, haga clic en Programas, y luego haga clic en Nuevo.
  4. Copie el siguiente código en la ventana de edición.
    DEFINE CLASS ShowCustomers AS Session OLEPUBLIC
PROCEDURE CustomersInGermany AS String
LOCAL loXMLAdapter AS XMLAdapter
LOCAL lcXMLCustomers AS String
loXMLAdapter = CREATEOBJECT("XMLAdapter")
OPEN DATABASE "C:\Program Files\Microsoft Visual FoxPro 8\" + ;          "Samples\Northwind\northwind.dbc"
USE customers
SELECT * ;
FROM customers ;
WHERE country LIKE "Germany%" ;
INTO CURSOR curCustomers
loXMLAdapter.AddTableSchema("curCustomers")
loXMLAdapter.UTF8Encoded = .T.
loXMLAdapter.ToXML("lcXMLCustomers")
CLOSE DATABASES ALL
RETURN lcXMLCustomers
ENDPROC
ENDDEFINE

    Este programa define una clase, ShowCustomers, que tiene un método, CustomersInGermany.

  5. En el menú Archivo haga clic en Guardar.
  6. En el cuadro de diálogo Guardar como, escriba el nombre de programa miWServ1, y haga clic en Guardar.
  7. Cierre la ventana de edición.
  8. En el administrador de proyectos haga clic en Generar.
  9. Seleccione Multi-threaded COM server (dll), haga clic en OK, y acepte el nombre miWServ1.

Visual FoxPro compila ahora el archivo miWServ1 en un servidor COM llamado miWServ1.dll. Ahora puede publicarlo como un Servicio Web XML Web.

Crear y publicar un Servicio Web XML

Desde el archivo miWServ1.dll file, creado en el procedimiento anterior, se genera un nuevo archivo Web Services Description Language (.wsdl) al publicar el Servicio Web XML. El archivo .wsdl es un archivo XML que describe el Servicio Web XML y las clases que contiene.

Para añadir los componentes necesarios para convertir su Servidor COM en un Servicio Web XML, debe compilar el Servidor COM con un Servicio Web XML. Después de especificar los parámetros en el Servicio Web Publisher, Visual FoxPro crea los archivos SOAP para convertir su servidor COM en un Servidor Web XML, publíquelo en su directorio virtual, y registre su nuevo Servicio Web XML en IntelliSense.

Para compilar y publicar un Servicio Web XML

  1. En el menú Herramientas, haga clic en Panel de tareas.
  2. En el Administrador del Panel de tareas haga clic en Servicios Web XML.
  3. En Herramientas del Servicio Web XML, seleccione Publicar Servicio Web XML.
  4. Si el archivo miWServ1.dll no está listado en el campo Servidor COM, haga clic en el botón Puntos suspensivos (...) y seleccione miWServ1.dll.
  5. Haga clic en Avanzado para mostrar el cuadro de diálogo Visual FoxPro Servicios Web XML Publisher.
  6. Asegúrese de que el cuadro Listener URI muestre su directorio virtual. Si no lo hace, haga clic en el botón Puntos suspensivos (...) y seleccione su directorio virtual.
  7. Haga clic en la ficha Métodos y asegúrese de que está seleccionado CustomersInGermany.
  8. Haga clic en la tabla Namespaces reemplace tempuri.org con su dominio en todos los campos y haga clic en OK.

    Si no tiene su propio dominio, puede mantener tempuri.org para este ejemplo.

  9. Haga clic en OK para cerrar el cuadro de diálogo Visual FoxPro Servicios Web XML Publisher.
  10. Haga clic en Generar.

    Visual FoxPro genera los archivos de los Servicios Web XML. Antes de finalizar, el cuadro de diálogo XML Web Services Publishing Results aparece mostrando una lista de archivos generados, archivos .wsdl, ISAPI o ASP listener, y además indica si el archivo ha sido generado correctamente.

En este punto, ha creado y publicado el Servicio Web XML. Cualquiera que tenga acceso al directorio virtual que ha definido antes puede utilizar HTTP para acceder al Servicio Web XML que ha publicado.

Verificar un Servicio Web XML

Después que ha publicado su nuevo Servicio Web XML, debe verificarlo para estar seguro de que trabaja correctamente. Visual FoxPro proporciona un mecanismo para verificar Servicios Web XML que está disponible en el panel Servicios Web XML en el Administrador del Panel de tareas. El mecanismo de verificación muestra cualquier resultado devuelto desde el Servicio Web XML, esquemas XML utilizados y errores de retroalimentación.

Verificar un Servicio Web XML

  1. En el menú de Visual FoxPro Herramientas, haga clic en Panel de Tareas.
  2. En el Administrador del Panel de Tareas, haga clic en Servicios Web XML.
  3. En Explorar un Servicio Web XML, haga clic en ShowCustomers en el cuadro Nombre del Servicio.
  4. En el cuadro Los siguientes métodos son posibles con este Servicio Web XML , haga clic en CustomersInGermany.

    Este cuadro lista todos los métodos disponibles en el Servicio Web XML.

  5. Haga clic en Verificar este Servicio Web XML.

Si la verificación es satisfactoria, se muestra en la ventana Resultados del test de Servicio Web. Se muestran los resultados desde el Servicio Web XML, y puede ver el archivo .wsdl asociado al Servicio Web XML. Si existe un error en la verificación, la ventana Resultados del test de Servicio Web muestra información sobre el error.

Utilizar un Servicio Web XML

Utilice un Servicio Web XML de igual forma que haría con cualquier servidor COM: expandir la funcionalidad de una aplicación a otra. En el procedimiento siguiente, se creará el archivo de programa (.prg) para acceder su Servicio Web XML Web y utilizar la barra de herramientas para añadir el código requerido que referencie adecuadamente el Servicio Web XML.

Para utilizar un Servicio Web XML

  1. En el menú Archivo de Visual FoxPro, haga clic en Nuevo.
  2. En el cuadro de diálogo Nuevo seleccione Proyecto, y haga clic en Archivo nuevo. Guarde el proyecto como wsTest.
  3. En la ficha Todos del Administrador de proyectos, expanda Código, seleccione Programas, y luego haga clic en Nuevo. En el Menú Herramientas, haga clic en Caja de herramientas.
  4. En la caja de herramientas, haga clic en Mis Servicios Web XML.
  5. Haga clic y arrastre el Servicio Web XML ShowCustomers desde la caja de herramientas a la ventana de edición.

    Esto añade el código apropiado a su Servicio Web XML.

  6. En la ventada Edición bajo la línea que cita, "Llame su Servicio Web XML Web aquí," introduzca el código siguiente.
    LOCAL lcXML, lcAlias AS String
LOCAL loXMLAdapter AS XMLAdapter
lcXML = loShowCustomers.CustomersInGermany
loXMLAdapter = CREATEOBJECT("XMLAdapter")
loXMLAdapter.LoadXML(lcXML)
lcAlias = loXMLAdapter.Tables.Item(1).Alias
loXMLAdapter.Tables.Item(1).ToCursor()
SELECT(lcAlias)
BROWSE
CLOSE DATABASES ALL
  7. En el menú Archivo, haga clic en Guardar.
  8. En el cuadro de diálogo Guardar como, escriba el nombre de programa WebServiceTest, y haga clic en Guardar.
  9. Cerrar la ventana de edición.
  10. En el Administrador de proyectos seleccione el archivo de programa WebServiceTest y haga clic en Ejecutar.

    Una ventana examinar aparecerá con todos los clientes de Germany seleccionados en la Base de datos Northwind. Este cursor fue llenado desde XML proporcionado desde su Servicio Web XML utilizando la clase XMLAdapter.

Para más información sobre Servicios Web, vea Crear Servicios Web y Componentes. Para más información sobre Servidores Com, vea Crear servidores de Automatización.

Vea también

Crear Servicios Web y Componentes | Crear servidores de Automatización

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Guía: Crear un programa Instalador de una aplicación de Visual FoxPro utilizando InstallShield Express

Cuando esté lista una aplicación para distribuir, puede crear un programa instalador que ayude a los usuarios a instalarla. Esta guía explica los aspectos a tener en cuenta antes de distribuir la aplicación y muestra como crear el proyecto instalador (Setup), incluir los archivos, establecer las propiedades y distribuir los archivos de la aplicación desde el instalador utilizando InstallShield Express Visual FoxPro Edición limitada.

Ambas ediciones, limitada y completa del InstallShield Express utilizan Microsoft Installer, cuya tecnología de creación del instalador es comprensible y flexible. Esta tecnología hace posible que los usuarios puedan instalar y configurar su aplicación eficientemente.

Este documento no es un reemplazo de la documentación de InstallShield Express, la cual se debe leer primero. Es un suplemento para ayudar a los desarrolladores de Visual FoxPro en la utilización de InstallShield Express para empaquetar y distribuir las aplicaciones. Para aprender como instalar InstallShield Express Limited Edition en su PC siga las instrucciones en: Instalar Visual FoxPro.

Para más información sobre cómo distribuir aplicaciones, vea Distribuir aplicaciones.

Contenido

Introducción

Preparar la aplicación para su distribución

Crear el programa instalador utilizando InstallShield Express

Distribuir una aplicación

Información adicional

Introducción

Visual FoxPro incluye la edición limitada de InstallShield Express versión 3.54, sustituyendo el Asistente de instalación existente en las versiones anteriores a Visual FoxPro 7.0.

Nota Puede utilizar cualquier programa de creación de Instaladores que utilice la tecnología Microsoft Windows Installer para crear paquetes Instaladores .msi o .msm. que son compatibles con Microsoft Windows Installer. Algunos escenarios de distribución requieren de módulos de combinación junto a librerías de tiempo real de Visual FoxPro. Para más información, vea Escenarios de distribución de Visual FoxPro en esta guía.

La guía del Windows 2000 Logo requiere que el programa instalador esté basado en tecnología Windows Installer. Windows Installer es parte de Windows 2000 y los refuerzos de Zero Administration Windows para reducir los costos de desarrollo, utilización y manejo de PC de escritorio.

Preparar la aplicación para su distribución

Hay varios elementos que debe considerar cuando prepara la aplicación para su distribución. Además de seguir el procedimiento indicado en Proceso de distribución de aplicaciones, debe identificar la estructura de su aplicación, decidir cómo será enviada a los usuarios, y decidir cual será la mejor organización del programa instalador. Cuando todos los elementos hayan sido identificados estará listo para distribuir su aplicación de Visual FoxPro.

Crear el programa Instalador utilizando InstallShield Express

El primer paso en la creación del programa instalador es la creación del proyecto Instalar (Setup). El archivo de proyecto (.ism) creado con InstallShield Express está basado en el archivo de proyecto Windows Installer. Este archivo almacena toda la lógica e información necesaria para crear un archivo instalador (.msi) compatible con Windows Installer.

Para crear el proyecto Instalar (Setup)

  1. En el menú Inicio de Windows, apunte hacia Todos los programas. Apunte hacia InstallShield, y haga clic en Express para abrir InstallShield Express.
  2. En el menú Archivo (File), haga clic en Nuevo (New) para abrir el cuadro de diálogo Proyecto nuevo (New Project).
  3. Examine la ruta donde desea guardar su proyecto, cambie el nombre del archivo de proyecto predeterminado en el cuadro Nombre del proyecto y localización (Project Name and Location) y haga clic en OK.
  4. Para crear el programa instalador en otro idioma diferente del inglés, seleccione el idioma en la lista Lenguaje del proyecto (Project Language).
    Nota Después que escoja el idioma no lo puede cambiar para este proyecto.

Definir las propiedades del proyecto

Después de crear el proyecto Instalar (Setup) puede definir sus propiedades, tales como:

  • Nombre del producto
  • Versión del producto
  • Iconos del producto
  • Carpeta de instalación predeterminada para todos los archivos de la aplicación
  • Nombre y localización del archivo Léeme.

Como mínimo, debe especificar un nombre de producto y una carpeta de instalación para los archivos de su aplicación. La propiedad INSTALLDIR en InstallShield Express especifica la localización de la carpeta de instalación predeterminada, por ejemplo, el directorio raíz de la aplicación. La localización de la carpeta de instalación predeterminada especificada por INSTALLDIR es:

[ProgramFilesFolder]Nombre de su compañía\Nombre de su producto

Nota Es recomendable que cambie Nombre de su compañía y Nombre de su producto por nombres apropiados para su aplicación.

Puede especificar además una carpeta diferente para su aplicación estableciendo INSTALLDIR a la carpeta con el nombre de su aplicación como es especificado por MiApp en el siguiente ejemplo:

[ProgramFilesFolder]\MiApp

Si prevee instalar algún archivo tipo tabla de datos (.dbf) o base de datos (.dbc), puede modificar además la propiedad DATABASEDIR para especificar la carpeta predeterminada de destino de estos archivos.

Para especificar información general para su proyecto Instalar (Setup)

  1. En el nodo Organizar su instalador (Organize Your Setup) haga clic en Información General (General Information).
  2. En la lista de propiedades haga doble clic al campo valor de la propiedad para editar este valor.
  3. Haga clic en cualquier lugar de la lista de propiedades para ver que sus cambios han tenido efecto.

Dividir su producto en características

Desde la perspectiva del usuario final de la aplicación e InstallShield Express, una característica es considerada un bloque de construcción de una aplicación. Las características hacen posible que el usuario pueda instalar la aplicación por partes. Por ejemplo, durante la instalación de Visual FoxPro, puede especificar si desea o no instalar Ejemplos de Visual FoxPro y Herramientas de Visual FoxPro Tools como características.

Nota Aunque no es un requerimiento dividir su producto en características al crear un programa instalador, puede ser muy útil para el usuario.

La configuración predeterminada para instalar las características es Siempre instalar (Always Install), la que lista los componentes que se instalan con los tipos de instalador.

Crear una característica

  1. En el nodo Organizar su instalador (Organize Your Setup) haga clic en Características (Features).
  2. Para añadir una nueva característica, haga clic derecho en el nodo Características (Features) en el árbol del panel intermedio, haga clic en Añadir nueva característica (New Feature Ins).
  3. Escriba el nombre de la nueva característica, y presione ENTER.

Cuando haya identificado las características de su producto, puede establecer sus propiedades, tales como su descripción, como la característica será anunciada, y si es necesaria o no. A pesar de que al usuario le aparezca esa característica para ser instalada, éstas no son instaladas durante el proceso de instalación. Windows Installer instala la característica cuando el usuario intenta utilizarla por primera vez.

Establecer una propiedad de la característica

  1. Seleccione la característica a la que desee modificar sus propiedades.
  2. En la lista de propiedades, haga doble clic en el campo valor de la propiedad para modificar su valor.

    Para mostrar más opciones, haga clic en el botón de puntos suspensivo (...) o botones de flecha que aparecen cerca del campo valor de la propiedad cuando están disponibles opciones adicionales.

  3. Escriba o seleccione el nuevo valor para la propiedad.

Por ejemplo, suponga que desea suministrar la opción de instalar el archivo de Ayuda para su aplicación. Siga los siguientes pasos para crear la característica y llámela "Archivo Ayuda". Si desea que la instalación del archivo de Ayuda sea opcional, establezca la propiedad Required a No. Si desea que la característica sea instala la primera vez que el usuario trate de invocarla presionando F1 para Ayuda, establezca la propiedad Advertised a Yes.

Especificar características para el tipo instalador

Puede incluir diferentes tipos de instalador en el programa instalador y especificar que características debe instalar cada instalador. Los tipos de instaladores posibilitan diferentes niveles de instalación tal que el usuario puede escoger:

  • El instalador típico instala todas las características y archivos.
  • El instalador mínimo instala la cantidad mínima de características y archivos necesarios para que funcione la aplicación.
  • El instalador personalizado posibilita especificar las características a instalar.

Debe incluir al menos un tipo de instalador.

Los tres tipos de instaladores instalan las características listadas en Instalar siempre (Always Install). Por ejemplo, un instalador incluye las características listadas en Always Install y el &Typical Setup type. El ampersand (&) en el nombre del tipo del instalador indica la clave de acceso para un tipo particular de instalador en la interfaz de usuario del instalador. Puede quitar o agregar tipos de instaladores en dependencia de lo que desea incluir, así como, dejarlos disponibles, o renombrar los tipos de instalador.

Nota Cuando se crea un programa instalador no es necesario especificar características para cada tipo de instalador.

Para seleccionar un tipo de instalador y especificar las características para cada tipo

  1. En el nodo Organizar su instalador (Organize Your Setup) haga clic en Tipo de instalador (Setup Types).
  2. En el panel Tipos de instalador (Setup Types) seleccione la casilla de verificación para cada tipo que desee incluir.
  3. En el panel Características instaladas para un tipo de instalador seleccionado (Features installed for <seleccionado panel> setup type) , seleccione la casilla de verificación para cada característica que desea instalar con su instalador.

Añadir archivos al instalador

El archivo ejecutable (.exe) normalmente es necesario para el usuario, para iniciar una aplicación. Puede añadir este archivo como primero junto a otros archivos que requiera su aplicación, seguido por algún archivo opcional.

Visual FoxPro proporciona archivos de recursos que extienden la funcionalidad básica de sus aplicaciones, incluyendo los archivos de recursos FoxUser, bibliotecas API, y controles Microsoft ActiveX. Si utiliza estos archivos, debe añadirlos al programa instalador para que puedan ser instalados al ejecutar el instalador. Para más información sobre el archivo de recursos que puede utilizar, vea Archivos de recursos en las aplicaciones.

Para ver los archivos que puede añadir al instalador

  • En el nodo Especificar datos de la aplicación (Specify Application Data) haga clic en Archivos (Files).

La vista de archivos se divide en cuatro paneles. El panel de la izquierda muestra carpetas en el origen y destino del PC. El panel de la derecha muestra los archivos en esas carpetas. El cuadro Características aparece encima de los cuatro paneles.

Nota La propiedad INSTALLDIR especifica la carpeta que contiene el directorio raíz de los ficheros para su aplicación y es normalmente especificado como el directorio destino de la instalación.

Antes de añadir archivos al proyecto instalador, debe especificar las características para asociar a estos archivos seleccionándolas en el cuadro de características.

Nota Añada los archivos requeridos con la característica Instalar siempre (Always Install).

Asegúrese de que las características se muestran en el cuadro de características. Después de seleccionar la característica, puede agregar los archivos al proyecto de instalación copiándolos desde las carpetas origen hasta las carpetas del PC destino.

Para añadir archivos desde la carpeta origen a la carpeta destino

  1. En el panel Carpetas en el PC destino (Destination computer's folders) seleccione la carpeta destino donde desee instalar el archivo de aplicación.
  2. En el panel Archivos origen (Source computer's files) arrastre los archivos origen a las carpetas de destino.
    Nota La carpeta especificada por INSTALLDIR en el nodo Información General (General Information) como directorio predeterminado de instalación debe aparecer en el panel Carpetas destino (Destination computer's folders). Arrastrar los archivos origen a las carpetas destino solo indica a InstallShield Express donde colocar el archivo origen cuando desee generar su programa instalador. Esta acción no mueve ni elimina ningún archivo del PC origen.

Además puede ver la lista de carpetas predefinidas, así como el escritorio, para que pueda seleccionar y añadir a la lista de las carpetas de destino.

Para ver y agregar carpetas predefinidas

  1. En el panel Carpetas de destino (Destination computer's folders), haga clic derecho en PC Destino (Destination Computer).
  2. Haga clic en Mostrar carpetas predefinidas (Show Predefined Folders).
  3. Seleccione la carpeta que desea añadir.

    Las carpetas aparecerán en la lista de carpetas destino.

Puede crear una o más subcarpetas en las carpetas destino.

Para crear subcarpetas en la carpeta destino

  1. Haga clic derecho en la carpeta destino y haga clic en Añadir (Add).
  2. Escriba el nombre de la nueva carpeta y presione ENTER.

Registrar archivos

Windows Installer posee las siguientes posibilidades

  • En caso de una instalación fallida, restablecer al PC destino su estado de pre-instalación.

    Por ejemplo, los Servidores COM como pueden ser archivos ActiveX, COM, y COM+, requieren ser registrados de forma especial para que la aplicación pueda acceder a sus intefases. Estos archivos .ocx, .exe, y .dll regularmente contienen funciones de auto-registro que pueden ser invocadas para registrarlas durante la instalación. Sin embargo, confiar en su auto-registro puede ocasionar algunos problemas con Windows Installer.

    Nota Al registrar un servidor COM, es altamente recomendado que seleccione Extraer información COM (Extract COM Information) en lugar de Auto-registro (Self-registration) como tipo de registro para el archivo. Si selecciona Auto-registro (Self-registration), Windows Installer no tendrá la información necesaria para desinstalar el servidor COM Server adecuadamente desde el registro.

    Con los programas instaladores tradicionalmente encriptados, auto-registrar fue aceptado para instalar objetos COM y esto todavía es válido. Sin embargo, el auto-registro de objetos COM no pasará la información de instalación y registro al Windows Installer. Por consiguiente, Windows Installer no puede volver atrás la instalación y registro de los objetos COM instalados auto-registrados o anunciar estos objetos.

  • Anunciar productos instalados, o elementos individuales del producto tales como objetos COM.

    Anunciar hace que un producto u objeto COM esté disponible para el usuario o PC destino sin instalar el producto hasta que el usuario u otra función del PC intente acceder al elemento. El anuncio ocurre colocando un acceso directo en la localización apropiada tal como el menú Inicio (Start) o registrar.

Para registrar un servidor COM con InstallShield Express

  1. En el nodo Especificar Datos de la aplicación (Specify Application Data) haga clic en archivos (Files).
  2. Copie el archivo para el servidor COM desde la carpeta origen a la carpeta destino.
  3. Haga clic derecho en el archivo que desee registrar, y haga clic en Propiedades (Properties).
  4. En el cuadro de diálogo Propiedades (Properties) haga clic en la ficha COM & .NET Settings.
  5. Seleccione un Tipo de registro (Registration Type).

Para más información sobre registrar servidores COM, vea Escenarios de distribución de Visual FoxPro.

Seleccionar objetos y módulos de combinación

Un módulo de combinación (.msm file) contiene toda la lógica, registros de entrada y archivos necesarios para instalar una aplicación o archivos en tiempo de ejecución exitosamente. Si fuera a instalar su aplicación manualmente tendría que copiar los archivos de tiempo de ejecución de Visual FoxPro al PC destino y registrar estos archivos. Sin embargo, si selecciona Módulos de combinación de los archivos en tiempo de ejecución de Microsoft Visual FoxPro (Microsoft Visual FoxPro 8 Runtime Libraries merge module), InstallShield Express copia y registra estos archivos adecuadamente.

Para una aplicación Visual FoxPro, debe seleccionar como mínimo los módulos Microsoft Visual FoxPro 8 Runtime Libraries y XML 4.0. Para más información, sobre las bibliotecas de tiempo de ejecución de Visual FoxPro, vea Bibliotecas de tiempo de ejecución de Visual FoxPro.

Nota Al seleccionar Microsoft Visual FoxPro 8 Runtime Libraries en InstallShield Express, la casilla de verificación para los módulos Microsoft Visual C++ Runtime Library 7.0 y GDI Plus Redist son seleccionados automáticamente y permanecerán seleccionados. Visual FoxPro 8.0 requiere de estos módulos; por tanto, no quite la selección de estos módulos.

Para seleccionar objetos y módulos de combinación para la instalación

  1. En el nodo Especificar Datos de la aplicación (Specify Application Data) haga clic en Objetos/Módulos combinados (Objects/Merge Modules).
  2. En el panel InstallShield Objetos/Módulos combinados (InstallShield Objects/Merge Modules), seleccione la casilla de verificación para el módulo de combinación que desea instalar.
  3. Puede instalar una a una las características del módulo de combinación seleccionando o limpiando las casillas de verificación en el panel Instalación condicional (Conditional Installation) cuando está disponible.

Para mayor información sobre módulos de combinación, vea Escenarios de distribución de Visual FoxPro.

Crear accesos directos y carpetas

InstallShield Express le permite crear accesos directos y carpetas en el menú Inicio y en el escritorio.

Para crear carpetas y accesos directos

  1. En el nodo Configurar el sistema destino (Configure the Target System) haga clic en Accesos directos/Carpetas (ShortCuts/Folders).
  2. Desde el árbol Accesos directos (Shortcuts) en el panel intermedio, haga clic derecho en el nodo donde desee instalar un acceso directo o carpeta y haga clic en Nuevo acceso directo (New Shortcut) o Nueva carpeta (New Folder).
  3. Si crea un acceso directo, debe especificar el archivo destino. En el cuadro de diálogo Visualizar acceso directo para destino (Browse for Shortcut Target) haga doble clic en el archivo de la lista Buscar en (Look in) para el que desea crear un acceso directo.

    Puede además asociar su acceso directo con la característica navegando a la carpeta que contiene el archivo asociado con la característica y seleccionar el archivo de la lista.

  4. Escriba el nombre para el acceso directo o carpeta y presione ENTER.

    Para renombrar el acceso directo o la carpeta haga clic derecho, luego haga clic en Renombrar (Rename), escriba el nombre nuevo y presione ENTER.

    Nota Los archivos para su aplicación están en el inicio de la lista Buscar en (Look in).

Crear claves de registro

Si su aplicación utiliza claves de registro, por ejemplo, para mantener la configuración de las opciones de usuario, InstallShield Express puede añadirlas en el PC destino durante la instalación. Si las claves no existen en el PC de desarrollo, se pueden crear manualmente.

Nota No es necesario crear claves de registro al crear el programa instalador.

Registrar las entradas y crearlas en ramas de registros. Las ramas de registros categorizan las entradas de registros por funciones. Por ejemplo, Las clases servidor COM son almacenadas en el registro hive HKEY_CLASSES_ROOT. Las opciones de Software, así como las opciones para Visual FoxPro, son almacenadas en la carpeta Software en el hive HKEY_CURRENT_USER.

Para crear claves de registro

  1. En el nodo Configurar el sistema destino (Configure the Target System) haga clic en Registo (Registry).
  2. En el panel Vista de registro del PC destino (Destination computer's Registry view) haga clic derecho en el registro hive deseado.
  3. En el menú de acceso directo apunte hacia Nuevo (New), y haga clic en Clave (Key).
  4. Escriba el nombre para la clave y presione ENTER.
  5. Haga clic derecho en la clave nueva, apunte hacia Nuevo (New), y seleccione el tipo de valor que desea añadir a la clave.
  6. En el panel Dato de registro del PC destino (Destination computer's registry data), haga doble clic en la clave para entrar el valor del dato.

    En dependencia del tipo de clave, puede entrar un nombre para ella.

Crear Open Database Connectivity (ODBC) Data Source Names (DSNs)

Si el PC de desarrollo tuviera previamente DSNs, puede indicar a InstallShield Express para que instale el DSN en el PC destino. Si está instalando DSNs, debe incluir el módulo de combinación MDAC seleccionando módulo de combinación en caso de que el PC destino no tenga instalado componentes ODBC.

Nota No es necesario crear ODBC DSNs al crear el programa instalador.

Para crear DSNs

  1. En el nodo Configurar el sistema destino (Configure the Target System) haga clic en Recursos ODBC (ODBC Resources).
  2. En el árbol Recursos ODBC (ODBC Resources) seleccione la casilla de verificación para las DSNs que desee instalar en el PC destino.

Personalizar la apariencia del instalador

Puede seleccionar y cambiar la apariencia del cuadro de diálogo para que el usuario vea cuando se está instalando su aplicación. Puede especificar imágenes (.bmp) para cada cuadro de diálogo y añadir cuadros de diálogo adicionales, por ejemplo, para permitir al usuario especificar el directorio destino.

Nota No es necesario personalizar la apariencia del instalador cuando se crea el programa instalador.

Para seleccionar cuadros de diálogo

  1. En el nodo Personalizar la apariencia del instalador (Customize the Setup Appearance) seleccione Diálogos (Dialogs).
  2. En el árbol Diálogos (Dialogs) seleccione los cuadros de diálogo que mostrará durante la instalación.

    Al seleccionar un cuadro de diálogo, una imagen del cuadro de diálogo aparece en el panel inferior-izquierdo y las propiedades para el cuadro de diálogo aparecen en el panel superior derecho.

Para hacer posible que el usuario especifique el directorio destino

  1. En el nodo Personalizar la apariencia del setup (Customize the Setup Appearance), seleccione Diálogos (Dialogs).
  2. En el árbol Diálogos (Dialogs) seleccione Carpetas de destino (Destination Folder).

Generar su programa instalador

Después que ha finalizado el diseño y configuración de las propiedades para todos los elementos en su proyecto Instalar (Setup), incluya las características, archivos, accesos directos, entradas de registro, e interfaz de usuario, está listo para generar su programa instalador.

Las construcciones seleccionadas comúnmente son CD-ROM o Imagen única (single image). Seleccionar CD_ROM crea un programa instalador que contiene los archivos organizados en una estructura de directorios. Seleccionar SingleImage combina los archivos en un único archivo.

Para generar su programa instalador

  1. En el nodo Preparar para Distribuir (Prepare for Release), haga clic en Generar distribución (Build Your Release).
  2. En el árbol Generar (Builds), seleccione el tipo de medio que desea generar
  3. En la lista propiedades, establezca o modifique las propiedades a generar.
  4. Para generar su programa Instalar (Setup), haga clic derecho en el tipo de medio seleccionado, y haga clic en Generar (Build).

    InstallShield Express coloca el paquete Instalar (Setup) generado, en la siguiente carpeta:

    <project directory>\Express\<media type>\DiskImages\DISK1

Probar su programa instalador

Es importante probar su programa Instalar (Setup). Puede hacerlo sin ejecutar la instalación actual, utilizando InstallShield Express.

Para probar su programa Instalar (Setup) con InstallShield Express

  1. En el nodo Preparar para distribuir (Prepare for Release) haga clic en Probar su instalador (Test Your Setup).
  2. En el árbol Generar (Builds), seleccione el tipo de medio que contiene el instalador que desea probar.
  3. Si desea ejecutar el programa Instalar (Setup) e instalar su aplicación y sus archivos en el PC de desarrollo, haga clic en Ejecutar su instalador (Run Your Setup).

    -o-

    Si solamente desea probar los cuadros de diálogo Instalar (Setup) y cualquier acción personal que haya elegido, haga clic en Probar su instalador (Test Your Setup).

    Esta opción no instala ningún archivo ni hace cambios en el sistema.

Distribuir una aplicación

Después de desarrollar y probar su programa Instalador, está listo para distribuirlo.

Para distribuir su programa Instalar (Setup)

  1. En el nodo Preparar para distribuir (Prepare for Release) haga clic en Distribuir su instalador (Distribute Your Release).
  2. En el árbol Generar (Builds), seleccione el tipo de medio que contiene el instalador que desea distribuir.
  3. Entre la ubicación, o haga clic en Examinar (Browse) y desplácese a la ubicación donde copiará su paquete Instalar (Setup).
  4. Haga clic en Distribuir a ubicación (Distribute to Location).

También puede copiar su paquete Instalar (Setup) a una ubicación FTP.

Para información adicional y opciones para distribuir aplicaciones, vea la documentación de InstallShield Express.

Escenarios de distribución de Visual FoxPro

Esta guía asume que está instalando una aplicación simple de Visual FoxPro, que no tiene dependencias diferentes a las Librerías de tiempo de ejecución de Visual FoxPro. La siguiente información incluye instrucciones necesarias para escenarios de distribución diferentes a la instalación de una aplicación sólo Visual FoxPro con sus datos nativos. Para estos escenarios, agregue los siguientes módulos de combinación apropiados cuando seleccione objetos y módulos de combinación para su programa instalador.

Servicios Web y SOAP

Si su aplicación utiliza Servicios web o SOAP, debe incluir los siguientes módulos de combinación:

  • Archivos SOAP SDK (Soap_Core.msm)
  • Visual Basic Virtual Machine (MSVBVM60.msm)
  • Microsoft Component Category Manager Library (Comcat.msm)
  • Microsoft OLE 2.40 (OLEAUT32.msm)

Proveedor OLE DB de Microsoft Visual FoxPro

El Proveedor OLE DB de Visual FoxPro hacen posible que las aplicaciones Visual FoxPro y otras aplicaciones puedan a acceder a datos Visual FoxPro, utilizando OLE DB o ActiveX Data Objects (ADO). Para instalar el Proveedor OLE DB de Visual FoxPro en la PC destino, incluya el módulo de combinación (VfpOLEDB.msm).

Controles ActiveX

Los controles ActiveX son un elemento común de algunas aplicaciones Visual FoxPro. Para incluir controles ActiveX con su instalador InstallShield Express, debe incluir el módulo de combinación (Comcat.msm) Microsoft Component Category Manager Library.

Nota Windows 2000 y Windows XP también instalan los archivos de este módulo de combinación.

Los controles ActiveX que instale afectan el tipo de módulos de combinación que necesita instalar y los pasos extra que debe seguir para instalarlos.

  • Controles ActiveX comunes

    Hay controles ActiveX comunes que se distribuyen con Visual FoxPro y Microsoft Visual Studio. InstallShield Express incluye los módulos de combinación para la mayoría de estos controles.

    Si es necesario, agregue los módulos de combinación apropiados para los controles que necesite. Por ejemplo, si su aplicación utiliza el control Treeview, debe incluir el módulo de combinación MSCOMCTL.msm.

    Nota Los controles ActiveX comunes incluidos en los módulos de combinación de InstallShield Express contienen información de registro de conformidad con Windows Installer.
  • Controles Microsoft Foundation Class (MFC)

    Algunos viejos controles, como el control Calendar, utilizan librerías MFC; por lo tanto, se recomienda que incluye los módulos de combinación MFC apropiados, tal como MFC42.msm. Como con los controles VBCCE, debe agregar el control manualmente al proyecto y establecer varias configuraciones.

  • Controles de terceras partes

    Asegúrese de registrar cualquier control incluido de terceras partes. Además, podría necesitar agregar claves de registro específicas utilizando la ventana InstallShield Express Registry para cualquier requisito de licencia que sea necesario

    Para más información acerca de controles de terceras partes, vea la documentación suministrada por el vendedor acerca de cómo y dónde instalar estos controles. La documentación de controles de terceras partes también debe suministrar información acerca de cualquier archivo adicional que sea necesario, como archivos MFC.

Para asegurar que Windows Installer pueda volver atrás o mostrar archivos de anuncio instalados, debe instalar los archivos de una forma que cumpla con los requisitos de Windows Installer. El auto registro de archivos no cumple con los requisitos de Windows. Puede asegurarse que InstallShield Express instala objetos COM que cumplen con Windows Installer, siguiendo las instrucciones en este tema, acerca de registrar archivos. Para más información, vea la documentación en línea de InstallShield Express.

Aplicaciones que utilizan Ayuda HTML

El módulo de combinación Microsoft Visual FoxPro HTML Help Support Library (VFPHTMLHelp.msm) incluye los archivos FOXHHELP.exe y FOXHHELPPS.dll necesarios para soportar Ayuda HTML dentro de sus aplicaciones Visual FoxPro.

Además de su archivo .chm específico de la aplicación, puede incluir el núcleo visualizador para archivos de Ayuda HTML. La versiones posteriores de Microsoft Internet Explorer incluyen estos archivos. También puede distribuirlos con el archivo HHUPD.exe disponible en Microsoft Developer Network (MSDN).

Aplicaciones que utilizan componentes MDAC

Para aplicaciones Visual FoxPro que se ejecutan en sistemas operativos anteriores a Windows 2000 o Windows XP, se recomienda que incluye el módulo de combinación (MDAC25.msm) Microsoft Data Access Components (MDAC) si su aplicación utiliza alguno de los siguientes componentes de datos:

  • Controladores ODBC, incluyendo Microsoft Visual FoxPro ODBC Driver (VfpODBC.msm)
  • Proveedor OLE DB
  • ADO, RDS

Servidores COM

Las características de vuelta atrás de Windows hacen posible deshacer la instalación y registro de componentes si no se logra la instalación del producto. Sin embargo, debe instalar y registrar correctamente objetos COM para que estas características estén disponibles. Para registrar correctamente los objetos COM instalados, establezca el Tipo de registro (Registration Type) como Extraer información COM (Extract COM Information). El auto registro de objetos COM instalados, sacrifica la funcionalidad de vuelta atrás de Windows Installer.

Para más información, vea las instrucciones acerca de registrar archivos, en este tema.

Aplicaciones localizadas

La biblioteca de tiempo de ejecución de Visual FoxPro (VFP8Runtime.msm) contiene el archivo de recursos estándar de lenguaje neutral (VFP8renu.dll) utilizado para la distribución de todas las aplicaciones en Inglés (US). Si desea incluir soporte para otro archivo de recursos localizado (VFP8rxxx.dll), incluya el módulo de combinación Recursos Visual FoxPro apropiado que contenga el archivo de recursos que desea.

Nota Los archivos de recursos localizados no localizan el cuadro de diálogo Instalar. Debe seleccionar el lenguaje deseado para cuadros de diálogo Instalar cuando cree su proyecto Instalar.

Incluir un archivo de recursos localizado de Visual FoxPro

  1. En el nodo Datos de aplicación específica (Specify Application Data) haga clic en Objetos/Módulos de combinación (Objects/Merge Modules).
  2. Para identificar el módulo de combinación de Recursos Visual FoxPro que desea, mire la descripción de cada módulo en la parte inferior izquierda del panel.
  3. Seleccione el módulo de combinación que desea.

    Por ejemplo, para incluir el archivo de recursos Español, seleccione el módulo VFP8resn.msm. En la siguiente tabla se muestran los módulos de combinación disponibles, que contienen los archivos de recursos localizados correspondientes.

    Lenguaje y Módulo de combinación
    Chino, Simplificado | VFP8rchs.msm
    Chino, Tradicional | VFP8rcht.msm
    Checo | VFP8rcsy.msm
    Francés | VFP8rfra.msm
    Alemán | VFP8rdeu.msm
    Coreano | VFP8rkor.msm
    Ruso | VFP8rrus.msm
    Español, Alfabetización internacional | VFP8resn.msm

Información adicional

Puede descargar el Platform SDK Components para Windows Installer Developers desde el sitio de descargas de Microsoft http://www.microsoft.com/msdownload/platformsdk/sdkupdate/.

Vea también

Guías paso a paso | Archivos de recursos en las aplicaciones | Características y archivos restringidos y distribuibles de Visual FoxPro

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


Referencia

El material de referencia de Visual FoxPro incluye temas acerca de las herramientas de productividad además de los controles, los objetos, las propiedades, los métodos, los eventos, las instrucciones, las funciones y las constantes disponibles.

En esta sección

Referencia general
Información técnica relacionada con Visual FoxPro, incluye los tipos de archivos, estructuras de archivos y otra información de referencia acerca de elementos de Visual FoxPro.
Referencia del lenguaje
Proporciona una lista de temas de referencia del lenguaje en orden alfabético
Referencia de interfaz de usuario
Explican las opciones que aparecen en diversos cuadros de diálogo, ventanas y otras interfaces de usuario. Normalmente estos tipos de temas aparecen cuando presiona F1 en un cuadro de diálogo o en una ventana.
Mensajes de error
Proporciona información acerca de los mensajes de error más comunes de Visual FoxPro.

Secciones relacionadas

Introducción a Visual FoxPro
Proporciona información acerca de instalar, actualizar y configurar Visual FoxPro, también sobre personalizar el entorno de desarrollo.
Uso de Visual FoxPro
Da una introducción a las características de Visual FoxPro, conceptos y herramientas de productividad para desarrollar y administrar aplicaciones y componentes de bases de datos de alto rendimientos.
Referencia
Incluye temas acerca de las herramientas de productividad además de los controles, los objetos, las propiedades, los métodos, los eventos, las instrucciones, las funciones y las constantes disponibles.
Ejemplos
Proporciona ejemplos de código que puede usar para experimentar y familiarizarse con estas características.


Referencia general

Esta sección contiene información técnica más general, incluye los tipos de archivos, estructuras de archivos y otra información de referencia acerca de elementos de Visual FoxPro.

En esta sección

Autoincremento de valores en campos de una tabla
Explica como incrementar automáticamente o autoincrementar, valores de campo para tablas en bases de datos y tablas libres utilizando comando Visual FoxPro o el Diseñador de tablas.
Tipos de datos y campos
Proporciona enlaces a información sobre tipos de datos utilizados en Visual FoxPro y conversiones para otros tipos de datos, como tipos de datos de un esquema XML.
Manipulación de datos
Proporciona información sobre expresiones que puede crear para tener acceso completo a la potencia de manipulación de datos en Visual FoxPro.
Contenedores de almacenamiento de datos
Discute como determinar cuáles tipos de contenedores de almacenamiento de datos usar resume los diferentes alcances entre diferentes tipos de contenedores de datos.
Generador de expresiones
Proporciona información sobre como combinar expresiones Visual FoxPro, datos y operadores para crear un valor de un tipo dado.
Estructuras de archivo
Contiene información técnica acerca de estructuras de archivos y tipos de archivo.
Introducción a fuentes
Muestra como Visual FoxPro puede utilizar las fuentes que ha instalado para determinar la apariencia del texto que se muestra o imprime así como la posición y tamaño de controles.
Compatibilidad con gráficos en Visual FoxPro
Discute el Graphics Device Interface+ (GDI+), la interfaz para gráficos en Microsoft Windows XP y versiones posteriores del sistema operativo Windows. Visual FoxPro admite todos los formatos de gráficos que soporta GDI+.
Condiciones de combinación para tablas, consultas y vistas
Describe las condiciones de combinación utilizadas para especificar relaciones entre tablas, generalmente basadas en claves primarias y foráneas, cuando obtiene datos desde tablas para crear consultas y vistas.
Métodos abreviados de teclado
Proporciona información sobre métodos abreviados de teclado admitidos en Visual FoxPro.
Convenciones de nomenclatura
Discute la elección de nombres para objetos, propiedades y métodos expuestos que puedan ser entendidos fácilmente por el usuario de la aplicación.
Expresiones regulares y operadores
Describe expresiones regulares y operadores, los cuales son símbolos que puede usar para crear búsquedas más complejas para encontrar y reemplazar plantillas de texto.
Palabras reservadas
Proporciona una lista de palabras reservadas que debe evitar usar como nombres cuando programe.
Términos especiales para archivos de configuración
Proporciona una lista de términos especiales que puede usar en los archivos de configuración.
Nombres de menús del sistema
Proporciona una lista de nombres internos y nombres de la interfaz de usuario para la barra de menús de sistema, títulos de menú, menús y elementos de menú de Visual FoxPro. Con estos nombres, puede usar la barra de menú de sistema de Visual FoxPro para crear un sistema de menús para su aplicación.
Visual FoxPro y otros lenguajes de programación
Proporciona una comparación de elementos del lenguaje Visual FoxPro con otros lenguajes de programación.
Capacidades del sistema de Visual FoxPro
Lista los límites máximo y mínimo del sistema para archivos de tablas e índices, características de campos, variables y matrices, archivos de programa y procedimientos, capacidades del Diseñador de informes, etcétera.
Carpeta XSource
Lista los archivos .zip de la carpeta XSource que se expanden en los archivos de Ayuda HTML del ejemplo Solution y en las carpetas que contienen los complementos de Xbase para Visual FoxPro, tales como los archivos fuente para Addlabel, Examinador, Generadores, Coverage y Asistentes.

Secciones relacionadas

Referencia
Incluye temas acerca de las herramientas de productividad además de los controles, los objetos, las propiedades, los métodos, los eventos, las instrucciones, las funciones y las constantes disponibles.
Referencia de interfaz de usuario
Explica las opciones que aparecen en diversos cuadros de diálogo, ventanas y otras interfaces de usuario. Normalmente estos tipos de temas aparecen cuando se presiona F1 en un cuadro de diálogo o en una ventana.
Mensajes de error
Proporciona información acerca de los mensajes de error más comunes de Microsoft Visual FoxPro.
Uso de Visual FoxPro
Da una introducción a las características de Visual FoxPro, conceptos y herramientas de productividad para desarrollar y administrar aplicaciones y componentes de bases de datos de alto rendimientos.
Desarrollar aplicaciones Visual FoxPro
Incluye información conceptual acerca de cómo desarrollar aplicaciones Visual FoxPro, instrucciones para crear bases de datos y la interfaz de usuario y otras tareas necesarias para crear aplicaciones Visual FoxPro.
Programar en Visual FoxPro
Describe cómo acceder a toda la eficacia de Visual FoxPro creando aplicaciones que incorporan técnicas de programación orientada a objetos el modelo controlado por eventos para maximizar su productividad mientras programa.


Autoincremento de Valores en Campos de una Tabla

Se puede especificar automáticamente el incremento de valores en campos de una tabla, tanto contenida en una base de datos (DBC) como tablas libres. Una tabla puede contener múltiples campos que utilicen autoincremento; aunque solo es soportado para campos del tipo Entero. Visual FoxPro no puede usar campos que utilicen autoincremento para vistas locales ni remotas.

Puede activar el autoincremento para un campo en un contenedor de bases de datos (DBC) o una tabla libre usando los comandos adecuados o bien utilizando el Diseñador de Tablas de Visual FoxPro. Puede recuperar la configuración de autoincremento para un campo usando los comandos DISPLAY STRUCTURE y LIST.

Un campo que usa autoincrementar, se dispone como de sólo lectura y no puede ser cambiado con una operación de insertar, actualizar o reemplazar. Tratar de actualizar un campo autoincremental genera un mensaje de error, al menos que usted configure la propiedad AutoIncError a falso (.F.), o cambie los mensajes de error a desactivado usando el comando SET AUTOINCERROR. Para más información vea, la propiedad AutoIncError en CURSORSETPROP( ) (Función) y SET AUTOINCERROR (Comando).

Cuando cambie una tabla que no contiene un campo de autoincremento para incluir uno, ya sea usando ALTER TABLE o el Diseñador de Tabla, el autoincremento comienza con el siguiente registro agregado. Los registros previos de la tabla no son actualizados con los valores de inicio de autoincremento para el primer registro. Necesita asegurarse que el resultado no cause conflictos.

  • 0x0C para la columna autoincrementada
  • Next Valor autoincremento
  • Step Valor a incrementar

Para más Información, vea Estructura de archivos de tabla.

Asuntos Concernientes al Uso de Campos de Autoincremento Automático de Valores

En las tablas que contienen campos de incremento automático de valores, los registros se agregan al buffer aproximadamente 35% más lento que en tablas sin campos de incremento automático de valores, lo cual podría afectar el desempeño. Al usar el buffering de tablas, el encabezado de la tabla es bloqueado mientras el registro es agregado.

Visual FoxPro no maneja los desfases en las secuencias generadas. Los desfases pueden ser causados al revertir un registro agregado o insertado y al fallar la actualización de la tabla. En todos los casos, el valor sin uso esta perdido, y el siguiente valor a generar permanecerá tal como si el de la operación de agregado o insertado se hubiera completado satisfactoriamente.

Las versiones anteriores de Visual FoxPro no pueden reconocer tablas que usan autoincremento. Si usted quita autoincrementar, entonces el estado actual del contenido del último campo incrementado y los valores incrementales son borrados y descartados del subregistro del archivo .dbf. Los valores de autoincremento previamente almacenados en cada registro permanecen.

Autoincremento Usando Comandos Visual FoxPro

Se puede usar la cláusula AUTOINC en los comandos SQL CREATE TABLE y ALTER TABLE para activar el autoincremento para campos. Para más información acerca de como usar la cláusula AUTOINC, vea comando CREATE TABLE - SQL y comando ALTER TABLE - SQL.

Autoincremento Usando el Diseñador de Tabla

La ficha Campos en el Diseñador de Tablas incluye un tipo de datos llamado Entero (AutoInc) en la lista de Tipos para un campo en particular. Cuando usted hace la selección del Tipo de campo Entero (AutoInc) para un campo en particular, Visual FoxPro activa el autoincremento para ese campo.

Nota Cuando hace una selección del tipo de datos Entero (AutoInc) para un campo recién creado, el cuadro de texto Valor Predeterminado se pone no disponible. Si quiere especificar un valor predeterminado, debe hacerlo antes de cambiar el tipo de datos a Entero (AutoInc).
Cuando hace una selección del tipo de datos Entero (AutoInc) para un campo existente con un valor predeterminado, el valor predeterminado del campo se pone no disponible. Sin embargo Visual FoxPro no descarta ni usa el valor. El valor predeterminado del campo se hace disponible otra vez cuando cambie a otro tipo de datos que no sea Entero (AutoInc). Adicionalmente, las expresiones que se introducen al campo con valores predeterminados, permanecen cuando se cambia el tipo del campo a Entero (AutoInc). Todavía puede usar código como DBGETPROP( ) que recupera el valor predeterminado para un campo.

La ficha Campos incluye el cuadro de grupo Incremento Automático, que contiene el cuadro de texto Siguiente Valor y Paso. Usted puede usar los controles numéricos para ajustar el inicio (Siguiente Valor) y los valores de incremento para el campo Paso. Para más información acerca del Siguiente Valor, Paso y la configuración de las características de autoincremento usando el Diseñador de Tabla, vea Ficha Campos, Diseñador de tablas y Configurar valores de campo autoincremental.

Vistas Locales

Las vistas "no heredan" el comportamiento base de las tablas con autoincremento, y los campos en la vista que representan los campos con autoincremento de la tabla base, son de lectura/escritura. El autoincremento ocurre en la tabla base cuando el registro o los registros son actualizados en la tabla base. Debe usar la función REQUERY( ) si desea refrescar la vista con los valores de autoincremento previamente generados.

Buffer de Tablas

Visual FoxPro no maneja el desempeño de cualquier autoincremento relativo a los buffer de tablas. Todos los registros agregados e insertados que tienen valores de autoincremento son generados ya sea por la tabla base o por el buffer de tablas activo. En el caso de buffer de tablas, cuando se llama la función TABLEUDPATE( ), la tabla base es actualizada con el valor previamente generado. Si la actualización no ocurre, por ejemplo llamando la función TABLEREVERT( ), cualquier valor de autoincremento que se haya generado es descartado, resultando así lagunas en la secuencia.

Bloqueo de Registros

Cuando se activa el autoincremento para un campo, los valores de inicio e incremento, Valor Siguiente y Paso, se guardan en el encabezado de la tabla (.dbf) en la porción sin uso o reservada del subregistro de campo para el campo especificado. Valor Siguiente se guarda como un entero de 4 bytes. El valor Paso es almacenado como un entero de 1 byte con un valor máximo de 255. El valor usado para incrementar el valor del campo es la suma del valor almacenado en el encabezado del .dbf y el valor incremental. La secuencia de operación ocurre como sigue:

  • Realiza la operación de insertar o agregar.
  • Bloquea Encabezado.
  • Aumenta el valor actualmente almacenado por el valor de Paso y lo aplica al campo.
  • Almacena el nuevo valor, el valor del registro recién añadido, en el encabezado del archivo .dbf.
  • Desbloquea el encabezado cuando la operación de insertar o agregar esta completa. El encabezado contiene el último valor incrementado.

Vea también

Referencia general | Agregar campos | Modificar campos | DBGETPROP( ) (Función) | LIST (Comando) | DISPLAY STRUCTURE (Comando) | CURSORGETPROP( ) (Función)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico".


Tipos de datos y campos

Esta sección contiene una lista de tipos de datos y funciones que pueden utilizarse para actuar sobre tipos de datos.

En esta sección

Tipos de datos y campos de Visual FoxPro
Proporciona información acerca de los tipos de datos Visual FoxPro, incluyendo descripciones, valores permisibles, rango y tamaño de estos valores.
Equivalencia entre tipo de datos Visual FoxPro y esquema XML
Describe tipos de datos XML Schema y muestra como se equivalen con tipos de datos Visual FoxPro y viceversa.
Tipo de datos Carácter
Razona sobre cuando se debe elegir el tipo de dato Carácter.
Tipo de datos Monetario (Currency)
Razona sobre cuando se debe usar el tipo de dato Monetario en lugar del tipo de dato Numérico.
Tipo de datos Fecha
Razona sobre el tipo de dato Fecha y las reglas que se le aplican.
Tipo de datos DateTime
Razona sobre cuando se debe elegir este tipo de dato y las reglas que se le aplican.
Tipo de campo Doble
Razona cuando debe utilizarse este tipo de dato en lugar del Numérico.
Tipo de campo Flotante
Proporciona información acerca del tipo de campo flotante, el cual es funcionalmente equivalente a Numérico.
Tipo de campo General
Proporciona información acerca de cuando debe usar el tipo de campo General.
Tipo de campo Entero
Razona acerca del tipo de campo Entero, el cual se utiliza para valores numéricos no decimales donde el rendimiento y limitaciones de almacenamiento en tabla son importantes.
Tipo de datos Lógico
Describe un forma eficiente para almacenar datos que tienen solamente dos valores
Tipo de campo Memo
Describe el tipo de campo Memo, el cual se usa para almacenar bloques de datos.
Tipo de datos Numérico
Razona sobre cuando debe usarse datos Numéricos.
Tipo de datos Variant
Razona sobre los tipos de datos que pueden contener cualquier tipo de datos excepto datos de longitud fija.

Secciones relacionadas

Categorías del lenguaje
Contiene una lista de funcionalidades y descripciones del lenguaje.
Uso de Visual FoxPro
Describe las características de programación de Visual FoxPro diseñadas para mejorar la productividad del programador, incluidos los métodos Access y Assign, la compatibilidad con más formatos de archivos gráficos y lenguaje para simplificar las tareas de programación.
Desarrollar aplicaciones Visual FoxPro
Esta sección incluye información conceptual acerca de cómo desarrollar aplicaciones Visual FoxPro, instrucciones para crear bases de datos y la interfaz de usuario, y otras tareas necesarias para crear aplicaciones Visual FoxPro
Programar en Visual FoxPro
Describe cómo acceder a toda la eficacia de Visual FoxPro creando aplicaciones que incorporan técnicas de programación orientada a objetos el modelo controlado por eventos para maximizar su productividad mientras programa.


Tipos de datos y campos Visual FoxPro

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. Una vez especificado el tipo de datos que está usando, Visual FoxPro puede almacenar y manipular los datos de forma eficaz.

Cuando se crea una tabla, se puede especificar el tipo de datos que se almacena en cada campo de la tabla. Es posible especificar más tipos de datos para campos en una tabla que para variables y matrices, las cuales sólo pueden almacenar un subconjunto de los tipos de datos disponibles en Visual FoxPro; sin embargo, el valor que se almacene en una variable o elemento de matriz determina el tipo de dato almacenado. Para más información, ver Elegir tipos de datos.

Sugerencia Se puede usar la función TYPE( ) para determinar el tipo de dato almacenado en una variable, elemento de matriz o campo.

La siguiente tabla lista los tipos de datos en Visual FoxPro.

Tipos de datos de Visual FoxPro

Tipo de datos | Descripción | Tamaño | Intervalo
Carácter | Cualquier texto Por ejemplo, una dirección de un cliente | 1 byte por carácter hasta 254 | Cualquier carácter
Monetario (Currency) | Importes monetarios | 8 bytes | - $922337203685477.5807 to $922337203685477.5807
Fecha | Dato cronológico que consiste de mes, día y año Por ejemplo, fecha de una orden | 8 bytes | Al usar formatos de fecha estrictos, {^0001-01-01}, 1 de enero, 1 d.C. a {^9999-12-31}, 31 de diciembre, 9999 d.C.
DateTime | Dato cronológico que consiste de mes, día, año, horas, minutos y segundos Por ejemplo, fecha y hora de llegada | 8 bytes | Al usar formatos de fecha estrictos, {^0001-01-01}, 1 de enero, 1 d.C. a {^9999-12-31}, 31 de diciembre, 9999 d.C., más 00:00:00 a.m. a 11:59:59 p.m.
Lógico | Valor booleano verdadero o falso | 1 byte | Verdadero (.T.) o Falso (.F.)
Numérico | Números enteros o decimales Por ejemplo, la cantidad de elementos ordenados | 8 bytes en la memoria; 1 a 20 bytes en una tabla | - 0,9999999999E+19 a 0,9999999999E+20
Variant | Una variable de tipo Variant puede contener cualquier tipo de datos de Visual FoxPro y el valor Null. Una vez que se almacena un valor en una variable del tipo Variant, ésta asume el tipo de los datos que contiene. Las variables tipo Variant se designan con el prefijo e en la sintaxis del lenguaje. | Vea el tipo de datos permitidos. | Vea el tipo de datos permitidos.

Además, Visual FoxPro proporciona tipos de datos que se aplican únicamente a campos de tablas.

Tipos de campos de Visual FoxPro

Tipo de campo | Descripción | Tamaño | Intervalo
Character (Binary) | Cualquier dato carácter que no se desea traducir entre páginas de código. Por ejemplo, usar contraseñas almacenadas en una tabla y usada en diferentes países o regiones | 1 byte por carácter hasta 254 | Algunos caracteres
Doble | Número de signo flotante de precisión doble | 8 bytes | +/-4,94065645841247E-324 a +/-8,9884656743115E307
Flotante | Igual que Numérico | 8 bytes en la memoria; 1 a 20 bytes en una tabla | - 0,9999999999E+19 a 0,9999999999E+20
General | Referencia a un objeto OLE | 4 bytes en una tabla | Limitado por la memoria disponible
Entero | Valor numérico sin decimales Por ejemplo, un número de línea en una orden | 4 bytes | -2147483647 a 2147483647
Integer (Autoinc) | Lo mismo que Integer pero también incluye un valor para incremento automático. Sólo lectura. | 4 bytes | Valor controlado por los valores de autoincremento Next y Step (Siguiente y paso).
Memo | Cualquier texto de longitud indeterminada o referencia a un bloque de datos Por ejemplo, notas acerca de llamadas telefónicas | 4 bytes in table | Limitado por la memoria disponible
Memo (Binario) | Lo mismo que Memo excepto que los datos no cambian entre páginas de código Por ejemplo, una secuencia de comandos de inicio usada en diferentes países o regiones | 4 bytes en una tabla | Limitado por la memoria disponible

Cada tipo de datos tiene sus propias características, incluido el tamaño de almacenamiento:

Diferencias de almacenamiento de tipos de datos

Para obtener la lista de funciones que pueden utilizarse para cada tipo de datos, ver Categorías del lenguaje.

Ver también

Tipos de datos y campos


Equivalencias entre tipo de datos de Visual FoxPro y esquema XML

Las tablas siguientes muestran los siguientes tipos de equivalencias:

  • Tipo de datos primitivos del Esquema XML a tipo de datos de Visual FoxPro
  • Tipo de datos derivados del Esquema XML a tipo de datos de Visual FoxPro
  • Tipo de datos de Visual FoxPro a tipo de datos de la Definición del Esquema XML (XSD)
  • Tipo de datos del Esquema Reducido de Datos XML (XDR) a tipo de datos de Visual FoxPro

Tipo de datos primitivos del Esquema XML a tipo de datos de Visual FoxPro

Tipo de datos XML | Faceta | Descripción | Tipo de Datos Visual FoxPro
anyURI | length, pattern, maxLength, minLength, enumeration, whiteSpace | Representa un Identificador de Recurso Uniforme (URI) como está definido por el RFC 2396. Un valor anyURI puede ser absoluto o relativo y podría tener un identificador de fragmento opcional. | Memo. Visual FoxPro emplea un enlace a un URI en un campo Memo.
base64Binary | length, pattern, maxLength, minLength, enumeration, whiteSpace | Representa un dato arbitrario binario codificado en base 64. Un binario base64 es el conjunto de secuencias de tamaño fijo de octetos binarios. | Memo (Binario) o Carácter (Binario)
boolean | pattern, whiteSpace | Representa valores lógicos, los cuales pueden ser Verdadero o Falso. | Lógico
date | enumeration, pattern, minInclusive, minExclusive, maxInclusive, maxExclusive, whiteSpace | Representa una fecha. El patrón para date es CCYY-MM-DD con un indicador de zona opcional en el formato descripto para dateTime. | Fecha
dateTime | enumeration, pattern, minInclusive, minExclusive, maxInclusive, maxExclusive, whiteSpace | Esta representación podría estar inmediatamente seguida por la letra "Z" para indicar Tiempo Universal Coordinado (UTC) o para indicar la zona horaria. Por ejemplo, la diferencia entre la hora local y UTC seguido por un signo positivo o negativo (+ o -), seguido por la diferencia respecto de UTC representada como hh:mm. Minutos es información requerida. Si se incluye información de zona horaria, tanto los minutos como las horas deben estar presentes. | DateTime
decimal | enumeration, pattern, totalDigits, fractionDigits, minInclusive, minExclusive, maxInclusive, maxExclusive, whiteSpace | Representa números de precisión simple. | Numérico, Moneda o Carácter
double | pattern, enumeration, minInclusive, minExclusive, maxInclusive, maxExclusive, whiteSpace | Representa números de doble precisión en punto flotante de 64 bits. | Doble
duration | enumeration, pattern, minInclusive, minExclusive, maxInclusive, maxExclusive, whiteSpace | Representa tiempo de duración. El patrón para duration es PnYnMnDTnHnMnS, donde nY representa el número de años, nM el número de meses, nD el número de días, T el separador de fecha/hora, nH el número de horas, nM el número de minutos, y nS el número de segundos. Por ejemplo, para indicar una duración de un año, 2 meses, 3 días, 10 horas, y 30 minutos; deberá escribir: P1Y2M3DT10H30M. También puede indicar una duración de menos 120 días como -P120D. | Carácter (C(30))
float | pattern, enumeration, minInclusive, minExclusive, maxInclusive, maxExclusive, whiteSpace | Representa números de simple precisión en punto flotante de 32 bits. | Doble
gDay | enumeration, pattern, minInclusive, minExclusive, maxInclusive, maxExclusive, whiteSpace | Representa un día en el calendario Gregoriano que se repite, específicamente un día del mes, tal como el decimoquinto día del mes. Un gDay es el espacio de un conjunto de días calendario. Específicamente, es un día del mes. El patrón para gDay es --DD con un indicador opcional de zona horaria tal como se describe para el tipo date. | Carácter (C(10))
gMonth | enumeration, pattern, minInclusive, minExclusive, maxInclusive, maxExclusive, whiteSpace | Representa un mes en el calendario Gregoriano que ocurre una vez cada año. Un gMonth es un espacio de un conjunto de meses calendario. Específicamente, es un mes del año. El patrón para gMonth es -MM- con un indicador opcional de zona horaria tal como se describe para el tipo date. | Carácter (C(10))
gMonthDay | enumeration, pattern, minInclusive, minExclusive, maxInclusive, maxExclusive, whiteSpace | Representa una fecha especifica del calendario que se repite anualmente, tal como el treinta de Mayo. Un gMonthDay es parte de un conjunto de fechas calendario. Específicamente, es una fecha de un año. El patrón para gMonthDay es --MM-DD con un indicador opcional de zona horaria como se describe para el tipo date. | Carácter (C(10))
gYear | enumeration, pattern, minInclusive, minExclusive, maxInclusive, maxExclusive, whiteSpace | Representa un año calendario. El patrón para gYear es CCYY con un indicador opcional de zona horaria como se describe para el tipo dateTime. | Carácter (C(15))
gYearMonth | enumeration, pattern, minInclusive, minExclusive, maxInclusive, maxExclusive, whiteSpace | Representa un mes calendario específico de un año específico. El patrón para gYearMonth es CCYY-MM con un indicador opcional de zona horaria como se describe para el tipo. | Carácter (C(15))
hexBinary | length, pattern, maxLength, minLength, enumeration, whiteSpace | Representa un dato binario codificado en hexadecimal. Un hexBinary es un conjunto de secuencias de longitud finita de octetos binarios. Cada octeto está codificado como una dupla de caracteres formada por dos dígitos hexadecimales ([0-9a-fA-F]) representando del código del octeto. | Carácter (Binario) cuando se especifica una longitud máxima (maxLength) y ésta es menor a 255 caracteres. Sino, se usa un campo Memo (Binario).
NOTATION | length, enumeration, pattern, maxLength, minLength, whiteSpace | Representa un atributo de tipo NOTATION. Un conjunto de QNames. | Memo
QName | length, enumeration, pattern, maxLength, minLength, whiteSpace | Representa un nombre reservado. Un nombre reservado esta compuesta de un prefijo y un nombre loacl separados por una coma. Ambos deberán ser un NCName. El prefijo debe estar asociado con un espacio de nombres de referencia Identíficador Uniforme de Recursos (URI), usando una declaración de espacio de nombre. | Memo
string | length, pattern, maxLength, minLength, enumeration, whiteSpace | Representa una cadena de caracteres. | Carácter cuando se especifica una longitud máxima (maxLength) y ésta es menor a 255 caracteres. Sino, se usa un campo Memo.
time | enumeration, pattern, minInclusive, minExclusive, maxInclusive, maxExclusive, whiteSpace | Representa un valor de tiempo que se repite cada día. El patrón para time es hh:mm:ss.sss con un indicador de zona horaria opcional. | Carácter (C(20))

Tipo de datos derivados del Esquema XML a tipo de datos de Visual FoxPro

Tipo de datos XML | Facetas | Descripción | Tipo de datos Visual FoxPro
anyType | Unknow | Desconocido. No es un tipo XSD pero existe en MSXML. | Memo
byte | enumeration, fractionDigits, pattern, minInclusive, minExclusive, maxInclusive, maxExclusive, totalDigits, whiteSpace | Representa un número entero entre -128 y 127. Este tipo de dato es derivado del tipo de dato short. | Entero
ENTITIES | length, maxLength, minLength, enumeration, whiteSpace | Representa el atributo de tipo ENTITIES y contiene un conjunto de valores de tipo ENTITY. | Carácter, si se especifica una longitud máxima (maxLength) menor a 255. Sino, se usa un campo Memo.
ENTITY | length, enumeration, pattern, maxLength, minLength, whiteSpace | Representa el atributo de tipo ENTITY definido en XML 1.0. Recomendación: Esta es una referencia a una entidad no analizable con nombre que coincide con el nombre especificado. Un ENTITY debe ser un NCName y debe estar declarado en el esquema como un nombre de entidad no analizable. El tipo de dato es derivado de NCName. | Carácter, si se especifica una longitud máxima (maxLength) menor a 255 caracteres. Sino, se usa un campo Memo.
ID | length, enumeration, pattern, maxLength, minLength, whiteSpace | Representa el atributo tipo ID definido en XML 1.0 Recomendación. El ID debe ser un NCName y debe ser único en un documento XML. Este tipo de dato es derivado del tipo NCName. | Carácter, si se especifica una longitud máxima (maxLength) menor a 255 caracteres. Sino, se usa un campo Memo.
IDREF | length, enumeration, pattern, maxLength, minLength, whiteSpace | Representa una referencia a un atributo de tipo ID que coincide con el ID especificado. Un IDREF debe ser un NCName y debe ser un valor de un elemento o atributo de tipo ID en el documento XML. Este tipo de dato es derivado del NCName. | Carácter, si se especifica una longitud máxima (maxLength) menor a 255 caracteres. Sino, se usa un campo Memo.
IDREFS | length, maxLength, minLength, enumeration, whiteSpace | Representa el atributo de tipo IDREFS y contiene un conjunto de valores de tipo IDREF. | Carácter, si se especifica una longitud máxima (maxLength) menor a 255 caracteres. Sino, se usa un campo Memo.
int | enumeration, fractionDigits, pattern, minInclusive, minExclusive, maxInclusive, maxExclusive, totalDigits, whiteSpace | Representa un valor entero entre -2147483648 y 2147483647. Este tipo es derivado del tipo long. | Entero
integer | enumeration, fractionDigits, pattern, minInclusive, minExclusive, maxInclusive, maxExclusive, totalDigits, whiteSpace | Representa una secuencia de dígitos decimales, opcionalmente, puede tener un signo (+ o -) adelante. Este tipo de dato es derivado del decimal. | Entero, si totalDigits es menor a 10. Caso contrario, Carácter de tamaño totalDigits.
language | length, pattern, maxLength, minLength, enumeration, whiteSpace | Representa Identíficadores de Lenguaje natural (según están definidos por el RFC 1766). Este tipo de dato se deriva del tipo token. | Carácter, si se especifica una longitud máxima (maxLength) menor a 255 caracteres. Sino, se usa un campo Memo.
long | enumeration, fractionDigits, pattern, minInclusive, minExclusive, maxInclusive, maxExclusive, totalDigits, whiteSpace | Representa un número entero entre -9223372036854775808 y 9223372036854775807. El tipo de dato es derivado del tipo Entero. | Entero, si totalDigits es menor a 10. Caso contrario, Carácter de tamaño totalDigits.
Name | length, pattern, maxLength, minLength, enumeration, whiteSpace | Representa nombres en XML. Un Name es un símbolo que comienza con una letra, un subguión o un token que comienza con una letra, subrayado o color y continua con el nombre Carácter (letras, dígitos y otros caracteres). Estos datos son del tipo token. | Carácter, si se especifica una longitud máxima (maxLength) menor a 255 caracteres. Sino, se usa un campo Memo.
NCName | length, pattern, maxLength, minLength, enumeration, whiteSpace | Representa nombres no colonizados. Este tipo de dato es el mismo que nombre, excepto que no puede comenzar con el carácter dos puntos (:). Este tipo de datos e derivado de Name. | Carácter, si se especifica una longitud máxima (maxLength) menor a 255 caracteres. Sino, se usa un campo Memo.
negativeInteger | enumeration, fractionDigits, pattern, minInclusive, minExclusive, maxInclusive, maxExclusive, totalDigits, whiteSpace | Representa un entero que es menor a cero y consiste de un signo menos (-) y una secuencia de dígitos decimales. Este tipo es derivado de nonPositiveInteger. | Entero, si totalDigits es menor a 10. Caso contrario, Carácter de tamaño totalDigits.
NMTOKEN | length, pattern, maxLength, minLength, enumeration, whiteSpace | Representa el tipo de atributo NMTOKEN. Un NMTOKEN es un conjunto de caracteres tales como letras, dígitos y otros caracteres en cualquier combinación. A diferencia de Name y NCName, NMTOKEN no tiene restricciones respecto a con que carácter empieza. Este tipo de dato es derivado de token. | Carácter, si se especifica una longitud máxima (maxLength) menor a 255 caracteres. Sino, se usa un campo Memo.
NMTOKENS | length, maxLength, minLength, enumeration, whiteSpace | Representa el 0 y contiene un conjunto de valores de tipo NMTOKEN. | Memo
nonNegativeInteger | enumeration, fractionDigits, pattern, minInclusive, minExclusive, maxInclusive, maxExclusive, totalDigits, whiteSpace | Representa un entero que es mayor o igual a cero. Este tipo de dato es derivado de Entero. | Entero, si totalDigits es menor a 10. Caso contrario, Carácter de tamaño totalDigits.
nonPositiveInteger | enumeration, fractionDigits, pattern, minInclusive, minExclusive, maxInclusive, maxExclusive, totalDigits, whiteSpace | Representa un entero menor o igual a cero y consiste de un signo menos (-) y una secuencia de dígitos decimales. Este tipo de dato es derivado de Entero. | Entero, si totalDigits es menor a 10. Caso contrario, Carácter de tamaño totalDigits.
normalizedString | length, pattern, maxLength, minLength, enumeration, whiteSpace | Representa cadenas normalizadas de espacios en blanco. Este tipo de dato es derivado de string. | Carácter, si se especifica una longitud máxima (maxLength) menor a 255 caracteres. Sino, se usa un campo Memo.
positiveInteger | enumeration, fractionDigits, pattern, minInclusive, minExclusive, maxInclusive, maxExclusive, totalDigits, whiteSpace | Representa un entero que es mayor a cero. Este tipo de dato es derivado de nonNegativeInteger. | Entero, si totalDigits es menor a 10. Caso contrario, Carácter de tamaño totalDigits.
token | enumeration, pattern, length, minLength, maxLength, whiteSpace | Representa cadenas de símbolos. Este tipo de dato es derivado de normalizedString. | Carácter, si se especifica una longitud máxima (maxLength) menor a 255 caracteres. Sino, se usa un campo Memo.
short | enumeration, fractionDigits, pattern, minInclusive, minExclusive, maxInclusive, maxExclusive, totalDigits, whiteSpace | Representa un entero con un valor mínimo de -32768 y un máximo de 32767. Este tipo de dato es derivado de int. | Entero
unsignedByte | enumeration, fractionDigits, pattern, minInclusive, minExclusive, maxInclusive, maxExclusive, totalDigits, whiteSpace | Representa un entero entre cero y 255. Este tipo de dato es derivado de unsignedShort. | Entero
unsignedInt | enumeration, fractionDigits, pattern, minInclusive, minExclusive, maxInclusive, maxExclusive, totalDigits, whiteSpace | Representa un entero entre cero y 4294967295. El tipo de dato es derivado de unsignedLong. | Entero, si totalDigits es menor a 10. Caso contrario, Carácter de tamaño totalDigits.
unsignedLong | enumeration, fractionDigits, pattern, minInclusive, minExclusive, maxInclusive, maxExclusive, totalDigits, whiteSpace | Representa un entero entre cero y 18446744073709551615. Este tipo de dato es derivado de NegativeInteger. | Entero, si totalDigits es menor a 10. Caso contrario, Carácter de tamaño totalDigits.
unsignedShort | enumeration, fractionDigits, pattern, minInclusive, minExclusive, maxInclusive, maxExclusive, totalDigits, whiteSpace | Representa in entero entre cero y 65535. Este tipo de datos es derivado de unsignedInt. | Entero

Tipo de datos de Visual FoxPro a tipo de datos de la Definición del Esquema XML (XSD)

Tipo de datos Visual FoxPro | Tipo de datos XSD y ejemplo | Restricciones y ejemplo | Comentarios
Carácter xs:string

<xs:element name="cc04" minOccurs="0">
   <xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="128"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Carácter (Binario) xs:base64Binary <xs:element name="cc04" minOccurs="0">

<xs:simpleType>

<xs:restriction base="xs:base64Binary">

<xs:maxLength value="128"/>

</xs:restriction>

</xs:simpleType>

</xs:element>

 El contenido es traducido a codificación base64.
Carácter (Binario) xs:hexBinary <xs:element name="cc04" minOccurs="0">

<xs:simpleType>

<xs:restriction base="xs:hexBinary">

<xs:maxLength value="128"/>

</xs:restriction>

</xs:simpleType>

</xs:element>

 El contenido es traducido a codificación hexBinary.
Moneda xs:decimal

-1.23, 0, 123, 4, 1000.00

<xs:element name="yc07" minOccurs="0">
    <xs:simpleType>
<xs:restriction base="xs:decimal">
<xs:totalDigits value="19"/>
<xs:fractionDigits value="4"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
 Moneda es siempre 19,4.
Fecha xs:date

1999-05-31

 Ninguno
DateTime xs:dateTime

1999-05-31T13:20:00.000-05:00

 Ninguno
Doble xs:double

-INF, -1E4, -0, 0, 12.78E-2, 12, INF, NaN

 Ninguno El valor exportado debería incluir la escala máxima permitida para Doble y no ser limitada por la escala para mostrar (el valor interno es Doble).
Float xs:decimal <xs:element name="fc06" minOccurs="0">

<xs:simpleType>

<xs:restriction base="xs:decimal">

<xs:totalDigits value="14"/>

<xs:fractionDigits value="4"/>

</xs:restriction>

</xs:simpleType>

</xs:element>

 totalDigits es el número de dígitos sin incluir el punto decimal.
General | No soportado
Entero xs:int

-1, 126789675
Lógico xs:boolean

true, false, 1, 0

 Los valores pueden ser verdadero o Falso; o 1 o 0.
Memo xs:string <xs:element name="mc03" minOccurs="0">

<xs:simpleType>

<xs:restriction base="xs:string">

<xs:maxLength value="2147483647"/>

</xs:restriction>

</xs:simpleType>

</xs:element>
Memo (Binario) xs:base64Binary <xs:element name="ts12" minOccurs="0">

<xs:simpleType>

<xs:restriction base="xs:base64Binary"/>

</xs:simpleType>

</xs:element>

 El contenido es traducido a codificación base64.

Mapea como Binario en SQL.
Memo (Binario) xs:hexBinary <xs:element name="ts12" type="xs:hexBinary" minOccurs="0"> El no contenido no es codificado NI decodificado.

Mapea como binario en SQL.
Numérico xs:decimal

-1.23, 0, 123, 1000.00

 <xs:element name="nc00" minOccurs="0">

<xs:simpleType>

<xs:restriction base="xs:decimal">

<xs:totalDigits value="10"/>

<xs:fractionDigits value="4"/>

</xs:restriction>

</xs:simpleType>

</xs:element >

 totalDigits es el número de dígitos sin incluir el separador decimal.

Tipo de datos del Esquema Reducido de Datos XML (XDR) a tipo de datos de Visual FoxPro

Tipo de datos XDR | Descripción | Tipo de datos Visual FoxPro | Tipo XSD
bin.base64 | Indica datos binarios codificados Base64 estilo MIME. | Carácter (Binario, si es menor que 255) o Memo (Binario) | base64Binary
bin.hex | Indica datos binarios codificados hexadecimal. | Carácter (Binario) o Memo (Binario) | hexBinary
boolean Especifica un valor lógico indicados por 0 ó 1.

Ejemplo: 0 es falso y 1 es verdadero.

 Lógico boolean
char | Indica un numero correspondiente a la representación UNICODE de un carácter. | Ninguno | No soportado
date Indica la fecha en un subconjunto del formato 8601 sin la información de hora.

Ejemplo: "1994-11-05"

 Fecha date
dateTime Indica una fecha en un subconjunto del formato ISO 8601 con información de hora opcional y sin la información de zona horaria. Fracciones de segundos pueden ser indicadas como nanosegundos.

Ejemplo: "1988-04-07T18:39:09"

 DateTime dateTime
dateTime.tz Indica una fecha en un subconjunto del formato ISO 8601 con información de hora opcional e información de zona horaria opcional. Fracciones de segundos pueden ser indicadas como nanosegundos.

Ejemplo: "1988-04-07T18:39:09-08:00"

 Ninguno Ninguno
entity | Especifica una referencia a una entidad no procesada, requiere una declaración <!ENTITY> para cada instancia de la entidad. | Ninguno | Ninguno
entities | Indica una lista de entidades delimitadas por un espacio en blanco. | Ninguno | Ninguno
enumeration Similar a nmtoken pero con con una lista explícita de valores permitidos. Soportado solo para atributos.

Ejemplo: "Red Blue Green"

 Ninguno Ninguno
fixed.14.4 Indica un número de no mas de 14 dígitos en la parte entera (a la izquierda del punto decimal) y no mas de cuatro dígitos como parte decimal (a la derecha del punto decimal).

Ejemplo: 9999.0044

 Moneda decimal 18,4.
float Indica un numero real en punto flotante.

Ejemplos: 111, 3.14, -123.456E+10

 Doble double
i1 Indica un entero con signo (opcional) de un byte desde -128 a 127.

Ejemplos: 1, 127, -128

 Entero byte
i2 Indica un entero con signo (opcional) de 2 bytes entre -32768 a 32767.

Ejemplos: 1, 703, -32768

 Entero short
i4 Indica un entero con signo (opcional) entre -2147483648 a 2147483647

Ejemplo: 1, 703, -32768, 148343, -1000000000

 Entero int
i8 Indica un entero con signo (opcional) entre -9223372036854775808 a 9223372036854775807.

Ejemplo: 1, 703, -32768, 1483433434334, -1000000000000000

 Carácter o Entero long
id Indica un valor que identifica un atributo como un tipo de atributo. el valor de id deberá ser único en todo el documento.

En un documento, los atributos idref se refieren a in tipo de atributo id, formando una relación similar a la que existe entre claves primarias y claves heredadas en las bases de datos relacionales.

Ejemplo: Cust1

 Ninguno Ninguno
idref Indica un valor correspondiente a un tipo id, habilitando vínculos entre documentos.

Ejemplo: Cust1

 Ninguno Ninguno
idrefs Similar a idref, excepto que contiene múltiples valores de tipo idref separados por un espacio en blanco.

Ejemplo: Cust1 Cust2 Cust3

 Ninguno Ninguno
int Indica un entero con signo.

Ejemplos 11123, -123

 Entero int
nmtoken Contiene valores que cumplen las reglas de nombres de símbolos.

Ejemplo: Cust1

 Ninguno Ninguno
nmtokens Similar a un nmtoken excepto que puede una lista de valores nmtoken separados por espacios en blanco.

Ejemplo: Cust1 Cust2 Cust3

 Ninguno Ninguno
notation | Un tipo NOTATION | Ninguno | Ninguno
number Un numero sin limites en la cantidad de dígitos.

Ejemplos: 111, 3.14, -123.456E+10

Note Para ADO RecordSets, exiset un caso especial donde el numero DEBERÁ ser de tipo Moneda. Cuando dt:type='number' en un Esquema ADO XDR, Visual FoxPro verifica la existencia de rs:dbtype='currency'.
 Carácter, Moneda, o Numérico según sea necesario decimal
r4 | Un numero similar al Float pero codificado en solo 4 bytes. Los valores están entre 1.17549435E-38F y 3.40282347E+38F. | Doble | float
r8 | Indica un número en punto flotante. Este tipo de datos soporta solo 15 dígitos de precisión y su rango de valores va desde el 2.2250738585072014E-308 al 1.7976931348623157E+308. | Doble | double
string Indica una cadena de caracteres.

Ejemplo: "Esto es una cadena de caracteres"

 Carácter, si maxLength es menor a 255. Caso contrario, Memo. string
time Especifica una hora en un subconjunto del formato ISO 8601 sin información de fecha ni zona horaria.

Ejemplo: "08:15:27"

 Ninguno Ninguno
time.tz Especifica una hora en un subconjunto del formato ISO 8601 sin información de fecha pero con zona horaria (opcional).

Ejemplo: "08:15:27-05:00"

 Ninguno Ninguno
ui1 Especifica un entero sin signo cuyos valores van desde 0 a 255.

Ejemplos: 1, 255

 Entero unsignedByte
ui2 Especifica un entero sin signo de 2 bytes cuyos valores van desde 0 a 65535.

Ejemplos: 1, 255, 65535

 Entero unsignedShort
ui4 Especifica un entero sin signo de 4 bytes cuyos valores van desde 0 a 4294967296.

Ejemplos: 1, 703, 3000000000

 Carácter o Entero unsignedInt
ui8 Especifica un entero sin signo de 8 bytes cuyos valores van desde 0 a 18446744073709551615.

Ejemplo: 1483433434334

 Carácter o Entero unsignedLong
uri Indica un Identificador Uniforme de Recurso (URI de sus siglas en ingles).

Ejemplo: "urn:schemas-microsoft-com:Office9"

 Memo anyURI
uuid Contiene dígitos hexadecimales representando octetos con guiones separadores opcionales que son ignorados.

Ejemplo: 333C7BC4-460F-11D0-BC04-0080C7055A83

 Carácter (C(40)) string

Vea También

Tipos de datos y campos | Tipos de datos y campos de Visual FoxPro | XMLAdapter (Clase) | XMLTable (Clase) | XMLField (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


Tipo de datos Carácter

Para incluir letras, números, espacios, símbolos y puntuación, utilice el tipo de datos character. Campos character o variables almacenan información de texto, como nombres, direcciones y números, pero estos no serán utilizados para cálculos matemáticos. Por ejemplo, números telefónicos o códigos postales, aunque incluyen en su mayoría números, serán tratados como caracteres.

Para detalles sobre tipo de datos Currency, vea Tipos de datos y campos de Visual FoxPro.

Vea también

Tipos de datos y campos | Operadores para el tipo Carácter | CREATE TABLE - SQL (Comando) | Crear expresiones de tipo Carácter


Tipo de datos Monetario (Currency)

Para valores monetarios o cálculos financieros precisos, se puede utiliza el tipo de datos Currency en lugar de Numérico.

Para asignar el tipo de datos Currency, utilizar el signo de dólar:

money = $50.33
moremoney = $675.43886

Si se especifican más de cuatro posiciones decimales en una expresión de tipo Currency, Visual FoxPro redondea a cuatro posiciones antes de evaluar la expresión. En el ejemplo anterior, la variable moremoney se redondea internamente a 675,4389.

Los campos Currency respetan las configuraciones del sistema (como SET CURRENCY) cuando se muestran en una ventana Examinar, en campos o en pantalla.

Para más información acerca del tipo de datos Currency, ver Tipos de datos y campos de Visual FoxPro.

Ver también

CREATE TABLE - SQL (Comando) | Tipos de datos y campos | Tipo de datos Fecha | SET CURRENCY (Comando)


Tipo de datos Fecha

Elija el tipo de datos Fecha para almacenar fechas sin valores de hora.

Visual FoxPro 5.0 y las versiones posteriores son compatibles con un estricto formato Fecha y FechaHora que proporciona concordancia con el año 2000. Se recomienda que utilice formatos de fecha estrictos para todas las constantes y expresionesFecha y FEchaHora.

En los tipos de datos Fecha y FechaHora, se aplica la regla siguiente:

  • {00:00:00AM} equivale a {12:00:00AM}, medianoche.
  • {00:00:00PM} equivale a {12:00:00PM}, mediodía.
  • {00:00:00} a {11:59:59} equivale a {12:00:00AM} a {11:59:59AM}.
  • {12:00:00} a {23:59:59} equivale a {12:00:00PM} a {11:59:59PM}.

Vea también

Tipos de datos y campos | CREATE TABLE - SQL (Comando) | Crear expresiones de tipo Fecha | Tipos de datos y campos de Visual FoxPro | Operadores para tipos Fecha y DateTime


Tipo de datos DateTime

Para almacenar valores de fecha y hora, o de sólo fecha utilice tipo de dato FechaHora. Un valor FechaHora se almacena en ocho bytes — dos enteros de cuatro bytes.

Visual FoxPro 5.0 y las versiones posteriores son compatibles con un formato Fecha y FEchaHora que proporciona correspondencia con el año 2000. Se recomienda que utilice formatos de fecha estrictos para todas las constantes y expresiones Fecha y FechaHora. En ambos tipos, Fecha y FechaHora, se aplican las reglas siguientes:

  • {00:00:00AM} equivale a {12:00:00AM}, medianoche.
  • {00:00:00PM} equivale a {12:00:00PM}, mediodía.
  • {00:00:00} a {11:59:59} equivale a {12:00:00AM} a {11:59:59AM}
  • {12:00:00} a {23:59:59} equivale a {12:00:00PM} a {11:59:59PM}

Vea también

Tipos de datos y campos | Tipos de datos y campos de Visual FoxPro | CREATE TABLE - SQL (Comando) | Crear expresiones de tipo Fecha | Operadores para tipos Fecha y DateTime


Tipo de campo Doble

Se puede usar el tipo de datos Double en lugar de Numérico cuando se necesita más precisión, una cantidad fija de almacenamiento en la tabla o valores verdaderos de signo flotante. Para obtener más información acerca de las especificaciones de este tipo, ver las tablas de Tipos de datos y campos.

En una tabla, a diferencia de los datos de tipo Numérico, se determina la posición del signo decimal cuando escriba el valor.

Cuando use el tipo de dato Double en una tabla, el número de decimales especificado es sólo par propósitos de presentación. Visual FoxPro almacena el valor real.

En el siguiente ejemplo se ilustra este comportamieto:

#define xml_name 'myxmlfile.xml'
#define database_name 'xmldatabase'
#define table_name 'xmltable'

&& Cierra las bases de datos
CLOSE DATABASES ALL
CLEAR

&& Borra bases de datos si existen
IF FILE(database_name) THEN
DELETE DATABASE (database_name) deletetables
ENDIF

&& Crea una nueva base de datos
CREATE DATABASE (database_name)

CREATE TABLE (table_name) (myfield B(2))

INSERT INTO (table_name) VALUES (1234.561234)

? EVALUATE(table_name+".myfield")
? EVALUATE(table_name+".myfield") = 1234.56
? EVALUATE(table_name+".myfield") = 1234.561234

Ver también

Crear expresiones de tipo Numérico | Operadores para el tipo Numérico | Tipos de datos y campos


Tipo de campo Flotante

Se incluye por razones de compatibilidad; el tipo de datos Flotante es equivalente a Numérico. Para obtener más información acerca de las especificaciones del tipo de datos Flotante, vea Tipos de datos y campos de Visual FoxPro.

Vea también

Tipos de datos y campos | CREATE TABLE - SQL (Comando) | Crear expresiones de tipo Numérico | Operadores para el tipo Numérico


Tipo de campo General

Se usa el tipo de campo General para almacenar objetos OLE. El campo General contiene una referencia de diez bytes al contenido real del campo: una hoja de cálculo, un documento de procesador de textos o una imagen, creados por otra aplicación. Sin embargo, el tipo y la cantidad de datos dependen del servidor de Automatización que crea el objeto, y de si se vincula o incrusta el objeto OLE.

Si vincula un objeto OLE, la tabla contiene sólo la referencia a los datos y a la aplicación que la creó. Si incrusta un objeto OLE, la tabla contiene una copia de los datos así como una referencia a la aplicación que la creó. El tamaño de un campo General sólo está limitado por la cantidad de espacio disponible en disco. Para obtener más información acerca de cómo utilizar OLE en la aplicación, ver Agregar OLE.

Para obtener más información acerca de las especificaciones de este tipo, ver las tablas de Tipos de datos y campos.

Ver también

Tipos de datos y campos | APPEND GENERAL (Comando) | CREATE TABLE - SQL (Comando) | Ventana de campo General | Agregar OLE


Tipo de campo Entero

Utilice el tipo de campo Integer para valores numéricos no decimales cuando las limitaciones de rendimiento y de almacenamiento de tabla sean especialmente importantes.

En las tablas, el tipo de campo entero se almacena como un valor binario de 4 bytes, por lo que requiere menos memoria que otros tipos de datos numéricos. Al ser un valor binario, no requiere conversión ASCII. Para obtener más información acerca de las especificaciones de este tipo, vea Tipos de datos y campos de Visual FoxPro.

Vea también

Tipos de datos y campos | CREATE TABLE - SQL (Comando) | Crear expresiones de tipo Numérico | Operadores para el tipo Numérico


Tipo de datos Lógico

Utilice tipo de dato Lógico (Logical) como vía eficiente para almacenar datos que tengan sólo dos valores. Los datos lógicos son almacenados como Verdadero (.T.) o Falso (.F.).

Para obtener especificaciones sobre el tipo de datos Lógico, vea Tipos de datos y campos de Visual FoxPro.

Vea también

Tipos de datos y campos | CREATE TABLE - SQL (Comando) | Operadores para el tipo Lógico


Tipo de campo Memo

Utilíce el tipo de campo Memo para almacenar bloques de datos. El campo Memo contiene una referencia de diez bytes al contenido real del memo. Sin embargo, el tamaño de los memos depende de la cantidad de datos que escriba en ellos. Los datos de campos Memo de registros de una tabla se almacenan en un archivo distinto con el mismo nombre que la tabla y la extensión .FPT. Los campos Memo sólo están limitados por la cantidad de espacio en disco disponible. Para obtener más información acerca de las especificaciones de este tipo, vea Tipos de datos y campos de Visual FoxPro.

Los memos de Visual FoxPro pueden contener cualquier tipo de datos, incluidos valores NULL, código ensamblador, controladores de impresora, etc. Puede almacenar el contenido de los campos Memo como cadenas residentes en memoria. Después, puede manipular estas cadenas con todas las funciones que operan sobre datos de tipo Carácter (Character).

Vea también

Tipos de datos y campos | CREATE TABLE - SQL (Comando) | MODIFY MEMO (Comando)


Tipo de datos Numérico

Se usan datos de tipo Numérico para indicar magnitudes. Los valores de tipo Numérico contienen dígitos del 0 al 9 y, opcionalmente, un signo y una coma decimal. Visual FoxPro también admite valores hexadecimales para datos numéricos. Por ejemplo, el valor decimal 255 se puede representar como 0xFF. Para cálculos financieros precisos, utilizar en su lugar el tipo de campo Currency.

En campos de tipo Numérico, se puede determinar la longitud de la parte decimal en tiempo de diseño cuando crea el campo. La longitud de la parte decimal es parte de la longitud total. Por ejemplo, si se especifica una longitud de 6 para un campo numérico y un valor decimal de 4, el campo puede almacenar valores hasta 9,9999.

Para obtener más información acerca de las especificaciones de este tipo, ver las tablas de Tipos de datos y campos de Visual FoxPro.

Precisión numérica

La precisión numérica cuando almacena números de punto flotante en campos Numéricos, está limitada a 15 dígitos aproximadamente en Visual FoxPro. Por lo tanto, una precisión mayor que 15 dígitos podría perderse cuando se convierten números de decimal a binario, por ejemplo al almacenar números con infinita repetición de valores decimales, al realizar operaciones repetidas y al almacenar valores numéricos en campos tipo Carácter valores de variables de memoria en formato binario.

Esta limitación está basada en la forma en que los procesadores basados en Pentium calculan y almacenan números de punto flotante, según lo establecido por el Institute of Electrical and Electronics Engineers (IEEE) para la manipulación de números flotantes en formato binario. Esta norma permite que los números flotantes se almacenen en una cantidad de espacio razonable para realizar cálculos más rápidamente.

Por ejemplo, la fracción 1/10 puede representarse como un valor decimal de 0.1. Sin embargo, cuando se almacena 1/10 como binario, el valor decimal no es el mismo de la fracción. En su lugar, la fracción es una repetición binaria de 0001100110011100110011 etcétera. Este tipo de número no se puede representar en la memoria que es finita o limitada; por lo tanto, el valor decimal se redondea cuando se almacena como binario.

Para valores que necesitan mayor precisión, ver Tipo de campo Doble.

Para más detalles acerca de como se almacenan los números flotantes y cómo los procesadores Pentium controlan sus cálculos, ver Microsoft Knowledge Base Article - Q78113, "XL: Floating-Point Arithmetic May Give Inaccurate Results" en http://support.microsoft.com/default.aspx?scid=kb;en-us;Q78113.

Ejemplo

El siguiente ejemplo ilustra el límite en la precisión numérica para números flotantes en tipos de datos Numéricos:

x=1234567890.0987654321
? x

El resultado es 1234567890.0987650000.

Ver también

Tipos de datos y campos | Tipo de datos Monetario (Currency) | CREATE TABLE - SQL (Comando) | Crear expresiones de tipo Numérico | Operadores para el tipo Numérico


Tipo de datos Variant

Variant es un tipo de datos especial que contiene datos de cualquier tipo, excepto cadenas de longitud fija. Los datos de tipo Variant también pueden ser los valores especiales Empty, Error y NULL. Este tipo de datos se utiliza en clientes extrínsecos a las aplicaciones programadas con Visual FoxPro, ya que Visual FoxPro es un lenguaje que no fuerza un uso estricto de datos.

Para especificaciones sobre tipos de datos Variant, vea Tipos de datos y campos de Visual FoxPro.

Vea también

Tipos de datos y campos | EMPTY( ) | ERROR | NULL como un valor


Manipulación de datos

Las expresiones que puede generar le proporcionan la capacidad de manipular datos en Visual FoxPro. Puede extender esta capacidad a las funciones definidas por el usuario, manipular campos, registros y matrices, utilizar clases y objetos, y manipular valores NULL.

Para usar | Vea
Matrices | Transferencia de datos y matrices
Clases | Manipulación de clases y objetos
Campos | Trabajar con campos y registros
Valores NULL | Tratamiento de valores NULL
Objetos | Manipulación de clases y objetos
Registros | Trabajar con campos y registros
Funciones definidas por el usuario | Funciones definidas por el usuario

Vea también

Referencia general | Llamar a un procedimiento | Llamar a una función | Pasar parámetros por referencia | Pasar parámetros por valor | Pasar parámetros por valor o por referencia | Parámetros variables


Funciones definidas por el usuario

Las funciones definidas por el usuario permiten ampliar el lenguaje de Visual FoxPro. Puede crear funciones especializadas para utilizarlas en una o en varias de sus aplicaciones. Las funciones definidas por el usuario (FDU) incluyen programas independientes guardados en archivos con la extensión .prg, así como procedimientos y funciones que se encuentren dentro de un programa.

Para crear una función o un procedimiento, utilice los comandos FUNCTION o PROCEDURE para asignar un nombre a la función o procedimiento. A continuación de la primera línea, escriba las instrucciones. Use una instrucción PARAMETERS o LPARAMETERS como la primera línea ejecutable de una FDU independiente que reciba parámetros. Termine una FDU que devuelva valores al programa que llama con una instrucción RETURN. Puede llamar a las FDU como procedimientos o funciones. Puede pasar hasta 24 parámetros a una FDU.

Vea también

Llamar a una función | Llamar a un procedimiento | FUNCTION (Comando) | PARAMETERS (Comando) | Pasar parámetros por valor o por referencia | PROCEDURE (Comando) | RETURN (Comando) | Manipulación de datos

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Llamar a un procedimiento

Puede utilizar el comando DO en un programa para tener acceso a un procedimiento como si fuera un programa independiente.

Para llamar a un procedimiento

  • Utilice el comando DO seguido del nombre del procedimiento.
    DO cMyUDF

Vea también

DO (Comando) | Funciones definidas por el usuario | Manipulación de datos | Procedimientos y funciones definidas por el usuario

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Llamar a una función

Las funciones devuelven un valor. Puede mostrar, capturar o utilizar el valor devuelto, en función de cómo lo llame.

Para llamar a una función

  • Utilice el operador = (igual que), seguido por el nombre de la función y los paréntesis que contengan todos los parámetros que haya pasado a la función.
    =cMiUDF()
=cMiUDF(p1,p2)
  • También puede omitir el operador = (igual que). Por ejemplo,
    cMiUDF()
cMiUDF(p1,p2)

En otras palabras, = es opcional.

Debe de evitar el uso de ? antes de una llamada a una función, porque ? envía resultados a la pantalla.

Si omite la instrucción RETURN en una FDU, el valor devuelto de forma predeterminada será verdadero (.T.).

Vea también

= (Comando) | RETURN (Comando) | Funciones definidas por el usuario | Manipulación de datos

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Pasar parámetros por valor o por referencia

Puede pasar elementos de variables o de matrices como parámetros por referencia o por valor. Para cambiar los parámetros pasados y devueltos desde una FDU, páselos por referencia. Para mantener el valor original de los parámetros pasados a una FDU, incluso si la FDU cambia los valores dentro de la FDU, páselos por valor.

De forma predeterminada, Visual FoxPro pasa los parámetros a las FDU por valor. Los objetos siempre se pasan por referencia.

Vea también

Pasar parámetros por referencia | Pasar parámetros por valor | Funciones definidas por el usuario | Manipulación de datos

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Pasar parámetros por referencia

Puede pasar parámetros por referencia siempre o sólo en una instancia determinada.

Para pasar parámetros por referencia

  • Utilice la cláusula TO REFERENCE del comando SET UDFPARMS antes de llamar a la FDU:

    –O bien–

  • Utilice el símbolo @ para pasar una variable o una matriz por referencia, como en el siguiente ejemplo:
    ? "UDF value: " + STR(plusone(@nX))
  • Para realizar una referencia adecuada a un tipo de datos Variant en un objeto COM, antes debe crear una instancia de la variable del tipo que desea obtener. Esto solamente se aplica cuando utiliza Visual FoxPro como cliente de enlace en tiempo de compilación.
       DEFINE CLASS varianttest AS SESSION OLEPUBLIC
FUNCTION varret(outVal AS VARIANT@, inVal AS VARIANT) AS VOID
OutVal = inVal
ENDFUNC
ENDDEFINE

    Después de compilar esta clase en una DLL denominada myServer, podrá hacer referencia a los datos de la misma manera que en el siguiente ejemplo de código:

       tt = CREATEOBJECT("myServer.varianttest","","")
ov = ""

tt.varret(@ov, "string")   && Define ov como un valor cadena.
ov = 0

tt.varret(@ov, 123)         && Define a ov como un valor entero.
ov = 0.0

tt.varret(@ov, 44.44)      && Define a ov to como un valor numérico real.
ov = l

tt.varret(@ov, .f.)            && Define a ov como un valor lógico.

Vea también

Pasar parámetros por valor | SET UDFPARMS (Comando) | Funciones definidas por el usuario | Manipulación de datos


Pasar parámetros por valor

Puede pasar parámetros por valor siempre o sólo en una instancia determinada.

Para pasar parámetros por valor

  • Utilice la cláusula TO VALUE del comando SET UDFPARMS antes de llamar a la FDU:

    –O bien–

  • Utilice paréntesis para pasar una variable o una matriz por valor, como en el siguiente ejemplo.
    ? 'UDF value: ' + STR(plusone((nX)))

Vea también

Pasar parámetros por referencia | SET UDFPARMS (Comando) | Funciones definidas por el usuario | Manipulación de datos

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Parámetros variables

Puede pasar un número variable de parámetros a una FDU. Use la función PARAMETERS( ) para determinar el número de parámetros pasados a la FDU.

Puede pasar a una FDU un número de parámetros menor que el número de parámetros que aparecen en la instrucción PARAMETERS o LPARAMETERS. Si pasa a la FDU menos parámetros que los que aparecen en la lista, los parámetros restantes se inicializan como falso (.F.). Si pasa más parámetros a la FDU de los que están en la lista, Visual FoxPro genera el mensaje de error "Número erróneo de parámetros".

Vea también

PARAMETERS( ) | Pasar parámetros por referencia | Pasar parámetros por valor | Pasar parámetros por valor o por referencia | Transferir parámetros a un formulario | Funciones definidas por el usuario | Manipulación de datos

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Trabajar con campos y con registros

Para tener acceso a los datos de un campo, hay que especificar uno o más registros que contienen los datos de destino. Se puede utilizar el puntero de registro para tener acceso a un registro específico con el comando GOTO o se puede tener acceso a campos en varios registros identificando los registros con una cláusula Scope, FOR o WHILE en un comando.

Para | Vea
Especificar un intervalo de registros | Alcance (Cláusulas)
Buscar registros que coincidan con una condición lógica | FOR (Cláusulas)
Operar en registros mientras una condición lógica es verdadera | WHILE (Cláusulas)

Vea también

Campos | FOR (Cláusulas) | GOTO (Comando) Registros | Alcance (Cláusulas) | WHILE (Cláusulas) | Manipulación de datos

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Scope (Cláusulas)

Si un comando de Visual FoxPro tiene una cláusula Scope (Alcance), puede especificar un intervalo de registros en el que puede actuar el comando, reemplazando Scope por una de las cláusulas de la siguiente tabla.

Cláusula de alcance | Efecto
ALL | El comando afecta a todos los registros de la tabla.
NEXT nExpr El comando afecta a un intervalo de registros que empieza en el registro actual y termina en el número especificado de registros.
El siguiente ejemplo actúa en el registro actual y en los dos siguientes registros:
REPLACE status WITH "open" NEXT 3
RECORD nNumber El comando sólo afecta al número de registro especificado.
El siguiente ejemplo actúa en el quinto registro.
REPLACE status WITH "open" RECORD 5
REST El comando afecta a un intervalo de registros que empieza en el registro actual y termina en el último registro de la tabla.
El siguiente ejemplo almacena un valor Null en los registros restantes.
REPLACE status WITH .NULL. REST

También puede especificar intervalos de registros con las cláusulas FOR y WHILE.

Vea también

FOR (Cláusulas) | REPLACE (Comando) | WHILE (Cláusulas) | Trabajar con campos y registros | Manipulación de datos

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


FOR (Cláusulas)

Una cláusula FOR hace que un comando actúe en cada registro que cumpla la condición lógica especificada. Las cláusulas FOR tienen la siguiente sintaxis:

FOR lExpr

En el siguiente ejemplo se almacena low balance en el campo alert de todos los registros que contienen menos de 500 en el campo total.

REPLACE ALL alert WITH "low balance" FOR total < 500

En la siguiente tabla se muestran los comandos en los que puede utilizar una cláusula FOR.

Comandos que utilizan cláusulas FOR

APPEND FROM ARRAY | COUNT | LOCATE
APPEND FROM | DEFINE PAD | RECALL
AVERAGE | DELETE | REPLACE FROM ARRAY
BLANK | DISPLAY | REPLACE
BROWSE | EXPORT | REPORT
CALCULATE | FOR( ) | SCAN ... ENDSCAN
CHANGE | INDEX | SORT
COPY TO ARRAY | LABEL | SUM
COPY TO | LIST |

La utilización de la cláusula FOR puede aumentar la velocidad operativa de comandos de una sola tabla. Para obtener más información acerca de cómo mejorar el rendimiento, vea Optimizar aplicaciones.

Vea también

REPLACE (Comando) | Alcance (Cláusulas) | WHILE (Cláusulas) | Trabajar con campos y registros | Manipulación de datos

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


WHILE (Cláusulas)

Una cláusula WHILE hace que un comando actúe en cada registro mientras la expresión lógica dé como resultado verdadero (.T.). La primera vez que la expresión dé como resultado falso (.F.), se detendrá el comando sin afectar a ninguno de los registros restantes. Esta expresión se suele usar con una tabla ordenada o indexada en el campo o campos incluidos en la expresión WHILE. Como se muestra en el siguiente ejemplo, se explora una tabla indexada en busca del primer registro que cumple la condición; a continuación, el comando REPLACE actúa en aquellos registros que cumplen la condición WHILE.

USE Mitabla INDEX calle
LOCATE FOR UPPER(calle) = "MAIN"
REPLACE calle WITH "Maine" WHILE UPPER(calle) = "MAIN"

Puede utilizar expresiones de alcance, FOR, y WHILE en el mismo comando de Visual FoxPro. Como se muestra en el siguiente ejemplo, se almacena un nuevo valor en el campo status de varios registros.

REPLACE ALL status WITH "Active" FOR total > 30 ;
WHILE expd > {^1998/02/16}

Cuando especifica tanto FOR como WHILE, la expresión WHILE tendrá preferencia y se utilizará la cláusula FOR para filtrar los registros seleccionados por WHILE.

En la siguiente tabla se muestran los comandos en los que puede utilizar una cláusula WHILE.

Comandos que utilizan cláusulas WHILE

AVERAGE | COUNT | RECALL
BLANK | DELETE | REPLACE
BROWSE | DISPLAY | REPLACE FROM ARRAY
CALCULATE | EXPORT | REPORT
CHANGE | LABEL | SCAN ... ENDSCAN
COPY TO ARRAY | LIST | SORT
COPY TO | LOCATE | SUM

Vea también

LOCATE (Comando) | REPLACE (Comando) | Trabajar con campos y registros | Manipulación de datos

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Transferencia de datos y matrices

Las matrices permiten ordenar información rápidamente. En cuanto la información se encuentra en una matriz, puede buscar, ordenar y realizar otras manipulaciones de datos de forma muy sencilla. Para obtener información para las matrices y a partir de ellas, es necesario transferir datos a una tabla o de una tabla a una matriz.

Visual FoxPro no restringe ni el tipo ni el tamaño de los datos contenidos en una matriz. La única limitación de tamaño es la cantidad de memoria disponible.

Para transferir datos de | Vea
Matrices a tablas | Transferencia de datos de una matriz a una tabla
Instrucciones SQL a matrices | Matrices y SELECT - SQL
Tablas a matrices | Transferencia de datos de una tabla a una matriz

Vea también

Matrices y SELECT - SQL | Transferencia de datos de una tabla a una matriz | Transferencia de datos de una matriz a una tabla | Trabajar con campos y registros | Manipulación de datos

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Transferencia de datos de una tabla a una matriz

Los siguientes comandos de Visual FoxPro transfieren datos de una tabla a una matriz:

  • SCATTER transfiere datos de un único registro de una tabla a una matriz.
  • COPY TO ARRAY transfiere datos de un conjunto de registros a una matriz.
  • SELECT - SQL puede transferir los resultados de una consulta a una matriz. Para obtener más información acerca de SELECT - SQL, vea el tema Matrices y SELECT - SQL.

SCATTER y COPY TO ARRAY son distintos en cuanto a que:

  • SCATTER transfiere datos del registro actual de la tabla actual. COPY TO ARRAY puede transferir datos de varios registros de la tabla actual.
  • La opción SCATTER BLANK crea automáticamente una matriz con los elementos del mismo tamaño y tipo que los campos de la tabla, pero los elementos de la matriz están vacíos.
  • La opción SCATTER VAR crea automáticamente un conjunto de variables con el mismo tamaño, tipo y nombre que los campos de la tabla.

Vea también

Matrices y SELECT - SQL | COPY TO ARRAY (Comando) | SCATTER (Comando) | SELECT - SQL (Comando) | Transferencia de datos de una matriz a una tabla | Transferencia de datos y matrices | Manipulación de datos

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Transferencia de datos de una matriz a una tabla

Los siguientes comandos de Visual FoxPro transfieren datos de una matriz a una tabla:

  • GATHER transfiere datos de una matriz a un único de registro de tabla.
  • APPEND FROM ARRAY agrega nuevos registros a una tabla y llena los registros con datos procedentes de una matriz.
  • INSERT - SQL anexa un registro nuevo a una tabla y llena el registro con datos procedentes de una matriz.

GATHER, APPEND FROM ARRAY e INSERT - SQL difieren en lo siguiente:

  • GATHER transfiere datos de una matriz al registro en uso de la tabla actual. Además, la opción GATHER MEMVAR transfiere datos de un conjunto de variables al registro de la tabla actual.
  • APPEND FROM ARRAY anexa nuevos registros al final de la tabla actual y después, transfiere datos procedentes de la matriz a los registros recién anexados.
  • INSERT - SQL anexa un nuevo registro y después, transfiere datos procedentes de la matriz al registro recién anexado. A diferencia de GATHER y APPEND FROM ARRAY, INSERT - SQL puede anexar un registro en una tabla que no esté seleccionada (una tabla abierta en un área de trabajo distinta del área de trabajo actual).
    Nota APPEND FROM ARRAY o INSERT - SQL son más rápidos que APPEND BLANK seguido de REPLACE, sobre todo en una red.

Vea también

APPEND FROM ARRAY (Comando) | GATHER (Comando) | INSERT - SQL (Comando) | Transferencia de datos de una tabla a una matriz | Transferencia de datos y matrices | Manipulación de datos | Matrices y SELECT - SQL

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Matrices y SELECT - SQL

SELECT - SQL es un comando muy versátil para consultar tablas y puede dirigir los resultados de una consulta directamente a una matriz.

Para enviar resultados de una consulta SELECT - SQL a una matriz, especifique la cláusula INTO ARRAY con un nombre de matriz. Si el nombre de matriz no existe, se creará automáticamente. Si la matriz existe, se cambiará su tamaño automáticamente para que quepan los resultados de la consulta.

Ejemplo

En el siguiente ejemplo, SELECT - SQL dirige los resultados de su consulta a una matriz llamada RESULTS:

SELECT DISTINCT a.cust_id, a.company, b.amount ;
FROM customer a, payments b ;
WHERE a.cust_id = b.cust_id INTO ARRAY results
DISPLAY MEMORY LIKE results
RESULTS   Priv A            TEST
( 1, 1)   C  "000004"
( 1, 2)   C  "Stylistic Inc."
( 1, 3)   N    13.91  (    13.91000000)
( 2, 1)   C  "000008"
( 2, 2)   C  "Ashe Aircraft"
( 2, 3)   N    4021.98  (  4021.98000000)
( 3, 1)   C  "000010"
( 3, 2)   C  "Miakonda Industries"
( 3, 3)   N     9.84  (   9.84000000)

Vea también

SELECT - SQL (Comando) | Transferencia de datos y matrices | Manipulación de datos | Transferencia de datos de una tabla a una matriz | Transferencia de datos de una matriz a una tabla


Manipulación de clases y objetos

Visual FoxPro proporciona dos operadores especiales para la programación de objetos: el operador punto (.) y el operador de resolución de alcance (::). Visual FoxPro también incorpora comandos que permiten crear una clase, así como crear y agregar objetos a una clase.

Operador, comando, función | Descripción
. (Operador punto) | Define el alcance de los objetos para sus objetos primarios, y el alcance de las propiedades, eventos y métodos para los objetos.
:: (Operador de resolución de alcance) | Llama a un método de clase primaria desde la subclase.
CREATEOBJECT( ) | Crea un objeto a partir de una clase, de una subclase o de un objeto OLE.
DEFINE CLASS con la cláusula ADD OBJECT | Crea una definición de clase. La cláusula ADD OBJECT agrega un objeto basado en una clase o subclase existente en tiempo de diseño.
GETOBJECT( ) | Devuelve una referencia a un objeto OLE.

Para obtener más información acerca de cómo utilizar clases y objetos, vea Programación orientada a objetos.

Vea también

:: Operador de resolución de alcance | CREATEOBJECT( ) (Función) | DEFINE CLASS (Comando) | GETOBJECT( ) (Función) | Transferencia de datos y matrices | Manipulación de datos | Tratamiento de valores NULL

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Tratamiento de valores NULL

Visual FoxPro ofrece compatibilidad con valores de tipo NULL. Esto simplifica la tarea de representación de datos desconocidos y facilita el trabajo con bases de datos de Microsoft Access o de SQL que puedan contener valores NULL.

Los valores NULL son:

  • Iguales a la ausencia de cualquier valor.
  • Distintos de cero, la cadena vacía ("") o el espacio en blanco.
  • Los valores que se colocan al principio cuando se ordenan datos.
  • Los valores que se propagan en cálculos y en la mayoría de las funciones.

Los valores NULL afectan al comportamiento de comandos y de funciones, de expresiones lógicas y de parámetros.

Visual FoxPro acepta valores NULL según los estándares de ANSI y este hecho afecta a todas las áreas del producto en las que se utilicen valores y expresiones.

Para utilizar valores NULL en | Vea
Comandos y funciones | Comportamiento de valores NULL en comandos y funciones
Expresiones | Comportamiento de valores NULL en expresiones lógicas
Parámetros | NULL como un parámetro

Utilizar NULL en valores y expresiones

En Visual FoxPro, se asigna el valor NULL de forma programática con la cadena .NULL. o de forma interactiva con CTRL+0 en un campo. Recuerde que es opcional poner puntos antes y después de .NULL. Para detectar si un campo o una variable contienen un valor NULL o si una expresión se evalúa como un valor NULL, utilice ISNULL( ).

Vea también

Comportamiento de valores NULL en expresiones lógicas | Comportamiento de valores NULL en comandos y funciones | EMPTY( ) (Función) | ISBLANK( ) (Función) | ISNULL( ) (Función) | NULL como un parámetro | NULL como un valor | Manipulación de datos


NULL como un valor

Un valor NULL es distinto de una cadena vacía, de un campo en blanco o de cero. Por ejemplo, tanto EMPTY( ) como ISBLANK( ) devuelven verdadero (.T.) cuando una variable contiene una cadena vacía o en blanco. EMPTY( ) también devuelve verdadero (.T.) para cero. ISNULL( ) devuelve falso (.F.) para dichos valores y tanto EMPTY( ) como ISBLANK( ) devuelven falso (.F.) para valores NULL.

Puede utilizar valores NULL con comandos de campo y de matriz, como STORE, GATHER, y SCATTER. En el siguiente ejemplo se asigna .NULL. a cada miembro de la matriz aX:

DIMENSION aX[4]
STORE .NULL. TO aX

El valor NULL no es un tipo de datos. Cuando se asigna .NULL. a un campo o a una variable, el valor se convierte en .NULL. pero el tipo de datos del campo o de la variable no cambia. Por ejemplo:

STORE 5 TO nX
nX = .NULL.
? TYPE ("nX")  && Data type reported as numeric

Vea también

Comportamiento de valores NULL en expresiones lógicas | Comportamiento de valores NULL en comandos y funciones | EMPTY( ) (Función) | ISBLANK( ) (Función) | ISNULL( ) (Función) | Tratamiento de valores NULL | Manipulación de datos | NULL como un parámetro

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Comportamiento de valores NULL en comandos y funciones

En la siguiente tabla se describe cómo interpretan los valores NULL los comandos y las funciones.

Tipo de datos | Comportamiento
Lógico | La mayoría de las expresiones lógicas que dan como resultado .NULL. devuelven .NULL. o generan un error. EMPTY( ), ISBLANK( ) e ISNULL( ) son excepciones.
Numérico | Las expresiones de tipo Numérico que dan como resultado .NULL. devuelven .NULL. Una función numérica da como resultado .NULL. cuando se le pasa un valor NULL.
Fecha | Las expresiones de tipo Fecha que contienen valores NULL devuelven .NULL.

Vea también

Tratamiento de valores NULL | Tipo de datos Fecha | EMPTY( ) (Función) | ISBLANK( ) (Función) | ISNULL( ) (Función) | Tipo de datos Lógico | Tipo de datos Numérico | Comportamiento de valores NULL en expresiones lógicas | NULL como un valor | NULL como un parámetro

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Comportamiento de valores NULL en expresiones lógicas

Generalmente, los valores NULL se mantienen a través de las expresiones de tipo Logical. En la siguiente tabla se describe el comportamiento de los valores NULL en expresiones de tipo Logical.

Expresión de tipo Lógico | Resultado si x=TRUE | Resultado si x=FALSE | Resultado si x=.NULL.
x AND .NULL. | .NULL. | FALSE | .NULL.
x OR .NULL. | TRUE | .NULL. | .NULL.
NOT x | FALSE | TRUE | .NULL.

Cuando una expresión condicional se encuentra con un valor NULL, la condición es falsa, puesto que NULL no es verdadero (.T.). Por ejemplo, una cláusula FOR que da como resultado .NULL. se trata como falso (.F.). Observe que se trata como .NULL. a los valores NULL hasta que se evalúe toda la expresión.

Vea también

FOR (Cláusulas) | Tratamiento de valores NULL | Manipulación de datos | Comportamiento de valores NULL en comandos y funciones | NULL como un valor | NULL como un parámetro

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


NULL como un parámetro

El hecho de pasar un valor NULL como un parámetro influye en el comportamiento de muchos comandos y funciones en Visual FoxPro. Las siguientes reglas generales se aplican a los valores NULL pasados a comandos y funciones:

  • Los comandos generan errores cuando se les pasa un valor NULL.
  • Las funciones que aceptan .NULL. como un valor válido propagan .NULL. al resultado.
  • Las funciones que aceptan parámetros que podrían ser valores numéricos generan un error si proporciona .NULL. para dichos parámetros.
    STORE .NULL. TO n
USE Mytable ALIAS &n          && Se espera un área de trabajo
&& nombre o número
? SUBSTR("Hello, world",n,5)  && Se espera un posición
&& en la cadena
  • ISBLANK( ), ISDIGIT( ), ISLOWER( ), ISUPPER( ), ISALPHA( ) y EMPTY devuelven falso (.F.) cuando se les pasa un valor NULL. ISNULL( ) devuelve verdadero (.T.) cuando se le pasa un valor NULL.
  • Los comandos INSERT - SQL y SELECT - SQL procesan valores NULL a través de las cláusulas IS NULL e IS NOT NULL y, en el caso de INSERT, UPDATE y REPLACE, colocan valores NULL en los registros.
  • Las funciones Aggregate de SQL pasan por alto los valores NULL en lugar de propagarlos.
  • Las funciones Aggregate de Visual FoxPro sólo propagan .NULL. si todos los valores proporcionados son valores NULL; de lo contrario, pasan por alto todos los valores NULL.

Para obtener más información acerca de cómo utilizar valores NULL en la aplicación, vea Trabajar con tablas.

Vea también

EMPTY( ) (Función) | INSERT - SQL (Comando) | ISALPHA( ) (Función) | ISBLANK( ) (Función) | ISDIGIT( ) (Función) | ISLOWER( ) (Función) | ISNULL( ) (Función) | ISUPPER( ) (Función) | REPLACE (Comando) | SELECT - SQL (Comando) | Introducción a los comandos SQL | UPDATE (Comando) | Tratamiento de valores NULL | Manipulación de datos | NULL como un valor


Contenedores de almacenamiento de datos

Puede elegir un contenedor de almacenamiento de datos en función de la cantidad y el tipo de datos, y de cómo desee usarlos. Se determina la disponibilidad de los datos por la forma en que se declaran y dónde se crean en el programa. Este intervalo de disponibilidad o validez se llama alcance.

La mayor parte de los lenguajes de programación permiten almacenar datos en constantes, variables y matrices. En Visual FoxPro, también puede almacenar datos en registros y en objetos. Para obtener más información acerca de las diferencias, vea Visual FoxPro y otros lenguajes de programación.

Alcance de los contenedores de 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 definitivo, 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"

Vea también

Referencia general | Acceso a variables | LOCAL (Comando) | Objetos | PRIVATE (Comando) | PUBLIC (Comando) | Registros | Visual FoxPro y otros lenguajes de programación


Matrices

Una matriz es una serie ordenada de valores de datos, llamados elementos, a los que se hace referencia por número. Dado que las matrices existen en la memoria, proporcionan un acceso rápido a los datos y son fáciles de manipular. Es muy fácil especificar, localizar o manipular elementos en una matriz.

Las matrices tienen las mismas opciones de alcance que las variables. Una única matriz Visual FoxPro puede contener todos los tipos de datos como valores.

Puede crear una matriz con los comandos DIMENSION o DECLARE; para asignar un valor a cada elemento, puede identificar el elemento por el nombre de la matriz y la posición. En el siguiente ejemplo se crea una matriz bidimensional de cinco filas y dos columnas, y después se asigna un valor a la segunda columna de la primera fila:

DIMENSION ArrayName[5,2]
ArrayName[1,2] = 966789

También puede utilizar SCATTER, GATHER, COPY TO ARRAY y APPEND FROM ARRAY para transferir valores de campos a elementos de matriz o entre elementos de matriz. Para obtener más información acerca de cómo utilizar matrices en la aplicación, vea Transferencia de datos y matrices.

Vea también

Variables | APPEND FROM ARRAY (Comando) | COPY TO ARRAY (Comando) | DECLARE (Comando) | DIMENSION (Comando) | GATHER (Comando) | SCATTER (Comando) | Contenedores de almacenamiento de datos

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Constantes

Una constante es un elemento con nombre que mantiene su valor a lo largo de todas las operaciones. El valor π ó 3,1415926535, es un ejemplo de una constante numérica; la letra A es un ejemplo de una constante de caracteres.

Es posible crear constantes de tiempo de compilación que existan a lo largo del funcionamiento de una aplicación de Visual FoxPro. Puede utilizar una constante y saber que ese valor no se alterará durante el funcionamiento de la aplicación. En tiempo de diseño, puede efectuar un cambio en toda una aplicación modificando el valor de una única constante.

Una constante puede contener cualquier valor de tipo de datos.

Para asignar un valor a una constante

  • Utilice la directiva del preprocesador #DEFINE.

En el siguiente ejemplo, la constante TABLERR1 se define como una cadena de caracteres.

#DEFINE TABLERR1 "Esta tabla no está disponible. Vuelva a intentarlo más tarde."

En una aplicación, cuando se encuentre en una situación en la que, generalmente, especificaría la cadena de caracteres "Esta tabla no está disponible. Vuelva a intentarlo más tarde.", puede utilizar en su lugar TABLERR1.

Para liberar una constante definida

  • Utilice la directiva del preprocesador #UNDEFINE.
    #UNDEF TABLERR1

Vea también

Variables | # DEFINE ... #UNDEF (Directiva del preprocesador) | PI( ) (Función) | La constante ya se ha creado mediante #DEFINE (Error 1725) | #IFDEF |#IF ... #ENDIF (Directiva del preprocesador) | Contenedores de almacenamiento de datos

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Campos

Un campo es una ubicación con nombre en un registro que contiene un tipo de datos determinado. Los campos pueden ser cualquier tipo de datos o cualquier tipo de campos de Visual FoxPro.

El tipo de datos de un campo se especifica en tiempo de diseño en el Diseñador de tablas o en tiempo de ejecución, con el comando CREATE TABLE.

Vea también

CREATE TABLE - SQL (Comando) | Registros | Diseñador de tablas | Contenedores de almacenamiento de datos


Objetos

Un objeto es una instancia de una clase. Una clase es una descripción de las características del comportamiento y de los datos de un grupo de objetos. Los objetos de Visual FoxPro pueden ser formularios, conjuntos de formularios o controles. Utilice los objetos de Visual FoxPro para implementar un comportamiento coherente y confiable en toda la aplicación, para reducir la cantidad de código y para aumentar la capacidad de volver a utilizar el código.

Cada objeto responde a eventos específicos, y tiene propiedades y métodos. Estos objetos se manipulan a través de sus eventos, métodos y propiedades.

Para crear objetos

  • Utilice el Diseñador de formularios.

    –O bien–

  • Utilice la función CREATEOBJECT( ).

Para obtener más información acerca de la programación con objetos, vea Programación orientada a objetos. Para obtener más información acerca de las propiedades, los eventos y los métodos de Visual FoxPro, vea Descripción del modelo de eventos. Si desea consultar una lista de otros controles que puede utilizar, vea Introducción a los controles ActiveX.

Vea también

CREATEOBJECT( ) (Función) | Diseñador de formularios | Clases y objetos | Controles y objetos | Contenedores de almacenamiento de datos


Registros

Un registro es un conjunto de campos de una tabla. Los registros pueden tener hasta 255 campos. Todos los registros de una tabla contienen los mismos campos. A pesar de que el contenido de los campos varía de un registro a otro, el tamaño de un campo es el mismo para todos los registros de una tabla. El tipo de datos para cada campo es el mismo para todos los registros de una tabla.

Para crear registros

  • Use los comandos INSERT - SQL o APPEND.

Para obtener más información acerca de cómo crear registros y utilizar tablas, vea Trabajar con tablas.

Vea también

APPEND (Comando) | Campos | INSERT - SQL | Contenedores de almacenamiento de datos


Variables

Una variable es una ubicación de la memoria cuyo valor puede variar durante el funcionamiento de un programa. Una variable puede contener cualquier valor de tipo de datos. Puede cambiar el valor de una variable en cualquier momento. Esta opción permite supervisar el estado de cualquier elemento que cambie durante el funcionamiento de una aplicación.

Las variables sólo existen cuando se está ejecutando una aplicación o en la sesión de Visual FoxPro en la que se han creado. Para especificar el alcance de una variable, utilice las palabras clave LOCAL, PRIVATE y PUBLIC.

Crear variables

Para crear una variable, almacene un valor en un elemento de Visual FoxPro con nombre, utilizando el comando STORE o el operador = (igual que).

Ejemplo

Los siguientes ejemplos son instrucciones simples con una funcionalidad equivalente.

STORE 7 TO nVar
nVar = 7

En el siguiente ejemplo se utiliza una variable, nInc, para contener el valor de un contador de bucle. Visual FoxPro asigna un nuevo valor a la variable durante cada bucle.

FOR nInc = 1 TO 10
? nInc
ENDFOR

En el siguiente ejemplo se utiliza una variable, cName, para contener el valor del campo Firstname a partir de la tabla Customer.

USE Customer
STORE Customer.Firstname TO cName

Vea también

Acceso a variables | = (Comando) | FOR ... ENDFOR (Comando) LOCAL (Comando) | PRIVATE (Comando) | PUBLIC (Comando) | STORE (Comando) | Contenedores de almacenamiento de datos


Acceso a variables

Las variables sólo existen mientras se está ejecutando una aplicación o durante la sesión de Visual FoxPro en la que se han creado. Para especificar el alcance de una variable, use las palabras clave LOCAL, PRIVATE y PUBLIC.

  • LOCAL crea variables o matrices que sólo se pueden utilizar y modificar en el programa en el que se crean, y a las que no pueden tener acceso los programas de nivel superior o inferior. Las variables y las matrices locales se liberan en cuanto se detiene la ejecución del programa que las contiene.
  • PRIVATE oculta al programa actual las variables o matrices definidas en un programa que llama. En ese caso, puede volver a utilizar los nombres de dichas variables en el programa en uso sin que eso afecte a las variables originales. En cuanto se detenga la ejecución del programa que contiene PRIVATE, volverán a estar disponibles todas las variables y las matrices que se habían declarado de forma privada.
  • PUBLIC define variables o matrices globales. Puede utilizar y modificar las variables y matrices globales desde cualquier programa que se ejecute durante la sesión actual de Visual FoxPro. Cualquier variable o matriz creada en la ventana Comandos es automáticamente pública.

Acceso a variables

Si una variable tiene el mismo nombre que un campo, Visual FoxPro siempre dará preferencia al nombre del campo. Puede hacer referencia a la variable con m. o m-> más el nombre de la variable, como se muestra en los siguientes ejemplos.

?  m.cFname
?  m->cFname      && print value in cFname
?  cFname         && prints contents of field cFname

Si desea obtener más información acerca de estos comandos, vea los temas correspondientes de la Ayuda.

Nota En la programación orientada a objetos, puede crear propiedades de objetos para contener valores en lugar de utilizar variables. Para obtener más información, vea Programación orientada a objetos.

Vea también

Variables | PUBLIC | PRIVATE | LOCAL | Programación orientada a objetos | Contenedores de almacenamiento de datos


Generación de expresiones

Las expresiones de Visual FoxPro combinan datos y operadores para crear un valor de un tipo de datos dado. Siempre que necesite un valor de un tipo de datos determinado, generalmente también puede proporcionar una expresión.

Para combinar | Vea
Datos de tipo Carácter | Crear expresiones de tipo Carácter
Datos de tipo Date o Time | Crear expresiones de tipo Fecha
Datos de tipo Numérico | Crear expresiones de tipo Numérico
Valores de tipo Logical | Crear expresiones de tipo Lógico

Vea también

Referencia general | Uso de comandos y funciones | Crear expresiones de tipo Nombre | Creación de nombres en Visual FoxPro | Sustitución de macros


Creación de nombres en Visual FoxPro

Los contenedores de datos y algunos parámetros de comandos y funciones necesitan tener un nombre. Cuando cree un nombre en Visual FoxPro, aplique las siguientes reglas:

  • Use sólo letras, números y subrayados.
  • Empiece el nombre con una letra o un subrayado.
  • Utilice de 1 a 128 caracteres, excepto para nombres de campo de tablas libres y etiquetas de índice, que pueden tener un máximo de 10 caracteres.
  • Evite las palabras reservadas por Visual FoxPro.

Los nombres de archivo se rigen por las convenciones del sistema operativo.

Vea también

Crear expresiones de tipo Nombre | FullName (Propiedad) | Name (Propiedad) | Generador de expresiones


Creación de expresión de tipo Carácter

Cree expresiones de tipo carácter combinando operadores para el tipo Carácter con los siguientes elementos de Visual FoxPro:

  • Campos de tipo Carácter.
  • Funciones que devuelven valores de tipo Carácter.
  • Elementos de variables y de matrices que contienen datos de tipo Carácter.
  • Constantes de tipo Caracter, denominadas literales de cadena.

Puede incrustar comillas (" y ') en una cadena de caracteres si coloca la cadena de caracteres entre corchetes ([ ]):

STORE [Robert's Diner] TO cCompanyName
STORE [See the "Sunday Special"] TO cBanner

También puede incrustar comillas, colocando la cadena de caracteres entre comillas del tipo alternativo:

STORE "Robert's Diner" TO cCompanyName
STORE 'See the "Sunday Special"' TO cBanner

Vea también

Operadores para el tipo Carácter | Crear expresiones de tipo Nombre | STORE (Comando) | Generador de expresiones


Uso de comandos y funciones

Los comandos y las funciones de Visual FoxPro sirven para realizar una acción o para devolver valores para su utilización en otros comandos y funciones. Los comandos y las funciones pueden tener lugar en expresiones, o pueden aceptar expresiones como parámetros. También puede utilizar funciones definidas por el usuario (FDU) siempre que utilice un comando o una función de Visual FoxPro.

Los comandos y las funciones se comportan de formas distintas:

  • Los comandos realizan una acción. Por ejemplo, puede utilizar el comando BROWSE para ver el contenido de una tabla.
  • Las funciones devuelven un valor de un tipo de datos determinado. Por ejemplo, la función DATE( ) devuelve la fecha del sistema desde su equipo. Las funciones terminan con dos paréntesis, lo que las distingue de los comandos.

Las funciones no se utilizan solas, sino que siempre se combinan con un comando de Visual FoxPro. Por ejemplo, el signo de interrogación (?) es un comando que envía datos a la pantalla. DATE( ) es una función que devuelve la fecha actual del sistema. Se pueden combinar para que aparezca la fecha del sistema en pantalla:

? DATE( )

Los comandos y las funciones tienen una sintaxis determinada para los parámetros y las cláusulas que puede proporcionar. Si desea ver una descripción completa de la sintaxis de cualquier comando o función, vea la Referencia del lenguaje ordenada alfabéticamente.

Vea también

BROWSE (Comando) | DATE( ) (Función) | Referencia del lenguaje ordenada alfabéticamente | Generador de expresiones


Creación de expresión de tipo Fecha

Cree expresiones de tipo Date combinando operadores para el tipo Fecha y DateTime con los siguientes elementos de Visual FoxPro:

  • Campos Date o DateTime.
  • Funciones que devuelven fechas, o fechas y horas.
  • Elementos de variables y de matrices que contienen fechas u horas.
  • Constantes Date y DateTime.

Visual FoxPro trata a una fecha no válida como si se tratara de un campo Date vacío.

Vea también

Operadores para el tipo Fecha | Crear expresiones de tipo Numérico | DATETIME( ) (Función) | Tipo de datos DateTime | Generador de expresiones


Creación de expresión de tipo Logical

Las expresiones de tipo Logical tienen uno de estos dos valores: verdadero o falso. .T. y .F. sirven para especificar verdadero y falso en Visual FoxPro.

Cree expresiones de tipo Lógico combinando operadores para el tipo Lógico Lógico con los siguientes elementos de Visual FoxPro:

  • Campos de tipo Lógico.
  • Funciones que devuelven valores de tipo Lógico.
  • Elementos de variables y de matrices que contienen valores de tipo Lógico.
  • Cualquier expresión que dé como resultado un valor de tipo Lógico.

Visual FoxPro evalúa las expresiones de tipo Lógico de izquierda a derecha y sólo durante el tiempo que sea necesario. En el siguiente ejemplo, se utiliza el operador AND para crear una expresión de tipo Lógico. Si alguno de los valores de la expresión es falso (.F.), toda la expresión será falsa. Cuando Visual FoxPro se encuentra con el primer Lógico falso (.F.), ya no evalúa el resto de la expresión.

.T. AND .T. AND .F. AND .T. AND .T. AND .T.

Vea también

Operadores para el tipo Lógico | _RetLogical( ) (Rutina de biblioteca API) | Tipo de datos Logico | Generador de expresiones


Sustitución de macros

Puede reemplazar nombres por variables utilizando la sustitución de macros. Para utilizar la sustitución de macros, coloque una "y" comercial (&) antes de la variable para indicar a Visual FoxPro que utilice el valor de la variable como un nombre y utilice un punto (.) para terminar la expresión de la sustitución de macros.

Por ejemplo, la siguiente instrucción de impresión produce "FoxPro":

x = "Fox"
? "&x.Pro"

Un comando o una función que contenga una expresión de tipo Name se ejecutará más rápidamente que otra que contenga sustitución de macros. Por tanto, utilice una expresión de tipo Name en lugar de una sustitución de macros siempre que pueda. Para obtener más información acerca de la sustitución de macros, vea el tema & (Comando) de la Ayuda.

Vea también

Crear expresiones de tipo Nombre | & (Comando) | Generador de expresiones | Crear expresiones de tipo Carácter


Creación de expresión de tipo Name

Muchos comandos y funciones de Visual FoxPro requieren que usted proporcione un nombre. Aunque un nombre no puede ser un elemento de una matriz ni una variable, puede crear una expresión de tipo Nombre que substituya el valor de la variable o del elemento de la matriz del tipo Carácter.

Cuando almacene el nombre en la variable o en el elemento de la matriz, puede sustituir el nombre en un comando o en una función, escribiendo la variable entre paréntesis. Para utilizar una lista de nombres, sepárelos con comas. Un nombre no es una expresión, un elemento de matriz o de variable, ni un campo. Los nombres no deben escribirse entre comillas. Si no, seguirán las reglas de nomenclatura de Visual FoxPro, descritas en la sección Creación de nombres en Visual FoxPro.

Por ejemplo, el comando REPLACE requiere un nombre de campo. Puede almacenar un nombre de campo en una variable y utilizar una expresión de tipo Name en REPLACE cuando aparezca el nombre de campo:

STORE 'city' TO cVarCity
REPLACE (cVarCity) WITH 'Paris'

Visual FoxPro almacena el nombre del campo city en la variable cVarCity y después almacena el valor "Paris" en el campo city, que es el valor de la expresión de tipo Name cVarCity.

Vea también

Sustitución de macros | Generador de expresiones | Creación de nombres en Visual FoxPro | REPLACE (Comando)


Creación de expresión de tipo Numérico

Cree expresiones de tipo Numérico combinando operadores para el tipo Numérico con los siguientes elementos de Visual FoxPro:

  • Campos de tipo Numérico.
  • Funciones que devuelven valores de tipo Numérico.
  • Elementos de variables y de matrices que contienen datos de tipo Numérico.
  • Constantes de tipo Numérico.

Vea también

Operadores para el tipo Númerico | Tipo de datos Numéricoo | Aceptar entradas numéricas en un determinado intervalo | Generador de expresiones


Estructuras de archivo

Esta sección contiene información técnica acerca de la estructura y tipos de los archivos.

En esta sección

Estructura de archivo de índice compuesto (.cdx)
Describe como la estructura del archivo compuesto es diferente a la estructura del archivo índice compacto.
Estructura de archivo de índice compacto (.idx)
Proporciona información acerca del registro de encabezado del archivo de índice compacto.
Extensiones de archivo y tipos de archivo
Contiene una lista de extensiones y sus tipos de archivos asociados que son usados por Visual FoxPro.
Estructura del archivo de recursos FoxUser
Contiene una variedad de recursos de información, incluyendo posiciones de ventanas, grupos de colores, configuración de la ventana Examinar, definiciones de etiquetas, etc.
Estructura del archivo índice (.idx)
Describe el contenido de los archivos índice, encabezado del registro índice, y el registro de nodo del índice.
Formato de archivo de macro (.fky)
Ofrece una descripción de los archivos de encabezado y las macros individuales.
Estructura del archivo memo (.FPT)

Describe el contenido de un registro de encabezado, bloque y texto memo.

Estructura de archivos de tabla (.dbc, .dbf, .frx, .lbx, .mnx, .pjx, .scx, .vcx)
Proporciona una lista de tipos de archivos que son guardados como tablas, así como el registro de encabezado de tabla y la estructura del campo subregistro.
Estructuras de tabla de archivos de tabla (.dbc, .frx, .lbx, .mnx, .pjx, .scx, .vcx)
Proporciona información acerca de Informes disponibles en de la estructura de Tabla.

Secciones relacionadas

Referencia general
Esta sección contiene información técnica, incluye los tipos de archivos, estructuras de los mismos y otra información de referencia acerca de elementos de Visual FoxPro.
Convenciones de nomenclatura
Ofrece acceso a información adicional acerca de como escoger nombres para exponer objetos, propiedades, y métodos que pueden ser fácilmente comprendidos por los usuarios de la aplicación.
Visual FoxPro y otros lenguajes de programación
Ofrece una comparación de los elementos del lenguaje de Visual FoxPro con otros lenguajes de programación.


Estructura de archivo de índice compuesto (.cdx)

Todos los índices compuestos son índices compactos.

Existe una estructura de archivo para seguir la pista de todas las etiquetas del archivo .cdx. Esta estructura es idéntica a la estructura de archivo de índice compacto (.idx) con una excepción, los nodos secundarios del nivel más bajo de esta estructura apuntan a una de las etiquetas del índice compuesto.

Todas las etiquetas del índice tienen su propia estructura completa, que es idéntica a la estructura de índice compacto para un archivo .idx.

Vea también

Estructura de archivo de índice (.idx) | Estructura de archivo de índice compacto (.idx) | Estructura de archivos de tabla (.dbc, .dbf, .frx, .lbx, .mnx, .pjx, .scx, .vcx) | Estructuras de tabla de archivos de tabla (.dbc, .frx, .lbx, .mnx, .pjx, .scx, .vcx) | Estructura del archivo memo (.FPT) | Formato de archivo de macro (.fky) | Extensiones de archivo y tipos de archivo


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 | Firma 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 | Ascendente o descendente: 0 = ascendente 1 = descendente
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 nodos (cualquiera de los valores numéricos siguientes o sus sumas): a. 0 – nodo índice b. 1 – nodo raíz 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.2 Las combinaciones de números hexadecimales clave/cuatro bytes se darán el número de veces indicado en los bytes 02-03.

Registro de nodo exterior de índice compacto

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.

Vea también

Estructura de archivo de índice compuesto (.cdx) | Estructura de archivo de índice (.idx) | Estructura de archivos de tabla (.dbc, .dbf, .frx, .lbx, .mnx, .pjx, .scx, .vcx) | Estructuras de tabla de archivos de tabla (.dbc, .frx, .lbx, .mnx, .pjx, .scx, .vcx) | Estructura del archivo memo (.FPT) | Formato de archivo de macro (.fky) | Extensiones de archivo y tipos de archivo


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
.chm | Ayuda HTML compilada
.dbc | Base de datos
.dbf | Tabla
.dbg | Configuración de depurador
.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
.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 | WinHelp
.htm | HTML
.idx | Índice, índice compacto
.lbt | Memo de etiqueta
.lbx | Label
.log | Registro de trayecto
.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 ActiveX
.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 | Biblioteca de clases visuales
.vue | Presentación de FoxPro 2.x
.win | Archivo de ventana
.xml | XML

Vea también

Estructura de archivo de índice compacto (.idx) | Estructura de archivo de índice compuesto (.cdx) | Estructura de archivo de índice (.idx) | Estructura del archivo memo (.FPT) | Estructura de archivos de tabla (.dbc, .dbf, .frx, .lbx, .mnx, .pjx, .scx, .vcx) | Estructuras de tabla de archivos de tabla (.dbc, .frx, .lbx, .mnx, .pjx, .scx, .vcx)


Estructura del archivo de recursos FoxUser

El archivo de recursos de FoxPro FOXUSER.DBF contiene una gran variedad de información de recursos (posiciones de ventanas, conjuntos de colores, configuraciones de ventanas Examinar, definiciones de etiquetas, etc.). FOXUSER es una tabla estándar de FoxPro con un archivo memo asociado (.FPT). Si no existe el archivo de índice, se crea al abrir el archivo FoxUser.dbf.

A diferencia de las versiones anteriores de Visual FoxPro, el archivo de recursos FoxUser se abre compartido.

Mientras RESOURCE está activado, FoxPro se encarga de la administración de todos los recursos. Puede modificar los datos que contiene este archivo de dos formas:

  1. Una vez establecidas y guardadas en el archivo de recursos, las configuraciones de ventanas especiales u otras preferencias de ventanas se pueden proteger de cambios interactivos posteriores al modificar el campo READONLY de cada recurso (vea el ejemplo de la sección Predefinir la configuración de la ventana Examinar).
  2. Se pueden eliminar los recursos que ya no son necesarios y empaquetar el archivo de recursos.

Las únicas acciones que se deben llevar a cabo en el archivo FOXUSER son la modificación del campo READONLY o la eliminación de registros del archivo de recursos. Haga una copia del archivo de recursos antes de realizar cualquier modificación.

La tabla FOXUSER.DBF tiene la siguiente estructura:

Campo | Nombre de campo | Tipo | Ancho
1 | TYPE | Carácter | 12
2 | Id. | Carácter | 12
3 | NAME | Memo | 4
4 | READONLY | Lógico | 1
5 | CKVAL | Numérico | 6
6 | DATA | Memo | 4
7 | UPDATED | Fecha | 8
TYPE
Identifica el tipo de información que contiene el recurso.
Id.
Muestra el TYPE del registro.
NAME
Contiene el nombre asignado al recurso, como por ejemplo, el nombre asignado a los conjuntos de colores, a las ventanas Examinar y a las ventanas del sistema.
READONLY
Campo lógico que se puede establecer en verdadero (.T.) para indicar que el recurso se debe utilizar para acceso de sólo lectura y que no se puede modificar.
CKVAL
Utilizado por FoxPro para comprobar la validez de los datos (en el campo memo DATA).
DATA
Campo memo que contiene los datos del recurso.
UPDATED
Fecha en que se realizó la última modificación del recurso actual.

Puede marcar el archivo de recursos FOXUSER.DBF como de sólo lectura en MS-DOS. El comando ATTRIB de MS-DOS utiliza el valor <+R> para marcar un archivo como de sólo lectura. Esta operación resulta útil en entornos de varios usuarios, puesto que FOXUSER.DBF puede compartirse en una red.

Modificar el archivo de recursos FOXUSER.DBF

Los siguientes comandos SET RESOURCE le permiten abrir y modificar fácilmente el contenido del archivo FOXUSER.DBF y utilizar otros archivos de recursos.

SET RESOURCE TO <ArchivodeRecursos>
SET RESOURCE TO
SET RESOURCE ON
SET RESOURCE OFF

Si desea modificar los recursos, utilice los siguientes comandos en la ventana Comandos:

SET RESOURCE OFF
USE FOXUSER
BROWSE

Con el archivo de recursos abierto, puede utilizar CHANGE, EDIT, BROWSE, DELETE, REPLACE y otros comandos de FoxPro para modificar o eliminar datos. También puede utilizar COPY TO para crear una tabla nueva de recursos. Cuando haya terminado de modificar el archivo de recursos, empaquételo si ha marcado registros para eliminar y ciérrelo. A continuación, active la característica del recurso con los comandos siguientes:

USE
SET RESOURCE ON

Puede abrir el archivo FOXUSER.DBF en un área de trabajo sin desactivar el recurso si ejecuta el comando USE SYS(2005) AGAIN. SYS(2005) devuelve el nombre del archivo de recursos actual.

Predefinir la configuración de la ventana Examinar

Una modificación en el archivo FOXUSER que le resultará útil es cambiar el campo READONLY para las configuraciones predefinidas de la ventana Examinar.

En primer lugar, ajuste una ventana Examinar para que muestre campos determinados con un tamaño que se pueda manejar fácilmente, ubique la ventana y ajuste el tamaño, divídala en dos particiones (una en modo BROWSE y la otra en modo CHANGE) y cierre la ventana. Al cerrar la ventana Examinar, se guarda su configuración en el archivo de recursos actual, siempre y cuando el campo READONLY no esté establecido en T y no se haya utilizado Ctrl+Q para cerrar la ventana.

A continuación, ejecute USE SYS(2005) AGAIN y establezca el campo READONLY en verdadero ("T"). Para ello, busque el recurso de la ventana Examinar con PREFW como TYPE y WINDBROW como ID y con un campo NAME con el alias de la tabla que acaba de examinar. Cuando el campo READONLY es verdadero (T), los datos de recurso correspondientes no se sobrescriben si se cambia más adelante la configuración de la ventana Examinar interactivamente.

A partir de ahora, cuando se utilice el comando BROWSE LAST para examinar la tabla, la ventana Examinar retiene la configuración de campos, tamaño y ubicación de la sesión anterior. Independientemente de los cambios realizados por el usuario en la ventana Examinar, ésta siempre se mostrará de acuerdo con los datos del recurso al utilizar BROWSE LAST.

Vea también

Incluir recursos en aplicaciones | Configuración de Visual FoxPro


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 acerca del nodo raíz, el tamaño del archivo actual, la longitud de la clave, opciones de índice y de firma, y representaciones ASCII imprimibles de la clave 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 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 | Firma 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.2 Las combinaciones de números hexadecimales clave/cuatro bytes se darán el número de veces indicado en los bytes 02-03.

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. Se convierten mediante el siguiente algoritmo de forma que se puedan ordenar usando la misma secuencia de ordenación ASCII que los caracteres:

  • Se convierte el número al formato de coma flotante IEEE. Para obtener más información, vea Capacidades del sistema de Visual FoxPro.
  • 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.

Vea también

Estructura de archivo de índice compacto (.idx) | Estructura de archivo de índice compuesto (.cdx) | Estructura de archivos de tabla (.dbc, .dbf, .frx, .lbx, .mnx, .pjx, .scx, .vcx) | Estructuras de tabla de archivos de tabla (.dbc, .frx, .lbx, .mnx, .pjx, .scx, .vcx) | Estructura del archivo memo (.FPT) | Formato de archivo de macro (.fky) | Extensiones de archivo y tipos de archivo


Formato de archivo de macro (.fky)

Encabezado de archivo

Desplazamiento de bytes | Descripción
01 – 03 | Firma, Hex 79FF
04 – 15 | Se ignora
16 – 17 | Número de macros (binario)
18 – final | Las macros

Macros individuales

Desplazamiento de bytes | Descripción
00 – 19 | Nombre de macro
20 – 21 | Longitud de macro (en teclas presionadas , binario)
22 – 23 | Teclas presionadas (dos bytes, binario)
24 – final | Teclas presionadas de macro

Vea también

Estructura de archivos de tabla (.dbc, .dbf, .frx, .lbx, .mnx, .pjx, .scx, .vcx) | Estructura de archivo de índice compuesto (.cdx) | Extensiones de archivo y tipos de archivo | Estructura del archivo memo (.FPT) | Estructura de archivo de índice compacto (.idx) | Estructura de archivo de índice (.idx)


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

Vea también

Estructura de archivos de tabla (.dbc, .dbf, .frx, .lbx, .mnx, .pjx, .scx, .vcx) | Estructuras de tabla de archivos de tabla (.dbc, .frx, .lbx, .mnx, .pjx, .scx, .vcx) | SET BLOCKSIZE | Estructura de archivo de índice (.idx) | Estructura de archivo de índice compacto (.idx) | Estructura de archivo de índice compuesto (.cdx) | Formato de archivo de macro (.fky) | Extensiones de archivo y tipos de archivo | Estructura del archivo memo (.FPT)


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, los puede utilizar y examinar de la misma forma que examina cualquier archivo de tabla .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 datos siguen al encabezado en bytes consecutivos y contienen el texto real de los campos.

Nota Los datos en el archivo de datos inician en la posición indicada en los bytes 8 a 9 del registro de encabezado. Los registros de datos empiezan con un byte marcador de borrado. Si este byte es un espacio ASCII (0x20), el registro no está borrado. Si el primer byte es un un asterisco (0x2A), el registro está borrado. Los datos de los campos nombrados en los subregistros están a continuación de la marca de borrado.

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.

Para obtener información acerca de las estructuras de tabla de los distintos tipos de archivo, vea Estructuras de tabla de archivos de tabla.

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 0x31 Visual FoxPro, autoincremento habilitado 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 marca de borrado
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) 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 de acceso relativa de una 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.

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 campo: C – Carácter Y – Moneda N – Numérico F – Flotante D – Fecha T – DateTime B – Doble I – Entero L – Lógico M – Memo G – General C – Carácter (binario) M – Memo (binario) P – Imagen
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 NULL 0x04 Columna binaria (sólo para CHAR y MEMO) 0x06 (0x02+0x04) Cuando un campo es NULL y binario (Entero, Monetario, Carácter y Memo) 0x0C Columna es autoincremental
19 - 22 | Valor de autoincremento. Siguiente (Next) valor
23 | Valor de autoincremento. Paso (Step) valor
24 – 31 | Reservado

Para obtener información acerca de limitaciones de número de caracteres por registro, número máximo de campos, etc., consulte Capacidades del sistema de Visual FoxPro.

Observaciones

Visual FoxPro modifica la cabecera de la tabla cuando activa o agrega autoincremento para valores de campo.

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, Moneda y Doble
  • 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.

Vea también

Páginas de códigos compatibles con Visual FoxPro | Tipos de datos y campos | Estructuras de tabla de archivos de tabla (.dbc, .frx, .lbx, .mnx, .pjx, .scx, .vcx) | Capacidades del sistema de Visual FoxPro | Comprobar diferencias en formularios, informes y otros archivos de tabla | Extensiones de archivo y tipos de archivo


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: 60SPEC.pjx y 26SPEC.pjx. El proyecto 60SPEC.pjx contiene tablas e informes que documentan los archivos de tabla de las versiones 8.0, 7.0, 6.0 y 5.0 de Visual FoxPro. El proyecto 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 8.0, 7.0, 6.0, y 5.0 File Types

Para ver la estructura de structure of a... | Imprima este informe | Que utiliza:
Base de datos1 | 60DBC.frx | 60DBC.dbf
Formulario y Biblioteca de clases visuales | 60SCX1.frx 60SCX2.frx | 60SCX.dbf
Menú2 | 60MNX.frx | 60MNX.dbf
Proyecto | 60PJX1.frx 60PJX2.frx | 60PJX.dbf
Informe y etiqueta | 60FRX1.frx 60FRX2.frx | 60FRX.dbf

1 Las propiedades de la base de datos se pueden imprimir de 60DBCPRO.frx.
2&nbspEl campo de ubicación en la estructura de Visual FoxPro 6.0 difiere del de la estructura 5.0. El informe incluye campos adicionales para admitir imágenes en Visual FoxPro 7.0.

Versión 2.6 de FoxPro

Para ver la estructura de structure of a... | 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

Vea también

Estructura de archivos de tabla (.dbc, .dbf, .frx, .lbx, .mnx, .pjx, .scx, .vcx) | Páginas de códigos compatibles con Visual FoxPro | Tipos de datos y campos | Comprobar diferencias en formularios, informes y otros archivos de tabla | Extensiones de archivo y tipos de archivo


Introducción a las fuentes

Visual FoxPro puede usar las fuentes que usted ha instalado. Las fuentes determinan la apariencia del texto mostrado en pantalla o impreso. Además, también determinan la posición y el tamaño de los controles.

Tamaño y posición de los controles

En Visual FoxPro, la propiedad ScaleMode del formulario sobre el que se sitúa un control determina el tamaño y la posición del control. Si ScaleMode se establece como Píxeles (3), el tamaño de un control se especifica en píxeles. Si ScaleMode se establece como Fóxeles (0), el tamaño de un control está determinado por la fuente y el tamaño de fuente actuales del Form.

Fóxel es un término de Visual FoxPro que corresponde al alto máximo y al ancho promedio de un carácter en la fuente actual. El alto de fila corresponde al alto máximo de una letra en la fuente actual; el ancho de columna corresponde al ancho promedio de una letra en la fuente actual.

En Visual FoxPro, puede usar fracciones decimales para las coordenadas de fila y columna con el fin de facilitar la colocación precisa de los controles y su resultado. En FoxPro para MS-DOS se omiten las partes decimales de las coordenadas de fila y columna.

En Visual FoxPro, para determinar o cambiar la fuente para la ventana principal de Visual FoxPro, presione MAYÚS mientras muestra el menú Formato y elija Fuente de pantalla. La fuente para una ventana definida por el usuario puede especificarse al incluir la cláusula FONT cuando crea la ventana con DEFINE WINDOW.

Sustitución de fuentes

Si especifica una fuente que no está disponible, se usará una fuente con características similares. Windows considera el tamaño en puntos, las características de remate y la densidad de la fuente solicitada. Normalmente se sustituye por una fuente TrueType. Una fuente de barrido o vectorial sólo se sustituye cuando las características de la fuente solicitada son muy similares a las de la fuente de barrido o vectorial.

Funciones de las fuentes

Es posible utilizar diversas funciones para devolver información acerca de las fuentes y el texto de una determinada fuente.

Entre estas funciones cabe citar las siguientes:

Función | Descripción
AFONT( ) | Coloca en una matriz información acerca de las fuentes disponibles.
FONTMETRIC( ) | Devuelve los atributos para las fuentes instaladas.
GETFONT( ) | Muestra el cuadro de diálogo Fuente y devuelve el nombre de la fuente elegida.
SYSMETRIC( ) | Devuelve el tamaño de un elemento de pantalla.
SCOLS( ) | Devuelve el número de columnas disponibles en la ventana principal de Visual FoxPro. Es útil para centrar texto o controles en la ventana principal de Visual FoxPro.
SROWS( ) | Devuelve el número de filas disponibles en la ventana principal de Visual FoxPro. Resulta útil al centrar texto o controles en la ventana principal de Visual FoxPro.
WCOLS( ) | Devuelve el número de columnas de la ventana especificada. Resulta útil al centrar texto o controles en una ventana definida por el usuario.
WFONT( ) | Devuelve el nombre, el tamaño o el estilo de la fuente actual para una ventana.
WROWS( ) | Devuelve el número de columnas de la ventana especificada. Resulta útil al centrar texto o controles en una ventana definida por el usuario.

Vea también

AFONT( ) | FONTMETRIC( ) | GETFONT( ) | SYSMETRIC( ) | ScaleMode (Propiedad) | SCOLS( ) | SROWS( ) | WCOLS( ) | WFONT( ) | WROWS( )


Compatibilidad con gráficos en Visual FoxPro

Visual FoxPro 8.0 reemplaza el soporte nativo para mostrar formatos Graphics Interchange Format (.gif) y Joint Photographic Electronic Group (.jpeg) con el Graphics Device Interface+ (GDI+), la próxima generación de interfaz para dispositivos gráficos de Microsoft Windows XP y futuras versiones del sistema operativo Windows. Visual FoxPro es compatible con todos los formatos que controla GDI+ como los siguientes incluyendo archivos .gif animados:

Extensión de archivo | Nombre del tipo de archivo
.ani | Animated Cursor
.bmp | Bitmap
.cur | Cursor
.dib | Device Independent Bitmap
.emf | Windows Enhanced Metafile
.exif | Exchangeable Image File
.gif, .gfa | Graphics Interchange Format
.ico | Icon
.jpg, .jpeg, .jpe, .jfif | Joint Photographic Electronic Group, JPEG File Interchange Format
.png | Portable Networks Graphics
.tif, .tiff | Tag Image File Format
.wmf | Windows Metafile
Nota En Visual FoxPro se pueden usar los archivos de cursores, cursores animados e iconos como archivos gráficos. Por ejemplo, puede especificar un cursor animado para la propiedad Picture del control Image. Sin embargo, el control Image muestra la representación estática del cursor.

Si Visual FoxPro no reconoce una versión particular de un formato soportado nativamente como un .bmp, .dib, .cur, .ani, or .ico, lo pasa al GDI+ para mostrarlo. Por lo tanto, como los nuevos formatos de archivos estáticos se soportan en futuras versiones de GDI+, Visual FoxPro puede soportarlos automáticamente.

Con GDI+, Visual FoxPro incluye la propiedad RotateFlip en el control Image para que pueda rotar, invertir o voltear una imagen. Para más información, vea RotateFlip (Propiedad).

Nota GDI+ se instala con el sistema operativo Windows XP y es necesario para ejecutar Visual FoxPro. Visual FoxPro incluye una módulo de combinación para redistribuirlo con las aplicaciones que se ejecuten en plataformas Windows 98, Windows Me, Windows NT 4.0 y Windows 2000.

Visual FoxPro proporciona compatibilidad gráfica en las siguientes tres áreas:

  • Idioma
  • Controles y objetos
  • Interfaz de usuario

Lenguaje

Puede usar la función GETPICT( ) para acceder al cuadro de diálogo de Visual FoxPro que proporciona acceso a formatos de archivo válidos. También puede acceder gráficos a través de propiedades en los controles y objetos descritos aquí.

Controles y objetos

La tabla siguiente muestra los controles y objetos de Visual FoxPro que tienen propiedades para las que puede especificar archivos gráficos. Ahora puede especificar archivos gráficos de tipo .gif, .jpg, .cur, .ani e .ico para estas propiedades, además de los archivos gráficos de tipo .bmp y .dib admitidos en las versiones anteriores de Visual FoxPro.

Control u objeto | Propiedades
CheckBox (Control) | DisabledPicture DownPicture Picture
CommandButton (Control) | DisabledPicture DownPicture Picture
ComboBox (Control) | Picture
Container (Objeto) | Picture
Control (Objeto) | Picture
Custom (Objeto) | Picture
Form (Objeto) | Picture
Image (Control)* | Picture
ListBox (Control) | Picture
OptionButton (Control) | DisabledPicture DownPicture Picture
Page (Objeto) | Picture
_SCREEN (Variable de sistema) | Picture

* Visual FoxPro admite archivos .gif animados sólo para la propiedad Picture de un control Image.

Interfaz de usuario

Varios de los diseñadores de Visual FoxPro le permiten especificar archivos de gráficos en el cuadro de diálogo Abrir. El cuadro de diálogo Abrir de los diseñadores siguientes incluye todos los formatos de archivos de gráficos válidos.

Diseñador de formularios y Diseñador de clases

Puede encontrar y seleccionar una imagen abriendo el cuadro de diálogo Abrir en el Diseñador de formularios y de clases, para una propiedad en estos controles que soporte archivos gráficos.

Para seleccionar una imagen en los Diseñadores de formularios y de clases

  • En la ventana Propiedades, haga doble clic en la propiedad Picture.

Visual FoxPro muestra el cuadro de Abrir para que busque y seleccione una imagen.

Administrador de proyectos

Puede encontrar, seleccionar y agregar archivos gráficos a un proyecto en el Administrador de proyectos.

Para agregar un archivo gráfico a un proyecto

  • En el Administrador de proyectos, selecciones Otros archivos en la fichas Todas u Otras y haga clic en Agregar.

Visual FoxPro muestra el cuadro de diálogo Abrir para que encuentre y selecciones una imagen.

Diseñador de informes

Puede encontrar y seleccionar una imagen utilizando el cuadro de diálogo Abrir en el Diseñador de Informes.

Para seleccionar una imagen el Diseñador de informes

  1. En la barra de herramientas Controles de informes, haga clic en el botón Control imagen o ActiveX dependiente. Arrastre el cursor, el cual aparece como una cruz, a una banda del Diseñador de informes y haga clic una vez para que aparezca el cuadro de diálogo Imagen para informe.
  2. En el cuadro de diálogo Imagen para informe, haga clic en el botón de opción Archivo y después en el botón puntos (...).

Visual FoxPro muestra el cuadro de diálogo Abrir para que encuentre y seleccione una imagen.

Compatibilidad con imágenes GDI+

GDI+ es una clase API para programadores C/C++. Habilita a las aplicaciones para usar gráficos y texto formateado para mostrar en video y para imprimir. Las aplicaciones basadas en Microsoft Win32 API no acceden al hardware de gráficos directamente. En su lugar, GDI+ interactúa con los controladores del dispositivo a nombre de las aplicaciones. GDI+ también es compatible con el sistema operativo Windows de 64-bit.

GDI+ puede usarse en todas aplicaciones basadas en Windows. GDI+ se incluye en los sistemas operativos Microsoft Windows XP y Windows Server 2003. GDI+ está disponible como redistribuible para aplicaciones Visual FoxPro que se ejecutan en sistemas operativos Windows NT 4.0 SP6, Windows 2000, Windows Millennium Edition, y Windows 98. Para descargar la versión redistribuible más reciente, visite el sitio web Platform SDK Redistributables en:

http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdkredist.htm

o el sitio web Microsoft Download Center en:

http://www.microsoft.com/downloads/release.asp?releaseid=32738

Visual FoxPro 8.0 obliga a incluir las bibliotecas de tiempo de ejecución Vfp8r.dll y Vfp8t.dll. El archivo Gdiplus.dll debe estar presente en el directorio de sistema del PC del usuario.

Compatibilidad con imágenes .gif animados

Los archivos .gif animados son populares en una variedad de formatos de archivos .gif. Usan la misma extensión de archivo (.gif) y contienen marcos de imágenes específicos que se muestran cíclicamente para producir un efecto de animación. El archivo .gif animado contiene el número de veces que se repite el ciclo antes de parar. Visual FoxPro admite archivos .gif animados como sigue:

  • Visual FoxPro admite archivos .gif animados sólo para la propiedad Picture de un control Image.
  • Los gif animados se muestran en tiempo de diseño y en tiempo de ejecución.
  • Visual FoxPro sólo muestra el primer marco de un archivo gif animado cuando aparece en un control diferente al control Image.
  • Visual FoxPro ejecuta el ciclo del archivo gif animados basado sólo en el configuración del contador del bucle interno.
  • Visual FoxPro hace una pausa de un segundos entre ciclos de animación.
  • Si el tamaño o ubicación del control Image cambian en tiempo de ejecución mientras se ejecuta una animación de una imagen, Visual FoxPro restaura al primer marco y continúa.
  • Visual FoxPro dibuja la imagen del gif con el tamaño especificado en el archivo .gif, no el del control Image. Visual FoxPro no encoge o estira la imagen.
  • Durante la animaciones, la imagen completa o parte de ella se borra para poder redibujar el siguiente marco. Visual FoxPro minimiza el redibujado innecesario para evitar el parpadeo. Si la posición de la imagen se mueve, si por ejemplo el control o su contenedor se mueve, es necesario redibujar la imagen completa.
  • Ya que Visual FoxPro almacena internamente una representación única de una imagen particular como un bitmap fuera de la pantalla, múltiples controles Image que usen el mismo archivo .gif animado, siempre están sincronizados. Si desea que las animaciones de la misma imagen se comporten diferente en cada control Image, debe crear una copia de cada archivo .gif animado y renombrar cada copia.
  • El archivo .gif animado puede especificar la cantidad de tiempo entre marcos. Esta cantidad de tiempo puede ser diferente entre cada marco. Por lo tanto, es posible tener grandes demoras entre marcos.
  • Si usa un archivo .gif animado en un control diferente a un control Image, la animación de la imagen no se ejecuta. Sin embargo, si más tarde usa la imagen en un control Image, la imagen se anima sólo si primero ejecuta el comando CLEAR...RESOURCES. Esto ocurre por que la imagen está almacenada en memoria, y el atributo de animación se está ignorando cuando la imagen se muestra en un control diferente al control Image. Debe usar el comando CLEAR...RESOURCES para volver a cargar la imagen en memoria.

Vea también

Crear métodos Access y Assign | GETPICT( ) (Función) | Métodos Access y Assign | Picture (Propiedad) | Image (Control) | CLEAR (Comandos)


Condiciones de combinación para tablas, consultas y vistas

Cuando recupere datos desde tablas para crear consultas y vistas, puede utilizar condiciones de combinación o combinaciones entre tablas, que normalmente se basan en los ínidices. Por ejemplo, puede utilizar condiciones de combinación para comparar los valores en dos tablas que tienen un campo común y devolver solo aquellos registros donde estos campos tengan el mismo valor. Puede cambiar las condiciones de combinación para las consultas y vistas en el Diseñador de Consultas y Vistas o usando el lenguaje de Visual FoxPro. Para obtener más información, vea Ficha Combinacón, Diseñadores de consultas y vistas y SELECT - SQL (Comando).

Especificar combinaciones con campos que no sean basados en índices puede ser aceptados en algunos casos, sin embargo, este tipo de uniones no son usadas en la mayoria de las vistas.

Características de las Condiciones de Combinación

La siguiente lista describe algunos aspectos y criterios que se deben tener en cuenta para las condiciones de combinación entre tablas o consultas y vistas:

  • Tipo de combinación entre tablas o entre campos de tablas en una consulta o vista.
  • Campos de la combinación
  • Operadores de comparación entre los campos, tales como Igual (=), Mayor que (>) y Entre (Between)
  • Secuencia de combinaciones entre dos o más tablas

Tipos de combinación

Puede especificar el tipo de combinación entre tablas o campos para expandir o acotar su búsqueda. Por ejemplo, escogiendo una combinación completa (full join) puede expandir el resultado de su consulta para incluir los registros que cumplan la condición de la combinación y los que no la cumplan.

La siguiente tabla describe los tipos de combinación que puede utilizar para expandir o acotar los datos obtenidos en la combinación.

Tipo de Combinación | Resultado
Combinación Interna (Inner join) | Devuelve solo registros de ambas tablas que satisfagan la comparación o condición de combinación entre los campos establecidos en la condición de combinación.
Combinación izquierda (Left join) | Devuelve todos los registros de la tabla situada a la izquierda de la palabra clave join y únicamente los registros coincidentes de la tabla situada a la derecha de la palabra clave.
Combinación derecha (Right join) | Devuelve todos los registros de la tabla situada a la derecha de la palabra clave join y únicamente los registros coincidentes de la tabla situada a la izquierda de la palabra clave.
Combinación completa (Full join) | Devuelve todos los registros de las tablas situadas a ambos lados de la palabra clave full join sin importar si cumplen la condición de combinación.

Para obtener más información sobre la secuencia de combinaciones entre tablas, vea Cuadro de diálogo Condición de combinación.

Condiciones de Combinación para Múltiples Tablas

Cuanto utilice dos o más tablas, puede modificar los resultados seleccionando el orden de las combinaciones mediante el Diseñador de Vistas y Consultas o en la cláusula FROM del comando SELECT SQL. Para más información, vea ficha Combinación, Diseñadores de vistas y consultas y SELECT - SQL (Comando).

Por ejemplo, puede querer información sobre los pedidos de los clientes, saber si hicieron un pedido o no y ademas el empleado que hizo la venta. puede crear una vista utilizando las tablas customer, orders y employee y especificar una condición de combinación interna para los campos en común: las tablas customer y orders tiene el campo cliente ID; y las tablas orders y employee tienen un campo empleado ID.

El siguiente código utiliza la cláusula WHERE que recupera los pedidos de la tabla orders que coinciden con los clientes en la tabla de clientes y los empleados que tomaron esos pedidos de la tabla empleados:

OPEN DATABASE testdata
CREATE SQL VIEW cust_orders_emp_view AS ;
SELECT * FROM testdata!customer ;
INNER JOIN testdata!orders ;
ON customer.cust_id = orders.cust_id ;
INNER JOIN testdata!employee ;
ON orders.emp_id = employee.emp_id

Condiciones de Combinación en Consultas y Vistas

Además de poder modificar los tipos de combinación entre tablas, también puede cambiar las condiciones de combinación en las consultas y vistas. Puede utilizar operadores de comparación para controlar que registros son comparados y devueltos, simulando un filtro.

Por ejemplo, puede utilizar el comparador Igual (=) cuando quiera consultar dos tablas unidas por sus respectivos campos de cliente ID, donde Customer.cust_id = Orders.cust_id. Esta consulta devuelve solo los registros en que coinciden estos dos campos y complementa cualquier otro filtro incluido en la consulta. Otro ejemplo, si esta utilizando un campo fecha en la combinación, puede emplear un operador condicional para incluir solo los registros anteriores o posteriores a cierta fecha.

Las condiciones de combinación no tienen por que limitarse a coincidencias exactas de los campos. Puede utilizar diferentes relacionadores para las condiciones de combinación, tales como similar (Like), Mayor Que (More Than), Menor Que (less Than).

Las condiciones de combinación se comportan casi como filtros, ambos comparan valores y devuelven los registros que cumplen con la condición. Sin embargo, en la condición de combinación el valor del campo de una tabla se compara contra el valor del campo de otra tabla, mientras que en la condición de filtro se compara el valor de un campo con el valor del filtro.

Para más información sobre condiciones de combinación para vistas y consultas, vea Ficha Combinacón, Diseñadores de consultas y vistas.

Incluir registros No Coincidentes en el Resultado

Si desea incluir registros no coincidentes en el resultado de una consulta, puede utilizar una combinación externa. Por ejemplo, suponga que quiere crear una vista con la lista de todos los clientes, hallan hecho un pedido o no. Además desea que el número del pedido este incluido en la vista. Cuando utilice una combinación externa, los campos vacios de de los registros no coincidentes devuelven valores nulos.

El siguiente código ilustra el ejemplo mediante la creación de una vista utilizando una condicón de combinación que recupera todos los clientes de la tabla customer y solo los números de orden desde la tabla orders para aquellos clientes cuyo código de cliente (cust_id) aparezca en ambas tablas:

OPEN DATABASE testdata
CREATE SQL VIEW cust_orders_view AS ;
SELECT * FROM testdata!customer ;
LEFT OUTER JOIN testdata!orders ;
ON customer.cust_id = orders.cust_id

La siguiente tabla describe las condiciones de combinación para obtener registros que no cumplan con la condición de combinación.

Tipo de combinación | Resultado
Combinación interna (Inner join) | Devuelve solo registros de ambas tablas que satisfagan la condición de combinación.
Combinación externa izquierda (Left outer join) | Devuelve todos los registros de la tabla situada a la izquierda de la palabra clave join y únicamente los registros coincidentes de la tabla situada a la derecha de la palabra clave.
Combinación externa derecha (Right outer join) | Devuelve todos los registros de la tabla situada a la derecha de la palabra clave join y únicamente los registros coincidentes de la tabla situada a la izquierda de la palabra clave.
Combinación externa completa (Full outer join) | Devuelve todos los registros de las tablas situadas a ambos lados de la palabra clave sin importar si cumplen o no con la condición de combinación.

Condiciones de Combinación en la Cláusula WHERE

Cuando utilice filtros, puede especificar la condición de combinación en la ficha Filtro del Diseñador de Vistas y Consultas, que inserta un cláusula WHERE en el comado SELECT SQL generado por la consulta o vista. Si embargo, no puede especificar una condición de combinación con la clásula FROM. Para vistas remotas, la condición de combinación siempre debe estar con la cláusula WHERE.

Por ejemplo, puede que quiera información sobre las órdenes de los clientes, saber si hicieron un pedido o no y ademas el empleado que hizo la venta. Puede crear una vista utilizando las tablas customer, orders y employee y especificar una condición de combinación interna para los campos en común: las tablas customer y orders tiene el campo cliente ID; y las tablas orders y employee tienen un campo empleado ID.

El siguiente código utiliza la cláusula WHERE que recupera los pedidos de la tabla orders que coinciden con los clientes en la tabla de clientes y los empleados que tomaron esas órdenes de la tabla empleados:

OPEN DATABASE testdata
CREATE SQL VIEW cust_orders_emp_view AS ;
SELECT * FROM testdata!customer, ;
testdata!orders, testdata!employee ;
WHERE customer.cust_id = orders.cust_id ;
AND orders.emp_id = employee.emp_id

Para obtener más información sobre la clásula WHERE, vea Ficha Filtro, Diseñadores de consultas y vistas y SELECT - SQL (Comando).

Vea También

Trabajar con vistas | Crear vistas | Crear vistas locales | Crear vistas con múltiples tablas | Acceder a datos remotos con vistas | Ventana Administrador de proyectos | Diseñador de consultas y de vistas | Mostrar los datos con vistas | CREATE SQL VIEW (Comando)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Métodos abreviados del teclado

Visual FoxPro permite utilizar métodos abreviados del teclado en las áreas siguientes:

  • Ayuda
  • Comandos del menú
  • Controles
  • Diseñadores de formularios y de clases
  • Diseñadores de informes y de etiquetas
  • Editor
  • Examinador de clases
  • Manipulación de ventanas
  • Ventana Código
  • Ventana Examinar
  • Ventana Propiedades
  • Ventana Vista preliminar

Ayuda

Método abreviado | Acción
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 de 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.

Comandos del menú

Método abreviado | Comando
CTRL+A | Seleccionar todo (menú Edición)
CTRL+C | Copiar (menú Edición)
CTRL+D | Ejecutar (menú Programa)
CTRL+E | Eliminar elemento (menú Menú)
CTRL+E | Ejecutar <programa> (menú Programa) Ejecutar formulario (menú Formulario)
CTRL+F | Buscar (menú Edición)
CTRL+G | Buscar siguiente (menú Edición)
CTRL+H | Cambiar particiones (menú Tabla)
CTRL+I | Insertar elemento (menú Menú)
CTRL+J | Información del proyecto (menú Proyecto)
CTRL+L | Reemplazar (menú Edición)
CTRL+M | Reanudar (menú Programa)
CTRL+N | Nuevo (menú Archivo)
CTRL+O | Abrir (menú Archivo)
CTRL+P | Imprimir (menú Archivo)
CTRL+Q | Cierra ventana de texto actual y descarta los cambios. Vea también CTRL+W. Ejecutar consulta (menú Consulta) Salir (menú Archivo)
CTRL+R | Rehacer (menú Edición)
CTRL+S | Guardar (menú Archivo)
CTRL+T | Alternar marca de eliminación (menú Tabla)
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)
CTRL+Z | Deshacer (menú Edición)

Controles

Método abreviado | Acción
CTRL+TAB Cuando un control Grid tiene el foco, sale del control cuadrícula.

Cuando un control EditBox tiene el foco, y la propiedad AllowTabs de EditBox está como Verdadero (.T.), sale del cuadro de edición.

Cuando un control PageFrame tiene el foco, se mueve a la siguiente página del marco de páginas. Sin embargo, este comportamiento no está soportado e archivos de proyecto o cuando el marco de páginas contiene un control ActiveX.
CTRL+SHIFT+TAB | Cuando un control PageFrame tiene el foco, se mueve a la página anterior del marco de páginas. Sin embargo, este comportamiento no está soportado e archivos de proyecto o cuando el marco de páginas contiene un control ActiveX.
TAB | Cuando un control Grid tiene el foco, se mueve al siguiente campo.

Diseñador de formularios y Diseñador de clases

Método abreviado | Acción
CTRL+E | Ejecuta el formulario en el Diseñador de formularios.
CTRL+SHIFT+Clic en el control | Se mueve a un control dentro de un contenedor.
CTRL+Clic en el contenedor | Se mueve dentro de un contenedor.

Diseñador de informes

Método abreviado | Acción
ALT+ENTER | Abre el cuadro de diálogo propiedades correspondiente al campo seleccionado.
CTRL+E | Cambia el control al modo Modificar cuando se selecciona un control Label en el Diseñador de informes.
ESC | Sale del modo Modificar para un control Label y regresa al modo Seleccionar
TAB | Utiliza el tabulador para desplazarse al objeto siguiente del Diseñador de informes en modo de tabulación.
MAYÚSCULAS+TAB | Utiliza el tabulador para desplazarse al objeto anterior del Diseñador de informes en modo de tabulación.

Editor

En las ventanas de edición de Visual FoxPro, puede utilizar teclas modificadoras para seleccionar cortar y pegar o copiar y pegar al arrastrar.

En esta versión de Visual FoxPro, puede modificar el comportamiento predeterminado de arrastrar y soltar si hace clic en Arrastrar y soltar entre palabras en la ficha Editor del cuadro de diálogo Opciones del menú Herramientas. Utilice ALT+arrastrar para cambiar al otro valor de configuración (arrastrar en palabras o entre palabras solamente).

Método abreviado | Acción
ALT+Arrastrar | Corta y pega.
CTRL+Arrastrar | Copia y pega.
CTRL+I | IntelliSense – muestra información
CTRL+J | IntelliSense, activa mostrar miembros o lista de valores
F2 | Se desplaza a la línea que contiene el siguiente marcador
ALT+F2 | Agrega o quita el acceso directo a la Lista de tareas
MAYÚS+F2 | Se desplaza a la línea que contiene el marcador anterior.
ALT+MAYÚS+F2 | Activa o desactiva el marcador para la línea actual
F3 | Busca la siguiente aparición del texto especificado
CTRL+F3, CTRL+G | Busca la siguiente aparición del texto seleccionado
MAYÚS+F3 | Busca la anterior aparición del texto especificado
CTRL+MAYÚS+F3 | Busca la anterior aparición del texto seleccionado
CTRL+FLECHA ARRIBA | Desplaza la ventana hacia abajo sin mover el cursor
CTRL+FLECHA ABAJO | Desplaza la ventana hacia arriba sin mover el cursor
CTRL+FLECHA DERECHA | Desplaza el cursor una palabra a la derecha
CTRL+FLECHA IZQUIERDA | Desplaza el cursor una palabra a la izquierda
CTRL+F9 | Activa o desactiva un punto de interrupción
F9 | Inserta o quita un punto de interrupción
CTRL+F9 | Habilita o deshabilita un punto de interrupción.
CTRL+B | Abre el cuadro de diálogo Puntos de interrupción
CTRL+MAYÚS+U | Convierte la selección a mayúsculas
CTRL+U | Convierte la selección a minúsculas
CTRL+RETROCESO | Elimina la palabra anterior

Examinador de clases

Método abreviado | Acción
F5 | Actualiza la vista actual.
MAYÚS+F10 | Muestra un menú contextual.
Clic derecho+botón Abrir Clic derecho+botón Agregar Clic derecho+botón Galería de componentes | Muestra el historial de los últimos 32 archivos cargados.
Clic derecho+botón Ver código de clase | Muestra el código de clase en un formulario webview.
Ctrl+clic derecho + icono Clase (en la esquina superior izquierda del Examinador de clases) | Crea una instancia de la clase con la función NEWOBJECT( ) en la ventana Comandos. Es idéntico a arrastrar el icono Clase a la ventana Comandos.
MAYÚS+clic derecho+icono Clase (en la esquina superior izquierda del Examinador de clases) | Para formularios, ejecuta el formulario. Para otros controles y objetos, crea una instancia del control u objeto. Para controles, también agrega el control al escritorio de Visual FoxPro en la posición 0,0. Es idéntico a arrastrar el icono Clase al escritorio de Visual FoxPro.

Manipulación de ventanas

Visual FoxPro mantiene el orden de las ventanas y trae al frente la más reciente en lugar de enviar la última al fondo cuando recorre las ventanas.

Método abreviado | Acción
CTRL+F1 | Recorre las ventanas
CTRL+F2 | Muestra la ventana Comandos
CTRL+F4 | Cierra la ventana activa
CTRL+F6 | Recorre las ventanas
CTRL+TAB | Se mueve a la siguiente ventana.
CTRL+ALT+MAYÚS | 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.
CTRL+F10 | Alterna el tamaño de la ventana entre maximizar y restaurar.

Ventana Código

Método abreviado | Acción
ALT+I | Presiona el botón Código de vista primaria.

Ventana Examinar

Método abreviado | Acción
CTRL+HOME | Se mueve al primer registro de un cursor o tabla en una cuadrícula y cuando utiliza el comando BROWSE.
CTRL+END | Mueve al último registro de un cursor o tabla en una cuadrícula y cuando utiliza el comando BROWSE.

Ventana Propiedades

Método abreviado | Acción
ALT+FLECHA ABAJO | Despliega la lista de objetos.
ALT+FLECHA ARRIBA | Cierra la lista de objetos.
CTRL+RE PÁG o FLECHA ABAJO o FLECHA DERECHA | Se desplaza al objeto anterior de la lista desplegable Objeto.
CTRL+AV PÁG o FLECHA ABAJO o FLECHA DERECHA | Se desplaza al siguiente objeto de la lista desplegable Objeto.
CTRL+FIN | Se desplaza al último objeto de la lista desplegable Objeto.
CTRL+INICIO | Se desplaza al primer objeto de la lista desplegable Objeto.
TAB | Se desplaza al siguiente control.
SHIFT+TAB | Se desplaza el control anterior.
SHIFT+F10 | Muestra el menú contextual correspondiente.
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.

Ventana Vista preliminar

Método abreviado | Acción
Z | Acerca y aleja el zoom.
L | Alterna entre varios niveles de zoom.
G | Abre el cuadro de diálogo Ir a la página.
ESC | Cierra la ventana Vista preliminar.
FLECHA IZQUIERDA | Desplaza la ventana Vista preliminar hacia la izquierda.
FLECHA DERECHA | Desplaza la ventana Vista preliminar hacia la derecha.
FLECHA ARRIBA | Desplaza la ventana Vista preliminar hacia arriba.
FLECHA ABAJO | Desplaza la ventana Vista preliminar hacia abajo.
AV PÁG | Muestra la ventana Vista preliminar en la página siguiente.
RE PÁG | Muestra la ventana Vista preliminar en la página anterior.
INICIO | Muestra la ventana Vista preliminar en la primera página.
FIN | Muestra la ventana Vista preliminar en la última página.

Vea también

Métodos abreviados del depurador | Ventana Comandos | Ventana Examinador de clases


Convenciones de nomenclatura

Elija para los objetos, propiedades y métodos expuestos, nombres que puedan comprender fácilmente los usuarios de la aplicación.

En esta sección

Convenciones de nomenclatura de constantes
Proporciona un formato sugerido para asignar nombre a las constantes.
Convenciones de nomenclatura de objetos
Proporciona un formato sugerido para asignar nombres a objetos.
Convenciones de nomenclatura de campos de tabla
Proporciona un formato sugerido para asignar nombre a los campos de tablas. Se recomiendan estas convenciones, aunque no son obligatorias.
Convenciones de nomenclatura de variables
Proporciona un formato sugerido para asignar nombre a las variables.
Convenciones de nomenclatura de ventanas
Proporciona un formato sugerido para asignar nombre a las ventanas.

Secciones relacionadas

Categorías del lenguaje
Contiene una lista de funciones del lenguaje y sus descripciones.
Referencia del lenguaje ordenada alfabéticamente
Contiene una lista de temas de referencia del lenguaje ordenados alfabéticamente.
Uso de Visual FoxPro
Discute las características de programación de Visual FoxPro que están diseñadas para mejorar la productividad del programador, incluidos los métodos Access y Assign, la compatibilidad con más formatos de archivos gráficos y lenguaje para simplificar las tareas de programación.
Desarrollar aplicaciones Visual FoxPro
Proporciona información conceptual acerca de cómo desarrollar aplicaciones Visual FoxPro, instrucciones para crear bases de datos y la interfaz de usuario y otras tareas necesarias para crear aplicaciones Visual FoxPro.
Programar en Visual FoxPro
Describe cómo acceder a toda la eficacia de Visual FoxPro creando aplicaciones que incorporan técnicas de programación orientada a objetos el modelo controlado por eventos para maximizar su productividad mientras programa.


Convenciones de nomenclatura de constantes

Siga este formato sugerido para asignar nombre a las constantes.

NAME

Observaciones

Se recomienda escribir las constantes en mayúsculas.

Ejemplo

#DEFINE MAX_VALUE 10

Para obtener más información, vea Creación de nombres en Visual FoxPro.

Vea también

Convenciones de nomenclatura de objetos | Convenciones de nomenclatura de campos de tabla | Convenciones de nomenclatura de variables | Creación de nombres en Visual FoxPro | Convenciones de nomenclatura de ventanas


Convenciones de nomenclatura de objetos

Siga este formato sugerido para asignar nombres a objetos.

PrefixName

Los prefijos sugeridos para nombres de objetos se muestran en la tabla siguiente.

Prefijo Objeto Ejemplo
chk CheckBox
chkReadOnly
col Collection
colFormObjects
cbo ComboBox
cboEnglish
cmd CommandButton
cmdCancel
cmg CommandGroup
cmgChoices
cnt Contenedor
cntMoverList
ctl Control
ctlFileList
cad CursorAdapter
cadInventory
<definido por el usuario> Custom
user-defined
dte DataEnvironment
dteSalesForm
edt EditBox
edtTextArea
frm Formulario
frmFileOpen
frs FormSet
frsDataEntry
grd Cuadrícula
grdPrices
grc Columna
grcCurrentPrice
grh Header
grhTotalInventory
hpl HyperLink
hplHomeURL
img Imagen
imgIcon
lbl Etiqueta
lblHelpMessage
lin Line
linVertical
lst ListBox
lstPolicyCodes
olb OLEBoundControl
olbObject1
ole OLE
oleObject1
opt OptionButton
optFrench
opg OptionGroup
opgType
pag Página
pagDataUpdate
pgf PageFrame
pgfLeft
prj ProjectHook
prjBuildAll
sep Separator
sepToolSection1
shp Shape
shpCircle
spn Spinner
spnValues
txt TextBox
txtGetText
tmr Timer
tmrAlarm
tbr ToolBar
tbrEditReport
xad XMLAdapter
xadRemoteXMLData
xfd XMLField
xfdPrices
xtb XMLTable
xtbInventory

Observaciones

Los prefijos no son necesarios, pero son recomendables como buen hábito de programación. El uso de un prefijo no fija el contenido de una variable de objeto; en Visual FoxPro, los prefijos sólo se utilizan como convención de nomenclatura. Por ejemplo, cuando agrega el prefijo “cbo”, no se asegura que el objeto al que hace referencia una variable sea un cuadro combinado, pero le ayuda a recordar que la variable hace referencia a ese tipo de objeto.

Para obtener más información, vea Creación de nombres en Visual FoxPro.

Vea también

Convenciones de nomenclatura de constantes | Convenciones de nomenclatura de campos de tabla | Convenciones de nomenclatura de variables | Creación de nombres en Visual FoxPro | Convenciones de nomenclatura de ventanas


Convenciones de nomenclatura de campos de tabla

Siga este formato sugerido para asignar nombre a los campos de tablas. Se recomiendan estas convenciones, aunque no son obligatorias.

Alias.TypeName

Parámetros

Type
Especifica el tipo de datos para un campo de una tabla. Las opciones para Type son:
Tipo Descripción Ejemplo
c Character
Customer.cLastName
d Fecha
Customer.dBirthDay
t Datetime
Customer.tLastMod
b Double
Customer.bRate
f Flotante
Customer.fValue
g General
Customer.gPicture
l Lógicas
Customer.lSellMail
m Memo
Customer.mComments
y Currency
Customer.yYearTDate
n Numérico
Customer.nItems
I Integer
Customer.iCustID

Observaciones

Los prefijos no son necesarios, pero son recomendables como buen hábito de programación. El uso de un prefijo no fija el contenido de un campo; en Visual FoxPro, los prefijos sólo se utilizan como convención de nomenclatura. Por ejemplo, cuando agrega el prefijo “d”, no se asegura que el contenido de un campo sea una fecha, pero le ayuda a recordar el tipo de datos contenido en el campo.

Para obtener más información, vea Creación de nombres en Visual FoxPro.

Vea también

Convenciones de nomenclatura de constantes | Convenciones de nomenclatura de objetos | Convenciones de nomenclatura de variables | Creación de nombres en Visual FoxPro | Convenciones de nomenclatura de ventanas


Convenciones de nomenclatura de variables

Siga este formato sugerido para asignar nombre a las variables.

[Scope]TypeName

Parámetros

Scope
Opcional. Una convención que indica el alcance de referencia de la variable. Por ejemplo, las variables locales pueden comenzar con “l”, lo que recuerda que sólo puede hacerse referencia a ellas desde el procedimiento donde se definen. Las expresiones sugeridas para Scope son:
Alcance Descripción Ejemplo
l Local
lnCounter
p Privada (predeterminada)
pnStatus
g Pública (global)
gnOldRecno
t Parámetro
tnRecNo
Type
Especifica el tipo de datos para la variable. Las opciones para Type son:
Tipo Descripción Ejemplo
a Matriz
aMonths
c Character
cLastName
y Currency
yCurrentValue
d Fecha
dBirthDay
t Datetime
tLastModified
b Double
bValue
f Flotante
fInterest
l Lógicas
lFlag
n Numérico
nCounter
o Objeto
oEmployee
u Desconocido
uReturnValue

Observaciones

Los prefijos no son necesarios, pero son recomendables como buen hábito de programación. El uso de un prefijo no fija el valor de una variable; en Visual FoxPro, los prefijos sólo se utilizan como convención de nomenclatura. Por ejemplo, cuando se agrega el prefijo “c”, no significa que sólo se almacenen datos de tipo carácter en la variable, pero le ayuda a recordar que la variable se creó para almacenar datos de tipo carácter.

Nota El prefijo de alcance es recomendable pero no necesario. En algunos casos, el alcance explícito no se aplica. Por ejemplo, en el programa principal de una aplicación independiente, no hay diferencia en la visibilidad para variables con alcance PUBLIC o PRIVATE. El tipo de prefijo siempre es relevante y necesario en los programas de ejemplo.

Para obtener más información, vea Creación de nombres en Visual FoxPro.

Vea también

Convenciones de nomenclatura de constantes | Convenciones de nomenclatura de objetos | Convenciones de nomenclatura de campos de tabla | Creación de nombres en Visual FoxPro | Convenciones de nomenclatura de ventanas


Convenciones de nomenclatura de ventanas

Siga este formato sugerido para asignar nombre a las ventanas.

wName

Observaciones

No utilice un prefijo en las definiciones de clase; utilice prefijos sólo cuando se cree una instancia del objeto.

Ejemplo

Cuando cree un objeto ventana, emplee el código siguiente:

DEFINE WINDOW wCustomerInvoices ;
FROM nFirstRow, nFirstColumn TO nLastRow, nLastColumn

Para obtener más información, vea Creación de nombres en Visual FoxPro.

Vea también

Convenciones de nomenclatura de constantes | Convenciones de nomenclatura de objetos | Convenciones de nomenclatura de campos de tabla | Convenciones de nomenclatura de variables | Creación de nombres en Visual FoxPro


Regular Expressions and Operators

Visual FoxPro

Expresiones regulares y operadores

Las expresiones regulares son conjuntos de símbolos que se pueden utilizar para crear búsqueda y modificación de patrones de texto. Las expresiones regulares proporcionan un sistema flexible y concreto para crear búsquedas y criterios de filtro mas complejos, que utilizar los caracteres comodín disponibles en el cuadro de dialogo Buscar.

La siguiente tabla describe el comportamiento de los operadores de expresiones regulares en una consulta.

Operador | Comportamiento
. | Representa cualquier carácter excepto el de nueva línea (\n).
* | Representa al carácter que le precede desde ninguna hasta varias veces. Se puede usar también el signo de interrogación cerrado (?). Ejemplo "zo*" coincide con "z" y con "zoo". La expresión "a?ve?" coincide con la cadena "ve" de "never".
+ | Representa al carácter que le precede una o varias veces. Ejemplo "zo+" coincide con "zoo" pero no con "z".
^ | Representa el principio de línea.
$ | Representa el fin de línea.
[xyz] | Representa cualquier carácter de la lista. Es necesario incluir los corchetes de inicio y fin. Ejemplo "[abc]" coincide con la cadena "a" de "plain".
[^xyz] | Representa cualquier carácter excepto los de la lista. Es necesario incluir los corchetes de inicio y fin. Ejemplo "[^abc]" coincide con la "p" de "plain".
[a-z] | Representa cualquier carácter que esté comprendido en el rango especificado. Ejemplo "[a-z]" coincide con cualquier carácter alfabético en minúsculas.
[^a-z] | Representa cualquier carácter excepto los comprendidos en el rango especificado. Ejemplo "[^m-z]" coincide con cualquier carácter que no esté en el rango "m" hasta la "z".
\ | Marca el siguiente carácter como un carácter especial, como un carácter de escape o un literal para distinguirlo de un operador. Ejemplo "\\" coincide con "\", y "\(" coincide con "(".
(pattern) | Representa un grupo de caracteres como un patrón. Es necesario incluir los paréntesis de inicio y fin. Ejemplo "(tress)" coincide con "mattress" pero no con "mattres". Para representar un paréntesis, utilizar "\(" or "\)".
x|y | Representa a x o y. Ejemplo "z|wood" coincide con "z" y con "wood". La expresión "(z|w)ood" coincide con "zood" o con "wood".
{m} | Representa el carácter anterior repetido exactamente m veces, siendo m un número no negativo. Es necesario incluir las llaves de inicio y fin. Ejemplo "o{2}" no coincide con la "o" de "Bob" pero coincide con las dos primeras 'o' de "food" y de "foooood".
{m,} | Representa el carácter anterior repetido al menos m veces, siendo m un número no negativo. Ejemplo "o{2,}" no coincide con la "o" de "Bob" pero coincide con todas las 'o' de "fooooood". Adicionalmente, la expresión "o{1,}" es equivalente a "o+", y "o{0,}" es equivalente a "o*".
{m,n} | Representa al carácter anterior repetido como mínimo m veces y como máximo n veces, siendo tanto m como n números no negativos. Ejemplo "o{1,3}" coincide con las tres primeras 'o' de "foooooood". Adicionalmente, la expresión "o{0,1}" es equivalente a "o?".
Cualquier otro | Se representa a si mismo.

Las siguientes reglas se aplican cuando se utilizan operadores de expresiones regulares:

  • Se podrán encerrar las expresiones regulares entre comillas dobles (" "). Será necesario hacerlo si la expresión contiene un espacio o un paréntesis de cierre ()).

Las Expresiones Regulares (Foundation Class) proporciona acceso a rutinas para utilizar expresiones regulares en las aplicaciones. Para mas información, ver Expresiones regulares (Foundation Class).

Visual FoxPro proporciona un ejemplo de expresiones regulares que se puede utilizar para ensayar el uso de expresiones regulares como método de búsqueda de texto, y utilizarlo en aplicaciones. Para más información, ver Buscar texto utilizando Expresiones regulares.

Remitirse a MSDN para detalles generales sobre expresiones regulares y la comparación por patrones.

Vea también

Referencia general | Buscar Referencia (Cuadro de Diálogo) | Buscar (Cuadro de Diálogo)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Palabras reservadas

Las palabras reservadas en Microsoft Visual FoxPro incluyen funciones, variables del sistema, propiedades, eventos, métodos, comandos, constantes de menú y cláusulas. Al programar evite utilizar palabras reservadas como nombres (por ejemplo, nombres de ventanas, tablas y campos). Si utiliza palabras reservadas como un nombre, podría generar un error de sintaxis.

Las siguientes palabras son palabras reservadas de Visual FoxPro.

-

!

!=

#

#DEFINE

#ELIF

#ELSE

#ENDIF

#IF

#ITSEXPRESSION

#READCLAUSES

#REGION

#SECTION

#UNDEF

#WNAME

$

%

(

)

*

**

,

.

.AND.

.F.

.N.

.NOT.

.NULL.

.OR.

.T.

.Y.

/

/R

:

::

;

?

??

???

@

[

]

^

_ALIGNMENT

_ASCIICOLS

_ASCIIROWS

_ASSIST

_BEAUTIFY

_BOX

_BROWSER

_BUILDER

_CALCMEM

_CALCVALUE

_CLIPTEXT

_CODESENSE

_CONVERTER

_COVERAGE

_CUROBJ

_DATETIMEFORMAT

_DBLCLICK

_DIARYDATE

_DOS

_FONTCLASS

_FOXBASECLASS

_FOXCODE

_FOXDOC

_FOXDRAGDROP

_FOXDROPTARGET

_FOXREF

_FOXGRAPH

_FOXTASK

_GALLERY

_GENGRAPH

_GENHTML

_GENMENU

_GENPD

_GENSCRN

_GENXTAB

_GETEXPR

_HELPWEBDEVONLY

_HELPWEBDIRECTORY

_HELPWEBFILLER1

_HELPWEBFILLER2

_HELPWEBMSDNONLINE

_HELPWEBMSFTHOMEPAGE

_HELPWEBSEARCH

_HELPWEBTUTORIAL

_HELPWEBVFPFAQ

_HELPWEBVFPFREESTUFF

_HELPWEBVFPHOMEPAGE

_HELPWEBVFPONLINESUPPORT

_HELPWEBVFPSENDFEEDBACK

_HELPWEBVSPRODNEWS

_INCLUDE

_INCSEEK

_INDENT

_LMARGIN

_MAC

_MBR_APPND

_MBR_CPART

_MBR_DELET

_MBR_FONT

_MBR_GOTO

_MBR_GRID

_MBR_LINK

_MBR_MODE

_MBR_MVFLD

_MBR_MVPRT

_MBR_SEEK

_MBR_SP100

_MBR_SP200

_MBR_SZFLD

_MBROWSE

_MDA_APPND

_MDA_AVG

_MDA_BROW

_MDA_CALC

_MDA_COPY

_MDA_COUNT

_MDA_LABEL

_MDA_PACK

_MDA_REPRT

_MDA_RINDX

_MDA_SETUP

_MDA_SORT

_MDA_SP100

_MDA_SP200

_MDA_SP300

_MDA_SUM

_MDA_TOTAL

_MDATA

_MDIARY

_MED_BEAUT

_MED_BLDEX

_MED_CLEAR

_MED_COPY

_MED_CUT

_MED_CVTST

_MED_EXBLK

_MED_FIND

_MED_FINDA

_MED_GOTO

_MED_INSOB

_MED_LINK

_MED_OBJ

_MED_PASTE

_MED_PREF

_MED_PSTLK

_MED_REDO

_MED_REPL

_MED_REPLA

_MED_SLCTA

_MED_SP100

_MED_SP200

_MED_SP300

_MED_SP400

_MED_SP500

_MED_SP600

_MED_UNDO

_MEDIT

_MFI_CLALL

_MFI_CLOSE

_MFI_EXPORT

_MFI_IMPORT

_MFI_NEW

_MFI_OPEN

_MFI_PGSET

_MFI_PREVU

_MFI_PRINT

_MFI_PRINTONECOPY

_MFI_QUIT

_MFI_REVRT

_MFI_SAVAS

_MFI_SAVE

_MFI_SAVEASHTML

_MFI_SEND

_MFI_SETUP

_MFI_SP100

_MFI_SP200

_MFI_SP300

_MFI_SP400

_MFI_SYSPRINT

_MFILE

_MFILER

_MFIRST

_MLABEL

_MLAST

_MLINE

_MMACRO

_MMB_DELET

_MMB_GENER

_MMB_GOPTS

_MMB_INSBR

_MMB_INSRT

_MMB_MOPTS

_MMB_PREVU

_MMB_QUICK

_MMB_SP100

_MMB_SP200

_MMB_SP300

_MMBLDR

_MOUSEEVENTS

_MOUSEEVENTSNODBL

_MPR_BEAUT

_MPR_CANCL

_MPR_COMPL

_MPR_DO

_MPR_DOCUM

_MPR_FORMWZ

_MPR_GENER

_MPR_GRAPH

_MPR_RESUM

_MPR_SP100

_MPR_SP200

_MPR_SP300

_MPR_SUSPEND

_MPROG

_MPROJ

_MRC_APPND

_MRC_CHNGE

_MRC_CONT

_MRC_DELET

_MRC_GOTO

_MRC_LOCAT

_MRC_RECAL

_MRC_REPL

_MRC_SEEK

_MRC_SP100

_MRC_SP200

_MRECORD

_MREPORT

_MRQBE

_MSCREEN

_MSM_DATA

_MSM_EDIT

_MSM_FILE

_MSM_FORMAT

_MSM_PROG

_MSM_RECRD

_MSM_SYSTM

_MSM_TEXT

_MSM_TOOLS

_MSM_VIEW

_MSM_WINDO

_MST_ABOUT

_MST_ASCII

_MST_CALCU

_MST_CAPTR

_MST_DBASE

_MST_DIARY

_MST_DOCUM

_MST_FILER

_MST_HELP

_MST_HPHOW

_MST_HPSCH

_MST_MACRO

_MST_MSDNC

_MST_MSDNI

_MST_MSDNS

_MST_OFFICE

_MST_PUZZL

_MST_SAMP

_MST_SP100

_MST_SP200

_MST_SP300

_MST_SPECL

_MST_TECHS

_MSYSMENU

_MSYSTEM

_MTABLE

_MTB_APPND

_MTB_CPART

_MTB_DELET

_MTB_DELRC

_MTB_GOTO

_MTB_LINK

_MTB_MVFLD

_MTB_MVPRT

_MTB_PROPS

_MTB_RECAL

_MTB_SP100

_MTB_SP200

_MTB_SP300

_MTB_SP400

_MTB_SZFLD

_MTI_CALLSTACK

_MTI_DBGOUT

_MTI_LOCALS

_MTI_RUNACTIVEDOC

_MTI_TRACE

_MTI_WATCH

_MTL_BROWSER

_MTL_COVERAGE

_MTL_DEBUGGER

_MTL_GALLERY

_MTL_MACRO

_MTL_OPTNS

_MTL_SP100

_MTL_SP200

_MTL_SP300

_MTL_SP400

_MTL_SPELL

_MTL_WZRDS

_MTOOLS

_MVI_TOOLB

_MVIEW

_MWI_ARRAN

_MWI_CLEAR

_MWI_CMD

_MWI_COLOR

_MWI_DEBUG

_MWI_HIDE

_MWI_HIDEA

_MWI_MIN

_MWI_MOVE

_MWI_ROTAT

_MWI_SHOWA

_MWI_SIZE

_MWI_SP100

_MWI_SP200

_MWI_TOOLB

_MWI_TRACE

_MWI_VIEW

_MWI_ZOOM

_MWINDOW

_MWIZARDS

_MWZ_ALL

_MWZ_APPLIC

_MWZ_APPLICATION

_MWZ_DATABASE

_MWZ_FORM

_MWZ_FOXDOC

_MWZ_IMPORT

_MWZ_LABEL

_MWZ_MAIL

_MWZ_PIVOT

_MWZ_QUERY

_MWZ_REPRT

_MWZ_SETUP

_MWZ_TABLE

_MWZ_UPSIZING

_MWZ_WEBPUBLISHING

_NETWARE

_OBJECTBROWSER

_OLEBASECONTROL

_OLEDRAGDROP

_ORACLE

_PADVANCE

_PAGENO

_PAGETOTAL

_PBPAGE

_PCOLNO

_PCOPIES

_PDPARMS

_PDRIVER

_PDSETUP

_PECODE

_PEJECT

_PEPAGE

_PFORM

_PLENGTH

_PLINENO

_PLOFFSET

_PPITCH

_PQUALITY

_PRETEXT

_PSCODE

_PSPACING

_PWAIT

_RECTCLASS

_RMARGIN

_RUNACTIVEDOC

_SAMPLES

_SCCTEXT

_SCREEN

_SHELL

_SPELLCHK

_SQLSERVER

_STARTUP

_TABS

_TALLY

_TASKLIST

_TEXT

_THROTTLE

_TRANSPORT

_TRIGGERLEVEL

_UNIX

_VFP

_VIEWPORT

_VSBUILD

_WEBDEVONLY

_WEBMENU

_WEBMSFTHOMEPAGE

_WEBVFPHOMEPAGE

_WEBVFPONLINESUPPORT

_WINDOWS

_WIZARD

_WRAP

+

<

<??>

<=

<>

=

=

==

=>

>

->

>=

A

A

ABS

ACCELERATE

ACCEPT

ACCESS

ACLASS

ACOPY

ACOS

ACTIVATE

ACTIVATECELL

ACTIVECOLUMN

ACTIVECONTROL

ACTIVEDOC

ACTIVEFORM

ACTIVEOBJECTID

ACTIVEPAGE

ACTIVEROW

ADATABASES

ADBOBJECTS

ADD

ADDBS

ADDCOLUMN

ADDITEM

ADDITIVE

ADDLISTITEM

ADDOBJECT

ADDPROPERTY

ADDRELATIONTOENV

ADDTABLETOENV

ADDTABLESCHEMA

ADOCKSTATE

ADEL

ADIR

ADLLS

ADMIN

ADOCKSTATE

AELEMENT

AERROR

AEVENTS

AFIELDS

AFONT

AFTER

AFTERBUILD

AFTERCLOSETABLES

AFTERCURSORATTACH

AFTERCURSORCLOSE

AFTERCURSORDETACH

AFTERCURSORFILL

AFTERCURSORREFRESH

AFTERCURSORUPDATE

AFTERDELETE

AFTERDOCK

AFTERINSERT

AFTERROWCOLCHANGE

AFTERUPDATE

AGAIN

AGETCLASS

AGETFILEVERSION

AINDENT

AINS

AINSTANCE

ALANGUAGE

ALEN

ALIAS

ALIGN

ALIGNMENT

ALIGNRIGHT

ALINES

ALL

ALLOWADDNEW

ALLOWAUTOCOLUMNFIT

ALLOWCELLSELECTION

ALLOWDELETE

ALLOWEXTERNAL

ALLOWHEADERSIZING

ALLOWINSERT

ALLOWOUTPUT

ALLOWRESIZE

ALLOWROWSIZING

ALLOWTABS

ALLOWTABS+

ALLOWUPDATE

ALLTRIM

ALT

ALTER

ALTERNATE

ALWAYSONBOTTOM

ALWAYSONTOP

AMEMBERS

AMOUSEOBJ

AND

ANETRESOURCES

ANSI

ANSI

ANSITOOEM

ANY

APLABOUT

APP

APPEND

APPLICATION

APPLYDIFFGRAM

APRINTERS

APROCINFO

ARRAY

AS

ASC

ASCAN

ASCENDING

ASCII

ASELOBJ

ASESSIONS

ASIN

ASORT

ASSERT

ASSERTS

ASSIST

ASTACKINFO

ASUBSCRIPT

ASYNCHRONOUS

AT

AT_C

ATAGINFO

ATAN

ATC

ATCC

ATCLINE

ATGETCOLORS

ATLINE

ATLISTCOLORS

ATN2

ATTACH

ATTRIBUTES

AUSED

AUTOACTIVATE

AUTOCENTER

AUTOCLOSETABLES

AUTOFIT

AUTOFORM

AUTOINC

AUTOINCERROR

AUTOMATIC

AUTOOPEN

AUTOOPENTABLES

AUTORELEASE

AUTOREPORT

AUTOSAVE

AUTOSIZE

AUTOVERBMENU

AUTOYIELD

AVAILNUM

AVCXCLASSES

AVERAGE

AVG

B

B

BACKCOLOR

BACKSTYLE

BACKSTYLE

BAR

BARCOUNT

BARPROMPT

BASECLASS

BATCHMODE

BATCHUPDATECOUNT

BEFORE

BEFOREBUILD

BEFORECURSORATTACH

BEFORECURSORCLOSE

BEFORECURSORDETACH

BEFORECURSORFILL

BEFORECURSORREFRESH

BEFORECURSORUPDATE

BEFOREDELETE

BEFOREDOCK

BEFOREINSERT

BEFOREOPENTABLES

BEFOREROWCOLCHANGE

BEFOREUPDATE

BEGIN

BELL

BELLSOUND

BETWEEN

BINDCONTROLS

BINDEVENT

BINTOC

BITAND

BITCLEAR

BITLSHIFT

BITMAP

BITNOT

BITOR

BITRSHIFT

BITSET

BITTEST

BITXOR

BLANK

BLINK

BLOCKSIZE

BOF

BORDER

BORDERCOLOR

BORDERSTYLE

BORDERWIDTH

BOTTOM

BOUND

BOUNDCOLUMN

BOUNDTO

BOX

BROWSE

BROWSEALIGNMENT

BROWSECELLMARG

BROWSEDESTWIDTH

BROWSEIMECONTROL

BROWSEREFRESH

BRSTATUS

BUCKET

BUFFERING

BUFFERMODE

BUFFERMODEOVERRIDE

BUFFERS

BUILD

BUILDERLOCK

BUTTONCOUNT

BUTTONINDEX

BUTTONS

BUTTONSBOF

BY

C

C

CALCULATE

CALL

CANACCELERATE

CANCEL

CANDIDATE

CANGETFOCUS

CANLOSEFOCUS

CAPSLOCK

CAPTION

CARRY

CASCADE

CASE

CATALOG

CATCH

CD

CDOW

CDX

CEILING

CENTER

CENTERED

CENTRAL

CENTURY

CGA

CHANGE

CHANGESTOCURSOR

CHAR

CHARACTER

CHDIR

CHECK

CHECKBOX

CHILDALIAS

CHILDORDER

CHILDORDER

CHILDTABLE

CHR

CHRSAW

CHRTRAN

CHRTRANC

CIRCLE

CLASS

CLASS

CLASSLIB

CLASSLIBRARY

CLEAR

CLEARDATA

CLICK

CLIPCONTROLS

CLIPRECT

CLOCK

CLONEOBJECT

CLOSABLE

CLOSE

CLOSEEDITOR

CLOSETABLES

CLS

CMONTH

CNT

CNTBAR

CNTPAD

CODEPAGE

COL

COLLATE

COLLECTION

COLOR

COLORSCHEME

COLORSOURCE

COLUMN

COLUMNCOUNT

COLUMNHEADERS

COLUMNLINES

COLUMNORDER

COLUMNS

COLUMNWIDTHS

COM1

COM2

COMARRAY

COMBOBOX

COMCLASSINFO

COMMAND

COMMANDBUTTON

COMMANDGROUP

COMMANDTARGETEXEC

COMMANDTARGETQUERY

COMMENT

COMPACT

COMPAREMEMO

COMPATIBLE

COMPILE

COMPLETED

COMPOBJ

COMPRESS

COMPUTE

COMRETURNERROR

CONCAT

CONFIRM

CONNECTBUSY

CONNECTHANDLE

CONNECTION

CONNECTIONS

CONNECTNAME

CONNECTSTRING

CONNECTTIMEOUT

CONNSTRING

CONSOLE

CONTAINER

CONTAINERRELEASE

CONTAINERRELEASETYPE

CONTINUE

CONTINUOUSSCROLL

CONTROL

CONTROLBOX

CONTROLCOUNT

CONTROLINDEX

CONTROLS

CONTROLSOURCE

CONVERSIONFUNC

COPIES

COPY

COS

COT

COUNT

COVERAGE

CPCOMPILE

CPCONVERT

CPCURRENT

CPDBF

CPDIALOG

CPNOTRANS

CREATE

CREATEBINARY

CREATEOBJECT

CREATEOBJECTEX

CREATEOFFLINE

CRSBUFFERING

CRSFETCHMEMO

CRSFETCHSIZE

CRSMAXROWS

CRSMETHODUSED

CRSNUMBATCH

CRSSHARECONNECTION

CRSUSEMEMOSIZE

CRSWHERECLAUSE

CSV

CTOBIN

CTOBIN

CTOD

CTOT

CURDATE

CURDIR

CURRENCY

CURRENTCONTROL

CURRENTX

CURRENTY

CURRENTY

CURRLEFT

CURRSYMBOL

CURSOR

CURSORADAPTER

CURSORATTACH

CURSORDETACH

CURSORFILL

CURSORGETPROP

CURSORREFRESH

CURSORSCHEMA

CURSORSETPROP

CURSORSOURCE

CURSORSTATUS

CURSORTORS

CURSORTOXML

CURTIME

CURVAL

CURVATURE

CUSTOM

CYCLE

D

D

DATABASE

DATABASES

DATAENVIRONMENT

DATAOBJECT

DATASESSION

DATASESSIONID

DATASOURCE

DATASOURCEOBJ

DATASOURCETYPE

DATATOCLIP

DATATYPE

DATE

DATEFORMAT

DATEMARK

DATETIME

DAY

DAYNAME

DAYOFMONTH

DAYOFWEEK

DAYOFYEAR

DB_BUFLOCKROW

DB_BUFLOCKTABLE

DB_BUFOFF

DB_BUFOPTROW

DB_BUFOPTTABLE

DB_COMPLETTE

DB_DELETEINSERT

DB_KEYANDMODIFIED

DB_KEYANDTIMESTAMP

DB_KEYANDUPDATABLE

DB_LOCALSQL

DB_NOPROMPT

DB_PROMPT

DB_REMOTESQL

DB_TRANSAUTO

DB_TRANSMANUAL

DB_TRANSNONE

DB_UPDATE

DB4

DB4

DBALIAS

DBC

DBC_Activate

DBC_AfterAddRelation

DBC_AfterAddTable

DBC_AfterAppendProc

DBC_AfterCloseTable

DBC_AfterCopyProc

DBC_AfterCreateConnection

DBC_AfterCreateOffline

DBC_AfterCreateTable

DBC_AfterCreateView

DBC_AfterDBGetProp

DBC_AfterDBSetProp

DBC_AfterDeleteConnection

DBC_AfterDropOffline

DBC_AfterDropRelation

DBC_AfterDropTable

DBC_AfterDropView

DBC_AfterModifyConnection

DBC_AfterModifyProc

DBC_AfterModifyTable

DBC_AfterModifyView

DBC_AfterOpenTable

DBC_AfterRemoveTable

DBC_AfterRenameConnection

DBC_AfterRenameTable

DBC_AfterRenameView

DBC_AfterValidateData

DBC_BeforeAddRelation

DBC_BeforeAddTable

DBC_BeforeAppendProc

DBC_BeforeCloseTable

DBC_BeforeCopyProc

DBC_BeforeCreateConnection

DBC_BeforeCreateOffline

DBC_BeforeCreateTable

DBC_BeforeCreateView

DBC_BeforeDBGetProp

DBC_BeforeDBSetProp

DBC_BeforeDeleteConnection

DBC_BeforeDropOffline

DBC_BeforeDropRelation

DBC_BeforeDropTable

DBC_BeforeDropView

DBC_BeforeModifyConnection

DBC_BeforeModifyProc

DBC_BeforeModifyTable

DBC_BeforeModifyView

DBC_BeforeOpenTable

DBC_BeforeRemoveTable

DBC_BeforeRenameConnection

DBC_BeforeRenameTable

DBC_BeforeRenameView

DBC_BeforeValidateData

DBC_CloseData

DBC_Deactivate

DBC_ModifyData

DBC_OpenData

DBC_PackData

DBF

DBFDBLCLICK

DBGETPROP

DBLCLICK

DBMEMO3

DBSETPROP

DBTRAP

DBUSED

DDEABORTTRANS

DDEADVISE

DDEENABLED

DDEEXECUTE

DDEINITIATE

DDELASTERROR

DDEPOKE

DDEREQUEST

DDESETOPTION

DDESETSERVICE

DDESETTOPIC

DDETERMINATE

DEACTIVATE

DEACTIVATE

DEBUG

DEBUGGER

DEBUGOUT

DECIMALS

DECLARE

DECLASS

DECLASSLIBRARY

DEFAULT

DEFAULTEXT

DEFAULTFILEPATH

DEFAULTSOURCE

DEFAULTVALUE

DEFBUTTON

DEFBUTTONORIG

DEFHEIGHT

DEFINE

DEFINEWINDOWS

DEFLEFT

DEFOLELCID

DEFTOP

DEFWIDTH

DEGREES

DELAYBIND

DELETE

DELETECMD

DELETECMDDATASOURCE

DELETECMDDATASOURCETYPE

DELETECOLUMN

DELETED

DELETEMARK

DELETETABLES

DELETETRIGGER

DELIMITED

DELIMITERS

DESC

DESCENDING

DESCRIPTION

DESIGN

DESKTOP

DESTROY

DETAILS

DEVELOPMENT

DEVICE

DIF

DIFFERENCE

DIMENSION

DIR

DIRECTORY

DISABLED

DISABLEDBACKCOLOR

DISABLEDBYEOF

DISABLEDFORECOLOR

DISABLEDITEMBACKCOLOR

DISABLEDITEMFORECOLOR

DISABLEDPICTURE

DISABLEENCODE

DISCONNECTED

DISKSPACE

DISPLAY

DISPLAYCOUNT

DISPLAYPATH

DISPLAYVALUE

DISPLAYVALUEDIRTY

DISPLOGIN

DISPPAGEHEIGHT

DISPPAGEWIDTH

DISPWARNINGS

DISTINCT

DLL

DLLS

DMY

DO

DOC

DOCK

DOCKED

DOCKPOSITION

DOCMD

DOCREATE

DOCUMENTFILE

DODEFAULT

DOEVENTS

DOHISTORY

DOS

DOSCROLL

DOSMEM

DOUBLE

DOVERB

DOW

DOWN

DOWNCLICK

DOWNPICTURE

DRAG

DRAGDROP

DRAGICON

DRAGMODE

DRAGOVER

DRAGSTATE

DRAW

DRAW

DRAWMODE

DRAWSTYLE

DRAWWIDTH

DRIVER

DRIVETYPE

DROP

DROPDOWN

DROPOFFLINE

DTOC

DTOR

DTOS

DTOT

DUPLEX

DYNAMICALIGNMENT

DYNAMICBACKCOLOR

DYNAMICCURRENTCONTROL

DYNAMICFONTBOLD

DYNAMICFONTITALIC

DYNAMICFONTNAME

DYNAMICFONTOUTLINE

DYNAMICFONTSHADOW

DYNAMICFONTSIZE

DYNAMICFONTSTRIKETHRU

DYNAMICFONTUNDERLINE

DYNAMICFORECOLOR

DYNAMICINPUTMASK

E

E

EACH

ECHO

EDIT

EDITBOX

EDITFLAGS

EDITOROPTIONS

EDITSOURCE

EDITWORK

EGA25

EGA43

EJECT

ELIF

ELSE

EMPTY

EMS

EMS64

ENABLED

ENABLEDBYREADLOCK

ENABLEHYPERLINKS

ENCRYPT

ENCRYPTION

FIN

ENDCASE

ENDDEFINE

ENDDO

ENDFOR

ENDFUNC

ENDIF

ENDPRINTJOB

ENDPROC

ENDSCAN

ENDTEXT

ENDTRY

ENDWITH

ENGINEBEHAVIOR

ENTERFOCUS

ENVIRONMENT

ENVLEVEL

EOF

ERASE

ERASEPAGE

ERROR

ERRORMESSAGE

ERRORNO

ESCAPE

EVALUATE

EVENTHANDLER

EVENTLIST

EVENTS

EVENTTRACKING

EVL

EXACT

EXCEPT

EXCEPTION

EXCLUSIVE

EXE

EXECSCRIPT

EXISTS

EXIT

EXITFOCUS

EXP

EXPORT

EXPRESSION

EXTENDED

EXTERNAL

F

F

F11F12

FCHSIZE

FCLOSE

FCOUNT

FCREATE

FDOW

FEOF

FERROR

FETCH

FETCHMEMO

FETCHSIZE

FFLUSH

FGETS

FIELD

FIELDS

FIELDSF

FILE

FILER

FILES

FILETOSTR

FILL

FILLCOLOR

FILLSTYLE

FILTER

FINALLY

FIND

FIRSTELEMENT

FIXED

FKLABEL

FKMAX

FLAGS

FLDCOUNT

FLDLIST

FLOAT

FLOCK

FLOOR

FLUSH

FOLDCONST

FONT

FONTBOLD

FONTCHARSET

FONTCLASS

FONTCONDENSE

FONTEXTEND

FONTITALIC

FONTMETRIC

FONTMETRIC

FONTNAME

FONTOUTLINE

FONTSHADOW

FONTSIZE

FONTSTRIKETHRU

FONTUNDERLINE

FOOTER

FOPEN

FOR

FORCE

FORCECLOSETAG

FORCEEXT

FORCEFOCUS

FORCEPATH

FORECOLOR

FOREIGN

FORM

FORMAT

FORMATCHANGE

FORMATTEDOUTPUT

FORMCOUNT

FORMINDEX

FORMPAGECOUNT

FORMPAGEINDEX

FORMS

FORMSCLASS

FORMSET

FORMSETCLASS

FORMSETLIB

FORMSLIB

FOUND

FOX2X

FOXCODE

FOXDOC

FOXFONT

FOXGEN

FOXGRAPH

FOXPLUS

FOXPRO

FOXTASK

FOXVIEW

FPUTS

FRACTIONDIGITS

FREAD

FREE

FREEZE

FRENCH

FROM

FSEEK

FSIZE

FTIME

FULL

FULLNAME

FULLPATH

FUNCTION

FV

FW2

FWEEK

FWRITE

G

G

GATHER

GENERAL

GERMAN

GET

GETBAR

GETCOLOR

GETCP

GETCURSORADAPTER

GETDATA

GETDIR

GETENV

GETEXPR

GETFILE

GETFLDSTATE

GETFONT

GETFORMAT

GETHOST

GETINTERFACE

GETKEY

GETNEXTMODIFIED

GETOBJECT

GETPAD

GETPEM

GETPICT

GETPRINTER

GETS

GETWORDCOUNT

GETWORDNUM

GLOBAL

GO

GOBACK

GOFIRST

GOFORWARD

GOLAST

GOMONTH

GOTFOCUS

GOTO

GRAPH

GRID

GRIDHITTEST

GRIDHORZ

GRIDLINECOLOR

GRIDLINES

GRIDLINEWIDTH

GRIDSHOW

GRIDSHOWPOS

GRIDSNAP

GRIDVERT

GROUP

GROW

H

H

HALFHEIGHT

HALFHEIGHTCAPTION

HASCLIP

HAVING

HEADER

HEADERCLASS

HEADERCLASSLIBRARY

HEADERGAP

HEADERHEIGHT

HEADING

HEADINGS

HEIGHT

HELP

HELPCONTEXTID

HELPFILTER

HELPON

HELPTO

HIDDEN

HIDE

HIDEAPPOBJ

HIDEDOC

HIDESELECTION

HIGHLIGHT

HIGHLIGHTBACKCOLOR

HIGHLIGHTFORECOLOR

HIGHLIGHTSTYLE

HIGHLIGHTROW

HISTORY

HMEMORY

INICIO

HOSTNAME

HOTKEY

HOUR

HOURS

HPROJ

HSCROLLSMALLCHANGE

HWND

HYPERLINK

I

I

IBLOCK

ICON

Id.

IDHISTORY

IDLETIMEOUT

IDXCOLLATE

IF

IFDEF

IFNDEF

IGNOREINSERT

IIF

IMAGE

IMEMODE

IMESTATUS

IMPORT

IN

INCLUDE

INCREMENT

INCREMENTALSEARCH

INDBC

INDEX

INDEXES

INDEXSEEK

INDEXTOITEMID

INFORMATION

INIT

INITIALSELECTEDALIAS

INKEY

INLIST

INNER

INPUT

INPUTMASK

INRESIZE

INSERT

INSERTCMD

INSERTCMDDATASOURCE

INSERTCMDDATASOURCETYPE

INSERTTRIGGER

INSMODE

INSTRUCT

INT

INTEGER

INTEGRALHEIGHT

INTENSITY

INTERACTIVECHANGE

INTERSECT

INTERVAL

INTO

IS

ISALPHA

ISATTRIBUTE

ISBASE64

ISBINARY

ISBLANK

ISCOLOR

ISDIFFGRAM

ISDIGIT

ISEXCLUSIVE

ISFLOCKED

ISHOSTED

ISLEADBYTE

ISLOADED

ISLOWER

ISMOUSE

ISNULL

ISOMETRIC

ISREADONLY

ISRLOCKED

ISUPPER

ISXMLDOMELEMENT

ITALIAN

ITEM

ITEMBACKCOLOR

ITEMDATA

ITEMFORECOLOR

ITEMIDDATA

ITEMIDTOINDEX

ITEMTIPS

J

J

JAPAN

JOIN

JUSTDRIVE

JUSTEXT

JUSTFNAME

JUSTPATH

JUSTREADLOCKED

JUSTSTEM

K

KEY

KEYBOARD

KEYBOARDHIGHVALUE

KEYBOARDLOWVALUE

KEYCOLUMNS

KEYCOMP

KEYFIELD

KEYFIELDLIST

KEYMATCH

KEYPRESS

KEYPREVIEW

KEYSET

KEYSORT

L

LABEL

LANGUAGEOPTIONS

LAST

LASTKEY

LASTPROJECT

LCASE

LDCHECK

LEDIT

LEFT

LEFTC

LEFTCOLUMN

LEN

LENC

LENGTH

LEVEL

LIBRARY

LIKE

LIKEC

LINE

LINECONTENTS

LINENO

LINESLANT

LINKED

LINKMASTER

LIST

LISTBOX

LISTCOUNT

LISTINDEX

LISTITEM

LISTITEMID

LOAD

LOADPICTURE

LOADXML

LOCAL

LOCFILE

LOCK

LOCKCOLUMNS

LOCKCOLUMNSLEFT

LOCKDATASOURCE

LOCKSCREEN

LOG

LOG10

LOGERRORS

LOGOUT

LONG

LOOKUP

LOOP

LOSTFOCUS

LOWER

LPARAMETER

LPARAMETERS

LPARTITION

LTRIM

LTRJUSTIFY

LUPDATE

M

MAC

MACDESKTOP

MACHELP

MACKEY

MACROS

MACSCREEN

MAIL

MAP19_4TOCURRENCY

MARGIN

MARK

MASTER

MAX

MAXBUTTON

MAXHEIGHT

MAXLEFT

MAXLENGTH

MAXMEM

MAXRECORDS

MAXTOP

MAXWIDTH

MBLOCK

MCOL

MD

MDI

MDIFORM

MDOWN

MDX

MDY

MEMBERCLASS

MEMBERCLASSLIBRARY

MEMLIMIT

MEMLINES

MEMO

MEMORY

MEMOS

MEMOWIDTH

MEMOWINDOW

MEMVAR

MENU

MENUS

MESSAGE

MESSAGEBOX

MESSAGES

METHOD

MIDDLE

MIDDLECLICK

MIN

MINBUTTON

MINHEIGHT

MINIMIZE

MINUS

MINUTE

MINWIDTH

MKDIR

MLINE

MOD

MODAL

MODIFY

MODULE

MONO

MONO43

MONO43

MONTH

MONTHNAME

MOUSE

MOUSEDOWN

MOUSEICON

MOUSEMOVE

MOUSEPOINTER

MOUSEUP

MOUSEWHEEL

MOVABLE

MOVE

MOVED

MOVEITEM

MOVERBARS

MOVERS

MRKBAR

MRKPAD

MROW

MTB_SP100

MTON

MULTILOCKS

MULTISELECT

MVARSIZ

MVCOUNT

MWINDOW

N

NAME

NAPTIME

NATIVE

NAVIGATETO

NDX

NEAR

NEGOTIATE

NETWORK

NEWINDEX

NEWITEMID

NEWOBJECT

SIGUIENTE

NEXTVALUE

NOALIAS

NOAPPEND

NOCLEAR

NOCLOSE

NOCONSOLE

NOCPTRANS

NODATA

NODATAONLOAD

NODEBUG

NODEFAULT

NODEFINE

NODELETE

NODIALOG

NODUP

NOEDIT

NOEJECT

NOENVIRONMENT

NOFILTER

NOFLOAT

NOFOLLOW

NOGROW

NOINIT

NOLGRID

NOLINK

NOLOCK

NOLOG

NOMARGIN

NOMDI

NOMENU

NOMINIMIZE

NOMODIFY

NOMOUSE

NONE

NOOPTIMIZE

NOORGANIZE

NOOVERWRITE

NOPROJECTHOOK

NOPROMPT

NOREAD

NOREFRESH

NOREQUERY

NORGRID

NORM

NORMAL

NORMALIZE

NOSAVE

NOSHADOW

NOSHOW

NOSPACE

NOT

NOTAB

NOTE

NOTIFY

NOTIFYCONTAINER

NOUPDATE

NOVALIDATE

NOVERIFY

NOW

NOWAIT

NOWINDOW

NOWRAP

NOZOOM

NPV

NTOM

NULL

NULLDISPLAY

NULLSTRING

NUMBER

NUMBEROFELEMENTS

NUMLOCK

NVL

O

OBJECTS

OBJNUM

OBJREF

OBJTOCLIENT

OBJVAR

OCCURS

ODBCHDBC

ODBCHSTMT

ODOMETER

OEMTOANSI

OF

OFF

OLDVAL

OLEBASECONTROL

OLEBOUNDCONTROL

OLECLASS

OLECLASSID

OLECLASSIDISPOUT

OLECOMPLETEDRAG

OLECONTROL

OLECONTROLCONTAINER

OLEDRAG

OLEDRAGDROP

OLEDRAGMODE

OLEDRAGOVER

OLEDRAGPICTURE

OLEDROPEFFECTS

OLEDROPHASDATA

OLEDROPMODE

OLEDROPTEXTINSERTION

OLEGIVEFEEDBACK

OLEIDISPATCHINCOMING

OLEIDISPATCHOUTGOING

OLEIDISPINVALUE

OLEIDISPOUTVALUE

OLELCID

OLEOBJECTS

OLEPUBLIC

OLEREQUESTPENDINGTIMOU

OLESERVERBUSYRAISEERRO

OLESERVERBUSYTIMOUT

OLESETDATA

OLESTARTDRAG

OLETYPEALLOWED

ON

ONETOMANY

ONLINE

ONLY

ONMOVEITEM

ONRESIZE

OPEN

OPENEDITOR

OPENTABLES

OPENVIEWS

OPENWINDOW

OPTIMIZE

OPTIONBUTTON

OPTIONGROUP

OR

ORACLE

ORDER

ORIENTATION

OS

OTHERWISE

OUTER

OUTPUT

OUTSHOW

OVERLAY

OVERWRITE

P

PACK

PACKETSIZE

PAD

PADC

PADL

PADPROMPT

PADR

PAGE

PAGECOUNT

PAGEFRAME

PAGEHEIGHT

PAGEHEIGHT

PAGEORDER

PAGES

PAGEWIDTH

PAINT

PALETTE

PANEL

PANELLINK

PAPERLENGTH

PAPERSIZE

PAPERWIDTH

PARAMETERS

PARENT

PARENTALIAS

PARENTCLASS

PARENTTABLE

PARTITION

PASSWORD

PASSWORDCHAR

PATH

PATTERN

PAUSE

PAYMENT

PCOL

PCOUNT

PDOX

PDSETUP

PEMSTATUS

PEN

PERCENT

PFS

PI

PICTURE

PICTUREPOSITION

PICTURESELECTIONDISPLAY

PIVOT

PIXELS

PLAIN

PLATFORM

PLAY

POINT

POP

POPUPS

POWER

PRECISION

PREFERENCE

PRESERVEWHITESPACE

PRETEXT

PREVIEW

PRIMARY

PRIMARYKEY

PRINT

PRINTER

PRINTFORM

PRINTJOB

PRINTQUALITY

PRINTSTATUS

PRIVATE

PRMBAR

PRMPAD

PROCEDURE

PROCEDURES

PRODUCTION

PROGRAM

PROGRAMMATICCHANGE

PROGWORK

PROJECT

PROJECTCLICK

PROJECTHOOK

PROMPT

PROPER

PROTECTED

PROW

PRTINFO

PSET

PSET

PUBLIC

PUSH

PUTFILE

PV

Q

QPR

QUARTER

QUERY

QUERYADDFILE

QUERYMODIFYFILE

QUERYNEWFILE

QUERYREMOVEFILE

QUERYRUNFILE

QUERYTIMEOUT

QUERYUNLOAD

QUERYUNLOAD

QUIT

R

RADIANS

RAISEEVENT

RAND

RANDOM

RANGE

RANGEHIGH

RANGELOW

RAT

RATC

RATLINE

RD

RDLEVEL

READ

READACTIVATE

READBORDER

READCOLORS

READCYCLE

READDEACTIVATE

READERROR

READEXPRESSION

READFILLER

READKEY

READLOCK

READMETHOD

READMOUSE

READONLY

READSAVE

READSHOW

READSIZE

READTIMEOUT

READVALID

READWHEN

RECALL

RECCOUNT

RECENTLYUSEDFILES

RECNO

RECOMPILE

RECORD

RECORDMARK

RECORDSOURCE

RECORDSOURCETYPE

RECOVER

RECSIZE

RECT

RECTCLASS

RECYCLE

REDIT

REFERENCE

REFERENCES

REFRESH

REINDEX

RELATEDCHILD

RELATEDTABLE

RELATEDTAG

RELATION

RELATIONALEXPR

RELATIVE

RELATIVECOLUMN

RELATIVEROW

RELEASE

RELEASEERASE

RELEASETYPE

RELEASEWINDOWS

RELEASEXML

REMOTE

REMOVE

REMOVEITEM

REMOVELISTITEM

REMOVEOBJECT

REMOVEPROPERTY

RENAME

REPEAT

REPLACE

REPLICATE

REPORT

REPROCESS

REQUERY

REQUESTDATA

REQUIRED

RESET

RESETTODEFAULT

RESHEIGHT

RESIZABLE

RESIZE

RESOURCE

RESOURCEON

RESOURCES

RESOURCETO

RESPECTCURSORCP

REST

RESTORE

RESTRICT

RESUME

RESWIDTH

RETRY

RETURN

REVERTOFFLINE

RGB

RGBSCHEME

RIGHT

RIGHTC

RIGHTCLICK

RIGHTTOLEFT

RLOCK

RMDIR

ROLLBACK

ROLLOVER

ROTATEFLIP

ROUND

ROW

ROWCOLCHANGE

ROWHEIGHT

ROWSET

ROWSOURCE

ROWSOURCETYPE

RPD

RSTOCURSOR

RTLJUSTIFY

RTOD

RTRIM

RULEEXPRESSION

RULETEXT

RUN

RUNSCRIPT

RUNTIME

RVIEW

S

SAFETY

SAME

SAMPLE

SAVE

SAVEAS

SAVEASCLASS

SAVEPICTURE

SAY

SCALE

SCALEMODE

SCALEUNITS

SCAN

SCATTER

SCHEME

SCOLS

SCOREBOARD

SCREEN

SCREENS

SCROLL

SCROLLBARS

SCROLLED

SCROLLSCROLLBARS

SDF

SDIFORM

SEC

SECOND

SECONDS

SECONDS

SEEK

SELECT

SELECTCMD

SELECTED

SELECTEDBACKCOLOR

SELECTEDFORECOLOR

SELECTEDID

SELECTEDITEMBACKCOLOR

SELECTEDITEMFORECOLOR

SELECTION

SELECTONENTRY

SELFEDIT

SELLENGTH

SELSTART

SELTEXT

SENDUPDATES

SEPARATOR

SET

SETALL

SETDATA

SETDEFAULT

SETFLDSTATE

SETFOCUS

SETFORMAT

SETUP

SETVAR

SETVIEWPORT

SHADOWS

SHAPE

SHARECONNECTION

SHARED

SHEET

SHELL

MAYÚS

SHORTCUT

SHOW

SHOWDOC

SHOWINTASKBAR

SHOWOLECONTROLS

SHOWOLEINSERTABLE

SHOWTIPS

SHOWVCXS

SHOWWHATSTHIS

SHOWWINDOW

SHUTDOWN

SIGN

SIN

SINGLE

SIZABLE

SIZE

SIZE<HEIGHT>

SIZE<MAXLENGTH>

SIZE<WIDTH>

SIZEBOX

SKIP

SKIPFORM

SKPBAR

SKPPAD

SOM

SOME

SORT

SORTED

SORTWORK

SOUNDEX

SOURCENAME

SOURCETYPE

SPACE

SPARSE

SPECIALEFFECT

SPINNER

SPINNERHIGHVALUE

SPINNERLOWVALUE

SPLITBAR

SQL

SQLASYNCHRONOUS

SQLBATCHMODE

SQLCANCEL

SQLCOLUMNS

SQLCOMMIT

SQLCONNECT

SQLCONNECTTIMEOUT

SQLDISCONNECT

SQLDISPLOGIN

SQLDISPWARNINGS

SQLEXEC

SQLGETPROP

SQLIDLETIMEOUT

SQLL

SQLMORERESULTS

SQLPREPARE

SQLQUERYTIMEOUT

SQLROLLBACK

SQLSETPROP

SQLSTRINGCONNECT

SQLSTRINGCONNECT

SQLTABLES

SQLTRANSACTIONS

SQLWAITTIME

SQRT

SROWS

STACKLEVEL

STANDALONE

STATUS

STATUSBAR

STATUSBARTEXT

STD

STEP

STICKY

STORE

STR

STRCONV

STRETCH

STRICTDATE

STRICTDATEENTRY

STRING

STRTOFILE

STRTRAN

STRUCTURE

STUFF

STUFFC

STYLE

SUBCLASS

SUBSTR

SUBSTRC

SUBSTRING

SUM

SUMMARY

SUSPENDER

SYLK

SYS

SYSFORMATS

SYSMENUS

SYSMETRIC

SYSTEM

SYSTEMREFCOUNT

T

TAB

TABFIXEDHEIGHT

TABFIXEDWIDTH

TABHIT

TABINDEX

TABLE

TABLEREFRESH

TABLEREVERT

TABLES

TABLEUPDATE

TABLEVALIDATE

TABORDERING

TABORIENTATION

TABS

TABSTOP

TABSTRETCH

TABSTYLE

TAG

TAGCOUNT

TAGNO

TALK

TAN

TARGET

TASKPANE

TEDIT

TERMINATEREAD

TEXT

TEXTBOX

TEXTHEIGHT

TEXTMERGE

TEXTWIDTH

THEMES

THEN

THIS

THISFORM

THISFORMSET

THROW

TIME

TIMEOUT

TIMER

TIMESTAMP

TIMESTAMPDIFF

TITLEBAR

TITLES

TMPFILES

TO

TOCURSOR

TOOLBAR

TOOLBOX

TOOLTIPTEXT

TOP

TOPIC

TOPINDEX

TOPITEMID

TOTAL

TOXML

TRANSACTION

TRANSACTIONS

TRANSFORM

TRAP

TRBETWEEN

TRIGGER

TRIM

TRUNCATE

TRY

TTOC

TTOD

TTOPTION

TXNLEVEL

TXTWIDTH

TYPE

TYPEAHEAD

U

UCASE

UDFPARMS

UIENABLE

UNBINDEVENT

UNDEFINE

UNDOCK

UNICODE

UNION

UNIQUE

UNLOAD

UNLOCK

UNLOCKDATASOURCE

UNPACK

UP

UPCLICK

UPDATABLE

UPDATABLEFIELDLIST

UPDATE

UPDATECMD

UPDATECMDSOURCE

UPDATECMDSOURCETYPE

UPDATED

UPDATEDATASOURCE

UPDATENAME

UPDATENAMELIST

UPDATETRIGGER

UPDATETYPE

UPPER

UPSIZING

USA

USE

USED

USEMEMOSIZE

USERID

USERS

USERVALUE

UTF8ENCODED

V

VAL

VALID

VALIDATE

VALUE

VALUEDIRTY

VALUES

VAR

VARREAD

VARTYPE

VERB

VERSION

VGA25

VGA50

VIEW

VIEWPORTHEIGHT

VIEWPORTLEFT

VIEWPORTTOP

VIEWPORTWIDTH

VIEWS

VISIBLE

VISUALEFFECT

VOLUME

VSCROLLSMALLCHANGE

W

WAIT

WAITTIME

WASACTIVE

WASOPEN

WBORDER

WCHILD

WCOLS

WDOCKABLE

WEEK

WEXIST

WFONT

WHATSTHISBUTTON

WHATSTHISHELP

WHATSTHISHELPID

WHATSTHISMODE

WHEN

WHERE

WHEREWHERETYPE

WHILE

WIDTH

WINDCMD

WINDHELP

WINDMEMO

WINDMENU

WINDMODIFY

WINDOW

WINDOWLIST

WINDOWNTILIST

WINDOWS

WINDOWSTATE

WINDOWTYPE

WINDQUERY

WINDSCREEN

WINDSNIP

WINDSTPROC

WITH

WIZARDPROMPT

WK1

WK3

WKS

WLAST

WLCOL

WLROW

WMAXIMUM

WMINIMUM

WONTOP

WORDWRAP

WORKAREA

WOUTPUT

WP

WPARENT

WR1

WRAP

WRAPCHARINCDATA

WRAPINCDATA

WRAPMEMOINCDATA

WREAD

WRITEEXPRESSION

WRITEMETHOD

WRK

WROWS

WTITLE

WVISIBLE

X

XCMDFILE

XL5

XL8

XLS

XMLADAPTER

XMLCONSTRAINTS

XMLFIELD

XMLNAME

XMLNAMESPACE

XMLPREFIX

XMLSCHEMALOCATION

XMLTABLE

XMLTOCURSOR

XMLTYPE

XMLUPDATEGRAM

XSDFRACTIONDIGITS

XSDMAXLENGTH

XSDTOTALDIGITS

XSDTYPE

Y

YEAR

YRESOLUTION

Z

ZAP

ZOOM

ZOOMBOX

ZORDER

ZORDERSET

Vea también

Referencia del lenguaje ordenada alfabéticamente | Mensajes de error ordenados alfabéticamente


Términos especiales para los archivos de configuración

La siguiente tabla muestra términos especiales que puede utilizar en los archivos de configuración.

Nota También puede utilizar el comando SET, variables del sistema y el valor _STARTUP en archivos de configuración. Para obtener más información, vea Crear un archivo de configuración en Personalizar el entorno de Visual FoxPro.

Términos especiales disponibles en archivos de configuración

Término Descripción
ALLOWEXTERNAL ON | OFF
 Especifica si la configuración es leída de una archivo de configuración externo, especificado por el parámetro -C de la línea de comando (o ubicado en la ruta de acceso) o desde uno interno. El término ALLOWEXTERNAL es ignorada si esta considerado dentro de la aplicación.

El valor predeterminado es ALLOWEXTERNAL = OFF

BITMAP ON | OFF
 Especifica si Visual FoxPro escribe primero actualizaciones de la pantalla o de formularios a un mapa de bits fuera de la pantalla y, a continuación, realiza una transferencia de bloques de bits (bitblt) a la pantalla. BITMAP = OFF puede mejorar el rendimiento cuando se obtiene acceso a las aplicaciones mediante clientes de Windows Terminal Server.

El valor predeterminado es BITMAP = ON.

CODEPAGECODEPAGE
 Especifica un número que identifica el juego de caracteres utilizado en los archivos. Configurando CODEPAGE a AUTO se selecciona la página de código actual del sistema operativo. Puede ver una lista de los posibles valores en Páginas de códigos compatibles con Visual FoxPro.

CODEPAGE = nValue | AUTO

COMMAND
 Especifica un comando de Visual FoxPro que se ejecutará al iniciar Visual FoxPro. La sintaxis es la siguiente, donde cVisualFoxProCommand es el comando que se ejecutará:

COMMAND = cVisualFoxProCommand

EDITWORK path
 Especifica dónde debe colocar el editor de texto sus archivos de trabajo. Como los archivos de trabajo pueden llegar a ser grandes, especifique una ubicación con mucho espacio libre. El valor predeterminado es el directorio de inicio.
ENGINEBEHAVIOR
 Activa la compatibilidad del motor de datos SQL con Visual FoxPro 7.0 o Visual FoxPro 8.0. Para mayor información, vea SET ENGINEBEHAVIOR (Comando).

ENGINEBEHAVIOR 70 | 80

INDEX extension
 Especifica la extensión para los archivos de índice de Visual FoxPro. El valor predeterminado es .idx.
LABEL extension
 Especifica la extensión para los archivos de definición de etiquetas de Visual FoxPro. El valor predeterminado es .lbx.
MVCOUNT
 Establece el número máximo de variables que Visual FoxPro puede mantener. Este valor puede ir de 128 a 65.000; el valor predeterminado es 16,384.
OUTSHOW
 Desactiva la opción de ocultar todas las ventanas que estén delante de la ventana de salida activa mediante la presión de SHIFT+CTRL+ALT. El valor predeterminado es ON.

OUTSHOW = ON | OFF

PROGWORK path
 Especifica dónde mantiene Visual FoxPro el archivo de caché del programa. Para un rendimiento más rápido, sobre todo en entornos multiusuario, especifique un disco rápido (como un disco local o disco RAM, si hay disponible). Asigne como mínimo 256K para la caché (sin embargo, el archivo puede llegar a ser mayor). El valor predeterminado es el directorio de inicio.
REPORT extension
 Especifica la extensión para los archivos de definición de informe de Visual FoxPro. El valor predeterminado es .frx.
RESOURCE path[\file]
 Especifica la ubicación para el archivo de recursos FOXUSER. El argumento file es opcional; si no se incluye, Visual FoxPro busca el archivo Foxuser.dbf. Si el archivo especificado no existe, se crea uno nuevo. El valor predeterminado es el directorio de inicio (para ruta de acceso) y Foxuser.dbf (para archivo).
SCREEN
 Especifica si se muestra la ventana principal de Visual FoxPro cuando se ejecute Visual FoxPro. El valor predeterminado para SCREEN es ON. Configurar SCREEN en OFF es útil cuando la aplicación consiste de uno o mas formularios de nivel superior que son mostrados en el escritorio de Windows, donde no es necesaria la ventana de Visual FoxPro. Para información adicional sobre los formularios de nivel superior, vea Definir el comportamiento de un formulario.

SCREEN = ON | OFF

SORTWORK path
 Especifica dónde deben colocar los archivos de trabajo diferentes comandos, como SORT e INDEX. Como los archivos de trabajo pueden llegar a ser dos veces mayores que las tablas que se están ordenando, especifique una ubicación con mucho espacio libre. Para un rendimiento más rápido, especialmente en un entorno multiusuario, especifique un disco rápido (como un disco local). El valor predeterminado es el directorio de inicio.
TEDIT [/N] editor
 Especifica el nombre del editor de texto que se utiliza cuando modifica archivos de programa con MODIFY COMMAND o MODIFY FILE. Incluya la cláusula opcional /N con TEDIT para especificar un editor de texto de Windows (por ejemplo, Microsoft Word para Windows). El valor predeterminado es el editor de Visual FoxPro.
TITLE title
 Especifica el título que aparece en la barra de título de la ventana principal de Visual FoxPro. El valor predeterminado es "Microsoft Visual FoxPro".
TMPFILES drive:
 Especifica dónde se almacenan los archivos temporales de trabajo de EDITWORK, SORTWORK y PROGWORK si no se ha especificado con ninguna de las otras opciones. Como los archivos de trabajo pueden llegar a ser muy grandes, especifique una ubicación con mucho espacio libre. Para un rendimiento más rápido, especialmente en un entorno multiusuario, especifique un disco rápido (como un disco local). El valor predeterminado es el directorio de inicio.

Para obtener más información acerca de cómo optimizar el rendimiento, vea Optimizar aplicaciones.

Vea también

Crear un archivo de configuración | Personalizar el entorno de Visual FoxPro | SET (Comando) | Utilizar los comandos SET | Especificar el archivo de configuración que se va a utilizar | Utilizar un archivo de configuración


Nombres de menús del sistema

Las siguientes tablas indican los nombres internos y los nombres de la interfaz de usuario para la barra de menús del sistema de Visual FoxPro, los títulos de menús, los menús y los elementos de menú. Estos nombres le permiten utilizar la barra de menús del sistema de Visual FoxPro para crear un sistema de menús para su propia aplicación.

La función SYS(2013) devuelve una cadena delimitada por espacios que contiene estos nombres. También puede crear un menú rápido con el Diseñador de menús para ver los nombres internos de los menús del sistema.

Para obtener más información acerca de la barra de menús del sistema, vea Diseñar menús y barras de herramientas.

Nombres de menús del sistema en Visual FoxPro

El nombre interno para la propia barra de menús del sistema en Visual FoxPro es _MSYSMENU.

Menús del sistema

Título de menú | Nombre interno
Archivo | _MSM_FILE
Modificar | _MSM_EDIT
Vista | _MSM_VIEW
Formato | _MSM_TEXT
Herramientas | _MSM_TOOLS
Programa | _MSM_PROG
Ventana | _MSM_WINDO
Ayuda | _MSM_SYSTM

Menú Archivo

Menú y elementos | Nombre interno
Menú Archivo | _MFILE
Nuevo | _MFI_NEW
Abrir | _MFI_OPEN
Cerrar | _MFI_CLOSE
Cerrar todo | _MFI_CLALL
1er separador | _MFI_SP100
Guardar | _MFI_SAVE
Guardar como | _MFI_SAVAS
Guardar como HTML | _MFI_SAVASHTML
Revertir | _MFI_REVRT
2º separador | _MFI_SP200
Importar | _MFI_IMPORT
Exportar | _MFI_EXPORT
3er separador | _MFI_SP300
Preparar página | _MFI_PGSET
Vista preliminar | _MFI_PREVU
Imprimir | _MFI_SYSPRINT
Enviar | _MFI_SEND
4º separador | _MFI_SP400
Salir | _MFI_QUIT

Menú Edición - Visual FoxPro

Menú y elementos | Nombre interno
Menú Edición | _MEDIT
Deshacer | _MED_UNDO
Rehacer | _MED_REDO
1er separador | _MED_SP100
Cortar | _MED_CUT
Copiar | _MED_COPY
Pegar | _MED_PASTE
Pegado especial | _MED_PSTLK
Borrar | _MED_CLEAR
2º separador | _MED_SP200
Seleccionar todo | _MED_SLCTA
3er separador | _MED_SP300
Buscar | _MED_FIND
Reemplazar | _MED_REPL
Ir a la línea | _MED_GOTO
4º separador | _MED_SP400
Mostrar miembros | _MED_LISTMEMBERS
QuickInfo | _MED_QUICKINFO
5º separador | _MED_SP500
Marcadores | _MED_BKMKS
6º separador | _MED_SP600
Insertar objeto | _MED_INSOB
Objeto | _MED_OBJ
Vínculos | _MED_LINK
7º separador | _MED_SP700
Propiedades | _MED_PREF

Menú Ver

Menú y elementos | Nombre interno
Menú Ver | _MVIEW
Barras de herramientas | _MVI_TOOLB

Menú Herramientas

Menú y elementos | Nombre interno
Menú Herramientas | _MTOOLS
Asistentes | _MTL_WZRDS
1er separador | _MTL_SP100
Macros | _MST_MACRO
Examinador de clases | _MTL_BROWSER
Galería de componentes | _MTL_GALLERY
Examinador de objetos | _MTL_OBJECTBROWSER
Administrador de IntelliSense | _MTI_FOXCODE
2º separador | _MTL_SP200
Presentación | _MED_BEAUT
Lista de tareas | _MTI_TASKLIST
Vista del documento | _MTI_DOCVIEW
3er separador | _MTL_SP300
Analizador de trayecto | _MTL_COVERAGE
Puntos de interrupción | _MTI_BREAKPOINT
Depurador | _MTL_DEBUGGER
4º separador | _MTL_SP400
Seguimiento | _MTI_TRACE
Locales | _MTI_LOCALS
Pila de llamadas | _MTI_CALLSTACK
Resultados | _MTI_DBGOUT
Opciones | _MTL_OPTNS

Menú Programa

Menú y elementos | Nombre interno
Menú Programa | _MPROG
Haga lo siguiente | _MPR_DO
Cancelar | _MPR_CANCL
Reanudar | _MPR_RESUM
Suspender | _MPR_SUSPEND
1er separador | _MPR_SP100
Compilar | _MPR_COMPL

Menú Ventana

Menú y elementos | Nombre interno
Menú Ventana | _MWINDOW
Cascada | _MWI_CASCADE
Organizar todo | _MWI_ARRAN
1er separador | _MWI_SP100
Acoplable | _MWI_DOCKABLE
2º separador | _MWI_SP200
Ocultar | _MWI_HIDE
Borrar | _MWI_CLEAR
Recorrer | _MWI_ROTAT
3er separador | _MWI_SP300
Ventana Comandos | _MWI_CMD
Sesión de datos _MWI_VIEW
(mantiene la compatibilidad con las versiones anteriores de Visual FoxPro)
Propiedades | _MWI_PROPERTIES

Menú Ayuda

Menú y elementos | Nombre interno
Menú Ayuda | _MSYSTEM
Ayuda de Microsoft Visual FoxPro | _MST_HPSCH
MSDN Search | _MST_MSDNS
1er separador | _MST_SP100
Soporte técnico | _MST_TECHS
Visual FoxPro en el Web | _MST_VFPWEB
2º separador | _MST_SP200
Acerca de Microsoft Visual FoxPro | _MST_ABOUT

Vea también

SYS(2013) - Cadena de nombre de menú del sistema | SYS(1500) - Activar un elemento de menú del sistema | Diseñador de menús | Diseñar menús y barras de herramientas


Visual FoxPro y otros lenguajes de programación

La mayoría de los lenguajes de programación tienen características básicas similares. Si sabe programar en un lenguaje, podrá traducir fácilmente este conocimiento a otro lenguaje. Elija un elemento de los que aparecen a continuación para ver una comparación entre Visual FoxPro, BASIC, C/C++ y Pascal.

Para comparar | Vea
Si el lenguaje distingue mayúsculas y minúsculas | Distinción entre mayúsculas y minúsculas
Cómo declarar variables | Declaración de variables
Cómo insertar observaciones en programas | Comentarios
Cómo almacenar valores en variables | Instrucciones de asignación
La estructura de las instrucciones IF | Instrucciones IF
La estructura de las instrucciones CASE | Instrucciones CASE
La estructura de los bucles FOR | Bucles FOR
La estructura de los 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

Vea también

Instrucciones de asignación | Distinción entre mayúsculas y minúsculas | Instrucciones CASE | Comentarios | Bucles FOR | Instrucciones IF | Paso de parámetros por referencia | Paso de parámetros por valor | Declaración de variables | Bucles WHILE


Distinción entre mayúsculas y minúsculas

Los lenguajes de programación Visual FoxPro y BASIC no distinguen entre mayúsculas y minúsculas.

Visual FoxPro | BASIC
No distingue entre mayúsculas y minúsculas | No distingue entre mayúsculas y minúsculas
Pascal | C/C++
Distingue entre mayúsculas y minúsculas | Distingue entre mayúsculas y minúsculas

Vea también

Instrucciones de asignación | Instrucciones CASE | Comentarios | Bucles FOR | Instrucciones IF | Paso de parámetros por referencia | Paso de parámetros por valor | Declaración de variables | Bucles WHILE


Declaración de variables

Cuando almacena un valor en una variable y la variable no existe, Visual FoxPro la declara implícitamente con alcance privado (PRIVATE). Otros lenguajes que requieran una declaración explícita de variables generarán un error. Para crear variables en Visual FoxPro con alcance público (PUBLIC) o local (LOCAL), debe declararlas explícitamente con el comando PUBLIC o LOCAL.

En Visual FoxPro, no se asigna un tipo de datos a una variable (aunque es recomendable que asigne a las variables nombres con un prefijo que indique el tipo de datos para el que se van a usar). Otros lenguajes requieren que asigne un tipo de datos a una variable al declararla.

Visual FoxPro | BASIC
Las variables se declaran implícitamente; no hay tipos de datos. | Las variables se pueden declarar implícitamente; el nombre de la variable indica el tipo de datos.
Pascal | C/C++
Las variables se deben declarar explícitamente y se les debe asignar un tipo de datos. | Las variables se deben declarar explícitamente y se les debe asignar un tipo de datos.

Vea también

Instrucciones de asignación | Distinción entre mayúsculas y minúsculas | Instrucciones CASE | Comentarios | Bucles FOR | Instrucciones IF | LanguageOptions (Propiedad) | Paso de parámetros por referencia | Paso de parámetros por valor | Bucles WHILE


Comentarios

Cada lenguaje tiene su propio formato para agregar observaciones a los programas. Visual FoxPro, C, y C++ tienen diferentes formatos para observaciones en una sola línea y para observaciones en líneas parciales.

Visual FoxPro BASIC
* full line
USE  && end of line
NOTE multiline ;
comment

' comment
Pascal C/C++
{ comment }

// comment
/* multiline
comment */

Vea también

Instrucciones de asignación | Distinción entre mayúsculas y minúsculas | Instrucciones CASE | Bucles FOR | Instrucciones IF | Paso de parámetros por referencia | Paso de parámetros por valor | Declaración de variables | Bucles WHILE


Instrucciones de asignación

Pascal requiere dos puntos en la instrucción de asignación.

Visual FoxPro BASIC
nVal = 7
–or–
STORE 7 to nVal

nVal = 7
Pascal C/C++
nVal := 7

nVal = 7
Nota En Visual FoxPro, también puede asignar valores a campos de una tabla con el comando REPLACE.

Vea también

Distinción entre mayúsculas y minúsculas | Instrucciones CASE | Comentarios | Bucles FOR | Instrucciones IF | Paso de parámetros por referencia | Paso de parámetros por valor | Declaración de variables | Bucles WHILE


Instrucciones CASE

Pascal es el único que no ofrece valores predeterminados para instrucciones CASE.

Visual FoxPro BASIC
DO CASE
 CASE n = 0
  ? 'Zero'
 CASE n > 0
  ? 'Pos'
 OTHERWISE
  ? 'Neg'
ENDCASE

Select Case n
Case 0
Print 'Zero'
Case Is > 0
Print 'Pos'
Case Else
Print 'Neg'
End Select
Pascal C/C++
case n of
 0: writeln("Zero");
 1: writeln("One");
end

switch(n) {
case 0:
printf("Zero\n");
break;
case 1:
printf("One\n");
break;
default:
printf("?\n");}

Vea también

Instrucciones de asignación | Distinción entre mayúsculas y minúsculas | Comentarios | Bucles FOR | Instrucciones IF | Paso de parámetros por referencia | Paso de parámetros por valor | Declaración de variables | Bucles WHILE


Instrucciones IF

Cada lenguaje ofrece una funcionalidad IF equivalente. La cláusula THEN es permitida solo en la instrucción IF en Visual FoxPro.

Visual FoxPro BASIC
IF nCnt < nMax
 nTot = nTot * nCnt
 nCnt = nCnt + 1
ENDIF

If nCnt < nMax Then
nTot = nTot * nCnt
nCnt = nCnt + 1
End If
Pascal C/C++
if nCnt < nMax then
 begin
  nTot:=nTot * nCnt;
  nCnt:=nCnt + 1;
 end

if(nCnt < nMax) {
nTot *= nCnt;
nCnt++;
}

Vea también

Instrucciones de asignación | Distinción entre mayúsculas y minúsculas | Instrucciones CASE | Comentarios | Bucles FOR | Paso de parámetros por referencia | Paso de parámetros por valor | Declaración de variables | Bucles WHILE


Bucles FOR

Cada lenguaje ofrece una instrucción FOR; C/C++ es el que ofrece mayor flexibilidad en las expresiones.

Visual FoxPro BASIC
FOR n = 1 TO 10
 ? n
ENDFOR

For n = 1 to 10
Print n
Next n
Pascal C/C++
for n := 1 to 10 do
  writeln(n);

for(n=1; n<11; n++)
printf("%d\n",n);

Vea también

Instrucciones de asignación | Distinción entre mayúsculas y minúsculas | Instrucciones CASE | Comentarios | Instrucciones IF | Paso de parámetros por referencia | Paso de parámetros por valor | Declaración de variables | Bucles WHILE


Bucles WHILE

Cada lenguaje ofrece una funcionalidad de bucle WHILE equivalente.

Visual FoxPro BASIC
DO WHILE n < 100
 n = n + n
ENDDO

Do While n < 100
n = n + n
Loop
Pascal C/C++
while n < 100 do
 n := n + n;

while(n < 100)
n += n;

Vea también

Instrucciones de asignación | Distinción entre mayúsculas y minúsculas | Instrucciones CASE | Comentarios | Bucles FOR | Instrucciones IF | Paso de parámetros por referencia | Paso de parámetros por valor | Declaración de variables


Paso de parámetros por referencia

En Visual FoxPro puede pasar parámetros por referencia de dos maneras:

Visual FoxPro BASIC
=ABC(@X)
–or–
DO ABC WITH X

ABC X
Pascal C/C++
procedure ABC
var x:integer);

ABC(&VAR);

Vea también

Instrucciones de asignación | Distinción entre mayúsculas y minúsculas | Instrucciones CASE | Comentarios | Bucles FOR | Instrucciones IF | Paso de parámetros por valor | Declaración de variables | Bucles WHILE | SET UDFPARMS (Comando)


Paso de parámetros por valor

Todos los lenguajes permiten pasar parámetros por valor.

Visual FoxPro BASIC
=ABC(X)

ABC ByVal X
Pascal C/C++
procedure ABC (x:integer);

ABC(X);

Vea también

Instrucciones de asignación | Distinción entre mayúsculas y minúsculas | Instrucciones CASE | Comentarios | Bucles FOR | Instrucciones IF | Paso de parámetros por referencia | Declaración de variables | Bucles WHILE | SET UDFPARMS (Comando)


Capacidades del sistema de Visual FoxPro

Algunas capacidades se pueden ver 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 | 1.000 millones
Tamaño máximo de un archivo de tabla | 2 gigabytes
Tamaño máximo de un archivo memo FPT | 2 gigabytes
Número máximo de caracteres por registro | 65.500
Número máximo de campos por registro(1) | 255
Número máximo de tablas abiertas a la vez(2) | 65,535
Número máximo de caracteres por campo de tabla | 254
Número máximo de bytes por clave de índice en un índice no compacto(3) | 100
Número máximo de bytes por clave de índice en un índice compacto(3) | 240
Número máximo de archivos de índice abiertos por tabla(2) | sin límite
Número máximo de índices abiertos en todas las áreas de trabajo(2) | sin límite
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
Visual FoxPro admite números hasta 9007199254740992 (2^53) en cálculos exactos.
 16
Varios:

64 bits = 8 bytes
Número más alto = 10 ^ 308 = 2 ^ 1023 -> 10 bits por exponente + 1 por el signo de exponente más 1 por el signo de número => 12 bits.

Dejando 52 bits para la mantisa + 1 para el bit normalizado implícito -> 53 bits

LOG10(2^53) = 15.95 dígitos decimales de precisión.

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(4) | 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 niveles de anidamiento READ | 5
Número máximo de comandos de programación estructurada anidados | 384
Número máximo de parámetros transferidos | 26
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(2) | sin límite
Longitud máxima de una definición de informe | 20 pulgadas
Número máximo de niveles de agrupamiento | 128
Longitud máxima de las variables de informe de tipo carácter | 255

Otras capacidades

Número máximo de ventanas abiertas (de todos los tipos)(2) | sin límite
Número máximo de ventanas Examinar abiertas | 255
Número máximo de caracteres por cadena de caracteres o variable de memoria | 16.777.184
línea de comando | 8.192
Número máximo de caracteres por control de tipo etiqueta en un informe | 252
Número máximo de caracteres por línea sustituida 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
Longitud máxima de un literal de cadena | 255
Número máximo de páginas en un informe en tiempo de ejecución. | 32767

1. Si uno o más de los campos permiten valores nulos, el límite se reduce en uno, a 254 campos.
2. Limitado por memoria y controladores de archivo disponibles. Los archivos .cdx sólo usan un controlador de archivo.
3. 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 indizado admite valores nulos, se utiliza un byte adicional en la clave del índice. Observe que los índices no MACHINE son siempre compactos.
4. Un módulo de programa es un procedimiento. Un programa o aplicación puede contener un número ilimitado de módulos de programa.

Vea también

Estructura de archivos de tabla (.dbc, .dbf, .frx, .lbx, .mnx, .pjx, .scx, .vcx) | Configurar un origen de datos ODBC | Mostrar información del sistema (Ejemplo) | Optimizar el sistema | Extensiones de archivo y tipos de archivo | Optimizar la velocidad de inicio de Visual FoxPro | Términos especiales para archivos de configuración


Funcionalidad XML: Usando XMLAdapters

Con las clases XMLAdapter, XMLTable, y XMLField,Visual FoxPro aumenta sus características XML y de compatibilidad con XML DiffGram y con los formatos de Dataset del Framework ADO.NET . Las clases XMLAdapter, XMLTable, y XMLField requieren Microsoft XML Core Services (MSXML) 4.0 Service Pack 1 (SP1).

Para más detalles y descarga de información, ver Microsoft XML Core Services 4.0 SP1 en el MSDN Library sitio Web en http://msdn.microsoft.com/downloads/.

Visual FoxPro soporta estrictamente los siguientes formatos XML:

  • Archivos XML que tengan asociado un esquema, en línea o externo, según lo implementado por ADO.NET DataSets basado en el .NET Framework
  • Microsoft XML Data Reduced Schema (XDR) como es usado por Microsoft SQL XML
  • Esquemas de recordset de ADO que son producidos cuando un Recordset ADO es salvado como un archivo XML o un stream.

Visual FoxPro puede representar un archivo XML como una colección de tablas y sus posibles relaciones, tales como son ADO.NET DataSet object, en un cursor separado de Visual FoxPro. Usualmente, este archivo contiene datos desde el sistema controlador de base de datos (DBMS) con la estructura de Primario > Secundario > Secundario. El XML también tiene un formato jerarquizado por ejemplo Primario > Secundario, Primario > Secundario, o un formato serial por ejemplo Primario - Primario, Secundario - Secundario.

Cuando usted tiene un XML jerárquico que representa una sola una tabla como resultado de comandos SQL JOIN con varias tablas, , Visual FoxPro crea solo un cursor con el resultado.

Para mas información acerca de XML DiffGram y formatos DataSet de ADO.NET, vea el .NET Framework SDK en el sitio Web de la MSDN Library en http://msdn.microsoft.com/library/.

ADO.NET DataSets

En el Framework de .NET, ADO.NET es un conjunto de clases que exponen servicios de acceso a datos al programador que trabaja con .NET. ADO.NET proporciona de un acceso consistente a fuentes de datos como son Microsoft SQL Server y otras fuentes de datos expuestas a través de OLE DB y XML.

El DataSet ADO.NET se usa como una clase primaria para manipulación de datos y encapsula datos como XML. Un objeto DataSet ADO.NET puede producir XML de varias maneras:

  • Devolviendo el DataSet ADO.NET entero a la aplicación que lo llamó.

    Este método retorna todos los registros en la consulta original en formato XML DiffGram con el esquema en línea y las operaciones de actualizaciones, inserciones y borrado que se indicaron. Los registros que permanecen sin cambios no tienen el atributo diffgr:hasChanges.

    Cuando un Objeto DataSet vuelve a una aplicación desde un método de la misma que usa el Framework de .NET y retorna un objeto DataSet de ADO.NET, éste es siempre serializado, o convertido en XML.Visual FoxPro puede convertir este XML en cursores, que se pueden manipular en una aplicación Visual FoxPro.

  • Por retorno a la aplicación basada en .NET de sólo los cambios del DataSet ADO.NET .

    Este método retorna sólo los registros, en formato XML DiffGram, que fueron modificados, agregados o borrados.

    Si el objeto ADO.NET DataSet contiene cambios, éstos están marcados con los atributos, DiffGram:hasChanges="modified" o DiffGram:hasChanges="inserted". Para los registros marcados como "modificados", el valor previo aparece en la sección, diffgr:before. Los registros que son borrados aparecen sólo en la sección diffgr:before y no en la sección principal de el DiffGram.

  • Por uso de los métodos ADO.NET DataSet GetXml y GetXMLSchema para devolver un XML como una cadena .CLR o tipo string.
  • Por uso de los métodos ADO.NET DataSet WriteXml y WriteXmlSchema para escribir en un DataSet ADO.NET como un archivo XML ya sea con un esquema en línea, sin esquema, o un esquema separado.

Vea También

Objectos, Colecciones y Clases | Clase XMLAdapter | Clase XMLTable | Clase XMLField | Equivalencia entre tipo de datos Visual FoxPro y esquema XML


Carpeta XSource

La carpeta XSource del directorio \Tools de Visual FoxPro contiene archivos ZIP que se expanden en los archivos de Ayuda HTML del ejemplo Solution y en las carpetas que contienen otros complementos para Visual FoxPro. Entre estos complementos, figuran los archivos de código fuente de Addlabel, Examinador, Generador, Analizador de trayecto y asistentes.

Vea también

Addlabel.app (Ejemplo) | Generadores | Aplicación Analizador de trayecto


Referencia del lenguaje

Puede utilizar la interfaz de Visual FoxPro para realizar muchas tareas de bases de datos y desarrollar aplicaciones para catalogar, seguir y procesar información. Conocer más del lenguaje de programación de Visual FoxPro realza su capacidad para acceder al poder de Visual FoxPro.

Así como otros lenguajes de programación, el lenguaje de programación de Visual FoxPro hace posible que pueda trabajar con varios tipos de datos, tales como números y cadenas de caracteres. Estos distintos tipos de datos pueden ser almacenados en tablas, matrices, variables, y otros contenedores de datos. Para manipular datos, puede ejecutar operaciones, tales como suma y concatenación. Además de los operadores, Visual FoxPro proporciona un extenso juego de comandos y funciones, puede proteger, mostrar y administrar la información.

Esta sección contiene información de los elementos del lenguaje de programación en Visual FoxPro.

En esta sección

Categorías del Lenguaje
Contiene las categorías que describen las áreas de la funcionalidad ofrecidas por Visual FoxPro.
Comandos
Enumera los comandos disponibles en Visual FoxPro.
Objetos, Colecciones y Clases
Enumera las clases, colecciones, y objetos disponibles en Visual FoxPro.
Propiedades
Enumera las propiedades de las clases y objetos en Visual FoxPro.
Métodos
Enumera los métodos disponibles en Visual FoxPro.
Eventos
Enumera los eventos que ocurren en Visual FoxPro.
Funciones
Lista de funciones disponibles en Visual FoxPro.
Operadores
Enumera los operadores que puede utilizar para manipular datos en Visual FoxPro.
Directivas de Preprocesador
Enumera las directivas de preprocesador que puede utilizar en los programas de Visual FoxPro.
Variables del Sistema
Enumera las variables de sistema de Visual FoxPro que puede utilizar para almacenar valores.
Construcción de Bibliotecas API
Describe las rutinas de la biblioteca API, eventos del sistema, y código clave.
SQL (Comandos y Funciones)
Describe los comandos y funciones del Structured Query Language (SQL) soportados por Visual FoxPro.
Referencia del lenguaje para desarrollo OLE DB
Describe la ayuda para el lenguaje y sintaxis nativos de Visual FoxPro con el Proveedor de OLE DB.
Elementos del lenguaje compatible con versiones anteriores
Enumera los elementos del lenguaje que se ha dejado de usar y están incluidos por compatibilidad con versiones anteriores.

Temas Relacionados

Referencia
Incluye una referencia general de los temas de Visual FoxPro, lenguaje de programación, interfaz del usuario y mensajes de error.
Programar en Visual FoxPro
Describe como comprender las técnicas de programación orientada a objetos y el modelo de manejo de eventos puede elevar su productividad en programación y hacer posible que acceda a todo el poder de Visual FoxPro.
Ejemplos y Guías
Contiene ejemplos de código Visual FoxPro y guías paso a paso que puede utilizar para experimentar y entender las características de Visual FoxPro.


Categorías del lenguaje

Esta sección contiene una lista de funciones del lenguaje y sus descripciones.

En esta sección

Bases de datos
Enlaza con la información sobre cómo puede manipular bases de datos, tablas, registros y campos, así como índices y relaciones.
Entrada y salida
Contiene información acerca del control de las entradas y salidas de sus aplicaciones.
Programación
Contiene más información acerca de la programación, incluyendo manipulación de matrices, control de errores y depuración, programación estructurada, etc.
Acceso compartido a datos
Contiene los comandos y funciones que posibilitan la administración de varios usuarios.
Entorno de Visual FoxPro
Lista los comandos y funciones que hacen posible el acceso al entorno de Microsoft Visual FoxPro.

Secciones relacionadas

Referencia del lenguaje
Contiene una lista de temas de referencia del lenguaje ordenados alfabéticamente.
Convenciones de nomenclatura
Discute sobre cómo elegir nombres para objetos, propiedades y métodos expuestos que puedan entender fácilmente los usuarios de la aplicación.
Desarrollar aplicaciones Visual FoxPro
Incluye información conceptual acerca de cómo desarrollar aplicaciones Visual FoxPro, instrucciones para crear bases de datos y la interfaz de usuario y otras tareas necesarias para crear aplicaciones Visual FoxPro.
Programar en Visual FoxPro
Discute cómo puede acceder a todo el poder de Visual FoxPro para crear aplicaciones. Comprender las técnicas de programación orientada a objetos y el modelo controlado por eventos puede aumentar su productividad como programador.
Visual FoxPro y otros lenguajes de programación
Proporciona una comparación entre Visual FoxPro y otros lenguajes de programación.


Bases de datos

Puede manipular bases de datos, tablas, registros y campos, así como índices y relaciones.

En esta sección

Manipulación de bases de datos
Lista los comandos y funciones que manipulan bases de datos.
Manipulación de campos
Lista los comandos y funciones que permiten manipular los campos de una tabla.
Indices
Lista los comandos y funciones que realizan operaciones sobre archivos de índice y devuelven información sobre éstos.
Manipulación de registros
Lista los comandos y funciones que realizan operaciones sobre archivos de índice y devuelven información sobre éstos.
Relaciones
Lista los comandos y funciones que permiten establecer o romper relaciones entre archivos de tabla.
Manipulación de tablas
Lista los comandos y funciones que permiten crear, manipular y hacer un seguimiento de archivos de tablas.

Secciones relacionadas

Categorías del lenguaje
Contiene una lista de funciones del lenguaje y sus descripciones.
Uso de Visual FoxPro
Discute como las características de programación de Visual FoxPro están diseñadas para mejorar la productividad del programador, incluidos los métodos Access y Assign, y la compatibilidad con más formatos de archivos gráficos y lenguaje para simplificar las tareas de programación.
Desarrollar aplicaciones Visual FoxPro
Incluye información conceptual acerca de como desarrollar aplicaciones Visual FoxPro, instrucciones para crear bases de datos y la interfaz de usuario y otras tareas necesarias para crear aplicaciones Visual FoxPro.
Programar en Visual FoxPro
Discute como puede acceder a todo el poder de Visual FoxPro para crear aplicaciones. Comprender las técnicas de programación orientada a objetos y el modelo controlado por eventos puede aumentar su productividad como programador.


Manipulación de bases de datos

Estos comandos y funciones manipulan bases de datos.

ADATABASES( ) (Función)

ADD TABLE (Comando)

APPEND PROCEDURES (Comando)

AUSED( ) (Función)

CLOSE (Comandos)

COMPILE DATABASE (Comando)

COPY PROCEDURES (Comando)

CREATE CONNECTION (Comando)

CREATE DATABASE (Comando)

CREATE SQL VIEW (Comando)

CREATE TRIGGER (Comando)

CREATEOFFLINE( ) (Función)

DROPOFFLINE( ) (Función)

CURSORGETPROP( ) (Función)

CURSORSETPROP( ) (Propiedad)

CURVAL( ) (Función)

DATETIME( ) (Función)

DBC( ) (Función)

DBGETPROP( ) (Función)

DBSETPROP( ) (Función)

DBUSED( ) (Función)

DELETE - SQL (Comando)

DELETE CONNECTION (Comando)

DELETE DATABASE (Comando)

DELETE TRIGGER (Comando)

DELETE VIEW (Comando)

DISPLAY CONNECTIONS (Comando)

DISPLAY DATABASE (Comando)

DISPLAY PROCEDURES (Comando)

DISPLAY TABLES (Comando)

DISPLAY VIEWS (Comando)

FREE TABLE (Comando)

GETFLDSTATE( ) (Función)

GETNEXTMODIFIED( ) (Función)

INDBC( ) (Función)

ISEXCLUSIVE( ) (Función)

LIST CONNECTIONS (Comando)

LIST DATABASE (Comando)

LIST PROCEDURES (Comando)

LIST TABLES (Comando)

LIST VIEWS (Comando)

MODIFY CONNECTION (Comando)

MODIFY DATABASE (Comando)

MODIFY PROCEDURE (Comando)

MODIFY VIEW (Comando)

OLDVAL( ) (Función)

OPEN DATABASE (Comando)

PACK DATABASE (Comando)

REFRESH( ) (Función)

REMOVE TABLE (Comando)

RENAME CONNECTION (Comando)

RENAME TABLE (Comando)

RENAME VIEW (Comando)

REQUERY( ) (Función)

SET DATABASE (Comando)

SET DATASESSION (Comando)

SETFLDSTATE( ) (Función)

SQLCANCEL( ) (Función)

SQLCOLUMNS( ) (Función)

SQLCOMMIT( ) (Función)

SQLCONNECT( ) (Función)

SQLDISCONNECT( ) (Función)

SQLEXEC( ) (Función)

SQLGETPROP( ) (Función)

SQLMORERESULTS( ) (Función)

SQLROLLBACK( ) (Función)

SQLSETPROP( ) (Función)

SQLSTRINGCONNECT( ) (Función)

SQLTABLES( ) (Función)

TABLEREVERT( ) (Función)

TABLEUPDATE( ) (Función)

_TRIGGERLEVEL (Variable del sistema)

VALIDATE DATABASE (Comando)


Manipulación de campos

Estos comandos y funciones permiten manipular los campos de una tabla.

AFIELDS( ) (Función)

BLANK (Comando)

DELETED( ) (Función)

FCOUNT( ) (Función)

FIELD( ) (Función)

FLDLIST( ) (Función)

FSIZE( ) (Función)

GATHER (Comando)

ISBLANK( ) (Función)

LUPDATE( ) (Función)

NDX( ) (Función)

SCATTER (Comando)

SET BLOCKSIZE (Comando)

SET EXACT (Comando)

SET NOCPTRANS (Comando)

SET TEXTMERGE (Comando)

SET TEXTMERGE DELIMITERS (Comando)

SYS(14) - Expresión de índice


Índices

Estos comandos y funciones realizan operaciones sobre archivos de índice y devuelven información sobre éstos.

ATAGINFO( ) (Función)

CANDIDATE( ) (Función)

CDX( ) (Función)

CLOSE (Comandos)

COPY INDEXES (Comando)

COPY TAG (Comando)

DESCENDING( ) (Función)

DELETE TAG (Comando)

FOR( ) (Función)

IDXCOLLATE( ) (Función)

INDEX (Comando)

INDEXSEEK( ) (Función)

KEY( ) (Función)

KEYMATCH( ) (Función)

MDX( ) (Función)

NDX( ) (Función)

ORDER( ) (Función)

PRIMARY( ) (Función)

REINDEX (Comando)

SET COLLATE (Comando)

SET INDEX (Comando)

SET KEY (Comando)

SET ORDER (Comando)

SET UNIQUE (Comando)

SYS(14) - Expresión de índice

SYS(21) - Número de índice de control

SYS(2021) - Expresión de índice filtrado

TAG( ) (Función)

TAGCOUNT( ) (Función)

TAGNO( ) (Función)

UNIQUE( ) (Función)


Manipulación de registros

Estos comandos y funciones permiten seleccionar registros dentro de una tabla o establecer la posición del puntero de registro.

APPEND FROM (Comando)

APPEND MEMO (Comando)

BLANK (Comando)

CONTINUE (Comando)

DELETE - SQL (Comando)

FILTER( ) (Función)

GO | GOTO (Comando)

INDEXSEEK( ) (Función)

INSERT (Comando)

INSERT - SQL (Comando)

ISBLANK( ) (Función)

KEYMATCH( ) (Función)

LOCATE (Comando)

LOOKUP( ) (Función)

REPLACE FROM ARRAY (Comando)

SEEK (Comando)

SEEK( ) (Función)

SET COLLATE (Comando)

SET FILTER (Comando)

SET KEY (Comando)

SET NEAR (Comando)

SET RELATION (Comando)

SKIP (Comando)

UPDATE - SQL (Comando)


Relaciones

Estos comandos y funciones permiten establecer o romper relaciones entre archivos de tabla.

RELATION( ) (Función)

SELECT - SQL (Comando)

SET RELATION (Comando)

SET RELATION OFF (Comando)

SET SKIP (Comando)

TARGET( ) (Función)


Manipulación de tablas

Estos comandos y funciones permiten crear, manipular y hacer un seguimiento de archivos de tablas.

ADD TABLE (Comando)

ALINES( ) (Función)

ALTER TABLE - SQL (Comando)

APPEND (Comando)

AUSED( ) (Función)

AVERAGE (Comando)

BEGIN TRANSACTION (Comando)

BROWSE (Comando)

CHANGE (Comando)

CLOSE TABLES (Comando)

COPY MEMO (Comando)

COPY STRUCTURE (Comando)

COPY STRUCTURE EXTENDED (Comando)

COPY TO (Comando)

COUNT(Comando)

CPCURRENT( ) (Función)

CPDBF( ) (Función)

CREATE (Comando)

CREATE FROM (Comando)

CREATE QUERY (Comando)

CREATE TABLE - SQL (Comando)

CURVAL( ) (Función)

DELETE (Comando)

DELETE - SQL (Comando)

DELETED( ) (Función)

DISPLAY STRUCTURE (Comando)

DISPLAY TABLES (Comando)

EDIT (Comando)

END TRANSACTION (Comando)

EXPORT (Comando)

FLUSH (Comando)

GETFLDSTATE( ) (Función)

GETNEXTMODIFIED( ) (Función)

IMPORT (Comando)

ISEXCLUSIVE( ) (Función)

ISREADONLY( ) (Función)

LIST TABLES (Comando)

MEMLINES( ) (Función)

MLINE( ) (Función)

MODIFY GENERAL (Comando)

MODIFY MEMO (Comando)

MODIFY QUERY (Comando)

MODIFY STRUCTURE (Comando)

OLDVAL( ) (Función)

PACK (Comando)

RECALL (Comando)

REFRESH( ) (Función)

REMOVE TABLE (Comando)

REPLACE (Comando)

REPLACE FROM ARRAY (Comando)

RENAME TABLE (Comando)

ROLLBACK (Comando)

SELECT (Comando)

SELECT - SQL (Comando)

SET ANSI (Comando)

SET AUTOSAVE (Comando)

SET DATASESSION (Comando)

SET DELETED (Comando)

SET FIELDS (Comando)

SET NULL (Comando)

SET OLEOBJECT (Comando)

SET OPTIMIZE (Comando)

SORT (Comando)

SUM (Comando)

SYS(2029) - Tipo de tabla

TABLEREVERT( ) (Función)

TABLEUPDATE( ) (Función)

TOTAL (Comando)

TXNLEVEL( ) (Función)

UPDATE (Comando)

UPDATE - SQL (Comando)

USE (Comando)

USED( ) (Función)

ZAP (Comando)


Entrada y salida

Para buscar más información acerca de cómo puede controlar las entradas y salidas de sus aplicaciones, elija una de las siguientes secciones.

En esta sección

Formato de datos
Lista los comandos y funciones que permiten dar formato y presentar datos de registros, campos, variables de memoria y matrices.
Entrada por teclado y ratón
Lista los comandos y funciones que permiten controlar la entrada con el teclado o el ratón.
Menús y barras de menús
Lista los comandos y funciones que permiten programar, mostrar y activar menús y barras de menús definidos por el usuario.
Imprimir
Lista los comandos y funciones que permiten imprimir o presentar datos de registros o variables de memoria en la pantalla, en una impresora o en un archivo de resultados.
Informes y etiquetas
Lista los comandos y funciones que permiten crear informes y controlar el resultado.
Comandos y funciones de Windows
Lista los comandos y funciones que permiten crear, mostrar y activar funciones definidas por el usuario.

Secciones relacionadas

Categorías del lenguaje
Contiene una lista de funciones del lenguaje y sus descripciones.
Uso de Visual FoxPro
Discute como las características de programación de Visual FoxPro están diseñadas para mejorar la productividad del programador, incluidos los métodos Access y Assign, la compatibilidad con más formatos de archivos gráficos y lenguaje para simplificar las tareas de programación.
Desarrollar aplicaciones Visual FoxPro
Incluye información conceptual acerca de cómo desarrollar aplicaciones Visual FoxPro, instrucciones para crear bases de datos y la interfaz de usuario y otras tareas necesarias para crear aplicaciones Visual FoxPro.
Programar en Visual FoxPro
Discute cómo puede acceder a todo el poder de Visual FoxPro para crear aplicaciones. Comprender las técnicas de programación orientada a objetos y el modelo controlado por eventos puede aumentar su productividad como programador.


Formato de datos

Estos comandos y funciones permiten dar formato y presentar datos de registros, campos, variables de memoria y matrices. También permiten manipular características generales de pantalla o de presentación de ventanas.

\ | \\ (Comando)

? | ?? (Comando)

@ ... BOX (Comando)

@ ... CLEAR (Comando)

@ ... EDIT - Cuadros de edición (Comando)

@ ... FILL (Comando)

@ ... GET - Casillas de verificación (Comando)

@ ... GET - Cuadros combinados (Comando)

@ ... GET - Botones de comando (Comando)

@ ... GET - Cuadros de lista (Comando)

@ ... GET - Botones de opción (Comando)

@ ... GET - Controles numéricos (Comando)

@ ... GET - Cuadros de texto (Comando)

@ ... GET - Botones transparentes (Comando)

@ ... SAY (Comando)

@ ... TO (Comando)

ACTIVATE SCREEN (Comando)

APPEND (Comando)

BROWSE (Comando)

CHANGE (Comando)

CLEAR (Comandos)

CLEAR READ (Comando)

CLOSE FORMAT (Comando)

COL( ) (Función)

COMPILE FORM (Comando)

CREATE FORM (Comando)

CREATE SCREEN (Comando)

DISPLAY (Comando)

DisplayPath( ) (Función)

EDIT (Comando)

FUNCTION (Comando)

INKEY( ) (Función)

LIST (Comandos)

MESSAGEBOX( ) (Función)

MODIFY FORM (Comando)

MODIFY SCREEN (Comando)

OBJNUM( ) (Función)

OBJTOCLIENT( ) (Función)

OBJVAR( ) (Función)

RDLEVEL( ) (Función)

READ (Comando)

READKEY( ) (Función)

RESTORE SCREEN (Comando)

ROW( ) (Función)

SAVE SCREEN (Comando)

SCOLS( ) Función

SCROLL (Comando)

SET CARRY (Comando)

SET CLEAR (Comando)

SET COLOR OF (Comando)

SET COLOR OF SCHEME (Comando)

SET COLOR SET (Comando)

SET COLOR TO (Comando)

SET CONFIRM (Comando)

SET CONSOLE (Comando)

SET CURSOR (Comando)

SET DECIMALS (Comando)

SET DEVICE (Comando)

SET FIXED (Comando)

SET FORMAT (Comando)

SET HEADINGS (Comando)

SET MARK TO (Comando)

SET MEMOWIDTH (Comando)

SET MESSAGE (Comando)

SET ODOMETER (Comando)

SET SPACE (Comando)

SET TEXTMERGE (Comando)

SET TEXTMERGE DELIMITERS (Comando)

SHOW GET (Comando)

SHOW GETS (Comando)

SHOW OBJECT (Comando)

SROWS( ) (Función)

SYS(7) - Archivo de formato actual

SYS(100) - Configuración de CONSOLE

SYS(101) - Configuración de DEVICE

SYS(2002) - Activar o desactivar el punto de inserción

TEXT ... ENDTEXT (Comando)

TRANSFORM( ) (Función)

UPDATED( ) (Función)


Entrada por teclado y ratón

Estos comandos y funciones permiten controlar la entrada con el teclado o el ratón.

AMOUSEOBJ( ) (Función)

CAPSLOCK( ) (Función)

CHRSAW( ) (Función)

CLEAR MACROS (Comando)

CLEAR TYPEAHEAD (Comando)

INSMODE( ) (Función)

KEYBOARD (Comando)

LASTKEY( ) (Función)

MCOL( ) (Función)

MDOWN( ) (Función)

MOUSE (Comando)

MROW( ) (Función)

NUMLOCK( ) (Función)

ON KEY (Comando)

ON KEY LABEL (Comando)

PLAY MACRO (Comando)

POP KEY (Comando)

PUSH KEY (Comando)

RESTORE MACROS (Comando)

SAVE MACROS (Comando)

SET FUNCTION (Comando)

SET KEYCOMP (Comando)

SET MACKEY (Comando)

SET TYPEAHEAD (Comando)


Menús y barras de menús

Estos comandos y funciones permiten programar, mostrar y activar menús y barras de menús definidos por el usuario.

\ | \\ (Comando)

ACTIVATE POPUP (Comando)

BAR( ) (Función)

BARPROMPT( ) (Función)

CLEAR MENUS (Comando)

CLEAR POPUPS (Comando)

CNTBAR( ) (Función)

CNTPAD( ) (Función)

CREATE MENU (Comando)

DEACTIVATE MENU (Comando)

DEACTIVATE POPUP (Comando)

DEFINE BAR (Comando)

DEFINE MENU (Comando)

DEFINE PAD (Comando)

DEFINE POPUP (Comando)

GETBAR( ) (Función)

GETPAD( ) (Función)

HIDE MENU (Comando)

HIDE POPUP (Comando)

MODIFY MENU (Comando)

MOVE POPUP (Comando)

MRKBAR( ) (Función)

MRKPAD( ) (Función)

ON BAR (Comando)

ON EXIT BAR (Comando)

ON EXIT MENU (Comando)

ON EXIT PAD (Comando)

ON EXIT POPUP (Comando)

ON PAD (Comando)

ON SELECTION BAR (Comando)

ON SELECTION MENU (Comando)

ON SELECTION PAD (Comando)

ON SELECTION POPUP (Comando)

PAD( ) (Función)

POP MENU (Comando)

POP POPUP (Comando)

POPUP( ) (Función)

PRMBAR( ) (Función)

PRMPAD( ) (Función)

PROMPT( ) (Función)

PUSH MENU (Comando)

PUSH POPUP (Comando)

RELEASE BAR (Comando)

RELEASE MENUS (Comando)

RELEASE PAD (Comando)

RELEASE POPUPS (Comando)

SET BORDER (Comando)

SET MARK OF (Comando)

SET SKIP OF (Comando)

SIZE POPUP (Comando)

SKPBAR( ) (Función)

SKPPAD( ) (Función)

SHOW MENU (Comando)

SHOW POPUP (Comando)

SYS(2013) - Cadena de nombre de menú del sistema


Imprimir

Estos comandos y funciones permiten imprimir o presentar datos de registros o variables de memoria en la pantalla, en una impresora o en un archivo de resultados.

_ASCIICOLS (Variable del sistema)

_ASCIIROWS (Variable del sistema)

\ | \\ (Comando)

? | ?? (Comando)

??? (Comando)

@ ... SAY (Comando)

APRINTERS( ) (Función)

CLOSE ALTERNATE (Comando)

DEFINE BOX (Comando)

DISPLAY (Comando)

EJECT (Comando)

EJECT PAGE (Comando)

GETPRINTER( ) (Función)

LIST (Comandos)

ON PAGE (Comando)

PCOL( ) (Función)

PRINTJOB ... ENDPRINTJOB (Comando)

PRINTSTATUS( ) (Función)

PROW( ) (Función)

PRTINFO( ) (Función)

SET MARGIN (Comando)

SET PDSETUP (Comando)

SET PRINTER (Comando)

SYS(6) - Dispositivo actual de impresora

SYS(13) - Estado de la impresora

SYS(102) - Configuración de PRINTER

SYS(1037) - Cuadro de diálogo Configurar página

TYPE (Comando)


Informes y etiquetas

Estos comandos permiten crear informes y controlar el resultado.

_ASCIICOLS (Variable del sistema)

_ASCIIROWS (Variable del sistema)

\ | \\ (Comando)

CREATE LABEL (Comando)

CREATE REPORT (Comando)

LABEL (Comando)

MODIFY LABEL (Comando)

MODIFY REPORT (Comando)

REPORT (Comando)


Comandos y funciones de Windows

Estos comandos y funciones permiten crear, mostrar y activar funciones definidas por el usuario.

ACTIVATE WINDOW (Comando)

CLEAR WINDOWS (Comando)

CREATE SCREEN (Comando)

DEACTIVATE WINDOW (Comando)

DEFINE WINDOW (Comando)

HIDE WINDOW (Comando)

MODIFY SCREEN (Comando)

MODIFY WINDOW (Comando)

MOVE WINDOW (Comando)

RELEASE WINDOWS (Comando)

RESTORE WINDOW (Comando)

SAVE WINDOWS (Comando)

SET BORDER (Comando)

SET WINDOW OF MEMO (Comando)

SHOW WINDOW (Comando)

SIZE WINDOW (Comando)

SYS(2016) - Nombre SHOW GETS WINDOW

WBORDER( ) (Función)

WCHILD( ) (Función)

WCOLS( ) (Función)

WEXIST( ) (Función)

WFONT( ) (Función)

WLAST( ) (Función)

WLCOL( ) (Función)

WLROW( ) (Función)

WMAXIMUM( ) (Función)

WMINIMUM( ) (Función)

WONTOP( ) (Función)

WOUTPUT( ) (Función)

WPARENT( ) (Función)

WREAD( ) (Función)

WROWS( ) (Función)

WTITLE( ) (Función)

WVISIBLE( ) (Función)

ZOOM WINDOW (Comando)


Programación

Busque la información de programación que desee en las secciones siguientes:

En esta sección

Manipulación de matrices
Lista los comandos y funciones que permiten trabajar con matrices de variables.
Depuración y control de errores
Lista los comandos y funciones que permiten realizar varias operaciones de depuración con programas de Visual FoxPro.
Controladores de eventos
Lista los comandos y funciones que permiten especificar que acción realiza un programa cuando ocurre un evento.
Funciones de archivo de bajo nivel
Lista las funciones que permiten manipular archivos y puertos de comunicación a bajo nivel. Las funciones de archivo de bajo nivel se deben utilizar con cuidado, especialmente cuando se manipulan archivos de tabla.
Comandos y funciones de programación orientada a objetos
Lista los comandos y funciones que permiten crear y manipular clases y objetos.
Ejecución de programas
Lista los comandos y funciones que permiten controlar cómo se ejecutan, suspenden y terminan los programas de Visual FoxPro.
Programación estructurada
Lista los comandos y funciones que permiten controlar la ejecución del programa y la ramificación de un programa de Visual FoxPro.

Secciones relacionadas

Categorías del lenguaje
Contiene una lista de funciones del lenguaje y sus descripciones.
Uso de Visual FoxPro
Discute como las características de programación de Visual FoxPro están diseñadas para mejorar la productividad del programador, incluidos los métodos Access y Assign, la compatibilidad con más formatos de archivos gráficos y lenguaje para simplificar las tareas de programación.
Desarrollar aplicaciones Visual FoxPro
Incluye información conceptual acerca de cómo desarrollar aplicaciones Visual FoxPro, instrucciones para crear bases de datos y la interfaz de usuario y otras tareas necesarias para crear aplicaciones Visual FoxPro.
Programar en Visual FoxPro
Discute cómo puede acceder a todo el poder de Visual FoxPro para crear aplicaciones. Comprender las técnicas de programación orientada a objetos y el modelo controlado por eventos puede aumentar su productividad como programador.


Manipulación de matrices

Los siguientes comandos y funciones permiten trabajar con matrices de variables.

ACOPY( ) (Función)

ADEL( ) (Función)

ADIR( ) (Función)

AELEMENT( ) (Función)

AFIELDS( ) (Función)

AFONT( )

AINS( ) (Función)

ALEN( ) (Función)

APPEND FROM ARRAY (Comando)

ASESSIONS( ) (Función)

ASCAN( ) (Función)

ASORT( ) (Función)

ASUBSCRIPT( ) (Función)

COPY TO ARRAY (Comando)

DECLARE (Comando)

DIMENSION (Comando)

GATHER (Comando)

SCATTER (Comando)


Depuración y control de errores

Los siguientes comandos y funciones permiten realizar varias operaciones de depuración con programas de Microsoft Visual FoxPro.

* (Comando)

&& (Comando)

AERROR( ) (Función)

CLEAR EVENTS (Comando)

COMRETURNERROR( ) (Función)

DEBUG (Comando)

DEBUGOUT (Comando)

ERROR (Comando)

ERROR( ) (Función)

EXTERNAL (Comando)

LINENO( ) (Función)

MESSAGE( ) (Función)

NOTE (Comando)

ON ERROR (Comando)

ON READERROR (Comando)

ON( ) (Función)

PROGRAM( ) (Función)

RETRY (Comando)

SET DEBUG (Comando)

SET DEVELOPMENT (Comando)

SET ECHO (Comando)

SET TALK (Comando)

SET TRBETWEEN (Comando)

SYS(16) - Nombre de archivo del programa en ejecución

SYS(18) - Control actual

SYS(2018) - Parámetro de mensaje de error

VARREAD( ) (Función)

WAIT (Comando)

Vea también

Mensajes de error ordenados alfabéticamente | Mensajes de error ordenados por número


Controladores de eventos

Los siguientes comandos y funciones permiten especificar qué acción realiza un programa cuando ocurre un evento.

EVENTHANDLER( ) (Función)

ON ERROR (Comando)

ON ESCAPE (Comando)

ON KEY (Comando)

ON KEY LABEL (Comando)

ON PAD (Comando)

ON SELECTION PAD (Comando)

ON SELECTION POPUP (Comando)

ON SHUTDOWN (Comando)

ON( ) (Función)

READ EVENTS (Comando)


Funciones de archivo de bajo nivel

Las siguientes funciones permiten manipular archivos y puertos de comunicación a bajo nivel. Las funciones de archivo de bajo nivel se deben utilizar con cuidado, especialmente cuando se manipulan archivos de tabla. Antes de emplear estas funciones, pruébelas en archivos de ejemplo antes de utilizarlas en archivos que contienen datos importantes.

FCHSIZE( ) (Función)

FCLOSE( ) (Función)

FCREATE( ) (Función)

FEOF( ) (Función)

FERROR( ) (Función)

FFLUSH( ) (Función)

FGETS( ) (Función)

FOPEN( ) (Función)

FPUTS( ) (Función)

FREAD( ) (Función)

FSEEK( ) (Función)

FWRITE( ) (Función)

HEADER( ) (Función)


Comandos y funciones de programación orientada a objetos

Estos comandos y funciones permiten crear y manipular clases y objetos.

:: Operador de resolución de alcance

@ ... CLASS (Comando)

_WIZARD (Variable del sistema)

ACLASS( ) (Función)

ADATABASES( ) (Función)

ADBOBJECTS( ) (Función)

ADD CLASS (Comando)

AddProperty (Método)

AGETCLASS( ) (Función)

AINSTANCE( ) (Función)

AMEMBERS( ) (Función)

AMOUSEOBJ( ) (Función)

ASELOBJ( ) (Función)

AVCXCLASSES( ) (Función)

_BUILDER (Variable del sistema)

COMCLASSINFO( ) (Función)

COMPOBJ( ) (Función)

CREATE CLASS (Comando)

CREATE CLASSLIB (Comando)

CREATEOBJECT( ) (Función)

DEFINE CLASS (Comando)

DISPLAY OBJECTS (Comando)

GETINTERFACE( ) (Función)

GETOBJECT( ) (Función)

LIST OBJECTS (Comando)

LOADPICTURE( ) (Función)

MODIFY CLASS (Comando)

NEWOBJECT( ) (Función)

NewObject (Método)

RELEASE CLASSLIB (Comando)

REMOVE CLASS (Comando)

RENAME CLASS (Comando)

SAVEPICTURE( ) (Función)

_SCREEN (Variable del sistema)

SET CLASSLIB (Comando)

SET OLEOBJECT (Comando)

WITH ... ENDWITH (Comando)


Ejecución de programas

Los siguientes comandos y funciones permiten controlar cómo se ejecutan, suspenden y terminan los programas de Visual FoxPro.

BUILD APP (Comando)

BUILD DLL (Comando)

BUILD EXE (Comando)

BUILD PROJECT (Comando)

CALL (Comando)

CANCEL (Comando)

CLEAR PROGRAM (Comando)

CLOSE ALL (Comando)

CLOSE PROCEDURE (Comando)

COMPILE (Comando)

CREATE PROJECT (Comando)

# DEFINE ... #UNDEF (Directiva del preprocesador)

DO (Comando)

DO FORM (Comando)

EXECSCRIPT( ) (Función)

FUNCTION (Comando)

#IF ... #ENDIF (Directiva del preprocesador)

#INCLUDE (Directiva del preprocesador)

_INCLUDE (Variable del sistema)

LOAD (Comando)

LPARAMETERS (Comando)

MESSAGEBOX( ) (Función)

MODIFY PROJECT (Comando)

PARAMETERS (Comando)

PARAMETERS( ) (Función)

PROCEDURE (Comando)

RELEASE PROCEDURE (Comando)

RESUME (Comando)

RETURN (Comando)

RUN | ! (Comando)

SET ESCAPE (Comando)

SET LIBRARY (Comando)

SET LOGERRORS (Comando)

SET PROCEDURE (Comando)

SET SYSMENU (Comando)

SET UDFPARMS (Comando)

SUSPEND (Comando)

SYS(2015) - Nombre único de procedimiento

WAIT (Comando)


Programación estructurada

Los siguientes comandos y funciones permiten controlar la ejecución del programa y la ramificación de un programa de Visual FoxPro.

DO CASE ... ENDCASE (Comando)

DO WHILE ... ENDDO (Comando)

EXIT (Comando)

FOR ... EACH (Comando)

FOR ... ENDFOR (Comando)

#IF ... #ENDIF (Directiva del preprocesador)

#IFDEF | #IFNDEF ... #ENDIF (Directiva del preprocesador)

IF ... ENDIF (Comando)

IIF( ) (Función)

LOOP (Comando)

SCAN ... ENDSCAN (Comando)


Manipulación de variables

Estos comandos y funciones permiten asignar valores a variables o a texto.

& (Comando)

= (Comando)

ACOPY( ) (Función)

ADEL( ) (Función)

ADIR( ) (Función)

AELEMENT( ) (Función)

AFIELDS( ) (Función)

AINS( ) (Función)

LEN( ) (Función)

ASCAN( ) (Función)

ASORT( ) (Función)

ASUBSCRIPT( ) (Función)

AVERAGE (Comando)

CLEAR ALL (Comando)

CLEAR MEMORY (Comando)

COUNT(Comando)

DISPLAY MEMORY (Comando)

GETEXPR (Comando)

_GETEXPR (Variable del sistema)

LIST MEMORY (Comando)

LOCAL (Comando)

PARAMETERS (Comando)

PRIVATE (Comando)

PUBLIC (Comando)

RELEASE (Comando)

RESTORE FROM (Comando)

SAVE TO (Comando)

STORE (Comando)

SUM (Comando)

TEXTMERGE( ) (Función)

WAIT (Comando)


Acceso compartido a datos

Los comandos y funciones enumerados en esta sección posibilitan la administración de varios usuarios.

En esta sección

Acceso compartido a comandos de datos y funciones
Lista los comandos y funciones que hacen posible a múltiples usuarios de una red compartir datos de tablas.
Comandos que tienen como alcance una sesión de datos
Lista los comandos que sólo afectan a la sesión de datos en que se ejecutan.

Secciones relacionadas

Categorías del lenguaje
Contiene una lista de descripciones y funcionalidad del lenguaje.
Uso de Visual FoxPro
Explica cómo las características de programación de Visual FoxPro están diseñadas para mejorar la productividad del desarrolador, incluidos los métodos Access y Assign, la compatibilidad con más formatos de archivos gráficos y lenguaje para simplificar las tareas de programación.
Desarrollar aplicaciones Visual FoxPro
Incluye información conceptual acerca de cómo desarrollar aplicaciones Visual FoxPro, instrucciones para crear bases de datos y la interfaz de usuario y otras tareas necesarias para crear aplicaciones Visual FoxPro.
Programar en Visual FoxPro
Explica cómo aprovechar todo el poder de Visual FoxPro para crear aplicaciones. Comprender las técnicas de programación orientada a objetos y el modelo controlado por eventos puede aumentar su productividad como programador.


Acceso compartido a comandos de datos y funciones

Estos comandos y funciones permiten a múltiples usuarios de una red compartir datos de tablas.

CURSORSETPROP( ) (Propiedad)

CURVAL( ) (Función)

FLOCK( ) (Función)

LOCK( ) (Función)

OLDVAL( ) (Función)

RLOCK( ) (Función)

SET EXCLUSIVE (Comando)

SET LOCK (Comando)

SET MULTILOCKS (Comando)

SET REFRESH (Comando)

SET REPROCESS (Comando)

SYS(3051) - Establecer intervalo de reintento de bloqueo

SYS(3052) - Anular bloqueo de SET REPROCESS

TABLEREVERT( ) (Función)

TABLEUPDATE( ) (Función)

UNLOCK (Comando)


Comandos que tienen como alcance una sesión de datos

Los siguientes comandos solo afectan a la sesión de datos en que se ejecutan.

BEGIN TRANSACTION (Comando)

END TRANSACTION (Comando)

ROLLBACK (Comando)

SET ANSI (Comando)

SET AUTOSAVE (Comando)

SET BLOCKSIZE (Comando)

SET CARRY (Comando)

SET CENTURY (Comando)

SET COLLATE (Comando)

SET CONFIRM (Comando)

SET CURRENCY (Comando)

SET DATABASE (Comando)

SET DATE (Comando)

SET DECIMALS (Comando)

SET DELETED (Comando)

SET DELIMITERS (Comando)

SET EXACT (Comando)

SET EXCLUSIVE (Comando)

SET FIELDS (Comando)

SET FIXED (Comando)

SET LOCK (Comando)

SET MARK TO (Comando)

SET MEMOWIDTH (Comando)

SET MULTILOCKS (Comando)

SET NEAR (Comando)

SET NULL (Comando)

SET PATH (Comando)

SET POINT (Comando)

SET REFRESH (Comando)

SET REPROCESS (Comando)

SET SAFETY (Comando)

SET SEPARATOR (Comando)

SET TALK (Comando)

SET UNIQUE (Comando)


Entorno de Visual FoxPro

Los comandos y funciones enumerados en esta sección hacen posible el acceso al entorno de Microsoft Visual FoxPro.

En esta sección

Entorno
Contiene comandos y funciones que hacen posible administrar un amplio rango de parámetros del sistema Visual FoxPro y su entorno.
Administración de archivos
Contiene comandos y funciones para administrar y manejar archivos en discos.

Secciones relacionadas

Categorías del lenguaje
Proporciona una lista de las funcionalidades del lenguaje y sus descripciones.
Uso de Visual FoxPro
Discute cómo las características de programación de Visual FoxPro son diseñadas para mejorar la productividad del desarrollador, incluyendo métodos Access y Assign, soporte para más formatos gráficos y lenguaje para simplificar las tareas de programación.
Desarrollar aplicaciones Visual FoxPro
Incluye información conceptual de cómo desarrollar aplicaciones Visual FoxPro, las instrucciones para crear bases de datos e interfaz de usuario, y otras tareas necesarias para crear aplicaciones Visual FoxPro.
Programar en Visual FoxPro
Discute cómo acceder acceder al máximo poder de Visual FoxPro creando aplicaciones. Entender las técnicas de programación orientada a objetos y el modelo controlado por eventos (event-driven) puede maximizar la productividad de la programación.


Entorno

Estos comandos y funciones permiten administrar diversos parámetros de sistema y entorno de Microsoft Visual FoxPro.

ADIR( ) (Función)

ADLLS( ) (Función)

ALANGUAGE( ) (Función)

APROCINFO( )

ASSIST (Comando)

ASESSIONS( ) (Función)

ASTACKINFO( ) (Función)

_BROWSER (Variable del sistema)

_BUILDER (Variable del sistema)

CAPSLOCK( ) (Función)

COL( ) (Función)

CREATE COLOR SET (Comando)

CREATE VIEW (Comando)

DECLARE - DLL (Comando)

DIR o DIRECTORY (Comando)

DISKSPACE( ) (Función)

DISPLAY DLLS (Comando)

DISPLAY STATUS (Comando)

FKLABEL( ) (Función)

FKMAX( ) (Función)

FONTMETRIC( ) (Función)

_GALLERY (Variable del sistema)

_GENHTML (Variable del sistema)

GETCOLOR( ) (Función)

GETCP( ) (Función)

GETENV( ) (Función)

_GETEXPR (Variable del sistema)

GETFILE( ) (Función)

GETFONT( ) (Función)

GETPEM( ) (Función)

HOME( ) (Función)

HELP (Comando)

IMESTATUS( ) (Función)

_INCLUDE (Variable del sistema)

INKEY( ) (Función)

INSMODE( ) (Función)

ISCOLOR( ) (Función)

ISMOUSE( ) (Función)

LIST DLLS (Comando)

LIST STATUS (Comando)

LOCFILE( ) (Función)

MEMORY( ) (Función)

MESSAGE( ) (Función)

NUMLOCK( ) (Función)

_OBJECTBROWSER (Variable del sistema)

OBJTOCLIENT( ) (Función)

OS( ) (Función)

PCOL( ) (Función)

PEMSTATUS( ) (Función)

PROW( ) (Función)

PUTFILE( ) (Función)

QUIT (Comando)

READKEY( ) (Función)

RGB( ) (Función)

ROW( ) (Función)

SCHEME( ) (Función)

_SCREEN (Variable del sistema)

SET( ) (Función)

SET (Comando)

SET ANSI (Comando)

SET BELL (Comando)

SET BLOCKSIZE (Comando)

SET CENTURY (Comando)

SET CLEAR (Comando)

SET CLOCK (Comando)

SET CPDIALOG (Comando)

SET COLOR OF (Comando)

SET COLOR OF SCHEME (Comando)

SET COLOR SET (Comando)

SET COMPATIBLE (Comando)

SET CURRENCY (Comando)

SET DATE (Comando)

SET DEBUG (Comando)

SET DEFAULT (Comando)

SET DISPLAY (Comando)

SET FDOW (Comando)

SET FIXED (Comando)

SET FUNCTION (Comando)

SET FWEEK (Comando)

SET HELP (Comando)

SET INTENSITY (Comando)

SET KEYCOMP (Comando)

SET LIBRARY (Comando)

SET MARK TO (Comando)

SET NOTIFY (Comando)

SET PATH (Comando)

SET POINT (Comando)

SET RESOURCE (Comando)

SET SEPARATOR (Comando)

SET STATUS BAR (Comando)

SET SYSFORMATS (Comando)

SET TALK (Comando)

SET TEXTMERGE (Comando)

SET TEXTMERGE DELIMITERS (Comando)

SET TOPIC (Comando)

SET TOPIC ID (Comando)

SET TYPEAHEAD (Comando)

SET VIEW (Comando)

SYS(3) - Nombre legal de archivo

SYS(5) - Unidad predeterminada

SYS(6) - Dispositivo actual de impresora

SYS(7) - Archivo de formato actual

SYS(9) - Número de serie de Visual FoxPro

SYS(12) - Memoria disponible en bytes

SYS(16) - Nombre de archivo del programa en ejecución

SYS(17) - Procesador en uso

SYS(18) - Control actual

SYS(24) - Límite de memoria EMS

SYS(100) - Configuración de CONSOLE

SYS(101) - Configuración de DEVICE

SYS(102) - Configuración de PRINTER

SYS(103) - Configuración de TALK

SYS(1001) - Memoria de Visual FoxPro

SYS(1016) - Uso de memoria de objeto de usuario

SYS(1023) - Activar modo de diagnóstico de Ayuda

SYS(1024) - Desactivar modo de diagnóstico de Ayuda

SYS(1269) - Información de propiedad

SYS(1270) - Ubicación de objetos

SYS(1271) - Archivo .SCX del objeto

SYS(1272) - Jerarquía de objetos

SYS(2001) - Estado de comandos SET ...

SYS(2003) - Directorio actual

SYS(2004) - Directorio de inicio de Visual FoxPro

SYS(2005) - Archivo actual de recursos

SYS(2006) - Tarjeta gráfica actual

SYS(2010) - Configuración del archivo CONFIG.SYS

SYS(2013) - Cadena de nombre de menú del sistema

SYS(2016) - Nombre SHOW GETS WINDOW

SYS(2019) - Nombre y ubicación del archivo de configuración

SYS(2020) - Tamaño predeterminado de disco

SYS(2022) - Tamaño del clúster (bloque) del disco

SYS(2023) - Ruta de acceso temporales

SYS(2334) - Modo de invocación de servidor de automatización

SYS(2800) - Soporte de accesibilidad

SYS(3004) - Devolver Id. de configuración regional

SYS(3005) - Establecer Id. de configuración regional

SYS(3006) - Establecer los Id. de idioma y de configuración regional

SYS(3050) - Establecer tamaño de memoria de búfer

SYS(3053) - Controlador de entorno ODBC

SYS(3056) - Leer valores del registro

SYS(3095) - Puntero IDispatch

SYSMETRIC( ) (Función)

_TASKLIST (Variable del sistema)

TXTWIDTH( ) (Función)

VERSION( ) (Función)

WFONT( ) (Función)

_WIZARD (Variable del sistema)


Administración de archivos

Estos comandos y funciones administran y manipulan archivos de disco.

ADDBS( ) (Función)

ADIR( ) (Función)

ASSIST (Comando)

CD | CHDIR (Comando)

CLOSE ALL (Comando)

CLOSE ALTERNATE (Comando)

CLOSE DATABASES (Comando)

CLOSE FORMAT (Comando)

CLOSE INDEXES (Comando)

CLOSE PROCEDURE (Comando)

COPY FILE (Comando)

CREATE VIEW (Comando)

CURDIR( ) (Función)

DEFAULTEXT( ) (Función)

DELETE FILE (Comando)

DIR o DIRECTORY (Comando)

DISPLAY FILES (Comando)

DISKSPACE( ) (Función)

DRIVETYPE( ) (Función)

EDITSOURCE( ) (Función)

ERASE (Comando)

FDATE( ) (Función)

FTIME( ) (Función)

FILE( ) (Función)

FILETOSTR( ) (Función)

FLUSH (Comando)

FORCEEXT( ) (Función)

FORCEPATH( ) (Función)

FULLPATH( ) (Función)

GETFILE( ) (Función)

GETPICT( ) (Función)

ISNULL( ) (Función)

JUSTDRIVE( ) (Función)

JUSTEXT( ) (Función)

JUSTFNAME( ) (Función)

JUSTPATH( ) (Función)

JUSTSTEM( ) (Función)

LIST FILES (Comando)

LOCFILE( ) (Función)

MD | MKDIR (Comando)

MODIFY COMMAND (Comando)

MODIFY FILE (Comando)

NVL( ) (Función)

OPEN DATABASE (Comando)

PUTFILE( ) (Función)

RD | RMDIR (Comando)

RENAME (Comando)

SET ALTERNATE (Comandos)

SET DEFAULT (Comando)

SET FULLPATH (Comando)

SET PATH (Comando)

SET SAFETY (Comando)

SET VIEW (Comando)

STRTOFILE( ) (Función)

SYS(3) - Nombre legal de archivo

SYS(2000) - Coincidencia comodín de nombre de archivo

SYS(2014) - Ruta de acceso mínima

TYPE (Comando)


Comandos

Comandos SET de Visual FoxPro compatibles con el Proveedor OLE DB

Comandos y funciones de Visual FoxPro no compatibles con el proveedor OLE DB

Para información acerca de la compatibilidad con versiones anteriores del lenguaje de referencia, vea Elementos del lenguaje compatibles con versiones anteriores.

Símbolos

& (Comando)

&& (Comando)

* (Comando)

#NAME?

? | ?? (Comando)

??? (Comando)

@ ... BOX (Comando)

@ ... CLASS (Comando)

@ ... CLEAR (Comando)

@ ... EDIT - Cuadros de edición (Comando)

@ ... FILL (Comando)

@ ... GET - Botones de comando (Comando)

@ ... GET - Botones de opción (Comando)

@ ... GET - Botones transparentes (Comando)

@ ... GET - Casillas de verificación (Comando)

@ ... GET - Controles numéricos (Comando)

@ ... GET - Cuadros combinados (Comando)

@ ... GET - Cuadros de lista (Comando)

@ ... GET - Cuadros de texto (Comando)

@ ... MENU (Comando)

@ ... PROMPT (Comando)

@ ... SAY - Imágenes y objetos OLE (Comando)

@ ... SAY (Comando)

@ ... SCROLL (Comando)

@ ... TO (Comando)

\ | \\ (Comando)

A

ACTIVATE MENU (Comando)

ACTIVATE POPUP (Comando)

ACTIVATE SCREEN (Comando)

ACTIVATE WINDOW (Comando)

ADD CLASS (Comando)

ADD TABLE (Comando)

ALTER TABLE - SQL (Comando)

APPEND (Comando)

APPEND FROM ARRAY (Comando)

APPEND FROM (Comando)

APPEND GENERAL (Comando)

APPEND MEMO (Comando)

APPEND PROCEDURES (Comando)

ASSERT (Comando)

ASSIST (Comando)

AVERAGE (Comando)

B

BEGIN TRANSACTION (Comando)

BLANK (Comando)

BROWSE (Comando)

BUILD APP (Comando)

BUILD DLL (Comando)

BUILD EXE (Comando)

BUILD MTDLL (Comando)

BUILD PROJECT (Comando)

C

CALCULATE (Comando)

CALL (Comando)

CANCEL (Comando)

CD | CHDIR (Comando)

CHANGE (Comando)

CLEAR (Comandos)

CLOSE (Comandos)

CLOSE MEMO (Comando)

COMPILE (Comando)

COMPILE DATABASE (Comando)

COMPILE FORM (Comando)

CONTINUE (Comando)

COPY FILE (Comando)

COPY INDEXES (Comando)

COPY MEMO (Comando)

COPY PROCEDURES (Comando)

COPY STRUCTURE (Comando)

COPY STRUCTURE EXTENDED (Comando)

COPY TAG (Comando)

COPY TO ARRAY (Comando)

COPY TO (Comando)

COUNT(Comando)

CREATE CLASS (Comando)

CREATE CLASSLIB (Comando)

CREATE COLOR SET (Comando)

CREATE (Comando)

CREATE CONNECTION (Comando)

CREATE CURSOR - SQL (Comando)

CREATE DATABASE (Comando)

CREATE FORM (Comando)

CREATE FROM (Comando)

CREATE LABEL (Comando)

CREATE MENU (Comando)

CREATE PROJECT (Comando)

CREATE QUERY (Comando)

CREATE REPORT - Informe rápido (Comando)

CREATE REPORT (Comando)

CREATE SCREEN - Pantalla rápida (Comando)

CREATE SCREEN (Comando)

CREATE SQL VIEW (Comando)

CREATE TABLE - SQL (Comando)

CREATE TRIGGER (Comando)

CREATE VIEW (Comando)

D

DEACTIVATE MENU (Comando)

DEACTIVATE POPUP (Comando)

DEACTIVATE WINDOW (Comando)

DEBUG (Comando)

DEBUGOUT (Comando)

DECLARE - DLL (Comando)

DECLARE (Comando)

DEFINE BAR (Comando)

DEFINE BOX (Comando)

DEFINE CLASS (Comando)

DEFINE MENU (Comando)

DEFINE PAD (Comando)

DEFINE POPUP (Comando)

DEFINE WINDOW (Comando)

DELETE - SQL (Comando)

DELETE (Comando)

DELETE CONNECTION (Comando)

DELETE DATABASE (Comando)

DELETE FILE (Comando)

DELETE TAG (Comando)

DELETE TRIGGER (Comando)

DELETE VIEW (Comando)

DIMENSION (Comando)

DIR o DIRECTORY (Comando)

DISPLAY (Comando)

DISPLAY CONNECTIONS (Comando)

DISPLAY DATABASE (Comando)

DISPLAY DLLS (Comando)

DISPLAY FILES (Comando)

DISPLAY MEMORY (Comando)

DISPLAY OBJECTS (Comando)

DISPLAY PROCEDURES (Comando)

DISPLAY STATUS (Comando)

DISPLAY STRUCTURE (Comando)

DISPLAY TABLES (Comando)

DISPLAY VIEWS (Comando)

DO CASE ... ENDCASE (Comando)

DO (Comando)

DO FORM (Comando)

DO WHILE ... ENDDO (Comando)

DOCK WINDOW (Comando)

DOEVENTS (Comando)

DROP TABLE (Comando)

DROP VIEW (Comando)

E

EDIT (Comando)

EJECT (Comando)

EJECT PAGE (Comando)

END TRANSACTION (Comando)

ERASE (Comando)

ERROR (Comando)

EXIT (Comando)

EXPORT (Comando)

EXTERNAL (Comando)

F

FIND (Comando)

FLUSH (Comando)

FOR EACH ... ENDFOR (Comando)

FOR ... ENDFOR (Comando)

FREE TABLE (Comando)

FUNCTION (Comando)

G

GATHER (Comando)

GETEXPR (Comando)

GO | GOTO (Comando)

H

HELP (Comando)

HIDE MENU (Comando)

HIDE POPUP (Comando)

HIDE WINDOW (Comando)

I

IF ... ENDIF (Comando)

IMPORT (Comando)

INDEX (Comando)

INPUT (Comando)

INSERT - SQL (Comando)

INSERT (Comando)

J

JOIN (Comando)

K

KEYBOARD (Comando)

L

LABEL (Comando)

LIST (Comandos)

LIST CONNECTIONS (Comando)

LIST DATABASE (Comando)

LIST DLLS (Comando)

LIST OBJECTS (Comando)

LIST PROCEDURES (Comando)

LIST TABLES (Comando)

LIST VIEWS (Comando)

LOAD (Comando)

LOCAL (Comando)

LOCATE (Comando)

LOOP (Comando)

LPARAMETERS (Comando)

M

MD | MKDIR (Comando)

MENU (Comando)

MENU TO (Comando)

MODIFY CLASS (Comando)

MODIFY COMMAND (Comando)

MODIFY CONNECTION (Comando)

MODIFY DATABASE (Comando)

MODIFY FILE (Comando)

MODIFY FORM (Comando)

MODIFY GENERAL (Comando)

MODIFY LABEL (Comando)

MODIFY MEMO (Comando)

MODIFY MENU (Comando)

MODIFY PROCEDURE (Comando)

MODIFY PROJECT (Comando)

MODIFY QUERY (Comando)

MODIFY REPORT (Comando)

MODIFY SCREEN (Comando)

MODIFY STRUCTURE (Comando)

MODIFY VIEW (Comando)

MODIFY WINDOW (Comando)

MOUSE (Comando)

MOVE POPUP (Comando)

MOVE WINDOW (Comando)

N

NOTE (Comando)

O

ON BAR (Comando)

ON ERROR (Comando)

ON ESCAPE (Comando)

ON EXIT BAR (Comando)

ON EXIT MENU (Comando)

ON EXIT PAD (Comando)

ON EXIT POPUP (Comando)

ON KEY = (Comando)

ON KEY (Comando)

ON KEY LABEL (Comando)

ON PAD (Comando)

ON PAGE (Comando)

ON READERROR (Comando)

ON SELECTION BAR (Comando)

ON SELECTION MENU (Comando)

ON SELECTION PAD (Comando)

ON SELECTION POPUP (Comando)

ON SHUTDOWN (Comando)

OPEN DATABASE (Comando)

P

PACK (Comando)

PACK DATABASE (Comando)

PARAMETERS (Comando)

PLAY MACRO (Comando)

POP KEY (Comando)

POP MENU (Comando)

POP POPUP (Comando)

PRINTJOB ... ENDPRINTJOB (Comando)

PRIVATE (Comando)

PROCEDURE (Comando)

PUBLIC (Comando)

PUSH KEY (Comando)

PUSH MENU (Comando)

PUSH POPUP (Comando)

Q

QUIT (Comando)

R

RD | RMDIR (Comando)

READ (Comando)

READ EVENTS (Comando)

READ MENU (Comando)

RECALL (Comando)

REINDEX (Comando)

RELEASE BAR (Comando)

RELEASE CLASSLIB (Comando)

RELEASE (Comando)

RELEASE LIBRARY (Comando)

RELEASE MENUS (Comando)

RELEASE PAD (Comando)

RELEASE POPUPS (Comando)

RELEASE PROCEDURE (Comando)

RELEASE WINDOWS (Comando)

REMOVE CLASS (Comando)

REMOVE TABLE (Comando)

RENAME CLASS (Comando)

RENAME (Comando)

RENAME CONNECTION (Comando)

RENAME TABLE (Comando)

RENAME VIEW (Comando)

REPLACE (Comando)

REPLACE FROM ARRAY (Comando)

REPORT (Comando)

RESTORE FROM (Comando)

RESTORE MACROS (Comando)

RESTORE SCREEN (Comando)

RESTORE WINDOW (Comando)

RESUME (Comando)

RETRY (Comando)

RETURN (Comando)

ROLLBACK (Comando)

RUN | (Comando)

S

SAVE MACROS (Comando)

SAVE SCREEN (Comando)

SAVE TO (Comando)

SAVE WINDOWS (Comando)

SCAN ... ENDSCAN (Comando)

SCATTER (Comando)

SCROLL (Comando)

SEEK (Comando)

SELECT - SQL (Comando)

SELECT (Comando)

SET ALTERNATE (Comando)

SET ANSI (Comando)

SET ASSERTS (Comando)

SET AUTOINCERROR (Comando)

SET AUTOSAVE (Comando)

SET BELL (Comando)

SET BLOCKSIZE (Comando)

SET BORDER (Comando)

SET BROWSEIME (Comando)

SET BRSTATUS (Comando)

SET CARRY (Comando)

SET CENTURY (Comando)

SET CLASSLIB (Comando)

SET CLEAR (Comando)

SET CLOCK (Comando)

SET COLLATE (Comando)

SET COLOR OF (Comando)

SET COLOR OF SCHEME (Comando)

SET COLOR SET (Comando)

SET COLOR TO (Comando)

SET (Comando)

SET COMPATIBLE (Comando)

SET CONFIRM (Comando)

SET CONSOLE (Comando)

SET COVERAGE (Comando)

SET CPCOMPILE (Comando)

SET CPDIALOG (Comando)

SET CURRENCY (Comando)

SET CURSOR (Comando)

SET DATABASE (Comando)

SET DATASESSION (Comando)

SET DATE (Comando)

SET DEBUG (Comando)

SET DEBUGOUT (Comando)

SET DECIMALS (Comando)

SET DEFAULT (Comando)

SET DELETED (Comando)

SET DELIMITERS (Comando)

SET DEVELOPMENT (Comando)

SET DEVICE (Comando)

SET DISPLAY (Comando)

SET DOHISTORY (Comando)

SET ECHO (Comando)

SET ENGINEBEHAVIOR (Comando)

SET ESCAPE (Comando)

SET EVENTLIST (Comando)

SET EVENTTRACKING (Comando)

SET EXACT (Comando)

SET EXCLUSIVE (Comando)

SET FDOW (Comando)

SET FIELDS (Comando)

SET FILTER (Comando)

SET FIXED (Comando)

SET FORMAT (Comando)

SET FULLPATH (Comando)

SET FUNCTION (Comando)

SET FWEEK (Comando)

SET HEADINGS (Comando)

SET HELP (Comando)

SET HOURS (Comando)

SET INDEX (Comando)

SET INTENSITY (Comando)

SET KEY (Comando)

SET KEYCOMP (Comando)

SET LIBRARY (Comando)

SET LOCK (Comando)

SET LOGERRORS (Comando)

SET MACKEY (Comando)

SET MARGIN (Comando)

SET MARK OF (Comando)

SET MARK TO (Comando)

SET MEMOWIDTH (Comando)

SET MESSAGE (Comando)

SET MULTILOCKS (Comando)

SET NEAR (Comando)

SET NOCPTRANS (Comando)

SET NOTIFY (Comando)

SET NULL (Comando)

SET NULLDISPLAY (Comando)

SET ODOMETER (Comando)

SET OLEOBJECT (Comando)

SET OPTIMIZE (Comando)

SET ORDER (Comando)

SET PALETTE (Comando)

SET PATH (Comando)

SET PDSETUP (Comando)

SET POINT (Comando)

SET PRINTER (Comando)

SET PROCEDURE (Comando)

SET READBORDER (Comando)

SET REFRESH (Comando)

SET RELATION (Comando)

SET RELATION OFF (Comando)

SET REPROCESS (Comando)

SET RESOURCE (Comando)

SET SAFETY (Comando)

SET SECONDS (Comando)

SET SEPARATOR (Comando)

SET SKIP (Comando)

SET SKIP OF (Comando)

SET SPACE (Comando)

SET STATUS BAR (Comando)

SET STATUS (Comando)

SET STEP (Comando)

SET STRICTDATE (Comando)

SET SYSFORMATS (Comando)

SET SYSMENU (Comando)

SET TABLEVALIDATE (Comando)

SET TALK (Comando)

SET TEXTMERGE (Comando)

SET TEXTMERGE DELIMITERS (Comando)

SET TOPIC (Comando)

SET TOPIC ID (Comando)

SET TRBETWEEN (Comando)

SET TYPEAHEAD (Comando)

SET UDFPARMS (Comando)

SET UNIQUE (Comando)

SET VIEW (Comando)

SET WINDOW OF MEMO (Comando)

SHOW GET (Comando)

SHOW GETS (Comando)

SHOW MENU (Comando)

SHOW OBJECT (Comando)

SHOW POPUP (Comando)

SHOW WINDOW (Comando)

SIZE POPUP (Comando)

SIZE WINDOW (Comando)

SKIP (Comando)

SORT (Comando)

STORE (Comando)

SUM (Comando)

SUSPEND (Comando)

SYS(2001) - Estado de comandos SET ...

T

TEXT ... ENDTEXT (Comando)

TOTAL (Comando)

TRY...CATCH...FINALLY (Comando)

TYPE (Comando)

U

UNLOCK (Comando)

UPDATE - SQL (Comando)

UPDATE (Comando)

USE (Comando)

V

VALIDATE DATABASE (Comando)

W

WAIT (Comando)

WITH ... ENDWITH (Comando)

X

Y

Z

ZAP (Comando)

ZOOM WINDOW (Comando)


& (Comando)

Realiza una sustitución de macro.

& VarName[.cExpression]

Parámetros

& VarName
Especifica el nombre de la variable o del elemento de matriz al que se hace referencia en la sustitución de macro. No incluya el prefijo M., que distingue las variables de los campos. Esto causaría un error de sintaxis. La macro no debe superar la longitud máxima de instrucción permitida en Visual FoxPro.

Una variable no puede hacer referencia a sí misma de forma recursiva en una sustitución de macro. Por ejemplo, lo siguiente genera un mensaje de error:

STORE '&gcX' TO gcX
? &gcX

Las instrucciones de sustitución de macro que aparecen en DO WHILE, FOR y SCAN se evalúan únicamente al inicio del bucle y no se vuelven a evaluar en los bucles posteriores. No se reconocen los cambios efectuados en la variable o en el elemento de matriz que ocurran dentro del bucle.

.cExpression
El delimitador opcional punto (.) y .cExpression se utilizan para anexar caracteres adicionales a una macro. cExpression anexada a la macro con cExpression también puede ser una macro. Si cExpression es un nombre de propiedad, incluya un punto adicional (cExpression..PropertyName).

Observaciones

La sustitución de macro trata el contenido de una variable o un elemento de matriz como un literal de cadena de carácteres. Cuando un signo (&) precede a una variable o un elemento de matriz de tipo carácter, el contenido de la variable o el elemento sustituye a la referencia de la macro. Puede utilizar la sustitución de macro en cualquier comando o función que acepte un literal de cadena de caracteres.

Sugerencia Siempre que sea posible, utilice una expresión de nombre en lugar de una sustitución de macro. Una expresión de nombre se comporta como una sustitución de macro. Sin embargo, una expresión de nombre está limitada a transferir cadenas de caracteres como nombres. Utilice una expresión de nombre para acelerar el proceso de forma significativa si un comando o una función acepta un nombre (un nombre de archivo, un nombre de ventana, un nombre de nenú, etc.). Para obtener más información sobre las expresiones de nombre, vea Crear expresiones de tipo Nombre.

Aunque los comandos siguientes son aceptables:

STORE 'customer' TO gcTableName
STORE 'company'  TO gcTagName
USE &gcTableName ORDER &gcTagName

utilice en cambio una expresión de nombre:

USE (gcTableName) ORDER (gcTagName)

La sustitución de macro es útil para reemplazar una palabra clave en un comando. En el ejemplo siguiente, la configuración de TALK se guarda en una variable para que pueda restaurarse más adelante en el programa. La configuración original de TALK se restaura mediante una sustitución de macro.

Ejemplo

STORE SET('TALK') TO gcSaveTalk
SET TALK OFF
*
*  código del programa
*
SET TALK &gcSaveTalk  && Recupera el valor original de TALK

Vea también

Comandos | STORE (Comando) | && (Comando) | Sustitución de macros


&& (Comando)

Indica el principio de un comentario en línea no ejecutable en un archivo de programa.

&& [Comments]

Parámetros

Comments
Indica que a continuación aparece un comentario en línea. Por ejemplo:
STORE (20*12) TO gnPayments  && 20 años de pagos mensuales

La inserción de observaciones en línea para indicar el final de los comandos de programación estructurados IF ... ENDIF, DO y FOR ... ENDFOR mejora significativamente la legibilidad de los programas.

Observaciones

Escriba punto y coma (;) al final de cada línea de comentario que continúe en la línea siguiente.

Nota En versiones anteriores de Visual FoxPro, no puede colocar && y un comentario después de un punto y coma que es utilizado para continuar la línea de comando a una línea adicional.

Ejemplo

NOTE  Inicializar la variable número;
de página.
STORE 1 to gnPageNum
* establecer el lazo
DO WHILE gnPageNum <= 25  && loop 25 times
gnPageNum = gnPageNum + 1
ENDDO  && DO WHILE gnPageNum <= 25

Vea también

* (Comando) | MODIFY COMMAND (Comando) | MODIFY FILE (Comando) | NOTE (Comando) | & (Comando)


* (Comando)

Indica el comienzo de una línea de observaciones no ejecutable en un archivo de programa.

* [Comments]

Parámetros

Comments
Especifica el comentario en la línea de observaciones. Por ejemplo:
*   This is a comment

Observaciones

Escriba punto y coma (;) al final de cada línea de comentario que continúe en la línea siguiente.

Ejemplo

* Initialize the page number;
variable.
STORE 1 to gnPageNum
* Set up the loop
DO WHILE gnPageNum <= 25  && loop 25 times
gnPageNum = gnPageNum + 1
ENDDO  && DO WHILE gnPageNum <= 25

Vea también

&& (Comando) | MODIFY COMMAND (Comando) | MODIFY FILE (Comando) | NOTE (Comando)


? | ?? (Comando)

Evalúa expresiones y muestra los resultados.

? | ?? Expression1 [PICTURE cFormatCodes] | [FUNCTION cFormatCodes] | [VnWidth] [AT nColumn] [FONT cFontName [, nFontSize] [STYLE cFontStyle | Expression2]] [, Expression3] ...

Parámetros

? Expression1
Evalúa la expresión especificada mediante Expression1 y envía un retorno de carro y un avance de línea antes de los resultados de la expresión. Los resultados se muestran en la siguiente línea de la ventana principal de Visual FoxPro o de la ventana activa definida por el usuario y se imprimen en el margen izquierdo de la página, a menos que se especifique lo contrario mediante un código de función cFormatCodes o la variable del sistema _ALIGNMENT.

Si omite las expresiones, se mostrará o se imprimirá una línea en blanco. Cuando se incluyen varias expresiones, se inserta un espacio en blanco entre los resultados de las expresiones.

Si Expression1es un objeto, ? devuelve la cadena de caracteres (Object)".

?? Expression1
Evalúa la expresión especificada mediante Expression1 y muestra los resultados de la expresión en la línea actual, en la posición actual de la ventana principal de Visual FoxPro, en una ventana activa definida por el usuario o en la impresora. No se envía un retorno de carro ni un avance de línea antes de los resultados.
PICTURE cFormatCodes
Especifica un formato de imagen en el que se muestra el resultado de Expression1. cFormatCodes puede contener códigos de función, códigos de imagen o una combinación de ambos. Puede utilizar los mismos códigos disponibles en la propiedad Format y en la propiedad InputMask.

Los códigos de función afectan al formato global del resultado; los códigos de imagen actúan sólo sobre caracteres individuales del resultado. Si se utilizan códigos de función en cFormatCodes, deberán aparecer antes de los códigos de imagen e ir precedidos de @. Es posible que varios códigos de función aparezcan inmediatamente después del signo @, sin que haya espacios entre ellos. El último código de función debe ir seguido de uno o más espacios. El espacio o los espacios indican el final de los códigos de función y el principio de los códigos de imagen.

FUNCTION cFormatCodes
Especifica un código de función que se desea incluir en el resultado de ? y ??. Si se incluye la cláusula de función, los códigos de función no deben ir precedidos de @. Los códigos de función deben ir precedidos de @ cuando se incluyen en PICTURE.
VnWidth
Especifica un código de función especial que permite que los resultados de una expresión de carácteres se extiendan verticalmente en un número limitado de columnas. nWidth especifica el número de columnas del resultado.
? 'This is an example of how the V function code works.' ;
FUNCTION 'V10'
AT nColumn
Especifica el número de la columna en que aparece el resultado. Esta opción permite alinear el resultado en columnas para crear una tabla. La expresión numérica nColumn puede ser una función definida por el usuario que devuelva un valor numérico.
FONT cFontName [, nFontSize]
Especifica una fuente para el resultado de ? | ?? cFontName especifica el nombre de la fuente y nFontSize especifica el tamaño en puntos. Por ejemplo, el comando siguiente muestra la fecha del sistema con la fuente Courier de 16 puntos:
? DATE( ) FONT 'Courier',16

Si incluye la cláusula FONT pero omite el tamaño en puntos nFontSize, se usará una fuente de 10 puntos.

Si omite la cláusula FONT y el resultado de ? | ?? se sitúa en la ventana principal de Visual FoxPro, se utilizará para el resultado la fuente de la ventana principal de Visual FoxPro. Si omite la cláusula FONT y el resultado de ? | ?? se sitúa en una ventana definida por el usuario, se utilizará para el resultado la fuente de la ventana definida por el usuario.

  • Si la fuente especificada no está disponible, se sustituirá por una fuente de características similares.
STYLE cFontStyle
Especifica un estilo de fuente para el resultado de ? | ?? . Si omite la cláusula STYLE, se utiliza el estilo de fuente Normal. Si el estilo de fuente especificado no está disponible, se sustituye por otro de características similares.
Nota Debe incluir la cláusula FONT cuando especifique un estilo de fuente mediante la cláusula STYLE.

Éstos son los estilos de fuente que puede especificar con cFontStyle:

Character | Estilo de la fuente
B | Negrita
I | Cursiva
N | Normal
O | Contorno
Q | Opaco
S | Sombra
- Tachado
T | Transparente
U | Subrayado

Puede incluir más de un carácter para especificar una combinación de estilos de fuente. Por ejemplo, el comando siguiente muestra la fecha del sistema en Courier negrita y cursiva:

? DATE( ) FONT 'COURIER' STYLE 'BI'

Observaciones

? y ?? evalúan expresiones y envían los resultados a la ventana principal de Visual FoxPro, a una ventana activa definida por el usuario o a la impresora.

Si SET PRINTER está definido como ON, los resultados de la expresión se dirigirán a la impresora y a la ventana principal de Visual FoxPro o a una ventana activa definida por el usuario. Si SET PRINTER está definido como ON y SET CONSOLE está definido como OFF, los resultados se dirigirán únicamente a la impresora.

Ejemplo

? 15 * (10+10)
? 'Welcome to ' PICTURE '@!'
?? 'Visual FoxPro'

Vea también

??? (Comando) |@ ... SAY (Comando) | SET MEMOWIDTH (Comando) | SET PRINTER (Comando) | SET SPACE (Comando) | Format (Propiedad) | InputMask (Propiedad)


??? (Comando)

Envía el resultado directamente a la impresora.

??? cExpression

Parámetros

cExpression
Especifica los caracteres que se envían a la impresora.

Observaciones

Tres signos de interrogación envían el contenido de cExpression directamente a la impresora sin aumentar la columna o línea de la impresora. cExpression debe contener códigos de impresora válidos.

Los códigos de control de impresión permiten restablecer la impresora, cambiar los tamaños y estilos de escritura, y activar o desactivar la impresión en negrita. Estos códigos pueden incluir cualquier combinación de caracteres imprimibles o no imprimibles específicos de la impresora que se utilice. Hay varias formas de dirigir códigos de control a la impresora:

  • Utilice CHR( ) y cadenas entre comillas unidas con + para enviar caracteres ASCII directamente a la impresora.
  • Utilice comillas para enviar códigos de impresión o caracteres ASCII.
  • Es posible enviar códigos a la impresora antes de que se inicie la impresión y después de que ésta finalice, con las variables del sistema _PSCODE y _PECODE. Para obtener más información, vea _PSCODE (Variable del sistema) y _PECODE (Variable del sistema).

Los códigos de control de impresión varían de una impresora a otra. La mejor fuente de información acerca de los códigos de control de impresión es el manual suministrado con su impresora.

Vea también

? | ?? (Comando?) | @ ... SAY (Comando) | CHR( ) (Función) | Cuadro de diálogo Imprimir | _PSCODE (Variable del sistema) | _PECODE (Variable del sistema)


@ ... CLASS (Comando)

Crea un control o un objeto que puede activarse con READ.

@ nRow, nColumn CLASS ClassName NAME ObjectName

Parámetros

@ nRow, nColumn
Especifica la posición del control o el objeto. El alto y el ancho del control o el objeto están determinados por los valores de alto y ancho predeterminados de la clase.

Las filas se numeran de arriba a abajo. La primera fila es la número 0 de la ventana principal de Microsoft Visual FoxPro o de una ventana definida por el usuario. En Visual FoxPro, la fila 0 es la fila que se encuentra inmediatamente por debajo de la barra de menús del sistema Visual FoxPro.

Las columnas se numeran de izquierda a derecha. La primera columna es la número 0 de la ventana principal de Visual FoxPro o de una ventana definida por el usuario. Cuando se sitúa un control o un objeto en una ventana definida por el usuario, las coordenadas de fila y columna son relativas a la ventana definida por el usuario, no a la ventana principal de Visual FoxPro.

En Visual FoxPro, una posición en la ventana principal de Visual FoxPro o en una ventana definida por el usuario está determinada por la fuente de la ventana principal de Visual FoxPro o de la ventana definida por el usuario. La mayoría de las fuentes se muestran en una amplia variedad de tamaños y algunas tienen un espacio proporcional. Una fila corresponde al alto de la fuente actual, una columna al ancho medio de letra de la fuente actual.

Es posible colocar el control o el objeto mediante fracciones decimales para coordenadas de fila y columna.

CLASS ClassName
Especifica la clase del control o el objeto. ClassName puede ser una clase de base de Visual FoxPro o una clase definida por el usuario. La tabla siguiente indica las clases de base de Visual FoxPro que pueden especificarse para ClassName.

Nombres de clase de base

CheckBox (Control) | Line (Control)
Column (Objeto) | ListBox (Control)
ComboBox (Control) | OLE Container (Control)
CommandButton (Control) | OLE Bound (Control)
CommandGroup (Control) | OptionButton (Control)
Container (Objeto) | OptionGroup (Control)
Control (Objeto) | Page (Objeto)
Cursor (Objeto) | PageFrame (Control)
Custom (Objeto) | Relation (Objeto)
DataEnvironment (Objeto) | Separator (Objeto)
EditBox (Control) | Shape (Control)
Grid (Control) | Spinner (Control)
Header (Objeto) | TextBox (Control)
Image (Control) | Timer (Control)
Label (Control) |
NAME ObjectName
Especifica el nombre de la variable de referencia al objeto que se va a crear. Las propiedades, los eventos y los métodos orientados a objetos del control o el objeto pueden manipularse al hacer referencia a esta variable.

Observaciones

@ ... CLASS proporciona un paso intermedio para convertir programas y aplicaciones creados en versiones anteriores de FoxPro en los métodos preferidos de programación orientada a objetos de Visual FoxPro. Para obtener información adicional acerca de la compatibilidad con controles de versiones anteriores de FoxPro 2.x, vea Controles y objetos.

Para obtener información acerca de la programación orientada a objetos en Visual FoxPro, vea Programación orientada a objetos.

Ejemplo

El siguiente ejemplo muestra cómo se puede utilizar @ ... CLASS con técnicas de programación empleadas en versiones anteriores de FoxPro (en este ejemplo, el uso de READ para activar controles). @ ... CLASS se utiliza para crear un cuadro de texto cuyas propiedades se pueden cambiar con las técnicas de programación orientada a objetos de Visual FoxPro.

ON KEY LABEL se utiliza para mostrar el cuadro de diálogo Color de Windows al presionar CTRL+I. El control TextBox se coloca en la ventana principal de Visual FoxPro mediante @ ... CLASS, tras lo cual READ activa el cuadro de texto.

CLEAR
ON KEY LABEL CTRL+I _SCREEN.PageFrame1.Page1.goFirstName.BackColor;
= GETCOLOR( )
@ 2,2 SAY 'Press Ctrl+I to change the background color'
@ 4,2 CLASS TextBox NAME goFirstName
READ
CLEAR

Vea también

CREATEOBJECT( ) (Función) | DEFINE CLASS (Comando) | READ (Comando) | _SCREEN (Variable del sistema)


@ ... CLEAR (Comando)

Borra una parte de la ventana principal de Visual FoxPro o de una ventana definida por el usuario.

@ nRow1, nColumn1 [CLEAR | CLEAR TO nRow2, nColumn2]

Parámetros

@ nRow1, nColumn1 CLEAR
Borra un área rectangular cuya esquina superior izquierda empieza en nRow1 y nColumn1, y continúa hasta la esquina inferior derecha de la ventana principal de Visual FoxPro o de una ventana definida por el usuario.
CLEAR TO nRow2, nColumn2
Borra un área rectangular cuya esquina superior izquierda está en nRow1 y nColumn1 y cuya esquina inferior derecha está en nRow2 y nColumn2.

Observaciones

Si omite CLEAR o CLEAR TO, Visual FoxPro borrará la fila nRow1 desde la columna nColumn1 hasta el final de la fila.

Ejemplo

El ejemplo siguiente borra la pantalla, la ventana principal de Visual FoxPro o la ventana definida por el usuario, desde la segunda fila hasta el final de la ventana.

@ 2,0 CLEAR

El ejemplo siguiente borra una zona rectangular. La zona se borra desde la fila 10, columna 0, hasta la fila 20, columna 20.

@ 10,0 CLEAR TO 20,20

Vea también

CLEAR (Comandos) | SET CLEAR (Comando) | _WClear( ) (Rutina de biblioteca API)


@ ... FILL (Comando)

Cambia los colores del texto existente en una zona de la pantalla.

@ nRow1, nColumn1 FILL TO nRow2, nColumn2[COLOR SCHEME nSchemeNumber | COLOR ColorPairList]

Parámetros

@ nRow1, nColumn1
Especifica la esquina superior izquierda del área que se desea cambiar.
FILL TO nRow2, nColumn2
Especifica la esquina inferior derecha del área que se desea cambiar.
COLOR SCHEME nSchemeNumber
Especifica el color del área. Sólo la primera pareja de colores del esquema de colores especificado determina el color del área.
COLOR ColorPairList
Especifica el color del área. Sólo la primera pareja de colores de la lista especificada determina el color del área.

Si omite las cláusulas COLOR SCHEME o COLOR se borrará la parte rectangular. Un área puede borrarse también con @ ... CLEAR.

Observaciones

Este comando cambia los colores del texto de un área rectangular de la ventana principal de Visual FoxPro o de una ventana activa definida por el usuario. Sólo puede establecer los atributos del color de primer plano y de fondo para el texto existente. Cualquier texto enviado a la misma área después de ejecutarse el comando @ ... FILL aparecerá en los colores de la ventana o de la pantalla predeterminada.

Ejemplo

El ejemplo siguiente borra la ventana principal de Visual FoxPro y rellena un área con color.

ACTIVATE SCREEN
CLEAR
@ 4,1 FILL TO 10, 8 COLOR GR+/B

Vea también

@ ... SAY (Comando) | ColorScheme (Propiedad) | FillColor (Propiedad)


@ ... SCROLL (Comando)

Mueve un área de la ventana principal de Visual FoxPro o de una ventana definida por el usuario hacia arriba, hacia abajo, a la izquierda o a la derecha.

@ nRow1, nColumn1 TO nRow2, nColumn2 SCROLL [UP | DOWN | LEFT | RIGHT]   [BY nMoveAmount]

Parámetros

@ nRow1, nColumn1 TO nRow2, nColumn2 SCROLL
Mueve un área rectangular cuya esquina superior izquierda se encuentra en nRow1, nColumn1 y cuya esquina inferior derecha se halla en nRow2, nColumn2.
UP | DOWN | LEFT | RIGHT
Especifica la dirección en que se mueve el área rectangular. Si omite la cláusula de dirección, el área se moverá hacia arriba.
BY nMoveAmount
Especifica cuantas filas o columnas se mueve el área rectangular. Si omite BY nMoveAmount, la zona se moverá una fila o una columna.

Vea también

SCROLL (Comando) | Scrolled (Evento)


\ | \\ (Comando)

Imprime o muestra líneas de texto.

\TextLine

O bien:

\\TextLine

Parámetros

\TextLine
Cuando utilice \, la línea de texto irá precedida de un retorno de carro y un avance de línea.
\\TextLine
Cuando utilice \\, la línea de texto no irá precedida de un retorno de carro ni de un avance de línea.

Los espacios que preceden a \ y \\ no se incluyen en la línea resultante, pero sí se incluyen los espacios escritos a continuación de \ y \\.

Es posible incrustar una expresión en la línea de texto. Si la expresión se incluye entre delimitadores de combinación de texto (<< >> de forma predeterminada) y SET TEXTMERGE está activado (ON), evaluará la expresión y su valor se mostrará como texto.

Observaciones

Los comandos \ y \\ facilitan la combinación de texto en Visual FoxPro. La combinación de texto permite enviar texto a un archivo para crear cartas modelo o programas.

Utilice \ y \\ para dirigir el resultado de una línea de texto al actual archivo de resultado de combinación de texto y a la pantalla. SET TEXTMERGE se utiliza para especificar el archivo de resultado de combinación de texto. Si la combinación de texto no se dirige a un archivo, la línea de texto sólo se mostrará en la ventana principal de Visual FoxPro o en la ventana de resultado activa especificada por el usuario. SET TEXTMERGE NOSHOW impide que el resultado se muestre en la ventana principal de Visual FoxPro o en la ventana activa definida por el usuario.

Ejemplo

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE Customer     && Open customer table
SET TEXTMERGE ON
SET TEXTMERGE TO letter.txt
\<<CDOW(DATE( ))>>, <<CMONTH(DATE( ))>>
\\ <<DAY(DATE( ))>>, <<YEAR(DATE( ))>>
\
\
\Dear <<contact>>
\Additional text
\
\Thank you,
\
\XYZ Corporation
CLOSE ALL
MODIFY FILE letter.txt NOEDIT

Vea también

_PRETEXT (Variable del sistema) | SET TEXTMERGE (Comando) | SET TEXTMERGE DELIMITERS (Comando) | _TEXT (Variable del sistema) | TEXT ... ENDTEXT (Comando)


= (Comando)

Evalúa una o más expresiones.

= Expression1 [, Expression2 ...]

Parámetros

Expression1 [, Expression2 ...]
Especifica la expresión o las expresiones que evalúa el comando =.

Observaciones

El comando = evalúa una o más expresiones, Expression1, Expression2 ...y descarta los valores devueltos. Esto es especialmente útil cuando una función de Visual FoxPro o una función definida por el usuario tiene el efecto deseado pero no es necesario asignar el valor devuelto por la función a una variable, un elemento de matriz o un campo.

Por ejemplo, para activar el modo de inserción, puede utilizar el siguiente comando:

= INSMODE(.T.)

INSMODE devuelve normalmente un valor verdadero (.T.) o falso (.F.). En el ejemplo anterior se ejecuta la función, pero se descarta el valor devuelto.

Si sólo se incluye una expresión (Expression1), el signo igual es opcional.

Nota Hay otros dos usos no relacionados para el signo igual (=). Puede utilizarse como operador en expresiones lógicas para realizar una comparación o para asignar valores a variables y elementos de matrices. En estos dos casos, el signo igual (=) es un operador, no un comando. Vea Operadores relacionales si desea obtener más información acerca de la utilización del signo igual (=) como operador en expresiones lógicas. Vea STORE (Comando) si desea obtener más información acerca de la utilización del signo igual (=) para asignar valores a variables y elementos de matrices.

Vea también

EVALUATE( ) (Función) | INSMODE( ) (Función) | Operadores relacionales | STORE (Comando) | ON KEY = (Comando)


ACTIVATE MENU (Comando)

Muestra y activa una barra de menús.

ACTIVATE MENU MenuBarName   [NOWAIT]   [PAD MenuTitleName]

Parámetros

MenuBarName
Especifica el nombre de la barra de menús que se va a activar.
NOWAIT
Especifica que en tiempo de ejecución el programa no necesita esperar a que el usuario elija un menú en la barra de menús activa o presione la tecla ESC. En cambio, el programa continúa ejecutándose. Un menú activado mediante la opción NOWAIT no devuelve la ejecución del programa a la línea que figura a continuación del comando ACTIVATE MENU cuando se utiliza el comando DEACTIVATE MENU.
PAD MenuTitleName
Especifica el nombre del título de menú seleccionado automáticamente cuando se activa la barra de menús. Si no especifica un nombre de título de menú, se activará de forma predeterminada el primer nombre de título de menú de la barra de menús activada.

Observaciones

Muestra y activa la barra de menús especificada mediante MenuBarName. Este comando funciona en combinación con DEFINE MENU y DEFINE PAD.

Nota Cuando se incluye la barra de menús del sistema de Visual FoxPro (_MSYSMENU) en una aplicación, no es necesario activar el menú. En su lugar, ejecute SET SYSMENU AUTOMATIC.

Ejemplo

El ejemplo siguiente utiliza ACTIVATE MENU para mostrar y activar un sistema de menús definido por el usuario. En primer lugar, se guarda en memoria la barra de menús actual del sistema con SET SYSMENU SAVE y, a continuación, se eliminan todos los títulos de menús del sistema mediante SET SYSMENU TO.

Se crean dos títulos de menú con DEFINE PAD y se emplea DEFINE POPUP para crear un menú desplegable para cada título de menú. DEFINE BAR se usa para crear elementos de menú en cada uno de estos menús. Cuando se elige un título de menú, ON PAD utiliza ACTIVATE POPUP para activar el menú correspondiente. ACTIVATE MENU muestra y activa la barra de menús.

Cuando se elige un elemento de menú de uno de los menús, se ejecuta el procedimiento CHOICE. CHOICE muestra el nombre del elemento elegido y el nombre del menú donde está incluido.

*** Name this program ACTIMENU.PRG ***
CLEAR
SET SYSMENU SAVE
SET SYSMENU TO
ON KEY LABEL ESC KEYBOARD CHR(13)
DEFINE MENU example BAR AT LINE 1
DEFINE PAD convpad OF example PROMPT '\<Conversions' COLOR SCHEME 3 ;
KEY ALT+C, ''
DEFINE PAD cardpad OF example PROMPT 'Card \<Info' COLOR SCHEME 3 ;
KEY ALT+I, ''
ON PAD convpad OF example ACTIVATE POPUP conversion
ON PAD cardpad OF example ACTIVATE POPUP cardinfo
DEFINE POPUP conversion MARGIN RELATIVE COLOR SCHEME 4
DEFINE BAR 1 OF conversion PROMPT 'Ar\<ea' ;
KEY CTRL+E, '^E'
DEFINE BAR 2 OF conversion PROMPT '\<Length' ;
KEY CTRL+L, '^L'
DEFINE BAR 3 OF conversion PROMPT 'Ma\<ss' ;
KEY CTRL+S, '^S'
DEFINE BAR 4 OF conversion PROMPT 'Spee\<d' ;
KEY CTRL+D, '^D'
DEFINE BAR 5 OF conversion PROMPT '\<Temperature' ;
KEY CTRL+T, '^T'
DEFINE BAR 6 OF conversion PROMPT 'T\<ime' ;
KEY CTRL+I, '^I'
DEFINE BAR 7 OF conversion PROMPT 'Volu\<me' ;
KEY CTRL+M, '^M'
ON SELECTION POPUP conversion DO choice IN actimenu;
WITH PROMPT( ), POPUP( )
DEFINE POPUP cardinfo MARGIN RELATIVE COLOR SCHEME 4
DEFINE BAR 1 OF cardinfo PROMPT '\<View Charges' ;
KEY ALT+V, ''
DEFINE BAR 2 OF cardinfo PROMPT 'View \<Payments' ;
KEY ALT+P, ''
DEFINE BAR 3 OF cardinfo PROMPT 'Vie\<w Users' ;
KEY ALT+W, ''
DEFINE BAR 4 OF cardinfo PROMPT '\-'
DEFINE BAR 5 OF cardinfo PROMPT '\<Charges ' ;
KEY ALT+C, ''
ON SELECTION POPUP cardinfo;
DO choice IN actimenu WITH PROMPT( ), POPUP( )
ACTIVATE MENU example
DEACTIVATE MENU example
RELEASE MENU example EXTENDED
SET SYSMENU TO DEFAULT
ON KEY LABEL ESC
PROCEDURE choice
PARAMETERS mprompt, mpopup
WAIT WINDOW 'You chose ' + mprompt + ' from popup ' + mpopup NOWAIT

Vea también

CLEAR (Comandos) | CREATE MENU (Comando) | DEACTIVATE MENU (Comando) | DEFINE MENU (Comando) | DEFINE PAD | HIDE MENU (Comando) | SET SYSMENU | SHOW MENU


ACTIVATE POPUP (Comando)

Muestra y activa un menú.

ACTIVATE POPUP MenuName   [AT nRow, nColumn] [BAR nMenuItemNumber]   [NOWAIT]   [REST]

Parámetros

MenuName
Especifica el nombre del menú que se desea activar.
AT nRow, nColumn
Especifica la posición del menú en la pantalla o en una ventana definida por el usuario. La coordenada de fila y columna se aplica a la esquina superior izquierda del menú. La posición especificada con este argumento tiene prioridad sobre la posición especificada con el argumento FROM en DEFINE POPUP.
BAR nMenuItemNumber
Especifica el elemento del menú que se selecciona cuando se activa el menú. Por ejemplo, si nMenuItemNumber es 2, se seleccionará el segundo elemento. El primer elemento se selecciona si se omite BAR nMenuItemNumber o si nMenuItemNumber es mayor que el número de elementos del menú.
NOWAIT
Especifica que en tiempo de ejecución un programa no tiene que esperar a que el usuario elija un elemento del menú para que continúe la ejecución del programa. En cambio, el programa continúa ejecutándose.
REST
Un menú creado con la cláusula PROMPT FIELD de DEFINE POPUP sitúa registros de un campo en el menú. Cuando se activa el menú, el primer elemento se selecciona inicialmente, aunque el puntero de registro de la tabla que contiene el campo esté situado sobre un registro distinto del primero.

Incluya REST para especificar que el elemento seleccionado al activarse el menú corresponde a la posición actual del puntero de registro en la tabla.

Observaciones

ACTIVATE POPUP funciona en combinación con DEFINE POPUP (utilizado para crear el menú) y DEFINE BAR (utilizado para crear los elementos del menú).

Ejemplo

Este ejemplo utiliza ACTIVATE POPUP con ON PAD para activar un menú cuando se elige un título de menú. En primer lugar, se guarda en memoria la barra de menús actual del sistema con SET SYSMENU SAVE y, a continuación, se eliminan todos los títulos de menús del sistema mediante SET SYSMENU TO.

Se crean dos nuevos títulos de menú del sistema con DEFINE PAD y se emplea DEFINE POPUP con el fin de crear un menú para cada uno de estos títulos. DEFINE BAR se usa para crear elementos de menú en cada uno de estos menús. Cuando se elige un título de menú, ON PAD utiliza ACTIVATE POPUP para activar el menú correspondiente.

Cuando se elige un elemento de un menú, se ejecuta el procedimiento CHOICE. CHOICE muestra el nombre del elemento elegido y el nombre del menú donde está incluido. Si se elige el elemento Salir del menú Info tarjeta, se restaura el menú de sistema original de Visual FoxPro.

*** Name this program ACTIPOP.PRG ***
CLEAR
SET SYSMENU SAVE
SET SYSMENU TO
DEFINE PAD convpad OF _MSYSMENU PROMPT '\<Conversions' COLOR SCHEME 3 ;
KEY ALT+C, ''
DEFINE PAD cardpad OF _MSYSMENU PROMPT 'Card \<Info' COLOR SCHEME 3 ;
KEY ALT+I, ''
ON PAD convpad OF _MSYSMENU ACTIVATE POPUP conversion
ON PAD cardpad OF _MSYSMENU ACTIVATE POPUP cardinfo
DEFINE POPUP conversion MARGIN RELATIVE COLOR SCHEME 4
DEFINE BAR 1 OF conversion PROMPT 'Ar\<ea' KEY CTRL+E, '^E'
DEFINE BAR 2 OF conversion PROMPT '\<Length' ;
KEY CTRL+L, '^L'
DEFINE BAR 3 OF conversion PROMPT 'Ma\<ss' ;
KEY CTRL+S, '^S'
DEFINE BAR 4 OF conversion PROMPT 'Spee\<d' ;
KEY CTRL+D, '^D'
DEFINE BAR 5 OF conversion PROMPT '\<Temperature' ;
KEY CTRL+T, '^T'
DEFINE BAR 6 OF conversion PROMPT 'T\<ime' ;
KEY CTRL+I, '^I'
DEFINE BAR 7 OF conversion PROMPT 'Volu\<me' ;
KEY CTRL+M, '^M'
ON SELECTION POPUP conversion;
DO choice IN actipop WITH PROMPT(), POPUP()
DEFINE POPUP cardinfo MARGIN RELATIVE COLOR SCHEME 4
DEFINE BAR 1 OF cardinfo PROMPT '\<View Charges' ;
KEY ALT+V, ''
DEFINE BAR 2 OF cardinfo PROMPT 'View \<Payments' ;
KEY ALT+P, ''
DEFINE BAR 3 OF cardinfo PROMPT 'Vie\<w Users' ;
KEY ALT+W, ''
DEFINE BAR 4 OF cardinfo PROMPT '\-'
DEFINE BAR 5 OF cardinfo PROMPT '\<Charges' ;
KEY ALT+C, ''
DEFINE BAR 6 OF cardinfo PROMPT '\-'
DEFINE BAR 7 OF cardinfo PROMPT 'E\<xit';
KEY ALT+X, ''
ON SELECTION POPUP cardinfo;
DO choice IN actipop WITH PROMPT(),POPUP()
PROCEDURE choice
PARAMETERS mprompt, mpopup
WAIT WINDOW 'You chose ' + mprompt + ;
' from popup ' + mpopup NOWAIT
IF mprompt = 'Exit'
SET SYSMENU TO DEFAULT
ENDIF

Vea también

CLEAR (Comandos) | CREATE MENU | DEACTIVATE POPUP | DEFINE BAR | DEFINE POPUP | HIDE POPUP | MOVE POPUP | ON SELECTION POPUP | POP POPUP | POPUP( ) | PROMPT( ) | PUSH POPUP | SHOW POPUP


ACTIVATE SCREEN (Comando)

Envía todos los resultados posteriores a la ventana principal de Visual FoxPro, en lugar de enviarlos a la ventana activa definida por el usuario.

ACTIVATE SCREEN

Observaciones

Utilice ACTIVATE WINDOW para dirigir el resultado a una ventana definida por el usuario.

Vea también

ACTIVATE WINDOW | DEACTIVATE WINDOW | DEFINE WINDOW | HIDE WINDOW | SHOW WINDOW


ACTIVATE WINDOW (Comando)

Muestra y activa una o más ventanas definidas por el usuario o ventanas del sistema de Visual FoxPro.

ACTIVATE WINDOW WindowName1 [, WindowName2 ...] | ALL   [IN [WINDOW] WindowName3 | IN SCREEN [BOTTOM | TOP | SAME]    [NOSHOW]

Parámetros

WindowName1 [, WindowName2...]
Especifica el nombre de cada ventana que se desea activar. Separe los nombres de las ventanas con comas. En Visual FoxPro, puede especificar el nombre de una barra de herramientas que desee activar. Vea en SHOW WINDOW una lista con los nombres de barras de herramientas de Visual FoxPro.
ALL
Especifica que se activarán todas las ventanas. La última ventana activada es la ventana activa de resultado.
IN [WINDOW] WindowName3
Especifica el nombre de la ventana primaria en que se coloca y se activa la ventana. La ventana activada se convierte en ventana secundaria. Una ventana primaria puede tener varias ventanas secundarias. Una ventana secundaria activada en una ventana primaria no se puede desplazar fuera de ésta. Si se mueve la ventana primaria, la ventana secundaria se moverá con ella.
Nota La ventana primaria debe ser visible para que pueda verse cualquiera de sus ventanas secundarias.
IN SCREEN
Coloca y activa una ventana en la ventana principal de Visual FoxPro. Puede colocar una ventana en una ventana primaria si incluye IN WINDOW en DEFINE WINDOW en el momento de crear la ventana. Si incluye la cláusula IN SCREEN en ACTIVATE WINDOW, se invalidará la cláusula IN WINDOW de DEFINE WINDOW.
BOTTOM | TOP | SAME
Especifica dónde se activan las ventanas en relación con otras ventanas activadas anteriormente. De forma predeterminada, una ventana se convierte en la ventana de primer plano al activarse. Si se incluye BOTTOM, la ventana se coloca detrás de todas las demás ventanas. TOP la sitúa delante de todas las demás ventanas. SAME activa una ventana sin que ello afecte a su situación en primer plano o detrás de otras ventanas.
NOSHOW
Activa y dirige el resultado a una ventana sin mostrar la ventana.

Observaciones

Para utilizar correctamente este comando en ventanas definidas por el usuario, las ventanas de destino definidas por el usuario deberán haberse creado con el comando DEFINE WINDOW.

Al activar una ventana, ésta se convierte en la ventana de primer plano y se dirigen a ella todos los resultados. El resultado sólo se puede dirigir a una ventana a la vez. Una ventana sigue siendo la ventana activa de resultado hasta que se desactive o se libere, o hasta que se active otra ventana o la ventana principal de Visual FoxPro.

Los nombres de las ventanas definidas por el usuario aparecen en la sección inferior del menú Ventana. El nombre de la ventana activa definida por el usuario se marca con un signo de verificación.

Es posible colocar más de una ventana a la vez en la ventana principal de Visual FoxPro, pero el resultado se dirige únicamente a la última ventana activada. Cuando hay más de una ventana abierta, al desactivar la ventana activa de resultado, se elimina de la ventana principal de Visual FoxPro y se envía el resultado ulterior a otra ventana. Si no hay una ventana activa de resultado, el resultado se dirigirá a la ventana principal de Visual FoxPro.

Nota Para asegurarse de que el resultado se dirige a una ventana específica cuando se desactiva la ventana activa de resultado, debe activar explícitamente la ventana a la que desea enviar el resultado con ACTIVATE WINDOW.

Todas las ventanas activadas se muestran hasta que se ejecuta DEACTIVATE WINDOW o HIDE WINDOW para eliminarlas de la pantalla. La ejecución de cualquiera de estos comandos elimina las ventanas de la pantalla, pero no de la memoria. Es posible volver a mostrar las ventanas al ejecutar ACTIVATE WINDOW o SHOW WINDOW.

Para eliminar ventanas de la pantalla y de la memoria, utilice CLEAR WINDOWS, RELEASE WINDOWS o CLEAR ALL. Las ventanas que se eliminan de la memoria deben volver a definirse para colocarlas nuevamente en la ventana principal de Visual FoxPro.

Puede utilizar ACTIVATE WINDOW para colocar ventanas del sistema de Visual FoxPro en la ventana principal de Visual FoxPro o en una ventana primaria.

Las siguientes ventanas del sistema se pueden abrir con ACTIVATE WINDOW:

  • Comando
  • Pila de llamadas
  • Depurar
  • Resultado del depurador
  • Vista del documento
  • Locales
  • Seguimiento
  • Inspección
  • Vista

Para activar una ventana o una barra de herramientas de sistema (en Visual FoxPro), escriba entre comillas todo el nombre de la ventana o barra de herramientas. Por ejemplo, para activar la barra de herramientas Controles de informe de Visual FoxPro, ejecute el siguiente comando:

ACTIVATE WINDOW "Call Stack"

Históricamente, en versiones anteriores de Visual FoxPro, la ventana Sesión de datos ha sido siempre referida como la ventana View. Adicionalmente, el lenguaje utilizado para controlar esta ventana, tales como HIDE WINDOW, ACTIVATE WINDOW, WONTOP( ), también e refiere a esta ventana y a la ventana View. Visual FoxPro continúa refiriéndose a la ventana View con el comando ACTIVATE WINDOW

Utilice HIDE WINDOW o RELEASE WINDOW para eliminar una ventana del sistema de la ventana primaria de Visual FoxPro o de una ventana primaria.

Ejemplo

El ejemplo siguiente define una ventana llamada resultado y la activa al situarla en la ventana principal de Visual FoxPro. El comando WAIT interrumpe la ejecución, se oculta la ventana y, a continuación, se vuelve a mostrar.

CLEAR
DEFINE WINDOW output FROM 2,1 TO 13,75 TITLE 'Output' ;
CLOSE FLOAT GROW ZOOM
ACTIVATE WINDOW output
WAIT WINDOW 'Pulse una tecla para ocultar la ventana de salida'
HIDE WINDOW output
WAIT WINDOW 'Pulse una tecla para mostrar la ventana de salida'
SHOW WINDOW output
WAIT WINDOW 'Pulse una tecla para eliminar la venana de salida'
RELEASE WINDOW output

Vea también

CLEAR WINDOWS | DEACTIVATE WINDOW | DEFINE WINDOW | HIDE WINDOW | RELEASE WINDOWS | SHOW WINDOW


ADD CLASS (Comando)

Agrega una definición de clase a una biblioteca de clases visuales .vcx.

ADD CLASS ClassName [OF ClassLibraryName1] TO ClassLibraryName2
[OVERWRITE]

Parámetros

ClassName
Especifica el nombre de la definición de clase agregada a la biblioteca de clases visuales .vcx ClassLibraryName2.

Si omite la cláusula opcional OF ClassLibraryName1, Visual FoxPro buscará la definición de clase en todas las bibliotecas de clases visuales .vcx abiertas con SET CLASSLIB.

Visual FoxPro generará un error si no encuentra la definición de clase o si ya existe una definición de clase con el nombre especificado en ClassLibraryName2.

OF ClassLibraryName1
Especifica una biblioteca de clases visuales .vcx desde la que se copia la definición de clase.
TO ClassLibraryName2
Especifica la biblioteca de clases visuales .vcx a la que se agrega la definición de clase. Si especifica una biblioteca de clases visuales .vcx que no existe, Visual FoxPro la creará y le agregará la definición de clases.
OVERWRITE
Especifica que una definición de clase con el mismo nombre que la definición de clase especificada con ClassName se sobrescribe. Se generará un mensaje de error si omite OVERWRITE y ya existe una definición de clase con el mismo nombre que ClassName en la biblioteca de clases visuales .vcx.

Observaciones

Utilice ADD CLASS para agregar una definición de clase a una biblioteca de clases o para copiar una definición de clase de una biblioteca de clases visuales .vcx a otra. No es posible agregar una definición de clase desde un programa o aplicación de Visual FoxPro (.prg o .app), ni tampoco desde un archivo de procedimiento.

Vea también

ACLASS( ) | AMEMBERS( ) | CREATE CLASS | CREATE CLASSLIB | DEFINE CLASS | MODIFY CLASS | RELEASE CLASSLIB | REMOVE CLASS | RENAME CLASS | SET CLASSLIB


ADD TABLE (Comando)

Agrega una tabla libre a la base de datos actual.

ADD TABLE TableName | ?   [NAME LongTableName]

Parámetros

TableName
Especifica el nombre de la tabla que se agrega a la base de datos.
?
Muestra el cuadro de diálogo Abrir, donde puede elegir una tabla para agregarla a la base de datos.
NAME LongTableName
Especifica un nombre largo para la tabla. Los nombres largos pueden contener hasta 128 caracteres y se pueden utilizar en lugar de los nombres cortos de archivo que tienen la extensión .DBF.

Observaciones

Cuando se agrega la tabla a la base de datos, puede ejecutar en ella las mismas operaciones que en cualquier otra tabla.

Después de agregar la tabla a la base de datos, dejará de estar libre. No obstante, las tablas de la base de datos se pueden convertir en libres al ejecutar REMOVE TABLE.

La tabla que desea agregar:

  • Debe ser un archivo .DBF válido.
  • No puede tener el mismo nombre que una tabla existente en la base de datos abierta, a menos que le asigne un nombre largo único.
  • No puede existir en otra base de datos. Utilice REMOVE TABLE para eliminar la tabla de otra base de datos.

La base de datos a la que quiere agregar una tabla no puede estar involucrada en una transacción.

Ejemplo

El ejemplo siguiente crea dos bases de datos llamadas mydbc1 y mydbc2, y una tabla llamada table1. La tabla se agrega a mydbc1 cuando se crea. A continuación, se cierra la tabla y se quita de mydbc1. Después se usa ADD TABLE para agregar la tabla a mydbc2. Se utiliza RENAME TABLE para cambiar el nombre de la tabla de table1 a table2.

CREATE DATABASE mydbc1
CREATE DATABASE mydbc2
SET DATABASE TO mydbc1
CREATE TABLE table1 (cField1 C(10), n N(10))  && Adds table to mydbc1
CLOSE TABLES     && A table must be closed to remove it from a database
REMOVE TABLE table1
SET DATABASE TO mydbc2
ADD TABLE table1
RENAME TABLE table1 TO table2

Vea también

CLOSE (Comandos) | CREATE DATABASE | DISPLAY TABLES | FREE TABLE | OPEN DATABASE | REMOVE TABLE


ALTER TABLE - SQL (Comando)

Modifica la estructura de una tabla por programa.

ALTER TABLE TableName1 ADD | ALTER [COLUMN] FieldName1 FieldType
FieldType [( nFieldWidth [, nPrecision])] [NULL | NOT NULL] [CHECK lExpression1 [ERROR cMessageText1]]
[AUTOINC [NEXTVALUE NextValue [STEP StepValue]]] [DEFAULT eExpression1]
[PRIMARY KEY | UNIQUE [COLLATE cCollateSequence]]
[REFERENCES TableName2 [TAG TagName1]] [NOCPTRANS] [NOVALIDATE]

–O bien–

ALTER TABLE TableName1 ALTER [COLUMN] FieldName2 [NULL | NOT NULL] [SET DEFAULT eExpression2]
[SET CHECK lExpression2 [ERROR cMessageText2]] [ DROP DEFAULT ] [ DROP CHECK ] [ NOVALIDATE ]

–O bien–

ALTER TABLE TableName1 [DROP [COLUMN] FieldName3]

[SET CHECK lExpression3 [ERRORcMessageText3]] [DROP CHECK] [ADD PRIMARY KEY eExpression3 [FOR lExpression4] TAG TagName2]
[COLLATE cCollateSequence]] [DROP PRIMARY KEY] [ADD UNIQUE eExpression4 [[FOR lExpression5] TAG TagName3]]
   [COLLATE cCollateSequence]]] [DROP UNIQUE TAG TagName4]
[ADD FOREIGN KEY [eExpression5] [FOR lExpression6] TAG TagName4
[COLLATE cCollateSequence] REFERENCES TableName2 [TAG TagName5]]
[DROP FOREIGN KEY TAG TagName6 [SAVE]] [RENAME COLUMN FieldName4 TO FieldName5] [NOVALIDATE]

Parámetros

ALTER TABLE TableName1
Modifica la estructura de una tabla. El parámetro TableName1 especifica el nombre de la tabla a ser modificada.
ADD | ALTER [COLUMN] FieldName1
Especifica el nombre del campo que se desea agregar o modificar.

Una única tabla puede contener hasta 255 campos. Si uno o más de los campos permiten valores nulos, el límite se reduce en uno, a 254 campos.

Utilizar ALTER COLUMN cambia la secuencia de ordenamiento a la predeterminada. Debe indexar la tabla nuevamente con la secuencia de ordenamiento deseada luego de ejecutar ALTER COLUMN. También puede utilizar la cláusula COLLATE en el comando ALTER TABLE apropiado (clave principal o clave secundaria).

FieldType [(nFieldWidth [, nPrecision])]
ESpecifica el tipo, ancho y precisión (cantidad de decimales) para los campos nuevos o modificados.

FieldType es una sola letra que indica el tipo datos del campo. Algunos tipos de datos campos requieren que especifique nFieldWidth o nPrecision, o ambos. La siguiente tabla muestra los valores para FieldType y cuando nFieldWidth y nPrecision son necesarios:

FieldType | nFieldWidth | nPrecision | Tipo de Dato
C N – Campo Carácter de ancho n
D – – Fecha
T – – DateTime
N | N | D | Campo Numérico de ancho n con d posiciones decimales
F | N | D | Campo Numérico flotante de ancho n con d posiciones decimales
I – – Entero
B – D Doble
Y – – Moneda
L – – Lógico
M – – Memo
G – – General
P – – Imagen

Los parámetros nFieldWidth y nPrecision son ignorados para los tipos D, T, I, Y, L, M, G, y P. El parámetro nPrecision está predeterminado a cero (sin decimales) si nPrecision no se incluye para los tipos N, F, o B.

NULL | NOT NULL
Especifica si se permiten o no valores nulos (null) en el campo. NULL permite valores nulos (null), mientras NOT NULL lo deniega. Si uno o más campos contienen valores nulos (null), el máximo número de campos que la tabla puede contener se reduce de 255 a 254.
CHECK lExpression1
Define una regla de validación para el campo. El parámetro lExpression1 debe evaluar una expresión lógica y puede ser una función definida por el usuario o un procedimiento almacenado. Cuando un nuevo registro es agregado, Visual FoxPro comprueba la regla de validación especificada en la cláusula CHECK.
ERROR cMessageText1
Especifica un mensaje de error. Cuando la regla de validación especificada en la cláusula CHECK genera un error, Visual FoxPro muestra este mensaje. El mensaje se muestra solo si los datos han sido cambiados desde una ventana Examinar o Modificar.
AUTOINC [NEXTVALUE NextValue [STEP StepValue]]
Activa el incremento automático para el campo. NextValue especifica el valor de inicio y puede ser un valor entero positivo o negativo entre 2,147,483,647 y -2,147,483,647. El valor predeterminado es 1. Puede cambiar el valor de NextValue utilizando el spinner en la pestaña Campos (Fields) del Diseñador de Tablas.

StepValue Especifica el valor de incremento para el campo y puede ser un valor entero diferente de cero entre 1 y 255. El valor predeterminado es 1. Puede cambiar el valor de StepValue utilizando el spinner en la pestaña Campos (Fields) del Diseñador de Tablas.

Los valores autoincrementales no pueden ser NULL.

Nota Las tablas que contienen campos con valores de autoincrementales agregan los registros en tablas con buffering aproximadamente un 35% mas lento que las tablas sin esta característica, que puede afectar el rendimiento. Cuando utiliza el buffering de tabla, la cabecera de la tabla es bloqueada cuando el registro es agregado.
DEFAULT eExpression1
Especifica un valor predeterminado para el campo nombrado en FieldName1. El tipo de dato para eExpression1 debe ser el mismo que el tipo de campo.

No se puede establecer un valor predeterminado si utiliza la cláusula AUTOINC para activar el autoincremento del campo. Si define un valor para las cláusulas AUTOINC y DEFAULT, Visual FoxPro genera un mensaje de error.

PRIMARY KEY | UNIQUE
PRIMARY KEY crea un índice principal para el campo especificado en FieldName1. UNIQUE crea un índice candidato para el campo especificado en FieldName1. Los índices principales o candidatos tienen el mismo nombre que el campo. Para obtener más información sobre índice principales y candidatos, vea Establecer un Índice principal o candidato.
COLLATE cCollateSequence
Especifica una secuencia de ordenamiento diferente al predeterminado MACHINE. El parámetro cCollateSequence debe ser una secuencia de ordenamiento válida de Visual FoxPro. Para obtener más información acerca de configurar secuencias de ordenamiento, vea Optimizar aplicaciones internacionales y SET COLLATE (Comando).
REFERENCES TableName2 [TAG TagName1]
Especifica la tabla principal a la cual se le establece una relación persistente. La tabla principal no puede ser una tabla libre.

El parámetro TagName1 de la cláusula especifica un nombre de índice para la tabla principal en TableName2. El nombre del índice puede contener hasta 10 caracteres. Si ignora la cláusula TAG , la relación se establece utilizando el índice principal de la tabla principal. Visual FoxPro genera un error si la tabla principal no tiene un índice principal.

NOCPTRANS
Evita el cambio a otra página de códigos de los campos tipo carácter y memo. Puede especificar NOCPTRANS sólo en los campos carácter y memo. Esto controla la forma como se muestran los datos en los campos tipo Carácter (binario) y Memo (binario) en el Diseñador de Tablas.
NOVALIDATE
Especifica que Visual FoxPro permitirá los cambios a la estructura de la tabla que puedan comprometer la integridad de los datos. Por defecto, Visual FoxPro evita los cambios a la estructura de la tabla con ALTER TABLE. Para ignorar el comportamiento predeterminado, incluya la opción NOVALIDATE.
ALTER [COLUMN] FieldName2
Especifica el nombre del campo a modificar. Para modificar mas de una propiedad de un campo necesita incluir varias cláusulas ALTER COLUMN en un solo comando ALTER TABLE. Para mayor información acerca de como se estructura las cláusulas ALTER COLUMN vea los ejemplos de este tema.
SET DEFAULT eExpression2
Especifica un nuevo valor predeterminado para un campo existente. El tipo de datos de eExpression2 debe ser el mismo definido para el campo.

No puede especificar un valor predeterminado si utiliza esta cláusula AUTOINC para activar el autoincremento de un campo. Si especifica valores para ambas cláusulas, AUTOINC y SET DEFAULT, Visual FoxPro genera un mensaje de error.

SET CHECK lExpression2
Especifica una nueva regla de validación para un campo existente. lExpression2 debe evaluarse como una expresión lógica; puede tratarse de una función definida por el usuario o un procedimiento almacenado.
ERROR cMessageText2
Especifica un mensaje de error para la regla de validación del campo en lExpression2. Visual FoxPro muestra este mensaje cuando la regla de validación de campo genera un error. El mensaje solo se muestra cuando los datos son cambiados desde una ventana Examinar o Modificar.
DROP DEFAULT
Elimina el valor predeterminado para un campo existente.
DROP CHECK
Elimina la regla de validación para un campo existente.
DROP [COLUMN] FieldName3
Especifica un campo que se desea eliminar de la tabla. Al eliminar un campo de la tabla también se elimina la configuración del valor predeterminado del campo y la regla de validación de campo.

Si hay referencias al campo en expresiones de desencadenante o de clave de índice, estas expresiones dejarán de ser válidas cuando se elimine el campo. En este caso no se genera ningún error al eliminar el campo, pero las expresiones no válidas de clave de índice o de desencadenante generarán errores en tiempo de ejecución.

SET CHECK lExpression3
Especifica la regla de validación de tabla. El parámetro lExpression3 debe evaluarse como una expresión lógica y debe ser una función definida por el usuario o un procedimiento almacenado.
ERROR cMessageText3
Especifica un mensaje de error para la regla de validación de la tabla en lExpression3. Visual FoxPro muestra este mensaje cuando la regla de validación de la tabla genera un error. El mensaje solo se muestra cuando los datos son cambiados desde una tabla Examinar o Modificar.
DROP CHECK
Elimina la regla de validación de la tabla.
ADD PRIMARY KEY eExpression3 [FOR lExpression4] TAG TagName2
Agrega un índice principal a la tabla. eExpression3 especifica la expresión de clave para el indice principal.

Puede utilizar lExpression4 para especificar una condición mediante la cual solo se puede ver y tener acceso a los registros que cumplan la expresión de filtro. Las claves de índice principales se crean precisamente para los registros que cumplen la expresión de filtro. Debe evitar utilizar la cláusula FOR para crear un índice principal; la unicidad de una clave primaria es forzosa sólo para los registros que cumplan la condición especificada con la cláusula FOR. En su lugar, utilice el comando INDEX con una cláusula FOR para crear un índice filtrado.

Rushmore optimiza un comando ALTER TABLE ... FOR lExpression4 si la expresión lExpression4 es optimizable. Para obtener el máximo rendimiento, utilice una expresión optimizable en la cláusula FOR. Para mayor información, vea SET OPTIMIZE y Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.

El parámetro TagName2 especifica el nombre de la etiqueta del índice principal. Los nombres de la etiquetas de los índices pueden contener hasta 10 caracteres. Si omite TAG TagName2, y eExpression3 es un solo campo, la etiqueta del índice principal sea el mismo que el campo especificado en eExpression3.

DROP PRIMARY KEY
Elimina el índice principal y su etiqueta de índice. Una tabla solo puede tener un índice principal, asi que no es necesario especificar el nombre de este índice. Al eliminar el índice principal también se eliminan todas las relaciones persistentes basadas en la clave principal.
ADD UNIQUE eExpression4 [TAG TagName3 [FOR lExpression5]]
Agrega un índice candidato a la tabla. El parámetro eExpression4 especifica la expresión clave del índice candidato. El parámetro TagName3 especifica el nombre de la etiqueta del índice candidato. Los nombres de las etiquetas de indice pueden contener hasta 10 caracteres. Si omite TAG, TagName3, y eExpression4 es un solo campo, la etiqueta de índice candidato será el mismo que el campo especificado en eExpression4.

Puede utilizar el parámetro lExpression5 para especificar una condición mediante la cual sólo se puede ver y tener acceso a los registros que cumplan la expresión de filtro. Las claves de índice candidato se crean en el archivo de índices precisamente para los registros que cumplen la expresión de filtro.

Rushmore optimiza un comando ALTER TABLE ... FOR lExpression5 si lExpression5 es una expresión optimizable. Para obtener el máximo rendimiento, utilice una expresión optimizable en la cláusula FOR. Para mayor información, vea SET OPTIMIZE y Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.

DROP UNIQUE TAG TagName4
Elimina el índice candidato y su etiqueta de índice. Una tabla puede tener múltiples claves de candidato, así que es necesario especificar el nombre de la etiqueta de índice candidato.
ADD FOREIGN KEY [eExpression5] TAG TagName4 [FOR lExpression6]
Agrega un índice externo (no principal) a la tabla. El parámetro eExpression5 especifica la expresión clave del índice externo. El parámetro TagName4 especifica el nombre de la etiqueta de índice externo. Los nombres de etiqueta de índice pueden contener hasta 10 caracteres.

Puede utilizar el parámetro lExpression6 para especificar una condición mediante la cual solo se puede ver y tener acceso a los registros que cumplan la expresión de filtro.

Rushmore optimiza un comando ALTER TABLE ... FOR lExpression6 si lExpression6 es una expresión optimizable. Para obtener el máximo rendimiento, utilice una expresión optimizable en la cláusula FOR. Para mayor información, vea SET OPTIMIZE y Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.

REFERENCES TableName2 [TAG TagName5]
Especifica la tabla primaria con la cual se establece una relación permanente. Puede utilizar la cláusula TAG TagName5 para establecer una relación basada en una etiqueta de índice existente para la tabla principal. Los nombres de la etiqueta de índice pueden contener hasta 10 caracteres. Si omite la cláusula TAG, Visual FoxPro establece la relación utilizando la etiqueta del índice principal de la tabla.
DROP FOREIGN KEY TAG TagName6 [SAVE]
Elimina una clave externa cuya etiqueta de índice es TagName6. Puede utilizar SAVE para mantener la etiqueta de índice en la estructura de los índices. Si omite SAVE, la etiqueta de índice será eliminada de la estructura de los índices.
RENAME COLUMN FieldName4 TO FieldName5
Permite cambiar el nombre de un campo de la tabla. El parámetro FieldName4 Especifica el nombre del campo cuyo nombre se cambia. El parámetro FieldName5 especifica el nombre nuevo para este campo.
Precaución Tenga cuidado al cambiar el nombre de los campos de la tabla; es posible que las expresiones de índice, las reglas de validación de campos y tablas, los comandos, las funciones, etc. hagan referencia a los nombres originales de los campos.

Observaciones

Puede utilizar ALTER TABLE para modificar la estructura de una tabla que no se ha agregado a ninguna base de datos. Sin embargo, Visual FoxPro genera un error si incluye las cláusulas DEFAULT, FOREIGN KEY, PRIMARY KEY, REFERENCES, o SET al modificar una tabla libre.

ALTER TABLE puede volver a generar la tabla al crear un nuevo encabezado de tabla y anexar registros en este encabezado.

Cuando se vuelve a generar una tabla, las reglas de validación de campo se ejecutan para cualquier campo cuyo tipo o ancho se haya modificado. Si cambia el tipo o el ancho de algún campo de la tabla, se ejecuta la regla de la tabla.

Si modifica las reglas de validación de campo o tabla para una tabla con registros, Visual FoxPro comprobará las nuevas reglas de validación del campo o la tabla con los datos existentes y presentará una advertencia la primera vez que se produzca una infracción de una regla de validación de campo o tabla, o una infracción de un desencadenante.

No puede especificar un valor o expresión en la cláusula DEFAULT si ha activado el autoincremento para un campo.

Para eliminar el autoincremento, utilice ALTER TABLE - SQL para cambiar COLUMN pero sin incluir la cláusula AUTOINC.

La validación de campos debe permitir el autoincremento de los campos. Quiz160s quiera utilizar la validación para retornar un nuevo valor autoincrementado.

Cuando modifique una tabla que no contenga campos autoincrementales a una que si los contenga, mediante el uso de ALTER TABLE o el Diseñador de Tablas, el autoincremento empieza con la siguiente fila añadida. Los registros existentes no serán actualizados con el valor de inicio del autoincremento. Necesita cerciorarse de que no ocurrirán conflictos luego del cambio.

ALTER TABLE puede no producir los resultado esperados al ser utilizado con cursores creados por el comando CREATE CURSOR. Particularmente, puede crear cursores Visual FoxPro con características como, nombres largos de tablas, que normalmente están disponibles sola para las tablas que son parte de un contenedor de base de datos. ALTER TABLE guarda temporalmente una copia del cursor, que se apliquen las reglas a las tablas libres, y que cualquier característica soportada por la base de datos se pierda o cambie de manera impredecible. Por lo tanto, debe evitar utilizar ALTER TABLE con cursores Visual FoxPro, a menos que haya comprobado o entendido el resultado.

Si omite NULL y NOT NULL, la configuración actual del comando SET NULL determina si los valores nulos (null) son aceptados por el campo. Sin embargo, si omite NULL y NOT NULL pero incluye la cláusula PRIMARY KEY o UNIQUE, Visual FoxPro ignora la configuración de SET NULL, y el campo cambia a NOT NULL.

Si la regla de validación especificada en la cláusula CHECK no permite valores de campo en blanco para los registros agregados, Visual FoxPro genera un error.

Los valores nulos (null) y registros duplicados no son permitidos en un campo utilizado en un índice principal o candidato. Si crea un nuevo campo utilizando ADD COLUMN, Visual FoxPro no genera ningún mensaje de error si crea un índice principal o candidato que acepte valores nulos (null). Sin embargo, Visual FoxPro genera un error si intenta introducir un valor nulo o duplicado en el campo utilizado en el índice primario o candidato.

Nota Los índice candidatos creados con el parámetro UNIQUE (provisto para la compatibilidad ANSI) en el comando CREATE TABLE – SQL o ALTER TABLE – SQL, no son los mismos que se crean en el comando INDEX con la opción UNIQUE. Un índice creado con el comando INDEX utilizando la opción UNIQUE permite claves de índice duplicadas; los índices candidatos no lo permiten. Para mayor información sobre la opción UNIQUE en el comando INDEX, vea INDEX Comando.

Si modifica un campo existente, y la expresión de índice primario o candidato consiste en campos de la tabla, Visual FoxPro comprueba los campos para ver si contienen valores nulos (null) o registros duplicados. Si lo tienen, Visual FoxPro genera un error y la tabla no es modificada.

Si es cambiada la página de códigos de la tabla, los campos que especifiquen NOCPTRANS no serán modificados.

Ejemplos

El ejemplo 1 agrega un campo llamado Fax a la tabla Customer y permite que contenga valores nulos (null).

El ejemplo 2 hace al campo Cust_id clave principal de la tabla Customer.

El ejemplo 3 agrega una regla validación de campo al campo Quantity de la tabla Orders para que los valores del campo Quantity no sean negativos.

El ejemplo 4 agrega una relación persistente de uno a varios entre las tablas Customer y Orders basada en la clave principal Cust_id de la tabla Customer y la clave externa Cust_id de la tabla Orders.

El ejemplo 5 quita la regla de validación de campo en el campo Quantity de la tabla Orders.

El ejemplo 6 quita la relación persistente entre las tablas Customer y Orders, pero mantiene la etiqueta del índice Cust_id en la tabla Orders.

El ejemplo 7 agrega un campo llamado Fax2 a la tabla Customer y eviat que este campo acepte valores nulos (null). Se mostrara la estructura de la nueva tabla. Dos cláusulas ALTER COLUMNson utilizadas para permitir al campo valores nulos (null) y cambiar el valor predeterminado del campo a nulo (null). Observe que son necesarias múltiples cláusulas ALTER COLUMN mas de una propiedad del campo con un solo comando ALTER TABLE. El nuevo campo es entonces eliminado para restaurar la tabla a su estado original.

* Ejemplo 1
SET PATH TO (HOME(2) + 'Data\')     && Cambia la ruta de acceso a la tabla.
ALTER TABLE Customer ADD COLUMN Fax c(20) NULL
* Ejemplo 2
ALTER TABLE Customer ADD PRIMARY KEY Cust_id TAG Cust_id
ALTER TABLE Customer ALTER COLUMN Cust_id c(5) PRIMARY KEY
* Ejemplo 3
ALTER TABLE Orders;
ALTER COLUMN Quantity SET CHECK Quantity >= 0;
ERROR "Cantidades deben ser mayores a cero"
* Ejemplo 4
ALTER TABLE Orders;
ADD FOREIGN KEY Cust_id TAG Cust_id REFERENCES Customer
* Ejemplo 5
ALTER TABLE Orders ALTER COLUMN Quantity DROP CHECK
* Ejemplo 6
ALTER TABLE Orders DROP FOREIGN KEY TAG Cust_id SAVE
* Ejemplo 7
CLEAR
ALTER TABLE Customer ADD COLUMN Fax2 c(20) NOT NULL
DISPLAY STRUCTURE
ALTER TABLE Customer;
ALTER COLUMN Fax2 NULL;
ALTER COLUMN Fax2 SET DEFAULT .NULL.
ALTER TABLE Customer DROP COLUMN Fax2

El siguiente ejemplo utiliza NOCPTRANS para evitar el cambio a una página de códigos diferente. El ejemplo crea una tabla llamada "mytable" que contiene cos campos carácter y dos campos memo. El segundo campo carácter, "char2", y el segundo campo memo, "memo2", incluyen NOCPTRANS para evitar el cambio.

CREATE TABLE mytable (char1 C(10), char2 C(10) NOCPTRANS,;
memo1 M, memo2 M NOCPTRANS)

Vea también

Comandos | Autoincremento de valores en campos de una tabla | AFIELDS( ) (Función) | CREATE TABLE - SQL | INDEX | MODIFY STRUCTURE | OPEN DATABASE | SET OPTIMIZE | Utilizar optimización de consultas Rushmore para acelerar el acceso de datos


APPEND (Comando)

Agrega uno o más registros nuevos al final de una tabla.

APPEND [BLANK] [IN nWorkArea | cTableAlias] [NOMENU]

Parámetros

BLANK
Agrega un registro en blanco al final de la tabla activa. Visual FoxPro no abre ninguna ventana de edición cuando usted ejecuta APPEND BLANK.

Es posible modificar los nuevos registros con BROWSE, CHANGE o EDIT.

IN nWorkArea
Especifica el área de trabajo de la tabla a la que se agrega el nuevo registro.
IN cTableAlias
Especifica el alias de la tabla a la que se agrega el nuevo registro.

Si omite nWorkArea y cTableAlias, se agregará un nuevo registro a la tabla en el área de trabajo seleccionada actualmente. Si ejecuta APPEND, se agregará un registro en blanco a la tabla especificada mediante nWorkArea o cTableAlias, y la tabla se seleccionará automáticamente. Si ejecuta APPEND BLANK, se agregará un registro en blanco a la tabla especificada con nWorkArea o cTableAlias, y la tabla no se seleccionará.

NOMENU
Especifica que se eliminará el título de menú Tabla de la barra de menús del sistema, lo que impide efectuar cambios en el formato de la ventana de edición.

Observaciones

El cuadro de diálogo Abrir aparece cuando ejecuta APPEND o APPEND BLANK y no hay una tabla abierta en el área de trabajo activa. Elija una tabla para agregar registros.

APPEND abre una ventana de edición para que pueda escribir datos en uno o varios registros nuevos. Cuando agregue un nuevo registro, Visual FoxPro actualizará cualquier índice que haya abierto.

Ejemplo

El siguiente ejemplo utiliza APPEND BLANK para crear una tabla con 10 registros que contienen valores aleatorios y, a continuación, muestra los valores máximo y mínimo de la tabla.

CLOSE DATABASES
CREATE TABLE Random (cValue N(3))
FOR nItem = 1 TO 10  && Append 10 records
APPEND BLANK
REPLACE cValue WITH 1 + 100 * RAND( )  && Insert random values
ENDFOR
CLEAR
LIST  && Display the values
gnMaximum = 1  && Initialize minimum value
gnMinimum = 100  && Initialize maximum value
SCAN
gnMinimum = MIN(gnMinimum, cValue)
gnMaximum = MAX(gnMaximum, cValue)
ENDSCAN
? 'The minimum value is: ', gnMinimum  && Display minimum value
? 'The maximum value is: ', gnMaximum  && Display maximum value

Vea también

APPEND FROM ARRAY | BROWSE | CHANGE | EDIT | INSERT - SQL | REPLACE


APPEND FROM ARRAY (Comando)

Agrega a la tabla seleccionada actualmente un registro por cada fila de una matriz y llena cada registro con datos de la fila correspondiente de la matriz.

APPEND FROM ARRAY ArrayName [FOR lExpression] [FIELDS FieldList | FIELDS LIKE Skeleton | FIELDS EXCEPT Skeleton]

Parámetros

ArrayName
Especifica el nombre de la matriz que contiene los datos que se van a copiar a los nuevos registros. Se agregan nuevos registros a la tabla hasta que se hayan anexado todas las filas de la matriz.
FOR lExpression
Especifica una condición para anexar registros desde la matriz. lExpression debe contener el nombre de un campo de destino en su expresión condicional.

Antes de que una fila de la matriz se anexe a un registro de la tabla, se comprueba el elemento de matriz correspondiente al campo de destino especificado en lExpression para determinar si cumple la condición de lExpression. Si el elemento de matriz satisface la condición, se anexa un registro.

Si el elemento de matriz no satisface la condición, la fila de matriz no se anexa y se comprueba la fila siguiente de la matriz para determinar si cumple la condición.

FIELDS FieldList
Especifica que sólo los campos de FieldList se actualizan a partir de la matriz. El primer campo de la lista se actualiza con el contenido del primer elemento de la matriz, el segundo campo se actualiza con el segundo elemento, etcétera.
FIELDS LIKE Skeleton
Especifica que los campos que coincidan con la estructura de campos Skeleton se actualizan a partir de la matriz.
FIELDS EXCEPT Skeleton
Especifica que todos los campos excepto los que coincidan con la estructura de campos Skeleton se actualizan a partir de la matriz.

La estructura de campos Skeleton admite caracteres comodín. Por ejemplo, para especificar que todos los campos que comiencen con las letras A y P se actualizan de la matriz, utilice lo siguiente:

APPEND FROM ARRAY aMyArray FIELDS LIKE A*,P*

Puede combinar la cláusula LIKE con la cláusula EXCEPT:

APPEND FROM ARRAY aMyArray FIELDS LIKE A*,P* EXCEPT PARTNO*

Observaciones

Los campos memo y general se pasan por alto en APPEND FROM ARRAY. Cuando se abre una tabla para uso compartido, APPEND FROM ARRAY bloquea el encabezado de la tabla mientras se agregan los registros.

Si la matriz es de una dimensión, APPEND FROM ARRAY agregará un registro a la tabla. El contenido del primer elemento de la matriz llena el primer campo del nuevo registro agregado, el contenido del segundo elemento de la matriz llena el segundo campo del registro y así sucesivamente.

Si la matriz de una dimensión tiene más elementos que campos tenga la tabla, los elementos adicionales se pasarán por alto. Si la tabla tiene más campos que elementos la matriz, los campos adicionales se inicializarán con el valor vacío predeterminado. Éstos son los valores vacíos predeterminados para cada tipo de campo:

Tipo de campo | Valor predeterminado
Character | Espacios
Numérico | 0
Currency | 0
Flotante | 0
Integer | 0
Double | 0
Fecha | Fecha vacía (p. ej. CTOD(""))
DateTime | Fecha y hora vacías (p. ej. CTOT(""))
Lógicas | Falso (.F.)
Memo | Vacío (sin contenido)

Si la matriz es de dos dimensiones, APPEND FROM ARRAY agregará un nuevo registro a la tabla por cada fila de la matriz. Por ejemplo, si la matriz tiene cuatro filas, se anexarán cuatro nuevos registros a la tabla.

El contenido de la primera columna de la matriz llena el primer campo de los nuevos registros anexados, la segunda columna de la matriz llena el segundo campo de los nuevos registros, etc. Por ejemplo, si la matriz tiene cuatro filas y tres columnas, los elementos de la primera columna de la matriz llenarán el primer campo de cada uno de los cuatro nuevos registros anexados a la tabla.

Si la matriz de dos dimensiones tiene más columnas que campos hay en la tabla, las columnas adicionales se pasarán por alto. Si la tabla tiene más campos que columnas hay en la matriz, los campos adicionales se inicializarán con valores vacíos.

APPEND FROM ARRAY puede llenar un campo incluso si el tipo de datos del elemento de matriz correspondiente no coincide con el tipo de datos del campo, siempre y cuando los datos del elemento de matriz sean compatibles con el tipo de datos del campo correspondiente. Si los datos no son compatibles, el campo se inicializa con un valor vacío.

Ejemplo

Este ejemplo crea una tabla y, a continuación, utiliza APPEND FROM ARRAY para agregar un registro a la nueva tabla.

LOCAL ARRAY aNewRec(3)
* Create the table
CREATE TABLE Test FREE  (Object C(10), Color C(16), SqFt n(6,2))
SCATTER TO aNewRec BLANK  && Create a new array from the table

aNewRec[1]="Box"         && Fill the array
aNewRec[2]="Red"
aNewRec[3]=12.5
APPEND FROM ARRAY aNewRec   && Add record containing array contents
&& to the table

Vea también

APPEND | COPY TO ARRAY | DIMENSION | GATHER | SCATTER


APPEND FROM (Comando)

Agrega registros, desde otro archivo, al final de la tabla seleccionada actualmente.

APPEND FROM FileName | ?   [FIELDS FieldList] [FOR lExpression] [[TYPE] [DELIMITED [WITH Delimiter | WITH BLANK | WITH TAB | WITH CHARACTER Delimiter] | DIF | FW2 | MOD | PDOX | RPD | SDF | SYLK | WK1 | WK3 | WKS | WR1 | WRK | CSV | XLS | XL5 [SHEET cSheetName] | XL8 [SHEET cSheetName]]] [AS nCodePage]

Parámetros

FileName
Especifica el nombre del archivo desde el que desea agregar registros. Si no incluye ninguna extensión de archivo, se asumirá una tabla de Visual FoxPro con la extensión predeterminada .dbf. Si desea agregar desde una tabla de Visual FoxPro, y la configuración actual de SET DELETED es OFF, se agregarán también los registros de la tabla que estén marcados para su eliminación.
?
Muestra el cuadro de diálogo Abrir, en el que puede elegir una tabla desde la que agregar registros.
FIELDS FieldList
Especifica a qué campos se van a agregar datos.
FOR lExpression
Agrega un nuevo registro por cada registro de la tabla actualmente seleccionada para la que lExpression dé como resultado verdadero (.T.). Los registros se agregan hasta alcanzar el final de la tabla seleccionada. Si omite FOR, todo el archivo de origen se agrega a la tabla seleccionada actualmente.
TYPE
Especifica el tipo del archivo de origen desde el que se van a agregar datos. Aunque debe especificar un tipo de archivo si el archivo desde el que va a agregar no es una tabla de Visual FoxPro, no necesita incluir la palabra clave TYPE. Puede agregar desde varios tipos de archivos diferentes, incluidos archivos de texto ASCII delimitados, en los que puede especificar un delimitador de campos.

Si el archivo de origen desde el que va a agregar datos no tiene la extensión predeterminada habitual para ese tipo de archivo, el nombre del archivo de origen deberá incluir la extensión del archivo. Por ejemplo, las hojas de cálculo de Microsoft Excel normalmente tienen una extensión .xls. Si la hoja de cálculo de Microsoft Excel desde la que va a agregar datos tiene una extensión distinta de la esperada, .xls, asegúrese de especificar la extensión.

Nota Cuando agregue datos desde una hoja de cálculo, los datos de esa hoja deben estar almacenados en un orden principal de fila, no de columna. Esto permite que los datos agregados de la hoja de cálculo coincidan con la estructura de la tabla.
DELIMITED
Especifica que el archivo de origen desde el que se agregan los datos a la tabla actual de Visual FoxPro es un archivo delimitado. Un archivo delimitado es un archivo de texto ASCII en el que cada registro termina con un retorno de carro y un avance de línea. De forma predeterminada, se supone que el contenido de los campos está separado entre sí mediante comas (no incluya espacios adicionales antes o después de las comas) y que los valores de los campos de caracteres están delimitados además por dobles comillas. Por ejemplo:
"Smith",9999999,"TELEPHONE"

Para todos los archivos delimitados, se supone que la extensión de archivo es .txt.

Puede importar fechas de archivos delimitados si las fechas tienen el formato de fecha adecuado. El formato de fecha predeterminado es mm/dd/aa. Es opcional incluir la parte de siglo de una fecha. Visual FoxPro importará una fecha, como 12/25/95, que no incluye el siglo y supondrá que la fecha corresponde al siglo XX. Los delimitadores de fecha pueden ser cualquier carácter no numérico, excepto el delimitador que separa los campos en el archivo delimitado.

Es posible importar fechas en otros formatos si su formato coincide con un formato de fecha disponible en SET DATE. Para importar fechas que no tienen el formato predeterminado, ejecute SET DATE con el formato de fecha apropiado antes de utilizar APPEND FROM. Para comprobar si un formato de fecha se puede importar correctamente, utilícelo con CTOD( ). Si la fecha es aceptable para CTOD( ), la fecha se importará correctamente.

DELIMITED WITH Delimiter
Indica que los campos de caracteres están delimitados entre sí por un carácter distinto de la comilla.
DELIMITED WITH BLANK
Especifica archivos que contienen campos separados por espacios en blanco en vez de comas.
DELIMITED WITH TAB
Especifica archivos que contienen campos separados por tabulaciones en vez de comas.
DELIMITED WITH CHARACTER Delimiter
Especifica archivos que contienen campos separados por el carácter especificado en Delimiter. Si Delimiter es un punto y coma (el carácter utilizado en Visual FoxPro para indicar continuación de línea de comandos), escriba el punto y coma entre comillas. También puede especificar las palabras clave BLANK y TAB para Delimiter.

La cláusula WITH Delimiter se puede combinar con la cláusula WITH CHARACTER. Por ejemplo, el siguiente comando agrega registros de un archivo de texto con campos de caracteres delimitados con caracteres subrayados y todos los campos delimitados unos de otros por asteriscos:

APPEND FROM mytxt.txt DELIMITED WITH _ WITH CHARACTER *
DIF
Incluya DIF para importar datos de un archivo .dif (formato de intercambio de datos) de VisiCalc. Los vectores (columnas) se convierten en campos en la tabla seleccionada actualmente y las filas se transforman en registros. Se presupone que los nombres de archivos DIF tienen una extensión .dif.
FW2
Incluya FW2 para importar datos de un archivo creado por Framework II. Se asume que los nombres de archivo FW2 tienen una extensión .fw2.
MOD
Incluya MOD para importar datos de un archivo Microsoft Multiplan versión 4.01. Microsoft Multiplan versión 4.01 crea archivos MOD, que se supone deben tener una extensión .mod.
PDOX
Incluya PDOX para importar datos de un archivo de base de datos Paradox versión 3.5 ó 4.0. Se supone que los nombres de archivo Paradox deben tener una extensión .db.
RPD
Incluya RPD para importar datos de un archivo creado por RapidFile versión 1.2. Se supone que los nombres de archivo RapidFile deben tener una extensión .rpd.
SDF
Incluya SDF para importar datos de un archivo de Formato de datos del sistema. Un archivo SDF es un archivo de texto ASCII en el que los registros tienen una longitud fija y terminan con un retorno de carro y un avance de línea. Los campos no están delimitados. Se supone que la extensión del archivo SDF debe ser .txt.

La conversión efectiva de datos de fecha de archivos SDF en tablas de Visual FoxPro requiere que los datos se almacenen con formato AAAAMMDD.

Si la información de fecha está almacenada con formatos ambiguos, es recomendable asignar la columna de fecha a una columna de caracteres con el ancho adecuado, de modo que pueda inspeccionar el valor y, a continuación, aplicar la rutina de conversión correcta para crear datos de fecha con el formato correcto.

SYLK
Incluya SYLK para importar datos desde un formato de intercambio SYLK (Vínculo simbólico). Los archivos SYLK se utilizan con Microsoft MultiPlan. Las columnas del archivo SYLK se transforman en campos en la tabla de Visual FoxPro y las filas se transforman en registros. Los nombres de archivo SYLK no tienen ninguna extensión.
WK1
Incluya WK1 para importar datos de una hoja de cálculo Lotus 1-2-3 versión 2.x. Cada columna de la hoja de cálculo se transforma en un campo de la tabla y cada fila de la hoja de cálculo se transforma en un registro de la tabla. Se asigna una extensión .WK1 al nombre de archivo de la hoja de cálculo creada en Lotus 1-2-3 versión 2.x.
WK3
Incluya WK3 para importar datos de una hoja de cálculo Lotus 1-2-3. Cada columna de la hoja de cálculo se transforma en un campo de la tabla y cada fila de la hoja de cálculo se transforma en un registro de la tabla. Se asigna una extensión .wk3 al nombre de archivo de hoja de cálculo creada en Lotus 1-2-3 versión 3.x.
WKS
Incluya WKS para importar datos de una hoja de cálculo Lotus 1-2-3 revisión 1-A. Cada columna de la hoja de cálculo se transforma en un campo de la tabla y cada fila de la hoja de cálculo se transforma en un registro de la tabla. Se asigna una extensión .wks al nombre de archivo de la hoja de cálculo creada en Lotus 1-2-3 revisión 1-A.
WR1
Incluya WR1 para importar datos de una hoja de cálculo Lotus Symphony versión 1.1 ó 1.2. Las columnas de la hoja de cálculo se convierten en campos de la tabla y las filas se transforman en registros de la tabla. Se asigna la extensión .wr1 al nombre de archivo de hoja de cálculo creada en Symphony versiones 1.1 ó 1.2.
WRK
Incluya WRK para importar datos de una hoja de cálculo Lotus Symphony versión 1.0. Las columnas de la hoja de cálculo se convierten en campos de la tabla y las filas se transforman en registros de la tabla. Se asigna una extensión .wrk al nombre de archivo de hoja de cálculo creado en Symphony versión 1.0.
CSV
Incluya CSV para importar datos de un archivo de valores separados por comas. Un archivo CSV contiene los nombres de campos en la primera línea del archivo; los nombres de campos se pasarán por alto cuando se importe el archivo.
XLS
Incluya XLS para importar datos de una hoja de cálculo Microsoft Excel. Las columnas de la hoja de cálculo se transforman en campos de la tabla y las filas se convierten en registros de la tabla. Los nombres de archivos de hoja de cálculo creados en Microsoft Excel reciben la extensión .xls.
XL5
Incluya XL5 si desea importar datos de Microsoft Excel versión 5.0. Las columnas de la hoja de cálculo se convierten en campos de la tabla y las filas de la hoja de cálculo se convierten en registros de la tabla. Los archivos de hoja de cálculo creados en Microsoft Excel tienen una extensión .xls.

Si omite la cláusula SHEET, se importan los datos de la Hoja1. Para importar datos de una hoja específica, incluya la palabra clave SHEET y especifique el nombre de la hoja mediante cSheetName.

XL8
Incluya XL8 para importar datos de Microsoft Excel 97. Las columnas de la hoja de cálculo se convierten en campos de la tabla; las filas de la hoja de cálculo se convierten en registros de la tabla. Los archivos de hoja de cálculo creados en Microsoft Excel tienen una extensión .xls.

Si omite la cláusula SHEET, se importan los datos de la Hoja1. Para importar datos de una hoja específica, incluya la palabra clave SHEET y especifique el nombre de la hoja mediante cSheetName.

AS nCodePage
Especifica la página de códigos de la tabla o el archivo de origen. Visual FoxPro copia el contenido de la tabla o el archivo de origen y, a medida que copia los datos, los convierte automáticamente a la página de códigos de la tabla actual.

Si especifica un valor no admitido para nCodePage, Visual FoxPro generará un mensaje de error. Puede utilizar GETCP( ) para que nCodePage muestre el cuadro de diálogo Página de códigos, lo que permite especificar una página de códigos para la tabla o el archivo anexado.

Si omite AS nCodePage y Visual FoxPro no puede determinar la página de códigos de la tabla o archivo de origen, Visual FoxPro copiará el contenido de la tabla o archivo de origen. Cuando copie los datos, los convertirá automáticamente a la página de códigos actual de Visual FoxPro. Si SET CPDIALOG tiene el valor ON, la tabla del área de trabajo seleccionada actualmente se marcará con una página de códigos. Si va a anexar datos de una tabla que no está marcada con una página de códigos, aparecerá el cuadro de diálogo Página de códigos, de forma que pueda elegir la página de códigos de la tabla desde la que está anexando datos. La página de códigos actual de Visual FoxPro puede determinarse mediante CPCURRENT( ).

Si omite AS nCodePage y Visual FoxPro puede determinar la página de códigos de la tabla o archivo que se está anexando, Visual FoxPro copiará el contenido de la tabla o archivo anexados. Cuando copie los datos, los convertirá automáticamente a la página de códigos de la tabla actualmente seleccionada.

Si nCodePage es 0, Visual FoxPro asume que la página de códigos de la tabla o archivo que se está anexando es la misma que la de la tabla actualmente seleccionada. No se produce ninguna conversión a la página actual de códigos de Visual FoxPro.

Observaciones

Si el archivo desde el que va a anexar datos es una tabla de Visual FoxPro o una tabla creada en una versión anterior de FoxPro, se supone que tiene una extensión .dbf. Si la tabla de Visual FoxPro o la tabla creada en una versión anterior de FoxPro no tiene una extensión .dbf, deberá especificar su extensión. Si el archivo no es una tabla de Visual FoxPro ni una tabla creada en una versión anterior de FoxPro, deberá especificar el tipo de archivo desde el que va a anexar datos.

Antes de poder anexar datos de una tabla creada en dBASE IV o dBASE V que contenga un campo memo, debe abrir primero la tabla en Visual FoxPro mediante USE. Cuando se le pregunte si desea convertir el archivo, responda afirmativamente.

Si anexa datos de una tabla de Visual FoxPro o de una tabla creada en una versión anterior de FoxPro, la tabla desde la que anexa datos puede estar abierta en otra área de trabajo. Los registros marcados para eliminación en la tabla cuyos datos está anexando se desmarcan una vez anexados los registros.

Utilice la función DBF( ) para anexar desde un cursor temporal de sólo lectura creado por un comando SELECT - SQL. Incluya el nombre del cursor en la función DBF( ) como en el ejemplo siguiente:

APPEND FROM DBF('<Cursor Name>')

Si la tabla de destino utiliza autoincremento, APPEND FROM falla si AUTOINCERROR esta configurado a ON, a menos que se utilice la opción FIELDS para omitir la columna AUTOINC. Configurar AUTOINCERROR a OFF o desactivar el autoincremento en la tabla de destino mediante el uso de CURSORSETPROP( ), permite a APPEND FROM ejecutarse con éxito. El autoincremento del campo o campos de la tabla destino sera de acuerdo a los valores especificados, los valores de la tabla origen seran ignorados.

Ejemplo

El ejemplo siguiente abre la tabla customer, copia su estructura a una tabla llamada backup y, a continuación, abre backup. Después, Visual FoxPro anexa todos los registros relativos a Finlandia de la tabla customer. Estos registros se copian a un nuevo archivo delimitado, TEMP.TXT.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer  && Open customer table
COPY STRUCTURE TO backup
USE backup
APPEND FROM customer FOR country = 'Finland'
COPY TO temp TYPE DELIMITED
MODIFY FILE temp.txt
USE
DELETE FILE backup.dbf
DELETE FILE temp.txt

Vea también

COPY FILE | COPY TO | EXPORT | GETCP( ) | IMPORT | SET DELETED

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


APPEND GENERAL (Comando)

Importa un objeto OLE de un archivo y lo coloca en un campo general.

APPEND GENERAL GeneralFieldName [FROM FileName] [DATA cExpression] [LINK] [CLASS OLEClassName]

Parámetros

GeneralFieldName
Especifica el nombre del campo general en que se coloca el objeto OLE. Puede especificar un campo general de una tabla abierta en un área de trabajo no activa si incluye el alias de la tabla con el nombre del campo.
FROM FileName
Especifica el archivo que contiene el objeto OLE. Debe incluirse el nombre completo del archivo, con la extensión. Si el archivo se encuentra en un directorio diferente al directorio predeterminado actual, incluya la ruta de acceso junto con el nombre del archivo.
DATA cExpression
Especifica una expresión de caracteres que se evalúa y se transfiere como una cadena de caracteres al objeto OLE del campo general. El objeto OLE debe ser capaz de recibir y procesar la cadena. Por ejemplo, no puede enviar una cadena de caracteres a un objeto gráfico creado mediante Paintbrush.
LINK
Crea un vínculo entre el objeto OLE y el archivo que contiene el objeto. El objeto OLE aparece en el campo general, pero la definición del objeto permanece en el archivo. Si omite LINK, el objeto OLE se incrustará en el campo general.
CLASS OLEClassName
Especifica una clase OLE, distinta de la clase predeterminada, para un objeto OLE.

Puede especificar un nombre de clase cuando la extensión del archivo que contiene el objeto OLE es diferente a la extensión predeterminada y desea forzar el comportamiento de la clase. Si múltiples servidores de Automatización pueden utilizar la extensión predeterminada, incluya la clase para especificar un determinado servidor.

Observaciones

Si ya existe un objeto OLE en el campo general, se reemplazará por el objeto OLE del archivo. Para borrar un objeto OLE de un campo general, utilice APPEND GENERAL GeneralFieldName (GeneralFieldName es el nombre del campo general que se va a borrar) sin ningún argumento adicional.

Para obtener información adicional acerca de los objetos OLE en Visual FoxPro, vea Agregar OLE.

Ejemplo

El ejemplo siguiente importa un gráfico de Microsoft Excel almacenado en el directorio de Excel a un campo general llamado mygenfield.

CREATE TABLE MyGenTbl (mygenfield G)
APPEND BLANK  && Add a blank record
APPEND GENERAL mygenfield FROM C:\EXCEL\BOOK1.XLS CLASS EXCELCHART

Vea también

@ ... SAY - Imágenes y objetos OLE | MODIFY GENERAL | OLE Bound (Control)


APPEND MEMO (Comando)

Copia a un campo memo el contenido de un archivo de texto.

APPEND MEMO MemoFieldName FROM FileName[OVERWRITE] [AS nCodePage]

Parámetros

MemoFieldName
Especifica el nombre de un campo memo al que se anexa el archivo.
FROM FileName
Especifica el archivo de texto cuyo contenido se copia al campo memo. Debe incluir el nombre completo del archivo de texto, incluida la extensión.
OVERWRITE
Reemplaza el contenido actual del campo memo por el contenido del archivo.
AS nCodePage
Especifica la página de códigos del archivo de texto que se copia al campo memo. Microsoft Visual FoxPro copia el contenido del archivo de texto y, a medida que copia los datos al campo memo, los convierte automáticamente de la página de códigos especificada a la página de códigos de la tabla que contiene el campo memo. Si la tabla que contiene el campo memo no está marcada con una página de códigos, Visual FoxPro convertirá automáticamente los datos de la página de códigos especificada a la página de códigos actual de Visual FoxPro.

Si especifica un valor no admitido para nCodePage, Visual FoxPro generará un mensaje de error. Puede utilizar GETCP( ) para que nCodePage muestre el cuadro de diálogo Página de códigos, lo que permite especificar una página de códigos para la tabla o el archivo anexado.

Si omite la cláusula AS nCodePage o si especifica 0 para nCodePage, no se realizará ninguna conversión de página de códigos para el archivo de texto.

Observaciones

Todo el contenido del archivo de texto se anexa al contenido del campo memo especificado en el registro actual si se omite OVERWRITE.

Ejemplo

En el ejemplo siguiente, el contenido del campo memo notes se copiará a un archivo llamado Test.txt. Luego, el contenido de Test.txt se anexa al contenido del campo memo. Finalmente, el contenido de Test.txt reemplaza el contenido actual del campo memo.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE employee  && Open Employee table
WAIT WINDOW 'Employee notes memo field - press ESC' NOWAIT
MODIFY MEMO notes NOEDIT  && Open the notes memo field
COPY MEMO notes TO test.txt  && Create test file from memo field
WAIT WINDOW 'TEST.TXT text file - press ESC' NOWAIT
MODIFY FILE test.txt NOEDIT && Open the text file
WAIT WINDOW 'Employee notes now appended - press ESC' NOWAIT
APPEND MEMO notes FROM test.txt  && Add contents of text file
MODIFY MEMO notes NOEDIT  && Display memo field again
WAIT WINDOW 'Overwrite Employee notes- press ESC' NOWAIT
APPEND MEMO notes FROM test.txt OVERWRITE  && Replace notes
MODIFY MEMO notes NOEDIT NOWAIT
DELETE FILE test.txt

Vea también

COPY MEMO | GETCP( ) | CLOSE MEMO | SET WINDOW OF MEMO

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


APPEND PROCEDURES (Comando)

Anexa procedimientos almacenados en un archivo de texto a los procedimientos almacenados en la base de datos actual.

APPEND PROCEDURES FROM NombreArchivo  [AS nCodePage] [OVERWRITE]

Parámetros

NombreArchivo
Especifica el nombre de un archivo de texto a partir del cual se anexan los procedimientos almacenados.
AS nCodePage
Especifica la página de códigos del archivo de texto a partir del que se anexan los procedimientos almacenados. Visual FoxPro copia el contenido del archivo de texto y, a medida que lo hace, lo convierte automáticamente a la página de códigos especificada.

Si especifica un valor no admitido para nCodePage, Visual FoxPro generará un mensaje de error. Puede utilizar GETCP( ) para que nCodePage muestre el cuadro de diálogo Página de códigos, que permite especificar una página de códigos para el archivo de texto a partir del cual se anexan los procedimientos almacenados.

Si omite AS nCodePage, Visual FoxPro copiará el contenido del archivo de texto a partir del cual se anexan los procedimientos almacenados y, al hacerlo, lo convertirá automáticamente a la página de códigos actual de Visual FoxPro. La página de códigos actual de Visual FoxPro puede determinarse mediante CPCURRENT( ).

Si nCodePage es 0, Visual FoxPro supondrá que la página de códigos del archivo de texto a partir del cual se anexan los procedimientos almacenados es igual que la página de códigos de la base de datos actual y no se producirá ninguna conversión a la página de códigos actual de Visual FoxPro.

OVERWRITE
Especifica que los procedimientos almacenados actualmente en la base de datos se sustituyan por los del archivo de texto. Si omite OVERWRITE, no se sobrescribirán los procedimientos almacenados actuales de la base de datos y los procedimientos almacenados en el archivo de texto se anexarán a los procedimientos almacenados actuales.

Observaciones

APPEND PROCEDURES no está disponible en archivos ejecutables distribuidos. Si la aplicación utiliza este comando, generará un error "Característica no disponible". Para mayor información sobre archivos de Visual FoxPro restringidos y distribuibles, vea Características y archivos restringidos y distribuibles de Visual FoxPro

Utilice APPEND PROCEDURES para modificar por programa los procedimientos almacenados en una base de datos. Cuando se ejecuta APPEND PROCEDURES, es necesario que haya una base de datos abierta y actual; de lo contrario, Visual FoxPro generará un mensaje de error.

Nota Para ver o para modificar procedimientos almacenados mediante la interfaz del usuario, utilice el Diseñador de bases de datos.
CLOSE DATABASES
* Open the testdata database
OPEN DATABASE (HOME(2) + 'Data\testdata')
* Create a free, temporary table with one memo field called mProcedure
CREATE TABLE mytable FREE (mProcedure M)
APPEND BLANK          && Add a blank record to mytable
* Add PROCEDURE command, name, and carriage return/linefeed to
* memo field
REPLACE mProcedure WITH "PROCEDURE MyProcedure" + CHR(13) + CHR(10)
* Copy contents of memo field to temporary file
COPY MEMO mProcedure TO mytemp.txt
USE             && Close the temporary table
APPEND PROCEDURES FROM mytemp.txt   && Copy procedure to the database
CLEAR
* Display the procedures associated with the current database
DISPLAY PROCEDURES
DELETE FILE mytable.dbf     && Erase temporary table
DELETE FILE mytable.fpt     && Erase temporary table memo file
DELETE FILE mytemp.txt      && Erase temporary text file

Ejemplo

El ejemplo siguiente abre la base de datos testdata. Se crea una tabla temporal denominada mytable con un solo campo memo y se utiliza REPLACE para colocar un procedimiento almacenado denominado MyProcedure en el campo memo. COPY MEMO se emplea para crear un archivo de texto temporal llamado Mytemp.txt que incluye el contenido del campo memo.

APPEND PROCEDURES sirve para anexar el procedimiento almacenado del archivo de texto temporal a la base de datos. DISPLAY PROCEDURES muestra los procedimientos almacenados en la base de datos y, a continuación, se borran la tabla temporal y el archivo de texto.

Vea también

COPY PROCEDURES | CREATE TRIGGER | DISPLAY PROCEDURES | MODIFY PROCEDURE | OPEN DATABASE | PROCEDURE | SET DATABASE

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


ASSERT (Comando)

Muestra un cuadro de mensaje cuando una expresión lógica da como resultado falso (.F.).

ASSERT lExpression [MESSAGE cMessageText]

Parámetros

lExpression
Especifica la expresión lógica evaluada. Si lExpression da como resultado un valor lógico falso (.F.), se mostrará un cuadro de diálogo. Si lExpression da como resultado un valor lógico verdadero (.T.), no se mostrará el cuadro de diálogo.
cMessageText
Especifica el texto mostrado en el cuadro de diálogo de depuración. Si omite cMessageText, se mostrará el texto predeterminado, que indica el número de la línea en que ha fallado la aserción y el procedimiento que contiene la afirmación.

Observaciones

Este comando se pasa por alto si el comando SET ASSERTS tiene el valor OFF.

El cuadro de mensajes contiene los botones Cancelar, Depurar, Pasar por alto y Pasar por alto todos. En la siguiente tabla se describe la acción que se realiza al elegir cada botón.

Botón | Acción
Depurar | Se suspende la ejecución del programa y se muestra la ventana Depurador con la ventana Seguimiento activa.
Cancelar | Se termina la ejecución del programa.
Ignorar | La ejecución del programa continúa con la línea que esté a continuación del comando ASSERT.
Pasar por alto todo | Continúa la ejecución del programa con la línea que esté a continuación del comando ASSERT y se asigna a ASSERTS el valor OFF. Los subsiguientes comandos ASSERT se pasarán por alto hasta que ASSERTS tenga el valor ON.

ASSERT es ignorado en la aplicación que distribuye.

Vea también

Ventana Depurador | SET ASSERTS | Establecer aserciones


AVERAGE (Comando)

Calcula la media aritmética de expresiones o de campos numéricos.

AVERAGE [ExpressionList]   [Scope] [FOR lExpression1] [WHILElExpression2] [TO VarList | TO ARRAY ArrayName]   [NOOPTIMIZE]

Parámetros

ExpressionList
Especifica las expresiones cuya media se calcula. ExpressionList puede ser una lista de campos de la tabla separados por comas o expresiones numéricas que utilicen campos de la tabla.
Scope
Especifica el registro o el intervalo de registros que se desea incluir en el promedio. Sólo se calcula el promedio de aquellos registros que estén dentro del intervalo especificado por el alcance. Las cláusulas de alcance son: ALL, NEXT nRecords, RECORD nRecordNumber y REST. El alcance predeterminado para AVERAGE es ALL.

Los comandos que incluyen Scope sólo actúan sobre la tabla del área de trabajo activa.

FOR lExpression1
Especifica una condición por la que sólo se incluyen aquellos registros que satisfagan la condición lógica lExpression. Este argumento permite filtrar los registros no deseados.

Rushmore optimiza una consulta AVERAGE FOR si lExpression es una expresión optimizable. Para obtener el máximo rendimiento, utilice una expresión optimizable en la cláusula FOR. Si desea obtener más información acerca de las expresiones optimizables con Rushmore, vea SET OPTIMIZE y Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.

WHILE lExpression2
Especifica que, siempre y cuando la expresión lógica lExpression2 produzca como resultado de su evaluación el valor verdadero (.T.), los registros se incluirán en el promedio.
TO VarList
Especifica la lista de variables o elementos de matriz donde se almacena el resultado del promedio.
TO ARRAY ArrayName
Especifica la matriz de una dimensión donde se almacena el resultado del promedio. La matriz de una dimensión puede crearse antes de ejecutar AVERAGE.

Si la matriz que se incluye en AVERAGE no existe, Visual FoxPro la creará automáticamente. Si la matriz existe pero no es suficientemente grande para contener todos los resultados, Visual FoxPro aumenta su tamaño automáticamente para dar cabida a la información.

NOOPTIMIZE
Desactiva la optimización Rushmore de AVERAGE. Si desea obtener más información, vea SET OPTIMIZE y Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.

Observaciones

Se calcula el promedio de todos los campos numéricos de la tabla seleccionada, a menos que incluya una lista opcional de expresiones. El resultado aparecerá en la pantalla si SET TALK está establecido en ON. Si SET HEADINGS está establecido en ON, los nombres de campo o la expresión en que se utilicen los nombres de campo aparecerán encima del resultado.

Ejemplo

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE orders  && Open order table
CLEAR
AVERAGE Order_Amt  && Calcuate averages of all orders
AVERAGE Order_Amt TO gnAvg  && Store average to memory variable
? 'Average order amount: '
?? gnAvg  && Display the average again

Vea también

CALCULATE | DIMENSION | SET HEADINGS | SUM | Utilizar optimización de consultas Rushmore para acelerar el acceso de datos | SET OPTIMIZE


BEGIN TRANSACTION (Comando)

Inicia una transacción. Las transacciones sólo se admiten para tablas de una base de datos. Vea CREATE DATABASE y ADD TABLE para obtener información acerca de cómo puede crear y agregar tablas a una base de datos.

BEGIN TRANSACTION

Observaciones

Para guardar los cambios realizados y finalizar la transacción, ejecute END TRANSACTION. Si la transacción falla (el servidor se estropea, la estación de trabajo falla o sale de Visual FoxPro sin ejecutar la transacción) o si ejecuta ROLLBACK, los archivos de la transacción se restaurarán a su estado original.

Las transacciones se pueden anidar hasta cinco niveles como máximo. Se generará un error si intenta anidarlas en un sexto nivel.

Cuando modifique registros de una base de datos que forman parte de una transacción, otros usuarios de la red no tendrán acceso (lectura o escritura) a los registros hasta que usted finalice la transacción.

Cuando otros usuarios de la red intenten tener acceso a los registros que usted ha modificado, deberán esperar hasta que usted finalice su transacción. Recibirán el mensaje "Registro no disponible... Espere" hasta que los registros estén disponibles. Por lo tanto, es importante que la duración de la transacción sea lo más breve posible o que realice la transacción a horas en las que otras personas no necesiten tener acceso a los registros.

Todos los archivos de índices IDX (índices no-estructurales, o no basados en CDX) deben ser cerrados durante la transacción. Sólo los índices estructurales son compatibles en las transacciones.

Los siguientes comandos y funciones no se admiten durante una transacción:

Comandos y funciones |
ADD TABLE | DELETE CONNECTION
APPEND PROCEDURES | DELETE DATABASE
CLEAR ALL | DELETE TRIGGER
CLOSE ALL1 | DELETE VIEW
CLOSE DATABASES1 | MODIFY CONNECTION
COPY INDEXES | MODIFY DATABASE
COPY PROCEDURES | MODIFY PROCEDURE
CREATE CONNECTION | MODIFY VIEW
CREATE DATABASE | REMOVE TABLE
CREATE TRIGGER | RENAME TABLE
CREATE VIEW | REQUERY( )
CREATE SQL VIEW |

1 Si se ejecuta CLOSE ALL mientras tiene lugar una transacción, se cierran todas las tablas de todas las bases de datos abiertas. Sin embargo, la base de datos permanece abierta. Al ejecutar CLOSE DATABASES en una transacción se cierran todas las tablas de la base de datos actual, pero la base de datos permanece abierta.

Además, no se permite ejecutar los siguientes comandos y funciones para una tabla específica que participe en una transacción:

Comandos y funciones |
ALTER TABLE | MODIFY STRUCTURE
CREATE TABLE | PACK
CURSORSETPROP( ) | REINDEX
DELETE TAG | TABLEREVERT( )
INDEX | ZAP
INSERT |

Ejemplo

En el siguiente ejemplo se abre la tabla customer de la base de datos testdata. Se establece el almacenamiento optimista en tablas para la tabla customer. Se muestra el contenido de los campos cust_id y company, y se reemplaza el contenido del campo company en los datos almacenados en búfer.

Se ejecuta BEGIN TRANSACTION para iniciar una transacción. La función TABLEUPDATE( ) se utiliza para escribir los cambios en la tabla. Se muestra el nuevo contenido y se ejecuta ROLLBACK para restaurar el contenido original del campo company. Los campos cust_id y company se vuelven a mostrar con el campo company que contiene los valores originales.

CLEAR
CLOSE DATABASES
* Transactions are only supported within a DBC
OPEN DATABASE (HOME(2) + 'Data\testdata')
SET MULTILOCKS ON      && Required for buffering

USE customer
=CURSORSETPROP("Buffering",5)
? 'The original company field'
LIST FIELDS cust_id, company NEXT 5
REPLACE ALL company WITH "***" && Change field contents
BEGIN TRANSACTION
=TABLEUPDATE(.T.)
GO TOP
? 'The modified company field'
LIST FIELDS cust_id, company NEXT 5
ROLLBACK           && Restore original field contents
=TABLEREVERT(.T.)
GO TOP
? 'The restored company field'
LIST FIELDS cust_id, company NEXT 5

Vea también

END TRANSACTION | ROLLBACK | TXNLEVEL( ) (Función)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


BLANK (Comando)

Borra datos de todos los campos del registro activo cuando se ejecuta sin argumentos.

BLANK [FIELDS FieldList] [Scope] [FOR lExpression1] [WHILE lExpression2] [NOOPTIMIZE] [IN nWorkArea | cTableAlias]

Parámetros

FIELDS FieldList
Sólo borra a los campos especificados mediante FieldList. Si omite la cláusula FIELDS, todos los campos de un registro se borrarán de forma predeterminada. Cualquier campo que especifique de un área de trabajo no seleccionada deberá ir precedido del alias del área de trabajo.
Nota BLANK no borrará datos de campo de un registro situado en otra área de trabajo relacionada si el puntero de registro se encuentra al final del archivo en el área de trabajo actual. El puntero de registro debe estar situado en un registro del área de trabajo actual para que BLANK actúe sobre los campos del registro relacionado.
Scope
Especifica el intervalo de registros a borrar. El alcance predeterminado para BLANK es el registro actual (NEXT 1). Solo se limpiaran los registros que esten dentro del intervalo.

Las cláusulas de alcance son: ALL, NEXT nRecords, RECORD nRecordNumber, y REST.

Los comandos que incluyan el parámetro Scope tienen efecto solo en la tabla de la área de trabajo activa.

Para mayor información sobre las cláusulas de alcance, vea Cláusulas de alcance.

FOR lExpression1
Borra los datos de campos de aquellos registros para los que lExpression1 se avalue como verdadero (.T.). Rushmore optimiza BLANK FOR si lExpression1 es una expresión optimizable. Puede ver una explicación de la optimización Rushmore en Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.
WHILE lExpresion2
Especifica una condición según la cual los datos de campo de los registros se borrarán siempre y cuando la expresión lógica lExpression2 dé como resultado verdadero (.T.).
NOOPTIMIZE
Impide la optimización Rushmore de BLANK. Para amyor información, vea SET OPTIMIZE y Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.
IN nWorkArea | cTableAlias
Especifica el área de trabajo o el alias de tabla al que afecta el comando BLANK. Utilice esta cláusula para especificar un área de trabajo o una tabla fuera del área de trabajo actual.

Observaciones

Utilice APPEND BLANK para agregar un nuevo registro al final de la tabla. Utilice ISBLANK( ) para determinar si un campo de un registro está en blanco.

Ejemplo

El siguiente ejemplo abre la tabla customer de la base de datos testdata. Se muestra el contenido del primer registro. SCATTER se utiliza para guardar el contenido de dicho registro en una matriz. El registro se borra con BLANK, y se vuelve a mostrar el contenido del registro. Se utiliza GATHER para restaurar el contenido original del registro y el contenido restaurado vuelve a mostrarse.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer  && Abrir la tabla customer
CLEAR
DISPLAY  && Muestra el registro actual
SCATTER TO gaCustomer  && Crea una matriz con el contenido del registro
BLANK  && Borra el registro
DISPLAY  && Muestra el registro en blanco
GATHER FROM gaCustomer  && Restaura el contenido original del registro
DISPLAY  && Muestra el registro restaurado

Vea también

APPEND | EMPTY( ) | ISBLANK( ) | REPLACE | SET OPTIMIZE | Utilizar optimización de consultas Rushmore para acelerar el acceso de datos


BROWSE (Comando)

Abre la ventana Examinar y muestra los registros de la tabla actual o seleccionada.

BROWSE [FIELDS FieldList] [FONT cFontName [, nFontSize]] [STYLE cFontStyle] [FOR lExpression1 [REST]] [FORMAT] [FREEZE FieldName] [KEY eExpression1 [, eExpression2]] [LAST | NOINIT] [LOCK nNumberOfFields] [LPARTITION] [NAME ObjectName] [NOAPPEND] [NOCAPTIONS] [NODELETE] [NOEDIT | NOMODIFY] [NOLGRID] [NORGRID] [NOLINK] [NOMENU] [NOOPTIMIZE] [NOREFRESH] [NORMAL] [NOWAIT] [PARTITION nColumnNumber [LEDIT] [REDIT]] [PREFERENCE PreferenceName] [SAVE] [TIMEOUT nSeconds] [TITLE cTitleText] [VALID [:F] lExpression2 [ERROR cMessageText]] [WHEN lExpression3] [WIDTH nFieldWidth] [WINDOW WindowName1] [IN [WINDOW] WindowName2 | IN SCREEN] [COLOR SCHEME nSchemeNumber]

Parámetros

FIELDS FieldList
Especifica los campos que aparecerán en la ventana Examinar. Los campos se muestran en el orden especificado en FieldList. En la lista de campos puede incluir campos de otras tablas relacionadas. Cuando incluya un campo de una tabla relacionada, incluya delante del nombre de campo su alias de tabla y un punto.

Si omite FIELDS, se mostrarán todos los campos de la tabla en el orden en que aparecen en la estructura de la tabla.

FONT cFontName [, nFontSize]
Especifica la fuente y el tamaño de fuente de la ventana Examinar. La expresión de caracteres cFontName es el nombre de la fuente y la expresión numérica nFontSize es el tamaño de la fuente. Por ejemplo, la cláusula siguiente especifica la fuente Courier de 16 puntos para los campos que se muestran en la ventana Examinar:
FONT 'Courier',16

Si incluye la cláusula FONT pero omite el tamaño de fuente nFontSize, se usará una fuente de 10 puntos en la ventana Examinar. Si omite la cláusula FONT, se usará MS Sans Serif de 8 puntos.

Si la fuente especificada no está disponible, se sustituirá por una fuente de características similares.

STYLE cFontStyle
Especifica el estilo de fuente de la ventana Examinar. Si omite la cláusula STYLE, se usará el estilo de fuente normal

Si el estilo de fuente especificado no está disponible, se usará un estilo con características similares o bien el estilo de fuente normal.

Carácter | Estilo de fuente
B | Negrita
I | Cursiva
N | Normal
O | Contorno
Q | Opaco
S | Sombra
– Tachado
T | Transparente
U | Subrayado

Puede incluir más de un carácter para especificar una combinación de estilos de fuente. El ejemplo siguiente abre una ventana Examinar y utiliza una fuente subrayada:

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer  && Abre la tabla
IF _WINDOWS
BROWSE FIELDS contact FONT 'System', 15  STYLE 'NU'
ENDIF
IF _MAC
BROWSE FIELDS contact FONT 'Geneva', 14  STYLE 'NU'
ENDIF
FOR lExpression1
Especifica una condición por la cual sólo se mostrarán en la ventana Examinar aquellos registros para los que lExpression1 sea verdadera.

Rushmore optimiza una consulta especificada con BROWSE FOR si lExpression1 es una expresión optimizable. Para obtener el máximo rendimiento, utilice una expresión optimizable en la cláusula FOR. Para obtener más información acerca de las expresiones optimizables con Rushmore, vea SET OPTIMIZE y Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.

Incluya FOR si desea mover el puntero de registro hasta el primer registro que cumpla la condición. Incluya REST si desea dejar el puntero de registro en su posición actual.

REST
Impide que el puntero de registro se desplace desde su posición actual hasta la parte superior de la tabla cuando se abra una ventana Examinar con la cláusula FOR. De lo contrario, BROWSE situará el puntero de registro al principio de la tabla de forma predeterminada.
FORMAT
Especifica el uso de un archivo de formato para controlar la presentación y el formato de entrada de datos en una ventana Examinar. Es necesario abrir primero el archivo de formato con SET FORMAT. La información siguiente se extrae del archivo de formato y se aplica a la ventana Examinar:
  • La lista de campos que se van a examinar
  • Todas las cláusulas VALID
  • Todas las cláusulas WHEN
  • Todas las cláusulas RANGE
  • Tamaños de campo (especificados en cláusulas PICTURE)
  • Todas las expresiones SAY (que se incluyen como campos BROWSE calculados)

El ejemplo siguiente utiliza un archivo de formato para validar los datos escritos en una ventana Examinar. Las posiciones especificadas mediante @ ... GET se pasan por alto.

La primera línea crea un campo BROWSE (cust_id) que tiene 5 caracteres de ancho y que permite sólo la entrada de letras y dígitos. La segunda línea crea un campo BROWSE (company) que no puede quedar en blanco y puede contener un máximo de 20 caracteres alfabéticos.

La tercera línea crea un campo BROWSE (contact) en el que sólo se pueden escribir datos cuando está en blanco.

Éste es el contenido del archivo de formato Custentr.fmt, que se usa para validar los datos que se escriben en la tabla customer:

@ 3,0 GET cust_id PICTURE 'NNNNN'
@ 3,0 GET company VALID company != SPACE(40) ;
PICTURE 'AAAAAAAAAAAAAAAAAAAA'
@ 3,0 GET contact WHEN contact = SPACE(40)
* este es el programa que utiliza el archivo de formato
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer  && Open customer table
SET FORMAT TO custentr.fmt
BROWSE FORMAT
FREEZE FieldName
Permite realizar cambios en un único campo de la ventana Examinar. Debe especificar este campo mediante FieldName. Los demás campos se muestran pero no se pueden modificar.
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer  && Abre la tabla customer
BROWSE FIELDS phone :H = 'Phone Number:' , ;
company :H = 'Company:' ;
FREEZE phone
KEY eExpression1 [, eExpression2]
Limita el alcance de los registros que se presentarán en la ventana Examinar. Con KEY puede especificar un valor de clave de índice (eExpression1) o un intervalo de valores de clave (eExpression1, eExpression2) para los registros que se mostrarán en la ventana Examinar. La tabla que se va a examinar debe estar indexada y el valor o los valores de clave de índice incluidos en la cláusula KEY deben ser del mismo tipo de datos que la expresión de índice del archivo de índice o de la etiqueta principal.

Por ejemplo, la tabla customer incluye un campo de caracteres que contiene códigos postales. Si la tabla se indexa mediante el campo de código postal, en la cláusula KEY podrá especificar un intervalo de códigos postales.

En el ejemplo siguiente, sólo se presentarán en la ventana Examinar aquellos registros cuyos códigos postales estén dentro del intervalo de 10.000 a 30.000:

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer  && Open customer table
SET ORDER TO postalcode
BROWSE KEY '10000', '30000'
LAST | NOINIT
Guarda cualquier cambio de configuración realizado en la apariencia de una ventana Examinar. Los cambios se guardan en el archivo FoxUser.dbf y puede incluir cambios a la lista de campos, el tamaño de cada campo, y a la ubicación y el tamaño de la ventana Examinar.

Si ejecuta BROWSE con la cláusula LAST o NOINIT, la ventana Examinar se abrirá con la misma configuración que tenía la última vez que se guardó en el archivo FoxUser.dbf si SET RESOURCE ista establecido en ON. Esto restaurará la configuración anterior de la ventana Examinar creada con el último comando BROWSE. Si el último comando BROWSE ejecutado en la ventana Comandos incluía una lista larga de cláusulas, ejecute BROWSE con la opción LAST o NOINIT para no tener que volver a escribir el comando. Para obtener más información acerca del archivo de recursos FoxUser, vea SET RESOURCE.

Si la última ventana Examinar se abrió con un comando BROWSE que incluía una cláusula PREFERENCE, BROWSE LAST no restaurará la preferencia.

Los cambios que se hagan en la configuración de la ventana Examinar durante la sesión actual no se guardarán si sale de BROWSE presionando CTRL+Q.

Las cláusulas LAST y NOINIT son idénticas; NOINIT ofrece compatibilidad con dBASE.

LOCK nNumberOfFields
Especifica cualquier número positivo, que indica la cantidad de campos que puede ver en la partición izquierda de la ventana Examinar sin necesidad de desplazarse o de usar tabulaciones, un número negativo, que indica el número de campos campos que permanecerán bloqueados en la ventana Examinar cuando se tabule a la derecha.

El tamaño de la partición izquierda se ajusta automáticamente para mostrar el número de campos especificado mediante nNumberOfFields. Una línea separadora de columna, que se muestra 1 pixel mas ancho que las demás líneas de separación, indica el área donde terminan las columnas bloqueadas y empiezan la columnas normales.

LPARTITION
Especifica que el cursor está situado en el primer campo de la partición izquierda de la ventana Examinar. De forma predeterminada, el cursor se sitúa en el primer campo de la partición derecha al abrirse la ventana.
NAME ObjectName
Crea una referencia de objeto para la ventana Examinar, lo que permite manipular dicha ventana mediante las propiedades orientadas a objetos disponibles para el control cuadrícula. Si desea obtener información adicional acerca de la programación orientada a objetos en Visual FoxPro, vea Programación orientada a objetos. Para obtener información adicional acerca de las propiedades del control cuadrícula que puede especificar para una ventana Examinar creada mediante la cláusula NAME, vea Grid (Control).
NOAPPEND
Impide que el usuario agregue registros a la tabla al presionar CTRL+Y o al elegir la opción Anexar nuevo Registro desde el menú Table.
Nota La inclusión de NOAPPEND no impide que se anexen registros desde una rutina (creada con VALID, WHEN u ON KEY LABEL) mientras se está en la ventana Examinar.
NOCAPTIONS
Especifica que se utilice siempre el nombre de campo de la tabla o vista para los encabezados de columna, aunque la base de datos contenga un título descriptivo para el campo de la tabla. Esta cláusula sólo se aplica a las tablas o vistas de una base de datos.
NODELETE
Impide marcar registros para su eliminación desde una ventana Examinar. De forma predeterminada, un registro se puede marcar para su eliminación al presionar CTRL+T, elegir Alternar marca de eliminación desde el menú Tabla, o haciendo clic en la columna situada mas a la izquierda del registro a ser eliminado.
NOEDIT | NOMODIFY
Impide a un usuario modificar la tabla. NOEDIT y NOMODIFY son idénticas. Si incluye cualquiera de las dos cláusulas, podrá examinar o buscar en la tabla, pero no modificarla. Sin embargo, sí es posible anexar y eliminar registros.
NOLGRID
Quita las líneas de cuadrícula del campo en la partición izquierda de la ventana Examinar.
NORGRID
Quita las líneas de cuadrícula del campo en la partición derecha de la ventana Examinar.
NOLINK
Desvincula las particiones de una ventana Examinar. De forma predeterminada, las particiones izquierda y derecha de la ventana Examinar están vinculadas para que cuando se desplace por una partición también se desplace la otra.
NOMENU
Quita de la barra de menús del sistema el título del menú Tabla, lo que impide el acceso al menú Examinar.
NOREFRESH
Impide actualizar la ventana Examinar. Las ventanas Examinar se actualizan según la frecuencia determinada mediante SET REFRESH. NOREFRESH es útil con los archivos de sólo lectura y mejora el rendimiento.
NORMAL
Abre la ventana Examinar con su configuración normal predeterminada, como colores, tamaño, posición, título y opciones de controles (GROW, FLOAT, ZOOM, y demás). Si omite NORMAL y la ventana actual de resultado es una ventana definida por el usuario con su propia configuración, la ventana Examinar utilizará también la configuración definida por el usuario.
NOWAIT
Continúa la ejecución del programa inmediatamente después de que se abra la ventana Examinar. El programa no espera a que se cierre la ventana Examinar, sino que sigue ejecutando la línea de programa que sigue inmediatamente a la línea que contiene BROWSE NOWAIT. Si omite NOWAIT cuando ejecuta BROWSE en un programa, se abrirá una ventana Examinar y la ejecución del programa se interrumpirá hasta que se cierre dicha ventana.

NOWAIT sólo está disponible desde dentro de un programa. Incluir NOWAIT no tiene efecto cuando BROWSE se ejecuta en la ventana Comandos.

PARTITION nColumnNumber
Divide una ventana Examinar en las particiones izquierda y derecha; nColumnNumber especifica el número de columnas de la barra de división. Por ejemplo, si nColumnNumber es 20, la barra de división se situará en la columna 20 de la ventana Examinar.
LEDIT
Especifica que la partición izquierda de la ventana Examinar aparecerá en modo de edición.
REDIT
Especifica que la partición derecha de la ventana Examinar aparecerá en modo de edición. El ejemplo siguiente abre una ventana Examinar con la barra de división situada en la columna 20 y la partición derecha abierta en modo de edición.

Incluya ambas palabras clave si desea abrir ambas particiones en modo de edición.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer  && Abre la tabla customer
BROWSE PARTITION 20 REDIT
PREFERENCE PreferenceName
Guarda los atributos y las opciones de una ventana Examinar para su uso posterior. A diferencia de LAST, que restaura la ventana Examinar tal como aparecía en la sesión anterior, PREFERENCE guarda indefinidamente en el archivo de recursos FOXUSER los atributos de una ventana Examinar. Las preferencias se pueden recuperar en cualquier momento.

Al ejecutar BROWSE con el nombre de preferencia especificado por primera vez se crea una entrada en el archivo FOXUSER que almacena la configuración de la ventana Examinar. Si más tarde ejecuta BROWSE con el mismo nombre de preferencia, se restaurará la ventana Examinar con el estado de dicha preferencia. Cuando se cierra la ventana Examinar, las preferencias se actualizan.

Los nombres de preferencia pueden tener hasta 10 caracteres de longitud, deben empezar con una letra o un signo de subrayado, y pueden contener cualquier combinación de letras, números y signos de subrayado.

Una vez que tenga las preferencias configuradas de la manera deseada, podrá impedir que cambien. Cierre la ventana Examinar, ejecute SET RESOURCE OFF, abra el archivo FOXUSER como tabla y cambie a sólo lectura el registro que contiene la preferencia; para ello, cambie el valor del campo lógico READONLY a verdadero (.T.).

Para obtener más información acerca del archivo de recursos FoxUser.dbf, vea SET RESOURCE.

Si sale de la ventana Examinar presionando CTRL+Q, los cambios de la ventana Examinar no se guardarán en el archivo de recursos.

SAVE
Mantiene activas y visibles (abiertas) la ventana Examinar y cualquiera de sus ventanas de edición de texto para campos memo. Puede volver a la ventana Examinar después de recorrer las demás ventanas abiertas con el teclado o con el ratón.

SAVE sólo está disponible desde dentro de un programa. SAVE no tiene ningún efecto cuando se incluye con BROWSE en la ventana Comandos porque BROWSE SAVE es siempre la opción predeterminada en el modo interactivo.

TIMEOUT nSeconds
Especifica el tiempo que una ventana Examinar espera recibir una entrada. La expresión numérica nSeconds especifica cuántos segundos pueden transcurrir sin que se produzca ninguna entrada antes de que la ventana Examinar se cierre automáticamente.

TIMEOUT sólo está disponible desde dentro de un programa; no tiene efecto cuando BROWSE se ejecuta en la ventana Comandos. En el ejemplo siguiente, la ventana Examinar se cierra si no se recibe ninguna entrada en 10 segundos.

DEFINE WINDOW wBrowse FROM 1,1 TO 24,40 ;
CLOSE ;
GROW ;
COLOR SCHEME 10
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer  && Open customer table
BROWSE WINDOW wBrowse ;
FIELDS phone :H = 'Phone Number:' , ;
company :H = 'Company:' ;
TIMEOUT 10
RELEASE WINDOW wBrowse
TITLE cTitleText
Reemplaza el nombre o el alias predeterminado de tabla que aparece en la barra de título de la ventana Examinar con el título especificado mediante cTitleText. De lo contrario, el nombre o el alias de la tabla que se está examinando aparecerá en la barra de título.

Si ejecuta BROWSE WINDOW para situar la ventana Examinar en una ventana definida por el usuario, el título de la ventana Examinar reemplazará el de la ventana definida por el usuario.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer  && Open customer table
BROWSE;
TITLE 'My Browse Window' ;
FIELDS phone :H = 'Phone Number' , ;
company :H = 'Company:'
VALID lExpression2
Realiza una validación a nivel de registros en una ventana Examinar. La cláusula VALID sólo se ejecutará si hace algún cambio en el registro e intenta desplazar el cursor a otro registro. La cláusula VALID no se ejecutará si sólo se hacen cambios en campos memo.

Si VALID devuelve un valor verdadero (.T.), el usuario podrá desplazar el cursor a otro registro. Si VALID devuelve un valor falso (.F.), el cursor permanecerá en el campo actual y Visual FoxPro mostrará un mensaje de error. Si VALID devuelve 0, el cursor permanecerá en el campo actual y no se mostrará ningún mensaje de error.

No debe confundirse la cláusula VALID con la opción de verificación (:V), que activa la validación a nivel de campo.

:F
Fuerza la ejecución de la cláusula VALID antes de que el usuario desplace el cursor hasta el siguiente registro. En este caso, VALID se ejecutará aunque no se hagan cambios en el registro.
ERROR cMessageText
Especifica un mensaje de error que aparecerá en lugar del mensaje de error predeterminado del sistema. Visual FoxPro mostrará cMessageText cuando VALID devuelva falso (.F.).
WHEN lExpression3
Evalúa una condición cuando el usuario desplaza el cursor a otro registro. Si lExpression3 da como resultado verdadero (.T.), el usuario podrá modificar el registro al que se ha desplazado. Si lExpression3 da como resultado falso (.F.) o 0, el registro al que se desplace el usuario se convertirá en un registro de sólo lectura y no podrá modificarse.

La cláusula WHEN no se ejecuta cuando está activada otra ventana.

WIDTH nFieldWidth
Limita a nFieldWidth el número de caracteres mostrados para todos los campos en una ventana Examinar. Se podrá desplazar horizontalmente por el contenido de un campo mediante las teclas Flecha izquierda y Flecha derecha, o la barra de desplazamiento horizontal. La inclusión de la cláusula WIDTH no cambia el tamaño de los campos de la tabla; sólo altera la forma en que se muestran los campos en la ventana Examinar. Si se ha especificado un ancho para un campo individual con la cláusula FIELDS, éste suplantará al ancho especificado con la cláusula WIDTH para ese campo.
WINDOW WindowName1
Especifica una ventana definida por el usuario cuyas características asumirá la ventana Examinar. Por ejemplo, si la ventana se ha definido con la cláusula FLOAT, la ventana Examinar podrá desplazarse. La ventana especificada no tiene que estar activa o visible necesariamente, pero debe estar definida.
IN [WINDOW] WindowName2
Especifica la ventana primaria dentro de la cual se abrirá la ventana Examinar. La ventana Examinar no asume las características de la ventana primaria. Una ventana Examinar activada dentro de una ventana primaria no podrá desplazarse fuera de ella. Si la ventana primaria se mueve, la ventana Examinar se moverá con ella.

Para tener acceso a la ventana Examinar, la ventana primaria debe definirse primero con DEFINE WINDOW y debe estar activa y visible.

IN SCREEN
Coloca explícitamente una ventana Examinar en la ventana principal de Visual FoxPro cuando está activa una ventana definida por el usuario.
COLOR SCHEME nSchemeNumber
Especifica el número de un esquema de colores empleado para los colores de la ventana Examinar.

La ventana Examinar asume el esquema de colores establecido mediante Color del Panel de control de Windows.

Observaciones

Una ventana Examinar permite ver y modificar registros de una tabla y anexar registros adicionales. Visual FoxPro permite tener varias ventanas Examinar abiertas al mismo tiempo.

Si presiona ESC para salir de la ventana Examinar, se descartarán los cambios realizados en el último campo que haya modificado. Sin embargo, si pasa a otro registro después de modificar un campo, se guardarán los cambios realizados al campo.

La lista de campos puede especificar cualquier combinación de campos o campos calculados. La sintaxis de la lista de campos es la siguiente:

FieldName1
[:R]
[:nColumnWidth]
[:V = lExpression1 [:F] [:E = cMessageText]]
[:P = cFormatCodes]
[:B = eLowerBound, eUpperBound [:F]]
[:H = cHeadingText]
[:W = lExpression2]
[, FieldName2 [:R]...]

Campos Calculados... La lista de campos puede contener instrucciones para contener campos calculados. Un campo calculado contiene datos de sólo lectura creados con una expresión. Esta expresión puede tomar cualquier forma, pero debe ser una expresión válida de Visual FoxPro.

El formato de la instrucción que se utiliza para crear un campo calculado es la siguiente:

CalculatedFieldName = eExpression

En este ejemplo se crea un campo calculado llamado location:

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer  && Open customer table
BROWSE FIELDS location = ALLTRIM(city) + ', ' + country

city y country son nombres de campos de la tabla seleccionada actualmente.

La lista de campos de la cláusula FIELDS incluye opciones que permiten el tratamiento especial de los campos que se muestran en la ventana Examinar:

:R
Especifica que el campo es de sólo lectura. Los datos que contiene pueden verse pero no modificarse.

En el ejemplo siguiente se abre una ventana Examinar con los campos cust_id y company. El campo cust_id es de sólo lectura y no puede cambiarse.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer  && Open customer table
BROWSE FIELDS cust_id:R, company
:nColumnWidth
Especifica el tamaño de presentación de un campo en las columnas. El valor de:nColumnWidth no afecta al tamaño del campo en la tabla; sólo altera la forma en que se muestra el campo en la ventana Examinar.
:V = lExpression1 [:F] [:E = cMessageText]
Permite realizar la validación de datos a nivel de campo dentro de la ventana Examinar. Si lExpression1 da como resultado verdadero (.T.) cuando se desplaza el cursor desde un campo, la entrada de datos en el campo se considerará correcta y el cursor se desplazará al campo siguiente.

La opción de verificación no se ejecuta para los campos memo.

De forma predeterminada, lExpression1 sólo se evalúa cuando se modifica el campo. Para forzar la comprobación, incluya la opción :F.

Puede mostrar su propio mensaje de error si incluye la opción :E que se describe más adelante.

:F
Determina si la expresión especificada en la opción de verificación se evaluará cuando mueva el cursor fuera de un campo o cuando se active otra ventana. Si no se incluye :F, lExpression1 sólo se evaluará si se hace algún cambio en el campo. Si se incluye :F, lExpression1 se evaluará aunque el campo no se haya modificado.
:E = cMessageText
Si la expresión de validación:V = lExpression1 da como resultado verdadero (.T), el cursor abandonará el campo normalmente. Si la expresión da como resultado falso (.F.), el cursor permanecerá en el campo y Visual FoxPro mostrará un mensaje de error.

Si se incluye la opción de error (:E), se mostrará cMessageText en lugar del mensaje de error del sistema. cMessageText sólo se muestra si SET NOTIFY es ON. Si SET BELL está establecido en ON, sonará un aviso acústico.

Si :V = lExpression1 da como resultado 0, no se mostrará ningún mensaje y el cursor permanecerá en el campo que se esté validando. Esto permite mostrar sus propios mensajes de error en rutinas de validación.

El ejemplo siguiente abre la tabla products y muestra los campos product_id y prod_name. El campo product_id es un campo numérico que aceptará hasta cinco números. Para este ejemplo consideraremos como no válido un product_id mayor que 100.

:V especifica el criterio de validación. :F fuerza que se ejecute la validación tanto si se cambian los datos como si no. :E reemplaza el mensaje de error del sistema de Visual FoxPro por un mensaje de error definido por el usuario. En Visual FoxPro, el mensaje de error se muestra en la barra de estado, en la parte inferior de la ventana principal de Visual FoxPro.

Presione ESC para cerrar la ventana Examinar.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE products  && Open products table
IF _WINDOWS OR _MAC
SET STATUS BAR ON
ENDIF
USE products
BROWSE FIELDS in_stock :V = in_stock < 100 ;
:F ;
:E = 'La cantidad de stock debe ser menor que 100'
:P = cFormatCodes
Si incluye una cláusula FIELDS, también podrá especificar una opción de imagen (:P) para cada campo de la lista. La opción de imagen permite crear una lista de códigos que controle la presentación y entrada de datos para cada campo de la ventana Examinar. cFormatCodes es la lista de códigos.

El ejemplo siguiente utiliza la opción de imagen para permitir únicamente datos numéricos con un determinado formato en el campo unit_price:

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE products  && Abre la tabla products
BROWSE FIELDS unit_price :P = '99,999.99'

Vea Format (Propiedad) e InputMask (Propiedad) para obtener más información acerca de los códigos de opción de imagen.

:B = eLowerBound, eUpperBound [:F]
Especifica un conjunto de límites entre los cuales deben estar comprendidos los datos de un campo. Las expresiones de límite eLowerBound y eUpperBound deben coincidir con el tipo de datos del campo. No pueden ser funciones definidas por el usuario. Si los datos escritos no quedan dentro de eLowerBound y eUpperBound, aparecerá un mensaje de error del sistema que indica el intervalo entre el que deben estar comprendidos los datos.

De forma predeterminada, se comprueba que los datos escritos quedan dentro de los límites sólo si se hacen cambios en el contenido del campo. Para forzar la comprobación, incluya la opción de forzar validación (:F).

El ejemplo siguiente garantiza que el valor del campo in_stock están entre 1 y 100. Presione ESC para cerrar la ventana Examinar.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE products  && Open products table
BROWSE FIELDS in_stock :B = 1, 100    :F
:H = cHeadingText
Reemplaza los nombres predeterminados de campo por sus propios encabezados, que especifica mediante cHeadingText. De forma predeterminada, los nombres de campo se utilizan como encabezados de columna en la ventana Examinar.

El ejemplo siguiente proporciona encabezados definidos por el usuario para los campos mostrados.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE products  && Open products table
BROWSE FIELDS prod_name :H = 'Product Name:', ;
unit_price :H = 'Price per Unit:'
:W = lExpression2
Determina si se puede desplazar el cursor a un campo. Si lExpression2 da como resultado falso (.F.), se prohibirá que el cursor se desplace al campo. Si lExpression2 se evalúa como verdadero (.T.), el cursor puede moverse al campo. En lExpression2 es posible utilizar funciones definidas por el usuario.

Si se prohíbe desplazar el cursor a todos los campos, el registro actual se marcará como de sólo lectura. Esto ocurre sólo cuando todos los campos contienen una cláusula WHEN que da como resultado falso.

SET SKIP Support... SET SKIP permite establecer una relación uno a varios entre dos tablas. Cada registro en la tabla principal estará relacionado con varios registros de la tabla secundaria. Si crea una relación uno a varios, puede utilizar BROWSE para ver los registros de ambas tablas, principal y secundaria.

El registro primario se muestra una vez, junto con el primer registro coincidente de la tabla secundaria. Los demás registros coincidentes se mostrarán en las filas que siguen al registro primario y al primer registro coincidente secundario. El carácter de relleno para la información primaria repetida depende de la fuente actual de la ventana Examinar.

Si se sitúa el puntero de registro en un registro primario, podrá desplazarlo entre los registros primarios de la ventana Examinar si presiona CTRL+FLECHA ABAJO para ir al siguiente registro primario o CTRL+FLECHA ARRIBA para ir al registro primario anterior. Si desea obtener más información acerca de la creación de relaciones uno a varios, vea SET SKIP.

La lista de campos de la cláusula FIELDS contiene los registros de la tabla primaria y de la secundaria. Los nombres de los campos están precedidos por el alias de su tabla (orders o customer) y un punto.

CLEAR
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer ORDER cust_id IN 0   && Parent table
USE orders ORDER cust_id IN 0  && Child table
SELECT customer     && Back to parent work area
SET RELATION TO cust_id INTO orders     && Establish relationship
SET SKIP TO orders  && One-to-many relationship
WAIT WINDOW 'Scroll to see shipping dates for each customer' NOWAIT
BROWSE FIELDS customer.cust_id :H='Customer Number', ;
customer.city :H='Customer City', orders.shipped_on

Funciones Utiles... Varias funciones de Visual FoxPro regresan información útil de la ventana Examinar.

Función | Descripción
VARREAD( ) | Devuelve el nombre del campo donde está situado el cursor para la ventana Examinar activa.
RECNO( ) | Devuelve el número del registro seleccionado en la ventana Examinar activa.

Vea también

CHANGE | EDIT | Grid (Control) | SET SKIP | WTITLE( ) | Agregar registros


BUILD APP (Comando)

Crea un archivo de aplicación con la extensión .app a partir de un archivo de proyecto existente.

BUILD APP APPFileName FROM ProjectName [RECOMPILE]

Parámetros

APPFileName
Especifica el nombre de archivo de la aplicación que va a generar. La extensión predeterminada del nombre de archivo es .app.
FROM ProjectName
Especifica el nombre del proyecto a partir del cual se genera la aplicación.
RECOMPILE
Especifica que el proyecto se compile antes de generar el archivo de aplicación. Se compilan todos los archivos de programa y formato, formulario, etiqueta, informe y código fuente de biblioteca de clases visuales, así como los procedimientos almacenados en bases de datos del proyecto.

Observaciones

Un archivo de proyecto se crea mediante CREATE PROJECT o MODIFY PROJECT. Un archivo de proyecto es una tabla que utiliza las extensiones de archivo .pjx (archivo de tabla) y .pjt (archivo memo).

Antes de utilizar BUILD APP, asegúrese de que el archivo de proyecto contiene todos los archivos necesarios en la aplicación. Si durante la generación falta algún archivo necesario, Visual FoxPro generará un error. Éstos y otros errores de tiempo de compilación se almacenan en un archivo con la extensión .ERR. Los ocho primeros caracteres del nombre del archivo de errores son los mismos que los del nombre del proyecto.

Si desea obtener más información acerca de la generación de proyectos, vea Compilar una aplicación.

Vea también

BUILD EXE | Build (Método) | BUILD PROJECT | CREATE PROJECT | MODIFY PROJECT


BUILD DLL (Comando)

Crea una biblioteca de vínculos dinámicos (DLL) con una extensión de nombre de archivo .dll mediante la información de clase de un archivo de proyecto.

BUILD DLL DLLFileName FROM ProjectName [RECOMPILE]

Parámetros

DLLFileName
Especifica el nombre de la biblioteca de vínculos dinámicos que se va a generar. La extensión de nombre de archivo predeterminada es .dll.
FROM ProjectName
Especifica el nombre del proyecto a partir del cual se generará la biblioteca de vínculos dinámicos.

El proyecto debe contener una clase designada como OLEPUBLIC o se mostrará un mensaje de error. Para designar una clase como OLEPUBLIC en el código de programa, incluya la palabra clave OLEPUBLIC en DEFINE CLASS. Para designar una clase como OLEPUBLIC en el Diseñador de clases, elija Información de clase en el menú de clase y active la casilla de verificación OLE público.

RECOMPILE
Especifica que el proyecto se compile antes de generar la biblioteca de vínculos dinámicos. Se compilan todos los archivos de programa y formato, formulario, etiqueta, informe y código fuente de biblioteca de clases visuales, así como los procedimientos almacenados en bases de datos del proyecto.

Observaciones

BUILD DLL registra automáticamente los servidores del cuadro de lista Clases de servidor de la ficha Servidores del cuadro de diálogo Información de proyecto.

Para obtener información acerca de la creación de servidores de automatización, vea Crear servidores de Automatización.

Vea también

BUILD EXE | Build (Método) | BUILD PROJECT | CREATE PROJECT | MODIFY PROJECT


BUILD EXE (Comando)

Crea un archivo ejecutable a partir de un proyecto.

BUILD EXE EXEFileName FROM ProjectName [RECOMPILE]

Parámetros

EXEFileName
Especifíca el nombre del archivo ejecutable que desea crear. Si existe un archivo de aplicación .app con el mismo nombre raíz que el archivo ejecutable autónomo, se eliminará. Tenga en cuenta que si existe un archivo ejecutable y crea un archivo .app con el mismo nombre, se eliminará el archivo ejecutable.
FROM ProjectName
Especifica el nombre del proyecto a partir del cual se generará el archivo ejecutable.
RECOMPILE
Especifica que el proyecto se compile antes de generar el archivo ejecutable. Se compilan todos los archivos de programa y formato, formulario, etiqueta, informe y código fuente de biblioteca de clases visuales, así como los procedimientos almacenados en bases de datos del proyecto.

Observaciones

Un archivo ejecutable creado con BUILD EXE requiere dos archivos de soporte: Vfp8r.dll y Vfp8renu.dll (“enu” indica versión inglesa). Debe colocar estos archivos en el mismo directorio que el archivo ejecutable o en la ruta de acceso de MS-DOS.

Si el archivo ejecutable contiene definiciones de clase OLEPUBLIC, BUILD EXE registra automáticamente las definiciones de clase OLEPUBLIC en el registro del sistema. Las definiciones de clase OLEPUBLIC aparecen en el cuadro de lista Clases de servidor de la ficha Servidores del cuadro de diálogo Información de proyecto.

BUILD EXE también crea archivos .vbr (registro) y .tlb (biblioteca de tipos) con el mismo nombre que el archivo ejecutable. El archivo .vbr permite registrar las definiciones de clase en el registro del sistema cuando se mueve el archivo ejecutable a un equipo diferente. El archivo .tlb se utiliza para examinadores de objetos.

Si desea obtener más información acerca del registro de definiciones de clase OLEPUBLIC en un archivo ejecutable, vea Agregar OLE.

Vea también

BUILD DLL | BUILD APP | Build (Método) | BUILD MTDLL | BUILD PROJECT


BUILD MTDLL (Comando)

Crea una biblioteca de vínculos dinámicos (DLL) multiproceso con una extensión de nombre de archivo .dll, mediante la información de clase de un archivo de proyecto.

BUILD MTDLL MTDLLFileName FROM ProjectName [RECOMPILE]

Parámetros

MTDLLFileName
Especifica el nombre de la biblioteca de vínculos dinámicos que se va a generar. La extensión de nombre de archivo predeterminada es .dll.
FROM ProjectName
Especifica el nombre del proyecto a partir del cual se generará la biblioteca de vínculos dinámicos.

El proyecto debe contener una clase designada como OLEPUBLIC o se mostrará un mensaje de error. Para designar una clase como OLEPUBLIC en el código de programa, incluya la palabra clave OLEPUBLIC en DEFINE CLASS. Para designar una clase como OLEPUBLIC en el Diseñador de clases, elija Información de clase en el menú de clase y active la casilla de verificación OLE público.

RECOMPILE
Especifica que el proyecto se compile antes de generar la biblioteca de vínculos dinámicos. Se compilan todos los archivos de programa y formato, formulario, etiqueta, informe y código fuente de biblioteca de clases visuales, así como los procedimientos almacenados en bases de datos del proyecto.

Observaciones

Para obtener información acerca de la creación de servidores de automatización, vea Crear servidores de Automatización.

El motor de tiempo de ejecución de Visual FoxPro que crea archivos .dll multiproceso está diseñado para crear sólo servidores en proceso. Muchos comandos y funciones de entrada de usuario son incompatibles. Si desea obtener información detallada, vea Interoperabilidad e Internet.

BUILD MTDLL registra automáticamente los servidores del cuadro de lista Clases de servidor de la ficha Servidores del cuadro de diálogo Información de proyecto.

Vea también

BUILD DLL | BUILD EXE | Build (Método) | BUILD PROJECT | CREATE PROJECT | MODIFY PROJECT


BUILD PROJECT (Comando)

Crea y genera un archivo de proyecto.

BUILD PROJECT ProjectFileName [RECOMPILE]   [FROM ProgramName1 | MenuName1 | ReportName1 | LabelName1      | FormName1 | LibraryName1
[, ProgramName2 | MenuName2 | ReportName2 | LabelName2      | FormName2
| LibraryName2 ...]]

Parámetros

ProjectFileName
Especifica el nombre de la tabla de proyecto que se va a crear.
RECOMPILE
Compila todos los archivos del proyecto. Si se omite RECOMPILE, sólo se compilarán los archivos modificados cuando se genere el proyecto.
FROM ProgramName1 | MenuName1 | ReportName1 | LabelName1| FormName1 | LibraryName1
Especifica los archivos que va a incluir en el proyecto. Puede especificar uno o más archivos de programa, menú, informe, etiqueta, formulario o biblioteca; el proyecto llevará un registro de estos archivos, así como de sus dependencias, referencias y conexiones.

De forma predeterminada, el primer archivo ejecutable de programa o de menú de la cláusula FROM es el archivo del programa principal del proyecto.

Observaciones

BUILD PROJECT crea automáticamente una tabla de proyecto con la extensión de nombre de archivo .pjx, que abre y procesa uno o más archivos de programa, menú, informe, etiqueta, formulario o biblioteca que especifique. Puede utilizar el archivo de proyecto para crear uno de dos tipos de programas: un archivo .app de aplicación o un archivo .exe ejecutable. La tabla del proyecto mantiene un registro de todos los archivos necesarios para crear una aplicación, así como las dependencias, referencias y conexiones entre los archivos. Una vez que especifique los componentes del proyecto, Visual FoxPro se asegurará de que la aplicación se basa en los archivos de origen más recientes.

Si desea obtener más información acerca de la generación de proyectos, vea Compilar una aplicación.

Cuando Visual FoxPro encuentra un archivo de programa, menú o formulario mientras crea un archivo de proyecto con BUILD PROJECT, busca su archivo compilado y compara la marca de fecha y hora de los dos archivos. Si la marca de fecha y hora del archivo de origen es posterior a la del archivo compilado, Visual FoxPro volverá a compilar el archivo de origen.

Cada archivo de proyecto contiene una marca de fecha y hora para que pueda actualizar el archivo de proyecto cuando haga cambios en los archivos del proyecto o cuando cambien las dependencias. Esto ayuda a garantizar que cualquier aplicación creada a partir de un archivo de proyecto utilizará siempre los archivos de origen más recientes. Para actualizar un archivo de proyecto, ejecute BUILD PROJECT sin la cláusula opcional FROM. Visual FoxPro actualizará el proyecto especificado.

Cuando ejecute BUILD PROJECT, se informará de las referencias no resueltas y de otros errores, pero esto no impedirá que se cree el archivo de proyecto. Esto le permitirá crear proyectos cuando todos los componentes necesarios no se hayan creado realmente o no estén disponibles en el momento de crear el proyecto. Las referencias no resueltas u otros problemas podrán entonces corregirse al actualizar posteriormente el archivo de proyecto o al modificar de forma manual la información almacenada en el archivo de proyecto mediante MODIFY PROJECT.

Vea también

BUILD APP | BUILD EXE | Build (Método) | BuildDateTime (Propiedad) | CREATE PROJECT | EXTERNAL | MODIFY PROJECT


CALCULATE (Comando)

Realiza operaciones financieras y estadísticas en campos de una tabla o expresiones que utilicen campos.

CALCULATE eExpressionList [Scope] [FOR lExpression1] [WHILE lExpression2] [TO VarList | TO ARRAY ArrayName] [NOOPTIMIZE] [IN nWorkArea | cTableAlias]

Parámetros

eExpressionList
Especifica las expresiones que pueden contener cualquier combinación de las siguientes funciones:

AVG(nExpression)

CNT( )

MAX(eExpression)

MIN(eExpression)

NPV(nExpression1, nExpression2 [, nExpression3])

STD(nExpression)

SUM(nExpression)

VAR(nExpression)

Las funciones de la lista eExpressionList están separadas con comas. Estas funciones son específicas de CALCULATE y se describen detalladamente más adelante en esta sección. No deben confundirse con funciones independientes de nombre similar. Por ejemplo, CALCULATE MIN( ) no es lo mismo que MIN( ).

Scope
Especifica un intervalo de registros utilizados en el cálculo. Solamente se incluyen en dicho cálculo los registros incluidos en el intervalo. Las cláusulas de alcance son: ALL, NEXT nRecords, RECORD nRecordNumber y REST. Para obtener más información acerca de las cláusulas de alcance, vea el tema Cláusulas de alcance. Los comandos que incluyen Scope sólo actúan sobre la tabla del área de trabajo activa.

El alcance predeterminado de CALCULATE es ALL (todos los registros).

FOR lExpression1
Especifica que sólo los registros que satisfacen la condición lógica lExpression1 se incluirán en el cálculo. La inclusión de FOR permite incluir registros en el cálculo de manera condicional, al filtrar los registros no deseados.

Rushmore optimiza una consulta CALCULATE ... FOR si lExpression1 es una expresión optimizable. Para obtener el máximo rendimiento, utilice una expresión optimizable en la cláusula FOR. Si desea obtener más información acerca de las expresiones optimizables con Rushmore, vea SET OPTIMIZE y Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.

WHILE lExpression2
Especifica una condición por la cual los registros se incluyen en el cálculo siempre y cuando la expresión lógica lExpression2 dé como resultado verdadero (.T.).
TO VarList
Especifica una o varias variables donde se almacenan los resultados del cálculo. Si una variable especificada no existe, Visual FoxPro la creará automáticamente con el nombre que usted especifique.
TO ARRAY ArrayName
Especifica el nombre de la matriz donde se pueden almacenar los resultados del cálculo. Si el nombre de matriz especificado no existe, Visual FoxPro creará automáticamente una matriz con este nombre. Si la matriz existe pero no es suficientemente grande para contener todos los resultados, Visual FoxPro aumentará automáticamente su tamaño para dar cabida a la información. Si una matriz existente es mayor de lo necesario, los elementos adicionales permanecerán sin cambios. Los resultados se almacenan en los elementos de la matriz en el orden en que se especifican en el comando CALCULATE.
NOOPTIMIZE
Desactiva la optimización Rushmore de CALCULATE. Si desea obtener más información, vea SET OPTIMIZE y Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.
AVG(nExpression)
Calcula la media aritmética de nExpression. Sólo se incluyen en el resultado los registros que cumplan las condiciones de Scope y/o de las cláusulas opcionales FOR o WHILE.
CNT( )
Devuelve el número de registros de la tabla. Sólo se incluyen en el resultado los registros que cumplan las condiciones de Scope y/o de las cláusulas opcionales FOR o WHILE.
MAX(eExpression)
Devuelve el valor mayor o el más reciente de eExpression. En la cláusula MAX( ) es posible especificar cualquier campo (Character, Date, DateTime, Numérico, Float, Integer, Double o Currency) o cualquier expresión válida que utilice campos de estos tipos. Sólo se incluyen en el resultado los registros que cumplan las condiciones de Scope y/o de las cláusulas opcionales FOR o WHILE.
MIN(eExpression)
Devuelve el valor menor o el más antiguo de eExpression. En eExpression es posible especificar cualquier campo (Character, Date, DateTime, Numérico, Float, Integer, Double o Currency) o cualquier expresión válida que utilice campos de estos tipos. Sólo se incluyen en el resultado los registros que cumplan las condiciones de Scope y/o de las cláusulas opcionales FOR o WHILE.
NPV(nExpression1, nExpression2 [, nExpression3])
Calcula el valor neto actual de una serie de flujos de caja futuros descontados a una tasa de interés periódica constante.

nExpression1 es la tasa de interés expresada como valor decimal.

nExpression2 es un campo, expresión de campo o expresión numérica que representa una serie de flujos de caja. Cada flujo de caja puede ser positivo o negativo. En los casos en que nExpression2 sea un campo, el valor del campo en cada registro de la tabla se considerará un flujo de caja.

nExpression3 es una inversión inicial opcional. Si no se incluye la inversión inicial, se supondrá que ésta ocurre al final del primer período. Esta inversión inicial es el primer registro del campo y es negativa para representar una retirada de caja.

Sólo se incluyen en el resultado los registros que cumplan las condiciones de Scope y/o de las cláusulas opcionales FOR o WHILE.

STD(nExpression)
Calcula la desviación estándar de nExpression. La desviación estándar mide el grado en que los valores de los campos o expresiones que utilizan campos difieren del promedio de todos los valores. Cuanto menor sea la desviación estándar, menos varían los valores con respecto al promedio. Sólo se incluyen en el resultado los registros que cumplan las condiciones de Scope y/o de las cláusulas opcionales FOR o WHILE.
SUM(nExpression)
Calcula el total de la suma de los valores de nExpression. Sólo se incluyen en el resultado los registros que cumplan las condiciones de Scope y/o de las cláusulas opcionales FOR o WHILE.
VAR(nExpression)
Calcula la varianza del promedio de nExpression. La varianza es la desviación estándar elevada al cuadrado. Cuanto menor sea la varianza, menos varían los valores con respecto al promedio. Sólo se incluyen en el resultado los registros que cumplan las condiciones de Scope y/o de las cláusulas opcionales FOR o WHILE.
IN nWorkArea | cTableAlias
Especifica el área de trabajo o el alias de tabla al que afecta el comando CALCULATE. Utilice esta cláusula para especificar un área de trabajo o una tabla fuera del área de trabajo actual.

Observaciones

Los registros que contienen el valor nulo no se incluyen en las operaciones que realiza CALCULATE.

Ejemplo

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE orders  && Open Orders table
SET TALK ON
CLEAR
CALCULATE AVG(order_amt), MIN(order_amt), MAX(order_amt)
CALCULATE STD(order_amt), VAR(order_amt) TO gnStd, gnVar

Vea también

AVERAGE | COUNT | DIMENSION | FV( ) | MAX( ) | MIN( ) | PAYMENT( ) | PV( ) | SUM


CANCEL (Comando)

Finaliza la ejecución del archivo de programa actual de Visual FoxPro.

CANCEL

Observaciones

El control vuelve a la ventana Comandos cuando se utiliza Visual FoxPro de forma interactiva. Si se está ejecutando una aplicación distribuida en tiempo de ejecución, CANCEL termina la aplicación y el control vuelve a Windows. Si se está ejecutando un programa en Visual FoxPro en tiempo de diseño, CANCEL terminará el programa y el control volverá a la ventana Comandos.

La ejecución de CANCEL libera todas las variables privadas.

Ejemplo

En el siguiente ejemplo se simula un bucle de ejecución de programa. En cada bucle se le preguntará si desea continuar. Si presiona el botón Cancelar, CANCEL detendrá la ejecución del programa.

DO WHILE .T.
IF MESSAGEBOX("Do you want to continue?",36) <> 6
CANCEL
ENDIF
ENDDO

Vea también

QUIT | RESUME | RETURN | SUSPEND | Cancel (Propiedad) | SQLCANCEL( )


CD | CHDIR (Comando)

Cambia el directorio predeterminado de Visual FoxPro por el directorio que usted especifique.

CD cPath | CHDIR cPath

Parámetros

cPath
Especifica uno de los elementos siguientes:
  • Un indicador de unidad
  • Un indicador de unidad con un directorio
  • Un directorio secundario
  • Cualquiera de los anteriores que utilicen notación abreviada de MS-DOS ( \ o ..). Cuando se incluya .. para modificar el directorio primario, será necesario incluir un espacio entre CD o CHDIR y los dos puntos.

Observaciones

Utilice CD o CHDIR para especificar el directorio predeterminado de Visual FoxPro. Visual FoxPro busca archivos en el directorio predeterminado de visual FoxPro. Si Visual FoxPro no encuentra un archivo en el directorio predeterminado, buscará en la ruta de acceso de Visual FoxPro si se ha especificado una. Utilice SET PATH para especificar la ruta de acceso de Visual FoxPro.

Si crea un archivo y no especifica dónde situarlo, el archivo se colocará en el directorio predeterminado de Visual FoxPro.

Puede localizar directorios ocultos o del sistema utilizando CD y CHDIR. Para mayor información, vea FILE( ) Función y DIRECTORY( ) (Función).

Los comandos CD y CHDIR no son soportados en servidores DLL simples o multitarea. Estos comandos cambian el directorio predeterminado del proceso completo, y todas las tareas que son parte del proceso son afectadas. Utilice el comando SET PATH en servidores DLL, en lugar de SET DEFAULT.

Ejemplo

El siguiente ejemplo utiliza SET DEFAULT para cambiar el directorio predeterminado de Visual FoxPro al directorio de inicio. Utiliza MKDIR tpara crear un nuevo directorio llamado mytestdir, y CHDIR para cambiar al directorio mytestdir. GETDIR( ) muestra la estructura del directorio en el cuadro de diálogo Selecionar Directorio. Puede utilizar entonces SET DEFAULT para ir al directorio de inicio, RMDIR para quitar el directorio creado recientemente, y GETDIR( ) para mostrar la estructura de directorio original.

SET DEFAULT TO HOME()
MKDIR mytestdir
CHDIR mytestdir  = GETDIR()
SET DEFAULT TO HOME()
RMDIR mytestdir  = GETDIR()

Vea también

DIR o DIRECTORY (Comando) | DIRECTORY( ) | GETDIR( ) | HOME( ) | MD | MKDIR | RD | RMDIR | SET DEFAULT | SET PATH | SYS(5) - Unidad predeterminada | SYS(2003) - Directorio actual SYS(2004) - Directorio de inicio de Visual FoxPro


CHANGE (Comando)

Muestra campos para edición.

CHANGE [FIELDS FieldList] [Scope] [FOR lExpression1] [WHILE lExpression2] [FONT cFontName [, nFontSize]] [STYLE cFontStyle] [FREEZE FieldName] [KEY eExpression1 [, eExpression2]] [LAST | NOINIT] [LPARTITION] [NAME ObjectName] [NOAPPEND] [NOCAPTION] [NOCLEAR] [NODELETE] [NOEDIT | NOMODIFY] [NOLINK] [NOMENU] [NOOPTIMIZE] [NORMAL] [NOWAIT] [PARTITION nColumnNumber [LEDIT] [REDIT]] [PREFERENCE PreferenceName] [REST] [SAVE] [TIMEOUT nSeconds] [TITLE cTitleText] [VALID [:F] lExpression3 [ERROR cMessageText]] [WHEN lExpression4] [WIDTH nFieldWidth] [WINDOW WindowName1] [IN [WINDOW] WindowNam2 | IN SCREEN | IN MACDESKTOP]] [COLOR SCHEME nSchemeNumber | COLOR ColorPairList]

Parámetros

Los argumentos para CHANGE son los mismos que para EDIT. Vea EDIT.

Observaciones

CHANGE funciona de manera idéntica a EDIT.

Vea también

BROWSE | EDIT | WTITLE( )


CLEAR (Comandos)

Libera de la memoria el elemento o los elementos especificados.

CLEAR [ALL | CLASS ClassName | CLASSLIB ClassLibraryName | DEBUG | DLLS [cAliasNameList]| EVENTS | FIELDS | GETS | MACROS | MEMORY | MENUS | POPUPS | PROGRAM | PROMPT | READ [ALL] | RESOURCES [FileName] | TYPEAHEAD | WINDOWS]

Parámetros

ALL
Libera de la memoria todas las variables y matrices, así como las definiciones de todas las barras de menús, menús y ventanas definidas por el usuario. CLOSE ALL también cierra las tablas, lo que incluye todos los archivos de índices, memo y de formato asociados, y selecciona el área de trabajo 1. CLEAR ALL también libera de la memoria todas las funciones de bibliotecas compartidas externas registradas con DECLARE - DLL.

CLEAR ALL no libera las variables del sistema y no borra el búfer de programas compilados. Utilice CLEAR PROGRAM para borrar el búfer de programas compilados.

Si ejecuta CLEAR ALL sobre un evento o un método para un control o un objeto activo, se genera un mensaje de error de Visual FoxPro. Una variable de tipo Object no se puede liberar de la memoria cuando su control u objeto asociado está activo.

CLASS ClassName
Borra de la memoria una definición de clase. Cuando se crea una instancia de una clase, Visual FoxPro conserva en memoria la definición de clase después de liberar la instancia. Utilice CLEAR CLASS para borrar de la memoria una definición de clase después de liberar su instancia.
CLASSLIB ClassLibraryName
Borra de la memoria todas las definiciones de clase contenidas en una biblioteca de clases visuales. Si existen instancias de clases en la biblioteca de clases, las definiciones de clase no se borrarán de la memoria y se generará un mensaje de error. Sin embargo, todas las definiciones de clase que no tengan instancias se borrarán de la memoria.
DEBUG
Borra todos los puntos de interrupción en el Depurador y restaura las ventanas del Depurador (Pila de llamadas, Seguimiento, Inspección, etc.) a sus posiciones predeterminadas.

Si se ejecuta Clear Debug mientras está cerrado el Depurador, se abrirá el Depurador con sus ventanas en las posiciones predeterminadas.

Funciona tanto en modo de marco de depurador como en modo de marco de fox.

DLLS cAliasNameList
Borra de la memoria las bibliotecas compartidas externas registradas con DECLARE - DLL. cAliasNameList es una lista, separada por comas, de los alias de función que se van a quitar de la memoria, como en el siguiente ejemplo:
CLEAR DLLS  "RegCloseKey","RegOpenKey"

Si no utilizó ningún alias en la declaración, cAliasNameList es igual al nombre de la función. Si se especifica cAliasNameList, todas las DLL se quitan de la memoria. Puede utilizar la función ADLLS( ) para determinar qué DLL están cargadas.

Vea DECLARE - DLL (Comando) para obtener más información acerca del registro de bibliotecas compartidas externas.

EVENTS
Detiene el procesamiento de eventos iniciado con READ EVENTS. Cuando se ejecuta CLEAR EVENTS, la ejecución del programa continúa en la línea de programa inmediatamente posterior a READ EVENTS.
FIELDS
Libera una lista creada con SET FIELDS y ejecuta SET FIELDS OFF. CLEAR FIELDS se diferencia de SET FIELDS TO en que libera todas las listas de campos en todas las áreas de trabajo, no sólo la lista de campos del área de trabajo actual. Además, SET FIELDS TO no ejecuta implícitamente SET FIELDS OFF.
GETS
Libera todos los controles @ ... GET pendientes. La ejecución de CLEAR también libera todos los controles @ ... GET pendientes.
Nota GETS se incluye por compatibilidad con versiones anteriores.
MACROS
Libera de la memoria todas las macros de teclado, incluidas todas las asignaciones de teclas de SET FUNCTION. Las macros se pueden guardar en un archivo de macro o en un campo memo con SAVE MACROS y restaurarse más tarde con RESTORE MACROS. También puede restaurar las macros predeterminadas con RESTORE MACROS.
MEMORY
Libera de la memoria todas las variables y matrices públicas y privadas. Las variables del sistema no se liberan.
MENUS
Libera de la memoria todas las definiciones de barras de menús.
POPUPS
Libera de la memoria todas las definiciones de menús creadas con DEFINE POPUP.
PROGRAM
Borra el búfer del programa compilado. Visual FoxPro mantiene un búfer de los programas ejecutados más recientemente. En raras ocasiones puede ocurrir que Visual FoxPro no reconozca los cambios efectuados en los archivos de programa en disco. CLEAR PROGRAM obliga a Visual FoxPro a leer los programas en el disco, en lugar de en el búfer de programas. La razón más común por la que Visual FoxPro puede no reconocer los cambios en los archivos de programa es el uso de un editor TSR (programa residente) o externo para modificar un archivo de programa. Salvo esta excepción, no debería ser necesario el uso de CLEAR PROGRAM.
PROMPT
Libera los elementos de menú creados con @ ... PROMPT.
READ [ALL]
Se incluye por compatibilidad con versiones anteriores. Utilice CLEAR EVENTS en su lugar.
RESOURCES [FileName]
Especifica el nombre de un mapa de bits, una imagen, una fuente, un cursor o un archivo de icono en caché que se va a borrar de la memoria. Si no se especifica ningún nombre de archivo, se borrarán de la memora todos los mapas de bits, imágenes, fuentes, cursores y archivos de icono.

Cuando Visual FoxPro muestra un mapa de bits, un cursor, una imagen, un icono o un recurso de fuentes, se almacenará el recurso en la caché para mejorar el rendimiento. Si se ha utilizado un recurso con el mismo nombre (por ejemplo, un mapa de bits distinto con el mismo nombre que otro que ya está en la caché), Visual FoxPro no volverá a cargar el recurso.

El hecho de borrar un archivo de recursos es, por tanto, especialmente útil para quitar una imagen gráfica de la memoria y para forzar a Visual FoxPro a volver a cargar una imagen del mismo nombre del disco. Por ejemplo, es posible que un informe muestre imágenes gráficas procedentes de una base de datos y que todas se llamen TEMP. Sin embargo, dado que todas se llaman igual, Visual FoxPro no volverá a cargar cada nuevo gráfico a no ser que se haya borrado de la memoria el ya existente mediante el comando CLEAR RESOURCES.

TYPEAHEAD
Borra el búfer de escritura de teclado. CLEAR TYPEAHEAD es útil cuando se desea impedir la entrada en un campo o la respuesta a una petición antes de que se muestren el campo o la petición.
WINDOWS
Libera de la memoria todas las definiciones de ventanas definidas por el usuario y borra las ventanas de la ventana principal de Visual FoxPro o la ventana activa definida por el usuario. Las definiciones de ventanas se pueden guardar con SAVE WINDOW en un archivo o campo memo para su uso posterior.

La ejecución de CLEAR WINDOWS libera cualquier referencia de variable de sistema a formularios. Por ejemplo, los comandos siguientes crean una referencia de variable de sistema para un formulario y, después, muestran información acerca de dicha variable:

goMyForm = CREATEOBJECT('FORM')
DISPLAY MEMORY LIKE goMyForm  && Displays GOMYFORM  O  FORM

La ejecución de CLEAR WINDOWS libera la referencia de variable de sistema y la variable contiene ahora el valor nulo:

CLEAR WINDOWS
DISPLAY MEMORY LIKE goMyForm  && Displays GOMYFORM  O  .NULL.

Observaciones

CLEAR borra la ventana principal de Visual FoxPro o la ventana activa definida por el usuario y libera de la memoria todos los controles @ ... GET pendientes. Se puede incluir CLEAR en archivos de formato.

Vea también

@ ... CLEAR | CLOSE | DECLARE - DLL | READ | READ EVENTS | RELEASE | RELEASE CLASSLIB | RELEASE WINDOWS


CLOSE (Comandos)

Cierra varios tipos de archivo.

CLOSE [ALL | ALTERNATE | DATABASES [ALL] | DEBUGGER | FORMAT | INDEXES | PROCEDURE | TABLES [ALL]]

Parámetros

ALL
Cierra todas las bases de datos, tablas e índices abiertos en la sesión de datos actual y en todas las sesiones de datos inactivas y selecciona el área de trabajo 1. CLOSE ALL también cierra los archivos abiertos con las funciones de archivo de bajo nivel FCREATE( ) y FOPEN( ). CLOSE ALL no cierra un archivo abierto con SET PRINT.

CLOSE ALL también cierra lo siguiente:

  • Diseñador de formularios
  • Administrador de proyectos
  • Diseñador de etiquetas
  • Diseñador de informes
  • Diseñador de consultas

CLOSE ALL no cierra lo siguiente:

  • La ventana Comandos
  • La ventana Depuración
  • Ayuda
  • La ventana Seguimiento
CLOSE ALTERNATE
Cierra un archivo alternativo abierto con SET ALTERNATE.
CLOSE DATABASES [ALL]
Cierra la base de datos actual de la sesión de datos actual, así como sus tablas. Si no hay ninguna base de datos activa, se cierran todas las tablas libres, los índices y los archivos de formato abiertos en todas las áreas de trabajo y se selecciona el área de trabajo 1.

La palabra clave ALL especifica que serán cerradas en la sesion de datos actual y todas las inactivas:

  • Todas las bases de datos y sus tablas, excepto la base de datos actualmente seleccionada en otra sesión de datos o bases de datos y sus tablas que esten abiertas en otra sesión de datos.
  • Todas las tablas libres abiertas.
  • Todo los índice y archivos de formato en todaslas áreas.
    • Se selecciona el área de trabajo 1.
    • Se selecciona el área de trabajo 1.
CLOSE DEBUGGER
Cierra el depurador de Visual FoxPro.
CLOSE FORMAT
Cierra un archivo de formato del área de trabajo actual abierto con SET FORMAT.
CLOSE INDEXES
Cierra todos los archivos de índice (tanto .idx de entrada simple como .cdx compuestos independientes) abiertos en el área de trabajo actual. Un índice compuesto estructural (un archivo .cdx abierto automáticamente con la tabla) no se cierra.
CLOSE PROCEDURE
Cierra el archivo de procedimientos abierto con SET PROCEDURE.
CLOSE TABLES [ALL]
Cierra todas las tablas de la base de datos seleccionada actualmente. CLOSE TABLES cierra todas las tablas libres de todas las áreas de trabajo en caso de que no haya una base de datos abierta.

Incluya ALL para cerrar todas las tablas en todas las bases de datos y todas las tablas independientes. Todas las bases de datos permanecen abiertas.

CLOSE TABLES no debe ejecutarse cuando hay una transacción en progreso, porque Visual FoxPro generará un mensaje de error.

Vea también

ADD TABLE | CLOSE MEMO | CREATE DATABASE | Close (Método)


CLOSE MEMO (Comando)

Cierra una o más ventanas de edición de campos memo.

CLOSE MEMO MemoFieldName1 [, MemoFieldName2 ...] | ALL

Parámetros

MemoFieldName1 [, MemoFieldName2 ...]
Especifica el nombre del campo memo cuya ventana de edición memo desea cerrar. Para cerrar un conjunto de ventanas de edición de campos memo, incluya una lista de nombres de campos memo, con los nombres separados con comas. Puede cerrar una ventana de edición de memo o un campo memo de una tabla abierta en otra área de trabajo si incluye el alias de la tabla.
ALL
Cierra todas las ventanas de edición de campos memo para todos los campos memo incluidos en todas las tablas abiertas.

Observaciones

CLOSE MEMO cierra las ventanas de edición de campos memo abiertas con MODIFY MEMO o abiertas desde una ventana Examinar o Editar. CLOSE MEMO guarda los cambios que se hayan efectuado en los campos memo.

Al cerrar una tabla que contiene el campo o los campos memo también se guarda cualquier cambio que se haya efectuado y se cierran las ventanas memo.

Vea también

BROWSE | MODIFY MEMO | APPEND MEMO | COPY MEMO


COMPILE (Comando)

Compila uno o más archivos de origen y crea un archivo objeto para cada archivo de origen.

COMPILE FileName | FileSkeleton | ? [ENCRYPT] [NODEBUG] [AS nCodePage]

Parámetros

LABEL
Especifica que el archivo que se va a compilar es un archivo de definición de etiquetas (.lbx). El código fuente para el entorno de datos guardado con el archivo de definición de etiquetas se compila y almacena en un campo memo adicional.
REPORT
Especifica que el archivo que se va a compilar es un archivo de definición de informes (.frx). El código fuente para el entorno de datos guardado con el archivo de definición de informes se compila y almacena en un campo memo adicional.
FileName | FileSkeleton
Especifica que se compile un solo archivo FileName o un conjunto de archivos que coinciden con una estructura de archivo FileSkeleton que contiene caracteres comodín tales como * y ?. Por ejemplo, para compilar todos los archivos de programa del directorio actual que tengan la extensión .prg, ejecute COMPILE *.PRG.
?
Muestra el cuadro de diálogo Compilar, que permite elegir un archivo para compilarlo.
ENCRYPT
Codifica sus programas compilados de Visual FoxPro. No se puede utilizar con las palabras clave CLASSLIB, LABEL y REPORT. Esto impide cualquier acceso a sus programas de origen. Para obtener protección adicional para el código fuente, incluya siempre esta opción al compilar programas destinados a su distribución.
NODEBUG
Reduce el tamaño del archivo compilado en dos bytes por línea de archivo de origen. No se puede utilizar con las palabras clave CLASSLIB, LABEL y REPORT. Estos dos bytes del archivo compilado son una referencia a la línea correspondiente en el archivo de origen. La eliminación de estos dos bytes no afecta al rendimiento del programa, pero reduce el tamaño del archivo compilado y ahorra espacio en el disco.

Cuando incluya la cláusula NODEBUG no podrá ver la ejecución del programa en la ventana Seguimiento ni usar MESSAGE(1) para devolver el código fuente para una línea que cause un error.

AS nCodePage
Especifica la página de códigos para la cual se compila el programa. No se puede utilizar con las palabras clave CLASSLIB, LABEL y REPORT. La página de códigos de compilación que especifique con esta cláusula invalida la página de códigos de compilación global especificada mediante SET CPCOMPILE.

Observaciones

Visual FoxPro sólo ejecuta archivos objeto, por lo que si el archivo de origen no se ha compilado, se compila automáticamente al ejecutar el programa. El archivo de origen permanece sin cambios. Se crea un archivo compilado separado con el mismo nombre raíz que el archivo de origen, pero con una extensión diferente. En la tabla siguiente se muestran las extensiones de los archivos de origen y compilados para cada tipo de archivo:

Tipo de archivo | Extensión de origen | Extensión compilada
Archivo de programa | PRG | FXP
Código de formulario | SPR | SPX
Código de menú | MPR | MPX
Consulta | QPR | QPX
Formato | FMT | PRX

El compilador detecta cualquier error de sintaxis que exista en el archivo de origen. Los mensajes de error de compilación se guardan en un archivo de texto si SET LOGERRORS está establecido en ON en el momento de compilarse el archivo. El archivo de registro de errores tiene el mismo nombre raíz que el archivo compilado y la extensión .err. El archivo de registro de errores no se creará si SET LOGERRORS está establecido en OFF.

Vea también

#DEFINE ... #UNDEF (Directiva de preprocesador) | #IF ... #ENDIF (Directiva de preprocesador) | #IFDEF |#IF ... #ENDIF (Directiva del preprocesador) | #INCLUDE | BUILD PROJECT | COMPILE DATABASE (Comando) | COMPILE FORM (Comando) | BUILD APP | MODIFY COMMAND | MODIFY PROJECT | SET CPCOMPILE | SET LOGERRORS


COMPILE DATABASE (Comando)

Compila procedimientos almacenados en una base de datos.

COMPILE DATABASE cDatabaseName | cFileSkeleton | ?

Parámetros

DATABASE
Especifica que el archivo que se va a compilar es un archivo de base de datos (.dbc). El código de origen para los procedimientos almacenados, guardado con la base de datos, se compila y se almacena en un campo memo adicional.
cDatabaseName
Especifica el nombre de la base de datos que contiene los procedimientos almacenados a compilar. Es posible compilar procedimientos almacenados en una base de datos que no esté abierta.
cFileSkeleton
Especifica un subconjunto de archivos de base de datos que se va a compilar. cFileSkeletones es una especificación de patrón de archivo que admite comodines tales como * y ?. Por ejemplo, para compilar todos los objetos base de datos que empiezan por A, utilice el comando siguiente:
COMPILE DATABASE A*

Observaciones

Utilice COMPILE DATABASE para compilar procedimientos almacenados fuera del Diseñador de bases de datos. Los procedimientos almacenados se pueden crear y modificar interactivamente con MODIFY PROCEDURES, o mediante programación con APPEND PROCEDURES.

COMPILE DATABASE empaqueta campos memo en el archivo memo .dct para que la base de datos quite espacio no utilizado en el archivo memo. Los registros marcados para su eliminación no se quitan de la tabla.

Ejemplo

El siguiente ejemplo compila todos los procedimientos almacenados en la base de datos testdata.

CLOSE DATABASES
COMPILE DATABASE (HOME(2) + 'data\testdata')

Vea también

APPEND PROCEDURES | COPY PROCEDURES | CREATE TRIGGER | DISPLAY PROCEDURES | MODIFY PROCEDURE | OPEN DATABASE


COMPILE FORM/CLASSLIB (Comando)

Compila uno o más objetos Form.

COMPILE FORM | CLASSLIB cFileName | cFileSkeleton | ? [ALL]

Parámetros

FORM
Especifica que el archivo que se va a compilar es un archivo de definición de formulario (.scx). El código fuente para el entorno de datos guardado con el archivo de definición de formulario se compila y almacena en un campo memo adicional.
CLASSLIB
Especifica que el archivo que se va a compilar es una biblioteca de clases visuales (.vcx). El código fuente de la biblioteca de clases visuales está almacenado en campos memo en la tabla de bibliotecas de clases visuales. COMPILE CLASSLIB compila dichos campos memo en código de objeto que se almacena en un campo memo adicional.
cFileName
Especifica el nombre del formulario que se va a compilar.
cFileSkeleton
Especifica un subconjunto de archivos de formulario que se va a compilar. cFileSkeleton es una especificación de patrón de archivo que admite comodines tales como * y ?. Por ejemplo, para compilar todos los objetos formulario que empiezan por A, utilice el comando siguiente:
COMPILE FORM A*
?
Muestra el cuadro de diálogo Compilar, que permite elegir un archivo para compilarlo.
ALL
Compila todos los registros para todas las plataformas Visual FoxPro de la tabla Formulario. Si omite ALL, sólo se compilarán los registros para la plataforma Visual FoxPro actual.

Observaciones

Los formularios se compilan automáticamente cuando se guardan en el Diseñador de formularios. Utilice COMPILE FORM para compilar un formulario fuera del Diseñador de formularios.

El código fuente del formulario se almacena en campos memo de la tabla Formulario. COMPILE FORM compila estos campos memo en código de objeto que se almacena en un campo memo adicional. El código objeto de este campo adicional se ejecuta al ejecutar DO FORM.

Observe que si un formulario tiene un archivo (.H) de inclusión y se ha movido el archivo de inclusión de su directorio original, aparecerá un error de compilación y se enumerará en el archivo de registro de errores .err. Se puede ejecutar el formulario, pero no se puede guardar ni modificar hasta que corrija la ruta de acceso al archivo de inclusión. Para corregir la ruta de acceso al archivo de inclusión, abra el formulario con MODIFY FORM, elija Incluir archivo del menú Formulario y especifique el archivo de inclusión con su nueva ruta de acceso en el cuadro de diálogo Incluir archivo.

Vea también

CREATE FORM | DO FORM | MODIFY FORM


COMPILE REPORT/LABEL (Comando)

Compila uno o más informes o etiquetas.

COMPILE  REPORT | LABEL cFileName | cFileSkeleton [ALL]

Parámetros

REPORT
Especifíca que el archivo que se va a compilar es un archivo de definición de informe (.frx). El código fuente para el entorno de datos guardado con el archivo de definición de informes se compila y almacena en un campo memo adicional.
LABEL
Indica que el archivo a compilar es un archivo de definición de etiquetas (.lbx). El código fuente para el entorno de datos guardado con el archivo de definición de etiquetas se compila y almacena en un campo memo adicional.
cFileName
Nombre del informe o etiqueta a compilar.
cFileSkeleton
Subconjunto de formularios a compilar. cFileSkeleton es una especificación de patrón de archivo que admite comodines tales como * y ?. Por ejemplo, para compilar todos los objetos informe que empiezan con A, utilice el siguiente comando:

COMPILE REPORT A*

ALL
Compila todos los registros para todas las plataformas Visual FoxPro de la tabla de formularios. Si omite ALL, solo se compilarán los registros para la plataforma Visual FoxPro actual.

Vea también

COMPILE (Comando)


CONTINUE (Comando)

Continúa el comando LOCATE previo.

CONTINUE

Observaciones

CONTINUE se utiliza después de que LOCATE tenga éxito al encontrar un registro, para continuar la operación de búsqueda. CONTINUE desplaza el puntero de registro al siguiente registro para el que la expresión lógica especificada en el comando LOCATE previo dé como resultado verdadero (.T.).

CONTINUE puede repetirse hasta que se encuentre el final del archivo o hasta que se llegue al final del alcance especificado en LOCATE.

Si CONTINUE tiene éxito al encontrar un registro, RECNO( ) devolverá el número del registro, FOUND( ) devolverá el valor Verdadero (.T.) y EOF( ) devolverá el valor Falso (.F.).

Si CONTINUE no tiene éxito al buscar un registro, RECNO( ) devolverá el número de registros de la tabla más uno, FOUND( ) devolverá Falso (.F.) y EOF( ) devolverá Verdadero (.T.).

Ejemplo

En el ejemplo siguiente se cuentan todos los clientes de Francia y se muestra el total. Todos los registros se encuentran mediante un comando LOCATE seguido de un comando CONTINUE.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer  && Opens Customer table
SET TALK OFF
STORE 0 TO gnCount
LOCATE FOR ALLTRIM(UPPER(country)) = 'FRANCE'
DO WHILE FOUND( )
gnCount = gnCount + 1
CONTINUE
ENDDO
? 'Total customers from France: '+ LTRIM(STR(gnCount))

Vea también

EOF( ) | FOUND( ) | LOCATE | SEEK


COPY FILE (Comando)

Duplica cualquier tipo de archivo.

COPY FILE FileName1 TO FileName2

Observaciones

COPY FILE crea un duplicado del archivo cuyo nombre se especifica en FileName1. COPY FILE puede utilizarse para copiar todo tipo de archivos. El archivo que se va a copiar no puede estar abierto. Es necesario incluir las extensiones tanto del nombre del archivo de origen FileName1 como del nombre del archivo de destino FileName2.

FileName1 y FileName2 pueden contener caracteres comodín como * y ?. Por ejemplo, para crear copias de seguridad de todos los archivos de programa con la extensión .prg en el directorio actual, ejecute COPY FILE *.PRG TO *.BAK.

Si utiliza COPY FILE para crear una copia de seguridad de una tabla que tiene un campo memo, un índice estructural o ambos, asegúrese de copiar también los archivos .fpt y .cdx.

Vea también

DELETE FILE | RENAME | RENAME TABLE


COPY INDEXES (Comando)

Crea etiquetas de índice compuesto a partir de archivos de índice .idx de una sola entrada.

COPY INDEXES IndexFileList | ALL   [TO CDXFileName]

Parámetros

IndexFileList
Especifica los archivos de índice .idx de una sola entrada cuyas expresiones de índice se utilizan para crear las etiquetas. Separe los nombres de archivos de índice mediante comas. El nombre que se asigna a cada etiqueta es el nombre raíz del correspondiente archivo de índice de una entrada. Si crea una etiqueta a partir de un archivo que tiene el mismo nombre que una etiqueta existente y si SAFETY está establecido en ON, aparecerá un cuadro de diálogo que pregunta si desea sobrescribir la etiqueta.
ALL
Especifica que se crean etiquetas de índice a partir de todos los archivos abiertos de índice de una sola entrada.
TO CDXFileName
Crea etiquetas en un archivo de índice compuesto no estructural. Especifique el nombre del archivo de índice compuesto no estructural mediante CDXFileName. Si no existe un archivo de este tipo con el nombre especificado, Visual FoxPro lo creará automáticamente.

Observaciones

Un archivo de índice compuesto es un archivo de índice que contiene distintas entradas de índice denominadas etiquetas. Cada etiqueta está identificada por un nombre único de etiqueta. La extensión predeterminada para un archivo de índice compuesto es .cdx.

Antes de utilizar COPY INDEXES es necesario abrir la tabla y los archivos de índice de una sola entrada. Las expresiones de índice de los archivos de índice de una sola entrada se utilizan para crear las nuevas etiquetas.

Si omite la cláusula TO, las nuevas etiquetas se agregarán al archivo de índice compuesto estructural que se abre automáticamente con la tabla. Si no existe ningún archivo de este tipo para la tabla, COPY INDEXES creará uno.

Utilice COPY TAG para crear un archivo de índice de una sola entrada a partir de etiquetas de archivo de índice compuesto.

Vea también

CDX( ) | COPY TAG | DELETE TAG | INDEX | TAG( ) | USE


COPY MEMO (Comando)

Copia a un archivo de texto el contenido del campo memo especificado en el registro actual.

COPY MEMO MemoFieldName TO FileName   [ADDITIVE]   [AS nCodePage]

Parámetros

MemoFieldName
Especifica el nombre del campo memo copiado al archivo de texto.
TO FileName
Especifica el nombre de un archivo de texto nuevo o existente al que se copia el campo memo. Si no proporciona ninguna extensión en FileName, se asignará la extensión .txt. También puede incluir una ruta de acceso junto con el nombre de archivo.
ADDITIVE
Anexa el contenido del campo memo al final del archivo de texto especificado. Si omite ADDITIVE, el contenido del campo memo reemplazará el contenido del archivo de texto.
AS nCodePage
Especifica la página de códigos para el archivo de texto creado por COPY MEMO. Visual FoxPro copia el contenido del campo memo especificado y, a medida que copia los datos, los convierte automáticamente a la página de códigos especificada para el archivo de texto.

Si especifica un valor no admitido para nCodePage, Visual FoxPro generará un mensaje de error. Puede utilizar GETCP( ) para que nCodePage muestre el cuadro de diálogo Página de códigos y le permita especificar otra página de códigos distinta para el archivo creado por Visual FoxPro.

Si AS nCodePage se omite o es 0, no se producirá la conversión de la página de códigos.

Ejemplo

En el ejemplo siguiente, el contenido del campo memo notes se copia al archivo Test.txt. El campo memo se copia luego otra vez y se anexa al final del archivo de texto.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE employee && Opens Employee table
COPY MEMO notes TO test.txt
WAIT WINDOW 'Memo contents now in test.txt' NOWAIT
MODIFY FILE test.txt
COPY MEMO notes TO test.txt ADDITIVE
WAIT WINDOW 'Memo contents added again to test.txt' NOWAIT
MODIFY FILE test.txt
DELETE FILE test.txt

Vea también

APPEND MEMO | COPY FILE | COPY TO | MODIFY MEMO


COPY PROCEDURES (Comando)

Copia procedimientos almacenados de la base de datos actual a un archivo de texto.

COPY PROCEDURES TO FileName   [AS nCodePage] [ADDITIVE]

Parámetros

FileName
Especifica el nombre de un archivo de texto al que se copian los procedimientos almacenados. Si no existe el archivo, Visual FoxPro lo creará automáticamente.
AS nCodePage
Especifica la página de códigos del archivo de texto al que se copian los procedimientos almacenados. Visual FoxPro copia los procedimientos almacenados y, al hacerlo, convierte automáticamente los procedimientos almacenados a la página de códigos que especifique.

Si especifica un valor no admitido para nCodePage, Visual FoxPro generará un mensaje de error. Puede utilizar GETCP( ) para que nCodePage muestre el cuadro de diálogo Página de códigos, que permite especificar una página de códigos para el archivo de texto al que se copian los procedimientos almacenados.

Si omite AS nCodePage o si AS nCodePage es 0, no se producirá la conversión de la página de códigos.

ADDITIVE
Anexa los procedimientos almacenados al final del archivo de texto especificado. Si omite ADDITIVE, los procedimientos almacenados sustituirán el contenido del archivo de texto.

Observaciones

Utilice COPY PROCEDURES con APPEND PROCEDURES para modificar procedimientos almacenados de una base de datos mediante programación. Es necesario que haya una base de datos abierta y actual cuando se ejecuta COPY PROCEDURES; de lo contrario, Visual FoxPro generará un mensaje de error.

Ejemplo

El ejemplo siguiente abre la base de datos testdata y utiliza COPY PROCEDURES para copiar los procedimientos a un archivo de texto temporal denominado Myproc.txt. MODIFY FILE se utiliza para abrir el archivo de texto temporal, que estará vacío si no hay procedimientos almacenados en la base de datos.

Si no hay procedimientos almacenados en la base de datos, puede ejecutar el ejemplo de APPEND PROCEDURES para agregar un procedimiento a la base de datos.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
COPY PROCEDURES TO myproc.txt && Copy stored procedures to a file
MODIFY FILE myproc.txt  && Open the file
DELETE FILE myproc.txt  && Erase the file

Vea también

APPEND PROCEDURES | CREATE TRIGGER | DISPLAY PROCEDURES | MODIFY PROCEDURE | SET DATABASE


COPY STRUCTURE (Comando)

Crea una nueva tabla vacía, con la misma estructura que la tabla seleccionada actualmente.

COPY STRUCTURE TO TableName   [FIELDS FieldList] [[WITH] CDX | [WITH] PRODUCTION] [DATABASE cDatabaseName [NAME cTableName]]

Parámetros

TableName
Especifica el nombre de la nueva tabla vacía que se desea crear.

En Visual FoxPro, los procedimientos almacenados y las expresiones desencadenadoras de la tabla nueva son idénticos a los de la tabla seleccionada actualmente.

FIELDS FieldList
Especifica que solamente se copien a la tabla nueva los campos cuyos nombres se especifican en FieldList. Si omite FIELDS FieldList, se copiarán todos los campos a la nueva tabla.
[WITH] CDX | [WITH] PRODUCTION
Crea un archivo de índice estructural para la nueva tabla idéntico al de la tabla existente. Las etiquetas y expresiones de índice del archivo de índice estructural original se copian al nuevo archivo de índice estructural.

Las cláusulas CDX y PRODUCTION son idénticas.

En Visual FoxPro, se convierte un índice principal para la tabla actualmente seleccionada en un índice candidato para la nueva tabla vacía.

DATABASE cDatabaseName
Especifica el nombre de una base de datos existente a la que se agrega la nueva base de datos. Observe que las propiedades de tabla y campo no se copian a la base de datos.
NAME cTableName
Especifica el nombre de la tabla como aparece en la base de datos.

Ejemplo

En el ejemplo siguiente, se abre la tabla customer, se copia su estructura a una tabla denominada backup y se abre la tabla backup. Después, APPEND FROM anexa registros de la tabla customer a la tabla backup y se abre la ventana Examinar para la tabla backup.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer  && Opens Customer table
COPY STRUCTURE TO backup
USE backup
APPEND FROM customer FOR country = 'UK'
BROWSE FIELDS contact, country
USE
DELETE FILE backup.dbf

Vea también

COPY STRUCTURE EXTENDED | CREATE | DISPLAY STRUCTURE


COPY STRUCTURE EXTENDED (Comando)

Crea una nueva tabla con campos que contienen la estructura de la tabla seleccionada actualmente.

COPY STRUCTURE EXTENDED TO FileName
 [DATABASE DatabaseName [NAME LongTableName]] [FIELDS FieldList]

Parámetros

FileName
Especifica la tabla nueva que se va a crear.
DATABASE DatabaseName
Especifica una base de datos a la que se agregará la nueva tabla.
NAME LongTableName
Especifica un nombre largo para la nueva tabla. Los nombres largos pueden contener un máximo de 128 caracteres y se pueden utilizar en lugar de nombres cortos de archivo en la base de datos.
FIELDS FieldList
Especifica que solamente se incluyan en un registro de la nueva tabla los campos especificados en FieldList. Si omite FIELDS FieldList, todos los campos tendrán un registro en la nueva tabla.

Observaciones

La información acerca de cada campo de la tabla seleccionada actualmente se copia a un registro de la nueva tabla. La estructura de la nueva tabla es fija en cuanto a formato y consta de dieciocho campos. En la tabla siguiente se muestran los nombres de los campos y su contenido.

Campo | Tipo de campo | Contenido
FIELD_NAME | Carácter | Nombres de campo de la tabla seleccionada (hasta 128 caracteres)
FIELD_TYPE | Carácter | Tipos de campo: C = Carácter, Y = Moneda, N = Numérico, F = Flotante, I = Entero, B = Doble, D = Fecha, T = DateTime, L = Lógico, M = Memo, G = General
FIELD_LEN | Numérico | Ancho del campo
FIELD_DEC | Numérico | Número de decimales en campos numéricos
FIELD_NULL | Lógico | Compatibilidad del campo con valores nulos
FIELD_NOCP | Lógico | Conversión de página de códigos no permitida (solamente campos Carácter y Memo)
FIELD_DEFA | Memo | Valores predeterminados del campo
FIELD_RULE | Memo | Reglas de validación del campo
FIELD_ERR | Memo | Texto de validación del campo
TABLE_RULE | Memo | Regla de validación de tabla
TABLE_ERR | Memo | Texto de validación de la tabla
TABLE_NAME | Carácter | Nombre largo de tabla (sólo para el primer registro)
INS_TRIG | Memo | Expresión del desencadenante Insert (sólo para el primer registro)
UPD_TRIG | Memo | Expresión del desencadenante Update (sólo para el primer registro)
DEL_TRIG | Memo | Expresión del desencadenante Delete (sólo para el primer registro)
TABLE_CMT | Memo | Comentarios de tabla (sólo para el primer registro)
FIELD_NEXT | Numérico | Siguiente valor para el campo AUTOINC, si esta activado.
FIELD_STEP | Numérico | Valor de incremento para el campo AUTOINC. Si el valor es 0, el autoincremento no es activado para el campo.

En versiones anteriores de Visual FoxPro, FoxPro para Windows, y FoxPro para MS-DOS, el ancho del campo FIELD_NAME es de 10 caracteres . Para utilizar CREATE FROM con una tabla creada por COPY STRUCTURE EXTENDED en Visual FoxPro 5.0 y anteriores, debe cambiar el ancho del campo FIELD_NAME a 10 caracteres. Algunos tipos de campos no son soportados en Visual FoxPro 3.0 y versiones anteriores.

Si campos de la tabla origen utilizan autoincremento, FIELD_STEP es un valor diferente a cero.

Puede modificar la nueva tabla creada y utilizar el comando CREATE FROM para crear una nueva tabla con un estructura diferente. Los comandos COPY STRUCTURE y CREATE FROM permiten cambiar la estructura de una tabla mediante programación.

Ejemplo

El ejemplo siguiente muestra la estructura de la tabla Orders, copia la estructura extendida a una tabla Temp, examina Temp,crea una tabla llamada Backup desde Temp, y muestra la estructura de Backup.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')

USE Orders  && Abre la tabla Orders.
CLEAR
DISPLAY STRUCTURE
WAIT WINDOW 'Estructura de la tabla Orders' NOWAIT
COPY STRUCTURE EXTENDED TO temp
USE temp
WAIT WINDOW 'Tabla temp - 1 fila por cada campo de Orders' NOWAIT
BROWSE
CREATE backup FROM temp
USE backup
DISPLAY STRUCTURE
WAIT WINDOW 'Backup.dbf tiene la misma estructura que Orders' NOWAIT
USE
DELETE FILE temp.dbf
DELETE FILE backup.dbf

Vea también

AFIELDS( ) | Autoincrementar valores de campos en tablas | CREATE FROM | COPY STRUCTURE


COPY TAG (Comando)

Crea un archivo de índice de una sola entrada (.idx) a partir de una etiqueta de un archivo de índice compuesto.

COPY TAG TagName [OF CDXFileName]   TO IndexFileName

Parámetros

TagName
Especifica la etiqueta utilizada para crear el archivo .idx de una sola entrada.
OF CDXFileName
Especifica el archivo de índice compuesto que contiene la etiqueta. Incluya esta cláusula si existen etiquetas con el mismo nombre en los archivos de índice compuesto abiertos. Si omite OF CDXFileName, Visual FoxPro buscará primero la etiqueta en el archivo de índice estructural. Si no la encuentra allí, Visual FoxPro la buscará en todos los archivos de índice compuesto no estructural abiertos.
TO IndexFileName
Especifica el nombre del archivo .idx de una sola entrada que se desea crear.

Observaciones

Utilice COPY TAG para crear un nuevo archivo .idx de una sola entrada a partir de una etiqueta de un archivo de índice compuesto .cdx.

El archivo de índice compuesto a partir del cual se crea el archivo .idx de una sola entrada debe estar abierto. Los archivos de índice compuesto estructural se abren automáticamente en el momento de abrir una tabla. Los archivos de índice compuesto no estructural deben abrirse explícitamente con USE ... INDEX o SET INDEX. Si desea obtener más información acerca de los archivos de índice compuesto, vea INDEX.

Utilice COPY INDEX para crear etiquetas en archivos de índice compuesto a partir de archivos .idx de una sola entrada.

Vea también

CDX( ) | COPY INDEXES | DELETE TAG | INDEX | TAG( ) | USE


COPY TO ARRAY (Comando)

Copia a una matriz los datos de la tabla seleccionada actualmente.

COPY TO ARRAY ArrayName
   [FIELDS FieldList | FIELDS LIKE Skeleton | FIELDS EXCEPT Skeleton]    [Scope] [FOR lExpression1] [WHILE lExpression2] [NOOPTIMIZE]

Parámetros

ArrayName
Especifica la matriz a la que se deben copiar los datos de la tabla.
FIELDS FieldList
Especifica que solamente se copian a la matriz los campos especificados en FieldList. Si se omite la cláusula FIELDS FieldList, todos los campos se copiarán a la matriz si ésta tiene suficientes columnas.
FIELDS LIKE Skeleton
Especifica que los campos que coinciden con la estructura de campos Skeleton se copian a la matriz.
FIELDS EXCEPT Skeleton
Especifica que todos los campos excepto los que coinciden con la estructura de campos Skeleton se copian a la matriz.
Scope
Especifica el intervalo de registros que se copian a la matriz. Sólo se copiarán los registros comprendidos en ese intervalo. Las cláusulas de alcance son: ALL, NEXT nRecords, RECORD nRecordNumber y REST. Para mayor información sobre las cláusulas de alcance, vea Cláusulas de alcance.
FOR lExpression1
Especifica que solamente se copian a la matriz los registros que satisfacen la condición lógica lExpression1. Para una copia condicional a la matriz, incluir la cláusula FOR para filtrar los registros no deseados.
WHILE lExpression2
Especifica un condición por la cual los registros son copiados a la matriz mientas la expresión lógicalExpression2 sea evaluada como verdadera (.T.).
NOOPTIMIZE
Desactiva la optimización de consultas Rushmore de COPY TO ARRAY. Para mayor información, vea SET OPTIMIZE and Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.

Observaciones

Rushmore optimiza una consulta COPY TO ARRAY que incluya FOR lExpression1 solo si lExpression1 es una expresión optimizable. Para un mejor rendimiento, utilice una expresión optimizable con la cláusula FOR. Para mayor información sobre las expresiones optimizables con Rushmore, vea SET OPTIMIZE y Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.

COPY TO ARRAY y SCATTER son similares. COPY TO ARRAY copia varios registros a una matriz, mientras SCATTER copia solo un registro a la matriz o a un conjunto de variables de memoria. Ambos, COPY TO ARRAY y SCATTER crean una nueva matriz si la matriz que ha especificado no existe.

Para copiar un solo registro a una matriz, puede especificar una matriz unidimensional. La matriz unidimensional que especifique debe tener el mismo número de elementos como campos en la tabla, los campos memo no se cuentan. Los campos Memo son ignorados por COPY TO ARRAY.

Si especifica una matriz de una dimensión, el primer campo de un registro se almacenará en el primer elemento de la matriz, el segundo campo se almacenará en el segundo elemento y así sucesivamente. Si la matriz de una dimensión tiene más elementos que campos hay en la tabla, los elementos sobrantes permanecerán sin cambios. Si la matriz tiene menos elementos que campos hay en la tabla, los campos sobrantes se pasarán por alto.

Para copiar múltiples registros o una tabla entera a una matriz, utilice una matriz de dos dimensiones. El número de filas de la matriz es el número de registros que puede contener y su número de columnas es igual al número de campos que se pueden incluir en ella.

Cada registro se almacena en una fila de la matriz y cada campo del registro se almacena en una columna. Para cada registro, el primer campo se almacena en la primera columna de la matriz, el segundo campo se almacena en la segunda columna y así sucesivamente. Si el número de columnas de la matriz es mayor que el de campos de la tabla, las columnas restantes permanecerán sin cambios. Si el número de columnas de la matriz es menor que el número de campos de la tabla, los campos restantes no se almacenarán en la matriz.

Cada fila sucesiva de la matriz se llena con el contenido del siguiente registro de la tabla. Si la matriz tiene más filas que registros tiene la tabla, las filas restantes permanecerán sin cambios. Si la matriz tiene menos filas que registros tiene la tabla, los registros restantes no se almacenarán en la matriz.

Los datos pueden ser copiados desde matrices como nuevos registros de tablas con APPEND FROM ARRAY. También es posible copiar datos de una matriz o un conjunto de variables de memoria a registros de una tabla mediante GATHER.

La estructura de campo Skeleton permite caracteres comodín. Por ejemplo, para especificar que todos los registros que comiencen con las letras A y P, utilice lo siguiente:

COPY TO ARRAY aMyArray FIELDS LIKE A*,P*

La clásula LIKE puede ser combinada con la clásula EXCEPT:

COPY TO ARRAY aMyArray FIELDS LIKE A*,P* EXCEPT PARTNO*

El autoincremento activado no tiene ningun efecto sobre el comando COPY TO ARRAY. Solo los valores del registro son copiados a la matriz.

Ejemplo

En el ejemplo siguiente, se abre la tabla Customer. Luego se crea una matriz de dos dimensiones y se copian los tres primeros registros de Customer a la matriz. DISPLAY MEMORY muestra los datos almacenados en la misma.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE Customer  && Abre la tabla Customer.
DIMENSION gaTemp(3,10)
COPY NEXT 3 TO ARRAY gaTemp
DISPLAY MEMORY LIKE gaTemp

Vea también

APPEND FROM ARRAY | DECLARE | DIMENSION | GATHER | PUBLIC | SCATTER | STORE


COPY TO (Comando)

Crea un nuevo archivo a partir del contenido de la tabla seleccionada actualmente.

COPY TO FileName [DATABASE DatabaseName [NAME LongTableName]]
 [FIELDS FieldList | FIELDS LIKE Skeleton | FIELDS EXCEPT Skeleton] [Scope] [FOR lExpression1] [WHILE lExpression2]   [[WITH] CDX]
 [ [WITH] CDX ] | [ [WITH] PRODUCTION ] [NOOPTIMIZE]
 [ [TYPE] [ FOXPLUS | FOX2X | DIF | MOD | SDF | SYLK | WK1 | WKS | WR1
 | WRK | CSV | XLS | XL5 | DELIMITED [ WITH Delimiter | WITH BLANK
 | WITH TAB | WITH CHARACTER Delimiter ] ] ] [AS nCodePage]

Parámetros

FileName
Especifica el nombre del nuevo archivo que crea COPY TO. Si no incluye una extensión de nombre de archivo, se asignará la extensión predeterminada para el tipo de archivo especificado. Si no especifica un tipo de archivo, COPY TO creará una nueva tabla de Visual FoxPro y asignará al nombre del archivo de tabla la extensión predeterminada .dbf.
DATABASE DatabaseName
Especifica una base de datos a la que se agregará la nueva tabla.
NAME LongTableName
Especifica un nombre largo para la nueva tabla. Los nombres largos pueden contener un máximo de 128 caracteres y se pueden utilizar en lugar de nombres cortos de archivo en la base de datos.
FIELDS FieldList
Especifica qué campos se copiarán al nuevo archivo. Si omite FIELDS FieldList, todos los campos se copiarán al archivo. Si el archivo que está creando no es una tabla, los campos memo no se copiarán al nuevo archivo, incluso aunque en la lista de campos haya incluido nombres de campo memo.
FIELDS LIKE Skeleton
Especifica que los campos de la tabla original que concuerdan con la estructura Skeleton se incluyen en el nuevo archivo creado por COPY TO.
FIELDS EXCEPT Skeleton
Especifica que todos los campos excepto aquellos que concuerden con la estructura de campos Skeleton se incluirán en el nuevo archivo creado por COPY TO.
Scope
Especifica un intervalo de registros que desea copiar a un archivo. Sólo se copiarán los registros comprendidos en ese intervalo. Las cláusulas de alcance son: ALL, NEXT nRecords, RECORD nRecordNumber y REST. Para obtener más información acerca de las cláusulas de alcance, vea el tema Cláusulas de alcance.
FOR lExpression1
Especifica que sólo se copiarán al archivo aquellos registros para los cuales la condición lógica lExpression1 dé como resultado verdadero (.T.). Incluya FOR lExpression1 para copiar condicionalmente registros y excluir los registros no deseados.
WHILE lExpression2
Especifica una condición por la cual se copiarán los registros siempre y cuando la expresión lógica lExpression2 dé como resultado verdadero (.T.).
[WITH] CDX | [WITH] PRODUCTION
Crea un archivo de índice estructural para la nueva tabla idéntico al de la tabla existente. Las etiquetas y expresiones de índice del archivo de índice estructural original se copian al nuevo archivo de índice estructural. Las cláusulas CDX y PRODUCTION son idénticas. No incluya CDX o PRODUCTION si está copiando a un archivo diferente a una nueva tabla de Visual FoxPro.
NOOPTIMIZE
Desactiva la optimización Rushmore de COPY TO. Para más información, vea SET OPTIMIZE y Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.
TYPE
Especifica el tipo de archivo si el archivo que va a crear no es una tabla de Visual FoxPro. Aunque debe especificar un tipo de archivo, no es necesario incluir la palabra clave TYPE.
FOXPLUS
Los archivos memo de Visual FoxPro tienen una estructura diferente que los archivos memo de Microsoft FoxBASE+™. Si la tabla de origen de Visual FoxPro contiene un campo memo, incluya la cláusula FOXPLUS para crear una tabla que pueda utilizarse en FoxBASE+. El campo memo de Visual FoxPro no puede contener datos binarios, ya que FoxBASE+ no admite datos binarios en campos memo.
FOX2X
Crea una nueva tabla que se puede abrir en versiones anteriores de FoxPro (versiones 2.0, 2.5 y 2.6).

Para campos de los tipos Numérico, Flotante, Entero, Doble y Moneda, los valores nulos de la tabla de origen se convierten en cero en la nueva tabla. Para otros tipos de campos, los valores nulos de la tabla de origen se convierten a espacios en blanco en la nueva tabla. Para obtener más información acerca de los valores en blanco, vea ISBLANK( ).

En la tabla siguiente se muestran los tipos de campo de Visual FoxPro que se convierten a distintos tipos de campo en la nueva tabla cuando se incluye el argumento FOX2X.

Tipo de campo de Visual FoxPro | Tipo de campo de FoxPro 2.x
Moneda | Flotante
DateTime | Fecha
Doble | Flotante
Entero | Numérico
DIF
Crea un archivo .dif (Formato de intercambio de datos) de VisiCalc®. Los campos de la tabla de Visual FoxPro se convierten en vectores (columnas) y los registros se convierten en filas. Si no incluye ninguna extensión en FileName se asignará una extensión .dif al nuevo nombre de archivo.
MOD
Crea un archivo de Microsoft Multiplan® versión 4.01. Si no incluye una extensión, se asignará la extensión .mod al nuevo nombre de archivo de Microsoft Multiplan.
SDF
Crea un archivo SDF (Formato de datos del sistema). Un archivo SDF es un archivo de texto ASCII en el que los registros tienen una longitud fija y terminan con un retorno de carro y un avance de línea. Los campos no están delimitados. Si no incluye una extensión, se asignará la extensión .txt al nombre de archivo SDF. Observe que la configuración de SET CENTURY se omite cuando se crean archivos SDF con COPY TO.

Si los archivos SDF incluyen datos de fecha, deben tener el formato AAAAMMDD para permitir una reconversión efectiva en tablas de Visual FoxPro.

Si la información de fecha está almacenada con formatos ambiguos, deberá asegurarse de que las fechas tengan el formato AAAAMMDD antes de ejecutar la operación COPY TO.

SYLK
Crea un archivo de intercambio SYLK (Vínculo simbólico). Los archivos SYLK se utilizan con Microsoft MultiPlan. Cada campo de la tabla seleccionada actualmente se convierte en una columna de la hoja de cálculo y cada registro se convierte en una fila. Los nombres de archivo SYLK no tienen ninguna extensión.
WK1
Crea un archivo de hoja de cálculo de Lotus® 1-2-3® versión 2.x. Cada campo de la tabla seleccionada actualmente se convierte en una columna de la hoja de cálculo y cada registro se convierte en una fila. Se asigna a la nueva hoja de cálculo la extensión .wk1.
WKS
Crea un archivo de hoja de cálculo de Lotus 1-2-3 versión 1a. Cada campo de la tabla seleccionada actualmente se convierte en una columna de la hoja de cálculo y cada registro se convierte en una fila. Se asigna a la nueva hoja de cálculo la extensión .wks.
WR1
Crea un archivo de hoja de cálculo de Lotus Symphony® versión 1.1 ó 1.2. Cada campo de la tabla seleccionada actualmente se convierte en una columna de la hoja de cálculo y cada registro se convierte en una fila. Se asigna a la nueva hoja de cálculo la extensión .wr1.
WRK
Crea un archivo de hoja de cálculo de Lotus Symphony versión 1.0. Cada campo de la tabla seleccionada actualmente se convierte en una columna de la hoja de cálculo y cada registro se convierte en una fila. Se asigna a la nueva hoja de cálculo la extensión .wr1.
CSV
Crea un archivo de valores separados por comas. Un archivo CSV tiene los nombres de campo como primera línea en el archivo y los valores de campo de la parte restante del archivo se separan con comas.
XLS
Crea un archivo de hoja de cálculo de Microsoft Excel versión 2.0. Cada campo de la tabla seleccionada actualmente se convierte en una columna de la hoja de cálculo y cada registro se convierte en una fila. Si no incluye ninguna extensión de archivo, se asignará a la nueva hoja de cálculo la extensión .xls.
Nota Aunque puede exportar máximo 65,535 filas, lo cual incluye una fila reservada para la cabecera de campos, las versiones de Excel anteriores a la 8.0 (Excel 97) sólo muestran las primeras 16,384 y no puede importar archivos que tengan más de 32,767 filas.
XL5
Crea un archivo de hoja de cálculo de Microsoft Excel versión 5.0. Cada campo de la tabla seleccionada actualmente se convierte en una columna de la hoja de cálculo y cada registro se convierte en una fila. Si no incluye ninguna extensión de archivo, se asignará a la nueva hoja de cálculo la extensión .xls.
Nota Aunque puede exportar máximo 65,535 filas, lo cual incluye una fila reservada para la cabecera de campos, las versiones de Excel anteriores a la 8.0 (Excel 97) sólo muestran las primeras 16,384 y no puede importar archivos que tengan más de 32,767 filas.
DELIMITED
Crea un archivo delimitado. Un archivo delimitado es un archivo de texto ASCII en el cual cada registro termina con un retorno de carro y un avance de línea. El separador predeterminado de campo es una coma. Puesto que los datos de tipo Carácter pueden incluir comas, los campos de caracteres se delimitan además mediante dobles comillas.

A menos que especifique lo contrario, se asignará una extensión .txt a todos los archivos DELIMITED recién creados.

DELIMITED WITH Delimiter
Crea un archivo delimitado con los campos de caracteres delimitados por un carácter que no es una comilla. El carácter que delimita los campos de caracteres se especifica mediante Delimiter.
DELIMITED WITH BLANK
Crea un archivo delimitado con campos separados por espacios en blanco, no por comas.
DELIMITED WITH TAB
Crea un archivo delimitado con campos delimitados por tabulaciones, no por comas.
DELIMITED WITH CHARACTER Delimiter
Crea un archivo delimitado con cada uno de los campos entre caracteres como el especificado en Delimiter. Si Delimiter es un punto y coma (;) (el carácter utilizado en Visual FoxPro para indicar continuación de línea de comandos, escriba el punto y coma entre comillas. También puede especificar las palabras clave BLANK y TAB para Delimiter.

Observe que la cláusula de WITH Delimiter se puede combinar con la cláusula WITH CHARACTER. Por ejemplo, el siguiente comando crea un archivo de texto en el que los campos de tipo Carácter aparecen entre caracteres de subrayado, y todos los campos están delimitados entre sí con signos de punto y coma:

COPY TO mytxt.txt DELIMITED WITH _ WITH CHARACTER ';'
AS nCodePage
Especifica la página de códigos para la tabla o el archivo que crea COPY TO. Visual FoxPro copia el contenido de la tabla seleccionada actualmente y, a medida que copia los datos, los convierte automáticamente a la página de códigos especificada para la nueva tabla o el nuevo archivo. Si es posible, Visual FoxPro marcará la tabla o el archivo recién creados con la página de códigos que especifique.

Si omite AS nCodePage, la tabla o el archivo recién creados se convierten a la página de códigos actual de Visual FoxPro.

Observaciones

La estructura de campos Skeleton admite caracteres comodín. Por ejemplo, para especificar que en el nuevo archivo se incluyan todos los campos que empiecen con las letras A y P, utilice la siguiente instrucción:

COPY TO mytable FIELDS LIKE A*,P*

La cláusula LIKE puede combinarse con la cláusula EXCEPT:

COPY TO mytable FIELDS LIKE A*,P* EXCEPT PARTNO*

Rushmore optimiza COPY TO con una cláusula FOR lExpression1, si lExpression1 es una expresión optimizable. Para mejor rendimiento, utilice una expresión optimizable en la cláusula FOR lExpression1. Para información sobre expresiones optimizables por Rushmore, vea SET OPTIMIZE y Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.

Si se ha establecido un orden de índice, los registros se copiarán según el orden de índice principal.

Si especifica un valor no admitido para nCodePage, Visual FoxPro genera un mensaje de error. Puede utilizar la función GETCP( ) con nCodePage para mostrar el cuadro de diálogo Página de códigos, permitiéndole especificar una página de códigos para la tabla o archivo que crea Visual FoxPro.

El comando COPY TO preserva la configuración de campo autoincremental excepto bajo las siguientes condiciones:

  • Cuando la lista de campos especificada usando COPY TO...FIELDS no incluye el campo que utiliza autoincremento.
  • Cuando utilice la cláusula TYPE en el comando COPY TO, independientemente del tipo especificado en la cláusula.

La tabla de destino empieza el autoincremento con el valor NextValue de la tabla de origen. Por ejemplo, suponga que NextValue en la tabla de origen es 1000 con un Paso de valor 1. La primera fila de la tabla de destino tiene un campo autoincremental de valor 1001; la segunda fila tiene un valor de 1002, y así sucesivamente.

Ejemplo

En el ejemplo siguiente se abre la tabla customer y los tres registros siguientes se copian a un nuevo archivo de datos DELIMITED llamado TEMP.TXT.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')

USE Customer  && Abre la tabla Customer.
COPY NEXT 3 TO temp TYPE DELIMITED
WAIT WINDOW 'Este es el archivo de texto delimitado' NOWAIT
MODIFY FILE temp.txt
DELETE FILE temp.txt

Vea también

APPEND FROM | COPY FILE | GETCP( ) | EXPORT | IMPORT | RENAME TABLE


COUNT (Comando)

Cuenta los registros de una tabla.

COUNT   [Scope] [FOR lExpression1] [WHILE lExpression2]   [TO VarName] [NOOPTIMIZE]

Parámetros

Scope
Indica el rango de registros a incluir en la cuenta. El alcance predeterminado para COUNT es ALL (todos) los registros.

Las cláusulas de alcance son: ALL, NEXT nRecords, RECORD nRecordNumber y REST. Los comandos incluídos en Scope operan solamente en la tabla activa en el área de trabajo.

Para más información sobre las cláusulas Scope, vea Alcance (Cláusulas).

FOR lExpression1
Especifica que solamente se cuentan los registros que satisfacen la condición lógica lExpression1. Incluir FOR le permite contar registros condicionalmente y desechar los registros no deseados.

La optimización Rushmore funcionará en una consulta COUNT FOR si lExpression1 es una expresión optimizable. Para un mejor rendimiento, utilice una expresión optimizable en la cláusula FOR.

Para más informacion sobre expresiones optimizables, vea SET OPTIMIZE (Comando) y Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.

WHILE lExpression2
Especifica una condición por la cual los registros se cuentan siempre y cuando la expresión lógica lExpression2 dé como resultado verdadero (.T.).
TO VarName
Especifica la variable o la matriz en que se almacena la cuenta de registros. Si la variable especificada no existe, Visual FoxPro la creará.
NOOPTIMIZE
Neutraliza la optimización Rushmore en el comando COUNT. Para más información vea SET OPTIMIZE (Comando) y Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.

Observaciones

COUNT cuenta los registros que estén en el alcance de registros para los que se cumplen las condiciones FOR o WHILE. Si SET TALK está establecido en ON, se mostrará la cuenta de registros.

Si SET DELETE está establecido en OFF, los registros marcados para su eliminación se incluirán en la cuenta.

Más información sobre cómo los valores NULL afectan al comando COUNT, vea Comportamiento de valores NULL en comandos y funciones.

Ejemplo

El ejemplo siguiente cuenta y muestra el número de clientes de París.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer  && Opens Customer table
CLEAR
COUNT FOR UPPER(city) = 'PARIS'
DISPLAY FIELDS company, contact FOR UPPER(city) = 'PARIS'

Vea también

CALCULATE (Comando) | SET DELETED (Comando) | SET TALK (Comando)


CREATE CLASS (Comando)

Abre el Diseñador de clases, que permite crear una nueva definición de clase.

CREATE CLASS ClassName | ? [OF ClassLibraryName1 | ?] [AS cBaseClassName [FROM ClassLibraryName2]] [NOWAIT]

Parámetros

ClassName
Especifica el nombre de la definición de clase que se va a crear.
?
Muestra el cuadro de diálogo Nueva clase, en el que podrá especificar el nombre de la definición de clase que se va a crear.
OF ClassLibraryName1
Especifica el nombre de la biblioteca de clases visuales .vcx que se va a crear. Si ya existe la biblioteca de clases visuales .vcx, se le agregará la definición de clase.

La biblioteca de clases visuales utiliza una extensión de archivo .vcx. Incluya la extensión de archivo si la biblioteca de clases visuales que especifica tiene una extensión distinta de .vcx.

?
Muestra el cuadro de diálogo Nueva clase, en el que podrá especificar el nombre de una nueva biblioteca de clases visuales .vcx o de una ya existente a la que se agregará la definición de clase.
AS cBaseClassName
Especifica la clase en la que se basa la definición de clase. Puede especificar cualquier clase base de Visual FoxPro excepto Column y Header. También puede especificar una clase definida por el usuario si incluye la cláusula FROM ClassLibraryName2 que especifica el nombre de la biblioteca de clases visuales .vcx que contiene la clase definida por el usuario.

Si omite AS cBaseClassName, la definición de clase se basará en la clase de base FormSet de Visual FoxPro.

FROM ClassLibraryName2
Especifica el nombre de la biblioteca de clases visuales .vcx que contiene la clase definida por el usuario que se especifica con cBaseClassName.
NOWAIT
Continúa la ejecución del programa después de abrir el Diseñador de clases. El programa no espera a que se cierre el Diseñador de clases, sino que continúa la ejecución en la línea de programa inmediatamente siguiente a la que contiene CREATE CLASS NOWAIT. Si omite NOWAIT, al ejecutar CREATE CLASS en un programa, el Diseñador de clases se abre y la ejecución del programa se interrumpe hasta el cierre del Diseñador de clases.

La inclusión de NOWAIT no tiene ningún efecto sobre CREATE CLASS cuando se ejecuta en la ventana Comandos.

Observaciones

Utilice CREATE CLASS para crear una definición de clase y guardarla en una biblioteca de clases visuales .vcx. Puede abrir la biblioteca de clases visuales .vcx con SET CLASSLIB, lo que le permite tener acceso a las definiciones de clase en la biblioteca de clases visuales .vcx.

Vea también

ADD CLASS (Comando) | _BROWSER (Variable del sistema) | CREATE CLASSLIB (Comando) | DEFINE CLASS (Comando) | _INCLUDE (Variable del sistema) | MODIFY CLASS (Comando) | RELEASE CLASSLIB (Comando) | Session (Objeto) | SET CLASSLIB (Comando)


CREATE CLASSLIB (Comando)

Crea un nuevo archivo vacío de biblioteca de clases visuales (.vcx).

CREATE CLASSLIB ClassLibraryName

Parámetros

ClassLibraryName
Especifica el nombre de la biblioteca de clases visuales que se va a crear. Si ya existe una biblioteca de clases visuales con el nombre que especifique y SET SAFETY está establecido en ON, Visual FoxPro le pregunta si desea sobrescribir la biblioteca de clases visuales existente. Si SET SAFETY está establecido en OFF, el archivo existente se sobrescribe automáticamente.

Si no especifica una extensión para el nombre de archivo, Visual FoxPro le asigna automáticamente la extensión .vcx.

Observaciones

Pueden agregarse definiciones de clase a una biblioteca de clases visuales mediante ADD CLASS y CREATE CLASS.

Ejemplo

El ejemplo siguiente usa CREATE CLASSLIB para crear una biblioteca de clases visuales llamada myclslib. Una clase llamada myform basada en la clase de base Form de Visual FoxPro se crea y almacena en la biblioteca myclslib. Se usa SET CLASSLIB para abrir la biblioteca de clases visuales myclslib de forma que puedan usarse las clases contenidas en ella.

CREATE CLASSLIB myclslib     && Creates a new .VCX visual class library
CREATE CLASS myform OF myclslib AS "Form"  && Creates new class
SET CLASSLIB TO myclslib ADDITIVE     && Opens MyClsLib.VCX

Vea también

ADD CLASS (Comando) | _BROWSER (Variable del sistema) | CREATE CLASS (Comando) | DEFINE CLASS (Comando) | MODIFY CLASS (Comando) | RELEASE CLASSLIB (Comando) | SET CLASSLIB (Comando)


CREATE COLOR SET (Comando)

Crea un conjunto de colores a partir de la configuración de colores actual.

CREATE COLOR SET ColorSetName

Parámetros

ColorSetName
Especifica el nombre del conjunto de colores que desea crear.

Observaciones

Cada pareja de colores de todo esquema de colores se guarda en el conjunto de colores que cree el usuario. El nombre del conjunto de colores puede contener un máximo de 24 caracteres en Visual FoxPro (10 caracteres en versiones anteriores de FoxPro), y puede incluir números y signos de subrayado, pero no puede comenzar con un número.

Una vez que haya creado un conjunto de colores, puede cargarlo mediante SET COLOR SET.

Los conjuntos de colores se guardan en el archivo de recursos de Visual FoxPro. Si existe un conjunto de colores con el mismo nombre que ha especificado, se sobrescribirá.

Vea también

SET COLOR OF SCHEME (Comando) | SET COLOR SET (Comando) | SET COLOR TO (Comando)


CREATE (Comando)

Crea una nueva tabla de Visual FoxPro.

CREATE [FileName | ?]

Parámetros

FileName
Especifica el nombre de la tabla que desea crear.
?
Presenta el cuadro de diálogo Crear, que le pide el nombre para la tabla que se va a crear.

Observaciones

En Visual FoxPro, si hay una base de datos abierta cuando usted crea una tabla, dicha tabla se agregará automáticamente a la base de datos.

En el sistema operativo de Windows, no puede crear una tabla con el nombre de un dispositivo de MS-DOS, como CON, NUL, PRN y COM1. Debe evitar la utilización de guiones en el nombre de una tabla porque los nombres de tabla con guiones no aparecen en la ventana Sesión de datos y pueden crear confusión con el puntero de alias (->).

Una tabla se crea al definir el nombre, tipo y tamaño de cada campo. Una vez creada la estructura de la tabla, puede agregar registros a la tabla. Para obtener información acerca de las tablas, vea Crear tablas.

Vea también

ADD TABLE (Comando) | ALTER TABLE - SQL (Comando) | CREATE DATABASE (Comando) | CREATE TABLE - SQL (Comando) | MODIFY STRUCTURE (Comando)


CREATE CONNECTION (Comando)

Crea una conexión con nombre y la almacena en la base de datos actual.

CREATE CONNECTION [ConnectionName | ?]   [DATASOURCE cDataSourceName] [USERID cUserID] [PASSWORD cPassWord]   [DATABASE cDatabaseName] | CONNSTRING cConnectionString]

Parámetros

ConnectionName
Especifica el nombre de la conexión que se va a crear.
?
Muestra el Diseñador de conexiones en el que puede crear y guardar la conexión.
DATASOURCE cDataSourceName
Especifica el nombre del origen de datos ODBC para la conexión.
USERID cUserID
Especifica la identificación de usuario para el origen de datos ODBC.
PASSWORD cPassWord
Especifica la contraseña para el origen de datos ODBC.
DATABASE cDatabaseName
Especifica una base de datos del servidor con el que se realizará la conexión.
CONNSTRING cConnectionString
Especifica una cadena de conexión para el origen de datos ODBC. Puede usar la cadena de conexión en lugar de incluir explícitamente el origen de datos ODBC, la identificación del usuario y la contraseña.

Observaciones

Si omite los argumentos opcionales, aparecerá el cuadro de diálogo Diseñador de conexiones, que permite crear una conexión interactivamente.

Ejemplo

El ejemplo siguiente supone que hay un origen de datos ODBC disponible llamado MyFoxSQLNT y que el Id. de usuario para el origen de datos es "sa". Se abre la base de datos testdata y se crea una conexión llamada Myconn. Se usa DISPLAY CONNECTIONS para mostrar las conexiones con nombre de la base de datos. Luego se quita la conexión de la base de datos mediante DELETE CONNECTION.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')

CREATE CONNECTION Myconn DATASOURCE "MyFoxSQLNT" USERID "sa" PASSWORD "<password>"
CLEAR
DISPLAY CONNECTIONS  && Displays named connections in the database
DELETE CONNECTION Myconn  && Removes the connection just created

Vea también

DELETE CONNECTION | DBGETPROP( ) | DISPLAY CONNECTIONS | LIST CONNECTIONS | MODIFY CONNECTION | OPEN DATABASE | RENAME CONNECTION


CREATE CURSOR - SQL (Comando)

Crea una tabla temporal.

CREATE CURSOR alias_name (fname1 type [(precision [, scale])]
(fname1 type [(precision [, scale])] [NULL | NOT NULL]
[CHECK lExpression [ERROR cMessageText]]
[AUTOINC [NEXTVALUE NextValue [STEP StepValue]]]
[DEFAULT eExpression] [UNIQUE [COLLATE cCollateSequence]]
[NOCPTRANS] [, fname2 ...])
| FROM ARRAY ArrayName

Parámetros

alias_name
Especifica el nombre de la tabla temporal a crear. El parámetro alias_name puede ser una expresión de nombre.
fname
Especifica el nombre de un campo de la tabla temporal. Cada fname puede ser una expresión de nombre.
type
Especifica una sola letra que indica el tipo de datos del campo.
precision
Especifica el ancho del campo especificado en fname. Algunos tipos de datos requieren que se especifique un valor para el parámetro precision.
scale
Especifica el numero de lugares decimal para el tipo de datos específicos. Algunos tipos de datos requieren que especifique un valor para el parámetro scale.

The following table shows what type, precision, and scale can be.

FieldType | nFieldWidth | nPrecision | Descripción
C n – Campo Character de ancho n
D – – Fecha
T – – Datetime
N | n | d | Campo numérico de ancho n con d posiciones decimales
F | n | d | Campo numérico flotante de ancho n con d posiciones decimales
I – – Entero
B – d Doble
Y – – Monetario
L – – Lógicas
M – – Memo
G – – General
P – – Imagen

Los parámetros nFieldWidth y nPrecision son ignorados para los tipos D, T, Y, L, M, G, y P . El parámetro nPrecision se establece como cero (sin decimales) si nPrecision no está incluido en los tipos N, F, o B.

NULL | NOT NULL
Especifica si algún valor nulo está permitido en el campo. NULL permite valores nulos, mientras que NOT NULL no permite valores nulos.
CHECK lExpression
Especifica la regla de validación para el campo. El parámetro lExpression debe evaluarse como una expresión lógica y puede ser una función definida por el usuario o un procedimiento almacena
ERROR cMessageText
Especifica un mensaje de error. Visual FoxPro muestra este mensaje cuando la regla de validación especificada en la cláusula CHECK genera un error. El mensaje se muestra únicamente cuando los datos son cambiados en una ventana de Examinar o Edición.
AUTOINC [NEXTVALUE NextValue [STEP StepValue]]
Permite el autoincremento para el campo .

NextValue especifica el valor inicial y puede ser un valor entero positivo o negativo dentro del rango 2,147,483,647 a -2,147,483,647. El valor por defecto es 1. Puede asignar NextValue usando el cuadro Siguiente Valor dentro de la sección Incremento Automático en el Diseñador de Tablas.

StepValue especifica el valor de incremento para el campo, puede ser un entero positivo, excluido el cero, dentro de un rago de 1 to 255. El valor por defecto es 1. Puede asignar StepValue usando el cuadro Paso dentro de la sección Incremento Automático en el Diseñador de Tablas.

Los valores autoincrementales no puede ser nulos (.NULL.).

Note Las tablas que contengan campos autoincrementales con buffer agregan registros aproximadamente 35% mas lento en tablas que los no contienen, lo cual podrían afectar el rendimiento. Cuando se usa buffering de tablas, los encabezados de la tabla son bloqueados cuando se agrega un registro.
DEFAULT eExpression
Especifica el valor por defecto para el campo. El tipo de dato para eExpression debe ser el mismo que el especificado en el tipo de datos de el campo

Si usa la clausula AUTOINC en un campo con autoincremento y especifica un valor por defecto, Visual FoxPro almacena el valor por defecto en la tabla pero no lo usa. Visual FoxPro usa el valor por defecto si usa el comando ALTER TABLE - SQL para remover el autoincremento de el campo.

UNIQUE
Crea un índice candidato para el campo. La etiqueta de índice canditado tiene el mismo nombre que el campo. Para mas información acerca de los índices candidatos, vea Visualización de Información de índices and Establecer un índice principal o candidato.
COLLATE cCollateSequence
Especifica una secuencia de ordenación diferente que el valor por defecto, MACHINE. El parámetro cCollateSequence debe ser un válido de secuencia de ordenación de Visual FoxPro. Para más información acerca delas secuencias de intercalación, vea Optimizar aplicaciones internacionales y SET COLLATE (Comando).
NOCPTRANS
Previene la traduccón a un diferente código de página para campos de tipo carácter o memo. Puede especificar NOCPTRANS únicamente para campos carácter y memo.
FROM ARRAY ArrayName
Especifica el nombre para una matriz existente, cuyo contenido son el nombre, tipo, precisión y escala para cada campo en la tabla temporal. Puede usar la cláusula FROM ARRAY en vez de especificar campos individuales. Para el formato adecuado del contenido de la matriz, vea AFIELDS( ) (Función).

El autoincremento se activa cuando el valor step es mas grande que 0.

Observaciones

CREATE CURSOR crea una tabla temporal que existe hasta que se cierra. Puede manipular una tabla temporal creada con CREATE CURSOR al igual que cualquier otra tabla — puede examinar e indexarla, y puede agregar y modificar registros.

La tabla temporal se abre en el área de trabajo mas baja (sin usar) y puede ser accesado por su alias. Cada campo en la tabla temporal es definido con el nombre, tipo, precisión y escala. Estas definiciones pueden ser obtenidas desde el mismo coamdno o desde una matriz. La tabla temporal se abre en forma exclusiva, independientemente de lo establecido por SET EXCLUSIVE.

Si omite NULL y NOT NULL, lo establecido con SET NULL determina si los valores nulos son permitidos en el campo. Sin embargo, si omite NULL y NOT NULL e incluye las cláusulas PRIMARY KEY o UNIQUE, Visual FoxPro hace caso omiso de la configuración de SET NULL, y el campo se establece a NOT NULL.

Los valores nulos y registros duplicados no están permitidos en un indice candidato. Sin embargo, Visual FoxPro no genera un error si crea un indice candidato para un campo que soporte valores nulos. Visual FoxPro genera un error si intenta introducir un valor nulo o duplicado dentro de un campo usado por un índice candidato.

Note Los índices candidato, creado incluyendo la opción UNIQUE (provista para compatibilidad ANSI ) en los comandos CREATE TABLE – SQL o ALTER TABLE – SQL,no son los mismos que los índices creados con el comando INDEX con la opción UNIQUE. Un índice creado con el comando INDEX usando la opción UNIQUE permite duplicar claves de índice; los indices candidatos no permiten claves de índice duplicadas. Para mas información sobre la opción UNIQUE de el comando INDEX ,vea INDEX (Comando).

Si la tabla es convertida a otro código de página, el campo que ha sido especificado con NOCPTRANS no será traducido.

CREATE CURSOR...FROM ARRAY reconoce todos los campos disponibles con la función AFIELDS( ) y activa el autoincremento para el cursor cuando el valor Step es mas grande que cero.

Ejemplo

El siguiente ejemplo crea un cursor con el alias "employee". Un registro en blanco es agregado, llenado y mostrado con el comando BROWSE.

CLOSE DATABASES
CLEAR
CREATE CURSOR employee ;
(EmpID N(5), Name C(20), Address C(30), City C(30), ;
PostalCode C(10), OfficeNo C(8) NULL, Specialty M)
DISPLAY STRUCTURE
WAIT WINDOW "Presione una tecla para agregar un registro."
INSERT INTO employee (EmpId, Name, Address, City, PostalCode, ;
OfficeNo, Specialty);
   VALUES (1002, "Dr. Bonnie Doren", "University of Oregon", "Eugene", ;
   "98403", "", "Secondary Special Education")
BROWSE
* En este punto puede copiar este registro a una tabla permanente.
CLOSE ALL   && Una vez que se cierra el cursor, todos los datos son liberados de memoria.
CLEAR

El siguiente ejemplo usa NOCPTRANS para prevenir la traducción hacia un código de página diferente. El ejemplo crea un cursor llamado "mycursor" que contiene dos campos carácter y dos campos memo. El segundo campo carácter , "char2", y el segundo campo memo, "memo2", incluyen NOCPTRANS para evitar traducción.

CREATE CURSOR mycursor (char1 C(10), char2 C(10) NOCPTRANS,;
   memo1 M, memo2 M NOCPTRANS)

El siguiente ejemplo utiliza el nuevo tipo de datos autoincremental, esto para crear un cursor autonumerado:

LOCAL lnCounter
CREATE CURSOR myCursor (iid i autoinc, dfecha d)
FOR lnCounter=1 to 20
INSERT INTO myCursor(dfecha) VALUES(DATE(2003,01,01)+(RAND()*365))
ENDFOR
BROW

Nótese que solamente se ha especificado valores para el campo dfecha, no así para el campo iid, esto debido a la naturaleza y comportamiento de los campos autoincrementales.

Vea también

AFIELDS( ) | CREATE | CREATE QUERY | CREATE TABLE - SQL | INSERT - SQL | MODIFY QUERY | SELECT - SQL


CREATE DATABASE (Comando)

Crea una base de datos y la abre.

CREATE DATABASE [DatabaseName | ?]

Parámetros

DatabaseName
Especifica el nombre de la base de datos que se va a crear.

Si SAFETY está establecido en ON y el nombre de la base de datos que especifica tiene la misma ruta de acceso y el mismo nombre que una base de datos existente, Visual FoxPro muestra un cuadro de diálogo de advertencia que le pide que especifique una ruta de acceso o un nombre nuevos para la base de datos.

?
Muestra el cuadro de diálogo Crear en el que puede especificar el nombre de la base de datos que desea crear.

Observaciones

Un archivo de base de datos tiene una extensión .dbc. Los archivos memo asociados a la base de datos tienen una extensión .dct y los archivos de índice asociado tienen una extensión .dcx.

La base de datos se abre de forma exclusiva, independientemente de la configuración de SET EXCLUSIVE. Puesto que CREATE DATABASE abre la base de datos cuando ésta se ha creado, no es necesario que ejecute un comando OPEN DATABASE.

Si se ejecute CREATE DATABASE sin alguno de sus argumentos opcionales, aparecerá el cuadro de diálogo Crear, que le permite especificar un nombre para la base de datos.

Ejemplo

El ejemplo siguiente crea una base de datos llamada people. Se crea una tabla llamada friends y se agrega automáticamente a la base de datos. Se usa DISPLAY TABLES para mostrar las tablas de la base de datos y DISPLAY DATABASES para mostrar información acerca de las tablas de la base de datos.

CREATE DATABASE people
CREATE TABLE friends (FirstName C(20), LastName C(20))
CLEAR
DISPLAY TABLES  && Displays tables in the database
DISPLAY DATABASES  && Displays table information

Vea también

ADD TABLE | CLOSE DATABASES | DBC( ) | DBGETPROP( ) | DBSETPROP( ) | DELETE DATABASE | DISPLAY TABLES | FREE TABLE | INDBC( ) | MODIFY DATABASE | OPEN DATABASE | PACK DATABASE | REMOVE TABLE | SET DATABASE | VALIDATE DATABASE | ADBOBJECTS( ) | ADATABASES( )


CREATE FORM (Comando)

Abre el Diseñador de formularios.

CREATE FORM [FormName | ?] [AS cClassName FROM cClassLibraryName | ?] [NOWAIT] [SAVE] [DEFAULT] [[WINDOW WindowName1] [IN [WINDOW] WindowName2 | IN SCREEN]]

Parámetros

FormName
Especifica el nombre de archivo del formulario. Si no especifica una extensión para el nombre de archivo, Visual FoxPro le asigna automáticamente la extensión .scx. Si ya existe un archivo de formulario con el nombre que especifica, se le pregunta si desea sobrescribir el archivo existente (si SET SAFETY está establecido en ON).
?
Muestra el cuadro de diálogo Crear, en el que puede elegir un formulario o escribir el nombre del formulario que desea crear.
AS cClassName FROM cClassLibraryName | ?
Crea un nuevo formulario a partir de una clase de formulario en una biblioteca de clases visuales .vcx. cClassName especifica el nombre de la clase de formulario definida por el usuario a partir de la cual se crea el nuevo formulario. Se generará un error si cClassName no está basada en un formulario. El argumento cClassLibraryName especifica el nombre de la biblioteca de clases visuales .vcx que contiene la clase de formulario especificada con cClassName. Incluya ? para mostrar el cuadro de diálogo Abrir, lo que le permitirá especificar la biblioteca de clases visuales.
NOWAIT
Continúa la ejecución del programa después de abrir el Diseñador de formularios. El programa no espera a que se cierre el Diseñador de formularios, sino que continúa la ejecución en la línea de programa que sigue inmediatamente a la línea que contiene CREATE FORM NOWAIT. Si omite NOWAIT, cuando se ejecuta CREATE FORM en un programa, se abre el Diseñador de formularios y la ejecución del programa se detiene hasta que se cierra el Diseñador de formularios.

La inclusión de NOWAIT no tendrá ningún efecto sobre CREATE FORM cuando se ejecuta desde la ventana Comandos.

SAVE
Cuando se ejecuta en un programa, deja el Diseñador de formularios abierto después de activar otra ventana. La inclusión de la opción SAVE no tiene ningún efecto cuando se ejecuta desde la ventana Comandos.
DEFAULT
Especifica que el Diseñador de formularios se abre con la plantilla de formulario predeterminada de Visual FoxPro, lo que invalida una plantilla de formulario especificada en la ficha Formularios del cuadro de diálogo Opciones.

Si desea obtener información adicional acerca de las plantillas de formulario, vea Crear formularios.

WINDOW WindowName1
Especifica una ventana cuyas características adopta el Diseñador de formularios. Por ejemplo, si se crea la ventana con la opción FLOAT de DEFINE WINDOW, puede moverse el Diseñador de formularios. No es necesario que la ventana esté activa o sea visible, pero debe estar definida.

El Diseñador de formularios tiene un tamaño predeterminado que puede ser mayor que la ventana de la que toma sus características. En este caso, el Diseñador de formularios sigue adoptando las características de la ventana en la que está situado. El ángulo superior izquierdo del Diseñador de formularios se sitúa en las mismas coordenadas que el ángulo superior izquierdo de la ventana y va más allá de los bordes de la ventana.

IN [WINDOW] WindowName2
Especifica una ventana primaria en la que se abre el Diseñador de formularios. El Diseñador de formularios no toma las características de la ventana primaria y no puede moverse fuera de la ventana primaria. Si se mueve la ventana primaria, el Diseñador de formularios se mueve con ella.

La ventana primaria debe definirse en primer lugar con DEFINE WINDOW y debe ser visible, para poder tener acceso al Diseñador de formularios.

IN SCREEN
Especifica que el Diseñador de formularios se abre explícitamente en la ventana principal de Visual FoxPro, una vez que el Diseñador de formularios se ha situado en una ventana primaria. El Diseñador de formularios se sitúa en una ventana primaria al incluir la cláusula IN WINDOW.

Observaciones

Si ejecuta CREATE FORM sin argumentos adicionales, se abre un nuevo formulario en el Diseñador de formularios. Cuando salga del Diseñador de formularios, se le pide que guarde el formulario con otro nombre.

Vea también

_BROWSER | COMPILE FORM | DO FORM | GETPEM( ) | _INCLUDE | MODIFY FORM | PEMSTATUS( ) | Session (Objeto) | SYS(1269) - Información de propiedad | SYS(1270) - Ubicación de objetos | SYS(1271) - Archivo .SCX del objeto | SYS(1272) - Jerarquía de objetos


CREATE FROM (Comando)

Crea una tabla desde una tabla creada por el comando COPY STRUCTURE EXTENDED.

CREATE [FileName1 [DATABASE DatabaseName [NAME LongTableName]]] FROM [FileName2]

Parámetros

FileName1
Especifica el nombre de la nueva tabla que se va a crear.
DATABASE DatabaseName
Especifica una base de datos a la que se agregará la nueva tabla.
NAME LongTableName
Especifica un nombre largo para la nueva tabla. Los nombres largos pueden contener un máximo de 128 caracteres y se pueden utilizar en lugar de nombres de archivo cortos en la base de datos.
FROM [FileName2]
Especifica la tabla, creada tanto con COPY STRUCTURE EXTENDED como manualmente, a partir de la cual se crea la nueva tabla.

Observaciones

Esta variación de CREATE supone que la tabla especificada en FileName2 se ha creado con COPY STRUCTURE EXTENDED o manualmente. Se crea una tabla nueva FileName1 con la estructura descrita en FileName2. La tabla recién creada se convierte en la tabla activa.

Si no incluye FileName1 o FileName2, o ninguno, aparecerá un cuadro de diálogo. En este cuadro de diálogo puede especificar el archivo que desea crear, el archivo FROM o ambos.

Nota Para crear FileName1 se utilizan todos los registros en FileName2, incluyendo aquellos marcados para borrar.

CREATE FROM activa el autoincremento para campos cuando el campo FIELD_STEP en la tabla creada por COPY STRUCTURE EXTENDED contiene un valor válido. Los valores de paso y valor de autoincremento se conservan de la tabla original.

Ejemplo

El ejemplo siguiente muestra la estructura de la tabla orders, copia la estructura extendida a la tabla temp, examina temp, crea una tabla backup desde temp y muestra la estructura de backup.

CLOSE DATABASES
CLEAR

SET PATH TO (HOME(2) + 'Data\')     && Estable ruta a base de datos.
USE orders
DISPLAY STRUCTURE
WAIT WINDOW 'Estructura de la tabla orders' NOWAIT
COPY STRUCTURE EXTENDED TO temp
USE temp
WAIT WINDOW 'La tabla Temp tiene 1 fila por cada campo en ORDERS' NOWAIT
BROWSE
CREATE backup FROM temp
USE backup
DISPLAY STRUCTURE
WAIT WINDOW 'Backup.dbf tiene la misma estructura de ORDERS' NOWAIT
USE
DELETE FILE temp.dbf
DELETE FILE backup.dbf

Vea también

COPY STRUCTURE EXTENDED | COPY STRUCTURE | CREATE


CREATE LABEL (Comando)

Abre el Diseñador de etiquetas, que permite la creación de etiquetas.

CREATE LABEL [FileName | ?] [NOWAIT] [SAVE] [WINDOW WindowName1] [IN [WINDOW] WindowName2 | IN SCREEN

Parámetros

FileName
Especifica el nombre de archivo para la etiqueta. Si no especifica ninguna extensión para este archivo, Visual FoxPro le asignará automáticamente la extensión .lbx.
?
Presenta el cuadro de diálogo Crear, que le pide un nombre para la etiqueta que desea crear.
NOWAIT
Continúa la ejecución del programa después de abrir el Diseñador de etiquetas. El programa no espera a que se cierre el Diseñador de etiquetas, sino que continúa con la ejecución de la línea de programa que sigue inmediatamente a la que contiene CREATE LABEL NOWAIT. Si omite NOWAIT al ejecutar un comando CREATE LABEL en un programa, se abrirá el Diseñador de etiquetas y la ejecución del programa se detendrá hasta que se cierre dicho diseñador.

Cuando se ejecuta desde la ventana Comandos, incluir la opción NOWAIT no tiene ningún efecto sobre el comando CREATE LABEL.

SAVE
Deja abierto el Diseñador de etiquetas al activar otra ventana. Si omite SAVE, el Diseñador de etiquetas se cerrará cuando se active otra ventana.

El hecho de incluir SAVE no tiene ningún efecto cuando se ejecuta desde la ventana Comandos.

WINDOW WindowName1
Especifica una ventana cuyas características asume el Diseñador de etiquetas. Por ejemplo, si la ventana se crea con la opción FLOAT de DEFINE WINDOW, el Diseñador de etiquetas podrá moverse. La ventana no tiene que estar activa o visible, pero debe estar definida.

El Diseñador de etiquetas tiene un tamaño predeterminado que puede ser mayor que la ventana de la que toma sus características. En este caso, el Diseñador de etiquetas asume no obstante las características de la ventana en que se encuentra. La esquina superior izquierda del Diseñador de etiquetas se sitúa en las mismas coordenadas que la esquina superior izquierda de la ventana y puede extenderse más allá de los bordes de la ventana.

IN [WINDOW] WindowName2
Especifica una ventana primaria en la cual se abre el Diseñador de etiquetas. El Diseñador de etiquetas no asume las características de la ventana primaria, ni tampoco se puede mover fuera de ella. Si se mueve la ventana primaria, el Diseñador de etiquetas se moverá con ella.

La ventana primaria debe definirse primero con DEFINE WINDOW y debe estar visible para tener acceso al Diseñador de etiquetas.

IN SCREEN
Especifica que el Diseñador de etiquetas se abre explícitamente en la ventana principal de Visual FoxPro, después de haberse colocado en una ventana primaria. El Diseñador de etiquetas se sitúa en una ventana primaria al incluir la cláusula IN WINDOW.

Observaciones

CREATE LABEL permite crear etiquetas con formatos estándar o diseñar sus propias etiquetas personalizadas. Para crear etiquetas, puede utilizar también el Asistente para etiquetas.

Vea también

LABEL | MODIFY LABEL | Asistente para etiquetas | Diseñador de etiquetas | Crear informes y etiquetas | Crear un diseño de etiquetas


CREATE MENU (Comando)

Abre el Diseñador de menús en Visual FoxPro.

CREATE MENU [FileName | ?] [NOWAIT] [SAVE] [WINDOW WindowName1] [IN [WINDOW] WindowName2 | IN SCREEN

Parámetros

FileName
Especifica el nombre de archivo de la tabla de menús. Si no se incluye ninguna extensión con el nombre de la tabla, Visual FoxPro le asignará automáticamente una extensión .mnx.
?
Muestra el cuadro de diálogo Crear, que le pide que asigne un nombre para el menú que va a crear.
NOWAIT
Continúa la ejecución del programa después de que se abra el Diseñador de menús. El programa no espera a que se cierre el Diseñador de menús, sino que continúa la ejecución de la línea de programa que sigue inmediatamente a la que contiene CREATE MENU NOWAIT. Si omite NOWAIT, al ejecutar CREATE MENU en un programa se abrirá el Diseñador de menús y la ejecución del programa se detendrá hasta que se cierre el Diseñador de menús.

Si ejecuta CREATE MENU desde la ventana Comandos e incluye NOWAIT, no aparecerá el cuadro de diálogo Nuevo menú. El cuadro de diálogo Nuevo menú permite especificar el tipo de menú creado (estándar o contextual).

SAVE
Deja abierto el Diseñador de menús después de activar otra ventana. Si omite SAVE, el Diseñador de menús se cerrará cuando se active otra ventana. El hecho de incluir SAVE no tiene ningún efecto cuando se ejecuta desde la ventana Comandos.
WINDOW WindowName1
Especifica una ventana cuyas características asume el Diseñador de menús. Por ejemplo, si la ventana está creada con la opción FLOAT de DEFINE WINDOW, el Diseñador de menús podrá desplazarse. No es necesario que la ventana esté activa o sea visible, pero debe estar definida.

El Diseñador de menús tiene un tamaño predeterminado que puede ser mayor que la ventana de la que toma sus características. En este caso, el Diseñador de menús asume no obstante las características de la ventana en que se sitúa. La esquina superior izquierda del Diseñador de menús se coloca en las mismas coordenadas que la esquina superior izquierda de la ventana y puede extenderse más allá de los bordes de la ventana.

IN [WINDOW] WindowName2
Especifica una ventana primaria en la cual se abre el Diseñador de menús. El Diseñador de menús no asume las características de esta ventana primaria y no se puede mover fuera de ella. Si la ventana primaria se mueve, el Diseñador de menús se moverá con ella.

La ventana primaria debe estar definida previamente con DEFINE WINDOW y debe estar visible para tener acceso al Diseñador de menús.

IN SCREEN
Especifica que el Diseñador de menús se abre explícitamente en la ventana principal de Visual FoxPro, después de haberlo situado dentro de una ventana primaria. El Diseñador de menús se coloca en una ventana primaria al incluir la cláusula IN WINDOW.

Observaciones

Al ejecutar CREATE MENU sin argumentos adicionales se abre el Diseñador de menús, en el que puede definir un sistema de menús. Temporalmente se asigna el nombre MENU1 a la tabla de definición de menú. Cuando salga del Diseñador de menús, puede guardar la definición de menú con un nombre diferente.

Vea también

DEFINE MENU | MODIFY MENU | Diseñador de menús | Diseñar menús y barras de herramientas


CREATE PROJECT (Comando)

Abre el Administrador de proyectos de forma que pueda crear un proyecto.

CREATE PROJECT [FileName | ?] [NOWAIT] [SAVE] [WINDOW WindowName1] [IN [WINDOW] WindowName2 | IN SCREEN [NOSHOW] [NOPROJECTHOOK]

Parámetros

FileName
Especifica el nombre de archivo de la tabla de proyecto. Si no especifica ninguna extensión para este archivo, Visual FoxPro le asignará automáticamente la extensión .pjx.
?
Muestra el cuadro de diálogo Crear, que le pide que asigne un nombre al proyecto que está creando.
NOWAIT
Continúa la ejecución del programa después de abrir el Administrador de proyectos. El programa no espera a que se cierre el Administrador de proyectos, sino que continúa la ejecución en la línea de programa que sigue inmediatamente a la línea que contiene CREATE PROJECT NOWAIT. Si omite NOWAIT cuando se ejecuta CREATE PROJECT en un programa, el Administrador de proyectos se abrirá y la ejecución del programa se detendrá hasta que se cierre el Administrador de proyectos.

Incluir NOWAIT no ejerce ningún efecto en CREATE PROJECT cuando se ejecuta en la ventana Comandos.

SAVE
Deja abierto el Administrador de proyectos después de que se active otra ventana. Si omite SAVE, el Administrador de proyectos se cerrará cuando active otra ventana.

El hecho de incluir SAVE no tiene ningún efecto cuando se ejecuta desde la ventana Comandos.

WINDOW WindowName1
Especifica una ventana cuyas características asume el Administrador de proyectos. Por ejemplo, si la ventana está creada con la opción FLOAT de DEFINE WINDOW, el Administrador de proyectos se podrá mover. No es necesario que la ventana esté activa o sea visible, pero debe estar definida.

El Administrador de proyectos tiene un tamaño predeterminado que puede ser mayor que el de la ventana cuyas características toma. En este caso, el Administrador de proyectos asume las características de la ventana en que se sitúa. La esquina superior izquierda del Administrador de proyectos se coloca en las mismas coordenadas que la esquina superior izquierda de la ventana y puede extenderse más allá de los bordes de la ventana.

IN [WINDOW] WindowName2
Especifica una ventana primaria en la cual se abre el Administrador de proyectos. El Administrador de proyectos no asume las características de la ventana primaria y no se puede mover fuera de dicha ventana. Si se mueve la ventana primaria, el Administrador de proyectos se moverá con ella.

La ventana primaria debe estar definida con DEFINE WINDOW y debe estar visible para permitir el acceso al Administrador de proyectos.

IN SCREEN
Especifica que el Administrador de proyectos se abre explícitamente en la ventana principal de Visual FoxPro, después de haberlo situado en una ventana primaria. El Administrador de proyectos se sitúa en una ventana primaria al incluir la cláusula IN WINDOW.
NOSHOW
Especifica que el Administrador de proyectos está oculto (su propiedad Visible está establecida con falso (.F.)) cuando se abre. Para mostrar el objeto ProjectHook, establezca la propiedad Visible del Administrador de proyectos en verdadero (.T.). NOSHOW permite manipular un proyecto antes de mostrarlo en el Administrador de proyectos. Para evitar confusión con la palabra clave NOSHADOW, no puede abreviar NOSHOW a menos de cinco caracteres.
NOPROJECTHOOK
Especifica que no se crea un objeto ProjectHook cuando se abre el Administrador de proyectos. Incluya NOPROJECTHOOK para proyectos que no se manipularán mediante programación con enganches del Administrador de proyectos. Observe que sigue creándose un objeto Project cuando se abre un archivo de proyecto (.pjx).

Observaciones

Un proyecto es una tabla que registra todos los archivos necesarios para crear una aplicación, así como todas las dependencias, referencias y conexiones entre los archivos. Una tabla de proyecto tiene una extensión .pjx y un archivo memo asociado con una extensión .pjt. En un proyecto, usted especifica todas las piezas necesarias para la aplicación final, de tal forma que Visual FoxPro le asegura que los archivos compilados se basan en los archivos de origen más recientes.

Una tabla de proyecto puede abrirse con USE y manipularse como cualquier otra tabla de Visual FoxPro.

Al ejecutar el comando CREATE PROJECT sin ningún argumento adicional se muestra el cuadro de diálogo Crear, que le permite especificar un nombre para el proyecto.

Vea también

BUILD APP | BUILD PROJECT | MODIFY PROJECT | Compilar una aplicación


CREATE QUERY (Comando)

Abre el Diseñador de consultas.

CREATE QUERY [FileName | ?] [NOWAIT]

Parámetros

FileName
Especifica el nombre de archivo para la consulta. Si no se incluye ninguna extensión con el nombre del archivo, Visual FoxPro le asignará automáticamente la extensión .qpr.
?
Muestra el cuadro de diálogo Crear, que le pide que asigne nombre a la consulta que desea crear.
NOWAIT
Continúa la ejecución del programa después de que se haya abierto el Diseñador de consultas. El programa no espera a que se cierre el Diseñador de consultas para cerrarse, sino que continúa la ejecución en la línea de programa inmediatamente posterior a la línea que contiene CREATE QUERY NOWAIT. Si omite NOWAIT cuando se ejecuta CREATE QUERY en un programa, se abrirá el Diseñador de consultas y se detendrá la ejecución del programa hasta que se cierre el Diseñador de consultas.

NOWAIT sólo es efectivo desde dentro de un programa. No tiene ningún efecto en CREATE QUERY cuando se ejecuta desde la ventana Comandos.

Observaciones

CREATE QUERY abre el Diseñador de consultas para que pueda crear una consulta de forma interactiva.

Para recuperar datos de las tablas se utiliza un comando SELECT de SQL. SELECT es muy eficaz y puede reemplazar a varios comandos de Visual FoxPro. Puesto que un comando SELECT de SQL realiza las funciones de varios comandos de Visual FoxPro, SELECT optimiza el rendimiento del programa.

Piense en SELECT como en una forma de presentar una consulta a Visual FoxPro para que obtenga información de tablas. SELECT le permite especificar la información que quiere sin tener que decirle a Visual FoxPro cómo ha de obtener la información. Visual FoxPro determina la forma óptima de obtener la información.

Después de crear una consulta, la consulta se almacenará en un archivo de programa de Visual FoxPro con una extensión .qpr. Un programa de consulta puede ejecutarse mediante DO. Cuando ejecute una consulta con DO debe incluir la extensión del archivo de consulta, como se muestra en el ejemplo siguiente.

DO my_query.qpr

Si se ejecuta el comando CREATE QUERY sin ningún argumento adicional, se abrirá una nueva ventana de consulta. A la consulta se le asigna el nombre QUERY1. Cuando salga de la ventana Consulta, podrá guardar la consulta con un nombre diferente.

Vea también

MODIFY QUERY | SELECT - SQL | Diseñador de consultas


CREATE REPORT - Informe rápido (Comando)

Crea un informe mediante programación.

CREATE REPORT FileName1 | ? FROM FileName2 [FORM | COLUMN] [FIELDS FieldList] [ALIAS] [NOOVERWRITE] [WIDTH nColumns]

Parámetros

FileName1
Especifica el nombre de archivo para el informe. Si no especifica ninguna extensión para este archivo, Visual FoxPro le asignará automáticamente la extensión .frx.
?
Muestra el cuadro de diálogo Crear, que le pide que asigne un nombre al informe que desea crear.
FROM FileName2
Especifica el nombre de la tabla desde la que se crea el informe. La tabla no tiene que estar necesariamente abierta.
FORM
Especifica que el informe se crea con los campos y sus nombres organizados de arriba abajo en la banda Detalles.
COLUMN
Especifica que el informe se crea con los campos organizados de izquierda a derecha a lo ancho de la página en la banda Detalles. Los nombres de campo se colocan en la banda Encabezado de página. Si omite FORM y COLUMN, el informe asumirá de forma predeterminada el formato COLUMN.
FIELDS FieldList
Especifica los campos de la tabla que aparecen en el informe. Separe mediante comas los campos de FieldList.
ALIAS
Especifica que el alias de la tabla se agrega a los nombres de campo en el informe.
NOOVERWRITE
Especifica que un informe existente no se sobrescribirá. Si ya existe un informe con el nombre especificado por FileName1, el informe no se creará.
WIDTH nColumns
Especifica el ancho de la página del informe, en columnas.

Observaciones

Esta forma de CREATE REPORT crea un informe rápido sin abrir el Diseñador de informes. El informe se crea como si eligiera la opción Informe rápido del menú Informe.

Otra forma de CREATE REPORT, que se trató en el tema anterior, abre el Diseñador de informes para permitirle crear un informe de forma interactiva.

Vea también

CREATE REPORT | MODIFY REPORT | REPORT | Crear informes y etiquetas | Diseñador de informes


CREATE REPORT (Comando)

Abre un informe en un Diseñador de formularios.

CREATE REPORT [FileName | ?] [NOWAIT] [SAVE] [WINDOW WindowName1] [IN [WINDOW] WindowName2 | IN SCREEN

Parámetros

FileName
Especifica el nombre de archivo para el informe. Si no especifica ninguna extensión para este archivo, Visual FoxPro le asignará automáticamente la extensión .frx. Si ya existe un archivo de informe con ese nombre, se le preguntará si quiere sobrescribir el archivo existente (si SET SAFETY está establecido en ON).
?
Muestra el cuadro de diálogo Crear, que le pide que asigne un nombre al informe que desea crear.
NOWAIT
Continúa ejecutando el programa después de abrir el Diseñador de informes. El programa no espera hasta que se cierre el Diseñador de informes, sino que continúa su ejecución en la línea de programa siguiente a la que contiene CREATE REPORT NOWAIT. Si omite NOWAIT al ejecutar CREATE REPORT en un programa, se abrirá el Diseñador de informes y la ejecución del programa se detendrá hasta que cierre el Diseñador de informes.

Incluir NOWAIT no ejerce ningún efecto en CREATE REPORT cuando se ejecuta en la ventana Comandos.

SAVE
Deja abierto el Diseñador de informes después de activar otra ventana. Si omite SAVE, el Diseñador de informes se cerrará cuando se active otra ventana.

El hecho de incluir SAVE no tiene ningún efecto cuando se ejecuta desde la ventana Comandos.

WINDOW WindowName1
Especifica una ventana cuyas características tomará el Diseñador de informes. Por ejemplo, si la ventana se crea con la opción FLOAT de DEFINE WINDOW, el Diseñador de informes podrá moverse. No es necesario que la ventana esté activa o sea visible, pero debe estar definida.

El Generador de informes tiene un tamaño predeterminado que puede ser mayor que la ventana de la que toma sus características. En este caso, el Diseñador de informes asume las características de la ventana en la que se sitúa. La esquina superior izquierda del Diseñador de informes se coloca en las mismas coordenadas que la esquina superior izquierda de la ventana y puede extenderse más allá de los bordes de la ventana.

IN [WINDOW] WindowName2
Especifica una ventana primaria en la que se abre el Diseñador de informes. El Diseñador de informes no asume las características de la ventana primaria y no se puede mover fuera de ella. Si se mueve la ventana primaria, el Diseñador de informes se moverá con ella.

La ventana primaria debe estar definida previamente con DEFINE WINDOW, y debe estar activa y visible para tener acceso al Diseñador de informes.

IN SCREEN
Especifica que el Diseñador de informes se abre explícitamente en la ventana principal de Visual FoxPro, después de haberlo situado en una ventana primaria. El Diseñador de informes se sitúa en una ventana primaria al incluir la cláusula IN WINDOW.

Observaciones

Al ejecutar CREATE REPORT sin argumentos adicionales se abre un nuevo Diseñador de informes. A esta definición de informe se le asigna el nombre REPORT1. Al salir del Diseñador de informes, el sistema le pedirá que guarde la definición de informe con otro nombre distinto.

CREATE REPORT puede utilizarse también para generar un informe rápido sin abrir el Diseñador de informes.

Vea también

_ASCIICOLS | _ASCIIROWS (Variable del sistema) | CREATE REPORT - Informe rápido (Comando) | MODIFY REPORT | REPORT | Diseñador de informes | Crear informes y etiquetas


CREATE SQL VIEW (Comando)

Muestra el Diseñador de vistas, permitiéndole crear una vista SQL. Las vistas son una forma eficiente de proporcionar acceso personalizado a porciones seleccionadas de su base de datos, combinando la flexibilidad de una consulta con la habilidad para actualizar datos.

Una vista SQL le permite recuperar campos y registros específicos desde una o más tablas relacionadas y trata el conjunto de datos resultantes como una tabla que puede actualizar.

[CONNECTION ConnectionName [SHARE] | CONNECTION DataSourceName]
CREATE [SQL] VIEW [ViewName ] [REMOTE]
[CONNECTION ConnectionName [SHARE] | CONNECTION DataSourceName] [AS SQLSELECTStatement]

Parámetros

SQL
Crea una vista SQL.
VIEW ViewName
Especifica el nombre de la vista que se va a crear.
REMOTE
Especifica la creación de una vista remota mediante tablas remotas. Si omite REMOTE, puede crear una vista mediante tablas locales.
CONNECTION ConnectionName [SHARE]
Especifica una conexión con nombre que se va a establecer cuando se abra la vista. Si incluye la cláusula SHARE, Microsoft Visual FoxPro utiliza una conexión compartida si hay una disponible. Si no hay ninguna conexión compartida disponible, se crea una conexión única cuando se abra la vista y no puede compartirse con otras vistas.

Si incluye la palabra clave SHARE, Visual FoxPro utiliza un nuevo controlador para la conexión compartida, si hay una disponible. Si no hay una conexión compartida disponible, Visual FoxPro crea una cuando se abre la vista, la cual estará habilitada para compartirla con otras vistas.

CONNECTION DataSourceName
Especifica un origen de datos existente con el que se establece la conexión.
AS SQLSELECTStatement
Especifica la definición de vista. SQLSELECTStatement debe ser una instrucción SELECT de SQL, válida y no debe ir entre comillas.

Para vistas locales, puede especificar vistas y tablas en bases de datos distintas de la base de datos actual si coloca delante del nombre de la vista o la tabla el nombre de la base de datos y un signo de exclamación (!). Por ejemplo, el comando siguiente crea una vista SQL llamada mysqlview que selecciona todos los campos de la tabla orders de la base de datos customer:

CREATE SQL VIEW mysqlview AS SELECT * FROM customer!orders

Para obtener información adicional acerca de las instrucciones SQL SELECT, vea SELECT - SQL.

Puede limitar el alcance de una vista sin crear una vista distinta para cada subconjunto de registros si crea vistas parametrizadas. Una vista parametrizada usa una cláusula WHERE que limita los registros descargados al proporcionar un valor como parámetro.

Por ejemplo, puede crear una vista SQL que le permite descargar registros por cualquier país con sólo indicar un nombre de país cuando use la vista.

El parámetro que indique se evaluará como una expresión de Visual FoxPro. Si hay errores en la evaluación, Visual FoxPro le pide el valor del parámetro. Por ejemplo, si la tabla customer de la base de datos Testdata se encuentra en un servidor remoto, el ejemplo siguiente crea una vista remota parametrizada que limita la vista a aquellos clientes cuyo país coincida con el valor suministrado para el parámetro ?cCountry:

OPEN DATABASE testdata
CREATE SQL VIEW customer_remote_view CONNECTION remote_01 ;
AS SELECT * FROM customer WHERE customer.country = ?cCountry

Si desea obtener información adicional acerca de las vistas parametrizadas, vea Crear vistas.

Ejemplo

El ejemplo siguiente abre la base de datos testdata. CREATE SQL VIEW se usa para crear una vista local SQL llamada myview que se crea a partir de una instrucción SELECT – SQL que selecciona todos los registros de la tabla customer. Se muestra el Diseñador de vistas, que le permite modificar la vista SQL. Una vez cerrado el Diseñador de vistas, se borra la vista SQL.

CLOSE DATABASES
* Abre base de datos testdata
OPEN DATABASE (HOME(2) + 'data\testdata')
* Crea vista con desde tabla customer con un criterio de selección
CREATE SQL VIEW myview AS SELECT * FROM testdata!customer;
WHERE country="Mexico"
* Activa el Diseñador de vistas para modificar o ejecutar la vista
MODIFY VIEW myview  &&Activates View Designer
* Borra la vista después de cerrar el Diseñador de vistas
DELETE VIEW myview

Vea también

CREATE DATABASE | CREATE VIEW | DELETE VIEW | DISPLAY VIEWS | LIST VIEWS | MODIFY VIEW | OPEN DATABASE | RENAME VIEW | SELECT - SQL | USE | DBSETPROP( ) (Función) | DBGETPROP( ) (Función)


CREATE TABLE - SQL (Comando)

Crea una tabla que utilizando los campos especificados o desde una matriz.

CREATE TABLE | DBF TableName1 [NAME LongTableName] [FREE]
 ( FieldName1 FieldType [( nFieldWidth [, nPrecision] )] [NULL | NOT NULL]
 [CHECK lExpression1 [ERROR cMessageText1]]
 [AUTOINC [NEXTVALUE NextValue [STEP StepValue]]] [DEFAULT eExpression1]
 [PRIMARY KEY | UNIQUE [COLLATE cCollateSequence]]
 [REFERENCES TableName2 [TAG TagName1]] [NOCPTRANS]
 [, FieldName2 ... ]
 [, PRIMARY KEY eExpression2 TAG TagName2 |, UNIQUE eExpression3 TAG TagName3
 [COLLATE cCollateSequence]]
 [, FOREIGN KEY eExpression4 TAG TagName4 [NODUP]
 [COLLATE cCollateSequence]
 REFERENCES TableName3 [TAG TagName5]] [, CHECK lExpression2 [ERROR cMessageText2]] )
 | FROM ARRAY ArrayName

Parámetros

CREATE TABLE | DBF TableName1
El parámetro TableName1 especifica el nombre de la tabla que desea crear. Las opciones TABLE y DBF son idénticas.
NAME LongTableName
Especifica un nombre largo para la tabla. Este nombre largo solamente se puede especificar cuando hay una base de datos abierta, porque los nombres largos de tabla se almacenan en bases de datos. Los nombres largos pueden tener hasta 128 caracteres y pueden usarse en lugar de los nombres de archivos cortos en la base de datos.
FREE
Especifica que la tabla no se agregará a ninguna base de datos abierta. No es necesario incluir FREE si no hay ninguna base de datos abierta.
FieldName1, FieldType, nFieldWidth, nPrecision
Especifica el nombre del campo, tipo de campo, ancho del campo y precisión del campo (número de lugares decimales) respectivamente. Una única tabla puede contener hasta 255 campos. Si uno o más campos permiten valores nulos, el límite se disminuye en un campo a 254 campos.

FieldType es una sola letra que indica el tipo de datos del campo. Algunos tipos de datos de campo necesitan que especifique nFieldWidth o nPrecision, o ambos. La siguiente tabla enumera los valores para FieldType y si se necesita indicar nFieldWidth y nPrecision.

FieldType | nFieldWidth | nPrecision | Tipo de dato
C n – Campo Carácter de ancho n
D – – Fecha
T – – DateTime
N | n | d | Campo Numérico de ancho n con d posiciones decimales
F | n | d | Campo Numérico flotante de ancho n con d posiciones decimales
I – – Entero
B – d Double
Y – – Moneda
L – – Lógico
M – – Memo
G – – General

nFieldWidth y nPrecision se pasan por alto para los tipos D, T, I, Y, L, M, G y P. nPrecision tiene como valor predeterminado cero (ninguna posición decimal) si no se incluye nPrecision para los tipos N o F. nPrecision tiene, de forma predeterminada, el número de posiciones decimales especificado por el valor SET DECIMALS si no está incluida nPrecision para el tipo B.

NULL | NOT NULL
Especifica si admite valores nulos en el campo. NULL permite valores null, mientras que NOT NULL no permite valores null. Si uno o más campos pueden contener valores NULL, el número máximo de campos que la tabla puede contener se reduce en una unidad, de 255 a 254.
CHECK lExpression1
Especifica una regla de validación para el campo. lExpression1 se debe evaluar como una expresión lógica y puede ser una función definida por el usuario. Observe que cuando se agrega un registro en blanco, se comprueba la regla de validación de la cláusula CHECK.
ERROR cMessageText1
Especifica el mensaje de error que Visual FoxPro mostrará cuando la regla de validación especificada con CHECK genere un error. El mensaje solamente se muestra cuando se modifican los datos en una ventana Examinar o en una ventana Modificar.
AUTOINC [NEXTVALUE NextValue [STEP StepValue]]
Habilita el auto incremento para el campo. NextValue especifica el valor inicial y puede ser un valor entero positivo o negativo dentro del rango 2,147,483,647 a -2,147,483,647. El valor predeterminado es 1. Puede establecer NextValue utilizando el control numérico Siguiente valor en la ficha Campos del Diseñador de tablas.

StepValue especifica el valor de incremento para el campo y puede ser un entero positivo no cero, dentro del rango 1 a 255. El valor predeterminado es 1. Puede establecer StepValue utilizando el control numérico Paso en la ficha Campos del Diseñador de tablas.

Los valores de auto incremento no pueden ser NULL.

Nota Las tablas con campos auto incremento y con búfer de tabla, agregan registros aproximadamente 35% más lento que las mismas tablas sin campos auto incremento, lo cual puede afectar el rendimiento. Cuando se utiliza búfer de tabla, la cabecera de la tabla se bloquea cuando se agrega un registro.
DEFAULT eExpression1
Especifica un valor predeterminado para el campo especificado en FieldName1. El tipo de datos de eExpression1 debe ser el mismo que el del campo.

Si utiliza la cláusula AUTOINC para activar el auto incremento para un campo y especifica un valor predeterminado, Visual FoxPro almacena el valor predeterminado en la tabla pero no lo utiliza, pues utiliza el auto incremento. Visual FoxPro usa el valor predeterminado si utiliza el comando ALTER TABLE - SQL para quitar el auto incremento del campo.

PRIMARY KEY | UNIQUE
Crea un índice principal para el campo. La etiqueta de índice principal tiene el mismo nombre que el campo.
PRIMARY KEY crea un índice principal para el campo especificado en FieldName1. UNIQUE crea un índice candidato para el campo especificado en FieldName1. La etiqueta de índice principal o candidato tiene el mismo nombre del campo. Para más información acerca de índices principales y candidatos, vea Establecer un índice principal o candidato.
COLLATE cCollateSequence
Especifica una secuencia de ordenación diferente a la configurada en forma predeterminada, MACHINE. El parámetro cCollateSequence debe ser una secuencia de ordenación válida de Visual FoxPro. Para más información acerca de configurar secuencias de ordenación, vea Optimizar aplicaciones internacionales y SET COLLATE (Comando).
REFERENCES TableName2 [ TAG TagName1 ]
Especifica la tabla primaria con la cual se establece una relación permanente. La tabla primaria no puede ser una tabla libre.

El parámetro TagName1 de la cláusula TAG especifica un nombre de etiqueta de índice para la tabla primaria en TableName2. El nombre de la etiqueta de índice puede contener hasta 10 caracteres. Si omite la cláusula TAG, la relación se establece utilizando la clave de índice principal de la tabla primaria. Si la tabla primaria no tiene un índice principal, Visual FoxPro genera un error.

NOCPTRANS
Impide la conversión a otra página de códigos distinta para los campos de tipo carácter y memo. NOCPTRANS solamente se puede especificar para los campos de tipo carácter y memo. Esto creará lo que aparece en el Diseñador de tablas como tipos de datos Carácter (binario) y Memo (binario).
FieldName2 ...
Especifica uno o más campos y atributos adicionales.
PRIMARY KEY eExpression2 TAG TagName2
memo1 M, memo2 M NOCPTRANS)
Especifica un campo o combinación de campos de la tabla para crear un índice principal. No puede usar la cláusula PRIMARY KEY si antes ha creado un índice principal para un campo, ya que una tabla sólo puede tener un índice principal. Si incluye más de una cláusula PRIMARY KEY en una instrucción CREATE TABLE, Visual FoxPro genera un error.

El parámetro TagName2 especifica un nombre para la etiqueta de índice principal eExpression2. El nombre de la etiqueta de índice puede tener hasta 10 caracteres.

UNIQUE eExpression3 TAG TagName3
Especifica un campo o combinación de campos de la tabla para crear un índice candidato. Una tabla puede tener múltiples índices candidato. Sin embargo, si previamente ha creado un índice principal con una de las opciones PRIMARY KEY, no puede incluir el campo que haya especificado para el índice principal.

El parámetro TagName3 especifica un nombre para la etiqueta de índice candidato eExpression3. El nombre de la etiqueta puede tener hasta 10 caracteres.

FOREIGN KEY eExpression4 TAG TagName4 [ NODUP ]
Crea un índice externo (no principal) y establece una relación con una tabla primaria. Puede crear múltiples índices externos para una tabla, pero la expresión para índice externo deber especificar diferentes campos de la tabla.
eExpression4 especifica la expresión de clave de índice externo y TagName4 especifica el nombre de la etiqueta de clave de índice externo que se desea crear. Los nombres de etiqueta pueden tener hasta 10 caracteres.

Incluya NODUP para crear un índice externo candidato.

REFERENCES TableName3 TAG TagName5
Especifica la tabla primaria para la cual se establece una relación permanente.

El parámetro TagName5 especifica el nombre de la etiqueta del índice TableName3 para la tabla primaria y establece una relación basada en la etiqueta de índice. Los nombres de etiquetas de índice pueden tener hasta 10 caracteres. Si omite la cláusula TAG, la relación se establece en forma predeterminada utilizando la clave de índice principal de la tabla primaria.

CHECK lExpression2
Especifica una regla de validación para la tabla. El parámetro lExpression2 debe evaluarse como una expresión lógica y puede ser una función definida por el usuario o un procedimiento almacenado.
ERROR cMessageText2
Especifica un mensaje de error para la regla de validación de tabla lExpression2. Visual FoxPro muestra este mensaje cuando la regla de validación genera un error. El mensaje sólo se muestra cuando los datos se cambian dentro de una ventana Examinar o Editar.
FROM ARRAY ArrayName
Especifica el nombre de una matriz existente cuyo contenido es el nombre, tipo, precisión y escala para cada campo de la tabla. Puede usar la cláusula FROM ARRAY en lugar de especificar campos individuales en la instrucción CREATE TABLE - SQL. Para conocer el formato apropiado del contenido de la matriz, vea AFIELDS( ) (Función).

El autoincremento se activa cuando StepValue es mayor que 0.

Observaciones

La nueva tabla se abre en la menor área de trabajo disponible y se puede tener acceso a ella por su alias. La nueva tabla se abre de forma exclusiva, cualquiera que sea la configuración actual de SET EXCLUSIVE.

Si hay una base de datos abierta y no incluye la cláusula FREE, la nueva tabla se agregará a la base de datos. No puede crear una tabla nueva con el mismo nombre que otra ya existente en la base de datos.

Si la tabla se convierte a otra página de códigos, los campos para los cuales se ha especificado NOCPTRANS no se convierten.

Si no hay ninguna base de datos abierta al crear la nueva tabla, se generará un error si se incluyen las cláusulas NAME, CHECK, DEFAULT, FOREIGN KEY, PRIMARY KEY o REFERENCES.

Las tablas creadas en Visual FoxPro OLE DB Provider utilizando CREATE TABLE se colocan en la carpeta de la aplicación en forma predeterminada, a menos que especifique otra ubicación.

Nota La sintaxis de CREATE TABLE utiliza comas para separar determinadas opciones de CREATE TABLE. Además, las cláusulas NULL, NOT NULL, CHECK, DEFAULT, PRIMARY KEY y UNIQUE deben estar incluidas entre los paréntesis que contienen las definiciones de columnas.

Si omite NULL y NOT NULL, la configuración actual del comando SET NULL determina si se permiten valores nulos en los campos. Sin embargo, si omite NULL y NOT NULL pero incluye la cláusula PRIMARY KEY o UNIQUE, Visual FoxPro ignora la configuración actual de SET NULL, y toma como predeterminado NOT NULL.

Visual FoxPro genera un error si la regla de validación especificada en la cláusula CHECK no permite un valor en blanco para un campo al agregar un registro.

Los valores nulos y registros duplicados no se permiten en un campo usado para un índice principal o candidato. Sin embargo, Visual FoxPro no genera un error si crea un índice primario o candidato para un campo que admita valores nulos. Visual FoxPro genera un error si intenta ingresar un valor nulo o duplicado en un campo utilizado para un índice principal o candidato.

Note Los índices candidato creados al incluir la opción UNIQUE (proporcionada por compatibilidad ANSI) en comandos CREATE TABLE – SQL o ALTER TABLE – SQL, no son los mismos creados por el comando INDEX con la opción UNIQUE, este último permite claves de índice duplicadas; los índices candidatos no permiten claves de índice duplicadas. Para más información acerca de la opción UNIQUE del comando INDEX, consulte INDEX (Comando).

Un valor vacío para NextValue se interpreta como 0 hace que el incremento empiece con 0 + StepValue.

El valor incremental StepValue siempre se suma como positivo. Si desea una serie de incrementos automáticos negativos, debe empezar con un NextValue negativo y aumentar hacia 0 utilizando el valor de incremento StepValue. Por ejemplo, si NextValue es igual a -2147483647, el primer paso produce un valor de incremento de -2147483646.

CREATE TABLE reconoce todos los campos disponibles en la función AFIELDS( ) y activa el autoincremento en la tabla cuando StepValue es mayor que cero.

Ejemplos

Ejemplo 1

El siguiente ejemplo crea una nueva base de datos llamada mydata1 y utiliza CREATE TABLE para crear tres tablas: Salesman, Customer y Orders. Las cláusulas FOREIGN KEY y REFERENCES en el segundo comando CREATE TABLE crean una relación permanente uno a muchos entre las tablas Salesman y Customer. La cláusula DEFAULT en el tercer comando CREATE TABLE establece valores predeterminados, y las cláusulas CHECK y ERROR establecen reglas de negocios para entrar datos en campos específicos. El comando MODIFY DATABASE muestra las relaciones entre las tres tablas.

CLOSE DATABASES
CLEAR
CREATE DATABASE mydata1
* Crea la tabla Salesman con una clave primaria.
CREATE TABLE Salesman ;
   (SalesID c(6) PRIMARY KEY, ;
   SaleName C(20))
* Crea la tabla Customer y la relaciona con la tabla Salesman.
CREATE TABLE Customer ;
   (SalesID c(6), ;
   CustId i PRIMARY KEY, ;
   CustName c(20) UNIQUE,   ;
   SalesBranch c(3), ;
   FOREIGN KEY SalesId TAG SalesId REFERENCES Salesman)
* Crea la tabla Orders relacionada con Customer por su clave primaria
* y algunas reglas de negocios predeterminadas y verificaciones.
CREATE TABLE Orders ;
   (OrderId i PRIMARY KEY, ;
      CustId i REFERENCES customer TAG CustId, ;
      OrderAmt y(4), ;
      OrderQty i ;
      DEFAULT 10 ;
      CHECK (OrderQty > 9) ;
      ERROR "Cantidad de la orden debe ser por lo menos 10", ;
         DiscPercent n(6,2) NULL ;
      DEFAULT .NULL., ;
      CHECK (OrderAmt > 0) ERROR "Cantidad de la orden deber ser > 0" )
* Muestra nueva base de datos, tablas y relaciones.
MODIFY DATABASE
* Borra archivos de ejemplo.
SET SAFETY OFF && Suprime mensaje de verificación.
CLOSE DATABASES     && Cierra base de datos antes de borrarla.
DELETE DATABASE mydata1 DELETETABLES

Ejemplo 2

El siguiente ejemplo usa NOCPTRANS para evitar la conversión a una página de códigos diferente. El ejemplo crea una tabla llamada "mytable" que contiene dos campos tipo Carácter y dos tipo Memo. El segundo campo carácter, "char2" y el segundo campo memo, "memo2", incluyen NOCPTRANS para evitar la conversión.

CREATE TABLE mytable (char1 C(10), char2 C(10) NOCPTRANS,;

   memo1 M, memo2 M NOCPTRANS)

Ejemplo 3

El siguiente ejemplo crea una tabla Customer con un campo llamado myField que tiene datos tipo Entero y utiliza valores con incremento automático:

CREATE TABLE Customer (myField i AUTOINC NEXTVALUE 1 STEP 1, name c(40) )

Vea también

AFIELDS( ) (Función) | ALTER TABLE - SQL (Comando) | Autoincremento de valores en campos de una tabla | CREATE (Comando) | CREATE QUERY | INSERT - SQL (Comando) | MODIFY QUERY (Comando) | MODIFY STRUCTURE (Comando) | OPEN DATABASE (Comando) | SELECT - SQL (Comando) | SET NOCPTRANS (Comando) | SQL Introducción a comandos


CREATE TRIGGER (Comando)

Crea un desencadenante Delete, Insert o Update para una tabla.

CREATE TRIGGER ON TableName   FOR DELETE | INSERT | UPDATE AS lExpression

Parámetros

TableName
Especifica la tabla de la base de datos actual para la que se crea el desencadenante.
FOR DELETE | INSERT | UPDATE
Especifica el tipo de desencadenante que crea Visual FoxPro.

Si ya existe un desencadenante del tipo que especifica y SET SAFETY está establecido en ON, Visual FoxPro le preguntará si desea sobrescribir el desencadenante existente. Si SET SAFETY está establecido en OFF, el desencadenante existente se sobrescribirá automáticamente.

AS lExpression
Especifica la expresión lógica que se evalúa cuando se produce el desencadenante. lExpression puede ser una función definida por el usuario o un procedimiento almacenado que devuelve un valor lógico. MODIFY PROCEDURE crea procedimientos almacenados para una tabla.

La función definida por el usuario o el procedimiento almacenado pueden utilizar AERROR( ) para determinar el nombre de la tabla para el que se ha producido el desencadenante y el tipo de desencadenante.

Si lExpression da como resultado verdadero (.T.), se ejecuta el comando o el evento que ha producido el desencadenante.

Si lExpression da como resultado falso (.F.), no se ejecuta el comando o el evento que ha producido el desencadenante. Si está en vigor un procedimiento ON ERROR, se ejecutará el procedimiento ON ERROR en lugar del comando o el evento. Si no está vigente un procedimiento ON ERROR, no se ejecutará el comando o el evento y Visual FoxPro generará un mensaje de error.

Observaciones

Utilice CREATE TRIGGER para interceptar eventos que hacen que se eliminen, agreguen o cambien los registros de una tabla. Los desencadenadores Delete, Insert o Update sólo pueden crearse para una tabla que se ha agregado a una base de datos. Utilice CREATE DATABASE para crear una base de datos, y ADD TABLE para agregar una tabla a una base de datos.

Las listas siguientes describen los eventos que hacen que se produzca un desencadenante Delete, Insert o Update.

desencadenante Delete

  • Se ejecuta DELETE.
  • Se marca un registro para eliminar desde el menú Tabla de una ventana Examinar o Editar.
  • Observe que si ejecuta ZAP, no se activa el desencadenante Delete.

desencadenante Insert

  • Se ejecuta APPEND FROM.
  • Se ejecuta APPEND FROM ARRAY.
  • Se ejecuta APPEND BLANK.
  • Se anexa un registro desde el menú Tabla de una ventana Examinar o Editar.
  • Se ejecuta IMPORT.
  • Se ejecuta INSERT – SQL.
  • Se ejecuta RECALL.
  • Se desmarca un registro en el menú Tabla de una ventana Examinar o Editar.

desencadenante Update

  • Se ejecuta GATHER.
  • Se ejecuta REPLACE.
  • Se ejecuta REPLACE FROM ARRAY.
  • Se ejecuta UPDATE – SQL.
  • Otro evento que causa que se modifique un registro, por ejemplo, cuando un formulario cambia el contenido de un campo.

Las reglas siguientes se aplican a desencadenadores creados con CREATE TRIGGER:

  • No es posible ejecutar INSERT para una tabla con un desencadenante. Sin embargo, puede utilizarse INSERT - SQL.
  • Al ejecutar PACK no se producen desencadenadores.
  • Al ejecutar ZAP no se produce un desencadenante Delete.
  • No se producen desencadenadores si se actualiza un registro marcado para eliminar.
  • Es posible que un desencadenante no se produzca inmediatamente, según el modo actual de almacenamiento en búfer:

Si está activo el almacenamiento de tablas en búfer, se producirá el desencadenante Update cuando se ejecute TABLEUPDATE( ) y se actualizará cada registro de la tabla almacenado en búfer.

Ejemplo

El ejemplo siguiente crea un desencadenante Update que impide escribir valores mayores de 50 en el campo maxordamt de la tabla customer. Se genera un mensaje de error cuando se ejecuta el primer comando REPLACE ya que el valor del campo maxordamt es mayor de 50. El segundo comando REPLACE no genera un error porque el valor del campo maxordamt es menor o igual que 50.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer  && Open customer table
* Set trigger on maxordamt field to fail with values <= 50
CREATE TRIGGER ON customer FOR UPDATE AS maxordamt <= 50
ON ERROR  && Restore the system error handler
WAIT WINDOW "Press a key to test trigger with value of 60"+CHR(13);
+"When you get the error message, press Ignore."
REPLACE maxordamt WITH 60    && Displays an error message
? maxordamt
WAIT WINDOW "Press a key to test with value of 50."
REPLACE maxordamt WITH 50    && Value is accepted
? maxordamt
DELETE TRIGGER ON customer FOR UPDATE  && Remove the trigger

Vea también

ADD TABLE | AERROR( ) | CREATE DATABASE | DELETE TRIGGER | DISPLAY DATABASE | LIST DATABASE | OPEN DATABASE


CREATE VIEW (Comando)

Crea un archivo de vista a partir del entorno de Visual FoxPro.

CREATE VIEW FileName

Parámetros

FileName
Especifica el nombre del archivo de vista que desea crear.

Observaciones

CREATE VIEW genera un nuevo archivo de vista que contiene información acerca del entorno de Visual FoxPro. SET VIEW restaura el entorno guardado por CREATE VIEW en un archivo de vista. La extensión asignada a los archivos de vista creados con CREATE VIEW es .vue.

La información que se guarda en un archivo de vista incluye:

  • Todas las tablas, índices, archivos alternativos y archivos de formato abiertos actualmente en todas las áreas de trabajo
  • Todos los campos contenidos en la lista SET FIELDS
  • Todas las relaciones establecidas entre las tablas abiertas
  • Todos los filtros vigentes para las tablas abiertas
  • La configuración de DEFAULT y PATH
  • La configuración del archivo de procedimiento
  • El archivo de Ayuda actual
  • El archivo de recursos actual
  • El estado de SET SKIP
  • El estado de la barra de estado (ON u OFF)

Los archivos de vista son útiles tanto en programas como en la depuración. Sólo es necesario ejecutar un comando SET VIEW TO FileName, para restaurar todo el entorno. Durante la depuración, la configuración del entorno puede guardarse en un archivo de vista, puede realizar pruebas y puede restaurar el entorno para continuar con la ejecución del programa.

Vea también

CREATE SQL VIEW | SET VIEW | SET SKIP | SET FIELDS


DEACTIVATE MENU (Comando)

Desactiva una barra de menús definida por el usuario y la quita de la pantalla, pero no quita de la memoria la definición de la barra de menús.

DEACTIVATE MENU MenuName1 [, MenuName2 ...] | ALL

Parámetros

MenuName1 [, MenuName2 ...]
Especifica los nombres de las barras de menús que se van a desactivar. Puede desactivar un conjunto de barras de menús si incluye una lista de nombres de barras de menús separados por comas.
ALL
Desactiva todos los menús activos.

Observaciones

DEACTIVATE MENU quita una barra de menús activa o un conjunto de barras de menús de la ventana principal de Visual FoxPro o de una ventana definida por el usuario sin quitar de la memoria la definición de la barra de menús. Una barra de menús puede volver a activarse con ACTIVATE MENU y el nombre de la barra de menús.

Sugerencia Si en una aplicación incluye la barra de menús del sistema (_MSYSMENU), no será necesario definir, activar ni desactivar la barra de menús. En su lugar, ejecute SET SYSMENU AUTOMATIC.

Para liberar de la memoria una determinada barra de menús o conjunto de barras de menús, utilice RELEASE MENUS. Con CLEAR MENUS o CLEAR ALL puede liberar todas las barras de menús de la memoria.

El control del programa vuelve a la línea de programa que sigue inmediatamente a la línea que activó la barra de menús a menos que se utilice DEFINE MENU BAR para crear la barra de menús o ACTIVATE MENU NOWAIT para activar la barra de menús.

Ejemplo

El ejemplo siguiente utiliza DEACTIVATE MENU para desactivar un menú y eliminarlo de la pantalla. La barra de menús actual del sistema se almacena en memoria con SET SYSMENU SAVE y todos los títulos de menús del sistema se eliminan con SET SYSMENU TO.

Se crean dos títulos de menú mediante DEFINE PAD, y DEFINE POPUP crea un menú para cada título. DEFINE BAR crea elementos de menú en cada uno de los menús. Cuando se elige un título de menú, ON PAD utiliza ACTIVATE POPUP para activar el menú correspondiente. ACTIVATE MENU muestra y activa la barra de menús.

Cuando se elige un elemento de un menú, se ejecuta el procedimiento CHOICE. CHOICE muestra el nombre del elemento elegido y el nombre del menú donde está incluido. El control del programa continúa en la línea siguiente a ACTIVATE MENU.

Por último, el menú se desactiva y se elimina de la pantalla, tras lo cual se libera de la memoria mediante RELEASE MENUS EXTENDED.

*** Name this program DEACMENU.PRG ***
CLEAR
SET SYSMENU SAVE
SET SYSMENU TO
ON KEY LABEL ESC KEYBOARD CHR(13)
DEFINE MENU example BAR AT LINE 1
DEFINE PAD convpad OF example PROMPT '\<Conversions' COLOR SCHEME 3 ;
KEY ALT+C, ''
DEFINE PAD cardpad OF example PROMPT 'Card \<Info' COLOR SCHEME 3 ;
KEY ALT+I, ''
ON PAD convpad OF example ACTIVATE POPUP conversion
ON PAD cardpad OF example ACTIVATE POPUP cardinfo
DEFINE POPUP conversion MARGIN RELATIVE COLOR SCHEME 4
DEFINE BAR 1 OF conversion PROMPT 'Ar\<ea' ;
KEY CTRL+E, '^E'
DEFINE BAR 2 OF conversion PROMPT '\<Length' ;
KEY CTRL+L, '^L'
DEFINE BAR 3 OF conversion PROMPT 'Ma\<ss' ;
KEY CTRL+S, '^S'
DEFINE BAR 4 OF conversion PROMPT 'Spee\<d' ;
KEY CTRL+D, '^D'
DEFINE BAR 5 OF conversion PROMPT '\<Temperature' ;
KEY CTRL+T, '^T'
DEFINE BAR 6 OF conversion PROMPT 'T\<ime' ;
KEY CTRL+I, '^I'
DEFINE BAR 7 OF conversion PROMPT 'Volu\<me' ;
KEY CTRL+M, '^M'
ON SELECTION POPUP conversion DO choice IN deacmenu WITH PROMPT( ), POPUP( )
DEFINE POPUP cardinfo MARGIN RELATIVE COLOR SCHEME 4
DEFINE BAR 1 OF cardinfo PROMPT '\<View Charges' ;
KEY ALT+V, ''
DEFINE BAR 2 OF cardinfo PROMPT 'View \<Payments' ;
KEY ALT+P, ''
DEFINE BAR 3 OF cardinfo PROMPT 'Vie\<w Users' ;
KEY ALT+W, ''
DEFINE BAR 4 OF cardinfo PROMPT '\-'
DEFINE BAR 5 OF cardinfo PROMPT '\<Charges '
ON SELECTION POPUP cardinfo;
DO choice IN deacmenu WITH PROMPT( ), POPUP( )
ACTIVATE MENU example
DEACTIVATE MENU example
RELEASE MENU example EXTENDED
SET SYSMENU NOSAVE
SET SYSMENU TO DEFAULT
ON KEY LABEL ESC
PROCEDURE choice
PARAMETERS mprompt, mpopup
WAIT WINDOW 'You chose ' + mprompt + ;
' from popup ' + mpopup NOWAIT

Vea también

ACTIVATE MENU | CLEAR ALL | CLEAR MENUS | CREATE MENU | DEFINE MENU | HIDE MENU | RELEASE | SHOW MENU


DEACTIVATE POPUP (Comando)

Desactiva un menú creado con DEFINE POPUP.

DEACTIVATE POPUP MenuName1 [, MenuName2 ...] | ALL

Parámetros

MenuName1 [, MenuName2 ...]
Especifica los nombres del menú o menús que va a desactivar. Puede desactivar un conjunto de menús si incluye una lista de nombres de menú separados por comas.
ALL
Desactiva todos los menús activos.

Observaciones

DEACTIVATE POPUP quita un menú o un conjunto de menús activos de la ventana principal de FoxPro o de una ventana definida por el usuario sin borrar de la memoria la definición del menú. Los menús se pueden volver a activar mediante ACTIVATE POPUP y el nombre del menú.

Utilice RELEASE POPUPS con el nombre del menú para liberar de la memoria un menú específico o un conjunto de menús. Puede liberar de la memoria todos los menús con CLEAR POPUPS o CLEAR ALL.

El control del programa se devuelve a la línea inmediatamente siguiente a la que activó el menú, a menos que se utilice ACTIVATE POPUP NOWAIT para activarlo.

Vea también

ACTIVATE POPUP | CLEAR ALL | CLEAR POPUPS | CREATE MENU | DEFINE POPUP | HIDE POPUP | RELEASE POPUPS | SHOW POPUP


DEACTIVATE WINDOW (Comando)

Desactiva ventanas definidas por el usuario o ventanas del sistema de Visual FoxPro y las quita de la pantalla, pero no de la memoria.

DEACTIVATE WINDOW WindowName1 [, WindowName2 ...] | ALL

Parámetros

WindowName1 [, WindowName2...]
Especifica una o más ventanas para desactivar. Puede especificar ventanas del sistema de Visual FoxPro así como la ventana Comandos o una ventana Examinar.
ALL
Desactiva todas las ventanas activas.

Para mostrar la ventana principal de FoxPro de nuevo, elija Pantalla de Visual FoxPro en el menú Ventana, o ejecute ACTIVATE WINDOW SCREEN o SHOW WINDOW SCREEN.

Observaciones

En la ventana principal de Visual FoxPro puede colocar más de una ventana a la vez, pero el resultado se dirige solamente a la ventana definida por el usuario activada más recientemente. Cuando está presente más de una ventana definida por el usuario, la desactivación de la ventana de resultado actual limpia el contenido de la misma, borra la ventana de la pantalla y envía el resultado subsiguiente a la ventana definida por el usuario activada con anterioridad. Si no hay una ventana de resultado, éste se dirigirá a la ventana principal de Visual FoxPro.

Utilice CLEAR WINDOWS o RELEASE WINDOWS para quitar ventanas de la pantalla y de la memoria.

Para desactivar una ventana del sistema o una barra de herramientas (en Visual FoxPro), escriba entre comillas el nombre completo de la ventana del sistema o de la barra de herramientas. Por ejemplo, para desactivar la barra de herramientas Report Controls (Controles de informes) en Visual FoxPro, ejecute el siguiente comando:

DEACTIVATE WINDOW "Report Controls"

Históricamente, en versiones anteriores de Visual FoxPro, la ventana Sesión de datos ha sido siempre referida como la ventana View. Adicionalmente, el lenguaje utilizado para controlar esta ventana, tales como HIDE WINDOW, ACTIVATE WINDOW, WONTOP( ), también se refiere a esta ventana como la ventana View. Visual FoxPro continúa refiriéndose a la ventana View con el comando DEACTIVATE WINDOW.

Ejemplo

En el ejemplo siguiente se define y activa una ventana denominada wOutput1. Después de mostrar un registro de la tabla customer, el programa espera a que el usuario presione una tecla y, a continuación, desactiva la ventana.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer  && Abre la tabla Customer
CLEAR
DEFINE WINDOW wOutput1 FROM 2,1 TO 13,75 TITLE 'Output' ;
CLOSE FLOAT GROW ZOOM
ACTIVATE WINDOW wOutput1
DISPLAY
WAIT WINDOW 'Pulse una tecla para desactivar la ventana'
DEACTIVATE WINDOW wOutput1
RELEASE WINDOW wOutput1

Vea también

ACTIVATE WINDOW | CLEAR WINDOWS | DEFINE WINDOW | HIDE WINDOW | RELEASE WINDOWS | SHOW WINDOW


DEBUG (Comando)

Abre el depurador de Visual FoxPro.

DEBUG

Observaciones

El valor de Entorno depurador (Marco de FoxPro o Marco de depuración) determina si se coloca el depurador en el escritorio de Visual FoxPro o en una ventana aparte. Puede alternar este valor en la ficha Depurar del cuadro de diálogo Opciones.

Si ejecuta DEBUG cuando está abierto el depurador, éste se convierte en la ventana activa.

Vea también

CLOSE DEBUGGER | Ficha Depurar, cuadro de diálogo Opciones | DEBUGOUT | SET DEBUG


DEBUGOUT (Comando)

Dirige el resultado de una o más expresiones a la ventana Resultados del depurador.

DEBUGOUT eExpression1 [, eExpression2] ...

Parámetros

eExpression1 [, eExpression2] ...
Especifica una o más expresiones a evaluar y muestra el resultado en la ventana Resultados del depurador. Puede especificar múltiples expresiones de diferentes tipos.

Si la expresión que especifique es un objeto o referencia de objeto, Visual FoxPro la convierte automáticamente en la cadena, "(Object)", para evitar una equivalencia a caracteres. En el siguiente ejemplo, la variable de sistema _VFP se devuelve como "(Object)" y se pasa a DEBUGOUT:

DEBUGOUT 123, _VFP, "Hola"

Observaciones

Utilice DEBUGOUT para identificar cuándo se ha ejecutado un proceso o una función. Por ejemplo, puede colocar DEBUGOUT al principio de un procedimiento para que aparezca en la ventana Resultados del depurador un mensaje que indica que se ha empezado a ejecutar el procedimiento.

Nota Puede abreviar DEBUGOUT a un mínimo de sólo seis caracteres, lo cual lo distingue del comando DEBUG.

Cuando pase múltiples expresiones, una coma aparece como un espacio. Al final de la línea se agrega un retorno de carro y un avance de línea (CRLF).

DEBUGOUT se ignora en las aplicaciones que distribuya.

Ejemplo

El siguiente ejemplo ilustra como DEBUGOUT puede aceptar múltiples expresiones:

DEBUGOUT "test", 1, 2, 3, 4, DATE( ), _VFP

Vea también

DEBUG | Ventana Resultados del depurador | SET DEBUG


DECLARE - DLL (Comando)

Registra una función en una biblioteca compartida externa. Las bibliotecas son archivos de biblioteca de vínculos dinámicos (.DLL) de 32 bits.

DECLARE [cFunctionType] FunctionName IN LibraryName [AS AliasName] [cParamType1 [@] ParamName1, cParamType2 [@] ParamName2, ...]

Parámetros

cFunctionType
Indica el tipo de datos del valor devuelto desde la biblioteca compartida, si hay alguno. Si la función no devuelve un valor, omita cFunctionType.

cFunctionType puede adoptar los valores siguientes:

cFunctionType | Descripción
SHORT | Entero de 16 bits
INTEGER | Entero de 32 bits
SINGLE | Coma flotante de 32 bits
DOUBLE | Coma flotante de 64 bits
LONG | Entero de 32 bits de longitud
STRING | Cadena de caracteres
OBJECT | Tipo de objeto IDispatch
FunctionName
Especifica el nombre de la función de biblioteca compartida que se va a registrar en Visual FoxPro. Observe que FunctionName distingue mayúsculas y minúsculas.
Nota Un nombre de función DLL puede ser distinto del que se indica en el manual de la API de Win32. Por ejemplo, la función MessageBox podría llamarse MessageBoxA (para caracteres de un solo byte) y MessageBoxW (para UNICODE). Si Visual FoxPro no puede localizar la función DLL especificada con FunctionName, se agrega la letra A al final del nombre de función y Visual FoxPro vuelve a buscar la función con el nuevo nombre.

Si la función de biblioteca compartida que ha especificado tiene el mismo nombre que una función de Visual FoxPro o no es un nombre permitido en Visual FoxPro, utilice la cláusula AS para asignar un alias a la función cuando la registre, tal y como se describe más adelante en este mismo tema.

También puede utilizar OBJECT como valor de retorno, como en "DECLARE OBJECT myfunc IN some DLL ..." aunque COM, habitualmente, no tiene ninguna API con este formato. Por ejemplo:

DECLARE INTEGER AccessibleObjectFromWindow IN oleacc.dll ;
integer, integer, string , object @
IN LibraryName
Especifica el nombre de la biblioteca compartida externa que contiene la función especificada con FunctionName.

Si especifica WIN32API como LibraryName, Visual FoxPro busca la función .dll de Windows de 32 bits en Kernel32.dll, Gdi32.dll, User32.dll, Mpr.dll y Advapi32.dll.

AS AliasName
Especifica un nombre de alias para un nombre de función de biblioteca compartida que tiene el mismo nombre que una función de Visual FoxPro o no es un nombre válido de Visual FoxPro. AliasName no debe ser una palabra reservada de Visual FoxPro o el nombre de una función de biblioteca compartida ya registrada con Visual FoxPro.

Si le asigna un alias a la función, utilice el alias cuando llame a la función de biblioteca compartida. AliasName no distingue mayúsculas y minúsculas.

cParameterType1 [@] ParamName1, cParameterType2 [@] ParamName2, ...
Especifica los tipos de parámetros pasados a la función de biblioteca compartida.

El argumento cParameterType es necesario y especifica el tipo de datos para cualquier parámetro que la función de biblioteca compartida espera que se le pase. cParameterType puede ser uno de los siguientes tipos:

cParameterType | Descripción
INTEGER | Entero de 32 bits
SINGLE | Coma flotante de 32 bits
DOUBLE | Coma flotante de 64 bits
LONG | Entero de 32 bits de longitud
STRING | Cadena de caracteres

Visual FoxPro genera un error si los parámetros son del tipo previsto por la función de biblioteca compartida. Los valores nulos se pueden transferir como cadenas de caracteres vacías.

Para pasar un parámetro por referencia cuando se llama a la función, debe incluir @ después del parámetro cParameterTypeen este comando y antes de la variable correspondiente en la función que llama. Si no incluye @ en DECLARE, en la función que llama o en ambos, el parámetro se pasa por valor. Para obtener información acerca de funciones de biblioteca compartida que necesitan @ para pasar parámetros por referencia, vea el manual del programador para su entorno o sistema operativo (por ejemplo, consulte el Manual del programador de Win32 de Microsoft para obtener información acerca de cómo pasar parámetros a DLL de Windows).

Nota Los nombres de parámetros ParamName1, ParamName2, etc., son estrictamente opcionales y no los utiliza Visual FoxPro o la función de biblioteca compartida. Puede incluirlos para recordar los nombres y los tipos de parámetro que recibe la función.

Observaciones

Antes de llamar a una función de biblioteca compartida desde Visual FoxPro, debe ejecutar DECLARE con el nombre de la función, el nombre de la biblioteca compartida que contiene la función y los tipos de los parámetros que la función espera recibir.

Para proporcionar compatibilidad con versiones anteriores, Visual FoxPro permite llamadas a bibliotecas API externas mediante el comando SET LIBRARY. (Mediante SET LIBRARY, podrá tener acceso a funciones de Fooxtools.fll.) No obstante, se recomienda que utilice DECLARE para registrar funciones de bibliotecas compartidas.

Aunque Visual FoxPro agrega cFunctionType de OBJECT a este comando principalmente para dar soporte a algunas rutinas del API de accesibilidad de ActiveX, puede utilizarlo de forma genérica con otras rutinas de API de Windows.

Si desea obtener más información acerca de funciones de bibliotecas compartidas, vea el manual del programador para su entorno o sistema operativo (por ejemplo, consulte el Manual del programador de Win32 de Microsoft si desea información acerca de cómo puede llamar a archivos DLL).

Ejecute DISPLAY STATUS o LIST STATUS para mostrar los nombres de funciones registradas. Ejecute CLEAR ALL o CLEAR DLLS para eliminar de la memoria las funciones registradas.

Ejemplo

Este ejemplo para Windows devuelve el controlador de ventana para Visual FoxPro o cero si cambia a otra aplicación para Windows. Cuando se muestra la ventana WAIT, dispone de 5 segundos para presionar ALT+TAB con el fin de cambiar a otra aplicación distinta de Windows o puede dejar Visual FoxPro como la aplicación activa.

CLEAR
DECLARE INTEGER GetActiveWindow IN win32api
WAIT WINDOW "You can switch to another application now" TIMEOUT 5
? GetActiveWindow( )

Vea también

CALL | CLEAR | DISPLAY DLLS | DISPLAY STATUS | LIST DLLS | LOAD | SET LIBRARY


DECLARE (Comando)

Crea una matriz de una o dos dimensiones.

DECLARE ArrayName1 (nRows1 [, nColumns1]) [, ArrayName2 (nRows2 [, nColumns2])] ...

Observaciones

DECLARE es idéntico, en cuanto a operación y sintaxis, que DIMENSION. Para obtener más información, vea DIMENSION.

Cuando se aumenta o se reduce el tamaño de una matriz y SET COMPATIBLE está establecido en ON o DB4, el valor de cada elemento de la matriz se reinicializa a .F.

Vea también

APPEND FROM ARRAY | COPY TO ARRAY | DIMENSION | GATHER | PRIVATE | PUBLIC | SCATTER | SET COMPATIBLE | STORE


DEFINE BAR (Comando)

Crea un elemento en un menú creado con DEFINE POPUP.

DEFINE BAR nMenuItemNumber1 | SystemItemName OF MenuName
PROMPT cMenuItemText [PICTURE cFileName] [PICTRES cMenubarName] [BEFORE nMenuItemNumber2 | AFTER nMenuItemNumber3] [FONT cFontName [, nFontSize]] [STYLE cFontStyle] [KEY KeyLabel [, cKeyText]] [MARK cMarkCharacter] [MESSAGE cMessageText] [SKIP [FOR lExpression]] [COLOR SCHEME nSchemeNumber | COLOR ColorPairList] [MRU] [INVERT]

Parámetros

nMenuItemNumber1
Especifica el número de elemento del menú. Este número permite hacer referencia al elemento del menú en otros comandos y funciones.
SystemItemName
Especifica un elemento de menú en el menú de sistema de Visual FoxPro. Por ejemplo, para proporcionar acceso al elemento de menú Print (Imprimir), ejecute la línea siguiente:
DEFINE BAR _MFI_PRINT OF popMyPopup PROMPT "Print..."

No están disponibles todos los elementos de menú del sistema de Visual FoxPro. Utilice SYS(2013) para obtener una lista de todos los nombres de menús del sistema Visual FoxPro que están disponibles.

OF MenuName
Especifica el nombre del menú en el que se sitúan los elementos.
PROMPT cMenuItemText
Especifica el texto que aparece en el elemento.

Puede crear y situar una barra de separación entre los elementos si especifica una barra inversa y un guión (\-) en cMenuItemText. Una barra de separación sirve para separar los grupos de elementos en un menú. Por ejemplo, si incluye el comando siguiente en una definición de menú, se creará una barra de separación entre el tercero y el quinto elemento:

DEFINE BAR 4 OF popMyPopup PROMPT '\-'

Puede crear menús de columnas múltiples si especifica una barra inversa y una barra vertical (\|) al principio de cMenuItemText. El elemento de menú inicia una nueva columna y los elementos de menú sucesivos se colocan en la misma columna hasta que se encuentre otro menú que comience con \|. Por ejemplo, si incluye el siguiente comando en una definición de menú, se crea una nueva columna en el menú:

DEFINE BAR 4 OF popMyPopup PROMPT '\|Start a new column'

Puede crear una tecla de acceso para un elemento de menú si coloca una barra inversa y un signo menor que (\<) delante del carácter que quiera que sea la tecla de acceso. Por ejemplo:

DEFINE POPUP popReceive
DEFINE BAR 1 OF popReceive PROMPT '\<Invoices'
DEFINE BAR 2 OF popReceive PROMPT 'In\<quiry'
ACTIVATE POPUP popReceive

El usuario puede presionar la tecla I para elegir Invoices (Facturas) en el menú Receive (Recibir) y la tecla Q para elegir Inquiry (Información) en el mismo menú.

PICTURE cPictureName
Permite utilizar con la barra de menús una imagen existente. Puede especificar cPictureName en una ruta de acceso relativa.
PICTRES cMenubarName
Especifica un nombre de barra de menús del sistema como recurso para un menú. Si cPictureName = "", el contenido del campo Resname de la tabla .mnx se trata como un nombre de archivo para su uso en DEFINE BAR…PICTURE. Esta funcionalidad fue introducida en Visual FoxPro versión 7.
Nota Debe incluir una cláusula MARGIN en el comando DEFINE POPUP correspondiente para que las cláusulas PICTURE o PICTRES funcionen correctamente.
BEFORE nMenuItemNumber2
Sitúa un elemento de menú delante del elemento especificado con nMenuItemNumber2.
AFTER nMenuItemNumber3
Sitúa un elemento de menú detrás del especificado con nMenuItemNumber3.
Nota Para que BEFORE o AFTER tengan algún efecto, es necesario incluir la cláusula RELATIVE al crear el menú con DEFINE POPUP.

Puede incluir _MFIRST y _MLAST en las cláusulas BEFORE y AFTER. Si incluye _MFIRST en la cláusula BEFORE, el elemento de menú será el primero del mismo. Si incluye _MFIRST en la cláusula AFTER, el elemento del menú será el segundo del mismo. Si incluye _MLAST en la cláusula AFTER, el elemento de menú será el último del mismo. Si incluye _MLAST en la cláusula BEFORE, el elemento será el penúltimo del menú.

Los menús que se crean con DEFINE POPUP RELATIVE no reservan espacio para elementos de menú no definidos. Por ejemplo, si define los elementos 1, 2, 4 y 5 de un menú, no se reservará espacio para el elemento 3. Puede insertar el elemento 3 más tarde. El menú se expandirá para acomodarlo.

El programa siguiente muestra las diferencias en el orden y colocación de los elementos en cada tipo de menú:

   * DEFINE POPUP... relative example
DEFINE POPUP popRelatYes RELATIVE FROM 1,1
DEFINE BAR 4  OF popRelatYes PROMPT '4444'
DEFINE BAR 3  OF popRelatYes PROMPT '3333'
DEFINE BAR 2  OF popRelatYes PROMPT '2222'
DEFINE BAR 1  OF popRelatYes PROMPT '1111'
DEFINE BAR 6  OF popRelatYes PROMPT '6666' BEFORE 4
* DEFINE POPUP... non-relative example
DEFINE POPUP popRelatNo FROM 1,10
DEFINE BAR 4 OF popRelatNo PROMPT '4444'
DEFINE BAR 3 OF popRelatNo PROMPT '3333'
DEFINE BAR 2 OF popRelatNo PROMPT '2222'
DEFINE BAR 1 OF popRelatNo PROMPT '1111'
DEFINE BAR 6 OF popRelatNo PROMPT '6666'
ACTIVATE POPUP popRelatYes NOWAIT
&& Display "relative" poup
ACTIVATE POPUP popRelatNo
&& Display "non-relative" popup
FONT cFontName [, nFontSize]
Especifica una fuente para el elemento de menú. cFontName especifica el nombre de la fuente deseada y nFontSize indica su tamaño en puntos. Por ejemplo, el comando siguiente crea un elemento de menú con la fuente Courier de 12 puntos:
DEFINE BAR 1 OF popReceive PROMPT '\<Invoices' FONT 'Courier', 12

Si la fuente especificada no está disponible, se sustituirá por una fuente de características similares. Si incluye la cláusula FONT pero omite el tamaño en puntos nFontSize, se usará una fuente de 10 puntos.

STYLE cFontStyle
Especifica un estilo de fuente para el elemento de menú. Si omite la cláusula STYLE, se utilizará el estilo de fuente Normal. Si el estilo de fuente especificado no está disponible, se sustituirá por otro de características similares.

Éstos son los estilos de fuente que puede especificar con cFontStyle:

Carácter | Estilo de la fuente
B | Negrita
I | Cursiva
N | Normal
Q | Opaco
– Tachado
T | Transparente
U | Subrayado

Puede incluir más de un carácter para especificar una combinación de estilos de fuente. Por ejemplo, el comando siguiente especifica Negrita Cursiva:

   DEFINE BAR 1 OF popReceive PROMPT '\<Invoices' STYLE 'BI'
KEY KeyLabel [, cKeyText]
Especifica una tecla o combinación de teclas de acceso para un elemento de menú. No es necesario que el menú esté activado para elegir el elemento, al contrario que cuando se asigna una tecla de acceso mediante una barra inversa y un signo menor que (\<).

Para obtener una lista de las teclas y combinaciones de teclas disponibles y sus nombres de etiqueta, vea ON KEY LABEL.

Nota Si ya está definida una macro de teclado con la misma etiqueta de tecla, la macro de teclado tendrá preferencia y no se podrá seleccionar el elemento de menú con la tecla o combinación de teclas que especifique.

Incluya cKeyText para sustituir la etiqueta de tecla por su propio texto. Puede utilizar cualquier carácter en el parámetro cKeyText; por ejemplo, puede utilizar el texto "^B" para indicar una etiqueta de tecla para CTRL+B. Por ejemplo, si incluye KEY CTRL+B se incluirá el texto CTRL+B a la derecha del título de menú. Si especifica KEY CTRL+B, "^B" aparecerá ^+B en el menú. Puede suprimir la presentación de una etiqueta de tecla si especifica la cadena vacía para cKeyText.

MARK cMarkCharacter
Especifica un carácter de marca que aparece a la izquierda del elemento de menú. MARK se puede incluir para cambiar el carácter de marca predeterminado por el especificado con cMarkCharacter. Si cMarkCharacter incluye más de un carácter, sólo se utilizará el primer carácter como carácter de marca.

El carácter de marca predeterminado es una marca de verificación.

La cláusula MARK se pasa por alto y se utiliza el carácter de marca predeterminado en caso de que el menú que contenga el elemento esté integrado en el menú de sistema de Visual FoxPro. Además, la cláusula MARK también se pasa por alto si FoxFont no es la fuente de la ventana principal de Visual FoxPro o de la ventana definida por el usuario en la que está incluido el menú que contiene el elemento en cuestión.

Nota Al especificar un carácter de marca no se marca el elemento de menú. Utilice SET MARK OF para marcar un elemento de menú.

Los caracteres de marca especificados con DEFINE BAR tienen prioridad sobre los caracteres de marca especificados con MARK en DEFINE POPUP. SET MARK OF se utiliza para desactivar o activar los caracteres de marca y también puede utilizarse para especificar un carácter de marca para un elemento de menú individual o para todos los elementos del menú.

MESSAGE cMessageText
Muestra un mensaje cuando el usuario selecciona un elemento de menú. El mensaje se incluye en la barra gráfica de estado. Si la barra gráfica de estado se ha desactivado con SET STATUS BAR OFF, el mensaje se centrará en la última línea de la ventana principal de Visual FoxPro.
SKIP [FOR lExpression]
Especifica una condición por la cual, si lExpression da como resultado verdadero (.T.), el elemento de menú queda desactivado, lo que impide que el usuario lo elija; si da como resultado falso (.F.), el elemento de menú estará activado. Los elementos de menú desactivados aparecen con los colores correspondientes a desactivado.

También puede desactivar un elemento de menú si coloca una barra inversa (\) delante del texto del indicador. Por ejemplo:

DEFINE BAR 1 OF popReceive PROMPT '\Invoices'

No se puede seleccionar un elemento de menú desactivado con SKIP o \. Es posible que los menús que haya creado y que incluyan expresiones SKIP FOR no funcionen correctamente si los asistentes o el corrector ortográfico están activos.

Las expresiones SKIP FOR dependen normalmente del valor de las variables de salto, pero estas variables no permanecen visibles para los menús cuando el corrector ortográfico o los asistentes están activos. En el código de inicialización de las aplicaciones del corrector ortográfico y los asistentes (SPELLCHK.APP y GENGRAPH.APP respectivamente), se emite intencionadamente PRIVATE ALL. Esto oculta las variables que se pasan por alto en los menús definidos por el usuario y provoca un mensaje de error al elegir un menú.

Para corregir esta situación, se coloca el siguiente código al principio de las aplicaciones del corrector ortográfico y los asistentes:

   IF TYPE("_memvarmask") = "C" and !EMPTY(_memvarmask)
PRIVATE ALL EXCEPT &_memvarmask
ELSE
PRIVATE ALL
ENDIF

Suponga que es necesario pasar por alto un elemento específico de menú cuando la variable llamada "skipvar" dé como resultado verdadero. Debe incluir las siguientes líneas en el código de inicio del menú para hacer uso de la variable _MEMVARMASK:

   PUBLIC _memvarmask
_memvarmask = "skipvar"
STORE .T. TO skipvar     && Skip initially.

Para crear un conjunto de variables de salto, incluya las siguientes líneas en el código de inicio del menú:

   PUBLIC _memvarmask
_memvarmask = "skip*"
STORE .T. TO skipthis, skipthat  && Skip initially.

Cuando ejecute el corrector ortográfico y los asistentes, no ocultarán las variables de las expresiones SKIP FOR; así evitará los mensajes de error que pueden surgir cuando se activan el corrector ortográfico o los asistentes.

Observe que _MEMVARMASK no es una variable del sistema.

COLOR SCHEME nSchemeNumber
Especifica los colores de un elemento de menú individual, para no aplicar los colores predeterminados o los colores especificados con DEFINE POPUP.
COLOR ColorPairList
Especifica los colores de un elemento de menú individual, para no aplicar los colores predeterminados o los colores especificados con DEFINE POPUP. Es posible especificar los colores de todos los elementos de menú, caracteres de marca y mensajes.

De forma predeterminada, los colores de los elementos de menú están determinados por el esquema número 2 del conjunto de colores actual.

MRU
Especifica que el menú muestre corchetes angulares verticales que indican un menú de tipo Usados más recientemente. Deberá proporcionar una secuencia de comandos que controle dinámicamente los menús y agregue las barras de menú nuevas. Para los menús invocados con la palabra clave MRU, Visual FoxPro impone un retardo de 1 ó 2 segundos antes de desencadenar el comando ON SELECTION BAR. El usuario puede hacer clic en la barra de menús para desencadenar inmediatamente el comando ON SELECTION BAR.

Si utiliza la palabra clave MRU, Visual FoxPro ignorará PROMPT y las demás palabras clave asociadas con la barra.

DEFINE BAR 4 OF popMyPopup MRU
INVERT
Especifica que el menú se muestre con un efecto de bajo relieve.
DEFINE BAR 4 OF popMyPopup PROMPT '\|Start a new column' ;
PICTRES _med_copy INVERT

Observaciones

DEFINE BAR se utiliza con DEFINE POPUP para crear menús. Con DEFINE POPUP se crea un menú y se le asigna nombre. Los elementos de menú se sitúan en el menú con un conjunto de comandos DEFINE BAR.

Si utiliza el Diseñador de menús para crear un menú, quizá no necesite usar estos comandos. El Diseñador de menús crea automáticamente los comandos para su menú. Este diseñador usa el menú del sistema de Visual FoxPro, que se puede modificar si se agregan los propios elementos de menú. Si desea obtener más información acerca de la creación de menús, vea Diseñar menús y barras de herramientas.

También puede crear un menú que contenga registros o campos de una tabla o una lista de archivos disponibles en disco. Para obtener más información al respecto, consulte las cláusulas PROMPT FIELD, PROMPT STRUCTURE y PROMPT FILES en DEFINE POPUP.

Utilice ON BAR para crear un submenú en cascada para un elemento de menú.

Ejemplo

El ejemplo siguiente utiliza DEFINE BAR para crear elementos en menús. En primer lugar, se guarda en memoria la barra de menús actual del sistema con SET SYSMENU SAVE y, a continuación, se eliminan todos los títulos de menús del sistema mediante SET SYSMENU TO.

Se crean dos títulos nuevos de menús del sistema con DEFINE PAD, y DEFINE POPUP se emplea para crear un menú desplegable para cada título de menú. DEFINE BAR se emplea para crear elementos en cada menú. Cuando se elige un título de menú, ON PAD utiliza ACTIVATE POPUP para activar el menú correspondiente.

Al elegir un elemento de un menú, ON SELECTION POPUP usa PROMPT( ) y POPUP( ) para transferir el número de elemento y el nombre de menú al procedimiento CHOICE. CHOICE muestra la indicación del elemento elegido y el nombre del menú que lo contiene. Si elige Salir en el menú Card Info (Info tarjeta), se restaura el menú de sistema original de Visual FoxPro.

   *** Name this program DEFINBAR.PRG ***
CLEAR
SET SYSMENU SAVE
SET SYSMENU TO
DEFINE PAD convpad OF _MSYSMENU PROMPT '\<Conversions' COLOR SCHEME 3 ;
KEY ALT+C, ''
DEFINE PAD cardpad OF _MSYSMENU PROMPT 'Card \<Info' COLOR SCHEME 3 ;
KEY ALT+I, ''
ON PAD convpad OF _MSYSMENU ACTIVATE POPUP conversion
ON PAD cardpad OF _MSYSMENU ACTIVATE POPUP cardinfo
DEFINE POPUP conversion MARGIN RELATIVE COLOR SCHEME 4
   DEFINE BAR 1 OF conversion PROMPT 'Ar\<ea' KEY CTRL+E, '^E'
   DEFINE BAR 2 OF conversion PROMPT '\<Length' ;
KEY CTRL+L, '^L'
   DEFINE BAR 3 OF conversion PROMPT 'Ma\<ss' ;
KEY CTRL+S, '^S'
   DEFINE BAR 4 OF conversion PROMPT 'Spee\<d' ;
KEY CTRL+D, '^D'
   DEFINE BAR 5 OF conversion PROMPT '\<Temperature' ;
KEY CTRL+T, '^T'
   DEFINE BAR 6 OF conversion PROMPT 'T\<ime' ;
KEY CTRL+I, '^I'
   DEFINE BAR 7 OF conversion PROMPT 'Volu\<me' ;
KEY CTRL+M, '^M'
ON SELECTION POPUP conversion;
DO choice IN definbar WITH PROMPT( ), POPUP( )
DEFINE POPUP cardinfo MARGIN RELATIVE COLOR SCHEME 4
   DEFINE BAR 1 OF cardinfo PROMPT '\<View Charges' ;
KEY ALT+V, ''
   DEFINE BAR 2 OF cardinfo PROMPT 'View \<Payments' ;
KEY ALT+P, ''
   DEFINE BAR 3 OF cardinfo PROMPT 'Vie\<w Users' KEY ALT+W, ''
   DEFINE BAR 4 OF cardinfo PROMPT '\-'
   DEFINE BAR 5 OF cardinfo PROMPT '\<Charges '
   DEFINE BAR 6 OF cardinfo PROMPT '\-'
   DEFINE BAR 7 OF cardinfo PROMPT 'E\<xit '
ON SELECTION POPUP cardinfo;
DO choice IN definbar WITH PROMPT( ), POPUP( )
PROCEDURE choice
PARAMETERS mprompt, mpopup
WAIT WINDOW 'You chose ' + mprompt + ;
' from popup ' + mpopup NOWAIT
IF mprompt = 'Exit'
SET SYSMENU TO DEFAULT
ENDIF

Vea también

ACTIVATE POPUP | DEACTIVATE POPUP | DEFINE POPUP | HIDE POPUP | RELEASE BAR | SET MESSAGE | SHOW POPUP


DEFINE CLASS (Comando)

Crea una clase o una subclase definida por el usuario y especifica las propiedades, los eventos y los métodos para la clase o la subclase.

Precaución Modificar la propiedades de sólo lectura de una clase base genera un mensaje de error. Sin embargo, cuando se crea una clase definida por el usuario o subclase de una clase que tiene propiedades de sólo lectura, el modificar las propiedades de sólo lectura no genera el mensaje correspondiente. Esto podría romper el código existente.

DEFINE CLASS ClassName1 AS ParentClass [OF ClassLibrary] [OLEPUBLIC] [IMPLEMENTS cInterfaceName [EXCLUDE] IN TypeLib | TypeLibGUID | ProgID ] [[PROTECTED | HIDDEN PropertyName1, PropertyName2 ...] [[.]Object.]PropertyName = eExpression ...] [ADD OBJECT [PROTECTED] ObjectName AS ClassName2 [NOINIT] [WITH cPropertylist]] [[PROTECTED | HIDDEN] FUNCTION | PROCEDURE Name[_ACCESS |_ASSIGN] ([cParamName | cArrayName[] [AS Type][@]]) [AS Type] [HELPSTRING cHelpString] | THIS_ACCESS(cMemberName) [NODEFAULT] cStatements
[ENDFUNC | ENDPROC]] [PEMName_COMATTRIB = nFlags | DIMENSION PEMName_COMATTRIB[5] [PEMName_COMATTRIB[1] = nFlags
PEMName_COMATTRIB[2] = cHelpString
PEMName_COMATTRIB[3] = cPropertyCapitalization
PEMName_COMATTRIB[4] = cPropertyType
PEMName_COMATTRIB[5] = nOptionalParams]] ENDDEFINE

Parámetros

ClassName1
Especifica el nombre de la clase que se va a crear.
AS ParentClass
Especifica la clase primaria en la que se basa una clase o una subclase. La clase primaria puede ser una clase de base de Visual FoxPro, como la clase Form, u otra clase o subclase definida por el usuario. La tabla siguiente indica las clases de base de Visual FoxPro:

Nombres de clases de base

CheckBox Collection Column
ComboBox CommandButton CommandGroup
Container Control Cursor
CursorAdapter Custom DataEnvironment
EditBox Exception Form
FormSet Grid Header
Hyperlink Image Label
Line ListBox OLE Container
OLE Bound (Control) OptionButton OptionGroup
Page PageFrame ProjectHook
Relation Separator Shape
Session Spinner TextBox
Timer ToolBar XMLAdapter
XMLTable XMLField

Si se especifica Custom como ParentClass, Visual FoxPro crea una clase no visual definida por el usuario.

El código de ejemplo siguiente crea una subclase llamada MyForm, basada en la clase Form. El formulario contiene un método Click que muestra un cuadro de diálogo cuando se hace clic en MyForm.

DEFINE CLASS MyForm AS Form
PROCEDURE Click
= MESSAGEBOX('Hizo clic en MyForm!')
ENDPROC
ENDDEFINE

Si se especifica Session como ParentClass, Visual FoxPro crea una clase no visual, definida por el usuario, que mantiene su propia sesión de datos privada. Dado que el objeto Session no es un contenedor, la cláusula AddObject no está disponible al especificar el valor de ParentClass de Session. Las siguientes propiedades de Session tienen nuevas configuraciones predeterminadas cuando se utilizan en una sesión de datos privada (Visual FoxPro 7 y versiones posteriores):

  • EXCLUSIVE = OFF
  • TALK = OFF
  • SAFETY = OFF

Si se especifica OLEPUBLIC para una clase cuyo valor de BaseClass sea Session, la biblioteca de tipos generada para un archivo EXE o DLL sólo contendrá las propiedades y métodos personalizados. Todas las propiedades intrínsecas, métodos y eventos de la clase de base de Session se excluyen de la biblioteca de tipos.

Este comportamiento es compatible con Visual FoxPro 7 y versiones posteriores.

OF ClassLibrary
Permite identificar la biblioteca de clase para AS ParentClass sin especificar explícitamente la ruta de acceso a la biblioteca de clases que la contiene, por ejemplo mediante SET CLASSLIB o SET PROCEDURE. ClassLibrary puede ser un archivo de biblioteca de clases (.vcx), de programa (.prg) o un programa compilado (.fxp).

Si no se puede encontrar la biblioteca ClassLibrary especificada cuando se intenta crear una instancia de la clase, se producirá un error de tipo "No se encuentra la definición de clase …".

Si se utiliza una referencia OF <programfile> en un programa que está enlazado dentro de una aplicación ejecutable, el nombre <programfile> debe tener una extensión de archivo .fxp y no una extensión .prg

La configuración especificada para ClassLibrary puede contener una ruta de acceso relativa, siempre que Visual FoxPro pueda encontrar la biblioteca a lo largo de sus rutas de acceso habituales para la búsqueda de bibliotecas de clases.

Al generar, Visual FoxPro agregará automáticamente ClassLibrary al proyecto si éste incluye el programa que contiene la clase.

OLEPUBLIC
Especifica que se puede tener acceso a la clase, situada en un servidor de Automatización, mediante un cliente de Automatización.

Si agrega a un proyecto un programa que contenga una definición de clase OLEPUBLIC, podrá crear un archivo ejecutable (.exe) o una biblioteca de vínculos dinámicos (.dll) que contenga la clase, ya sea en el Administrador de proyectos o con BUILD EXE, BUILD DLL o BUILD MTDLL. El archivo EXE o DLL se registra automáticamente con el sistema operativo y pasa a estar disponible para cualquier cliente de Automatización.

Para obtener información acerca de la creación de servidores de automatización, vea Crear servidores de Automatización.

[PROTECTED | HIDDEN PropertyName1, PropertyName2 ...][Object.]PropertyName = eExpression ... Crea una propiedad de clase o subclase y asigna un valor predeterminado a la misma. Las propiedades son atributos con nombre de la clase y definen características y comportamientos de la clase. Las clases y las subclases pueden tener múltiples propiedades.

Utilice = para asignar un valor a la propiedad. El ejemplo siguiente crea una clase definida por el usuario llamada MyClass y crea dos propiedades llamadas Name y Version. La propiedad Name se inicializa con la cadena vacía y la propiedad Version se inicializa con la cadena de caracteres 1.0.

   DEFINE CLASS MyClass AS Custom
Name = ''
Version = '1.0'
ENDDEFINE

Es posible tener acceso a una propiedad fuera de la definición de clase o subclase después de crear el objeto con CREATEOBJECT( ):

   MyObject = CREATEOBJECT('MyClass')

Se tiene acceso a la propiedad mediante la sintaxis siguiente:

   ObjectName.Property

La palabra clave .Object indica a Visual FoxPro que se debería aplicar el valor de la propiedad cuando se cree el control ActiveX.

En el siguiente ejemplo se agrega el control ActiveX Outline a un formulario. La palabra clave Object se utiliza para especificar una propiedad para el control Outline antes de crearlo.

   PUBLIC frmOLETest
frmOLETest = CREATEOBJECT('Form')
frmOLETest.Visible = .T.
frmOLETest.ADDOBJECT('OCXTest', 'BlueOLEControl', ;
'MSOutl.Outline')
frmOLETest.OCXTest.AddItem('Item One')
frmOLETest.OCXTest.AddItem('Item Two')
DEFINE CLASS BlueOLEControl AS OLEControl
* Establece una propiedad del control ActiveX
.Object.Backcolor = 16776960
* Establece propiedades del control OLE contenedor
Visible = .T.
Height = 100
Width = 200
ENDDEFINE

Incluya PROTECTED e indique los nombres de propiedad para impedir el acceso y los cambios de las propiedades desde fuera de la definición de clase o subclase. Los métodos y los eventos de la definición de clase o subclase pueden tener acceso a las propiedades protegidas.

En el ejemplo siguiente, la propiedad Version se protege, lo que impide tener acceso a ella y modificarla desde fuera de la definición de clase. Sin embargo, la propiedad Name no se protege y se puede tener acceso a ella y cambiarla.

   DEFINE CLASS MyClass AS Custom
PROTECTED Version
Name = ''
Version = '1.0'
ENDDEFINE

Incluya HIDDEN y una lista de nombres de propiedades para impedir el acceso y las modificaciones a las propiedades desde fuera de la definición de clase. Sólo los métodos y los eventos de la definición de la clase pueden tener acceso a las propiedades ocultas. Mientras que las subclases de la definición de clase pueden tener acceso a las propiedades protegidas, sólo la definición de la clase puede tener acceso a las propiedades ocultas.

Nota Si no incluye la palabra clave HIDDEN, puede crear subclases con los métodos Access y Assign.

ADD OBJECT
Agrega un objeto a una definición de clase o subclase desde una clase de base de Visual FoxPro, una clase o una subclase definida por el usuario o un control personalizado ActiveX.
PROTECTED
Impide tener acceso y cambiar las propiedades del objeto desde fuera de la definición de clase o subclase. La palabra clave PROTECTED debe estar situada inmediatamente antes de ObjectName ya que, de lo contrario, FoxPro genera un error de sintaxis.
ObjectName
Especifica el nombre del objeto y se utiliza para hacer referencia al objeto desde dentro de la definición de clase o subclase después de crear un objeto desde la definición de clase o subclase.
AS ClassName2
Especifica el nombre de la clase o subclase que contiene el objeto que se agrega a la definición de clase. Por ejemplo, la siguiente definición de clase agrega un botón de comando desde la clase de base CommandButton y un cuadro de lista desde la clase de base ListBox.
   DEFINE CLASS MyClass AS Custom
ADD OBJECT CB1 AS CommandButton
ADD OBJECT LIST1 AS ListBox
ENDDEFINE
NOINIT
Especifica que el método Init de un objeto no se ejecuta cuando se agrega el objeto.
WITH cPropertyList
Especifica una lista de propiedades y valores de propiedad para el objeto que se agrega a la definición de clase o subclase. Por ejemplo, la siguiente definición de clase crea una clase llamada MyClass, agrega un botón de comando a la definición de clase y especifica las propiedades Caption y BackColor del botón de comando.
   DEFINE CLASS MyClass AS CUSTOM
ADD OBJECT CB1 AS CommandButton;
WITH Caption = 'Cancel', BackColor = 2
ENDDEFINE
FUNCTION | PROCEDURE Name[_ACCESS | _ASSIGN] | THIS ACCESS
Crea eventos y métodos para la clase o subclase. Los eventos y los métodos se crean como un conjunto de funciones o procedimientos.

Es posible crear una función o un procedimiento de evento dentro de una definición de clase o subclase para responder a un evento. Un evento es una acción, como un clic del ratón, que se reconoce por un objeto creado con una definición de clase o subclase. Si desea obtener información adicional acerca del procesamiento de eventos de Visual FoxPro, vea Descripción del modelo de eventos.

Los eventos se llaman mediante la sintaxis siguiente:

ObjectName.Event

También es posible crear un método, una función o un procedimiento dentro de una definición de clase o subclase. Un método es un procedimiento que actúa sobre el objeto creado con la definición de clase o subclase. Los métodos se llaman mediante esta sintaxis:

ObjectName.Method

Puede agregar los sufijos _ACCESS y _ASSIGN a un nombre de procedimiento o función para crear un método Access o Assign para una propiedad del mismo nombre. El código de un método Access se ejecuta cada vez que intenta cambiar el valor de una propiedad. El código de un método Assign se ejecuta cada vez que se consulta la propiedad.

Además, puede crear un procedimiento o función THIS_ACCESS que se ejecute siempre que cambie un valor o se realice una consulta en un miembro de un objeto.

El código siguiente crea un objeto cuyos procedimientos internos, MyProperty_ACCESS y MyProperty_ASSIGN, responden a consultas (método Access) y a cambios de propiedades (método Assign).

Observe el uso de la instrucción LPARAMETERS para aceptar el valor pasado al método Assign. Este ejemplo muestra también la creación de propiedades de sólo lectura.

   DEFINE CLASS MyClass AS Custom
MyProperty = 100 && Propiedad definida por el usuario
PROCEDURE MyProperty_ACCESS && método Access
WAIT WINDOW 'Este es el método Access';
+  ' ' + PROGRAM( )
RETURN THIS.MyProperty
ENDPROC
PROCEDURE MyProperty_ASSIGN && método Assign
LPARAMETERS tAssign  && Necesario para aceptar el valor
WAIT WINDOW 'Este es el método Assign';
+ ' ' + PROGRAM( )
ENDPROC
ENDDEFINE

El código siguiente agrega un método Assign a una propiedad nativa de Visual FoxPro que ejecuta una validación sencilla en el valor de la propiedad.

DEFINE CLASS se utiliza para crear una clase Form, frmMyForm. Un método Assign, Left_ASSIGN, creado con una creación PROCEDURE, se ejecuta siempre que se intenta asignar un valor a la propiedad Left del formulario.

   DEFINE CLASS frmMyForm AS Form
PROCEDURE Left_ASSIGN && método Assign
LPARAMETERS tAssign  && necesario para aceptar valor
DO CASE
CASE tAssign < 0 && valor negativo para Left
WAIT WINDOW 'El valor debe ser mayor que 0'
OTHERWISE  && valor no negativo para Left
THIS.Left = tAssign
ENDCASE
ENDPROC
ENDDEFINE

Si intenta establecer un valor negativo en la propiedad Left, el método mostrará un mensaje y el valor no se modificará. Si intenta asignar un valor no negativo a la propiedad Left, el método establecerá la propiedad en el valor especificado.

Las propiedades, los eventos y los métodos nativos de los controles ActiveX no admiten los métodos Access y Assign. Sin embargo, las propiedades, los eventos y los métodos del OLE Container de Visual FoxPro que contiene el control ActiveX sí admiten los métodos Access y Assign.

Si desea obtener más información acerca de la creación de métodos Access y Assign con DEFINE CLASS, vea Métodos Access y Assign.

CParamName [AS Type][@]
Especifica el parámetro y su tipo que se pasan al procedimiento o función de la clase definida. Utilice el elemento @ para especificar que el parámetro se pase por referencia. AS Type, aquí, especifica el tipo de datos del parámetro con nombre.
Nota La cláusula AS Type sólo se utiliza para la información IntelliSense y de definición de clase almacenada en una biblioteca de tipos (OLEPUBLIC). Visual FoxPro no exige la comprobación de tipos durante la compilación ni durante la ejecución del código. El uso estricto de tipos es también recomendable cuando se utilizan los métodos de interfaz especificados por IMPLEMENTS.

Para que los parámetros y sus tipos aparezcan en la biblioteca de tipos, deberá utilizar la sintaxis de parámetros en línea, en lugar de usar LPARAMETERS para declarar los parámetros: p. ej. FUNCTION Publisher_ShowPrice(Bookid As Integer, Bookprice As String).

      DEFINE CLASS f1 AS custom OLEPUBLIC
PROTECTED myprop
FUNCTION mymethod (parm1 AS integer @, parm2 AS string) ;
AS integer
RETURN parm1
ENDFUNC
ENDDEFINE

Utilice AS VOID como valor de retorno de métodos que no devuelvan nada (procedimientos de un solo sentido). Esto es necesario para ciertas tecnologías, tales como los Componentes en cola de Servicios COM+ de Microsoft.

Visual FoxPro convertirá automáticamente los valores AS Type cuando los utilicen otros servidores COM. Visual FoxPro muestra también información de tipo para servidores COM en Información rápida de IntelliSense, de acuerdo con la tabla siguiente:

Tipo definido VFP | Conversión biblioteca de tipos COM | Información rápida de IntelliSense
Array | SAFEARRAY(type) | Array
BinaryMemo VARIANT —
Boolean | VARIANT_BOOL | Logical
Byte | unsigned char | Number
Character * | BSTR | String
Currency * | CURRENCY | Currency
Date | DATE | Date
DateTime | DATE | Date
Decimal * | wchar_t | Number
Double | double | Number
Float VARIANT —
Integer | long | Number
Logical | VARIANT_BOOL | Logical
Long | long | Number
Memo VARIANT —
Number | double | Number
Object | IDispatch* | Object
Short | long | Number
Single * | single | Number
String | BSTR | String
Variant VARIANT —
Void | void | VOID
Variant VARIANT —
Void | void | VOID
cArrayName[] [AS Type ][@][AS Type]
Especifica el nombre de una matriz utilizada en la creación de una biblioteca de tipos utilizando la primera cláusula AS Type. Al usar la cláusula cArrayName[] [AS Type][@], puede especificar tipos estrictos para matrices así pueden escribirse correctamente como matrices seguras para un tipo de biblioteca. Por ejemplo:
DEFINE CLASS foo AS Session OLEPUBLIC
PROCEDURE GetWidgets1(aWidgets[])
ENDPROC
PROCEDURE GetWidgets2(aWidgets[] AS Integer)
ENDPROC
PROCEDURE GetWidgets3(aWidgets[] AS Integer @)
ENDPROC
PROCEDURE GetRS(oRS[] AS ADODB.RECORDSET @)
ENDPROC
ENDDEFINE

Nota Los tipos estrictos para matrices se utilizan principalmente para la creación de bibliotecas de tipos y no se implementa en tiempo de ejecución.

El tipo que especifique debe ser un tipo de dato COM válido (vea la tabla anterior). El tipo también puede ser una referencia a un COM CoClass ProgID como un ADODB.Recordset.

Si se especifica un argumento para la primera cláusula AS Type, Visual FoxPro crea un SAFEARRAY con el tipo especificado. Si no especifica un argumento para la primera cláusula AS Type, Visual FoxPro crea un SAFEARRAY de tipo Variant. Si el tipo especificado no es válido, Visual FoxPro usa el tipo de dato Variant como predeterminado.

Nota Para especificar una matriz, debe usar corchetes ([]); DEFINE CLASS no reconoce la notación de paréntesis (()).

Una matriz segura es una matriz uni o bidimensional de un único tipo de datos, la cual puede ser de tipo VARIANT, permitiendo crear matrices de tipos mezclados. La matriz segura almacena su límite inferior, el cual no necesita ser cero, y su tamaño. Las matrices seguras permiten bloqueo y desbloqueo, así puede asegurar que el puntero que recibe para el dato es válido.

No puede especificar matrices como tipos devueltos. El siguiente código, el cual es válido, sólo escribe el tipo devuelto de la biblioteca de tipos como VARIANT y no un SAFEARRAY.

PROCEDURE GetWidgets() AS aWidgets[]
ENDPROC

Al utilizar la cláusula cArrayName[] [AS Type][@][AS Type], puede especificar tipos complejos estrictos definiendo un tipo basado en una clase COM. Por ejemplo:

DEFINE CLASS foo AS Session OLEPUBLIC
REFERENCE "ADODB.Recordset"
PROCEDURE GetRS() AS ADODB.Recordset
x=CREATEOBJECT("ADODB.Recordset")
RETURN X
ENDPROC
PROCEDURE SetRS(oRS AS ADODB.Recordset @)
oRS=CREATEOBJECT("ADODB.Recordset")
ENDPROC
ENDDEFINE

Si pasa un COM CoClass ProgID válido como un argumento para una cláusula Type, Visual FoxPro lo incluye en el tipo de biblioteca. Por ejemplo, el siguiente método:

PROCEDURE Test(oRS AS ADODB.Recordset @) AS ADODB.Recordset

Crea una entrada en la biblioteca de tipos:

Recordset Test([in, out] Recordset** oRS);

No puede especificar una referencia a un ProgID que se genera desde la biblioteca de tipos en sí misma. Por ejemplo, no puede referenciar una clase que está contenida dentro del mismo servidor COM.

Puede especificar nombres de ProgID con o sin comillas (""). Por ejemplo:

PROCEDURE Test(oRS AS "ADODB.Recordset" @) AS ADODB.Recordset
HELPSTRING cHelpString
Especifica la cadena que se agrega a la biblioteca de tipos, para mostrarla en un examinador de objetos o en IntelliSense como descripción de la funcionalidad de un método.
IMPLEMENTS InterfaceName
Especifica que esta definición de clase hereda la interfaz (definición de clase) de otro componente COM. Una clase puede incluir varias instrucciones IMPLEMENTS.
   DEFINE CLASS myClass AS custom olepublic
IMPLEMENTS Publisher IN "mybooksore.dll"
PROCEDURE Publisher_ShowPrice(cGetID AS Long) AS Short
ENDPROC
ENDDEFINE
EXCLUDE
Excluye de la biblioteca de tipos la interfaz implementada.
IN TypeLib | TypeLibGUID | ProgID
Especifica la ubicación de la interfaz.

Puede especificar el objeto COM por medio de TypeLib, la biblioteca de tipos del objeto COM, TypeLibGUID, GUID de la biblioteca de tipos o por medio de la especificación del valor ProgID del programa que inicializa el objeto COM.

   DEFINE CLASS MyBooks AS Custom olepublic
IMPLEMENTS Publisher IN "c:\sample4\Publisher.VB\BooksPub.dll"
FUNCTION Publisher_ShowPrice(Bookid As Integer, Bookprice As String)
ACTIVATE SCREEN
? TRANS(Bookid)+"-"+TRANS(Bookprice),Sys(1011),Sys(1016)
ENDFUNC
ENDDEFINE

Cuando utilice la opción TypeLibGUID, pase la opción con la designación de versión principal y secundaria como en el ejemplo siguiente:

IMPLEMENTS IDict1 IN {04BCEF93-7A77-11D0-9AED-CE3E5F000000}#1.0

La opción Typelib es el modo menos recomendable de especificar la biblioteca de tipos, puesto que requiere un nombre de archivo cuya ruta de acceso puede ser diferente de un equipo a otro. Si el archivo DLL se va a distribuir, considere la utilización de TypeLibGUID o ProgID.

Cuando implemente una interfaz, deberá incluir en la definición de clase todos los métodos de la interfaz. Utilice el nombre de interfaz como principio del nombre de método (por ejemplo, Publisher_ShowPrice). Así evitará también conflictos entre dos interfaces que contengan métodos con el mismo nombre, puesto que es posible tener múltiples instrucciones IMPLEMENTS en una definición de clase. Debe utilizar el nombre de interfaz exactamente como aparece en la biblioteca de tipos. Para los nombres de interfaz que empiezan con un carácter de subrayado, "_", como la clase ADODB Recordset, el carácter de subrayado es opcional.

Dado que las propiedades se almacenan en esencia como dos métodos dentro de una biblioteca de tipos (put y get), la definición de clase debe incluir ambos métodos.

Sugerencia Utilice el Examinador de objetos de Visual FoxPro para arrastrar y soltar una definición de interfaz en el código y ahorrar tiempo. La instrucción IMPLEMENTS, junto con los demás métodos implementados con sus firmas de parámetros correctas, se escribirá automáticamente.

Ciertas tecnologías, tales como los eventos COM+ de Microsoft, requieren que el componente COM implemente también la interfaz de la clase de eventos que se está enlazando.

NODEFAULT
Hace que Visual FoxPro no realice su procesamiento predeterminado de eventos y métodos de Visual FoxPro. Por ejemplo, si ocurre el evento KeyPress, incluir NODEFAULT en el procedimiento o función KeyPress impide que Visual FoxPro incluya la pulsación de teclas en el búfer de teclado de Visual FoxPro. Esto permite crear un procedimiento KeyPress que le permite probar qué tecla se presionó antes de enviar la tecla al búfer de teclado.

Puede situar NODEFAULT en cualquier lugar dentro del procedimiento de evento o método. Observe que NODEFAULT también se puede colocar dentro de un procedimiento de evento o método en el Diseñador de formularios.

cStatements
[ENDFUNC | ENDPROC]]
...
ENDDEFINE

cStatements son los comandos de Visual FoxPro que se ejecutan al ejecutar un evento o un método.

Las funciones y los procedimientos de evento y método pueden aceptar valores que incluyen una instrucción PARAMETERS o LPARAMETERS como primera línea ejecutable de la función o el procedimiento.

A diferencia de la mayor parte de palabras clave de Visual FoxPro, no es posible abreviar ENDFUNC ni ENDPROC. Así se evitan conflictos con las palabras clave ENDFOR y ENDPRINTJOB.

El ejemplo siguiente muestra cómo crear un procedimiento de evento que muestra un mensaje cuando se hace clic en el botón de comando. Este procedimiento de evento anula el evento Click predeterminado del botón de comando.

DEFINE CLASS MyClass AS Custom
ADD OBJECT MyButton AS CommandButton
ADD OBJECT MyList AS ListBox
PROCEDURE MyButton.Click
= MESSAGEBOX('Mi procedimiento para el evento click')
ENDPROC
ENDDEFINE
PEMName_COMATTRIB
Crea una matriz que especifica atributos de biblioteca de tipos para la propiedad o método PEMName. Esta característica sólo se aplica a las clases OLEPUBLIC. Utilice esta opción para especificar información adicional acerca de la propiedad o método que desee escribir en la biblioteca de tipos, por ejemplo una descripción o un atributo de sólo lectura.

La configuración de PEMName_COMATTRIB puede ser una propiedad o una matriz de propiedades. Si se especifica una propiedad, el valor que se le asigna es el de nFlags (primer elemento de la matriz). Visual FoxPro genera un error para los valores o tipos no válidos de la matriz PEMName_COMATTRIB. Los elementos vacíos utilizarán valores predeterminados.

Elemento COMATTRIB | Descripción | Tipo
1 | Indicadores de atributo | Número
2 | Cadena de ayuda | Cadena
3 | Uso de mayúsculas | Cadena
4 | Tipo de propiedad | Cadena
5 Número de parámetros
Si especifica menos parámetros que los reales, los parámetros que excedan el número declarado serán opcionales.
 Número
Nota A diferencia de los métodos Access y Assign, las propiedades _COMATTRIB aquí descritas se ocultan automáticamente y no resultan accesibles en Visual FoxPro. Son para uso exclusivo de Visual FoxPro durante el proceso de generación, mientras se escribe una biblioteca de tipos COM.
nFlags
Especifica un conjunto de indicadores de atributo para PEMName, tal como aparece en la biblioteca de tipos. La tabla siguiente describe los indicadores válidos.
Valor de nFlag | #DEFINE | Descripción
0x1 (1) | COMATTRIB_RESTRICTED | La propiedad o método no debe permitir el acceso a lenguajes de macros. Este indicador es adecuado para las funciones del nivel de sistema o aquéllas que los examinadores de tipos no deban mostrar.
0x40 (64) | COMATTRIB_HIDDEN | La propiedad o método no debe mostrarse al usuario, aunque exista y pueda enlazarse.
0x400 (1024) | COMATTRIB_NONBROWSABLE | La propiedad o método aparece en un examinador de objetos, pero no en un examinador de propiedades.

También puede utilizar cualquiera de los siguientes valores como indicador válido. El uso de ambas propiedades equivale a no utilizar ninguna.

#DEFINE | Valor | Descripción
COMATTRIB_READONLY | 0x100000 | La propiedad es de sólo lectura (sólo de aplica a las propiedades). Equivalente a un PropertyGet.
COMATTRIB_WRITEONLY | 0x200000 | La propiedad es de sólo escritura (sólo de aplica a las propiedades). Equivalente a un PropertyLet.
cHelpString
Especifica un valor de cadena que se almacenará en la biblioteca de tipos para la propiedad PEMName. Para los métodos, utilice la cláusula HELPSTRING cHelpString.
cPropertyCapitalization
Especifica el nombre de propiedad, un valor de cadena, tal como aparecerá en la biblioteca de tipos. Se conservan todas las mayúsculas y minúsculas. Sin esta configuración, Visual FoxPro escribirá la propiedad en mayúsculas en la biblioteca de tipos.
cPropertyType
Este valor de cadena es el tipo de datos de la propiedad, tal como aparece en la biblioteca de tipos (igual que la cláusula AS Type). Sólo se aplica a propiedades.
nOptionalParms
Especifica el número de parámetros opcionales de un método. Si este valor es 2 para un método con 5 parámetros, los últimos 3 serán opcionales. Con los clientes de enlace en tiempo de ejecución, los valores predeterminados de los parámetros opcionales continúan siendo .F.; PCOUNT() refleja de forma precisa el número verdadero de parámetros pasados. Para los clientes de enlace en tiempo de compilación, los valores predeterminados para los parámetros opcionales se establecen siempre en ""; PCOUNT() es siempre el número total de parámetros del método (no el número de parámetros que se pasaron). Sólo se aplica a los métodos.
Nota COMATTRIB_RESRICTED significa que no se debe permitir el acceso a este miembro a los programadores orientados a macros. Estos miembros suelen ser tratados como _HIDDEN por herramientas tales como Visual Basic; la diferencia principal es que el código no puede enlazarse con ellos. COMATTRIB_HIDDEN significa que la propiedad no debe mostrarse nunca en examinadores de objetos, examinadores de propiedades, etc. Esta función es útil para quitar objetos de un modelo de objetos. El código puede enlazar con el miembro, pero el usuario no sabrá nunca que el miembro existe. COMATTRIB _NONBROWSABLE significa que la propiedad no debe mostrarse en un examinador de propiedades. Se utiliza en circunstancias en las que se produciría un error si se mostrara la propiedad en un examinador de propiedades. Los enlaces en tiempo de compilación y en tiempo de ejecución imponen restricciones de acceso diferentes. Los clientes que enlacen en tiempo de compilación no podrán escribir en una propiedad de sólo lectura ni leer una propiedad de sólo escritura, porque no habrá una entrada en vtable. Los clientes que enlacen en tiempo de ejecución tendrán acceso a un propertyget para un PEMName de sólo escritura o un propertyput para un PEMName de sólo lectura.

Observaciones

Las clases definidas por el usuario son un conjunto de comandos situados en un archivo de programa, similares a un procedimiento. Los comandos que siguen la definición de clase o subclase definen propiedades, eventos y métodos para la clase o la subclase.

Nota No puede incluir código de programa ejecutable normal dentro de un archivo de programas después de procedimientos; sólo las definiciones de clase, los procedimientos y las funciones definidas por el usuario pueden ir a continuación del comando DEFINE CLASS, PROCEDURE o FUNCTION en el archivo.

Las definiciones de clase y subclase creadas con DEFINE CLASS no pueden situarse dentro de comandos de programación estructurados, como IF ... ENDIF o DO CASE ... ENDCASE. Tampoco pueden situarse en bucles, como DO WHILE ... ENDDO o FOR ... ENDFOR.

Para crear un objeto a partir de una definición de clase o subclase, ejecute CREATEOBJECT( ) con el nombre de clase o subclase.

Si utiliza la cláusula IMPLEMENTS, deberá incluir todos los métodos de la interfaz especificada. Visual FoxPro no exige la comprobación de los tipos, así que deberá asegurarse de utilizar tipos de datos válidos. Dado que las propiedades se almacenan como dos métodos, PUT y GET, deberá incluirlos a ambos en la definición de clase.

Los métodos Access y Assign están protegidos de forma predeterminada (no puede tener acceso a un método Access o Assign ni modificarlo desde fuera de la clase en la que se cree el método Access o Assign).

Puede ver el código de los métodos Access y Assign en la ventana Seguimiento de la ventana Depurador. Sin embargo, los métodos Access y Assign no se pueden ejecutar en las ventanas Inspección y Locales de la ventana Depurador.

Se pasan matrices a los métodos Access y Assign de la misma forma en que se pasan a procedimientos estándar de Visual FoxPro.

Si ejecuta SET UDFPARMS TO REFERENCE o se antepone @ al nombre de la matriz, se pasa la matriz completa al método Access o Assign. Si ejecuta SET UDFPARMS TO VALUE o escribe el nombre de la matriz entre paréntesis, se pasa por valor el primer elemento de la matriz. Los elementos de matriz siempre se pasan por valor. Para obtener más información acerca de cómo pasar valores y matrices, vea SET UDFPARMS.

Ejemplo

El ejemplo siguiente usa DEFINE CLASS y CREATEOBJECT( ) para crear dos clases personalizadas llamadas FormChild y FormGrandChild a partir de la clase de base Form de Visual FoxPro. ACLASS( ) se utiliza para crear una matriz llamada gaNuevamatriz que contiene los nombres de clase, que se muestran después.

CLEAR
frmMyForm = CREATEOBJECT("FormGrandChild")
FOR nCount = 1 TO ACLASS(gaNewarray, frmMyForm)    && Crea una matriz
? gaNewarray(nCount)  && Muestra el nombre de las clases
ENDFOR
RELEASE frmMyForm
DEFINE CLASS FormChild AS FORM
ENDDEFINE
DEFINE CLASS FormGrandChild AS FormChild
ENDDEFINE

El código siguiente define una matriz de atributos de biblioteca de tipos que utilizan el parámetro _COMATTRIB.

#INCLUDE foxpro.h
DEFINE CLASS myclass AS CUSTOM olepublic
* Define propiedad
MyProperty = 5.2
* Establece atributos de COM para MyProperty
DIMENSION MyProperty_COMATTRIB[4]
myproperty_COMATTRIB[1] = COMATTRIB_READONLY
myproperty_COMATTRIB[2] = "Helptext displayed in object browser"
myproperty_COMATTRIB[3] =  "MyProperty"&& Mayúsculas correspondientes.
myproperty_COMATTRIB[4] = "Float"&& tipo de dato
ENDDEFINE

Si sólo desea establecer el elemento nFlags, no necesitará asignar dimensiones a la propiedad _COMATTRIB como matriz.

#INCLUDE foxpro.h
DEFINE CLASS myclass AS SESSION olepublic
* Define property
MyProperty = "Test"
* Only set the nFlags attribute for MyProperty
myproperty_comattrib = COMATTRIB_READONLY
ENDDEFINE

Vea también

:: Operador de resolución de alcance | ADD CLASS | _BROWSER | CREATE CLASS | CREATE CLASSLIB | CREATEOBJECT( ) | DODEFAULT( ) (Función) | EVENTHANDLER( ) | GETOBJECT( ) | MODIFY CLASS | Examinador de objetos | RELEASE CLASSLIB | Session (Objeto) | SET CLASSLIB | WITH ... ENDWITH | NODEFAULT (Comando)


DEFINE MENU (Comando)

Crea una barra de menús.

DEFINE MENU MenuBarName [BAR [AT LINE nRow]] [IN [WINDOW] WindowName | IN SCREEN] [FONT cFontName [, nFontSize]] [STYLE cFontStyle] [KEY KeyLabel] [MARK cMarkCharacter] [MESSAGE cMessageText] [NOMARGIN] [COLOR SCHEME nSchemeNumber | COLOR ColorPairList]

Parámetros

MenuBarName
Especifica el nombre de la barra de menús que quiere crear. Este nombre de barra de menús le permite hacer referencia a la barra de menús desde otros comandos y funciones.
BAR [AT LINE nRow]
Crea una barra de menús que se comporta como la barra de menús del sistema de Visual FoxPro. La barra de menús tiene estas características:
  • Se dibuja una barra de menú horizontal de una línea de alto a lo ancho de la ventana principal de Visual FoxPro o de la ventana definida por el usuario donde esté incluida.
  • La colocación de los títulos de menú se realiza automáticamente.
  • Si el tamaño o el número de títulos que define excede el tamaño de la pantalla o de una ventana en la que se sitúa la barra de menús, la barra de menús se desplazará.

El número de fila se especifica con nRow.

IN [WINDOW] WindowName
Sitúa una barra de menús en una ventana definida por el usuario. Especifique el nombre de la ventana en la que quiere situar la barra de menús mediante WindowName. Si omite IN WINDOW, la barra de menú se situará de forma predeterminada en la ventana principal de Visual FoxPro, a menos que haya una ventana activa definida por el usuario. Si está activa una ventana definida por el usuario, la barra de menú se situará en la ventana activa. Esta cláusula sólo la admiten los formularios de nivel superior, que pueden establecerse con ShowWindow=2 o Desktop=.T.
IN SCREEN
Sitúa explícitamente la barra de menús en la ventana principal de Visual FoxPro.
FONT cFontName [, nFontSize]
Especifica una fuente predeterminada para todos los títulos de menú de la barra de menús. Puede anular la fuente predeterminada para un título de menú individual si incluye la cláusula FONT en DEFINE PAD.

cFontName especifica el nombre de la fuente y nFontSize especifica el tamaño de la fuente en puntos. Por ejemplo, el comando siguiente crea una barra de menús con títulos en la fuente Courier de 12 puntos:

DEFINE MENU mnuExample FONT 'Courier', 12

Si la fuente especificada no está disponible, se sustituirá por una fuente de características similares. Si incluye la cláusula FONT pero omite el tamaño en puntos nFontSize, se usará una fuente de 10 puntos.

Se ignora la cláusula FONT para títulos de menú agregados al menú de sistema de Visual FoxPro _MSYSMENU. Observe que el Diseñador de menús utiliza el menú de sistema de Visual FoxPro.

STYLE cFontStyle
Especifica un estilo de fuente predeterminado para todos los títulos de menú de la barra de menús. Puede anular el estilo predeterminado para títulos de menú individuales si incluye la cláusula STYLE en DEFINE PAD.

Si omite la cláusula STYLE o si el estilo de fuente especificado no está disponible, se utiliza el estilo de fuente Normal.

Éstos son los estilos de fuente que puede especificar con cFontStyle:

Character | Estilo de la fuente
B | Negrita
I | Cursiva
N | Normal
Q | Opaco
- Tachado
T | Transparente
U | Subrayado

Puede incluir más de un carácter para especificar una combinación de estilos de fuente. Por ejemplo, el comando siguiente especifica Negrita Cursiva:

DEFINE MENU mnuExample STYLE 'BI'

La cláusula STYLE se pasa por alto para los títulos de menú agregados al menú del sistema de Visual FoxPro _MSYSMENU. El Diseñador de menús utiliza el menú de sistema de Visual FoxPro.

KEY KeyLabel
Especifica la tecla o combinación de teclas utilizada para activar la barra de menús. Para obtener una lista de las teclas y combinaciones de teclas disponibles y sus nombres de etiqueta, vea ON KEY LABEL.

La inclusión de la cláusula KEY equivale a ejecutar el comando siguiente:

ON KEY LABEL KeyLabel ACTIVATE MENU MenuName
Nota Si ya está definida una macro de teclado con la misma etiqueta de tecla, la macro de teclado tendrá prioridad y la barra de menús no podrá activarse con la tecla o combinación de teclas especificada.
MARK cMarkCharacter
Especifica un carácter de marca que aparece a la izquierda de los títulos de menú en la barra de menús. MARK se puede incluir para cambiar el carácter de marca predeterminado por el especificado con cMarkCharacter. Si cMarkCharacter incluye más de un carácter, sólo se utilizará el primer carácter como carácter de marca.

El carácter de marca predeterminado es una marca de verificación. La cláusula MARK se pasa por alto y se utiliza el carácter de marca predeterminado en caso de que la barra de menús sea el menú de sistema de Visual FoxPro. Además, la cláusula MARK también se pasa por alto si FoxFont no es la fuente de la ventana principal de Visual FoxPro o de la ventana definida por el usuario en la que está incluida la barra de menús.

Nota Al especificar un carácter de marca no se marcan los nombres de menú de una barra de menús. Utilice SET MARK OF para marcar los títulos de menú de una barra de menús con el carácter especificado.

Los caracteres de marca especificados con DEFINE PAD tienen prioridad sobre los caracteres de marca especificados con la cláusula MARK en DEFINE MENU. SET MARK OF se utiliza para desactivar o activar los caracteres de marca y también puede utilizarse para especificar un carácter de marca para un elemento de menú individual o para todos los elementos del menú.

MESSAGE cMessageText
Muestra un mensaje cuando se selecciona un título de menú. El mensaje se incluye en la barra gráfica de estado. Si la barra gráfica de estado se ha desactivado con SET STATUS BAR OFF, el mensaje se centrará en la última línea de la ventana principal de Visual FoxPro.
NOMARGIN
Borra los espacios que se colocan a la derecha y a la izquierda de cada nombre de menú de forma predeterminada.
COLOR SCHEME nSchemeNumber
Especifica los colores de una barra de menús individual.
COLOR ColorPairList
Especifica los colores de una barra de menú individual. De forma predeterminada, los colores de los elementos de menú están determinados por el esquema número 2 del conjunto de colores actual.

Observaciones

Utilice DEFINE MENU para crear la barra de menús para el sistema de menús de su aplicación. Utilice DEFINE PAD para crear los títulos de menús de la barra de menús. Utilice ON PAD ... ACTIVATE para especificar qué menú se va a mostrar bajo cada título de menú. Utilice DEFINE POPUP para crear los menús debajo de cada título de menú. Utilice ACTIVATE MENU para activar todo el sistema de menús.

Si utiliza el Diseñador de menús para crear un menú, quizá no necesite usar estos comandos. El Diseñador de menús crea automáticamente los comandos para su menú. Este diseñador usa el menú del sistema de Visual FoxPro, que se puede modificar si se agregan los propios elementos de menú.

Para obtener más información acerca de la creación de menús, vea Crear un sistema de menús.

Ejemplo

El ejemplo siguiente usa DEFINE MENU para crear un sistema de menús definido por el usuario. Primero se guarda en memoria la barra actual de menús del sistema mediante SET SYSMENU SAVE y, después, se borran los títulos de los menús con SET SYSMENU TO.

DEFINE MENU crea la barra de menús y se crean dos títulos de menú con DEFINE PAD. DEFINE POPUP crea un menú para cada título. DEFINE BAR crea elementos en cada uno de los menús. Cuando se elige un título de menú, ON PAD utiliza ACTIVATE POPUP para activar el menú correspondiente. ACTIVATE MENU muestra y activa la barra de menús.

Cuando se elige un elemento de un menú, se ejecuta el procedimiento CHOICE. CHOICE muestra el nombre del elemento elegido y el nombre del menú donde está incluido.

*** Name this program DEFIMENU.PRG ***
CLEAR
SET SYSMENU SAVE
SET SYSMENU TO
ON KEY LABEL ESC KEYBOARD CHR(13)
DEFINE MENU example BAR AT LINE 1
DEFINE PAD convpad OF example PROMPT '\<Conversions' COLOR SCHEME 3 ;
KEY ALT+C, ''
DEFINE PAD cardpad OF example PROMPT 'Card \<Info' COLOR SCHEME 3 ;
KEY ALT+I, ''
ON PAD convpad OF example ACTIVATE POPUP conversion
ON PAD cardpad OF example ACTIVATE POPUP cardinfo
DEFINE POPUP conversion MARGIN RELATIVE COLOR SCHEME 4
DEFINE BAR 1 OF conversion PROMPT 'Ar\<ea' ;
KEY CTRL+E, '^E'
DEFINE BAR 2 OF conversion PROMPT '\<Length' ;
KEY CTRL+L, '^L'
DEFINE BAR 3 OF conversion PROMPT 'Ma\<ss' ;
KEY CTRL+S, '^S'
DEFINE BAR 4 OF conversion PROMPT 'Spee\<d' ;
KEY CTRL+D, '^D'
DEFINE BAR 5 OF conversion PROMPT '\<Temperature' ;
KEY CTRL+T, '^T'
DEFINE BAR 6 OF conversion PROMPT 'T\<ime' ;
KEY CTRL+I, '^I'
DEFINE BAR 7 OF conversion PROMPT 'Volu\<me' ;
KEY CTRL+M, '^M'
ON SELECTION POPUP conversion DO choice IN defimenu WITH PROMPT( ), POPUP( )
DEFINE POPUP cardinfo MARGIN RELATIVE COLOR SCHEME 4
DEFINE BAR 1 OF cardinfo PROMPT '\<View Charges' ;
KEY ALT+V, ''
DEFINE BAR 2 OF cardinfo PROMPT 'View \<Payments' ;
KEY ALT+P, ''
DEFINE BAR 3 OF cardinfo PROMPT 'Vie\<w Users' ;
KEY ALT+W, ''
DEFINE BAR 4 OF cardinfo PROMPT '\-'
DEFINE BAR 5 OF cardinfo PROMPT '\<Charges '
ON SELECTION POPUP cardinfo;
DO choice IN defimenu WITH PROMPT( ), POPUP( )
ACTIVATE MENU example
DEACTIVATE MENU example
RELEASE MENU example EXTENDED
SET SYSMENU TO DEFAULT
ON KEY LABEL ESC
PROCEDURE choice
PARAMETERS mprompt, mpopup
WAIT WINDOW 'You chose ' + mprompt + ;
' from popup ' + mpopup NOWAIT

Vea también

ACTIVATE MENU | CNTPAD( ) | CREATE MENU | DEACTIVATE MENU | DEFINE PAD | GETPAD( ) | HIDE MENU | MRKPAD( ) | ON PAD | ON SELECTION PAD | PRMPAD( ) | RELEASE MENUS | RELEASE PAD | SET MARK OF | SET SYSMENU | SHOW MENU


DEFINE PAD (Comando)

Crea un título de menú en una barra de menús definida por el usuario o en la barra de menús del sistema de Visual FoxPro.

DEFINE PAD MenuTitle1 OF MenuBarName PROMPT cMenuTitleText
[AT nRow, nColumn] [BEFORE MenuName2 | AFTER MenuName3] [NEGOTIATE cContainerPosition [, cObjectPosition]] [FONT cFontName [, nFontSize]] [STYLE cFontStyle] [KEY KeyLabel [, cKeyText]] [MARK cMarkCharacter] [SKIP [FOR lExpression]] [MESSAGE cMessageText] [COLOR SCHEME nSchemeNumber | COLOR ColorPairList]

Parámetros

MenuTitle1
Especifica el título de menú que desea crear. El título permite hacer referencia al menú en otros comandos y funciones.
OF MenuBarName
Especifica el nombre de la barra de menús en la que se situará el título de menú.
PROMPT cMenuTitleText
Especifica el texto que aparecerá en el título de menú.

Puede crear una tecla de acceso para un título de menú si incluye una barra inversa y un signo menor que (\<) delante del carácter que desea usar como tecla de acceso. En el ejemplo siguiente, el usuario puede presionar la tecla I para elegir la opción Invoices (Facturas) del menú Receive (Recibir) y la tecla Q para elegir Inquiry (Información) del mismo menú:

DEFINE MENU mnuReceive
DEFINE PAD padInvoice OF mnureceive PROMPT "\<Invoices"
DEFINE PAD padInquire OF mnureceive PROMPT "In\<quiry"
ACTIVATE MENU mnuReceive
AT nRow, nColumn
Especifica en qué lugar de la barra de menús aparecerá el título. nRow, nColumn son las coordenadas del extremo izquierdo del título de menú en la ventana principal de Visual FoxPro o en una ventana definida por el usuario.

Si omite la cláusula AT, el extremo izquierdo del primer título de menú se situará en la fila 0 de la ventana principal de Visual FoxPro o de la ventana definida por el usuario. El siguiente título de menú se situará a la derecha del primero, en la fila 0, y así sucesivamente.

Nota No puede incluir AT para especificar una ubicación para títulos de menú en las barras de menús creadas mediante la cláusula BAR de DEFINE MENU.
BEFORE MenuName2
Sitúa el título de menú en la barra de menús, a la izquierda del título especificado mediante MenuName2. El orden en que se tiene acceso a los títulos de menú desde el teclado corresponde a la ubicación de los títulos en la barra de menús.
AFTER MenuName3
Sitúa el título de menú en la barra de menús, a la derecha del título especificado mediante MenuName3. El orden en que se tiene acceso a los títulos de menú desde el teclado corresponde a la ubicación de los títulos en la barra de menús.

Debe crear primero el título de menú especificado en una cláusula BEFORE o AFTER. Si no crea primero el título de menú, la posición del título en la barra de menús estará determinada por el orden en que se crea o por la ubicación especificada mediante la cláusula AT.

Para las barras de menús creadas sin BAR, las cláusulas BEFORE o AFTER determinan el orden en que se tiene acceso a los títulos de menú desde el teclado. La ubicación de un título de menú está determinada por la ubicación especificada mediante la cláusula AT.

Ejecute los dos ejemplos siguientes y observe las diferencias en cuanto a colocación y orden de acceso de los títulos de menú cuando éstos se definen con y sin la cláusula AT:

*** Program Example 1 without ATs ***
DEFINE MENU mnuBefAft
DEFINE PAD padOne OF mnuBefAft PROMPT '1111'
DEFINE PAD padTwo OF mnuBefAft PROMPT '2222'
DEFINE PAD padThree OF mnuBefAft PROMPT '3333'
DEFINE PAD padFour  OF mnuBefAft PROMPT '4444' BEFORE padTwo
ACTIVATE MENU mnuBefAft
*** Program Example 2 with ATs ***
DEFINE MENU mnuBefAft
DEFINE PAD padOne OF mnuBefAft PROMPT '1111' AT 1,5
DEFINE PAD padTwo OF mnuBefAft PROMPT '2222' AT 1,15
DEFINE PAD padThree OF mnuBefAft PROMPT '3333' AT 1,25
DEFINE PAD padFour  OF mnuBefAft PROMPT '4444' BEFORE padTwo AT 1,35
WAIT WINDOW 'Press ESC to erase menu' NOWAIT
ACTIVATE MENU mnuBefAft
NEGOTIATE cContainerPosition [, cObjectPosition]
cContainerPositionespecifica la ubicación del título de menú en la barra de menús de Visual FoxPro cuando se realiza la modificación visual OLE para un control ActiveX contenido en un formulario de Visual FoxPro.

Los valores para cContainerPosition son:

Valor | Descripción
NONE | El título de menú no se muestra
LEFT | El título de menú se coloca a la izquierda del grupo Archivo.
MIDDLE | El título de menú se coloca a la izquierda del grupo Contenedor, después del menú Edición.
RIGHT | El título de menú se coloca a la izquierda del grupo Ventana.

Los valores para cObjectPosition son:

Valor | Descripción
NONE | El título de menú no se muestra
LEFT | El título de menú se coloca a la derecha del grupo Archivo.
MIDDLE | El título de menú se coloca a la derecha del grupo Contenedor, después del menú Edición.
RIGHT | El título de menú se coloca en el menú Ayuda.

Si omite la cláusula NEGOTIATE, el título de menú se quita de la barra de menús cuando se realice la modificación visual OLE; NONE es el valor predeterminado para cContainerPosition y cObjectPosition.

FONT cFontName [, nFontSize]
Especifica una fuente para el título de menú. cFontName especifica el nombre de la fuente y nFontSize especifica el tamaño en puntos. Por ejemplo, el comando siguiente crea un título de menú con la fuente Courier de 12 puntos:
DEFINE PAD padPageAccts OF mnuReceive FONT 'Courier', 12

Si la fuente especificada no está disponible, se sustituirá por una fuente de características similares. Si incluye la cláusula FONT pero omite el tamaño en puntos nFontSize, se usará una fuente de 10 puntos.

Se ignora la cláusula FONT para títulos de menú agregados al menú de sistema de Visual FoxPro _MSYSMENU. Observe que el Diseñador de menús utiliza el menú de sistema de Visual FoxPro.

STYLE cFontStyle
Especifica un estilo de fuente para el título de menú. Si omite la cláusula STYLE o si el estilo de fuente especificado no está disponible, se utiliza el estilo de fuente Normal.

Éstos son los estilos de fuente que puede especificar con cFontStyle:

Carácter | Estilo de la fuente
B | Negrita
I | Cursiva
N | Normal
Q | Opaco
- Tachado
T | Transparente
U | Subrayado

Puede incluir más de un carácter para especificar una combinación de estilos de fuente. Por ejemplo, el comando siguiente especifica Negrita Cursiva:

DEFINE PAD padPageAccts OF mnuReceive STYLE 'BI'

La cláusula STYLE se pasa por alto para los títulos de menú agregados al menú del sistema de Visual FoxPro _MSYSMENU. Observe que el Diseñador de menús utiliza el menú de sistema de Visual FoxPro.

KEY KeyLabel [, cKeyText]
Especifica una tecla o una combinación de teclas de acceso para un título de menú. Para obtener una lista de las teclas y combinaciones de teclas disponibles y sus nombres de etiqueta, vea ON KEY LABEL.
Nota Si ya hay una macro de teclado definida con la misma etiqueta de tecla, la macro tendrá prioridad y el título de menú no se podrá elegir mediante la tecla o la combinación de teclas especificada.

La etiqueta de tecla se sitúa a la derecha de los títulos de menú en las barras de menús creadas sin la cláusula BAR. Esta etiqueta no aparece en las barras de menús creadas con la cláusula BAR ni en los títulos que aparecen en la barra de menús del sistema de Visual FoxPro.

Incluya cKeyText para sustituir la etiqueta de tecla por su propio texto. Puede utilizar cualquier carácter en el parámetro cKeyText; por ejemplo, puede utilizar el texto "^B" para indicar una etiqueta de tecla para CTRL+B. Por ejemplo, si incluye KEY CTRL+B se incluirá el texto CTRL+B a la derecha del título de menú. Si especifica KEY CTRL+B, "^B" aparecerá ^+B en el menú. Puede suprimir la presentación de una etiqueta de tecla si especifica la cadena vacía para cKeyText.

MARK cMarkCharacter
Especifica un carácter de marca que aparece a la izquierda del título de menú. MARK se puede incluir para cambiar el carácter de marca predeterminado por el especificado con cMarkCharacter. Si cMarkCharacter incluye más de un carácter, sólo se utilizará el primer carácter como carácter de marca.

El carácter de marca predeterminado es una marca de verificación. La cláusula MARK se pasa por alto y el carácter predeterminado de marca se usa si la barra de menús que contiene el título de menú es el menú de sistema de Visual FoxPro. Además, la cláusula MARK se pasará por alto si FoxFont no es la fuente para la ventana principal de Visual FoxPro o para la ventana definida por el usuario en la que se encuentra la barra que contiene el título de menú.

Los caracteres de marca especificados con DEFINE PAD tienen prioridad sobre los caracteres de marca especificados con la cláusula MARK en DEFINE MENU. SET MARK OF se usa para activar o desactivar marcas y también puede usarse para especificar un carácter de marca para un título de menú individual o para todos los títulos de menú.

Nota Especificar un carácter de marca no marca el título de menú. Utilice SET MARK OF para marcar un título de menú con el carácter especificado.
SKIP [FOR lExpression]
Especifica una condición por la cual si lExpression da como resultado verdadero (.T.), se desactivará el título de menú, lo que impide al usuario elegirlo. Si lExpression da como resultado falso (.F.), el título de menú se activará.

También puede desactivar un elemento de menú si incluye una barra inversa (\) delante del texto del título de menú. Por ejemplo:

DEFINE PAD padPageAccts OF mnuReceive PROMPT '\Age Accounts'

El título de menú padPageAccts aparecerá atenuado, lo que indica que no se puede elegir.

En Visual FoxPro y en FoxPro para Windows, un título de menú desactivado se puede mostrar pero no seleccionar. No obstante, un mensaje especificado mediante la cláusula MESSAGE sí se mostrará.

MESSAGE cMessageText
Muestra un mensaje cuando se selecciona un título de menú. El mensaje se incluye en la barra gráfica de estado. Si la barra gráfica de estado se ha desactivado con SET STATUS BAR OFF, el mensaje se centrará en la última línea de la ventana principal de Visual FoxPro.
COLOR SCHEME nSchemeNumber
Especifica los colores para un título de menú individual e invalida los colores predeterminados o los colores especificados mediante DEFINE MENU.
COLOR ColorPairList
Especifica los colores para un título de menú individual e invalida los colores predeterminados o los colores especificados mediante DEFINE MENU.

De forma predeterminada, los colores de los títulos de menú de las barras de menús están determinados por el esquema número 2 del conjunto de colores actual

Observaciones

Cada título de menú que aparece en la barra de menús debe crearse con su propio comando DEFINE PAD. Una barra de menús debe definirse mediante DEFINE MENU antes de poder poner en ella títulos de menú y debe incluir el nombre de la barra en DEFINE PAD.

Si utiliza el Diseñador de menús para crear un menú, quizá no necesite usar estos comandos. El Diseñador de menús crea automáticamente los comandos para su menú. Este diseñador usa el menú del sistema de Visual FoxPro, que se puede modificar si se agregan los propios elementos de menú. Para obtener más información acerca de la creación de menús, vea Crear un sistema de menús.

Ejemplo

El ejemplo siguiente usa DEFINE PAD para situar títulos de menú en la barra de menús del sistema de Visual FoxPro. En primer lugar, se guarda en memoria la barra de menús actual del sistema con SET SYSMENU SAVE y, a continuación, se eliminan todos los títulos de menús del sistema mediante SET SYSMENU TO.

Con DEFINE PAD se crean varios títulos de menú del sistema. Cuando se elige un título de menú se ejecuta el procedimiento CHOICE. CHOICE muestra el nombre del título del menú elegido y el nombre de la barra de menús; además, cambia el estado, activo o inactivo, del carácter de marca de los títulos del menú. Si se elige el título de menú Salir, se restaura el menú del sistema original de Visual FoxPro.

*** Name this program DEFINPAD.PRG ***
CLEAR
SET TALK OFF
SET SYSMENU SAVE
SET SYSMENU TO
PUBLIC markpad
markpad = .T.
DEFINE PAD syspad  OF _MSYSMENU PROMPT '\<System'  COLOR SCHEME 3 ;
KEY ALT+S, ''
DEFINE PAD editpad OF _MSYSMENU PROMPT '\<Edit'  COLOR SCHEME 3 ;
KEY ALT+E, ''
DEFINE PAD recordpad OF _MSYSMENU PROMPT '\<Record'  COLOR SCHEME 3 KEY ALT+R, ''
DEFINE PAD windowpad OF _MSYSMENU PROMPT '\<Window'  COLOR SCHEME 3 ;
KEY ALT+W, ''
DEFINE PAD reportpad OF _MSYSMENU PROMPT 'Re\<ports' COLOR SCHEME 3 ;
KEY ALT+P, ''
DEFINE PAD exitpad OF _MSYSMENU PROMPT 'E\<xit'  COLOR SCHEME 3 ;
KEY ALT+X, ''
ON SELECTION MENU _MSYSMENU ;
DO choice IN definpad WITH PAD( ), MENU( )
PROCEDURE choice
PARAMETER mpad, mmenu
WAIT WINDOW 'You chose ' + mpad + ;
' from menu ' + mmenu NOWAIT
SET MARK OF PAD (mpad) OF _MSYSMENU TO ;
! MRKPAD('_MSYSMENU', mpad)
markpad = ! markpad
IF mpad = 'EXITPAD'
SET SYSMENU TO DEFAULT
ENDIF

Vea también

ACTIVATE MENU | CREATE MENU | DEACTIVATE MENU | DEFINE MENU | GETPAD( ) | HIDE MENU | MRKPAD( ) | ON PAD | ON SELECTION PAD | PRMPAD( ) | RELEASE PAD | SET MARK OF | SET MESSAGE | SET SYSMENU | SHOW MENU


DEFINE POPUP (Comando)

Crea un menú.

DEFINE POPUP MenuName [FROM nRow1, nColumn1] [TO nRow2, nColumn2] [IN [WINDOW] WindowName | IN SCREEN] [FONT cFontName [, nFontSize]] [STYLE cFontStyle] [FOOTER cFooterText] [KEY KeyLabel] [MARGIN] [MARK cMarkCharacter] [MESSAGE cMessageText] [MOVER] [MULTISELECT] [PROMPT FIELD FieldName | PROMPT FILES [LIKE FileSkeleton] | PROMPT STRUCTURE] [RELATIVE] [SCROLL] [SHORTCUT] [TITLE cMenuTitleText] [COLOR SCHEME nSchemeNumber | COLOR ColorPairList]

Parámetros

MenuName
Especifica el nombre del menú que quiere crear.
FROM nRow1, nColumn1 TO nRow2, nColumn2
Especifica el lugar donde se situará el menú. nRow1, nColumn1 especifica las coordenadas de la esquina superior izquierda del menú. Si omite la cláusula FROM, Visual FoxPro sitúa la esquina superior izquierda del menú en la primera fila y en la primera columna de la ventana principal de Visual FoxPro o de la ventana definida por el usuario.

Para crear un menú con un tamaño específico, también puede incluir TO nRow2, nColumn2 para especificar la ubicación de la esquina inferior derecha del menú. Si incluye FROM nRow1, nColumn1 y omite TO nRow2, nColumn2, Visual FoxPro ajustará automáticamente el tamaño del menú. El menú será tan ancho como lo sea su elemento más largo (si los elementos se crean con DEFINE BAR) y tan largo como sea necesario para mostrar todos los elementos del menú. La longitud del menú está limitada por el tamaño de la ventana principal de Visual FoxPro o de la ventana definida por el usuario donde está incluido el menú. Si un menú no es suficientemente grande como para contener todos los elementos del menú, aparecerá una barra de desplazamiento para que pueda desplazarse por ellos.

IN [WINDOW] WindowName
Coloca un menú en una ventana definida por el usuario especificada con WindowName. Si omite esta cláusula, el menú se situará de forma predeterminada en la ventana principal de Visual FoxPro, a menos que haya una ventana activa definida por el usuario. Si está activa una ventana definida por el usuario, el menú se situará en la ventana activa.
IN SCREEN
Sitúa un menú en la ventana principal de Visual FoxPro.
FONT cFontName [, nFontSize]
Especifica una fuente predeterminada para el menú. Puede anular la fuente predeterminada para un elemento individual de menú si incluye la cláusula FONT en DEFINE BAR.

cFontName especifica el nombre de la fuente y nFontSize especifica el tamaño de la fuente en puntos. Por ejemplo, el comando siguiente crea un menú con la fuente Courier de 12 puntos:

DEFINE POPUP popMyPopup FONT 'Courier', 12

Si la fuente especificada no está disponible, se sustituirá por una fuente de características similares. Si incluye la cláusula FONT pero omite el tamaño en puntos nFontSize, se usará una fuente de 10 puntos.

STYLE cFontStyle
Especifica un estilo de fuente predeterminado para el menú. Puede anular el estilo predeterminado para un elemento individual de menú si incluye la cláusula FONT en DEFINE BAR.

Si omite la cláusula STYLE o si el estilo de fuente especificado no está disponible, se utiliza el estilo de fuente Normal.

En la tabla siguiente se indican los estilos de fuente que puede especificar con cFontStyle:

Carácter | Estilo de la fuente
B | Negrita
I | Cursiva
N | Normal
Q | Opaco
- Tachado
T | Transparente
U | Subrayado

Puede incluir más de un carácter para especificar una combinación de estilos de fuente. Por ejemplo, el comando siguiente especifica Negrita Cursiva:

DEFINE MENU popMyPopup STYLE 'BI'
FOOTER cFooterText
Crea un pie con el texto especificado en cFooterText centrado en el borde inferior del menú.
KEY KeyLabel
Especifica una tecla o una combinación de teclas de acceso para un menú. Para obtener una lista de las teclas y combinaciones de teclas disponibles y sus nombres de etiqueta, vea ON KEY LABEL.

Incluir KEY equivale a ejecutar el siguiente comando:

ON KEY LABEL KeyLabel ACTIVATE POPUP MenuName
Nota Si ya está definida una macro de teclado con la misma etiqueta de tecla, la macro de teclado tendrá prioridad y el menú no podrá activarse con la tecla o combinación de teclas especificada.
MARGIN
Agrega un espacio adicional a izquierda y a la derecha de cada elemento de menú. Los caracteres de marca se muestran en el espacio situado a la izquierda de los elementos y hay disponibles flechas que indican submenús adicionales en cascada que se muestran a la derecha de los elementos de menú. Si omite MARGIN, los caracteres de marca sobrescribirán el primer carácter de los nombres de los elementos de menú; las flechas jerárquicas sobrescribirán el último carácter de los elementos de menú.
Nota Deberá incluir esta cláusula si desea utilizar las cláusulas DEFINE BAR ... PICTURE o PICTRES.
MARK cMarkCharacter
Especifica un carácter que aparecerá a la izquierda de un elemento de menú. El carácter de marca predeterminado es una marca de verificación. La cláusula MARK se pasa por alto y se utiliza el carácter de marca predeterminado en caso de que el menú esté integrado en el menú de sistema de Visual FoxPro. Además, la cláusula MARK también se pasa por alto si FoxFont no es la fuente de la ventana principal de FoxPro o de la ventana definida por el usuario en la que está el menú.

MARK se puede incluir para cambiar el carácter de marca predeterminado por el especificado con cMarkCharacter. Si cMarkCharacter incluye más de un carácter, sólo se utilizará el primer carácter como carácter de marca.

Nota Al especificar un carácter de marca no se marca el elemento de menú. Utilice SET MARK OF para marcar un elemento de menú.

La cláusula MARK establece el carácter de marca para todos los elementos del menú. Los caracteres de marca especificados mediante comandos DEFINE BAR tienen prioridad sobre los caracteres de marca especificados con la cláusula MARK de DEFINE POPUP. SET MARK OF se utiliza para desactivar o activar los caracteres de marca y también puede utilizarse para especificar un carácter de marca para un elemento individual de menú o para todos los elementos del mismo.

MESSAGE cMessageText
Muestra un mensaje cuando el usuario selecciona un elemento de menú. El mensaje se incluye en la barra gráfica de estado. Si la barra de estado basada en caracteres se ha activado mediante SET STATUS ON, el mensaje se centrará en la última línea de la ventana principal de Visual FoxPro.
MOVER
Coloca una flecha de doble punta en el cuadro Selector a la izquierda del elemento seleccionado del menú. Puede arrastrar la flecha de doble punta para mover un elemento a otra posición del menú. GETBAR( ) se puede utilizar para determinar en qué lugar del menú está situado cada elemento.

No es posible reorganizar los elementos de un menú creado con una cláusula PROMPT.

MULTISELECT
Permite al usuario seleccionar simultáneamente múltiples elementos de un menú. Cuando el usuario elige un elemento de un menú, el carácter de marca se sitúa a la izquierda del elemento.

No puede hacer selecciones múltiples en un menú creado con una cláusula PROMPT.

MRKBAR( ) puede utilizarse para determinar las opciones elegidas de un menú.

Si incluye MULTISELECT in DEFINE POPUP, puede que también quiera incluir MARGIN para reservar espacio en cada elemento para el carácter de marca.

En el ejemplo siguiente se crea un menú llamado popFruits. Se incluye MULTISELECT para crear un menú que permita elegir varios elementos.

Cada uno de los cuatro elementos tiene un carácter de marca distinto. Cuando un usuario elija elementos del menú, éstos se marcarán y una rutina llamada yourchoice mostrará los elementos elegidos.

CLEAR
IF NOT _DOS
MODIFY WINDOW SCREEN FONT 'foxfont', 12
ENDIF
ACTIVATE SCREEN
DEFINE POPUP popFruits FROM 5,5 ;
MULTISELECT MARGIN            && Create multi-choice menu
DEFINE BAR 1 OF popFruits ;
PROMPT '\<Apples'  MARK CHR(3)    && First item
DEFINE BAR 2 OF popFruits ;
PROMPT '\<Bananas' MARK CHR(4)    && Second item
DEFINE BAR 3 OF popFruits ;
PROMPT '\<Grapes'  MARK CHR(5) && Third item
DEFINE BAR 4 OF popFruits ;
PROMPT '\<Lemons'  MARK CHR(6)    && Fourth item
@ 12,5 SAY 'Your choices:'
ON SELECTION POPUP popFruits DO yourchoice    && Choice routine
ACTIVATE POPUP popFruits
PROCEDURE yourchoice            && Executed when choice is made
@ 13,5 CLEAR
FOR gnCount = 1 TO CNTBAR('popFruits')      && Loop for # of items
IF MRKBAR('popFruits', gnCount) = .T.      && Option is marked,
? PRMBAR('popFruits', gnCount) AT 5      && display caption
ENDIF
NEXT
PROMPT FIELD FieldName
Especifica el nombre de campo de una tabla abierta cuyos registros se convierten en elementos del menú. El menú contendrá un elemento por cada registro de la tabla. Cuando se activa el menú, se selecciona el área de trabajo que contiene la tabla.
Sugerencia Si establece un filtro sobre el campo especificado con PROMPT FIELD para utilizarlo en el menú, podrá sacar partido de la optimización Rushmore (Rushmore Query Optimization).Si desea obtener más información acerca de la optimización Rushmore, vea SET OPTIMIZE y Utilizar optimización de consultas Rushmore para acelerar el acceso de datos en Optimizar aplicaciones.

FieldName también puede contener múltiples nombres de campos y expresiones concatenados con el operador de adición (+). FieldName también puede ser el nombre del campo en una tabla abierta en otra área de trabajo o en una función definida por el usuario.

No hay ningún límite respecto al número de entradas que pueden aparecer en un menú creado con PROMPT FIELD.

PROMPT FILES [LIKE FileSkeleton]
Crea un menú que muestra los nombres de los archivos disponibles en el directorio actual.

LIKE FileSkeleton le permite especificar los archivos que se muestran en el menú mediante caracteres comodín. Por ejemplo, para crear un menú que muestre los nombres de tablas del directorio y la unidad predeterminados, incluya el comando siguiente:

PROMPT FILES LIKE *.DBF

Puede crear un menú que muestre los nombres de los archivos de otras unidades o de otros directorios si incluye una especificación de unidad, una especificación de directorio o ambas. Por ejemplo, para crear un menú que muestre los nombres de los archivos de programa de un directorio llamado PROGRAMS en la unidad C, incluya el comando siguiente:

PROMPT FILES LIKE C:\PROGRAMS\*.PRG
PROMPT STRUCTURE
Muestra en el menú los nombres de los campos incluidos en la tabla actual, de acuerdo con la estructura de campos de la tabla. Cuando se activa el menú, se selecciona el área de trabajo que contiene la tabla.
RELATIVE
Especifica el orden en el que se colocan los elementos en un menú. Si crea un menú sin la cláusula RELATIVE, cada elemento se coloca en el menú según el orden indicado por el número de barra de elemento. En el menú se reserva espacio para los elementos no definidos. Por ejemplo, si se definen el primer y el tercer elementos y se activa el menú, se incluirá en el menú una línea en blanco reservada para el segundo elemento.

Si crea un menú con RELATIVE, los elementos aparecerán en el menú en el orden en que se han definido. No se reservará espacio en el menú para los elementos no definidos.

Definir un menú con RELATIVE también le permite utilizar las cláusulas BEFORE y AFTER en DEFINE BAR para colocar los elementos de un menú de forma relativa a otros elementos. Si crea un menú sin RELATIVE, al incluir BEFORE o AFTER en DEFINE BAR se produce un error.

Ejecute los dos programas de ejemplo siguientes y compare la colocación de los elementos en cada menú.

*** RELATIVE Example  ***
DEFINE POPUP popRelatYes RELATIVE FROM 1,1
DEFINE BAR 4  OF popRelatYes PROMPT '4444'
DEFINE BAR 3  OF popRelatYes PROMPT '3333'
DEFINE BAR 2  OF popRelatYes PROMPT '2222'
DEFINE BAR 1  OF popRelatYes PROMPT '1111'
DEFINE BAR 6  OF popRelatYes PROMPT '6666' BEFORE 4
ACTIVATE POPUP popRelatYes
*** NON-RELATIVE Example ***
DEFINE POPUP popRelatNo FROM 1,1
DEFINE BAR 4  OF popRelatNo PROMPT '4444'
DEFINE BAR 3  OF popRelatNo PROMPT '3333'
DEFINE BAR 2  OF popRelatNo PROMPT '2222'
DEFINE BAR 1  OF popRelatNo PROMPT '1111'
DEFINE BAR 6  OF popRelatNo PROMPT '6666'
ACTIVATE POPUP popRelatNo
SCROLL
Sitúa una barra de desplazamiento a la derecha del menú que crea. La barra de desplazamiento aparece solamente cuando hay más elementos de los que caben en el menú o si el menú es demasiado largo y no cabe en la ventana principal de Visual FoxPro o en la ventana definida por el usuario en la que está situado.
SHORTCUT
Crea un menú contextual. Un menú contextual suele aparecer cuando se hace clic en un botón de selección, de barra de herramientas o de barra de tareas con el botón secundario del ratón. En el menú contextual se muestran los comandos que pertenecen a la región de la pantalla en la que se ha hecho clic con el botón secundario del ratón.

Puede incluir MROW( ) y MCOL( ) en la cláusula FROM para activar el menú contextual en la ubicación cuando se haga clic con el ratón.

TITLE cMenuTitleText
Muestra un título en el centro del borde superior del menú. cTitleText especifica el título del menú.
COLOR SCHEME nSchemeNumber
Especifica los colores de todos los elementos de un menú. Los colores de los menús creados con DEFINE POPUP se controlan, de forma predeterminada, mediante el esquema de colores 2.
COLOR ColorPairList
Especifica los colores de todos los elementos de un menú.

Observaciones

Para situar un conjunto de elementos definidos por usted en un menú, utilice comandos DEFINE BAR. Para situar registros, archivos o campos en un menú, utilice las cláusulas PROMPT FIELD, PROMPT FILES o PROMPT STRUCTURE de DEFINE POPUP.

Al activar y mostrar un menú con ACTIVATE POPUP, puede elegir uno de los elementos del mismo. Según el elemento elegido, puede ejecutarse una rutina o puede mostrarse y activarse otro menú. Un menú que muestra otro menú cuando se elige un elemento se denomina submenú en cascada. Si desea obtener más información acerca de la creación de menús en cascada, vea ON BAR.

Si utiliza el Diseñador de menús para crear un menú, quizá no necesite usar estos comandos. El Diseñador de menús crea automáticamente los comandos para su menú. Este diseñador usa el menú del sistema de Visual FoxPro, que se puede modificar si se agregan los propios elementos de menú.

Para obtener más información acerca de la creación de menús, vea Crear un sistema de menús.

Ejemplo

El ejemplo siguiente usa DEFINE POPUP para crear menús que se activan cuando se elige un título en la barra de menús. En primer lugar, se guarda en memoria la barra de menús actual del sistema con SET SYSMENU SAVE y, a continuación, se eliminan todos los títulos de menús del sistema mediante SET SYSMENU TO.

Se crean dos nuevos títulos de menú del sistema con DEFINE PAD, y DEFINE POPUP crea un menú desplegable para cada título de menú. DEFINE BAR crea elementos en cada uno de los menús. Cuando se elige un título de menú, ON PAD utiliza ACTIVATE POPUP para activar el menú correspondiente.

Al elegir un elemento de un menú, ON SELECTION POPUP usa PROMPT( ) y POPUP( ) para transferir el número de elemento y el nombre de menú al procedimiento CHOICE. CHOICE muestra el texto del elemento elegido y el nombre del menú que lo contiene. Si se elige el elemento Salir del menú Info tarjeta, se restaura el menú de sistema original de Visual FoxPro.

*** Name this program DEFINPOP.PRG ***
CLEAR
SET SYSMENU SAVE
SET SYSMENU TO
DEFINE PAD convpad OF _MSYSMENU PROMPT '\<Conversions' COLOR SCHEME 3 ;
KEY ALT+C, ''
DEFINE PAD cardpad OF _MSYSMENU PROMPT 'Card \<Info' COLOR SCHEME 3 ;
KEY ALT+I, ''
ON PAD convpad OF _MSYSMENU ACTIVATE POPUP conversion
ON PAD cardpad OF _MSYSMENU ACTIVATE POPUP cardinfo
DEFINE POPUP conversion MARGIN RELATIVE COLOR SCHEME 4
DEFINE BAR 1 OF conversion PROMPT 'Ar\<ea' KEY CTRL+E, '^E'
DEFINE BAR 2 OF conversion PROMPT '\<Length' ;
KEY CTRL+L, '^L'
DEFINE BAR 3 OF conversion PROMPT 'Ma\<ss' ;
KEY CTRL+S, '^S'
DEFINE BAR 4 OF conversion PROMPT 'Spee\<d' ;
KEY CTRL+D, '^D'
DEFINE BAR 5 OF conversion PROMPT '\<Temperature' ;
KEY CTRL+T, '^T'
DEFINE BAR 6 OF conversion PROMPT 'T\<ime' ;
KEY CTRL+I, '^I'
DEFINE BAR 7 OF conversion PROMPT 'Volu\<me' ;
KEY CTRL+M, '^M'
ON SELECTION POPUP conversion;
DO choice IN definpop WITH PROMPT( ), POPUP( )
DEFINE POPUP cardinfo MARGIN RELATIVE COLOR SCHEME 4
DEFINE BAR 1 OF cardinfo PROMPT '\<View Charges' ;
KEY ALT+V, ''
DEFINE BAR 2 OF cardinfo PROMPT 'View \<Payments' ;
KEY ALT+P, ''
DEFINE BAR 3 OF cardinfo PROMPT 'Vie\<w Users' ;
KEY ALT+W, ''
DEFINE BAR 4 OF cardinfo PROMPT '\-'
DEFINE BAR 5 OF cardinfo PROMPT '\<Charges '
DEFINE BAR 6 OF cardinfo PROMPT '\-'
DEFINE BAR 7 OF cardinfo PROMPT 'E\<xit '
ON SELECTION POPUP cardinfo;
DO choice IN definpop WITH PROMPT( ), POPUP( )
PROCEDURE choice
PARAMETERS mprompt, mpopup
WAIT WINDOW 'You chose ' + mprompt + ;
' from popup ' + mpopup NOWAIT
IF mprompt = 'Exit'
SET SYSMENU TO DEFAULT
ENDIF

Vea también

ACTIVATE POPUP | CNTBAR( ) | CREATE MENU | DEFINE BAR | GETBAR( ) | HIDE POPUP | MOVE POPUP | MRKBAR( ) | ON BAR | ON SELECTION BAR | POPUP( ) | PRMBAR( ) | PROMPT( ) | RELEASE POPUPS | SET MARK OF | SET MESSAGE | SIZE POPUP | SHOW POPUP


DEFINE WINDOW (Comando)

Crea una ventana y especifica sus atributos.

DEFINE WINDOW WindowName1 FROM nRow1, nColumn1 TO nRow2, nColumn2
| AT nRow3, nColumn3 SIZE nRow4, nColumn4
[IN [WINDOW] WindowName2 | IN SCREEN | IN DESKTOP [NAME ObjectName] [FONT cFontName [, nFontSize]] [STYLE cFontStyle] [FOOTER cFooterText] [TITLE cTitleText] [HALFHEIGHT] [DOUBLE | PANEL | NONE | SYSTEM | cBorderString] [CLOSE | NOCLOSE] [FLOAT | NOFLOAT] [GROW | NOGROW] [MDI | NOMDI] [MINIMIZE | NOMINIMIZE] [ZOOM | NOZOOM] [ICON FILE FileName1] [FILL cFillCharacter | FILL FILE FileName2] [COLOR SCHEME nSchemeNumber   | COLOR ColorPairList]]

Parámetros

WindowName1
Especifica el nombre de la ventana que se va a crear. Los nombres de ventana pueden contener un máximo de 254 caracteres de longitud en Visual FoxPro. Deben empezar con una letra o un signo de subrayado y no pueden comenzar con un número. Pueden contener cualquier combinación de letras, números y signos de subrayado.
FROM nRow1, nColumn1 TO nRow2, nColumn2
Especifica la posición y el tamaño de la ventana definida por el usuario en la ventana principal de Visual FoxPro. FROM nRow1, nColumn1 especifica la posición de la esquina superior izquierda de la ventana definida por el usuario en el interior de la ventana principal de Visual FoxPro. TO nRow2, nColumn2 especifica la posición de la esquina inferior derecha de la ventana definida por el usuario en el interior de la ventana principal de Visual FoxPro.

Es posible definir una ventana con coordenadas que superen el borde exterior de la ventana de Visual FoxPro y que sean mayores que la ventana principal de Visual FoxPro.

La ubicación y el tamaño de la ventana están determinados por la fuente de la ventana principal. La ventana principal puede ser otra ventana definida por el usuario o la ventana principal de Visual FoxPro.

AT nRow3, nColumn3 SIZE nRow4, nColumn4
Especifica la posición y el tamaño de una ventana definida por el usuario.

AT nRow3, nColumn3 especifica la posición de la esquina superior izquierda de la ventana definida por el usuario en la ventana principal de Visual FoxPro. La fuente actual de la ventana primaria determina esta posición. Debido a que la cláusula AT es idéntica a la cláusula FROM en todos los aspectos, las dos cláusulas pueden utilizarse de forma indistinta.

SIZE nRow4, nColumn4 especifica el tamaño, en filas y columnas, de la ventana definida por el usuario y garantiza que el texto mostrado en una fuente determinada cabe en la ventana creada.

Si incluye las cláusulas FONT y STYLE puede especificar una fuente y un estilo de fuente para una ventana definida por el usuario. Si especifica una fuente para la ventana e incluye la cláusula SIZE, el alto y el ancho de la fuente de la ventana determinarán su tamaño. Si no especifica una fuente para una ventana, la fuente de la ventana será la fuente predeterminada del sistema, FoxFont de 10 puntos.

IN [WINDOW] WindowName2
Sitúa una ventana definida por el usuario en la ventana primaria. La ventana definida por el usuario se convertirá en una ventana secundaria y no podrá moverse fuera de la ventana primaria. Si se mueve la ventana primaria, la ventana secundaria se moverá con ella.

Cuando se sitúa una ventana secundaria sobre una ventana primaria, las coordenadas de la ventana secundaria especificadas con las cláusulas FROM y TO o AT y SIZE son relativas a la ventana primaria, no a la ventana principal de Visual FoxPro.

En el ejemplo siguiente se crea una ventana primaria, wParent. Una ventana secundaria, wChild, se coloca en la ventana primaria.

CLEAR
DEFINE WINDOW wParent ;
FROM 1, 1 TO 20, 30 ;
TITLE "Parent"         && Parent window.
ACTIVATE WINDOW wParent
DEFINE WINDOW wChild ;
FROM 1, 1 TO 20, 20 ;
TITLE "Child" ;
IN WINDOW wParent       && Child window.
ACTIVATE WINDOW wChild
ACTIVATE SCREEN
WAIT WINDOW 'Press a key to clear the windows'
RELEASE WINDOW wParent, wChild
CLEAR
IN SCREEN
Coloca explícitamente una ventana definida por el usuario en la ventana principal de Visual FoxPro. Si omite IN SCREEN, la ventana definida por el usuario se situará de forma predeterminada en la ventana principal de Visual FoxPro.

Puede incluir la cláusula IN WINDOW en ACTIVATE WINDOW para situar la ventana en otra ventana definida por el usuario y anular esta cláusula IN SCREEN.

IN DESKTOP
En Visual FoxPro y en FoxPro para Windows, sitúa una ventana definida por el usuario en el escritorio de Microsoft Windows, fuera de la ventana principal de Visual FoxPro. La posición de la ventana es relativa al escritorio Windows y la fuente actual de la ventana principal de Visual FoxPro.
NAME ObjectName
Crea una referencia de objeto para la ventana, lo que permite manipularla con propiedades orientadas a objetos disponibles para el objeto Form.

Si desea obtener información adicional acerca de la programación orientada a objetos en Visual FoxPro, vea Programación orientada a objetos. Para obtener información adicional acerca de las propiedades del objeto Form que puede especificar para una ventana creada con la cláusula NAME, vea el tema Form (Objeto).

FONT cFontName [, nFontSize]
Especifica una fuente para el texto de ventana. cFontName es el nombre de la fuente y nFontSize es el tamaño de la fuente. Si omite nFontSize, se utilizará una fuente de 9 puntos.

Por ejemplo, en Visual FoxPro y en FoxPro para Windows este comando crea una ventana que muestra el resultado dirigido a la ventana con una fuente Courier de 16 puntos:

DEFINE WINDOW wDisplayFont FROM 2,2 TO 12,22 FONT 'Courier', 16

Si omite la cláusula FONT, se utilizará FoxFont de 10 puntos. Si la fuente especificada no está disponible, se sustituirá por una fuente de características similares.

STYLE cFontStyle
Especifica un estilo de fuente para el texto escrito en la ventana. cFontStyle especifica la fuente. Si omite la cláusula STYLE o si el estilo de fuente especificado no está disponible, se utiliza el estilo de fuente Normal.

La tabla siguiente enumera los estilos de fuente y sus caracteres correspondientes.

Carácter | Estilo de la fuente
B | Negrita
I | Cursiva
N | Normal
Q | Opaco
- Tachado
T | Transparente
U | Subrayado

Puede incluir más de un carácter para especificar una combinación de estilos de fuente. En Visual FoxPro y en FoxPro para Windows, el siguiente comando especifica el estilo Negrita Cursiva:

DEFINE WINDOW wDisplayStyle FROM 2, 2 TO 12, 22 STYLE 'BI'
TITLE cTitleText
Asigna un título mediante la cláusula TITLE. cTitleText especifica el texto del título y se centra sobre el borde superior de la ventana. Si el título es más ancho que la ventana, se truncará el título.
HALFHEIGHT
Crea una ventana con la barra de título de media altura. Esto proporciona compatibilidad con ventanas creadas en versiones anteriores de FoxPro e importadas a Visual FoxPro.

Cuando utiliza DEFINE WINDOW para crear una ventana, se utiliza una barra de título de media altura a no ser que incluya la palabra clave SYSTEM o una cláusula FONT.

Si incluye la palabra clave HALFHEIGHT, se utilizará una barra de título de media altura independientemente de si se incluye o no una cláusula SYSTEM o FONT.

DOUBLE | PANEL | NONE | SYSTEM | cBorderString
Especifica un estilo de borde para una ventana definida por el usuario. El borde predeterminado es una línea sencilla.
Argumento | Descripción
DOUBLE | Especifica un borde de línea doble alrededor de la ventana.
PANEL | Especifica un borde ancho alrededor de la ventana.
NONE | Suprime el borde por completo.
SYSTEM | Especifica que la ventana definida por el usuario tenga la misma apariencia que una ventana del sistema. Cuando incluya otras cláusulas determinadas (GROW, ZOOM, etc.), los controles de ventana adecuados se situarán en el borde de la ventana.
cBorderString | Especifica un borde personalizado. Para obtener más información acerca de la definición de un borde personalizado, vea SET BORDER.

Si incluye DOUBLE o una cadena de borde personalizada, se creará una ventana con el borde PANEL. Si incluye las cláusulas CLOSE, FLOAT, GROW, ZOOM o MINIMIZE, los controles apropiados se situarán en la ventana aunque no incluya la cláusula SYSTEM de definición de tipo de la ventana.

CLOSE
Le permite cerrar una ventana definida por el usuario mediante el teclado o el mouse. Al cerrar una ventana, se elimina de la ventana principal de Visual FoxPro o de una ventana primaria definida por el usuario, y también se elimina su definición de la memoria. Si omite CLOSE, no podrá cerrar la ventana mediante la interfaz; para cerrar la ventana tendrá que utilizar un comando en un programa o en la ventana Comandos.
NOCLOSE
Impide que el usuario cierre una ventana a no ser que utilice un comando en un programa o en la ventana Comandos.
FLOAT
Le permite mover una ventana definida por el usuario mediante el teclado o el mouse. Si omite FLOAT, no podrá mover la ventana, a no ser que utilice el comando MOVE WINDOW en un programa o en la ventada Comandos.
NOFLOAT
Impide que pueda moverse una ventana a no ser que se utilice el comando MOVE WINDOW en un programa o en la ventana Comandos.
GROW
Le permite cambiar el tamaño de una ventana definida por el usuario mediante el teclado o el mouse. Si omite GROW, no podrá cambiar el tamaño de la ventana a no ser que utilice el comando SIZE WINDOW en un programa o en la ventana Comandos.
NOGROW
Impide que cambie el tamaño de una ventana a no ser que se utilice el comando SIZE WINDOW en un programa o en la ventana Comandos.
MDI
Crea una ventana definida por el usuario que se ajusta a MDI. MDI (interfaz de múltiples documentos) es una especificación que admite múltiples ventanas de documentos y determina su estructura y comportamiento. Si omite MDI, la ventana creada no cumplirá la especificación MDI.

Cuando se maximiza una ventana que cumple con MDI:

  • La ventana asume el tamaño de la ventana principal de Visual FoxPro. Los controles de la ventana desaparecen y un icono de menú desplegable aparece en la barra de menú del sistema de Visual FoxPro. El botón Restaurar de la ventana se sitúa también en la barra de menús del sistema Visual FoxPro.
  • El título de la ventana se coloca en la barra de título de Visual FoxPro y se separa del título Visual FoxPro con un guión.
  • Si activa otra ventana que cumple con MDI, se maximizará automáticamente.
NOMDI
Crea una ventana que no cumple con MDI.
MINIMIZE
Le permite minimizar una ventana definida por el usuario mediante el teclado o el mouse.
NOMINIMIZE
Le impide minimizar una ventana.
ZOOM
Le permite maximizar una ventana definida por el usuario mediante el teclado o el mouse. También puede restaurar la ventana a su tamaño original.
NOZOOM
Le impide maximizar una ventana.
ICON FILE FileName
Especifica el icono que se mostrará cuando la ventana se minimice. Es necesario incluir la palabra clave MINIMIZE en DEFINE WINDOW. Puede especificar un único archivo de icono (.ico); no puede especificar un archivo de mapa de bits (.bmp).
FILL FILE FileName2
Especifica un papel tapiz (el fondo) para la ventana. La ventana se muestra en mosaico con el FileName2 especificado. Puede especificar un archivo de mapa de bits .bmp.
COLOR SCHEME nSchemeNumber
Especifica los colores para la ventana definida por el usuario. De forma predeterminada, los colores de las ventanas creadas con DEFINE WINDOW se controlan mediante el esquema de colores 1.
COLOR ColorPairList
Especifica los colores para la ventana definida por el usuario.

Observaciones

Después de crear ventanas definidas por el usuario con DEFINE WINDOW, se pueden mostrar en la ventana principal de Visual FoxPro con ACTIVATE WINDOW o SHOW WINDOW. El número de ventanas definidas por el usuario que puede crear está limitado únicamente por la cantidad de memoria disponible y por los recursos del sistema.

Las ventanas activadas permanecen en el escritorio o en la ventana principal de Visual FoxPro hasta que se ejecute DEACTIVATE WINDOW o HIDE WINDOW. DEACTIVATE WINDOW o HIDE WINDOW quitan las ventanas de la ventana principal de Visual FoxPro pero no quitan de la memoria las definiciones de ventana. Las ventanas pueden volver a situarse en la ventana principal de Visual FoxPro con ACTIVATE WINDOW o SHOW WINDOW.

Utilice CLEAR WINDOWS o RELEASE WINDOWS para quitar las ventanas de la ventana principal de Visual FoxPro y borrar de la memoria las definiciones de ventana. Las ventanas cuyas definiciones se hayan borrado de memoria deben volverse a crear con DEFINE WINDOW para volverlas a mostrar.

Ejemplo

En el ejemplo siguiente se crea y activa una ventana llamada output. El programa espera a que usted presione una tecla y oculta la ventana. El programa espera a que vuelva a presionar una tecla y vuelve a mostrar la ventana.

CLEAR
DEFINE WINDOW output FROM 2,1 TO 13,75 TITLE 'Output' ;
CLOSE FLOAT GROW ZOOM
ACTIVATE WINDOW output
WAIT WINDOW 'press any key to hide window output'
HIDE WINDOW output
WAIT WINDOW 'press any key to show window output'
SHOW WINDOW output
WAIT WINDOW 'press any key to release window output'
RELEASE WINDOW  output

Vea también

ACTIVATE WINDOW | DEACTIVATE WINDOW | Introducción a las fuentes | Form (Objeto) | HIDE WINDOW | MODIFY WINDOW | MOVE WINDOW | RELEASE WINDOWS | SET BORDER | SHOW WINDOW


DELETE - SQL (Comando)

Marca los registros que se van a eliminar.

DELETE FROM [DatabaseName!]TableName
[WHERE FilterCondition1 [AND | OR FilterCondition2 ...]]

Parámetros

FROM [DatabaseName!]TableName
Especifica la tabla en la que se marcan registros para eliminar.

DatabaseName! especifica el nombre de una base de datos no actual que contiene la tabla. Incluya el nombre de una base de datos que contenga la tabla si no es la base de datos actual. Incluya el delimitador signo de exclamación (!) después del nombre de la base de datos y antes del nombre de la tabla.

WHERE FilterCondition1 [AND | OR FilterCondition2 ...]
Especifica que Visual FoxPro sólo marca algunos registros para eliminar.

FilterCondition especifica los criterios que deben satisfacer los registros para marcarlos para su eliminación. Puede incluir tantas condiciones como desee, si las conecta con el operador AND u OR. También puede utilizar el operador NOT para invertir el valor de una expresión lógica o utilizar EMPTY( ) para comprobar si hay campos vacíos.

Observaciones

Los registros marcados para su eliminación no se eliminarán físicamente de la tabla hasta que se ejecute PACK. Los registros marcados para su eliminación pueden recuperarse (o quitar las marcas) con RECALL.

Si se establece SET DELETED como ON, todos los comandos que incluyan un alcance pasarán por alto los registros marcados para su eliminación.

Puede determinar la cantidad de artículos marcados para borrar verificando el valor de la variable de sistema _TALLY inmediatamente después del comando DELETE - SQL.

A diferencia de DELETE, DELETE - SQL utiliza el bloqueo de registros cuando marca varios registros para eliminarlos de las tablas abiertas para acceso compartido. Este hecho disminuye la contención de registros en situaciones de varios usuarios, pero puede reducir el rendimiento. Para conseguir el máximo rendimiento, abra la tabla para uso exclusivo o utilice FLOCK( ) para bloquear la tabla.

Ejemplo

El ejemplo siguiente abre la tabla customer de la base de datos testdata. Se utiliza DELETE - SQL para marcar para eliminación todos los registros en los que el campo country contenga USA. Se muestran todos los registros marcados para ser eliminados. Se utiliza RECALL ALL para quitar las marcas de todos los registros marcados para eliminar.

CLOSE DATABASES
CLEAR
OPEN DATABASE HOME(2)+"Data\testdata"
USE customer  && Open Customer table
DELETE FROM customer WHERE country = "USA"   && Mark for deletion
CLEAR
LIST FIELDS company, country FOR DELETED( )  && List marked records
* If the file were packed at this point the records would be deleted
WAIT WINDOW "Records currently marked for deletion"+CHR(13) + ;
"Press any key to revert..."
* Unmark all records marked for deletion
RECALL ALL
CLEAR
* Verify reverted records
COUNT FOR DELETED( )=.T. TO nDeleted
* Convert nDeleted to a character string and display information
WAIT WINDOW ALLTRIM(STR(nDeleted)) + " records marked for deletion."

Vea también

DELETE | DELETED( ) | PACK | RECALL | SET DELETED | _TALLY


DELETE (Comando)

Marca los registros que se van a eliminar.

DELETE [Scope] [FOR lExpression1] [WHILE lExpression2] [IN nWorkArea | cTableAlias] [NOOPTIMIZE]

Parámetros

Scope
Especifica un intervalo de registros que desea marcar para su eliminación. El alcance predeterminado para DELETE es el registro actual (NEXT 1). Las cláusulas de alcance son: ALL, NEXT nRecords, RECORD nRecordNumber y REST.

Para obtener más información acerca de las cláusulas de alcance, vea Cláusulas de alcance.

FOR lExpression1
Especifica una condición por la cual solamente se marcan para su eliminación los registros que satisfacen la condición lógica lExpression1.

Rushmore (Rushmore Query Optimization) optimizará una consulta creada con DELETE ... FOR si lExpression1 es una expresión optimizable y la tabla está indizada por DELETED( ). Para obtener el máximo rendimiento, utilice una expresión optimizable en la cláusula FOR.

Para obtener más información acerca de las expresiones optimizables con Rushmore, vea SET OPTIMIZE, and Utilizar optimización de consultas Rushmore para acelerar el acceso de datos en Optimizar aplicaciones .

WHILE lExpression2
Especifica una condición por la cual los registros se marcan para su eliminación siempre y cuando lExpression2 dé como resultado verdadero (.T.).
IN nWorkArea
Especifica el área de trabajo de la tabla en la cual se marcan los registros para su eliminación.
IN cTableAlias
Especifica el alias de la tabla en la cual se marcan los registros para su eliminación.

Si omite nWorkArea y cTableAlias, los registros se marcarán para su eliminación en la tabla del área de trabajo seleccionada actualmente.

NOOPTIMIZE
Desactiva la optimización Rushmore de DELETE.

Observaciones

Los registros marcados para su eliminación no se eliminarán físicamente de la tabla hasta que se ejecute PACK. Los registros marcados para su eliminación pueden recuperarse (o quitar las marcas) con RECALL.

Ejemplo

El ejemplo siguiente abre la tabla customer de la base de datos testdata. Se utiliza DELETE para marcar para eliminación todos los registros en los que el campo country contenga USA. Se muestran todos los registros marcados para ser eliminados. Se utiliza RECALL ALL para quitar las marcas de todos los registros marcados para eliminar.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer  && Opens Customer table
DELETE FOR country = 'USA'  && Mark for deletion
CLEAR
LIST FIELDS company, country FOR DELETED( ) && List marked records
RECALL ALL  && Unmark all records marked for deletion

Vea también

DELETE - SQL | DELETED( ) | PACK | RECALL | SET DELETED


DELETE CONNECTION (Comando)

Elimina una conexión con nombre de la base de datos actual.

DELETE CONNECTION ConnectionName

Parámetros

ConnectionName
Especifica el nombre de la conexión con nombre que se va a eliminar de la base de datos actual.

Observaciones

La eliminación de una definición de conexión con nombre no cierra ninguna conexión activa.

DELETE CONNECTION requiere uso exclusivo de la base de datos. Para abrir una base de datos para uso exclusivo, incluya EXCLUSIVE en OPEN DATABASE.

Ejemplo

El ejemplo siguiente supone que hay un origen de datos ODBC disponible llamado MyFoxSQLNT. Se abre la base de datos testdata y se crea una conexión llamada Myconn. Se usa DISPLAY CONNECTIONS para mostrar las conexiones con nombre de la base de datos. Luego se quita la conexión de la base de datos mediante DELETE CONNECTION.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')

CREATE CONNECTION Myconn DATASOURCE "MyFoxSQLNT" USERID "<userid>" PASSWORD "<password>"
DISPLAY CONNECTIONS    && Displays named connections in the database
DELETE CONNECTION Myconn  && Removes the connection just created

Vea también

CREATE CONNECTION | MODIFY CONNECTION | RENAME CONNECTION


DELETE DATABASE (Comando)

Elimina una base de datos del disco.

DELETE DATABASE DatabaseName | ? [DELETETABLES] [RECYCLE]

Parámetros

DatabaseName
Especifica el nombre de la base de datos que se va a eliminar del disco. La base de datos que especifique no puede estar abierta. DatabaseName puede incluir la ruta de acceso y el nombre de la base de datos.
?
Muestra el cuadro de diálogo Eliminar, en el que puede especificar el nombre de la base de datos que desea eliminar del disco.
DELETETABLES
Elimina las tablas contenidas en la base de datos del disco y la base de datos que las contiene.
RECYCLE
Especifica que no se eliminará del disco inmediatamente la base de datos y que se colocará en la Papelera de reciclaje de Windows.

Observaciones

Utilice siempre DELETE DATABASE para eliminar una base de datos del disco. A diferencia de la utilidad de manipulación de archivos del sistema operativo, DELETE DATABASE suprime las referencias a la base de datos de las tablas de la base de datos.

Si SET SAFETY está establecido en ON, Visual FoxPro le pregunta si desea eliminar la base de datos especificada. Si SET SAFETY está establecido en OFF, la base de datos se elimina automáticamente del disco.

Ejemplo

El ejemplo siguiente crea una base de datos llamada people. Se crea una tabla llamada friends y se agrega automáticamente a la base de datos. Se usa DISPLAY TABLES para mostrar las tablas de la base de datos y DISPLAY DATABASES para mostrar información acerca de las tablas de la base de datos.

DELETE DATABASE se usa con la opción DELETETABLES para quitar del disco la base de datos y su tabla friends.

CLOSE ALL
CREATE DATABASE people
CREATE TABLE friends (FirstName C(20), LastName C(20))
CLEAR
DISPLAY TABLES  && Displays tables in the database
DISPLAY DATABASES  && Displays table information
CLOSE ALL
DELETE DATABASE people DELETETABLES

Vea también

ADD TABLE | CLOSE DATABASES | DBC( ) | DBGETPROP( ) | DBSETPROP( ) | DISPLAY TABLES | OPEN DATABASE | REMOVE TABLE


DELETE FILE (Comando)

Elimina un archivo del disco.

DELETE FILE [FileName | ?] [RECYCLE]

Parámetros

FileName
Especifica el archivo que desea eliminar. FileName puede contener caracteres comodín tales como * y ?. Por ejemplo, para eliminar archivos de copia de seguridad con la extensión .bak en el directorio actual, ejecute DELETE FILE *.BAK. Si FileName contiene espacios, encierre todo el nombre de archivo entre comillas.
?
Muestra el cuadro de diálogo Eliminar, en el que puede elegir un archivo para eliminarlo.
RECYCLE
Especifica que el archivo no se eliminará del disco inmediatamente y que se colocará en la Papelera de reciclaje de Windows.
Precaución Cualquier archivo eliminado con este comando no podrá recuperarse. Incluso si especifica SET SAFETY como ON, no se le avisará antes de eliminar el archivo.

Observaciones

El archivo que desea eliminar no puede estar abierto en el momento de ejecutar DELETE FILE. El nombre del archivo debe incluir la ruta de acceso si está en una unidad o en un directorio distinto de los predeterminados y debe incluir la extensión del nombre del archivo. El nombre del archivo no puede contener caracteres comodín.

Antes de eliminar una tabla de una base de datos, ejecute REMOVE TABLE con el nombre de la tabla para quitar de la base de datos las referencias a dicha tabla. Si elimina una tabla que tiene asociado un archivo memo .FPT, asegúrese de eliminar el archivo memo.

Este comando no genera un error si no existe el archivo especificado.

Ejemplo

En el ejemplo siguiente, la estructura de Customer.dbf y todos los registros en los que el país sea USA (EE.UU.) se copian a una tabla llamada backup. Los datos de backup se copian a un archivo de texto, temp, que se abre y, luego, se elimina una vez cerrado.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer  && Opens Customer table
COPY STRUCTURE TO backup
USE backup
APPEND FROM customer FOR country = 'USA'
COPY TO temp TYPE DELIMITED
WAIT WINDOW 'Press Esc to close and erase temp.txt' NOWAIT
MODIFY FILE temp.txt NOEDIT
DELETE FILE temp.txt
? IIF(FILE('temp.txt'),'File not deleted','File deleted')
USE
DELETE FILE backup.dbf

Vea también

ERASE | REMOVE TABLE | SET SAFETY


DELETE TAG (Comando)

Quita una o varias etiquetas de un archivo de índice compuesto (.cdx).

DELETE TAG TagName1 [OF CDXFileName1] [, TagName2 [OF CDXFileName2]]...

–O bien–

DELETE TAG ALL [OF CDXFileName]

Parámetros

TagName1 [OF CDXFileName1] [, TagName2 [OF CDXFileName2]] ...
Especifica la etiqueta que se va a eliminar de un archivo de índice. Puede eliminar varias etiquetas con un comando DELETE TAG si incluye una lista de nombres de etiquetas separados por comas. Si existen dos o más etiquetas con el mismo nombre en los archivos de índice abiertos, podrá eliminar la etiqueta de un archivo concreto si incluye OF CDXFileName.
ALL [OF CDXFileName]
Elimina todas las etiquetas de un archivo de índice compuesto. Si la tabla actual tiene un archivo de índice compuesto estructural, se eliminarán todas las etiquetas del archivo de índice, se eliminará el archivo de índice del disco y se eliminará el indicador del encabezado de la tabla que indica la presencia de un archivo de índice compuesto estructural. Utilice ALL con OF CDXFileName para eliminar todas las etiquetas de un archivo de índice compuesto abierto distinto del archivo de índice compuesto estructural.

Observaciones

Los archivos de índice compuesto, creados con INDEX, contienen etiquetas que se corresponden con las entradas del índice. DELETE TAG se utiliza para quitar una o varias etiquetas de los archivos de índice compuesto abiertos. Únicamente puede eliminar etiquetas de los archivos de índice compuesto que estén abiertos en el área de trabajo actual. Si quita todas las etiquetas de un archivo de índice compuesto, el archivo se eliminará del disco.

Visual FoxPro busca primero la etiqueta en el archivo de índice compuesto estructural (si hay alguno abierto). Si la etiqueta no está en el archivo de índice compuesto estructural, Visual FoxPro buscará entonces la etiqueta en el resto de los archivos de índice compuesto que estén abiertos.

Visual FoxPro ejecutará una advertencia si usted intenta eliminar una etiqueta de índice principal o candidato y SET SAFETY está establecido en ON.

Vea también

COPY INDEXES | COPY TAG | INDEX | TAG( )


DELETE TRIGGER (Comando)

Elimina un desencadenante Delete, Insert o Update para una tabla de la base de datos actual.

DELETE TRIGGER ON TableName FOR DELETE | INSERT | UPDATE

Parámetros

TableName
Especifica el nombre de la tabla para la que se elimina el desencadenante.
FOR DELETE | INSERT | UPDATE
Especifica el desencadenante que se va a eliminar. Incluya FOR DELETE para eliminar el desencadenante Delete, FOR INSERT para eliminar el desencadenante Insert, y FOR UPDATE para eliminar el desencadenante Update.

Observaciones

Utilice CREATE TRIGGER para crear un desencadenante Delete, Insert o Update para una tabla.

Ejemplo

El ejemplo siguiente crea un desencadenante Update que impide escribir valores mayores de 50 en el campo maxordamt de la tabla customer. Se usa DISPLAY DATABASE para mostrar el desencadenante Update. Luego se usa DELETE TRIGGER para quitar el desencadenante Update y vuelve a usarse DISPLAY DATABASE para comprobar si se ha eliminado dicho desencadenante.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')  && Open testdata database
USE CUSTOMER  && Open customer table
CREATE TRIGGER ON customer FOR UPDATE AS maxordamt <= 50
CLEAR
DISPLAY DATABASE
DELETE TRIGGER ON customer FOR UPDATE
DISPLAY DATABASE

Vea también

ADD TABLE | AERROR( ) | CREATE DATABASE | CREATE TRIGGER | DISPLAY DATABASE | LIST DATABASE | OPEN DATABASE


DELETE VIEW (Comando)

Elimina una vista SQL de la base de datos actual.

DELETE VIEW ViewName

Parámetros

ViewName
Especifica el nombre de la vista eliminada de la base de datos actual.

Observaciones

Utilice CREATE SQL VIEW para crear una vista SQL y agregar la vista a la base de datos actual. Si se abre una vista SQL y, a continuación, se elimina, no se cerrarán los cursores que contienen los resultados de la vista SQL.

DELETE VIEW requiere uso exclusivo de la base de datos. Para abrir una base de datos para uso exclusivo, incluya EXCLUSIVE en OPEN DATABASE.

Ejemplo

El ejemplo siguiente abre la base de datos testdata. Se usa CREATE SQL VIEW para crear una vista local SQL llamada myview. Se muestra el Diseñador de vistas, que le permite especificar tablas y condiciones para la vista SQL. Una vez guardada la vista SQL, se usa DISPLAY DATABASE para mostrar información acerca de la vista SQL. Luego se usa DELETE VIEW para eliminar la vista local SQL llamada myview.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
CREATE SQL VIEW myview
CLEAR
DISPLAY DATABASE
DELETE VIEW myview

Vea también

CREATE SQL VIEW | OPEN DATABASE


DIMENSION (Comando)

Crea una matriz de variables de una o dos dimensiones.

DIMENSION ArrayName1(nRows1 [, nColumns1]) [AS cType] [, ArrayName2(nRows2 [, nColumns2])] ...

Parámetros

ArrayName1
Especifica el nombre de la matriz. Pueden crearse múltiples matrices con un único comando DIMENSION al incluir nombres adicionales de matrices (ArrayName2, ArrayName3, etc.).
nRows1 [, nColumns1]
Especifica el tamaño de la matriz que se va a crear. Si incluye solamente nRows1, se creará una matriz de una sola dimensión. Las matrices de una dimensión tienen una columna y nRows1 filas. Por ejemplo, el comando siguiente crea una matriz de una dimensión llamada gaArrayOne que contiene una columna y diez filas.
DIMENSION gaArrayOne(10)

Para crear una matriz de dos dimensiones, incluya nRows1 y nColumns1. nRows1 especifica el número de filas de la matriz y nColumns1 indica el número de columnas. El ejemplo siguiente crea una matriz de dos dimensiones llamada gaArrayTwo que contiene dos filas y cuatro columnas:

DIMENSION gaArrayTwo(2,4)

Debe especificar un tamaño para cada matriz creada con DIMENSION. En el ejemplo siguiente se crean tres matrices: gaArrayOne y gaArrayTwo de los ejemplos anteriores, y una tercera matriz llamada gaArrayThree:

DIMENSION gaArrayOne(10), gaArrayTwo(2,4), gaArrayThree(3,3)

Para enmarcar las expresiones en DIMENSION o DECLARE puede utilizar tanto paréntesis como corchetes. Por ejemplo, los dos comandos siguientes crean matrices idénticas:

DIMENSION gaArrayOne(10), gaArrayTwo[2,4], gaArrayThree(3,3)
DIMENSION gaArrayOne[10], gaArrayTwo(2,4), gaArrayThree[3,3]
AS cType
Especifica un tipo de datos para una matriz. Usando la cláusula AS cType, puede definir y especificar un tipo de dato diferente al Variant para las matrices. La sintaxis de AS cType no aparece en IntelliSense en tiempo de diseño; es sólo para usar en tiempo de ejecución. Para un ejemplo, vea Ejemplo 4 en la sección Ejemplos.

La cláusula AS cType sólo se aplica cuando pasa una matriz a un componente COM. De otro modo, Visual FoxPro ignora la cláusula AS cType. Si especifica un tipo de dato que no es un tipo de dato COM válido, Visual FoxPro automáticamente lo convierte en el predefinido VARIANT. Los datos especificados como VARIANT sólo se pasan por referencia y no son de tipo estricto.

La siguiente tabla muestra la equivalencia de tipos COM válidos.

Tipo definido en VFP | IntelliSense Información rápida | Nombre en COM | COM Typelib | .NET tipo del sistema | XSD (SOAP) tipo
Boolean | Logical | Boolean | VARIANT_BOOL (VT_BOOL) | System.Boolean | boolean
Byte | Number | Byte | unsigned char (VT_UI1) | System.Byte
Character * | String | String | BSTR (VT_BSTR) | System.String | string
Currency * | Currency | Currency | CURRENCY (VT_CY)
Date | Date | Date | DATE (VT_DATE) | System.DateTime | dateTime
DateTime | Date | Date | DATE (VT_DATE) | System.DateTime | dateTime
Decimal * | Number | wchar_t (VT_DECIMAL) | System.UInt16
Double | Number | Double | double (VT_R8) | System.Double | double
Float | Variant | VARIANT (VT_VARIANT) | System.Object | anyType
Integer | Number | Long | long (VT_I4) | System.Int32 | int
Logical | Logical | Boolean | VARIANT_BOOL (VT_BOOL) | System.Boolean | boolean
Long | Number | Long | long (VT_I4) | System.Int32 | int
Memo | Variant | VARIANT (VT_VARIANT) | System.Object | anyType
Number | Number | Double | double (VT_R8) | System.Double | double
Object | Object | Object | IDispatch* (VT_DISPATCH) | System.Object
Short | Number | Long | long (VT_I4) | System.Int32 | int
Single * | Number | Single | single (VT_R4) | System.Single
String | String | String | BSTR (VT_BSTR) | System.String | string
Variant | Variant | VARIANT (VT_VARIANT) | System.Object | anyType
Void | VOID | Void | void (VT_VOID) | System.IntPtr
Array | Array | SAFEARRAY(type) | Type[] | Base64Binary

Observaciones

DIMENSION es idéntica en cuanto a funcionamiento y sintaxis a DECLARE.

Elementos de la matriz El tamaño de una matriz determina cuántos elementos podrá contener. Cada elemento de la matriz puede almacenar un único fragmento de información. Para determinar cuántos elementos contiene una matriz y cuánta información puede almacenar, multiplique el número de filas (nRows1) por el número de columnas (nColumns1) de la matriz.

Los elementos de la matriz pueden contener cualquier tipo de datos y se inicializan con falso (.F.) cuando se crea la matriz por primera vez. Puede inicializar todos los elementos de una matriz al mismo valor con STORE si SET COMPATIBLE es FOXPLUS u OFF (la configuración predeterminada). Por ejemplo:

DIMENSION gaArray(10,3)
STORE 'initial' TO gaArray

Subíndices de la matriz Los elementos de una matriz se referencian mediante sus subíndices. Cada elemento de la matriz tiene un subíndice numérico único que lo identifica. Si la matriz es de una dimensión, el subíndice de un elemento será igual que su número de fila. Por ejemplo, el subíndice del elemento de la tercera fila de una matriz de una dimensión es 3.

La referencia a los elementos de matrices bidimensionales se realiza por medio de dos subíndices. El primer subíndice indica la ubicación de fila del elemento y el segundo la ubicación de columna. Por ejemplo, los subíndices del elemento que está en la tercera fila y en la cuarta columna de una matriz de dos dimensiones son 3,4. Si desea obtener más información acerca de los índices de los elementos de una matriz, vea ASUBSCRIPT( ).

El subíndice o los subíndices del primer elemento de una matriz empiezan siempre con 1. Si una matriz es de dos dimensiones, podrá referenciarse también con un solo subíndice. Utilice AELEMENT( ) para devolver el subíndice único de la pareja de subíndices de fila y columna de la matriz. Utilice ASUBSCRIPT( ) para devolver los subíndices de fila y columna de un único subíndice.

Redimensionamiento de matrices Puede cambiar el tamaño y las dimensiones de una matriz al utilizar de nuevo DIMENSION. El tamaño de la matriz puede aumentarse o disminuirse; las matrices de una dimensión pueden convertirse en matrices de dos dimensiones y las matrices de dos dimensiones pueden reducirse a una dimensión.

Nota Si una matriz de dos dimensiones se redimensiona con menos filas o columnas, el número de elementos se disminuye por el número de elementos no por el número de filas o columnas. Por ejemplo, una matriz 10 x 10 redimensionada a 10 x 7 perderá todos los elementos por encima de 71. Para más información, consulte AELEMENT( ) (Función).

Si se aumenta el número de elementos de una matriz, se copiará el contenido de todos los elementos de la matriz original a la matriz que se acaba de redimensionar. El resto de los elementos de la matriz se inicializarán con el valor falso (.F.).

Cuando se aumenta o se reduce el tamaño de una matriz y SET COMPATIBLE está establecido en ON o DB4, el valor de cada elemento de la matriz se reinicializa a .F.

Matrices de tipos Puede pasar matrices de tipos por referencia o por valor. No debe especificar explícitamente objetos Visual FoxPro, como CommandButton. En su lugar utilice Object:

DIMENSION aObjects[ ] AS CommandButton   && No es admitido
DIMENSION aObjects[ ] AS Object   && Recomendado
Nota Si el servidor COM es un servidor Visual FoxPro, puede especificar un objeto Visual FoxPro válido. Sin embargo, los servidores no visuales Visual FoxPro no reconoces este tipo.

Debe utilizar COMARRAY( ) para controlar otras configuraciones sobre como pasar matrices a un servidor COM, por ejemplo, en base cero, por referencia, etcétera.

Nota Cuando pase matrices a un servidor que se ejecuta en Microsoft .NET Framework, debe llamar explícitamente COMARRAY(<object>, 10) para pasar por referencia una matriz en base cero. El código de ordenamiento para interoperar proporcionado por el .NET Framework espera una matriz por referencia pero en su lugar recibe una matriz por valor y falla.

Las matrices de tipo Single (escalar) no son admitidas por servidores COM diferentes a los servidores COM de Visual FoxPro. No puede pasar tipos Currency a servidores que ejecutan el Microsoft .NET Framework.

Cuando los servidores ejecutan el Microsoft .NET Framework devuelven tipos System.Decimal y System.UInt16, ellos se convierten a wchart_t, el cual equivale al tipo de dato Decimal de Visual FoxPro.

Ejemplos

Ejemplo 1

El siguiente ejemplo muestra el resultado de incrementar el tamaño de una matriz unidimensional.

Nota Si escribe estos comandos en la ventana de Comandos, la matriz será PUBLIC. Sin embargo, la matriz será PRIVATE si los copia en un programa y lo ejecuta.

Si el número de elementos en una matriz disminuye, los elementos y cualquier dato que ellos contengan se borran. Cuando una matriz unidimensional se redimensiona a dos dimensiones, el contenido de la matriz original unidimensional se copia a la nueva matriz en un orden elemento a fila.

DIMENSION marray(2)

STORE 'A' TO marray(1)
STORE 'B' TO marray(2)
CLEAR
DISPLAY MEMORY LIKE marray
DIMENSION marray(4)
DISPLAY MEMORY LIKE marray

WAIT WINDOW

Ejemplo 2

En el siguiente ejemplo, una matriz unidimensional se convierte a una matriz de dos dimensiones. El contenido de los elementos de la matriz unidimensional se copian a la primera fila de la nueva matriz, seguidos por la segunda fila y así sucesivamente. Los elementos adicionales se inicializan a Falso (.F.).

DIMENSION marrayone(4)

Cuando una matriz de dos dimensiones se convierte a una dimensión, el contenido de la matriz original de dos dimensiones se copia a la nueva matriz en el orden fila a elemento. El primer elemento de la primera fila se copia al primer elemento de la matriz unidimensional, el segundo elemento de la primera fila se copia al segundo elemento, etcétera.

Utilice ADEL( ) o AINS( ) para borrar o insertar en la matriz elementos, filas y columnas. Use APPEND FROM ARRAY, COPY TO ARRAY, SCATTER y GATHER para transferir datos entre registros de tabla y matrices.

DIMENSION marrayone(4)
STORE 'E' TO marrayone(1)
STORE 'F' TO marrayone(2)
STORE 'G' TO marrayone(3)
STORE 'H' TO marrayone(4)
CLEAR
DISPLAY MEMORY LIKE marrayone
DIMENSION marrayone(2,3)
DISPLAY MEMORY LIKE marrayone

WAIT WINDOW

Ejemplo 3

En el siguiente ejemplo, una matriz de dos dimensiones se crea y llena con datos. Se muestran los elementos de la matriz y los datos que ellos contienen.

DIMENSION sample(2,3)

STORE 'Adios' TO sample(1,2)
STORE 'Hola' TO sample(2,2)
STORE 99 TO sample(6)
STORE .T. TO sample(1)
CLEAR
DISPLAY MEMORY LIKE sample

Ejemplo 4

En el siguiente ejemplo, se crea una matriz en Visual FoxPro y luego se pasa por referencia a un servidor COM de Visual Basic, el cual espere un tipo estricto Long. Anteriormente, la llamada a FillIntArray podría fallar ya que aMyArray tiene tipo Variant. Sin embargo, después de incluir una definición en la clase Visual Basic que define la matriz como tipo Variant, la llamada a FillIntArray trabaja como se muestra:

* Código Visual FoxPro
DIMENSION aMyArray [10] AS Long
lo.FillIntArray(@aMyArray, 100)   && Pasar a servidor COM de Visual Basic

' Agregar el siguiente código a Visual Basic para el archivo .CLS
' y compilarlo como un componente COM
Public Sub FillIntArray(ByRef aInts() As Long, iCount As Long)
ReDim aInts(1 to 100)
Dim ii As Interger
For ii = 1 to 100
AInts(ii) = ii
Next
End Sub

Vea también

ACOPY( ) | ADEL( ) | ADIR( ) | AELEMENT( ) | AFIELDS( ) | AFONT( ) | AINS( ) | ALEN( ) | APPEND FROM ARRAY | ASCAN( ) | ASORT( ) | ASUBSCRIPT( ) | COPY TO ARRAY | DECLARE | EXTERNAL | GATHER | PRIVATE | PUBLIC | SCATTER | SET COMPATIBLE | STORE


DIR o DIRECTORY (Comando)

Muestra el contenido de un directorio del disco.

DIR | DIRECTORY [ON Drive] [[LIKE] [Path] [FileSkeleton]] [TO PRINTER [PROMPT] | TO FILE FileName]

Parámetros

ON Drive
Especifica el nombre de la unidad en la que está situado el directorio.
[LIKE] [Path] [FileSkeleton]
Especifica la ruta de acceso al directorio que contiene los archivos. La ruta de acceso puede incluir el nombre de la unidad si se omite ON Drive.

Incluya FileSkeleton para mostrar información acerca de tipos de archivos que no sean tablas. FileSkeleton es una estructura de especificación de archivos que admite caracteres comodín. Por ejemplo, para ver una lista de todos los archivos de programa del directorio actual, utilice el comando siguiente:

DIR *.PRG

En Visual FoxPro, puede usar el comando siguiente para ver una lista de todos los archivos sin extensión:

DIR *.
TO PRINTER [PROMPT]
Dirige el resultado de DIRECTORY a una impresora.

En Microsoft Visual FoxPro, puede incluir la cláusula PROMPT para mostrar un cuadro de diálogo antes de que comience la impresión. En este cuadro de diálogo, puede ajustar la configuración de la impresora, incluso el número de copias y los números de las páginas que desea imprimir. Las opciones de configuración de la impresora que puede ajustar dependen del controlador de impresora que tenga instalado actualmente. Coloque la palabra clave PROMPT justo después de TO PRINTER.

TO FILE FileName
Dirige el resultado de DIRECTORY al archivo especificado con FileName. Si el archivo ya existe y SET SAFETY está establecido en ON, el sistema le preguntará si desea sobrescribir el archivo.

Observaciones

Utilice DIR para mostrar información acerca de los archivos.

DIR sin la cláusula LIKE ni ninguna estructura muestra lo siguiente:

  • Los nombres de todas las tablas del directorio.
  • El número de registros de cada tabla.
  • La fecha en que se actualizó por última vez cada tabla.
  • El tamaño de cada tabla en bytes (las tablas con formato Microsoft FoxBASE original no tienen esa notación).
  • Si cada tabla forma parte de una base de datos.
  • El tamaño total en bytes que ocupan las tablas en el disco (sin incluir los archivos memo .fpt asociados).
  • El número de tablas mostradas.
  • El número total de bytes que quedan en el disco.

Se muestra la información de tabla de la unidad y el directorio actual a menos que se especifique lo contrario con Drive o Path.

Ejemplo

CLEAR
DIR  && Display tables in the current directory
DIR *.CDX && Display index files in the current directory
DIR A*.DBF  && Display tables that begin with A
DIR *.*  && Display all files, including those without extensions

Vea también

DISPLAY FILES | DIRECTORY( ) (Función)


DISPLAY (Comando)

Muestra información acerca de la tabla activa en la ventana principal de Visual FoxPro o en la ventana definida por el usuario.

DISPLAY [[FIELDS] FieldList] [Scope] [FOR lExpression1] [WHILE lExpression2] [OFF] [NOCONSOLE] [NOOPTIMIZE]

[TO PRINTER [PROMPT] | TO FILE FileName [ADDITIVE]]

Parámetros

FIELDS FieldList
Especifica los campos que se deben mostrar. Si omite FIELDS FieldList, se mostrarán de forma predeterminada todos los campos de la tabla.

El contenido de los campos memo no se mostrará a no ser que se incluya explícitamente el nombre del campo memo en la lista de campos. El ancho con el que se mostrarán los campos memo se determina con SET MEMOWIDTH.

Alcance
Especifica el intervalo de registros que se va a mostrar. Solamente se muestran los registros incluidos en el intervalo. Las cláusulas de alcance son: ALL, NEXT nRecords, RECORD nRecordNumber y REST. Los comandos que incluyen Scope sólo actúan sobre la tabla del área de trabajo activa.

Para obtener más información acerca de las cláusulas de alcance, vea el tema Alcance (Cláusulas).

El alcance predeterminado para DISPLAY es el registro actual (NEXT 1).

FOR lExpression1
Especifica que solamente se muestran los registros que satisfacen la condición lógica lExpression1. Esto permite filtrar los registros no deseados.

La optimización de consultas Rushmore optimiza una consulta creada con DISPLAY ... FOR si lExpression1 es una expresión optimizable. Para obtener el máximo rendimiento, utilice una expresión optimizable en la cláusula FOR.

Para más información, vea SET OPTIMIZE y Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.

WHILE lExpression2
Especifica una condición por la cual los registros se muestran siempre que la expresión lógica lExpression2 dé como resultado verdadero (.T.).
OFF
Suprime la vista del número de registro. Si omite OFF, se mostrará el número de registro antes de cada registro.
NOCONSOLE
Impide que se muestre el resultado en la ventana principal de Visual FoxPro o en la ventana activa definida por el usuario.
NOOPTIMIZE
Desactiva la optimización Rushmore de DISPLAY.

Para más información, vea SET OPTIMIZE y Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.

TO PRINTER [PROMPT]
Dirige el resultado de DISPLAY a una impresora.

En Visual FoxPro, puede incluir la cláusula opcional PROMPT para mostrar un cuadro de diálogo antes de que comience la impresión. En este cuadro de diálogo, puede ajustar la configuración de la impresora, incluidos el número de copias y los números de las páginas que desea imprimir. Las opciones de configuración de la impresora que puede ajustar dependen del controlador de impresora que tenga instalado actualmente. Coloque PROMPT justo después de TO PRINTER.

TO FILE FileName
Dirige el resultado de DISPLAY al archivo especificado con FileName. Si el archivo ya existe y SET SAFETY está establecido en ON, el sistema le preguntará si desea sobrescribir el archivo.
ADDITIVE
Agrega el resultado al final del archivo mencionado. Si omite ADDITIVE el archivo es sobrescrito con el valor de la expresión.

Observaciones

DISPLAY muestra el contenido de los registros y los resultados de las expresiones de la tabla actual. Si existe más información de la que cabe en la ventana, se presentará la primera pantalla de información y Visual FoxPro se detendrá. Presione cualquier tecla o haga clic en cualquier parte para ver la siguiente pantalla de información. DISPLAY es similar a LIST, con la diferencia de que LIST muestra la misma información con un flujo continuo y sin detenerse.

DISPLAY puede utilizarse también para mostrar los resultados de expresiones, que pueden consistir en literales, variables de memoria, elementos de matrices, campos y campos memo. Se muestran los nombres de los campos y las expresiones a menos que SET HEADINGS esté establecido en ON.

Ejemplo

El ejemplo siguiente abre la tabla customer de la base de datos testdata. Se muestra el contenido del primer registro.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer  && Opens Customer table
CLEAR
DISPLAY FIELD cust_id, company, contact OFF NEXT 10

Vea también

LIST | SET HEADINGS | SET MEMOWIDTH


DISPLAY CONNECTIONS (Comando)

Muestra información acerca de las conexiones con nombre de la base de datos actual.

DISPLAY CONNECTIONS [TO PRINTER [PROMPT] | TO FILE FileName [ADDITIVE]] [NOCONSOLE]

Parámetros

TO PRINTER [PROMPT]
Dirige el resultado de DISPLAY CONNECTIONS a una impresora.

En Visual FoxPro, puede incluir una cláusula PROMPT opcional para mostrar un cuadro de diálogo Imprimir antes de comenzar a imprimir. Coloque PROMPT justo después de TO PRINTER.

TO FILE FileName
Dirige el resultado de DISPLAY CONNECTIONS al archivo especificado con FileName. Si ya existe el archivo y SET SAFETY está establecido en ON, Visual FoxPro muestra un mensaje que pregunta si desea sobrescribir el archivo.
ADDITIVE
Agrega el resultado al final del archivo mencionado, Si omite ADDITIVE, entonces el archivo es sobrescrito con el valor de la expresión.
NOCONSOLE
Impide que se muestre el resultado en la ventana principal de Visual FoxPro o en la ventana activa definida por el usuario.

Observaciones

DISPLAY CONNECTIONS muestra los nombres de conexión, el origen de datos y la cadena de conexión de la base de datos actual. Utilice DBGETPROP( ) para devolver información adicional acerca de conexiones en la base de datos actual.

Ejemplo

El ejemplo siguiente supone que hay un origen de datos ODBC disponible llamado MyFoxSQLNT. Se abre la base de datos testdata y se crea una conexión llamada Myconn. Se utiliza DISPLAY CONNECTIONS para mostrar las conexiones con nombre de la base de datos.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')

CREATE CONNECTION Myconn DATASOURCE "MyFoxSQLNT" USERID "<userid>" PASSWORD "<password>"
CLEAR
DISPLAY CONNECTIONS     && Displays named connections in the database

Vea también

CREATE CONNECTION | DELETE CONNECTION | DBGETPROP( ) | LIST CONNECTIONS | RENAME CONNECTION


DISPLAY DATABASE (Comando)

Muestra información acerca de la base de datos actual o de campos, conexiones con nombre, tablas o vistas de la base de datos actual.

DISPLAY DATABASE [TO PRINTER [PROMPT] | TO FILE FileName [ADDITIVE]] [NOCONSOLE]

Parámetros

TO PRINTER [PROMPT]
Dirige el resultado de DISPLAY DATABASE a una impresora.

En Visual FoxPro, puede incluir una cláusula PROMPT opcional para mostrar un cuadro de diálogo Imprimir antes de comenzar a imprimir. Coloque PROMPT justo después de TO PRINTER.

TO FILE FileName
Dirige el resultado de DISPLAY DATABASE al archivo especificado con FileName. Si ya existe el archivo y SET SAFETY está establecido en ON, Visual FoxPro muestra un mensaje que pregunta si desea sobrescribir el archivo.
ADDITIVE
Agrega el resultado al final del archivo mencionado. Si se omite ADDITIVE, entonces el archivo es sobre-escrito con el valor de la expresión.
NOCONSOLE
Impide que se muestre el resultado en la ventana principal de Visual FoxPro o en la ventana activa definida por el usuario.

Observaciones

Utilice DBGETPROP( ) para devolver información adicional acerca de la base de datos actual.

Ejemplo

Este ejemplo crea una base de datos llamada people. Se crea una tabla llamada friends y se agrega automáticamente a la base de datos. Se usa DISPLAY TABLES para mostrar las tablas de la base de datos y DISPLAY DATABASES para mostrar información acerca de las tablas de la base de datos.

CREATE DATABASE people
CREATE TABLE friends (FirstName C(20), LastName C(20))
CLEAR
DISPLAY TABLES  && Displays tables in the database
DISPLAY DATABASES  && Displays table information

Vea también

LIST DATABASE | DELETE DATABASE (Comando) | DISPLAY FILES (Comando)


DISPLAY DLLS (Comando)

Muestra información acerca de funciones de biblioteca compartida registradas en Visual FoxPro con DECLARE - DLL.

DISPLAY DLLS [TO PRINTER [PROMPT] | TO FILE FileName [ADDITIVE]] [NOCONSOLE]

Parámetros

TO PRINTER [PROMPT]
Dirige el resultado de DISPLAY DLLS a una impresora.

En Visual FoxPro, puede incluir una cláusula PROMPT opcional para mostrar un cuadro de diálogo Imprimir antes de comenzar a imprimir. Coloque PROMPT justo después de TO PRINTER.

TO FILE FileName
Dirige el resultado de DISPLAY DLLS al archivo especificado con FileName. Si ya existe el archivo y SET SAFETY está establecido en ON, Visual FoxPro muestra un mensaje que pregunta si desea sobrescribir el archivo.
ADDITIVE
Agrega el resultado al final del archivo mencionado. Si se omite ADDITIVE, entonces el archivo es sobre-escrito con el valor de la expresión.
NOCONSOLE
Impide que se muestre el resultado en la ventana principal de Visual FoxPro o en la ventana activa definida por el usuario.

Vea también

DECLARE - DLL | LIST DLLS | DISPLAY FILES (Comando)


DISPLAY FILES (Comando)

Muestra información acerca de archivos.

DISPLAY FILES [ON Drive] [LIKE FileSkeleton]

[TO PRINTER [PROMPT] | TO FILE FileName [ADDITIVE]]

Parámetros

ON Drive
Especifica la unidad en la que residen los archivos.
LIKE FileSkeleton
Especifica una condición por la cual Visual FoxPro muestra solamente la información relativa a los archivos que coincidan con el patrón de estructura FileSkeleton. Este patrón puede contener caracteres comodín como ? y *.
TO PRINTER [PROMPT]
Dirige el resultado de DISPLAY FILES a una impresora.

En Visual FoxPro, puede incluir PROMPT para ver un cuadro de diálogo antes de que comience la impresión. En este cuadro de diálogo, puede ajustar la configuración de la impresora, incluidos el número de copias y los números de las páginas que desea imprimir. Las opciones de configuración de la impresora que puede ajustar dependen del controlador de impresora que tenga instalado actualmente. Coloque la palabra clave PROMPT justo después de TO PRINTER.

TO FILE FileName
Dirige el resultado de DISPLAY FILES al archivo de disco especificado con FileName. Si el archivo ya existe y SET SAFETY está establecido en ON, el sistema le preguntará si desea sobrescribir el archivo.
ADDITIVE
Agrega el resultado al final del archivo mencionado. Si se omite ADDITIVE, entonces el archivo es sobre-escrito con el valor de la expresión.

Observaciones

Utilice DISPLAY FILES para mostrar información acerca de los archivos que residen en un disco. Puede mostrar información acerca de todos los archivos de una unidad, volumen, directorio o carpeta especificados, o solamente de los archivos que coincidan con un patrón de estructura que contenga caracteres comodín como ? y *.

Al usar DISPLAY FILES sin ningún argumento se muestra información acerca de las tablas del directorio actual. La información que se muestra incluye:

  • El nombre de la tabla.
  • El número de registros de la tabla.
  • La fecha y hora de la última actualización de la tabla.
  • El tamaño de cada una de las tablas en bytes.
  • Si cada tabla forma parte de una base de datos.

Ejemplo

El ejemplo siguiente muestra los nombres de las bases de datos que hay en el directorio...\Samples\Data.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
CLEAR
DISPLAY FILES LIKE *.DBC

Vea también

DIR o DIRECTORY | LIST | DISPLAY DATABASE (Comando)


DISPLAY MEMORY (Comando)

Muestra el contenido actual de las variables y matrices.

DISPLAY MEMORY [LIKE FileSkeleton]

[TO PRINTER [PROMPT] | TO FILE FileName [ADDITIVE]] [NOCONSOLE]

Parámetros

LIKE FileSkeleton
Muestra información acerca de variables y matrices que concuerden con el diseño de la estructura FileSkeleton. Si incluye LIKE FileSkeleton, Microsoft Visual FoxPro mostrará únicamente el contenido de las variables y las matrices que cumplan con FileSkeleton. FileSkeleton admite caracteres comodín como ? y *. Por ejemplo, para mostrar todas las variables que comienzan por la letra A, ejecute:
DISPLAY MEMORY LIKE A*
TO PRINTER [PROMPT]
Dirige el resultado de DISPLAY MEMORY a una impresora.

Puede incluir la cláusula PROMPT opcional para mostrar un cuadro de diálogo antes de que comience la impresión. En este cuadro de diálogo, puede ajustar la configuración de la impresora, incluidos el número de copias y los números de las páginas que desea imprimir. Las opciones de configuración de la impresora que puede ajustar dependen del controlador de impresora que tenga instalado actualmente. Coloque la palabra clave PROMPT justo después de TO PRINTER.

TO FILE FileName
Dirige el resultado de DISPLAY MEMORY al archivo especificado con FileName. Si el archivo ya existe y SET SAFETY está establecido en ON, el sistema le preguntará si desea sobrescribir el archivo.
ADDITIVE
Agrega el resultado al final del archivo mencionado. Si se omite ADDITIVE, entonces el archivo es sobre-escrito con el valor de la expresión.
NOCONSOLE
Impide que se muestre el resultado en la ventana principal de Visual FoxPro o en la ventana activa definida por el usuario.

Observaciones

DISPLAY MEMORY muestra el nombre, tipo, contenido y estado de todas las variables y matrices de variable definidas actualmente. Además muestra el número de variables definidas, el número de bytes utilizados y el número de variables disponibles. Observe que el número de bytes utilizados representa la memoria empleada por las variables de tipo Carácter. Las variables de tipo Carácter son el único tipo de variables que requieren memoria adicional además de la asignada por el contador de variable especificado con el elemento de configuración MVCOUNT.

También se muestra información acerca de variables del sistema, menús, barras de menús, títulos de menú y ventanas.

Ejemplo

En el ejemplo siguiente se crean varias variables y se les asignan valores. DISPLAY MEMORY muestra primero todas las variables que empiezan por "sam" y luego muestra todas las que contienen cinco letras y terminan con "exit".

STORE 'Goodbye' TO sample1
STORE 'Hello' TO sample2
STORE .T. TO texit
STORE .F. TO mexit
CLEAR
DISPLAY MEMORY LIKE sam*
DISPLAY MEMORY LIKE ?exit

Vea también

DECLARE | DIMENSION | LIST | STORE


DISPLAY OBJECTS (Comando)

Muestra información acerca de un objeto o un grupo de objetos.

DISPLAY OBJECTS [LIKE cObjectSkeleton]

[TO PRINTER [PROMPT] | TO FILE FileName [ADDITIVE]] [NOCONSOLE]

Parámetros

LIKE cObjectSkeleton
Muestra información acerca de un subconjunto de objetos. cObjectSkeleton es un patrón de especificación de objetos que admite comodines (* y ?). Por ejemplo, para mostrar todos los objetos que comienzan con A, utilice el comando siguiente:
DISPLAY OBJECTS LIKE A*
TO PRINTER [PROMPT]
Dirige el resultado de DISPLAY OBJECTS a una impresora.

Puede incluir la cláusula PROMPT opcional para mostrar un cuadro de diálogo Imprimir antes de comenzar a imprimir. Coloque la palabra clave PROMPT justo después de TO PRINTER.

TO FILE FileName
Dirige el resultado de DISPLAY OBJECTS al archivo de disco especificado con FileName. Si ya existe el archivo y SET SAFETY está establecido en ON, Visual FoxPro muestra un mensaje que pregunta si desea sobrescribir el archivo.
ADDITIVE
Agrega el resultado al final del archivo mencionado. Si se omite ADDITIVE, entonces el archivo es sobre-escrito con el valor de la expresión.
NOCONSOLE
Impide que se muestre el resultado en la ventana principal de Visual FoxPro o en la ventana activa definida por el usuario.

Observaciones

DISPLAY OBJECTS muestra la información siguiente acerca de todos los objetos existentes:

  • Propiedades y sus valores
  • Métodos
  • Objetos miembro, y la clase o subclase en la que se basan
  • Clase o subclase en que se basan los objetos
  • Jerarquía de clases de los objetos

DISPLAY OBJECTS llena de información toda la ventana principal de Visual FoxPro o la ventana definida por el usuario y, a continuación, se detiene. Presione cualquier tecla o haga clic en cualquier parte para ver el siguiente conjunto de información. DISPLAY es similar a LIST, con la diferencia de que LIST muestra la misma información con un flujo continuo y sin detenerse.

Ejemplo

El ejemplo siguiente usa DEFINE CLASS y CREATEOBJECT( ) para crear dos clases personalizadas llamadas FormChild y FormGrandChild a partir de la clase de base Form de Visual FoxPro. DISPLAY OBJECTS muestra información acerca de los objetos y sus propiedades.

CLEAR
frmMyForm = CREATEOBJECT("FormGrandChild")
DISPLAY OBJECTS LIKE frm*
RELEASE frmMyForm
DEFINE CLASS FormChild AS FORM
ENDDEFINE
DEFINE CLASS FormGrandChild AS FormChild
ENDDEFINE

Vea también

LIST OBJECTS | @ ... SAY - Imágenes y objetos OLE (Comando) | DISPLAY MEMORY (Comando)


DISPLAY PROCEDURES (Comando)

Muestra los nombres de los procedimientos almacenados en la base de datos actual.

DISPLAY PROCEDURES [TO PRINTER [PROMPT] | TO FILE FileName [ADDITIVE]] [NOCONSOLE]

Parámetros

TO PRINTER [PROMPT]
Dirige la información devuelta desde DISPLAY PROCEDURES a una impresora.

Puede incluir PROMPT para mostrar un cuadro de diálogo Imprimir antes de comenzar a imprimir. Coloque la palabra clave PROMPT justo después de TO PRINTER.

TO FILE FileName
Dirige el resultado de DISPLAY PROCEDURES al archivo de disco especificado con FileName. Si ya existe el archivo y SET SAFETY está establecido en ON, Visual FoxPro muestra un mensaje que pregunta si desea sobrescribir el archivo.
ADDITIVE
Agrega el resultado al final del archivo mencionado. Si se omite ADDITIVE, entonces el archivo es sobre-escrito con el valor de la expresión.
NOCONSOLE
Impide que se muestre el resultado en la ventana principal de Visual FoxPro o en la ventana activa definida por el usuario.

Observaciones

Los procedimientos almacenados se crean con APPEND PROCEDURES, COPY PROCEDURES o MODIFY PROCEDURE.

Ejemplo

El ejemplo siguiente abre la base de datos testdata y usa DISPLAY PROCEDURES para mostrar los procedimientos almacenados (si hay alguno) de la base de datos. Si no hay procedimientos almacenados en la base de datos, puede ejecutar el ejemplo de APPEND PROCEDURES para agregar un procedimiento a la base de datos.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
CLEAR
DISPLAY PROCEDURES  && Displays stored procedures in the database

Vea también

APPEND PROCEDURES | COPY PROCEDURES | CREATE DATABASE | DISPLAY DATABASE | LIST PROCEDURES | MODIFY PROCEDURE


DISPLAY STATUS (Comando)

Muestra el estado del entorno de Visual FoxPro.

DISPLAY STATUS [TO PRINTER [PROMPT] | TO FILE FileName [ADDITIVE]] [NOCONSOLE]

Parámetros

TO PRINTER [PROMPT]
Dirige el resultado de DISPLAY STATUS a una impresora.

Puede incluir la cláusula opcional PROMPT para mostrar un cuadro de diálogo de impresión antes de comenzar a imprimir. En este cuadro de diálogo, puede ajustar la configuración de la impresora, incluidos el número de copias y los números de las páginas que desea imprimir. Las opciones de configuración de la impresora que puede ajustar dependen del controlador de impresora que tenga instalado actualmente. Coloque la palabra clave PROMPT justo después de TO PRINTER.

TO FILE FileName
Dirige el resultado de DISPLAY STATUS al archivo especificado con FileName. Si el archivo ya existe y SET SAFETY está establecido en ON, el sistema le preguntará si desea sobrescribir el archivo.
ADDITIVE
Agrega el resultado al final del archivo nombrado. Si omite ADDITIVE, entonces el archivo es sobre-escrito con el valor de la expresión.
NOCONSOLE
Impide que se muestre el resultado en la ventana principal de Visual FoxPro o en la ventana activa definida por el usuario.

Observaciones

Esta forma de DISPLAY muestra información acerca del entorno actual de Visual FoxPro. Las categorías de información y la información de cada categoría son las siguientes.

Información de tablas y archivos de índice:

  • Tablas abiertas
  • Archivos memo abiertos
  • Alias de tablas
  • Páginas de código de las tablas
  • Relaciones de tablas
  • Índices activos
  • Claves de archivos de índice
  • El archivo o la etiqueta de índice principal
  • Archivos compuestos estructurales abiertos
  • Etiquetas de índices compuestos abiertos
  • El estado del atributo compartido de cada tabla abierta
  • Los registros actualmente bloqueados de cada tabla
  • La configuración de uso de EXCLUSIVE
  • La configuración de LOCK
  • La configuración de MULTILOCKS
  • El valor de SET REFRESH
  • El valor de SET REPROCESS

Información de los archivos de bajo nivel abiertos:

  • Archivos de bajo nivel abiertos
  • El número de controlador de archivo para cada archivo de bajo nivel
  • La posición del puntero de archivo para cada archivo de bajo nivel
  • Los atributos de lectura y escritura para cada archivo de bajo nivel

Información adicional del entorno Visual FoxPro:

  • El archivo de procedimiento en uso
  • El tipo de procesador
  • La ruta de acceso de Visual FoxPro
  • El directorio predeterminado de Visual FoxPro
  • El destino de la impresora
  • La configuración de márgenes
  • El área de trabajo actual
  • La configuración de los comandos SET
  • Los módulos binarios cargados actualmente
  • Información DDE en Visual FoxPro
  • La página de códigos actual
  • La secuencia de ordenación actual
  • La página de códigos del compilador
  • El formato de datos actual
  • La combinación de teclas de la macro de teclado
  • La forma en que se transfieren los parámetros FDU
  • Las opciones de combinación de texto
  • Las funciones externas de bibliotecas (DLL).

Vea también

LIST | DISPLAY STRUCTURE (Comando) | DISPLAY PROCEDURES (Comando)


DISPLAY STRUCTURE (Comando)

Muestra la estructura de un archivo de tabla.

DISPLAY STRUCTURE [IN nWorkArea | cTableAlias]

[TO PRINTER [PROMPT] | TO FILE FileName [ADDITIVE]] [NOCONSOLE]

Parámetros

IN nWorkArea | cTableAlias
Muestra la estructura de la tabla en un área de trabajo distinta de la actual. nWorkArea especifica el número de área de trabajo y cTableAlias especifica el alias de la tabla.
TO PRINTER [PROMPT]
Dirige la salida del comando DISPLAY STRUCTURE a la impresora.

Se puede incluir la cláusula PROMPT opcional para mostrar un cuadro de diálogo antes de que comience la impresión. En este cuadro de diálogo, es posible ajustar la configuración de la impresora, incluidos el número de copias y los números de las páginas que se desea imprimir. Las opciones de configuración de la impresora que se pueden ajustar dependen del controlador de impresora instalado actualmente. La palabra clave PROMPT se coloca justo después de TO PRINTER.

TO FILE FileName
Dirige la salida del comando DISPLAY STRUCTURE al archivo especificado con el parámetro FileName. Si el archivo ya existe y SET SAFETY está ajustado en ON, se pedirá confirmación para sobrescribir el archivo.
ADDITIVE
Añade el resultado al final del archivo indicado. Si se omite ADDITIVE, el archivo completo es sobrescrito con el nuevo contenido.
NOCONSOLE
Impide que se muestre el resultado en la ventana principal de Visual FoxPro o en la ventana activa definida por el usuario.

Observaciones

Utilizar DISPLAY STRUCTURE para mostrar la estructura de campos de una tabla. El nombre de cada campo de la tabla, se muestra junto con su tipo y ancho. Si un campo es de tipo Numérico, Double, o Float, el número de posiciones decimales también es mostrado. La admisión o no de valores nulos en cada campo, también se muestra.. Las 2 últimas columnas muestran los valores de Next y Step para campos autoincrementales.

DISPLAY STRUCTURE también muestra el número de registros actuales de la tabla, y la última fecha de actualización. Si la tabla tiene un campo de tipo Memo, el tamaño de bloques de memo es mostrado. El ancho total de todos los campos se muestra, así como la página de códigos de la tabla.

La tabla puede tener un índice compuesto estructural que se abre con la tabla. Si una etiqueta de un índice compuesto estructural tiene el mismo nombre que un campo de la tabla, el orden de la etiqueta (ascendente o descendente) y la secuencia de ordenación de la etiqueta se mostrarán junto al nombre del campo.

Si se usa SET FIELDS para limitar el acceso a los campos de la tabla, aparecerá un corchete angular (>) junto a los nombres de los campos a los que se pueda tener acceso.

Ejemplo

En el ejemplo siguiente se abre la tabla customer de la base de datos testdata. Se usa DISPLAY STRUCTURE para mostrar la estructura de la tabla.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer  && Opens Customer table
CLEAR
DISPLAY STRUCTURE

Ver también

LIST | DISPLAY TABLES (Comando) | DISPLAY STATUS (Comando)


DISPLAY TABLES (Comando)

Muestra todas las tablas y la información acerca de las tablas que contiene la base de datos actual.

DISPLAY TABLES [TO PRINTER [PROMPT] | TO FILE FileName [ADDITIVE]] [NOCONSOLE]

Parámetros

TO PRINTER [PROMPT]
Dirige la información devuelta desde DISPLAY TABLES a una impresora.

Puede incluir PROMPT para mostrar un cuadro de diálogo Imprimir antes de comenzar a imprimir. Coloque la palabra clave PROMPT justo después de TO PRINTER.

TO FILE FileName
Dirige el resultado de DISPLAY TABLES al archivo de disco especificado con FileName. Si ya existe el archivo y SET SAFETY está establecido en ON, Visual FoxPro muestra un mensaje que pregunta si desea sobrescribir el archivo.
ADDITIVE
Agrega el resultado al final del archivo mencionado. Si omite ADDITIVE, entonces el archivo es sobre-escrito con el valor de la expresión.
NOCONSOLE
Impide que se muestre el resultado en la ventana principal de Visual FoxPro o en la ventana activa definida por el usuario.

Observaciones

La información devuelta es un subconjunto de la información que aparece al emplear DISPLAY STATUS. Sin embargo, la información que aparece al utilizar DISPLAY TABLES sólo contiene información relacionada con tablas y muestra la información independientemente de que las tablas estén abiertas.

Se muestra la información siguiente:

  • Nombre de la tabla
  • Ruta de acceso a la tabla

Ejemplo

El ejemplo siguiente abre la tabla customer de la base de datos testdata. Se utiliza DISPLAY TABLES para mostrar información acerca de las tablas de la base de datos.

CLOSE DATABASES
SET PATH TO (HOME(2) + 'Data\')   && Sets path to database
OPEN DATABASE testdata  && Open testdata database
CLEAR
DISPLAY TABLES  && Displays information about tables in the database

Vea también

ADD TABLE | CLOSE DATABASES | CREATE DATABASE | LIST TABLES | OPEN DATABASE | REMOVE TABLE


DISPLAY VIEWS (Comando)

Muestra información acerca de vistas SQL de la base de datos actual y si las vistas SQL se basan en tablas locales o remotas.

DISPLAY VIEWS [TO PRINTER [PROMPT] | TO FILE FileName [ADDITIVE]] [NOCONSOLE]

Parámetros

TO PRINTER [PROMPT]
Dirige la información devuelta desde DISPLAY VIEWS a una impresora.

Puede incluir PROMPT para mostrar el cuadro de diálogo Imprimir antes de comenzar a imprimir. Coloque la palabra clave PROMPT justo después de TO PRINTER.

TO FILE FileName
Dirige el resultado de DISPLAY VIEWS al archivo de disco especificado con FileName. Si ya existe el archivo y SET SAFETY está establecido en ON, Visual FoxPro muestra un mensaje que pregunta si desea sobrescribir el archivo.
ADDITIVE
Añade el resultado al final del archivo mencionado. Si omite ADDITIVE, el archivo es sobrescrito con el valor de la expresión.
NOCONSOLE
Impide que se muestre el resultado en la ventana principal de Visual FoxPro o en la ventana activa definida por el usuario.

Observaciones

Utilice DBGETPROP( ) para devolver información adicional acerca de vistas SQL de la base de datos actual.

Las vistas SQL se crean con CREATE SQL VIEW.

Ejemplo

El ejemplo siguiente abre la base de datos testdata. CREATE SQL VIEW es utilizado para crear una vista local SQL llamada myview. Se muestra el Diseñador de vistas, que le permite especificar tablas y condiciones para la vista SQL. Una vez guardada la vista SQL que ha creado, se muestra información acerca de las vistas SQL de la base de datos.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
CREATE SQL VIEW myview
CLEAR
DISPLAY VIEWS

Vea también

CREATE DATABASE | CREATE SQL VIEW | DBGETPROP( ) | DISPLAY DATABASE | LIST VIEWS


DO CASE ... ENDCASE (Comando)

Ejecuta el primer conjunto de comandos cuya expresión condicional de como resultado verdadero (.T.).

DO CASE
 CASE lExpression1 Commands
[Commands]
[CASE lExpression2
[Commands]] ...

[CASE lExpressionN
[Commands]]
[OTHERWISE
[Commands]] ENDCASE

Parámetros

CASE lExpression1 Commands ...
Cuando se encuentre la primera expresión CASE con el valor verdadero (.T.), se ejecutará el conjunto de comandos que haya a continuación. La ejecución del conjunto de comandos continuará hasta encontrar la siguiente expresión CASE o ENDCASE. La ejecución se reanuda en el comando que hay inmediatamente a continuación de ENDCASE.

Si una expresión CASE tiene el valor falso (.F.), se pasará por alto el conjunto de comandos que le siguen hasta la siguiente cláusula CASE.

Sólo se ejecuta un conjunto de comandos. Se trata de los primeros comandos cuya expresión CASE se evalúe con el resultado verdadero (.T.). Se pasan por alto todas las expresiones CASE posteriores que tengan el valor verdadero (.T.).

OTHERWISE Commands
Si todas las expresiones CASE dan como resultado falso (.F.), OTHERWISE determinará si se ejecuta otro conjunto de comandos adicional.
  • Si incluye OTHERWISE, se ejecutará el conjunto de comandos que sigue a OTHERWISE y la ejecución saltará al primer comando que hay a continuación de ENDCASE.
  • Si omite OTHERWISE, la ejecución saltará al primer comando que hay a continuación de ENDCASE.

Observaciones

DO CASE se utiliza para ejecutar un conjunto de comandos de Visual FoxPro según el valor de una expresión lógica. Cuando se ejecuta DO CASE, se evalúan cada una de las expresiones lógicas sucesivas; los valores de las expresiones determinan el conjunto de comandos que se ejecuta.

Se admiten observaciones después de DO CASE y ENDCASE, si se incluyen en la misma línea. Estos observaciones se pasan por alto durante la compilación y ejecución del programa.

Ejemplo

En este ejemplo Visual FoxPro evalúa cada cláusula CASE hasta que se encuentra la variable MONTH en una de las listas. La cadena apropiada se almacena en la variable rpt_title y se sale de la estructura DO CASE.

STORE CMONTH(DATE( )) TO month  && El mes actual
DO CASE  && Empieza el bucle
CASE INLIST(month,'Enero','Febrero','Marzo')
STORE 'Ingresos del primer trimestre' TO rpt_title
CASE INLIST(month,'Abril','Mayo','Junio')
STORE 'Ingresos del segundo trimestre' TO rpt_title
CASE INLIST(month,'Julio','Agosto','Septiembre')
STORE 'Ingresos del tercer trimestre' TO rpt_title
OTHERWISE
STORE 'Ingresos del cuarto trimestre' TO rpt_title
ENDCASE  && Termina el bucle
WAIT WINDOW rpt_title NOWAIT

Vea también

DO WHILE ... ENDDO | EXIT | FOR EACH ... ENDFOR | FOR ... ENDFOR | IF ... ENDIF | IIF( ) | SCAN ... ENDSCAN


DO (Comando)

Ejecuta un programa o un procedimiento de Visual FoxPro. Un archivo de programa también puede contener comandos DO adicionales, haciendo posible que anide comandos DO hasta 128 niveles.

DO ProgramName1 | ProcedureName [IN ProgramName2] [WITH ParameterList]

Parámetros

ProgramName1
Especifica el nombre del programa que se va a ejecutar.

Si no incluye ninguna extensión con el nombre del programa que se va a ejecutar, Visual FoxPro buscará y ejecutará las versiones del programa en el siguiente orden:

  • .exe (la versión ejecutable)
  • .app (una aplicación)
  • .fxp (la versión compilada)
  • .prg (el programa)

Para utilizar DO de forma que pueda ejecutar un determinado programa de menú, programa de formulario o consulta, deberá incluir su extensión (.mpr, .spr o .qpr).

ProcedureName
Especifica el nombre de un procedimiento que se va a ejecutar. Visual FoxPro buscará el procedimiento primero en el programa que se está ejecutando en este momento. Si el procedimiento no está allí, lo buscará en los archivos de procedimientos abiertos con SET PROCEDURE.

Puede incluir la cláusula IN ProgramName2 para indicar a Visual FoxPro que busque el procedimiento en el archivo especificado.

Es posible que múltiples procedimientos de una versión ejecutable (.exe) o de una aplicación (.app) tengan el mismo nombre. Cuando utilice DO para iniciar un procedimiento en una versión ejecutable o en una aplicación, Visual FoxPro solamente buscará el procedimiento indicado en el programa principal de la versión ejecutable o de la aplicación.

IN ProgramName2
Ejecuta un procedimiento del archivo de programa especificado con ProgramName2.

Cuando se localiza el archivo, se ejecuta el procedimiento. Si el archivo de programa no se encuentra, aparecerá el mensaje "El archivo no existe". Si se encuentra el archivo de programa pero no se encuentra el procedimiento especificado en el archivo de programa, aparecerá el mensaje "Procedimiento no encontrado".

WITH ParameterList
Especifica los parámetros que se desean transferir al programa o procedimiento. Los parámetros indicados en ParameterList pueden ser expresiones, variables de memoria, literales, campos o funciones definidas por el usuario. De forma predeterminada, los parámetros se transfieren a los programas por referencia. Puede transferir un parámetro por valor si lo escribe entre paréntesis.

Vea SET UDFPARMS para obtener una explicación de la transferencia de parámetros por valor o por referencia. El número máximo de parámetros que puede transferir a un programa o procedimiento es 26. Para obtener más información acerca de la transferencia de parámetros, vea LPARAMETERS y PARAMETERS.

Observaciones

Cuando utilice DO para ejecutar un programa, los comandos contenidos en el archivo de programa se ejecuta hasta que ocurra uno de los siguientes:

  • Se encuentra un RETURN.
  • Se ejecuta CANCEL.
  • Se ejecuta otro DO.
  • Se alcanza el final del archivo.
  • Se ejecuta QUIT.

Cuando termina la ejecución de un programa, se devuelve el control a uno de los siguientes:

  • Programa que llamó el DO
  • Ventana Comandos
  • Sistema Operativo

Si elige la opción Ejecutar del menú Programa y ejecuta un programa en un directorio o una ruta de acceso distintos del directorio o la ruta de acceso actuales, Visual FoxPro cambiará automáticamente el directorio y la unidad predeterminados al directorio y la unidad que contienen el programa.

También puede modificar como una aplicación busca datos y recursos como funciones, procedimientos, archivos ejecutables, etcétera utilizando SYS(2450) - Orden de búsqueda de la ruta de la aplicación.

Vea también

CLEAR | LPARAMETERS | PARAMETERS | PARAMETERS( ) | PRIVATE | PROCEDURE | PUBLIC | SET DEFAULT | SET DEVELOPMENT | SET PATH | SET PROCEDURE


DO FORM (Comando)

Ejecuta un formulario o un conjunto de formularios compilado que se ha creado con el Diseñador de formularios.

DO FORM FormName | ? [NAME VarName [LINKED]] [WITH cParameterList] [TO VarName] [NOREAD] [NOSHOW]

Parámetros

FormName
Especifica el nombre del formulario o conjunto de formularios que se van a ejecutar.
?
Muestra el cuadro de diálogo Ejecutar, en el que podrá elegir un formulario o un conjunto de formularios para ejecutar.
NAME VarName [LINKED]
Especifica una variable o un elemento de matriz con el que puede hacer referencia al formulario o al conjunto de formularios. Si especifica una variable que no existe, Microsoft Visual FoxPro la crea automáticamente. Si especifica un elemento de matriz, la matriz debe existir antes de que ejecute DO FORM. Si ya existe la variable o el elemento de matriz que especifica, se sobrescribe su contenido.

Si omite la cláusula NAME, Visual FoxPro crea una variable de tipo Object con el mismo nombre que el archivo del formulario o el conjunto de formularios.

Incluya LINKED para vincular el formulario a la variable asociada a él, de forma que se libere el formulario cuando la variable esté fuera de alcance. Si no incluye LINKED, un formulario podrá seguir activo, incluso si no tiene ninguna variable de objeto asociada a él.

WITH cParameterList
Especifica los parámetros que se transfieren al formulario o al conjunto de formularios.

Si se ejecuta un conjunto de formularios, los parámetros se transfieren al método Init del conjunto de formularios si la propiedad WindowType del conjunto de formularios está establecida como Sin modo (0) o Modal (1). Los parámetros se transfieren al método Load si la propiedad WindowType del conjunto de formularios está establecida como Read (2) o ReadModal (3).

TO VarName
Especifica una variable para contener un valor devuelto del formulario. Si la variable no existe, Visual FoxPro la crea automáticamente. Utilice el comando RETURN en el procedimiento de evento Unload del formulario para especificar el valor devuelto. Si no incluye un valor de retorno, se devolverá el valor predeterminado de verdadero (.T.). Para poder usar TO, la propiedad WindowType del formulario debe estar establecida como 1 (Modal). Si el evento Init del formulario devuelve .F., impidiendo el formulario de ser instanciado, el evento Unload no devolverá un valor a VarName.
NOREAD
Especifica que se crea y muestra el conjunto de formularios, pero los controles no se activan hasta que se ejecuta READ. NOREAD se pasa por alto si la propiedad WindowType del objeto FormSet no está establecida como 2 (Lectura).
NOSHOW
Especifica que no se llame al método Show del formulario cuando se esté ejecutando el formulario. Al incluir NOSHOW y ejecutar el formulario, el formulario no estará visible hasta que se establezca en verdadero (.T.) la propiedad Visible del formulario o hasta que se llame al método Show del formulario.

Observaciones

DO FORM ejecuta el método Show para el formulario o el conjunto de formularios.

Las configuraciones Read (2) y ReadModal (3) de la propiedad WindowType se incluyen por razones de compatibilidad con versiones anteriores y sólo están disponibles para aquellos formularios convertidos desde versiones anteriores de FoxPro.

Ejemplo

El ejemplo siguiente ejecuta el ejemplo de control de cronómetro (Swatch.scx).

DO FORM (HOME(2) + 'Solution\Controls\Timer\Swatch.scx')

Vea también

COMPILE FORM | CREATE FORM | MODIFY FORM


DO WHILE ... ENDDO (Comando)

Ejecuta un conjunto de comandos dentro de un bucle condicional.

DO WHILE lExpression
Commands
[LOOP] [EXIT] ENDDO

Parámetros

lExpression
Especifica una expresión lógica cuyo valor determina si se debe ejecutar el conjunto de comandos incluido entre DO WHILE y ENDDO. Siempre que lExpression dé como resultado verdadero (.T.), el conjunto de comandos se ejecutará.
Commands
Especifica el conjunto de comandos de Visual FoxPro que se ejecutan siempre y cuando lExpression dé como resultado verdadero (.T.).
LOOP
Devuelve el control del programa directamente a DO WHILE. LOOP se puede situar en cualquier lugar entre DO WHILE y ENDDO.
EXIT
Transfiere el control del programa desde el interior del bucle DO WHILE hasta el primer comando situado detrás de ENDDO. EXIT puede situarse en cualquier lugar entre DO WHILE y ENDDO.

Observaciones

Un conjunto de comandos situados entre DO WHILE y ENDDO se ejecuta siempre y cuando el valor de la expresión lógica lExpression sea verdadero (.T.). Una instrucción DO WHILE debe tener su correspondiente instrucción ENDDO.

Puede situar observaciones después de DO WHILE y ENDDO en la misma línea. Estos observaciones se pasan por alto durante la compilación y ejecución del programa.

Ejemplo

En el ejemplo siguiente se calcula el número total de productos en existencias cuyo precio supera los 20 dólares en el bucle DO WHILE hasta llegar al final del archivo (EOF). Se sale del bucle DO WHILE y se muestra el total.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE products  && Opens Products table
SET TALK OFF
gnStockTot = 0
DO WHILE .T.  && Begins loop
IF EOF( )
EXIT
ENDIF
IF unit_price < 20
SKIP
LOOP
ENDIF
gnStockTot = gnStockTot + in_stock
SKIP
ENDDO     && Ends loop
CLEAR
? 'Total items in stock valued over 20 dollars:'
?? gnStockTot

Vea también

DO CASE ... ENDCASE | FOR EACH ... ENDFOR | FOR ... ENDFOR | IF ... ENDIF | IIF( ) | SCAN ... ENDSCAN


DOCK WINDOW (Comando)

Acopla una herramienta o barra de herramientas del Entorno de programación interactivo (IDE) al escritorio de Visual FoxPro u otra ventana del IDE.

Al eliminar o modificar el archivo de recursos, que contiene la configuración del usuario, se restaura la configuración predeterminada de la ventana.

DOCK WINDOW NombreVentana POSITION nPosicion [ WINDOW NombreVentana ]

-o-

DOCK WINDOW NombreVentana WINDOW NombreVentana

Parámetros

NombreVentana
Especifica el nombre de la ventana a acoplar.
POSITION nPosicion
Especifica la posición de acoplamiento de la ventana. La siguiente tabla lista los posibles valores para nPosicion. Si nPosition se establece en 4, la ventana se acopla con fichas, por ejemplo, aparece como una ventana con fichas. Si nPosicion esta entre 0 y 3, la ventana se acopla con vínculo, por ejemplo, aparece unida al lado de otra ventana.
nPosicion | Posición de Acoplamiento
-3 | Desacoplada dentro del contenedor
-2 | Desacoplada fuera del contenedor
-1 | Ventana Desacoplada
0 | Arriba
1 | Izquierda
2 | Derecha
3 | Abajo
4 | Con fichas
WINDOW NombreVentana
Especifica el nombre de la ventana o barra de herramientas destino con la cual acoplarse. Si omite este parámetro, la ventana se acopla al escritorio de Microsoft Visual FoxPro.

Observaciones

En versiones anteriores de Visual FoxPro, la ventana Sesión de Datos ha sido siempre referenciada como la ventana View. Además, los comandos usados para controlar esta ventana, como HIDE WINDOW, ACTIVATE WINDOW, WONTOP( ), también hacen referencia a esta ventana como la ventana View. Visual FoxPro continúa referenciando a la ventana View con el comando DOCK WINDOW.

Las siguientes ventanas y barras de herramientas del IDE están soportadas por DOCK WINDOW:

  • Todas las barras de herramientas del sistema
  • Pila de llamadas
  • Comandos
  • Sesión de Datos (View)
  • Vista de documento
  • Locales
  • Salida
  • Propiedades
  • Seguimiento
  • Inspección

La ventana especificada debe existir en el escritorio de Visual FoxPro. De otro modo, ocurrirá un error..

Si emplea DOCK WINDOW...WINDOW sin incluir la cláusula POSITION, DOCK WINDOW utiliza la posición acoplamiento con fichas como predeterminada.

DOCK WINDOW siempre fuerza la ventana, si es que existe, a acoplable y cambia el valor de su propiedad Visible a Verdadero (.T.).

Dentro del marco del depurador, el acoplamiento con fichas y vinculado no están soportados para las ventanas del mismo. Puede controlar las propiedades del marco en el cuadro de diálogo Opciones.

Las barras de herramientas no soportan el acoplamiento vinculado o con fichas. Puede acoplar las barras de herramientas sólo al escritorio. Ninguna otra ventana puede ser acoplada a una barra de herramientas. Visual FoxPro no tiene en cuenta la palabra reservada WINDOW para las barras de herramientas. Para obtener más información sobre el acoplamiento vinculado y con fichas, vea Acoplar ventanas.

Tanto las barras de herramientas del sistema y las definidas por el usuarios están soportadas por DOCK WINDOW. La propiedad Caption de la barra de herramientas definida por el usuario puede ser usada como su nombre.

Puede utilizar la cláusula WINDOW para el acoplamiento con fichas y vinculado. Puede acoplar el contenedor completo con fichas o vinculado al escritorio de Visual FoxPro llamando a DOCK WINDOW con cualquiera de las ventanas del contenedor y omitiendo la cláusula WINDOW. Si quiere acoplar una sola ventana que esta dentro del contenedor vinculado o con fichas a la ventana principal de Visual FoxPro, primero debe desacoplarla del contenedor, por ejemplo utilizando POSITION -1 o WDOCKABLE(, .F. ).

Cuando especifique un valor de -1 para POSITION, no puede incluir la cláusula WINDOW. De otro modo, ocure un error de sintaxis. Por ejemplo, lo siguiente no esta permitido:

DOCK WINDOW Command POSITION -1 WINDOW Properties

Si utiliza un valor de 4 para POSITION, debe especificar una cláusula WINDOW. De otro modo, ocurre un error.

Si utiliza una ventana no acoplable como el destino del acoplamiento, Visual FoxPro genera el siguiente mensaje "El valor del argumento, tipo o contador de la Función es inválido (Error 11)". Por ejemplo:

DOCK WINDOW Command WINDOW Standard   && Genera un error.

Si especifica una ventana no acoplable como la ventana a ser acoplada, ésta se convierte en acoplable internamente. Por ejemplo:

WDOCKABLE("Command", .F.)
DOCK WINDOW Command
? WDOCKABLE("Command")  && Devuelve .T.

Puede acoplar varias ventanas que estan acopladas como un grupo a otra ventana especificando una de las ventanas acopladas. Sin embargo, si el destino donde acoplar existe en el mismo contenedor que la ventana especificada, sólo se acoplará esa ventana. Esto previene relaciones cíclicas. Por ejemplo, el siguiente código acopla nuevamente la ventana Comandos al lado derecho de la ventana Propiedades:

DOCK WINDOW Command POSITION 4 WINDOW Properties
DOCK WINDOW Command POSITION 2 WINDOW Properties

Compare este ejemplo al siguiente código, que acopla las ventanas Comandos y Ver al la ventana propiedades como ventanas con fichas:

DOCK WINDOW Command POSITION 4 WINDOW View
DOCK WINDOW Command POSITION 4 WINDOW Properties

Si un contenedor (conjunto de ventanas con fichas o vinculadas) esta acoplado, puede desacoplar el contenedor si especifica un valor de -2 o -3 para cualquiera de las ventanas en el contenedor, de acuerdo con las siguientes condiciones:

  • Si pasa un valor de -2, todo el contenedor es desacoplado si es que está acoplado al escritorio de Visual FoxPro.
  • Si pasa un valor de -3, solo se desacopla el contenedor interno que es parte de otro contenedor mayor. Esto se aplica sólo para contenedores acoplados con fichas unidas dentro contenedores acoplados con vínculo. Si la ventana especificada no es parte de un contenedor interno acoplado con fichas, Visual FoxPro trata el valor -3 como un -2 y descopla el contenedor externo.
  • Si la ventana especificada no es parte de un contenedor, Visual FoxPro la desacopla como si se le pasara un valor -1.
  • Si la ventana o contenedor esta desacoplada, Visual FoxPro no realiza ninguna acción.

Ejemplo

El siguiente ejemplo muestra cómo utilizar el comando DOCK WINDOW para acoplar la ventana Comandos al escritorio de Visual FoxPro y el empleo de ADOCKSTATE( ) para obtener el estado de acoplamiento de la ventana Comandos. Primero, cerciórese de que la ventana Comandos esté visible. Después de acoplar la ventana Comandos, puede ver que la barra de herramientas Estándar y la ventana Comandos están acopladas al ecritorio de Microsoft Visual FoxPro. La posición de las barrsa de herramientas o ventanas en la matriz devuelta por ADOCKSTATE( ), puede variar de acuerdo al orden en el que fueron acoplados.

CLEAR
DOCK WINDOW Command POSITION 0
dockNum = ADOCKSTATE(dockState)
? dockNum   && devuelve 2 solo si la ventana Command y
&&  la barra de herramientas Standard existen.
? dockState(1)  && devuelve "Standard".
? dockState(4)  && devuelve "Microsoft Visual FoxPro".
? dockState(5)  && devuelve "COMMAND".
? dockState(8)  && devuelve "Microsoft Visual FoxPro".

Vea también

Comandos | ADOCKSTATE( ) (Función) | WDOCKABLE( ) (Función) | Dock (Método) | DockPosition (Propiedad)


DOEVENTS (Comando)

Ejecuta todos los eventos pendientes de Windows.

Nota No se podrá llamar a DOEVENTS utilizando paréntesis (()), por ejemplo, DOEVENTS( ).

Puede utilizar DOEVENTS para tareas sencillas, como es permitir al usuario cancelar un proceso después que ha comenzado; por ejemplo, buscar un archivo. Procesos de ejecución muy larga, que requieren del control del procesador, deben ser ejecutados con el control Timer o delegar la tarea a un componente ActiveX ejecutable (.exe). En este último caso, la tarea puede continuar independientemente de su aplicación, y el sistema operativo administrará la asignación de tiempo y multitareas.

Precaución En cualquier momento que requiera del control del procesador para un procedimiento de evento, asegúrese que el procedimiento no comienza nuevamente desde diferentes lugares del código, antes que la primera llamada haya terminado. Esto podría traer resultados impredecibles. Tampoco utilice DOEVENTS en otras aplicaciones que pueden interactuar con su proceso de forma imprevista durante el tiempo que requiera el control del procesador.
DOEVENTS [FORCE]

Parámetros

FORCE
Detiene la ejecución del código de Visual FoxPro hasta que ocurra un evento de Windows, como por ejemplo el movimiento del ratón.
Nota Utilizar la palabra clave FORCE puede impactar en el rendimiento. Por consiguiente, sea precavido al utilizar DOEVENTS FORCE en una repetición apretada, como por ejemplo, un DO WHILE .

Observaciones

Cuando la propiedad AutoYield está establecida en Falso (.F.) y el código del programa se está ejecutando, los eventos de Windows se colocan en la cola de procesos. DOEVENTS ejecuta todos los eventos pendientes de Windows y procesa cualquier código de usuario asociado con los eventos de Windows. Si no hay eventos en la cola, Visual FoxPro ignora DOEVENTS y continúa la ejecución del programa.

Vea también

AutoYield (Propiedad) | Eventos

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


DROP TABLE (Comando)

Quita una tabla de la base de datos actual y la elimina del disco.

DROP TABLE TableName | FileName | ? [RECYCLE]

Valores de la propiedad

TableName
Especifica la tabla que se va a quitar de la base de datos actual y que se va a eliminar del disco.
FileName
Especifica una tabla libre para borrarla del disco.
?
Muestra el cuadro de diálogo Quitar, en el que podrá elegir una tabla para quitarla de la base de datos actual y eliminarla del disco.
RECYCLE
Especifica que la tabla no se eliminará inmediatamente del disco y que se colocará en la Papelera de reciclaje de Microsoft Windows.

Observaciones

Cuando se ejecuta DROP TABLE, todos los índices principales, los valores predeterminados, y las reglas de validación asociados con la tabla también se quitarán. DROP TABLE también afecta a otras tablas en la base de datos actual si dichas tablas tienen reglas o relaciones asociadas con la tabla que se va a quitar. Las reglas y relaciones dejarán de ser válidas cuando se quite la tabla de la base de datos.

Las tablas eliminadas con este comando no se podrán recuperar. Incluso si SET SAFETY está establecida en ON, no se le advertirá antes de eliminar la tabla.

Vea también

ADD TABLE | CLOSE DATABASES | CREATE DATABASE | FREE TABLE | OPEN DATABASE | OPEN DATABASE


DROP VIEW (Comando)

Elimina una vista SQL de la base de datos actual.

DROP VIEW ViewName

Valores de la propiedad

ViewName
Especifica el nombre de la vista eliminada de la base de datos actual.

Observaciones

DROP VIEW es idéntico a DELETE VIEW; DROP VIEW es la sintaxis estándar SQL de ANSI para eliminar una vista SQL.

Utilice CREATE SQL VIEW para crear una vista SQL y agregar la vista a la base de datos actual. Si se abre una vista SQL y, a continuación, se elimina, no se cerrarán los cursores que contienen los resultados de la vista SQL.

Vea también

CREATE SQL VIEW | DELETE VIEW | OPEN DATABASE


EDIT (Comando)

Muestra campos para edición.

EDIT [FIELDS FieldList] [Scope] [FOR lExpression1] [WHILE lExpression2] [FONT cFontName[, nFontSize]] [STYLE cFontStyle] [FREEZE FieldName] [KEY eExpression1[, eExpression2]] [LAST | NOINIT] [LPARTITION] [NAME ObjectName] [NOAPPEND] [NOCAPTION] [NODELETE] [NOEDIT | NOMODIFY] [NOLINK] [NOMENU] [NOOPTIMIZE] [NORMAL] [NOWAIT] [PARTITION nColumnNumber [LEDIT] [REDIT]] [PREFERENCE PreferenceName] [REST] [SAVE] [TIMEOUT nSeconds] [TITLE cTitleText] [VALID [:F] lExpression3 [ERROR cMessageText]] [WHEN lExpression4] [WIDTH nFieldWidth] [WINDOW WindowName1] [IN [WINDOW] WindowName2 | IN SCREEN [COLOR SCHEME nSchemeNumber]

Parámetros

FIELDS FieldList
Especifica los campos que aparecen en la ventana Modificar. Los campos se muestran en el orden especificado en FieldList. En la lista de campos puede incluir campos de otras tablas relacionadas. Cuando incluya un campo de una tabla relacionada, incluya delante del nombre de campo su alias de tabla y un punto.

Si omite FIELDS, se muestran todos los campos de la tabla en el orden en el que aparecen dentro de la estructura de la tabla.

La lista de campos puede especificar cualquier combinación de campos o campos calculados, incluyendo los pertenecientes a tablas abiertas en otras áreas de trabajo. La sintaxis de la lista de campos es la siguiente:

FieldName1
[:R]
[:nColumnWidth]
[:V = lExpression1 [:F] [:E = cMessageText]]
[:P = cFormatCodes]
[:B = eLowerBound, eUpperBound [:F]]
[:H = cHeadingText]
[:W = lExpression2]
[, FieldName2 [:R]...]

Campos Calculados

La lista de campos puede contener instrucciones para crear campos calculados. Un campo calculado contiene datos de sólo lectura creados con una expresión. Esta expresión puede tomar cualquier formato, pero siempre debe ser una expresión válida de Visual FoxPro.

La sintaxis de la instrucción utilizada para crear un campo calculado es:

CalculatedFieldName = eExpression

Este ejemplo crea un campo calculado denominado location:

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer  && Open customer table
EDIT FIELDS location = ALLTRIM(city) + ', ' + country

La lista de campos de la cláusula FIELDS incluye ocho opciones, que permiten la manipulación especial de los campos mostrados en la ventana Modificar.

:nColumnWidth
Especifica el tamaño de presentación de un campo en las columnas. El valor de :nColumnWidth no afecta al tamaño del campo de la tabla; sólo cambia la forma en que el campo aparece en la ventana Modificar.
:R
En el ejemplo siguiente se abre una ventana Modificar con los campos cust_id y company. El campo cust_id es de sólo lectura y no puede cambiarse.
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer  && Open customer table
EDIT FIELDS cust_id:R, company
:V = lExpression1
Especifica una opción de verificación que realiza la validación de datos a nivel de campo dentro de la ventana Modificar. Si lExpression1 se evalúa con el resultado verdadero (.T.) cuando mueve el cursor fuera del campo, los datos introducidos en el campo se consideran correctos y el cursor se mueve al campo siguiente.

Si lExpression1 se evalúa con el resultado falso (.F.), los datos introducidos se consideran incorrectos, el cursor permanece dentro del campo y se activa un error de excepción. Si lExpression1 se evalúa como 0, los datos introducidos se consideran incorrectos y el cursor permanece en el campo, pero no se muestra ningún mensaje de error.

De forma predeterminada, lExpression1 sólo se evalúa cuando se modifica el campo. Para forzar la comprobación, incluya la opción :F.

Puede presentar su propio mensaje de error incluyendo la opción :E.

La opción de verificación no se ejecuta para los campos memo.

:F
Especifica una opción de validación obligada que determina si la expresión de la opción de verificación(lExpression1) se debe evaluar al mover el cursor fuera del campo o cuando se activa otra ventana. Si no se incluye :F, lExpression1 sólo se evaluará si se hace algún cambio en el campo. Si :F está incluida, lExpression1 se evalúa aunque no se haya modificado el campo.
:E = cMessageText
Muestra un mensaje de error especificado con cMessageText en lugar del mensaje predeterminado del sistema.

Si la expresión de validación :V = lExpression1 se evalúa con el resultado verdadero (.T.), el cursor sale del campo con normalidad. Si la expresión se evalúa con el resultado falso (.F.), el cursor permanece en el campo y aparece el mensaje de error.

Si la expresión de validación :V = lExpression1 se evalúa como 0, no se muestra ningún mensaje y el cursor permanece en el campo que se esté validando. Esto le permite mostrar sus propios mensajes de error en las rutinas de validación.

El mensaje de error solamente se muestra si SET NOTIFY está ON. Si SET BELL está establecido en ON, sonará un aviso acústico.

El ejemplo siguiente abre la tabla products y muestra los campos product_id y prod_name. Introduzca un valor superior a 100 en el campo product_id para realizar la validación de campo.

:V especifica el criterio de validación. :F fuerza que se ejecute la validación tanto si se cambian los datos como si no. :E reemplaza el mensaje de error del sistema de Visual FoxPro por un mensaje de error definido por el usuario.

En Visual FoxPro y en FoxPro para Windows, el mensaje de error se muestra en la barra de estado situada en la parte inferior de la ventana principal de Visual FoxPro.

Presione ESC para cerrar la ventana Modificar.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE products  && Open products table
IF _WINDOWS OR _MAC
SET STATUS BAR ON
ENDIF
USE products
EDIT FIELDS in_stock :V = in_stock < 100 ;
:F ;
:E = 'The stock amount must be less than 100'
:P = cFormatCodes
Especifica una opción de imagen que le permite crear una plantilla de edición especificada con cFormatCodes que controle la visualización y salida de los datos para cada campo de una ventana Modificar.

Para obtener más información acerca del uso de códigos de edición de imagen, vea las propiedades Format e InputMask.

El ejemplo siguiente utiliza la opción de imagen para permitir únicamente datos numéricos con un determinado formato en el campo unit_price:

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE products  && Open products table
EDIT FIELDS unit_price :P = '99,999.99'
:B = eLowerBound, eUpperBound [:F]
Especifica los límites entre los que deben encontrarse los datos. Las expresiones de límite eLowerBound y eUpperBound deben coincidir con el tipo de datos del campo y no pueden ser nombres de funciones definidas por el usuario. Si los datos introducidos no están incluidos entre eLowerBound y eUpperBound, se muestra un mensaje del sistema indicando el intervalo de datos que se acepta.

De forma predeterminada, se comprueba que los datos escritos quedan dentro de los límites sólo si se hacen cambios en el contenido del campo. Para forzar la comprobación, incluya la opción de forzar validación (:F).

El siguiente ejemplo se asegura que el valor del campo in_stock esté entre 1 y 100. Presione ESC para cerrar la ventana Modificar.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE products  && Open products table
EDIT FIELDS in_stock :B = 1, 100 :F
:H = cHeadingText
Especifica una opción de encabezado (:H) que le permite sustituir los nombres predeterminados de los campos por sus propios encabezados, que se especifican con cHeadingText. De forma predeterminada, los nombres de campos se sitúan a la izquierda de los campos de la ventana Modificar.

El ejemplo siguiente proporciona encabezados definidos por el usuario para los campos mostrados.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE products  && Open products table
EDIT FIELDS prod_name :H = 'Product Name:', ;
unit_price :H = 'Price per Unit:'
:W = lExpression2
Especifica una opción WHEN que le permite prohibir condicionalmente que el cursor se mueva a un campo basándose en el valor de la expresión lógica lExpression. (:W) evalúa lExpression. Si lExpression2 se evalúa con el resultado falso (.F.), no es posible mover el cursor al campo. Si lExpression2 se evalúa con el resultado verdadero (.T.), es posible mover el cursor al campo. En lExpression2 es posible utilizar funciones definidas por el usuario.

Si el campo actual está marcado como de sólo lectura, se prohíbe el movimiento del cursor a todos los campos. Esto ocurre sólo cuando todos los campos contienen una cláusula WHEN que da como resultado falso.

Scope
Especifica un intervalo de registros que se presentan en la ventana Modificar. Las cláusulas de alcance son: ALL, NEXT nRecords, RECORD nRecordNumber y REST. Los comandos que incluyen Scope sólo actúan sobre la tabla del área de trabajo activa. El alcance predeterminado para EDIT es ALL, es decir todos los registros.

Para obtener más información, vea Alcance (Cláusulas)

FOR lExpression1
Especifica que solamente se muestran en la ventana Modificar los registros que satisfacen la condición lógica lExpression1. Este argumento le permite filtrar los registros no deseados.

Rushmore optimiza una consulta EDIT FOR si lExpression1 es una expresión optimizable. Para obtener el máximo rendimiento, utilice una expresión optimizable en la cláusula FOR.

Si desea obtener más información, vea SET OPTIMIZE y Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.

WHILE lExpression2
Especifica una condición por la cual los registros se muestran en la ventana Modificar mientras la expresión lógica lExpression2 se evalúe con el resultado verdadero (.T.).
FONT cFontName [, nFontSize]
Especifica la fuente y el tamaño de fuente de la ventana Modificar. La expresión de caracteres cFontName es el nombre de la fuente y la expresión numérica nFontSize es el tamaño de la fuente. Por ejemplo, la siguiente cláusula especifica la fuente Courier de 16 puntos para los campos mostrados en la ventana Modificar:
FONT 'Courier',16

Si incluye la cláusula FONT, pero omite el tamaño de fuente nFontSize, se utilizará una fuente de 10 puntos en la ventana Modificar.

Si omite la cláusula FONT, se usará MS Sans Serif de 8 puntos. Si la fuente especificada no está disponible, se sustituirá por una fuente de características similares.

STYLE cFontStyle
En Visual FoxPro y en FoxPro para Windows, especifica el estilo de fuente para la ventana Modificar. Si omite la cláusula STYLE, se utiliza el estilo de fuente Normal.

Si el estilo de fuente especificado no está disponible, se sustituye por otro de características similares.

Carácter | Estilo de la fuente
B | Negrita
I | Cursiva
N | Normal
O | Contorno
Q | Opaco
S | Sombra
- Tachado
T | Transparente
U | Subrayado

Puede incluir más de un carácter para especificar una combinación de estilos de fuente. El siguiente ejemplo abre una ventana Modificar y utiliza una fuente subrayada:

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer  && Opens customer table
IF _WINDOWS
EDIT FIELDS contact FONT 'System', 15  STYLE 'NU'
ENDIF
IF _MAC
EDIT FIELDS contact FONT 'Geneva', 14  STYLE 'NU'
ENDIF
FREEZE FieldName
Permite realizar cambios solamente en un campo especificado con FieldName en la ventana Modificar. Los demás campos se muestran pero no se pueden modificar.
KEY eExpression1 [, eExpression2]
Limita el alcance de los registros que se muestran en la ventana Modificar. Con KEY puede especificar un valor de clave de índice (eExpression1) o un intervalo de valores de clave (eExpression1 , eExpression2) para los registros mostrados en la ventana Modificar. La tabla debe estar indexada, y el valor o los valores de clave de índice incluidos en la cláusula KEY deben ser del mismo tipo de datos que la expresión de índice del archivo de índice maestro o de la etiqueta maestra.

En el ejemplo siguiente solamente se muestran en la ventana Modificar los códigos postales incluidos en el intervalo de 10.000 a 30.000:

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer  && Open customer table
SET ORDER TO postalcode
EDIT KEY '10000', '30000'
LAST | NOINIT
Guarda todos los cambios de configuración realizados en la apariencia de una ventana Modificar. Los cambios se guardan en el archivo FoxUser.dbf y pueden incluir cambios en la lista de campos, el tamaño de cada campo y la ubicación y el tamaño de la ventana Modificar. Para obtener más información sobre este archivo, vea SET RESOURCE.

Si ejecuta EDIT con la cláusula LAST, la ventana Modificar se abre con la misma configuración con la que se guardó por última vez en el archivo FoxUser.dbf. De esta forma se recupera la configuración previa de la ventana Modificar creada con el comando EDIT anterior. Si el último comando EDIT ejecutado en la ventana Comandos incluía una larga lista de cláusulas, ejecute EDIT LAST para no tener que volver a escribir el comando.

Cualquier cambio de ventana de Edición que realice en la sesión actual no se guarda si sale de EDIT presionando CTRL+Q.

LPARTITION
Sitúa el cursor en el primer campo de la partición de la izquierda de la ventana Modificar. La ventana Modificar se puede dividir en particiones izquierda y derecha incluyendo la cláusula PARTITION. De forma predeterminada, el cursor está situado en el primer campo de la partición derecha al abrir la ventana Modificar.

El cursor se coloca en la partición de la derecha de la ventana Modificar si incluye LPARTITION sin la cláusula PARTITION.

NAME ObjectName
Crea una referencia de objeto para la ventana Modificar, permitiéndole manipular dicha ventana mediante las propiedades orientadas a objetos disponibles para el control cuadrícula.

Si desea obtener información adicional acerca de la programación orientada a objetos en Visual FoxPro, vea Programación orientada a objetos. Para obtener información adicional acerca de las propiedades del control cuadrícula que puede especificar para una ventana Modificar creada mediante la cláusula NAME, vea el tema Grid (Control).

NOAPPEND
Impide que el usuario agregue registros a la tabla presionando CTRL+Y o eligiendo Modo Anexar en el menú Ver.
Nota La inclusión de NOAPPEND no impide anexar un registro desde dentro de una rutina (creada con VALID, WHEN u ON KEY LABEL) mientras se está dentro de la ventana Modificar.
NOCAPTION
Especifica que se utilice siempre el nombre de campo de la tabla o vista para los encabezados de columna, aunque la base de datos contenga un título descriptivo para la tabla. Esta cláusula sólo se aplica a las tablas o vistas de una base de datos.
NODELETE
Impide que se marquen registros para su eliminación desde dentro de una ventana Modificar. De forma predeterminada, un registro se puede marcar para su eliminación presionando CTRL+T, eligiendo Alternar marca para eliminación en el menú Tabla o haciendo clic en la columna situada más a la izquierda del registro a eliminar.
Nota La inclusión de NODELETE no impide marcar un registro para su eliminación desde dentro de una rutina (creada con VALID, WHEN u ON KEY LABEL) mientras se está dentro de la ventana Modificar.
NOEDIT | NOMODIFY
Impide a un usuario modificar la tabla. NOEDIT y NOMODIFY son idénticas. Si incluye cualquiera de las dos cláusulas, podrá examinar o buscar en la tabla, pero no modificarla. Sin embargo, sí es posible anexar y eliminar registros.
NOLINK
Desvincula particiones de la ventana Modificar. De forma predeterminada, las particiones izquierda y derecha de la ventana Modificar están vinculadas: al desplazarse por una partición también se moverá la otra.
NOMENU
Elimina el título de menú Tabla en Visual FoxPro de la barra de menús del sistema, impidiendo el acceso al menú Edición.
NOOPTIMIZE
Desactiva la optimización Rushmore de EDIT.

Para obtener más información vea SET OPTIMIZE y Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.

NORMAL
Abre la ventana Modificar con su configuración normal predeterminada para opciones tales como color, tamaño, posición, título y controles (GROW, FLOAT, ZOOM, etc.). Si omite NORMAL y la ventana de resultados actual es una ventana definida por el usuario con su propia configuración, la ventana Modificar asume también esos valores definidos por el usuario.
NOWAIT
Continúa la ejecución del programa inmediatamente después de abrir la ventana Modificar. El programa no espera a que se cierre la ventana Modificar, sino que continúa la ejecución en la línea del programa inmediatamente siguiente a la que contiene EDIT NOWAIT. Si omite NOWAIT, cuando se ejecuta EDIT desde dentro de un programa, se abre una ventana Modificar y la ejecución del programa se interrumpe hasta el cierre de la ventana Modificar.

NOWAIT sólo está disponible desde dentro de un programa. Incluir NOWAIT cuando se ejecuta EDIT desde la ventana Comandos no ejerce ningún efecto.

PARTITION nColumnNumber
Divide la ventana Modificar en particiones izquierda y derecha, donde nColumnNumber especifica el número de columna de la barra de división. Por ejemplo, si nColumnNumber es 20, la barra de división se sitúa en la columna 20 de la ventana Modificar.
LEDIT
Especifica que la partición izquierda de la ventana Modificar aparece en modo Examinar.
REDIT
Especifica que la partición derecha de la ventana Modificar aparece en modo Examinar. Este ejemplo abre una ventana Modificar con la barra de división situada en la columna 20 y la partición derecha abierta en modo Examinar.

Incluya ambas palabras clave para abrir las dos particiones en el modo Examinar.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer  && Opens customer table
EDIT PARTITION 30 REDIT
PREFERENCE PreferenceName
Guarda los atributos y opciones de una ventana Modificar para su uso posterior. A diferencia de LAST, que restablece la ventana Modificar tal y como aparecía en la sesión anterior, PREFERENCE guarda los atributos de dicha ventana indefinidamente en el archivo de recursos FoxUser.dbf. Las preferencias se pueden recuperar en cualquier momento. Para obtener más información acerca del archivo de recursos FoxUser.dbf, vea SET RESOURCE.

Ejecutar EDIT con PreferenceName especificado por primera vez crea en el archivo FoxUser.dbf una entrada donde se guarda la configuración de la ventana Modificar. Al ejecutar EDIT posteriormente con el mismo nombre de preferencia se recupera la ventana Modificar con el estado de dicha preferencia. Cuando se cierra la ventana Modificar, el estado de preferencia se actualiza.

Los nombres de preferencia pueden tener una longitud máxima de 10 caracteres, deben comenzar por una letra o un subrayado, y pueden contener cualquier combinación de letras, números y subrayados.

Una vez que tenga las preferencias configuradas de la manera deseada, podrá impedir que cambien. Cierre la ventana Modificar, ejecute SET RESOURCE OFF, abra el archivo FoxUser.dbf como tabla y cambie el campo que contiene la preferencia para que sea de sólo lectura modificando el valor del campo lógico READONLY a verdadero (.T.).

Para obtener más información acerca del archivo de recursos FoxUser.dbf, vea SET RESOURCE.

REST
Impide que el puntero del registro se mueva de su posición actual hasta la parte superior de la tabla. De forma predeterminada, EDIT sitúa el puntero del registro en la parte superior de la tabla.
SAVE
Mantiene activas y visibles (abiertas) la ventana Modificar y cualquiera de sus ventanas de edición de texto para campos memo. Puede volver a la ventana Modificar después de recorrer las demás ventanas abiertas con el teclado o con el ratón.

SAVE sólo está disponible desde dentro de un programa. SAVE no ejerce ningún efecto cuando se incluye con EDIT en la ventana Comandos porque EDIT SAVE siempre es el valor predeterminado en el modo interactivo.

TIMEOUT nSeconds
Especifica el periodo de tiempo que una ventana Modificar espera la introducción de datos. La expresión numérica nSeconds especifica cuántos segundos pueden transcurrir sin entrada antes de que la ventana Modificar se cierre automáticamente.

TIMEOUT solamente está disponible desde el interior de un programa y no ejerce ningún efecto cuando se ejecuta EDIT desde la ventana Comandos. En el ejemplo siguiente, la ventana Modificar se cierra si no se produce ninguna entrada en 10 segundos.

DEFINE WINDOW wEdit FROM 1,1 TO 24,40 ;
CLOSE ;
GROW ;
COLOR SCHEME 10
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer  && Open customer table
EDIT WINDOW wEdit ;
FIELDS phone :H = 'Phone Number:' , ;
company :H = 'Company:' ;
TIMEOUT 10
RELEASE WINDOW wEdit
TITLE cTitleText
Anula el nombre de tabla o alias predeterminado que aparece en la barra de título de la ventana Modificar, mostrando el título especificado con cTitleText. De lo contrario, el nombre o el alias de la tabla que se está examinando aparecerá en la barra de título.

Si ejecuta EDIT WINDOW para colocar la ventana Modificar en una ventana definida por el usuario, el título de la ventana Modificar sustituye al título de la ventana definida por el usuario.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer  && Open customer table
EDIT;
TITLE 'My Edit Window' ;
FIELDS phone :H = 'Phone Number' , ;
company :H = 'Company:'
VALID lExpression3
Efectúa la validación a nivel de registro en una ventana Modificar. La cláusula VALID se ejecuta solamente si se produce un cambio en el registro y se mueve el cursor a otro registro. La cláusula VALID no se ejecutará si sólo se hacen cambios en campos memo.

Si VALID devuelve verdadero (.T.), podrá mover el cursor a otro registro. Si VALID devuelve falso (.F.), el cursor permanece en el campo actual y Visual FoxPro muestra un mensaje de error. Puede presentar su propio mensaje de error cuando VALID devuelva falso incluyendo la cláusula ERROR. La expresión de caracteres cMessageText se presenta como mensaje de error. Si VALID devuelve 0, el cursor permanecerá en el campo actual y no se mostrará ningún mensaje de error.

No debe confundirse la cláusula VALID con la opción de verificación (:V), que activa la validación a nivel de campo.

:F
Fuerza la ejecución de la cláusula VALID antes de que el usuario desplace el cursor hasta el siguiente registro. En este caso, VALID se ejecutará aunque no se hagan cambios en el registro.
ERROR cMessageText
Especifica un mensaje de error que anula el predeterminado del sistema y cuyo contenido se define con cMessageText. Visual FoxPro presenta el mensaje de error especificado cuando VALID devuelve falso (.F.).
WHEN lExpression4
Evalúa una condición cuando el usuario desplaza el cursor a otro registro. Si lExpression4 se evalúa como verdadero (.T.), el usuario puede modificar el registro al que se ha movido. Si lExpression4 se evalúa como falso (.F.) o como 0, el registro al que se mueve el usuario será de sólo lectura y no se podrá modificar.

La cláusula WHEN no se ejecuta cuando está activada otra ventana.

WIDTH nFieldWidth
Limita al valor especificado en nFieldWidth el número de caracteres mostrados para todos los campos de una partición de la ventana Modificar. La inclusión de la cláusula WIDTH no modifica el tamaño de los campos de la propia tabla; solamente altera la forma en que estos campos se muestran en la ventana Modificar. Si se ha especificado un ancho para un campo individual con la cláusula FIELDS, éste suplantará al ancho especificado con la cláusula WIDTH para ese campo.
WINDOW WindowName1
Especifica una ventana definida por el usuario cuyas características asume la ventana Modificar. Por ejemplo, si la ventana definida por el usuario se crea con la cláusula FLOAT, podrá mover la ventana Modificar. La ventana especificada no tiene que estar activa o visible necesariamente, pero debe estar definida.
IN [WINDOW] WindowName2
Especifica la ventana primaria dentro de la cual se abre la ventana Modificar. La ventana Modificar se mostrará dentro de una ventana primaria sin asumir las características de la ventana primaria. Una ventana Modificar activada dentro de una ventana primaria no se puede mover fuera de ella. Si se mueve la ventana primaria, la ventana Modificar se moverá con ella.

Para obtener acceso a la ventana Modificar, es necesario haber definido en primer lugar la ventana primaria con DEFINE WINDOW, y que esta ventana primaria esté activa y visible.

IN SCREEN
Coloca explícitamente una ventana Modificar en la ventana principal de Visual FoxPro cuando hay una ventana definida por el usuario activa.
COLOR SCHEME nSchemeNumber
Especifica el número de un esquema de colores empleado para los colores de la ventana Modificar. En Visual FoxPro y en FoxPro para Windows, la ventana Modificar asume el esquema de colores establecido mediante la opción Color del Panel de control.

Observaciones

EDIT le permite modificar la tabla seleccionada dentro de una ventana. EDIT se comporta de idéntica forma que CHANGE.

Si presiona ESC para salir de la ventana Modificar, los cambios realizados al último campo modificado se descartarán. Sin embargo, si pasa a otro registro después de modificar un campo, se guardarán los cambios realizados al campo.

Dentro de un programa, utilice DEACTIVATE WINDOW para guardar sus cambios y cerrar una ventana Modificar. Incluya el nombre de la ventana Modificar en DEACTIVATE WINDOW. Para obtener más información acerca de los nombres de la ventana Modificar, vea WTITLE( ).

Compatibilidad con SET SKIP

SET SKIP le permite establecer una relación de uno a varios entre dos tablas (vea el ejemplo). Por cada registro de la tabla primaria puede haber múltiples registros relacionados en la tabla secundaria. Si crea una relación de uno a varios, puede utilizar EDIT para ver registros procedentes tanto de la tabla primaria como de la tabla secundaria.

El registro primario se muestra una vez, junto con el primer registro coincidente de la tabla secundaria. Los demás registros coincidentes se mostrarán en las filas que siguen al registro primario y al primer registro coincidente secundario. En FoxPro para MS-DOS, se muestran bloques sombreados en cualquier columna que contenga información de la tabla principal más allá del primer registro coincidente. En Visual FoxPro y en FoxPro para Windows, el carácter de relleno para la información repetida de la tabla primaria depende de la fuente empleada en la ventana Modificar actual.

Para obtener más información al respecto, vea SET SKIP.

Compatibilidad con COL(°) y ROW(°)

Use COL( ) y ROW( ) para devolver la posición actual de pantalla, en filas y columnas, donde está situado el cursor en una ventana Modificar. Si hay una ventana Modificar abierta en la ventana principal de Visual FoxPro, la posición del cursor que se devuelve está en relación con la ventana principal de Visual FoxPro, y no con la propia ventana Modificar. Si hay una ventana Modificar abierta en una ventana definida por el usuario, COL( ) y ROW( ) devuelven la posición del cursor en relación con la ventana definida por el usuario.

Ejemplo

El ejemplo siguiente utiliza SET SKIP para crear una relación de uno a varios entre dos tablas. Hay un único registro de la tabla (customer) para cada factura creada. La tabla secundaria (orders) contiene múltiples registros para cada registro de la tabla primaria.

Una vez creada la relación, se abre una ventana Modificar mostrando registros de ambas tablas.

CLEAR
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer ORDER cust_id IN 0   && tabla padre
USE orders ORDER cust_id IN 0  && tabla hija
SELECT customer     && Regresa la área de trabajo padre
SET RELATION TO cust_id INTO orders     && Establece relación
SET SKIP TO orders  && Relación uno a muchos
WAIT WINDOW 'Desplace para ver datos de envío para cada cliente' NOWAIT
EDIT FIELDS customer.cust_id :H='Customer Number', ;
customer.city :H='Customer City', orders.shipped_on

Vea también

BROWSE | Grid (Control) | SET SKIP | WTITLE( ) | COL( ) (Función) | ROW( ) (Función)


EJECT (Comando)

Envía a la impresora un avance de página.

EJECT

Observaciones

EJECT hace avanzar la impresora hasta el principio de la página siguiente. EJECT envía un avance de página a la impresora si la variable de memoria del sistema _PADVANCE tiene el valor FORMFEED. Si _PADVANCE tiene el valor LINEFEEDS, EJECT ejecuta avances de línea hasta alcanzar el principio de la página siguiente.

EJECT restablece los valores de PCOL( ) y PROW( ) a la posición actual de fila y columna de la cabeza de impresión de la impresora, pero no influye en el valor de las variables de sistema _PAGENO ni _PLINENO.

Ejemplo

En el ejemplo siguiente se imprimen los campos company y phone de la tabla customer. (Asegúrese de que la impresora está conectada y encendida al realizar este ejemplo). Cuando el número de filas impresas sea mayor de 62, se cambiará de página.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer  && Opens customer table
SET DEVICE TO PRINTER
SET PRINT ON
DO WHILE NOT EOF( )
@ PROW( )+1,10 SAY 'Company: ' + company
@ PROW( )+1,10 SAY 'Phone: ' + phone
@ PROW( )+1,1  SAY ''
IF PROW( ) > 62
EJECT
ENDIF
SKIP
ENDDO
SET PRINT OFF
SET DEVICE TO SCREEN

Vea también

EJECT PAGE | ON PAGE | SET DEVICE | SET PRINTER | PCOL( ) | PROW( ) | Introducción a las variables del sistema


EJECT PAGE (Comando)

Envía a la impresora un avance de página condicional.

EJECT PAGE

Observaciones

Utilice EJECT PAGE para avanzar el flujo de resultados. El avance depende del valor de _PADVANCE y de si hay una rutina ON PAGE activada.

Si la variable de memoria del sistema _PADVANCE es FORMFEED y ON PAGE está desactivado, EJECT PAGE realizará las siguientes acciones:

  • Si la impresora está en línea, le enviará un avance de página.
  • Enviará avances de línea, determinados según las variables de memoria del sistema _PLENGTH y _PLINENO a la pantalla y/o a un archivo alternativo.
  • Incrementa _PAGENO en 1.
  • Establece _PLINENO en 0.
  • Si la variable de memoria del sistema _PADVANCE es LINEFEEDS y está actuando la rutina ON PAGE y _PLINENO es menor que el número de línea de página especificado con el comando ON PAGE, EJECT PAGE envía a la impresora, a la ventana principal de Visual FoxPro o a un archivo ALTERNATE, o a todos ellos, tantos avances de línea como sean precisos para avanzar hasta el principio de la página siguiente.

Si ON PAGE no está actuando, o si _PADVANCE es LINEFEEDS y _PLINENO es mayor que el número de línea de página especificado con ON PAGE, EJECT PAGE realizará las acciones siguientes:

  • Enviará avances de línea, determinados por las variables de memoria del sistema _PLENGTH y _PLINENO a la impresora, a la ventana principal de Visual FoxPro y/o al archivo alternativo, si está abierto un archivo alternativo.
  • Incrementa _PAGENO en 1.
  • Establece _PLINENO en 0.

Vea también

EJECT | ON PAGE | SET ALTERNATE | SET DEVICE | SET PRINTER | PCOL( ) | PROW( ) | Introducción a las variables del sistema


END TRANSACTION (Comando)

Finaliza la transacción actual y guarda todos los cambios realizados a las tablas, a los archivos memo de tablas o a los archivos de índice incluido en una transacción.

END TRANSACTION

Observaciones

Las actualizaciones de la base de datos realizadas entre el BEGIN TRANSACTION anterior y el END TRANSACTION se graban. Si la transacción es la primera o la única (es decir, si no está anidada), los cambios se escriben el disco.

Si una transacción está anidada, END TRANSACTION hace que se plieguen todas las actualizaciones almacenadas en caché en el siguiente nivel superior de transacción. Anidar transacciones hace que sea posible sobrescribir los cambios realizados en datos en un nivel superior de transacción.

Si END TRANSACTION genera un error (por ejemplo, no hay espacio en disco suficiente para escribir las modificaciones en el disco), los cambios realizados durante la transacción se cancelan y se termina la transacción.

Vea también

BEGIN TRANSACTION | ROLLBACK | TXNLEVEL( )


ERASE (Comando)

Borra un archivo del disco.

ERASE FileName | ? [RECYCLE]

Parámetros

FileName
Especifica el archivo que se va a borrar. Incluya la ruta de acceso con el nombre del archivo si el archivo está en una unidad o en un directorio de los actuales unidad o directorio

FileName puede contener caracteres comodín tales como * y ?. Por ejemplo, para borrar archivos de copia de seguridad con ERASE *.BAK. Si FileName contiene espacios, encierre todo el nombre de archivo entre comillas.

?
Muestra el cuadro de diálogo Eliminar, donde puede elegir un archivo que desee borrar.
RECYCLE
Especifica que el archivo no se eliminará del disco inmediatamente y que se colocará en la Papelera de reciclaje de Windows.
Precaución Tenga precaución al utilizar ERASE. Cualquier archivo borrado con este comando no podrá recuperarse. No se le avisará antes de borrar el archivo, incluso si SET SAFETY está ON

Este comando no genera un error si no existe el archivo especificado.

Ejemplo

En el ejemplo siguiente se copia la estructura de CUSTOMER.DBF y todos los registros en cuyo campo country aparezca EE.UU. se copian a una nueva tabla denominada backup. Los datos de backup se copian a un archivo de texto, temp, que se abre y, luego, se elimina una vez cerrado.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer  && Opens customer table
COPY STRUCTURE TO backup
USE backup
APPEND FROM customer FOR country = 'USA'
COPY TO temp TYPE DELIMITED
WAIT WINDOW 'Press Esc to close and erase temp.txt' NOWAIT
MODIFY FILE temp.txt NOEDIT
ERASE temp.txt
? IIF(FILE('temp.txt'),'File not deleted','File deleted')
USE
ERASE backup.dbf

Vea también

DELETE FILE | SET SAFETY (Comando) | APPEND FROM (Comando)


ERROR (Comando)

Genera un error de Visual FoxPro.

ERROR nErrorNumber | nErrorNumber, cMessageText1 | [cMessageText2]

Parámetros

nErrorNumber
Especifica el número del error que se va a generar. El mensaje de error estándar de Visual FoxPro se utiliza cuando se especifica un número de error.

Para ver una lista de los mensajes de error de Visual FoxPro y sus números de error, vea Mensajes de error ordenados alfabéticamente.

cMessageText1
Especifica el texto que se muestra en los mensajes de error que proporciona información adicional sobre el error. Por ejemplo, si hace referencia a una variable de memoria que no existe, Visual FoxPro suministra el nombre de la variable de memoria en el mensaje de error.
cMessageText2
Especifica el texto que se muestra en el mensaje de error. Cuando se especifica cMessageText2 en lugar de nErrorNumber, se genera el número de error de Visual FoxPro 1098 (error definido por el usuario). Utilice un retorno de carro (CHR(13)) en cMessageText2 para mover una parte del mensaje de error a la siguiente línea.

Observaciones

ERROR puede emplearse para comprobar rutinas de tratamiento de errores o para mostrar mensajes de error personalizados.

Si está vigente una rutina de tratamiento de errores de ON ERROR cuando se ejecuta ERROR, Visual FoxPro ejecuta la rutina ON ERROR. Si se produce un error para un objeto, se ejecuta el evento Error del objeto.

Si ejecuta ERROR desde la ventana Comandos y no está vigente una rutina de tratamiento de errores de ON ERROR, Visual FoxPro muestra el mensaje de error. Si se ejecuta ERROR desde un programa y no está vigente una rutina de tratamiento de errores de ON ERROR, Visual FoxPro muestra el mensaje de error y permite cancelar o suspender el programa o pasar por alto el error.

Nota El evento Error no ocurre si una rutina ON ERROR está en la pila de llamadas.

Ejemplo

El ejemplo siguiente genera tres mensajes de error. El primero es el mensaje de error de Visual FoxPro "Variable no encontrada" (error número 12). El segundo mensaje de error vuelve a generar el error 12 e incluye el nombre de variable Myvariable. El último mensaje de error está definido por el usuario (número de error 1089) "My error message" (Mi mensaje de error).

ERROR 12  && Generates the Visual FoxPro error "Variable not found"
ERROR 12, 'Myvariable'  && Variable 'Myvariable' not found error
ERROR 'My error message'  && Generates 'My error message' error

Vea también

ON ERROR | AERROR( ) (Función) | Depuración y control de errores | Mensajes de error ordenados alfabéticamente | Mensajes de error ordenados por número


EXIT (Comando)

Sale de un bucle DO WHILE, FOR o SCAN.

EXIT

Observaciones

EXIT transfiere el control desde dentro de un bucle DO WHILE ... ENDDO, FOR ... ENDFOR, o SCAN ... ENDSCAN al comando que sigue inmediatamente a ENDDO, ENDFOR, o ENDSCAN.

Ejemplo

En el ejemplo siguiente se calcula el número de productos en existencias cuyo precio es superior a 20 dólares mediante el bucle DO WHILE hasta llegar al final del archivo (EOF). Se sale del bucle DO WHILE y se muestra el total.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE products  && Opens Products table
SET TALK OFF
gnStockTot = 0
DO WHILE .T.     && Beginning of loop
IF EOF( )
EXIT
ENDIF
IF unit_price < 20
SKIP
LOOP
ENDIF
gnStockTot = gnStockTot + in_stock
SKIP
ENDDO  && End of loop
CLEAR
? 'Total items in stock valued over 20 dollars:'
?? gnStockTot

Vea también

DO WHILE ... ENDDO | FOR EACH ... ENDFOR | FOR ... ENDFOR | SCAN ... ENDSCAN


EXPORT (Comando)

Copia datos desde una tabla de Visual FoxPro hasta un archivo de otro formato diferente.

EXPORT TO FileName [TYPE] DIF | MOD | SYLK | WK1 | WKS | WR1 | WRK | XLS | XL5 [FIELDS FieldList] [Scope] [FOR lExpression1] [WHILE lExpression2] [NOOPTIMIZE] [AS nCodePage]

Parámetros

FileName
Especifica el nombre del archivo al que Visual FoxPro exporta datos. Si no incluye una extensión de nombre de archivo, se asignará la extensión predeterminada para el tipo de archivo especificado.
TYPE
Especifica el tipo de archivo que se va a crear. La palabra clave TYPE es opcional, pero es necesario especificar uno de los siguientes tipos de archivo.
Tipo de archivo | Descripción
DIF | Cada campo de una tabla de Visual FoxPro se convierte en un vector (columna) y cada registro se convierte en un tupla (fila) en un archivo DIF (formato de intercambio de datos, Data Interchange Format), utilizado por VisiCalc. Se asigna el nuevo nombre de archivo a una extensión .DIF si no se incluye ninguna extensión en FileName.
MOD | Utilice la cláusula MOD para exportar a un archivo en un formato Microsoft Multiplan versión 4.01 MOD. Se asignará el nuevo nombre de archivo a una extensión .MOD si no incluye una extensión en FileName.
SYLK | Un formato de intercambio de vínculos simbólico (utilizado por Microsoft Multiplan) en el cual cada campo de una tabla de Visual FoxPro se transforma en una columna en la hoja de cálculo y cada registro se convierte en una fila. De forma predeterminada, los nombres de archivo SYLK no tienen extensión.
WK1 | Incluya esta opción para crear una hoja de cálculo de Lotus 1-2-3 a partir de una tabla de Visual FoxPro. Se asigna una extensión .WK1 al nombre del archivo de hoja de cálculo para usarlo en Lotus 1-2-3 revisión 2.x. Cada campo de la tabla se convierte en una columna en la nueva hoja de cálculo, y cada registro de la tabla se convierte en una fila de la hoja de cálculo.
WKS | Incluya esta opción para crear una hoja de cálculo de Lotus 1-2-3 a partir de una tabla de Visual FoxPro. Se asigna una extensión .WKS al nombre de archivo de la hoja de cálculo para la utilización con Lotus 1-2-3 revisión 1-A. Cada campo de la tabla se convierte en una columna en la nueva hoja de cálculo, y cada registro se convierte en una fila de la hoja de cálculo.
WR1 | Incluya esta opción para crear una hoja de cálculo de Lotus Symphony a partir de una tabla de Visual FoxPro. Se asigna una extensión .WR1 a la hoja de cálculo para usarla con Symphony versión 1.01. Cada campo de la tabla se transforma en una columna en la nueva hoja de cálculo, y cada registro en la tabla se convierte una fila en la hoja de cálculo.
WRK | Incluya esta opción para crear una hoja de cálculo de Lotus Symphony a partir de una tabla de Visual FoxPro. Se asigna una extensión .WRK al nombre de archivo de la hoja de cálculo para utilizarla con Symphony versión 1.10. Cada campo de la tabla se transforma en una columna en la nueva hoja de cálculo, y cada registro en la tabla se convierte una fila en la hoja de cálculo.
XLS | Incluya esta opción para crear una hoja de cálculo de Microsoft Excel a partir de una tabla Visual FoxPro. Cada campo de la tabla seleccionada se convierte en una columna en la hoja de cálculo, y cada registro de la tabla se transforma en una fila. Se asigna una extensión de nombre de archivo .XLS al archivo de hoja de cálculo recién creada a no ser que haya especificado una extensión distinta. Puede exportar un máximo de 65,535 filas, incluyendo una fila reservada para el encabezado del campo.
XL5 | Incluya esta opción para crear un archivo de hoja de cálculo de Microsoft Excel versión 5.0 a partir de una tabla de Visual FoxPro. Cada campo de la tabla seleccionada actualmente se convierte en una columna de la hoja de cálculo y cada registro se convierte en una fila. Se asigna una extensión de nombre de archivo .XLS a la nueva hoja de cálculo a no ser que haya especificado una extensión distinta. Puede exportar un máximo de 65,535 filas, incluyendo una fila reservada para el encabezado del campo.
FIELDS FieldList
Especifica qué campos se copiarán al nuevo archivo. Si omite la cláusula FIELDS, se copiarán todos los campos al nuevo archivo. Los campos de tipo Memo y General no se copian al nuevo archivo aunque sus nombres estén incluidos en la lista de campos.
Alcance
Especifica un intervalo de registros que se va a copiar al nuevo archivo. Scope Especifica un intervalo de registros que se va a copiar al nuevo archivo. Sólo se copiarán al nuevo archivo aquellos registros que queden dentro del intervalo. Las cláusulas de alcance son: ALL, NEXT nRecords, RECORD nRecordNumber y REST.

Para obtener más información acerca de las cláusulas de alcance, vea el tema Alcance (Cláusulas). Los comandos que incluyen Scope sólo actúan sobre la tabla del área de trabajo activa.

El alcance predeterminado para EXPORT es todos los registros.

FOR lExpression1
Especifica que sólo aquellos registros que satisfagan la condición lógica lExpression1 se copiarán al nuevo archivo. El uso de este argumento permite filtrar los registros no deseados.

La optimización de consultas Rushmore optimizará un comando EXPORT ... FOR lExpression1 si lExpression1 es una expresión optimizable. Para obtener el máximo rendimiento, utilice una expresión optimizable en la cláusula FOR.

Para obtener más información, vea SET OPTIMIZE y Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.

WHILE lExpression2
Especifica una condición por la cual los registros se copiarán al nuevo archivo siempre y cuando la expresión lógica lExpression2 se evalúe con el resultado verdadero (.T.).
NOOPTIMIZE
Desactiva la optimización de consultas Rushmore de EXPORT.

Para obtener más información, vea SET OPTIMIZE y Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.

AS nCodePage
Especifica la página de códigos para el archivo que crea EXPORT. Visual FoxPro copia el contenido de la tabla seleccionada actualmente y, a medida que copia los datos, los convierte automáticamente a la página de códigos que usted especifique para el nuevo archivo. Si es posible, Visual FoxPro marcará el archivo recién creado con la página de códigos que usted especifique.

Si especifica un valor no admitido para nCodePage, Visual FoxPro generará un mensaje de error. Puede utilizar GETCP( ) para que nCodePage muestre el cuadro de diálogo Página de códigos y le permita especificar otra página de códigos distinta para el archivo creado por Visual FoxPro.

Si omite AS nCodePage, no se producirá ninguna conversión de páginas de códigos. Si es posible, Visual FoxPro marcará el archivo recién creado con la página de códigos de la página desde la que se copiaron los datos.

Si nCodePage es 0, no se producirá ninguna conversión de página de códigos y el archivo recién creado no se marcará con ninguna página de códigos.

Observaciones

Use EXPORT para utilizar datos de Visual FoxPro en otros paquetes de software.

Si la tabla desde la que está exportando está indexada, el nuevo archivo se creará en el orden indexado.

Vea también

APPEND FROM | COPY TO | GETCP( ) | IMPORT | SET OPTIMIZE | Utilizar optimización de consultas Rushmore para acelerar el acceso de datos


EXTERNAL (Comando)

Advierte al Administrador de proyectos de que existe una referencia no definida.

EXTERNAL FILE FileList | ARRAY ArrayList
| CLASS | FORM | LABEL | LIBRARY | MENU | PROCEDURE | QUERY | REPORT | SCREEN | TABLE

Parámetros

FILE FileList
Especifica que el archivo que incluya en una referencia de archivo indirecta o una substitución de macro es un archivo independiente como, por ejemplo, un archivo de texto, un archivo de mapa de bits .BMP, etc. FileList puede contener una lista de nombres de archivos separados por comas.
ARRAY ArrayList
Cuando cree una matriz en un programa y luego se utilice en un programa de bajo nivel, incluya en el programa de bajo nivel ARRAY con el nombre de la matriz. ArrayList puede contener una lista de nombres de matrices separados por comas.

En el ejemplo siguiente, el primer programa crea una matriz que se llama gaInvoice. La matriz se inicializa y se llama a un programa de bajo nivel llamado dispinvo. dispinvo muestra el contenido de la matriz creada en el programa de alto nivel. El comando EXTERNAL ARRAY GAINVOICE se incluye para advertir al Administrador de proyectos.

DIMENSION gaInvoice(4)
STORE 'Paid' TO gaInvoice
DO dispinvo
*** Program dispinvo ***
PROCEDURE dispinvo
EXTERNAL ARRAY gaInvoice
? gaInvoice(1)
? gaInvoice(2)
? gaInvoice(3)
? gaInvoice(4)
RETURN
*** End of dispinvo program ***

Cuando se transfiera una matriz a una función o un procedimiento definidos por el usuario, la matriz correspondiente de dicha función o procedimiento definidos por el usuario debe identificarse ante el Administrador de proyectos. Incluya la palabra clave ARRAY con el nombre de la matriz incluida en la instrucción PARAMETER.

DIMENSION gaArrayOne(2)      && Create an array
EXTERNAL ARRAY gaArrayTwo   && Name of the array used in the UDF
SET TALK OFF
STORE 10 TO gaArrayOne(1)
STORE  2 TO gaArrayOne(2)
= ADDTWO(@gaArrayOne)      && Pass the array by reference to a UDF
FUNCTION ADDTWO
PARAMETER gaArrayTwo
CLEAR
gaArrayTwo(1) = gaArrayTwo(1) + 2
gaArrayTwo(2) = gaArrayTwo(2) + 2
? gaArrayTwo(1)
? gaArrayTwo(2)
CLASS
Indica que el archivo incluido en una referencia indirecta a archivo o en una sustitución de macro es una biblioteca de clases visuales.
EXTERNAL CLASS myvclass  && CLASS myvclass must exist
STORE 'myvclass' TO gcClassFile
MODIFY CLASS (gcClassFile)
FORM
Si incluye un archivo de definición Form en una referencia indirecta a archivo o en una sustitución de macro, incluya FORM y el nombre del archivo Form. FORM es idéntico a SCREEN.
EXTERNAL FORM dataentr  && FORM dataentr must exist
STORE 'dataentr' TO gcFormFile
DO FORM (gcFormFile)
LABEL
Indica al Administrador de proyectos que el archivo incluido en una referencia indirecta a archivo o en una sustitución de macro es un archivo de definición de etiqueta.
EXTERNAL LABEL Maillabl     && LABEL FORM Maillabl must exist
STORE 'Maillabl' TO gcLabelFile
LABEL FORM (gcLabelFile) PREVIEW
LIBRARY
Incluya LIBRARY cuando un archivo de biblioteca esté referenciado por una referencia de archivo indirecta o una sustitución de macro en SET LIBRARY.
EXTERNAL LIBRARY regress  && LIBRARY regress must exist
STORE 'regress' TO gcStatFunc
SET LIBRARY TO (gcStatFunc)
MENU
Si se incluye un archivo de definición de menú en una referencia indirecta a archivo o sustitución de macro, incluya MENU y el nombre de archivo de menú.
EXTERNAL MENU pickfile  && MENU pickfile must exist
STORE 'pickfile' TO gcSysMenPad
MODIFY MENU (gcSysMenPad)
PROCEDURE
Identifica un procedimiento externo o una función definida por el usuario.
EXTERNAL PROCEDURE delblank     && PROCEDURE delblank must exist
STORE 'delblank' TO gcTrimBlanks
DO (gcTrimBlanks) WITH 'A B C D E'
QUERY
Advierte al Administrador de proyectos que el archivo incluido en una referencia indirecta a archivo o en una sustitución de macro es un archivo de consulta.
EXTERNAL QUERY sales  && QUERY sales must exist
STORE 'sales.qpr' TO gcSalesFile
DO (gcSalesFile)
REPORT
Advierte que el archivo incluido en una referencia indirecta a archivo o en una sustitución de macro es un archivo de definición de informe.
EXTERNAL REPORT overdue     && REPORT overdue must exist
STORE 'overdue' TO gcReportFile
REPORT FORM (gcReportFile) PREVIEW
SCREEN
Si incluye un archivo de definición de formulario en una referencia indirecta a archivo o en una sustitución de macro, incluya SCREEN y el nombre del archivo de pantalla. SCREEN es idéntico a FORM.
EXTERNAL SCREEN dataentr  && SCREEN dataentr must exist
STORE 'dataentr' TO gcScreenFile
MODIFY SCREEN (gcScreenFile)
TABLE
Advierte al Administrador de proyectos que el archivo incluido en una referencia indirecta a archivo o en una sustitución de macro es una tabla de Visual FoxPro.
EXTERNAL TABLE customer && Table customer must exist
STORE 'customer' TO gcMyTable
USE (gcMyTable)

Observaciones

Utilice EXTERNAL para incluir archivos y resolver referencias no definidas en un proyecto creado con el Administrador de proyectos. EXTERNAL lo utiliza únicamente el Administrador de proyectos y se pasa por alto durante la ejecución del programa.

Para obtener más información sobre la creación de proyectos con el Administrador de proyectos, vea Compilar una aplicación.

El Administrador de proyectos incluirá los archivos cuyo nombre especifique con EXTERNAL en un proyecto. Debe incluir CLASS, FILE, FORM, LABEL, LIBRARY, MENU, PROCEDURE, QUERY, REPORT o SCREEN antes de los nombres de archivo para indicar al Administrador de proyectos el tipo de archivos que va a incluir en el proyecto.

Hay que avisar también al Administrador de proyectos de los nombres de archivo contenidos en una expresión de nombre o sustitución de macros. Esto asegura que todos los archivos necesarios se incluirán en un proyecto cuando éste se construya. Asimismo, es necesario avisar a las matrices que se crean en otro procedimiento o en otra función definida por el usuario.

Para obtener más información acerca de las expresiones de nombres y la sustitución de macros, vea el comando &. Siempre que sea posible, utilice una expresión de nombre en lugar de una sustitución de macros para mejorar el rendimiento.

Vea también

BUILD APP | BUILD PROJECT | Compilar una aplicación | & | Administrador de proyectos


FLUSH (Comando)

Guarda en disco las modificaciones de las tablas y los índices.

FLUSH

Observaciones

FLUSH asegura que las modificaciones efectuadas en todas las tablas y los índices abiertos se guardan en disco.

Visual FoxPro guarda automáticamente en disco los cambios efectuados cuando:

  • Cierra una tabla con USE o CLOSE DATABASES. Solamente se guardará en disco la información del archivo o archivos que cierre.
  • Desbloquea un registro o un archivo. Únicamente se guardará en disco la información del registro o el archivo desbloqueado.

Vea también

CLOSE DATABASES | FFLUSH( ) | SET AUTOSAVE


FOR EACH ... ENDFOR (Comando)

Ejecuta un conjunto de comandos para cada elemento en una matriz o colección de Visual FoxPro.

FOR EACH Var IN Group
Commands
[EXIT] [LOOP] ENDFOR | NEXT [Var]

Valores de la propiedad

Var
Una variable o un elemento de una matriz utilizado para iterar en los elementos de Group.
Group
Una matriz de Visual FoxPro, una matriz OLE, una colección de Visual FoxPro o una colección de OLE.
Commands
Especifica los comandos de Visual FoxPro que se van a ejecutar para cada elemento de Group. Commands puede incluir cualquier número de comandos.
EXIT
Transfiere el control de dentro del bucle FOR EACH ... ENDFOR al comando inmediatamente después de ENDFOR. Puede colocar EXIT en cualquier sitio entre FOR EACH y ENDFOR.
LOOP
Devuelve el control directamente a la cláusula FOR EACH sin ejecutar las instrucciones que hay entre LOOP y ENDFOR. LOOP se puede colocar en cualquier lugar entre FOR EACH y ENDFOR.

Ejemplos

En los siguientes ejemplos se muestra la utilización de FOR EACH para enumerar elementos de una matriz de Visual FoxPro, de una matriz OLE y un conjunto de botones de comando asignados a una matriz.

En el siguiente ejemplo, se crea una matriz de variables de Visual FoxPro y se utiliza FOR EACH para mostrar el contenido de cada elemento de la matriz.

DIMENSION cMyArray(3)
cMyArray[1] = 'A'
cMyArray[2] = 'B'
cMyArray[3] = 'C'
FOR EACH cMyVar IN cMyArray
? cMyVar
ENDFOR

En el siguiente ejemplo, se crea una instancia de Microsoft Excel y se agrega un nuevo libro. FOR EACH se utiliza para mostrar el nombre de cada hoja de cálculo del libro. Este ejemplo requiere que Microsoft Excel esté correctamente instalado en la máquina en la que se ejecute el ejemplo.

oExcel = CREATE("Excel.Application")
oExcel.Workbooks.ADD
FOR EACH oMyVar IN oExcel.sheets
? oMyVar.name
NEXT oMyVar

En el siguiente ejemplo se colocan cinco botones de comando en un formulario. FOR EACH se utiliza para mostrar los botones del formulario y para especificar los títulos, los estilos de fuentes y las posiciones de cada botón.

PUBLIC oMyObject
oMyObject = CREATEOBJECT("frmTest")
oMyObject.SHOW
DEFINE CLASS frmTest AS FORM
Height = 200
DIMENSION MyArray[5]
PROCEDURE Init
FOR i = 1 to 5
THIS.AddObject('THIS.MyArray[i]',;
'COMMANDBUTTON')
ENDFOR
****** FOR EACH - NEXT ******
FOR EACH oButton IN THIS.MyArray
oButton.Visible = .T.
NEXT
****** FOR EACH - NEXT element  ******
FOR EACH oButton IN THIS.MyArray
oButton.FontBold = .T.
NEXT obutton
j = 1
****** FOR EACH - ENDFOR ******
FOR EACH oButton IN THIS.MyArray
oButton.top = j * 30
j = j + 1
ENDFOR
****** FOR EACH - ENDFOR element ******
FOR EACH oButton IN THIS.MyArray
oButton.FontItalic = .T.
ENDFOR obutton
j = 1
****** EXIT  ******
FOR EACH oButton IN THIS.MyArray
oButton.Caption = "test" + str(j)
j = j+1
IF j > 3
EXIT
ENDIF
NEXT
j = 1
****** LOOP  ******
FOR EACH oButton IN THIS.MyArray
IF j > 3
LOOP
ENDIF
j = j + 1
oButton.Left = 25
NEXT
ENDPROC
ENDDEFINE

Vea también

FOR ... ENDFOR | DO CASE ... ENDCASE | DO WHILE ... ENDDO | IF ... ENDIF | SCAN ... ENDSCAN EXIT | LOOP


FOR ... ENDFOR (Comando)

Ejecuta un grupo de comandos un número concreto de veces.

FOR Var = nInitialValue TO nFinalValue [STEP nIncrement] Commands
[EXIT] [LOOP] ENDFOR | NEXT

Parámetros

Var
Especifica una variable o un elemento de matriz que actúa como contador. No es necesario que exista la variable o elemento de matriz antes de ejecutar FOR ... ENDFOR.
nInitialValue TO nFinalValue
nInitialValue es el valor inicial del contador y; nFinalValue es el valor final del contador.
STEP nIncrement
nIncrement es la cantidad de incremento o decremento del contador. Si nIncrement es negativo, el contador se decrementará. Si omite la cláusula STEP, el contador se incrementará en 1.
Commands
Especifica los comandos de Visual FoxPro que se van a ejecutar. Commands puede incluir cualquier número de comandos.
EXIT
Transfiere el control desde dentro del bucle FOR ... ENDFOR al comando que sigue inmediatamente a ENDFOR. Puede situar EXIT en cualquier parte entre FOR y ENDFOR.
LOOP
La inclusión de LOOP devolverá el control directamente a la cláusula FOR sin ejecutar las instrucciones que haya entre LOOP y ENDFOR. El contador se incrementará o decrementará como si se hubiera llegado a ENDFOR. LOOP puede situarse en cualquier parte entre FOR y ENDFOR.

Observaciones

Se utiliza una variable o un elemento de matriz como contador para especificar cuántas veces se ejecutan los comandos de Visual FoxPro que hay dentro del bucle FOR ... ENDFOR.

Los comandos de Visual FoxPro que hay a continuación de FOR se ejecutan hasta que se llega a ENDFOR o NEXT. Entonces se incrementa el contador MemVarName con el valor de nIncrement. Si omite la cláusula STEP, el contador se incrementará en 1. Entonces se comparará el contador con el valor final nFinalValue. Si el contador es inferior o igual al valor final nFinalValue, volverán a ejecutarse los comandos que siguen a la cláusula FOR. Si el contador es mayor que el valor final nFinalValue, la ejecución del programa bifurcará fuera del bucle FOR ... ENDFOR y continuará con el primer comando a continuación de ENDFOR o NEXT.

Nota Los valores de nInitialValue, nFinalValue y nIncrement se leen únicamente al inicio. Sin embargo, cambiar el valor del contador MemVarName dentro del bucle afecta al número de veces que se ejecutará el bucle.

Si el valor de nIncrement es negativo y el valor inicial nInitialValue es mayor que el valor final nFinalValue, el contador disminuirá cada vez que pase el bucle.

Ejemplo

En el primer ejemplo, se muestran los números de 1 a 10.

En el segundo ejemplo se usan variables de memoria para los valores inicial, final y STEP para mostrar todos los registros pares desde el 2 hasta el 10 de customer.

* Example 1
CLEAR
FOR gnCount = 1 TO 10
? gnCount
ENDFOR
* Example 2
SET TALK OFF
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer  && Opens Customer table
STORE 2 TO gnI  && Initial value
STORE 10 TO gnJ  && Final value
STORE 2 TO K  && Step value
FOR gnCount = gnI TO gnJ STEP K
GOTO gnCount  && Move record pointer
DISPLAY company && Display company name
ENDFOR

Vea también

DO CASE ... ENDCASE | DO WHILE ... ENDDO | FOR EACH ... ENDFOR | IF ... ENDIF | SCAN ... ENDSCAN | EXIT | LOOP


FREE TABLE (Comando)

Quita una referencia de base de datos de una tabla.

FREE TABLE TableName

Parámetros

TableName
Especifica el nombre de la tabla de la que se elimina la referencia de base de datos.

Observaciones

Si la base de datos se elimina accidentalmente del disco, las referencias a la base de datos permanecen en las tablas antiguamente contenidas en la base de datos. FREE TABLE quita las referencias de la base de datos de una tabla, lo que permite abrir la tabla o agregarla a una base de datos diferente.

Precaución Nunca se debe ejecutar FREE TABLE para quitar una tabla de una base de datos si dicha base de datos existe en el disco. Si la base de datos existe en el disco, FREE TABLE puede inutilizar la base de datos. Utilice REMOVE TABLE en su lugar. A diferencia de FREE TABLE, REMOVE TABLE quita todas las referencias de la base de datos a índices primarios, valores predeterminados y reglas de validación asociadas con la tabla.

Vea también

ADD TABLE | CREATE DATABASE | OPEN DATABASE | REMOVE TABLE


FUNCTION (Comando)

Identifica el comienzo de una definición de función definida por el usuario.

FUNCTION FunctionName

[ LPARAMETERS parameter1 [ ,parameter2 },... ] Commands

[ RETURN [ eExpression ] ] ENDFUNC

O bien:

FUNCTION FunctionName( [ parameter1 [ AS para1type ][ ,parameter2 [ AS para2type ] ],...] ) [ AS returntype ] Commands

[ RETURN [ eExpression ] ] ENDFUNC

Parámetros

FUNCTION
Indica el inicio de la estructura FUNCTION.
FunctionName
Especifica el nombre de la función definida por el usuario. En Visual FoxPro, los nombres de función pueden tener hasta 254 caracteres de longitud.
LPARAMETERS parameter1 [ ,parameter2 },...]
Asigna datos pasados desde el programa que llama a variables o matrices locales.
( [ parameter1 [ AS para1type ][ ,parameter2 [ AS para2type ] ],...] )
Asigna datos pasados desde el programa que llama a variables o matrices. La cláusula opcional AS para1type especifica el tipo de dato de la variable.
AS returntype
Especifica el tipo de dato en que se basa el valor devuelto.
Commands
Especifica comandos Visual FoxPro que se ejecutan cuando la función se ejecuta.
RETURN [ eExpression ]
Devuelve el control al programa que llamo a la función. El parámetro opcional eExpression puede usarse para especificar un valor a devolver.
ENDFUNC
Indica el final de la estructura FUNCTION.

Observaciones

En muchos programas, se repiten con frecuencia ciertas rutinas. Al definir las rutinas utilizadas comúnmente como funciones separadas se reduce el tamaño y la complejidad del programa y se facilita el mantenimiento del mismo.

FUNCTION FunctionName es una instrucción dentro de un programa. Designa el comienzo de una función en un programa e identifica la función por su nombre.

FUNCTION FunctionName va seguido de una serie de comandos de Visual FoxPro que constituyen la función. Puede incluir RETURN en cualquier parte de la función para devolver el control al programa que llama o a otro programa, así como para definir un valor devuelto por la función definida por el usuario. Si no incluye un comando RETURN, se ejecutará un RETURN implícito cuando salga de la función. Si el comando RETURN no incluye el valor devuelto (o si se ejecuta un RETURN implícito), Visual FoxPro asigna .T. (Verdadero) como el valor devuelto.

La función termina con el comando ENDFUNC. Este comando es opcional; la función se termina cuando encuentra otro comando FUNCTION, un comando PROCEDURE o el final del archivo de programa.

Puede colocar observaciones en la misma línea después de FUNCTION y ENDFUNC. Estos observaciones se pasarán por alto durante la compilación y la ejecución del programa.

No puede tener código de programa ejecutable normal incluido en un archivo de programa después de funciones definidas por el usuario; sólo las funciones definidas por el usuario, los procedimientos y las definiciones de clase pueden ir a continuación del primer comando FUNCTION o PROCEDURE en el archivo.

Cuando se ejecute una función con DO, Visual FoxPro buscará la función en un orden específico:

  1. Visual FoxPro buscará en el archivo que contiene el comando DO.
  2. Si la función no se encuentra allí, Visual FoxPro buscará en los archivos de procedimientos abiertos. Los archivos de procedimientos se abren con SET PROCEDURE.
  3. Si la función no se encuentra en un archivo de procedimiento abierto, Visual FoxPro buscará los programas en la cadena de ejecución. Los archivos de programa se buscarán a partir del archivo ejecutado más recientemente hasta el primer programa que se ejecutó.
  4. Si sigue sin encontrarse la función, Visual FoxPro buscará un programa autónomo. Si se encuentra un nombre de archivo de programa que coincida, se ejecutará el programa. De lo contrario, Visual FoxPro generará un mensaje de error.

Incluya la cláusula IN en DO para ejecutar una función en un archivo específico.

Los parámetros se pasan a las funciones, de forma predeterminada por valor. Para obtener información acerca de cómo pasar parámetros a funciones por referencia, vea SET UDFPARMS. Se puede pasar a una función un máximo de 26 parámetros. Los parámetros se pueden pasar a una función al incluir la instrucción PARAMETERS o LPARAMETERS en la función, o al colocar una lista de parámetros inmediatamente después de FUNCTION FunctionName. Ponga la lista de parámetros entre paréntesis y separe los parámetros con comas.

Para obtener información acerca del uso del comando FUNCTION en la creación de clases, vea DEFINE CLASS y Uso estricto de tipos en código de clases, objetos y variables, en la Ayuda.

Ejemplo

En este ejemplo se crea una clase de objetos personalizada llamada Hello y se agrega un método de función llamado SayHello. El método SayHello devuelve la cadena de caracteres "Hello World" que muestra la función MESSAGEBOX. Nota: El código de la definición de clase se coloca después del código de programa que crea una instancia del objeto.

Local oHello
oHello=CREATEOBJECT("Hello")
=MESSAGEBOX(oHello.SayHello(),48)
RELEASE oHello
* Código que define la clase
DEFINE CLASS Hello AS CUSTOM
FUNCTION SayHello
RETURN "Hello World"
ENDFUNC
ENDDEFINE

Vea también

LPARAMETERS | PARAMETERS | PARAMETERS( ) | PRIVATE | PROCEDURE | PUBLIC | RETURN | SET PROCEDURE | SET UDFPARMS


GATHER (Comando)

Sustituye los datos del registro actual de la tabla seleccionada actualmente por datos de una matriz, un conjunto de variables o un objeto.

GATHER FROM ArrayName | MEMVAR | NAME ObjectName
[FIELDS FieldList | FIELDS LIKE Skeleton | FIELDS EXCEPT Skeleton] [MEMO]

Parámetros

FROM ArrayName
Especifica la matriz cuyos datos reemplazan los datos del registro actual. El contenido de los elementos de la matriz, comenzando con el primer elemento, reemplaza el contenido de los campos correspondientes del registro. El contenido del primer elemento de la matriz reemplaza al primer campo del registro; el contenido del segundo elemento de la matriz reemplaza al segundo campo y así sucesivamente.

Si la matriz tiene menos elementos que el número de campos de la tabla, se pasan por alto los campos adicionales. Si la matriz tiene más elementos que el número de campos de la tabla, se pasará por alto el resto de elementos de la matriz.

MEMVAR
Especifica las variables o la matriz desde las que se copian datos al registro actual. Los datos se transfieren desde la variable hasta el campo que tenga el mismo nombre que dicha variable. El contenido de un campo no se sustituye en caso de que no exista ninguna variable con el mismo nombre que el campo.
Sugerencia Puede crear variables con los mismos nombres que los campos incluyendo MEMVAR o BLANK en SCATTER.
NAME ObjectName
Especifica un objeto cuyas propiedades tienen los mismos nombres que los campos de la tabla. El contenido de cada campo se sustituye por el valor de la propiedad que tenga los mismos nombres que los campos. El contenido de un campo no se sustituye si no existe ninguna propiedad con su mismo nombre.
FIELDS FieldList
Especifica los campos cuyo contenido se sustituye por el contenido de los elementos de la matriz o las variables. Solamente se sustituirá el contenido del campo especificado con FieldList.
FIELDS LIKE Skeleton | FIELDS EXCEPT Skeleton
Puede reemplazar selectivamente campos con el contenido de elementos de matriz o variables si incluye la cláusula LIKE o EXCEPT, o ambas. Si incluye LIKE Skeleton, Visual FoxPro reemplazará los campos que coincidan con Skeleton. Si incluye EXCEPT Skeleton, reemplazará todos los campos excepto los que coincidan con Skeleton.

Skeleton acepta caracteres comodín (* y ?). Por ejemplo, para reemplazar todos los campos que empiecen por las letras A y P, use:

GATHER FROM gamyarray FIELDS LIKE A*,P*
MEMO
Especifica que el contenido de los campos memo se sustituye por el contenido de los elementos de la matriz o de las variables. Si omite MEMO, los campos memo se saltarán cuando GATHER reemplace el contenido de los campos con el contenido de una matriz o de variables. Los campos de tipo General y Picture se pasan por alto siempre en GATHER, incluso si se incluye la palabra clave MEMO.

Ejemplo

En este ejemplo se utiliza GATHER para copiar datos a un nuevo registro de una tabla. Una vez creada la tabla Test, se utiliza SCATTER para crear un conjunto de variables basado en los campos de la tabla. Después se asigna un valor a cada campo y se agrega un nuevo registro en blanco a la tabla.

CREATE TABLE Test FREE ;
(Object C(10), Color C(16), SqFt n(6,2))
SCATTER MEMVAR BLANK
m.Object="Box"
m.Color="Red"
m.SqFt=12.5
APPEND BLANK
GATHER MEMVAR
BROWSE

En el ejemplo siguiente se utiliza GATHER con la cláusula NAME para copiar datos a un registro nuevo de la tabla. Una vez creada la tabla Test, se utiliza SCATTER para crear un objeto con propiedades basadas en los campos de la tabla. Después se asignan valores a las propiedades del objeto y se agrega un nuevo registro en blanco a la tabla.

CREATE TABLE Test FREE ;
(Object C(10), Color C(16), SqFt n(6,2))
SCATTER NAME oTest BLANK
oTest.Object="Box"
oTest.Color="Red"
oTest.SqFt=12.5
APPEND BLANK
GATHER NAME oTest
RELEASE oTest
BROWSE

Vea también

APPEND FROM ARRAY | COPY TO ARRAY | DIMENSION | SCATTER


GETEXPR (Comando)

Muestra el Generador de expresiones que le permite crear una expresión y almacenarla en una variable o en un elemento de matriz.

GETEXPR [cCaptionText] TO MemVarName
[TYPE cExpressionType [; cErrorMessageText]] [DEFAULT cDefaultExpression]

Parámetros

cCaptionText
Especifica el título que aparece en el Generador de expresiones. El título puede utilizarse para recordar al usuario el tipo de expresión que va a generar.
TO MemVarName
Especifica la variable o el elemento de matriz donde se almacena la expresión. Si la variable no existe todavía, Visual FoxPro la creará. GETEXPR no crea ningún elemento de matriz.

Si sale del Generador de expresiones presionando ESC o eligiendo Cancelar, se almacenará la cadena vacía en la variable o en el elemento de matriz. Si se crea una expresión predeterminada con la cláusula DEFAULT, la expresión predeterminada se almacenará en la variable si sale del Generador de expresiones presionando ESC o eligiendo Cancelar.

TYPE cExpressionType [; cErrorMessageText]
Especifica el tipo de expresión. La siguiente tabla indica el carácter que debe especificar en cExpressionType para cada tipo de expresión:
cExpressionType | Tipo de expresión
C | Character
D | Fecha
T | DateTime
N | Numérica
F | Flotante
I | Integer
B | Double
Y | Currency
L | Lógica

Puede especificar el mensaje de error cErrorMessageText que aparecerá si la expresión no es válida. Si se incluye cErrorMessageText con cExpressionType, cExpressionType y cErrorMessageText deberán separarse mediante un signo de punto y coma (;). La combinación de cExpressionType, el punto y coma, y cErrorMessageText deben incluirse entre comillas sencillas o dobles, en pares coincidentes.

DEFAULT cDefaultExpression
Permite mostrar la expresión predeterminada inicial en el Generador de expresiones. Puede aceptar la expresión predeterminada o sobrescribirla con su propia expresión especificada con cDefaultExpression. cDefaultExpression se almacenará en la variable o en el elemento de matriz si sale del Generador de expresiones presionando ESC o eligiendo Cancelar.

Ejemplo

En el ejemplo siguiente, GETEXPR se utiliza para obtener una expresión LOCATE del tipo apropiado. Si LOCATE tiene éxito, se mostrará el nombre de la empresa; de lo contrario, se mostrará un mensaje.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer  && Opens Customer table
GETEXPR 'Enter condition to locate ' TO gcTemp;
TYPE 'L' DEFAULT 'COMPANY = ""'
LOCATE FOR &gcTemp
IF FOUND( )
DISPLAY
ELSE
? 'Condition ' + gcTemp + ' was not found '
ENDIF

Vea también

_GETEXPR | GETFILE( ) | GETPICT( ) | LOCFILE( ) | PUTFILE( )


GO | GOTO (Comando)

Coloca el puntero de registro en el número de registro especificado de una tabla.

GO [RECORD] nRecordNumber [IN nWorkArea | IN cTableAlias]

–O bien–

GO TOP | BOTTOM [IN nWorkArea | IN cTableAlias]

–O bien–

GOTO [RECORD] nRecordNumber [IN nWorkArea | IN cTableAlias]

–O bien–

GOTO TOP | BOTTOM [IN nWorkArea | IN cTableAlias]

Parámetros

RECORD nRecordNumber
Especifica el número de registro físico al que desea mover el puntero de registro. Puede omitir por completo GO o GOTO y especificar simplemente el número de registro. Si especifica solamente el número de registro, podrá mover el puntero solamente en el área de trabajo actual.
IN nWorkArea
Especifica el área de trabajo de la tabla en la cual se mueve el puntero de registro.
IN cTableAlias
Especifica el alias de la tabla en la cual se mueve el puntero de registro.
TOP
Sitúa el puntero de registro en el primer registro de la tabla. Si la tabla tiene en uso un índice ascendente, el primer registro será el registro con el valor clave más bajo. Si el índice está en orden descendente, el primer registro será el registro con el valor clave más alto.
BOTTOM
Sitúa el puntero de registro en el último registro de la tabla. Si la tabla tiene activo un índice ascendente, el último registro será aquél con el valor de clave más elevado. Si el índice está en orden descendente, el último registro será el que tenga el menor valor de clave.

Observaciones

GO y GOTO pueden utilizarse indistintamente. Estos comandos actúan sobre la tabla del área de trabajo actual a menos que especifique otra área de trabajo con la cláusula IN.

Ejemplo

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE products  && Opens Products table
USE customer IN 0  && Opens Customer table
GO BOTTOM IN products
CLEAR
? RECNO('products')
GO TOP
? RECNO( )     && Displays 1
GO 5
? RECNO( )     && Displays 5

Vea también

RECNO( ) | SELECT | SKIP


HELP (Comando)

Abre la ventana Ayuda.

HELP   [Topic | ID nContextID] [IN [WINDOW] WindowName | IN [WINDOW] SCREEN | IN [WINDOW] [NOWAIT]

Parámetros

Topic
Especifica el tema de Ayuda que se va a mostrar. Si se incluye solamente parte del título de un tema, Visual FoxPro abrirá la ventana Ayuda y mostrará el tema cuyo título sea más parecido.
ID nContextID
Especifica el tema de Ayuda que se debe mostrar, basándose en el Id. de contexto del tema.

Cuando se utiliza Ayuda de estilo gráfico, nContextID es un número de contexto de la sección MAP del archivo de proyecto de ayuda.

IN [WINDOW] WindowName
Abre la ventana Ayuda dentro de una ventana primaria. La ventana Ayuda no asume las características de la ventana primaria en la que está incluida. Si la ventana Ayuda se activa desde dentro de una ventana primaria, no podrá moverse fuera de los límites de la ventana primaria. Si se mueve la ventana primaria, la ventana Ayuda se moverá con ella. Antes de que pueda abrir la ventana Ayuda desde dentro de una ventana primaria, ésta deberá haberse definido previamente con DEFINE WINDOW.
IN [WINDOW] SCREEN
Sitúa explícitamente la ventana Ayuda dentro de la ventana principal de Visual FoxPro.
NOWAIT
En el estilo gráfico de la ayuda, el argumento NOWAIT no tiene efecto y la ejecución del programa continúa inmediatamente después que ha sido ejecutado el comando HELP.

Observaciones

Para obtener más información acerca de cómo crear su propio sistema de Ayuda, vea Crear Ayuda.

Vea también

SET HELP | SET TOPIC

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


HIDE MENU (Comando)

Oculta una o más barras de menús activas definidas por el usuario.

HIDE MENU MenuBarName1 [, MenuBarName2 ...] | ALL [SAVE]

Parámetros

MenuBarName1 [, MenuBarName2 ...]
Especifica el nombre de la barra de menús o una lista de barras de menús (separadas por comas) que se va a ocultar.
ALL
Oculta todas las barras de menú definidas.
SAVE
Sitúa una imagen de una barra de menús en la pantalla o en una ventana. Situar una imagen de una barra de menús en la pantalla es útil durante el desarrollo y la prueba de programas. Las imágenes de barras de menús pueden borrarse con CLEAR, de la ventana principal Visual FoxPro o de una ventana definida por el usuario..

Observaciones

HIDE MENU borra la barra de menús especificada, un conjunto de barras de menús o todas las barras de menús de la ventana principal de Visual FoxPro o de una ventana definida por el usuario sin borrar de la memoria la definición del menú. Antes de que pueda ocultarse, una barra de menús tiene que crearse primero con DEFINE MENU. No es lo mismo ocultar una barra de menús que desactivarla. Cuando se oculta una barra de menús, permanece residente en memoria y puede mostrarse en la ventana principal de Visual FoxPro o en una ventana definida por el usuario con ACTIVATE MENU o SHOW MENU.

Vea también

ACTIVATE MENU | DEFINE MENU | DEFINE PAD | SHOW MENU


HIDE POPUP (Comando)

Oculta uno o más menús activos creados con DEFINE POPUP.

HIDE POPUP MenuName1 [, MenuName2 ...] | ALL [SAVE]

Parámetros

MenuName1 [, MenuName2 ...]
Especifica el nombre del menú o una lista de menús (separados por comas) que se va a ocultar.
ALL
Oculta todos los menús definidos.
SAVE
Sitúa una imagen de un menú en la ventana principal de Visual FoxPro o en una ventana definida por el usuario. Situar una imagen de un menú en la pantalla es útil durante el desarrollo y la prueba de programas. Las imágenes de menús pueden borrarse de la ventana principal de Visual FoxPro o de una ventana definida por el usuario con CLEAR.

Observaciones

HIDE POPUP borra el menú especificado, un conjunto de menús o todos los menús de la ventana principal de Visual FoxPro o de una ventana definida por el usuario sin borrar de la memoria la definición del menú. Antes de que un menú pueda ocultarse debe haberse creado primero con DEFINE POPUP. . No es lo mismo ocultar un menú que desactivarlo. Cuando se oculta un menú, permanece residente en memoria y puede mostrarse en la ventana principal de Visual FoxPro o en una ventana definida por el usuario con ACTIVATE POPUP o SHOW POPUP.

Vea también

ACTIVATE POPUP | DEFINE BAR | DEFINE POPUP | SHOW POPUP


HIDE WINDOW (Comando)

Oculta una ventana activa definida por el usuario o una ventana de sistema de Microsoft Visual FoxPro.

HIDE WINDOW WindowName1 [, WindowName2 ... ] | ALL | SCREEN [ IN [WINDOW] WindowNameN | IN [WINDOW] SCREEN | IN [WINDOW] [BOTTOM | TOP | SAME]

Parámetros

WindowName1 [, WindowName2...]
Especifica el nombre de la ventana o la lista de ventanas (separadas por comas) que se va a ocultar. Si usa HIDE WINDOW sin ningún argumento, se ocultará la ventana activa. En Visual FoxPro puede especificar el nombre de una barra de herramientas que desea ocultar. Vea en SHOW WINDOW una lista con los nombres de barras de herramientas de Visual FoxPro.
ALL
Oculta todas las ventanas.
SCREEN
Oculta la ventana principal de Visual FoxPro. Para mostrar otra vez la ventana principal de Visual FoxPro, ejecute ACTIVATE WINDOW SCREEN o SHOW WINDOW SCREEN.
IN [WINDOW] WindowNameN
Oculta la ventana en una ventana primaria.
IN [WINDOW] SCREEN
Oculta explícitamente una ventana en la ventana principal de Visual FoxPro.
BOTTOM | TOP | SAME
Especifica dónde se ocultan las ventanas con respecto a otras ventanas. BOTTOM sitúa una ventana detrás de todas las demás. TOP (el valor predeterminado) coloca una ventana delante de todas las demás. SAME oculta una ventana sin influir en su situación desde el fondo al frente. Para conservar las posiciones relativas de varias ventanas ocultas cuando se vuelvan a mostrar con SHOW WINDOW ALL, incluya la palabra clave SAME al ocultarlas.

Observaciones

HIDE WINDOW elimina una ventana o un conjunto de ellas de la ventana principal de Visual FoxPro o de una ventana definida por el usuario. Puede utilizar HIDE WINDOW para ocultar ventanas del sistema, tales como la ventana Comandos, la ventana Sesión de datos, etc.

No es lo mismo ocultar una ventana que cerrarla. Cuando se oculta una ventana, permanece residente en memoria y activa. El resultado puede enviarse a una ventana oculta, pero no podrá verlo.

Al liberar una ventana, se borra de la memoria. Las ventanas borradas de memoria deberán definirse de nuevo para volver a mostrarse. Una ventana puede mostrarse con ACTIVATE WINDOW o SHOW WINDOW.

Para ocultar una ventana del sistema o una barra de herramientas (en Visual FoxPro), escriba entre comillas todo el nombre de la ventana o de la barra. Por ejemplo, para ocultar la barra de herramientas Controles de informe (Report Controls) en Visual FoxPro, ejecute el comando siguiente:

HIDE WINDOW "Report Controls"

Históricamente, en versiones anteriores de Visual FoxPro, la ventana Sesión de datos ha sido siempre referida como la ventana Ver. Adicionalmente, el lenguaje utilizado para controlar esta ventana, tales como HIDE WINDOW, ACTIVATE WINDOW, WONTOP( ), también e refiere a esta ventana y a la ventana Ver. Visual FoxPro continúa refiriéndose a la ventana con el comando HIDE WINDOW.

Ejemplo

En el ejemplo siguiente se define y activa una ventana denominada wOutput1. El programa espera a que usted presione una tecla y oculta la ventana. El programa espera otra vez a que presione una tecla y luego muestra la ventana. Al presionar por tercera vez una tecla, se borra la ventana de la pantalla y de la memoria.

DEFINE WINDOW wOutput1 FROM 6,1 TO 19,75 TITLE 'Output' ;
CLOSE FLOAT GROW ZOOM
ACTIVATE WINDOW wOutput1
WAIT WINDOW 'Press a key to hide this window'
HIDE WINDOW wOutput1
WAIT WINDOW 'Press a key to see the window again'
SHOW WINDOW wOutput1
WAIT WINDOW 'Press a key to remove the window from memory'
DEACTIVATE WINDOW wOutput1
RELEASE WINDOW wOutput1

Vea también

ACTIVATE WINDOW | DEACTIVATE WINDOW | DEFINE WINDOW | RELEASE WINDOW | SHOW WINDOW


IF ... ENDIF (Comando)

Ejecuta condicionalmente un conjunto de comandos dependiendo del resultado de una expresión lógica.

IF lExpression [THEN] Commands
[ELSE Commands] ENDIF

Parámetros

lExpression
Especifica la expresión lógica evaluada. Si lExpression da como resultado verdadero (.T.), se ejecutarán cualesquiera instrucciones posteriores a IF o THEN y anteriores a ELSE o ENDIF (lo que suceda primero).
  • Si lExpression es falso (.F.) y se incluye ELSE, se ejecutan los comandos situados después de ELSE y antes de ENDIF .
  • Si lExpression es falso (.F.) y no se incluye ELSE, se pasarán por alto todas las instrucciones entre IF y ENDIF. En este caso la ejecución del programa continuará con la primera línea de comando a continuación de ENDIF.

Observaciones

Puede anidar un bloque IF ... ENDIF dentro de otro bloque IF ... ENDIF.

Los observaciones precedidos de && se pueden colocar en la misma línea después de IF, THEN, ELSE y ENDIF. Estos observaciones se pasarán por alto durante la compilación y la ejecución del programa.

Ejemplo

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE Customer     && Open customer table
GETEXPR 'Enter condition to locate ' TO gcTemp;
TYPE 'L' DEFAULT 'COMPANY = ""'
LOCATE FOR &gcTemp  && Enter LOCATE expression
IF FOUND( )  && Was it found?
DISPLAY  && If so, display the record
ELSE  && If not found
? 'Condition ' + gcTemp + ' was not found '   && Display a message
ENDIF
USE

Vea también

DO CASE ... ENDCASE | DO WHILE ... ENDDO | FOR EACH ... ENDFOR | FOR ... ENDFOR | IIF( ) | SCAN ... ENDSCAN


INSERT - SQL (Comando)

Agrega un nuevo registro al final de la tabla, contiendo los valores especificados en los campos. El comando SQL INSERT SQL tiene tres sintaxis:

  • Use la primera sintaxis para insertar valores especificados en los campos de la tabla.
  • Use la segunda sintaxis para insertar los contenidos de los elementos de una matriz, variable de memoria, o propiedades de un objeto que coincida con los nombres de los campos de la tabla.
  • Use la tercera sintaxis para insertar registros desde un comando SELECT SQL dentro de los campos especificados de la tabla.
INSERT INTO dbf_name [(fname1 [, fname2, ...])] VALUES (eExpression1 [, eExpression2, ...])

–O bien–

INSERT INTO dbf_name FROM ARRAY ArrayName | FROM MEMVAR | FROM NAME ObjectName

-o-

INSERT INTO dbf_name [(fname1 [, fname2, ...])]    SELECT [(fname1 [, fname2, ...])] FROM tablename WHERE condition

Parámetros

INSERT INTO dbf_name
Especifica el nombre de la tabla a la que se anexará un registro. dbf_name puede incluir una ruta de acceso y puede ser una expresión de nombre.

Si la tabla especificada no está abierta, Visual FoxPro la abre en una nueva área de trabajo, y el nuevo registro es insertado en la tabla. La nueva área de trabajo no es seleccionada; el área de trabajo actual se mantiene seleccionada.

Si la tabla que especifica está abierta, INSERT anexa el registro a la tabla. Si la tabla está abierta en una área de trabajo distinta del área de trabajo actual, no se seleccionará después de anexar el registro; el área de trabajo actual se mantiene seleccionada

Mientras el comando se está ejecutando, el área de trabajo actual se cambia a el área en la cual el nuevo registros es insertado. En otras palabras, cuando el comando INSERT está en ejecución, éste es el contexto de la tabla al que se está insertado, a command is executed, it is in the context of the table being inserted into, regardless of what the current work area was before the command was issued.

[(fname1 [, fname2 [, ...]])]
Especifica los nombres de los campos del nuevo registro donde se insertan los valores.
VALUES (eExpression1 [, eExpression2 [, ...]])b
Especifica los valores de los campos insertados en el nuevo registro. Si omite los nombres de los campos, debe especificar los valores de los campos en el orden definido por la estructura de la tabla. Si SET NULL está en ON, INSERT intenta insertar valores nulos en cualquier campo no especificado en la clausula VALUES.

Si eExpression s el nombre de un campo, éste debe incluir el alias de la tabla.

FROM ARRAY ArrayName
Especifica la matriz cuyos datos se insertan en el nuevo registro. El contenido de los elementos de la matriz, comenzando por el primer elemento, se inserta en los campos correspondientes del registro. El contenido del primer elemento de la matriz se inserta en el primer campo del nuevo registro, el contenido del segundo elemento se inserta en el segundo campo, y así sucesivamente.

Los contenidos de los elementos de la matriz, iniciando con el primer elemento, son insertados dentro de los campos correspondientes del registro. El contenido de el primer elemento de la matriz, son insertado en el primer campo del nuevo registro, el contenido del segundo elemento de la matriz en el segundo campo, y así por el estilo.

Cuando incluye la cláusula FROM ARRAY , Visual FoxPro ignora cualquier valor por omisión de los campos.

FROM MEMVAR
Especifica que el contenido de una variable de memoria es insertado en campos con el mismo nombre que las variables. Si una variable no existe con el mismo nombre que el campo, el campo se queda vacio..
FROM NAME ObjectName
Especifica un objto de Visual FoxPro válido, cuyos nombres de campos coinciden con los nombres de campos de la tabla en el que desea insertar un nuevo registro conteniendo los valores de las propiedades del objeto. Puede especificar cualquier objeto válido de Visual FoxPro, el cual podría crearlo usando el comando SCATTER...NAME.

Cuando especifica un objeto, si la tabla tiene un campo que no coincide con una propiedad del objeto, Visual FoxPro desatiende el campo y lo deja en blanco, como si el comando APPEND BLANK hubiera sido ejecutado .

Nota Si el tipo de datos de una propiedad del objeto no coincide con el tipo de datos de el campo, Visual FoxPro genera un error de tipos de datos incompatibles. Tenga cuidado cuando especifique un objeto derevado de una clase de Visual FoxPro, debido a que muchas propiedades tienen tipos de datos que podrían diferir con los campos que está trabajando y esto no puede ser cambiado.

Cuando especifica un obejto, si un campo autoincremental existe en la tabla, no puede tener una propiedad del objeto que coincida con el campo autoincremental, a menos de que use SET AUTOINCERROR OFF para la sesión de datos. De otra manera, Visual FoxPro genera un error. Si usa SCATTER...NAME para crear el objeto mientras SET AUTOINCERROR está establecido en ON, puede usar la función REMOVEPROPERTY( ) para quitar cualquier propiedad autoincremental y evitar la generación del error. Para mas información, vea For more information, see REMOVEPROPERTY( ) Función.

SELECT [(fname1 [, fname2, ...])] FROM tablename WHERE condition
Especifica los campos a seleccionar desde una tabla o cursor a ser insertados en otra tabla o cursor. El estatuto SELECT no puede contener cualquier cláusula que no fuera SQL, por ejemplo, las cláusulas INTO o TO como las siguientes:

INTO Destination, TO FILE FileName [ADDITIVE], TO PRINTER [PROMPT], TO SCREEN, PREFERENCE PreferenceName [NOCONSOLE] [PLAIN] [NOWAIT]

Visual FoxPro actualiza la variable del sistema _TALLY con el número o filas insertadas.

Observaciones

Despues de la ejecución del comando INSERT, Visual FoxPro posiciona el puntero de registro en el nuevo registro.

Cuando usa INSERT con una instrucción SELECT, debe asegurarse que los datos insertados son compatibles con el tipo de datos en la tabla que se está insertando. Visual FoxPro intenta convertir el tipo de datos en cursor SELECT al tipo de datos correspondiente de la columna de la tabla o cursor al cual se está insertando. Si el dato insertado no es compatible, puede perderse precisión, los tipos de datos de fecha convertidos a tipos de dato carácter y cosas por el estilo.

Ejemplos

Ejemplo 1

En el siguiente ejemplo se abre la tabla employee y se agrega un registro.

USE employee
INSERT INTO employee (emp_no, fname, lname, officeno) ;
VALUES (3022, "John", "Smith", 2101)

Example 2

El siguiente ejmplo usa el comando USE para abrir la tabla Customer de la base de datos testdata y aplica SCATTER para copiar a variables los contenidos de el registro actual. COPY STRUCTURE copia la estructura de la tabla hacia una nueva llamda cust2. INSERT inserta un nuevo registro en la tabla cust2 desde variables de memoria. SELECT obtiene los datos desde cust2, y BROWSE muestra el nuevo registro. Para limpiar, USE sin el parámetro de tabla especificado cierra la tabla en el área de trabajo actual , y el comando DELETE elimina el archivo cust2.dbf.

CLOSE DATABASES
CLEAR
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE Customer     && Abrir la tabla Customer
SCATTER MEMVAR
COPY STRUCTURE TO cust2
INSERT INTO cust2 FROM MEMVAR
SELECT CUST2
BROWSE
USE
DELETE FILE cust2.dbf

Example 3

El siguiente ejemplo inserta datos provenientes de la tabla OrdersArchive desde una instrucción SELECT realizada en la tabla Orders.

INSERT INTO OrdersArchive (order_id, order_date, ship_name) ;
   SELECT order_id, order_date, ship_date FROM Orders ;
   WHERE order_date >= (DATE()-30)

Vea también

CREATE QUERY | CREATE TABLE - SQL | MODIFY QUERY | SELECT - SQL | _TALLY (Variable del sistema)


IMPORT (Comando)

Importa datos desde un formato de archivo externo para crear una nueva tabla de Visual FoxPro.

IMPORT FROM FileName   [DATABASE DatabaseName [NAME LongTableName]] [TYPE] FW2 | MOD | PDOX | RPD | WK1    | WK3 | WKS | WR1 | WRK | XLS | XL5 [SHEET cSheetName]   | XL8 [SHEET cSheetName]   [AS nCodePage]

Parámetros

FileName
Especifica el nombre del archivo del que se van a importar datos. Si no incluye ninguna extensión junto con el nombre de archivo, se usará la extensión predeterminada para el tipo de archivo especificado.
DATABASE DatabaseName
Especifica una base de datos a la que se agregará la nueva tabla.
NAME LongTableName
Especifica un nombre largo para la nueva tabla. Los nombres largos pueden contener un máximo de 128 caracteres y se pueden utilizar en lugar de nombres de archivo cortos en la base de datos.
TYPE
La palabra clave TYPE es opcional, pero debe incluir uno de los siguientes tipos de archivos que se indican a continuación:
Tipo de archivo | Descripción
FW2 | Incluya FW2 si desea importar archivos FW2, creados por Framework II.
MOD | Incluya MOD si desea importar archivos MOD, creados por Microsoft Multiplan versión 4.1.
PDOX | Incluya PDOX si desea importar archivos de Paradox. Los archivos de base de datos en las versiones 3.5 y 4.0 de Paradox, de Borland, pueden importarse si incluye la opción PDOX.
RPD | Incluya RPD si desea importar archivos RPD, creados por RapidFile.
WK1 | WK3 | WKS | Incluya WK1 para importar datos desde una hoja de cálculo de Lotus 1-2-3. Las columnas de la hoja de cálculo se convertirán en campos de la tabla, mientras que las filas se convertirán en registros de la tabla. Se le asignará una extensión WK1 a las hojas de cálculo creadas en Lotus 1-2-3 revisión 2.x, una extensión WK3 a las creadas en Lotus 1-2-3 revisión 3.x y una extensión .wks a las creadas en Lotus 1-2-3 revisión 1-A.
WR1 | WRK | Incluya WR1 si desea importar datos desde una hoja de cálculo de Lotus Symphony. Las columnas de la hoja de cálculo se convertirán en campos de la tabla, mientras que las filas se convertirán en registros de la tabla. Se le asignará una extensión WR1 a las hojas de cálculo creadas en Symphony versión 1.10 y una extensión .wrk a las creadas en Symphony versión 1.1.
XLS | Incluya XLS si desea importar datos desde hojas de cálculo de las versiones 2.0, 3.0 y 4.0 de Microsoft Excel. Las columnas de la hoja de cálculo se convertirán en campos de la tabla, mientras que las filas se convertirán en registros de la tabla. Los archivos de hoja de cálculo creados en Microsoft Excel tienen una extensión .xls.
XL5 [SHEET cSheetName] Incluya XL5 si desea importar datos de Microsoft Excel versión 5.0. Las columnas de la hoja de cálculo se convertirán en campos de la tabla, mientras que las filas se convertirán en registros de la tabla. Los archivos de hoja de cálculo creados en Microsoft Excel tienen una extensión .xls.

Si omite la cláusula SHEET, se importan los datos de la Hoja1. Para importar datos de una hoja específica, incluya la palabra clave SHEET y especifique el nombre de la hoja mediante cSheetName.
XL8 [SHEET cSheetName] Incluya XL8 si desea importar datos desde Microsoft Excel versión Microsoft Excel 97 Las columnas de la hoja de cálculo se convertirán en campos de la tabla, mientras que las filas se convertirán en registros de la tabla. Los archivos de hoja de cálculo creados en Microsoft Excel tienen una extensión .xls.

Si omite la cláusula SHEET, se importan los datos de la Hoja1. Para importar datos de una hoja específica, incluya la palabra clave SHEET y especifique el nombre de la hoja mediante cSheetName.
AS nCodePage
Especifica la página de códigos del archivo importado. Visual FoxPro copia el contenido del archivo importado y, a medida que copia los datos, los convierte automáticamente a la página de códigos actual de Visual FoxPro.

Si especifica un valor no aceptado para nCodePage Visual FoxPro generará un mensaje de error. Puede usar GETCP( ) para nCodePage si desea mostrar el cuadro de diálogo Página de códigos, que le permite especificar una página de códigos para el archivo importado.

Si omite AS nCodePage y Visual FoxPro no puede determinar la página de códigos del archivo importado, Visual FoxPro copiará el contenido del archivo importado y, a medida que copia los datos, los convertirá automáticamente a la página de códigos actual de Visual FoxPro. Si omite AS nCodePage y Visual FoxPro puede determinar la página de códigos del archivo importado, Visual FoxPro convertirá automáticamente los datos del archivo importado a la página de códigos actual de Visual FoxPro. Use CPCURRENT( ) para determinar la página de códigos actual de Visual FoxPro.

Si nCodePage es 0, Visual FoxPro supondrá que la página de códigos del archivo importado es la misma que la actual de Visual FoxPro y no realizará ninguna conversión de páginas de códigos.

Observaciones

La mayoría de los paquetes software almacenan sus datos en un formato de archivo que Visual FoxPro no puede abrir directamente. IMPORT crea una nueva tabla de Visual FoxPro a partir de los datos almacenados en formatos de archivo que Visual FoxPro no puede leer directamente.

Se crea una nueva tabla con el mismo nombre que el archivo desde el que se importan los datos. A la tabla recién creada se le asigna una extensión .dbf.

Vea también

APPEND FROM | COPY TO | EXPORT | GETCP( )


INDEX (Comando)

Crea un archivo de índice para mostrar registros de tabla y tener acceso a los mismos en un orden lógico.

INDEX ON eExpression TO IDXFileName | TAG TagName [OF CDXFileName]
 [ COLLATE cCollateSequence ] [OF CDXFileName] [FOR lExpression]
 [COMPACT] [ASCENDING | DESCENDING] [UNIQUE | CANDIDATE] [ADDITIVE]

Parámetros

eExpression
Especifica una expresión de índice que puede incluir el nombre de campos de la tabla actual. Se crea en el archivo de índice una clave de índice basada en la expresión de índice para cada registro de la tabla. Visual FoxPro usa estas claves para mostrar registros de la tabla y tener acceso a los mismos.
Nota No use una variable, un elemento de matriz, un campo o una expresión de campo de una tabla de otra área de trabajo para eExpression. Si tiene acceso a un índice que contenga una variable que ya no existe o que no se puede encontrar, Visual FoxPro generará un mensaje de error.

Los campos memo no se pueden usar individualmente en expresiones de archivo de índice; deben combinarse con otras expresiones de caracteres. Si incluye un campo con un prefijo de alias de tabla o letra de área de trabajo en la expresión de índice, Visual FoxPro generará un mensaje de error.

Aunque puede optimizar las cláusulas FOR con la tecnología Rushmore si se incluyen los campos con alias, se recomienda que evite el uso de campos con alias al crear índices. En varios casos (USE ... AGAIN, consultas SQL, etc.), se asigna automáticamente un alias diferente a una tabla y puede que el índice no se use o actualice de forma apropiada. Para obtener más información acerca de la tecnología Rushmore, vea Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.

Si intenta generar un índice con una clave que varía en longitud, la clave se rellena con espacios. Las claves de índice con longitud variable no se admiten en Visual FoxPro.

Es posible crear una clave de índice de longitud 0. Por ejemplo, cuando la expresión de índice es una subcadena de un campo memo vacío, se crea una clave de índice de longitud 0. Una clave de índice de longitud 0 generará un mensaje de error. Cuando Visual FoxPro crea un índice, evalúa los campos en el primer registro de la tabla. Si un campo está vacío, puede ser necesario escribir datos temporales en el campo del primer registro para evitar una clave de índice de longitud 0.

La longitud de una clave de índice para un índice .idx debe estar entre 1 y 100 caracteres. La longitud de una clave de índice para un índice .cdx debe estar entre 1 y 240. Bajo algunas secuencias de ordenación, o cuando use caracteres de dos bytes, cada carácter en eExpression utiliza dos caracteres en la clave de índice. En estos casos, la longitud de eExpression se limita a 120 caracteres.

Si intenta crear un índice con una clave que exceda el límite se produce un error "Longitud no válida para la clave".

TO IDXFileName
Crea un archivo de índice .idx. Se da al archivo de índice la extensión predeterminada .idx, que puede pasar por alto si incluye una extensión diferente o si cambia la extensión de índice predeterminada del archivo de configuración de Visual FoxPro. Deben cumplirse las reglas estándar de Windows para nombrar archivos, que incluyen nombres largos de archivo, al crear archivos de índice.
TAG TagName [COLLATE cCollateSequence] [OF CDXFileName]
Crea un archivo de índice compuesto. Un archivo de índice compuesto es un archivo de índice simple que consiste en un número cualquiera de etiquetas independientes (entradas de índice). Cada etiqueta está identificada por un nombre único de etiqueta. Los nombres de etiquetas deben comenzar con una letra o un signo de subrayado y pueden consistir en cualquier combinación de letras, números o subrayados hasta un máximo de diez. El número máximo de etiquetas de un archivo de índice compuesto solamente está limitado por el espacio libre en memoria y disco.

Los archivos de índice compuesto de entradas múltiples siempre son compactos. Por eso no es necesario incluir el comando COMPACT al crear un índice de este tipo. A los nombres de archivos de índice compuesto se les asigna una extensión .CDX.

La cláusula COLLATE cCollateSequence especifica una secuencia de ordenación diferente a MACHINE de la configuración predeterminada. El parámetro cCollateSequence debe ser una secuencia de ordenación válida de Visual FoxPro. Para más información acerca de establecer la secuencia de ordenación, consulte Optimizar aplicaciones internacionales y SET COLLATE (Comando).

Se pueden crear dos tipos de archivos de índice compuesto: estructurales y no estructurales.

Si excluye la cláusula opcional OF CDXFileName de TAG TagName, estará creando un archivo de índice compuesto estructural. Un archivo de índice compuesto estructural siempre lleva el mismo nombre base de la tabla y se abre de forma automática al abrir ésta.

Si no se puede encontrar el archivo de índice compuesto estructural de una tabla, se elimina o se cambia de nombre y aparece un cuadro de diálogo al intentar abrir la tabla. Si elige el botón Cancelar predeterminado, la tabla no se abrirá. Si elige Omitir se abre la tabla y se elimina el indicador del encabezado de la tabla que indica que está presente un archivo de índice compuesto estructural.

Sugerencia Para volver a asociar un índice compuesto estructural que ha sido separado de su tabla, ejecute el comando siguiente:
USE TableName INDEX CDXFileName

Si incluye la cláusula opcional OF CDXFileName después de TAG TagName, estará creando un archivo de índice compuesto no estructural. A diferencia de los archivos de índice compuesto estructurales, un archivo no estructural debe abrirse explícitamente incluyendo la cláusula SET INDEX o INDEX en la composición del comando USE.

Si ya se ha creado y abierto un archivo de índice compuesto, al ejecutar INDEX con TAG TagName se agrega una etiqueta al archivo de índice compuesto.

CDXFileName es el nombre del índice compuesto estructural no asociado. Asegúrese de reindexar la tabla si se ha modificado desde que se quito el índice compuesto estructural.

FOR lExpression
Especifica una condición en la que solamente los registros que satisfacen la expresión del filtro lExpression están disponibles para su visualización y acceso. Únicamente se crean las claves de índice de aquellos registros que cumplen la expresión del filtro.

Rushmore optimiza un comando INDEX ... FOR lExpression si lExpression es una expresión optimizable. Para obtener el máximo rendimiento, utilice una expresión optimizable en la cláusula FOR.

Para más información, consulte SET OPTIMIZE y Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.

COMPACT
Crea un archivo .IDX compacto.
ASCENDING
Especifica un orden ascendente para el archivo .CDX. Las etiquetas .CDX se crean de manera predeterminada en orden ascendente (puede incluir ASCENDING como recordatorio del orden del índice del archivo). Se puede indexar una tabla en orden inverso si se incluye DESCENDING.
DESCENDING
Especifica un orden descendente para el archivo .CDX. No se puede incluir DESCENDING al crear los archivos de índice .IDX. Sin embargo, sí puede especificar un orden descendente para un archivo de índice .IDX con SET INDEX y SET ORDER.
UNIQUE
Especifica que solamente se incluirá el primer registro encontrado en una clave de índice determinada en un archivo .IDX o en una etiqueta .CDX. Se puede usar UNIQUE para evitar la presentación o el acceso a los registros duplicados. Se excluyen todos los registros agregados con claves de índice duplicadas del archivo de índice. Utilizar la opción UNIQUE de INDEX es lo mismo que ejecutar SET UNIQUE ON antes de ejecutar INDEX o REINDEX.

Cuando está activo un índice o una etiqueta de índice se actualizan si se cambia un registro duplicado de manera que cambie su clave de índice. Sin embargo, no se puede mostrar ni tener acceso al siguiente registro duplicado con la clave de índice original hasta que vuelva a indexar el archivo con REINDEX.

CANDIDATE
Crea una etiqueta candidata de índice estructural. La palabra clave CANDIDATE sólo se puede incluir cuando se crea una etiqueta de índice estructural, de no ser así Visual FoxPro genera un mensaje de error.

Una etiqueta candidata de índice evita los valores duplicados del campo o la combinación de campos especificada en la expresión de índice eExpression. El término "candidata" se refiere al tipo de índice. Como los índices candidatos evitan los valores duplicados, se convierten en "candidatos" a ser índices principales.

Visual FoxPro genera un error si crea una etiqueta de índice candidata para un campo o combinación de campos que ya contengan valores duplicados.

Para obtener más información acerca de las etiquetas de índice candidato o principal, vea Establecer un índice principal o candidato.

ADDITIVE
Mantiene abiertos cualquier archivo de índice abierto anteriormente. Si omite la cláusula ADDITIVE cuando crea archivos de índice para una tabla con INDEX, los cerrará (excepto los de tipo compuesto estructural).

Observaciones

Los registros de una tabla que tiene un archivo de índice se muestran, y se tiene acceso a los mismos, en el orden especificado por la expresión del índice. El orden físico de los registros de la tabla no se ve alterado por la presencia de un índice.

Si SET TALK está establecido en ON (activado), Visual FoxPro informa de cuántos registros se indexan durante el proceso. El intervalo de registros mostrados durante la indexación puede especificarse con SET ODOMETER.

Utilice DISPLAY STATUS para mostrar más información acerca de los archivos de índice. Esta información incluye los nombres de todos los archivos de índice abiertos, sus tipos (estructural, .CDX, .IDX), las expresiones del índice, sus secuencias de correlación y el nombre del archivo de índice o etiqueta maestros.

El número de archivos de índice (.idx o .cdx) que pueden abrirse sólo está limitado por la memoria y los recursos del sistema. En Visual FoxPro, FoxPro para Windows y FoxPro para MS-DOS, el número máximo de archivos que puede abrir viene determinado por la opción FILES del archivo de configuración CONFIG.SYS de MS-DOS. Si desea más información acerca de la opción FILES, consulte su manual de MS-DOS.

Tipos de índices Visual FoxPro le permite crear dos tipos de archivos de índice:

  • Archivos de índice compuesto .CDX con entradas de índice múltiples denominadas etiquetas.
  • Archivos de índice .IDX con una sola entrada de índice.

También puede crear un archivo de índice compuesto estructural, que se abrirá automáticamente con la tabla.

Sugerencia Los archivos de índice compuesto son los preferidos, ya que se abren automáticamente al abrir la tabla.

Incluya COMPACT para crear archivos de índice .IDX compactos. Los archivos de índice compuesto siempre son compactos.

Orden del índice y actualización Un único archivo de índice (el archivo de índice maestro) o etiqueta (la etiqueta maestra) controla el orden en que se muestra la tabla o en el que se tiene acceso a la misma. Algunos comandos, como SEEK, utilizan el archivo de índice maestro o la etiqueta para buscar registros. Sin embargo, todos los archivos de índice .IDC o .CDX abiertos se actualizan al mismo tiempo que se realizan los cambios en la tabla. Puede elegir el archivo de índice maestro o la etiqueta con la cláusula INDEX de USE, o con SET INDEX y SET ORDER.

Nota Si se reemplaza un campo de clave, cambiará la posición relativa en el índice para el registro actual. Por tanto, debe ser prudente al realizar una operación como REPLACE ALL o SCAN … ENDSCAN mientras cambia el índice para el alcance. Esto también se aplica a operaciones REPLACE en los índices generados con una cláusula FOR.

Funciones definidas por el usuario Aunque una expresión de índice puede contener una función definida por el usuario, no debería utilizarlas en una expresión de índice. Las funciones definidas por el usuario dentro de una expresión de índice aumentan el tiempo necesario para crear o actualizar el índice. Además, no se pueden realizar actualizaciones del índice cuando se utiliza una función definida por el usuario en una expresión de índice.

Si utiliza una función definida por el usuario en una expresión de índice, Visual FoxPro debe ser capaz de localizar esa función. Cuando Visual FoxPro crea un índice, la expresión del índice se guarda en el archivo de índice, pero solamente se incluye una referencia en el mismo.

Ejemplo

El ejemplo 1 abre la tabla customer y crea un archivo de índice denominado complist, que muestra y procesa los registros en el orden alfabético del campo company.

En el ejemplo 2, se abre de nuevo la tabla customer y se crea un archivo de índice llamado citycomp a partir de una subcadena de los primeros cinco caracteres del campo city y los seis primeros del campo company. Cuando se utiliza este índice, los registros de la tabla se ordenan principalmente por el campo city y como segundo criterio por el campo company.

En el ejemplo 3, se crean las etiquetas de índice. La primera etiqueta es una etiqueta de índice compuesto estructural para address. La segunda etiqueta se crea en un archivo de índice no estructural llamado custcdx.

* Example 1
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE Customer     && Abre tabla customer
INDEX ON company TO complist
CLEAR
DISPLAY STATUS
* Example 2
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE Customer     && Abre tabla customer
INDEX ON SUBSTR(city,1,5) + SUBSTR(company,1,6) TO citycomp
CLEAR
DISPLAY STATUS
* Example 3
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE Customer     && Abre tabla customer
INDEX ON address TAG address
INDEX ON company TAG company OF custcdx
CLEAR
DISPLAY STATUS

Vea también

ALTER TABLE | CDX( ) | COPY INDEXES | COPY TAG | DELETE TAG | DESCENDING( ) | FOR( ) | INDEXSEEK( ) | KEY( ) | MDX( ) | NDX( ) | ORDER( ) | REINDEX | SET COLLATE | SET INDEX | SET ODOMETER | SET ORDER | SET TALK | SET UNIQUE | SORT | SYS(14) | SYS(21) | SYS(22) | SYS(2021) | TAG( ) | TAGCOUNT( ) | USE


KEYBOARD (Comando)

Sitúa la expresión de caracteres especificada en el búfer de teclado.

KEYBOARD cKeyboardValue   [PLAIN] [CLEAR]

Parámetros

cKeyboardValue
Especifica la expresión de caracteres que se introduce en el búfer de teclado. La expresión de caracteres puede ser una cadena de caracteres, una etiqueta de tecla, un conjunto de etiquetas de tecla o una función definida por el usuario (FDU) que devuelva una expresión de caracteres.

Si cKeyboardValue es una etiqueta de tecla, deberá incluirla entre llaves y comillas. Por ejemplo:

KEYBOARD '{CTRL+LEFTARROW}'

Para ver una lista de etiquetas de clave, vea ON KEY LABEL.

El búfer de teclado puede llenarse con hasta 128 caracteres. Una vez que se llena el búfer, los caracteres adicionales se pasan por alto.

PLAIN
Si tiene definidas macros de teclado o tiene un comando ON KEY LABEL activo, puede incluir PLAIN para eludir esas asignaciones de tecla. PLAIN llenará el teclado con el carácter de tecla literal, no con la asignación de tecla.

Por ejemplo, si ha asignado un comando a la tecla A mediante ON KEY LABEL y se incluye A en cKeyboardValue, utilice PLAIN para situar la letra A en el búfer de teclado. El comando ON KEY LABEL asignado a A no se ejecutará.

CLEAR
Vacía el búfer de teclado antes de llenarlo con cKeyboardValue.

Observaciones

Utilice KEYBOARD para situar caracteres en el búfer de teclado. Los caracteres permanecerán en el búfer hasta que Visual FoxPro busque una entrada de teclado. En este punto, los caracteres se leerán y procesarán como si los datos se hubieran escrito directamente desde el teclado.

Puede utilizar KEYBOARD para crear sistemas de demostración autoejecutables que actúen como escaparate de sus aplicaciones.

Vea también

CHRSAW( ) | ON KEY LABEL | PLAY MACRO | SET FUNCTION


LABEL (Comando)

Imprime etiquetas desde un archivo de tabla y un archivo de definición de etiqueta.

LABEL [FORM FileName1 | FORM ?] [ENVIRONMENT] [Scope] [FOR lExpression1] [WHILE lExpression2] [NOCONSOLE] [NOOPTIMIZE] [PDSETUP] [PREVIEW [NOWAIT]] [NAME ObjectName] [TO PRINTER [PROMPT] | TO FILE FileName2]

Parámetros

FORM FileName1
Especifica el nombre de un archivo de definición de etiqueta cuyas etiquetas se desea imprimir. La extensión predeterminada para un archivo de definición de etiquetas es .lbx. Si este archivo de definición de etiquetas está en una unidad distinta de la predeterminada o en un directorio distinto del actual, también deberá especificar el asignador de unidad y el directorio.
FORM ?
Muestra el cuadro de diálogo Abrir, en el que puede elegir un archivo de etiqueta existente.
ENVIRONMENT
Se incluye por compatibilidad con las etiquetas de la versión 2.x. Para restaurar el entorno de datos asociado a una etiqueta de Visual FoxPro, establezca la propiedad AutoOpenTables del entorno de datos en el valor verdadero (.T.), que es el valor predeterminado. Para asegurarse de que el entorno de etiquetas está cerrado cuando se termina de imprimir una etiqueta, establezca la propiedad AutoCloseTables del entorno de datos en el valor verdadero (.T.), que también es el valor predeterminado.

Cuando cree o modifique etiquetas, puede guardar el entorno de datos actual de Visual FoxPro con el archivo de definición de etiquetas. Al guardar el entorno de datos de Visual FoxPro se incluyen registros adicionales en la tabla de definición de etiquetas para todas las tablas y archivos de índice abiertos, el orden de índice y cualquier relación entre las tablas.

Scope
Especifica un intervalo de registros. Solamente se imprimen los registros incluidos en el intervalo. Las cláusulas de alcance son: ALL, NEXT nRecords, RECORD nRecordNumber y REST. Para obtener más información acerca de las cláusulas de alcance, vea Alcance (Cláusulas). Los comandos que incluyen Scope sólo actúan sobre la tabla del área de trabajo activa.

El alcance predeterminado de LABEL es ALL (todos los registros).

FOR lExpression1
Especifica una condición por la cual solamente se imprimen los registros que satisfacen la condición lógica lExpression1. Este argumento permite filtrar los registros que no desea imprimir.

Rushmore optimizará una consulta creada con LABEL ... FOR si lExpression1 es una expresión optimizable. Para obtener el máximo rendimiento, utilice una expresión optimizable en la cláusula FOR.

Si desea obtener más información, vea SET OPTIMIZE y Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.

WHILE lExpression2
Especifica una condición por la cual los registros se imprimen siempre y cuando la expresión lógica lExpression2 dé como resultado verdadero (.T.).
NOCONSOLE
Suprime la presentación del resultado de la etiqueta en la ventana principal de Visual FoxPro o en una ventana definida por el usuario en el momento de imprimir etiquetas o de enviarlas a un archivo.
NOOPTIMIZE
Desactiva la optimización Rushmore de LABEL.

Si desea obtener más información, vea SET OPTIMIZE y Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.

PDSETUP
Carga una configuración del controlador de impresora.

En Visual FoxPro, puede incluir PDSETUP de forma que pueda utilizar una configuración del controlador de impresora para imprimir etiquetas basadas en caracteres creadas en FoxPro para MS-DOS. PDSETUP se pasa por alto durante la impresión de etiquetas basadas en gráficos creadas en Visual FoxPro.

PREVIEW [NOWAIT]
Muestra las etiquetas en una ventana de vista previa antes de imprimir, pero no imprime las etiquetas. Para imprimir las etiquetas, deberá volver a ejecutar LABEL sin la cláusula PREVIEW.

En Visual FoxPro, se puede incluir la cláusula opcional NOWAIT para que, en tiempo de ejecución, Visual FoxPro no espere a que se cierre la ventana de vista previa de la página para continuar la ejecución del programa. En lugar de esto, Visual FoxPro continuará la ejecución del programa mientras esté abierta la ventana de vista previa de la página.

NAME ObjectName
Especifica un nombre de variable de objeto para el entorno de datos de una etiqueta. El entorno de datos y los objetos del entorno de datos tienen propiedades y métodos, como AddObject, que necesitan establecerse o llamarse en tiempo de ejecución. La variable de objeto ofrece acceso a estas propiedades y métodos. Si no especifica NAME, Visual FoxPro usará un valor predeterminado para el nombre del archivo de etiqueta al que se puede hacer referencia en el código asociado a los eventos.
TO PRINTER [PROMPT]
Envía una etiqueta a la impresora. Puede incluir la cláusula opcional PROMPT para mostrar el cuadro de diálogo Imprimir antes de que comience la impresión.
TO FILE FileName2
Envía etiquetas basadas en caracteres creadas en FoxPro para MS-DOS al archivo de texto especificado con FileName2. El archivo que se crea cuando se incluye TO FILE tiene la extensión predeterminada .TXT.

Observaciones

Los archivos de definición de etiqueta se crean con MODIFY LABEL o CREATE LABEL.

Si ejecuta LABEL sin argumentos adicionales, aparecerá el cuadro de diálogo Abrir, que muestra una lista de los archivos de etiqueta existentes para que usted elija.

Vea también

Comandos | CREATE LABEL | MODIFY LABEL


LIST (Comandos)

Muestra continuamente información de tabla o de entorno.

LIST   [FIELDS FieldList]    [Scope] [FOR lExpression1] [WHILE lExpression2]   [OFF]   [NOCONSOLE]   [NOOPTIMIZE] [TO PRINTER [PROMPT] | TO FILE FileName [ADDITIVE]] -or- LIST FILES   [ON Drive]    [LIKE FileSkeleton] [TO PRINTER [PROMPT] | TO FILE FileName [ADDITIVE]] -or- LIST MEMORY   [LIKE FileSkeleton]   [NOCONSOLE] [TO PRINTER [PROMPT] | TO FILE FileName [ADDITIVE]] -or- LIST STATUS   [NOCONSOLE] [TO PRINTER [PROMPT] | TO FILE FileName [ADDITIVE]] -or- LIST STRUCTURE   [IN nWorkArea | cTableAlias]   [NOCONSOLE] [TO PRINTER [PROMPT] | TO FILE FileName [ADDITIVE]]

Observaciones

Estos comandos LIST son idénticos a los comandos DISPLAY, excepto en las diferencias siguientes:

ADDITIVE
Anexa al final del archivo especificado. Si omite ADDITIVE, se sobrescribirá el archivo con el valor de la expresión.
  • El alcance predeterminado de LIST es ALL (todos los registros).
  • LIST no le avisa después de llenar con información la ventana principal de Microsoft Visual FoxPro o una ventana definida por el usuario.
  • LIST no muestra los registros marcados para su eliminación cuando SET DELETED esté establecido en ON.

Para obtener más información acerca de los comandos LIST, vea los comandos DISPLAY correspondientes.

Vea también

DISPLAY | DISPLAY FILES | DISPLAY MEMORY | DISPLAY STATUS | DISPLAY STRUCTURE | SET DELETED


LIST CONNECTIONS (Comando)

Muestra continuamente información sobre las conexiones con nombre de la base de datos actual.

LIST CONNECTIONS   [TO PRINTER [PROMPT] | TO FILE FileName [ADDITIVE]]   [NOCONSOLE]

Parámetros

TO PRINTER [PROMPT]
Dirige el resultado de LIST CONNECTIONS a una impresora.

En Visual FoxPro, puede incluir una cláusula PROMPT opcional para mostrar un cuadro de diálogo Imprimir antes de comenzar a imprimir. Coloque PROMPT justo después de TO PRINTER.

TO FILE FileName
Dirige el resultado de LIST CONNECTIONS al archivo especificado con FileName. Si ya existe el archivo y SET SAFETY está establecido en ON, Visual FoxPro muestra un mensaje que pregunta si desea sobrescribir el archivo.
ADDITIVE
Añade al fin del archivo nombrado. Si usted omite el ADITIVE, entonces el archivo se sobrescribe con el valor de la expresión.
NOCONSOLE
Impide que se muestre el resultado en la ventana principal de Visual FoxPro o en la ventana activa definida por el usuario.

Observaciones

La información que se muestra incluye los nombres de conexiones con nombre, orígenes de datos y cadenas de conexión de la base de datos actual. Utilice DBGETPROP( ) para devolver información adicional acerca de conexiones en la base de datos actual.

Ejemplo

El ejemplo siguiente supone que hay un origen de datos ODBC disponible llamado MyFoxSQLNT y que el Id. de usuario para el origen de datos es "sa". Se abre la base de datos testdata y se crea una conexión llamada Myconn. Se utiliza LIST CONNECTIONS para enumerar las conexiones con nombre de la base de datos.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')

CREATE CONNECTION Myconn DATASOURCE "MyFoxSQLNT" USERID "sa" PASSWORD "<password>"
CLEAR
LIST CONNECTIONS     && Lists named connections in the database

Vea también

CREATE CONNECTION | DELETE CONNECTION | DBGETPROP( ) | DISPLAY CONNECTIONS | RENAME CONNECTION


LIST DATABASE (Comando)

Muestra continuamente información sobre la base de datos actual.

LIST DATABASE [TO PRINTER [PROMPT] | TO FILE FileName [ADDITIVE]] [NOCONSOLE]

Parámetros

TO PRINTER [PROMPT]
Dirige el resultado de LIST DATABASE a una impresora.

En Visual FoxPro, puede incluir una cláusula PROMPT opcional para mostrar un cuadro de diálogo Imprimir antes de comenzar a imprimir. Coloque PROMPT justo después de TO PRINTER.

TO FILE FileName
Dirige el resultado de LIST DATABASE al archivo especificado con FileName. Si ya existe el archivo y SET SAFETY está establecido en ON, Visual FoxPro muestra un mensaje que pregunta si desea sobrescribir el archivo.
ADDITIVE
Agrega el resultado al final del archivo mencionado. Si se omite ADDITIVE, entonces el archivo es sobre-escrito con el valor de la expresión.
NOCONSOLE
Impide que se muestre el resultado en la ventana principal de Visual FoxPro o en la ventana activa definida por el usuario.

Observaciones

Utilice DBGETPROP( ) para devolver información adicional acerca de la base de datos actual.

Ejemplo

El ejemplo siguiente crea una base de datos llamada people. Se crea una tabla llamada friends y se agrega automáticamente a la base de datos. Se usa DISPLAY TABLES para mostrar las tablas de la base de datos y LIST DATABASES para mostrar información sobre las tablas de la base de datos.

CREATE DATABASE people
CREATE TABLE friends (FirstName C(20), LastName C(20))
CLEAR
DISPLAY TABLES  && Displays tables in the database
LIST DATABASE  && Lists table information

Vea también

DISPLAY DATABASE | CREATE DATABASE (Comando) | DBGETPROP( ) (Función)


LIST DLLS (Comando)

Muestra continuamente información sobre funciones del archivo DLL de Windows de 32 bits registradas en Visual FoxPro con DECLARE - DLL.

LIST DLLS [TO PRINTER [PROMPT] | TO FILE FileName [ADDITIVE]] [NOCONSOLE]

Parámetros

TO PRINTER [PROMPT]
Dirige el resultado de LIST DLLS a una impresora.

En Visual FoxPro, puede incluir una cláusula PROMPT opcional para mostrar un cuadro de diálogo Imprimir antes de comenzar a imprimir. Coloque PROMPT justo después de TO PRINTER.

TO FILE FileName
Dirige el resultado de LIST DLLS al archivo especificado con FileName. Si ya existe el archivo y SET SAFETY está establecido en ON, Visual FoxPro muestra un mensaje que pregunta si desea sobrescribir el archivo.
ADDITIVE
Agrega el resultado al final del archivo mencionado. Si se omite ADDITIVE, entonces el archivo es sobre-escrito con el valor de la expresión.
NOCONSOLE
Impide que se muestre el resultado en la ventana principal de Visual FoxPro o en la ventana actual definida por el usuario.

Vea también

DECLARE - DLL | DISPLAY DLLS | SET SAFETY (Comando)


LIST OBJECTS (Comando)

Muestra continuamente información sobre un objeto o un grupo de objetos.

LIST OBJECTS [LIKE cObjectSkeleton]

[TO PRINTER [PROMPT] | TO FILE FileName [ADDITIVE]]   [NOCONSOLE]

Parámetros

LIKE cObjectSkeleton
Muestra información acerca de un subconjunto de objetos. cObjectSkeleton es un patrón de especificación de objetos que admite comodines (* y ?). Por ejemplo, para mostrar continuamente todos los objetos que comienzan por A, utilice el comando siguiente:
LIST OBJECTS LIKE A*
TO PRINTER [PROMPT]
Dirige el resultado de LIST OBJECTS a una impresora.

Puede incluir la cláusula PROMPT opcional para mostrar un cuadro de diálogo Imprimir antes de comenzar a imprimir. Coloque la palabra clave PROMPT justo después de TO PRINTER.

TO FILE FileName
Dirige el resultado de LIST OBJECTS al archivo de disco especificado con FileName. Si ya existe el archivo y SET SAFETY está establecido en ON, Visual FoxPro muestra un mensaje que pregunta si desea sobrescribir el archivo.
ADDITIVE
Agrega el resultado al final del archivo mencionado. Si se omite ADDITIVE, entonces el archivo es sobre-escrito con el valor de la expresión.
NOCONSOLE
Impide que se muestre el resultado en la ventana principal de Visual FoxPro o en la ventana activa definida por el usuario.

Observaciones

LIST OBJECTS muestra la información siguiente sobre todos los objetos existentes:

  • Propiedades y sus valores
  • Métodos
  • Objetos miembro, y la clase o subclase en la que se basan
  • Clase o subclase en que se basan los objetos
  • Jerarquía de clases de los objetos

LIST OBJECTS llena toda la ventana principal de Visual FoxPro sin detenerse.

Ejemplo

El ejemplo siguiente usa DEFINE CLASS y CREATEOBJECT( ) para crear dos clases personalizadas llamadas FormChild y FormGrandChild a partir de la clase de base Form de Visual FoxPro. LIST OBJECTS muestra información sobre los objetos y sus propiedades.

CLEAR
frmMyForm = CREATEOBJECT("FormGrandChild")
LIST OBJECTS LIKE frm*
RELEASE frmMyForm
DEFINE CLASS FormChild AS FORM
ENDDEFINE
DEFINE CLASS FormGrandChild AS FormChild
ENDDEFINE

Vea también

DISPLAY OBJECTS | DEFINE CLASS (Comando) | CREATEOBJECT( ) (Función)


LIST PROCEDURES (Comando)

Muestra continuamente los nombres de procedimientos almacenados en la base de datos actual.

LIST PROCEDURES [TO PRINTER [PROMPT] | TO FILE FileName [ADDITIVE]] [NOCONSOLE]

Parámetros

TO PRINTER [PROMPT]
Dirige la información devuelta desde LIST PROCEDURES a una impresora.

Puede incluir PROMPT para mostrar un cuadro de diálogo Imprimir antes de comenzar a imprimir. Coloque la palabra clave PROMPT justo después de TO PRINTER.

TO FILE FileName
Dirige el resultado de LIST PROCEDURES al archivo de disco especificado con FileName. Si ya existe el archivo y SET SAFETY está establecido en ON, Visual FoxPro muestra un mensaje que pregunta si desea sobrescribir el archivo.
ADDITIVE
Agrega el resultado al final del archivo mencionado. Si se omite ADDITIVE, entonces el archivo es sobre-escrito con el valor de la expresión.
NOCONSOLE
Impide que se muestre el resultado en la ventana principal de Visual FoxPro o en la ventana activa definida por el usuario.

Observaciones

Los procedimientos almacenados se crean con MODIFY PROCEDURES.

Ejemplo

El ejemplo siguiente abre la base de datos testdata y usa LIST PROCEDURES para mostrar los procedimientos almacenados (si hay alguno) de la base de datos.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
CLEAR
LIST PROCEDURES  && Lists stored procedures in the database

Vea también

APPEND PROCEDURES | COPY PROCEDURES | CREATE DATABASE | DISPLAY DATABASE | DISPLAY PROCEDURES | MODIFY PROCEDURE


LIST TABLES (Comando)

Muestra continuamente todas las tablas y la información sobre las tablas contenidas en la base de datos actual.

LIST TABLES [TO PRINTER [PROMPT] | TO FILE FileName [ADDITIVE]] [NOCONSOLE]

Parámetros

TO PRINTER [PROMPT]
Dirige la información devuelta desde LIST TABLES a una impresora.

Puede incluir PROMPT para mostrar un cuadro de diálogo Imprimir antes de comenzar a imprimir. Coloque la palabra clave PROMPT justo después de TO PRINTER.

TO FILE FileName
Dirige el resultado de LIST TABLES al archivo de disco especificado con FileName. Si ya existe el archivo y SET SAFETY está establecido en ON, Visual FoxPro muestra un mensaje que pregunta si desea sobrescribir el archivo.
ADDITIVE
Agrega el resultado al final del archivo mencionado. Si se omite ADDITIVE, entonces el archivo es sobre-escrito con el valor de la expresión.
NOCONSOLE
Impide que se muestre el resultado en la ventana principal de Visual FoxPro o en la ventana activa definida por el usuario.

Observaciones

La información devuelta incluye los nombres y las rutas de acceso de las tablas y es un subconjunto de la información que se muestra mediante LIST STATUS. Sin embargo, la información que aparece con LIST TABLES sólo contiene información relacionada con las tablas y muestra la información independientemente de que las tablas estén abiertas.

Ejemplo

El ejemplo siguiente abre la tabla customer de la base de datos testdata. Se usa LIST TABLES para mostrar información sobre las tablas de la base de datos.

CLOSE DATABASES
SET PATH TO (HOME(2) + 'data\')   && Sets path to database
OPEN DATABASE testdata  && Open testdata database
CLEAR
LIST TABLES  && Lists information about tables in the database

Vea también

ADD TABLE | CLOSE DATABASES | CREATE DATABASE | DISPLAY TABLES | OPEN DATABASE | REMOVE TABLE


LIST VIEWS (Comando)

Muestra continuamente información sobre vistas SQL de la base de datos actual.

LIST VIEWS [TO PRINTER [PROMPT] | TO FILE FileName [ADDITIVE]] [NOCONSOLE]

Parámetros

TO PRINTER [PROMPT]
Dirige la información devuelta desde LIST VIEWS a una impresora.

Puede incluir PROMPT para mostrar un cuadro de diálogo Imprimir antes de comenzar a imprimir. Coloque la palabra clave PROMPT justo después de TO PRINTER.

TO FILE FileName
Dirige el resultado de LIST VIEWS al archivo de disco especificado con FileName. Si ya existe el archivo y SET SAFETY está establecido en ON, Visual FoxPro muestra un mensaje que pregunta si desea sobrescribir el archivo.
ADDITIVE
Agrega el resultado al final del archivo mencionado. Si se omite ADDITIVE, entonces el archivo es sobre-escrito con el valor de la expresión.
NOCONSOLE
Impide que el resultado se muestre en la ventana principal de Microsoft Visual FoxPro o en la ventana actual definida por el usuario.

Observaciones

LIST VIEWS muestra los nombres de las vistas SQL de la base de datos actual e indica si las vistas SQL se basan en tablas locales o remotas. Utilice DBGETPROP( ) para devolver información adicional acerca de vistas SQL de la base de datos actual.

Las vistas SQL se crean con CREATE SQL VIEW.

Ejemplo

El ejemplo siguiente abre la base de datos testdata. Se usa CREATE SQL VIEW para crear una vista local SQL llamada myview. Se muestra el Diseñador de vistas, que le permite especificar tablas y condiciones para la vista SQL. Una vez guardada la vista SQL que cree, se muestra información sobre las vistas SQL de la base de datos.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
CREATE SQL VIEW myview
CLEAR
LIST VIEWS

Vea también

CREATE DATABASE | CREATE SQL VIEW | DBGETPROP( ) | DISPLAY DATABASE | DISPLAY VIEWS


LOCAL (Comando)

Crea variables locales y matrices de variables.

LOCAL Var1 [AS type [OF ClassLib]] | [ArrayName1(nRows1, [, nColumns1]) [AS type [OF ClassLib]] ]
[, Var2 [AS type [OF ClassLib]]] [, ArrayName2(nRows2, [, nColumns2]) [AS type [OF ClassLib]] ]
-O bien-

LOCAL [ARRAY] ArrayName1(nRows1 [, nColumns1]) [AS type [OF ClassLib]]
[, ArrayName2(nRows2 [, nColumns2]) [AS type [OF ClassLib]] ]

Parámetros

VarList
Especifica una o más variables locales que se crearán.
[ARRAY] ArrayName1 (nRows1 [, nColumns1]) [, ArrayName2 (nRows2 [, nColumns2])] ...
Especifica una o más matrices locales que se crearán. Vea DIMENSION para obtener una descripción de cada argumento.
AS type
Especifica el tipo de datos en el que se basa esta variable o matriz.
OF ClassLib
Especifica la biblioteca de clases que contiene la descripción del tipo en que se basa el elemento type de esta variable o matriz.

Observaciones

Los elementos de VarList se separan mediante comas. Las variables locales y las matrices de variables sólo se pueden emplear y modificar en el procedimiento o la función donde se crean, y no pueden tener acceso a ellas los programas de nivel inferior o superior. Las matrices y las variables locales se liberan cuando termina de ejecutarse el procedimiento o la función que las contiene.

Las matrices y las variables creadas con LOCAL se inicializan como falso (.F.). Si desea declarar como local cualquier matriz o variable, hágalo antes de asignarle un valor. Visual FoxPro genera un mensaje de error si asigna un valor a una variable o una matriz, y posteriormente la declara local con LOCAL.

Las variables locales pueden transferirse por referencia.

LOCAL no puede abreviarse, ya que LOCAL y LOCATE coinciden en las cuatro primeras letras.

La información de tipo requerida por el analizador de CodeSense en IntelliSense sólo estará disponible cuando cree referencias a objetos y variables con información de tipo con la cláusula AS opcional.

Cuando se especifica un nombre de clase válido, Visual FoxPro utiliza el valor de typelib (si especifica un ProgID) o crea una instancia del objeto para obtener la lista de propiedades, métodos y eventos. Si no se encuentra el nombre de clase especificado, Visual FoxPro muestra una lista desplegable de clases disponibles.

Vea también

DIMENSION | FUNCTION | LPARAMETERS | PARAMETERS | PARAMETERS( ) | PRIVATE | PUBLIC | RELEASE


LOCATE (Comando)

Busca secuencialmente en la tabla el primer registro que coincida con la expresión lógica especificada.

LOCATE [FOR lExpression1]   [Scope]   [WHILE]   [NOOPTIMIZE]

Parámetros

FOR lExpression1
LOCATE busca secuencialmente en la tabla actual el primer registro que coincida con la expresión lógica lExpression1.

Rushmore optimizará una consulta creada con LOCATE FOR si lExpression1 es una expresión optimizable. Para obtener el máximo rendimiento, utilice una expresión optimizable en la cláusula FOR.

Si desea obtener más información, vea SET OPTIMIZE y Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.

Scope
Especifica el intervalo de objetos que se buscará. Solamente se buscarán los registros incluidos en el intervalo. Las cláusulas de alcance son: ALL, NEXT nRecords, RECORD nRecordNumber y REST. Los comandos que incluyen Scope sólo actúan sobre la tabla del área de trabajo activa.

El alcance predeterminado de LOCATE es ALL (todos los registros).

WHILE lExpression2
Especifica una condición por la cual se buscan los registros siempre y cuando la expresión lógica lExpression2 dé como resultado verdadero (.T.).
NOOPTIMIZE
Desactiva la optimización Rushmore de LOCATE.

Si desea obtener más información, vea SET OPTIMIZE y Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.

Observaciones

No es necesario que la tabla esté indizada.

Si utiliza el comando LOCATE sin la expresión FOR, Visual FoxPro coloca el puntero del registro en el primer registro lógico. Esto es más rápido que utilizar GO TOP cuando se utiliza un filtro o cuando DELETED está establecido a ON.

Si LOCATE encuentra un registro coincidente, podrá utilizar RECNO( ) para devolver el número del registro coincidente. Si se encuentra un registro coincidente, FOUND( ) devolverá verdadero (.T.) y EOF( ) devolverá falso (.F.). Si SET TALK está establecido en ON, se mostrará el número del registro coincidente.

Después de que LOCATE encuentre un registro coincidente, puede ejecutar CONTINUE para buscar registros coincidentes adicionales en el resto de la tabla. Cuando se ejecuta CONTINUE, se reanuda el proceso de búsqueda a partir del registro que sigue inmediatamente al registro coincidente. Puede ejecutar CONTINUE repetidamente hasta llegar al final del alcance o de la tabla.

Si no se encuentra ninguna coincidencia, RECNO( ) devolverá el número de registros de la tabla más uno, FOUND( ) devolverá falso (.F.) y EOF( ) devolverá verdadero (.T.).

LOCATE y CONTINUE son específicos del área de trabajo actual. Si se selecciona otra área de trabajo, el proceso de búsqueda original podrá continuarse cuando se vuelva a seleccionar el área de trabajo original.

Ejemplo

En el ejemplo siguiente se encuentran los registros correspondientes a clientes de Alemania ("Germany"). A continuación se muestra el número total.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer  && Abre tabla Customer
SET TALK OFF
STORE 0 TO gnCount
LOCATE FOR ALLTRIM(UPPER(customer.country)) = 'GERMANY'
DO WHILE FOUND( )
gnCount = gnCount + 1
? company
CONTINUE
ENDDO
? 'Total compañías de Alemania: '+ LTRIM(STR(gnCount))

Vea también

CONTINUE | EOF( ) | FIND | FOUND( ) | INDEXSEEK( ) | RECNO( ) | SEEK | SEEK( ) | SET OPTIMIZE


LOOP (Comando)

Devuelve el control del programa directamente al principio de una estructura de bucle.

LOOP

Observaciones

Puede colocar LOOP en cualquier parte entre DO WHILE y ENDDO, entre FOR y ENDFOR entre FOR EACH y ENDFOR o entre SCAN y ENDSCAN.

El comando LOOP devuelve el control directamente a la cláusula DO WHILE, FOR o FOR EACH sin ejecutar las instrucciones existentes entre LOOP y ENDDO o ENDFOR. Se aumentará o disminuirá el valor del contador como si se alcanzara la instrucción END....

Vea también

DO WHILE ... ENDDO | FOR ... ENDFOR | FOR EACH ... ENDFOR | SCAN ... ENDSCAN | EXIT


LPARAMETERS (Comando)

Asigna a matrices o variables locales los datos transferidos desde el programa que llama.

LPARAMETERS Parameter1 [AS type [OF ClassLib]] [, Parameter2 [AS type [OF ClassLib]]]

Parámetros

ParameterList
Especifica los nombres de matrices o variables locales a los que se asignan datos.

Los parámetros de ParameterList están separados por comas. Como mínimo, debe haber tantos parámetros en la instrucción LPARAMETERS como en la instrucción DO ... WITH. Si se incluyen más variables o matrices en la instrucción LPARAMETERS de las que se pasan con DO ... WITH, las variables o las matrices restantes se inicializan como Falso (.F.). Pueden pasarse un máximo de 26 parámetros.

Puede utilizar PARAMETERS( ) para determinar el número de parámetros pasados al programa, procedimiento o función definida por el usuario que se ha ejecutado más recientemente.

AS type
Especifica el tipo de datos que utiliza esta variable.
OF ClassLib
Especifica la biblioteca de clases que contiene la descripción del tipo en la que se basa el elemento type de esta variable.

Observaciones

Los distintos elementos de ParameterList se separan con comas. LPARAMETERS crea matrices y variables locales dentro de un programa, procedimiento o función definida por el usuario que se ha llamado. Utilice PARAMETERS para crear matrices o variables privadas.

LPARAMETERS debe ser la primera instrucción ejecutable del programa, el procedimiento o la función definida por el usuario que se ha llamado si se le pasan valores, variables o matrices.

De forma predeterminada, DO ... WITH pasa las variables y matrices a los procedimientos por referencia. Cuando cambia un valor en el procedimiento al que se llama, el nuevo valor vuelve a pasarse a la variable o la matriz asociada en el programa que llama. Si desea pasar una variable o matriz a un procedimiento por valor, encierre la variable o matriz entre paréntesis en la lista de parámetros de DO ... WITH. Los cambios realizados en el parámetro del procedimiento llamado no se pasarán de vuelta al programa que llama.

De forma predeterminada, las variables se pasan por referencia a un procedimiento y por valor a una función definida por el usuario. Utilice SET UDFPARMS TO REFERENCE para pasar variables a una función definida por el usuario por referencia.

La información de tipo requerida por el analizador de CodeSense en IntelliSense sólo estará disponible cuando cree referencias a objetos y variables con información de tipo con la cláusula AS opcional.

Vea también

DO | FUNCTION | LOCAL | PARAMETERS | PARAMETERS( ) (Función) | PRIVATE | PROCEDURE | PUBLIC | SET UDFPARMS | PCOUNT( ) (Función)


MD | MKDIR (Comando)

Crea un nuevo directorio o subdirectorio en el disco.

MD cPath | MKDIR cPath

Parámetros

cPath
Especifica una ruta de acceso (con un designador de unidad y un directorio) o un directorio.

Si cPath es un directorio sin un designador de unidad, se creará el directorio como subdirectorio del directorio predeterminado de Visual FoxPro.

Observaciones

Visual FoxPro genera un mensaje de error si intenta crear un directorio que ya existe.

Ejemplo

El ejemplo siguiente utiliza MKDIR para crear un nuevo directorio llamado mytstdir y luego, usa CHDIR para cambiar al nuevo directorio. GETDIR( ) se emplea para mostrar la estructura del directorio y, a continuación, se usa RMDIR para quitar el directorio recién creado. GETDIR( ) se utiliza para mostrar de nuevo la estructura del directorio.

SET DEFAULT TO HOME( )  && Restore Visual FoxPro directory
MKDIR mytstdir  && Create a new directory
CHDIR mytstdir  && Change to the new directory
= GETDIR( )  && Display the Select Directory dialog box
SET DEFAULT TO HOME( )  && Restore Visual FoxPro directory
RMDIR mytstdir  && Remove the new directory
= GETDIR( )  && Display the Select Directory dialog box

Vea también

CD | CHDIR | DIRECTORY | DIRECTORY( ) | GETDIR( ) | HOME( ) | RD | RMDIR | SET DEFAULT | SET PATH | SYS(5) - Unidad predeterminada | SYS(2003) - Directorio actual | SYS(2004) - Directorio de inicio de Visual FoxPro


MENU (Comando)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar el Diseñador de menús.


MODIFY CLASS (Comando)

Abre el Diseñador de clases, que permite modificar una definición de clase existente o crear una nueva definición de clase.

MODIFY CLASS ClassName [OF ClassLibraryName1] [AS cBaseClassName [FROM ClassLibraryName2]] [NOWAIT] [METHOD MethodName] [SAVE]

Parámetros

ClassName
Especifica el nombre de la definición de clase que se va a modificar o crear.
OF ClassLibraryName1
Especifica el nombre de la biblioteca de clases visuales .vcx que contiene la definición de clase. Si crea una nueva definición de clase y ya existe la biblioteca de clases visuales .vcx, la definición de clase se agregará a ella.

La biblioteca de clases visuales utiliza una extensión de archivo .vcx. Incluya la extensión de archivo si la biblioteca de clases visuales que especifica tiene una extensión distinta de .vcx.

Si la biblioteca de clases visuales .vcx que especifica se encuentra actualmente en la lista de búsqueda de SET CLASSLIB, la biblioteca de clases visuales se eliminará de la lista de búsqueda.

AS cBaseClassName
Especifica la clase en la que se basa la definición de clase. Puede especificar cualquier clase de base de Visual FoxPro excepto Column y Header. También puede especificar una clase definida por el usuario si incluye la cláusula FROM ClassLibraryName2 que especifica el nombre de la biblioteca de clases visuales (.vcx) que contiene la clase definida por el usuario.

Si omite AS cBaseClassName, la definición de clase se basará en la clase de base FormSet de Visual FoxPro.

FROM ClassLibraryName2
Especifica el nombre de la biblioteca de clases visuales .vcx que contiene la clase definida por el usuario que se especifica con cBaseClassName.
METHOD MethodName
Especifica un evento o método para el que se va a abrir la ventana Código en el Diseñador de clases. La cláusula METHOD le permite iniciar inmediatamente la edición de código de evento o de método en el Diseñador de clases.

MethodName acepta la sintaxis de objetos de Visual FoxPro. Por ejemplo, para modificar inmediatamente el código del evento Click para un cuadro de texto llamado txtFirstName en la clase llamada MyClass en una biblioteca de clases visuales llamada MyClassLibrary, use el siguiente comando:

MODIFY CLASS MyClass OF MyClassLibrary METHOD txtFirstName.Click

Si sólo incluye un nombre de evento o de método en la cláusula METHOD, se abrirá la ventana Código para el evento o el método de la clase. Por ejemplo, para modificar inmediatamente el código de evento Click para una clase llamada MyClass en una biblioteca de clases visuales llamada MyClassLibrary, use el siguiente comando:

MODIFY CLASS MyClass OF MyClassLibrary METHOD Click
NOWAIT
Continúa la ejecución del programa después de abrir el Diseñador de clases. El programa no espera a que se cierre el Diseñador de clases, sino que continúa la ejecución en la línea de programa que sigue inmediatamente a la línea que contiene MODIFY CLASS NOWAIT. Si omite NOWAIT al ejecutar MODIFY CLASS en un programa, se abre el Diseñador de clases y la ejecución del programa se interrumpe hasta que se cierre.

NOWAIT sólo es efectivo desde dentro de un programa. No afecta a MODIFY CLASS cuando se ejecuta desde la ventana Comandos. Si se incluye NOWAIT con la cláusula METHOD, asegúrese de colocar NOWAIT antes de la cláusula METHOD o se ignorará.

SAVE
Deja el Diseñador de clases abierto después de activar otra ventana. Si omite SAVE, el Diseñador de clases se cerrará cuando se active otra ventana. El hecho de incluir SAVE no tiene ningún efecto cuando se ejecuta desde la ventana Comandos.

Observaciones

Utilice MODIFY CLASS para modificar una definición de clase existente o para crear una nueva definición de clase y guardarla en una biblioteca de clases visuales .vcx. Puede abrir la biblioteca de clases visuales .vcx con SET CLASSLIB, lo que le permite tener acceso a las definiciones de clase en la biblioteca de clases visuales .vcx.

Vea también

ADD CLASS | CREATE CLASS | CREATE CLASSLIB | RELEASE CLASSLIB | SET CLASSLIB


MODIFY COMMAND (Comando)

Abre una ventana de edición de texto y le permite modificar o crear un archivo de programa.

MODIFY COMMAND [FileName | ?] [NOEDIT] [NOMENU] [NOWAIT] [RANGE nStartCharacter, nEndCharacter] [[WINDOW WindowName1] [IN [WINDOW] WindowName2 | IN SCREEN]] [AS nCodePage] [SAME] [SAVE]

Parámetros

FileName
Especifica el nombre del archivo para el programa que se va a abrir o crear. Si no especifica una extensión para un nuevo archivo de programa, Visual FoxPro asigna automáticamente la extensión .prg. MODIFY COMMAND admite una estructura de archivo que contenga los caracteres comodín asterisco (*) e interrogación (?). Se abrirá una ventana de edición de texto para cada programa cuyo nombre coincida con la estructura de archivos.

Si omite el nombre del archivo, aparecerá una ventana de edición de texto para un archivo que inicialmente se llama Prog1.prg. Cuando cierre la ventana de edición de texto podrá guardar el archivo con un nombre diferente.

?
Muestra el cuadro de diálogo Abrir. Elija uno de los programas existentes o escriba el nombre de un programa nuevo que desee crear.
NOEDIT
Especifica que el archivo de programa no podrá cambiarse, pero podrá visualizarse y copiarse al Portapapeles.
NOMENU
Elimina el título de menú Formato de la barra de menús del sistema de Visual FoxPro, lo que impide cambios de fuente, tamaño de fuente, espacio interlineal y sangrado.
NOWAIT
Continúa con la ejecución del programa después de que se abra la ventana de edición de texto. El programa no espera a que se cierre la ventana de edición, sino que continúa la ejecución en la línea de programa siguiente a la que contiene MODIFY COMMAND NOWAIT. Si omite NOWAIT al utilizar MODIFY COMMAND en un programa, se abre una ventana de edición y la ejecución del programa se interrumpe hasta que se cierra la ventana.

NOWAIT sólo es efectivo desde dentro de un programa. No ejerce ningún efecto en MODIFY COMMAND cuando se ejecuta desde la ventana Comandos.

Se produce un NOWAIT implícito cuando abre más de una ventana de edición de texto con un solo comando MODIFY COMMAND. Por ejemplo:

MODIFY COMMAND *.PRG.
RANGE nStartCharacter, nEndCharacter
Especifica un rango de caracteres seleccionado cuando la ventana de edición de texto es abierta. Los caracteres se seleccionan comenzando en la posición especificada con nStartCharacter hasta el carácter que se encuentre en la posición nEndCharacter. Si nStartCharacter es igual a nEndCharacter, no se seleccionará ningún carácter y el cursor se situará en la posición especificada con nStartCharacter.
WINDOW WindowName1
Especifica una ventana de la cual asumirá las características la ventana de edición de texto. Por ejemplo, si la ventana está definida con la cláusula FLOAT de DEFINE WINDOW, la ventana de edición de texto podrá moverse. No es necesario que la ventana esté activa o sea visible, pero debe estar definida.
IN [WINDOW] WindowName2
Especifica una ventana primaria dentro de la cual se abrirá una ventana de edición de texto. La ventana de edición de texto no asumirá las características de la ventana primaria y no puede moverse fuera de la ventana primaria. Si se mueve la ventana primaria, la ventana de edición de texto se moverá con ella.

Para tener acceso a la ventana de edición de texto, la ventana primaria debe estar definida anteriormente con DEFINE WINDOW y debe estar visible.

IN SCREEN
Abre explícitamente la ventana de edición en la ventana principal de Visual FoxPro, después de haberla situado en una ventana primaria. Se colocará una ventana de edición en una ventana primaria incluyendo la cláusula IN WINDOW.
AS nCodePage
Convierte automáticamente los caracteres acentuados de un programa o archivo de texto creado en otra plataforma de Visual FoxPro. La expresión numérica nCodePage especifica la página de códigos de la plataforma de Visual FoxPro en la que se creó el archivo de programa. El archivo se guarda con esa página de códigos hasta que elija Guardar como... del menú Archivo para guardar el archivo con una página de códigos distinta.
SAME
Evita que la ventana de edición de texto se ponga delante como ventana activa. Si la ventana de edición de texto está oculta, se mostrará pero no se convertirá en la ventana activa.
SAVE
Conserva la ventana de edición de texto abierta después de que otra ventana se active. Si omite SAVE, la ventana de edición de texto se cierra cuando otra ventana se activa. El hecho de incluir SAVE no tiene ningún efecto cuando se ejecuta desde la ventana Comandos.

Observaciones

Cuando se hacen modificaciones a un archivo de programa, el archivo actualizado se escribe en el disco. En Visual FoxPro, se creará un archivo de seguridad con una extensión .BAK cuando seleccione la casilla de verificación "Hacer copia de seguridad" en la ficha Modificar del cuadro de diálogo Propiedades, que aparece al elegir Propiedades en el menú Edición.

Se utilizará el editor incorporado de Visual FoxPro a menos que especifique un editor externo con TEDIT en su archivo de configuración.

Vea también

* | && | DO | MODIFY FILE | NOTE | EDITSOURCE( )


MODIFY CONNECTION (Comando)

Muestra el Diseñador de conexiones, que permite modificar interactivamente una conexión con nombre almacenada en la base de datos actual.

MODIFY CONNECTION [ConnectionName | ?]

Parámetros

ConnectionName
Especifica el nombre de la conexión a modificar.
?
Muestra el cuadro de diálogo Abrir, en el que podrá elegir una conexión con nombre para modificar.

Observaciones

Si omite los argumentos opcionales, aparecerá el cuadro de diálogo Abrir, que permite especificar la conexión con nombre que se va a modificar. El Diseñador de conexiones aparecerá después de elegir una conexión con nombre para modificar.

Ejemplo

El ejemplo siguiente supone que hay un origen de datos ODBC disponible llamado MyFoxSQLN. Se abre la base de datos testdata y se crea una conexión llamada Myconn MODIFY CONNECTION se emplea para mostrar el Diseñador de conexiones, que permite modificar la conexión.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')

CREATE CONNECTION Myconn DATASOURCE "MyFoxSQLNT" USERID "<userid>" PASSWORD "<password>"
MODIFY CONNECTION Myconn && Muestra las conexiones en la base de datos.

Vea también

CREATE CONNECTION | DELETE CONNECTION | OPEN DATABASE | RENAME CONNECTION


MODIFY DATABASE (Comando)

Abre el Diseñador de bases de datos, en el que podrá modificar de forma interactiva la base de datos actual.

MODIFY DATABASE [DatabaseName | ?] [NOWAIT] [NOEDIT]

Parámetros

DatabaseName
Especifica el nombre de la base de datos a modificar.
?
Muestra el cuadro de diálogo Abrir, en el que podrá especificar el nombre de la base de datos a modificar.
NOWAIT
Continúa la ejecución del programa después de abrir el Diseñador de bases de datos. El programa no espera a que se cierre el Diseñador de bases de datos, sino que continúa la ejecución en la línea del programa que sigue inmediatamente a la línea que contiene MODIFY DATABASE NOWAIT. Si omite NOWAIT cuando se ejecuta MODIFY DATABASE en un programa, se abre el Diseñador de bases de datos y se detiene la ejecución del programa hasta que se cierre el Diseñador de bases de datos.

NOWAIT sólo es efectivo desde dentro de un programa. No surte ningún efecto sobre MODIFY DATABASE cuando se ejecuta desde la ventana Comandos.

NOEDIT
Impide la inclusión de cambios en la base de datos.

Observaciones

MODIFY DATABASE activa el evento dbc_Activate (Evento). Para obtener más información acerca de cómo modificar de forma interactiva una base de datos mediante el Diseñador de bases de datos, vea Diseñador de bases de datos y Agregar tablas a bases de datos.

Ejemplo

El siguiente ejemplo muestra el Diseñador de bases de datos con las tablas de la base de datos testdata.

CLOSE DATABASES
SET PATH TO (HOME(2) + 'data\')     && Establece la ruta de la base de datos
MODIFY DATABASE testdata  && Abre la base de datos testdata

Vea también

ADD TABLE | CLOSE DATABASES | CREATE DATABASE | DBC( ) | DBGETPROP( ) | DBSETPROP( ) | DELETE DATABASE | DISPLAY TABLES | OPEN DATABASE | REMOVE TABLE | Diseñador de bases de datos | Agregar tablas a bases de datos


MODIFY FILE (Comando)

Abre una ventana de edición y le permite modificar o crear un archivo de texto.

MODIFY FILE [FileName | ?] [NOEDIT] [NOMENU] [NOWAIT] [RANGE nStartCharacter, nEndCharacter] [[WINDOW WindowName1] [IN [WINDOW] WindowName2 | IN SCREEN]] [AS nCodePage] [SAME] [SAVE]

Parámetros

FileName
Especifica el nombre del archivo para el archivo de texto. Si no especifica una extensión para un archivo de texto nuevo, Visual FoxPro le asigna automáticamente la extensión .txt. MODIFY FILE admite una estructura de archivo que contenga los caracteres comodín asterisco (*) e interrogación (?). Se abrirá una ventana de edición de texto para cada archivo de texto cuyo nombre coincida con la estructura de archivos.

Si omite el nombre del archivo, aparecerá una ventana de edición de texto para un archivo que inicialmente se llama ARCHIVO1. Cuando cierre la ventana de edición de texto podrá guardar el archivo con un nombre diferente.

?
Muestra el cuadro de diálogo Abrir, desde el que puede elegir un archivo de texto.
NOEDIT
Especifica que el archivo de texto no podrá cambiarse, pero podrá visualizarse y copiarse al Portapapeles.
NOMENU
Elimina el título de menú Formato de la barra de menús del sistema de Visual FoxPro, lo que impide cambios de fuente, tamaño de fuente, espacio interlineal y sangrado.
NOWAIT
Continúa con la ejecución del programa después de que se abra la ventana de edición de texto. El programa no espera a que se cierre la ventana de edición, sino que continúa la ejecución en la línea de programa inmediatamente posterior a la que contiene MODIFY FILE NOWAIT. Si omite NOWAIT al ejecutar MODIFY FILE en un programa, la ventana de edición se abre y la ejecución del programa se interrumpe hasta que se cierre la ventana de edición.

NOWAIT sólo es efectivo desde dentro de un programa. No ejerce ningún efecto en MODIFY FILE cuando se ejecuta desde la ventana Comandos.

Se produce un NOWAIT implícito cuando abre más de una ventana de edición de texto con un solo comando MODIFY FILE. Por ejemplo:

MODIFY FILE *.TXT
RANGE nStartCharacter, nEndCharacter
Especifica un rango de caracteres seleccionado cuando la ventana de edición de texto es abierta. Los caracteres se seleccionan comenzando en la posición especificada con nStartCharacter hasta el carácter que se encuentre en la posición nEndCharacter. Si nStartCharacter es igual a nEndCharacter, no se seleccionará ningún carácter y el cursor se situará en la posición especificada con nStartCharacter.
WINDOW WindowName1
Especifica una ventana de la cual asumirá las características la ventana de edición de texto. Por ejemplo, si la ventana está definida con la cláusula FLOAT de DEFINE WINDOW, la ventana de edición de texto podrá moverse. No es necesario que la ventana esté activa o sea visible, pero debe estar definida.
IN [WINDOW] WindowName2
Especifica una ventana primaria dentro de la cual se abrirá una ventana de edición de texto. La ventana de edición de texto no asumirá las características de la ventana primaria y no puede moverse fuera de la ventana primaria. Si se mueve la ventana primaria, la ventana de edición de texto se moverá con ella.

Para tener acceso a la ventana de edición de texto, la ventana primaria debe estar definida anteriormente con DEFINE WINDOW y debe estar visible.

IN SCREEN
Abre explícitamente la ventana de edición en la ventana principal de Visual FoxPro, después de haberla situado en una ventana primaria. Se colocará una ventana de edición en una ventana primaria incluyendo la cláusula IN WINDOW.
AS nCodePage
Convierte automáticamente los caracteres acentuados de un programa o archivo de texto creado en otra plataforma de Visual FoxPro. La expresión numérica nCodePage especifica la página de códigos de la plataforma de Visual FoxPro en la que se creó el archivo de programa. El archivo se guarda con esa página de códigos hasta que elija Guardar como... del menú Archivo para guardar el archivo con una página de códigos distinta.
SAME
Evita que la ventana de edición de texto se ponga delante como ventana activa. Si la ventana de edición de texto está oculta, se mostrará pero no se convertirá en la ventana activa.
SAVE
Conserva la ventana de edición de texto abierta después de que otra ventana se active. Si omite SAVE, la ventana de edición de texto se cierra cuando otra ventana se activa. El hecho de incluir SAVE no tiene ningún efecto cuando se ejecuta desde la ventana Comandos.

Observaciones

Cuando se hacen modificaciones a un archivo de texto, el archivo actualizado se escribe en el disco. En Visual FoxPro, se crea un archivo de copia de seguridad con la extensión .BAK si selecciona la casilla de verificación "Hacer copia de seguridad" en la ficha Modificar del cuadro de diálogo Propiedades, que aparece al elegir Propiedades en el menú Edición. En versiones anteriores de FoxPro, si selecciona la casilla de verificación Copia de seguridad en el cuadro de diálogo Preferencias que aparece cuando elige Preferencias en el menú Edición, se creará un archivo de respaldo con la extensión .bak.

Se utilizará el editor incorporado de Visual FoxPro a menos que especifique un editor externo con TEDIT en su archivo de configuración.

Vea también

* | && | DO | MODIFY COMMAND | NOTE


MODIFY FORM (Comando)

Abre el Diseñador de formularios para que pueda modificar o crear uno.

MODIFY FORM [FormName | ?][NOWAIT][METHOD MethodName] [NOENVIRONMENT][SAVE] [[WINDOW WindowName1] [IN [WINDOW] WindowName2 | IN SCREEN]]

Parámetros

FormName
Especifica el nombre de archivo del Form. Si no especifica una extensión para el nombre de archivo, Visual FoxPro le asigna automáticamente la extensión .scx.
?
Muestra el cuadro de diálogo Abrir, en el que puede elegir un Form existente o introducir el nombre del Form nuevo que desea crear.
NOWAIT
Continúa la ejecución del programa después de abrir el Diseñador de formularios. El programa no espera a que se cierre el Diseñador de formularios, sino que continúa la ejecución en la línea del programa que sigue inmediatamente a la línea que contiene MODIFY FORM NOWAIT. Si omite NOWAIT, cuando se ejecuta MODIFY FORM en un programa, se abrirá el Diseñador de formularios y la ejecución del programa se detendrá hasta que se cierre el Diseñador de formularios.

NOWAIT sólo es efectivo desde dentro de un programa. No surte ningún efecto sobre MODIFY FORM cuando se ejecuta desde la ventana Comandos. Si se incluye NOWAIT con la cláusula METHOD, asegúrese de colocar NOWAIT antes de la cláusula METHOD o se ignorará.

METHOD MethodName
Especifica un evento o un método para el que se abrirá la ventana Código en el Diseñador de formularios. La cláusula METHOD le permite iniciar inmediatamente la edición de código de evento o de método en el Diseñador de formularios.

MethodName acepta la sintaxis de objetos de Visual FoxPro. Por ejemplo, para modificar inmediatamente el código de evento Click para un cuadro de texto llamado txtFirstName en un formulario llamado frmAddress, use el siguiente comando:

MODIFY FORM frmAddress METHOD txtFirstName.Click

Si sólo incluye un nombre de evento o de método en la cláusula METHOD, se abrirá la ventana Código para el evento o el método del formulario. Por ejemplo, para modificar inmediatamente el código de evento Click para un formulario llamado frmAddress, use el siguiente comando:

MODIFY FORM frmAddress METHOD Click
NOENVIRONMENT
Incluido por compatibilidad con las versiones anteriores de pantallas 2.x, que impide la restauración del entorno guardado con la pantalla.

En Visual FoxPro, el entorno de datos asociado con un formulario de Visual FoxPro se restaura estableciendo la propiedad AutoOpenTables del entorno de datos en el valor verdadero (.T.), que es su valor predeterminado. Para asegurarse de que se ha cerrado el entorno del formulario al liberar el formulario, establezca la propiedad AutoOpenTables de entorno de datos en el valor verdadero (.T.), que además es su valor predeterminado.

Cuando cree o modifique formularios, puede guardar el entorno de datos de Visual FoxPro actual con el archivo de definición del formulario. El hecho de guardar el entorno de datos de Visual FoxPro coloca registros adicionales en la tabla de definición de formularios para todas las tablas abiertas y archivos de índice, el orden del índice, y todas las relaciones entre tablas.

SAVE
Cuando se ejecuta en un programa, deja el Diseñador de formularios abierto después de activar otra ventana. La inclusión de la opción SAVE no tiene ningún efecto cuando se ejecuta desde la ventana Comandos.
WINDOW WindowName1
Especifica una ventana cuyas características adopta el Diseñador de formularios. Por ejemplo, si se crea la ventana con la opción FLOAT de DEFINE WINDOW, puede moverse el Diseñador de formularios. No es necesario que la ventana esté activa o sea visible, pero debe estar definida.

El Diseñador de formularios tiene un tamaño predeterminado que puede ser mayor que la ventana de la que toma sus características. En este caso, el Diseñador de formularios sigue adoptando las características de la ventana en la que está situado. El ángulo superior izquierdo del Diseñador de formularios se sitúa en las mismas coordenadas que el ángulo superior izquierdo de la ventana y va más allá de los bordes de la ventana.

IN [WINDOW] WindowName2
Especifica una ventana primaria en la que se abre el Diseñador de formularios. El Diseñador de formularios no toma las características de la ventana primaria y no puede moverse fuera de la ventana primaria. Si se mueve la ventana primaria, el Diseñador de formularios se mueve con ella.

La ventana primaria debe definirse en primer lugar con DEFINE WINDOW y debe ser visible, para poder tener acceso al Diseñador de formularios.

IN SCREEN
Especifica que el Diseñador de formularios se abre explícitamente en la ventana principal de Visual FoxPro, una vez que el Diseñador de formularios se ha situado en una ventana primaria. El Diseñador de formularios se sitúa en una ventana primaria al incluir la cláusula IN WINDOW.

Observaciones

Si ejecuta MODIFY FORM sin argumentos, aparecerá el cuadro de diálogo Abrir. Puede guardar el formulario con otro nombre cuando cierre el Diseñador de formularios.

Ejemplo

El ejemplo siguiente abre el control de muestra cronómetro (SWATCH.SCX) en el Diseñador de formularios.

MODIFY FORM (HOME(2) + 'solution\controls\timer\swatch.scx')

Vea también

COMPILE FORM | CREATE FORM | DO FORM


MODIFY GENERAL (Comando)

Abre una ventana de edición de un campo general en el registro actual.

MODIFY GENERAL GeneralField1 [, GeneralField2 ...] [NOMODIFY] [NOWAIT] [[WINDOW WindowName1] [IN [WINDOW] WindowName2 | IN SCREEN]]

Parámetros

GeneralField1 [, GeneralField2 ...]
Especifique los nombres de los campos generales a abrir. Para abrir una ventana de edición para un campo general en una tabla abierta en un área de trabajo no concurrente, incluya el alias de la tabla con el nombre del campo. Puede abrir varios campos generales incluyendo una lista de campos generales separados por comas.
NOMODIFY
Especifica que el objeto OLE contenido en el campo general no podrá cambiarse, pero podrá visualizarse y copiarse al Portapapeles.
NOWAIT
Continúa con la ejecución del programa después de que se abra la ventana de edición de campo general. El programa no espera a que se cierre la ventana de edición, sino que continúa la ejecución en la línea de programa siguiente a la que contiene MODIFY GENERAL NOWAIT. Si omite NOWAIT al utilizar MODIFY GENERAL en un programa, se abre una ventana de edición y la ejecución del programa se interrumpe hasta que se cierra la ventana.

NOWAIT sólo es efectivo desde dentro de un programa. No ejerce ningún efecto en MODIFY GENERAL cuando se ejecuta desde la ventana Comandos.

WINDOW WindowName1
Especifique una ventana cuyas características asumirá la ventana de edición del campo general. Por ejemplo, si la ventana está definida con la cláusula FLOAT de DEFINE WINDOW, la ventana del campo general podrá moverse. No es necesario que la ventana esté activa o sea visible, pero debe estar definida.
IN [WINDOW] WindowName2
Especifique una ventana primaria en la cual se abrirá la ventana de edición del campo general. La ventana del campo general no asumirá las características de la ventana primaria y no podrá moverse fuera de ella. Si la ventana primaria se mueve, la ventana de edición de campo general se moverá con ella.

Para tener acceso a la ventana de edición del campo general, la ventana primaria debe estar definida anteriormente con DEFINE WINDOW y debe ser visible.

IN SCREEN
Abre explícitamente la ventana de campo general en la ventana principal de FoxPro, después de haberla situado en una ventana primaria. La ventana de edición de campo general se sitúa en una ventana primaria incluyendo la cláusula IN WINDOW.

Observaciones

Cuando se abre la ventana, puede insertar, modificar o borrar objetos OLE.

Para obtener más información, vea Agregar objetos OLE a las aplicaciones.

Vea también

@ ... SAY - Imágenes y objetos OLE | APPEND GENERAL


MODIFY LABEL (Comando)

Abre el Diseñador de etiquetas para crear o modificar una etiqueta.

MODIFY LABEL [FileName | ?] [[WINDOW WindowName1] [IN [WINDOW] WindowName2 | IN SCREEN]] [NOENVIRONMENT] [NOWAIT] [SAVE]

Parámetros

FileName
Especifica el nombre de archivo para la etiqueta. Si no especifica ninguna extensión para este archivo, Visual FoxPro le asignará automáticamente la extensión .lbx. Si el archivo que especifica no existe o no puede encontrarse, se creará un nuevo archivo de etiqueta.
?
Muestra el cuadro de diálogo Abrir, en el cual puede elegir una etiqueta existente o introducir el nombre de una nueva etiqueta que desee crear.
WINDOW WindowName1
Especifica una ventana cuyas características asume el Diseñador de etiquetas. Por ejemplo, si la ventana se crea con la opción FLOAT de DEFINE WINDOW, el Diseñador de etiquetas podrá moverse. La ventana no tiene que estar activa o visible, pero debe estar definida.

El Diseñador de etiquetas tiene un tamaño predeterminado que puede ser mayor que la ventana de la que toma sus características. En este caso, el Diseñador de etiquetas asume no obstante las características de la ventana en que se encuentra. La esquina superior izquierda del Diseñador de etiquetas se sitúa en las mismas coordenadas que la esquina superior izquierda de la ventana y puede extenderse más allá de los bordes de la ventana.

IN [WINDOW] WindowName2
Especifica una ventana primaria en la cual se abre el Diseñador de etiquetas. El Diseñador de etiquetas no asume las características de la ventana primaria, ni tampoco se puede mover fuera de ella. Si se mueve la ventana primaria, el Diseñador de etiquetas se moverá con ella.

La ventana primaria debe definirse primero con DEFINE WINDOW y debe estar visible para tener acceso al Diseñador de etiquetas.

IN SCREEN
Abre explícitamente la ventana Diseñador de etiquetas en la ventana principal de FoxPro, después de haberla colocado en una ventana primaria. El Diseñador de etiquetas se sitúa en una ventana primaria al incluir la cláusula IN WINDOW.
NOENVIRONMENT
Se incluye por compatibilidad con etiquetas de la versión 2.x, impidiendo que se guarde el entorno con la etiqueta.

En Visual FoxPro, el entorno de datos asociado con una etiqueta de Visual FoxPro se restaura estableciendo la propiedad de entorno de datos AutoOpenTables en el valor verdadero (.T.), que es el valor predeterminado. Para asegurarse de que el entorno de etiquetas está cerrado cuando se termina de imprimir una etiqueta, establezca la propiedad AutoCloseTables del entorno de datos en el valor verdadero (.T.), que también es el valor predeterminado.

Cuando cree o modifique etiquetas, puede guardar el entorno de datos actual de Visual FoxPro con el archivo de definición de etiquetas. Al guardar el entorno de datos de Visual FoxPro se incluyen registros adicionales en la tabla de definición de etiquetas para todas las tablas y archivos de índice abiertos, el orden de índice y cualquier relación entre las tablas.

NOWAIT
Continúa la ejecución del programa después de abrir el Diseñador de etiquetas. El programa no espera a que se cierre el Diseñador de etiquetas, sino que continúa con la ejecución de la línea de programa que sigue inmediatamente a la que contiene CREATE LABEL NOWAIT. Si omite NOWAIT al ejecutar CREATE LABEL en un programa, se abre la ventana Diseñador de etiquetas y la ejecución del programa se interrumpe hasta que se cierre la ventana Diseñador de etiquetas.

Cuando se ejecuta desde la ventana Comandos, incluir la opción NOWAIT no tiene ningún efecto sobre el comando CREATE LABEL.

SAVE
Deja abierto el Diseñador de etiquetas al activar otra ventana. Si omite SAVE, el Diseñador de etiquetas se cerrará cuando se active otra ventana. El hecho de incluir SAVE no tiene ningún efecto cuando se ejecuta desde la ventana Comandos.

Vea también

CREATE LABEL | LABEL


MODIFY MEMO (Comando)

Abre una ventana de edición para un campo memo en el registro actual.

MODIFY MEMO MemoField1 [, MemoField2 ...] [NOEDIT] [NOMENU] [NOWAIT] [RANGE nStartCharacter, nEndCharacter] [[WINDOW WindowName1] [IN [WINDOW] WindowName2 | IN SCREEN]] [SAME] [SAVE]

Parámetros

MemoField1 [, MemoField2 ...]
Especifica los nombres de los campos memo a modificar. Para abrir una ventana de edición de campos memo en una tabla abierta en otra área de trabajo, incluya el alias de la tabla con el campo memo.
NOEDIT
Especifica que el campo memo no podrá cambiarse pero podrá visualizarse y copiarse al Portapapeles.
NOMENU
Elimina el título de menú Formato de la barra de menús del sistema de Visual FoxPro, lo que impide cambios de fuente, tamaño de fuente, espacio interlineal y sangrado.
NOWAIT
Continúa con la ejecución del programa después de que se abra la ventana de edición de texto. El programa no espera a que la ventana de edición se cierre, sino que continúa la ejecución en la línea de programa siguiente a la que contiene MODIFY MEMO NOWAIT. Si omite NOWAIT al ejecutar MODIFY MEMO en un programa, se abre una ventana de edición y la ejecución del programa se interrumpe hasta que se cierre la ventana de edición.

NOWAIT sólo es efectivo desde dentro de un programa. No ejerce ningún efecto en MODIFY MEMO cuando se ejecuta desde la ventana Comandos.

RANGE nStartCharacter, nEndCharacter
Especifica un rango de caracteres seleccionado cuando la ventana de edición de texto es abierta. Los caracteres se seleccionan comenzando en la posición especificada con nStartCharacter hasta el carácter que se encuentre en la posición nEndCharacter. Si nStartCharacter es igual a nEndCharacter, no se seleccionará ningún carácter y el cursor se situará en la posición especificada con nStartCharacter.
WINDOW WindowName1
Especifica una ventana de la cual asumirá las características la ventana de edición de texto. Por ejemplo, si la ventana está definida con la cláusula FLOAT de DEFINE WINDOW, la ventana de edición de texto podrá moverse. No es necesario que la ventana esté activa o sea visible, pero debe estar definida.
IN [WINDOW] WindowName2
Especifica una ventana primaria dentro de la cual se abrirá una ventana de edición de texto. La ventana de edición de texto no asumirá las características de la ventana primaria y no puede moverse fuera de la ventana primaria. Si se mueve la ventana primaria, la ventana de edición de texto se moverá con ella.

Para tener acceso a la ventana de edición de texto, la ventana primaria debe estar definida anteriormente con DEFINE WINDOW y debe estar visible.

IN SCREEN
Abre explícitamente la ventana de edición en la ventana principal de Visual FoxPro, después de haberla situado en una ventana primaria. Se colocará una ventana de edición en una ventana primaria incluyendo la cláusula IN WINDOW.
SAME
Evita que la ventana de edición de texto se ponga delante como ventana activa. Si la ventana de edición de texto está oculta, se mostrará pero no se convertirá en la ventana activa.
SAVE
Conserva la ventana de edición de texto abierta después de que otra ventana se active. Si omite SAVE, la ventana de edición de texto se cierra cuando otra ventana se activa. El hecho de incluir SAVE no tiene ningún efecto cuando se ejecuta desde la ventana Comandos.

Observaciones

En la ventana de edición, podrá ver o cambiar el contenido de un campo memo.

En una tabla abierta para acceso compartido en una red, el registro actual se bloquea automáticamente cuando comienza la edición de uno de sus campos memo.

Note El uso de colores en la sintaxis en ventanas de modificación de campos memo está deshabilitada en aplicaciones de tiempo de ejecución distribuidas.

Para habilitar la sintaxis con colores en una ventana de modificación durante la programación

  1. Haga clic con el botón secundario del ratón en la ventana de modificación y elija Propiedades en el menú contextual.
  2. Seleccione la casilla de verificación Colorear la sintaxis.

Ejemplo

El ejemplo siguiente abre el campo memo notes del primer registro de employee en una ventana de edición con un rango resaltado.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE employee  && Opens Employee table
MODIFY MEMO notes NOEDIT RANGE 1,10  && First 10 characters selected
USE

Vea también

CLOSE MEMO | APPEND MEMO (Comando) | COPY MEMO (Comando)


MODIFY MENU (Comando)

Abre el Diseñador de menús para modificar o crear un sistema de menús.

MODIFY MENU [FileName | ?] [[WINDOW WindowName1] [IN [WINDOW] WindowName2 | IN SCREEN]] [NOWAIT] [SAVE]

Parámetros

FileName
Especifica el nombre del archivo de menú. Si no se incluye ninguna extensión con el nombre de la tabla, Visual FoxPro le asignará automáticamente una extensión .mnx.
?
Muestra un cuadro de diálogo Abrir en el que puede elegir un archivo de menú existente o introducir el nombre de un nuevo menú que desee crear.
WINDOW WindowName1
Especifica una ventana cuyas características asume el Diseñador de menús. Por ejemplo, si la ventana está creada con la opción FLOAT de DEFINE WINDOW, el Diseñador de menús podrá desplazarse. No es necesario que la ventana esté activa o sea visible, pero debe estar definida.
IN [WINDOW] WindowName2
Especifica una ventana primaria en la cual se abre el Diseñador de menús. El Diseñador de menús no asume las características de esta ventana primaria y no se puede mover fuera de ella. Si la ventana primaria se mueve, el Diseñador de menús se moverá con ella.

La ventana primaria debe estar definida previamente con DEFINE WINDOW y debe estar visible para tener acceso al Diseñador de menús.

IN SCREEN
Abre explícitamente el Diseñador de menús en la ventana principal de Microsoft Visual FoxPro, después de haberlo situado en una ventana primaria. El Diseñador de menús se coloca en una ventana primaria al incluir la cláusula IN WINDOW.
NOWAIT
Continúa la ejecución del programa después de que se abra el Diseñador de menús. El programa no espera a que se cierre el Diseñador de menús, sino que continúa la ejecución en la línea de programa siguiente a la que contiene MODIFY MENU NOWAIT. Si omite NOWAIT al ejecutar MODIFY MENU en un programa, el Diseñador de menús se abre y la ejecución del programa se interrumpe hasta que se cierre el Diseñador de menús.

NOWAIT sólo es efectivo desde dentro de un programa. No ejerce ningún efecto en MODIFY MENU cuando se ejecuta desde la ventana Comandos.

Si ejecuta MODIFY MENU desde la ventana Comandos sin un nombre de menú e incluye NOWAIT, no aparecerá el diálogo Abrir. El cuadro de diálogo Nuevo menú permite especificar el tipo de menú creado (estándar o contextual).

SAVE
Deja abierto el Diseñador de menús después de activar otra ventana. Si omite SAVE, el Diseñador de menús se cerrará cuando se active otra ventana. El hecho de incluir SAVE no tiene ningún efecto cuando se ejecuta desde la ventana Comandos.

Observaciones

Para obtener más información acerca de la creación de menús, vea Crear un sistema de menús.

Vea también

DEFINE BAR | DEFINE MENU | DEFINE PAD | DEFINE POPUP | SET SYSMENU


MODIFY PROCEDURE (Comando)

Abre el editor de textos de Visual FoxPro, lo que permite crear nuevos procedimientos almacenados para la base de datos actual o modificar los procedimientos almacenados existentes en la misma.

MODIFY PROCEDURE [NOWAIT]

Parámetros

NOWAIT
Continúa la ejecución del programa después de que se abra el editor de procedimientos para la base de datos actual. El programa no espera a que se cierre el editor, sino que continúa la ejecución en la línea del programa que sigue inmediatamente a la línea que contiene MODIFY PROCEDURE NOWAIT. Sin la cláusula NOWAIT, MODIFY PROCEDURE abre un editor de procedimientos y la ejecución del programa se detendrá hasta que cierre el editor.

Observaciones

Es necesario que haya una base de datos abierta para poder crear o modificar procedimientos almacenados. Los procedimientos almacenados suelen especificarse en desencadenadores Eliminar, Insertar o Actualizar creados para una base de datos con CREATE TRIGGER.

Los procedimientos almacenados en la base de datos actual pueden ejecutarse como otros procedimientos de Visual FoxPro en un archivo o programa de procedimientos abiertos. Vea PROCEDURE para obtener una descripción del orden y la ubicación que sigue Visual FoxPro para buscar procedimientos.

Ejemplo

El ejemplo siguiente abre la base de datos testdata y usa MODIFY PROCEDURE para abrir el editor de textos de Visual FoxPro, lo que permite crear nuevos procedimientos almacenados o modificar los ya existentes.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
MODIFY PROCEDURE  && Opens the Visual FoxPro text editor

Vea también

CREATE TRIGGER | DISPLAY PROCEDURES | OPEN DATABASE | PROCEDURE


MODIFY PROJECT (Comando)

Abre el Administrador de proyectos para crear o modificar un archivo de proyecto.

MODIFY PROJECT [FileName | ?] [IN SCREEN] [NOWAIT] [SAVE] [NOSHOW] [NOPROJECTHOOK]

Parámetros

FileName
Especifica el nombre del archivo para el proyecto. Si no especifica ninguna extensión para este archivo, Visual FoxPro le asignará automáticamente la extensión .pjx.
?
Muestra el cuadro de diálogo Abrir, en el que puede abrir un archivo de proyecto existente o escribir el nombre de un proyecto nuevo.
IN SCREEN
Abre explícitamente el Administrador de proyectos en la ventana principal de Visual FoxPro, después de incluirlo en una ventana primaria. El Administrador de proyectos se sitúa en una ventana primaria al incluir la cláusula IN WINDOW.
NOWAIT
Continúa la ejecución del programa después de abrir el Administrador de proyectos. El programa no espera a que el Administrador de proyectos se cierre, sino que continúa la ejecución en la línea de programa siguiente a la que contiene MODIFY PROJECT NOWAIT. Si omite NOWAIT al ejecutar MODIFY PROJECT en un programa, el Administrador de proyectos se abre y la ejecución del programa se interrumpe hasta que se cierre el Administrador de proyectos.

NOWAIT sólo es efectivo desde dentro de un programa. No ejerce ningún efecto en MODIFY PROJECT cuando se ejecuta desde la ventana Comandos.

SAVE
Deja abierto el Administrador de proyectos después de que se active otra ventana. Si omite SAVE, el Administrador de proyectos se cerrará cuando active otra ventana. El hecho de incluir SAVE no tiene ningún efecto cuando se ejecuta desde la ventana Comandos.
NOSHOW
Especifica que el Administrador de proyectos está oculto (su propiedad Visible está establecida con falso (.F.)) cuando se abre. Para mostrar el objeto ProjectHook, establezca la propiedad Visible del Administrador de proyectos en verdadero (.T.). NOSHOW permite manipular un proyecto antes de mostrarlo en el Administrador de proyectos. Para evitar confusión con la palabra clave NOSHADOW, no puede abreviar NOSHOW a menos de cinco caracteres.
NOPROJECTHOOK
Especifica que no se crea un objeto ProjectHook cuando se abre el Administrador de proyectos. Incluya NOPROJECTHOOK para proyectos que no se manipularán mediante programación con enganches del Administrador de proyectos. Observe que sigue creándose un objeto Project cuando se abre un archivo de proyecto (.pjx).

Observaciones

En un proyecto, el usuario especifica todos los archivos de origen necesarios para una aplicación final y después Visual FoxPro se asegura que la aplicación generada está basada en los archivos de origen más recientes.

Un archivo de proyecto es una tabla que registra todos los archivos de origen como programas, formularios, menús, bibliotecas, informes, etiquetas, índices y archivos de formato. Un proyecto también registra todas las dependencias, referencias y conexiones entre archivos.

Nota No se puede incluir en proyectos bibliotecas compartidas (archivos .fll, .mlb, .dll, y cfm).

Un archivo de proyecto tiene la extensión .PJX de nombre de archivo y un archivo memo asociado con la extensión .PJT.

Al ejecutar MODIFY PROJECT sin ningún argumento se muestra el cuadro de diálogo Abrir.

Para obtener información acerca del Administrador de proyectos, vea Compilar una aplicación .

Vea también

BUILD APP | BUILD EXE | BUILD PROJECT | COMPILE | CREATE PROJECT


MODIFY QUERY (Comando)

Abre el Diseñador de consultas para que pueda crear o modificar una consulta.

MODIFY QUERY [FileName | ?] [[WINDOW WindowName1] [IN SCREEN] [NOWAIT] [SAVE] [AS nCodePage]

Parámetros

FileName
Especifica el nombre de archivo para la consulta. Si no se incluye ninguna extensión con el nombre del archivo, Visual FoxPro le asignará automáticamente la extensión .qpr.
?
Muestra el cuadro de diálogo Abrir, en el que puede elegir una consulta existente o introducir el nombre de una nueva consulta que desee crear.
WINDOW WindowName1
Especifica la ventana de la que el Diseñador de consultas va a tomar las características. Por ejemplo, si se ha creado la ventana con la opción FLOAT de DEFINE WINDOW, se podrá desplazar el Diseñador de consultas. No es necesario que la ventana esté activa o sea visible, pero debe estar definida.
IN SCREEN
Abre explícitamente el Diseñador de consultas en la ventana principal de Visual FoxPro, después de situarlo en una ventana primaria. El Diseñador de consultas se sitúa en una ventana primaria incluyendo la cláusula IN WINDOW.
NOWAIT
Continúa la ejecución del programa después de que se haya abierto el Diseñador de consultas. El programa no espera a que se cierre el Diseñador de consultas, sino que continúa la ejecución en la línea de programa siguiente a la que contiene MODIFY QUERY NOWAIT. Si omite NOWAIT al ejecutar MODIFY QUERY en un programa, el Diseñador de consultas se abre y la ejecución del programa se interrumpe hasta que se cierre el Diseñador de consultas.

NOWAIT sólo es efectivo desde dentro de un programa. No tiene ningún efecto sobre el comando MODIFY QUERY cuando se ejecuta desde la ventana Comandos.

SAVE
Deja abierto el Diseñador de consultas después de activar otra ventana. Si omite SAVE, el Diseñador de consultas se cerrará cuando se active otra ventana. El hecho de incluir SAVE no tiene ningún efecto cuando se ejecuta desde la ventana Comandos.
AS nCodePage
Especifica la página de códigos de la consulta. Incluya AS nCodePage si la consulta se creó con una página de códigos distinta de la activa en Visual FoxPro. Cuando se abre la consulta, Visual FoxPro convierte automáticamente la consulta a la página de códigos actual de Visual FoxPro. Puede utilizar GETCP( ) para que nCodePage muestre el cuadro de diálogo Página de códigos, que permite especificar una página de códigos para la consulta.

La consulta se guarda en su página de códigos original cuando se cierra.

Si omite la cláusula AS nCodePage o nCodePage es 0, la consulta no se convierte a la página de códigos actual de Visual FoxPro. Si especifica un valor no admitido para nCodePage, Visual FoxPro generará un mensaje de error.

En Visual FoxPro, las consultas se pueden agregar a un proyecto, y el usuario puede especificar la página de códigos de la consulta desde el Contenedor de proyectos. El Contenedor de proyectos conserva un registro de la página de códigos de la consulta. No obstante, si utiliza MODIFY QUERY para abrir una consulta fuera del Contenedor de proyectos, debe incluir AS nCodePage para especificar la página de códigos de la consulta.

Observaciones

Para obtener más información acerca de cómo crear consultas, vea Crear consultas.

Al ejecutar MODIFY QUERY sin ningún argumento se muestra el cuadro de diálogo Abrir. Si elige Nuevo en este cuadro de diálogo, se asigna el nombre CONSULTA1 a la consulta. Puede guardar la consulta con otro nombre distinto al salir del Diseñador de consultas.

Después de crear una consulta, ésta se almacena como un archivo de programa de Visual FoxPro con la extensión .qpr. Puede ejecutar un programa de consulta con DO, pero es necesario incluir la extensión .qpr con el nombre del archivo de consulta.

Vea también

CREATE QUERY | DO | GETCP( )


MODIFY REPORT (Comando)

Abre el Diseñador de informes para que pueda crear o modificar un informe.

MODIFY REPORT [FileName | ?] [[WINDOW WindowName1] [IN [WINDOW] WindowName2 | IN SCREEN]] [NOENVIRONMENT] [NOWAIT] [SAVE]

Parámetros

FileName
Especifica el nombre de archivo para el informe. Si no especifica ninguna extensión para este archivo, Visual FoxPro le asignará automáticamente la extensión .frx.
?
Muestra el cuadro de diálogo Abrir en el cual puede elegir un archivo de informe existente o introducir el nombre de un nuevo informe que desee crear.
WINDOW WindowName1
Especifica una ventana cuyas características tomará el Diseñador de informes. Por ejemplo, si la ventana se crea con la opción FLOAT de DEFINE WINDOW, el Diseñador de informes podrá moverse. No es necesario que la ventana esté activa o sea visible, pero debe estar definida.
IN [WINDOW] WindowName2
Especifica una ventana primaria en la que se abre el Diseñador de informes. El Diseñador de informes no asume las características de la ventana primaria y no se puede mover fuera de ella. Si se mueve la ventana primaria, el Diseñador de informes se moverá con ella.

La ventana primaria debe estar definida previamente con DEFINE WINDOW, y debe estar activa y visible para tener acceso al Diseñador de informes.

IN SCREEN
Abre explícitamente el Diseñador de informes en la ventana principal de Visual FoxPro, después de situarlo en una ventana primaria. El Diseñador de informes se sitúa en una ventana primaria al incluir la cláusula IN WINDOW.
NOENVIRONMENT
Se incluye por compatibilidad con los informes de la versión 2.x; impide guardar el entorno con el informe.

En Visual FoxPro, el entorno de datos asociado a un informe de Visual FoxPro se restaura estableciendo la propiedad AutoOpenTables del entorno de datos en el valor verdadero (.T.), que es el valor predeterminado. Para asegurarse de que el entorno del informe se cierra cuando se termina de imprimir el informe, establezca la propiedad AutoCloseTables del entorno de datos en el valor verdadero (.T.), que es también el valor predeterminado.

Al crear o modificar informes, puede guardar el entorno de datos actual de Visual FoxPro con el archivo de definición de informes. Esto coloca los registros adicionales en la tabla de definición de informe para todas las tablas abiertas y archivos de índice, el orden de índice y todas las relaciones entre las tablas.

NOWAIT
Continúa ejecutando el programa después de abrir el Diseñador de informes. El programa no espera a que se cierre el Diseñador de informes, sino que continúa la ejecución en la línea de programa siguiente a la que contiene MODIFY REPORT NOWAIT. Si omite NOWAIT al ejecutar MODIFY REPORT en un programa, el Diseñador de informe se abre y la ejecución del programa se interrumpe hasta que se cierre el Diseñador de informes.

NOWAIT sólo es efectivo desde dentro de un programa. No tendrá ningún efecto sobre MODIFY REPORT cuando se ejecuta desde la ventana Comandos.

SAVE
Deja abierto el Diseñador de informes después de activar otra ventana. Si omite SAVE, el Diseñador de informes se cerrará cuando se active otra ventana. El hecho de incluir SAVE no tiene ningún efecto cuando se ejecuta desde la ventana Comandos.

Observaciones

Al ejecutar MODIFY REPORT sin ningún argumento se muestra el cuadro de diálogo Abrir. Si elige Nuevo en este cuadro de diálogo, se asigna el nombre INFORME1 al archivo de informe. Puede guardar el archivo de informe con otro nombre distinto al cerrar el Diseñador de informes.

Vea también

_ASCIICOLS | _ASCIIROWS | CREATE REPORT | REPORT


MODIFY STRUCTURE (Comando)

Muestra el Diseñador de tablas para que pueda modificar la estructura de una tabla.

MODIFY STRUCTURE

Observaciones

En versiones anteriores de FoxPro, MODIFY STRUCTURE abría el cuadro de diálogo Estructura de la tabla.

Si no hay ninguna tabla abierta en el área de trabajo seleccionada actualmente, se muestra el cuadro de diálogo Abrir, que permite elegir la tabla que se desea modificar.

Los cambios que puede efectuar en la estructura de una tabla incluyen agregar y eliminar campos, modificar el nombre, el tamaño y el tipo de datos de los campos, agregar, eliminar o modificar etiquetas de índice, y especificar el soporte de valores nulos en los campos.

También puede modificar la estructura de una tabla utilizando la interfaz. Para obtener más información, vea Modificar la estructura de la tabla.

Precaución Al cambiar campos de un tipo de datos a otro, el contenido del campo no siempre se transferirá limpiamente. Por ejemplo, si quiere convertir un campo de tipo Date a tipo Numérico, el contenido del campo no se transferirá.

Visual FoxPro hace automáticamente una copia de seguridad de la tabla actual antes de que usted cambie la estructura de la tabla. Cuando se han terminado las modificaciones, los datos de la copia de seguridad de la tabla se anexan a la estructura de registro recién modificada. Si la tabla tiene un campo memo, también se crea un archivo de seguridad de campos memo. La tabla de seguridad tiene la extensión .bak y el archivo de seguridad de los campos memo tiene la extensión .tbk.

Si acepta los cambios de estructura e interrumpe el proceso de copia de datos, el archivo nuevo no contendrá todos los registros de la tabla original.

Recuerde que Visual FoxPro crea una copia .bak del archivo de tabla original y una copia .tbk del archivo de campos memo original, si la tabla tiene algún campo memo. Si tiene algún problema con MODIFY STRUCTURE, puede borrar el o los archivos nuevos y cambiar el nombre del archivo .bak y del archivo .tbk, si es que hay alguno, por sus extensiones originales (.dbf y .ftp).

Cuando modifique la estructura de una tabla que tenga un campo memo, el tamaño de bloque del archivo memo se ajustará según la configuración actual del tamaño de bloque. Puede especificar el tamaño de bloque del archivo memo con SET BLOCKSIZE.

Vea también

ALTER TABLE - SQL | CREATE | CREATE TABLE - SQL | SET BLOCKSIZE | Modificar la estructura de la tabla


MODIFY VIEW (Comando)

Muestra el Diseñador de vistas, que permite modificar una vista SQL existente.

MODIFY VIEW ViewName [REMOTE][NOWAIT]

Parámetros

ViewName
Especifica el nombre de la vista que se va a modificar.
REMOTE
Especifica que la vista es remota y utiliza tablas remotas. Si omite REMOTE, puede modificar una vista utilizando tablas locales.
NOWAIT
Continúa la ejecución del programa después de que se abra el Diseñador de vistas. El programa no espera a que se cierre el Diseñador de vistas, sino que continúa la ejecución en la línea del programa que sigue inmediatamente a la línea que contiene VIEW … NOWAIT. Sin la cláusula NOWAIT, MODIFY VIEW abre el Diseñador de vistas e interrumpe la ejecución del programa hasta que se cierre el Diseñador.

Observaciones

Las vistas SQL se crean con CREATE SQL VIEW.

Vea también

CREATE SQL VIEW | OPEN DATABASE


MODIFY WINDOW (Comando)

Modifica una ventana definida por el usuario o la ventana principal de Visual FoxPro.

MODIFY WINDOW WindowName | SCREEN [FROM nRow1, nColumn1 TO nRow2, nColumn2
| AT nRow3, nColumn3 SIZE nRow4, nColumn4] [FONT cFontName [, nFontSize]] [STYLE cFontStyle] [TITLE cTitleText] [HALFHEIGHT] [DOUBLE | PANEL | NONE | SYSTEM] [CLOSE | NOCLOSE] [FLOAT | NOFLOAT] [GROW | NOGROW] [MINIMIZE | NOMINIMIZE] [ZOOM | NOZOOM] [ICON FILE FileName1] [FILL FILE FileName2] [COLOR SCHEME nSchemeNumber | COLOR ColorPairList]

Parámetros

WindowName
Especifica la ventana definida por el usuario que se va a modificar. La ventana que especifique ha de estar creada previamente con DEFINE WINDOW.
SCREEN
Especifica la ventana principal de Visual FoxPro como la ventana que se va a modificar. No abrevie SCREEN o Visual FoxPro generará un mensaje de error. Para devolver la ventana principal de Visual FoxPro a su configuración en el momento del inicio, ejecute los comandos siguientes sin cláusulas adicionales:
MODIFY WINDOW SCREEN
Sugerencia Ejecute MODIFY WINDOW SCREEN NOCLOSE para evitar terminar accidentalmente Visual FoxPro de forma prematura.

Para obtener más información acerca de las cláusulas MODIFY WINDOW, vea DEFINE WINDOW.

Observaciones

MODIFY WINDOW cambia los atributos de una ventana definida por el usuario (una ventana creada con DEFINE WINDOW) o la ventana principal de Visual FoxPro. MODIFY WINDOW no puede utilizarse para cambiar los atributos de las ventanas del sistema de Visual FoxPro (como la ventana Comandos y la ventana Examinar).

Utilice MODIFY WINDOW para cambiar la posición, la fuente predeterminada, el título, borde, controles, icono, papel tapiz y los colores de una ventana definida por el usuario o la ventana principal de Visual FoxPro. Cualquiera de estos atributos puede cambiarse incluyendo las cláusulas indicadas anteriormente. (Observe que si cambia los colores, deberá ejecutar CLEAR para aplicar los cambios de color.)

Por ejemplo, incluya las cláusulas TO y FROM o AT y SIZE para especificar una nueva posición o tamaño de una ventana definida por el usuario o la ventana principal de Visual FoxPro. Para impedir que se mueva una ventana definida por el usuario o la ventana principal de Visual FoxPro, incluya la palabra clave NOFLOAT.

Ejemplo

El ejemplo siguiente cambia el contenido de la barra de título de la ventana principal de Visual FoxPro.

MODIFY WINDOW SCREEN TITLE 'My Application'

Vea también

DEFINE WINDOW | _SCREEN


MOUSE (Comando)

Realiza la acción equivalente a hacer clic, a hacer doble clic, o a mover o arrastrar el ratón.

MOUSE [CLICK | DBLCLICK] [AT nRow1, nColumn1] | DRAG TO nRow2, nColumn2, nRow3, nColumn3 ...][PIXELS] [WINDOW cWindowName][LEFT | MIDDLE | RIGHT][SHIFT] [CONTROL] [ALT]

Parámetros

CLICK | DBLCLICK
Especifica que se hace clic o doble clic con el ratón. Si omite la cláusula AT, se hace clic o doble clic con el ratón en la posición actual del puntero del ratón.
AT nRow1, nColumn1
Especifica dónde se hace clic o doble clic con el ratón, o a qué posición se mueve el puntero del ratón. Si omite CLICK o DBLCLICK, el puntero del ratón se mueve a la posición especificada con nRow1, nColumn1.

A menos que especifique WINDOW, la posición especificada por nRow1, nColumn1 siempre es relativa a la ventana principal de Microsoft Visual FoxPro, y la posición está determinada por la fuente de la ventana principal de Visual FoxPro. La mayoría de las fuentes puede mostrarse en una amplia variedad de tamaños, algunas con espacio proporcional. Una fila corresponde al alto de la fuente actual, una columna al ancho medio de letra de la fuente actual.

No puede usar la cláusula AT para elegir un título de menú de Visual FoxPro. Utilice SYS(1500) - Activar un elemento de menú de sistema en vez de elegir un título de menú.

DRAG TO nRow2, nColumn2, nRow3, nColumn3 ...]
Especifica que el puntero del ratón se arrastra a una posición o una serie de posiciones.

Cuando se arrastra el puntero del ratón, se presiona un botón y se mantiene presionado hasta que el puntero llega a la posición de destino; en ese momento se suelta el botón del ratón. Si omite las cláusulas LEFT, MIDDLE y RIGHT, se presiona y mantiene presionado el botón primario del ratón de forma predeterminada.

La cláusula DRAG acepta múltiples conjuntos de coordenadas nRow, nColumn, lo que permite arrastrar el puntero del ratón a varias posiciones.

Si se incluye CLICK o DBLCLICK, se hace clic o doble clic con el ratón en su posición actual; a continuación, el puntero del ratón se arrastra a la posición especificada.

PIXELS
Especifica que la posición incluida en la cláusula AT y DRAG TO se mide en píxeles.

Si se omite PIXELS, la posición estará determinada por la fuente de la ventana principal de Visual FoxPro o por la ventana especificada con cWindowName. La mayoría de las fuentes puede mostrarse en una amplia variedad de tamaños, algunas con espacio proporcional. Una fila corresponde al alto de la fuente actual, una columna al ancho medio de letra de la fuente actual.

WINDOW cWindowName
Especifica la ventana de la cual dependen las coordenadas de las cláusulas AT y DRAG TO. Si no incluye WINDOW y el nombre de una ventana activa, las coordenadas de las cláusulas AT y DRAG TO serán relativas a la ventana principal de Visual FoxPro.

Para especificar una ventana del sistema o una barra de herramientas, escriba entre comillas el nombre de la ventana del sistema o de la barra de herramientas.

LEFT | MIDDLE | RIGHT
Especifica qué botón del ratón se presiona cuando se hace clic, doble clic o se arrastra el ratón. Si se omiten las cláusulas LEFT, MIDDLE, y RIGHT, el comando MOUSE se comportará como si hubiera hecho clic con el botón del ratón en un Macintosh o como si hubiera hecho clic con el botón primario del ratón.
[SHIFT] [CONTROL] [ALT]
Especifica la tecla que se presiona cuando se hace clic o doble clic con el ratón, o se arrastra. En Visual FoxPro para Windows, SHIFT especifica la tecla MAYÚS, CONTROL especifica la tecla CTRL y ALT especifica la tecla ALT.

Puede especificar cualquier combinación de SHIFT, CONTROL y ALT.

Observaciones

MOUSE suele emplearse para automatizar la comprobación interactiva de programas o para crear programas de demostración.

Ejemplo

En el ejemplo siguiente, el primer comando hace clic con el ratón en la fila y la columna 3 de la ventana principal de Visual FoxPro. El segundo comando hace clic con el ratón en la fila y la columna 3 de la ventana principal de Visual FoxPro y, a continuación, arrastra el puntero del ratón hasta la décima fila y columna de la ventana principal de Visual FoxPro. El tercer comando arrastra el puntero del ratón desde su posición actual hasta la fila y la columna 20. El cuarto comando hace doble clic con el ratón en su posición actual y, a continuación, arrastra el puntero hasta la fila y la columna 30. El último comando arrastra el puntero del ratón desde su posición actual hasta la fila y la columna 10 y, a continuación, hasta la fila y la columna 20 y, por último, hasta la fila y la columna 30.

MOUSE CLICK AT 3,3
MOUSE CLICK AT 3,3 DRAG TO 10,10
MOUSE DRAG TO 20,20
MOUSE DBLCLICK DRAG TO 30,30
MOUSE DRAG TO 10,10,20,20,30,30

Vea también

MCOL( ) | MDOWN( ) | MROW( ) | SYS(1500) - Activar un elemento de menú del sistema


MOVE POPUP (Comando)

Mueve un menú definido por el usuario creado con DEFINE POPUP a una nueva posición.

MOVE POPUP MenuName TO nRow1, nColumn1 | BY nRow2, nColumn2

Parámetros

MenuName
Especifica el menú que se va a mover

En Visual FoxPro, no puede mover el menú de sistema.

TO nRow1, nColumn1
Mueve el menú a una posición especificada por nRow1, nColumn1, en una ventana definida por el usuario o en la ventana principal de Visual FoxPro.
BY nRow2, nColumn2
Mueve el menú a una posición relativa a su posición actual. nRow2 especifica el número de filas que hay que mover el menú (abajo si nRow2 es positivo, arriba si es negativo). La expresión numérica nColumn2 especifica el número de columnas que hay que mover el menú (hacia la derecha si nColumn2 es positivo, hacia la izquierda si es negativo).

Observaciones

Un menú puede moverse a una posición específica o a una posición relativa a la actual. Si se ha definido un menú, puede moverse; no necesita estar activo ni visible.

Ejemplo

El ejemplo siguiente define y activa un menú, luego lo mueve y cambia su tamaño.

CLOSE DATABASE
CLEAR
DEFINE POPUP popMovIn FROM 2,2 TO 7, 14 PROMPT FILES LIKE *.PRG ;
TITLE 'Programs'
ACTIVATE POPUP popMovIn NOWAIT
=CHRSAW(2)
MOVE POPUP popMovIn BY 5,5     && Move menu down
=CHRSAW(2)
SIZE POPUP popMovIn BY 5,5     && Enlarge the menu
=CHRSAW(2)
SIZE POPUP popMovIn BY -5,-5     && Shrink the menu
=CHRSAW(2)
MOVE POPUP popMovIn BY -5,-5     && Move menu up
=CHRSAW(2)
DEACTIVATE POPUP popMovIn
RELEASE POPUP popMovIn

Vea también

ACTIVATE POPUP | DEFINE POPUP | SIZE POPUP


MOVE WINDOW (Comando)

Mueve una ventana definida por el usuario creada con DEFINE WINDOW o una ventana del sistema de Visual FoxPro (como la ventana Comandos o la ventana Examinar) a una nueva posición.

MOVE WINDOW WindowName TO nRow1, nColumn1   | BY nRow2, nColumn2 | CENTER

Parámetros

WindowName
Especifica el nombre de la ventana que se va a mover.
TO nRow1, nColumn1
Mueve la ventana a una posición especificada con nRow1, nColumn1, en la ventana principal de Visual FoxPro o en una ventana definida por el usuario.
BY nRow2, nColumn2
Mueve una ventana a una posición relativa a su posición actual. La expresión numérica nRow2 especifica el número de filas que hay que desplazar la ventana (abajo si nRow2 es positivo, arriba si es negativo). La expresión numérica nColumn2 especifica el número de columnas que hay que desplazar la ventana (a la derecha si nColumn2 es positivo, a la izquierda si es negativo).
CENTER
Centra una ventana en la ventana principal de Visual FoxPro o en su ventana primaria.

Observaciones

Una ventana puede moverse a una posición específica o a una posición relativa a la actual. Si una ventana está definida, puede moverse; no necesita estar activa o visible.

Para mover una ventana del sistema o una barra de herramientas (en Visual FoxPro), escriba entre comillas todo el nombre de la ventana del sistema o de la barra de herramientas. Por ejemplo, para mover la barra de herramientas Controles de informes (cuando no está acoplada) en Visual FoxPro, ejecute el comando siguiente:

MOVE WINDOW "Report Controls" BY 1,1

Históricamente, en versiones anteriores de Visual FoxPro, la ventana Sesión de Datos se ha referido siempre como la ventana View. Adicionalmente, el lenguaje utilizado para controlar esta ventana, por ejemplo HIDE WINDOW, ACTIVATE WINDOW, WONTOP( ), se refiere a esa ventana como View. Visual FoxPro continúa refiriéndose la ventana View para el comando MOVE WINDOW.

Ejemplo

En el siguiente ejemplo, una vez definida y activada la ventana llamada wEnter, se moverá la ventana.

DEFINE WINDOW wEnter FROM 10,4 TO 15,54 SYSTEM ;
TITLE "Nomadic Window"
ACTIVATE WINDOW wEnter
WAIT WINDOW 'Pulse una tecla para mover la ventana'
MOVE WINDOW wEnter TO 20,15
WAIT WINDOW 'Pulse una tecla para centrar la ventana'
MOVE WINDOW wEnter CENTER
WAIT WINDOW 'Pulse una tecla para eliminar la ventana'
RELEASE WINDOW wEnter

Vea también

ACTIVATE WINDOW | WAIT (Comando) | DEFINE WINDOW (Comando) | DOCK WINDOW (Comando) | WDOCKABLE( ) (Función)


NODEFAULT (Comando)

Impide que Visual FoxPro ejecute el procedimiento original de un evento o método. Por ejemplo, si ocurre el evento KeyPress, al incluir NODEFAULT en el procedimiento o función KeyPress impedimos que Visual FoxPro sitúe la tecla pulsada en el buffer de teclado. Esto hace posible crear un procedimiento KeyPress que permita comprobar cual ha sido la tecla pulsada antes de que sea enviada al buffer del teclado.

Se puede colocar NODEFAULT en cualquier lugar del código del evento o procedimiento, y también en cualquier método o evento del diseñador de formularios.

Vea también

DEFINE CLASS (Comando) | Directrices para el código de métodos y eventos | Run (Método) | BeforeRowColChange (Evento) | Add (Método) | OLEDragDrop (Evento) | OLESetData (Evento) | OLEGiveFeedback (Evento) | OLECompleteDrag (Evento) | QueryRunFile (Evento) | BeforeBuild (Evento) | QueryAddFile (Evento) | QueryRemoveFile (Evento) | QueryUnload (Evento) | OLEStartDrag (Evento) | QueryModifyFile (Evento)


NOTE (Comando)

Indica el comienzo de una línea de observaciones no ejecutable en un archivo de programa.

NOTE [Comments]

Parámetros

Comments
Especifica el comentario.

Observaciones

Agregue un punto y coma (;) al final de las líneas de observaciones que continúen en la línea siguiente.

Ejemplo

NOTE  Initialize the page number;
variable.
STORE 1 to gnPageNum
* Set up the loop
DO WHILE gnPageNum <= 25  && loop 25 times
gnPageNum = gnPageNum + 1
ENDDO  && DO WHILE gnPageNum <= 25

Vea también

&& | * | MODIFY COMMAND | MODIFY FILE


ON BAR (Comando)

Activa un menú o una barra de menús cuando se elige un elemento de menú concreto de un menú.

ON BAR nMenuItemNumber OF MenuName1   [ACTIVATE POPUP MenuName2
| ACTIVATE MENU MenuBarName]

Parámetros

nMenuItemNumber OF MenuName1
Especifica el número de elemento de menú y el menú al que pertenece el elemento de menú que activa otro menú o barra de menús. Cada elemento de un menú puede tener asignado otro menú o barra de menús.

Una opción de menú que tiene asignado un menú o una barra, tiene una flecha a la derecha del texto de la opción. La flecha indica que eligiendo esta opción se activará un menú o una barra de menús adicional. Si define el menú con DEFINE POPUP ... MARGINse coloca a la derecha de cada elemento un espacio adicional para la flecha del submenú en cascada. Si crea el menú sin la cláusula MARGIN, puede que la flecha del submenú en cascada sobrescriba el último carácter del elemento de menú.

ACTIVATE POPUP MenuName2
Especifica el nombre del menú que se va a activar cuando se elija el elemento de menú. Utilice ON BAR sin ACTIVATE POPUP para liberar un menú desde un elemento de menú.
ACTIVATE MENU MenuBarName
Especifica el nombre del menú que se activará al elegir el elemento de menú. Utilice ON BAR sin ACTIVATE MENU para liberar un menú de un elemento de menú.

Observaciones

Un menú que muestra y activa otro menú se llama menú en cascada. Utilice ON SELECTION BAR u ON SELECTION POPUP para ejecutar un comando cuando se elige una opción de un menú.

Los menús y la barra de menús pueden ser definidos por el usuario (creados con DEFINE POPUP y DEFINE MENU) o son parte del sistema de menús de Visual FoxPro.

Ejemplo

El ejemplo siguiente muestra un sistema de menús en cascada. Se crea una barra de menú llamada mnuDinner con dos títulos de barra de menú. Cada título utiliza ON PAD para activar el menú llamado popMainCourse o popDessert. Cada uno de los menús llamados popMainCourse y popDessert tiene menús adicionales llamados popBurger, popPizza y popPie asignados a sus opciones con tres comandos ON BAR. Las opciones popOlives y popPie tienen menús adicionales asignados con dos comandos ON BAR.

Cuando se hace una selección, ON SELECTION POPUP ALL ejecuta un procedimiento llamado yourchoice que activa una ventana y muestra la opción. La opción se determina con POPUP( ) y PROMPT( ),que devuelve el nombre del menú y el contenido (texto) del elemento de menú.

DEFINE WINDOW wOrder FROM 10,0 TO 13,39
DEFINE MENU mnuDinner
DEFINE PAD padOne OF mnuDinner PROMPT '\<Main Course' KEY ALT+M, ''
DEFINE PAD padTwo OF mnuDinner PROMPT '\<Dessert'   KEY ALT+D, ''
ON PAD padOne OF mnuDinner ACTIVATE POPUP popMainCourse
ON PAD padTwo OF mnuDinner ACTIVATE POPUP dessert
DEFINE POPUP popMainCourse MARGIN MESSAGE ;
'We have burgers and pizza today'
DEFINE BAR 1 OF popMainCourse PROMPT '\<Hamburgers'
DEFINE BAR 2 OF popMainCourse PROMPT '\<Pizza'
ON BAR 1 OF popMainCourse ACTIVATE POPUP burger
ON BAR 2 OF popMainCourse ACTIVATE POPUP pizza
DEFINE POPUP burger MARGIN MESSAGE ;
'What would you like on your burger?'
DEFINE BAR 1 OF burger PROMPT '\<Ketchup'
DEFINE BAR 2 OF burger PROMPT '\<Mustard'
DEFINE BAR 3 OF burger PROMPT '\<Onions'
DEFINE BAR 4 OF burger PROMPT '\<Pickles'
DEFINE POPUP pizza MARGIN MESSAGE ;
'Here are the available toppings'
DEFINE BAR 1 OF pizza PROMPT '\<Anchovies'
DEFINE BAR 2 OF pizza PROMPT '\<Green Peppers'
DEFINE BAR 3 OF pizza PROMPT '\<Olives'
DEFINE BAR 4 OF pizza PROMPT '\<Pepperoni'
ON BAR 3 OF pizza ACTIVATE POPUP olives
DEFINE POPUP olives MARGIN
DEFINE BAR 1 OF olives PROMPT '\<Black' MESSAGE 'Black olives?'
DEFINE BAR 2 OF olives PROMPT '\<Green' MESSAGE 'Green olives?'
DEFINE POPUP dessert MARGIN MESSAGE 'Our dessert offerings'
DEFINE BAR 1 OF dessert PROMPT '\<Brownies'
DEFINE BAR 2 OF dessert PROMPT '\<Cookies'
DEFINE BAR 3 OF dessert PROMPT '\<Ice Cream'
DEFINE BAR 4 OF dessert PROMPT '\<Pie'
ON BAR 4 OF dessert ACTIVATE POPUP pie
DEFINE POPUP pie MARGIN MESSAGE 'What kind of pie?'
DEFINE BAR 1 OF pie PROMPT '\<Blueberry'
DEFINE BAR 2 OF pie PROMPT '\<Cherry'
DEFINE BAR 3 OF pie PROMPT '\<Peach'
DEFINE BAR 4 OF pie PROMPT '\<Rhubarb'
ON SELECTION POPUP ALL DO yourchoice
ACTIVATE MENU mnuDinner
PROCEDURE yourchoice
ACTIVATE WINDOW wOrder
CLEAR
DO CASE
CASE POPUP( ) = 'BURGER'
@ 0,0 SAY 'A ' + POPUP( ) + ' order:'
@ 1,0 SAY 'You ordered a burger with ' + LOWER(PROMPT( ))
CASE POPUP( ) = 'PIZZA'
@ 0,0 SAY 'A ' + POPUP( ) + ' order:'
@ 1,0 SAY 'You ordered a pizza with ' + LOWER(PROMPT( ))
CASE POPUP( ) = 'OLIVES'
@ 0,0 SAY 'A ' + POPUP( ) + ' order:'
@ 1,0 SAY 'You ordered a pizza with ' ;
+ LOWER(PROMPT( )) + ' olives'
CASE POPUP( ) = 'DESSERT'
@ 0,0 SAY 'A ' + POPUP( ) + ' order:'
@ 1,0 SAY 'You ordered ' + LOWER(PROMPT( )) + ' for dessert'
CASE POPUP( ) = 'PIE'
@ 0,0 SAY 'A ' + POPUP( ) + ' order:'
@ 1,0 SAY 'You ordered ' + LOWER(PROMPT( )) + ' pie'
ENDCASE
WAIT WINDOW
DEACTIVATE WINDOW wOrder
RETURN

Vea también

ACTIVATE MENU | DEFINE BAR | DEFINE MENU | DEFINE POPUP | ON SELECTION BAR | ON SELECTION POPUP


ON ERROR (Comando)

Especifica el comando que se ejecuta cuando se produce un error.

ON ERROR   [Command]

Parámetros

Command
Especifica el comando de Microsoft Visual FoxPro que se va a ejecutar. Una vez ejecutado el comando, la ejecución del programa se reanuda en la línea siguiente a la que originó el error. No obstante, si el procedimiento de manipulación de errores incluye RETRY, se vuelve a ejecutar la línea del programa que originó el error.

Si el comando especifica un procedimiento a ejecutar cuando se produce un error, puede utilizar ERROR( ), MESSAGE( ), LINENO( ) y PROGRAM( ) para pasar el número de error, el mensaje de error, el número de línea del programa y el nombre del programa al procedimiento. Esta información puede utilizarse para corregir la causa del error.

Observaciones

Cuando se produce un error durante la ejecución de un programa, Visual FoxPro ejecutará el comando que especifique con ON ERROR. ON ERROR suele utilizar DO para ejecutar un procedimiento de control de errores.

Utilice ON ERROR sin comando para restaurar el controlador de errores predeterminado de Visual FoxPro.

Los procedimientos ON ERROR no se pueden anidar. Si se ejecuta ON ERROR dentro de un procedimiento ON ERROR, se restaura el controlador de errores predeterminado de Visual FoxPro.

Ejemplo

ON ERROR DO errhand WITH ;
ERROR( ), MESSAGE( ), MESSAGE(1), PROGRAM( ), LINENO( )
*** La siguiente línea debería causar un error ***
USE nodatabase
ON ERROR  && restaura el controlador de errores
PROCEDURE errhand
PARAMETER merror, mess, mess1, mprog, mlineno
CLEAR
? 'Error número: ' + LTRIM(STR(merror))
? 'Mensaje de error: ' + mess
? 'Línea de código con error: ' + mess1
? 'Número de línea del error: ' + LTRIM(STR(mlineno))
? 'Programa con error: ' + mprog

Vea también

AERROR( ) | COMRETURNERROR( ) | DO | ERROR | ERROR( ) | FUNCTION | LINENO( ) | MESSAGE( ) | PROGRAM( ) | PROCEDURE | RETRY | Mensajes de error ordenados alfabéticamente | Mensajes de error ordenados por número


ON ESCAPE (Comando)

Especifica el comando que se ejecutará cuando presione la tecla ESC durante la ejecución de un programa o comando.

ON ESCAPE   [Command]

Parámetros

Command
Especifica el comando de Visual FoxPro que se va a ejecutar. Después de que se ejecute el comando especificado con ON ESCAPE, la ejecución del programa se reanuda en la línea inmediatamente siguiente a la línea de programa que se estaba ejecutando cuando se presionó ESC. Sin embargo, si el procedimiento especificado con ON ESCAPE incluye RETRY, la línea de programa que se estaba ejecutando cuando se presionó la tecla ESC se ejecutará otra vez.

Observaciones

Normalmente, ON ESCAPE utiliza DO para ejecutar un procedimiento.

Si están funcionando a la vez ON ESCAPE y ON KEY cuando se presiona la tecla ESC, Visual FoxPro ejecutará el comando especificado con ON ESCAPE.

Utilice ON ESCAPE sin un comando para provocar que no se ejecute ningún comando cuando se presione la tecla ESC (la opción predeterminada).

Nota Visual FoxPro no ejecuta una rutina ON ESCAPE si SET ESCAPE está establecido en OFF.

Ejemplo

El ejemplo siguiente establece un bucle infinito pero define la rutina ON ESCAPE para salir de él.

SET ESCAPE ON
ON ESCAPE DO stopit
WAIT WINDOW 'Press ESC to stop loop' NOWAIT
glMoreLoop = .T.
DO WHILE glMoreLoop
ENDDO
RETURN
PROCEDURE stopit
glMoreLoop = .F.
RETURN

Vea también

INKEY( ) | ON ESCAPE (Comando) | DO (Comando)


ON EXIT BAR (Comando)

Se incluye por compatibilidad con dBASE.


ON EXIT MENU (Comando)

Se incluye por compatibilidad con dBASE.


ON EXIT PAD (Comando)

Se incluye por compatibilidad con dBASE.


ON EXIT POPUP (Comando)

Se incluye por compatibilidad con dBASE.


ON KEY LABEL (Comando)

Especifica un comando que se ejecutará cuando presione una tecla o una combinación de teclas específica o haga clic con el ratón.

ON KEY [LABEL KeyLabelName] [Command]

Parámetros

LABEL KeyLabelName
Especifica el nombre de etiqueta de tecla asignado a la tecla. KeyLabelName es la letra o el dígito de la tecla, o un nombre especial asignado a la tecla. La siguiente tabla muestra los nombres de etiqueta de teclas especiales.

Asignaciones de etiquetas de tecla de Visual FoxPro

Para esta tecla | Especifique este valor de KeyLabelName
LEFTARROW
RIGHTARROW
UPARROW
DNARROW
INICIO | HOME
FIN | END
RE PÁG | PGUP
AV PÁG | PGDN
DEL | DEL
BACKSPACE | BACKSPACE
SPACEBAR | SPACEBAR
INS | INS
TAB | TAB
MAYÚSCULAS+TAB | BACKTAB
Llave de apertura | LBRACE
Llave de cierre | RBRACE
ENTER | ENTER
F1 a F12 | F1, F2, F3 ...
CTRL+F1 a CTRL+F12 | CTRL+F1, CTRL+F2 ...
MAYÚSCULAS+F1 a MAYÚSCULAS+F12 | SHIFT+F1, SHIFT+F2 ...
ALT+F1 a ALT+F12 | ALT+F1, ALT+F2, ALT+F3 ...
ALT+0 a ALT+9 | ALT+0, ALT+1, ALT+2 ...
ALT+A a ALT+Z | ALT+A, ALT+B, ALT+C ...
CTRL+FLECHA IZQUIERDA | CTRL+LEFTARROW
CTRL+FLECHA DERECHA | CTRL+RIGHTARROW
CTRL+INICIO | CTRL+HOME
CTRL+FIN | CTRL+END
CTRL+RE PÁG | CTRL+PGUP
CTRL+AV PÁG | CTRL+PGDN
CTRL+A a CTRL+Z | CTRL+A, CTRL+B, CTRL+C ...
CTRL+0 | CTRL+0
BOTÓN SECUNDARIO DEL MOUSE | RIGHTMOUSE
BOTÓN PRIMARIO DEL MOUSE | LEFTMOUSE
BOTÓN DEL MOUSE | MOUSE
ESC | ESC
Command
Especifica el comando que se ejecuta al presionar la tecla o combinación de teclas especificada, o al hacer clic en el botón del ratón.

Se pueden incluir parámetros o expresiones de parámetros con el comando que se ha asignado a la tecla, como se muestra en el siguiente ejemplo:

ON KEY LABEL ALT+V WAIT WINDOW "Version: " + VERSION()

Se pueden incluir variables en la asignación, con la única condición de que sean públicas. Por ejemplo:

PUBLIC message
message = "Default drive: " + SYS(5)
ON KEY LABEL ALT+D WAIT WINDOW message

Observaciones

ON KEY LABEL utiliza normalmente DO para ejecutar un procedimiento.

ON KEY LABEL ejecuta el comando inmediatamente siguiente durante la ejecución de READ, BROWSE, EDIT, CHANGE, menús y menús contextuales definidos por el usuario. Si se está ejecutando un programa cuando se presiona la tecla o se hace clic con el ratón, se ejecutará la línea de programa actual y luego se ejecutará el comando ON KEY LABEL. Todas las asignaciones de tecla creadas en un programa permanecerán vigentes después de que se ejecute el programa. Las asignaciones de tecla ON KEY LABEL pueden crearse también en la ventana Comandos.

Para restaurar el comportamiento normal de una tecla especificada, ejecute ON KEY LABEL KeyLabelName. Para restablecer todas las teclas a su comportamiento predeterminado, ejecute ON KEY.

Sugerencia Para impedir llamadas recursivas durante la ejecución de un procedimiento ON KEY LABEL, incluya PUSH KEY CLEAR en el procedimiento para desactivar todas las instrucciones ON KEY LABEL activas. Ejecute POP KEY al final del procedimiento para activar las instrucciones ON KEY LABEL.

Las asignaciones de tecla ON KEY LABEL no estarán en vigor en las barras del menú del sistema, los cuadros de diálogos, las alertas, los menús contextuales del sistema, etc. de Visual FoxPro. Las asignaciones de tecla ON KEY LABEL son efectivas en las ventanas del sistema Visual FoxPro: el editor de texto de Visual FoxPro, la ventana Comandos, la ventana Seguimiento, etc.

A diferencia de ON KEY, puede tener múltiples comandos ON KEY LABEL activos. Por ejemplo, puede asignar un comando a cada una de las teclas de dirección y a ambos botones del ratón.

Si ejecuta ON KEY LABEL se restablece PARAMETERS( ) a 0. Para obtener más información, vea PARAMETERS( ).

Visual FoxPro no puede interceptar ciertos eventos porque están bajo el control de Windows. En particular, los comandos ON KEY LABEL MOUSE, ON KEY LABEL LEFTMOUSE y ON KEY LABEL RIGHTMOUSE se ejecutan cuando hace clic en un control de Windows como el menú Control, las barras de desplazamiento, etc. También debe observar que CTRL+0 se admite en ON KEY LABEL en Visual FoxPro, lo que le permite redefinir la combinación de teclas utilizada para escribir un valor nulo en un campo.

Observe que ON KEY LABEL funciona fuera del alcance de un formulario; se puede utilizar el evento KeyPress dentro de los formularios para ejecutar código cuando se presiona una tecla.

Ejemplo

El ejemplo siguiente muestra un mensaje cuando se presiona una tecla de dirección.

CLEAR
PUBLIC msg
msg = CHR(13) + CHR(13) + "Press F9 to " + ;
"restore default key definition."
ON KEY LABEL RIGHTARROW Wait Window "Right Arrow " + msg NOWAIT
ON KEY LABEL LEFTARROW Wait Window "Left Arrow " + msg NOWAIT
ON KEY LABEL UPARROW Wait Window "Up Arrow " + msg NOWAIT
ON KEY LABEL DNARROW Wait Window "Down Arrow " + msg NOWAIT
* Press F9 to clear the ON KEY LABEL assignments
ON KEY LABEL F9 ON KEY

Vea también

INKEY( ) | KeyPress (Evento) | ON( ) | POP KEY | PUSH KEY


ON PAD (Comando)

Especifica la barra de menús o el menú que se activa cuando elige un título de menú concreto.

ON PAD MenuTitleName OF MenuBarName1   [ACTIVATE POPUP MenuName
| ACTIVATE MENU MenuBarName2

Parámetros

MenuTitleName OF MenuBarName1
Especifica el título del menú al que se ha asignado un menú o una barra de menús.
ACTIVATE POPUP MenuName
Especifica el menú que se debe activar cuando se elige el título de menú. Utilice ON PAD MenuTitleName OF MenuBarName1 sin ACTIVATE POPUP para liberar un menú de un título.

Si se especifica la barra de menús de sistema _MSYSMENU para MenuBarName1, MenuName no puede especificar un menú creado con la cláusula DEFINE POPUP PROMPT.

ACTIVATE MENU MenuBarName2
Especifica el nombre de la barra de menús que se va a activar cuando se elija el título de menú. Utilice ON PAD MenuTitleName OF MenuBarName1 sin ACTIVATE MENU para liberar una barra de menús de un nombre de menú.

Observaciones

Utilice ON SELECTION PAD para ejecutar un comando cuando se elija un título de menú.

Vea también

ACTIVATE MENU | DEFINE MENU | ON SELECTION MENU | ON SELECTION PAD


ON PAGE (Comando)

Especifica un comando que se ejecuta cuando el resultado impreso llega a un número de línea concreto o cuando se utiliza EJECT PAGE.

ON PAGE   [AT LINE nLineNumber [Command]]

Parámetros

AT LINE nLineNumber [Command]
Especifica el comando que se va a ejecutar en el número de línea indicado. El comando especificado se ejecuta cuando _PLINENO, la variable de sistema que realiza un seguimiento del número de línea activa en un informe, alcanza un valor superior al número de línea especificado con nLineNumber. El comando especificado con ON PAGE también se ejecuta con EJECT PAGE. Para obtener más información, vea EJECT PAGE.

Observaciones

ON PAGE normalmente utiliza DO para ejecutar un procedimiento relacionado con la manipulación de saltos de página, encabezados y pies.

Ejecutar ON PAGE sin la cláusula AT LINE borra el comando ON PAGE.

Vea también

EJECT PAGE | DO (Comando) | _PLINENO (Variable del sistema)


ON SELECTION BAR (Comando)

Especifica el comando que se ejecutará cuando elija un elemento de menú concreto.

ON SELECTION BAR nMenuItemNumber OF MenuName   [Command]

Parámetros

nMenuItemNumber OF MenuName [Command]
Especifica el número de barra del elemento de menú, el nombre del menú y el comando que se va a ejecutar para el elemento de menú especificado.

Observaciones

Normalmente, ON SELECTION BAR utiliza DO para ejecutar un procedimiento o programa. Sitúe ON SELECTION BAR entre los comandos DEFINE POPUP y ACTIVATE POPUP cuando cree y active un menú.

También puede utilizar ON SELECTION BAR con un menú de sistema de Visual FoxPro.

Utilice ON SELECTION POPUP para ejecutar un comando cuando se elija un elemento de un menú. Utilice ON BAR para activar una barra de menús o un menú cuando elija un elemento específico de un menú.

Utilice ON SELECTION BAR nMenuItemNumber OF MenuName sin ningún comando para liberar un comando asignado a un elemento de menú.

Vea también

DEFINE BAR | DEFINE POPUP | ON BAR | ON SELECTION POPUP


ON SELECTION MENU (Comando)

Especifica un comando que se ejecuta al elegir un título de una barra de menús.

ON SELECTION MENU MenuBarName | ALL [Command]

Parámetros

MenuBarName
Especifica el nombre de la barra de menús a la que aisgna un comando. El comando se ejecuta al elegit cualquier título de menú perteneciente a esa barra. Puede especificar el nombre de una barra de menús definida por el usuario, creada con DEFINE MENU, o la baorra de menús del sistema de Microsoft Visual FoxPro _MSYSMENU.
ALL
Ejecuta un comando al elegir cualquier título de menú de cualquier barra de menús.
Command
Especifica el comando que se ejecuta cuando se elija un título de menú. Utilice ON SELECTION MENU sin un comando para liberar un comando asignado a la barra de menús.

Observaciones

Al crear y activar una barra de menús, coloque ON SELECTION MENU entre DEFINE MENU y ACTIVATE MENU.

Utilice ON SELECTION PAD para ejecutar un comando cuando elija un elemento de menú concreto. ON SELECTION PAD tiene prioridad sobre ON SELECTION MENU. Utilice ON PAD para activar un menú o una barra de menús cuando elija un título de menú concreto.

Utilice ON SELECTION MENU sin un comando para liberar un comando asignado a la barra de menús.

Ejemplo

ON SELECTION MENU se utiliza en este ejemplo de programa para ejecutar un procedimiento cuando se elige un título de menú de la barra de menús del sistema de Visual FoxPro.

La barra de menús del sistema actual se guarda en la memoria con SET SYSMENU SAVE y todos los títulos de menú del sistema se eliminan con SET SYSMENU TO.

DEFINE PAD crea varios títulos de menú del sistema. Al elegir un título de menú, se ejecuta el procedimiento choice asignado a la barra de menús con ON SELECTION MENU. El procedimiento choice muestra el nombre del título de menú elegido y el nombre de la barra de menús. Si elige el título de menú Salir, se recupera el menú de sistema original de Visual FoxPro.

*** Name this program ONMENU.PRG ***
CLEAR
SET SYSMENU SAVE
SET SYSMENU TO
DEFINE PAD padSys OF _MSYSMENU PROMPT '\<System' COLOR SCHEME 3 ;
KEY ALT+S, ''
DEFINE PAD padEdit OF _MSYSMENU PROMPT '\<Edit' COLOR SCHEME 3 ;
KEY ALT+E, ''
DEFINE PAD padRecord OF _MSYSMENU PROMPT '\<Record' COLOR SCHEME 3 ;
KEY ALT+R, ''
DEFINE PAD padWindow OF _MSYSMENU PROMPT '\<Window' COLOR SCHEME 3 ;
KEY ALT+W, ''
DEFINE PAD padReport OF _MSYSMENU PROMPT 'Re\<ports' COLOR SCHEME 3 KEY ALT+P, ''
DEFINE PAD padExit OF _MSYSMENU PROMPT 'E\<xit' COLOR SCHEME 3 ;
KEY ALT+X, ''
ON SELECTION MENU _MSYSMENU ;
DO choice IN onmenu WITH PAD( ), MENU( )
PROCEDURE choice
PARAMETER gcPad, gcMenu
WAIT WINDOW 'You chose ' + gcPad + ;
' from menu ' + gcMenu NOWAIT
IF gcPad = 'PADEXIT'
SET SYSMENU TO DEFAULT
ENDIF

Vea también

ACTIVATE MENU | DEFINE MENU | ON PAD | ON SELECTION PAD


ON SELECTION PAD (Comando)

Especifica el comando que se ejecuta cuando elige un título concreto de la barra de menús.

ON SELECTION PAD MenuTitleName OF MenuBarName [Command]

Parámetros

MenuTitleName OF MenuBarName
Especifica el nombre del título de menú al que se ha asignado el comando.
Command
Especifica el comando de Visual FoxPro que se ejecutará cuando elija el título de menú especificado.

Observaciones

Cuando elija el título de menú especificado, Visual FoxPro ejecutará el comando que especifique con ON SELECTION PAD. ON SELECTION PAD suele utilizar DO para ejecutar un procedimiento o un programa cuando se elige un título de menú concreto de la barra de menús. Al crear y activar la barra de menús, coloque ON SELECTION PAD entre los comandos DEFINE MENU y ACTIVATE MENU.

Utilice ON SELECTION MENUpara ejecutar un comando cuando elija un título de menú de la barra de menús. Utilice ON PAD para activar un menú o una barra de menús cuando elija un título de menú específico una barra de menús.

Utilice ON SELECTION PAD sin un comando para liberar un comando asignado al título de menú.

Vea también

ACTIVATE MENU | DEFINE MENU | DEFINE PAD | ON PAD | ON SELECTION MENU


ON SELECTION POPUP (Comando)

Especifica el comando que se ejecuta cuando se elige un elemento de un menú especificado o de todos los menús.

ON SELECTION POPUP MenuName | ALL [Command]

Parámetros

MenuName
Especifica el menú al que se ha asignado el comando.
ALL
Si incluye ALL en lugar del nombre de un menú, Visual FoxPro ejecutará el comando cuando usted elija un elemento de cualquier menú
Command
Especifica el comando que se va a ejecutar cuando elija un elemento de un menú.

Observaciones

Cuando se elige un elemento de un menú, Visual FoxPro ejecuta el comando que haya especificado con ON SELECTION POPUP. Al crear y activar el menú, coloque ON SELECTION POPUP entre DEFINE POPUP y ACTIVATE POPUP.

Utilice ON SELECTION BAR para ejecutar un comando específico cuando elija un elemento específico de un menú. ON SELECTION BAR tiene prioridad sobre ON SELECTION POPUP. Utilice ON BAR para activar una barra de menús o un menú cuando elija un elemento específico de un menú.

Utilice ON SELECTION POPUP sin ningún comando para liberar un comando asignado a un elemento de menú con un ON SELECTION POPUP anterior.

Vea también

ACTIVATE POPUP | DEFINE BAR | DEFINE POPUP | ON BAR


ON SHUTDOWN (Comando)

Especifica un comando que se ejecuta al intentar salir de Visual FoxPro o Microsoft Windows.

ON SHUTDOWN [Command]

Parámetros

Ejecute ON SHUTDOWN sin Command para liberar el comando ON SHUTDOWN actual.

Observaciones

El comando especificado en ON SHUTDOWN se ejecuta al intentar salir de Visual FoxPro. Si intenta salir de Microsoft Windows mientras Visual FoxPro está abierto, el control se devolverá a Visual FoxPro y se ejecutará el comando especificado en ON SHUTDOWN.

El comando ON SHUTDOWN suele ser un comando DO que ejecuta una rutina para mostrar un cuadro de diálogo. Este cuadro de diálogo le pregunta si realmente desea salir de la aplicación activa y de Visual FoxPro. Si desea salir de la aplicación, la rutina puede cerrar archivos abiertos, limpiar el entorno de Visual FoxPro y ejecutar QUIT. Si no desea salir de la aplicación activa, la rutina puede devolver el control a la aplicación.

Vea también

QUIT | EXIT (Comando) | ON EXIT MENU (Comando)


OPEN DATABASE (Comando)

Abre una base de datos.

OPEN DATABASE [FileName | ?] [EXCLUSIVE | SHARED] [NOUPDATE] [VALIDATE]

Parámetros

FileName
Especifica el nombre de la base de datos que se va a abrir. Si no especifica una extensión para el nombre de archivo, Visual FoxPro asignará automáticamente la extensión .DBC. Si omite FileName, aparecerá el cuadro de diálogo Abrir. Puede especificar un nombre de ruta de acceso como parte del nombre de la base de datos.
Nota Visual FoxPro no reconocerá correctamente un nombre de ruta de acceso si el nombre del disco o del directorio contiene un signo de admiración (!).
?
Muestra el cuadro de diálogo Abrir, en el que puede elegir una base de datos existente o escribir el nombre del nuevo Form que desea crear.
EXCLUSIVE
Abre la base de datos en modo exclusivo. Si abre la base de datos en modo exclusivo, otros usuarios no podrán tener acceso a ella y recibirán un error si lo intentan. Si no incluye EXCLUSIVE o SHARED, el valor actual de SET EXCLUSIVE determinará cómo se abre la base de datos.
SHARED
Abre la base de datos en modo compartido. Si abre la base de datos para uso compartido, otros usuarios tendrán acceso a ella. Si no incluye EXCLUSIVE o SHARED, el valor actual de SET EXCLUSIVE determinará cómo se abre la base de datos.
NOUPDATE
Especifica que no es posible realizar cambios en la base de datos. Es decir, que la base de datos es de sólo lectura. Si omite NOUPDATE, la base de datos se abrirá con acceso de lectura y escritura.

NOUPDATE no afecta a las tablas que contiene la base de datos. Para impedir que se produzcan cambios en una tabla de una base de datos, incluya NOUPDATE en USE cuando abra la tabla.

VALIDATE
Especifica que Visual FoxPro comprueba que las referencias de la base de datos sean válidas. Visual FoxPro comprueba que las tablas y los índices a los que hace referencia la base de datos estén disponibles en el disco. Visual FoxPro también comprueba que existan las etiquetas de índice y los campos a los que hacen referencia las tablas y los índices.

Observaciones

Mientras esté abierta la base de datos, estarán disponibles todas las tablas que contiene. Sin embargo, las tablas no están abiertas implícitamente. Deberá abrirlas con USE.

Cuando se ejecuta USE, Visual FoxPro busca la tabla en la base de datos actual. Si no encuentra la tabla, Visual FoxPro busca una tabla fuera de la base de datos. Esto significa que si una tabla de la base de datos tiene el mismo nombre que otra fuera de ella, se encontrará primero la tabla de la base de datos.

No es posible abrir una base de datos que otro usuario ha abierto de forma exclusiva.

Ejemplo

En el ejemplo siguiente se usa OPEN DATABASE para abrir la base de datos testdata. DISPLAY DATABASE se usa para mostrar información sobre las tablas de la base de datos.

CLOSE DATABASES
SET PATH TO (HOME(2) + 'Data\')     && Sets path to database
OPEN DATABASE testdata  && Open testdata database
DISPLAY DATABASE  && Displays table information

Vea también

ADD TABLE | CLOSE DATABASES | CREATE DATABASE | DBUSED( ) | DISPLAY DATABASE | FREE TABLE | LIST DATABASE | REMOVE TABLE


PACK (Comando)

Borra definitivamente todos los registros marcados para eliminar de la tabla actual y reduce el tamaño de un archivo memo asociado a la tabla.

PACK [MEMO] [DBF] [Tablename ] [IN nWorkarea | cTableAlias]

Parámetros

MEMO
Elimina el espacio no utilizado del archivo memo, pero no elimina los registros marcados para eliminar de la tabla. La información de los campos memo se almacena en un archivo memo asociado. Un archivo memo tiene el mismo nombre que la tabla y la extensión .fpt.
DBF
Elimina de la tabla los registros marcados para eliminación, pero no afecta al archivo memo.
Tablename
Especifica la tabla que se va a empaquetar. Visual FoxPro abre la tabla especificada, la empaqueta y la cierra.
IN nÁreaTrabajo | cAliasTabla
Especifica el área de trabajo o el alias de tabla afectados por el comando PACK. Se utiliza esta cláusula para especificar un área de trabajo o una tabla fuera del área de trabajo actual.

Observaciones

Cuando se ejecuta PACK, Microsoft Visual FoxPro copia todos los registros que no están marcados para borrar a una tabla temporal. Cuando se termine de ejecutar PACK, Visual FoxPro eliminará la tabla original del disco y cambiará el nombre de la tabla temporal por el nombre de la tabla original. Al presionar ESC se detiene PACK, la tabla temporal se borra y la tabla original permanece inalterada. La tabla original se recuperará también si se agota el espacio del disco durante la ejecución de PACK.

Cuando se ejecuta PACK sin las cláusulas MEMO y DBF, PACK afecta tanto la tabla como el archivo memo.

PACK necesita utilizar la tabla de forma exclusiva. Para obtener más información acerca de cómo abrir una tabla en red de forma exclusiva, ver SET EXCLUSIVE.

Si la tabla activa tiene uno o varios índices abiertos, PACK regenera los archivos de índice.

Precaución Hay que tener cuidado de marcar solamente los registros que ya no va a necesitar. No hay ninguna forma de recuperar los registros eliminados después de utilizar PACK.

Si se omite la cláusula IN, PACK ctuará en el área de trabajo actual.

Cuando se utilice PACK con una tabla que contiene campos autoincrementales, la tabla resultante no está re-incrementada, quiere decir que los valores que existían van a permanecer y pueden quedar huecos de los artículos que fueron eliminados. Para más información, ver Autoincremento de valores en campos de una tabla.

Ver también

DELETE - SQL | DELETE | DELETED( ) | RECALL | SET EXCLUSIVE


PACK DATABASE (Comando)

Elimina los registros marcados para eliminar de la base de datos actual.

PACK DATABASE

Observaciones

Después de borrar una tabla o una vista de la base de datos, o de modificar la estructura de una tabla de la base de datos, esta contiene registros marcados para eliminar.

La base de datos debe haberse abierto de forma exclusiva, y no debe estar abierta ninguna tabla o vista de la base de datos.

Ejemplo

En el ejemplo siguiente se utiliza PACK DATABASE para empaquetar la base de datos testdata, quitando los registros marcados para eliminar.

CLOSE DATABASES
SET PATH TO (HOME(2) + 'data\')     && Sets path to database
OPEN DATABASE testdata  && Open the database
PACK DATABASE && Pack the current database

Vea también

CLOSE DATABASES | DELETE DATABASE | MODIFY DATABASE | OPEN DATABASE | SET DATABASE | VALIDATE DATABASE


PARAMETERS (Comando)

Asigna los datos transferidos de un programa que llama a variables privadas o matrices.

PARAMETERS Parameter1 [AS type [OF ClassLib]] [, Parameter2 [AS type [OF ClassLib]]]

Parámetros

ParameterList
Especifica los nombres de variable o de matriz a los que se han asignado los datos.

Los parámetros de ParameterList están separados por comas. Debe haber como mínimo tantos parámetros en la instrucción PARAMETERS como en la instrucción DO ... WITH. Si se enumeran más variables o matrices en la instrucción PARAMETERS de los que se pasan con DO ... WITH, el resto de variables y matrices se inicializarán en falso (.F.). Puede pasar 26 parámetros como máximo.

PARAMETERS( ) devuelve el número de parámetros que se pasaron a la rutina ejecutada más recientemente.

AS type
Especifica el tipo de datos que utiliza esta variable.
OF ClassLib
Especifica la biblioteca de clases que contiene la descripción del tipo en la que se basa el elemento type de esta variable.

Observaciones

Los distintos elementos de ParameterList se separan con comas. Cuando se utiliza PARAMETERS con DO ... WITH, debe ser la primera instrucción ejecutable del programa, procedimiento o función definida por el usuario que se llama.

De forma predeterminada, DO ... WITH pasa las variables y matrices a los procedimientos por referencia. Cuando cambia un valor en el procedimiento al que se llama, el nuevo valor vuelve a pasarse a la variable o la matriz asociada en el programa que llama. Si desea pasar una variable o matriz a un procedimiento por valor, encierre la variable o matriz entre paréntesis en la lista de parámetros de DO ... WITH. Los cambios realizados en el parámetro del procedimiento llamado no se pasarán de vuelta al programa que llama.

De forma predeterminada, las variables se pasan por referencia a un procedimiento y por valor a una función definida por el usuario. Utilice SET UDFPARMS TO REFERENCE para pasar variables a una función definida por el usuario por referencia.

La información de tipo requerida por el analizador de CodeSense en IntelliSense sólo estará disponible cuando cree referencias a objetos y variables con información de tipo con la cláusula AS opcional.

Ejemplo

El ejemplo siguiente transfiere parámetros a una rutina de control de errores.

ON ERROR DO errhand WITH ERROR( ), MESSAGE( ), ;
MESSAGE(1),PROGRAM( ),LINENO( )
USE nodatabase
ON ERROR         && restores system error-handling routine
PROCEDURE errhand
PARAMETERS gnError, gcMess, gnMess1, gcProg, gnLineNo
? 'Error number: ' + LTRIM(STR(gnError))
? 'Error message: ' + gcMess
? 'Line of code with error: ' + gnMess1
? 'Line number of error: '+ LTRIM(STR(gnLineNo))
? 'Program with error: ' + gcProg

Vea también

PCOUNT( ) (Función) | DO | LOCAL | LPARAMETERS | PARAMETERS( ) (Función) | PRIVATE | PUBLIC | SET UDFPARMS


PLAY MACRO (Comando)

Ejecuta una macro de teclado.

PLAY MACRO MacroName [TIME nDelay]

Parámetros

MacroName
Especifica el nombre de la macro de teclado que se va a reproducir.
TIME nDelay
Especifica el intervalo de tiempo entre cada pulsación de tecla de una macro de teclado. El periodo de retardo debe estar comprendido entre 0 y 10 segundos. nDelay puede evaluarse como un número con una fracción decimal. Por ejemplo, si especifica nDelay igual a 1,5, las pulsaciones de teclas de la macro se reproducirán con un retardo de un segundo y medio entre cada pulsación de teclas.

Observaciones

Puede guardar un conjunto de pulsaciones como una macro de teclado si elige la opción Macros del menú Herramientas. PLAY MACRO reproduce este conjunto de pulsaciones de teclas. La reproducción de macros de teclado en programas permite crear programas de demostración que se ejecuten solos.

Si ejecuta PLAY MACRO desde la ventana Comandos, se ejecutará inmediatamente. Si se ejecuta PLAY MACRO en un programa, la ejecución se demorará hasta que el programa ejecute un comando que admita entrada por teclado. Ejemplos de comandos que esperan entrada son @ ... GET, BROWSE, CHANGE y EDIT.

Si un programa tiene pendiente un conjunto de comandos PLAY MACRO, Visual FoxPro no ejecuta los comandos en el orden en que se emiten. Las macros se ejecutan en el orden inverso: el primer PLAY MACRO se ejecuta en último lugar y el último PLAY MACRO se ejecuta en primer lugar, en orden de final a principio dentro del programa.

Vea también

CLEAR (Comando) | ON KEY LABEL (Comando) | RESTORE MACROS (Comando) | SAVE MACROS (Comando)


POP KEY (Comando)

Restaura asignaciones ON KEY LABEL colocadas en la pila con PUSH KEY.

POP KEY [ALL]

Parámetros

ALL
Borra todas las asignaciones de teclas actual definida con ON KEY LABEL y borra de la pila todas las asignaciones de teclas definidas con ON KEY LABEL.

Observaciones

Cuando se utiliza POP KEY con PUSH KEY, permite guardar un conjunto de asignaciones de teclas creado mediante comandos ON KEY LABEL, hacer cambios a las asignaciones de teclas con comandos ON KEY LABEL y luego restaurarlos a las asignaciones originales.

Las asignaciones de claves se guardan en memoria, así cada POP KEY debe tener su correspondiente PUSH KEY para asegurar que el uso de memoria de su aplicación no crece innecesariamente.

Para más información sobre colocar comandos ON KEY LABEL en la pila, consulte comando PUSH KEY.

Vea también

ON KEY LABEL (Comando) | ON( ) (Función) | PUSH KEY (Comando)


POP MENU (Comando)

Restaura la definición de la barra de menús especificada y colocada en la pila con PUSH MENU.

POP MENU MenuBarName [TO MASTER]

Parámetros

MenuBarName
Especifica el nombre de la barra de menús cuya definición se extrae de la pila. La barra de menús especificada puede ser una barra definida por el usuario o la barra de menús del sistema de Visual FoxPro.
TO MASTER
Restaura la primera definición de barra de menús insertada en la pila y luego borra la pila.

Observaciones

Cuando se utiliza con PUSH MENU, POP MENU permite guardar una definición de barra de menús, hacer cambios en la definición de la barra de menús y, luego, restaurar la definición de la barra de menús a su estado original.

Los menús se colocan o se eliminan de la pila en orden: el último que entra es el primero que sale.

Las definiciones de menú ocupan memoria; por ello, cada POP MENU debe tener un PUSH MENU correspondiente que evite el aumento innecesario del uso de memoria de la aplicación.

Ejemplo

En este ejemplo se introduce en la pila la definición de la barra de menús del sistema y luego se modifica. A continuación, se restaura la definición del menú del sistema original extrayéndola de la pila.

PUSH MENU _MSYSMENU
SET SYSMENU TO _MFILE, _MEDIT
POP MENU _MSYSMENU

Vea también

ACTIVATE MENU (Comando) | DEFINE MENU (Comando) | POP POPUP (Comando) | PUSH MENU (Comando) | PUSH POPUP (Comando)


POP POPUP (Comando)

Restaura la definición de menú especificada que se colocó en la pila con PUSH POPUP.

POP POPUP MenuName

Parámetros

MenuName
Especifica el nombre del menú cuya definición se extrae de la pila. El menú especificado puede ser un menú definido con DEFINE POPUP o un menú del sistema de Visual FoxPro.

Observaciones

Cuando se utiliza con PUSH POPUP, POP POPUP permite guardar una definición de menú, modificarla y restaurarla a su estado original.

Las definiciones de menú se colocan y se eliminan de la pila en el orden último en entrar, primero en salir.

Las definiciones de menú ocupan memoria; por ello, cada POP POPUP debe tener un PUSH POPUP correspondiente que evite el aumento innecesario del uso de memoria de la aplicación.

Ejemplo

En el ejemplo siguiente se crea un menú llamado popExam. Se inserta la definición del menú en la pila y después se modifica uno de los elementos de menú. La definición original del menú se restaura después, extrayéndola de la pila.

DEFINE POPUP popExam FROM 5,5
DEFINE BAR 1 OF popExam PROMPT 'One'
DEFINE BAR 2 OF popExam PROMPT 'Two'
DEFINE BAR 3 OF popExam PROMPT 'Three'
DEFINE BAR 4 OF popExam PROMPT 'Four'
ACTIVATE POPUP popExam NOWAIT
PUSH POPUP popExam
WAIT 'Popup pushed' WINDOW
RELEASE BAR 2 OF popExam
WAIT 'This is the modified popup' WINDOW
POP POPUP popExam
WAIT 'Popup popped, original popup restored' WINDOW
DEACTIVATE POPUP popExam
RELEASE POPUP popExam

Vea también

ACTIVATE POPUP | DEFINE POPUP | POP MENU | PUSH MENU | PUSH POPUP


PRINTJOB ... ENDPRINTJOB (Comando)

Activa la configuración para las variables del sistema de trabajos de impresión.

PRINTJOB Commands
ENDPRINTJOB

Parámetros

Commands
Especifica los comandos de Visual FoxPro que se ejecutan hasta completar el trabajo de impresión.

Observaciones

PRINTJOB ... ENDPRINTJOB inicializa la impresora y algunas variables del sistema que afectan al resultado impreso. Puede enviar códigos de control a la impresora, expulsar una página en la impresora antes o después de un trabajo de impresión, inicializar el número de columna de la impresora y controlar el número de copias impresas.

Al ejecutar PRINTJOB se realizan las tareas siguientes:

  • Envía a la impresora los controles de inicio almacenados en la variable del sistema _PSCODE. Para obtener más información sobre los códigos de control de la impresora, consulte el tema Introducción a las variables del sistema y el manual de su impresora.
  • Avanza una página si la variable del sistema _PEJECT está establecida en BEFORE o en BOTH.
  • Ajusta la variable del sistema _PCOLNO a 0. _PCOLNO almacena el número de columna de la impresora.

Al ejecutar ENDPRINTJOB se realizan las tareas siguientes:

  • Los códigos de control de finalización de la impresora se almacenan en la variable _PECODE. Puede restaurar la impresora con la configuración que tenía antes de ejecutar PRINTJOB.
  • Avanza una página si la variable del sistema _PEJECT está establecida en AFTER o en BOTH.
  • Se vuelve al principio del bucle PRINTJOB para imprimir otra copia del informe, si la variable del sistema _PCOPIES se ajusta a un valor superior a 1 (el predeterminado). El número de copias viene determinado por el valor de la variable _PCOPIES. Cuando el número de copias impresas coincide con el valor de _POCPIES, Visual FoxPro sale del bucle. El control del programa pasa entonces al comando inmediatamente siguiente a ENDPRINTJOB.

PRINTJOB y ENDPRINTJOB pueden ejecutarse únicamente desde dentro de un programa. No pueden anidarse comandos PRINTJOB ... ENDPRINTJOB.

Vea también

ON PAGE | Introducción a las variables del sistema | Imprimir | PRINTSTATUS( ) (Función)


PRIVATE (Comando)

Oculta al programa actual las variables o matrices especificadas que estaban definidas en el programa que llama.

PRIVATE VarList

–O bien–

PRIVATE ALL[LIKE Skeleton | EXCEPT Skeleton]

Parámetros

VarList
Especifica las variables o matrices privadas que se declaran.
ALL LIKE Skeleton
La cláusula ALL LIKE hace que PRIVATE oculte todas las variables y matrices cuyos nombres coincidan con la estructura Skeleton, que puede contener los caracteres comodín ? y *.
ALL EXCEPT Skeleton
La cláusula PRIVATE hace que se oculten todas las variables o matrices cuyos nombres no coincidan con la estructura Skeleton, que puede contener los caracteres comodín ? y *.

Observaciones

Los elementos de VarList se separan mediante comas. Oculta al programa actual las variables o matrices definidas en un programa ejecutado previamente. Ocultar variables creadas en programas de nivel superior permite manipular en el programa actual variables privadas con el mismo nombre que las variables ocultas. Una vez que termina el programa que contiene PRIVATE, todas las variables y matrices privadas que se declararon vuelven a estar disponibles.

PRIVATE no crea variables; simplemente oculta al programa actual las variables declaradas en programas de nivel superior.

Ejemplo

*** Program example demonstrating PRIVATE ***
SET TALK OFF
val1 = 10
val2 = 15
DO down
? val1, val2  && Displays 10, 100
PROCEDURE down
PRIVATE val1
val1 = 50
val2 = 100
? '   Val1   Val2'
? val1, val2  && Displays 50, 100
RETURN

Vea también

DIMENSION | FUNCTION | LOCAL | LPARAMETERS | PARAMETERS | PARAMETERS( ) | PROCEDURE | PUBLIC


PROCEDURE (Comando)

Identifica el principio de un procedimiento en un archivo de programa.

PROCEDURE ProcedureName [LPARAMETERS parameter1[,parameter2},...] Commands [RETURN [eExpression]]
ENDPROC

o

PROCEDURE ProcedureName([parameter1[AS para1type][,parameter2 [AS para2type]],...]) [AS returntype] Commands [RETURN [eExpression]]
ENDPROC

Parámetros

ProcedureName
Especifica el nombre del procedimiento que se va a crear.

Observaciones

PROCEDURE es una instrucción dentro de un archivo de programa. Especifica el principio de cada procedimiento en un archivo de programa y define el nombre del procedimiento. Debe comenzar por una letra o un subrayado, y puede contener cualquier combinación de letras, números y subrayados.

En Visual FoxPro, los nombres de procedimiento pueden tener una longitud máxima de 254 caracteres.

Los observaciones se pueden colocar en la misma línea después de PROCEDURE y ENDPROC. Estos observaciones se pasarán por alto durante la compilación y la ejecución del programa.

La línea de comando PROCEDURE va seguida de un conjunto de comandos que componen el procedimiento. Puede incluir opcionalmente RETURN en cualquier parte del procedimiento para devolver el control al programa al que se llama o a otro programa, y para definir un valor devuelto por el procedimiento. Si no incluye un comando RETURN, se ejecutará un RETURN implícito cuando salga de la función. Si el comando RETURN no incluye el valor devuelto (o si se ejecuta un RETURN implícito), Visual FoxPro asigna .T. (Verdadero) como el valor devuelto.

El procedimiento termina con el comando ENDPROC. Este comando es opcional; el procedimiento termina cuando se encuentra otro comando PROCEDURE, un comando FUNCTION o el final del archivo de programa.

Nota No puede incluir código de programa ejecutable normal en un archivo de programa después de procedimientos; sólo los procedimientos, las funciones definidas por el usuario y las definiciones de clase pueden ir a continuación del comando PROCEDURE o FUNCTION en el archivo.

Cuando ejecuta un procedimiento con DO ProcedureName, Visual FoxPro buscará el procedimiento en un orden específico. Visual FoxPro busca:

  1. El archivo que contiene DO ProcedureName.
  2. La base de datos actual.
  3. Los archivos de procedimientos abiertos con SET PROCEDURE.
  4. Los programas en la cadena de ejecución. Los archivos de programa se buscan a partir del programa ejecutado más recientemente y hacia atrás, hasta el primer programa ejecutado.
  5. Un archivo de programa independiente. Si se encuentra un archivo de programa con el mismo nombre que el nombre de archivo especificado con DO, se ejecutará. Si no se encuentra ningún nombre de archivo de programa coincidente, se mostrará un mensaje de error.

Incluya la cláusula IN en DO para ejecutar un procedimiento en un archivo específico.

De forma predeterminada, los parámetros son pasados a los procedimientos por valor. Para obtener información sobre cómo puede pasar parámetros a procedimientos por referencia, vea SET UDFPARMS. Se le puede pasar un máximo de 26 parámetros a un procedimiento. Los parámetros pueden pasar a un procedimiento al incluir una instrucción PARAMETERS o LPARAMETERS en el procedimiento, o colocar una lista de parámetros inmediatamente después de PROCEDURE ProcedureName. Ponga la lista de parámetros entre paréntesis y separe los parámetros con comas.

Para obtener más información acerca del uso del comando PROCEDURE para crear clases, vea DEFINE CLASS y Uso estricto de tipos en código de clases, objetos y variables en la Ayuda.

Ejemplo

El siguiente ejemplo ilustra cómo se puede llamar a un procedimiento para realizar una tarea discreta como, por ejemplo, realizar una entrada en un archivo de registro. El procedimiento abre el archivo de registro (que se presupone que existe en el ejemplo), construye una entrada basada en información pasada en parámetros, escribe la entrada y cierra el archivo. El procedimiento se llama con un comando DO similar al de la parte superior del programa.

DO MakeLogEntry WITH "Logged in", "jsmith"
PROCEDURE MakeLogEntry
PARAMETERS message, username
pnHandle = FOPEN("LOG2.TXT",2)     && Asume que el archivo existe
pnSize = FSEEK(pnHandle,0,2)           && Ir al final del archivo
logEntry = dtoc(date())+","+time()+","+username+","+message
=FPUTS(pnHandle, logEntry)
=FCLOSE(pnHandle)  && Cerrar el archivo
ENDPROC

En el siguiente ejemplo se muestra cómo se puede llamar un procedimiento para devolver un valor.

SET CENTURY ON
? longdate(({^1998-02-16}))  && Muestra Lunes, Febrero 16, 1998
PROCEDURE longdate
PARAMETER mdate
RETURN CDOW(mdate) + ", " + MDY(mdate)
ENDPROC

Vea también

FUNCTION | LPARAMETERS | LOCAL | PARAMETERS | PARAMETERS( ) | PRIVATE | PUBLIC | RETURN | SET PROCEDURE | SET UDFPARMS


PUBLIC (Comando)

Define variables o matrices globales.

PUBLIC MemVarList

O bien:

PUBLIC [ARRAY] ArrayName1(nRows1 [, nColumns1]) [, ArrayName2(nRows2 [, nColumns2])] ... [AS type [OF ClassLib]]

Parámetros

MemVarList
Especifica los nombres de una o más variables de memoria que se van a inicializar y a designar como globales.
[ARRAY] ArrayName1 (nRows1 [, nColumns1]) [, ArrayName2 (nRows2 [, nColumns2])] ...
Especifica una o más matrices que se van a inicializar y a designar como globales. Vea DIMENSION para obtener una descripción de cada argumento.
AS type
Especifica el tipo de datos en el que se basa esta variable o matriz.
OF ClassLib
Especifica la biblioteca de clases que contiene la descripción del tipo en que se basa el elemento type de esta variable o matriz.

Observaciones

Los distintos elementos de MemVarList se separan con comas. Las variables y matrices globales pueden utilizarse y modificarse desde cualquier programa que ejecute durante la sesión actual de Visual FoxPro.

Las variables y matrices que se crean con PUBLIC se inicializan en falso (.F.), excepto las variables públicas FOX y FXOPRO, que se inicializan en verdadero (.T.). Las variables públicas FOX y FOXPRO pueden utilizarse para ejecutar código condicionalmente basándose en el producto que esté ejecutando.

Cualquier variable o matriz que cree en la ventana Comandos será pública automáticamente.

Debe declarar como públicas todas las variables o matrices que desee antes de asignarles un valor.

Si en un programa asigna un valor a una variable o a una matriz, y luego la declara pública con PUBLIC, Visual FoxPro generará un error de sintaxis.

La información de tipo requerida por el analizador de CodeSense en IntelliSense sólo estará disponible cuando cree referencias a objetos y variables con información de tipo con la cláusula AS opcional.

Ejemplo

SET TALK OFF
PUBLIC val1,val2
val1 = 10
val2 = 15
DO down
? val1
? val2
RELEASE ALL     && Releases private variables only
DISPLAY MEMORY LIKE val?
RELEASE val1,val2  && Public variables must be released explicitly
DISPLAY MEMORY LIKE val?
PROCEDURE down
PRIVATE val1
val1 = 50
val2 = 100
? val1
? val2
RETURN

Vea también

DIMENSION | FUNCTION | LOCAL | LPARAMETERS | PARAMETERS | PARAMETERS( ) | PRIVATE | PROCEDURE | RELEASE


PUSH KEY (Comando)

Coloca todos los valores actuales del comando ON KEY LABEL en una pila en la memoria.

PUSH KEY [CLEAR]

Parámetros

CLEAR
Borra de la memoria todas las asignaciones a teclas actuales.

Observaciones

PUSH KEY, utilizada con POP KEY, le permite guardar las asignaciones de teclas definidas con comandos ON KEY LABEL, cambiar las asignaciones y restaurar luego las asignaciones anteriores.

Por ejemplo, podría querer utilizar un nuevo conjunto de comandos ON KEY LABEL al abrir la ventana Examinar. Antes de abrir la ventana Examinar, utilice PUSH KEY para guardar en memoria las asignaciones de teclas de ON KEY LABEL. Puede entonces agregar o modificar las asignaciones de teclas ON KEY LABEL específicamente para la ventana Examinar. Después de cerrar la ventana Examinar, las asignaciones de teclas de ON KEY LABEL pueden ser restauradas de la memoria con POP KEY.

Las configuraciones ON KEY LABEL se ponen y quitan de la pila en el orden último en entrar, primero en salir.

DISPLAY STATUS y LIST STATUS muestran las asignaciones de teclas actuales definidas con comandos ON KEY LABEL. Las asignaciones de teclas ocupan memoria, por lo tanto, cada PUSH KEY debe tener su correspondiente POP KEY para asegurar que la aplicación no ocupe memoria innecesaria.

Vea también

ON KEY LABEL | ON( ) | POP KEY


PUSH MENU (Comando)

Incluye una definición de barra de menús en una pila de definiciones de barras de menús en memoria.

PUSH MENU MenuBarName

Parámetros

MenuBarName
Especifica el nombre de la barra de menús cuya definición se coloca en la pila. La barra de menús puede ser una barra definida por el usuario o la barra de menús del sistema de Visual FoxPro.

Observaciones

Cuando se utiliza con POP MENU, PUSH MENU permite guardar una definición de menú, modificarla y restaurarla a su estado original.

Las definiciones de barra de menús se ponen y se quitan de la pila en el orden la última que entra es la primera que sale. Las definiciones de menú ocupan memoria; por ello, cada PUSH MENU debe tener un POP MENU correspondiente que evite el aumento innecesario del uso de memoria de la aplicación.

Ejemplo

En el ejemplo siguiente, la barra de menús del sistema de Visual FoxPro se introduce en la pila y luego se modifica. La barra de menús del sistema original se restaura luego, extrayéndola de la pila.

WAIT WINDOW 'Press a key to push the system menu bar'
PUSH MENU _MSYSMENU
WAIT WINDOW 'Press a key to change the system menu bar'
SET SYSMENU TO _MFILE, _MEDIT
WAIT WINDOW 'Press a key to restore the system menu bar'
POP MENU _MSYSMENU

Vea también

ACTIVATE MENU | DEFINE MENU | SET SYSMENU


PUSH POPUP (Comando)

Incluye una definición de menú en una pila de definiciones de menú en memoria.

PUSH POPUP MenuName

Parámetros

MenuName
Especifica el nombre del menú cuya definición se coloca en la pila. El menú puede ser también un menú del sistema de Visual FoxPro.

Observaciones

Cuando se utiliza con POP POPUP, PUSH POPUP permite guardar una definición de menú, modificarla y restaurarla a su estado original.

Las definiciones de menú se ponen y se quitan de la pila en el orden la última que entra es la primera que sale. Las definiciones de menú ocupan memoria; por ello, cada PUSH POPUP debe tener un POP POPUP correspondiente que evite el aumento innecesario del uso de memoria de la aplicación.

Ejemplo

En el ejemplo siguiente se crea un menú llamado popExam. La definición del menú se pone sobre la pila y se modifica. Luego se restaura el menú original, extrayéndolo de la pila.

DEFINE POPUP popExam FROM 5,5
DEFINE BAR 1 OF popExam PROMPT 'One'
DEFINE BAR 2 OF popExam PROMPT 'Two'
DEFINE BAR 3 OF popExam PROMPT 'Three'
DEFINE BAR 4 OF popExam PROMPT 'Four'
ACTIVATE POPUP popExam NOWAIT
PUSH POPUP popExam
WAIT 'Original Popup' WINDOW
RELEASE BAR 2 OF popExam
WAIT 'Modified Popup. Original Popup is pushed to a stack.' WINDOW
POP POPUP popExam
WAIT 'Original Popup restored' WINDOW
DEACTIVATE POPUP popExam
RELEASE POPUP popExam

Vea también

ACTIVATE POPUP | DEFINE POPUP | POP POPUP (Comando)


QUIT (Comando)

Termina la sesión actual de Visual FoxPro y devuelve el control al sistema operativo.

QUIT

Observaciones

Para finalizar una sesión de Visual FoxPro, debe utilizar siempre el comando QUIT. Si apaga el equipo sin ejecutar QUIT, se pueden dañar los archivos abiertos y perder datos. Además, puede dejar en el disco archivos temporales de trabajo que normalmente se eliminarían.

Vea también

CANCEL | RESUME | RUN | SUSPEND


RD | RMDIR (Comando)

Elimina un directorio del disco.

RD cPath | RMDIR cPath

Parámetros

cPath
Especifica el nombre y la ubicación del directorio o carpeta que se elimina del disco.

Observaciones

Visual FoxPro genera un mensaje de error si intenta eliminar un directorio o carpeta que no estén vacíos.

Ejemplo

El ejemplo siguiente utiliza MKDIR para crear un nuevo directorio llamado mytstdir y luego, usa CHDIR para cambiar al nuevo directorio. GETDIR( ) se emplea para mostrar la estructura del directorio y, a continuación, se usa RMDIR para quitar el directorio recién creado. GETDIR( ) se utiliza para mostrar de nuevo la estructura del directorio.

SET DEFAULT TO HOME( )  && Restore Visual FoxPro directory
MKDIR mytstdir  && Create a new directory
CHDIR mytstdir  && Change to the new directory
= GETDIR( )  && Display the Select Directory dialog box
SET DEFAULT TO HOME( )  && Restore Visual FoxPro directory
RMDIR mytstdir  && Remove the new directory
= GETDIR( )  && Display the Select Directory dialog box

Vea también

CD | CHDIR | GETDIR( ) | HOME( ) | MD | MKDIR | SET DEFAULT | SET PATH | SYS(5) - Unidad predeterminada | SYS(2003) - Directorio actual | SYS(2004) - Directorio de inicio de Visual FoxPro


READ (Comando)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar el Diseñador de formularios.


READ EVENTS (Comando)

Inicia el procesamiento de eventos.

READ EVENTS

Observaciones

Cuando se ejecuta READ EVENTS, Visual FoxPro inicia el procesamiento de eventos.

Ejecute CLEAR EVENTS para detener el procesamiento de eventos. Cuando se ejecuta CLEAR EVENTS, la ejecución del programa continúa en la línea inmediatamente siguiente a READ EVENTS.

Observe que sólo puede haber un comando READ EVENTS activo a la vez. Si un comando READ EVENTS está activo, cualquier comando READ EVENTS subsiguiente no tendrá efecto.

Vea también

CLEAR (Comando) | Diseñador de formularios | DOEVENTS (Comando)


RECALL (Comando)

Quita la marca de los registros marcados para eliminación en la tabla seleccionada.

RECALL [Scope] [FOR lExpression1] [WHILE lExpression2] [NOOPTIMIZE] [IN nWorkArea | cTableAlias]

Parámetros

Scope
Especifica el rango de registros a recuperar. El alcance predeterminado para RECALL es el registro actual (NEXT 1).

Sólo los registros que estén dentro del rango especificado serán recuperados. Las cláusulas de alcance son: ALL, NEXT nRecords, RECORD nRecordNumber, y REST.

Para obtener mayor información sobre las cláusulas de alcance, vea Cláusulas de alcance.

FOR lExpression1
Especifica que sólo se recuperarán los registros para los que el valor de lExpression1 sea verdadero (.T.). Esta opción permite filtrar los registros no deseados.

Solo si lExpression1 es una expresión optimizable, Rushmore optimiza un RECALL FOR. Para el mejor rendimiento, utilice una expresión optimizable en la cláusula FOR.

Para obtener mayor información, vea SET OPTIMIZE y Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.

WHILE lExpression2
Especifica una condición por la cual se recuperan los registros siempre y cuando la expresión lExpression2 de como resultado verdadero (.T.).
NOOPTIMIZE
Impide la optimización Rushmore de RECALL.

Para obtener mayor información, vea SET OPTIMIZE y Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.

IN nWorkArea | cTableAlias
Especifica el área de trabajo o el alias de tabla afectado por el comando RECALL. Utilice esta cláusula para especificar un área de trabajo o una tabla fuera del área de trabajo actual.

Observaciones

RECALL puede utilizarse para recuperar registros, siempre y cuando no se haya ejecutado PACK o ZAP.

Precaución Una vez empaquetado el archivo, todos los registros marcados para eliminación se pierden para siempre.

Puede marcar registros para eliminarlos con los comandos DELETE o DELETE – SQL, o si elige Eliminar registros en el menú Tabla cuando haya una ventana Examinar o de edición activa. Puede recuperar registros si ejecuta RECALL o elige Desmarcar registros en el menú Registro cuando hay una ventana Examinar o Editar activa.

Si omite la cláusula IN, el comando RECALL actuará en el área de trabajo actual.

Ejemplo

El ejemplo siguiente abre la tabla customer de la base de datos testdata. DELETE – SQL se utiliza para marcar todos los registros donde el campo country contenga USA para su eliminación. Se muestran todos los registros marcados para ser eliminados. Se usa RECALL ALL para quitar las marcas de todos los registros marcados para eliminar.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer  && Abrir la tabla Customer
DELETE FROM customer WHERE country = 'USA'  && Marcar para eliminar
CLEAR
LIST FIELDS company, country FOR DELETED( ) && Lista los registros marcados
RECALL ALL  && Recuperar todos los registros maracados para eliminar

Vea también

DELETE | DELETE - SQL | PACK | SET DELETED | ZAP


REINDEX (Comando)

Vuelve a generar los archivos de índice abiertos.

REINDEX actualiza todos los archivos de índice abierto en el área de trabajo seleccionada.

REINDEX [COMPACT]

Parámetros

COMPACT
Convierte archivos de índice sencillo (.idx) normales en archivos .idx compactos.

Observaciones

Los archivos de índice no se actualizan cuando se abre una tabla sin sus archivos de índice correspondientes y se hacen cambios en los campos clave de los archivos de índice. Cuando los archivos de índice quedan obsoletos, pueden actualizarse reindizándolos.

Visual FoxPro reconoce cada uno de los tipo de archivo de índice: archivos compuestos (.cdx), archivos de índice estructurales .cdx, y archivos de índice sencillo (.idx), y los vuelve a indexar según el tipo. Actualiza todas la etiquetas en los archivos .cdx y archivos de índice estructurales .cdx, que se abren automáticamente con la tabla.

Sugerencia Para acelerar el tráfico de red durante una operación REINDEX, puede utilizar SYS(3050) - Set Buffer Memory Size para cambiar el búfer de memoria a un tamaño adecuado para almacenar toda la tabla. En el primer paso, la tabla se pagina localmente, y los procesos posteriores no leerán los datos paginados en la PC remota.

Todos los archivos de índice creados con la palabra clave UNIQUE del comando INDEX o con SET UNIQUE ON conservan su estado UNIQUE al volver indexarse.

Para indexar con REINDEX archivos de índice obsoletos, ejecute estos comandos:

USE TableName INDEX OutdatedIndexNames
REINDEX

Ejemplo

En el siguiente ejemplo, ISEXCLUSIVE( ) verifica que la tabla customer fue abierta para uso exclusivo. La tabla no se vuelve a indexar hasta que la tabla en el área de trabajo actual sea abierta para uso exclusivo.

cExclusive = SET('EXCLUSIVE')
SET EXCLUSIVE OFF
SET PATH TO (HOME(2) + 'Data\')
OPEN DATA testdata  && Abre la base de datos de prueba
USE Customer     && No se abre para uso exclusivo
USE Employee IN 0 EXCLUSIVE    && Abrir para uso exclusivo en otra área de trabajo
IF ISEXCLUSIVE( )
REINDEX  && Puede hacerlo solo si la tabla fue abierta para uso exclusivo
ELSE
WAIT WINDOW 'La Tabla no se abrió para uso exclusivo'
ENDIF
SET EXCLUSIVE &cExclusive

Vea también

INDEX | SET INDEX | SET EXCLUSIVE | SET UNIQUE | SYS( ) Introducción a las funciones | USE


RELEASE BAR (Comando)

Quita de la memoria el elemento de menú especificado o todos los elementos de un menú.

RELEASE BAR nMenuItemNumber OF MenuName | ALL OF MenuName

Parámetros

nMenuItemNumber OF MenuName
Especifica un elemento de menú de un menú definido por el usuario que se desea quitar de la memoria. Para quitar un elemento de menú de un menú de sistema de Microsoft Visual FoxPro, incluya el nombre del elemento de menú de sistema interno de Visual FoxPro en nMenuItemNumber. Para obtener más información, vea el tema en pantalla Nombres de menús del sistema.
ALL OF MenuName
Especifica que se quiten de la memoria todos los elementos de menú de un menú definido por el usuario. ALL no se puede utilizar para quitar elementos de un menú de sistema de Visual FoxPro.

Vea también

DEFINE BAR | RELEASE PAD | Nombres de menús del sistema


RELEASE CLASSLIB (Comando)

Cierra una biblioteca de clases visuales .vcx que contiene definiciones de clase.

RELEASE CLASSLIB ClassLibraryName1 | ALIAS AliasName1
  [, ClassLibraryName2 | ALIAS AliasName2 …] [IN APPFileName | EXEFileName]

Parámetros

ClassLibraryName1 | ALIAS AliasName1
Especifica el nombre o el alias del archivo de biblioteca de clases visuales que se va a cerrar.
ClassLibraryName2 | ALIAS AliasName2 …
Especifica los nombres o alias de otros archivos de biblioteca de clases visuales que se desea cerrar.
IN APPFileName | EXEFileName
Especifica un archivo de aplicación de Visual FoxPro (.app) o un archivo ejecutable (.exe) que contenga la biblioteca de clases visuales.

Observaciones

Las bibliotecas de clases visuales .vcx se abren con SET CLASSLIB. Una vez abierta la biblioteca, las definiciones de clase de la biblioteca de clases visuales están disponibles para programas y desde la ventana Comandos.

Para cerrar todas las bibliotecas de clases visuales abiertas, ejecute SET CLASSLIB TO sin argumentos adicionales.

Ejemplo

El ejemplo siguiente usa CREATE CLASSLIB para crear una biblioteca de clases visuales llamada myclslib. Una clase llamada myform basada en la clase de base Form de Visual FoxPro se crea y almacena en la biblioteca myclslib. Se usa SET CLASSLIB para abrir la biblioteca de clases visuales myclslib de forma que puedan usarse las clases contenidas en ella. Luego se usa RELEASE CLASSLIB para cerrar la biblioteca de clases visuales myclslib.

CREATE CLASSLIB myclslib     && Creates a new .VCX visual class library
CREATE CLASS myform OF myclslib AS "Form"  && Creates new class
SET CLASSLIB TO myclslib ADDITIVE     && Opens MyClsLib.VCX
RELEASE CLASSLIB myclslib

Vea también

ADD CLASS | CREATE CLASS | CREATE CLASSLIB | MODIFY CLASS | REMOVE CLASS | RENAME CLASS | SET CLASSLIB


RELEASE (Comando)

Quita variables y matrices de la memoria.

RELEASE MemVarList

O bien:

RELEASE ALL [EXTENDED]

O bien:

RELEASE ALL [LIKE Skeleton | EXCEPT Skeleton]

Parámetros

RELEASE MemVarList
Especifica las variables y las matrices liberadas de la memoria. Separe los nombres de variables y de matrices con comas.
RELEASE ALL
Libera de la memoria todas las variables y matrices.
EXTENDED
Cuando se ejecuta en un programa, especifica que se liberen todas las variables públicas. RELEASE ALL no libera las variables públicas cuando se ejecutan en un programa.
LIKE Skeleton | EXCEPT Skeleton
Libera de la memoria todas las variables y matrices que coinciden con la estructura especificada, o todas las variables y matrices excepto las que coinciden con la estructura especificada. Skeleton puede incluir los caracteres comodín ? y *. RELEASE ALL LIKE y RELEASE ALL EXCEPT no liberan las variables públicas cuando se ejecutan en un programa.

Vea también

CLEAR MEMORY | DIMENSION | PRIVATE | PUBLIC | STORE


RELEASE LIBRARY (Comando)

Quita de la memoria una sola biblioteca API externa.

RELEASE LIBRARY LibraryName

Parámetros

LibraryName
Especifica el nombre de la biblioteca API que se va a quitar de la memoria.

Observaciones

Ejecute SET LIBRARY TO para quitar todas las bibliotecas API de la memoria. Una biblioteca de rutinas API externas se carga en memoria con SET LIBRARY. Para obtener más información acerca de las bibliotecas de rutinas de la API, vea SET LIBRARY.

Vea también

SET LIBRARY | Rutinas externas de biblioteca API ordenadas alfabéticamente | Rutinas externas de biblioteca API ordenadas por categoría


RELEASE MENUS (Comando)

Quita de la memoria barras de menús definidas por el usuario.

RELEASE MENUS [MenuBarNameList [EXTENDED]]

Parámetros

MenuBarNameList
Especifica las barras de menús que se deben liberar de la memoria. Separe los nombres de barras de menús con comas.
EXTENDED
Libera una barra de menús, junto con todos sus menús subordinados, sus títulos de menús, elementos de menú, y todos los comandos ON SELECTION BAR, ON SELECTION MENU, ON SELECTION PAD y ON SELECTION POPUP asociados.

Observaciones

Antes de liberar de la memoria una barra de menú activa, es necesario desactivarla con DEACTIVATE MENU.

Si se ejecuta RELEASE MENUS sin los argumentos adicionales, se quitan de la memoria todas las barras de menús definidas por el usuario.

Vea también

DEFINE MENU | ON SELECTION BAR | DEACTIVATE MENU | ON SELECTION MENU | ON SELECTION PAD | ON SELECTION POPUP


RELEASE PAD (Comando)

Quita de la memoria un título de menú específico o todos los títulos de menús.

RELEASE PAD MenuTitleName OF MenuBarName | ALL OF MenuBarName

Parámetros

MenuTitleName OF MenuBarName
Especifica el título de menú que desea quitar de la memoria.

Puede quitar un título de menú de la barra de menús del sistema de Visual FoxPro especificando su nombre en MenuTitleName. Por ejemplo, el comando RELEASE PAD _MEDIT OF _MSYSMENU quita el título de menú Edición de la barra de menús del sistema de Visual FoxPro.

ALL OF MenuBarName
Especifica que se quiten de la memoria todos los títulos de menú de una barra de menús definida por el usuario. La cláusula ALL no se puede utilizar para quitar títulos de menús de la barra de menús del sistema de Visual FoxPro.

Ejemplo

El ejemplo siguiente quita el título de menú Ventana de la barra de menús del sistema.

PUSH MENU _MSYSMENU
RELEASE PAD _MSM_WINDO OF _MSYSMENU  && Removes Window menu title
WAIT WINDOW 'Press a key to restore the default menu'
POP MENU _MSYSMENU  && Restore default Visual FoxPro menu system

Vea también

DEFINE PAD | RELEASE BAR | Nombres de menús del sistema


RELEASE POPUPS (Comando)

Quita de la memoria un menú específico o todos los menús.

RELEASE POPUPS [MenuNameList [EXTENDED]]

Parámetros

MenuNameList
Especifica los menús que se deben liberar de la memoria. Separe los nombres de menú con comas.

También se pueden liberar los menús del sistema de Visual FoxPro que aparecen bajo la barra de menús del sistema de Visual FoxPro. Para liberar un menú del sistema de Visual FoxPro, incluya el nombre interno del menú (_MFILE, _MEDIT, _MDATA, etc.). Use SET SYSMENU TO DEFAULT para restaurar la barra de menús del sistema y los menús de sistema predeterminados.

EXTENDED
Libera un menú, sus elementos y todos los comandos asociados con ON SELECTION POPUP y ON SELECTION BAR.

Observaciones

Antes de liberar un menú activo de la memoria, es necesario desactivarlo con DEACTIVATE POPUP.

Si se ejecuta RELEASE POPUPS sin ningún argumento adicional, se quitan de la memoria todos los menús definidos por el usuario.

Vea también

DEFINE POPUP | Nombres de menús del sistema | SET SYSMENU (Comando)


RELEASE PROCEDURE (Comando)

Cierra un archivo de procedimiento abierto con SET PROCEDURE.

RELEASE PROCEDURE FileName1 [, FileName2 …]

Parámetros

FileName1 [, FileName2 …]
Especifica el nombre del archivo o del conjunto de archivos de procedimientos que desea cerrar.

Observaciones

Los archivos de procedimientos se abren con SET PROCEDURE. Una vez abierto el archivo, los procedimientos del archivo están disponibles para programas y desde la ventana Comandos.

Para cerrar todos los archivos de procedimientos abiertos, ejecute SET PROCEDURE TO sin argumentos adicionales.

Vea también

SET PROCEDURE | RELEASE BAR (Comando) | RELEASE (Comando)


RELEASE WINDOWS (Comando)

Quita de la memoria ventanas definidas por el usuario o ventanas del sistema de Visual FoxPro.

RELEASE WINDOWS [WindowNameList]

Parámetros

WindowNameList
Especifica las ventanas que se liberan de la memoria. WindowNameList puede incluir ventanas definidas por el usuario y ventanas del sistema de Visual FoxPro. Separe los nombres de las ventanas con comas.

Si no se incluye WindowNameList, se libera la ventana activa definida por el usuario.

Remarks

RELEASE WINDOWS puede ser utilizado para quitar ventanas del sistema de Visual FoxPro desde la ventana principal de Visual FoxPro o una ventana principal definida por el usuario.

La siguiente lista incluye las ventanas del sistema que se pueden liberar de la ventana principal de Visual FoxPro o de una ventana primaria.

  • (Comando)
  • Sesión de datos (utilice RELEASE WINDOW "View")
  • Depurar
  • Resultado del depurador
  • Vista del documento
  • Locales
  • Seguimiento
  • Inspección
  • Vista

Para quitar una ventana del sistema y/o una barra de herramientas (en Visual FoxPro), encierre el nombre completo de la ventana o barra de herramientas entre comillas. Por ejemplo, para quitar la barra de herramientas de Controles de Informes en Visual FoxPro, ejecute el siguiente comando:

RELEASE WINDOW "Report Controls"

En las versiones anteriores de Visual FoxPro, la ventana Sesión de Datos (Data Session) siempre ha sido referenciada como la ventana Ver (View window). Además el lenguaje utilizado para controlar esta ventana, tales como HIDE WINDOW, ACTIVATE WINDOW, WONTOP( ), también se refieren a esta ventana como la ventana Ver (View window). Visual FoxPro continua este tratamiento para la Ventana Ver (View window) con el comando RELEASE WINDOWS.

Utilice ACTIVATE WINDOW para colocar una ventana del sistema en la ventana principal de Visual FoxPro o en una ventana definida por el usuario.

Vea también

ACTIVATE WINDOW (Comando) | DEFINE WINDOW (Comando)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


REMOVE CLASS (Comando)

Elimina una definición de clase de una biblioteca de clases visuales .vcx.

REMOVE CLASS ClassName OF ClassLibraryName

Parámetros

ClassName
Especifica el nombre de la definición de clase que desea quitar de la biblioteca de clases visuales.
OF ClassLibraryName
Especifica el nombre de la biblioteca de clases visuales .vcx que contiene la definición de clase que desea quitar. Si no se incluye la extensión de archivo en ClassLibraryName, se utiliza la extensión .vcx.

Observaciones

Tenga cuidado al quitar definiciones de clase, ya que la definición de clase que quite puede ser una clase primaria en la que se basen otras clases.

Vea también

ADD CLASS (Comando) | CREATE CLASS (Comando) | CREATE CLASSLIB (Comando) | MODIFY CLASS (Comando) | RELEASE CLASSLIB (Comando) | RENAME CLASS (Comando) | SET CLASSLIB (Comando)


REMOVE TABLE (Comando)

Elimina una tabla de la base de datos actual.

REMOVE TABLE TableName | ?   [DELETE] [RECYCLE]

Parámetros

TableName
Especifica la tabla que se va a quitar de la base de datos actual.
?
Muestra el cuadro de diálogo Quitar, en el que puede elegir una tabla de la base de datos actual que desea quitar.
DELETE
Especifica que la tabla se quite de la base de datos y del disco.
Precaución No se puede recuperar ninguna tabla eliminada del disco con esta cláusula. Aunque SET SAFETY esté en ON, no recibirá ninguna advertencia antes de eliminar la tabla del disco.
RECYCLE
Especifica que no se eliminará inmediatamente la tabla del disco, sino que se colocará en la Papelera de reciclaje de Windows.

Observaciones

Cuando se quita una tabla de la base de datos, se convierte en una tabla libre y puede agregarse a otra base de datos. Las tablas se agregan a una base de datos con ADD TABLE.

Cuando se ejecuta REMOVE TABLE, se quitan todos los índices principales, los valores predeterminados y las reglas de validación asociados a la tabla. Si SET SAFETY está en ON, Visual FoxPro muestra un mensaje para preguntarle si desea quitar la tabla de la base de datos.

Precaución REMOVE TABLE afecta a otras tablas de la base de datos actual si esas tablas tienen reglas o relaciones asociadas con la tabla que se va a quitar. Las reglas y relaciones dejarán de ser válidas cuando se quite la tabla de la base de datos.

Ejemplo

En el ejemplo siguiente se crean dos bases de datos llamadas mydbc1 y mydbc2, y una tabla llamada table1. La tabla se agrega a mydbc1 cuando se crea. A continuación, se cierra la tabla y se quita de mydbc1. Después se usa ADD TABLE para agregar la tabla a mydbc2. Se utiliza RENAME TABLE para cambiar el nombre de la tabla de table1 a table2.

CREATE DATABASE mydbc1
CREATE DATABASE mydbc2
SET DATABASE TO mydbc1
CREATE TABLE table1 (cField1 C(10), n N(10))  && Adds table to mydbc1
CLOSE TABLES     && A table must be closed to remove it from a database
REMOVE TABLE table1
SET DATABASE TO mydbc2
ADD TABLE table1
RENAME TABLE table1 TO table2

Vea también

ADD TABLE (Comando) | CLOSE (Comandos) | CREATE DATABASE (Comando) | DROP TABLE (Comando) | FREE TABLE (Comando) | OPEN DATABASE (Comando)


RENAME CLASS (Comando)

Cambia el nombre de una definición de clase contenida en una biblioteca de clases visuales .VCX.

RENAME CLASS ClassName1 OF ClassLibraryName TO ClassName2

Parámetros

ClassName1
Especifica el nombre de la definición de clase a la que se va a cambiar el nombre.
OF ClassLibraryName
Especifica el nombre de la biblioteca de clases visuales .vcx que contiene la definición de clase cuyo nombre desea cambiar. Si no especifica una extensión de archivo en ClassLibraryName, Visual FoxPro asignará automáticamente la extensión .vcx.
TO ClassName2
Especifica el nuevo nombre de la definición de clase.

Observaciones

Visual FoxPro no actualiza otras definiciones de clase de la biblioteca de clases visuales que hacen referencia a la definición de clase cuyo nombre ha cambiado, por lo que deberá tener cuidado al cambiar de nombre las definiciones de clase.

Ejemplo

El ejemplo siguiente usa CREATE CLASSLIB para crear una biblioteca de clases visuales llamada myclslib. Se crea una clase llamada myform (basada en la clase de base Form de Visual FoxPro) con CREATE CLASS y se almacena en la biblioteca de clases visuales myclslib. Luego se usa RENAME CLASS para cambiar el nombre de la clase de myform a yourform.

CREATE CLASSLIB myclslib     && Creates a new .VCX visual class library
CREATE CLASS myform OF myclslib AS "Form"  && Creates new class
RENAME CLASS myform OF myclslib TO yourform  && Change class name

Vea también

ADD CLASS (Comando) | CREATE CLASS (Comando) | MODIFY CLASS (Comando) | RELEASE CLASSLIB (Comando) | REMOVE CLASS (Comando) | SET CLASSLIB (Comando)


RENAME (Comando)

Cambia el nombre de un archivo.

RENAME FileName1 TO FileName2

Parámetros

FileName1 TO FileName2
Especifica el nombre de archivo que se va a modificar y el nuevo nombre de archivo. Incluya las extensiones de ambos archivos. Si no se incluyen las extensiones de archivo, se usará la extensión .dbf predeterminada. Si cambia el nombre de una tabla libre que tiene un archivo memo .fpt asociado, asegúrese de cambiar el nombre del archivo memo. Incluya un punto (.) después del nombre de archivo para cambiar el nombre de un archivo que no tenga extensión.

No use RENAME para cambiar el nombre de una tabla de una base de datos; RENAME no cambia el nombre de la tabla en la base de datos. Use RENAME TABLE para cambiar el nombre de una tabla en una base de datos.

Incluya rutas de acceso con los nombres de archivo si los archivos no están en la unidad y en el directorio predeterminados. Si FileName1 y FileName2 están en directorios o carpetas diferentes, FileName1 se mueve al directorio de FileName2.

Al ejecutar RENAME, no puede existir FileName2, pero tiene que existir FileName1 y no puede estar abierto.

FileName1 y FileName2 pueden contener caracteres comodín como * y ?. Por ejemplo, para cambiar el nombre de todos los archivos de programa con la extensión .prg en el directorio o carpeta actuales para hacer una copia de seguridad de los archivos con la extensión .bak, ejecute RENAME *.prg TO *. bak.

Vea también

COPY FILE (Comando) | COPY TO (Comando) | RENAME CLASS (Comando) | RENAME TABLE (Comando)


RENAME CONNECTION (Comando)

Cambia el nombre de una conexión con nombre de la base de datos actual.

RENAME CONNECTION ConnectionName1 TO ConnectionName2

Parámetros

ConnectionName1
Especifica la conexión cuyo nombre se va a cambiar.
ConnectionName2
Especifica el nuevo nombre de la conexión.

Observaciones

La base de datos que contiene la conexión con nombre debe estar abierta de forma exclusiva y activa para poder cambiar el nombre de la conexión. Para abrir una base de datos para uso exclusivo, incluya EXCLUSIVE en OPEN DATABASE.

Ejemplo

El ejemplo siguiente supone que hay un origen de datos ODBC disponible llamado MyFoxSQLNT. Se abre la base de datos testdata y se crea una conexión llamada Myconn1. Se utiliza DISPLAY CONNECTIONS para mostrar las conexiones con nombre de la base de datos.

Luego se usa RENAME CONNECTION para cambiar el nombre de la conexión que se acaba de crear a Mycon2. DISPLAY CONNECTIONS vuelve a usarse para mostrar la conexión con su nuevo nombre. Entonces, con DELETE CONNECTION se quita de la base de datos la conexión cuyo nombre se acaba de cambiar.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')

CREATE CONNECTION Myconn1 DATASOURCE "MyFoxSQLNT" USERID "<userid>" PASSWORD "<password>"
CLEAR
DISPLAY CONNECTIONS  && Displays named connections in the database
RENAME CONNECTION Myconn1 TO Myconn2
DISPLAY CONNECTIONS  && Displays connection with new name
DELETE CONNECTION Myconn2  && Removes the connection just renamed

Vea también

DELETE CONNECTION (Comando) | DBGETPROP( ) (Función) | DISPLAY CONNECTIONS (Comando) | LIST CONNECTIONS (Comando) | MODIFY CONNECTION (Comando) | OPEN DATABASE (Comando)


RENAME TABLE (Comando)

Cambia el nombre de una tabla de la base de datos actual.

RENAME TABLE TableName1 TO TableName2

Parámetros

TableName1
Especifica la tabla cuyo nombre se va a cambiar.
TableName2
Especifica el nuevo nombre de la tabla.

Observaciones

No puede utilizar RENAME TABLE para cambiar el nombre de una tabla libre. Para ello, utilice RENAME.

Ejemplo

En el ejemplo siguiente se crean dos bases de datos llamadas mydbc1 y mydbc2, y una tabla llamada table1. La tabla se agrega a mydbc1 cuando se crea. A continuación, se cierra la tabla y se quita de mydbc1. Después se usa ADD TABLE para agregar la tabla a mydbc2. Se utiliza RENAME TABLE para cambiar el nombre de la tabla de table1 a table2.

CLOSE DATABASES
CREATE DATABASE mydbc1
CREATE DATABASE mydbc2
SET DATABASE TO mydbc1
CREATE TABLE table1 (cField1 C(10), n N(10))  && Adds table to mydbc1
CLOSE TABLES     && A table must be closed to remove it from a database
REMOVE TABLE table1
SET DATABASE TO mydbc2
ADD TABLE table1
RENAME TABLE table1 TO table2

Vea también

ADD TABLE | CLOSE DATABASES | CREATE DATABASE | COPY FILE | COPY TO | OPEN DATABASE | RENAME


RENAME VIEW (Comando)

Cambia el nombre de una vista SQL de la base de datos actual.

RENAME VIEW ViewName1 TO ViewName2

Parámetros

ViewName1
Especifica la vista SQL cuyo nombre se va a cambiar.
ViewName2
Especifica el nuevo nombre de la vista SQL.

Observaciones

La base de datos que contiene la vista SQL debe estar abierta de forma exclusiva y activa antes de poder cambiar el nombre de la vista SQL. Para abrir una base de datos para uso exclusivo, incluya EXCLUSIVE en OPEN DATABASE.

Ejemplo

El ejemplo siguiente abre la base de datos testdata. CREATE SQL VIEW se utiliza para crear una vista SQL local llamada myview a partir de una instrucción SELECT - SQL que selecciona todos los registros de la tabla customer. Luego se usa RENAME VIEW para cambiar el nombre la vista de myview a yourview.

Se muestra el Diseñador de vistas, que le permite modificar la vista SQL cuyo nombre acaba de cambiar. Una vez cerrado el Diseñador de vistas, se borra la vista SQL.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
CREATE SQL VIEW myview AS SELECT * FROM customer  && Create the view
RENAME VIEW myview TO yourview  && Change the view name
MODIFY VIEW yourview  && Open the View designer
DELETE VIEW yourview  && Delete the view

Vea también

CREATE SQL VIEW | DELETE VIEW | DISPLAY VIEWS | LIST VIEWS | MODIFY VIEW | OPEN DATABASE | RENAME VIEW | SELECT - SQL | USE


REPLACE (Comando)

Actualiza los registros de una tabla.

REPLACE FieldName1 WITH eExpression1 [ADDITIVE] [, FieldName2 WITH eExpression2 [ADDITIVE]] ... [Scope] [FOR lExpression1] [WHILE lExpression2] [IN nWorkArea | cTableAlias] [NOOPTIMIZE]

Parámetros

FieldName1 WITH eExpression1 [, FieldName2 WITH eExpression2 ... ]
Especifica que los datos de FieldName1 se sustituyan por el valor de la expresión eExpression1; que los datos de FieldName2 se sustituyan por el valor de la expresión eExpression2; y así sucesivamente.

Cuando el valor de la expresión sea más largo que el ancho de un campo numérico, REPLACE hará que quepa el valor, mediante la ejecución de los pasos siguientes:

  • Primero, REPLACE truncará los decimales y redondeará la parte decimal restante del campo.
  • Si el valor aún no cabe, REPLACE almacenará el contenido del campo en notación científica.
  • Si el valor sigue sin caber, REPLACE sustituirá el contenido del campo por asteriscos.
ADDITIVE
Anexa al final de los campos memo los reemplazos de los campos memo. ADDITIVE sólo se aplica a los reemplazos de los campos memo. Si no se incluye ADDITIVE, el campo memo se sobrescribirá con el valor de la expresión.
Scope
Especifica un rango de registros (alcance) que se va a sustituir. El alcance predeterminado de REPLACE es el registro actual (NEXT 1).

Solamente se sustituyen los registros incluidos dentro del rango. Las cláusulas de alcance son: ALL, NEXT nRecords, RECORD nRecordNumbery REST. Para obtener más información acerca de las cláusulas de alcance, ver Cláusulas de alcance.

FOR lExpression1
Especifica que los campos designados se sustituyan únicamente en los registros para los que lExpression1 se evalúe como verdadero (.T.). La inclusión de FOR permite sustituir registros de forma condicional, descartando los registros no deseados.

La optimización de consultas Rushmore optimiza REPLACE FOR si lExpression1 es una expresión optimizable. Para obtener el máximo rendimiento, utilizar una expresión optimizable en la cláusula FOR..

Para más información, ver SET OPTIMIZE y Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.

WHILE lExpression2
Especifica una condición según la cual se sustituyen los campos mientras la expresión lógica lExpression2 se evalúe como verdadero (.T.).
IN nWorkArea
Especifica el área de trabajo de la tabla en la que se actualizan los registros.
IN cTableAlias
Especifica el alias de la tabla en la que se actualizan los registros.

Si se omiten nWorkArea y cTableAlias, los registros se actualizarán en la tabla del área de trabajo seleccionada actualmente.

NOOPTIMIZE
Impide la optimización Rushmore.

Para más información, ver SET OPTIMIZE y Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.

Observaciones

REPLACE sustituye los datos de un campo con el valor de una expresión. Los campos de las áreas de trabajo no seleccionadas deben ir precedidos de su alias.

Nota Si se omite la cláusula IN, no se producirá ninguna sustitución si el puntero de registro está al final del archivo del área de trabajo actual y se especifica un campo de otra área de trabajo.

Ejemplo

El ejemplo siguiente crea una tabla con 10 registros. Se usa REPLACE para colocar valores aleatorios en un campo. MIN( ) y MAX( ) muestran los valores máximo y mínimo de la tabla.

CLOSE DATABASES
CREATE TABLE Random (cValue N(3))
FOR nItem = 1 TO 10  && Append 10 records,
APPEND BLANK
REPLACE cValue WITH 1 + 100 * RAND( )  && Insert random values
ENDFOR
CLEAR
LIST  && Display the values
gnMaximum = 1  && Initialize minimum value
gnMinimum = 100  && Initialize maximum value
SCAN
gnMinimum = MIN(gnMinimum, cValue)
gnMaximum = MAX(gnMaximum, cValue)
ENDSCAN
? 'The minimum value is: ', gnMinimum  && Display minimum value
? 'The maximum value is: ', gnMaximum  && Display maximum value

Ver también

GATHER | INSERT - SQL | SCATTER


REPLACE FROM ARRAY (Comando)

Actualiza los datos de campos que tengan valores procedentes de una matriz de variables.

REPLACE FROM ARRAY ArrayName [FIELDS FieldList] [Scope] [FOR lExpression1] [WHILE lExpression2] [NOOPTIMIZE]

Parámetros

ArrayName
Especifica el nombre de la matriz cuyos valores sustituyen los datos del campo.
FIELDS FieldList
Especifica que solamente los campos incluidos en FieldList se sustituyan por el contenido de la matriz. Los campos de áreas de trabajo no seleccionadas deben ir precedidos de sus alias de tabla.
Scope
Especifica un intervalo de registros que se deben sustituir por el contenido de la matriz. El alcance predeterminado para REPLACE FROM ARRAY es el registro activo (NEXT 1).

Solo son sustituidos los registros que estén dentro del rango. La sustitución ocurre hasta que se encuentre el final del alcance o el final de los registros.

Las cláusulas de alcance son: ALL, NEXT nRecords, RECORD nRecordNumber y REST. Para obtener más información acerca de las cláusulas de alcance, vea Cláusulas de alcance.

FOR lExpression1
Especifica que los campos se deben sustituir únicamente en los registros donde lExpression1 se evalúe como verdadero (.T.). La inclusión de FOR le permite sustituir registros de forma condicional, descartando los registros no deseados. La sustitución se produce en los registros para los cuales lExpression1 es verdadero (.T.), o hasta llegar al final de la matriz.

Optimización de consultas optimiza REPLACE FROM ARRAY FOR si lExpression1 es una expresión optimizable. Para obtener el máximo rendimiento, utilice una expresión optimizable en la cláusula FOR.

Para obtener más información vea SET OPTIMIZE y Utilizar optimización de consultas Rushmore para acelerar el acceso de datos .

WHILE lExpression2
Especifica una condición por la cual los campos de los registros se sustituyen por el contenido de la matriz siempre que la expresión lógica lExpression2 se evalúe como verdadero (.T.).
NOOPTIMIZE
Impide la optimización Rushmore.

Para obtener más información vea SET OPTIMIZE y Utilizar optimización de consultas Rushmore para acelerar el acceso de datos .

Observaciones

Los campos de tipo Memo y General se pasan por alto en REPLACE FROM ARRAY. Para importar datos en estos campos, use GATHER y APPEND GENERAL.

Los elementos de la matriz sustituyen a los campos correspondientes del registro, comenzando por el primer elemento. El primer elemento de la matriz sustituye al primer campo del registro, el segundo elemento de la matriz sustituye al segundo campo, y así sucesivamente.

Si la matriz tiene menos elementos que el número de campos de la tabla, se pasan por alto los campos adicionales. Si la matriz tiene más elementos que el número de campos de la tabla, se pasará por alto el resto de elementos de la matriz.

Nota No se produce ninguna sustitución si el puntero de registro está al final del archivo del área de trabajo actual y especifica un campo de otra área de trabajo.

Vea también

APPEND FROM ARRAY | APPEND GENERAL | COPY TO ARRAY | GATHER | REPLACE | SCATTER | SET OPTIMIZE

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


REPORT (Comando)

Muestra o imprime un informe bajo el control de un archivo de definición de informe creado con MODIFY REPORT o CREATE REPORT.

REPORT FORM FileName1 | ? [ENVIRONMENT] [Scope] [FOR lExpression1] [WHILE lExpression2] [HEADING cHeadingText] [NOCONSOLE] [NOOPTIMIZE] [PLAIN] [RANGE nStartPage [, nEndPage]]
[TO PRINTER [PROMPT] [NODIALOG] | TO FILE FileName2 [ASCII]] [NAME ObjectName]
[SUMMARY] [NORESET] [NOPAGEEJECT] [PREVIEW [[IN] WINDOW WindowName | IN SCREEN] [NOWAIT]]

Parámetros

FileName1
Especifica el nombre del archivo de definición de informe que se va a imprimir. En esta versión de Visual FoxPro también se notifica este parámetro al cuadro de diálogo Cola de impresión.
?
Muestra el cuadro de diálogo Abrir, en el que puede elegir un archivo de informe.
ENVIRONMENT
Se incluye por compatibilidad con los informes de las versiones 2.x. Para restaurar el entorno de datos asociado a un informe de Visual FoxPro, establezca la propiedad AutoOpenTables del entorno de datos en el valor verdadero (.T.), que es el valor predeterminado. Para asegurarse de que el entorno del informe se cierra cuando se termina de imprimir el informe, establezca la propiedad AutoCloseTables del entorno de datos en el valor verdadero (.T.), que es también el valor predeterminado.

En el caso de informes convertidos de versiones anteriores de FoxPro, la inclusión de ENVIRONMENT abrirá y restaurará todas las tablas y las relaciones en el entorno de datos, incluso si AutoOpenTables está establecida en falso (.F.).

Al crear o modificar informes, puede guardar el entorno de datos actual de Visual FoxPro con el archivo de definición de informes. Esto coloca los registros adicionales en la tabla de definición de informe para todas las tablas abiertas y archivos de índice, para el orden de índice y para todas las relaciones entre las tablas.

Scope
Especifica un intervalo de registros a incluir en el informe. El alcance predeterminado para REPORT es ALL (todos los registros). Las cláusulas de alcance son: ALL, NEXT nRecords, RECORD nRecordNumber y REST. Solamente se incluyen en el informe los registros incluidos en el intervalo. Para obtener más información acerca de las cláusulas de alcance, vea Alcance (Cláusulas).
FOR lExpression1
Imprime solamente los datos incluidos en los registros en los que lExpression1 se evalúa como verdadero (.T.). La inclusión de FOR le permite filtrar los registros que no desea imprimir.

Rushmore optimizará REPORT FOR si lExpression1 es una expresión optimizable. Para obtener el máximo rendimiento, utilice una expresión optimizable en la cláusula FOR.

Para obtener más información vea SET OPTIMIZE y Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.

WHILE lExpression2
Especifica una condición por la cual los datos se imprimen mientras la expresión lógica lExpression2 se evalúe como verdadero (.T.).
HEADING cHeadingText
Especifica texto para que se incluya un encabezado adicional en cada página del informe. Si se incluyen a la vez HEADING y PLAIN, la cláusula PLAIN tendrá preferencia.
NOCONSOLE
Suprime el eco de un informe a la ventana principal de Visual FoxPro o a una ventana definida por el usuario cuando el informe se está imprimiendo o enviando a un archivo.
NOOPTIMIZE
Para impedir la optimización Rushmore de REPORT, incluya NOOPTIMIZE.

Si desea obtener más información, vea SET OPTIMIZE y Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.

PLAIN
Especifica que el encabezado de página aparece solamente al principio del informe.
RANGE nStartPage [, nEndPage]
Especifica (excepto en la vista preliminar) el intervalo de páginas que se va a imprimir. nStartPage especifica la primera página que se va a imprimir; nEndPage especifica la última página que se va a imprimir. Si se omite nEndPage, el número de la última impresa será el predeterminado: 32767.
TO PRINTER [PROMPT] [NODIALOG]
Envía un informe a la impresora.

La cláusula opcional PROMPT muestra un cuadro de diálogo de configuración de la impresora antes de que comience la impresión. Las opciones de configuración de la impresora que puede ajustar dependen del controlador de impresora que tenga instalado actualmente.

La cláusula opcional NODIALOG no muestra el cuadro de diálogo en tiempo de ejecución cuando se está enviando un informe a la impresora.

TO FILE FileName2 [ASCII]
Especifica el archivo de texto al que se envía un informe. Se utiliza el controlador de impresora actual cuando se envía el informe al archivo de texto. El archivo creado cuando incluye TO FILE tiene la extensión predeterminada .txt.

Puede incluir la cláusula opcional ASCII para crear un archivo de texto ASCII a partir del archivo de definición de informe. Sin la cláusula ASCII, se escriben códigos PostScript y otros códigos de impresora al archivo de texto. Los gráficos, líneas, rectángulos o rectángulos redondeados de la definición del informe no aparecen en el archivo de texto ASCII.

El número de columnas y filas de cada página del archivo de texto ASCII está determinado por el contenido de las variables del sistema _ASCIICOLS y _ASCIIROWS. Los valores predeterminados para _ASCIICOLS y _ASCIIROWS son 80 columnas y 63 filas, respectivamente. Estos valores corresponden a la página vertical estándar.

NAME ObjectName
Especifica un nombre de variable de objeto para el entorno de datos de un informe. El entorno de datos y los objetos del entorno de datos tienen propiedades y métodos, como AddObject, que necesitan establecerse o llamarse en tiempo de ejecución. La variable de objeto ofrece acceso a estas propiedades y métodos. Si no especifica NAME, Visual FoxPro usará de forma predeterminada el nombre del archivo de informe al que se puede hacer referencia en el código asociado a los eventos.
SUMMARY
Suprime la impresión de las líneas de detalle. Solamente se imprimen los totales y subtotales.
NORESET
Especifica que no se restauren las variables de sistema _PAGENO y _PAGETOTAL. El contador de páginas para el informe actual empieza con el valor actual de estas dos variables.

Si utiliza las palabras NORESET y RANGE juntas, debe calcular de antemano las páginas a imprimir.

NOPAGEEJECT
Especifica que Visual FoxPro no envíe un avance de página el final de un informe y que mantenga abierto el trabajo de impresión. El siguiente informe que se imprime se agrega al trabajo de impresión abierto.

Puede utilizar NOPAGEEJECT para establecer una impresión por dos caras, es decir, imprimir en el reverso del informe anterior. También puede encadenar múltiples informes y tener números de página continuos desde un informe al siguiente, lo cual es útil para tareas como enviar informes por fax.

Nota Debe asegurarse que la ejecución del último informe no tenga una cláusula NOPAGEEJECT para que se cierre el trabajo de impresión. NOPAGEEJECT sólo es válido en un programa (.prg) y se ignora cuando se ejecuta en la ventana de Comandos.

No puede cambiar la orientación de la página, como de horizontal a vertical, entre informes.

El comando REPORT aún permite la palabra NOEJECT, la cual ya no admite Visual FoxPro pero fue usada en viejas versiones DOS de FoxPro y FoxBASE+.

PREVIEW [[IN] WINDOW WindowName | IN SCREEN]
Muestra el informe en el modo de Vista previa en lugar de enviarlo a la impresora. Para imprimir un informe, es necesario ejecutar REPORT con TO PRINTER.

Tenga en cuenta que las variables del sistema se pasan por alto cuando se incluye PREVIEW.

Para especificar la ventana para la vista previa del informe, incluya la cláusula opcional WINDOW o IN WINDOW. WindowName puede ser el nombre de una ventana creada con DEFINE WINDOW. Si incluye la cláusula WINDOW, en la vista previa se utilizarán las características (título, tamaño, etc.) de la ventana que especifique en WindowName. Si incluye la cláusula IN WINDOW, se obtiene una vista previa del informe en la ventana especificada en WindowName.

Puede incluir la cláusula opcional IN SCREEN para especificar que la ventana de vista previa del informe este contenida en la ventana principal de Visual FoxPro y no se pueda mover fuera de ella.

Puede incluir la cláusula opcional NOWAIT de modo que en tiempo de ejecución Visual FoxPro no espere a que se cierre la ventana Vista previa antes de continuar con la ejecución del programa. En lugar de esto, Visual FoxPro continuará la ejecución del programa mientras esté abierta la ventana de vista previa de la página.

Asegúrese que el menú Ver está disponible en una aplicación distribuida. Si la barra de herramienta Vista preliminar se cierra, no se puede restaurar a menos que el menú ver esté disponible.

Observaciones

La extensión de archivo .frx es la extensión predeterminada para un archivo de definición de informe, si este archivo no está en el directorio o carpeta predeterminado, debe incluir el nombre con el la ruta.

Ejemplos

Ejemplo 1

El siguiente ejemplo muestra como puede dirigir el trabajo de impresión de un lote de informes a un archivo.

REPORT FORM customer.frx TO FILE custorder.txt ASCII
REPORT FORM orders.frx TO FILE temp1.txt ASCII NORESET
STRTOFILE(FILETOSTR("temp1.txt"),"custorder.txt",1)

Ejemplo 2

El siguiente ejemplo muestra como ejecutar un trabajo de impresión de un lote de informes con dos informes. Visual FoxPro ejecuta el conjunto de informes dos veces para obtener el total de páginas, el cual se almacena en la variable de sistema _PAGETOTAL para habilitar la numeración Página X de Y. Ambos informes contienen variables de sistema _PAGETOTAL.

Utilizar la palabra clave NOCONSOLE sin la palabra clave TO PRINT habilita una ejecución rápida a través del informe sin producir salida para obtener el número páginas. NORESET especifica que los números de página se continúen imprimiendo en el siguiente informe. NOPAGEEJECT especifica que la primera página del segundo informe se continúe imprimiendo en el reverso de la última página del primer informe. La variable lnPageTotal se utiliza más tarde para mostrar el número de páginas.

REPORT FORM myReport1.frx NOCONSOLE NOPAGEEJECT
REPORT FORM myReport2.frx NOCONSOLE NORESET
lnPageTotal = _PAGETOTAL
REPORT FORM myReport1.frx TO PRINTER NOPAGEEJECT
REPORT FORM myReport2.frx TO PRINTER NORESET

Ejemplo 3

El siguiente ejemplo muestra como puede ver una vista previa antes de enviar el informe a la impresora.

REPORT FORM myReport1.frx TO PRINTER PROMPT NODIALOG PREVIEW

Vea también

_ASCIICOLS | _ASCIIROWS | CREATE REPORT | DataEnvironment (Objeto) | MODIFY REPORT | _PAGENO (Variable del sistema) | _PAGETOTAL (Variable del sistema)


RESTORE FROM (Comando)

Recupera variables y matrices de variables guardadas en un archivo de variables o en un campo memo, y las coloca en la memoria.

RESTORE FROM FileName | MEMO MemoFieldName   [ADDITIVE]

Parámetros

FileName
Especifica el archivo de variables desde el que se restauran variables y matrices. Los archivos de variables tienen asignada la extensión .mem.
MEMO MemoFieldName
Especifica el campo memo desde el cual se restauran las variables y matrices.
ADDITIVE
Impide que se borren las variables o matrices que estén actualmente en la memoria. Si el número de variables o matrices que se está agregando con la palabra clave ADDITIVE más el número de variables existentes excede el límite de variables, Microsoft Visual FoxPro traerá a la memoria tantas variables y matrices como sea posible del archivo de variables o del campo memo.

Si restaura una variable que tiene el mismo nombre que una variable o matriz existente, el valor de la variable o matriz existente se sobrescribirá con el valor de la variable o matriz restaurada.

Observaciones

Cuando se ejecuta RESTORE FROM en un programa, todas las variables y matrices PUBLIC y PRIVATE se restauran como PRIVATE, y todas las variables y matrices LOCAL se restauran como LOCAL. Si se ejecuta RESTORE en la ventana Comandos, las variables y matrices PUBLIC y PRIVATE se restauran como PUBLIC, y las variables y matrices LOCAL se restauran como LOCAL.

Cuando se ejecuta RESTORE FROM, todas las variables o matrices que estén actualmente en memoria se borrarán a menos que se incluya la palabra clave ADDITIVE. RESTORE FROM no afecta a las variables del sistema.

Observe que no se puede restaurar las variables de tipo Object a partir de un archivo de variables ni de un campo memo.

Ejemplo

En el ejemplo siguiente se crean dos variables. Se guardan en un archivo de variables y se restauran sin borrar las variables existentes.

gnVal1 = 50
gcVal2 = 'Hello'
SAVE TO temp
CLEAR MEMORY
gdVal3 = DATE( )
RESTORE FROM temp ADDITIVE
CLEAR
DISPLAY MEMORY LIKE g*

Vea también

DIMENSION | PUBLIC | PRIVATE | RELEASE | SAVE TO | STORE


RESTORE MACROS (Comando)

Restaura en la memoria macros de teclado guardadas en un archivo de macros de teclado o un campo memo.

RESTORE MACROS   [FROM FileName | FROM MEMO MemoFieldName]

Parámetros

FROM FileName
Especifica el archivo de macros desde el que se van a restaurar las macros. Los archivos de macros tienen la extensión .fky, que se utiliza en caso de que no especifique otra. Si ha asignado otra extensión distinta a un archivo, debe incluirla en FileName.
FROM MEMO MemoFieldName
Especifica el campo memo desde el que se restaurarán las macros.

Observaciones

Utilice SAVE MACRO para almacenar macros de teclado en un archivo de macro de teclado o en un campo memo.

De forma predeterminada, la restauración de macros desde un archivo o campo memo es aditiva: las macros restauradas se anexan al conjunto existente de macros en memoria. Si el nombre de una macro en el archivo o campo memo es el mismo que el nombre de una macro existente, la macro del archivo o campo memo sobrescribirá la macro existente.

Al ejecutar RESTORE MACROS sin un nombre de archivo o de campo memo, se borrarán de la memoria todas las macros y se restaurarán las macros predeterminadas. Las macros predeterminadas se restauran desde el archivo de macros de teclado denominado Default.fky. Si no se encuentra Default.fky, Visual FoxPro restaurará las teclas F2 a F9 a sus valores de inicio estándar.

Vea también

CLEAR | PLAY MACRO | SAVE MACROS


RESTORE SCREEN (Comando)

Restaura la ventana principal de Visual FoxPro o una ventana definida por el usuario guardada previamente en el búfer de pantalla, una variable o un elemento de matriz.

RESTORE SCREEN   [FROM VarName]

Parámetros

FROM VarName
Especifica el nombre de una variable o elemento de matriz desde el que desea restaurar la imagen de la pantalla o ventana.

Observaciones

Utilice SAVE SCREEN para colocar la ventana principal actual de Visual FoxPro o una ventana activa definida por el usuario en el búfer de pantallas, una variable o un elemento de matriz.

Las variables o elementos de matriz que almacenan imágenes de pantallas o ventanas aparecen como datos de tipo S al ver los elementos de matriz o variables con DISPLAY o LIST MEMORY. La ventana principal de Visual FoxPro o las ventanas definidas por el usuario guardadas en variables o elementos de matriz pueden guardarse también y restaurarse desde archivos de variables con SAVE TO y RESTORE FROM.

Si se ejecuta sin la cláusula FROM, RESTORE SCREEN recupera la ventana principal de Visual FoxPro o una ventana definida por el usuario desde el búfer de pantalla.

Vea también

RESTORE FROM | SAVE SCREEN | SAVE TO


RESTORE WINDOW (Comando)

Restaura en la memoria definiciones y estados de ventana guardados en un archivo o un campo memo.

RESTORE WINDOW WindowNameList | ALL FROM FileName
| FROM MEMO MemoFieldName

Parámetros

WindowNameList
Especifica una o más ventanas que se van a restaurar. Separe los nombres de las ventanas con comas.
ALL
Restaura todas las definiciones de ventana del archivo de ventana o del campo memo.
FROM FileName
Especifica el archivo de ventana desde el que se recuperan las ventanas. Un archivo de ventana tiene la extensión .win. Si asignó una extensión distinta al archivo en el momento de guardarlo, deberá incluirla en FileName.
FROM MEMO MemoFieldName
Especifica el campo memo desde el que hay que restaurar las ventanas.

Observaciones

Utilice SAVE WINDOW para almacenar definiciones de ventana en un archivo de ventana o un campo memo.

Todas las ventanas de memoria que tengan los mismos nombres que las restauradas se sobrescribirán. El estado de la ventana (oculta, activa, etc.) cuando se guardó, se mantendrá al restaurarla.

Ejemplo

En el ejemplo siguiente se define una ventana llamada wOutput1 y se guarda en una variable. Se borran todas las ventanas, y se restaura y se activa la ventana llamada wOutput1.

CLEAR
DEFINE WINDOW wOutput1 FROM 2,1 TO 13,75 TITLE 'Output' ;
CLOSE FLOAT GROW ZOOM
SAVE WINDOW wOutput1 TO temp
CLEAR WINDOWS
RESTORE WINDOW wOutput1 FROM temp
ACTIVATE WINDOW wOutput1
WAIT "The window wOutput1 has been restored" WINDOW
RELEASE WINDOW wOutput1

Vea también

ACTIVATE WINDOW | DEFINE WINDOW | SAVE WINDOWS


RESUME (Comando)

Reanuda la ejecución de un programa suspendido.

RESUME

Observaciones

Utilice SUSPEND para suspender la ejecución de un programa. El programa suspendido se reinicia en la línea en la que se suspendió la ejecución.

SUSPEND y RESUME son unas valiosas herramientas de depuración. Puede suspender un programa para examinar el estado actual del entorno de Visual FoxPro, incluidas las variables de memoria y las definiciones de ventanas, barras de menús o menús.

Precaución Para evitar que los comandos que se ejecutan cuando se suspende un programa interfieran con los resultados del programa, ejecute CLEAR para borrar la ventana principal de Visual FoxPro o la ventana definida por el usuario antes de reanudar la ejecución del programa.

Vea también

CANCEL | CLEAR | RETURN | SUSPEND


RETRY (Comando)

Ejecuta el último comando de la pila de memoria y luego devuelve el control al programa que lo llamó. RETRY es similar a RETURN, excepto que RETURN ejecuta la línea siguiente en el programa que lo llamó.

RETRY

Observaciones

RETRY es útil en las rutinas de manejo de errores. Se utiliza frecuentemente para ejecutar un comando hasta que se bloquee un registro o archivo. Puede utilizar SET REPROCESS para controlar el número de intentos para bloquear un registro o archivo. SET REPROCESS es preferible en la mayoría de situaciones en una red.

Vea también

ON ERROR | RETURN | SET REPROCESS


RETURN (Comando)

Devuelve el control del programa al programa que llama.

RETURN [eExpression | TO MASTER | TO ProcedureName]

Parámetros

eExpression
Especifica una expresión devuelta al programa que llama. Si omite RETURN o la expresión de retorno, se devolverá automáticamente el valor verdadero (.T.).
TO MASTER
Devuelve el control al programa que llama de mayor nivel.
TO ProcedureName
Especifica el procedimiento al que se devuelve el control.

Observaciones

RETURN termina la ejecución de un programa, procedimiento o función. El control se devuelve al programa que llama, al programa que llama de mayor nivel, a otro programa o a la ventana Comandos.

Cuando se ejecuta RETURN, Visual FoxPro libera las variables PRIVATE.

RETURN se coloca generalmente al final de un programa, procedimiento o función para devolver el control a un programa de nivel superior. No obstante, se ejecutará un RETURN implícito si se omite RETURN.

Ejemplo

En el ejemplo siguiente la función longdate devuelve una cadena de caracteres que se puede imprimir a partir de una fecha.

SET CENTURY ON
? longdate({^1998-02-16})  && Displays Monday, February 16, 1998
FUNCTION longdate
PARAMETER mdate
RETURN CDOW(mdate) + ', ' + MDY(mdate)

Vea también

DO | FUNCTION | LPARAMETERS | PARAMETERS | PARAMETERS( ) | PRIVATE | PROCEDURE | PUBLIC


ROLLBACK (Comando)

Cancela los cambios realizados durante la transacción actual.

ROLLBACK

Observaciones

ROLLBACK restaura el estado en que se encontraban las tablas originales, los archivos memo de tablas y los archivos de índice antes de que comenzara la transacción.

Cuando se modifican registros de una base de datos que forma parte de una transacción, los demás usuarios de la red no tendrán acceso (lectura ni escritura) a los registros hasta que finalice la transacción.

Cuando otros usuarios de la red intenten tener acceso a los registros que usted ha modificado, deberán esperar hasta que usted finalice su transacción. Recibirán el mensaje "Registro no disponible... Espere" hasta que los registros estén disponibles. Por lo tanto, es importante que la duración de la transacción sea lo más breve posible o que realice la transacción a horas en las que otras personas no necesiten tener acceso a los registros.

ROLLBACK deshace los cambios efectuados durante la transacción actual. Si la transacción está anidada, sólo se desharán las modificaciones realizadas desde el anterior BEGIN TRANSACTION. La ejecución del programa continuará con la instrucción siguiente.

Si había algún bloqueo de registro o archivo, se liberará.

Ejemplo

En el siguiente ejemplo se abre la tabla customer de la base de datos testdata. Se establece el almacenamiento optimista en tablas para la tabla customer. Se muestra el contenido de los campos cust_id y company, y se reemplaza el contenido del campo company en los datos almacenados en búfer.

Se ejecuta BEGIN TRANSACTION para iniciar una transacción. Se ejecuta TABLEUPDATE para escribir los cambios en una tabla. Se muestra el nuevo contenido y se ejecuta ROLLBACK para restaurar el contenido original del campo company. Los campos cust_id y company se vuelven a mostrar con el campo company que contiene los valores originales.

CLOSE DATABASES
CLEAR
* Transactions are only supported within a DBC
OPEN DATABASE (HOME(2) + 'Data\testdata')
SET MULTILOCKS ON      && Required for buffering
USE customer
=CURSORSETPROP("Buffering",5)
? 'The original company field'
LIST FIELDS cust_id, company NEXT 5
REPLACE ALL company WITH "***" && Change field contents
BEGIN TRANSACTION
=TABLEUPDATE(.T.)
GO TOP
? 'The modified company field'
LIST FIELDS cust_id, company NEXT 5
ROLLBACK           && Restore original field contents
=TABLEREVERT(.T.)
GO TOP
? 'The restored company field'
LIST FIELDS cust_id, company NEXT 5

Vea también

BEGIN TRANSACTION | END TRANSACTION | TXNLEVEL( )


RUN | ! (Comando)

Ejecuta comandos o programas operativos externos.

RUN [/N] MS-DOSCommand | ProgramName

–O bien–

! [/N] MS-DOSCommand | ProgramName

Parámetros

MS-DOSCommand
Especifica el comando de MS-DOS que se va a ejecutar. Consulte la documentación de MS-DOS para obtener más información acerca de los comandos de MS-DOS disponibles.
ProgramName
Especifica el programa o la aplicación que se va a ejecutar. Se puede especificar un programa o una aplicación basado en Windows o en MS-DOS.
/N
Especifica NOWAIT. Incluya la letra N para ejecutar otra aplicación basada en Windows.

Observaciones

RUN puede ejecutarse desde la ventana Comandos o desde un programa.

Nota Para utilizar RUN, debe tener el archivo Command.com del sistema operativo en el directorio actual o colocarlo donde pueda encontrarlo el parámetro COMSPEC de MS-DOS. Para obtener más información acerca de COMSPEC, consulte la documentación de MS-DOS.
Precaución No utilice RUN para ejecutar programas de reorganización de disco como CHKDSK desde Visual FoxPro. Estos programas modifican el contenido del disco y pueden impedir que Visual FoxPro funcione correctamente.

RUN y Visual FoxPro Cuando se utiliza RUN para ejecutar programas externos a Visual FoxPro, los programas se buscan de una forma ligeramente distinta a FoxPro para MS-DOS.

Si el programa que especifica en RUN no tiene una extensión, Visual FoxPro busca primero en la ruta de acceso de MS-DOS un programa PIF (archivo de información de programa) con el nombre que haya especificado. Un PIF le permite ejecutar en Windows un programa no desarrollado para Windows. Puede especificar parámetros para el programa, si se ejecuta en una ventana o en la pantalla completa, la cantidad de memoria asignada para el programa, etc.

Si se encuentra el PIF, se ejecutará el programa especificado en el PIF con los parámetros PIF. Si no se encuentra un PIF, entonces se buscará en la ruta de acceso de MS-DOS un archivo ejecutable con el nombre especificado.

Si no se encuentra un PIF, Visual FoxPro utiliza FOXRUN.PIF, un PIF instalado en el directorio de Visual FoxPro. FOXRUN.PIF está configurado para ejecutar el programa en una ventana. Puede modificar FOXRUN.PIF para ejecutar programas con otra configuración.

Certificación del logotipo de Windows 2000 Si desea obtener la certificación de su aplicación, evite utilizar el comando RUN, puesto que podría infringir el siguiente requisito de la Directiva de grupo del sistema.

"Ejecutar únicamente aplicaciones de Windows permitidas: su aplicación no debe iniciar ninguna aplicación que no esté en la lista. Tenga en cuenta que esto no se aplica cuando se inician aplicaciones con COM. Si utiliza ShellExecuteEx, Windows 2000 realizará esta comprobación automáticamente."

En su lugar, debe utilizar DECLARE DLL con ShellExecuteEx.API.

FOXRUN.PIF Foxrun.pif le permite ejecutar programas y comandos MS-DOS® y Windows® desde Visual FoxPro. Foxrun.pif debe estar en el mismo directorio que Vfp8.exe en Visual FoxPro.

/N significa NOWAIT. Incluya la letra N para ejecutar otra aplicación basada en Windows. Por ejemplo, la instrucción siguiente abre el accesorio Mapa de caracteres de Windows:

! /N CHARMAP.EXE

Este ejemplo abre el selector de colores del Panel de control de Windows.

! /N CONTROL COLOR

Una aplicación basada en Windows que se ejecute con RUN /N o ! /N se comportará de la misma forma que si la abriera con el Explorador de Windows o seleccionando Ejecutar en el menú Inicio. Puede conmutar entre la aplicación y Visual FoxPro o FoxPro para Windows con las operaciones estándar de Windows.

Puede incluir un valor numérico opcional inmediatamente después de /N para especificar como se abrirá la aplicación basada en Windows. No incluya ningún espacio entre /N y el valor numérico. La siguiente tabla indica el valor numérico que puede incluir y describe el estado de la aplicación basada en Windows en el momento en que se abre.

Valor | Atributos de la aplicación
1 | Activa y tamaño normal
2 | Activa y minimizada
3 | Activa y maximizada
4 | Inactiva y tamaño normal
7 | Inactiva y minimizada

Ejecución de programas MS-DOS en Visual FoxPro De forma predeterminada, Foxrun.pif ejecuta en una ventana el programa MS-DOS externo especificado. Mientras se esté ejecutando el programa o comando MS-DOS, el título de la ventana será Comando Run de FoxPro. En Visual FoxPro, la ventana de Comando Run de FoxPro se cerrará cuando termine de ejecutarse el comando o programa externo.

Puede utilizar el editor PIF de Windows para personalizar Foxrun.pif. Puede modificar el PIF para especificar si la ventana Comando Run de FoxPro Inactivo se queda abierta o se cierra (el valor predeterminado en Visual FoxPro) con la casilla de verificación Cerrar ventana al salir. También puede abrir programas externos en una pantalla completa seleccionando Pantalla completa, asignar memoria para el programa, etc.

Consideraciones acerca de la memoria De forma predeterminada, Foxrun.pif asigna un mínimo de 256 KB de memoria para ejecutar un comando o programa externo. Si no tiene 256 KB de memoria convencional libre, Visual FoxPro mostrará un mensaje de error. Para corregirlo, pruebe uno de estos procedimientos o ambos:

  • Cierre las aplicaciones y los archivos para liberar memoria adicional.
  • Modifique Foxrun.pif para reducir la cantidad de memoria necesaria en el cuadro de texto “KB Requeridos”.

Si el comando externo necesita más de 256 KB, MS-DOS mostrará un mensaje de error en la ventana Comando Run de FoxPro. Para corregirlo, modifique el archivo Foxrun.pif para aumentar la cantidad de memoria necesaria en el cuadro de texto KB Requeridos.

Vea también

GETENV( ) | _SHELL (Variable del sistema)


SAVE MACROS (Comando)

Guarda un conjunto de macros de teclado en un archivo de macros de teclado o en un campo memo.

SAVE MACROS TO FileName | TO MEMO MemoFieldName

Parámetros

TO FileName
Especifica el archivo en el que desea guardar las macros. Los nombres de archivos de macros de teclado pueden contener un máximo de ocho caracteres y deben comenzar por una letra o un signo de subrayado; no puede comenzar por un número. Los caracteres siguientes pueden contener cualquier combinación de letras, números y signos de subrayado. Al archivo se le asigna la extensión .fky. Si asigna una extensión distinta de .fky, deberá incluir esa extensión en RESTORE MACROS.
TO MEMO MemoFieldName
Especifica el campo memo en el que se guardarán las macros. La tabla que contiene el campo memo debe estar abierta, sin embargo, no necesita estar en el área de trabajo seleccionada. Para guardar macros en una tabla de otra área de trabajo, incluya el alias de la tabla cuando especifique el campo memo.

Observaciones

Cuando salga de Visual FoxPro, las macros que haya creado se perderán a menos que utilice SAVE MACROS para almacenarlas en un archivo de macros de teclado o en un campo memo.

Ejemplo

El ejemplo siguiente guarda el conjunto actual de macros en un archivo denominado Mymacros.fky.

SAVE MACROS TO mymacros

Vea también

CLEAR | PLAY MACRO | RESTORE MACROS


SAVE SCREEN (Comando)

Guarda una imagen de la ventana principal de Visual FoxPro o una ventana activa definida por el usuario en el búfer de pantalla, una variable o un elemento de matriz.

SAVE SCREEN [TO VarName]

Parámetros

TO VarName
Especifica la variable o el elemento de matriz donde desea guardar la pantalla o la imagen de la ventana.

Observaciones

Utilice RESTORE SCREEN para volver a mostrar imágenes guardadas en el búfer de pantalla, en una variable o en un elemento de matriz.

Las variables o los elementos de matriz que contienen una imagen de la ventana principal de Visual FoxPro o de una ventana definida por el usuario aparecerán con el tipo de datos S cuando vea las variables o los elementos de matriz con DISPLAY o LIST MEMORY.

Si se ejecuta sin la cláusula TO VarName, SAVE SCREEN guardará en el búfer de pantalla la ventana principal de Visual FoxPro o la ventana definida por el usuario.

Vea también

RESTORE FROM | RESTORE SCREEN | SAVE TO


SAVE TO (Comando)

Almacena las variables y matrices actuales en un archivo de variables o un campo memo.

SAVE TO FileName | MEMO MemoFieldName
[ALL LIKE Skeleton | ALL EXCEPT Skeleton]

Parámetros

FileName
Especifica el archivo de variables donde desea guardar las variables y las matrices. La extensión predeterminada de un archivo de variables es .mem.
MEMO MemoFieldName
Especifica el campo memo en el que desea guardar las variables y las matrices.
ALL LIKE Skeleton
Especifica que deben guardarse todas las variables y matrices que coincidan con el valor Skeleton especificado. La estructura puede contener los caracteres comodín interrogación (?) y asterisco (*).
ALL EXCEPT Skeleton
Especifica que se guardarán todas las variables y matrices excepto las que coincidan con el valor Skeleton especificado. La estructura puede contener los caracteres comodín interrogación (?) y asterisco (*).

Observaciones

Utilice RESTORE FROM para cargar de nuevo en la memoria las variables y matrices desde un archivo de variables o un campo memo. Observe que no se pueden guardar las variables de tipo Object en un archivo de variables ni en un campo memo.

El archivo de variables o el campo memo están marcados con la página de códigos actual.

Ejemplo

En el ejemplo siguiente se crean dos variables. Se guardan en un archivo de variables y se restauran sin borrar las variables existentes.

gnVal1 = 50
gcVal2 = 'Hello'
SAVE TO temp
CLEAR MEMORY
gdVal3 = DATE( )
RESTORE FROM temp ADDITIVE
CLEAR
DISPLAY MEMORY LIKE g*

Vea también

PRIVATE | PUBLIC | RELEASE | RESTORE FROM


SAVE WINDOWS (Comando)

Guarda todas las definiciones de ventana, o las especificadas, en un archivo de ventana o en un campo memo.

SAVE WINDOWS WindowNameList | ALL TO FileName | TO MEMO MemoFieldName

Parámetros

WindowNameList
Especifica una o más ventanas que se van a guardar. Separe los nombres de las ventanas con comas.
ALL
Guarda todas las definiciones de ventana en el archivo de ventana o en el campo memo.
TO FileName
Especifica el archivo de ventana donde se guardan las definiciones de ventana

Si no especifica la extensión con el nombre del archivo, se asignará la extensión predeterminada .win. Si especifica otra extensión al guardar las definiciones de ventana en un archivo, deberá incluir la extensión cuando restaure las definiciones de ventana del archivo.

TO MEMO MemoFieldName
Especifica el campo memo donde se guardarán las definiciones de ventana. La tabla que contiene el campo memo debe estar abierta; sin embargo, no necesita estar en el área de trabajo seleccionada actualmente. Para guardar definiciones de ventana en una tabla de otra área de trabajo, incluya el alias de la tabla cuando especifique el campo memo.

Observaciones

Utilice RESTORE WINDOW para restaurar las definiciones de ventana desde un archivo de ventana o un campo memo. El estado de la ventana también se guarda. Por ejemplo, si una ventana está oculta cuando se guarda en un archivo o campo memo, permanecerá oculta cuando se restaure.

Ejemplo

En este ejemplo se crea una ventana llamada wOutput1 y se guarda la definición de ventana en el archivo Temp.win. Se borran todas las ventanas y se restaura la ventana wOutput1 desde el archivo y se activa.

CLEAR
DEFINE WINDOW wOutput1 FROM 2,1 TO 13,75 TITLE 'Output' ;
CLOSE FLOAT GROW ZOOM
ACTIVATE WINDOW wOutput1
@ 1,1 SAY 'This is the contents of the window'
SAVE WINDOWS wOutput1 TO temp
CLEAR WINDOWS
WAIT WINDOW 'The window has been saved - Press a key'
RESTORE WINDOW wOutput1 FROM temp
ACTIVATE WINDOW wOutput1
WAIT WINDOW 'The window has been restored - Press a key'
DEACTIVATE WINDOW wOutput1
RELEASE WINDOW wOutput1
DELETE FILE temp.win

Vea también

DEFINE WINDOW | RESTORE SCREEN | RESTORE WINDOW | SAVE SCREEN


SCAN ... ENDSCAN (Comando)

Mueve el puntero de registro por la tabla seleccionada y ejecuta un bloque de comandos para cada uno de los registros que cumple las condiciones especificadas.

SCAN [NOOPTIMIZE] [Alcance] [FOR lExpresión1] [WHILE lExpresión2] [Comandos] [LOOP] [EXIT] ENDSCAN

Parámetros

NOOPTIMIZE
Impide la optimización de consultas Rushmore de SCAN.

Para más información, vea SET OPTIMIZE y Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.

Alcance
Especifica el conjunto de registros que se va a explorar. Sólo se examinarán los registros que se encuentren dentro del rango. Las cláusulas de alcance son: ALL, NEXT nRecords, RECORD nRecordNumber y REST. Para obtener más información acerca de las cláusulas de alcance, vea el tema Cláusulas de alcance.

El alcance predeterminado para SCAN es todos los registros (ALL).

FOR lExpresión1
Ejecuta comandos solamente para los registros para los que lExpresión1 se evalúa como verdadero (.T.). La inclusión de la cláusula FOR le permite filtrar los registros que no desea explorar.

Si lExpresión1 es una expresión optimizable, Rushmore optimizará una consulta creada con SCAN ... FOR. Para obtener el máximo rendimiento, utilice una expresión optimizable en la cláusula FOR.

Para más información, vea SET OPTIMIZE y Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.

WHILE lExpresión2
Especifica una condición por la cual los comandos se ejecutan siempre que lExpresión2 se evalúe como verdadero (.T.).
Comandos
Especifica los comandos de Visual FoxPro que se van a ejecutar.
LOOP
Devuelve el control directamente a SCAN. LOOP puede colocarse en cualquier lugar entre SCAN y ENDSCAN.
EXIT
Transfiere el control del bucle SCAN ... ENDSCAN al primer comando que sigue inmediatamente a ENDSCAN. EXIT puede colocarse en cualquier lugar entre SCAN y ENDSCAN.
ENDSCAN
Indica el final del procedimiento SCAN.

Observaciones

SCAN avanza automáticamente el puntero de registro al siguiente registro que cumple las condiciones especificadas y ejecuta el bloque de comandos.

Puede colocar observaciones después de ENDSCAN en la misma línea. Estos observaciones se pasan por alto durante la compilación y ejecución del programa.

SCAN ... ENDSCAN garantiza que cuando se alcance ENDSCAN, Visual FoxPro volverá a seleccionar la tabla que estaba activa cuando se inició el bucle SCAN ... ENDSCAN.

Ejemplo

El ejemplo siguiente usa un bucle SCAN ... ENDSCAN para mostrar todas las compañías de Suecia ("Sweden").

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer  && Opens Customer table
CLEAR
SCAN FOR UPPER(country) = 'SWEDEN'
? contact, company, city
ENDSCAN

Vea también

DO CASE ... ENDCASE | DO WHILE ... ENDDO | FOR EACH ... ENDFOR | FOR ... ENDFOR

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


SCATTER (Comando)

Copia datos del registro actual a un conjunto de variables o a una matriz.

SCATTER y COPY TO ARRAY se comportan en forma similar. SCATTER sólo copia un único registro actual en una matriz o un conjunto de variables y automáticamente crea la matriz o variables si ellas no existen. COPY TO ARRAY copia múltiples registros en una matriz. Para más información, consulte COPY TO ARRAY (Comando).

Para copiar variables o elementos de matriz a registros de una tabla, utilice el Comando GATHER.

SCATTER [FIELDS FieldNameList | FIELDS LIKE Skeleton
| FIELDS EXCEPT Skeleton] [MEMO] TO ArrayName | TO ArrayName BLANK | MEMVAR | MEMVAR BLANK
   | NAME ObjectName [BLANK] [ADDITIVE]

Parámetros

FIELDS FieldNameList
Especifica los campos cuyos valores se van a copiar a las variables o matriz.

SCATTER ignora campos memo en forma predeterminada; sin embargo, puede incluir campos memo en la lista de campos escribiendo después de la lista de campos la palabra clave MEMO. Sin embargo, SCATTER ignora campos generales aun cuando incluya la palabra clave MEMO.

Si omite FIELDS FieldNameList, ser copian los valores de todos los campos.

FIELDS LIKE Skeleton | FIELDS EXCEPT Skeleton
Copia a variables o una matriz, campos que coinciden o excluyen Skeleton. Puede incluir la cláusula LIKE o EXCEPT o ambas.

Para copiar valores de campos que coinciden con Skeleton a variables o una matriz, utilice LIKE Skeleton. Para copiar a variables o una matriz, los valores de todos los campos excepto aquellos que coincidan con Skeleton, use EXCEPT Skeleton. Skeleton admite caracteres comodín. Por ejemplo, para copiar los valores de todos los campos que empiecen con las letras A y P a variables o una matriz, utilice la siente línea de código:

SCATTER FIELDS LIKE A*,P* TO myarray

La cláusula LIKE puede combinarse con la cláusula EXCEPT:

SCATTER FIELDS LIKE A*,P* EXCEPT PARTNO* TO myarray
MEMO
Especifica que la lista de campos incluye uno o más campos memo.
Nota Debe tener memoria suficiente para copiar campos memo grandes en variables o en una matriz. Visual FoxPro genera un mensaje de error si no hay memoria suficiente. Si un campo memo es demasiado grande y no cabe en la memoria, ni ése ni los demás campos memo de la lista de campos se copiarán. Si un campo memo no se copia, su variable o elemento de matriz tomarán el valor de falso (.F.).
TO ArrayName
Especifica a qué matriz se copia el contenido de los registros. SCATTER copia en orden secuencial el contenido de cada campo en cada elemento de la matriz, comenzando por el primer campo.

Si la matriz tiene más elementos que el número de campos, los elementos de matriz sobrantes no se modificarán. Si la matriz no existe, o si tiene menos elementos que el número de campos, SCATTER creará automáticamente una nueva matriz. Los elementos de matriz tendrán el mismo tamaño y los mismos tipos de datos que los campos correspondientes.

TO ArrayName BLANK
Crea una matriz con elementos vacíos que tendrán el mismo tipo y tamaño que los campos de la tabla.
MEMVAR
Copia los datos en un conjunto de variables en lugar de en una matriz. SCATTER crea una variable para cada campo de la tabla y la llena con datos del campo correspondiente en el registro actual, asignando a la variable el nombre, el tamaño y el tipo del campo.

SCATTER crea una variable para cada campo en la lista de campos, si se incluye una lista de campos.

Incluya delante del nombre de la variable el calificador M. para referirse a una variable que tenga el mismo nombre que un campo de la tabla actual.

Precaución No incluya TO con MEMVAR. Si incluye TO, Visual FoxPro creará una matriz llamada MEMVAR.
MEMVAR BLANK
Crea un conjunto de variables vacías. A cada variable se le asignará el mismo nombre, tipo de datos y tamaño que su campo. Si se incluye una lista de campos, se creará una variable para cada campo de la lista de campos.
NAME ObjectName [BLANK] [ADDITIVE]
Crea un objeto cuyas propiedades tienen el mismo nombre que los campos de la tabla.

Crea un objeto cuyas propiedades tienen los mismos nombres que los campos de la tabla. Si no se incluye la palabra clave BLANK, los valores posibles de cada una de las propiedades del objeto son el contenido de los campos de la tabla. Si se incluye la palabra clave BLANK, las propiedades estarán vacías (encontrará en EMPTY( ) una descripción del contenido de las propiedades vacías, en función del tipo de campo correspondiente). No se crean propiedades para los campos de tipo general de la tabla.

Para actualizar los valores de propiedades de un objeto válido de Visual FoxPro existente y especificado por ObjectName, pero no objetos COM, con valores del registro actual, incluya la palabra clave ADDITIVE. Si el objeto no existe, Visual FoxPro crea el objeto automáticamente. No puede utilizar la palabra clave ADDITIVE sin la cláusula NAME, hacerlo así genera un error.

Usar BLANK sin ADDITIVE omite los valores para propiedades existentes que tienen nombres de campos coincidentes.

Observaciones

Si las propiedades correspondientes a nombres de campos no existen para el objeto, SCATTER...NAME ADDITIVE las crea automáticamente. Sin embargo, SCATTER podría no crear todas las propiedades necesarias ya que algunas podrían estar marcadas como Oculta o Protegidas. Si Visual FoxPro no puede crear o establecer una propiedad, genera un error. Por ejemplo, puede tener un nombre de campo que coincida con el nombre de una propiedad nativa de un objeto de Visual FoxPro siempre el cuando los tipos de datos sean los mismos, sin embargo, Visual FoxPro genera un error si el nombre del campo coincide con el nombre de un método, evento u objeto.

Puede evitar problemas utilizando un objeto creado por SCATTER...NAME y no uno derivado de una clase de Visual FoxPro. Distinto a lo que ocurre cuando SCATTER se usa con sólo NAME, Visual FoxPro no sobrescribe el objeto existente para crear un nuevo objeto.

SCATTER...NAME ADDITIVE no genera un error cuando una propiedad de sólo lectura no se puede establecer como el valor de un campo de la tabla. Sin embargo, el valor de la propiedad permanece sin cambiar.

Para referenciar una propiedad de un objeto que tiene el mismo nombre de una tabla abierta, encabece el nombre de la propiedad con el calificador "m.". El siguiente ejemplo muestra los valores del campo Company de la tabla Customer seguido por el valor de la propiedad Company del objeto Customer:

USE Customer
SCATTER NAME Customer
? Customer.Company  && Devuelve el valor de la tabla
? m.Customer.Company  && Devuelve valor de propiedad del objeto

Ejemplos

Ejemplo 1

Este ejemplo utiliza SCATTER para crear un conjunto de variables basado en los campos de la tabla "test". Luego a cada variable se le asigna un valor y se agrega un nuevo registro a la tabla. Se copian los datos a la tabla utilizando el comando GATHER.

CREATE TABLE Test FREE ;
(Object C(10), Color C(16), SqFt n(6,2))
SCATTER MEMVAR BLANK
m.Object="Box"
m.Color="Red"
m.SqFt=12.5
APPEND BLANK
GATHER MEMVAR
BROWSE

Ejemplo 2

Este ejemplo utiliza SCATTER junto con la cláusula NAME para crear un objeto con propiedades basadas en los campos de la tabla. Luego se asignan valores a las propiedades del objeto y se agrega un nuevo registro a la tabla. Se copian los datos al nuevo registro usando GATHER con la cláusula NAME.

CREATE TABLE Test FREE ;
(Object C(10), Color C(16), SqFt n(6,2))
SCATTER NAME oTest BLANK
oTest.Object="Box"
oTest.Color="Red"
oTest.SqFt=12.5
APPEND BLANK
GATHER NAME oTest
RELEASE oTest
BROWSE

Ejemplo 3

Suponga que tiene dos o más tablas o cursores y desea crear un objeto que combine los datos de estos cursores. El siguiente ejemplo selecciona la tabla Customer y utiliza SCATTER...NAME para crear el objeto oCustomer y sus propiedades desde los campos de la tabla Customer. Luego SCATTER...NAME...ADDITIVE actualiza los valores desde los campos ReportDate y Rating de la tabla CreditHistory y los campos CookieText y SessionId de la tabla MySessionTable, en el objeto oCustomer o crea aquellas propiedades si no existen.

SELECT Customer
SCATTER NAME oCustomer
SELECT CreditHistory
SCATTER FIELDS ReportDate, Rating NAME oCustomer ADDITIVE
SELECT MySessionTable
SCATTER FIELDS CookieText, SessionId NAME oCustomer ADDITIVE

Vea también

ALINES( ) | APPEND FROM ARRAY | DECLARE | DIMENSION


SCROLL (Comando)

Desplaza una zona de la ventana principal de Visual FoxPro o de una ventana definida por el usuario hacia arriba, hacia abajo, a la izquierda o la derecha.

SCROLL nRow1, nColumn1, nRow2, nColumn2, nRowsScrolled
[, nColumnsScrolled]

Parámetros

nRow1, nColumn1, nRow2, nColumn2
Especifica la región rectangular donde se producirá el desplazamiento en la ventana principal de Visual FoxPro o en la ventana definida por el usuario que esté activa. nRow1, nColumn1 especifica la esquina superior izquierda de la región, y nRow2, nColumn2 especifica la esquina inferior derecha.
nRowsScrolled
Especifica cuántas filas dentro de la región rectangular se desplazarán hacia arriba o hacia abajo. Si la expresión numérica nRowsScrolled es positiva, Visual FoxPro desplazará hacia arriba el número de filas. Si nRowsScrolled es negativo, Visual FoxPro desplazará hacia abajo el número de filas. Si nRowsScrolled es 0 y omite nColumnsScrolled, Visual FoxPro borrará la región rectangular.
nColumnsScrolled
Especifica cuántas columnas dentro de la región rectangular se desplazarán a la izquierda o a la derecha. Si la expresión numérica nColumnsScrolled es positiva, Visual FoxPro desplazará hacia la derecha el número de columnas. Si nColumnsScrolled es negativo, Visual FoxPro desplazará hacia la izquierda el número de columnas. Si se incluyen ambas nRowsScrolled y nColumnsScrolled, Visual FoxPro desplazará la zona diagonalmente.

Ejemplo

El comando siguiente desplaza una pequeña región rectangular:

CLEAR
@ 4, 1 FILL TO 10, 8 COLOR GR+/B
WAIT WINDOW 'Press key to scroll left top corner'
SCROLL 0, 0, 5, 5, -2, 1

Vea también

MOVE WINDOW | ScrollBars (Propiedad) | @ ... SCROLL (Comando)


SEEK (Comando)

Busca en una tabla la primera aparición de un registro cuya expresión clave de índice coincida con una expresión general y después mueve el puntero de registro al registro coincidente.

SEEK eExpression   [ORDER nIndexNumber | IDXIndexFileName
| [TAG] TagName [OF CDXFileName]    [ASCENDING | DESCENDING]] [IN nWorkArea | cTableAlias]

Parámetros

eExpression
Especifica la expresión clave de índice que desea que busque SEEK. eExpression puede ser el valor Null.
ORDER nIndexNumber
Especifica el número del archivo de índice o la etiqueta utilizada para buscar la clave de índice. nIndexNumber se refiere a los archivos de índice tal y como aparecen en USE o SET INDEX. Los archivos .idx abiertos se numeran primero en el orden en que aparecen en USE o SET INDEX. Las etiquetas en el archivo estructural .cdx (si existe) son entonces numeradas en el orden en el que han sido creadas. Finalmente, las etiquetas de cualquier archivo independiente .cdx abierto se numeran en el orden en el que han sido creadas. Vea SET ORDER para obtener más información acerca de la numeración de índices.
ORDER IDXIndexFileName
Especifica un archivo .idx que se utiliza para buscar la clave de índice.
ORDER [TAG] TagName [OF CDXFileName]
Especifica la etiqueta de un archivo .CDX que se utiliza para buscar la clave de índice. El nombre de etiqueta puede pertenecer a un archivo .cdx estructural o a cualquier archivo .cdx independiente abierto.

Si existen nombres de etiqueta idénticos en archivos .cdx independientes abiertos, use OF CDXFileName para especificar el archivo .cdx que contiene la etiqueta.

Nota El archivo .idx tiene prioridad si existen nombres de etiqueta y un archivo .idx duplicado.
ASCENDING
Especifica que se busque en la tabla en orden ascendente.
DESCENDING
Especifica que se busque en la tabla en orden descendente.
IN nWorkArea
Especifica el número del área de trabajo de la tabla en la que se realizará la búsqueda.
IN cTableAlias
Especifica el alias de la tabla en la que se realizará la búsqueda.

Si omite IN nWorkArea e IN cTableAlias, se busca en la tabla del área de trabajo seleccionada actualmente.

Observaciones

Puede utilizar SEEK únicamente con tablas indizadas y puede buscar únicamente por la expresión clave de índice. La coincidencia debe ser exacta a menos que SET EXACT esté en OFF (desactivado).

Si SEEK encuentra un registro con una clave de índice coincidente, RECNO( ) devolverá el número de registro del registro coincidente, FOUND( ) devolverá verdadero (.T.) y EOF( ) devolverá falso (.F.).

Si no encuentra ninguna clave coincidente, RECNO( ) devolverá el número de registros de la tabla más 1, FOUND( ) devolverá falso (.F.) y EOF( ) devolverá verdadero (.T.).

Si SET NEAR está activado, el puntero de registro se colocará inmediatamente después del registro con la clave de índice coincidente más cercana. Si SET NEAR está desactivado, el puntero de registro se colocará al final del archivo. En ambos casos, RECNO(0) devolverá el número de registro del registro más cercano.

Ejemplo

En el siguiente ejemplo, se abre customer y se indiza por el campo company. Se utiliza SEEK para encontrar la expresión clave de índice que coincide con el valor contenido en la variable gcSeekVal.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer ORDER company  && Opens Customer table
SET EXACT OFF
STORE 'B' TO gcSeekVal
SEEK gcSeekVal
IF FOUND( )
DISPLAY FIELDS company, contact
ENDIF

Vea también

EOF( ) | FOUND( ) | INDEX | INDEXSEEK( ) | LOCATE | RECNO( ) | SEEK( ) | SET EXACT | SET NEAR


SELECT - SQL (Comando)

Recupera datos de una o más tablas. El comando SELECT SQL está incluido en Visual FoxPro como cualquier otro comando de Visual FoxPro. Cuando utilice SELECT para hacer una consulta, Visual FoxPro interpreta la consulta y recupera los datos especificados de las tablas. Puede crear un consulta SELECT en la siguiente forma:

  • Ventana de Comandos
  • Programa de Visual FoxPro como con cualquier otro comando de Visual FoxPro
  • Diseñador de consultas
SELECT [ALL | DISTINCT] [TOP nExpr [PERCENT]] [Alias.] Select_Item
[[AS] Column_Name] [, [Alias.] Select_Item [[AS] Column_Name] ...] FROM [FORCE] [DatabaseName!] Table [[AS] Local_Alias] [ [INNER | LEFT [OUTER] | RIGHT [OUTER] | FULL [OUTER] JOIN DatabaseName!] Table [[AS] Local_Alias] [ON JoinCondition ...] [[INTO Destination] | [TO FILE FileName [ADDITIVE] | TO PRINTER [PROMPT] | TO SCREEN]] [PREFERENCE PreferenceName] [NOCONSOLE] [PLAIN] [NOWAIT] [WHERE JoinCondition [AND JoinCondition ...] [AND | OR FilterCondition [AND | OR FilterCondition ...]]] [GROUP BY GroupColumn [, GroupColumn ...]] [HAVING FilterCondition] [UNION [ALL] SELECTCommand] [ORDER BY Order_Item [ASC | DESC] [, Order_Item [ASC | DESC] ...]]

Parámetros

SELECT
Especifica los campos, constantes y expresiones que se mostrarán en el resultado de la consulta.
ALL
De forma predeterminada, se muestran todas las filas del resultado de la consulta.
DISTINCT
Excluye duplicados de cualquier fila del resultado de la consulta. Puede utilizar DISTINCT únicamente una vez por cada cláusula SELECT.

Visual FoxPro no admite el uso de una cláusula DISTINCT en una instrucción SELECT SQL que contenga campos memo o general. En su lugar, puede ajustar un campo Memo en un expresión dentro de una función como PADR( ) o ALLTRIM( ). Para más información, consulte PADL( ) | PADR( ) | PADC( ) (Funciones) y ALLTRIM( ) (Función).

TOP nExpr [PERCENT]
Especifica que el resultado de la consulta contenga un número determinado de filas o un porcentaje de filas en el resultado de la consulta. Puede especificar desde 1 a 32.767 filas. Si se incluye la palabra clave PERCENT, se redondeará al número entero más alto el número de columnas devuelto en el resultado. Los valores permitidos para nExpr cuando se incluye la palabra clave PERCENT son de 0,01 a 99,99.

Las filas de valores idénticos para las columnas especificadas en la cláusula ORDER BY se incluyen en el resultado de la consulta. Por lo tanto, si especifica 10 para nExpr, el resultado de la consulta podrá obtener más de 10 filas, si hay más de 10 filas con valores idénticos para las columnas especificadas en la cláusula ORDER BY.

Es necesario incluir una cláusula ORDER BY si incluye la cláusula TOP. La cláusula ORDER BY especifica las columnas en las que la cláusula TOP determinará el número de filas que se va a incluir en el resultado de la consulta.

[Alias.] Select_Item
Califica nombres de elementos coincidentes. Select_Item especifica un elemento que se incluirá en el resultado de la consulta. Un elemento puede ser uno de los siguientes:
  • El nombre de un campo de una tabla de la cláusula FROM.
  • Una constante, especificando que el mismo valor constante debe aparecer en cada fila del resultado de la consulta.
  • Una expresión que puede ser el nombre de una función definida por el usuario (FDU).

Para más información acerca de utilizar funciones definidas por el usuario, vea Funciones definidas por el usuario con SELECT en la seccion Observaciones.

Cada elemento que especifique con Select_Item genera una columna de los resultados de la consulta.

Si dos o más elementos tienen el mismo nombre, incluya el alias de la tabla y un punto antes del nombre del elemento para impedir la duplicación de las columnas.

[AS] Column_Name
Especifica el título de una columna en el resultado de la consulta. Column_Name puede ser una expresión, pero no puede contener caracteres (por ejemplo, espacios) que no estén permitidos para nombres de campos de tablas.
Esta opción resulta muy útil cuando Select_Item es una expresión o contiene una función de campo y desea dar un nombre significativo a la columna.
FROM [FORCE] DatabaseName!
Indica las tablas que contienen los datos que ha obtenido la consulta.

FORCE especifica que las tablas se combinen en el orden de aparición en la cláusula FROM. Si se omite FORCE, Visual FoxPro intentará optimizar la consulta. Sin embargo, es posible que la consulta se ejecute más rápido si se incluye la palabra clave FORCE para desactivar la optimización de consultas de Visual FoxPro.

DatabaseName! especifica el nombre de una base de datos inactiva que contiene la tabla. Es necesario incluir el nombre de la base de datos que contiene la tabla en caso de que no sea la base de datos activa. Incluya el delimitador signo de exclamación (!) después del nombre de la base de datos y antes del nombre de la tabla.

[[AS] Local_Alias]
Especifica un nombre temporal para la tabla indicada en Table. Si especifica un alias local, debe utilizar el alias local en lugar del nombre de la tabla en toda la instrucción SELECT.

INNER JOIN especifica que el resultado de la consulta contenga sólo filas en una tabla con la que coincidan una o varias filas de otra tabla.

LEFT [OUTER] JOIN especifica que el resultado de la consulta contenga todas las filas de la tabla a la izquierda de la palabra clave JOIN y sólo las filas que coincidan procedentes de la tabla a la derecha de la palabra clave JOIN. La palabra clave OUTER es opcional; se puede incluir para resaltar que se ha creado una combinación externa.

RIGHT [OUTER] JOIN especifica que el resultado de la consulta contenga todas las filas de la tabla a la derecha de la palabra clave JOIN y sólo las filas que coincidan de la tabla a la izquierda de la palabra clave JOIN. La palabra clave OUTER es opcional; se puede incluir para resaltar que se ha creado una combinación externa.

FULL [OUTER] JOIN especifica que el resultado de la consulta contenga todas las filas, coincidan o no, de ambas tablas. La palabra clave OUTER es opcional; se puede incluir para resaltar que se ha creado una combinación externa.

Para más información acerca de combinaciones, vea Combinaciones en la sección Observaciones.

ON Join Condition especifica las condiciones según las cuales se combinan las tablas.

INTO Destination

Especifica donde almacenar los resultados de la consulta. Destination puede ser uno de los siguientes:

  • ARRAY ArrayName, que almacena los resultados de la consulta en una matriz de variable de memoria.

    Si la consulta selecciona 0 registros, la matriz no se creará.

  • CURSOR CursorName [NOFILTER | READWRITE], que almacena los resultados de una consulta en un cursor.

    Incluya NOFILTER para crear un cursor que se pueda usar en consultas posteriores. Para más información acerca de NOFILTER, vea la sección Observaciones.

    La cláusula READWRITE especifica que el cursor es temporal y se puede modificar. Si la tabla o tablas origen utilizan autoincremento, la configuración no se hereda por el cursor READWRITE.

    DBF | TABLE TableName[DATABASE DatabaseName [NAME LongTableName]] almacena los resultados de una consulta en una tabla.

    Incluya DATABASE DatabaseName para especificar una base de datos a la que se agregará la tabla.

    Incluya NAME LongTableName para especificar un nombre largo para la tabla. Los nombres largos pueden contener un máximo de 128 caracteres y se pueden utilizar en lugar de nombres de archivo cortos en la base de datos.

Si no incluye la cláusula INTO, los resultados de la consulta se mostrarán en la ventana Examinar. También puede utilizar la cláusula TO FILE para dirigir los resultados de la consulta a la impresora o un archivo.

TO FILE FileName [ADDITIVE] | TO PRINTER [PROMPT] | TO SCREEN
Puede dirigir los resultados de la consulta a la impresora o un archivo.

ADDITIVE anexa los resultados de la consulta al contenido existente del archivo de texto especificado en TO FILE FileName.

TO PRINTER [PROMPT] dirige los resultados de la consulta a una impresora. Utilice la cláusula PROMPT opcional para mostrar un cuadro de diálogo antes de que empiece la impresión. En este cuadro de diálogo puede modificar la configuración de la impresora. Las opciones de configuración de la impresora que puede ajustar dependen del controlador de impresora que tenga instalado actualmente. Coloque PROMPT justo después de TO PRINTER.

TO SCREEN dirige los resultados de la consulta a la ventana principal de Visual FoxPro o a una ventana activa definida por el usuario.

PREFERENCE PreferenceName
Si el resultado de una consulta se envía a una ventana Examinar, guarda los atributos y opciones de la ventana Examinar para utilizarlos después. Para más información acerca de como funciona PREFERENCE vea la sección Observaciones.
NOCONSOLE
Impide que el resultado de la consulta se envíe a un archivo, a la impresora o a la ventana principal de Visual FoxPro.
PLAIN
Impide que aparezcan los encabezados de las columnas al mostrar los resultados de la consulta. PLAIN puede utilizarse tanto si está presente una cláusula TO como si no. Si se incluye una cláusula INTO, se pasará por alto PLAIN.
NOWAIT
Continúa la ejecución del programa después de abrir la ventana Examinar y de dirigir a ella los resultados de la consulta. El programa no esperará a que la ventana Examinar se cierre, sino que continuará con la ejecución de la línea de programa inmediatamente siguiente a la instrucción SELECT. Para una explicación sobre como puede utilizar NOWAIT, vea la sección Observaciones.
WHERE JoinCondition
Especifica que Visual FoxPro sólo debe incluir en los resultados de la consulta los registros que satisfagan los criterios especificados. JoinCondition especifica los campos que vinculan las tablas de la cláusula FROM. Para más información acerca de especificar condiciones de combinación, vea la sección Observaciones.

WHERE admite el operador ESCAPE para JoinCondition, permitiendo realizar consultas con significado sobre datos que contengan caracteres comodín _ y % de SELECT - SQL.. La cláusula ESCAPE le permite especificar que se traten los caracteres comodín de SELECT - SQL como si fueran caracteres literales. En la cláusula ESCAPE se especifica un carácter, que si se coloca inmediatamente antes del carácter comodín, indica que se tratará al carácter comodín como a un carácter literal.

FilterCondition
Especifica los criterios que deben satisfacer los registros para ser incluidos en los resultados de la consulta. Una consulta puede incluir tantas condiciones de filtro como desee, conectadas con el operador AND y OR. También puede utilizar el operador NOT para invertir el valor de una expresión lógica o utilizar EMPTY( ) para comprobar si hay campos vacíos.

El comando SELECT SQL admite "<field> IS / IS NOT NULL" en la condición de filtro. Para aprender como utilizar FilterCondition, vea la sección Ejemplos.

GROUP BY GroupColumn [, GroupColumn ...]
Agrupa las filas de la consulta basándose en los valores de una o más columnas. GroupColumn puede ser el nombre de un campo normal de una tabla, o un campo que incluya una función de campo SQL o una expresión numérica que indique la posición de la columna en la tabla de resultados (la columna más a la izquierda tiene el número 1).
HAVING FilterCondition
Especifica una condición de filtro que los grupos deben satisfacer para quedar incluidos en el resultado de la consulta. Puede incluir tantas condiciones de filtro como desee, conectadas con los operadores AND u OR. También puede utilizar NOT para invertir el valor de una expresión lógica. Puede utilizar funciones locales de campos y alias en la cláusula HAVING. Para más información sobre las funciones de campo que puede utilizar, vea la sección Observaciones.

FilterCondition no puede contener una subconsulta.

Puede utilizar una instrucción SELECT conteniendo una cláusula HAVING sin incluir una cláusula GROUP BY si SELECT no contiene funciones de agrupación. La cláusula HAVING sin una cláusula GROUP BY actúa como una cláusula WHERE. Si la cláusula HAVING no contiene funciones de campo, utilice la cláusula WHERE para acelerar el rendimiento.

La cláusula HAVING debe aparecer antes de una cláusula INTO porque de lo contrario se producirá un error de sintaxis.

[UNION [ALL] SELECTCommand]
Combina el resultado final de un SELECT con el resultado final de otro SELECT. De forma predeterminada, UNION comprueba el resultado combinado y elimina las filas duplicadas. Puede utilizar paréntesis para combinar varias cláusulas UNION.

Puede utilizar la cláusula UNION para simular una combinación externa.

ALL impide que UNION elimine filas duplicadas de los resultados combinados.

Cuando una de las columnas tiene tipo Memo o General, las uniones de diferentes tipos de columna no está permitida.

En versiones anteriores a Visual FoxPro 8.0, necesitaba realizar una conversión explícita cuando realizaba operaciones UNION entre dos campos de diferente tipo. Visual FoxPro ahora admite la conversión implícita de tipo de datos para los tipos de datos que lo admiten. Para más detalles acerca de la conversión implícita de tipo de datos y la precedencia de tipo de datos, las reglas para la cláusula UNION y otra información, vea Conversión y precedencia de tipo de dato en la sección Observaciones.

ORDER BY Order_Item [ASC | DESC]
Ordena el resultado de la consulta basándose en los datos de una o varias columnas. Cada Order_Item debe corresponder a una columna de resultados de la consulta y puede ser uno de los siguientes:
  • Un campo de una tabla FROM que también es un elemento de selección en la cláusula principal SELECT (no en una subconsulta).
  • Una expresión numérica que indica la ubicación de la columna en la tabla de resultados. (La columna de la izquierda es la número 1.)

ASC especifica un orden ascendente para los resultados de la consulta, de acuerdo con el elemento o los elementos de orden, y es el valor predeterminado para ORDER BY.

DESC especifica un orden descendente para los resultados de la consulta.

Observaciones

Si no hay una tabla abierta cuando se usa la cláusula FROM, Visual FoxPro muestra el cuadro de diálogo Abrir para que se pueda especificar la ubicación del archivo. Una vez abierta, la tabla permanece abierta después de completar la consulta.

Cuando utilice la cláusula CURSOR en el parámetro Destination, si especifica el nombre de una tabla abierta, Visual FoxPro generará un mensaje de error. Después de ejecutar SELECT, el cursor temporal permanecerá abierto y estará activo, pero solamente para lectura a menos que especifique la opción READWRITE. Cuando cierre este cursor temporal, se borrará. Los cursores pueden existir como un archivo temporal en la unidad especificada por SORTWORK.

Cuando utilice la cláusula CURSOR en el parámetro Destination, ahora puede usar NOFILTER para crear un cursor que pueda utilizarse en consultas posteriores. En versiones anteriores de Visual FoxPro, era necesario incluir una expresión o una constante adicional como un filtro para crear un cursor utilizable en consultas posteriores. Por ejemplo, la adición de un valor lógico verdadero como una expresión de filtro creaba una consulta que podía utilizarse en consultas posteriores:

SELECT *, .T. FROM customers INTO CURSOR myquery

Si se incluye NOFILTER, es posible que disminuya el rendimiento de la consulta, puesto que se crea una tabla temporal en el disco. Cuando se cierre el cursor se eliminará del disco la tabla temporal.

Cuando utilice la cláusula DBF | TABLE en el parámetro Destination, si especifica una tabla que ya esté abierta y SET SAFETY está en OFF, Visual FoxPro sobrescribirá la tabla sin previo aviso. Si no ha especificado ninguna extensión, Visual FoxPro asignará la extensión .DBF a la tabla. La tabla permanecerá abierta y activa después de ejecutar SELECT.

Si incluye las cláusulas INTO y TO en la misma consulta, Visual FoxPro ignora la cláusula TO. Si incluye una cláusula TO pero no una cláusula INTO, puede dirigir el resultado de la consulta a un archivo de texto ASCII llamado FileName, a la impresora o a la ventana principal de Visual FoxPro.

La cláusula PREFERENCE guarda indefinidamente en el archivo de recursos FoxUser.dbf, los atributos o preferencias. Las preferencias se pueden recuperar en cualquier momento. Ejecutar SELECT con PREFERENCE PreferenceName la primera vez, crea las preferencias. Ejecutar después SELECT con el mismo nombre para preferencia restaura la ventana Examinar con las preferencias establecidas. Cuando la ventana Examinar se cierra, las preferencias se actualizan. Si sale de una ventana Examinar presionando CTRL+Q+W, no se guardan en el archivo de recursos los cambios que haya a la ventana.

Como un ejemplo de la forma en que puede utilizar la cláusula NOWAIT, cuando incluye la cláusula TO SCREEN para dirigir la salida a la ventana principal de Visual FoxPro o a una ventana definida por el usuario, la salida se detiene cuando la ventana se llena con los resultados de la consulta. Para ver el siguiente conjunto de resultados de la consulta, presione cualquier tecla. Si incluye NOWAIT, los resultados de la consulta se desplazan fuera de la ventana sin esperar que se presione una tecla. Visual FoxPro ignora NOWAIT si se incluye con la cláusula INTO.

Si se incluye la función EVALUATE( ) en la cláusula WHERE de una consulta SQL, podrían devolverse datos incorrectos.

Si incluye más de una tabla en una consulta, deberá especificar una condición de combinación para cada tabla después de la primera.

Nota El número máximo de combinaciones en una instrucción SELECT es de nueve (9).

Las condiciones de combinación múltiples deben conectarse mediante el operador AND. Cada condición de combinación tiene la forma siguiente:

FieldName1 Comparison FieldName2

FieldName1 es el nombre de un campo de una tabla, FieldName2 es el nombre de un campo de otra tabla y Comparison es uno de los operadores siguientes:

Operador | Comparación
= | Igual
== | Exactamente igual
LIKE | SQL LIKE
<>, !=, # | Distinto de
> | Mayor que
>= | Mayor o igual que
< | Menor que
<= | Menor o igual que

Cuando utiliza el operador = con cadenas, actúa de forma distinta dependiendo del ajuste de SET ANSI. Cuando SET ANSI está desactivado, Visual FoxPro trata las comparaciones de cadenas en la forma habitual en Xbase. Cuando SET ANSI está activado, Visual FoxPro sigue las normas ANSI para las comparaciones de cadenas. Vea SET ANSI y SET EXACT para obtener información adicional acerca de cómo realiza Visual FoxPro las comparaciones de cadenas.

Las siguientes funciones de campo están disponibles para ser utilizadas con un elemento seleccionado que sea un campo o una expresión que incluya a un campo:

  • AVG(Select_Item), que promedia una columna de datos numéricos.
  • COUNT(Select_Item), que cuenta el número de elementos seleccionados en una columna. COUNT(*) cuenta el número de filas en el resultado de la consulta.
  • MIN(Select_Item), que determina el menor valor de Select_Item en una columna.
  • MAX(Select_Item), que determina el mayor valor de Select_Item en una columna.
  • SUM(Select_Item), que proporciona el total de la suma de una columna de datos numéricos.

No se pueden anidar las funciones de campo.

Las cláusulas UNION siguen las reglas siguientes:

  • No puede utilizar UNION para combinar subconsultas.
  • Los resultados de ambos SELECT deben tener el mismo número de columnas.
  • Cuando dos columnas con diferentes tipos de datos forman parte de una operación UNION, el tipo de dato con la menor precedencia se convierte al tipo de dato con la mayor precedencia. Para más información, vea la sección "Conversión y precedencia de tipos de datos".
  • Únicamente el SELECT final puede tener una cláusula ORDER BY, que debe referirse a las columnas de resultados por su número. Si se incluye otra cláusula ORDER BY, afectará al resultado completo.

Si no especifica un orden en la cláusula ORDER BY, los resultados de la consulta no aparecen ordenados.

Cuando ejecuta SET TALK ON y ejecuta SELECT, Visual FoxPro muestra la duración de la consulta y el número de registros del resultado. _TALLY contiene el número de registros del resultado de la consulta.

SELECT no respeta la condición de filtro actual especificada con SET FILTER.

Nota Una subconsulta, a la que se hace referencia en los argumentos siguientes, es un comando SELECT dentro de otro SELECT y debe incluirse entre paréntesis. Puede tener hasta dos subconsultas al mismo nivel (no anidadas) en la cláusula WHERE (consulte esta sección de los argumentos). Las subconsultas pueden contener condiciones de combinación múltiples.

Cuando se obtiene el resultado de una consulta, las columnas se denominan según las siguientes reglas:

  • Si un elemento seleccionado Select_Item es un campo con un nombre único, el nombre de la columna de resultados es el nombre del campo.
  • Si hay más de un elemento seleccionado Select_Item con el mismo nombre, se anexarán un signo de subrayado y una letra al nombre de la columna. Por ejemplo, si una tabla llamada Customer tiene un campo llamado STREET, y una tabla llamada Employees también tiene un campo llamado STREET, las columnas de resultado se llamarán Extension_A y Extension_B (STREET_A y STREET_B). En el caso de un elemento seleccionado con un nombre de 10 caracteres, se truncará el nombre para agregar el símbolo de subrayado y la letra. Por ejemplo, DEPARTMENT se convertiría en DEPARTME_A.
  • Si un elemento seleccionado Select_Item es una expresión, su columna de resultado se llamará EXP_A. Cualquier otra expresión recibirá el nombre de EXP_B, EXP_C, y así sucesivamente.
  • Si un elemento seleccionado Select_Item contiene una función de campo como, por ejemplo, COUNT( ), la columna de resultado se llamará CNT_A. Si otro elemento seleccionado contiene SUM( ), su columna de resultado se llamará SUM_B.

Funciones definidas por el usuario con SELECT Aunque la utilización de funciones definidas por el usuario en la cláusula SELECT ofrece unas ventajas evidentes, también debería tener en cuenta las siguientes limitaciones:

  • Es posible que la velocidad de las operaciones con SELECT se vea limitada por la velocidad a la que se ejecutan las funciones definidas por el usuario. Las manipulaciones de un gran volumen que impliquen funciones definidas por el usuario se pueden realizar mejor utilizando funciones API y funciones definidas por el usuario escritas en C o en lenguaje ensamblador.
  • No se puede suponer nada acerca de la entrada/salida (E/S) de Visual FoxPro ni del entorno de la tabla en funciones definidas por el usuario invocadas a partir de SELECT. Generalmente no se puede saber qué área de trabajo se ha seleccionado, el nombre de la tabla actual, ni los nombres de los campos que se están procesando. El valor de estas variables depende del lugar específico, en el proceso de optimización, en el que se invoque la función definida por el usuario.
  • En funciones definidas por el usuario invocadas desde SELECT, no es seguro cambiar la E/S de Visual FoxPro ni el entorno de la tabla. En general, los resultados son impredecibles.
  • La única forma segura de pasar valores a funciones definidas por el usuario invocadas desde SELECT es por medio de la lista de argumentos pasada a la función al invocarla.
  • Si prueba y descubre una manipulación teóricamente prohibida que funciona correctamente en una versión determinada de FoxPro, eso no significa que también funcione en versiones posteriores.

Fuera de estas limitaciones, las funciones definidas por el usuario son aceptables en la cláusula SELECT. Sin embargo, recuerde que la utilización de SELECT puede reducir el rendimiento. Para aprender como puede utilizar SELECT con funciones definidas por el usuario, vea la sección Ejemplos.

Combinaciones Visual FoxPro admite sintaxis de combinación de 1992 SQL ANSI, lo que le permite crear consultas que vinculen las filas en dos o más tablas mediante la comparación de los valores de campos especificados. Por ejemplo, una combinación interna selecciona filas procedentes de dos tablas sólo cuando los valores de los campos combinados son iguales. Visual FoxPro admite combinaciones anidadas.

Como SQL está basado en la teoría matemática de conjuntos, cada tabla se puede representar como un círculo. La cláusula ON que especifica las condiciones de la combinación determina el punto de intersección, que representa el conjunto de filas que coinciden. En el caso de una combinación interna, la intersección tendrá lugar en el interior o en una parte “interna” de los dos círculos. Una combinación externa incluye tanto las filas coincidentes que se han encontrado en la sección de intersección interna de las tablas, como las filas de la parte externa del círculo, a la izquierda o a la derecha de la intersección.

Nota Tenga presente la siguiente información a la hora de crear condiciones de combinación:
  • Si incluye dos tablas en una consulta y no especifica una condición de combinación, cada registro de la primera tabla se combinará con cada registro de la segunda tabla mientras se cumplan las condiciones del filtro. Una consulta de este tipo puede producir unos resultados muy largos.
  • Sea prudente al utilizar, en condiciones de combinación, funciones como DELETED( ), EOF( ), FOUND( ), RECCOUNT( ) y RECNO( ), que aceptan un área de trabajo o un alias opcional. La inclusión de un alias o de un área de trabajo en estas funciones puede producir resultados inesperados. SELECT no utiliza sus áreas de trabajo; realiza lo mismo que USE ... AGAIN. Las consultas de una sola tabla que utilizan estas funciones sin un área de trabajo o un alias opcional, devolverán resultados correctos. De todas formas, las consultas de varias tablas que utilicen dichas funciones (incluso sin un área de trabajo o un alias opcional) pueden devolver resultados inesperados.
  • Tenga cuidado al combinar tablas que contengan campos vacíos, ya que Visual FoxPro establece coincidencias entre los campos vacíos. Por ejemplo, si combina CUSTOMER.ZIP e INVOICE.ZIP, y CUSTOMER contiene 100 códigos postales vacíos e INVOICE contiene 400 códigos postales vacíos, el resultado de la consulta contendrá 40.000 registros más, como resultado de los campos vacíos. Use la función EMPTY( ) para eliminar los registros vacíos del resultado de la consulta.
  • El número de combinaciones que puede utilizar está limitado. Por cada instrucción SELECT se admiten nueve combinaciones como máximo.

Para obtener información adicional acerca de las combinaciones, vea Definir múltiples condiciones de combinación en Crear vistas.

Conversión y precedencia de tipos de datos Las conversiones explícitas requieren que utilice funciones de conversión de Visual FoxPro, como CTOD( ), mientras que las conversiones implícitas no requieren que utilice funciones de conversión. Visual FoxPro admite la conversión implícita de datos que lo admiten. Cuando Visual FoxPro combina dos columnas de tipos de datos diferentes en una operación SELECT...UNION, los tipos de datos con menor precedencia se convierten a los tipos de datos con mayor precedencia. Para propiedades de campo, NULL tiene mayor precedencia que NOT NULL.

La siguiente tabla muestra todos los tipos de conversión implícita y explícita, permitidos para tipos de datos de tablas de Visual FoxPro.

Tipo de dato | Comvesión implícita | Conversión explícita
Character | Character (Binary) | CTOD( ), CTOT( ), VAL( ), CTOBIN( )
Character (Binary) |  |
Currency |  | MTON( )
Date | DateTime | DTOC( ), DTOS( ), DTOT( )
DateTime |  | TTOC( ), TTOD( )
Double |  | STR( ), VAL( )
Float | Numérico | NTOM( ), STR( ), INT( )
Integer | Numérico, Float, Double, Currency | BINTOC( )
Logical |  |
Numérico | Float | NTOM( ), STR( ), INT( )

La siguiente tabla ilustra los resultados de la conversión implícita en una operación SELECT...UNION de dos campos.

Tipo de dato 1 | Tipo de dato 2 | Tipo de datos esperado
Character (N) | Character (X) | Character (MAX(N,X))
Character (N) | Character Binary (X) | Character Binary (MAX(N,X))
Character (N) | Memo | Memo
Character Binary (N) | Character Binary (X) | Character Binary (MAX(N,X))
Character Binary (N) | Memo | Memo
Currency | Currency | Currency
Date | Date | Date
Date | DateTime | DateTime
DateTime | DateTime | DateTime
Double (N) | Float (X,Y) | Float (MAX(MAX(8,Y),2))
Double (N) | Integer | Double (N)
Double (N) | Numérico (X,Y) | Double (MAX(MAX(8,Y),2))
Double (X) | Double (Y) | Double (MAX(X,Y))
Float (N,M) | Double (X) | Float (20, MAX(M,X))
Float (N,M) | Float (X,Y) | Float (MAX(N,M), MAX(X,Y))
Float (N,M) | Numérico (X,Y) | Float (MAX (N,X), MAX(M,Y))
Integer | Currency | Currency
Integer | Double (X) | Double (X)
Integer | Float (X,Y) | Float (MAX(11,X), Y)
Integer | Integer | Integer
Integer | Numérico (X,Y) | Numérico (MAX(11,X), Y)
Logical | Logical | Logical
Numérico (N,M) | Double (X) | Numérico (20, MAX(M,X))
Numérico (N,M) | Float (X,Y) | Float (MAX(N,X), MAX(M,Y))
Numérico (N,M) | Numérico (X,Y) | Numérico (MAX(N,X), MAX(M,Y))

Ejemplos

Los siguientes ejemplos ilustran como el parámetro FilterCondition puede tomar una de varias formas:

Ejemplo 1

En el ejemplo 1 se muestra FilterCondition como FieldName1 Comparison FieldName2

customer.cust_id = orders.cust_id
Ejemplo 2

En el ejemplo 2 se muestra FilterCondition como FieldName Comparison Expression

payments.amount >= 1000
Ejemplo 3

En el ejemplo 3 se muestra FilterCondition como FieldName Comparison ALL (Subquery)

Cuando la condición de filtro incluye ALL, el campo debe cumplir la condición de comparación para todos los valores generados por la subconsulta antes de que se incluya el registro en el resultado de la consulta.

company < ANY (SELECT company FROM customer WHERE country = "UK")
Ejemplo 4

En el ejemplo 4 se muestra FilterCondition como FieldName Comparison ANY | SOME (Subquery)

Cuando la condición de filtro incluye ANY o SOME, el campo debe cumplir la condición de comparación en al menos uno de los valores generados por la subconsulta.

company < ANY (SELECT company FROM customer WHERE country = "UK")
Ejemplo 5

En el ejemplo 5 se muestra FilterCondition como FieldName [NOT] BETWEEN Start_Range AND End_Range

Este ejemplo comprueba si los valores del campo están dentro de un intervalo de valores especificado.

customer.postalcode BETWEEN 90000 AND 99999
Ejemplo 6

En el ejemplo 6 se muestra FilterCondition como [NOT] EXISTS (Subquery)

Este ejemplo comprueba si al menos una línea cumple los criterios de la subconsulta. Cuando la condición de filtro incluye EXISTS, la condición de filtro se evalúa como verdadero (.T.) a no ser que la subconsulta sea un conjunto vacío.

EXISTS ;
(SELECT * FROM orders WHERE customer.postalcode =    orders.postalcode)
Ejemplo 7

En el ejemplo 7 se muestra FilterCondition como FieldName [NOT] IN Value_Set

Cuando una condición de filtro incluye IN, el campo debe contener uno de los valores antes de que el registro se incluya en los resultados de la consulta.

customer.postalcode NOT IN ("98052","98072","98034")

Nota Puede tener un máximo de 24 elementos en el conjunto de valores. Si el conjunto contiene más valores, la instrucción SELECT-SQL fallará diciendo que es un resultado muy complejo.

Ejemplo 8

En el ejemplo 8 se muestra FilterCondition como FieldName [NOT] IN (Subquery)

Aquí, el campo debe contener uno de los valores devueltos por la subconsulta antes de que su registro se incluya en los resultados de la consulta.

customer.cust_id IN ;
(SELECT orders.cust_id FROM orders WHERE orders.city="Seattle")
Ejemplo 9

En el ejemplo 9 se muestra FilterCondition como FieldName [NOT] LIKE cExpression

customer.country NOT LIKE "UK"
Esta condición de filtro busca cada uno de los campos que coinciden con cExpression. Puede utilizar el signo de porcentaje (%) y subrayado ( _ ) como parte de cExpression. El signo de porcentaje representa a cualquier secuencia de caracteres desconocidos en la cadena. El subrayado representa un solo carácter desconocido en la cadena.

Los siguientes ejemplos ilustran como utilizar funciones definidas por el usuario con el comando SELECT SQL:

Ejemplos

Los siguientes ejemplos ilustran la utilización de las funciones definidas por el usuario con SELECT - SQL:

Ejemplo 1

En el ejemplo 1 se muestran los nombres de todas las compañías en customer (un campo de una tabla).

CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
SELECT customer.company ;
FROM customer

Ejemplo 2

El ejemplo 2 muestra el contenido de tres campos de dos tablas y combina las dos tablas basándose en el campo cust_id. Utiliza alias locales para ambas tablas.

CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
SELECT x.company, y.order_date, y.shipped_on ;
FROM customer x, orders y ;
   INNER JOIN orders y ON x.cust_id = y.cust_id

Ejemplo 3

El ejemplo 3 muestra únicamente registros con datos únicos en los campos especificados.

CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
SELECT DISTINCT x.company, y.order_date, y.shipped_on ;
FROM customer x, orders y ;
WHERE  x.cust_id = y.cust_id

Ejemplo 4

El ejemplo 4 muestra los campos country, postalcode y company en orden ascendente.

CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
SELECT country, postalcode, company ;
FROM customer ;
ORDER BY country, postalcode, company

Ejemplo 5

El ejemplo 5 almacena el contenido de los campos de dos tablas en una tercera tabla.

CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
SELECT x.company, y.order_date, y.shipped_on ;
FROM customer x, orders y ;
WHERE x.cust_id = y.cust_id ;
INTO TABLE custship.dbf
BROWSE

Ejemplo 6

El ejemplo 6 muestra únicamente los registros con una fecha de pedido anterior al 16/02/1994.

CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
SELECT x.company, y.order_date, y.shipped_on ;
FROM customer x, orders y ;
WHERE x.cust_id = y.cust_id ;
AND y.order_date < {^1994-02-16}

Ejemplo 7

El ejemplo 7 muestra todos los clientes, pero sólo las órdenes con una fecha anterior a 02/16/1994.

CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
SELECT x.company, y.order_date, y.shipped_on ;
FROM customer x ;
LEFT JOIN orders y ;
ON x.cust_id = y.cust_id ;
AND y.order_date < {^1994-02-16}

Ejemplo 8

El ejemplo 8 muestra los nombres de todas la compañías de customer con un código postal que coincide con el de la tabla orders.

CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
SELECT company FROM customer x WHERE ;
EXISTS (SELECT * FROM orders y WHERE x.postalcode = y.postalcode)

Ejemplo 9

El ejemplo 9 muestra todos los registros de customer que tengan un nombre de país que comience por U mayúscula seguido de un carácter desconocido.

CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
SELECT * FROM customer x WHERE x.country LIKE "U_"

Ejemplo 10

El ejemplo 10 muestra todos los registros de customer que tienen un nombre de país que empieza con una letra mayúscula U seguida por un carácter desconocido.

CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
SELECT * FROM customer x WHERE x.country LIKE "U_"

Ejemplo 11

El ejemplo 11 muestra los nombres de todas las ciudades en customer en mayúsculas y el resultado se envía a la columna CityList.

CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
SELECT UPPER(city) AS CityList FROM customer

Ejemplo 12

En el ejemplo 12 se muestra cómo se puede realizar una consulta de datos que contenga signos de porcentaje (%). Se coloca una barra inversa (\) antes del signo de porcentaje para indicar que debe ser tratado como un literal, y se especifica la barra inversa como el carácter de escape en la cláusula ESCAPE.

Dado que las tablas de ejemplo incluidas con Visual FoxPro no contienen el carácter de porcentaje, esta consulta no devolverá ningún resultado.

CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
SELECT * FROM customer;
WHERE company LIKE "%\_%" ESCAPE "\"

Ejemplo 13

En el ejemplo 13 se muestra cómo se puede realizar una consulta de datos que contenga signos de subrayado (%). Se coloca una barra inversa (\) antes del signo de subrayado para indicar que debe ser tratado como un literal, y se especifica la barra inversa como el carácter de escape en la cláusula ESCAPE.

Dado que las tablas de ejemplo incluidas con Visual FoxPro no contienen el carácter de subrayado, esta consulta no devolverá ningún resultado.

CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
SELECT * FROM customer;
WHERE company LIKE "%\_%" ESCAPE "\"

Ejemplo 14

En el ejemplo 14, el carácter Escape se utiliza como un literal. El guión es tanto el carácter escape como un literal. La consulta devuelve todas las filas en las que el nombre de la organización contiene un signo de porcentaje seguido de un guión.

Dado que las tablas de ejemplo incluidas con Visual FoxPro no contienen el carácter de signo de porcentaje, esta consulta no devolverá ningún resultado.

CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
SELECT * FROM customer;
WHERE company LIKE "%-%--%" Escape "-"

Vea también

CREATE QUERY | CREATE TABLE - SQL | INSERT - SQL | MODIFY QUERY | SET ANSI | SET EXACT | SET PATH | _TALLY


SELECT (Comando)

Activa el área de trabajo especificada.

SELECT nWorkArea | cTableAlias

Parámetros

nWorkArea
Especifica el área de trabajo que se va a activar. Si nWorkArea es 0, se activará el área de trabajo no utilizada que tenga el número menor.
cTableAlias
Especifica un área de trabajo que contiene una tabla abierta para activar. cTableAlias es el alias de la tabla abierta. También puede incluir una letra de la A a la J para que cTableAlias active una de las diez primeras áreas de trabajo.

Observaciones

De forma predeterminada, el área de trabajo número 1 está activa cuando se inicia Visual FoxPro.

Nota Los campos de las tablas de cualquier área de trabajo pueden incluirse en comandos y funciones de Visual FoxPro. Utilice los formatos siguientes para tener acceso a los campos de una tabla abierta en un área de trabajo distinta de la actual: alias.field o alias -> field.

Ejemplo

El ejemplo siguiente muestra varias formas de seleccionar áreas de trabajo.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
SELECT 1     && Work area 1
USE customer  && Opens Customer table
SELECT 2     && Work area 2
USE orders  && Opens Orders table
SELECT customer     && Work area 1
BROWSE
SELECT B     && Work area 2
BROWSE

Vea también

ALIAS( ) | SELECT( ) | USE


SET (Comando)

Abre la ventana Sesión de datos.

Observaciones

La ventana Sesión de datos ofrece una forma sencilla de abrir tablas, establecer relaciones, o establecer o cambiar muchas opciones de Microsoft Visual FoxPro.

La siguiente tabla muestra la información devuelta por cada comando SET:

Function | Information returned
Set Alternate (ComandO) | Dirige la salida a impresora o pantalla creada con ?, ??, DISPLAY o LIST a un archivo de texto.
SET ANSI (Comando) | Determina como se comparan las cadenas de diferente longitud con el operador = en los comandos SQL de Visual FoxPro.
SET ASSERTS (Comando) | Especifica si los comandos ASSERT se evalúan o si no son tenidos en cuenta.
SET AUTOINCERROR (Comando) | Especifica si los intentos de actualizar los valores en un campo que usa autoincremento genera un error o si falla sin generar un error y continúa.
SET AUTOSAVE (Comando) | Determina si Visual FoxPro vacía los datos en búfer a disco cuando se sale de un READ o se retorna a la ventana Comandos.
SET BELL (Comando) | Activa o desactiva el tono acústico del PC y establece los atributos del tono.
SET BLOCKSIZE (Comando) | Specifica cómo Visual FoxPro asigna el espacio en disco para el almacenamiento de los campos memo.
SET BROWSEIME (Comando) | Especifica si se abre el Editor de métodos de entrada cuando se llega a un cuadro de texto en una ventana Examinar..
SET CARRY (Comando) | Determina si Visual FoxPro acarreará o no datos hacia adelante desde el registro actual al nuevo registro creado con INSERT, APPEND y BROWSE.
SET CENTURY (Comando) | Determina si Microsoft Visual FoxPro mostrará o no el siglo en las expresiones Date y cómo interpreta Visual FoxPro las fechas que sólo especifican los años con 2 dígitos.
SET CLASSLIB (Comando) | Abre una biblioteca visual de clases .vcx que contiene definiciones de clases.
SET CLOCK (Comando) | Determina si Visual FoxPro mostrará o no el reloj del sistema, y especifica la posición del reloj en la ventana principal de Visual FoxPro.
SET COLLATE (Comando) | Especifica una secuencia de ordenación para los campos de caracteres en operaciones posteriores de indizado y orden.
SET COLOR OF SCHEME (Comando) | Especifica los colores de un esquema de colores o copia un esquema de colores a otro color distinto.
SET COLOR SET (Comando) | Carga un conjunto de colores definido previamente.
SET COMPATIBLE (Comando) | Controla la compatibilidad con Microsoft FoxBASE+ y otros lenguajes Xbase.
SET CONFIRM (Comando) | Especifica si puede salir de un cuadro de texto escribiendo más allá del último carácter del cuadro.
SET CONSOLE (comando) | Activa o desactiva los resultados a la ventana principal de Visual FoxPro o a la ventana activa definida por el usuario desde los programas.
SET COVERAGE (Comando) | Activa o desactiva el trayecto del código o especifica un archivo de texto al que se dirigirá la información referente al trayecto del código.
SET CPCOMPILE (Comando) | Especifica la página de códigos para los programas compilados.
SET CPDIALOG (Comando) | Especifica si se muestra el cuadro de diálogo Página de códigos cuando se abre una tabla.
SET CURRENCY (Comando) | Define el símbolo de moneda y especifica su posición en la presentación de expresiones de tipo Numérico, Currency, Float y Double.
SET CURSOR (Comando) | Determina si se muestra el punto de inserción mientras Visual FoxPro espera la entrada.
SET DATABASE (Comando) | Especifica la base de datos actual.
SET DATASESSION (Comando) | Activa la sesión de datos del formulario especificado.
SET DATE (Comando) | Especifica el formato para mostrar las expresiones Date y DateTime.
SET DEBUG (Comando) | Se incluye por compatibilidad con versiones anteriores. Hace que las ventanas Depuración y Seguimiento estén disponibles o no en el sistema de menús de las versiones de Visual FoxPro anteriores a la 5.0.
SET DEBUGOUT (Comando) | Dirige el resultado de la depuración a un archivo.
SET DECIMALS (Comando) | Especifica el número de decimales que se mostrarán en las expresiones numéricas.
SET DEFAULT (Comando) | Especifica la unidad o el directorio predeterminados.
SET DELETED (Comando) | Especifica si Visual FoxPro procesará o no los registros marcados para su eliminación, y si estarán disponibles o no para utilizarse en otros comandos.
SET DEVELOPMENT (Comando) | Hace que Visual FoxPro compare la fecha y hora de creación de un programa con las de su archivo objeto compilado al ejecutar el programa.
SET DEVICE (Comando) | Dirige el resultado de @ ... SAY a la pantalla, a una impresora o a un archivo.
SET DISPLAY (Comando) | Se incluye por compatibilidad con versiones anteriores.
SET DOHISTORY (Comando) | Se incluye por compatibilidad con versiones anteriores.
SET ECHO (Comando) | Abre la ventana Seguimiento para la depuración de programas. Se incluye por compatibilidad con versiones anteriores.
SET ENGINEBEHAVIOR (Comando) | Habilita la compatibilidad del motor de datos SQL con Visual FoxPro 7.0 o con Visual FoxPro 8.0.
SET ESCAPE (Comando) | Determina si al presionar la tecla ESC se interrumpirá la ejecución de un programa y un comando.
SET EVENTLIST (Comando) | Especifica los eventos de los que se va a realizar un seguimiento en la ventana Resultado del depurador o en un archivo especificado con SET EVENTTRACKING.
SET EVENTTRACKING (Comando) | Activa o desactiva el seguimiento de eventos o especifica un archivo de texto al que se dirigirá la información del seguimiento de eventos.
SET EXACT (Comando) | Especifica las reglas que utiliza Visual FoxPro al comparar dos cadenas de diferente longitud.
SET EXCLUSIVE (Comando) | Especifica si Visual FoxPro abre los archivos de tabla para uso exclusivo o compartido en una red.
SET FDOW (Comando) | Especifica el primer día de la semana.
SET FIELDS (Comando) | Especifica a qué campos de una tabla se puede tener acceso.
SET FILTER (Comando) | Especifica una condición que deben cumplir los registros de la tabla actual para estar accesibles.
SET FIXED (Comando) | Especifica si el número de indicadores decimales que se utilizarán al mostrar datos numéricos es fijo o no.
SET FULLPATH (Comando) | Especifica si CDX( ), DBF( ), MDX( ) y NDX( ) devuelven la ruta de acceso en un nombre de archivo.
SET FUNCTION (Comando) | Asigna una expresión (macro de teclado) a una tecla de función o combinación de teclas.
SET FWEEK (Comando) | Especifica los requisitos de la primera semana del año.
SET HEADINGS (Comando) | Determina si se muestran o no encabezados de columna para los campos, y si se incluye información de archivos cuando se ejecuta TYPE para mostrar el contenido de un archivo.
SET HELP (Comando) | Activa o desactiva la Ayuda en pantalla de Visual FoxPro o especifica un archivo de Ayuda.
SET HOURS (Comando) | Establece el formato de hora del reloj del sistema en 12 ó 24 horas.
SET INDEX (Comando) | Abre uno o más archivos de índice para utilizarlos con la tabla actual.
SET KEY (Comando) | Especifica el acceso a un intervalo de registros a partir de sus claves de índice.
SET KEYCOMP (Comando) | Controla el desplazamiento con teclas en Visual FoxPro.
SET LIBRARY (Comando) | Abre un archivo de biblioteca API (interfaz de programación de aplicaciones) externa.
SET LOCK (Comando) | Activa o desactiva el bloqueo automático de archivos con ciertos comandos.
SET LOGERRORS (Comando) | Determina si Visual FoxPro envía o no los mensajes de error de compilación a un archivo de texto.
SET MACKEY (Comando) | Especifica una tecla o una combinación de teclas que muestra el cuadro de diálogo Definición de tecla de macro.
SET MARGIN (Comando) | Establece el margen izquierdo de la impresora y afecta a todas las salidas dirigidas a la impresora.
SET MARK OF (Comando) | Especifica un carácter de marca para los títulos o los elementos de menús, o muestra o quita el carácter de marca.
SET MARK TO (Comando) | Especifica un delimitador que se usará para mostrar expresiones de fecha.
SET MEMOWIDTH (Comando) | Especifica el ancho de los campos memo y las expresiones de tipo carácter.
SET MESSAGE (Comando) | Define un mensaje para mostrarlo en la ventana principal de Visual FoxPro o en la barra gráfica de estado, o especifica la posición de los mensajes en las barras y comandos de menús definidos por el usuario.
SET MULTILOCKS (Comando) | Determina si puede bloquear múltiples registros con LOCK( ) o RLOCK( ).
SET NEAR (Comando) | Determina dónde se coloca el puntero de registro después de que FIND o SEEK busquen un registro y no lo encuentren.
SET NOCPTRANS (Comando) | Impide la conversión a otra página de códigos distinta para los campos seleccionados de una tabla abierta.
SET NOTIFY (Comando) | Activa o desactiva la presentación de algunos mensajes del sistema.
SET NULL (Comando) | Determina si los comandos ALTER TABLE, CREATE TABLE e INSERT - SQL admiten valores NULL.
SET NULLDISPLAY (Comando) | Especifica el texto que aparecerá para valores NULL.
SET ODOMETER (Comando) | Determina el intervalo de informe del contador de registros en los comandos que procesan registros.
SET OLEOBJECT (Comando) | Especifica si Visual FoxPro busca en el Registro de OLE cuando no se puede encontrar un objeto.
SET OPTIMIZE (Comando) | Activa o desactiva la optimización Rushmore.
SET ORDER (Comando) | Designa un archivo o una etiqueta de índice de control para una tabla.
SET PALETTE (Comando) | Especifica si se utiliza o no la paleta de colores predeterminada de Visual FoxPro.
SET PATH (Comando) | Especifica una ruta de acceso para buscar archivos.
SET PDSETUP (Comando) | Carga la configuración de un controlador de impresora o borra la configuración del controlador de impresora actual.
SET POINT (Comando) | Determina el carácter decimal que se utilizará al mostrar las expresiones numéricas y de moneda.
SET PRINTER (Comando) | Activa o desactiva el resultado a la impresora, o dirige el resultado hacia un archivo, un puerto o una impresora de red.
SET PROCEDURE (Comando) | Abre un archivo de procedimiento.
SET READBORDER (Comando) | Determina si se colocan bordes alrededor de los cuadros de texto creados con @ ... GET.
SET REFRESH (Comando) | Determina si se puede y con qué frecuencia puede actualizarse la ventana Examinar con los cambios que hagan en los registros otros usuarios de la red.
SET RELATION (Comando) | Establece una relación entre dos tablas abiertas.
SET RELATION OFF (Comando) | Rompe una relación establecida entre la tabla primaria del área de trabajo seleccionada actualmente y una tabla secundaria relacionada.
SET REPROCESS (Comando) | Especifica cuántas veces o durante cuánto tiempo intenta Visual FoxPro bloquear un archivo o un registro después de que fracase un intento de bloqueo.
SET RESOURCE (Comando) | Actualiza o especifica un archivo de recursos.
SET SAFETY (Comando) | Determina si Visual FoxPro muestra o no un cuadro de diálogo antes de sobrescribir un archivo existente. También determina si se evaluarán las reglas de tablas o de campos, los valores predeterminados y los mensajes de error al realizar cambios en el Diseñador de tablas o con ALTER TABLE.
SET SECONDS (Comando) | Especifica si se muestran los segundos en la parte de hora de los valores DateTime.
SET SKIP (Comando) | Crea una relación de uno a varios entre tablas.
SET SKIP OF (Comando) | Activa o desactiva un menú, una barra de menús, un título de menú o un elemento de menú para menús definidos por el usuario o para el menú del sistema de Microsoft Visual FoxPro.
SET SPACE (Comando) | Determina si se muestra o no un espacio en blanco entre los campos o las expresiones al utilizar el comando ? o ??.
SET STATUS (Comando) | Muestra o quita la barra de estado basada en caracteres.
SET STATUS BAR (Comando) | Muestra o quita la barra de estado gráfica.
SET STEP (Comando) | Abre la ventana Seguimiento y suspende la ejecución del programa para depurarlo.
SET STRICTDATE (Comando) | Especifica si constantes ambiguas de tipo Date y DateTime generan errores.
SET SYSFORMATS (Comando) | Especifica si la configuración del sistema de Visual FoxPro se actualiza con la configuración del sistema actual de Windows.
SET SYSMENU (Comando) | Activa o desactiva la barra de menús del sistema de Visual FoxPro durante la ejecución del programa y permite reconfigurarla.
SET TABLEVALIDATE (Comando) | Especifica el nivel de validación de tabla a realizar.
SET TALK (Comando) | Determina si Visual FoxPro muestra o no los resultados de los comandos.
SET TEXTMERGE (Comando) | Activa o desactiva la evaluación de campos, las variables, los elementos de matriz, las funciones o expresiones rodeadas por delimitadores de combinación de texto, y le permite especificar los resultados de la combinación de texto.
SET TEXTMERGE DELIMITERS (Comando) | Especifica los delimitadores de la combinación de texto.
SET TOPIC (Comando) | Especifica el tema o los temas de Ayuda que se abren cuando invoca el sistema de Ayuda de Visual FoxPro.
SET TOPIC ID (Comando) | Especifica el tema de Ayuda que se va a mostrar al invocar el sistema de Ayuda de Visual FoxPro. El tema de Ayuda se basa en el identificador de contexto del tema.
SET TRBETWEEN (Comando) | Activa o desactiva el seguimiento entre puntos de interrupción en la ventana Seguimiento.
SET TYPEAHEAD (Comando) | Especifica el número máximo de caracteres que pueden almacenarse en el búfer de escritura.
SET UDFPARMS (Comando) | Especifica si Visual FoxPro transfiere los parámetros a una función definida por el usuario (FDU) por valor o por referencia.
SET UNIQUE (Comando) | Especifica si los registros con valores de clave de índice duplicados se mantienen en un archivo de índice.
SET VIEW (Comando) | Abre o cierra la ventana Sesión de datos o restaura el entorno de Visual FoxPro desde un archivo de vista.
SET VOLUME (Comando) | Asigna designadores de unidad de MS-DOS (A:, B:, C:, etc.) a volúmenes o carpetas en FoxPro para Macintosh.
SET WINDOW OF MEMO (Comando) | Se incluye por compatibilidad con versiones anteriores.

Vea también

SET VIEW | Ventana Sesión de datos | SET ALTERNATE (Comando)


SET ALTERNATE (Comando)

Dirige a un archivo de texto los resultados de pantalla o impresora creados con ?, ??, DISPLAY o LIST.

SET ALTERNATE ON | OFF -or- SET ALTERNATE TO [FileName [ADDITIVE]]

Parámetros

ON
Dirige los resultados al archivo de texto.
OFF
(Predeterminado) Desactiva la salida de los resultados hacia el archivo de texto.
TO FileName
Crea el archivo de texto, al que se le asignará la extensión predeterminada .txt si no incluye una extensión distinta con el nombre del archivo.

Si utiliza SET ALTERNATE TO sin FileName, el último archivo que creó utilizando SET ALTERNATE TO FileName se cierra.

ADDITIVE
Anexa los resultados al final del archivo especificado con FileName. Si se omite ADDITIVE, se sobrescribirá el contenido del archivo.

Vea también

CLOSE | SET PRINTER | ACTIVATE SCREEN (Comando)


SET ANSI (Comando)

Determina cómo se hacen las comparaciones de cadenas de distintas longitudes utilizando el operador = en comandos SQL de Visual FoxPro.

SET ANSI ON | OFF

Parámetros

ON
Rellena la cadena más corta con los espacios en blanco necesarios para igualar la longitud de la cadena más larga. Las dos cadenas se comparan carácter a carácter en toda su longitud. Considere en esta comparación:
'Tommy' = 'Tom'

El resultado es falso (.F.) si SET ANSI está activado porque, al rellenarse, ‘Tom’ se convierte en ‘Tom ’ y las cadenas ‘Tom ’ y ‘Tommy’ no coinciden carácter a carácter.

El operador = = utiliza este método para las comparaciones de los comandos SQL de Visual FoxPro.

OFF
Especifica que la cadena más corta no se rellenará con espacios en blanco. (Predeterminado)

Las dos cadenas se comparan carácter a carácter hasta llegar al final de la cadena más corta. Considere esta comparación:

'Tommy' = 'Tom'

El resultado es verdadero (.T.) cuando SET ANSI está desactivado porque la comparación termina después de ‘Tom’.

Observaciones

SET ANSI determina si se rellenará con espacios en blanco la cadena más corta para hacer la comparación de una cadena SQL. SET ANSI no tiene efecto sobre el operador ==; cuando utilice el operador ==, la cadena más corta se rellenará siempre con espacios al hacer la comparación.

SET ANSI tiene como alcance la sesión de datos actual.

SET ANSI y el Diseñador de consultas Visual FoxPro crea un comando SELECT - SQL en el Diseñador de consultas cuando usted crea una consulta. Al crear condiciones de unión y filtro, si elige las opciones Igual o Exactamente como, el operador = o = = se incluirá en el comando SELECT generado. La configuración de SET ANSI puede afectar al resultado de las consultas que cree y realice en el Diseñador de consultas.

Orden de las cadenas En los comandos SQL, el orden de izquierda a derecha de las dos cadenas en una comparación es irrelevante: cambiar una cadena de un lado a otro del operador = o = = no influye en el resultado de la comparación.

Vea también

CREATE QUERY | MODIFY QUERY | SELECT - SQL | SET DATASESSION | SET EXACT


SET ASSERTS (Comando)

Especifica si se van a omitir o a evaluar los comandos ASSERT.

SET ASSERTS ON | OFF

Parámetros

ON
Especifica que Visual FoxPro ejecute los comandos ASSERT.
OFF
Especifica que Visual FoxPro ignore los comandos ASSERT.

Observaciones

ASSERTS se establecerá en desactivado si elige el botón Pasar por alto todos en el cuadro de mensajes que sigue a una aserción.

Vea también

ASSERT | Establecer aserciones | SET (Comando)


SET AUTOINCERROR (Comando)

Especifica si los intentos de actualizar o insertar valores en un campo con incremento automático generan errores.

Nota Un cursor hereda las configuraciones actuales de SET AUTOINCERROR cuando es abierto. Cambiando el valor de SET AUTOINCERROR durante una sesión no cambia las configuraciones de un cursor que se encuentre abierto. Para cambiar las configuraciones de un cursor abierto, use la función CURSORSETPROP( ).
SET AUTOINCERROR ON | OFF

Parámetros

ON
Genera un error cuando se actualiza o inserta un valor en un campo que usa incremento automático de valores de campo. La configuración ON es el predeterminado para sesiones de datos privadas o globales.

OFF
No genera un error cuando se actualiza o inserta un valor en un campo que usa incremento automático de valores de campo y no toma en cuenta el valor especificado para el campo, usando apropiadamente el valor incrementado.

Observaciones

La configuración OFF proporciona una utilidad mayor cuando se usan tablas que contienen campos autoincrementales con ciertas operaciones del lenguaje tales como los comandos APPEND FROM e INSERT INTO donde necesita especificar de otra manera una lista de campos y estos campos omitan el uso desde operaciones autoincrementables.

SET AUTOINCERROR tiene como alcance la sesión de datos.

Vea también

Comandos | Autoincremento de valores en campos de una tabla

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


SET AUTOSAVE (Comando)

Determina si Visual FoxPro vaciará o no los búferes de datos al disco cuando salga de READ o cuando vuelva a la ventana Comandos.

SET AUTOSAVE ON | OFF

Parámetros

ON
Especifica que los búferes se vacíen en el disco cada vez que sale de READ o que vuelve a la ventana Comandos.
OFF
Especifica que los búferes se vacíen al disco solamente si han transcurrido cinco minutos desde el vaciado anterior, y solamente cuando salga de READ o cuando vuelva a la ventana Comandos.

El valor predeterminado de SET AUTOSAVE es OFF.

Observaciones

Vaciar los búferes puede reducir la posibilidad de perder datos si su PC se queda sin corriente.

SET AUTOSAVE tiene como alcance la sesión de datos actual.

Vea también

FFLUSH( ) | FLUSH | SET DATASESSION


SET BELL (Comando)

Activa o desactiva el tono acústico de su PC y establece los atributos del tono.

SET BELL ON | OFF -or- SET BELL TO [cWAVFileName]

Parámetros

ON
(Predeterminado) Activa el tono acústico.
OFF
Desactiva el tono acústico.
TO cWAVFileName
Especifica un sonido de forma de onda que se reproduce cuando suena el tono acústico. cWAVFileName puede incluir una ruta al sonido de forma de onda.

Ejecute SET BELL TO sin cWAVFileName para restaurar el sonido de forma de onda predeterminado.

Observaciones

SET BELL activa o desactiva el sonido del tono acústico durante la edición cuando se llega al final de un campo o se introducen datos incorrectos.

Ejemplo

En el ejemplo siguiente, se reproduce el archivo de sonido de forma de onda Ding.wav.

SET BELL TO 'C:\WINDOWS\DING.WAV'
?? CHR(7)

Vea también

SOUNDEX( ) (Función) | Reproductor de sonido


SET BLOCKSIZE (Comando)

Especifica cómo asigna Visual FoxPro el espacio en disco para el almacenamiento de los campos memo.

SET BLOCKSIZE TO nBytes

Parámetros

nBytes
Especifica el tamaño de los bloques en los que se asigna espacio en disco para los campos memo. Si nBytes es 0, el espacio en disco se asigna en bytes únicos (bloques de 1 byte). Si nBytes es un entero entre 1 y 32, el espacio en disco se asignará en bloques de nBytes bytes multiplicado por 512. Si nBytes es mayor que 32, el espacio en disco se asignará en bloques de nBytes bytes.

Si especifica un valor de tamaño de bloque mayor que 32, ahorrará mucho espacio en disco.

Observaciones

El valor predeterminado de SET BLOCKSIZE es 64. Para restablecer el tamaño de bloque a un valor diferente después de que se ha creado el archivo, establezca el nuevo valor y luego utilice COPY para crear una nueva tabla. La tabla nueva tendrá el tamaño de bloque especificado.

SET BLOCKSIZE tiene como alcance la sesión actual de datos.

Vea también

COPY FILE | MODIFY STRUCTURE | PACK | SET DATASESSION


SET BROWSEIME (Comando)

Especifica si se abre el Editor de métodos de entrada cuando se llega a un cuadro de texto en una ventana Examinar.

SET BROWSEIME ON | OFF

Parámetros

ON
(Predeterminado en la versión de Windows para Taiwán) Abre el Editor de métodos de entrada cuando se desplaza a un cuadro de texto en una ventana Examinar.
OFF
(Predeterminado en la versión de Windows para Corea) No se abre el Editor de métodos de entrada cuando se desplaza a un cuadro de texto en una ventana Examinar.

Observaciones

SET BROWSEIME corresponde a la casilla de verificación Examinar control IME en la ficha General del cuadro de diálogo Opciones.

Este comando no tiene efecto si no trabaja en un entorno Double-Byte Character Set (DBCS).

Vea también

Escribir datos internacionales | IMEMode (Propiedad) | IMESTATUS( ) | Ficha General | Opciones


SET CARRY (Comando)

Determina si Visual FoxPro acarreará o no datos hacia adelante desde el registro actual al nuevo registro creado con INSERT, APPEND y BROWSE.

SET CARRY ON | OFF -or- SET CARRY TO [FieldList [ADDITIVE]]

Parámetros

ON
Acarrea datos de todos los campos de todas las áreas de trabajo hacia adelante desde el registro actual hasta un nuevo registro.
OFF
(Predeterminado) Impide que se transfieran datos de todos los campos al registro nuevo.
TO [FieldList [ADDITIVE]]
FieldList especifica los campos desde los que se acarrean los datos hacia adelante. Separe con comas los nombres de los campos.

ADDITIVE especifica que los campos de la lista se agregarán al conjunto actual de campos que se acarrean hacia adelante.

Al ejecutar SET CARRY ON se realiza un SET CARRY ON implícito.

Utilice SET CARRY TO sin FieldList para restaurar la configuración predeterminada (todos los campos se acarrean hacia adelante).

Observaciones

Utilice SET CARRY para permitir que los datos se acarreen hacia adelante desde el registro actual hasta un registro nuevo o para impedir que los datos se acarreen hacia adelante. Los campos que generalmente no se modifican durante una sesión de edición pueden llevarse hacia adelante para cada registro nuevo. Por ejemplo, un campo que contenga la fecha actual puede llevarse hacia adelante para cada registro nuevo de forma que no tenga que introducirse otra vez la fecha. El contenido de los campos de tipo Memo y General no se acarrea hacia adelante.

Modificar la estructura de una tabla con un SET CARRY TO <fieldlist> activo, produce una llamada implícita SET CARRY TO. Esto hace que las lista de campos contenga todos los campos de la tabla. Si modifica la estructura de la tabla, debe ejecutar de nuevo SET CARRY TO <fieldlist> para restaurar la lista de campos.

SET CARRY solamente afecta a la tabla abierta en el área de trabajo seleccionada actualmente.

SET CARRY tiene como alcance la sesión actual de datos.

Vea también

INSERT | SET DATASESSION | APPEND (Comando) | BROWSE (Comando)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


SET CENTURY (Comando)

Determina si Microsoft Visual FoxPro mostrará o no el siglo en las expresiones Date y cómo interpreta Visual FoxPro las fechas que sólo especifican los años con 2 dígitos.

SET CENTURY ON | OFF | TO [nCentury [ROLLOVER nYear]]

Parámetros

ON
Especifica un formato de año con cuatro dígitos que ocupa 10 caracteres (incluidos los delimitadores de fecha).
Nota Para proporcionar compatibilidad con el año 2000, se recomienda que establezca siempre SET CENTURY en ON.
OFF
(Predeterminado) Especifica un formato de año de dos dígitos que ocupa ocho caracteres y supone el siglo veinte para los cálculos de fechas.
TO nCentury
Un número de 1 a 99 que especifica el siglo actual. Cuando una fecha tiene un año de dos dígitos, nCentury determina en qué siglo se encuentra el año. El valor ROLLOVER determina si el año está en nCentury o en el siglo que sigue a nCentury.
ROLLOVER nYear
Un número de 0 a 99 que especifica el año a partir del cual es el siglo actual y por debajo del cual es el próximo siglo. El valor predeterminado para nYear es los dos últimos dígitos del año actual más 50 años (si el año actual es 1998, nYear es 48, los dos últimos dígitos de 2048 (1998 + 50).

Tenga en cuenta que el valor de ROLLOVER sólo determina el siglo para una fecha escrita sin la parte del siglo (un formato de fecha ambiguo que no se recomienda).

Por ejemplo, si el año actual es 1998 y nYear es el valor predeterminado (48), cualquier fecha escrita sin la parte del siglo y un año 48 o superior se considerará en el siglo actual (el siglo XX). Cualquier fecha escrita sin la parte del siglo pero con un año anterior al 48 se considera como perteneciente al próximo siglo (el siglo XXI).

Observaciones

Utilice SET CENTURY para especificar cómo se mostrarán las variables y las funciones de fecha.

Ejecute SET CENTURY TO sin argumentos adicionales para restaurar el siglo predeterminado al siglo actual y aplicar ROLLOVER al valor predeterminado del año actual más 50 años. En Visual FoxPro 5.0, al ejecutar SET CENTURY TO sin ningún argumento adicional se establece el siglo en 19 y ROLLOVER en cero.

SET CENTURY tiene como alcance la sesión de datos actual. Las nuevas sesiones de datos se inician en los valores predeterminados y se pasa por alto el valor de SET CENTURY para la sesión de datos actual.

SET CENTURY TO ROLLOVER está disponible en Visual FoxPro 5.0 y las versiones posteriores, y permite controlar el año de las fechas cuando el valor es SET CENTURY OFF. También permite utilizar un valor de ROLLOVER, puesto que muchas aplicaciones contienen fechas que abarcan varios siglos.

Nota SET CENTURY OFF siempre utiliza fechas del siglo XX. Sin embargo, la sintaxis de SET CENTURY TO tiene prioridad sobre este valor. Por tanto, en Visual FoxPro 5.0 y en las versiones posteriores, el valor SET CENTURY ON/OFF sólo controla el número de dígitos mostrados.

El valor de SET CENTURY TO tiene como alcance la sesión de datos actual.

En Visual FoxPro 5.0, si se ejecuta SET CENTURY TO sin parámetros adicionales, se establece como siglo el siglo actual –1 y se pasa a cero si el año de dos dígitos de la fecha del sistema es menor que 50. Se establece como siglo el siglo actual si la fecha del sistema de dos dígitos es mayor que 50. Por ejemplo, si el año actual fuera 1998, nYear sería 48, los dos últimos dígitos de 2048 (1998 + 50).

Vea también

DATE( ) | SET DATASESSION | SET STRICTDATE | SET SYSFORMATS | YEAR( )


SET CLASSLIB (Comando)

Abre una biblioteca de clases visuales .vcx que contiene definiciones de clase.

SET CLASSLIB TO ClassLibraryName [IN APPFileName | EXEFileName] [ADDITIVE] [ALIAS AliasName]

Parámetros

TO ClassLibraryName
Especifica el nombre de la biblioteca de clases visuales .vcx que se va a abrir. Si ClassLibraryName no incluye una ruta de acceso completa, Visual FoxPro buscará en primer lugar la biblioteca de clases visuales en el directorio predeterminado de Visual FoxPro y, a continuación, en los directorios de la ruta de acceso de Visual FoxPro. El directorio predeterminado de Visual FoxPro se especifica con SET DEFAULT y la ruta de búsqueda de Visual FoxPro se especifica con SET PATH.

Si se ejecuta SET CLASSLIB TO sin ClassLibraryName se cerrarán todas las bibliotecas de clases visuales que estén abiertas. Utilice RELEASE CLASSLIB para cerrar una biblioteca de clases visuales individual.

IN APPFileName | EXEFileName
Especifica un archivo de aplicación de Visual FoxPro (.app) o un archivo ejecutable (.exe) que contenga la biblioteca de clases visuales.
ADDITIVE
Abre la biblioteca de clases visuales .vcx sin cerrar ninguna abierta actualmente. Si se omite esta cláusula, se cerrarán todas las bibliotecas de clases visuales .vcx abiertas.
ALIAS AliasName
Especifica un alias para la biblioteca de clases visuales. Es posible hacer referencia a la biblioteca de clases visuales por su alias. Por ejemplo, los comandos siguientes abren una biblioteca de clases visuales .vcx llamada MyClass, le asignan el alias MyCntrls, y, a continuación, crean un control llamado MyButton.
SET CLASSLIB TO MyClass ALIAS MyCntrls
mMyButton = CREATEOBJ('MyCntrls.MyButton')

Observaciones

Cuando se ejecuta CREATEOBJECT( ), ADD OBJECT en DEFINE CLASS o el método AddObject, Visual FoxPro busca la definición de clase que contiene el objeto especificado en estos comandos en las siguientes ubicaciones y orden:

  1. Las clases básicas de Visual FoxPro.
  2. Las definiciones de clases en memoria, en el orden en que se cargan.
  3. Las definiciones de clases en el programa actual.
  4. Las definiciones de clases en las bibliotecas de clase .vcx abiertas con SET CLASSLIB.
  5. Las definiciones de clases en archivos de procedimiento abiertos con SET PROCEDURE.
  6. Las definiciones de clases en la cadena de ejecución de programa de Visual FoxPro.
  7. El Registro de OLE si SET OLEOBJECT está en ON.

Si no se encuentra la definición de clase que contiene el objeto, Visual FoxPro genera un mensaje de error.

Ejemplo

El ejemplo siguiente usa CREATE CLASSLIB para crear una biblioteca de clases visuales llamada myclslib. Una clase llamada myform basada en la clase de base Form de Visual FoxPro se crea y almacena en la biblioteca de clases visuales myclslib. Se usa SET CLASSLIB para abrir la biblioteca de clases visuales myclslib de forma que puedan usarse las clases contenidas en ella.

CREATE CLASSLIB myclslib     && Creates a new .VCX visual class library
CREATE CLASS myform OF myclslib AS "Form"  && Creates new class
SET CLASSLIB TO myclslib ADDITIVE     && Opens MyClsLib.VCX

Vea también

ADD CLASS | AddObject (Método) | CREATE CLASS | CREATE CLASSLIB | CREATEOBJECT( ) | MODIFY CLASS | RELEASE CLASSLIB | SET PROCEDURE | SET OLEOBJECT


SET CLOCK (Comando)

Determina si Visual FoxPro mostrará o no el reloj del sistema, y especifica la posición del reloj en la ventana principal de Visual FoxPro.

SET CLOCK ON | OFF | STATUS -or- SET CLOCK TO [nRow, nColumn]

Parámetros

ON
Muestra el reloj en la esquina superior derecha de la ventana principal de Visual FoxPro.
OFF
(Predeterminado) Quita el reloj de la barra de estado o de la ventana principal de Visual FoxPro.
STATUS
Muestra el reloj en la barra gráfica de estado. Ejecute SET STATUS BAR ON para mostrar la barra gráfica de estado.
TO [nRow, nColumn]
Utilizando las coordenadas de fila y columna, especifica el lugar donde se muestra el reloj en la ventana principal de Visual FoxPro. Utilice SET CLOCK TO sin las coordenadas para mostrar el reloj en la posición predeterminada, en la esquina superior derecha de la ventana principal de Visual FoxPro.

Si coloca el reloj en la barra gráfica de estado con SET CLOCK STATUS y especifica una ubicación en la ventana principal de Visual FoxPro con TO nRow, nColumn, Visual FoxPro quitará el reloj de la barra gráfica de estado y lo colocará en la posición que especifique.

Vea también

SET BRSTATUS | SET HOURS | SET STATUS


SET COLLATE (Comando)

Especifica una secuencia de ordenación para los campos de caracteres en operaciones posteriores de indexado y orden.

SET COLLATE TO cSequenceName

Parámetros

cSequenceName
Especifica una secuencia de ordenación. Dispone de las siguientes opciones de secuencias de ordenación.
cSequenceName | Lenguaje
ARABIC | Árabe
CZECH | Checo
DUTCH | Holandés
GENERAL | Inglés, francés, alemán, español moderno, portugués y otros idiomas de Europa occidental
GERMAN | Orden de la guía telefónica alemana (DIN)
GREEK | Griego
HEBREW | Hebreo
HUNGARY | Húngaro
ICELAND | Islandés
JAPANESE | Japonés
KOREAN | Coreano
MACHINE | Máquina (es la secuencia de ordenación predeterminada para versiones anteriores de FoxPro)
NORDAN | Noruego, danés
PINYIN | Chino simplificado
POLISH | Polaco
RUSSIAN | Ruso
SLOVAK | Eslovaco
SPANISH | Español tradicional
STROKE | Chino tradicional y simplificado
SWEFIN | Sueco, finlandés
THAI | Tailandés
TURKISH | Turco
UNIQWT | Peso único

Note Cuando especifica la opción SPANISH, "ch" es una única letra que se ordena entre "c" y "d", y "ll" se ordena entre "l" y "m". Si especifica una opción de secuencia de ordenación como una cadena de caracteres, asegúrese de encerrar las opción entre comillas:

SET COLLATE TO "SWEFIN"

MACHINE es la opción de secuencia de ordenación, y es la secuencia con la que están familiarizados los usuarios de Xbase. Los caracteres se ordenan tal y como aparecen en la página de códigos actual.

GENERAL puede ser preferible para los usuarios de EE.UU. y de Europa occidental. Los caracteres se ordenan tal y como aparecen en la página de códigos actual. Es posible que en versiones de FoxPro anteriores a la 2.5 haya utilizado UPPER( ) o LOWER( ) en campos de caracteres al crear índices. En versiones de FoxPro posteriores a la 2.5, puede especificar en su lugar la opción de secuencia de ordenación GENERAL y omitir la conversión UPPER( ).

Si especifica una opción de secuencia de ordenación distinta de MACHINE y crea un archivo .idx, siempre se creará un .idx compacto.

Use SET("COLLATE") para volver a la secuencia de ordenación actual.

Si incluye la siguiente línea en el archivo de configuración de Visual FoxPro, se especificará una secuencia de ordenación al iniciar Visual FoxPro:

COLLATE = cSequenceName

Esto es lo mismo que ejecutar el siguiente comando:

SET COLLATE TO cSequenceName

Observaciones

SET COLLATE le permite ordenar tablas que contienen caracteres acentuados en cualquiera de los idiomas admitidos. Cambiar la configuración de SET COLLATE no afecta a la secuencia de ordenación de índices abiertos con anterioridad. Visual FoxPro mantiene automáticamente los índices existentes, proporcionando flexibilidad para crear muchos tipos distintos de índices, incluso para el mismo campo.

Por ejemplo, si se crea un índice con SET COLLATE definido como GENERAL y posteriormente se cambia el valor de configuración de SET COLLATE a SPANISH, el índice conservará la secuencia de ordenación GENERAL.

SET COLLATE tiene como alcance la sesión actual de datos.

Al utilizar el comando SET COLLATE TO, podría recibir el error “No se encuentra la secuencia de ordenación <nombre_secuencia>.” Esto sucede cuando se intenta utilizar una secuencia de ordenación incompatible con la página de códigos actual. Para evitar este error, debe especificar una página de códigos compatible en el archivo de configuración de Visual FoxPro. Por ejemplo, podría aparecer el error “No se encuentra la secuencia de ordenación 'CZECH'” al ejecutar el comando SET COLLATE TO 'CZECH'. Para habilitar la compatibilidad con la secuencia de ordenación del checo, agregue la siguiente línea al archivo config.fpw y reinicie Visual FoxPro:

CODEPAGE = 1250

Para obtener más información acerca de las páginas de códigos y la compatibilidad internacional de Visual FoxPro, vea Páginas de códigos compatibles con Visual FoxPro en Desarrollar aplicaciones internacionales.

Para obtener más información acerca de cómo configurar Visual FoxPro, vea Personalizar el entorno de Visual FoxPro y Términos especiales para archivos de configuración.

Vea también

IDXCOLLATE( ) | SET DATASESSION | Páginas de códigos compatibles con Visual FoxPro | Términos especiales para archivos de configuración | SYS(2300) - Agregar o quitar una página de códigos | CREATE TABLE - SQL (Comando) | ALTER TABLE - SQL (Comando) | INDEX (Comando)


SET COLOR OF SCHEME (Comando)

Especifica los colores de un esquema de colores o copia un esquema de colores a otro color distinto.

SET COLOR OF SCHEME nScheme1 TO   [SCHEME nScheme2 | ColorPairList]

Parámetros

nScheme1
Especifica el número del esquema de colores que desea modificar. Puede ser un valor de 1 a 24.
Nota En Visual FoxPro, los esquemas de colores 13 a 15 están reservados para uso interno. No utilice dichos esquemas de colores.
TO [SCHEME nScheme2]
Especifica el número de un esquema de colores al que se cambia el esquema de colores nScheme1.
TO [ColorPairList]
Especifica hasta 10 pares de colores que desea cambiar en el esquema de colores. Puede cambiar selectivamente los colores de un esquema de colores si incluye una coma para cada par de colores que no desea cambiar. Por ejemplo, para cambiar el tercer par de colores del esquema de colores 1 a blanco brillante y azul, y dejar el resto de la configuración de color como está, utilice este comando:
SET COLOR OF SCHEME 1 TO , , W+/B*

Un par de colores también se puede especificar con un conjunto de seis valores de colores RGB (Red, Green y Blue: rojo, verde y azul) separados por comas. Para cambiar el tercer par de colores del esquema de colores 1 a blanco brillante y azul, y dejar el resto de la configuración de color como está, como en el ejemplo anterior, puede utilizar este comando:

SET COLOR OF SCHEME 1 TO , , RGB(255,255,255,0,0,255)

Observaciones

No todos los elementos de la interfaz pueden controlarse con esquemas de colores: las ventanas del sistema (como las ventanas Vista y Comando), la barra de menús del sistema, etc., se controlan siempre con la configuración de color del Panel de control. Al ejecutar SET COLOR OF SCHEME nScheme1 TO sin incluir una cláusula opcional se restauran los colores del esquema de colores actual.

Vea también

CREATE COLOR SET | SET COLOR SET


SET COLOR SET (Comando)

Carga un conjunto de colores definido previamente.

SET COLOR SET TO [ColorSetName]

Parámetros

ColorSetName
Especifica el conjunto de colores que se va a cargar.

Observaciones

Los conjuntos de colores pueden crearse con SET COLOR OF SCHEME y guardarse con CREATE COLOR SET.

Si ejecuta SET COLOR SET sin ninguna cláusula opcional, permanecerá cargado el conjunto de colores actual.

Vea también

CREATE COLOR SET | SET COLOR OF SCHEME


SET COMPATIBLE (Comando)

Controla la compatibilidad con Microsoft FoxBASE+ y otros lenguajes FoxPro.

SET COMPATIBLE FOXPLUS | OFF | DB4 | ON [PROMPT | NOPROMPT]

Parámetros

FOXPLUS | OFF
(Predeterminado) Estas dos palabras clave se pueden utilizar indistintamente. Ambas permiten a los programas creados en FoxBASE+ ejecutarse en Microsoft Visual FoxPro sin modificaciones.
DB4 | ON
Estas dos palabras clave pueden usarse de forma intercambiable. La inclusión de cualquiera de ellas afecta al comportamiento de los comandos y funciones que se muestran más abajo.
PROMPT | NOPROMPT
Estas opciones determinan si Visual FoxPro muestra o no un cuadro de diálogo al abrir una tabla dBASE que contenga un campo memo.

Incluya la opción PROMPT para mostrar el cuadro de diálogo Convertir memos. Si abre una tabla dBASE que contiene un campo memo, Visual FoxPro mostrará de forma predeterminada el cuadro de diálogo Convertir memos, que le permite convertir el archivo memo de dBASE a un formato de Visual FoxPro. Es necesario convertir el campo memo a un formato de Visual FoxPro para abrir la tabla en Visual FoxPro. Posteriormente, puede convertir el archivo memo a un formato dBASE incluyendo la opción TYPE FOXPLUS en el comando COPY.

Si incluye NOPROMPT, el cuadro de diálogo Convertir Memos no se mostrará al abrir una tabla dBASE que contenga un campo memo. El archivo memo dBASE se convierte automáticamente a un formato de Visual FoxPro.

Observaciones

Los comandos y funciones afectados por SET COMPATIBLE son LIKE( ), PLAY MACRO, SELECT( ) y STORE (cuando se utiliza STORE con matrices).

SET COMPATIBLE no crea compatibilidad con otros comandos, funciones o características que no se admitan en Visual FoxPro. Por ejemplo, no permitirá abrir un formulario de informe creado con otros productos en el Diseñador de informes.

En la tabla siguiente se incluye una lista completa de los comandos a los que afecta SET COMPATIBLE.

Comandos

@ ... GET - Cuadros de texto (Comando) con una cláusula RANGE | PLAY MACRO
@ ... SAY con CHR(7) | READ con una cláusula @ ... Cláusula GET VALID
@ ... SAY con desplazamiento | READ anidados
@ ... SAY cuando STATUS tiene asignado el valor ON | READ
ACTIVATE SCREEN | RUN | !
ACTIVATE WINDOW | SET COLOR TO
APPEND MEMO | SET BORDER
BROWSE | SET FIELDS
DECLARE | SET MESSAGE
DIMENSION | SET MEMOWIDTH
GO | GOTO cuando SET TALK tiene asignado el valor ON | SET PRINTER TO <archivo>
FSIZE( ) | STORE
INKEY( ) | SUM
LASTKEY( ) | TRANSFORM( ) con una cláusula PICTURE numérica
LIKE( ) | SELECT( )
Comandos de menú | SYS(2001, "COLOR")

Vea también

SET KEYCOMP | Elementos del lenguaje compatibles con versiones anteriores


SET CONFIRM (Comando)

Especifica si puede salir de un cuadro de texto escribiendo más allá del último carácter del cuadro.

SET CONFIRM ON | OFF

Parámetros

ON
Especifica que no puede salir de un cuadro de texto escribiendo más allá del último carácter del cuadro. Para salir del cuadro de texto, puede presionar ENTRAR, TAB o cualquiera de las teclas de dirección, para moverse de un cuadro de texto a otro control.

SET CONFIRM ON también afecta a los elementos y títulos de menú creados con DEFINE BAR y DEFINE PAD. Si escribe la primera letra del elemento o del título de menú, éste se selecciona, pero no se elige. Para elegir el elemento o título de menú cuando está seleccionado, presione ENTRAR o la BARRA ESPACIADORA.

OFF
Especifica que puede salir de un cuadro de texto escribiendo más allá del último carácter del cuadro. El punto de inserción, al llegar al último carácter de un cuadro de texto, se mueve hasta el siguiente control y suena el tono acústico (si SET BELL está activado).

El valor predeterminado de SET CONFIRM es desactivado.

SET CONFIRM OFF también afecta a los elementos y títulos de menú. Si SET CONFIRM está desactivado, puede elegir un elemento de un menú o un título de menú de una barra de menús presionando la tecla correspondiente a la primera letra del elemento o título de menú. (Cuando SET CONFIRM está activado, esta acción solamente selecciona el elemento o el título del menú).

Observaciones

SET CONFIRM no ejerce ningún efecto en las teclas de acceso para los elementos y los títulos de menús. Si un elemento o un título de menú se crea con una tecla de acceso, podrá elegirse presionando la tecla de acceso correspondiente.

Puede crear controles de cuadro de texto con el Diseñador de formularios.

SET CONFIRM tiene como alcance la sesión actual de datos.

Vea también

TextBox (Control) | SET DATASESSION | Diseñador de formularios


SET CONSOLE (Comando)

Activa o desactiva los resultados a la ventana principal de Visual FoxPro o a la ventana activa definida por el usuario desde los programas.

SET CONSOLE ON | OFF

Parámetros

ON
(Predeterminado) Envía todos los resultados a la ventana principal de Visual FoxPro o a la ventana activa definida por el usuario.
OFF
Impide que se muestre el resultado en la ventana principal de Visual FoxPro o en la ventana activa definida por el usuario.

Observaciones

SET CONSOLE está activado cuando se utiliza Visual FoxPro de forma interactiva y no puede cambiarse a desactivado desde la ventana Comandos. Sólo puede cambiar el valor de SET CONSOLE a desactivado desde un programa.

SET CONSOLE afecta a algunos cuadros de diálogo interactivos de Visual FoxPro. Por ejemplo, si SET CONSOLE está desactivado y ejecuta BROWSE sin que haya ninguna tabla abierta, Visual FoxPro mostrará un mensaje de error. Si SET CONSOLE está activado en las mismas circunstancias, Visual FoxPro mostrará el cuadro de diálogo Abrir.

SET CONSOLE no afecta al resultado de @ ... SAY. El resultado de @ ... SAY se controla con la configuración de SET DEVICE.

Nota Un error siempre establece el valor de SET CONSOLE en ON.

Vea también

SYS( ) | Funciones definidas por el usuario


SET COVERAGE (Comando)

Activa o desactiva el trayecto del código o especifica un archivo de texto al que se dirigirá la información referente al trayecto del código.

SET COVERAGE TO [FileName [ADDITIVE]]

Parámetros

TO FileName
Especifica el nombre de un archivo de texto al que se dirigirá la información de trayecto del código. Para cerrar el archivo de texto, ejecute SET COVERAGE TO sin ningún nombre de archivo.

Si el archivo especificado no existe, Visual FoxPro lo creará y lo abrirá automáticamente.

ADDITIVE
Añade la información sobre el trayecto del código al final del archivo de texto especificado con FileName. Si se omite ADDITIVE, la información del trayecto del código reemplazará el contenido del archivo de texto.

Observaciones

También se puede establecer la configuración del trayecto del código en el cuadro de diálogo Trayecto.

Para obtener más información acerca del Analizador de trayecto de Visual FoxPro, vea Aplicación Analizador de trayecto.

Vea también

_COVERAGE | SET EVENTTRACKING | Trayecto (Cuadro de diálogo) | Aplicación Analizador de trayecto | Registrar el trayecto del código


SET CPCOMPILE (Comando)

Especifica la página de códigos para los programas compilados.

SET CPCOMPILE TO [nCodePage]

Parámetros

nCodePage
Especifica la página de códigos de compilación con nCodePage.

Para obtener más información acerca de las páginas de códigos y la compatibilidad internacional de Visual FoxPro, vea Páginas de códigos compatibles con Visual FoxPro en Desarrollar aplicaciones internacionales.

Ejecute SET CPCOMPILE TO sin nCodePage para restablecer la página de códigos de compilación en la página de códigos actual. Use CPCURRENT( ) para determinar la página de códigos actual.

Observaciones

Use SET CPCOMPILE para compilar programas para una determinada página de códigos. La página de códigos que especifique con SET CPCOMPILE se usará para los programas compilados automáticamente por Visual FoxPro, para los programas compilados desde el cuadro de diálogo Compilar y para los programas compilados con el comando COMPILE. No obstante, puede incluir la cláusula AS en el comando COMPILE para anular la página de códigos especificada con SET CPCOMPILE.

Vea también

COMPILE | CPCURRENT( ) | Páginas de códigos compatibles con Visual FoxPro


SET CPDIALOG (Comando)

Especifica si se muestra el cuadro de diálogo Página de códigos cuando se abre una tabla.

SET CPDIALOG ON | OFF

Parámetros

ON
(Predeterminado) Muestra el cuadro de diálogo Página de códigos cuando se abre una tabla y son verdaderas las siguientes condiciones:
  • La tabla está abierta de forma exclusiva.
  • La tabla no está marcada con una página de códigos.
OFF
No muestra el cuadro de diálogo Página de códigos cuando se abre una tabla.

Observaciones

El cuadro de diálogo Página de códigos permite especificar una página de códigos para tablas creadas en versiones anteriores de FoxPro y otros productos que crean tablas de Visual FoxPro. La tabla se marca con la página de códigos que usted elija.

Al crear una aplicación, ejecute SET CPDIALOG ON para asegurarse de que las tablas incluidas en la aplicación se marcan con la página de códigos adecuada. En la aplicación terminada, asegúrese de que SET CPDIALOG está desactivado.

También puede especificar interactivamente si se muestra el cuadro de diálogo Página de códigos con la casilla de verificación Pedir página de códigos en la ficha Datos del cuadro de diálogo Opciones. El cuadro de diálogo Opciones se abre al elegir Opciones en el menú Herramientas.

Nota Para obtener información adicional acerca de las páginas de códigos y el soporte internacional de Visual FoxPro, vea Páginas de códigos compatibles con Visual FoxPro en Desarrollar aplicaciones internacionales.

Vea también

CPCURRENT( ) | CPCONVERT( ) | CPDBF( ) | GETCP( ) | USE


SET CURRENCY (Comando)

Define el símbolo de moneda y especifica su posición en la presentación de expresiones de tipo Numérico, Currency, Float y Double.

SET CURRENCY TO [cCurrencySymbol] -or- SET CURRENCY LEFT | RIGHT

Parámetros

cCurrencySymbol
Especifica una cadena de caracteres que representa el símbolo de moneda y puede tener de uno a nueve caracteres de longitud. Ejecute SET CURRENCY TO sin cCurrencySymbol para restablecer el símbolo de moneda predeterminado, que es el signo de dólar ($).

También puede especificar un símbolo de moneda mediante Alt+nnn. Puede especificar el símbolo del Euro (€) mediante Alt+0128 si están instaladas las fuentes de Windows necesarias. También puede establecer el símbolo de moneda predeterminado en la ficha Regional del cuadro de diálogo Opciones.

LEFT
(Predeterminado) Coloca el símbolo de moneda a la izquierda del valor monetario.
RIGHT
Coloca el símbolo de moneda a la derecha del valor monetario.

Observaciones

El símbolo de moneda se muestra en el resultado creado con @ ... SAY y en los cuadros de texto creados con @ ... GET cuando el código $ se incluye en la cláusula FUNCTION o PICTURE.

SET CURRENCY tiene como alcance la sesión actual de datos.

Ejemplo

El ejemplo siguiente muestra el símbolo de moneda DM a ambos lados del valor de moneda. Si utiliza PICTURE para mostrar el símbolo de moneda, asegúrese de incluir @ delante del signo de dólar.

STORE SET('CURRENCY') TO gcCurrPosit
STORE 1234.56 TO gnDollarAmnt
CLEAR
SET CURRENCY TO 'DM'
@ 2,2 SAY gnDollarAmnt PICTURE '@$99,999.99'
IF gcCurrPosit = 'LEFT'
SET CURRENCY RIGHT
ELSE
SET CURRENCY LEFT
ENDIF
@ 4,2 SAY gnDollarAmnt FUNCTION '$99,999.99'

Vea también

SET DATASESSION | SET DECIMALS | SET SEPARATOR | SET SYSFORMATS


SET CURSOR (Comando)

Determina si se muestra el punto de inserción mientras Visual FoxPro espera la entrada.

SET CURSOR ON | OFF

Parámetros

ON
(Predeterminado) Hace que se muestre el punto de inserción cuando estén pendientes @ ... GET, @ ... EDIT, WAIT o INKEY( ).
OFF
Impide que se vea el punto de inserción cuando estén pendientes @ ... GET, @ ... EDIT, WAIT o INKEY( ).

Observaciones

SET CURSOR, similar a SYS(2002), le permite activar o desactivar el punto de inserción.

Vea también

INKEY( ) | SET( ) | SYS(2002) - Activar o desactivar el punto de inserción | WAIT


SET DATABASE (Comando)

Especifica la base de datos actual. SET DATABASE tiene alcance en la sesión actual de datos. Cuando se han abierto una o más bases de datos, puede especificar además la base de datos actual seleccionando una base de datos abierta desde la barra de tareas Estándar y la lista desplegable Base de datos.

Puede tener varias Bases de datos abiertas al mismo tiempo; pero solo una será la base de datos actual. Los comandos y funciones que manipulan Bases de datos abiertas como son ADD TABLE y DBC( ), operan sobre la base de datos activa.

SET DATABASE TO [DatabaseName]

Parámetros

DatabaseName
Especifica el nombre de una base de datos abierta que se va a convertir en la base de datos actual. Si omite DatabaseName, ninguna base de datos abierta se convertirá en la base de datos actual. Puede especificar una cadena vacía para DatabaseName, lo cual será igual que si omitiera DatabaseName.

Observaciones

Visual FoxPro podría abrir bases de datos automáticamente al ejecutar consultas o formularios.

Ejemplo

El ejemplo siguiente crea dos bases de datos llamadas mydbc1 y mydbc2 y una tabla llamada table1. SET DATABASE se usa para convertir a mydbc1 en la base de datos actual y table1 se agrega a mydbc1 una vez que se crea. A continuación, se cierra la tabla y se quita de mydbc1. SET DATABASE se usa para convertir mydbc1 en la base de datos actual y ADD TABLE para agregar la tabla a mydbc2. Se utiliza RENAME TABLE para cambiar el nombre de la tabla de table1 a table2.

CREATE DATABASE mydbc1
CREATE DATABASE mydbc2
SET DATABASE TO mydbc1
CREATE TABLE table1 (cField1 C(10), n N(10))  && Adds table to mydbc1
CLOSE TABLES     && A table must be closed to remove it from a database
REMOVE TABLE table1
SET DATABASE TO mydbc2
ADD TABLE table1
RENAME TABLE table1 TO table2

Vea también

ADD TABLE | CLOSE DATABASES | DBC( ) | DBGETPROP( ) | DBSETPROP( ) | DELETE DATABASE | DISPLAY TABLES | MODIFY DATABASE | OPEN DATABASE | REMOVE TABLE | SET DATASESSION


SET DATASESSION (Comando)

Activa la sesión de datos del formulario especificado.

SET DATASESSION TO [nDataSessionNumber]

Parámetros

nDataSessionNumber
Especifica la sesión de datos de formulario que se va a activar. Si omite nDataSessionNumber, se activará la sesión de datos 1 (la sesión de datos Global).

Observaciones

De forma predeterminada, se activa la sesión de datos 1, la sesión de datos Global, cuando se inicia Visual FoxPro.

Una propiedad DataSession de un formulario determina si el formulario tiene su propia sesión de datos única cuando se crea. Si la propiedad DataSession de un formulario se establece en el valor verdadero (.T.), el formulario tendrá su propia sesión de datos; de lo contrario, no se creará una sesión de datos para él. Puede emplear la propiedad DataSessionId de sólo lectura del formulario para determinar el número de sesión de datos del formulario.

Una sesión de datos se cierra cuando se libera el formulario que creó la sesión.

SET DATASESSION suele utilizarse para depurar formularios. Sea muy cauteloso al utilizar este comando un formulario está activo, debido a que no podrá acceder a las tablas que no son de la sesión actual de datos.

Los siguientes comandos SET tienen como alcance la sesión actual de datos:

Comandos SET

SET ANSI | SET AUTOSAVE
SET BLOCKSIZE | SET CARRY
SET CENTURY | SET COLLATE
SET CONFIRM | SET CURRENCY
SET DATABASE | SET DATE
SET DECIMALS | SET DELETED
SET DELIMITERS | SET EXACT
SET EXCLUSIVE | SET FIELDS
SET FIXED | SET HOURS
SET LOCK | SET MARK TO
SET MEMOWIDTH | SET MULTILOCKS
SET NEAR | SET NULL
SET POINT | SET REPROCESS
SET SAFETY | SET SECONDS
SET SEPARATOR | SET SYSFORMATS
SET TALK | SET UNIQUE

Vea también

AUSED( ) | CREATE FORM | DataSession (Propiedad) | DataSessionID (Propiedad)


SET DATE (Comando)

Especifica el formato para mostrar las expresiones Date y DateTime.

SET DATE [TO] AMERICAN | ANSI | BRITISH | FRENCH | GERMAN | ITALIAN | JAPAN | TAIWAN | USA | MDY | DMY | YMD| SHORT | LONG

Observaciones

A continuación se muestran las configuraciones y los formatos de fecha resultantes:

Valor | Formato
AMERICAN | mm/dd/aa
ANSI | aa.mm.dd
BRITISH/FRENCH | dd/mm/aa
GERMAN | dd.mm.aa
ITALIAN | dd-mm-aa
JAPAN | aa/mm/dd
TAIWAN | aa/mm/dd
USA | mm-dd-aa
MDY | mm/dd/aa
DMY | dd/mm/aa
AMD | aa/mm/dd
SHORT | El formato de fecha corto determinado en la configuración de fecha corta del Panel de Control de Windows.
LONG | El formato de fecha larga determinado en la configuración de fecha larga del Panel de Control de Windows.
Nota Cuando se establece SET DATE en SHORT o LONG, las fechas anteriores a {^1601-01-01} no serán válidas y generarán un error.

La configuración predeterminada es AMERICAN.

El valor SET DATE también determina cómo aparecerá la fecha en las expresiones DateTime.

Si se establece DATE en SHORT o en LONG, se omitirán los valores de configuración establecidos para SET CENTURY, SET MARK, SET HOURS y SET SECONDS.

SET DATE tiene como alcance la sesión actual de datos.

Vea también

DATE( ) | DATETIME( ) | SET CENTURY | SET DATASESSION | SET MARK TO | SET SYSFORMATS


SET DEBUGOUT (Comando)

Dirige el resultado de la depuración a un archivo.

SET DEBUGOUT TO [FileName [ADDITIVE]]

Parámetros

FileName
Especifica el nombre del archivo al que se dirigirá el resultado de la depuración. Si el archivo especificado no existe, se creará automáticamente. Si el archivo especificado ya existe, se sobrescribirá su contenido a no ser que incluya la cláusula ADDITIVE.

Ejecute SET DEBUGOUT TO para dejar de dirigir el resultado de la depuración al archivo y cerrar el archivo.

ADDITIVE
Especifica que el resultado de la depuración se anexará al final del archivo especificado con FileName.

Observaciones

El resultado de la depuración que se dirige al archivo incluye mensajes ASSERT, resultado del comando DEBUGOUT, y los eventos especificados con SET EVENTLIST o en el cuadro de diálogo Seguimiento de eventos. Vea el tema Cuadro de diálogo Seguimiento de eventos para obtener más información acerca de como especificar eventos para realizar un seguimiento de forma interactiva.

Vea también

ASSERT | DEBUG | DEBUGOUT | SET EVENTLIST | SET EVENTTRACKING


SET DECIMALS (Comando)

Especifica el número de decimales que se mostrarán en las expresiones numéricas.

SET DECIMALS TO [nDecimalPlaces]

Parámetros

nDecimalPlaces
Especifica el número mínimo de indicadores decimales que se muestran. El valor predeterminado es dos decimales. El número máximo de decimales es 18 y el mínimo es cero.

Observaciones

SET DECIMALS especifica el número mínimo de decimales que se utilizarán para mostrar los resultados de división, multiplicación, y funciones trigonométricas y financieras.

SET DECIMALS tiene como alcance la sesión actual de datos.

Vea también

SET DATASESSION | SET FIXED | SET SYSFORMATS


SET DEFAULT (Comando)

Especifica la unidad o el directorio predeterminados.

SET DEFAULT TO [cPath]

Parámetros

cPath
Especifica uno de los elementos siguientes:
  • Un designador de unidad.
  • Un designador de unidad con un nombre de directorio.
  • Un nombre de un directorio secundario.
  • Cualquiera de los anteriores, utilizando la notación abreviada de Microsoft MS-DOS ( \ o ..).

Observaciones

SET DEFAULT cambia el directorio predeterminado al directorio que usted especifique.

Microsoft® Visual FoxPro® busca un archivo en el directorio predeterminado de Visual FoxPro. El directorio predeterminado es aquel desde el cual se inicia Visual FoxPro. No obstante, puede especificar otro directorio predeterminado en el archivo de configuración de Visual FoxPro o en un programa de inicio. Si Visual FoxPro no encuentra un archivo en el directorio predeterminado, buscará en la ruta de acceso de Visual FoxPro si se ha especificado una. Utilice SET PATH para especificar la ruta de Visual FoxPro.

Si crea un archivo y no especifica donde desea ubicarlo, el archivo se colocará en el directorio predeterminado de Visual FoxPro.

El comando SET DEFAULT no es compatible ni en servidores DLL de un hilo ni de múltiples hilos. Este comando cambia el directorio actual de todo el proceso, por tanto todos los subprocesos que son parte del proceso serán afectados. Utilice el comando SET PATH en servidores DLL, el lugar de CD o CHDIR.

Cuando salga de Visual FoxPro, volverá a Microsoft® Windows®. Si sale de Windows, volverá a la unidad y al directorio desde los que inició Windows.

Sugerencia SYS(5) devuelve la unidad predeterminada. SYS(2003) devuelve el directorio predeterminado sin designador de unidad. SYS(5) + SYS(2003) devuelven la unidad y el directorio predeterminados.

Puede cambiar la unidad predeterminada a la unidad A ejecutando cualquiera de los comandos siguientes:

SET DEFAULT TO A
SET DEFAULT TO A:

Puede especificar un directorio determinado:

SET DEFAULT TO A:\sales
SET DEFAULT TO C:\sales\data

Puede especificar un directorio secundario. Si el directorio raíz de la unidad C es el directorio predeterminado de Visual FoxPro, ejecute este comando para cambiar el directorio predeterminado a C:\Sales:

SET DEFAULT TO sales

Puede ejecutar la notación abreviada de MS-DOS. Si el directorio actual es C:\Sales\Data, ejecute el comando siguiente para hacer que el directorio raíz sea el directorio predeterminado:

SET DEFAULT TO \

También puede mover el directorio predeterminado al directorio anterior hacia el directorio raíz con este comando:

SET DEFAULT TO ..

Vea también

CD | CHDIR | MD | MKDIR | RD | RMDIR | SET PATH | SYS(5) - Unidad predeterminada | SYS(2003) - Directorio actual


SET DELETED (Comando)

Especifica si Visual FoxPro procesará o no los registros marcados para su eliminación y si estarán disponibles o no para utilizarse en otros comandos.

SET DELETED ON | OFF

Parámetros

ON
Especifica que los comandos que realizan operaciones en registros (incluidos los registros de las tablas relacionadas) utilizando un alcance, pasen por alto los registros marcados para su eliminación.
OFF
(Predeterminado) Especifica que puedan tener acceso a los registros marcados para eliminación los comandos que actúan sobre registros (incluidos los registros de las tablas relacionadas), utilizando un alcance.
Nota Ejecutar SQL SELECT con SET DELETED OFF incluye en el resultado los registros que cumplen el criterio especificado y establece estos registros disponibles para procesar. Esto es, SET DELETED OFF no se establece para los artículos en el conjunto resultante.

Observaciones

Las consultas que utilizan DELETED( ) para comprobar el estado de los registros pueden optimizarse utilizando la tecnología Rushmore si la tabla está indizada en DELETED( ).

Para obtener más información acerca de la optimización de consultas, ver Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.

Se puede marcar registros para su eliminación ejecutando DELETE - SQL o DELETE, o eligiendo Eliminar registros... en el menú Tabla desde una ventana Examinar o Modificar.

Puede recuperar registros ejecutando RECALL o eligiendo Desmarcar registros... en el menú Tabla de una ventana Examinar o Modificar.

Nota SET DELETED se pasa por alto si el alcance predeterminado del comando es el registro actual o si incluye un alcance de un único registro. Existe una excepción con el comando SEEK, en su caso, SET DELETED es respetado siempre. INDEX y REINDEX siempre pasan por alto SET DELETED e indizan todos los registros de la tabla.

SET DELETED tiene como alcance la sesión actual de datos.

Ver también

DELETE | DELETE - SQL | DELETED( ) | PACK | RECALL | SET DATASESSION


SET DEVELOPMENT (Comando)

Hace que Visual FoxPro compare la fecha y hora de creación de un programa con las de su archivo objeto compilado al ejecutar el programa.

SET DEVELOPMENT ON | OFF

Parámetros

ON
(Predeterminado) Especifica que Visual FoxPro vuelva a compilar el programa fuente antes de que se ejecute si es más reciente que su programa objeto compilado. Esto asegura que se ejecute la versión más reciente de un programa.
OFF
Especifica que Visual FoxPro no compara las versiones fuente y compilada del programa. Si SET DEVELOPMENT está desactivado, es posible que no se ejecute siempre la versión más reciente de un programa.

Observaciones

SET DEVELOPMENT necesita estar establecido en ON cuando los programas son modificados fuera de Visual FoxPro. Utilizar un editor externo — por ejemplo, un editor terminate-and-stay-resident (TSR) — puede necesitar que utilice CLEAR PROGRAM antes que ejecute el programa modificado. Para más información, vea CLEAR PROGRAM. Utilice SET DEVELOPMENT OFF para un funcionamiento óptimo.

Cuando SET DEVELOPMENT está activado, la ejecución del programa puede cancelarse durante un READ. El comando Cancelar del menú Programa está disponible cuando SET DEVELOPMENT está activado y hay un READ activo. Al elegir Cancelar durante el READ se cancelará la ejecución del programa. Si SET DEVELOPMENT está desactivado, el comando Cancelar del menú Programa no estará disponible durante un READ.

SET DEVELOPMENT también determina si la ventana Seguimiento se abre cuando se produce un error en un Form que se está ejecutando. Si SET DEVELOPMENT está activado, la ventana Seguimiento se abrirá con la línea de programa que causó el error seleccionada. Si SET DEVELOPMENT está desactivado, la ventana Seguimiento no se abrirá cuando se produzca un error en un Form.

Vea también

COMPILE | MODIFY COMMAND | MODIFY FILE


SET DEVICE (Comando)

Dirige el resultado de @ ... SAY a la pantalla, a una impresora o a un archivo.

SET DEVICE TO SCREEN | TO PRINTER [PROMPT] | TO FILE FileName

Parámetros

TO SCREEN
Dirige el resultado de @ ... SAY a la ventana principal de Visual FoxPro o a la ventana activa definida por el usuario.
TO PRINTER [PROMPT]
Dirige el resultado de @ ... SAY a la impresora. Se ejecuta un avance de página cuando las coordenadas de @ ... SAY especifican una ubicación en la página que es superior a la ubicación especificada por las coordenadas del @ ... SAY anterior.

Puede incluir la cláusula PROMPT opcional para mostrar un cuadro de diálogo antes de que comience la impresión. En este cuadro de diálogo puede ajustar la configuración de la impresora, como el número de copias y los números de página que desea imprimir. El controlador de impresora instalado actualmente determina los valores de impresora que puede ajustar. Coloque PROMPT justo después de TO PRINTER.

TO FILE FileName
Especifica el archivo al que @ ... SAY envía el resultado.

Observaciones

El resultado de @ ... SAY se puede enviar a la ventana principal de Visual FoxPro, a la ventana activa definida por el usuario, a la impresora o a un archivo.

Vea también

SYS(101) - Configuración de DEVICE | @ ... SAY (Comando) | PROMPT( ) (Función)


SET ECHO (Comando)

Abre la ventana Seguimiento para la depuración de programas. Se incluye por compatibilidad con versiones anteriores. Utilice la ventana Seguimiento en su lugar.

SET ECHO ON | OFF

Parámetros

ON
Muestra el código fuente para el programa que se está ejecutando en la ventana Seguimiento. La línea que se está ejecutando actualmente aparece resaltada.
OFF
(Predeterminado) Cierra la ventana Seguimiento en versiones de FoxPro anteriores a la 2.0. Desde un programa, la ventana Seguimiento puede cerrase con DEACTIVATE WINDOW TRACE.

Observaciones

También pueden utilizar la ventana Seguimiento para establecer puntos de interrupción, que suspenden la ejecución del programa.

Para obtener más información acerca de la ventana Seguimiento, vea ventana Seguimiento.

Vea también

RESUME | SET STEP | SUSPEND


SET ENGINEBEHAVIOR (Comando)

Habilita la compatibilidad del motor de datos SQL con Visual FoxPro 7.0 o Visual FoxPro 8.0.

SET ENGINEBEHAVIOR 70 | 80

Parámetros

70
Especifica que Visual FoxPro trate a los comandos SQL SELECT como lo hacía en versiones anteriores a Visual FoxPro 8.0
80
Especifica que Visual FoxPro trate los comandos SQL SELECT de la siguiente manera: (Predeterminado)
Cláusulas SELECT SQL | Comportamiento
DISTINCT No puede usar la cláusula DISTINCT con campos Memo o General. En su lugar, ajuste los campos Memo dentro de una función como PADR( ) o ALLTRIM( ).

Para más información, vea PADL( ) | PADR( ) | PADC( ) (Funciones) y ALLTRIM( ) (Función).
UNION | La cláusula UNION no soporta campos Memo a menos que la cláusula ALL esté incluida en la instrucción SELECT de SQL.
GROUP BY La cláusula GROUP BY no soporta campos Memo o General.

La cláusula GROUP BY debe incluir todos los campos de la lista del SELECT excepto campos contenidos en una función que los reúna, tal como la función COUNT( ). Además, la cláusula GROUP BY también debe listar todos los incluidos en la cláusula HAVING excepto los campos contenidos en una función que los reúna.

Por ejemplo, el siguiente código activa un error por que el campo company no está listado en la cláusula GROUP BY.

SELECT company, country FROM Customer GROUP BY country

Puede incluir una función de reunión en una lista SELECT sin tenerla en la cláusula GROUP BY.

Por ejemplo, el siguiente código utiliza la función COUNT( ) con el campo company sin tener el campo company en la cláusula GROUP BY.

SELECT COUNT(company), country FROM Customer GROUP BY country
HAVING Una instrucción SELECT SQL puede contener la cláusula HAVING sin la cláusula GROUP BY siempre y cuando la instrucción SELECT SQL no contenga funciones de reunión.

Por ejemplo, el siguiente código filtra el resultado de la consulta especificando que el campo country debe ser igual a "Sweden".

SELECT customerid FROM customers HAVING country="Sweden"
LIKE La instrucción LIKE del SELECT SQL no quita automáticamente los espacios sobrantes de los valores comparados. En versiones anteriores a Visual FoxPro 8.0, ambos valores en la operación LIKE eran recortados desde la derecha, antes de la evaluación.

Por ejemplo, el siguiente código asume que usted tiene una tabla llamada table1, y la tabla tiene tres filas que contienen valores de "1 ", "12 ", y "123", respectivamente.

SELECT * FROM table1 WHERE column1 LIKE "1__"

Visual FoxPro versión 7.0 y anteriores devuelven una fila con el valor de "123". Visual FoxPro 8.0 devuelve tres filar con los valores de , "1 ", "12 ", y "123".

Si el comienzo de la condición de filtro coincide con la plantilla de la expresión en la cláusula LIKE, y el resto de la condición de filtro contiene espacios sobrantes, la cláusula LIKE ignora los espacios sobrantes y devuelve Verdadero (.T.). Los espacios sobrantes en la plantilla no se ignoran.

Observaciones

Utilizar SET ENGINEBEHAVIOR establecido a 70 podría producir resultados ambiguos de los comandos SELECT SQL cuando las cláusulas DISTINCT y UNION se usen con memos y la cláusula GROUP BY, la cláusula HAVING sin una cláusula GROUP BY, y cuando utilice una cláusula LIKE.

El alcance de SET ENGINEBEHAVIOR es global.

Vea también

SET (Introducción al comando) | SELECT - SQL (Comando) | Términos especiales para archivos de configuración | SYS(3099) - Modo de compatibilidad con el Motor de Datos SQL

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


SET ESCAPE (Comando)

Determina si al presionar la tecla ESC se interrumpirá la ejecución de un programa y un comando.

SET ESCAPE ON | OFF

Parámetros

ON
(Predeterminado) Permite interrumpir la ejecución de comandos y programas presionando la tecla ESC.

Si presiona ESC durante la ejecución de un comando o un programa mientras el punto de inserción está en la ventana Comandos, aparecerá el mensaje siguiente:

*** INTERRUPTED ***

Si presiona ESC durante la ejecución de un comando o un programa, el proceso terminará en la línea de programa actual y aparecerá una alerta con las tres opciones siguientes:

  • (Predeterminado) Elija Cancelar para detener inmediatamente la ejecución del programa y volver a la ventana Comandos.
  • Elija Suspender para hacer una pausa en la ejecución del programa y volver a la ventana Comandos. Esta opción es útil para depurar un programa. Elija Reanudar en el menú Programa o ejecute RESUME en la ventana Comandos para reiniciar el programa en la línea en la que se detuvo.
  • Elija Pasar por alto para continuar la ejecución del programa en la línea en la que se detuvo.
OFF
Impide que la ejecución del programa y de los comandos se interrumpa al presionar la tecla ESC.

Vea también

ON ESCAPE | ON KEY LABEL | RESUME (Comando)


SET EVENTLIST (Comando)

Especifica los eventos de los que se va a realizar un seguimiento en la ventana Resultado del depurador o en un archivo especificado con SET EVENTTRACKING.

SET EVENTLIST TO [EventName1 [, EventName2 ...] [ADDITIVE]]

Parámetros

EventName1 [, EventName2 ...]
Especifica los nombres de los eventos de los que se va a realizar un seguimiento. Se pueden incluir todos los nombres de eventos que desee, separados por comas.
ADDITIVE
Especifica que los eventos EventName1, EventName2 … se han agregado al conjunto de eventos del que se está haciendo un seguimiento en ese momento. Si se omite ADDITIVE, sólo se realizará un seguimiento de los eventos EventName1, EventName2.

Observaciones

Si desea quitar todos los eventos del conjunto de eventos sobre el que se está realizando un seguimiento, ejecute SET EVENTLIST TO sin ningún nombre de evento. También puede especificar los eventos de los que se va a llevar a cabo un seguimiento en el cuadro de diálogo Seguimiento de eventos.

Vea también

SET DEBUGOUT | SET EVENTTRACKING | Cuadro de diálogo Seguimiento de eventos


SET EVENTTRACKING (Comando)

Activa o desactiva el seguimiento de eventos o especifica un archivo de texto al que se dirigirá la información del seguimiento de eventos.

SET EVENTTRACKING ON | OFF | PROMPT | TO [FileName [ADDITIVE]]

Parámetros

ON
Activa el seguimiento de eventos y dirige la información del seguimiento de eventos al archivo de texto especificado con FileName.
OFF
Desactiva el seguimiento de eventos y deja de dirigir la información del seguimiento de eventos al archivo de texto.
PROMPT
Muestra el cuadro de diálogo Seguimiento de eventos, donde puede especificar los eventos de los que desea realizar un seguimiento.
TO FileName
Especifica el nombre de un archivo de texto al que se dirigirá la información del seguimiento de eventos. Es necesario que SET EVENTTRACKING esté activado para dirigir la información del seguimiento de eventos a un archivo de texto. Para cerrar el archivo de texto, ejecute SET EVENTTRACKING TO sin ningún nombre de archivo.

Si el archivo especificado no existe, Microsoft Visual FoxPro lo creará y abrirá automáticamente.

ADDITIVE
Anexa la información del seguimiento de eventos al final del archivo de texto especificado con FileName. Si omite ADDITIVE, la información del seguimiento de eventos sustituirá el contenido del archivo de texto.

Observaciones

Utilice SET EVENTLIST o el cuadro de diálogo Seguimiento de eventos para especificar los eventos de los que se va a hacer un seguimiento.

A partir de Visual FoxPro 7, El formato del registro de eventos difiere del de las versiones anteriores. El nuevo formato agrega una marca de hora (para el análisis) a la información de eventos mostrada en cada línea.

Vea también

SET COVERAGE | SET EVENTLIST | Cuadro de diálogo Seguimiento de eventos


SET EXACT (Comando)

Especifica las reglas que utiliza Visual FoxPro al comparar dos cadenas de diferente longitud.

SET EXACT ON | OFF

Parámetros

ON
Especifica que las expresiones deben coincidir carácter a carácter para que se consideren equivalentes. La comparación pasa por alto los espacios en blanco finales que puedan existir en las expresiones. Para la comparación, la más corta de las dos expresiones se rellena por la derecha con espacios en blanco hasta igualar la longitud de la expresión más larga.
OFF
(Predeterminado) Especifica que, para que se consideren equivalentes, las expresiones deben coincidir carácter a carácter hasta llegar al final de la expresión del lado derecho.

Observaciones

La configuración de SET EXACT no tiene efecto si ambas cadenas tienen la misma longitud.

Comparaciones de cadenas

Visual FoxPro tiene dos operadores relacionales para probar la igualdad. El operador = realiza una comparación entre dos valores del mismo tipo. Este operador es apropiado para comparar datos de tipo Carácter, Numérico, Date y Logical.

Sin embargo, cuando compara expresiones de tipo Carácter con el operador =, el resultado puede no ser exactamente el que usted espera. Las expresiones Character se comparan carácter a carácter de izquierda a derecha hasta que una de las los expresiones no es igual a la otra, hasta que se llega al final de la expresión que hay al lado derecho del operador = (SET EXACT OFF) o hasta que se llega al final de las dos expresiones (SET EXACT ON).

El operador = = puede utilizarse cuando se necesita una comparación exacta de datos de tipo Carácter. Al comparar dos expresiones de caracteres con el operador ==, las expresiones a ambos lados de dicho operador se consideran iguales si contienen exactamente los mismos caracteres, incluidos los espacios en blanco. La configuración de SET EXACT se pasa por alto al comparar cadenas de caracteres con el operador ==.

La tabla siguiente muestra cómo afecta a las comparaciones la elección del operador y la configuración de SET EXACT. (Los subrayados representan espacios en blanco.)

Comparación | = EXACT OFF | = EXACT ON | == EXACT ON o OFF
“abc” = “abc” | Coincide | Coincide | Coincide
“ab” = “abc” | No coincide | No coincide | No coincide
“abc” = “ab” | Coincide | No coincide | No coincide
“abc” = “ab_” | No coincide | No coincide | No coincide
“ab” = “ab_” | No coincide | Coincide | No coincide
“ab_” = “ab” | Coincide | Coincide | No coincide
“” = “ab” | No coincide | No coincide | No coincide
“ab” = “” | Coincide | No coincide | No coincide
"__" = "" | Coincide | Coincide | No coincide
"" = "___" | No coincide | Coincide | No coincide
TRIM(“___”) = “” | Coincide | Coincide | Coincide
“” = TRIM(“___”) | Coincide | Coincide | Coincide

SET EXACT tiene como alcance la sesión actual de datos.

Vea también

SET ANSI | = (Comando) | ON KEY = (Comando)


SET EXCLUSIVE (Comando)

Especifica si Visual FoxPro abre los archivos de tabla para uso exclusivo o compartido en una red.

SET EXCLUSIVE ON | OFF

Parámetros

ON
(El valor predeterminado para la sesión de datos global.) Limita el acceso a una tabla abierta en red al usuario que la abrió. Otros usuarios de la red no tienen acceso a la tabla. A diferencia de FLOCK( ), SET EXCLUSIVE ON impide también que otros usuarios tengan acceso de sólo lectura. También puede abrirse un archivo en una red para uso exclusivo incluyendo la cláusula EXCLUSIVE con el comando USE. No es necesario realizar un bloqueo de registro o archivo en una tabla abierta para uso exclusivo.

Al abrir una tabla para uso exclusivo se asegura que otros usuarios no puedan cambiar el archivo. Algunos comandos no pueden ejecutarse a menos que se abra una tabla para uso exclusivo. Estos comandos son INSERT, INSERT BLANK, MODIFY STRUCTURE, PACK, REINDEX y ZAP.

OFF
(El valor predeterminado para una sesión de datos privada.) Permite que cualquier usuario de la red pueda compartir y modificar una tabla abierta en red.

Para obtener información adicional acerca del bloqueo de registros y archivos, y el uso compartido de tablas en una red, vea Programar para acceso compartido.

Observaciones

Al cambiar la configuración de SET EXCLUSIVE no cambiará el estado de las tablas abiertas previamente. Por ejemplo, si una tabla se abre con SET EXCLUSIVE ON y SET EXCLUSIVE se cambia posteriormente a OFF, la tabla mantendrá su estado de uso exclusivo.

SET EXCLUSIVE tiene como alcance la sesión actual de datos.

Vea también

FLOCK( ) | RLOCK( ) | SET DATASESSION | USE


SET FDOW (Comando)

Especifica el primer día de la semana.

SET FDOW TO [nExpression]

Parámetros

nExpression
Especifica el primer día de la semana. La tabla siguiente indica los valores que puede adoptar nExpression y el primer día de la semana correspondiente.
nExpression | Día de la semana
1 | Domingo
2 | Lunes
3 | Martes
4 | Miércoles
5 | Jueves
6 | Viernes
7 | Sábado

Si omite nExpression, el primer día de la semana se restablecerá en domingo (1).

Observaciones

El primer día de la semana también puede establecerse con el cuadro de lista “La semana empieza en” de la ficha Regional, en el cuadro de diálogo Opciones.

Ejemplo

STORE SET('FDOW') TO gnFdow  && Save current value
SET FDOW TO 1  && Sets first day of the week to Sunday, the default
SET FDOW TO 7  && Sets first day of the week to Saturday
SET FDOW TO &gnFdow  && Restore original day

Vea también

CDOW( ) | DAY( ) | DOW( ) | SET FWEEK | SYS( ) - Introducción a las funciones | WEEK( )


SET FIELDS (Comando)

Especifica a qué campos de una tabla puede tener acceso.

SET FIELDS ON | OFF | LOCAL | GLOBAL

O bien:

SET FIELDS TO [[FieldName1 [, FieldName2 ...]] | ALL [LIKE Skeleton | EXCEPT Skeleton]]

Parámetros

ON
Especifica que sólo puede tener acceso a los campos de la lista de campos.
OFF
(Predeterminado) Especifica que puede tener acceso a todos los campos de la tabla actual.
LOCAL
Especifica que sólo se puede tener acceso a los campos del área de trabajo actual incluidos en la lista de campos.
GLOBAL
Especifica que se puede tener acceso a todos los campos de la lista de campos, incluidos los de otras áreas de trabajo.

SET FIELDS GLOBAL le permite tener acceso a campos de otras áreas de trabajo sin ejecutar SET COMPATIBLE TO DB4.

TO [FieldName1 [, FieldName2 ...]]
Especifica los nombres de campos a los que se puede tener acceso en la tabla actual. Debe incluir un alias con el nombre del campo en estos casos:
  • Cuando el campo está en una tabla abierta en un área de trabajo distinta de la seleccionada actualmente.
  • Cuando los nombres de los campos son los mismos en dos o más tablas.

Puede incluir campos de tablas abiertas en otras áreas de trabajo si asigna alias de tabla como prefijo a los nombres de campo. Sin embargo, no podrá tener acceso a estos campos a menos que ejecute SET FIELDS GLOBAL o SET COMPATIBLE DB4.

La lista de campos puede contener instrucciones para crear campos calculados. Un campo calculado contiene datos de sólo lectura creados con una expresión. Esta expresión puede adoptar cualquier forma, pero debe ser una expresión válida de FoxPro. No puede tener acceso a los campos calculados a menos que ejecute SET FIELDS GLOBAL o SET COMPATIBLE DB4.

El formato de la instrucción que se utiliza para crear un campo calculado es la siguiente:

<calculated field name> = <expr>

El ejemplo siguiente crea un campo calculado llamado LOCATION:

CLOSE DATABASES
USE customer
SET FIELDS TO LOCATION = ALLTRIM(city) + ', ' + state

CITY y REGION son los nombres de los campos de la tabla seleccionada.

ALL
Permite tener acceso a todos los campos de la tabla actual.
ALL LIKE Skeleton | EXCEPT Skeleton
Puede tener acceso selectivamente a los campos incluyendo la cláusula LIKE, EXCEPT o ambas. Si incluye LIKE Skeleton, podrá tener acceso a los campos que coincidan con Skeleton. Si incluye EXCEPT Skeleton, podrá tener acceso a todos los campos excepto los que coincidan con Skeleton.

La estructura Skeleton admite caracteres comodín como * y ? Por ejemplo, para tener acceso a campos que comiencen por las letras A y P, ejecute:

SET FIELDS TO ALL LIKE A*,P*

Puede combinar la cláusula LIKE con la cláusula EXCEPT:

SET FIELDS TO ALL LIKE A*,P* EXCEPT PARTNO*

Observaciones

SET FIELDS TO es aditivo: al ejecutar SET FIELDS TO con una lista de campos se agregarán los campos especificados a los que estén ya accesibles.

Al ejecutar SET FIELDS TO se ejecuta implícitamente SET FIELDS ON. Al ejecutar SET FIELDS TO sin ningún argumento adicional, se ejecutará implícitamente SET FIELDS OFF. Ejecute SET FIELDS TO sin incluir una lista de campos ni ALL para eliminar todos los campos de la lista de campos de la tabla actual.

SET FIELDS tiene como alcance la sesión actual de datos.

Vea también

SET FILTER | SET DATASESSION | SET COMPATIBLE (Comando)


SET FILTER (Comando)

Especifica una condición que deben cumplir los registros de la tabla actual para estar accesibles.

SET FILTER TO [lExpression] [IN nWorkArea | cTableAlias]

Parámetros

lExpression
Especifica la condición que deben cumplir los registros.

Si la tabla actual está indizada en uno o más campos especificados en lExpression, la tecnología Rushmore optimización de consultas (Rushmore Query Optimization) de Visual FoxPro permite optimizar las consultas basadas en estos campos.

IN nWorkArea | cTableAlias
Especifica el área de trabajo o el alias de tabla afectado por el comando SET FILTER. Utilice esta cláusula para especificar una área de trabajo o una tabla externa al área de trabajo actual.

Observaciones

Una vez ejecutado SET FILTER, solamente están disponibles en la tabla los registros que satisfacen la condición especificada con la expresión lógica lExpression. Todos los comandos de acceso a la tabla respetan la condición de SET FILTER. Se puede definir un filtro distinto para cada tabla abierta.

La condición especificada por SET FILTER no se evalúa hasta que el puntero de registro se mueve en la tabla.

Al ejecutar SET FILTER TO sin lExpression se desactiva el filtro para la tabla actual.

SELECT - SQL no respeta la condición de filtro actual.

Vea también

FILTER( ) | SELECT - SQL | Trabajar con alias de tablas


SET FIXED (Comando)

Especifica si el número de indicadores decimales que se utilizarán al mostrar datos numéricos es fijo o no.

SET FIXED ON | OFF

Parámetros

ON
Use la configuración de SET DECIMALS para determinar el número de decimales que se muestran en el resultado. El número predeterminado de indicadores decimales es 2.
OFF
(Predeterminado) Permite que el número de indicadores decimales mostrado en los resultados dependa de las constantes, las variables y los operadores específicos utilizados en una expresión numérica. El contenido de los campos se mostrará con el número de cifras decimales declarado.

Observaciones

SET FIXED tiene como alcance la sesión actual de datos.

Vea también

SET DECIMALS | SET DATASESSION | Tipo de datos Numérico


SET FULLPATH (Comando)

Especifica si CDX( ), DBF( ), MDX( ) y NDX( ) devuelven la ruta de acceso en un nombre de archivo.

SET FULLPATH ON | OFF

Parámetros

ON
(Predeterminado) Especifica que CDX( ), DBF( ), IDX( ) y NDX( ) devuelven el designador de unidad, la ruta de acceso y el nombre del archivo.
OFF
Solamente se devolverá el designador de unidad y el nombre de archivo.

Vea también

CDX( ) | DBF( ) | MDX( ) | NDX( )


SET FUNCTION (Comando)

Asigna una expresión (macro de teclado) a una tecla de función o combinación de teclas.

SET FUNCTION nFunctionKeyNumber | KeyLabelName TO [eExpression]

Parámetros

nFunctionKeyNumber
Especifica el número de la tecla de función asignada a la macro. Por ejemplo, utilice SET FUNCTION 2 para especificar la tecla de función F2.
KeyLabelName
Especifica una combinación de teclas, como una tecla de función, a la que se desea asignar la macro. Visual FoxPro admite combinaciones de teclas que incluyen teclas de función. Puede utilizar las teclas CTRL o MAYÚS combinadas con una tecla de función para crear teclas programables adicionales. Si desea consultar una lista de expresiones de etiquetas de tecla, vea ON KEY LABEL.
TO [eExpression]
Especifica la serie de pulsaciones de tecla almacenadas en la tecla de función o en la combinación de teclas. Visual FoxPro interpreta un punto y coma (;) en la expresión como un retorno de carro.

Las definiciones de teclas de función pueden borrarse con CLEAR MACROS.

Vea también

CLEAR MACROS | FKLABEL( ) | FKMAX( ) | ON KEY LABEL


SET FWEEK (Comando)

Especifica los requisitos de la primera semana del año.

SET FWEEK TO [nExpression]

Parámetros

nExpression
Especifica un valor que determina los requisitos de la primera semana del año. La tabla siguiente indica los valores que puede adoptar nExpression y los requisitos correspondientes para la primera semana del año:
nExpression | Requisito de la primera semana
1 | (Predeterminado) La primera semana contiene el 1 de enero.
2 | La mitad más grande (cuatro días) de la primera semana está en el año actual.
3 | La primera semana tiene siete días.

Si omite nExpression, la primera semana del año se restablecerá en 1 (la primera semana contiene el 1 de enero).

Observaciones

La primera semana del año también se puede establecer con el cuadro de lista Primera semana del año de la ficha Regional, en el cuadro de diálogo Opciones.

Ejemplo

STORE SET('FWEEK') TO gnFweek  && Save current value
SET FWEEK TO 1  && First week contains January 1st
SET FWEEK TO 3  && First week has seven days
SET FWEEK TO &gnFweek  && Restore original setting

Vea también

CDOW( ) | DAY( ) | DOW( ) | SET FDOW | SYS( ) - Introducción a las funciones | WEEK( )


SET HEADINGS (Comando)

Determina si se muestran o no encabezados de columna para los campos, y si se incluye información de archivos cuando se ejecuta TYPE para mostrar el contenido de un archivo.

SET HEADINGS ON | OFF

Parámetros

ON
(Predeterminado) Especifica que se muestren los nombres de campo.

Si se ejecuta TYPE para mostrar el contenido de un archivo, Visual FoxPro insertará un avance de formulario, la ruta de acceso, el nombre del archivo y la fecha al principio del resultado mostrado.

OFF
Especifica que los nombres de los campos no se muestran.

Si se ejecuta TYPE para mostrar el contenido de un archivo, Visual FoxPro no insertará información adicional acerca del archivo al principio del resultado mostrado.

Observaciones

SET HEADINGS especifica si se mostrará el nombre de campo como encabezado de columna encima de cada campo en el resultado de AVERAGE, CALCULATE, DISPLAY, LIST y SUM.

Vea también

AVERAGE | CALCULATE | DISPLAY | LIST | SUM | TYPE


SET HELP (Comando)

Activa o desactiva la Ayuda en pantalla de Visual FoxPro o especifica un archivo de Ayuda.

SET HELP ON | OFF

O bien:

SET HELP [TO [FileName]] [COLLECTION [cCollectionURL]] [SYSTEM]

Parámetros

ON
(Predeterminado) Muestra la ventana Ayuda al presionar F1 o ejecutar HELP en la ventana Comandos.
OFF
Hace que la Ayuda interactiva de Visual FoxPro no esté disponible.
TO [FileName]
Especifica el archivo de Ayuda que se muestra al presionar F1 o ejecutar HELP. Puede especificar un archivo de Ayuda estilo .DBF, un archivo Winhelp (.Hlp) o un archivo de ayuda HTML (.Chm).

A partir de Visual FoxPro 7, si ejecuta SET HELP TO sin incluir un nombre de archivo, Visual FoxPro busca el archivo de Ayuda a predeterminado, foxhelp.chm.

COLLECTION [cCollectionURL]
Especifica el nombre de una colección de Ayuda HTML que se va a utilizar como origen de la Ayuda.
SYSTEM
Especifica que se utilice un nombre de colección como origen de la Ayuda.

Observaciones

Utilice SET HELP para proporcionar un archivo de Ayuda a medida en pantalla en una aplicación personalizada o para conmutar entre los distintos archivos de Ayuda de Visual FoxPro.

Si realiza una instalación completa de la biblioteca MSDN (Microsoft Developer’s Network), o una instalación personalizada de la biblioteca MSDN y especifica que desea instalar la documentación de Visual FoxPro, se instala el archivo de Ayuda de Visual FoxPro, Foxhelp.chm. Este archivo se instala de manera predeterminada con el producto Visual FoxPro.

En la tabla siguiente se describen los valores del Registro para la configuración de la Ayuda:

Valor | Clave del Registro | Valor del Registro
SET HELP ON | OFF | HelpOn | 0 ó 1
SET HELP TO cfilename | HelpTo | cFileName
SET HELP COLLECTION cCollectionURL | HelpCollection | cCollectionURL
SET HELP SYSTEM | HelpSystem | 0 ó 1

También puede usar la opción Archivo de Ayuda de la ficha Archivos del cuadro de diálogo Opciones para especificar un archivo de Ayuda de forma interactiva.

Vea también

HELP | SET TOPIC


SET HOURS (Comando)

Establece el formato de hora del reloj del sistema en 12 ó 24 horas.

SET HOURS TO [12 | 24]

Parámetros

TO 12
(Predeterminado) Especifica el formato de 12 horas.
TO 24
Especifica el formato de 24 horas.

Observaciones

Utilice SET HOURS TO sin 12 ni 24 para volver al formato de 12 horas predeterminado.

TIME( ) devuelve siempre un valor en formato 24 horas y no se ve afectado por SET HOURS.El valor devuelto por DATETIME( ) se determina con la configuración actual de SET HOURS.

SET HOURS tiene como alcance la sesión de datos actual.

Vea también

DATETIME( ) | SECONDS( ) | SET CLOCK | SET SYSFORMATS | TIME( )


SET INDEX (Comando)

Abre uno o más archivos de índice para utilizarlos con la tabla actual.

SET INDEX TO [IndexFileList | ? ] [ORDER nIndexNumber
| IDXIndexFileName | [TAG] TagName [OF CDXFileName] [ASCENDING | DESCENDING]] [ADDITIVE]

Parámetros

IndexFileList
Especifica uno o varios archivos de índice que desea abrir. Utilice comas para separar los diversos archivos de índice de la lista. La lista de archivos de índice puede contener cualquier combinación de nombres de archivo .idx y .cdx; no es necesario que incluya las extensiones de los archivos a menos que exista otro archivo .idx o .cdx con el mismo nombre.

El primer archivo de índice de la lista de archivos de índice se convierte en el archivo índice de control, que controla el acceso y la presentación de los registros. Los registros se muestran o se tiene acceso a ellos en el orden físico de los registros si el primer archivo de índice es un archivo .cdx y no se ha ejecutado SET ORDER TO TAG.

?
Muestra el cuadro de diálogo Abrir desde el cual puede abrir un solo archivo .idx
ORDER nIndexNumber
Especifica un archivo o etiqueta de índice de control. La expresión numérica nIndexNumber especifica los archivos de índice tal y como aparecen en la lista de archivos de índice.

Los archivos .idx se numeran primero en el orden en el que aparecen en la lista de archivos de índice. Las etiquetas del archivo .cdx estructural (si existe) se numeran en el orden en que se crearon. Por último, se numeran las etiquetas de los archivos .cdx independientes en el orden en que se crearon. Vea SET ORDER para obtener más información acerca de la numeración de archivos y etiquetas de índice.

Si nIndexNumber es 0, los registros de la tabla se muestran y se tiene acceso a ellos en su orden físico, pero los archivos de índice permanecen abiertos. ORDER 0 le permite actualizar los archivos de índice abiertos mientras tiene acceso a los registros en su orden físico. ORDER sin argumentos adicionales es idéntico a ORDER 0.

Visual FoxPro generará un mensaje de error si nIndexNumber es mayor que el número de archivos .idx y de etiquetas de archivo .cdx.

ORDER IDXIndexFileName
Especifica un archivo .idx como archivo de índice de control.
ORDER [TAG] TagName [OF CDXFileName]
Especifica una etiqueta (TagName) de un archivo .cdx para que sea la etiqueta de control. El nombre de la etiqueta puede proceder del archivo estructural .cdx o de cualquier archivo .cdx independiente abierto.

Si existen varias etiquetas con el mismo nombre en archivos .cdx independientes abiertos, use OF CDXFileName para especificar el archivo .cdx en el que está la etiqueta.

ASCENDING | DESCENDING
Especifica si los registros de la tabla se muestran y se tiene acceso a ellos en orden ascendente o descendente. Los archivos o etiquetas de índice no se modificarán; únicamente cambiará el orden en el que se muestran y se tiene acceso a los registros. Incluya la cláusula ASCENDING o DESCENDING inmediatamente después de la cláusula ORDER.
ADDITIVE
Especifica que los archivos de índice abiertos con anterioridad, excepto un índice compuesto estructural, se dejen abiertos al ejecutar SET INDEX para abrir uno o varios archivos de índice adicionales para una tabla. Sin ADDITIVE, los archivos abiertos con anterioridad se cierran.

Observaciones

Se pueden mostrar los registros de una tabla que tiene uno o varios archivos de índice abiertos, y tener acceso a ellos, en un orden determinado por uno de los archivos de índice. SET INDEX puede abrir archivos de índice tanto sencillos (.idx) como compuestos (.cdx). Si una tabla tiene un archivo .cdx estructural, el archivo se abrirá automáticamente al abrir la tabla.

Un solo archivo .idx (el archivo de índice de control) o una etiqueta de un archivo .cdx (la etiqueta de control) controlan el orden en que se muestran o se tiene acceso a los registros de la tabla. Ciertos comandos (SEEK, por ejemplo) utilizan el archivo o la etiqueta de índice de control para buscar registros.

Si ejecuta SET INDEX TO sin ningún argumento adicional, se cerrarán todos los archivos de índice abiertos (excepto el archivo .cdx estructural) del área de trabajo actual.

Vea también

CLOSE INDEXES | INDEX | SET ORDER | USE


SET KEY (Comando)

Especifica el acceso a un intervalo de registros a partir de sus claves de índice.

SET KEY TO [eExpression1 | RANGE eExpression2 [, eExpression3]] [IN cTableAlias | nWorkArea]

Parámetros

eExpression1
Permite el acceso a un conjunto de registros con claves de índice idénticas. eExpression1 es un valor de clave de índice simple. Puede tener acceso a todos los registros que tengan claves de índice que coincidan con eExpression1.
RANGE eExpression2 [, eExpression3]
Permite el acceso a un conjunto de registros cuyas claves de índice están incluidas en un intervalo de valores de claves de índice. eExpression2 permite el acceso a los registros cuya clave de índice es igual o mayor que eExpression2. eExpression3 (precedida por una coma) permite el acceso a los registros con claves de índice iguales o mayores que eExpression3. La inclusión de ambas, eExpression2 y eExpression3 (separadas por una coma), permite el acceso a los registros cuyas claves de índice sean iguales o mayores que eExpression2, e iguales o menores que eExpression3.

Por ejemplo, la tabla CLIENTE incluye un campo de caracteres que contiene códigos postales. Si la tabla está indizada por el campo de código postal, puede especificar un intervalo de códigos postales con SET KEY.

En este ejemplo, solamente aparecerán en la ventana Examinar los registros cuyos códigos postales estén en el intervalo de 40000 a 43999:

CLOSE DATABASES
USE customer
SET ORDER TO postalcode
SET KEY TO RANGE '40000', '43999'
BROWSE
IN cTableAlias | nWorkArea
Permite tener acceso a un intervalo de registros para una tabla abierta en un área de trabajo específica. cTableAlias especifica el alias del área de trabajo y nWorkArea especifica el número del área de trabajo. Si ninguna tabla tiene el alias especificado, Visual FoxPro mostrará un mensaje de error. Si omite el número y el alias del área de trabajo, SET KEY funcionará en la tabla del área de trabajo seleccionada actualmente.

Observaciones

Use SET KEY para limitar el intervalo de registros a los que puede tener acceso en una tabla. Es necesario que la tabla esté indizada, y que el valor o los valores de clave de índice incluidos sean del mismo tipo de datos que la expresión de índice del archivo de índice principal o que la etiqueta principal.

Ejecute SET KEY TO sin ningún argumento adicional para restaurar el acceso a todos los registros de la tabla.

Vea también

INDEX | KEY( ) | SET FILTER


SET KEYCOMP (Comando)

Controla el desplazamiento con teclas en Visual FoxPro.

SET KEYCOMP TO DOS | WINDOWS

Observaciones

SET KEYCOMP determina las pulsaciones de teclas y las combinaciones de pulsaciones de teclas que se utilizan para desplazarse por la interfaz de Visual FoxPro a través del acceso a controles, como botones, cuadros de lista, menús, etc. El efecto de SET KEYCOMP depende del control.

Use SET KEYCOMP cuando desee utilizar pulsaciones de teclas conocidas.

Para desplazarse en Microsoft Windows utilizando las pulsaciones de teclas de MS-DOS, ejecute:

SET KEYCOMP TO DOS

Puede especificar la opción DOS o WINDOWS (predeterminada).

Puede especificar un valor inicial de SET KEYCOMP en el archivo de configuración de Visual FoxPro, config.fpw. Por ejemplo, incluir la siguiente línea en el archivo de configuración produce el mismo efecto que SET KEYCOMP TO DOS:

KEYCOMP = DOS

Esta sección describe la forma en que las opciones DOS y WINDOWS influyen en Visual FoxPro.

Botones predeterminados |
DOS | El botón predeterminado de un cuadro de diálogo es el que tiene el enfoque; su apariencia es siempre la misma. Se elige presionando CTRL+ENTRAR.
WINDOWS | El botón predeterminado de un cuadro de diálogo puede cambiar a medida que se mueve entre los controles. Puede estar atenuado o tener el enfoque (está rodeado por un borde en negrita) para indicar que es el valor predeterminado actual. Se elige presionando ENTRAR. Al presionar ENTRAR siempre se realiza la acción del botón predeterminado.

Para ver una demostración de cómo cambia el aspecto del botón predeterminado en un cuadro de diálogo, ejecute SET KEYCOMP TO WINDOWS, escoja Abrir en el menú Archivo y presione TAB para ir al cuadro de diálogo Abrir.

Teclas de acceso |
DOS | La tecla de acceso para un control siempre es una sola tecla. Si no está en un control que tenga control por teclado (un cuadro combinado o de lista), puede elegirlo presionando la tecla de acceso.
WINDOWS | Una tecla de acceso para un control puede ser una sola tecla o una combinación de teclas. Si el control actual tiene control por teclado (un cuadro combinado o de lista), puede presionar ALT y la tecla de acceso para elegir el control. Para elegir otros controles, puede presionar la tecla de acceso, o ALT y la tecla de acceso.
Cuadros combinados |
DOS | Cuando un cuadro combinado tiene el enfoque, puede abrirlo presionando ENTRAR o la BARRA ESPACIADORA. El control por teclado en un cuadro combinado no está disponible hasta que no se abra el cuadro combinado.
WINDOWS | Cuando un cuadro combinado tiene el enfoque, puede abrirlo presionando la BARRA ESPACIADORA, ALT+FLECHA ARRIBA o ALT+FLECHA ABAJO. El control por teclado en un cuadro combinado está disponible cuando dicho cuadro combinado tiene el enfoque y cuando está abierto. Por ejemplo, un cuadro combinado seleccionado contiene una lista de unidades disponibles. Si las unidades A, B y C están disponibles y la unidad B se muestra actualmente, puede elegir la unidad C sin abrir el cuadro combinado presionando C o la tecla FLECHA ABAJO. La unidad C se elige y se avanza hasta el control siguiente.
Botones de opción |
DOS | Al presionar la tecla TAB cuando hay un grupo de botones de opción seleccionado, se moverá entre los botones de opción.
WINDOWS | Si presiona la tecla TAB cuando un grupo de botones de opción está seleccionado, se moverá de los botones de opción al control siguiente. Para moverse entre los botones de un conjunto de botones de opción, presione las teclas FLECHA ARRIBA y FLECHA ABAJO.
Ventana Examinar |
DOS | Un campo no se selecciona al entrar en él.
WINDOWS | Un campo se selecciona automáticamente al entrar en él.

Vea también

SET COMPATIBLE | Automatización de tareas de pulsación de teclas con macros


SET LIBRARY (Comando)

Abre un archivo de biblioteca API (interfaz de programación de aplicaciones) externa.

SET LIBRARY TO [FileName [ADDITIVE]]

Parámetros

FileName
Especifica el nombre del archivo de la biblioteca API o del archivo de procedimiento que desee abrir.

Visual FoxPro supone una extensión .fll para las bibliotecas. Si una biblioteca tiene la extensión .fll, no necesita incluir la extensión con el nombre del archivo. Si una biblioteca tiene una extensión distinta de .fll, debe incluir la extensión con el nombre del archivo.

Precaución Cuando utilice SET LIBRARY, no olvide que:
  • No puede usar bibliotecas de API creadas para una plataforma en otra plataforma. Por ejemplo, las bibliotecas creadas para FoxPro para MS-DOS no pueden usarse en Visual FoxPro; las bibliotecas creadas para Visual FoxPro no pueden usarse en FoxPro para MS-DOS.
  • No puede usar bibliotecas de API creadas para una versión en otra versión. Por ejemplo, no puede usar bibliotecas creadas para FoxPro versión 2.6 en Visual FoxPro. Es necesario volver a compilar y vincular.

Visual FoxPro supone que los archivos de procedimiento tienen la extensión .prg.

Cuando ejecute un procedimiento con DO ProcedureName, Visual FoxPro buscará el procedimiento en los siguientes archivos y por este orden:

  • El archivo que contiene DO ProcedureName.
  • Un archivo de procedimiento abierto con SET PROCEDURE (si hay alguno definido).
  • Los programas de la cadena de ejecución. Visual FoxPro busca en los archivos de programa comenzando por el programa ejecutado más recientemente y continuando hacia atrás hasta llegar al primer programa ejecutado.
  • Un archivo de procedimiento abierto con SET LIBRARY (si hay alguno definido).
  • Un archivo de programa independiente. Si Visual FoxPro encuentra un archivo de programa con el mismo nombre que el archivo especificado con DO, ejecutará este programa. Si no encuentra ningún nombre de archivo de programa que coincida, Visual FoxPro mostrará un mensaje de error.
ADDITIVE
Abre bibliotecas API adicionales. Incluya ADDITIVE después del nombre de archivo en comandos SET LIBRARY sucesivos.

Visual FoxPro pasa por alto ADDITIVE cuando se utiliza SET LIBRARY para abrir un archivo de procedimiento.

Observaciones

Utilice SET LIBRARY para abrir bibliotecas externas de Interfaz de programación de aplicaciones (API) o un archivo de procedimiento.

Las bibliotecas de rutinas API amplían las posibilidades del lenguaje Visual FoxPro y la interfaz de usuario. Una vez que se abre una biblioteca de rutinas API externas, puede utilizar las funciones API como si fueran funciones de Visual FoxPro. Use DISPLAY STATUS o LIST STATUS para mostrar las funciones disponibles en la biblioteca.

Puede utilizar las bibliotecas API existentes o crear las suyas propias.

En Visual FoxPro, el procedimiento más recomendable para registrar funciones en bibliotecas compartidas es utilizar el comando DECLARE - DLL.

Para eliminar de la memoria todas las bibliotecas API, use SET LIBRARY TO sin incluir FileName ni ADDITIVE. Para eliminar una sola biblioteca de la memoria, use RELEASE LIBRARY LibraryName.

Si especifica un archivo de procedimiento, los procedimientos incluidos en ese archivo estarán disponibles para todos los programas, y también lo estarán de forma interactiva a través de la ventana Comandos.

Nota La capacidad de Visual FoxPro para abrir un archivo de procedimientos con SET LIBRARY proporciona compatibilidad con dBASE IV. El uso de SET LIBRARY para abrir un archivo de procedimiento cerrará todas las bibliotecas API abiertas. Al utilizar SET LIBRARY para abrir bibliotecas API se cerrará un archivo de procedimiento abierto con SET LIBRARY. Use SET PROCEDURE para abrir un archivo de procedimiento y evitar que se cierren las bibliotecas API.

Para obtener más información acerca de los archivos de procedimiento, vea PROCEDURE y SET PROCEDURE.

Vea también

CALL | DISPLAY STATUS | LIST | LOAD | RELEASE LIBRARY (Comando)


SET LOCK (Comando)

Activa o desactiva el bloqueo automático de archivos con ciertos comandos.

SET LOCK ON | OFF

Parámetros

ON
Especifica que los comandos antes indicados bloquean automáticamente la tabla cuando se ejecutan. De esta forma se proporciona acceso de sólo lectura a otros usuarios de la red y se garantiza el uso de los datos más actuales.
OFF
(Predeterminado) Permite el acceso compartido a tablas con los comandos que se indican a continuación. Use SET LOCK OFF si no necesita la información más actualizada de una tabla.

Observaciones

Visual FoxPro no bloqueará un archivo cuando ejecute comandos que necesiten acceso de sólo lectura a la tabla. Entre estos comandos se incluyen los siguientes:

Comandos |
AVERAGE | JOIN (ambos archivos)
CALCULATE | LIST
COPY TO | LABEL
COPY TO ARRAY | REPORT
COUNT | SORT
DISPLAY (con alcance) | SUM
INDEX | TOTAL

Al ejecutarse, estos comandos no cambian el contenido de una tabla y el acceso a la tabla está disponible para otros usuarios de la red. Es decir, se puede cambiar la tabla mientras se ejecuta uno de estos comandos. Por ejemplo, puede comenzar a imprimir un informe utilizando REPORT antes de que otro usuario cambie un registro incluido en el informe. Su informe contendrá información obsoleta.

SET LOCK tiene como alcance la sesión actual de datos.

Vea también

FLOCK( ) | LOCK( ) | RLOCK( ) | SET DATASESSION | SET MULTILOCKS


SET LOGERRORS (Comando)

Determina si Visual FoxPro envía o no los mensajes de error de compilación a un archivo de texto.

SET LOGERRORS ON | OFF

Parámetros

ON
(Predeterminado) Especifica que se desea crear un archivo de registro de mensajes de error de compilación con el mismo nombre que el programa compilado y la extensión .err. Si ya existe un archivo de registro con el mismo nombre, se sobrescribirá.
OFF
Especifica que no se desea crear ningún archivo de registro de mensajes de error de compilación durante la compilación de un programa.

Observaciones

Use SET LOGERRORS para guardar los mensajes de error de compilación en un archivo de texto cuando se compilen los programas.

Si existe un archivo de registro con el mismo nombre que el programa compilado y el programa se compila sin errores, el archivo de registro se eliminará.

Vea también

COMPILE | SYS(2018) - Parámetro de mensaje de error | SET CPDIALOG (Comando)


SET MACKEY (Comando)

Especifica una tecla o una combinación de teclas que muestra el cuadro de diálogo Definición de tecla de macro.

SET MACKEY TO [KeyLabelName]

Parámetros

KeyLabelName
Especifica la tecla o la combinación de teclas que muestran el cuadro de diálogo Definición de tecla de macro. En ON KEY LABEL verá las etiquetas de tecla que debe utilizar.

Observaciones

Utilice SET MACKEY para cambiar la combinación de teclas predeterminada que sirve para mostrar el cuadro de diálogo Definición de tecla de macro. Elija Macros en el menú Herramientas para abrir este cuadro de diálogo.

Vea también

CLEAR | ON KEY LABEL | PLAY MACRO | RESTORE MACROS | SAVE MACROS


SET MARGIN (Comando)

Establece el margen izquierdo de la impresora y afecta a todas las salidas dirigidas a la impresora.

SET MARGIN TO nColumns

Parámetros

nColumns
Especifica el margen izquierdo en columnas. El valor predeterminado es 0 columnas; el máximo es 256.

Observaciones

Si utiliza SET MARGIN para ajustar el margen izquierdo, el valor especificado con SET MARGIN se almacenará en la variable del sistema _PLOFFSET. También puede establecer el margen izquierdo almacenando un valor directamente en _PLOFFSET.

El valor de la variable del sistema _LMARGIN también afecta a la configuración del margen izquierdo.

Nota El valor del margen izquierdo especificado en SET MARGIN no afecta a los informes creados con el Diseñador de informes y ejecutados con REPORT. A pesar de que _PLOFFSET se ajusta durante la ejecución de un informe creado con el Diseñador de informes, se restablece a su valor original después de que se ejecuta el informe. La configuración “Margen izquierdo” del cuadro de diálogo Configurar página del Diseñador de informes determina el desplazamiento desde el borde izquierdo del papel. Elija Configurar página en el menú Archivo para mostrar el cuadro de diálogo Configurar página cuando se abra el Diseñador de informes.

Vea también

_LMARGIN | _PLOFFSET | _RMARGIN


SET MARK OF (Comando)

Especifica un carácter de marca para los títulos o los elementos de menús, o muestra o quita el carácter de marca.

SET MARK OF MENU MenuBarName1
TO lExpression1-or-SET MARK OF POPUP MenuName1
TO lExpression3-or-SET MARK OF BAR nMenuItemNumber OF MenuName2
TO lExpression4

Parámetros

MENU MenuBarName1
Especifica el nombre de la barra de menús cuyo carácter de marca se especifica, se muestra o se borra.
  • TO lExpression1 Muestra o borra el carácter de marca para todos los títulos de menús de la barra de menús. Si la expresión lógica lExpression1 se evalúa como verdadero (.T.), el carácter de marca se mostrará junto a cada título de menú. El carácter de marca se borra de todos los nombres de menú si lExpression1 se evalúa como falso (.F.).
POPUP MenuName1
Especifica el nombre del menú cuyo carácter de marca se especifica, se muestra o se borra.
  • TO lExpression3 muestra o borra los caracteres de marca para todos los elementos de menú. Si lExpression3 se evalúa como verdadero (.T.), los caracteres de marca se mostrarán. Si lExpression3 se evalúa como falso (.F.), los caracteres de marca se borrarán.
BAR nMenuItemNumber OF MenuName2
Especifica el número del elemento de menú (y el nombre del menú que lo contiene) cuyo carácter de marca se especifica, se muestra o se borra.
  • TO lExpression4 muestra o borra el carácter de marca para el elemento de menú. Si lExpression4 se evalúa como verdadero (.T.), el carácter de marca se mostrará. Si lExpression4 se evalúa como falso (.F.), el carácter de marca se borrará.

Observaciones

No puede especificar un carácter de marca distinto para un título o un elemento de menú. El carácter de marca siempre es una marca de verificación. Sin embargo, puede utilizar SET MARK OF para mostrar o eliminar la marca de verificación de un título o de un elemento de menú.

No puede marcar elementos de menú creados con ninguna de las cláusulas de DEFINE POPUP PROMPT (FIELD, FILES ni STRUCTURE).

Use MRKPAD( ) para determinar si un título de menú muestra un carácter de marca y MRKBAR( ) para determinar si un elemento de menú muestra un carácter de marca.

Para ver un ejemplo del uso de SET MARK OF, vea CNTBAR( ).

Vea también

CNTBAR( ) | CNTPAD( ) | DEFINE BAR | DEFINE MENU | DEFINE PAD | DEFINE POPUP | MRKBAR( ) | MRKPAD( )


SET MARK TO (Comando)

Especifica un delimitador que se usará para mostrar expresiones de fecha.

SET MARK TO [cDelimiter]

Parámetros

cDelimiter
Especifica el carácter que desea utilizar como delimitador de fecha.

Observaciones

SET MARK TO especifica el carácter que separa el mes, el día y el año de las fechas que se muestran.

Utilice SET MARK TO sin cDelimiter para restablecer el delimitador en la barra diagonal ( / ) predeterminada.

SET MARK TO tiene como alcance la sesión actual de datos.

Vea también

SET DATASESSION | SET DATE | SET SYSFORMATS


SET MEMOWIDTH (Comando)

Especifica el ancho de los campos memo y las expresiones de tipo carácter.

SET MEMOWIDTH TO nColumns

Parámetros

nColumns
Especifica un ancho entre 8 y 8192 columnas. El ancho predeterminado para los resultados es de 50 columnas. Si ejecuta SET COMPATIBLE ON o SET COMPATIBLE DB4, el ancho predeterminado se convertirá en 80 columnas. Si especifica un valor para nColumns mayor que 8192, el ancho se establecerá en 8192.

Observaciones

SET MEMOWIDTH especifica el ancho del resultado enviado a la ventana principal de Microsoft Visual FoxPro o a una ventana definida por el usuario con comandos como ? | ??, DISPLAY o LIST. Afecta al ancho de los resultados de los campos memo y las expresiones de tipo carácter que tienen más de 254 caracteres. También afecta a los valores devueltos por las funciones ATCLINE( ), ATLINE( ), MEMLINE( ) y MLINE( ).

Observe que para ? y ?? el ancho mostrado no superará los 256 caracteres.

Si se dirigen los resultados a la ventana principal de Visual FoxPro, el ancho de los resultados será el determinado por la fuente de la ventana principal de Visual FoxPro. Si se dirigen los resultados a una ventana definida por el usuario, el ancho de los resultados será el determinado por la fuente de dicha ventana.

SET MEMOWIDTH tiene como alcance la sesión actual de datos.

Vea también

ATCLINE( ) | ATLINE( ) | MEMLINES( ) | MLINE( ) | SET DATASESSION


SET MESSAGE (Comando)

Define un mensaje para mostrarlo en la ventana principal de Visual FoxPro o en la barra gráfica de estado, o especifica la posición de los mensajes en las barras y comandos de menús definidos por el usuario.

SET MESSAGE TO [cMessageText]-or-SET MESSAGE TO [nRow [LEFT | CENTER | RIGHT]]-or-SET MESSAGE WINDOW [WindowName]

Parámetros

TO [cMessageText]
Especifica el mensaje que se va a mostrar.
TO [nRow [LEFT | CENTER | RIGHT]]
Especifica la colocación de los mensajes en la ventana principal de Visual FoxPro. nRow especifica la fila en la que se muestran los mensajes. Si nRow es 0, no se mostrará ningún mensaje.

LEFT, CENTER y RIGHT especifican la colocación horizontal de los mensajes en la pantalla.

En Visual FoxPro, la ubicación de mensaje especificada con SET MESSAGE se pasa por alto cuando se muestra la barra gráfica de estado.

WINDOW [WindowName]
Especifica la ventana en la que se muestran los mensajes. Para quitar un mensaje de la ventana y mostrarlo en la pantalla, ejecute SET MESSAGE WINDOW.

Observaciones

SET MESSAGE le permite crear un mensaje. También le permite especificar dónde mostrar los mensajes creados con DEFINE BAR, DEFINE MENU, DEFINE PAD o DEFINE POPUP.

De forma predeterminada, los mensajes se colocan en la última línea de la ventana principal de Visual FoxPro si se muestra la barra de estado basada en caracteres. Si se muestra la barra gráfica de estado, los mensajes se colocan en la barra de estado.

La línea SET MESSAGE se restablece en la última línea de la ventana principal de Visual FoxPro siempre que se ejecuta SET DISPLAY.

SET MESSAGE TO sin ningún argumento coloca los mensajes en la barra gráfica de estado.

Vea también

SET DISPLAY | SET STATUS | SET STATUS BAR


SET MULTILOCKS (Comando)

Determina si puede bloquear múltiples registros con LOCK( ) o RLOCK( ).

SET MULTILOCKS ON | OFF

Parámetros

ON
Le permite intentar bloquear un conjunto de registros. Para intentar bloquear varios registros, incluya una serie de números de registro en LOCK( ) o RLOCK( )..
OFF
(Predeterminado) Le permite intentar bloquear un registro único con LOCK( ) o RLOCK( ).

Observaciones

Cuando se abre una tabla para uso compartido en una red, puede intentar bloquear más de un registro de un archivo de tabla. La configuración de SET MULTILOCKS determina si puede intentar bloquear un registro único o un conjunto de registros. Los registros pueden bloquearse con la función LOCK( ) o RLOCK( ).

Nota Al conmutar SET MULTILOCKS de ON a OFF o de OFF a ON, se ejecuta implícitamente UNLOCK ALL; es decir, se liberan todos los registros bloqueados de todas las áreas de trabajo.

SET MULTILOCKS alcanza la sesión de datos actual.

Es necesario que MULTILOCKS esté en ON antes de activar el almacenamiento de filas o de tablas en búfer con CURSORSETPROP( ). Para obtener más información acerca del almacenamiento de filas y tablas en búfer, vea CURSORSETPROP( ).

Si activa la casilla de verificación Activar almacenamiento de datos en búfer en el cuadro de diálogo Propiedades del área de trabajo (que aparece al elegir el botón Propiedades en la ventana Sesión de datos), MULTILOCKS se establecerá automáticamente en ON para la sesión de datos actual. Sin embargo, el hecho de desactivar la casilla de verificación Activar almacenamiento de datos en búfer no establece MULTILOCKS en OFF para la sesión de datos actual.

Para obtener más información acerca del bloqueo de registros y archivos, así como del uso compartido de tablas en red, vea las funciones LOCK( ) y RLOCK( ), y Programar para acceso compartido.

Vea también

CURSORSETPROP( ) | LOCK( ) | RLOCK( ) | SET DATASESSION


SET NEAR (Comando)

Determina dónde se coloca el puntero de registro después de que FIND o SEEK busquen un registro y no lo encuentren.

SET NEAR ON | OFF

Parámetros

ON
Coloca el puntero de registro en el registro más parecido en caso de que una búsqueda de registro con FIND o SEEK no tenga éxito. Con esta configuración, RECNO( ) devuelve el número del registro con la coincidencia más cercana, FOUND( ) devuelve falso (.F.) y EOF( ) devuelve falso (.F.).
OFF
(Predeterminado) Coloca el puntero de registro al final de la tabla, en caso de que una búsqueda de registro mediante FIND o SEEK no tenga éxito. Con esta configuración, RECNO( ) devuelve el número de registros de la tabla más 1, FOUND( ) devuelve falso (.F.) y EOF( ) devuelve verdadero (.T.).

Observaciones

Una búsqueda fracasa cuando ningún registro cumple con el criterio de búsqueda.

Ejecutar RECNO( ) con un argumento de 0 devuelve el número del registro más parecido en caso de que la búsqueda fracase, sin tener en cuenta la configuración de SET NEAR.

SET NEAR tiene como alcance la sesión actual de datos.

Vea también

EOF( ) | FIND | FOUND( ) | RECNO( ) | SEEK | SET DATASESSION


SET NOCPTRANS (Comando)

Impide la conversión a otra página de códigos distinta para los campos seleccionados de una tabla abierta.

SET NOCPTRANS TO [FieldName1 [, FieldName2 ...]]

Parámetros

TO [FieldName1 [, FieldName2 ...]]
Especifica los campos que no se deberían convertir a otra página de códigos.

Ejecute SET NOCPTRANS TO sin ningún conjunto de campos para volver a la conversión predeterminada (establecida por el elemento de configuración CODEPAGE) para todos los campos de tipo carácter y memo de una tabla. Use SET("NOCPTRANS") para devolver los campos especificados en el último comando SET NOCPTRANS ejecutado. Use la función CHR( ) para asegurarse de que determinados caracteres no se convierten.

Observaciones

Puesto que puede configurar Microsoft Visual FoxPro para que convierta automáticamente los campos de tipo carácter y memo a otras páginas de códigos, el comando SET NOCPTRANS está disponible para impedir la conversión automática de campos que contengan datos binarios. Por ejemplo, un campo memo puede contener un documento de Microsoft Word. Al obtener acceso al documento de Word, sería conveniente que estuviera en el formato original no convertido. Utilice SET NOCPTRANS para especificar que el campo memo no se convierta.

No necesita utilizar SET NOCPTRANS para tener acceso a datos binarios si el campo memo o de carácteres que contiene los datos binarios no se ha convertido. Puede asegurarse de que los campos memo o de carácteres no se convierten, omitiendo el elemento de configuración CODEPAGE del archivo de configuración de Visual FoxPro.

Para obtener más información acerca de las páginas de códigos y el soporte internacional de Visual FoxPro, vea Páginas de códigos compatibles con Visual FoxPro en Desarrollar aplicaciones internacionales.

Vea también

CPCONVERT( ) | CPCURRENT( ) | CPDBF( ) | MODIFY COMMAND | MODIFY FILE


SET NOTIFY (Comando)

Activa o desactiva la presentación de algunos mensajes del. Los siguientes son ejemplos de mensajes de sistema afectados por SET NOTIFY:

  • "La expresión es válida" en el cuadro de diálogo Generador de expresiones
    • .
  • "Do Cancelado", que aparece cuando se cancela la ejecución del programa
    • .
SET NOTIFY [CURSOR] ON | OFF

Parámetros

CURSOR
Especifica si los mensajes relacionados con datos deben aparecer en la barra de estado.
ON
(Predeterminado) Activa la presentación de determinados mensajes del sistema.
OFF
Desactiva la presentación de determinados mensajes del sistema.

Observaciones

Los mensajes del sistema se muestran en la barra gráfica de estado (no en la basada en caracteres), ubicada en la parte inferior de la ventana principal de Visual FoxPro.

Cuando SET NOTIFY CURSOR se establece a OFF, Visual FoxPro no muestra en la barra de estado todos los mensajes relacionados con datos. Estos mensajes incluyen alias, origen de datos, puntero de registro, número de registros y estado exclusivo y registro bloqueado.

La configuración de SET NOTIFY CURSOR no afecta SET NOTIFY.

Puede utilizar la función SET("NOTIFY",1) par devolver el valor actual de SET NOTIFY CURSOR.

Vea también

SET MESSAGE | SET( ) (Función) | WAIT | UIEnable (Evento)


SET NULL (Comando)

Determina si los comandos ALTER TABLE, CREATE TABLE and INSERT - SQL admiten valores NULL .

SET NULL ON | OFF

Parámetros

ON
Especifica que todas las columnas de una tabla creadas con ALTER TABLE y CREATE TABLE permiten valores NULL. Es posible anular el soporte para valores NULL para columnas de la tabla incluyendo la cláusula NOT NULL en las definiciones de columnas.

Además, especifica que INSERT - SQL intentará insertar valores NULL en cualquier columna que no esté incluida en la cláusula INSERT - SQL VALUE. INSERT - SQL sólo podrá insertar correctamente valores NULL en columnas que admitan valores NULL.

Nota Si agrega soporte para valores NULL en una o varias columnas de una tabla, el límite de número de columnas para dicha tabla disminuirá de 255 a 254.
OFF
(Predeterminado) Especifica que todas las columnas de una tabla creada con ALTER TABLE y CREATE TABLE no admiten valores NULL. Es posible designar soporte de valores NULL para columnas en ALTER TABLE y CREATE TABLE incluyendo la cláusula NULL en las definiciones de columnas.

Asimismo, especifica que INSERT - SQL insertará valores en blanco en las columnas no incluidas en la cláusula INSERT - SQL VALUE.

Observaciones

SET NULL sólo afecta al soporte para valores NULL de ALTER TABLE, CREATE TABLE e INSERT - SQL. Otros comandos no se ven afectados por SET NULL. SET NULL tiene como alcance la sesión actual de datos.

Ejemplo

El ejemplo siguiente muestra cómo afecta SET NULL al soporte de valores NULL. La primera tabla, employee, se crea con SET NULL ON, por lo que sus campos aceptan valores NULL. Se usa REPLACE para situar un valor NULL en el campo cLastName. La segunda tabla, staff, se crea con SET NULL OFF, por lo que sus campos no aceptan valores NULL. Se usa REPLACE para colocar cero en el campo cLastName.

CLOSE DATABASES
SET NULL ON        && Los campos admitirán valores nulos
CREATE TABLE employee (cLastName C(20), ySalary Y(12,2))
APPEND BLANK       && Agrega un nuevo registro en blanco
REPLACE cLastName WITH .NULL.  && cLastName admite valores nulos
SET NULL OFF       && Los campos no admitirán valores nulos
CREATE TABLE staff (cLastName C(20), ySalary Y(12,2))
APPEND BLANK       && agrega un nuevo registro en blanco
REPLACE cLastName WITH 0   && No admite valores nulos

Vea también

ALTER TABLE | CREATE TABLE | INSERT - SQL | ISNULL( ) | NVL( ) | SET DATASESSION


SET NULLDISPLAY (Comando)

Especifica el texto que aparecerá para valores NULL.

SET NULLDISPLAY TO [cNullText]

Parámetros

cNullText
Especifica el texto que aparecerá en pantalla para valores nulos. Si se omite cNullText, se restaurará y se mostrará el texto predeterminado .NULL. para los valores NULL.

Observaciones

De forma predeterminada, Visual FoxPro mostrará .NULL. para valores NULL en objetos, ventanas Examinar, resultados DISPLAY, resultados LIST, etc. Utilice SET NULLDISPLAY para cambiar el texto predeterminado de valor NULL por una cadena de carácteres distinta. SET NULLDISPLAY cambia el texto predeterminado de valores NULL para todos los objetos para los que la propiedad NullDisplay es la cadena vacía.

Utilice la propiedad NullDisplay para cambiar el texto predeterminado de valor NULL por una cadena de carácteres distinta para un objeto individual.

Vea también

CREATE TABLE - SQL, | SQL NullDisplay (Propiedad) | SET NULL (Comando)


SET ODOMETER (Comando)

Determina el intervalo de informe del contador de registros en los comandos que procesan registros.

SET ODOMETER TO [nRecords]

Parámetros

TO [nRecords]
Especifica el intervalo de informe en número de registros. El valor de nRecords puede variar de 1 a 32.767 registros. El valor predeterminado es 100 registros.

Observaciones

Utilice SET ODOMETER para cambiar el intervalo en el cual los comandos muestran información del número de registros procesados.

Por ejemplo, COPY TO muestra el número de registros que se están copiando a un archivo nuevo mientras se ejecuta el comando. El contador de registros puede desactivarse ejecutando SET TALK OFF.

Vea también

SET TALK | _TALLY | COPY TO


SET OLEOBJECT (Comando)

Especifica si Visual FoxPro busca en el Registro de OLE cuando no se puede encontrar un objeto.

SET OLEOBJECT ON | OFF

Parámetros

ON
(Predeterminado) Especifica que Visual FoxPro busca en el Registro cuando no se puede encontrar un objeto.
OFF
Especifica que Visual FoxPro no busca en el Registro cuando no se puede encontrar un objeto.

Observaciones

Cuando se crea un objeto con CREATEOBJECT( ) o GETOBJECT( ), Visual FoxPro busca el objeto en las siguientes ubicaciones y en este orden:

  1. Las clases básicas de Visual FoxPro.
  2. Las definiciones de clases en memoria, en el orden en que se cargan.
  3. Las definiciones de clases en el programa actual.
  4. Las definiciones de clases en las bibliotecas de clase .vcx abiertas con SET CLASSLIB.
  5. Las definiciones de clases en archivos de procedimiento abiertos con SET PROCEDURE.
  6. Definiciones de clase en la cadena de ejecución del programa Visual FoxPro (para obtener más información, vea DO (Comando)).
  7. El Registro.

Cuando Visual FoxPro busca un objeto, se busca en el Registro en último lugar. Visual FoxPro carga el soporte OLE antes de buscar en el Registro, lo que aumenta la cantidad de memoria necesaria para Visual FoxPro y reduce la memoria disponible para otras aplicaciones.

Si está desarrollando una aplicación que no necesita soporte COM, ejecute SET OLEOBJECT OFF para impedir que Visual FoxPro busque en el Registro cuando no se encuentre un objeto.

SET OLEOBJECT no afecta a los objetos COM de los campos Forms o General. Visual FoxPro siempre carga el soporte COM cuando se abre un Form que contiene un objeto COM para modificarlo o instanciarlo, o cuando se abre una tabla con un campo general.

Puesto que GETOBJECT( ) activa un objeto COM, Visual FoxPro genera un error cuando se ejecuta GETOBJECT( ) y SET OLEOBJECT está en OFF.

Vea también

CREATEOBJECT( ) | GETOBJECT( ) | DO (Comando)


SET OPTIMIZE (Comando)

Activa o desactiva la optimización de consultas Rushmore.

SET OPTIMIZE ON | OFF

Parámetros

ON
(Predeterminado) Activa la optimización Rushmore.
OFF
Desactiva la optimización Rushmore.

Observaciones

Visual FoxPro utiliza una tecnología llamada optimización de consultas Rushmore (Rushmore Query Optimization) para optimizar la recuperación de datos. Los comandos de tabla que admiten una cláusula FOR utilizan la tecnología Rushmore para mejorar su rendimiento. Cuando se ejecuta un comando que es optimizable, Rushmore determina los registros que coinciden con el criterio FOR. El comando se ejecuta en los registros de la tabla que coinciden con el conjunto de registros Rushmore.

En raras ocasiones, es conveniente desactivar la optimización Rushmore. Si un comando que se beneficia de la optimización Rushmore modifica las claves de índice de una consulta, el conjunto de registros Rushmore puede quedar obsoleto. Puede desactivar la optimización Rushmore para garantizar que tiene la información más reciente en la tabla.

Puede utilizar SET OPTIMIZE para activar o desactivar globalmente la tecnología Rushmore. Todos los comandos que utilizan Rushmore tienen una cláusula NOOPTIMIZE que se puede incluir para desactivar la optimización Rushmore para el comando.

Para obtener más información, vea Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.

Estos son los comandos cuyo rendimiento se optimiza con Rushmore:

Comandos |
AVERAGE | INDEX
BLANK | LABEL
BROWSE | LIST
CALCULATE | LOCATE
CHANGE | RECALL
COPY TO | REPLACE
COPY TO ARRAY | REPLACE FROM ARRAY
COUNT | REPORT
DELETE | SCAN
DISPLAY | SORT
EDIT | SUM
EXPORT | TOTAL

Vea también

INDEX | SET ORDER | Utilizar optimización de consultas Rushmore para acelerar el acceso de datos


SET ORDER (Comando)

Designa un archivo o una etiqueta de índice de control para una tabla.

SET ORDER TO [nIndexNumber | IDXIndexFileName | [TAG] TagName
[OF CDXFileName] [IN nWorkArea | cTableAlias] [ASCENDING | DESCENDING]]

Parámetros

nIndexNumber
Especifica el número del archivo o la etiqueta de índice de control. nIndexNumber se refiere a los archivos de índice tal como aparecen en USE o en SET INDEX. Los archivos .idx abiertos se numeran primero en el orden en que aparecen en USE o SET INDEX. Las etiquetas en el archivo estructural .cdx (si existe) son entonces numeradas en el orden en el que han sido creadas. Finalmente, las etiquetas de cualquier archivo independiente .cdx abierto se numeran en el orden en el que han sido creadas.

El ejemplo siguiente ilustra cómo se numeran los distintos tipos de archivos y etiquetas de índice. (Los nombres de archivo son simplemente ilustrativos y no existen necesariamente.) Primero se abre una tabla llamada video.dbf con tres índices (title.idx, costs.cdx y rating.idx) en la primera área de trabajo con este comando:

USE video INDEX title.idx, costs.cdx, rating.idx IN 1

La tabla video tiene un archivo estructural de índice compuesto (video.cdx) con dos etiquetas, NUMBERSOLD y YEARSOLD. El archivo .cdx estructural se abre automáticamente al abrirse video.

Puesto que primero se numeran los archivos .idx, ejecute SET ORDER TO 1 para que title.idx sea el índice de control y SET ORDER TO 2 para que rating.idx sea el índice de control:

SET ORDER TO 1
Controlling index: C:\FOX30\TITLE.IDX
SET ORDER TO 2
Controlling index: C:\FOX30\RATING.IDX

Después se numeran las etiquetas de video.cdx:

SET ORDER TO 3
Controlling index: C:\FOX30\VIDEO.CDX  Tag: NUMBERSOLD
SET ORDER TO 4
Controlling index: C:\FOX30\VIDEO.CDX  Tag: YEARSOLD

Finalmente se numeran las etiquetas del archivo independiente, costs.cdx:

SET ORDER TO 5
Controlling index: C:\FOX30\COSTS.CDX  Tag: RENTALCOST
SET ORDER TO 6
Controlling index: C:\FOX30\COSTS.CDX  Tag: BUYCOST

nIndexNumber también puede ser 0. Si ejecuta SET ORDER TO 0, todos los archivos de índice permanecen abiertos y se actualizan cuando se agregan, eliminan o modifican registros. Sin embargo, los registros de la tabla se muestran y se obtiene acceso a ellos en el orden del número de registro, no en el orden indizado. Ejecutar SET ORDER TO sin argumentos adicionales es lo mismo que ejecutar SET ORDER TO 0.

Si nIndexNumber es mayor que el número de archivos .idx y etiquetas de archivos .cdx, Visual FoxPro generará un mensaje de error.

IDXIndexFileName
Especifica un archivo .idx como archivo de índice de control.
[TAG] TagName [OF CDXFileName]
Especifica una etiqueta de un archivo .cdx como la etiqueta de control. El nombre de etiqueta puede pertenecer a un archivo .cdx estructural o a cualquier archivo .cdx independiente abierto.

Si existen nombres de etiqueta idénticos en archivos .cdx independientes abiertos, use OF CDXFileName para especificar el archivo .cdx que contiene la etiqueta.

Nota El archivo .idx tiene prioridad si existen nombres de etiqueta y un archivo .idx duplicado.
IN nWorkArea | cTableAlias
Designa un archivo o una etiqueta de índice de control para una tabla abierta en un área de trabajo distinta del área de trabajo seleccionada actualmente. nWorkArea especifica el número del área de trabajo y cTableAlias especifica el alias para la tabla.
ASCENDING | DESCENDING
Muestra y permite tener acceso a los registros de la tabla en orden ascendente o descendente. Incluir ASCENDING o DESCENDING no cambia de ninguna forma el archivo o la etiqueta de índice.

Observaciones

Una tabla puede tener abiertos simultáneamente varios archivos de índice. No obstante, solamente un archivo de índice sencillo (.idx) (el archivo de índice de control) o una etiqueta de un archivo de índice compuesto (.cdx) (la etiqueta de control) determinan el orden en que se muestran o se obtiene acceso a los registros de una tabla. SET ORDER le permite designar el archivo o la etiqueta de control. Ciertos comandos (SEEK, por ejemplo) utilizan el archivo o la etiqueta de control de índice para buscar registros.

Puede abrir archivos de índice con una tabla si incluye la cláusula INDEX en USE. Si una tabla tiene un archivo .cdx compuesto estructural asociado, éste se abrirá automáticamente con la tabla. Después de que se abra la tabla, puede abrir o cerrar los archivos de índice de la tabla utilizando SET INDEX.

De forma predeterminada, SET ORDER designa el índice de control o la etiqueta de control para la tabla abierta en el área de trabajo seleccionada actualmente.

Vea también

INDEX | ORDER( ) | SET INDEX


SET PALETTE (Comando)

Especifica si se utiliza o no la paleta de colores predeterminada de Visual FoxPro.

SET PALETTE ON | OFF

Parámetros

ON
(Predeterminado) Restaura la paleta de colores predeterminada de Visual FoxPro.
OFF
Sustituye la paleta de colores predeterminada de Visual FoxPro por paletas de colores de gráficos .bmp y de objetos OLE.

Observaciones

Los gráficos .bmp y los objetos OLE pueden contener paletas de colores que determinan su apariencia cuando se muestran en la pantalla. La paleta de colores del primer gráfico u objeto mostrado se utiliza para todos los demás. Puesto que se emplea una sola paleta de colores para todos los gráficos y objetos, los colores de algunos de ellos pueden modificarse de manera inesperada.

La paleta de colores predeterminada de Visual FoxPro está diseñada para mejorar la apariencia de presentación de varios gráficos .bmp y objetos OLE.

Vea también

@ ... SAY | MODIFY GENERAL | SET COLOR TO (Comando)


SET PATH (Comando)

Especifica una ruta de acceso para buscar archivos.

SET PATH TO [Path]

Parámetros

TO [Path]
Especifica los directorios en los que desea que busque Visual FoxPro. Use comas o punto y coma para separar los directorios.
Nota Visual FoxPro no reconocerá correctamente un nombre de ruta de acceso si el nombre del disco o del directorio contiene un signo de admiración (!).

En todas las plataformas FoxPro, las funciones que devuelven información acerca de las rutas de acceso, como CURDIR( ), DBF( ) y SYS(2003), utilizan convenciones de denominación de rutas de acceso de MS-DOS en los valores que devuelven.

Observaciones

Ejecute SET PATH TO sin Path para restaurar la ruta de acceso al directorio predeterminado. Utilice SET DEFAULT para especificar el directorio predeterminado y CURDIR( ) para devolver el directorio predeterminado actual.

SET PATH no tiene como alcance la sesión de datos actual; los cambios realizados en la ruta de acceso predeterminada con el comando SET PATH afectarán a todas las sesiones de datos.

El máximo número de caractes que se pueden utilizar en SET PATH es 1024.

Vea también

CD | CHDIR | GETFILE( ) | LOCFILE( ) | MD | MKDIR | RD | RMDIR | SET DEFAULT | SET DATASESSION

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


SET PDSETUP (Comando)

Carga la configuración de un controlador de impresora o borra la configuración del controlador de impresora actual.

SET PDSETUP TO [[cPrinterDriverSetup [, Parameter1[, Parameter2 ...]]] [WITH Parameter3 [, Parameter4 ...]]]

Parámetros

cPrinterDriverSetup
Especifica el nombre de la configuración del controlador de impresora que se va a cargar.

Al cargar una configuración del controlador de impresora, el nombre de la configuración se almacena en la variable del sistema _PDSETUP y puede crearse una matriz de variables especial: _PDPARMS. (_PDPARMS se explica con detalle en la cláusula WITH de este tema).

Si el nombre del controlador de impresora especificado con cPrinterDriverSetup no existe en su archivo de recursos, se ejecutará la aplicación de configuración del controlador de impresora actual para que pueda crear una configuración con este nombre. Si la aplicación de configuración del controlador de impresora actual es Genpd.app, aparecerá el cuadro de diálogo Edición de configuración de impresora para que pueda crear la configuración.

Si el nombre comienza con un guión (-), no se ejecutará el programa _GENPD y el nombre que sigue al guión se almacenará en _PDSETUP.

Si ejecuta SET PDSETUP TO sin cPrinterDriverSetup, la configuración actual del controlador de impresora se borrará, se almacenará la cadena vacía en _PDSETUP y se borrará de la memora la matriz _PDPARMS.

Parameter1 [, Parameter2 ...]
Especifica cualquier número de parámetros opcionales. Estos parámetros se transfieren a la aplicación de interfaz de configuración de impresora y pueden ser de cualquier tipo (carácter, numérico, lógico, etc.). La primera línea de la aplicación de interfaz de configuración de impresora debe ser una instrucción LPARAMETERS o PARAMETERS para aceptar los parámetros transferidos desde SET PDSETUP.

Si utiliza Genpd.app, no incluya estos parámetros opcionales. Genpd.app no acepta parámetros pasados desde SET PDSETUP; si se incluyen, se generará un error.

WITH Parameter3 [, Parameter4 ...]
Crea la matriz especial de impresora _PDPARMS. Cada parámetro que especifique con Parameter3, Parameter4, etc. se convierte en un elemento de _PDPARMS. El primer parámetro (Parameter3) se almacena en el primer elemento de _PDPARMS, el segundo parámetro (Parameter4) se almacena en el segundo elemento y así sucesivamente. Estos parámetros pueden ser de cualquier tipo (carácter, numérico, lógico, etc.).

Si está utilizando Genpd.app, la aplicación sobrescribirá todos los parámetros que incluya.

Observaciones

En Visual FoxPro y en FoxPro para Windows, se usa una configuración de controlador de impresora cuando se imprimen informes basados en caracteres creados en FoxPro para MS-DOS.

Una configuración de controlador de impresora es una combinación de parámetros de configuración que incluye el programa controlador de impresora e información de impresión, como la orientación de página, la fuente, tamaño y estilo predeterminados, los márgenes, etc. Las configuraciones de controlador de impresora se almacenan en su archivo de recursos de FoxPro para MS-DOS, Foxuser.dbf, y pueden crearse de forma interactiva y asignárseles un nombre en el cuadro de diálogo Edición de configuración de impresora.

Una configuración de controlador de impresora también puede cargarse o eliminarse con la variable del sistema _PDSETUP.

Cuando ejecuta SET PDSETUPT, se ejecuta la aplicación de la interfaz de configuración de impresora actual. A la aplicación de interfaz se le transfiere el nombre de la configuración del controlador de impresora incluida en SET PDSETUP. También se puede especificar la aplicación de interfaz con la variable de sistema _GENPD. La aplicación de interfaz predeterminada es Genpd.app, la aplicación de configuración de impresora de FoxPro para MS-DOS.

Vea también

_GENPD | _PDRIVER | _PDSETUP | SET PRINTER


SET POINT (Comando)

Determina el carácter decimal que se utilizará al mostrar las expresiones numéricas y de moneda.

SET POINT TO [cDecimalPointCharacter]

Parámetros

cDecimalPointCharacter
Especifica el carácter que desea utilizar como signo decimal.

Observaciones

Utilice SET POINT para cambiar el separador de decimales a partir del predeterminado, que es un punto (.). SET POINT TO sin cDecimalPointCharacter para restablecer el signo decimal en un punto. A pesar de que puede cambiar el signo decimal que se muestra por un carácter diferente, debe utilizar el punto como carácter decimal en los cálculos.

SET POINT tiene como alcance la sesión actual de datos.

Ejemplo

gnX = 1.25
gcNewPoint = '_'
SET POINT TO gcNewPoint
? gnX
SET POINT TO && Reset the decimal point to a period (.)
? gnX

Vea también

SET DATASESSION | SET DECIMALS | SET FIXED | SET SEPARATOR | SET SYSFORMATS


SET PRINTER (Comando)

Activa o desactiva el resultado a la impresora, o dirige el resultado hacia un archivo, un puerto o una impresora de red.

SET PRINTER ON [PROMPT] | OFF

–O bien–

SET PRINTER FONT cFontName [, nFontSize] [STYLE cFontStyle]-or-SET PRINTER TO [FileName [ADDITIVE] | PortName]

–O bien–

SET PRINTER TO [DEFAULT | NAME WindowsPrinterName]

–O bien–

SET PRINTER TO NAME \\ServerName\PrinterName

Parámetros

ON [PROMPT]
Activa el envío del resultado a la impresora. El resultado con formato @ ... SAY no se dirige a la impresora cuando SET PRINTER está en ON. Utilice SET DEVICE TO PRINTER para dirigir el resultado de @ ... SAY a la impresora.

Si desea que se muestre un cuadro de diálogo antes de que empiece la impresión, incluya PROMPT. En este cuadro de diálogo puede modificar la configuración de la impresora. El controlador de impresora instalado actualmente determina los valores de la impresora que puede modificar.

OFF
(Predeterminado) Desactiva la salida a la impresora.
FONT cFontName [, cFontSize]
Especifica la fuente predeterminada para la salida de impresora. cFontName especifica el nombre de la fuente y cFontSize especifica su tamaño en puntos. Por ejemplo, el comando siguiente especifica la fuente Courier de 16 puntos como fuente predeterminada para la impresora:
SET PRINTER FONT 'Courier', 16

Si la fuente especificada no está disponible, se sustituirá por una fuente de características similares.

STYLE cFontStyle
Especifica un estilo de fuente predeterminado para la salida a la impresora. Si omite la cláusula STYLE, se utilizará el estilo de fuente Normal.

Si el estilo de fuente especificado no está disponible, se sustituye por otro de características similares.

Éstos son los estilos de fuente que puede especificar con cFontStyle:

Carácter | Estilo de la fuente
B | Negrita
I | Cursiva
N | Normal
O | Contorno
Q | Opaco
S | Sombra
– Tachado
T | Transparente
U | Subrayado

Puede incluir más de un carácter para especificar una combinación de estilos de fuente. Por ejemplo, el comando siguiente especifica negrita cursiva:

SET PRINTER FONT 'Courier', 16 STYLE 'BI'
TO [FileName [ADDITIVE] | PortName]
Especifica el archivo o puerto al que se dirige el resultado.

En Visual FoxPro, utilice SET PRINTER TO NAME en vez de especificar una impresora.

FileName especifica un nombre de archivo al que se dirige el resultado. Si incluye ADDITIVE, el resultado se anexará al contenido actual del archivo. Si omite ADDITIVE, se sobrescribirá el contenido existente del archivo.

PortName envía el resultado a una impresora local distinta.

TO [DEFAULT | NAME WindowsPrinterName]
Envía la salida de impresora a la impresora predeterminada de Windows o a una impresora de Windows específica. Los nombres de las impresoras de Windows están almacenados en win.ini.

Si desea determinar los nombres de las impresoras instaladas actualmente, utilice GETPRINTER( ) o APRINTERS( ). Por ejemplo, el siguiente comando mostrará el cuadro de diálogo de Windows Configurar impresora y hará que se dirija la salida de impresión a la impresora seleccionada:

SET PRINTER TO NAME GETPRINTER( )
TO NAME \\ServerName\PrinterName
Sólo se admite en Windows NT 4.0 o en versiones posteriores. Dirige la salida de la impresora a una impresora de red.

ServerName es el nombre de red asignado a su servidor de impresión. El administrador de la red es quien asigna este nombre, que debe ser exclusivo.

PrinterName es un nombre asignado a la impresora, también por el administrador de la red.

Observaciones

Utilice SET PRINTER TO con los argumentos que sean necesarios para dirigir la salida a un archivo, a un puerto de una impresora local distinta o a una impresora de red.

Utilice SET PRINTER TO sin ningún argumento para restablecer la salida al dispositivo de impresión PRN predeterminado de MS-DOS.

Al dirigir la salida a una impresora de red, ésta se imprime o se pone en cola de impresión, hasta que se ejecuta un nuevo comando SET PRINTER . Para obtener información adicional sobre la impresión en red, consulte la documentación de la red.

Nota Este comando no funciona en Modo de servidor desatendido.

Vea también

APRINTERS( ) | GETPRINTER( ) | PRINTSTATUS( ) | SET DEVICE

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


SET PROCEDURE (Comando)

Abre un archivo de procedimiento.

SET PROCEDURE TO [FileName1 [, FileName2, ...]] [ADDITIVE]

Parámetros

FileName1 [, FileName2, ...]
Especifica la secuencia en la que se abren los archivos. SET PROCEDURE puede aceptar más de un nombre de archivo, lo que le permite abrir simultáneamente varios archivos de procedimiento. Esto permite crear bibliotecas autónomas de funciones y especificarlas por separado.
ADDITIVE
Abre archivos de procedimiento adicionales sin cerrar los que ya están abiertos.

Observaciones

Al ejecutar SET PROCEDURE TO sin ningún nombre de archivo, se cierran todos los archivos de procedimiento abiertos. Use RELEASE PROCEDURE para cerrar archivos individuales.

Cuando se ejecuta un procedimiento, los archivos de procedimiento se buscan si el procedimiento no se encuentra en el programa que se está ejecutando actualmente.

Para obtener más información acerca de los archivos de procedimientos, vea PROCEDURE y DO.

Vea también

PROCEDURE | RELEASE PROCEDURE | LIST PROCEDURES (Comando)


SET READBORDER (Comando)

Determina si se colocan bordes alrededor de los cuadros de texto creados con @ ... GET.

SET READBORDER ON | OFF

Parámetros

ON
Coloca un borde de una sola línea alrededor de todos los cuadros de texto creados con @ ... GET. Si SET READBORDER está establecido en ON al crear el primer cuadro de texto, todos los cuadros de texto creados posteriormente en el mismo nivel READ también tendrán bordes.
OFF
(Predeterminado) Especifica que no se agrega ningún borde a los cuadros de texto creados con @ ... GET. Si SET READBORDER está establecido en OFF al crear el primer cuadro de texto, todos los cuadros de texto creados posteriormente en el mismo nivel READ tampoco tendrán bordes.

Observaciones

SET READBORDER especifica si se agregan bordes de una sola línea alrededor de los cuadros de texto creados con @ ... GET.

Ejemplo

En el ejemplo siguiente, los tres primeros cuadros de texto creados con @ ... GET tienen bordes. El tercer cuadro de texto tiene un borde incluso aunque SET READBORDER se estableciera en OFF antes de crearlo. El cuarto cuadro de texto no tiene borde, ya que READBORDER estaba en OFF y está enmarcado en un READ distinto que el de los tres primeros cuadros de texto.

SET READBORDER ON
@ 2,2 GET gnW DEFAULT 1   && 1st READ
@ 4,2 GET gnX DEFAULT 1   && 1st READ
SET READBORDER OFF
@ 6,2 GET gnY DEFAULT 1   && 1st READ
READ
@ 8,2 GET gnZ DEFAULT 2   && 2nd READ
READ

Vea también

READ | READ EVENTS | @ ... GET - Cuadros de texto (Comando)


SET REFRESH (Comando)

Determina si se puede y con qué frecuencia puede actualizarse la ventana Examinar con los cambios que hagan en los registros otros usuarios de la red.

SET REFRESH TO nSeconds1 [, nSeconds2]

Parámetros

TO nSeconds1 [, nSeconds2]
Especifica si se realizan actualizaciones y la frecuencia con que se realizan. nSeconds1 especifica el número de segundos entre actualizaciones en una ventana Examinar o de edición de memo. nSeconds1 puede ser un valor entre 0 y 3.600, siendo 0 segundos el valor predeterminado. Cuando nSeconds1 es un valor distinto de cero y otros usuarios cambian los registros que está mostrando, estos registros se actualizan cuando transcurre el intervalo de actualización. Los registros que está viendo no se actualizan si nSeconds1 es 0.

Microsoft Visual FoxPro almacena en búfer partes de tablas en la memoria de la estación de trabajo. nSeconds2 especifica la frecuencia con que se actualizan estos búferes locales de datos con datos actuales de la red. nSeconds2 es el número de segundos entre actualizaciones de búferes de datos. Puede especificar un valor entre 0 y 3.600, siendo 5 el valor predeterminado. Los búferes no se actualizan nunca si nSeconds2 está definido como 0.

Si especifica un valor para nSeconds1 distinto de 0 pero no incluye nSeconds2, nSeconds2 se establecerá en el mismo valor que nSeconds1. No obstante, nSeconds2 se establece como 5 si especifica 0 para nSeconds1 y no incluye nSeconds2.

El rendimiento puede mejorarse aumentando el valor de nSeconds2.

Observaciones

Las tablas se pueden abrir para su uso compartido en una red, por lo que es posible que los registros que está viendo en una ventana Examinar estén siendo modificados por otros usuarios de la red.

SET REFRESH afecta a los registros mostrados en una ventana Examinar abierta con BROWSE, CHANGE o EDIT. Los campos memo abiertos para su modificación en una ventana Examinar también se actualizan.

SET REFRESH puede utilizarse también para especificar con qué frecuencia se actualizan los datos del búfer local de su estación de trabajo.

Vea también

BROWSE | CHANGE | EDIT | MODIFY MEMO


SET RELATION (Comando)

Establece una relación entre dos tablas abiertas.

SET RELATION TO [eExpression1 INTO nWorkArea1 | cTableAlias1
[, eExpression2 INTO nWorkArea2 | cTableAlias2 ...] [IN nWorkArea | cTableAlias] [ADDITIVE]]

Parámetros

eExpression1
Especifica la expresión relacional que establece una relación entre las tablas primaria y secundaria. La expresión relacional suele ser la expresión de índice del índice de control de la tabla secundaria.

El índice de la tabla secundaria puede ser un índice (.IDX) de una sola entrada, un índice (.CDX) compuesto estructural de varias entradas o un índice compuesto independiente. Si se trata de un índice compuesto, especifique la etiqueta de índice adecuada para ordenar la tabla secundaria. SET ORDER se puede utilizar para especificar la etiqueta de índice que ordena la tabla secundaria.

Por ejemplo, tomemos las tablas customer y orders descritas en la sección Comentarios siguiente. Suponga que la tabla secundaria orders se ha indizado y ordenado por el número del cliente con este comando:

SET ORDER TO TAG cust_id

Para relacionar las tablas customer y orders según el número del cliente, seleccione el área de trabajo que contiene la tabla primaria customer, o incluya la cláusula IN para especificar el área de trabajo o el alias de la tabla primaria, y luego ejecute SET RELATION, especificando la expresión de índice con la siguiente expresión relacional:

SET RELATION TO cust_id INTO orders

Es necesario que la tabla secundaria esté indizada, a menos que la expresión relacional sea numérica. Visual FoxPro muestra un mensaje de error si ejecuta SET RELATION con una expresión relacional no numérica y la tabla secundaria no está ordenada con un índice.

Si eExpression1 es numérica, se evalúa cuando el puntero de registro se mueve en la tabla primaria. El puntero de registro de la tabla secundaria se mueve en este momento al número de registro eExpression1.

INTO nWorkArea1 | cTableAlias1
Especifica el número del área de trabajo (nWorkArea1) o el alias de tabla (cTableAlias1) de la tabla secundaria.
eExpression2 INTO nWorkArea2 | cTableAlias2 ...
Especifica una expresión relacional (eExpression2) y una o varias tablas secundarias para establecer una relación adicional entre la tabla primaria y las tablas secundarias. A partir de un único comando SET RELATION, puede crear varias relaciones entre una sola tabla primaria y varias tablas secundarias. Incluya una coma delante de cada relación.

nWorkArea2 especifica un número de área de trabajo y cTableAlias2 especifica un alias de tabla para la tabla secundaria.

IN nWorkArea
Especifica el área de trabajo de la tabla primaria.
IN cTableAlias
Especifica el alias de la tabla primaria.

La cláusula IN le permite crear una relación sin seleccionar primero el área de trabajo de la tabla primaria. Si omite nWorkArea y cTableAlias, la tabla primaria tiene que estar abierta en el área de trabajo seleccionada actualmente.

ADDITIVE
Mantiene las relaciones existentes en el área de trabajo actual y crea la relación especificada. Si omite ADDITIVE, se romperán todas las relaciones del área de trabajo actual y se creará la relación especificada.

Observaciones

Antes de que pueda establecer una relación, una tabla (la tabla primaria) debe estar abierta y la otra (la tabla secundaria) debe estar abierta en otra área de trabajo.

Las tablas relacionadas tienen normalmente un campo en común. Por ejemplo, suponga que una tabla customer contiene información de clientes. Tiene campos para el nombre, la dirección y un número de cliente único. Una segunda tabla orders contiene información sobre pedidos. También tiene un campo con el número de cliente, junto con los campos de fecha e información de envío.

SET RELATION relaciona estas dos tablas basándose en su campo común: el campo de número del cliente. Para establecer la relación, la tabla secundaria debe estar indizada por el campo común. Después de establecer la relación, cada vez que mueva el puntero de registro a un registro con un número de registro determinado de la tabla primaria customer, el puntero de registro de la tabla secundaria orders se moverá al registro que tiene el mismo número de cliente. Si no se encuentra un registro que coincida en la tabla secundaria, el puntero de registro de la tabla secundaria se colocará al final de la tabla.

Ejecute SET RELATION TO sin ningún argumento para quitar todas las relaciones del área de trabajo seleccionada actualmente. SET RELATION OFF se puede utilizar para quitar una relación primaria-secundaria específica.

Vea también

INDEX | RELATION( ) | SET ORDER | SET RELATION OFF | SET SKIP | TARGET( )


SET RELATION OFF (Comando)

Rompe una relación establecida entre la tabla primaria del área de trabajo seleccionada actualmente y una tabla secundaria relacionada.

SET RELATION OFF INTO nWorkArea | cTableAlias

Parámetros

INTO nWorkArea | cTableAlias
Especifica el número de área de trabajo de la tabla secundaria o su alias de tabla.

Vea también

RELATION( ) | SELECT | SET RELATION | SET SKIP | TARGET( )


SET REPROCESS (Comando)

Especifica cuántas veces o durante cuánto tiempo intenta Visual FoxPro bloquear un archivo o un registro después de que fracase un intento de bloqueo.

SET REPROCESS TO nAttempts [SECONDS] [SYSTEM] | TO AUTOMATIC [SYSTEM]

Parámetros

TO nAttempts [SECONDS]
Especifica el número de veces que Visual FoxPro intenta bloquear un registro o un archivo después de un intento fracasado. El valor predeterminado es 0 y el valor máximo es 32.000.

SECONDS especifica que Visual FoxPro intenta bloquear un archivo o registro durante nAttempts segundos. Solamente está disponible cuando nAttempts es mayor que cero.

Por ejemplo, si nAttempts es 30, Visual FoxPro intentará bloquear un registro o archivo hasta 30 veces. Si también incluye SECONDS (SET REPROCESS TO 30 SECONDS), Visual FoxPro intentará bloquear continuamente un registro o archivo durante un máximo de 30 segundos.

Aparece un mensaje del sistema (“Esperando bloqueo... ”) si SET STATUS está en ON.

Si hay una rutina ON ERROR activa y fracasan los intentos realizados por el comando para bloquear el registro o archivo, se ejecutará la rutina ON ERROR. Sin embargo, si una función intenta establecer el bloqueo, no se ejecutará la rutina y la función devolverá falso (.F.).

Si no hay ninguna rutina ON ERROR activa, un comando intenta bloquear el registro o archivo, y este bloqueo no se puede realizar, aparecerá una alerta adecuada (por ejemplo,“El registro está siendo utilizado por otra persona”). Si una función intenta realizar el bloqueo, la alerta no se mostrará y la función devolverá falso (.F.).

Si nAttempts es 0 (el valor predeterminado) y ejecuta un comando o función que intenta bloquear un registro o archivo, Visual FoxPro intentará bloquear el registro o archivo indefinidamente. Visual FoxPro muestra el mensaje del sistema, “Intentando bloquear... Presione Esc para cancelar,” mientras intenta bloquear el registro o el archivo. El bloqueo se realiza y el mensaje del sistema se borra si el registro o el archivo llegan a estar disponibles para bloquearse mientras espera. Si una función intenta realizar el bloqueo, devolverá verdadero (.T.).

Si presiona ESC en respuesta al mensaje del sistema, aparecerá una alerta adecuada (por ejemplo, “El registro está siendo utilizado por otra persona”). Si una función intenta realizar el bloqueo, la alerta no se mostrará y la función devolverá falso (.F.).

Si hay una rutina ON ERROR activa y un comando intenta bloquear el registro o el archivo, la rutina ON ERROR tendrá preferencia sobre otros intentos para bloquear el registro o el archivo. La rutina ON ERROR se ejecuta inmediatamente. Visual FoxPro no intenta realizar bloqueos adicionales de registros ni de archivos, y no muestra el mensaje del sistema.

Si nAttempts es –1, Visual FoxPro intentará bloquear el registro o archivo indefinidamente. No podrá cancelar los intentos de bloqueo presionando la tecla ESC y no se ejecutará ninguna rutina ON ERROR.

Cuando nAttempts está establecido en –2, equivale a la utilización de la cláusula TO AUTOMATIC.

Visual FoxPro solamente muestra el mensaje del sistema “Esperando bloqueo ... ” si SET STATUS está en ON.

Si otro usuario ha establecido un bloqueo en el registro o archivo que intenta bloquear, deberá esperar hasta que el otro usuario libere el bloqueo.

TO AUTOMATIC
Especifica que Visual FoxPro intenta bloquear indefinidamente el registro o el archivo (lo que equivale a establecer nAttempts en –2). Esta cláusula se parece al establecimiento de nAttempts a -1, excepto porque incluye la posibilidad de salir del intento de bloquear un registro o un archivo.

El mensaje del sistema “Intentando bloquear... Presione Esc para cancelar” aparece mientras Visual FoxPro intenta bloquear el registro o archivo. El bloqueo se realiza y el mensaje del sistema se borra si el registro o el archivo llegan a estar disponibles para bloquearse mientras espera. Si se utiliza una función para establecer el bloqueo, la función devolverá verdadero (.T.).

Si no hay una rutina ON ERROR activa y presiona ESC en respuesta al mensaje del sistema, se mostrará la alerta apropiada (por ejemplo, “El registro está siendo utilizado por otra persona”). Si una función intenta realizar el bloqueo, la alerta no se mostrará y la función devolverá falso (.F.).

Si una rutina ON ERROR está activa y presiona ESC, se ejecutará la rutina ON ERROR. Si una función intenta establecer el bloqueo, no se ejecutará la rutina ON ERROR y la función devolverá falso (.F.).

SYSTEM
Especifica que SET REPROCESS se aplica a la sesión de datos del sistema, que controla las tablas utilizadas internamente, como una base de datos, FOXUSER, archivos .scx, etc.

Para obtener más información acerca del bloqueo de registros y archivos, así como del uso compartido de tablas en una red, vea Programar para acceso compartido.

Observaciones

Un bloqueo de registro o de archivo no siempre se consigue en el primer intento. Con frecuencia, un registro o archivo está bloqueado por otro usuario de la red. SET REPROCESS determina si Visual FoxPro debe realizar más intentos de bloquear el registro o archivo cuando fracasa el primer intento. Puede especificar cuántos intentos más se harán o durante cuánto tiempo se intentará. Una rutina ON ERROR afecta a cómo se controlan los intentos de bloqueo fracasados.

SET REPROCESS tiene como alcance la sesión actual de datos. SET REPROCESS SYSTEM tiene como alcance la sesión de datos del sistema.

Nota Los cambios realizados en la ficha Datos del cuadro de diálogo Opciones de herramientas sólo afectan a la sesión actual.

Ejemplo

SET ("REPROCESS")      && Returns the current session setting
SET("REPROCESS",1)   && Returns the system session setting
* In the config.fpw file, the following code changes the default session.
REPROCESS = 100

Vea también

FLOCK( ) | SET DATASESSION | Programar para acceso compartido


SET RESOURCE (Comando)

Actualiza o especifica un archivo de recursos. El archivo de recursos es una tabla de Visual FoxPro que contiene información de los recursos del sistema y los definidos por el usuario, tales como macros de teclado, preferencias, localización y tamaño de las ventanas del sistema, entradas diarias, etc.

SET RESOURCE ON | OFF

O bien:

SET RESOURCE TO [FileName]

Parámetros

ON
Especifica que los cambios realizados en el entorno de Visual FoxPro se guarden en el archivo de recursos. (Predeterminado)
OFF
Especifica que los cambios realizados en el entorno de Visual FoxPro no se guarden en el archivo de recursos.
TO [FileName]
Especifica que los cambios realizados en el entorno de Visual FoxPro se guarden en un archivo de recursos (FileName) distinto del predeterminado FOXUSER.DBF.

Ejecute SET RESOURCE TO sin un nombre de archivo de recursos para abrir el archivo de recursos predeterminado Foxuser.dbf. Si ejecuta SET RESOURCE TO, se ejecutará SET RESOURCE ON implícitamente.

Vea también

SYS(2005) - Archivo actual de recursos | Archivos de recursos en las aplicaciones


SET SAFETY (Comando)

Determina si Visual FoxPro muestra o no un cuadro de diálogo antes de sobrescribir un archivo existente. También determina si se evaluarán las reglas de tablas o de campos, los valores predeterminados y los mensajes de error al realizar cambios en el Diseñador de tablas o con ALTER TABLE.

SET SAFETY ON | OFF

Parámetros

ON
(Predeterminado) Especifica que se muestre un cuadro de diálogo antes de sobrescribir un archivo existente. El cuadro de diálogo le ofrece la opción de sobrescribir el archivo existente.

Para el Diseñador de tablas, especifica que se evaluarán las reglas de tablas o de campos, los valores predeterminados y los mensajes de error cuando se guarden las modificaciones realizadas en la estructura de una tabla. Después de guardar las modificaciones de la estructura de la tabla, se validarán los datos de las reglas nuevas o modificadas. Si una regla de validación contiene una UDF (función definida por el usuario, user-defined function), ésta no se evaluará y se pasará por alto la regla de validación.

Para ALTER TABLE, se evaluarán las reglas de tablas o de campos, los valores predeterminados y los mensajes de error siempre que ALTER TABLE modifique la estructura de la tabla. Cuando ALTER TABLE modifica la estructura de la tabla, se produce la validación de los datos de reglas nuevas o modificadas. Si una regla de validación contiene una UDF (función definida por el usuario, user-defined function), ésta no se evaluará y se pasará por alto la regla de validación.

OFF
Especifica que no se muestre ningún cuadro de diálogo antes de sobrescribir un archivo existente. Observe que para los servidores de automatización .dll en proceso el valor predeterminado de SET SAFETY es OFF.

Para el Diseñador de tablas, especifica que no se evaluarán las reglas de tablas o de campos, los valores predeterminados y los mensajes de error cuando guarde los cambios realizados en la estructura de una tabla. Sin embargo, una vez guardados los cambios en la estructura de la tabla, tendrá lugar la validación de datos de las reglas de validación nuevas o modificadas.

Para ALTER TABLE, no se evaluarán las reglas de tablas o de campos, los valores predeterminados y los mensajes de error cuando ALTER TABLE modifique la estructura de la tabla. Después de que ALTER TABLE haya cambiado la estructura de la tabla, no se validarán los datos para reglas de validación nuevas o modificadas.

Observaciones

SET SAFETY tiene como alcance la sesión de datos actual.

Vea también

ALTER TABLE - SQL | MODIFY STRUCTURE | SET DATASESSION | SET TALK


SET SECONDS (Comando)

Especifica si se muestran los segundos en la parte de hora de los valores DateTime.

SET SECONDS ON | OFF

Parámetros

ON
(Predeterminado) Especifica que se muestren los segundos de los valores DateTime.
OFF
Especifica que no se muestren los segundos en valores DateTime.

Observaciones

SET SECONDS tiene como alcance la sesión de datos actual.

Ejemplo

En el siguiente ejemplo se muestra el efecto de la configuración de SET SECONDS en el valor de hora devuelto por DATETIME( ). Cuando SET SECONDS está en ON, se muestra el valor de hora con una parte en segundos. Cuando SET SECONDS está en OFF, no se muestran los segundos en el valor de hora.

SET SECONDS ON
CLEAR
? DATETIME( )  && Displays time value with the seconds portion
SET SECONDS OFF  && Displays time value without the seconds portion
? DATETIME( )

Vea también

CTOT( ) | DATE( ) | DATETIME( ) | DTOT( ) | HOUR( ) | MINUTE( ) | SEC( ) | SECONDS( ) | SET SECONDS | TIME( )


SET SEPARATOR (Comando)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar el valor del símbolo de agrupación de dígitos de las opciones de configuración regional del Panel de control de Windows.


SET SKIP (Comando)

Crea una relación de uno a varios entre tablas.

SET SKIP TO [TableAlias1 [, TableAlias2] ...]

Parámetros

TO TableAlias1 [, TableAlias2] ...
Especifica los alias de varias tablas secundarias. Éstas se utilizan para crear una relación de uno a varios con una tabla primaria. Utilice comas para separar los distintos alias. En los comandos que admiten un alcance (DISPLAY, LIST, etc.), los registros de la tabla primaria se repiten por cada registro correspondiente de la tabla secundaria.

Utilice SET SKIP TO sin argumentos adicionales para eliminar la relación uno a varios de la tabla primaria abierta en el área de trabajo actual. Cualquier relación uno a uno existente permanecerá vigente. Se puede utilizar SET RELATION TO para quitar las relaciones uno a uno.

Observaciones

Con SET RELATION puede establecer relaciones entra tablas abiertas en diferentes áreas de trabajo. Cuando el puntero de registro se mueve en la tabla primaria, el puntero de registro de la tabla secundaria se mueve al primer registro correspondiente. El registro al que se mueve el puntero de registro de la tabla secundaria está determinado por la expresión relacional SET RELATION. Se crea una relación uno a uno: por cada registro de la tabla primaria, el puntero de registro se mueve al primer registro coincidente de la tabla secundaria. Si no se encuentra un registro coincidente en la tabla secundaria, el puntero de registro de la tabla secundaria se moverá al final de la tabla.

Con frecuencia, una tabla secundaria contiene varios registros que corresponden a un registro de la tabla primaria. SET SKIP le permite establecer una relación uno a varios entre un registro de la tabla primaria y varios registros de la tabla secundaria. Cuando se mueve a través de la tabla primaria, el puntero de registro permanece en el mismo registro de la tabla primaria hasta que el puntero de registro se mueva a través de todos los registros relacionados de la tabla secundaria.

Para establecer una relación uno a varios, cree primero la relación entre las tablas primaria y secundaria con SET RELATION. Después, ejecute SET SKIP para crear la relación uno a varios.

Ejemplo

El ejemplo siguiente busca todas las apariciones en tres tablas donde cada elemento del primer campo es el mismo. Esto se logra explorando la primera tabla que tiene una relación con una segunda tabla, que a su vez tiene una relación con una tercera tabla. Luego, la primera tabla ejecuta SET SKIP para las otras dos tablas. Observe que SET SKIP en la segunda tabla no produce ningún efecto. Sólo afecta a la tabla que se explora (reemplaza, etc.). En el ejemplo se encuentran ocho coincidencias.

CLOSE DATABASES
* Creates parent table with values a and b in Name field
CREATE TABLE Parent FREE (Name C(1), Val C(10))
INSERT INTO Parent VALUES ('a', 'Parent.a1')
INSERT INTO Parent VALUES ('b', 'Parent.b1')
SELECT 0     && Child1 will have two a's and two b's
CREATE TABLE Child1 FREE (Name1 C(1), Val C(10))
INSERT INTO Child1 VALUES ('a', 'Child1.a1')
INSERT INTO Child1 VALUES ('b', 'Child1.b1')
INSERT INTO Child1 VALUES ('b', 'Child1.b2')
INSERT INTO Child1 VALUES ('a', 'Child1.a2')
INDEX ON Name1 TAG tagName   && The tag name is irrelevant
SELECT 0  && Child2 will have two a's and two b's
CREATE TABLE Child2 FREE (Name2 C(1), Val C(10))
INSERT INTO Child2 VALUES ('b', 'Child1.b1')
INSERT INTO Child2 VALUES ('b', 'Child1.b2')
INSERT INTO Child2 VALUES ('a', 'Child1.a1')
INSERT INTO Child2 VALUES ('a', 'Child1.a2')
INDEX ON Name2 TAG tagName     && The tag name is irrelevant
SELECT Child1
SET RELATION TO Name1 INTO Child2
SELECT Parent
SET RELATION TO Name INTO Child1
SET SKIP TO Child1, Child2 && Parent gets both skips.
&& Otherwise, only four record triplets
&& would be listed.
SCAN ALL  && There will be eight triplets: four a's and four b's
? Parent.Val, Child1.Val, Child2.Val
ENDSCAN

Vea también

RELATION( ) | SET RELATION | SKIP


SET SKIP OF (Comando)

Activa o desactiva un menú, una barra de menús, un título de menú o un elemento de menú para menús definidos por el usuario o para el menú del sistema de Microsoft Visual FoxPro.

SET SKIP OF MENU MenuBarName1 lExpression1

O bien:

SET SKIP OF PAD MenuTitleName OF MenuBarName2 lExpression2

O bien:

SET SKIP OF POPUP MenuName1 lExpression3

O bien:

SET SKIP OF BAR nMenuItemNumber | SystemItemName OF MenuName2
lExpression4

Parámetros

MENU MenuBarName1 lExpression1
Activa o desactiva la barra de menús del sistema de Visual FoxPro o la barra de menús definida por el usuario, creada con DEFINE MENU. Por ejemplo, la barra de menús del sistema de Visual FoxPro, _MSYSMENU, se puede desactivar con este comando:
SET SKIP OF MENU _MSYSMENU .T.

Puede activarla con este comando:

SET SKIP OF MENU _MSYSMENU .F.
PAD MenuTitleName OF MenuBarName2 lExpression2
Activa o desactiva un título de menú del sistema de Visual FoxPro o un título de menú definido por el usuario, creado con DEFINE PAD. Por ejemplo, el título del menú Edición de Visual FoxPro puede desactivarse con este comando:
SET SKIP OF PAD _MSM_EDIT OF _MSYSMENU .T.

El título del menú se puede activar con este comando:

SET SKIP OF PAD _MSM_EDIT OF _MSYSMENU .F.
POPUP MenuName1 lExpression3
Activa o desactiva un menú del sistema de Visual FoxPro o un menú definido por el usuario, creado con DEFINE POPUP. Por ejemplo, el menú Edición de Visual FoxPro puede desactivarse con este comando:
SET SKIP OF POPUP _MEDIT .T.

El menú puede activarse con este comando:

SET SKIP OF POPUP _MEDIT .F.
BAR nMenuItemNumber | SystemItemName OF MenuName2 lExpression4
Activa o desactiva un elemento de menú incluido en un menú del sistema de Visual FoxPro o un elemento de menú definido por el usuario, creado con DEFINE BAR. Por ejemplo, el comando Nuevo del menú Archivo de Visual FoxPro puede desactivarse con este comando:
SET SKIP OF BAR _MFI_NEW OF _MFILE .T.

donde SystemItemName especifica el comando de menú _MFI_NEW, MenuName2 especifica el menú _MFILE y lExpression4 especifica la expresión lógica .T.. El comando de menú se puede activar con este comando:

SET SKIP OF BAR _MFI_NEW OF _MFILE .F.

Use nMenuItemNumber para especificar un elemento de menú creado con DEFINE BAR.

Observaciones

Para ver una lista completa de los nombres internos de los componentes de menú del sistema de Visual FoxPro, vea Nombres de menús del sistema. También puede utilizar SYS(2013) para devolver los nombres internos de los menús del sistema.

Si la expresión lógica lExpression se evalúa con el valor verdadero (.T.), el menú, la barra de menús, el nombre del menú o el elemento de menú incluido en SET SKIP OF se desactivará, aparecerá atenuado y no se podrá seleccionar. Si lExpression se evalúa como falso (.F.), el menú, la barra de menús, el nombre del menú o el elemento de menú se activarán y podrán seleccionarse.

Vea también

CREATE MENU | DEFINE BAR | DEFINE MENU | DEFINE PAD | DEFINE POPUP | Nombres de menús del sistema | SKPBAR( )


SET SPACE (Comando)

Determina si se muestra o no un espacio en blanco entre los campos o las expresiones al utilizar el comando ? o ??.

SET SPACE ON | OFF

Parámetros

ON
(Predeterminado) Inserta un espacio entre campos y expresiones.
OFF
Quita todos los espacios entre campos o expresiones, y los ejecuta juntos.

Vea también

? | ?? | SPACE( ) (Función) | DISKSPACE( ) (Función)


SET STATUS BAR (Comando)

Muestra o quita la barra de estado gráfica.

SET STATUS BAR ON | OFF

Parámetros

ON
(Predeterminado) Ejecute SET STATUS BAR ON para mostrar la barra de estado gráfica.
OFF
Ejecute SET STATUS BAR OFF para quitar la barra de estado gráfica.

Vea también

SET STATUS | StatusBarText (Propiedad) | StatusBar (Propiedad)


SET STATUS (Comando)

Muestra o quita la barra de estado basada en caracteres.

SET STATUS ON | OFF

Parámetros

ON
Si SET STATUS está establecido a ON, se muestra la barra de estado basada en caracteres con el nombre del programa actualmente en ejecución (si lo hay), el alias de la tabla activa, la posición del puntero en el registro actual, el número de registros de la tabla y el estado de las teclas Insert, Bloq Num y Bloq Mayús. El estado de bloqueo del registro o del archivo también se muestra en la barra de estado cuando se abre la tabla para uso compartido. La barra de estado se actualiza cada vez que ejecuta un comando que cambia la información de estado.
OFF
(Predeterminado) Ejecute SET STATUS OFF para quitar la barra de estado.

Vea también

SET STATUS BAR | StatusBarText (Propiedad) | NUMLOCK( ) (Función) | CAPSLOCK( ) (Función)


SET STEP (Comando)

Abre la ventana Seguimiento y suspende la ejecución del programa para depurarlo.

SET STEP ON

Parámetros

ON
Abre la ventana Seguimiento y suspende la ejecución del programa.

Observaciones

SET STEP se utiliza para depurar programas. Puede insertar SET STEP ON en un programa en el lugar preciso donde desea ejecutar comandos individuales.

Para obtener información acerca de la ventana Seguimiento, vea Probar y depurar aplicaciones .

Puede transferir parámetros a un programa y, a continuación, hacer un seguimiento de su ejecución con los siguientes pasos:

  1. Abra la ventana Seguimiento.
  2. En el menú Programa de la ventana Seguimiento, elija Abrir y seleccione el programa del que desea hacer un seguimiento.
  3. Establezca un punto de interrupción en la primera línea ejecutable del programa.
  4. En la ventana Comandos, ejecute DO con el programa incluyendo los parámetros con WITH.

Vea también

SET ECHO | Ventana Seguimiento | Probar y depurar aplicaciones


SET STRICTDATE (Comando)

Especifica si constantes ambiguas de tipo Date y DateTime generan errores.

SET STRICTDATE TO [0 | 1 | 2]

Parámetros

0
Especifica que está desactivada la comprobación del formato de fecha estricto. Este valor proporciona compatibilidad con versiones anteriores de Visual FoxPro. 0 es el valor predeterminado para el entorno de tiempo de ejecución de Visual FoxPro y el controlador ODBC. Cuando STRICTDATE está establecido en 0, los valores Date y DateTime no válidos se evalúan como cadenas vacías.
1
Especifica que todas las constantes Date y DateTime están en el formato de fecha estricto. Cualquier constante Date o DateTime que no esté en formato estricto o que se evalúe como un valor no valido genera un error, tanto en tiempo de compilación, como en tiempo de ejecución o durante una sesión interactiva de Visual FoxPro. 1 es el valor predeterminado para las sesiones interactivas en Visual FoxPro.
2
Equivale a establecer STRICTDATE en 1, pero además genera un error de compilación (2033 – CTOD y CTOT pueden producir resultados incorrectos) siempre que las funciones CTOD( ) y CTOT( ) aparezcan en el código.

Como los valores devueltos por CTOD( ) y CTOT( ) se basan en SET DATE y SET CENTURY para interpretar la fecha que contienen, pueden producir errores de incompatibilidad con el año 2000. Utilice DATE( ) y DATETIME( ) con los argumentos numéricos opcionales para crear constantes y expresiones de tipo Date y DateTime.

Este valor es útil en las sesiones de depuración para detectar el código que pueda contener errores de compatibilidad con el milenio.

Observaciones

Tenga en cuenta que la propiedad StrictDateEntry no se ve afectada por el valor de SET STRICTDATE.

Vea también

COMPILE | CTOD( ) | CTOT( ) | SET LOGERRORS | StrictDateEntry (Propiedad)


SET SYSFORMATS (Comando)

Especifica si la configuración del sistema de Visual FoxPro se actualiza con la configuración del sistema actual de Windows.

SET SYSFORMATS ON | OFF

Parámetros

ON
Especifica que la configuración del sistema de Visual FoxPro se actualiza cuando cambia la configuración del sistema de Windows. SET SYSFORMAT ON es idéntico a activar la casilla de verificación “Usar configuración del sistema” en la ficha Internacional del cuadro de diálogo Opciones. Observe que la emisión de SET SYSFORMAT ON cambia el valor de SET DATE a SHORT.

La configuración sirve para establecer la duración de la sesión de datos actual, o bien, si se ejecuta durante la sesión de datos predeterminada, para la duración de la sesión de Visual FoxPro.

OFF
(Predeterminado) Especifica que no se actualice la configuración del sistema de Visual FoxPro cuando se modifique la configuración del sistema de Windows. No se restaurará la configuración predeterminada de Visual FoxPro.

Observaciones

La configuración del sistema de Windows se especifica en la opción Internacional del Panel de control de Windows.

Cuando SET SYSFORMATS está en ON, pueden usarse los siguientes comandos SET para anular la configuración actual del sistema. Sin embargo, cambiar la configuración del sistema de Windows cuando SET SYSFORMATS está en ON invalida estos comandos SET.

  • SET CENTURY
  • SET CURRENCY
  • SET DATE
  • SET DECIMALS
  • SET HOURS
  • SET MARK TO
  • SET POINT
  • SET SEPARATOR

Cuando se inicia Visual FoxPro, la configuración del sistema de Visual FoxPro es la configuración predeterminada de estos comandos SET. Para utilizar la configuración del sistema de Windows cuando se inicia Visual FoxPro, incluya la línea siguiente en el archivo de configuración Config.fpw de Visual FoxPro:

SYSFORMATS = ON

SET SYSFORMATS tiene como alcance la sesión actual de datos.

Vea también

SET CENTURY | SET CURRENCY | SET DATASESSION | SET DATE | SET DECIMALS | SET HOURS | SET MARK TO | SET POINT | SET SEPARATOR


SET SYSMENU (Comando)

Activa o desactiva la barra de menús del sistema de Visual FoxPro durante la ejecución del programa y permite reconfigurarla.

SET SYSMENU ON | OFF | AUTOMATIC | TO [MenuList] | TO [MenuTitleList] | TO [DEFAULT] | SAVE | NOSAVE

Parámetros

ON
Activa la barra de menús principal de Visual FoxPro durante la ejecución del programa cuando Visual FoxPro espera la introducción de datos a través del teclado durante comandos como BROWSE, READ y MODIFY COMMAND.
OFF
Desactiva la barra de menús principal de Visual FoxPro durante la ejecución del programa.
AUTOMATIC
Hace que la barra de menús principal de Visual FoxPro esté visible durante la ejecución del programa. La barra de menús queda accesible, y los elementos de menú se activan y se desactivan según convenga desde el comando actual.

AUTOMATIC es la configuración predeterminada.

TO [MenuList]TO [MenuTitleList]
Especifica un subconjunto de menús o de títulos de menús para la barra de menús principal de Visual FoxPro. La lista de menús o de títulos de menú puede contener cualquier combinación de menús o títulos separados por comas. Los nombres internos de los menús y de los títulos de menús se indican en el tema Nombres de menús del sistema.

Por ejemplo, el comando siguiente elimina todos los menús de la barra principal de menús de Visual FoxPro excepto los menús Archivo y Ventana:

SET SYSMENU TO _MFILE, _MWINDOW

Utilice RELEASE BAR para especificar los elementos disponibles en los menús.

TO [DEFAULT]
Restaura la barra de menús principal a su configuración predeterminada. Si ha modificado la barra de menús principal o sus menús, ejecute SET SYSTEM TO DEFAULT para restaurarla. Puede especificar una configuración predeterminada con SET SYSMENU SAVE.
SAVE
Hace que el sistema de menús actual tenga la configuración predeterminada. Si modifica el sistema de menús después de ejecutar SET SYSMENU SAVE, puede restaurar la configuración previa ejecutando SET SYSMENU TO DEFAULT.
NOSAVE
Restablece el sistema de menús al menú del sistema predeterminado de Visual FoxPro. Sin embargo, el menú del sistema predeterminado de Visual FoxPro no se mostrará hasta que no ejecute SET SYSMENU TO DEFAULT.

Observaciones

SET SYSMENU controla la barra principal de menús de Visual FoxPro durante la ejecución de un programa, y permite quitar y restaurar de forma selectiva títulos de menú y menús del sistema de menús principal de Visual FoxPro.

Al ejecutar SET SYSMENU TO sin ningún argumento adicional se desactiva la barra de menús principal de Visual FoxPro.

Vea también

Nombres de menús del sistema | POP MENU | PUSH MENU | RELEASE | SYS(2013) - Cadena de nombre de menú del sistema


SET TABLEVALIDATE (Comando)

Especifica el nivel de validación a ejecutar en una tabla.

Podemos utilizar SET TABLEVALIDATE cuando queremos chequear la integridad de una tabla a bajo nivel introduciendo los valores por defecto.

SET TABLEVALIDATE TO [nLevel]

Parámetros

nLevel
Especifica el nivel de validación. Si se omite, el valor por defecto de nLevel es 3.

La siguiente tabla muestra los valores para nLevel.

nLevel | Descripción
0 | No ejecuta ninguna validación.
1 Valida los registros cuando abrimos la tabla.
Nota Durante la validación de la tabla (.dbf) se bloquea la cabecera. Esto puede producir una disminución de escalabilidad para las tablas que son abiertas para uso compartido, Por ejemplo, ejecutando USE tableName SHARED, o cuando ejecutamos un comando SQL SELECT, INSERT, UPDATE, o DELETE para una tabla no abierta, y SET EXCLUSIVE está en OFF.
2 | Valida registros cuando son añadimos o insertamdos y guardados en el disco.
3 | Valida según lo descrito en nLevel=1 y nLevel=2. (valor por defecto)

Comentarios

SET TABLEVALIDATE no tiene funcionalidad de recuperación, sólo chequea la integridad especificada por nLevel.

SET TABLEVALIDATE no afecta archivos temporales ni cursores; en estos casos, no se efectúa la validación de la tabla.

Podemos utilizar SET TABLEVALIDATE en el archivo Config.fpw de la siguiente manera:

TABLEVALIDATE = nLevel

Ver también

SET (Comando) Generalidades | USE (Comando) | SELECT - SQL (Comando) | INSERT - SQL (Comando) | UPDATE - SQL (Comando) | DELETE - SQL (Comando) | Programar para acceso compartido

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


SET TALK (Comando)

Determina si Visual FoxPro muestra o no los resultados de los comandos.

SET TALK ON | OFF | WINDOW [WindowName] | NOWINDOW

Parámetros

ON
(Predeterminado) Permite enviar la conversación a la ventana principal de Visual FoxPro, a la ventana de mensajes del sistema, a la barra de estado gráfica o a una ventana definida por el usuario. Si SET TALK está en OFF y se cambia a ON, la conversación se dirigirá a la misma ubicación a la que se enviaba antes de ejecutar SET TALK OFF.
OFF
Impide que la conversación se envíe a la ventana principal de Visual FoxPro, a la ventana de mensajes del sistema, a la barra de estado gráfica o a una ventana definida por el usuario. Observe que para los servidores de automatización .dll en proceso el valor predeterminado de SET TALK es OFF.
WINDOW [WindowName]
WindowName especifica una ventana definida por el usuario a la que se dirige la conversación. Es necesario crear la ventana definida por el usuario antes de dirigir la conversación hacia ella. La conversación se dirige a la ventana del sistema de Visual FoxPro en caso de que la ventana especificada no exista.
NOWINDOW
Dirige la conversación a la ventana principal de Visual FoxPro.

Observaciones

Algunos comandos de procesamiento de tablas devuelven información, o "conversan", acerca de su estado mientras se ejecutan. Estos comandos son los siguientes:

Comandos

APPEND FROM | PACK
AVERAGE | REINDEX
CALCULATE | REPLACE
COPY TO | SELECT - SQL
COUNT | SORT
DELETE | SUM
INDEX | TOTAL

En Visual FoxPro, la conversación se puede dirigir a la ventana principal de Visual FoxPro, a la barra de estado gráfica o a una ventana definida por el usuario. También es posible desactivarla.

El intervalo de informe de SET TALK se puede especificar con SET ODOMETER. El valor predeterminado para SET ODOMETER es 100. Observe que la velocidad de ejecución puede disminuir cuando SET TALK está en ON, porque la ventana principal de Visual FoxPro o la ventana definida por el usuario se deben actualizar con frecuencia. Si solamente necesita el número total de registros procesados por un comando, ejecute SET TALK OFF y muestre la variable del sistema _TALLY una vez que el comando haya terminado de ejecutarse.

SET TALK tiene como alcance la sesión actual de datos.

Vea también

DEFINE WINDOW | SET DATASESSION | SET NOTIFY | SET ODOMETER | SYS(103) - Configuración de TALK | _TALLY


SET TEXTMERGE (Comando)

Activa o desactiva la evaluación de campos, las variables, los elementos de matriz, las funciones o expresiones rodeadas por delimitadores de combinación de texto, y le permite especificar los resultados de la combinación de texto.

SET TEXTMERGE [ON | OFF] [TO [FileName] MEMVAR VarName [ADDITIVE]] [WINDOW WindowName] [SHOW | NOSHOW]

Parámetros

ON
Especifica que los campos, las variables, los elementos de matriz, y las funciones o expresiones rodeadas por los delimitadores de combinación de texto se evalúen y se generen cuando se colocan después de \ o \\, o entre TEXT y ENDTEXT.

El corto programa de ejemplo siguiente muestra cómo se evalúa el contenido de la variable gcTodayDate y de las funciones DATE( ) y TIME( ) cuando SET TEXTMERGE está en ON. La variable gcTodayDate, DATE( ) y TIME( ) se evalúan porque están encerrados entre delimitadores de combinación de texto y SET TEXTMERGE está definido en ON.

CLEAR
SET TALK OFF
STORE 'Today is: ' TO gcTodayDate
SET TEXTMERGE ON
\<<gcTodayDate>>
\\<<DATE( )>>
\The time is:
\\ <<TIME( )>>

Este es el resultado del programa anterior cuando se ejecuta el 1 de enero:

Today is: 01/01/98
The time is: 10:55:19
OFF
(Predeterminado) Especifica que los campos, las variables, los elementos de matriz, y las funciones o expresiones se muestren literalmente junto con los delimitadores de texto que los rodean. Observe la diferencia del resultado cuando SET TEXTMERGE está en OFF con respecto al ejemplo anterior:
CLEAR
SET TALK OFF
STORE 'Today is: ' TO gcTodayDate
SET TEXTMERGE OFF
\<<gcTodayDate>>
\\<<DATE( )>>
\The time is:
\\ <<TIME( )>>

Éste es el resultado del programa:

<<gcTodayDate>><<DATE( )>>
The time is: <<TIME( )>>
TO [FileName]
Especifica que el resultado de \, \\ y TEXT ... ENDTEXT se dirige a un archivo de texto además de enviarse a la ventana principal de Visual FoxPro, que es el destino predeterminado. También puede dirigir el resultado a un archivo de texto si incluye FileName. Si no existe ningún archivo con ese nombre, se creará un archivo nuevo. Si ya existe un archivo con ese mismo nombre y SET SAFETY está en ON, se le ofrecerá la opción de sobrescribir el archivo existente.

El archivo de texto se abre como un archivo de bajo nivel y su controlador de archivo se almacena en la variable del sistema _TEXT. Puede cerrar el archivo ejecutando SET TEXTMERGE TO sin argumentos adicionales. Si el controlador de archivo u otro archivo se almacenó previamente en _TEXT, ese archivo se cerrará.

MEMVAR VarName
Especifica la variable en la que deben almacenarse los datos del resultado de TEXTMERGE.

Como SET TEXTMERGE es un valor global y puede abarcar varios procedimientos y métodos, MEMVAR VarName puede perder alcance. Este comando funcionará incluso cuando la variable está fuera del alcance, pero no devolverá ningún contenido. Para controlar el alcance de MEMVAR VarName, puede declarar la variable como de tipo PUBLIC o PRIVATE.

Esta cláusula también permite crear un comportamiento recursivo, que puede controlar con el comando SET TEXTMERGE TO, como en el siguiente ejemplo:

USE LABELS
STORE "" to myVar, myVar2
SET TEXT ON NOSHOW

SET TEXTMERGE TO MEMVAR myVar && TEXTMERGE comienza en la línea siguiente.
\Hey Now
\<<date()>>
SCAN
\  <<name>>
ENDSCAN

* Elimine observaciones de la línea SET TEXTMERGE TO para eliminar el error
* recursivo con myVar and myVar2.
* SET TEXTMERGE TO
TEXT TO myVar2

<b> Here's some HTML. </b>
This is HTML
<<date()>>
ENDTEXT
SET TEXTMERGE OFF
USE
CLEAR
? myVar  && But has also stored the TEXTMERGE contents to variables
? myVar2
ADDITIVE
Especifica que el resultado de \, \\ y TEXT ... ENDTEXT se anexará a un archivo o una variable de memoria existentes.

Para obtener más información acerca de cómo dirigir el resultado de una combinación de texto a un archivo, vea _TEXT.

WINDOW WindowName
Especifica que el resultado de \, \\ y TEXT ... ENDTEXT se dirigirá a una ventana definida por el usuario, en lugar de a la ventana principal de Visual FoxPro, que es el lugar predeterminado. WindowName especifica el nombre de la ventana hacia la que desea dirigir el resultado. Es necesario haber creado la ventana con DEFINE WINDOW antes de enviar el resultado hacia ella. No es obligatorio que la ventana esté activa ni visible.
SHOW | NOSHOW
(Predeterminado) SHOW muestra el resultado de la combinación de texto.

NOSHOW suprime la presentación del resultado de la combinación de texto.

De forma predeterminada, el resultado generado por \, \\ y TEXT ... ENDTEXT se envía a la ventana principal de Visual FoxPro o a una ventana activa definida por el usuario.

Observaciones

Los comandos \, \\ y TEXT ... ENDTEXT se utilizan para combinar texto con el contenido de tablas, variables, elementos de matrices y los resultados de funciones y expresiones. Si un campo, una variable, un elemento de matriz, una función o una expresión están rodeados por delimitadores de combinación de texto (de forma predeterminada, << y >>) pueden evaluarse y combinarse con texto. Esta capacidad para combinar texto le permite producir cartas, programas y plantillas que creen programas.

SET TEXTMERGE determina la forma en que se evalúan los campos, las variables, los elementos de matriz, y las funciones o expresiones rodeadas por delimitadores de combinación de texto. También permite dirigir el resultado de combinación de texto hacia la ventana principal de Visual FoxPro, una ventana definida por el usuario o un archivo.

Los campos memo pueden utilizarse para anidar texto combinado. Si un campo memo contiene nombres de campos, variables, o funciones o expresiones rodeadas por los delimitadores de combinación de texto actuales, se evaluarán y mostrarán con el contenido del campo memo. El nombre del campo memo debe estar también entre delimitadores de combinación de texto.

Vea también

\ | \\ | _PRETEXT | SET TEXTMERGE DELIMITERS | TEXTMERGE( ) (Función) | _TEXT | TEXT ... ENDTEXT


SET TEXTMERGE DELIMITERS (Comando)

Especifica los delimitadores de la combinación de texto.

SET TEXTMERGE DELIMITERS [TO cLeftDelimiter [, cRightDelimiter]]

Parámetros

TO cLeftDelimiter [, cRightDelimiter]
Especifica los delimitadores. Si sólo especifica un delimitador con cLeftDelimiter, tanto el delimitador izquierdo como el derecho se establecerán en cLeftDelimiter. Si especifica ambos delimitadores con cLeftDelimiter y cRightDelimiter, el delimitador izquierdo se establecerán en cLeftDelimiter y el delimitador derecho se establecerá cRightDelimiter.

Observaciones

Con SET TEXTMERGE DELIMITERS puede especificar un conjunto de delimitadores de combinación de texto distintos de los predeterminados, los cuales son los ángulos dobles (<< y >>). Los delimitadores actuales pueden mostrarse con DISPLAY STATUS.

Si ejecuta SET TEXTMERGE DELIMITERS sin ningún argumento adicional, se restaurarán los delimitadores predeterminados.

Para obtener más información acerca de los delimitadores de combinación de texto, vea SET TEXTMERGE.

Vea también

\ | \\ | _PRETEXT | SET TEXTMERGE | _TEXT


SET TOPIC (Comando)

Especifica el tema o los temas de Ayuda que se abren cuando invoca el sistema de Ayuda de Visual FoxPro.

SET TOPIC TO [cHelpTopicName | lExpression]

Parámetros

cHelpTopicName
Especifica el nombre del tema de Ayuda que quiere mostrar.
lExpression
Una expresión lógica que es la base para la apertura de uno o varios temas determinados.

Observaciones

Para obtener más información acerca de cómo crear su propio sistema de Ayuda, vea Crear Ayuda.

Vea también

HELP | SET HELP | SET TOPIC ID


SET TOPIC ID (Comando)

Especifica el tema de Ayuda que se va a mostrar al invocar el sistema de Ayuda de Visual FoxPro. El tema de Ayuda se basa en el identificador de contexto del tema.

SET TOPIC ID TO nHelpContextID

Parámetros

nHelpContextID
Especifica el tema de Ayuda que va a aparecer en pantalla, basándose en un Id. de contexto numérico. nHelpContextID es un número de contexto en la sección MAP del archivo del proyecto de Ayuda.

Vea también

HELP | SET HELP | SET TOPIC


SET TRBETWEEN (Comando)

Activa o desactiva el seguimiento entre puntos de interrupción en la ventana Seguimiento.

SET TRBETWEEN ON | OFF

Parámetros

ON
Especifica que las líneas de código del programa se vayan mostrando y resaltando en la ventana Seguimiento a medida que se ejecutan. Ejecutar SET TRBETWEEN ON es lo mismo que activar el comando Seguimiento entre puntos de interrupción en el menú Programa de la ventana Seguimiento.
OFF
(Predeterminado). Especifica que solamente se resalte en la ventana Seguimiento la última línea en la que se interrumpió la ejecución del programa. Ejecutar SET TRBETWEEN OFF es lo mismo que desactivar el comando Seguimiento entre puntos de interrupción.

Observaciones

La ventana Seguimiento muestra el código fuente de un programa a medida que se ejecuta. La línea del programa que se está ejecutando aparece resaltada. Cuando la ventana Seguimiento está abierta, puede establecer puntos de interrupción que detengan la ejecución del programa.

La ventana Seguimiento puede abrirse también ejecutando ACTIVATE WINDOW TRACE, SET ECHO ON o SET STEP ON.

Vea también

ACTIVATE WINDOW | SET ECHO | SET STEP


SET TYPEAHEAD (Comando)

Especifica el número máximo de caracteres que pueden almacenarse en el búfer de escritura.

SET TYPEAHEAD TO nCharacters

Parámetros

nCharacters
Especifica el número máximo de caracteres que se van a almacenar en el búfer de escritura.

No se almacena ningún carácter en el búfer de escritura en caso de ejecutar SET TYPEAHEAD TO 0. Esta instrucción desactiva INKEY( ) y ON KEY.

Observaciones

El búfer de escritura puede almacenar hasta 32.000 caracteres hasta que estén listos para procesarse. El valor predeterminado de SET TYPEAHEAD es 20.

Vea también

INKEY( ) | ON KEY | TYPE (Comando)


SET UDFPARMS (Comando)

Especifica si Visual FoxPro transfiere los parámetros a una función definida por el usuario (FDU) por valor o por referencia.

SET UDFPARMS TO VALUE | REFERENCE

Parámetros

TO VALUE
Especifica que una variable se transfiera por valor a una función definida por el usuario. Al transferir una variable por valor, el valor de la variable se puede modificar en la función definida por el usuario, pero el valor original de la variable en el programa que llama no se modifica.
TO REFERENCE
Especifica que una variable se transfiera por referencia a una función definida por el usuario. Cuando una variable se transfiera por referencia y la función definida por el usuario cambie el valor de la variable transferida, el valor original de la variable en el programa que llama también se modificará.

Observaciones

De forma predeterminada, las variables se transfieren por valor a una función definida por el usuario. (Las variables transferidas a procedimientos con DO ... WITH se transfieren por referencia).

Puede forzar que los parámetros se transfieran a una FDU por valor o por referencia, independientemente de la configuración de SET UDFPARMS. Encierre la variable entre paréntesis para obligar a que se transfiera por valor. Anteponga el símbolo @ a la variable para forzar a que se transfiera por referencia.

Sugerencia Pueden transferirse matrices completas a un procedimiento o FDU. Se transferirá la matriz completa si ejecuta SET UDFPARMS TO REFERENCE o si incluye @ delante del nombre de la matriz. Si ejecuta SET UDFPARMS TO VALUE o escribe el nombre de la matriz entre paréntesis, se pasa por valor el primer elemento de la matriz. Los elementos de matriz siempre se pasan por valor.

Ejemplo

El ejemplo siguiente ilustra la diferencia entre transferir variables por valor y por referencia.

*** Pass variable by value ***
CLEAR
SET TALK OFF
WAIT 'Press a key to pass by value' WINDOW
SET UDFPARMS TO VALUE
STORE 1 TO gnX
*** The value of gnX is unchanged ***
@ 2,2 SAY 'UDF value: ' + STR(plusone(gnX))
@ 4,2 SAY 'Value of gnX: ' + STR(gnX)
*** Pass variable by reference ***
WAIT 'Press a key to pass by reference' WINDOW
CLEAR
SET UDFPARMS TO REFERENCE
STORE 1 TO gnX
*** The value of gnX is changed ***
@ 2,2 SAY 'UDF value: ' + STR(plusone(gnX))
@ 4,2 SAY 'Value of X: ' + STR(gnX)
SET UDFPARMS TO VALUE
*** This is a UDF that adds one to a number ***
FUNCTION plusone
PARAMETER gnZ
gnZ = gnZ + 1
RETURN gnZ
*** End of UDF ***

Aquí está el ejemplo anterior con las variables transferidas por valor y por referencia, a través del uso de paréntesis y @, respectivamente:

*** Pass variable by value ***
CLEAR
SET TALK OFF
WAIT 'Press a key to pass by value' WINDOW
STORE 1 TO gnX
@ 2,2 SAY 'UDF value: ' + STR(plusone((gnX)))
@ 4,2 SAY 'Value of gnX: ' + STR(gnX)
*** Pass variable by reference ***
WAIT 'Press a key to pass by reference' WINDOW
CLEAR
STORE 1 TO gnX
@ 2,2 SAY 'UDF value: ' + STR(plusone(@gnX))
@ 4,2 SAY 'Value of gnX: ' + STR(gnX)
*** This is a UDF that adds one to a number ***
FUNCTION plusone
PARAMETER gnZ
gnZ = gnZ + 1
RETURN gnZ
*** End of UDF ***

Vea también

DO | LPARAMETERS | PARAMETERS | PARAMETERS( ) | PROCEDURE


SET UNIQUE (Comando)

Especifica si los registros con valores de clave de índice duplicados se mantienen en un archivo de índice.

SET UNIQUE ON | OFF

Parámetros

ON
Especifica que los registros con un valor de clave de índice duplicado no se incluyan en el archivo de índice. Únicamente se incluye en el archivo de índice el primer registro con el valor de la clave de índice original.
OFF
(Predeterminado) Especifica que los registros con valores de clave de índice duplicados se incluyan en el archivo de índice.

Observaciones

Un archivo de índice conserva la configuración de SET UNIQUE al ejecutar REINDEX. Para obtener más información, vea INDEX e REINDEX.

SET UNIQUE tiene como alcance la sesión actual de datos.

Vea también

INDEX | REINDEX | SET DATASESSION


SET VIEW (Comando)

Abre o cierra la ventana Sesión de datos o restaura el entorno de Visual FoxPro desde un archivo de vista.

SET VIEW ON | OFF -or- SET VIEW TO FileName | ?

Parámetros

ON
Abre la ventana Sesión de datos.
OFF
(Predeterminado) Cierra la ventana Sesión de datos.
TO FileName
Restaura el entorno de Visual FoxPro al estado en que se encontraba cuando se creó el archivo de vista especificado con FileName. Los archivos de vista se crean con CREATE VIEW.
?
Muestra el cuadro de diálogo Abrir, desde el cual puede abrir un archivo de vista.

Observaciones

Para obtener más información acerca de los archivos de vista, vea CREATE VIEW.

Vea también

CREATE VIEW | SET | Ventana Sesión de datos


SHOW MENU (Comando)

Muestra una o más barras de menús definidas por el usuario, sin activarlas.

SHOW MENU MenuBarName1 [, MenuBarName2 ...] | ALL [PAD MenuTitleName] [SAVE]

Parámetros

MenuBarName1 [, MenuBarName2 ...]
Especifica el nombre de una o más barras de menús que va a mostrar.
ALL
Muestra todas las barras de menús definidas actualmente.
PAD MenuTitleName
Especifica el título del menú que se va a resaltar en la barra de menús.
SAVE
Conserva una imagen de las barras de menús especificadas sin activarlas. Estas imágenes pueden borrarse con CLEAR.

Observaciones

Las barras de menús se muestran pero no pueden utilizarse. Para que puedan mostrarse, debe crearlas primero con DEFINE MENU.

Ejemplo

CLEAR
DEFINE MENU mnuExample BAR AT LINE 2
DEFINE PAD padConv OF mnuExample PROMPT '\<Conversions' COLOR SCHEME 3 ;
KEY ALT+C, ''
DEFINE PAD padCard OF mnuExample PROMPT 'Card \<Info' COLOR SCHEME 3 ;
KEY ALT+I, ''
SHOW MENU mnuExample

Vea también

ACTIVATE MENU | CREATE MENU | DEFINE MENU


SHOW POPUP (Comando)

Muestra uno o varios menús definidos con DEFINE POPUP sin activarlos.

SHOW POPUP MenuName1 [, MenuName2 ...] | ALL    [SAVE]

Parámetros

MenuName1 [, MenuName2 ...]
Especifica el nombre de uno o más menús que se van a mostrar.
ALL
Muestra todos los menús definidos actualmente.
SAVE
Retiene una imagen de los menús especificados sin activarlos. Las imágenes de menú pueden borrarse con CLEAR.

Observaciones

Los menús se muestran pero no pueden utilizarse. Para poder mostrarlos, los menús deben haberse creado previamente con DEFINE POPUP.

Vea también

ACTIVATE POPUP | DEFINE POPUP | DEACTIVATE POPUP (Comando) | CLEAR (Comandos)


SHOW WINDOW (Comando)

Muestra una o más ventanas definidas por el usuario o ventanas del sistema de Visual FoxPro, sin activarlas.

SHOW WINDOW WindowName1 [, WindowName2 ...] | ALL | SCREEN [IN [WINDOW] WindowName3   [REFRESH]   [TOP | BOTTOM | SAME]   [SAVE]

Parámetros

WindowName1 [, WindowName2 ...]
Especifica el nombre de una o varias ventanas que se van a mostrar.
ALL
Muestra todas las ventanas definidas por el usuario.
SCREEN
Muestra la ventana principal de Visual FoxPro cuando está oculta. También puede elegir Pantalla en el menú Ventana para mostrar la ventana principal de Visual FoxPro. Puede ocultar la ventana principal de Visual FoxPro haciendo clic en su cuadro de cierre o ejecutando DEACTIVATE WINDOW SCREEN, HIDE WINDOW SCREEN o RELEASE WINDOW SCREEN.
IN [WINDOW] WindowName3
Muestra la ventana dentro de una ventana primaria especificada con WindowName3. La ventana no adopta las características de la ventana primaria. Una ventana que se muestra dentro de una ventana primaria no puede moverse fuera de ésta. Si se mueve la ventana primaria, la ventana secundaria se moverá con ella.

La ventana primaria especificada con WindowName3 debe crearse primero con DEFINE WINDOW.

IN SCREEN
Muestra explícitamente la ventana en la ventana principal de Visual FoxPro en lugar de en otra ventana. De forma predeterminada, las ventanas se colocan en la ventana principal de Visual FoxPro.
REFRESH
Vuelve a dibujar una ventana Examinar. Esto es útil en una red para asegurarse de que está explorando la versión más reciente de una tabla. Se seleccionará el área de trabajo de la tabla de la ventana Examinar.

Las ventanas de edición de memos se actualizan con los cambios realizados por otros usuarios de la red al campo memo. SET REFRESH determina el intervalo entre las actualizaciones de la ventana de edición del memo. Consulte SET REFRESH para obtener más información acerca de cómo se actualizan los datos en tablas abiertas para uso compartido en una red.

TOP
Coloca la ventana especificada delante de todas las demás.
BOTTOM
Coloca la ventana especificada detrás de todas las demás.
SAME
Vuelve a colocar la ventana especificada en una pila de ventanas en la misma posición que ocupaba antes de desactivarla. SAME afecta únicamente a las ventanas que se han mostrado o activado previamente, y después se han borrado de la ventana principal de Visual FoxPro con DEACTIVATE WINDOW.
SAVE
Conserva una imagen de una ventana en la ventana principal de Visual FoxPro o en otra ventana después de liberar la ventana. Normalmente, las ventanas se quitan de la ventana principal de Visual FoxPro después de liberarlas. La imagen de la ventana se puede borrar de la ventana principal de Visual FoxPro o de otra ventana con CLEAR.

Observaciones

SHOW WINDOW controla la presentación y el orden de colocación de las ventanas. Si una ventana está oculta o no se ha activado, SHOW WINDOW la muestra sin activarla. Si se muestran simultáneamente una o más ventanas, SHOW WINDOW le permite cambiar el orden de colocación de las ventanas.

También puede mostrar las ventanas del sistema, como la ventana Comandos.

En Visual FoxPro, puede utilizar SHOW WINDOW para mostrar las barras de herramientas de Visual FoxPro. Use HIDE WINDOW para quitar una barra de herramientas de la ventana de FoxPro. Las barras de herramientas deben que estar activas para poder mostrarlas. La siguiente tabla indica los nombres de las barras de herramientas de Visual FoxPro que puede utilizar en SHOW WINDOW y HIDE WINDOW. Escriba entre comillas los nombres de las barras de herramientas.

Nombres de barras de herramientas |  |
Paleta de colores | Diseño | Diseñador de informes
Diseñador de bases de datos | Vista preliminar | Estándar
Controles de formulario | Diseñador de consultas | Diseñador de vistas
Diseñador de formularios | Controles de informes |

Para mostrar una ventana del sistema, escriba entre comillas el nombre completo de la misma.

No puede especificar que se dirija la salida a una ventada definida por el usuario con SHOW WINDOW. Utilice ACTIVATE WINDOW para dirigir la salida a una ventana creada con DEFINE WINDOW.

Históricamente en versiones anteriores de Visual FoxPro, la ventana Sesión de datos se ha referenciado como ventana View. Adicionalmente, el lenguaje usado para controlar esta ventan, como HIDE WINDOW, ACTIVATE WINDOW, WONTOP( ), también se refiere a ella como ventana View. Visual FoxPro continúa refiriéndose a la ventana View para el comando SHOW WINDOW.

Ejemplo

En el siguiente ejemplo, se crea y se muestra una ventana llamada Output1. Puesto que se utiliza SHOW WINDOW para mostrar la ventana, la salida no se puede dirigir a dicha ventana hasta que se active.

CLEAR
DEFINE WINDOW wOutput1 FROM 2,1 TO 13,75 TITLE 'Output' ;
CLOSE FLOAT GROW ZOOM
SHOW WINDOW wOutput1

Vea también

ACTIVATE WINDOW | DEFINE WINDOW | CLEAR (Comandos)


SIZE POPUP (Comando)

Cambia el tamaño de un menú creado con DEFINE POPUP.

SIZE POPUP MenuName TO nRow1, nColumn1 | BY nRow2, nColumn2

Parámetros

MenuName
Especifica el nombre del menú cuyo tamaño desea cambiar.
TO nRow1, nColumn1
Cambia el tamaño de un menú a un tamaño determinado. nRow1 y nColumn1 especifican las nuevas coordenadas de fila y columna, respectivamente, de la esquina inferior derecha del menú.
BY nRow2, nColumn2
Cambia el tamaño de un menú con respecto a su tamaño actual. nRow2 y nColumn2 especifican el cambio en el tamaño del menú en filas y columnas, con respecto a las coordenadas actuales de fila y columna de la esquina inferior derecha del menú.

Observaciones

Si se ha creado un menú definido por el usuario, puede cambiarse su tamaño; no es necesario que esté activo o visible.

Ejemplo

Este ejemplo crea un menú que contiene archivos con la extensión .PRG y lo mueve, lo agranda y lo comprime antes de cerrarlo.

CLEAR
DEFINE POPUP popMovIn FROM 2,2 TO 7, 14 PROMPT FILES LIKE *.PRG ;
TITLE 'Programs'
ACTIVATE POPUP popMovIn NOWAIT
=CHRSAW(2)
MOVE POPUP popMovIn BY 5,5     && Move popup down
=CHRSAW(2)
SIZE POPUP popMovIn BY 5,5  && Enlarge the popup
=CHRSAW(2)
SIZE POPUP popMovIn BY -5,-5  && Shrink the popup
=CHRSAW(2)
MOVE POPUP popMovIn BY -5,-5  && Move popup up
=CHRSAW(2)
DEACTIVATE POPUP popMovIn
RELEASE POPUP popMovIn

Vea también

ACTIVATE POPUP | CLEAR (Comandos) | DEFINE POPUP (Comando)


SIZE WINDOW (Comando)

Cambia el tamaño de una ventana creada con DEFINE WINDOW o una ventana del sistema de Visual FoxPro.

SIZE WINDOW WindowName TO nRow1, nColumn1 | BY nRow2, nColumn2

Parámetros

WindowName
Especifica el nombre de la ventana cuyo tamaño desea cambiar.

Para cambiar el tamaño de una ventana del sistema, escriba el nombre completo de la misma entre comillas. Por ejemplo, para ampliar el tamaño de la ventana Comandos en 1 fila y 1 columna, ejecute el comando siguiente:

SIZE WINDOW 'Command Window' BY 1,1

Sólo puede cambiar el tamaño de las ventanas Comando, Depuración y Seguimiento.

TO nRow1, nColumn1
Cambia el tamaño de una ventana a un tamaño específico. nRow1 y nColumn1 especifican las nuevas coordenadas de fila y columna, respectivamente, de la esquina inferior derecha de la ventana con respecto a la esquina superior izquierda de la ventana.
BY nRow2, nColumn2
Cambia el tamaño de una ventana con respecto a su tamaño actual. nRow2 y nColumn2 especifican el cambio de tamaño de la ventana en filas y columnas con respecto a las coordenadas actuales de fila y columna de la esquina inferior derecha de la ventana.

Observaciones

Si se ha creado una ventana definida por el usuario, se puede cambiar su tamaño; no tiene por qué estar activa o visible.

Vea también

ACTIVATE WINDOW | DEFINE WINDOW | ZOOM WINDOW


SKIP (Comando)

Mueve el puntero de registro hacia adelante o hacia atrás en una tabla.

SKIP   [nRecords]   [IN nWorkArea | cTableAlias]

Parámetros

nRecords
Especifica el número de registros que hay que mover el puntero.

Si ejecuta SKIP sin nRecords, el puntero avanzará al siguiente registro. El puntero de registro se mueve hacia el final del archivo nRecords si nRecords tiene un valor positivo. El puntero de registro se moverá hacia el principio del archivo nRecords si nRecords tiene un valor negativo.

Si el puntero de registro está colocado en el último registro de una tabla y se ejecuta SKIP sin argumentos, RECNO( ) devolverá un valor superior en uno al número de registros de la tabla y EOF( ) devolverá verdadero (.T.). Si el puntero de registro está colocado en el primer registro de una tabla y se ejecuta SKIP -1, RECNO( ) devolverá 1 y BOF( ) devolverá (.T.).

IN nWorkArea | cTableAlias
Mueve el puntero de registro en una tabla de un área de trabajo específica. nWorkArea especifica el número del área de trabajo y cTableAlias especifica el alias de una tabla o de un área de trabajo.

Observaciones

Si la tabla tiene una etiqueta de índice de control principal o un archivo de índice, SKIP mueve el puntero de registro al registro determinado por la secuencia de índice.

Ejemplo

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer  && Opens Customer table
CLEAR
SKIP 4 IN 'customer'
? RECNO('customer')  && Displays 5
GO BOTTOM
SKIP -5
? RECNO( )

Vea también

GO | GOTO | SET SKIP | CLEAR (Comandos)


SORT (Comando)

Ordena los registros de la tabla seleccionada actualmente y envía los registros ordenados a una tabla nueva.

SORT TO TableName ON FieldName1 [/A | /D] [/C] [, FieldName2 [/A | /D] [/C] ...]   [ASCENDING | DESCENDING] [Scope] [FOR lExpression1] [WHILE lExpression2] [FIELDS FieldNameList   | FIELDS LIKE Skeleton
| FIELDS EXCEPT Skeleton]   [NOOPTIMIZE]

Parámetros

TableName
Especifica el nombre de la nueva tabla que contiene los registros ordenados. Visual FoxPro supone una extensión de archivo .dbf para las tablas. La extensión .dbf se asigna automáticamente si el nombre de archivo incluido no tiene ninguna extensión.
ON FieldName1
Especifica el campo de la tabla seleccionada actualmente en el que se basa el orden. El contenido y el tipo de datos del campo determinarán el orden de los registros de la tabla. De forma predeterminada, la ordenación se hará en sentido ascendente. No podrá ordenar por campos de tipo Memo o General.

El ejemplo siguiente ordena una tabla por el campo cust_id. Se abre customer y se ordena en una tabla nueva llamada temp. Los registros de temp se ordenan por el campo cust_id.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer  && Opens Customer table
CLEAR
LIST FIELDS company, cust_id NEXT 3
SORT TO temp ON cust_id
USE temp
LIST FIELDS company, cust_id NEXT 3
WAIT WINDOW 'Now sorted on CUST_ID' NOWAIT

Puede incluir nombres de campo adicionales (FieldName2, FieldName3) para ordenar aun más la tabla nueva. El primer campo FieldName1 es el campo de ordenación principal, el segundo campo FieldName2 es el campo de ordenación secundario, etc.

[/A | /D] [/C]
Puede especificar un sentido ascendente o descendente para cada uno de los campos que incluya en la ordenación. La opción /A especifica orden ascendente. La opción /D especifica orden descendente. /A o /D pueden incluirse con cualquier tipo de campo.

De forma predeterminada, el sentido de ordenación de los campos alfanuméricos distingue entre mayúsculas y minúsculas. Si incluye la opción /C después del nombre de un campo alfanumérico, se pasará por alto la diferencia. Puede combinar la opción /C con la opción /A o /D. Por ejemplo, /AC o /DC.

En el ejemplo siguiente se crea una tabla nueva denominada clients. La tabla orders se ordena según el campo order_date en orden ascendente y según el campo freight en orden descendente

USE orders
SORT TO clients ON order_date/A,freight/D
ASCENDING
Especifica un orden ascendente para todos los campos que no vayan seguidos de la opción /D.
DESCENDING
Especifica un orden descendente para todos los campos que no vayan seguidos de la opción /A.

Si no incluye ASCENDING o DESCENDING, asumirá el sentido de ordenación predeterminado, que es ascendente.

Scope
Especifica un intervalo de registros que desea ordenar. Las cláusulas de alcance son: ALL, NEXT nRecords, RECORD nRecordNumber y REST.

El alcance predeterminado de SORT es ALL (todos los registros).

FOR lExpression1
Especifica que solamente se incluyan en la ordenación los registros de la tabla actual para los que la condición lógica lExpression1 da como resultado verdadero (.T.). Incluir FOR le permite ordenar registros condicionalmente, filtrando los registros no deseados.

Rushmore Query Optimization optimizará un comando SORT ... FOR si lExpression1 es una expresión optimizable. Para obtener el máximo rendimiento, utilice una expresión optimizable en la cláusula FOR.

Encontrará en Optimizar aplicaciones un análisis de las expresiones que se pueden optimizar con Rushmore.

WHILE lExpression2
Especifica una condición según la cual los registros de la tabla actual se incluyen en la ordenación hasta que la expresión lógica lExpression2 los califique como verdaderos (.T.).
FIELDS FieldNameList
Especifica los campos procedentes de la tabla original que se van a incluir en la nueva tabla creada por SORT. Si no se incluye la cláusula FIELDS, se incluirán todos los campos de la tabla original en la nueva tabla.
FIELDS LIKE Skeleton
Especifica que los campos de la tabla original que coincidan con la estructura de campo Skeleton se incluyan en la nueva tabla creada por SORT.
FIELDS EXCEPT Skeleton
Especifica que todos los campos, excepto los que coincidan con la estructura de campo Skeleton se incluyen en la nueva tabla creada por SORT.

La estructura de campos Skeleton admite caracteres comodín. Por ejemplo, para especificar que se incluyan en la nueva tabla todos los campos que comienzan por las letras A y P, utilice la instrucción siguiente:

SORT TO mytable ON myfield FIELDS LIKE A*,P*

Puede combinar la cláusula LIKE con la cláusula EXCEPT:

SORT TO mytable ON myfield FIELDS LIKE A*,P* EXCEPT PARTNO*
NOOPTIMIZE
Desactiva la optimización Rushmore de SORT.

Para obtener más información, vea SET OPTIMIZE y Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.

Observaciones

El orden en que aparecerán los registros de la nueva tabla está determinado por uno o más campos de la tabla actual.

Precaución Asegúrese de que tiene suficiente espacio en disco para la nueva tabla y para los archivos temporales creados al ordenar. El espacio en disco necesario para realizar una ordenación puede ser, como máximo, tres veces el tamaño de la tabla de origen. La cantidad de espacio disponible en disco puede determinarse con DISKSPACE( ) y SYS(2020). Si agota el espacio del disco durante una ordenación, Visual FoxPro mostrará un mensaje de error y se eliminarán los archivos temporales.

Es posible que los campos de tipo carácter que contienen números y espacios no se ordenen en el sentido esperado. Los campos numéricos se llenan de derecha a izquierda, con espacios vacíos a la izquierda. Por el contrario, los campos alfanuméricos se llenan de izquierda a derecha, con espacios vacíos a la derecha.

Por ejemplo, si dos registros de una tabla contienen un campo de tipo carácter con el valor 1724 en un registro y el valor 18 en otro, y se ordena la tabla en orden ascendente en este campo, se mostrará el registro que contiene 1724 antes que el registro que contiene 18. Esto se debe a que Visual FoxPro lee cada carácter de los campos de caracteres de izquierda a derecha; como 17 (de 1724) es menor que 18 (de 18), Visual FoxPro coloca 1724 en primer lugar. Para evitar este problema, siempre debe agregar ceros al principio de los números más bajos (0018) o convertir el campo en un campo de tipo numérico.

Vea también

COPY FILE | DISKSPACE( ) | INDEX | SYS(2020) - Tamaño predeterminado de disco


STORE (Comando)

Almacena datos en una variable, en una matriz o en un elemento de matriz.

STORE eExpression TO VarNameList | ArrayNameList-or- VarName | ArrayName = eExpression

Parámetros

eExpression
Especifica una expresión cuyo valor se almacena en la variable, la matriz o el elemento de matriz. Si no existe la variable, se crea y se inicializa en eExpression. Una matriz debe estar definida previamente con DIMENSION. STORE sustituye el valor de una variable, matriz o elemento de matriz existente con el valor nuevo.
VarNameList
Especifica una lista de variables o elementos de matriz en los que se almacena eExpression. Separe los nombres o elementos de matriz con comas.
ArrayNameList
Especifica una lista de nombres de matrices existentes en las que se almacena eExpression. Separe con comas el nombre de las matrices.

STORE inicializa cada elemento de las matrices con el valor especificado si SET COMPATIBLE está establecido en OFF. STORE almacena el valor especificado en variables de memoria con los nombres especificados si SET COMPATIBLE está establecido en ON y sobrescribe las matrices existentes que tengan esos nombres.

Observaciones

Una alternativa a STORE es el signo igual (=). La variable, la matriz o el elemento de matriz debe estar a la izquierda del signo igual, y su valor a la derecha.

Las fechas pueden almacenarse directamente en variables, matrices o elementos de matriz mediante llaves.

STORE {^1998-12-25} TO gdXMas

El número máximo de variables o matrices que puede crear se muestra en el tema Capacidades del sistema. El límite se puede aumentar o reducir en el archivo de configuración de Visual FoxPro. Para obtener más información acerca de la configuración de Visual FoxPro, vea Personalizar el entorno de Visual FoxPro.

Ejemplo

STORE DATE( ) TO gdDate
STORE 50 TO gnNumeric
STORE 'Hello' TO gcCharacter
STORE .T. TO glLogical
STORE $19.99 TO gyCurrency
DIMENSION gaMyArray(2,2)
SET COMPATIBLE OFF
STORE 2 TO gaMyArray
CLEAR
DISPLAY MEMORY LIKE g*

Vea también

DIMENSION | SET COMPATIBLE | Capacidades del sistema | Personalizar el entorno de Visual FoxPro


SUM (Comando)

Totaliza los valores de todos los campos numéricos especificados en la tabla actual seleccionada.

SUM [eExpressionList]   [Scope] [FOR lExpression1] [WHILE lExpression2] [TO MemVarNameList | TO ARRAY ArrayName]   [NOOPTIMIZE]

Parámetros

eExpressionList
Especifica uno o varios campos o expresiones de campo que se van a totalizar. Si se omite la lista de expresiones de campo, se totalizarán todos los campos numéricos.
Scope
Especifica un intervalo de registros que se van a utilizar en el total. Las cláusulas de alcance son: ALL, NEXnRecords, RECORD nRecordNumber, y REST. Para obtener más información acerca de las cláusulas de alcance, vea Cláusulas de alcance.

El alcance predeterminado de SUM es ALL (todos los registros).

FOR lExpression1
Especifica que solamente se incluyen en el total los registros para los cuales la condición lógica lExpression1 da como resultado verdadero (.T.). La inclusión de FOR le permite calcular totales de registros de forma condicional, descartando los registros no deseados.

Optimización de Consultas Rushmore optimiza el comando SUM ... FOR si lExpression1 es una expresión optimizable. Para obtener el máximo rendimiento, utilice una expresión optimizable en la cláusula FOR.

Para obtener más información acerca de la optimización Rushmore, vea SET OPTIMIZE y Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.

WHILE lExpression2
Especifica una condición por la cual los registros de la tabla activa se incluyen en el total siempre y cuando la expresión lógica lExpression2 de como resultado verdadero (.T.).
TO MemVarNameList
Almacena cada total en una variable. Si especifica en MemVarNameList el nombre de una variable que no existe, Visual FoxPro la creará automáticamente. Separe los nombres de variables en la lista con comas.
TO ARRAY ArrayName
Almacena los totales en una matriz de variables. Si la matriz que especifica en SUM no existe, Visual FoxPro la creará automáticamente. Si la matriz existe y es demasiado pequeña para albergar todos los datos, se aumentará automáticamente el tamaño de la matriz para admitir los totales.
NOOPTIMIZE
Desactiva la optimización Rushmore de SUM.

Si desea obtener más información, vea SET OPTIMIZE y Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.

Ejemplo

El ejemplo siguiente muestra los totales de los campos in_stock y on_order de la tabla products, junto con una suma de los dos totales.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE products  && Opens Products table
SUM in_stock, on_order, in_stock+on_order ;
TO gnInStock, gnOnOrder, gnUnits
CLEAR
?
? 'Total in stock : ', gnInStock  && Displays 3119.00
? 'Total on order:  ', gnOnOrder  && Displays 780.00
? 'Total # units :  ', gnUnits  && Displays 3899.00

Vea también

Comandos | AVERAGE | CALCULATE | COUNT | SET OPTIMIZE | Utilizar optimización de consultas Rushmore para acelerar el acceso de datos


SUSPEND (Comando)

Utilice SUSPEND para suspender la ejecución del programa y volver a Visual FoxPro interactivo.

SUSPEND

Observaciones

Mientras hay una pausa en un programa, puede ejecutar comandos, comprobar los valores de las variables, abrir las ventanas Seguimiento y Depuración, etc.

Todas las variables creadas mientras el programa está en pausa son PRIVATE.

Utilice RESUME para reiniciar la ejecución de un programa suspendido. La ejecución de un programa suspendido continúa con la línea que sigue a la línea que contiene SUSPEND.

Vea también

CANCEL | RESUME | PRIVATE


TEXT ... ENDTEXT (Comando)

Envía líneas de texto especificadas por TextLines al dispositivo de salida actual. Visual FoxPro envía líneas de texto al dispositivo de salida actual hasta que encuentra una instrucción ENDTEXT o hasta que encuentre el final del programa.

El dispositivo de salida actual puede incluir el ventana principal de Visual FoxPro, una ventana definida por el usuario, una impresora, un archivo de texto o un archivo de bajo nivel.

TEXT [TO VarName [ADDITIVE] [TEXTMERGE] [NOSHOW] [PRETEXT eExpression]] TextLines
ENDTEXT

Parámetros

TextLines
Especifica el texto enviado al dispositivo de salida activo. TextLines puede contener texto, variables de memoria, elementos de matriz, expresiones, funciones o cualquier combinación de todo esto.
Nota Las expresiones, funciones, variables de memoria y elementos de matriz especificados con TextLines se evaluarán solamente si SET TEXTMERGE está establecido en ON y deberán encerrarse entre los delimitadores especificados por SET TEXTMERGE DELIMITERS. Si SET TEXTMERGE está establecido en OFF, las expresiones, funciones, variables de memoria y elementos de matriz se mostrarán como literales junto con sus delimitadores.

Por ejemplo, si SET TEXTMERGE está establecido en ON, Visual FoxPro evalúa y muestra la fecha de hoy si especifica la función DATE( ) dentro de los delimitadores apropiados <<DATE( )>> en TextLines. De otro modo, si SET TEXTMERGE es OFF, Visual FoxPro aparecerá literalmente como <<DATE( )>>.

Si sitúa observaciones entre TEXT y ENDTEXT o después de \ o \\, aparecerán también los observaciones.

TO VarName
Es el nombre de la variable de memoria que se utiliza para pasar el contenido de la instrucción de control TEXT…ENDTEXT. Es posible que esta variable ya exista.
Si aún no se ha declarado la variable, se creará automáticamente como una variable de alcance Private. La nueva configuración TO funcionará independientemente de SET TEXTMERGE. Si se establece SET TEXTMERGE en un archivo y se incluye la instrucción TO, tanto el archivo como la variable recibirán los resultados.
ADDITIVE
Esta palabra clave determina si se sobrescribe el contenido de la variable TO o se agrega al contenido existente.
Nota Si el contenido de TO VarName no es una cadena, Visual FoxPro siempre sobrescribe el contenido de VarName.
TEXTMERGE
Permite la evaluación del contenido existente entre los delimitadores, sin tener que ejecutar SET TEXTMERGE ON.
NOSHOW
Deshabilita la presentación en pantalla de la combinación de texto.
PRETEXT eExpression
Especifica una cadena de caracteres o una expresión numérica a insertar antes de cada línea de la combinación de texto contenido entre TEXT...ENDTEXT.

La siguiente tabla describe el comportamiento de la cláusula PRETEXT dependiendo de la expresión especificada por eExpression.

eExpression Comportamiento de PRETEXT
Expresión de caracteres Inserta la expresión antes de cada línea del texto combinado que aparece en medio de la instrucción TEXT...ENDTEXT. Cuando utilice PRETEXT con TEXT...ENDTEXT, eExpression está limitada a una longitud máxima de 255 caracteres.

eExpression sobrescribe el contenido de la variable de sistema _PRETEXT. Cuando eExpression contiene una expresión que necesita evaluarse, por ejemplo, una función definida por el usuario (FDU), Visual FoxPro la evalúa sólo una vez cuando aparece el comando TEXT.
Expresión numérica Especifica valores bandera aditivos para determinar el comportamiento para el contenido del texto combinado que aparece en medio de la instrucción TEXT...ENDTEXT.

Por ejemplo, un valor de 7 especifica que Visual FoxPro elimine todos los espacios en blanco incluyendo tabuladores y retornos de carro. Un valor por fuera del rango 0-7 produce un error.

Nota Especificar un valor de cero no elimina espacios en blanco.

Cuando eExpression es una expresión numérica, puede utilizar la variable de sistema _PRETEXT para insertar texto después de que Visual FoxPro elimine los espacios en blanco.

La siguiente tabla muestra los valores bandera aditivos que puede utilizar en eExpression para especificar comportamiento adicional.

Valor (Aditivo) | Descripción
1 | Elimina espacios antes de cada línea.
2 | Elimina tabuladores antes de cada línea.
4 | Elimina retornos de carro, por ejemplo, líneas en blanco, antes de cada línea.
Nota A diferencia de la variable se sistema _PRETEXT, la cláusula PRETEXT no tiene alcance global y sólo se aplica a la instrucción TEXT...ENDTEXT en la cual aparece.

La eliminación de caracteres usando la cláusula PRETEXT sólo se aplica al texto dentro de la instrucción TEXT...ENDTEXT y no al texto combinado evaluado desde cExpression. En el siguiente ejemplo, los espacios en la variable de memoria, myvar, no se borran cuando se combina con el texto en TEXT...ENDTEXT:

myvar = "   AAA"
TEXT TO x NOSHOW ADDITIVE TEXTMERGE PRETEXT 7
Start Line
<<myvar>>
BBB
CCC
ENDTEXT

Observaciones

En forma predeterminada, TEXT ... ENDTEXT envía la salida a la ventana principal de Visual FoxPro o a la ventana activa, para suprimir esta salida ejecute SET CONSOLE OFF. Para enviar la salida a una impresora o un archivo de texto, utilice SET PRINTER. Para enviar la salida enviar la salida a un archivo de bajo nivel creado o abierto usando FCREATE( ) o FOPEN( ), almacene el controlador de archivo devuelto por FCREATE( ) o FOPEN( ) en la variable de sistema _TEXT, la cual puede utilizar para dirigir la salida al archivo de bajo nivel correspondiente.

Nota El proceso de combinar texto normalmente incluye algunos espacios en blanco que podrían aparecer antes de cada línea en una instrucción TEXT...ENDTEXT. Si embargo, la inclusión de espacios en blanco podría causar que fallara la combinación de texto, por ejemplo, cuando XML se utiliza en un explorador Web. Puede borrar tales espacios en blanco para evitar un XML formateado incorrectamente.

Ejemplos

Ejemplo 1

En el siguiente ejemplo se crea un archivo de bajo nivel llamado myNamesFile.txt y se guarda su controlador de archivo en la variable de sistema _TEXT. El programa sale si no se puede crear el archivo myNamesFile.txt.

Visual FoxPro abre la tabla customer y envía los nombres de los primeros diez contactos al archivo myNamesFile.txt. Visual FoxPro envía al archivo de texto el texto y los resultados de las funciones. El ejemplo utiliza MODIFY FILE para abrir myNamesFile.txt.

CLEAR
CLOSE DATABASES
SET TALK OFF

SET TEXTMERGE ON     && Habilita incrustar expresiones y funciones
STORE FCREATE('myNamesFile.txt') TO _TEXT
IF _TEXT = -1  && No puede crear archivo de bajo nivel entonces termina
WAIT WINDOW 'No puede crear archivo de salida. Presione una tecla para salir.'
CANCEL
ENDIF
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer  && Abre tabla Customer
TEXT
CONTACT NAMES
<<DATE( )>>    <<TIME( )>>
ENDTEXT

WAIT WINDOW 'Presione una tecla para generar los diez primeros nombres.'
SCAN NEXT 10
TEXT
<<contact>>
ENDTEXT
ENDSCAN
 CLOSE ALL  && Cierra el archivo de texto y la tabla
MODIFY FILE myNamesFile.txt
ERASE myNamesFile.txt

Ejemplo 2

El siguiente ejemplo muestra un procedimiento personal que utiliza TEXT...ENDTEXT para almacenar un XML DataSet en una variable. En el ejemplo, todos los espacios, tabuladores y retornos de carro se eliminan.

PROCEDURE myProcedure
DO CASE
CASE nValue = 1
TEXT TO myVar NOSHOW TEXT PRETEXT 7
<?xml version="1.0" encoding="utf-8"?>
<DataSet xmlns="http://tempuri.org">
<<ALLTRIM(STRCONV(leRetVal.item(0).xml,9))>>
</DataSet>
ENDTEXT
OTHERWISE
ENDCASE
ENDPROC

Vea también

FOPEN( ) (Función) | _PRETEXT (Variable del sistema) | SET TEXTMERGE (Comando) | SET TEXTMERGE DELIMITERS (Comando) | _TEXT (Variable del sistema)


TOTAL (Comando)

Calcula totales para campos numéricos de la tabla seleccionada actualmente.

TOTAL TO TableName ON FieldName   [FIELDS FieldNameList]   [Scope] [FOR lExpression1]   [WHILE lExpression2]   [NOOPTIMIZE]

Parámetros

TableName
Especifica el nombre de la tabla que va a contener los totales. Si la tabla especificada no existe, Visual FoxPro la creará. Si la tabla existe y SET SAFETY está establecido en ON, Visual FoxPro le preguntará si desea sobrescribir la tabla existente. Si SET SAFETY está establecido en OFF, no se le preguntará y se sobrescribirá la tabla de resultados.
FieldName
Especifica el campo en el que se agrupan los totales. Es necesario que la tabla esté ordenada por este campo, o que un índice abierto o una etiqueta de índice tengan este campo como su expresión de clave.
FIELDS FieldNameList
Especifica los campos cuyo total se debe calcular. Separe los nombres de campos de la lista con comas. Si omite la cláusula FIELDS, se calcula el total de todos los campos numéricos de forma predeterminada.
Alcance
Especifica un intervalo de registros cuyo total se calcula. El alcance predeterminado para TOTAL es ALL (todos los registros). Las cláusulas de alcance son: ALL, NEXT nRecords, RECORD nRecordNumber y REST.

Para obtener más información acerca de las cláusulas de alcance, vea los temas en pantalla Cláusulas de alcance.

FOR lExpression1
Especifica una condición por la que sólo se incluyen en los totales los registros que cumplen la condición lógica lExpression1.

Si lExpression1 es una expresión optimizable, Rushmore optimizará una consulta creada con TOTAL ... FOR. Para obtener el máximo rendimiento, utilice una expresión optimizable en la cláusula FOR.

Si desea obtener más información, vea SET OPTIMIZE y Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.

WHILE lExpression2
Especifica una condición por la cual los registros de la tabla activa se incluyen en los totales, siempre y cuando la expresión lógica lExpresión2 de como resultado verdadero (.T.).
NOOPTIMIZE
Desactiva la optimización Rushmore de TOTAL.

Si desea obtener más información, vea SET OPTIMIZE y Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.

Observaciones

Es necesario que la tabla del área de trabajo seleccionada actualmente esté ordenada o indexada. Se calcula un total separado para cada conjunto de registros que tengan un valor de campo común o un valor único de clave de índice. Los resultados se colocan en registros de una segunda tabla. En esta segunda tabla se crea un registro para cada valor de campo común o para cada valor único de clave de índice.

Puede producirse un desbordamiento numérico si los campos numéricos de la segunda tabla no son lo suficientemente amplios para contener los totales. Visual FoxPro conservará la parte más significativa de los totales cuando se produce un desbordamiento. Cuando un campo es demasiado pequeño para aceptar un total:

  • Se truncan los decimales y se redondea la parte decimal restante del total.
  • Si el total aún no cabe, se utiliza la notación científica en el caso de que el campo total contenga siete o más dígitos.
  • Por último, se sustituye el contenido del campo por asteriscos.

Vea también

AVERAGE | CALCULATE | INDEX | SORT | SUM


TRY...CATCH...FINALLY (Comando)

Proporciona una estructura para el control de errores y excepciones que puedan ocurrir mientras se ejecuta un bloque de código. Para mas información acerca del control estructurado de errores, ver Control estructurado de errores.

TRY [ tryCommands ] [ CATCH [ TO VarName ] [ WHEN lExpression ] [ catchCommands ] ] [ THROW [ eUserExpression ] ] [ EXIT ] [ FINALLY [ finallyCommands ] ] ENDTRY

Parámetros

TRY
Indica el principio de la estructura TRY...CATCH...FINALLY .
tryCommands
Especifica el código donde se puede producir algún error.

Si se produce algún error, Visual FoxPro guarda una referencia hacia el objeto Exception en la variable de memoria VarName especificada en la cláusula TO VarName . En este caso la ejecución del programa se redirige directamente a las instrucciones CATCH. Si no se produce ningún error, la ejecución del programa continúa en el bloque de instrucciones FINALLY .

CATCH
Indica el principio del bloque CATCH , para el control apropiado del error. Se puede especificar una instrucción CATCH sin ningún argumento; en ese caso, esta se evaluará como CATCH WHEN .T. (Verdadero).

Una instrucción CATCH se llama solamente cuando un error ocurre en el bloque TRY del método y si el código del método causa la excepción. Si un método llamado desde el bloque TRY produce un error, el evento Error de este método será el encargado de manejar el error. Este proceder és debido a que este método puede ser llamado directamente o desde otro método diferente que no contiene la estructura TRY...CATCH...FINALLY. El siguiente ejemplo muestra este proceder:

x=NEWOBJECT("myClass")
x.myMethod()
DEFINE CLASS myClass AS Session OLEPUBLIC
PROCEDURE myMethod
myMethod3()         && El evento Error controla el error.
TRY
THIS.myMethod2()
myMethod3()      && La estructura CATCH controla este error.
CATCH TO oErr
? "Catch:",oErr.ErrorNo
FINALLY
ENDTRY
ENDPROC
PROCEDURE myMethod2
x=y   && La variable y no existe. El Evento error controla este error.
ENDPROC
PROCEDURE Error(nError, cMethod, nLine)
? "Error:",nError
ENDPROC
ENDDEFINE
PROCEDURE myMethod3
x = y
ENDPROC
TO VarName
Especifica una variable de memoria opcional donde se guardará una referencia al objeto Exception, el cual se crea automáticamente si se produce un error en el bloque TRY . VarName puede ser solamente una variable de memoria, no puede ser una referencia a una propiedad de un objeto.

Se puede asignar explícitamente algún valor a VarName en la estructura TRY...CATCH...FINALLY . Este valor no cambiará mientras no se ejecute otra instrucción CATCH , entonces se cambiará VarName a NULL.

VarName puede tener un alcance local, público o privado, dependiendo de como haya sido declarada previamente. Si VarName no ha sido declarada previamente, tendrá un alcance privado. El objeto Exception creado tendrá el mismo alcance que la variable VarName. Cuando VarName sale del alcance, se elimina o cambia; el objeto Exception también se elimina.

Cuando la clausula CATCH TO VarName se ejecuta, Visual FoxPro siempre guarda en VarName una nueva referencia al objeto Exception indiferentemente de los valores previos de la variable. Por el contrario VarName si mantiene el alcance. Por consiguiente, el contenido de VarName se sobreescribe siempre independientemente del valor que tuviera previamente.

Si existe una cláusula WHEN y se evalúa como falso (.F.), Visual FoxPro elimina el objeto Exception y asigna a VarName un valor nulo (NULL). Se puede determinar si VarName és de algun tipo o NULL utilizando la función VARTYPE().

WHEN lExpression
Especifica una expresión opcional que se evalua cuando el programa encuentra una instrucción CATCH . La expresión debe evaluarse como verdadera (.T.) para que el correspondiente bloque catchCommands se ejecute.

El parámetro lExpression puede contener una referéncia al objeto Exception de la variable VarName para poder consultar el error producido y manejarlo de la manera adecuada.

catchCommands
Especifica las instrucciones a ejecutar cuando el programa encuentra la correspondiente instrucción CATCH .
THROW [ eUserExpression ]
Crea un nuevo objeto Exception para ser utilizado por la instrucción CATCH . El parámetro eUserExpression especifica una expresión de cualquier tipo y establece la propiedad UserValue para el objeto Exception . Normalmente, se usa la cláusula THROW en el bloque CATCH para enviar un error o excepción a un proceso de control de errores de nivel superior. Se puede pasar un objeto de cualquier tipo, ya que Exception UserValue guarda solamente la referencia al objeto.

Cuando se usa la clausula THROW con eUserExpression, Visual FoxPro guarda el valor 2071 en la propiedad ErrorNo del objeto Exception , el cual correponde al error User Thrown Error (Error 2071). Si se omite eUserExpression, Visual FoxPro envía el objeto Exception original, si este existe. Si el objeto Exception no existe, Visual FoxPro envía un nuevo objeto Exception con el valor 2071 en la propiedad ErrorNo .

Nota Se debería pasar un valor en eUserExpression, especificando la propiedad UserValue para el objeto Exception, debido a que este puede admitir multiples cadenas de objetos Exception, ver en la sección de ejemplos.

Si no se incluye eUserExpression y la clausula THROW envía el objeto Exception a otro bloque TRY...CATCH, el mismo objeto Exception será capturado por el otro bloque TRY...CATCH. Los valores devueltos por las funciones ERROR( ), MESSAGE( ) y AERROR( ) no siempre pueden ser exactos cuando se utilizan en una estructura de control de errores, por lo tanto, debería usar el objeto Exception en su lugar.

Se puede ejecutar THROW desde cualquier bloque de código en la estructura TRY...CATCH...FINALLY. En todo caso, se puede usar THROW en cualquier parte del código de control y manejo de errores para capturar la excepción. No se puede llamar a THROW desde la ventana de comandos.

ATENCIÓN Llamar a la instrucción THROW desde fuera de la estructura TRY...CATCH...FINALLY y sin un apropiado control de manejo de errores produce la salida del programa.

Si otro comando TRY...CATCH está en proceso cuando se llama a la instrucción THROW desde un bloque CATCH o FINALLY, Visual FoxPro asigna a VarName en la cláusula CATCH TO la referencia al objeto Exception generado por el error. Si no existe otro comando TRY...CATCH efectivo, Visual FoxPro envía la excepción a un comando ON ERROR o evento Error, si no existe; por otra parte, Visual FoxPro llama al controlador de errores del sistema.

Nota En tiempo de ejecución las aplicaciones deberían contener una instrucción THROW que tuviese su propia estructura TRY...CATCH...FINALLY.

Si desea volver a la excepción original que fué capturada por la clausula CATCH TO VarName, puede llamar THROW VarName para recuperar la excepción.

Nota Recuperar la excepción original provoca la creación de un nuevo objeto Exception, en otra instrucción CATCH, la cual contiene en la propiedad UserValue una referencia al objeto de la excepción original.

Visual FoxPro desprecia cualquier instrucción THROW situada en la clausula CATCH WHEN eExpression.

Si THROW encuentra un error cuando evalua una expresión, Visual FoxPro envía el error de la manera habitual.

EXIT
Incluida en el bloque TRY, CATCH o FINALLY para inmediatamente cerrar un codigo de bloque.

Si EXIT aparece en el bloque TRY o CATCH, el programa resume la ejecución al estado FINALLY, si este existe. Si EXIT aparece en el bloque FINALLY o si FINALLY no existe, el programa continúa la ejecución inmediatamente después de la instrucción ENDTRY.

FINALLY
Indica el principio del bloque FINALLY, que se utiliza para limpiar todos los recursos creados por el bloque TRY y siempre se ejecuta excepto cuando se utilizan los comandos CANCEL o QUIT.

Para más información acerca de los comandos que se pueden utilizar en la estructura TRY...CATCH...FINALLY, ver Control estructurado de errores.

finallyCommands
Especifica los comandos a ejecutar en el bloque FINALLY después de no haber encontrado ningún error en el bloque TRY ni en el bloque CATCH si es que se ha ejecutado.
ENDTRY
Indica el final de la estructura TRY...CATCH...FINALLY. Cada estructura TRY...CATCH...FINALLY debe finalizarse con la palabra clave ENDTRY. Al igual que en otros comandos de control de Visual FoxPro, se pueden añadir observaciones precedidos por un doble carácter ampersand (&&) después de la palabra clave ENDTRY.

Si no se incluye la instrucción ENDTRY al final de la estructura TRY...CATCH...FINALLY, Visual FoxPro generará un error cuando compile el código del programa. De todas formas se puede ejecutar el código ignorando los errores de compilación, pero no debería hacerlo, ya que puede provocar que Visual FoxPro deje de responder.

Advertencia

Al igual que en otras instrucciones para controlar errores de Visual FoxPro, cuando se produce un error en la estructura TRY...CATCH...FINALLY, esta establece el comando SET CONSOLE en ON. Para obtener más información, ver SET CONSOLE (comando) .

No se puede transferir la ejecución del programa explícitamente a un bloque de código CATCH o FINALLY .

Visual FoxPro determina el alcance de las variables por proceso, no por el bloque elemental. Que quiere decir, que las variables declaradas en un bloque TRY son visibles desde el bloque FINALLY dentro de la misma estructura TRY...CATCH...FINALLY . No obstante, en una estructura anidada, las variables declaradas en un bloque TRY, CATCH o FINALLY tienen alcance local.

No se deberían inicializar variables o establecer código crítico dentro del bloque TRY porque no se garantiza que se ejecute la totalidad del código. Si se produce un error en una línea de código en concreto dentro del bloque TRY, todas las líneas siguientes del bloque TRY no se ejecutarán.

Algunos errores que se producen en el evento del objeto Error deben ser manejados por el objeto y no son redirigibles a una rutina ON ERROR o controlador TRY...CATCH...FINALLY. No obstante, se puede usar la estructura TRY...CATCH...FINALLY dentro del evento Error para capturar los errores desde el evento Error. Para más información, Ver Error (Evento).

Utilizando la función COMRETURNERROR( ) dentro de un bloque CATCH finalizará además todos los procesos y devolverá el control del programa directamente al cliente del objeto (COM). Por consiguiente, si tenemos un bloque FINALLY, este no se ejecutará. Para más información, ver COMRETURNERROR( ) (Función).

Evite usar el comando SET TEXTMERGE TO MEMVAR dentro de una estructura TRY...CATCH...FINALLY ya que la variable de memoria se perderá si se produce un error dentro del comando.

Se puede utilizar la función SYS(2410) - Controlador de Errores en el código de TRY...CATCH...FINALLY para determinar el curso de la acción, por ejemplo, utilizando una estructura DO CASE, dependiendo del tipo de controlador que maneja la excepción. Para más información, ver SYS(2410) - Controlador de errores.

Podemos utilizar TRY...CATCH...FINALLY para controlar errores que se producen en los eventos menu y timer, y con los comandos ON KEY LABEL si la estructura esta bien definida. Los siguientes ejemplos ilustran como el comando READ EVENTS retiene el control del programa dentro de la estructura TRY...CATCH...FINALLY tan pronto como se produce el evento menú. La captura del error es controlada dependiendo de la posición de TRY...CATCH...FINALLY en la pila de llamadas.

TRY
DO myMenu.mpr
DO FORM myForm
myForm.AddObject("tm1","mytimer")
READ EVENTS
CATCH TO oException
IF oException.ErrorNo = 1
ENDIF
FINALLY
CLEAR EVENTS
ENDTRY

Para más información, ver READ EVENTS (Comando) y ON KEY LABEL (Comando).

Visual FoxPro soporta la funcionalidad de depuración Set Next Statement solamente dentro de un bloque de código único. Por ejemplo, cuando ejecutamos un código dentro de un bloque TRY, podemos utilizar Set Next Statement solamente hacia otra línea dentro del bloque TRY. No podemos saltar a otra linea de codigo en los bloques CATCH o FINALLY. Para mas información, Ver Depurador de Teclas de Acceso Rápido y Menus.

Visual FoxPro genera los mensajes apropiados bajo las siguientes circunstancias:

  • Se produce un desajuste o error con la estructura TRY...CATCH...FINALLY .
  • Se produce una excepción no controlada.
  • Aparece un comando no permitido dento de un bloque TRY, CATCH o FINALLY . Para mas información, ver Control estructurado de errores.
  • Se produce un error generado por el usuario.

Ejemplo

Los siguientes ejemplos ilustran como anidar estructuras TRY...CATCH utilizando la cláusula THROW y el uso del objeto Exception.

LOCAL x AS Integer, y AS Integer, result AS Integer
LOCAL oErr AS Exception, oErr1 AS Exception
TRY
x = 1
TRY
USE nothing
GO TOP
y = nothing.col1
CATCH TO oErr
oErr.UserValue = "Mensaje de CATCH anidado: Incapaz de controlar"
?[: Catch anidado! (Incontrolado: Enviado el objeto oErr con Throw) ]
?[  Objeto Excepción Interno: ]
?[  Error: ] + STR(oErr.ErrorNo)
?[  Línea: ] + STR(oErr.LineNo)
?[  Mensaje: ] + oErr.Message
?[  Procedimiento: ] + oErr.Procedure
?[  Detalles: ] + oErr.Details
?[  Nivel de Pila: ] + STR(oErr.StackLevel)
?[  Linea de comando: ] + oErr.LineContents
?[  Valor de UserValue: ] + oErr.UserValue
THROW oErr
FINALLY
?[: Ejecutado FINALLY anidado ]
IF USED("nothing")
USE IN nothing
ENDIF
ENDTRY
result = x-y
CATCH TO oErr1
?[: CATCH Externo! ]
?[  Objeto Excepción Externo: ]
?[  Error: ] + STR(oErr1.ErrorNo)
?[  Línea No: ] + STR(oErr1.LineNo)
?[  Mensaje: ] + oErr1.Message
?[  Procedimiento: ] + oErr1.Procedure
?[  Detalles: ] + oErr1.Details
?[  Nivel de Pila: ] + STR(oErr1.StackLevel)
?[  Linea de comando: ] + oErr1.LineContents
?[  ->La propiedad UserValue se convierte en el objeto excepción interno, lanzado desde el TRY/CATCH anidado]
?[     Error: ] + STR(oErr1.UserValue.ErrorNo)
?[     Mensaje: ] + oErr1.UserValue.Message
?[     Procedimiento: ] + oErr1.UserValue.Procedure
?[     Detalles: ] + oErr1.UserValue.Details
?[     Nivel de Pila: ] + STR(oErr1.UserValue.StackLevel)
?[     Línea de comando: ] + oErr1.UserValue.LineContents
?[     Valor de UserValue: ] + oErr1.UserValue.UserValue
result = 0
FINALLY
?[: Bloque FINALLY ejecutado ]
ENDTRY
RETURN result

El siguiente ejemplo muestra cómo encadenar objetos Exception:

TRY
TRY
x=y      && La variable y no existe y se genera un error.
CATCH TO oException2
THROW CREATEOBJECT("myException")
ENDTRY
CATCH TO oException1
ENDTRY
? 2, oException2.ErrorNo, oException2.UserValue
? 1, oException1.ErrorNo, oException1.UserValue.UserValue
DEFINE CLASS myException AS Exception
UserValue = "Mi controlador personal de errores"
PROCEDURE Init
STRTOFILE("Ha ocurrido un error a las: " + TRANSFORM(DATETIME()) + CHR(13),"c:\errs.log",.T.)
ENDPROC
ENDDEFINE

Ver también

Comandos | Exception (Clase) | UserValue (Propiedad) | VARTYPE( ) (Función) | ErrorNo (Propiedad) | ERROR( ) (Función) | MESSAGE( ) (Función) | AERROR( ) (Función) | SYS(2018) - Parámetro de mensaje de error


TYPE (Comando)

Muestra el contenido de un archivo.

TYPE FileName1   [AUTO]   [WRAP] [TO PRINTER [PROMPT] | TO FILE FileName2]   [NUMBER]

Parámetros

FileName1
Especifica el nombre del archivo que se va a mostrar. El nombre debe incluir la extensión del archivo.
AUTO
Activa la sangría automática. Cuando también incluye WRAP, TYPE aplicará automáticamente al texto ajustado en cada párrafo la misma sangría que en la primera línea del párrafo. Por ejemplo:
  • Las líneas ajustadas automáticamente se alinearán con el tabulador cuando un párrafo comience por un tabulador.
  • Las líneas ajustadas automáticamente se alinearán con el tabulador cuando un párrafo comience por un número (o por otro tipo de texto) seguido de un tabulador y de texto.
  • Se aplicará a las líneas ajustadas automáticamente la misma sangría que tenga la primera línea, siempre que se haya aplicado la sangría con espacios a la primera línea de un párrafo.
WRAP
Habilita el ajuste de línea de forma que cuando una palabra no quepa entera al final de la línea, pase automáticamente a la línea siguiente.
TO PRINTER [PROMPT]
Dirige el resultado a la impresora.

Puede incluir la cláusula opcional PROMPT para mostrar un cuadro de diálogo antes de que comience la impresión. Coloque la palabra clave PROMPT justo después de TO PRINTER.

TO FILE FileName2
Dirige el resultado al archivo especificado con FileName2.
NUMBER
Incluye números de línea al principio de cada línea del resultado.

Observaciones

TYPE muestra el contenido de archivos. Esta información puede dirigirse a la ventana principal de Visual FoxPro, a la ventana activa definida por el usuario, a una impresora o a otro archivo.

Cuando el valor de SET HEADINGS es ON, Visual FoxPro inserta un avance de página, la ruta de acceso y el nombre del archivo, y la fecha al principio de los resultados producidos por TYPE. Si SET HEADINGS está establecido en OFF, no se incluye esta información.

En FoxPro para MS-DOS, si se ha cargado la instalación de un controlador de impresora y si dirige el resultado de TYPE a un archivo o a una impresora, TYPE mostrará el contenido del archivo utilizando la configuración procedente de la instalación del controlador de la impresora.

Vea también

SET HEADINGS | WordWrap | PROMPT( ) | Type (Propiedad)


UNLOCK (Comando)

Libera un bloqueo de registro, bloqueos de varios registros o un bloqueo de archivo desde una tabla, o libera todos los bloqueos de registros y de archivos de todas las tablas abiertas.

UNLOCK    [RECORD nRecordNumber]   [IN nWorkArea | cTableAlias]   [ALL]

Parámetros

RECORD nRecordNumber
Libera el bloqueo del registro con el número de registro nRecordNumber. Puede especificar 0 en nRecordNumber para desbloquear un encabezado de tabla bloqueado previamente con LOCK(0) o con RLOCK(0).

Al ejecutar UNLOCK RECORD nRecordNumber para un registro bloqueado de una tabla, se libera el bloqueo del registro.

IN nWorkArea | cTableAlias
Libera uno o varios bloqueos de registro, o un bloqueo de archivo de una tabla en un área de trabajo específica. nWorkArea indica un número de área de trabajo y cTableAlias indica un alias de tabla. Si no incluye nWorkArea o cTableAlias, UNLOCK libera el bloqueo o los bloqueos de un registro, o el bloqueo de archivo de la tabla del área de trabajo seleccionada actualmente.
ALL
Libera todos los bloqueos de registro y de archivo de todas las áreas de trabajo.

Para obtener más información acerca del bloqueo de registros y archivos, así como del uso compartido de tablas en una red, vea Programar para acceso compartido.

Observaciones

Sólo el usuario que ejecutó el bloqueo puede eliminar los bloqueos de registro y de archivo de una tabla. UNLOCK no puede desbloquear una tabla abierta para uso exclusivo.

Si ejecuta UNLOCK sin argumentos, se liberarán de la tabla del área de trabajo actual uno o varios bloqueos de un registro, o un bloqueo de archivo.

Si están establecidas relaciones entre tablas, al liberar un bloqueo (o bloqueos) de registro o un bloqueo de archivo de una de las tablas no se liberarán los bloqueos de los registros o archivos relacionados. Debe liberar los bloqueos de registro o archivo de forma explícita en cada uno de los archivos relacionados. Puede liberar todos los bloqueos en las tablas relacionadas ejecutando UNLOCK ALL (esto también libera los registros en los archivos no relacionados).

Ejemplo

CLOSE DATABASES
SET REPROCESS TO 3 AUTOMATIC
STORE '1,2,3,4' TO gcRecList     && Lock records 1 through 4
gcOldExc = SET('EXCLUSIVE')     && Save the EXCLUSIVE setting
SET EXCLUSIVE OFF  && Allow sharing of tables
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer  && Opens Customer table
SELECT 0
USE employee  && Opens Employee table
? LOCK('1,2,3,4', 'customer')  && Lock the first 4 records in customer
? RLOCK(gcRecList, 'employee') && Lock the first 4 records in employee
UNLOCK IN customer
UNLOCK IN employee
SET EXCLUSIVE &gcOldExc  && Restore original EXCLUSIVE setting

Vea también

FLOCK( ) | LOCK( ) | RLOCK( ) | Programar para acceso compartido


UPDATE - SQL (Comando)

Actualiza registros de una tabla con nuevos valores.

UPDATE [DatabaseName1!]TableName1 SET Column_Name1 = eExpression1
[, Column_Name2 = eExpression2 ...] WHERE FilterCondition1 [AND | OR FilterCondition2 ...]

Parámetros

[DatabaseName1!]TableName1
Especifica la tabla en la que se actualizan registros con valores nuevos.

DatabaseName1! especifica el nombre de una base de datos no actual en la que se encuentra la tabla. Es necesario incluir el nombre de la base de datos en la que se encuentra la tabla si no es la base de datos actual. Incluya el delimitador signo de exclamación (!) después del nombre de la base de datos y antes del nombre de la tabla.

SET Column_Name1 = eExpression1 [, Column_Name2 = eExpression2
Especifica qué columnas están actualizadas y sus nuevos valores. Si se omite la cláusula WHERE, se actualizarán todas las filas de la columna con el mismo valor.
WHERE FilterCondition1 [AND | OR FilterCondition2 ...]]
Especifica los registros que se actualizan con valores nuevos.

FilterCondition especifica los criterios que deben satisfacer los registros para actualizarse con nuevos valores. Puede incluir tantas condiciones como desee, si las conecta con el operador AND u OR. También puede utilizar el operador NOT para invertir el valor de una expresión lógica o utilizar EMPTY( ) para comprobar si hay campos vacíos.

Observaciones

UPDATE - SQL sólo puede actualizar registros en una sola tabla. Tenga en cuenta que no se admiten subconsultas en UPDATE – SQL.

Puede determinar la cantidad de registros actualizados verificando el valor de la variable del sistema _TALLY inmediatamente después del comando UPDATE - SQL.

A diferencia de REPLACE, UPDATE - SQL utiliza el bloqueo de registros cuando actualiza varios registros de una tabla abierta para acceso compartido. Este hecho disminuye la contención de registros en situaciones de varios usuarios, pero puede reducir el rendimiento. Para conseguir el máximo rendimiento, abra la tabla para uso exclusivo o utilice FLOCK( ) para bloquear la tabla.

Ejemplo

El ejemplo siguiente abre la tabla customer de la base de datos testdata. UPDATE -SQL se usa para establecer en 25 todos los valores del campo maxordamt.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE Customer     && Abre la tabla customer
* Establece y muestra cantidades para customers
UPDATE customer SET maxordamt = 25
BROWSE FIELDS company,maxordamt

Vea también

DELETE - SQL | GATHER | INSERT - SQL | REPLACE | SCATTER | _TALLY


USE (Comando)

Abre una tabla y sus archivos de índice asociados, o una vista SQL.

USE [[DatabaseName!]Table | SQLViewName | ?] [IN nWorkArea | cTableAlias]   [ONLINE]   [ADMIN]   [AGAIN] [NOREQUERY [nDataSessionNumber]]   [NODATA]   [INDEX IndexFileList | ? [ORDER [nIndexNumber | IDXFileName   | [TAG] TagName [OF CDXFileName] [ASCENDING | DESCENDING]]]]   [ALIAS cTableAlias]   [EXCLUSIVE] [SHARED]   [NOUPDATE]   [CONNSTRING cConnectionString | (m.nStatementHandle) ]

Parámetros

[DatabaseName!]TableName
Especifica el nombre de la tabla que se va a abrir. Puesto que los espacios en blanco son importantes en los nombres de archivo de Microsoft Windows 98 y posteriores, evite usar espacios adicionales en TableName. Si un nombre de tabla contiene espacios, escríbalo entre comillas (" " o ' ')

Para abrir una tabla fuera de la base de datos actual, identifique la tabla con el nombre de la base de datos, con un signo de exclamación (!) para separar el nombre de la base de datos del nombre de la tabla. Si no identifica una tabla con un nombre de base de datos, Microsoft Visual FoxPro sólo podrá abrir las tablas de la base de datos actual. Si el nombre de la base de datos, el nombre de la tabla o ambos contienen espacios, escriba el nombre de la base de datos y el nombre de la tabla entre comillas (" " o ' ')

Nota Visual FoxPro no reconocerá correctamente un nombre de ruta de acceso si el nombre del disco o del directorio contiene un signo de exclamación (!).
SQLViewName
Especifica el nombre de una vista SQL de la base de datos actual que desea abrir. Las vistas de SQL se crean con CREATE SQL VIEW. SQLViewName también puede ser el nombre de una vista sin conexión creada con CREATEOFFLINE( ).
?
Muestra el cuadro de diálogo Uso, que le permite elegir una tabla para abrirla.
IN nWorkArea
Especifica el área de trabajo en la que se abre la tabla. Puede cerrar una tabla de un área de trabajo determinada, ejecutando USE con la cláusula IN y el número del área de trabajo.

La cláusula IN admite 0 como área de trabajo. Al incluir 0, se abrirá una tabla en el área de trabajo que tenga el número más bajo. Por ejemplo, si hay tablas abiertas en las áreas de trabajo de 1 a 10, el siguiente comando abrirá la tabla customer en el área de trabajo 11:

USE customer IN 0
IN cTableAlias
Especifica que la tabla se abre en el área de trabajo de una tabla que está abierta actualmente. El alias de la tabla abierta se especifica con cTableAlias.

Si omite nWorkArea y cTableAlias, la tabla se abrirá en el área de trabajo seleccionada actualmente.

ONLINE
Abre una vista sin conexión creada con CREATEOFFLINE( ). Especifique el nombre de la vista sin conexión en SQLViewName. Utilice TABLEUPDATE( ) para actualizar los datos en el servidor.

Es necesario abrir la vista sin conexión de forma exclusiva. Incluya la cláusula EXCLUSIVE en USE o SET EXCLUSIVE en ON antes de abrir la vista sin conexión con USE.

No puede abrir o cerrar una vista sin conexión en modo ONLINE dentro de una transacción.

ADMIN
Abre una vista sin conexión creada con CREATEOFFLINE( ), pero no actualiza los datos en el servidor con las modificaciones realizadas en la vista sin conexión. El hecho de abrir una vista sin conexión con la palabra clave ADMIN permite realizar cambios en la vista sin conexión sin actualizar los datos del servidor.

No puede abrir o cerrar una vista sin conexión en modo ONLINE dentro de una transacción.

AGAIN
Para abrir una tabla de forma simultánea en varias áreas de trabajo, puede realizar alguna de las acciones siguientes:
  • Seleccionar otra área de trabajo y ejecutar USE con el nombre de la tabla y la cláusula AGAIN.
  • Ejecutar USE con el nombre de la tabla y la cláusula AGAIN, y especificar un área de trabajo distinta con la cláusula IN.

Cuando vuelva a abrir una tabla en otra área de trabajo, la tabla de la nueva área de trabajo tomará los atributos de la tabla del área de trabajo original. Por ejemplo, si la tabla se abre para acceso de sólo lectura o exclusivo, y se vuelve a abrir en otra área de trabajo, la tabla se abrirá con el mismo tipo de acceso en la nueva área de trabajo.

Los archivos de índice abiertos para la tabla original estarán disponibles para la tabla que vuelva a abrir si no abre ningún índice al abrir de nuevo la tabla. El orden de índice se establecerá en 0 en las áreas de trabajo donde vuelva a abrir la tabla.

Puede abrir índices que no estuvieran abiertos en la tabla original. El orden de índice se establece en 0 para la tabla original.

A una tabla abierta de nuevo se le asigna el alias predeterminado del área de trabajo. Puede incluir un alias cada vez que abra una tabla en varias áreas de trabajo, siempre y cuando los alias sean únicos.

En Visual FoxPro para Windows, al volver a abrir una tabla en otra área de trabajo no se consume ningún controlador de archivo adicional.

NOREQUERY [nDataSessionNumber]
Especifica que los datos de una vista SQL remota no se vuelvan a descargar. NOREQUERY solamente está disponible para vistas SQL y se suele utilizar cuando se vuelve a abrir una vista SQL, incluyendo la cláusula AGAIN. Al incluir la cláusula NOREQUERY se mejora el rendimiento de grandes conjuntos de datos porque no es necesario volver a descargar los datos.

nDataSessionNumber puede incluirse para especificar que los datos para una vista SQL remota de una sesión de datos determinada no se descarguen de nuevo. Si se omite nDataSessionNumber, los datos no se descargarán para la vista abierta en la sesión de datos actual.

Para obtener información adicional acerca de la cláusula NOREQUERY, vea Crear vistas.

NODATA
Especifica que sólo se descargue la estructura de una vista SQL. Los datos de la vista SQL no se descargan. NODATA es el método más rápido de determinar la estructura de una vista SQL.

Para obtener más información acerca de la cláusula NODATA, vea Crear vistas.

INDEX IndexFileList
Especifica un conjunto de índices que se deben abrir junto con la tabla. Si una tabla tiene un archivo de índice compuesto estructural, el archivo de índice se abrirá automáticamente con la tabla.

IndexFileList puede contener cualquier combinación de nombres de archivos de índice .idx de una sola entrada y .cdx de entrada compuesta. No necesita incluir las extensiones de los nombres de los archivos de índice, a no ser que haya archivos .idx y .cdx con el mismo nombre en la lista de archivos.

El archivo de índice cuyo nombre aparezca el primero en la lista de archivos de índice será el archivo de índice de control, y controlará cómo se tiene acceso y se muestran los registros de la tabla. Si el primer archivo de índice es un archivo de índice compuesto .cdx, se mostrarán los registros de la tabla y se tendrá acceso a ellos en el orden físico de los registros.

INDEX ?
Muestra el cuadro de diálogo Abrir con una lista de archivos de índice disponibles entre los que puede elegir.
ORDER [nIndexNumber]
Especifica una etiqueta de archivo de índice .cdx compuesto o un archivo .idx de índice de una sola entrada de control principal distinto del primer archivo de índice o de la primera etiqueta de índice especificados en IndexFileList.

Los archivos de índice .idx se numeran primero en el orden en que aparecen en la lista de archivos de índice. Las etiquetas de los archivos de índice compuesto estructural (si existe alguno) se numeran entonces en el orden en que se crearon las etiquetas. Por último, las etiquetas de todos los archivos de índice compuesto independientes se numeran en el orden en que se crearon. También puede utilizar SET ORDER para especificar el archivo de índice o la etiqueta de control. Vea SET ORDER para obtener más información acerca de la numeración de archivos y etiquetas de índice.

Si nIndexNumber es 0, los registros de la tabla se mostrarán y se tendrá acceso a ellos en el orden físico de los registros, y los registros permanecerán abiertos. La inclusión de ORDER 0 permitirá que todos los archivos de índice abiertos se actualicen mientras se presentan los registros ordenados por el número de registro. Incluir ORDER sin nIndexNumber es idéntico a incluir ORDER 0.

ORDER [IDXFileName]
Especifica un archivo de índice .idx de una sola entrada como archivo de índice de control principal.
ORDER [TAG TagName] [OF CDXFileName]
Especifica una etiqueta de control principal en un archivo de índice .cdx compuesto. El nombre de la etiqueta puede ser de un archivo de índice compuesto estructural o de cualquier archivo de índice compuesto que esté abierto. Si existen nombres de etiqueta idénticos en los archivos de índice compuesto abiertos, incluya OF CDXFileName y especifique el nombre del archivo de índice compuesto que contiene la etiqueta deseada.
ASCENDING
Especifica que se tiene acceso y se muestran los registros de la tabla en orden ascendente.
DESCENDING
Especifica que se tiene acceso y se muestran los registros de la tabla en orden descendente.

La inclusión de ASCENDING o DESCENDING no cambia el archivo o la etiqueta de índice: solamente altera el orden en que se muestran y se tiene acceso a los registros.

ALIAS cTableAlias
Crea un alias para la tabla. Puede hacer referencia a una tabla por su alias en los comandos y funciones que requieren o admiten un alias.

Cuando se abre una tabla, se le asigna automáticamente un alias, que es el nombre de la tabla si no se incluye ALIAS. Puede crear un alias nuevo o distinto para la tabla si incluye ALIAS. En Visual FoxPro, un alias puede contener hasta 254 letras, dígitos o signos de subrayado, y debe comenzar por una letra o un signo de subrayado. En las demás versiones de FoxPro, los alias pueden contener como máximo 10 letras, dígitos o signos de subrayado, y deben comenzar por una letra o un signo de subrayado.

Se asigna automáticamente un alias predeterminado cuando abre una sola tabla de forma simultánea en varias áreas de trabajo con AGAIN y no se especifica un alias al abrir la tabla en cada área de trabajo.

También se asigna un alias predeterminado cuando se produce un conflicto. Por ejemplo:

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
ACTIVATE WINDOW View  && Abre la Ventana Sesión de Datos
USE customer ALIAS orders IN 1     && El Alias es ORDERS
USE orders IN 3     && Conflicto; el alias es C
EXCLUSIVE
Abre la tabla para uso exclusivo en una red. Para obtener más información acerca del uso exclusivo de tablas, vea SET EXCLUSIVE.
SHARED
Abre una tabla para uso compartido en una red. SHARED permite abrir una tabla para uso compartido, incluso cuando EXCLUSIVE está establecido en ON.
NOUPDATE
Impide realizar cambios en la tabla y en su estructura.
CONNSTRING cConnectionString | (m.nStatementHandle)
Especifica una cadena de conexión para un origen de datos ODBC. El parámetro cConnectionString puede representar parámetros pasados normalmente utilizando SQLCONNECT( ) o SQLSTRINGCONNECT( ). El parámetro m.nStatementHandle especifica una variable de memoria que representa una instrucción de control de una conexión existente.

Cuando utilice cConnectionString, Visual FoxPro pasa la cadena de conexión a la vista remota que especifique con SQLViewName, dicha vista utilizará la cadena de conexión para conectarse al origen de datos especificado, en lugar de utilizar cualquier otra cadena de conexión definida previamente. Pasar una cadena vacía ("") muestra el cuadro de diálogo Origen de datos ODBC y le permite al usuario seleccionar un origen de datos.

Nota Si especifica datos incompletos en la cadena de conexión, el origen de datos muestra un cuadro de diálogo login para ingresar la información de login necesaria. Si omite la cláusula opcional CONNSTRING cConnectionString, la vista remota utiliza la conexión predeterminada. Para más información acerca de cadenas de conexión a un origen de datos, consulte la documenta de su controlador ODBC.

Visual FoxPro permite sobrescribir la conexión predeterminada para una vista remota y requiere el parámetro m.nStatementHandle para admitir conexiones compartidas.

Observaciones

Si se ejecuta USE sin un nombre de tabla y está abierto un archivo de tabla en el área de trabajo actual, la tabla se cerrará. También se cerrará la tabla cuando se abra otra tabla en la misma área de trabajo. No puede tener abierta más de una tabla a la vez en una misma área de trabajo.

Ejemplo

En el ejemplo siguiente se abren tres tablas en tres áreas de trabajo distintas. Se abre la ventana Sesión de datos para mostrar dónde están abiertas las tablas y para mostrar el alias para cada tabla.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
ACTIVATE WINDOW View
USE customer IN 0  && Abre la tabla Customer
USE employee IN 0  && Abre la tabla Employee
USE products IN 0  && Abre la tabla Products

Vea también

CREATE | CREATE SQL VIEW | CREATE TABLE - SQL | CREATEOFFLINE( ) | DBF( ) | INDEX | USED( ) | Crear vistas | SET EXCLUSIVE


VALIDATE DATABASE (Comando)

Comprueba que son correctas todas las ubicaciones de tablas e índices de la base de datos actual.

VALIDATE DATABASE [RECOVER] [NOCONSOLE] [TO PRINTER [PROMPT] | TO FILE FileName]

Parámetros

RECOVER
Muestra cuadros de diálogo que permiten localizar tablas e índices que no se encuentran en las ubicaciones contenidas en la base de datos. A partir de Visual FoxPro 7, se admite el uso de la cláusula RECOVER en los programas.
NOCONSOLE
Impide que se muestren mensajes de error en la ventana principal de Visual FoxPro o en la ventana activa definida por el usuario.
TO PRINTER [PROMPT]
Dirige el resultado de los mensajes de error de VALIDATE DATABASE a una impresora.

PROMPT muestra el cuadro de diálogo Imprimir antes de que comience la impresión. Coloque la palabra clave PROMPT justo después de TO PRINTER.

TO FILE FileName
Dirige el resultado de los mensajes de error al archivo especificado con FileName. Si el archivo ya existe y SET SAFETY está establecido en ON, el sistema le preguntará si desea sobrescribir el archivo.

Observaciones

VALIDATE DATABASE comprueba que la base de datos contenga las ubicaciones correctas de tablas e índices, que las tablas de la base de datos contengan los campos correctos y que existan las etiquetas de índice de la base de datos.

VALIDATE DATABASE funciona en la base de datos actual. La base de datos se debe abrir para uso exclusivo, incluyendo la palabra clave EXCLUSIVE al ejecutar OPEN DATABASE.

Ejemplo

El ejemplo siguiente abre la base de datos testdata y utiliza VALIDATE DATABASE para confirmar que las ubicaciones de las tablas e índices de la base de datos son correctas.

CLOSE DATABASES
SET PATH TO (HOME(2) + 'Data\') && Sets path to database
OPEN DATABASE testdata EXCLUSIVE && Open testdata database
VALIDATE DATABASE

Vea también

CREATE DATABASE | MODIFY DATABASE | OPEN DATABASE | USE


WAIT (Comando)

Muestra un mensaje y detiene la ejecución de Microsoft Visual FoxPro hasta que el usuario presione una tecla o haga clic con el ratón.

WAIT [cMessageText] [TO VarName] [WINDOW [AT nRow, nColumn]] [NOWAIT] [CLEAR | NOCLEAR] [TIMEOUT nSeconds]

Parámetros

cMessageText
Especifica el mensaje personalizado que se desea mostrar. Si omite cMessageText, Visual FoxPro mostrará el mensaje predeterminado. Si cMessageText es la cadena vacía (""), no se mostrará ningún mensaje y Visual FoxPro esperará hasta que se presione una tecla antes de continuar con la ejecución del programa.

Puede utilizar cualquier función, objeto o tipo de dato válido de Visual FoxPro en lugar de cMessageText. Si la función que utiliza se evalúa como un valor no Carácter, Visual FoxPro automáticamente utiliza la función TRANSFORM( ) para proporcionar el carácter equivalente. En el siguiente ejemplo, una fecha tipo carácter es devuelta y pasada a WAIT WINDOW:

WAIT DATE() WINDOW AT 20,20 TIMEOUT 10

Si omite cMessageText, Visual FoxPro muestra el mensaje predeterminado. Si cMessageText es una cadena vacía (""), Visual FoxPro no muestra un mensaje y espera hasta que se presione una tecla antes de continuar la ejecución del programa.

TO VarName
Guarda la tecla presionada en una variable o en un elemento de matriz. Si la variable o el elemento de matriz que especifica con VarName no existe, se creará. Si presiona la tecla ENTRAR, o una tecla o combinación de teclas no imprimible, o hace clic con el ratón, la cadena vacía se almacenará en VarName.

Si la variable o elemento de matriz que especifique con VarName no existe, entonces se crea. Si presiona ENTRAR o una tecla o combinación de teclas no imprimible, o hace clic con el ratón, se almacena una cadena vacía en VarName.

WINDOW
Muestra el mensaje en una ventana de mensajes del sistema, en la esquina superior derecha de la ventana principal de Visual FoxPro. La ventana puede ocultarse temporalmente presionando la tecla CTRL o MAYÚS.

Desde Visual FoxPro 7 los atributos de fuentes incluyendo nombre, tamaño y estilo se derivan de las características especificadas en la ficha Apariencia de la opción Pantalla en el Panel de control de Windows.

AT nFila, nColumna
En Visual FoxPro, especifica la posición que ocupará la ventana de mensajes en la pantalla.
NOWAIT
Continúa la ejecución del programa inmediatamente después de mostrar el mensaje. El programa no espera a que el mensaje desaparezca de la ventana principal de Visual FoxPro, sino que continúa ejecutando la línea del programa inmediatamente siguiente a la que contiene WAIT NOWAIT. Si omite NOWAIT, la ejecución del programa se interrumpe hasta que el mensaje se quite de la ventana principal de Visual FoxPro presionando una tecla o haciendo clic con el ratón.

El programa no espera que se quite el mensaje de la ventana principal de Visual FoxPro, continúa la ejecución en la línea siguiente a la línea que contiene WAIT NOWAIT.

Si omite NOWAIT, la ejecución del programa espera hasta que se quite el mensaje de la ventana principal de Visual FoxPro, presionando una tecla o haciendo clic con el ratón.

CLEAR
Elimina una ventana de sistema de Visual FoxPro o una ventana de mensajes WAIT de la ventana principal de Visual FoxPro desde un programa. Por ejemplo, la conversación procedente de indexar, ordenar, etc. se dirige a una ventana de sistema de Visual FoxPro si ejecuta SET TALK WINDOW. La ventana se puede quitar de forma interactiva si presiona una tecla o mueve el ratón. Ejecute WAIT CLEAR para quitar la ventana desde un programa.

Por ejemplo, el mostrar los resultados de indexar, ordenar, etcétera, se dirige a la ventana de sistema de Visual FoxPro si ejecuta SET TALK WINDOW. La ventana puede quitarse interactivamente si presiona una tecla o mueve el ratón. Ejecute WAIT CLEAR para quitar la ventana desde dentro del programa.

NOCLEAR
Especifica que una ventana de mensajes WAIT permanecerá en la ventana principal de Visual FoxPro hasta que se ejecute WAIT CLEAR u otro comando WAIT WINDOW, o hasta que se muestre un mensaje de sistema de Visual FoxPro.
TIMEOUT nSeconds
Especifica cuántos segundos pueden transcurrir sin entradas desde el teclado o el ratón antes de que termine WAIT. nSecondsespecifica el número de segundos (se admiten fracciones de segundo) que pueden transcurrir. Si TIMEOUT no es la última cláusula de WAIT, Visual FoxPro genera un mensaje de error de sintaxis.

Observaciones

Si se muestra un mensaje WAIT en Visual FoxPro para Windows, puede ocultar todas las ventanas que contengan el mensaje WAIT presionando la tecla MAYÚS o CTRL.

Vea también

Comandos | TRANSFORM( ) (Función) | ACCEPT (Comando) | CLEAR (Comando) | ReadTimeout (Propiedad)


WITH ... ENDWITH (Comando)

Especifica varias propiedades para un objeto.

WITH ObjectName
[.cStatements] ENDWITH

Parámetros

ObjectName
Especifica el nombre del objeto. ObjectName puede ser el nombre del objeto o una referencia a éste.
cStatements
cStatements puede constar de cualquier número de comandos de Microsoft Visual FoxPro utilizados para especificar propiedades para ObjectName. Coloque un punto delante de cStatement para indicar que se trata de una propiedad de ObjectName.

Observaciones

WITH ... ENDWITH ofrece una forma cómoda de especificar un conjunto de propiedades para un solo objeto. Tenga en cuenta que también puede ejecutar métodos desde una estructura WITH ... ENDWITH.

Ejemplo

En el ejemplo siguiente se crea un nombre de clase personalizada Employee. Una vez creada la clase Employee con CREATEOBJECT( ), WITH ... ENDWITH se utiliza para establecer diversas propiedades para la clase. Después se muestran los valores de estas propiedades.

moemployee = CREATEOBJECT('employee')
WITH moemployee
.First_Name = 'John'
.Last_Name = 'Smith'
.Address = '16 Maple Lane'
.HireDate = {^1998-02-16}
ENDWITH
CLEAR
? moemployee.First_Name + ' '
?? moemployee.Last_Name
? moemployee.Address
? moemployee.HireDate
DEFINE CLASS employee AS CUSTOM
First_Name = SPACE(20)
Last_Name = SPACE(20)
Address = SPACE(30)
HireDate = {  -  -  }
ENDDEFINE

Vea también

:: Operador de resolución de alcance | ADD CLASS | CREATE CLASS | CREATE CLASSLIB | CREATEOBJECT( ) | GETOBJECT( ) | MODIFY CLASS | RELEASE CLASSLIB | SET CLASSLIB


ZAP (Comando)

Elimina todos los registros de la tabla actual y deja sólo la estructura de la tabla.

ZAP   [IN nWorkArea | cTableAlias]

Parámetros

IN nWorkArea
Especifica el área de trabajo de la tabla cuyos registros se eliminan.
IN cTableAlias
Especifica el alias de la tabla en la que se eliminan todos los registros.

Si omite nWorkArea y cTableAlias, se eliminan todos los registros de la tabla del área de trabajo seleccionada actualmente.

Observaciones

El uso de ZAP equivale a especificar DELETE ALL y a continuación PACK, pero ZAP es mucho más rápido.

Si SET SAFETY está establecido en ON, Microsoft Visual FoxPro le preguntará si desea eliminar los registros de la tabla actual.

Ejecutar ZAP no hace que se produzca el desencadenante Delete. Para obtener más información acerca de cómo crear desencadenadores, vea CREATE TRIGGER.

Precaución Los registros de la tabla actual eliminados con ZAP no pueden recuperarse.

Vea también

CREATE TRIGGER | DELETE | PACK


ZOOM WINDOW (Comando)

Cambia el tamaño y la posición de una ventana definida por el usuario o de una ventana del sistema de Visual FoxPro.

ZOOM WINDOW WindowName MIN | MAX | NORM [AT nRow1, nColumn1 | FROM AT nRow1, nColumn1
[SIZE AT nRow2, nColumn2 | TO nRow2, nColumn2]]

Parámetros

WindowName
Especifica el nombre de la ventana cuyo tamaño desea cambiar.
MIN
Reduce la ventana a su tamaño mínimo.

En Visual FoxPro para Windows, la ventana queda reducida a un icono.

En Visual FoxPro para Windows, todas las ventanas del sistema pueden reducirse a un tamaño mínimo. Para poder minimizar una ventana es necesario que las ventanas del sistema de Visual FoxPro estén abiertas en la ventana principal de Visual FoxPro o en una ventana definida por el usuario.

Una ventana definida por el usuario puede minimizarse una vez definida. No es necesario que esté activada para poder cambiar su tamaño.

MAX
Expande una ventana hasta llenar la ventana principal de Visual FoxPro, el escritorio de Windows o una ventana definida por el usuario. Si una ventana secundaria se coloca en una ventana primaria y se maximiza la secundaria, ésta se expandirá hasta llenar la ventana primaria. Si junto con MAX se incluye cualquiera de las cláusulas adicionales de ZOOM WINDOW (AT, SIZE, TO o FROM), MAX se pasa por alto.

Sólo pueden expandirse al tamaño máximo las ventanas definidas por el usuario que se hayan definido con ZOOM.

NORM
Devuelve una ventana a su tamaño original después de que se haya minimizado o maximizado. También puede utilizarse NORM para mover una ventana sin modificar su tamaño. Utilice ZOOM WINDOW NORM sin ninguna cláusula adicional para devolver una ventana minimizada o maximizada a su tamaño y posición originales.
AT nRow1, nColumn1 | FROM nRow2, nColumn2
Puede especificar la posición de una ventana si incluye las cláusulas AT o FROM.

ZOOM WINDOW WindowName NORM AT AT nRow1, nColumn1 restaura una ventana minimizada o maximizada a su tamaño original y la coloca en una ubicación determinada. Las coordenadas AT nRow1, nColumn1 especifican dónde se colocará la esquina superior izquierda de la ventana. La posición de una ventana puede cambiarse también con MOVE WINDOW.

En Visual FoxPro para Windows, si se incluye NORM, la esquina superior izquierda de la ventana se coloca en la ventana principal de Visual FoxPro, en el lugar especificado con AT nRow1, nColumn1. Si se incluye MIN, se omitirán AT y FROM, y la ventana aparecerá en forma de icono en la parte inferior de la ventana principal de Visual FoxPro. Si se incluye MAX, se omitirán AT y FROM, y la ventana se expandirá hasta llenar la ventana principal de Visual FoxPro.

En Visual FoxPro para Windows, si se crea la ventana con la cláusula IN DESKTOP, la esquina superior izquierda de la ventana se colocará en el escritorio de Windows, en la posición especificada por AT nRow1, nColumn1. Si se incluye MIN, AT y FROM se pasan por alto, y la ventana se muestra en forma de icono en la parte inferior del escritorio de Windows. Si se incluye MAX, AT y FROM se pasan por alto, y la ventana se expande hasta llenar el escritorio de Windows.

SIZE AT nRow2, nColumn2 | TO nRow2, nColumn2
También puede especificar el tamaño de una ventana si incluye SIZE o TO. Si incluye SIZE, la ventana tendrá nRow2 filas de alto y nColumn2 columnas de ancho. Si se incluye la cláusula TO, la esquina superior izquierda de la ventana permanecerá en su posición actual y la esquina inferior derecha de la ventana se colocará en la posición especificada con nRow2, nColumn2.

Observaciones

En Visual FoxPro para Windows, se pueden reducir las ventanas a un tamaño mínimo, ampliarlas para llenar la ventana principal de Visual FoxPro o cambiar su tamaño a un tamaño intermedio.

Si crea una ventana definida por el usuario con DEFINE WINDOW y la cláusula IN DESKTOP en Visual FoxPro para Windows, la ventana creada podrá ampliarse hasta llenar por completo el escritorio de Windows.

En Visual FoxPro para Windows, se puede modificar el tamaño de las ventanas directamente, del mínimo al máximo y viceversa.

Cuando utilice el zoom en una ventana, puede especificar el lugar en el que desea colocar la ventana con el nuevo tamaño dentro de la ventana principal de Visual FoxPro o de una ventana definida por el usuario.

Para utilizar el zoom en una ventana del sistema, escriba entre comillas el nombre completo de la ventana. Por ejemplo, para maximizar la ventana Comandos, ejecute el comando siguiente:

ZOOM WINDOW 'Command Window' MAX

Puede utilizar ZOOM WINDOW para cambiar el tamaño de todas las ventanas del sistema.

Ejemplo

En el ejemplo siguiente se abre una ventana Examinar para la tabla customer. La ventana Examinar se minimiza. La ventana Examinar vuelve a su tamaño predeterminado. Después, se vuelve a minimizar en una ubicación especificada. A continuación, se amplía la ventana Examinar a un tamaño específico y se maximiza.

CLEAR ALL
CLEAR
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\Testdata')
USE customer  && Opens Customer table
BROWSE NORMAL NOWAIT
IF _DOS OR _WINDOWS
ZOOM WINDOW customer MIN
WAIT WINDOW TIMEOUT 3 ;
'MIN clause - This window will timeout. Please wait.'
ENDIF
ZOOM WINDOW customer NORM
WAIT WINDOW TIMEOUT 3 ;
'NORM clause - This window will timeout. Please wait.'
IF _DOS OR _WINDOWS
ZOOM WINDOW customer MIN AT 10,10
WAIT WINDOW TIMEOUT 3 ;
'MIN AT 10,10 clause - This window will timeout. Please wait.'
ENDIF
ZOOM WINDOW customer NORM AT 1,1 SIZE 22,25
WAIT WINDOW TIMEOUT 3 ;
'NORM & SIZE clauses - This window will timeout. Please wait.'
ZOOM WINDOW customer NORM FROM 10,10 TO 22,70
WAIT WINDOW TIMEOUT 3 ;
'NORM & TO clauses - This window will timeout. Please wait.'
ZOOM WINDOW customer MAX
WAIT WINDOW TIMEOUT 3 'MAX clause - This window will timeout. Please wait.'
CLEAR ALL

Vea también

ACTIVATE WINDOW | DEFINE WINDOW | SIZE WINDOW


Objetos, colecciones y clases

Para información acerca de elementos del lenguaje incluidos por compatibilidad, consulte Elementos del lenguaje compatibles con versiones anteriores.

A

Application (Objeto)

B

C

CheckBox (Control)

Collection (Clase)

Column (Objeto)

ComboBox (Control)

CommandButton (Control)

CommandGroup (Control)

Container (Objeto)

Control (Objeto)

Coverage Engine (Objeto)

Cursor (Objeto)

CursorAdapter (Clase)

Custom (Objeto)

D

DataEnvironment (Objeto)

DataObject (Objeto)

E

EditBox (Control)

Empty (Clase)

Exception (Clase)

F

Fields (XMLTable) (Colección)

File (Objeto)

Files (Colección)

Form (Objeto)

FormSet (Objeto)

FoxCode (Referencia de objeto)

G

Grid (Control)

H

Header (Objeto)

Hyperlink (Objeto)

I

Image (Control)

J

K

L

Label (Control)

Line (Control)

ListBox (Control)

M

Member (Clase)

N

O

Objects (Colección)

OLE Bound (Control)

OLE Container (Control)

OptionButton (Control)

OptionGroup (Control)

P

Page (Objeto)

PageFrame (Control)

Project (Objeto)

ProjectHook (Objeto)

Projects (Colección)

Q

R

Relation (Objeto)

S

Separator (Objeto)

Server (Objeto)

Servers (Colección)

Session (Objeto)

Shape (Control)

Spinner (Control)

T

Tables (XMLAdapter) (Colección)

TextBox (Control)

THIS (Referencia de objeto)

THISFORM (Referencia de objeto)

THISFORMSET (Referencia de objeto)

Timer (Control)

ToolBar (Objeto)

U

V

Foundation Classes de Visual FoxPro (A-Z)

W

X

XMLAdapter (Clase)

XMLField (Clase)

XMLTable (Clase)

Y

Z

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico"..

© 1992 - 2003 Microsoft Corporation. Todos los derechos reservados.

Traducido al Español por el grupo de traductores de PortalFox.

Envíe un informe sobre errores en la traducción de este tema


Application (Objeto)

Un objeto creado para cada instancia de Visual FoxPro que proporciona un conjunto de propiedades y métodos de Visual FoxPro.

Application.PropertyName[ = eValue] -o- Application.Method

Parámetros

PropertyName
Especifica una propiedad para el objeto Application.
eValue
Especifica un valor para la propiedad.
Method
Especifica el método que se ejecutará para el objeto Application.

Observaciones

Visual FoxPro es un servidor de automatización que permite que otras aplicaciones como Microsoft Excel o Visual Basic inicien y manipulen remotamente Visual FoxPro a través de propiedades y métodos. El objeto Application también estará disponible desde el interior de una instancia de Visual FoxPro.

La sintaxis utilizada por una aplicación para crear una instancia de un servidor de automatización como Visual FoxPro suele ser única para la aplicación. Consulte la documentación de la aplicación para conocer la sintaxis correcta para crear una instancia de un servidor de automatización y, después, manipularla mediante propiedades y métodos.

Se puede tener acceso a la colección Objects a través del objeto Application.

Ejemplo

Es posible iniciar otra instancia de Visual FoxPro desde Visual FoxPro con el siguiente comando:

oNewInstance = CREATEOBJECT('VisualFoxPro.Application')

Una instancia nueva de Visual FoxPro no está visible cuando se crea; el siguiente comando hace visible la nueva instancia:

oNewInstance.Visible = .T.

Vea también

Application (Objeto: propiedades, métodos y eventos) | CREATEOBJECT( ) | _VFP (Variable del sistema) | Objects (Colección)

Aplica a: Projects (Colección)


Application (Objeto: propiedades, métodos y eventos)

Propiedades

ActiveForm | ActiveProject | Application
AutoYield | Caption | DefaultFilePath
EditorOptions | FullName | Height
HWND | LanguageOptions | Left
Name | Objects | OLERequestPendingTimeout
OLEServerBusyRaiseError | OLEServerBusyTimeout | Parent
ProcessID | Projects (Colección) | ServerName
StartMode | StatusBar | ThreadID
Top | Version | VFPXMLProgID
Visible | Width |

Métodos

DataToClip | DoCmd | Eval
Help | Quit | RequestData
SETVAR |  |

Vea también

_VFP (Variable del sistema) | Objects (Colección) | Application (Objeto) | Aplicación del marco de Visual Fox (Objeto) | Projects (Colección)


CheckBox (Control)

Crea una casilla de verificación.

CheckBox

Observaciones

Una casilla de verificación sirve para alternar entre dos estados, como Verdadero (.T.) y Falso (.F.) y Nulo (.NULL.).

Los tres posibles estados para una casilla de verificación son determinadas por la propiedad Value.

Muestra | Valor de la propiedad
 | 0 ó .F.
 | 1 ó .T.
 | 2 ó .NULL.

Establecer la propiedad Value a .NULL., ó 2, permite al usuario de la aplicación restringir la selección o no de la casilla de verificación. La casilla de verificación se muestra inicialmente seleccionada y sombreada; sin embargo, el usuario de la aplicación puede limpiar la selección y luego seleccionar la casilla de verificación. Puede proporcionar este comportamiento para permitir al usuario de la aplicación rechazar la selección de la casilla de verificación. El usuario puede devolver el estado original nulo de la casilla de verificación interactuando con ella al presionar CTRL+0.

La propiedad Value de la casilla de verificación refleja el tipo de dato de la última asignación. Si establece la propiedad a Verdadero (.T.) o Falso (.F.), el tipo es Lógico hasta que establezca un valor numérico a la propiedad. Si establece la propiedad ControlSource de la casilla de verificación a un campo lógico de la tabla, la casilla se mostrará seleccionada cuando el valor del registro actual sea Verdadero (.T.), no seleccionada cuando el valor del registro actual sea Falso (.F.) y seleccionada y ensombrecida cuando el valor del registro actual sea Nulo (.NULL.).

Sugerencia Si la propiedad ControlSource es un campo de la tabla que no acepta valores .NULL. , entonces, al presionar CTRL+0 se generará un error.

Utilice la propiedad Caption para especificar el texto que aparece junto a una casilla de verificación. Utilice la propiedad Picture para especificar una imagen para una casilla de verificación.

Para obtener más información acerca de los controles CheckBox, vea Utilizar controles.

Vea también

CheckBox (Control: propiedades, métodos y eventos) | CREATE CLASS | CREATE FORM | DEFINE CLASS


CheckBox (Control: propiedades, métodos y eventos)

Propiedades

Alignment | Application | AutoSize
BackColor | BackStyle | BaseClass
Caption | Centered | Class
ClassLibrary | ColorScheme | ColorSource
Comment | ControlSource | DisabledBackColor
DisabledForeColor | DisabledPicture | DownPicture
DragIcon | DragMode | DynamicFontBold
DynamicFontItalic | DynamicFontStrikethru | DynamicFontUnderline
Enabled | FontBold | FontCharSet
FontCondense | FontExtend | FontItalic
FontName | FontOutline | FontShadow
FontStrikethru | FontUnderline | ForeColor
Height | HelpContextID | Left
MouseIcon | MousePointer | Name
OLEDragMode | OLEDragPicture | OLEDropEffects
OLEDropHasData | Parent | ParentClass
Picture | PicturePosition | ReadOnly
RightToLeft | SpecialEffect | StatusBarText
Style | TabIndex | TabStop
Tag | TerminateRead | Themes
ToolTipText | Top | Value
Visible | WhatsThisHelpID | Width

Métodos

AddProperty | CloneObject | Drag
Move | OLEDrag | ReadExpression
ReadMethod | Refresh | ResetToDefault
SaveAsClass | SetFocus | ShowWhatsThis
WriteExpression | WriteMethod | ZOrder

Eventos

Click | DblClick | Destroy
DragDrop | DragOver | Error
ErrorMessage | GotFocus | Init
InteractiveChange | KeyPress | LostFocus
Message | MiddleClick | MouseDown
MouseEnter | MouseLeave | MouseMove
MouseUp | MouseWheel | OLECompleteDrag
OLEDragDrop | OLEDragOver | OLEGiveFeedBack
OLESetData | OLEStartDrag | ProgrammaticChange
RightClick | UIEnable | Valid
When |  |

Vea también

CheckBox (Control) | Utilizar controles | Caption (Propiedad)


Miembros objeto del Examinador de clases

Para referirse a los miembros objeto del Examinador de clases, puede utilizar los nombres de esta tabla. La tabla refleja el orden en que aparecen los objetos miembro en la ventana del Examinador de clases. La referencia a la propia ventana Examinador de clases es _oBrowser.

Objeto del Examinador de clases | Nombre del objeto
Cuadro de edición de descripción de clases | edtClassDesc
Cuadro de edición de miembro de clase | edtMemberDesc
Botón de comando Abrir | cmdOpen
Botón de comando Agregar archivo adicional | cmdAdd
Botón de comando Ver código de clase | cmdExport
Botón de comando Buscar | cmdFind
Botón de comando Nueva clase | cmdSubclass
Botón de comando Cambiar nombre | cmdRename
Botón de comando Redefinir | cmdRedefine
Botón de comando Quitar | cmdRemove
Botón de comando Limpiar biblioteca de clases | cmdCleanup
Imagen de icono de clase | imgClassIcon
Botón de comando Icono de clase | cmdClassIcon
Tipo de etiqueta para el tipo de cuadro combinado | lblClassType
Cuadro combinado Tipo | cboClassType
Control efecto 3D de la lista de clases | txtClassList3D
Contenedor OLE de la lista de clases | oleClassList
Contenedor OLE de la lista de miembros | oleMembers
Control efecto 3D de la lista de miembros | txtMembers3D
Cuadro de lista Miembro objeto | lstMembers*
Cuadro de lista Métodos | lstClassList*
Cuadro de edición Descripción de clase | edtClassDesc
Cuadro de edición Descripción de miembro | edtMemberDesc

* Estos objetos sólo existen cuando lOutlineOCX es falso (.F.).

Vea también

Examinar clases con el Examinador de clases | Botones del Examinador de clases | Métodos del Examinador de clases | Propiedades del Examinador de clases | Ventana Examinador de clases | Personalizar el Examinador de clases | Valores iniciales de las propiedades del Examinador de clases


Column (Objeto)

Crea un objeto Column en un control Grid. Una columna de una cuadrícula puede contener datos de un campo de una tabla o los valores de una expresión. Una columna también puede contener controles.

Grid.Column

Observaciones

Utilice la propiedad DataSource para especificar los datos que aparecen en el objeto Column.

El número de objetos Column de un control cuadrícula se especifica con la propiedad ColumnCount del control cuadrícula.

Los controles se agregan a un objeto Column de un control cuadrícula con el método AddObject en el evento Init para el formulario que contiene el control cuadrícula. Utilice la propiedad CurrentControl para establecer el control activo en la columna del control cuadrícula. Establezca la propiedad ControlSource del control para especificar el origen de los datos del control.

Nota No se puede tener acceso a los encabezados y los controles para un objeto Column hasta que se produzca el evento Init para el control cuadrícula.

Si desea obtener información adicional acerca de la creación de columnas en un control cuadrícula, vea Grid (Control) y Utilizar controles.

Ocultar columnas Para ocultar una columna en una cuadrícula, establezca la propiedad Visible de columna como Falso (.F.). Aun podrá establecer la propiedad Value de cualquier control en la columna. Por ejemplo, aún puede cambiar el valor de Column.Text1.Value especificando un nuevo valor, aun cuando la columna esté oculta.

Visual FoxPro procesa normalmente los cambios en una columna oculta de acuerdo con la propiedad BufferMode del formulario. Por ejemplo, ocultar una columna no evita que se realicen las actualizaciones pendientes para esa columna.

Cuando se oculta una columna que tiene el foco, el foco no se mueve automáticamente de la columna oculta a la columna siguiente o anterior. En esencia, ninguna columna tiene el foco. Si desea mover el foco a otra celda, columna o control, debe mover el foco manualmente, por ejemplo, presionando la tecla TAB o utilizando el ratón.

Cuando oculta todas las columnas en una cuadrícula, sólo permanece visible la porción del puntero de registro junto al lado izquierdo de la cuadrícula.

Establecer la propiedad AllowAutoColumnFit y utilizar el método AutoFit no afectan las columnas ocultas. Para más información, consulte AllowAutoColumnFit (Propiedad) y AutoFit (Método).

Vea también

Column (Objeto: propiedades, métodos y eventos) | CREATE CLASS (Comando) | CREATE FORM (Comando) | DEFINE CLASS (Comando) | Header (Objeto)


Column (Objeto: propiedades, métodos y eventos)

Propiedades

Alignment | Application | BackColor
BaseClass | Bound | Class
ClassLibrary | ColumnOrder | Comment
ControlCount | Controls | ControlSource
CurrentControl | DynamicAlignment | DynamicBackColor
DynamicCurrentControl | DynamicFontBold | DynamicFontItalic
DynamicFontName | DynamicFontOutline | DynamicFontShadow
DynamicFontSize | DynamicFontStrikeThru | DynamicFontUnderline
DynamicForeColor | DynamicInputMask | Enabled
FontBold | FontCharSet | FontCondense
FontExtend | FontItalic | FontName
FontOutline | FontShadow | FontSize
FontStrikeThru | FontUnderline | ForeColor
Format | HeaderClass | HeaderClassLibrary
InputMask | Movable | Name
Objects | Parent | ParentClass
ReadOnly | Resizable | SelectOnEntry
Sparse | StatusBarText | Tag
ToolTipText | Visible | Width

Métodos

AddObject | AddProperty | AutoFit
Move | ReadExpression | ReadMethod
Refresh | RemoveObject | ResetToDefault
SaveAsClass | SetAll | SetFocus
WriteExpression | WriteMethod | ZOrder

Eventos

Destroy | Error | Init
MouseEnter | MouseLeave | MouseMove
MouseWheel | Moved | Resize

Vea también

Column (Objeto) | ColumnCount (Propiedad) | Grid (Control) | Utilizar controles


Collection (Clase)

Puede usar colecciones para agrupar un conjunto de elementos relacionados, normalmente objetos, que pueden ser de cualquier tipo. Las colecciones proporcionan un mecanismo para trabajar con objetos almacenados en contenedores e incluye métodos estandarizados para acceder y recorrer los objetos de una colección. La clase Collection funciona como una verdadera clase contenedora, aún cuando no incluye un método AddObject como hacen las clases Form y PageFrame.

La clase Collection es una clase base que puede ser redefinida en un programa (.prg) o una biblioteca de clases visuales (.vcx).

Collection

Observaciones

La posición de un elemento en una colección puede variar cuando se producen cambios en la colección.

Las colecciones soportan la enumeración de elementos realizada con el comando FOR EACH en función de la posición de los mismos. Puede controlar la posición de dichos elementos mediante los parámetros eBeforeItem o eAfterItem del método Add del objeto Collection. Puede usar el valor de índice 1, o enumeración en base uno, para referirse al primer elemento de una colección, o puede usar un valor clave estableciendo en la propiedad KeySort. Las colecciones son en base uno por motivos de consistencia y compatibilidad con otras colecciones internas de Visual FoxPro.

Es necesario asegurarse de que, o bien todos los elementos de la colección tienen claves, o bien ninguno la tiene. Decidir si todos los elementos poseen o no claves aumenta la eficiencia en la búsqueda de elementos cuando se usa el método Item de los objetos Collection y el comando FOR EACH.

Puede usar una colección en un servidor Modelo de Objetos Componentes (COM) de Visual FoxPro, el cual podrá ser accedido por otros servidores COM.

Puede ocultar los métodos Add y Remove de los objetos Collection creando una subclase del objeto Collection y marcando los miembros de la subclase como Hidden o Protected. Si lo hace, sólo podrá añadir miembros a la colección en el evento Init o cualquier otro método de la subclase.

Los elementos añadidos a una colección tienen el mismo alcance que cualquier otra variable de memoria.

Debido a que los objetos Collection poseen métodos estándar, por ejemplo, Item (Clase Collection), debe tener en consideración el orden en que se buscan dichos métodos. Un método de un objeto Collection tiene preferencia sobre una llamada a una función definida por el usuario (UDF). La siguiente lista muestra el orden en que Visual FoxPro busca un nombre de función:

  • Función nativa de Visual FoxPro
  • Método por defecto del objeto Collection
  • UDF definida en el archivo de programa (.prg) actual
  • UDF definida en archivos de programa (.prg) a los que se llama
  • Programa con el mismo nombre en el archivo de la aplicación (.app o .exe)
  • Programa con el mismo nombre en la lista definida mediante SET PATH

Cuando Visual FoxPro libera una colección que contiene referencias a objetos, también libera cualquier objeto en la colección que no esté referenciado en ningún otro sitio. Asegúrese de liberar los objetos y cualquier referencia a los mismos de una colección antes de eliminarlos por completo de la memoria.

Visual FoxPro no soporta comprobación de tipos intrínsecamente. Por tanto, para asegurar la comprobación de tipos en las colecciones, debe incorporarlas en la clase.

Ejemplo

El siguiente ejemplo crea una serie de formularios y una colección en tiempo de ejecución, añade los formularios a la colección empleando el método Add de la clase Collection, y muestra el nombre de cada formulario de la colección y el número de formularios que la componen:

loForm1 = CREATEOBJECT("Form")
loForm2 = CREATEOBJECT("Form")
loCol = CREATEOBJECT("Collection")
loCol.Add(loForm1)
loCol.Add(loForm2)
FOR EACH loObj IN loCol
? loObj.Name
ENDFOR
? loCol.Count

El siguiente ejemplo define una clase Form que añade cuadros de texto, botones de comando y una colección al formulario. Una vez añadida al formulario en tiempo de ejecución, la clase Collection incorpora todos los objetos del formulario a sí misma. El ejemplo continúa recorriendo la colección para ajustar la posición de los controles y muestra sus nombres en pantalla.

LOCAL loForm, loItem, lnTop
loForm = CREATEOBJECT("myForm")
lnTop=0
FOR EACH loItem IN loForm.myCollection
TRY
loItem.Top = lnTop
lnTop=lnTop+20
? loItem.Name
CATCH
ENDTRY
ENDFOR
loForm.Show(1)
DEFINE CLASS myForm AS Form
AllowOutput=.F.
AutoCenter=.T.
ADD OBJECT myTextBox1 AS TextBox
ADD OBJECT myTextBox2 AS TextBox
ADD OBJECT myButton1 AS CommandButton
ADD OBJECT myButton2 AS CommandButton
ADD OBJECT myCollection AS col1
ENDDEFINE
DEFINE CLASS col1 AS Collection
PROCEDURE Init
FOR i = 1 TO THISFORM.Objects.Count
THIS.Add(THISFORM.Objects(m.i))
ENDFOR
ENDPROC
ENDDEFINE

Para encontrar más ejemplos del uso de los métodos Add, Remove, e Item de la clase Collection, vea Método Add (Clase Collection), Método Remove (Clase Collection), y Método Item (Clase Collection).

Vea también

Objectos, Colecciones,y Clases | Collection (Objeto: propiedades, métodos y eventos) | FOR EACH ... ENDFOR (Comando) | Automatización y Servidores COM

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Collection (Objeto: propiedades, métodos y eventos)

Propiedades

BaseClass | Class | ClassLibrary
Count | Comment | KeySort
Name | Parent | ParentClass
Tag |  |

Métodos

Add | AddProperty | GetKey
Item (Clase Collection) | ReadExpression | ReadMethod
Remove (Collection Class) | ResetToDefault | SaveAsClass
WriteExpression | WriteMethod |

Eventos

Destroy Error Init

Vea También

Clase Collection


ComboBox (Control)

Crea un cuadro combinado.

ComboBox

Observaciones

Cuando se selecciona un control ComboBox, se abre y muestra una lista de elementos de la que se puede elegir uno. Un control ComboText combina las características de un control TextBox y un control ListBox. Se puede escribir la información en la parte del cuadro de texto o seleccionar un elemento en la parte de cuadro de lista del control.

Nota Es posible mostrar u ocultar un elemento de la lista de un control ComboBox presionando Alt+Down Arrow, cuando es seleccionado el control.

La barra invertida ("\") es tratada como un carácter especial si es utilizada en una expresión para un elemento. Las siguientes reglas se aplican para este carácter.

  • Puede deshabilitar un elemento de un cuadro de lista, o un cuadro combinado al agregar al inicio de la expresión una barra invertida.
  • Cualquier múltiplo de dos barras invertidas utilizadas en la expresión son mostradas como una única barra invertida. Por ejemplo, si utiliza una o dos barras invertidas juntas, se mostrará sólo una, y si se utilizan tres o cuatro, se muestran dos barras invertidas. El código del ejemplo siguiente contiene un elemento de cuadro de lista que contiene un camino Universal Naming Convention (UNC) . El código lo va a mostrar en el cuadro de lista como \\MyServer\MyMachine\MyFolder.
    MyForm.List1.AddItem("\\\\MyServer\\MyMachine\\MyFolder")
  • Si la expresión comienza con múltiples barras invertidas, el elemento no está inactivo. Si se desea desactivar un elemento que comience con varias barras invertidas, agreguese una barra invertida y colóquese entre paréntesis al inicio del elemento Por ejemplo, el siguiente código va a desactivar la ruta UNC en el cuadro de lista:
    MyForm.List1.AddItem("\]\\\MyServer\\MyMachine\\MyFolder")
  • Para incluir un separador de línea, utilizar la barra invertida seguida por un guión como elemento a agregar al cuadro de lista. Por ejemplo, el siguiente código agrega un separador de línea a un cuadro de lista:
    MyForm.List1.AddItem("\-")

La propiedad Style determina el tipo del control ComboBox. Si la propiedad Style está establecida en cero (0), se crea un control cuadro combinado desplegable. Si la propiedad Style está establecida en 2 se crea un control cuadro de lista desplegable.

También se puede utilizar un control ActiveX que agregue características extra, tales como una casilla de verificación para los controles de vista de lista o vista de árbol.

Para mas información adicional acerca de los controles ComboBox, ver Diseñador de formularios y Utilizar controles.

Ver también

ComboBox (Control: propiedades, métodos y eventos) | CREATE CLASS | CREATE FORM | DEFINE CLASS


ComboBox (Control: propiedades, métodos y eventos)

Propiedades

Alignment | Application | BackColor
BaseClass | BorderColor | BorderStyle
BoundColumn | BoundTo | Class
ClassLibrary | ColorScheme | ColorSource
ColumnCount | ColumnLines | ColumnWidths
Comment | ControlSource | DisabledBackColor
DisabledForeColor | DisabledItemBackColor | DisabledItemForeColor
DisplayCount (Propiedad) | DisplayValue | DragIcon
DragMode | Enabled | FirstElement
FontBold | FontCharSet | FontCondense
FontExtend | FontItalic | FontName
FontOutline | FontShadow | FontSize
FontStrikeThru | FontUnderline | ForeColor
Format | Height | HelpContextID
HideSelection | IMEMode | IncrementalSearch
InputMask | ItemBackColor | ItemData
ItemForeColor | ItemIDData | ItemTips
Left | List | ListCount
ListIndex | ListItem | ListItemID
Margin | MaxLength | MouseIcon
MousePointer | Name | NewIndex
NewItemID | NullDisplay | NumberOfElements
OLEDragMode | OLEDragPicture | OLEDropEffects
OLEDropHasData (Propiedad) | OLEDropMode | OLEDropTextInsertion
Parent | ParentClass | Picture
PictureSelectionDisplay | ReadOnly | RightToLeft
RowSource | RowSourceType | Selected
SelectedBackColor | SelectedForeColor | SelectedID
SelectedItemBackColor | SelectedItemForeColor | SelectOnEntry
SelLength | SelStart | SelText
Sorted | SpecialEffect | StatusBarText
Style | TabIndex | TabStop
Tag | Text (Propiedad) | TerminateRead
Themes | ToolTipText | Top
TopIndex | TopItemID | Value
Visible | WhatsThisHelpID | Width

Métodos

AddItem | AddListItem | AddProperty
Clear | CloneObject | Drag
IndexToItemID | ItemIDToIndex | Move
OLEDrag | ReadExpression | ReadMethod
Refresh | RemoveItem | RemoveListItem
Requery | ResetToDefault | SaveAsClass
SetFocus | SetViewPort | ShowWhatsThis
WriteExpression | WriteMethod | ZOrder

Eventos

Click | DblClick | Destroy
DownClick | DragDrop | DragOver
DropDown | Error | ErrorMessage
GotFocus | Init | InteractiveChange
KeyPress | LostFocus | Message
MiddleClick (Evento) | MouseDown | MouseEnter
MouseLeave | MouseMove | MouseUp
MouseWheel | OLECompleteDrag | OLEDragDrop
OLEDragOver | OLEGiveFeedBack | OLESetData
OLEStartDrag | ProgrammaticChange | RangeHigh
RangeLow | RightClick | UIEnable
UpClick | Valid | When

Vea también

ComboBox (Control) | Diseñador de formularios | Utilizar controles


CommandButton (Control)

Crea un botón de comando sencillo.

CommandButton

Observaciones

Los botones de comando suelen emplearse para iniciar un evento que lleva a cabo una acción, como cerrar un formulario, moverse a otro registro, imprimir un informe, etc. Utilice el control CommandGroup para crear un conjunto de botones de comando que pueden manipularse individualmente o como grupo.

Utilice la propiedad Caption para especificar el texto que aparece en un botón de comando. Utilice la propiedad Picture para especificar una imagen para un botón de comando.

Puede elegir un botón de comando al hacer clic en él y si está establecida la propiedad Default en el valor verdadero (.T.), al presionar la tecla ENTRAR cuando está seleccionado el botón de comando. Si la propiedad Cancel del botón de comando se establece en el valor verdadero (.T.), puede elegir el botón de comando al presionar la tecla ESC.

Si desea información adicional acerca de los botones de comando, vea Diseñador de formularios y Utilizar controles.

Ejemplo

El ejemplo siguiente muestra cómo puede agregar botones de comando a un formulario. La propiedad Caption se utiliza para especificar el texto de los botones de comando y el texto que indica la secuencia de la tecla de acceso a cada botón. La propiedad Cancel se emplea para especificar un botón que se elige al presionar ESC.

El método AddObject se usa para agregar tres botones de comando al formulario, lo que permite cambiar la dirección en que se inclina un control Line o cerrar el formulario.

frmMyForm = CREATEOBJECT('Form')  && Create a Form
frmMyForm.Closable = .F.  && Disable the Control menu box
frmMyForm.AddObject('shpLine','Line')  && Add a Line control to the form
frmMyForm.AddObject('cmdCmndBtn1','cmdMyCmndBtn1')  && Up Cmnd button
frmMyForm.AddObject('cmdCmndBtn2','cmdMyCmndBtn2')  && Down Cmnd button
frmMyForm.AddObject('cmdCmndBtn3','cmdMyCmndBtn3')  && Quit Cmnd button
frmMyForm.shpLine.Visible = .T.  && Make Line control visible
frmMyForm.shpLine.Top = 20  && Specify Line control row
frmMyForm.shpLine.Left = 125  && Specify Line control column
frmMyForm.cmdCmndBtn1.Visible =.T.  && Up Command button visible
frmMyForm.cmdCmndBtn2.Visible =.T.  && Down" Command button visible
frmMyForm.cmdCmndBtn3.Visible =.T.  && Quit Command button visible
frmMyForm.SHOW  && Display the form
READ EVENTS  && Start event processing
DEFINE CLASS cmdMyCmndBtn1 AS CommandButton  && Create Command button
Caption = 'Slant \<Up'  && Caption on the Command button
Left = 50  && Command button column
Top = 100  && Command button row
Height = 25  && Command button height
PROCEDURE Click
ThisForm.shpLine.Visible = .F.  && Hide the Line control
ThisForm.shpLine.LineSlant ='/'  && Slant up
ThisForm.shpLine.Visible = .T.  && Show the Line control
ENDDEFINE
DEFINE CLASS cmdMyCmndBtn2 AS CommandButton  && Create Command button
Caption = 'Slant \<Down'  && Caption on the Command button
Left = 200  && Command button column
Top = 100  && Command button row
Height = 25  && Command button height
PROCEDURE Click
ThisForm.shpLine.Visible = .F.  && Hide the Line control
ThisForm.shpLine.LineSlant ='\'  && Slant down
ThisForm.shpLine.Visible = .T.  && Show the Line control
ENDDEFINE
DEFINE CLASS cmdMyCmndBtn3 AS CommandButton  && Create Command button
Caption = '\<Quit'  && Caption on the Command button
Cancel = .T.  && Default Cancel Command button (Esc)
Left = 125  && Command button column
Top = 150  && Command button row
Height = 25  && Command button height
PROCEDURE Click
CLEAR EVENTS  && Stop event processing, close Form
ENDDEFINE

Vea también

CommandButton (Control: propiedades, métodos y eventos) | CommandGroup (Control) | CREATE CLASS | CREATE FORM | DEFINE CLASS


CommandButton (Control: propiedades, métodos y eventos)

Propiedades

Application | AutoSize | BackColor
BaseClass | Cancel | Caption
ClassLibrary | Class | ColorScheme
ColorSource | Comment | Default
DisabledBackColor | DisabledForeColor | DisabledPicture
DownPicture | DragIcon | DragMode
Enabled | FontBold | FontCharSet
FontCondense | FontExtend | FontItalic
FontName | FontOutline | FontShadow
FontSize | FontStrikeThru | FontUnderline
ForeColor | Height | HelpContextID
Left | MouseIcon | MousePointer
Name | OLEDragMode | OLEDragPicture
OLEDropEffects | OLEDropHasData | OLEDropMode
ParentClass | Parent | Picture
PicturePosition | RightToLeft | SpecialEffect
StatusBarText | Style | TabIndex
TabStop | Tag | TerminateRead
Themes | ToolTipText | Top
Visible | VisualEffect (Propiedad) | WhatsThisHelpID
Width | WordWrap |

Métodos

AddProperty | CloneObject | Drag
Move | OLEDrag | ReadExpression
ReadMethod | Refresh | ResetToDefault
SaveAsClass | SetFocus | ShowWhatsThis
WriteExpression | WriteMethod | ZOrder

Eventos

Click | Destroy | DragDrop
DragOver | Error | ErrorMessage
GotFocus | Init | KeyPress
LostFocus | Message | MiddleClick
MouseDown | MouseEnter | MouseLeave
MouseMove | MouseUp | MouseWheel
OLECompleteDrag | OLEDragDrop | OLEDragOver
OLEGiveFeedBack | OLESetData | OLEStartDrag
RightClick | UIEnable | Valid
When |  |

Vea también

CommandButton (Control) | CommandGroup (Control) | Diseñador de formularios | Utilizar controles


CommandGroup (Control)

Crea un grupo de botones de comando.

Observaciones

Utilice el control CommandGroup para crear un conjunto de botones de comando que pueden manipularse individualmente o como grupo. Para crear un botón de comando individual, utilice el control CommandButton.

Utilice la propiedad ButtonCount para especificar el número de botones de comando del grupo y la propiedad Caption se utiliza para especificar una etiqueta para el grupo de botones de comando.

Si desea obtener información adicional acerca de los grupos de botones de comando, vea los temas Diseñador de formularios y Utilizar controles.

Vea también

CommandGroup (Control: propiedades, métodos y eventos) | CommandButton (Control) | CREATE CLASS | CREATE FORM | DEFINE CLASS


CommandGroup (Control: propiedades, métodos y eventos)

Propiedades

Application | AutoSize | BackColor
BackStyle | BaseClass | BorderColor
BorderStyle | ButtonCount | Buttons
Class | ClassLibrary | ColorSource
Comment | ControlSource | DragIcon
DragMode | Enabled | Height
HelpContextID | Left | MemberClass
MemberClassLibrary | MouseIcon | MousePointer
Name | Objects | OLEDragMode
OLEDragPicture | OLEDropEffects | OLEDropHasData
OLEDropMode | Parent | ParentClass
SpecialEffect | StatusBarText | TabIndex
Tag | TerminateRead | Themes
ToolTipText | Top | Value
Visible | WhatsThisHelpID | Width

Métodos

AddObject | AddProperty | CloneObject
Drag | Move | NewObject
OLEDrag | ReadExpression | ReadMethod
Refresh | RemoveObject | ResetToDefault
SaveAsClass | SetAll | ShowWhatsThis
WriteExpression | WriteMethod | ZOrder

Eventos

Click | DblClick | DragDrop
DragOver | Error | ErrorMessage
Init | InteractiveChange | Message
MiddleClick (Evento) | MouseDown | MouseEnter
MouseLeave | MouseMove | MouseUp
MouseWheel | OLECompleteDrag | OLEDragDrop
OLEDragOver | OLEGiveFeedBack | OLESetData
OLEStartDrag | ProgrammaticChange | RightClick
UIEnable | Valid | When

Vea también

CommandGroup (Control) | CommandButton (Control)


Container (Objeto)

Crea un objeto que puede contener otros objetos.

Container

Observaciones

Los objetos contenedor pueden contener otros objetos y permiten el acceso a los objetos que ellos contienen. Por ejemplo, si crea un objeto contenedor que consta de dos cuadros de lista y dos botones de comando y, a continuación, agrega el objeto contenedor a un formulario, los cuadros de lista y los botones de comando pueden manipularse en tiempo de diseño y en tiempo de ejecución.

Si desea obtener más información acerca de los objetos contenedores y en qué se diferencian de otros objetos y controles, vea Programación orientada a objetos.

Vea también

Container (Objeto: propiedades, métodos y eventos) | CREATE CLASS | CREATE FORM | DEFINE CLASS


Container (Objeto: propiedades, métodos y eventos)

Propiedades

ActiveControl | Application | BackColor
BackStyle | BaseClass | BorderColor
BorderWidth | Class | ClassLibrary
ColorSource | Comment | ControlCount
Controls | DragIcon | DragMode
Enabled | ForeColor | Height
HelpContextID | Left | MouseIcon
MousePointer | Name | Objects
OLEDragMode | OLEDragPicture | OLEDropEffects
OLEDropHasData | OLEDropMode | Parent
ParentClass | Picture | SpecialEffect
StatusBarText | TabIndex | TabStop
Top | ToolTipText | Top
Visible | WhatsThisHelpID | Width

Eventos

Click | DblClick | Destroy
DragDrop | DragOver | Error
GotFocus | Init | LostFocus
MiddleClick | MouseDown | MouseEnter
MouseLeave | MouseMove | MouseUp
MouseWheel | Moved | OLECompleteDrag
OLEDragDrop | OLEDragOver | OLEGiveFeedBack
OLESetData | OLEStartDrag | Resize
RightClick | UIEnable |

Métodos

AddObject | AddProperty | Drag
Draw | Move | NewObject
OLEDrag | ReadExpression | ReadMethod
Refresh | RemoveObject | ResetToDefault
SaveAsClass | SetAll | SetFocus
ShowWhatsThis | WriteExpression | Zorder

Vea también

Container (Objeto) | Objects (Colección)


Control (Objeto)

Crea un objeto control que puede contener otros objetos protegidos.

Control

Observaciones

Los objetos Control pueden contener otros objetos pero, a diferencia de los objetos contenedores, no permiten el acceso a los objetos que contienen. Por ejemplo, si crea un objeto control que consta de dos controles ListBox y dos controles CommandButton y, a continuación, agrega el objeto Control a un formulario, los controles ListBox y CommandButton no pueden manipularse individualmente en tiempo de diseño ni en tiempo de ejecución.

Si desea obtener más información acerca de los objetos Control y en qué se diferencian de otros objetos y controles, vea Programación orientada a objetos.

Vea también

Control (Objeto: propiedades, métodos y eventos) | CREATE CLASS | CREATE FORM | DEFINE CLASS | ListBox (Control) | CommandButton (Control)


Control (Objeto: propiedades, métodos y eventos)

Propiedades

ActiveControl | Application | BackColor
BackStyle | BaseClass | BorderColor
BorderWidth | Class | ClassLibrary
ColorSource | Comment | ControlCount
Controls | DragIcon | DragMode
Enabled | ForeColor | Height
HelpContextID | Left | MouseIcon
MousePointer | Name | Objects
OLEDragMode | OLEDragPicture | OLEDropEffects
OLEDropHasData | OLEDropMode | Parent
ParentClass | Picture | SpecialEffect
StatusBarText | TabIndex | TabStop
Tag | ToolTipText | Top
Visible | WhatsThisHelpID | Width

Eventos

Click | DblClick | Destroy
DragDrop | DragOver | Error
GotFocus | Init | LostFocus
MiddleClick | MouseDown | MouseEnter
MouseLeave | MouseMove | MouseUp
MouseWheel | Moved | OLECompleteDrag
OLEDragDrop | OLEDragOver | OLEGiveFeedBack
OLESetData | OLEStartDrag | Resize
RightClick | UIEnable |

Métodos

AddProperty | Drag | Draw
Move | OLEDrag | ReadExpression
ReadMethod | Refresh | ResetToDefault
SaveAsClass | SetFocus | ShowWhatsThis
WriteExpression | ZOrder |

Vea también

Control (Objeto)


Objeto Coverage Engine

Categoría | Informes
Clase | cov_engine
Biblioteca de clases | coverage.vcx
Clase de base | formset
Clase primaria | scov_formset

Este conjunto de formularios no es una subclase de _formset, por lo que el Analizador de trayecto puede ejecutarse en Visual FoxPro 5.0 y en versiones posteriores.

Observaciones

Esta clase es una subclase de la clase formset de Visual FoxPro. Aunque no proporciona componentes visibles, proporciona la sesión de datos de la clase formset e incluye información acerca del proceso de los registros de trayecto mediante WAIT WINDOW NOWAIT, MESSAGEBOX( ) y las subclases de MSComDlg.CommonDialog. Este conjunto de formularios tiene un miembro, una barra de herramientas, que permanece oculta y proporciona un contenedor para objetos personalizados, como las subclases CusRegistry o Dialog. Cov_standard, una subclase de cov_engine, proporciona un ejemplo de interfaz de usuario, la Aplicación Analizador de trayecto. Puede crear subclases de cov_engine o de cov_standard para ajustarlas a sus necesidades.

Propiedad aAddIns (matriz)

Esta matriz unidimensional almacena la lista de archivos de complementos registrados.

Valor predeterminado .F. (la matriz estará dimensionada [1])

Propiedad aFileTypes (matriz)

Esta matriz bidimensional contiene la lista de tipos de archivo (extensiones) controlada por el Analizador de trayecto. La primera columna contiene la extensión enumerada en el registro de trayecto como texto (como .fxp o .vct). La segunda columna contiene la extensión del archivo de código fuente correspondiente (como .prg o .vcx) que el Analizador de trayecto tiene que encontrar para analizar el código. Esta matriz se rellena en la fase de inicio mediante el método FillFileTypeArray( ).

Valor predeterminado .F. (la matriz estará dimensionada [1, 2])

Propiedad cAddIn

Especifica el último complemento que se ejecutó correctamente. En la fase de inicio, esta propiedad puede establecerse mediante un complemento pasado a la aplicación Analizador de trayecto como parámetro y ejecutado en Init. De otro modo, si los nombres de los archivos complemento se almacenaron previamente en el Registro, esta propiedad se establece a partir de la matriz aAddIns.

Valor predeterminado ""

Propiedad cBaseFontName

Especifica el nombre de la fuente base para los elementos de la interfaz. El valor predeterminado de este atributo cuando el registro del sistema no contiene ninguna preferencia es la constante #DEFINE COV_DEFAULT_BASE_FONTNAME de COV_TUNE.H.

Valor predeterminado MS Sans Serif

Propiedad cBaseMonoFontName

Especifica el nombre de la fuente base para los elementos de la interfaz que requieren una fuente monoespaciada.

El valor predeterminado de este atributo cuando el Registro no contiene ninguna preferencia es, primero, cualquier entrada del archivo de recursos de Visual FoxPro para las preferencias de la ventana MODIFY COMMAND. Si no, el motor de trayectos busca una entrada de Visual FoxPro en el Registro del sistema para la ventana Seguimiento. Si no encuentra ninguna, el motor de trayecto utiliza la constante #DEFINE COV_DEFAULT_MONO_FONTNAME de COV_TUNE.H.

Valor predeterminado Courier New

Propiedad cCovFilesAlias

Especifica el nombre del cursor que almacena los nombres de los archivos de origen que el Analizador de trayecto no tiene que buscar y analizar. El motor llena este cursor con un conjunto de nombres de archivo mediante los métodos CreateCoverageFileNameCursor( ) y FillCoverageFileNameCursor( ). Puede utilizar el método abstracto AdjustCoverageFileNameCursor( ) del motor de trayectos para agregar nombres de archivo al conjunto.

Valor predeterminado IgnoredFiles

Propiedad cDefaultWritePath

Especifica la ruta de acceso de cSourceFile. Suministra la ruta de acceso predeterminada de los archivos de resultados del Analizador de trayecto.

Valor predeterminado ""

Propiedad cMarkExecuted

Especifica el carácter o caracteres que marcan las líneas de código que se ejecutaron de acuerdo con el registro de trayecto actual. Aunque el valor predeterminado de esta propiedad es una cadena vacía, el motor utiliza el procedimiento SetMarks( ) para igualar la longitud de cMarkExecuted y cMarkNotExecuted para que la apariencia del código marcado sea consistente. Por tanto, en la fase de inicio el valor de cMarkExecuted es SPACE(4), para que coincida con la longitud predeterminada de cMarkNotExecuted.

Valor predeterminado ""

Propiedad cMarkNotExecuted

Especifica el carácter o caracteres que marcan las líneas de código que no se han ejecutado durante el registro de trayecto actual.

Valor predeterminado |+SPACE(3)

Propiedad cSavedSkipFiles

Especifica el nombre de archivo (.dbf) de la tabla que contiene la lista de archivos de origen pasados por alto durante el análisis del trayecto.

Valor predeterminado ""

Propiedad cSavedTargetDBF

Especifica el nombre de archivo (.dbf) de la tabla que contiene los resultados del trayecto.

Valor predeterminado ""

Propiedad cSkippedAlias

Especifica el nombre del cursor que almacena los nombres de los archivos de origen que el Analizador de trayecto no pudo encontrar o analizar. El motor llena este cursor mediante el método CreateSkippedCursor( ) y lo guarda en el disco mediante el método SaveSkippedCursor( ).

Valor predeterminado SkippedFiles

Propiedad cSourceAlias

Especifica el nombre del origen que contiene los registros agregados y procesados por el registro de trayecto. El motor crea este cursor en el método CreateSourceCursor( ) y proporciona el método abstracto AdjustSourceCursor( ) para poder agregar campos, etiquetas de índice, etc. A continuación, el motor llena el cursor con registros procedentes del registro de texto con el método FillSourceCursor( ).

Valor predeterminado FromLog

Propiedad cSourceFile

Especifica el nombre del archivo que se va a analizar. Puede especificar este valor como primer parámetro del comando DO (_COVERAGE) WITH.

Valor predeterminado ""

Propiedad cSuspendedLog

Especifica el nombre del registro de trayecto actual (SET(COVERAGE)) si el Analizador de trayecto suspende el registro de datos de trayecto. Esta propiedad se establece con el método SuspendCoverage( ).

Valor predeterminado ""

Propiedad cTargetAlias

Especifica el cursor de destino que almacena los nombres de las clases, los nombres de los archivos de origen, el código fuente de los procedimientos marcado por el trayecto y estadísticas del trayecto. El motor crea este cursor en el método CreateTargetCursor( ) y proporciona el método abstracto AdjustTargetCursor( ) para poder agregar campos, etiquetas, etc. A continuación, el motor de trayecto busca y analiza el código fuente en el método FillTargetCursor( ).

Valor predeterminado MarkedCode

iLenExecuting

Especifica la longitud del campo del archivo de origen que contiene información acerca del objeto y el método que ejecutó las líneas de código cubiertas, cuando #DEFINE COV_TOPSPEED en COV_TUNE.H es falso (.F.). Puede reducir el valor predeterminado, con cuidado, si los nombres completos de los objetos y los métodos son cortos y quiere conservar el espacio de disco utilizado por los archivos de trabajo del analizador. Vea COV_TUNE.H para obtener más información acerca de este valor. Vea Conservar el espacio de disco en las ejecuciones de Coverage para obtener más información acerca del uso de iLenExecuting.

Valor predeterminado 115

iLenDuration

Especifica la longitud, incluidas las posiciones decimales, del campo numérico del archivo de origen.

Valor predeterminado 8 (en Visual FoxPro versiones 5.0 y 6.0. El valor predeterminado es 11 en versiones posteriores).

iLenHostFile

Valor predeterminado 115

iLenObjClass

Especifica la longitud de un campo de los archivos de trabajo de origen y destino que contiene información acerca del objeto que ejecuta las líneas de código cubiertas cuando #DEFINE COV_TOPSPEED en COV_TUNE.H es falso (.F.). Para conservar el espacio de disco utilizado por los archivos de trabajo del Analizador, puede reducir el valor predeterminado, con cuidado, si los nombres de sus objetos son cortos. Puede hacerlo incluso si los nombres de los objetos contienen toda su jerarquía de contenedores. Vea COV_TUNE.H para obtener más información acerca de este valor. Vea Conservar el espacio de disco en las ejecuciones de Coverage para obtener más información acerca del uso de iLenObjClass.

Valor predeterminado 115

Propiedad lBaseFontBold

Especifica un atributo de la fuente base (negrita) de los caracteres presentados.

Valor predeterminado .F.

Propiedad lBaseFontItalic

Especifica un atributo de la fuente base (cursiva) de los caracteres presentados.

Valor predeterminado .F.

Propiedad lBaseMonoFontBold

Especifica un atributo de la fuente base (negrita) de los caracteres presentados que requieran una fuente monoespaciada.

Valor predeterminado .F.

Propiedad lBaseMonoFontItalic

Especifica un atributo de la fuente base (cursiva) de los caracteres presentados que requieran una fuente monoespaciada.

Valor predeterminado .F.

Propiedad lError

Un indicador que especifica que se produjo un error; lo establece el método Error y lo comprueban operaciones críticas durante el proceso.

Valor predeterminado .F.

Propiedad lInCoverageFrame

Especifica si el Analizador de trayecto se abre en la ventana principal de Visual FoxPro. El valor predeterminado presenta los elementos del Analizador de trayecto en una ventana aparte.

Valor predeterminado .F.

Propiedad lInProfileMode

Especifica si el Analizador de trayecto analiza el registro de trayecto con fines de análisis. En su valor predeterminado, el Analizador de trayecto analiza el registro con fines de trayecto.

Valor predeterminado .F.

Propiedad lMarkAllOnLoad

Especifica si se marca todo el código fuente cuando se carga un archivo de destino. En su valor predeterminado, los registros de código fuente se marcan de uno en uno según lo requiera el usuario.

Valor predeterminado .F.

Propiedad lSaveFormPositions

Especifica si todos los formularios del conjunto de formularios reciben una instancia de cov_SavePosition para controlar sus posiciones y tamaños.

Valor predeterminado .F.

Propiedad lSmartPath

Especifica si el motor mantiene una referencia a los directorios en los que se han encontrado los archivos.

Valor predeterminado .T.

Propiedad lStartInProfileMode

Especifica cómo se establece la propiedad lInProfileMode cuando se carga cada registro de trayecto. Este valor es importante cuando la propiedad lMarkAllOnLoad está establecida en verdadero (.T.).

Valor predeterminado .F.

Propiedad lTurnedOffTrace

Especifica si el Analizador de trayecto utilizó SET TRBETWEEN OFF durante el proceso.

Valor predeterminado .F.

Propiedad lUsingRegistry

Especifica si las opciones del usuario se guardan y se obtienen en el registro de Microsoft Windows.

Valor predeterminado .T.

Propiedad lUsingStatusBar

Determina si los mensajes de información del proceso se presentan en la barra de estado o como mensaje WAIT WINDOW NOWAIT. La barra de estado se utiliza cuando el Analizador de trayecto se ejecuta en la ventana principal de Visual FoxPro o cuando se ejecuta en modo no atendido y el valor de STATUS BAR es ON.

Valor predeterminado .F.

Propiedad lVFP5

Especifica si el Analizador de trayecto está ejecutándose bajo Visual FoxPro 5.0.

Valor predeterminado (ATC("FoxPro 05",VERSION( )) > 0)

Propiedad nBasefontsize

Especifica el tamaño de la fuente base de los caracteres presentados.

Default 11 (defaults to 8 in version 5.0 and 6.0)

Propiedad oFrame

Especifica una referencia a la ventana Marco de trayecto cuando el Analizador de trayecto se ejecuta en una ventana separada. El motor se asegura de que esta ventana exista antes de presentar cualquier cuadro de diálogo u otros elementos relacionados (incluidas las subclases del cuadro de diálogo común, la presentación SET TALK, etc.).

Valor predeterminado .NULL.

Método AddFormPositionSaver( )

Agrega una instancia de cov_SavePosition a un formulario para guardar y restaurar el tamaño y la posición del formulario.

AddFormPositionSaver(toForm)

Valores devueltos

Ninguno

Parámetros

toForm
Especifica que el objeto cov_SavePosition se guarda en un formulario.

Método AddPath( )

Extrae información de directorio para concatenarla con SET(PATH).

AddPath(tcFileName)

Valores devueltos

Ninguno

Parámetros

tcFileName
Especifica un nombre de archivo.

Observaciones

Extrae la información del directorio del nombre de archivo que se le pasa, tcFileName, para utilizarla en SET(PATH).

Método AddRegisteredAddin( )

Agrega el nombre de archivo a la matriz aAddIns.

AddRegisteredAddin(tcFileToAdd)

Valores devueltos

Ninguno

Parámetros

tcFileToAdd
Especifica el archivo que se va a agregar a la matriz aAddIns.

Observaciones

Agrega a la matriz aAddIns un nombre de archivo, TcFileToAdd, cuando se invoca mediante el método RunAddIn( ) después de que el complemento se haya ejecutado correctamente.

Método AdjustCoverageFilenameCursor( )

Habilita la adición de archivos a la lista del cursor de archivos no analizados.

AdjustCoverageFilenameCursor(tcTarget)

Valores devueltos

NOT THIS.lReturn

Parámetros

tcTarget
Especifica el nombre del cursor que se desea modificar.

Observaciones

Permite agregar archivos que no se desea analizar a la lista de archivos del cursor cuando se invoca mediante el método CreateCoverageFilenameCursor( ). Vea la propiedad cCovFilesAlias.

Método AdjustSourceCursor( )

Método abstracto que permite agregar etiquetas de índice y campos personalizados al cursor fuente cuando se invoca mediante el método CreateSourceCursor( ).

AdjustSourceCursor(tcSource)

Valores devueltos

NOT THIS.lReturn

Parámetros

tcSource
Especifica el nombre del cursor que contiene los registros de origen.

Método AdjustTargetCursor( )

Método abstracto invocado por el método CreateTargetCursor( ) que permite agregar etiquetas de índice y campos personalizados al cursor de destino.

AdjustTargetCursor(tcTarget)

Valores devueltos

NOT THIS.lReturn

Parámetros

tcTarget
Especifica el nombre de la tabla que se está modificando.

Método ClearStatus( )

Elimina un mensaje de la barra de estado o ejecuta un comando CLEAR WAIT WINDOW. Vea la propiedad lUsingStatusBar.

ClearStatus( )

Valores devueltos

Ninguno

Parámetros

Ninguno

Método CreateCoverageFilenameCursor( )

Crea un cursor para almacenar los nombres de los archivos de origen que el Analizador de trayecto no tiene que buscar y analizar. Vea la propiedad cCovFilesAlias.

CreateCoverageFileNameCursor( )

Valores devueltos

lReturn AND NOT THIS.lError

Parámetros

Ninguno

Método CreateForms( )

En la fase de inicio, presenta la ventana del Analizador de trayecto después de haber configurado los archivos de trabajo si el motor de trayecto no se ejecuta en modo no atendido. En la clase de base del motor de trayecto, este método sólo crea el marco Coverage (si el motor no se ejecuta en la ventana de Visual FoxPro). En este método puede incluir subclases para agregar sus propios cuadros de diálogo.

CreateForms( )

Valores devueltos

Ninguno

Parámetros

Ninguno

Método CreateSkippedCursor( )

El motor crea este cursor al bloquear los registros eliminados de la tabla de origen, puesto que los registros omitidos se eliminan cuando el motor encuentra nombres de archivo que no se pueden ubicar o se encuentran en la lista de archivos omitidos durante la carga del archivo de registro. Vea la propiedad CSkippedAlias.

CreateSkippedCursor(tcSource, tcSkipped)

Valores devueltos

NOT THIS.lError

Parámetros

tcSource
Especifica el nombre de la tabla que contiene los registros de origen.
TcSkipped
Especifica el alias del cursor que contiene los registros omitidos.

Método CreateSourceCursor( )

Crea un cursor origen con el formato siguiente:

CREATE CURSOR(cSource) ;
(Duration n(COV_LEN_DURATION,N_COVLOG_PRECISION), ;ObjClass c(COV_LEN_OBJCLASS), ;Executing c(COV_LEN_EXECUTING), ;Procline i, ;Hostfile c(COV_LEN_HOSTFILE), ;Stacklevel I, ;FileType c(4) )

El campo Stacklevel queda excluido cuando el valor de la propiedad lVFP5 es verdadero (.T.). Vea en COV_TUNE.H las instrucciones #DEFINE para las longitudes de los campos.

CreateSourceCursor(tcSource)

Valores devueltos

lReturn AND NOT THIS.lError

Parámetros

tcSource
Especifica el nombre del cursor que contiene los registros de origen.

Método CreateTargetCursor( )

Crea un cursor destino con el formato siguiente:

CREATE CURSOR (cTarget) ;
(Hostfile c(COV_LEN_HOSTFILE), ;ObjClass c(COV_LEN_OBJCLASS), ;FileType c(4), ;Marked   m, ;Profiled m, ;SourceCode m, ;Coverable i, ;Covered i, ;ObjTotal i, ;ObjHits i)

Vea en COV_TUNE.H las instrucciones #DEFINE para las longitudes de los campos.

CreateTargetCursor(tcSource, tcTarget)

Valores devueltos

NOT THIS.lError

Parámetros

tcSource
Especifica el nombre del archivo que se va a analizar.
TcTarget
Especifica el nombre del archivo que se desea modificar.

Observaciones

El archivo destino contiene un registro por cada uno de los siguientes elementos del registro de trayecto:

  • Un archivo de origen ASCII.
  • Una clase contenida en un archivo de origen ASCII.
  • Una clase contenida en un archivo .vcx o .scx.
  • Una lista de procedimientos almacenados en un archivo .dbc.
  • Una clase de entorno de datos u otra clase miembro del entorno de datos (como un cursor) en un archivo de origen .frx o .lbx.

Método DeleteRegisteredAddin( )

Elimina un nombre de archivo de la matriz aAddIns.

DeleteRegisteredAddin(tcFileToDelete)

Valores devueltos

Ninguno

Parámetros

tcFileToDelete
Especifica el complemento que se va a quitar del registro.

Observaciones

Es invocado por el método RunAddIn cuando un complemento no se ejecuta correctamente, independientemente de si se está utilizando el Registro del sistema o no.

Método DisplayProjectStatistics( )

Activa los informes después de que GetProjectStatistics( ) haya recopilado las estadísticas del proyecto.

DisplayProjectStatistics(tcSource, tcTarget, tcProject)

Valores devueltos

NOT THIS.lError

Parámetros

tcSource
Especifica el nombre de la tabla que contiene los registros de origen.
tcTarget
Especifica el nombre de la tabla que se está modificando.
tcProject
Especifica el alias del proyecto que se está analizando.

Método DoMessage( )

Muestra tcMessage.

DoMessage(tcMessage [, tnMessageBoxOptions [, tcMessageBoxTitle]])

Valores devueltos

liReturn

Parámetros

tcMessage
Especifica el mensaje que aparece en el MESSAGEBOX.
TnMessageBoxOptions
Especifica la configuración nDialogBoxType de MESSAGEBOX.
TcMessageBoxTitle
Especifica la configuración cTitleBarText de MESSAGEBOX.
LiReturn
Especifica el valor devuelto por MESSAGEBOX( ) ó 0 si se ejecuta mediante WAIT WINDOW.

Observaciones

Si el Analizador de trayecto se ejecuta en modo desatendido, el mensaje se presenta en una ventana WAIT WINDOW TIMEOUT para que no impida la continuación del proceso. Puede especificar el valor de tiempo de espera mediante COV_TIMEOUT_SECS (una constante #DEFINE en COV_TUNE.H).

Método Error( )

Establece el indicador de error.

Error(nError, cMethod, nLine)

Valores devueltos

Ninguno

Parámetros

nError
Especifica el número de error de Visual FoxPro.
CMethod
Especifica el nombre del método que provocó el error.
NLine
Especifica el número de línea en que se produjo el error.

Observaciones

Según el valor de COV_DEBUG (una constante #DEFINE en COV_TUNE.H), se presentará un MESSAGEBOX de error y se liberará el motor, o se presentará una ventana WAIT WINDOW con la información del error y se invocará el controlador de errores nativo de Visual FoxPro para permitir que el programador cancele, suspenda u omita el error actual.

Método FillCoverageFileNameCursor( )

Agrega archivos a la lista de archivos omitidos.

FillCoverageFileNameCursor( )

Valores devueltos

NOT THIS.lError

Parámetros

Ninguno

Observaciones

CreateCoverageFileNameCursor( ) invoca este método para agregar los nombres del conjunto de archivos del motor de trayecto al grupo de archivos que van a omitirse durante el proceso. Este método es un conjunto de comandos INSERT en la base del motor de trayecto. Puede ignorar este valor en una subclase diseñada para leer un conjunto de nombres de archivo desde un archivo de texto generado por la lista de archivos de Coverage.pjx.

Método FillFileTypeArray( )

Inicializa la matriz aFileTypes con extensiones de archivo conocidas. Vea la propiedad aFileTypes.

FillFileTypeArray( )

Valores devueltos

NOT(EMPTY(THIS.aFileTypes[1,1]) OR THIS.lError)

Parámetros

Ninguno

Método FillOneTargetRecord( )

Agrega código fuente sin marcas al campo memo.

FillOneTargetRecord(tcSource, tcTarget, tlFillingAll)

Valores devueltos

lReturn AND(NOT THIS.lError)

Parámetros

tcSource
Especifica el nombre de la tabla que contiene los registros de origen.
TcTarget
Especifica el nombre de la tabla que se está modificando.
TlFillingAll
Especifica si todos los registros se procesan en un bucle, lo que modifica la respuesta del usuario y el control de los caracteres que se muestran.

Observaciones

Coloca el código fuente no marcado del registro de destino en el campo memo apropiado, para ser marcado posteriormente, mediante una estrategia de búsqueda del código correcto que es diferente para cada tipo de código fuente. Si COV_TOPSPEED no es verdadero (.T.), este método también coloca ciertas estadísticas iniciales en el archivo destino.

Método FillSourceCursor( )

Agrega el contenido del registro de trayecto al archivo de origen de análisis.

FillSourceCursor(tcSource)

Valores devueltos

lReturn

Parámetros

tcSource
Especifica el nombre del archivo de origen.

Observaciones

Este método invoca al método SourceAvailable( ) para eliminar los registros que hagan referencia a los archivos de origen no disponibles para su análisis. Marca dichos registros como eliminados en el cursor de origen.

Método FillTargetCursor( )

Invoca el método FillOneTargetRecord( ) para cada uno de los registros del bucle.

FillTargetCursor(tcTarget)

Valores devueltos

(THIS.iTargetReccount > 0 AND NOT THIS.lError)

Parámetros

tcTarget
Especifica el archivo de destino que recibe los resultados procesados.

Observaciones

Copia las estadísticas ObjHits desde el método CreateTargetCursor( ) para los registros adicionales que hagan referencia a los mismos archivos de origen con los archivos de destino. Vea el método CreateTargetCursor( ).

Método FilterListByLocation( )

Proporciona un marcador de posición para futuras ampliaciones.

FilterListByLocation( )

Valores devueltos

NOT THIS.lError

Parámetros

Ninguno

Observaciones

FilterListByLocation( ) puede invocarse cuando se carga un registro o en respuesta a una acción del usuario, con o sin la aplicación Analizador de trayecto. Este método es abstracto dentro del motor.

Método GetAlias( )

Devuelve el alias actual o predeterminado de un tipo de archivo de trabajo del Analizador de trayecto.

GetAlias(tAlias, tcWhichProp)

Devuelve

cReturn

Parámetros

tAlias
Especifica el alias de un archivo.
tcWhichProp
Especifica el tipo de archivo de trabajo (actualmente, Origen o Destino) del valor predeterminado actual.

Observaciones

GetAlias( ) devuelve un alias actualmente utilizado o el alias predeterminado de uno de los tipos de archivo de trabajo del Analizador de trayecto. Los tipos de archivo de trabajo válidos son los siguientes:

"SOURCE","TARGET","SKIPPED","COVFILES" y "PROJECT"

(La lista de tipos está definida en COV_SPEC.H como COV_KNOWN_ALIAS_PROPERTIES.) Cada tipo de archivo de trabajo coincide con una propiedad c…Alias para especificar el alias predeterminado de cada archivo de trabajo.

El Analizador de trayecto suele tener un cursor abierto que utiliza cada uno de los alias predeterminados de los archivos de trabajo. Sin embargo, el Analizador de trayecto puede controlar muchos archivos de trabajo al mismo tiempo en su sesión de datos, siempre y cuando especifique un alias distinto para cada uno. El método GetAlias( ) y el sistema de tipos de trabajo definidos, junto con las propiedades c...Alias, permiten tener nombres de alias predeterminados sin necesidad de que estén implementados en el código.

Los métodos del motor que procesan los archivos de trabajo utilizan los alias como parámetros, de forma que se puede especificar en qué archivo de origen, destino o de otro tipo, está interesado en cualquier momento. Sin embargo, como habitualmente sólo se tiene interés en un conjunto de archivos de trabajo, todos esos métodos utilizan los métodos GetAlias( ) para especificar qué alias y tipo predeterminado de archivo de trabajo tiene que buscar si no se les pasa un alias concreto.

Método GetFontsFromUser( )

Crea una instancia de una subclase del cuadro de diálogo común para pedir al usuario que establezca las propiedades de las fuentes. Si lUsingOCXs es falso (.F.) o hubo un error al crear una instancia del cuadro de diálogo común, el método utiliza el método GETFONT( ). Si el primer parámetro, tlBaseMonoFont, es verdadero (.T.), el método sólo muestra fuentes monoespaciadas y establece las propiedades de los atributos de las fuentes monoespaciadas del motor. Si este parámetro es falso (.F.), el segundo conjunto de propiedades de los atributos de la fuente base se establece a partir de la lista de las fuentes disponibles para la pantalla.

Para obtener más información acerca de la propiedad lUsingOCXs, consulte el método GetResourceLocation( ).

GetFontsFromUser(tlBaseMonoFont, toMemberHost )

Valores devueltos

lFontChange AND NOT THIS.lError

Parámetros

tlBaseMonoFont
Especifica el estilo de fuente monoespaciada predeterminado.
ToMemberHost
Especifica una referencia al objeto Coverage actual.

Método GetProjectStatistics( )

Crea un cursor que contiene información del proyecto.

GetStatistics(tcSource, tcTarget, tcProject)

Valores devueltos

lReturn

Parámetros

tcSource
Especifica el nombre del alias que contiene los registros de origen.
tcTarget
Especifica el nombre del alias que se está modificando.
tcProject
Especifica el proyecto que contiene los archivos de origen.

Observaciones

La información que contiene el cursor tiene el siguiente formato.

CREATE CURSOR(cProyecto) ;

(Hostfile c(COV_LEN_HOSTFILE), ;FileType c(4), ;Coverable n(8), ;Covered n(8), ;ObjTotal n(8), ;ObjHits n(8))

GetProjectStatistics( ) crea un archivo de encabezado en este cursor, que indica el proyecto al que se aplica y llena el cursor con estadísticas, extraídas del registro de trayecto actual, que se aplican a cada archivo de origen del proyecto. Si es necesario, GetProjectStatistics( ) invoca a MarkOneTargetRecord( ) para todos los archivos del proyecto que aún no tengan su código fuente marcado.

Método GetRegisteredAddins( )

Llena la matriz aAddIns y la propiedad cAddIn.

GetRegisteredAddins( )

Valores devueltos

Ninguno

Parámetros

Ninguno

Método GetRegistryKeyValue( )

Recupera el valor de registro de la opción de usuario

GetRegistryKeyValue(tcOption, tDefaultValue, tcPath)

Valores devueltos

vReturn

Parámetros

tcOption
Especifica la opción de tipo de archivo.
tDefaultValue
Especifica el valor de registro predeterminado.
tcPath
Especifica RegKey.

Observaciones

Este método, que se utiliza normalmente en la fase de inicio, utiliza el elemento de control del registro de la barra de herramientas de los formularios del motor para obtener el valor de una clave del registro que representa una opción de usuario. Convierte el valor del Registro del sistema en otro valor TYPE( ), si es necesario y compara dicho valor TYPE( ) con el valor pasado, tDefaultValue. Devuelve el valor del Registro del sistema o el valor predeterminado si el valor del Registro del sistema no se ha encontrado o no es del tipo correcto.

Método GetResourceLocation( )

Especifica si se sigue la estrategia de GETFILE( ) y ShowOpen( ), o la de PUTFILE( ) y ShowSave( ).

GetResourceLocation(tcHost, tcTitle, tcCDLFilter, tcFileName, tcWhichDialog, [toMemberHost] )

Valores devueltos

lcFileName

Parámetros

tcHost
Especifica el nombre del archivo desde el que el método va a buscar el archivo de la versión no compilada del código. Si es pasado, proporciona información para la propiedad .InitDir del cuadro de diálogo común.
tcTitle
Especifica el título que se va a utilizar en el cuadro de diálogo o, en la versión GETFILE( ) y PUTFILE( ), que se va a utilizar como título de WAIT WINDOW NOWAIT. Si también se pasa tcHost e incluye un nombre de archivo, dicha información se agrega al título o al texto del cuadro de diálogo.
tcCDLFilter
Especifica los tipos de archivo permitidos en el cuadro de diálogo. Este parámetro se expresa en el formato requerido por la expresión de filtrado del cuadro de diálogo. Si se invoca GETFILE( ) y PUTFILE( ), el método examina el filtro del cuadro de diálogo para ponerlo en el formato apropiado para las dos funciones de Visual FoxPro.
tcFileName
Especifica el nombre de archivo predeterminado que se va a presentar.
tcWhichDialog
Especifica GETFILE o PUTFILE.
toMemberHost
Especifica una referencia de formulario opcional que se puede pasar para indicar dónde se va a presentar el cuadro de diálogo. Si no se pasa toMemberHost, el cuadro de diálogo se presentará de forma relativa al marco de trayecto (si existiera) o al primer formulario de la colección formset (si el Analizador de trayecto está en la ventana de Visual FoxPro).

Observaciones

Agrega un miembro de la subclase de cuadro diálogo apropiada (según el valor de tcWhichDialog) si ésta es la primera llamada. Las subclases difieren en cómo establecen los distintos indicadores.

Nota Este método proporciona subclases de cuadro diálogo adicionales, que muestran un archivo de Ayuda o un cuadro de diálogo Imprimir, de los que se pueden crear instancias para su uso posterior.

Si en el Analizador de trayecto se produjera un error relacionado con la subclase o con el archivo .ocx, este método establece la propiedad lUsingOCXs en falso (.F.) y utiliza GETFILE( ) y PUTFILE( ).

Puede establecer #DEFINE COV_USE_OCXS si prefiere el comportamiento predeterminado de las funciones nativas de Visual FoxPro incluso si no hubiera errores OCX.

Método GetTableName( )

Genera nombres de archivo para el funcionamiento desatendido.

GetTableName(tcWhichSuffix)

Valores devueltos

cLogfileStem+SUFFIX[+n]+.dbf

Parámetros

tcWhichSuffix
Especifica qué extensión de archivo se va a utilizar.

Observaciones

Este método permite que el motor de trayecto genere nombres de archivo con los que guardar su trabajo en el disco sin sobrescribir archivos existentes. Normalmente, suministra nombres de archivo predeterminados, pero en modo no atendido este método crea los nombres de los archivos sin la intervención del usuario. Cada método que guarda un archivo en el disco invoca a GetTableName( ) con un sufijo específico; por ejemplo, en SaveSkippedCursor:

cDBFName = ; THIS.GetTableName(COV_SKIPFILEDBF_SUFFIX)

GetTableName( ) utiliza la ruta de acceso y el nombre del archivo de registro actual (THIS.cSourceFile) y agrega el sufijo apropiado a dicha raíz además de un dígito, seguido todo por la extensión DBF. Por ejemplo, Testlog.txt produciría TESTLOG_SKIP1.DBF en el ejemplo anterior.

Después, GetTableName( ) incrementa el dígito si el nombre de archivo generado ya existe, hasta encontrar un nombre que no exista.

Los sufijos predeterminados son #DEFINEs en COV_TUNE.H.

Método LockScreens( )

Mantiene o libera las propiedades LockScreen y las propiedades MousePointer de todos los miembros de _Screen durante varios procedimientos de larga duración.

LockScreens(tlOn)

Valores devueltos

Lógico. .T.

Parámetros

tlOn
Especifica si se debe bloquear las propiedades Lockscreen y MousePointer.

Método MarkAllTargetRecords( )

Invoca el método MarkOneTargetRecord( ) para todos los registros de destino de un bucle. Puede invocarse cuando lMarkAllOnLoad sea verdadero (.T.) o cuando el motor de trayecto se esté ejecutando en modo desatendido.

MarkAllTargetRecords(tcSource, tcTarget)

Valores devueltos

NOT THIS.lError

Parámetros

tcSource
Especifica el nombre de la tabla que contiene los registros de origen.
tcTarget
Especifica el nombre de la tabla que se está modificando.

Método MarkCodeLine( )

Crea una versión marcada de una línea de código más estadísticas de trayecto.

MarkCodeLine(tcLine, tiExecuted, tnFirst, tnAverage)

Valores devueltos

CMarkedLine

Parámetros

tcLine
Especifica la línea de código.
tiExecuted
Especifica el número de veces que se ejecutó tcLine.
tnAverage
Especifica el promedio de tiempo de ejecución.

Observaciones

En modo trayecto, MarkCodeLine( ) marca el código como “Ejecutado” si tiExecuted es un número positivo y como “No ejecutado” si tiExecuted es 0. En modo perfil, MarkCodeLine( ) marca las estadísticas de trayecto de la línea. En cualquiera de ambos modos, MarkCodeLine( ) marca el código como no recuperable (precedido por espacios) si tiExecuted es .NULL.

Método MarkOneTargetRecord( )

Determina si la línea actual está marcada o no.

MarkOneTargetRecord(tcSource, tcTarget, tlFillingAll)

Valores devueltos

lReturn AND (NOT THIS.lError)

Parámetros

tcSource
Especifica el nombre de la tabla que contiene los registros de origen.
tcTarget
Especifica el registro que se va a modificar.
tlFillingAll
Especifica si se están procesando otros registros de destino. Si todos los registros se van a procesar en un bucle, la información para el usuario y el control de los caracteres presentados son distintos.

Observaciones

Determina si el registro de destino actual, tcTarget, ya está marcado en el modo de trayecto actual y, si no es así, pasa la información necesaria al método MarkTargetCoverage( ) para su procesamiento.

Método MarkTargetCoverage( )

Marca una copia del origen y ejecuta REPLACE sobre un campo memo del archivo de destino.

MarkTargetCoverage(tcSource, tcTarget)

Valores devueltos

NOT (EMPTY(cMemo) OR THIS.lError)

Parámetros

tcSource
Especifica el nombre de la tabla que contiene los registros de origen.
tcTarget
Especifica el nombre de la tabla que se está modificando.

Observaciones

MarkTargetCoverage( ) crea una versión marcada de tcSource y reemplaza un campo memo del archivo destino, tcTarget, (si el código es de una clase o un archivo de procedimientos completo).

Para ejecutar esta acción, el método empieza con el memo del código fuente. El campo memo modificado depende de si el Analizador de trayecto está marcando información de trayecto o de análisis, ya que el registro de destino mantiene ambos conjuntos de código marcado. Este método examina el código fuente y evalúa sus estadísticas línea por línea. De forma predeterminada, este método invoca el método MarkCodeLine( ) para marcar cada línea cuando tiene las estadísticas adecuadas. Sin embargo, la forma en que este método marca la línea de código está definida por COV_MARK_CODE_LINE en COV_TUNE.H; no está implementada directamente como llamada al método MarkCodeLine( ). Esto permite reemplazar la llamada al método MarkCodeLine( ) por un sistema de marcado diferente. Un segundo #DEFINE, COV_TOPSPEED en COV_TUNE.H, permite también cambiar la llamada a MarkCodeLine( ) por un sistema de marcado en línea más sencillo, para tener un mejor tiempo de respuesta.

MarkTargetCoverage( ) evalúa cada línea para saber si se ha ejecutado, cuántas veces se ha ejecutado y la duración de sus ejecuciones (primera y promedio) cuando se ejecuta en modo perfil. Sin embargo, muchas líneas se consideran irrecuperables en el Analizador de trayecto. Dichas líneas, como los observaciones, instrucciones DEFINE CLASS y ELSE/Otherwise, y las líneas entre TEXT y ENDTEXT no aparecen en los registros de trayecto porque no se pueden ejecutar.

Nota Entre las líneas no recuperables se incluyen las instrucciones #DEFINE, las líneas vacías, las continuaciones de líneas en ejecución y las líneas de parámetros.

Este método establece el número de veces que dichas líneas se han ejecutado como .NULL. Dichas líneas no se tienen en cuenta cuando el Analizador de trayecto compila las estadísticas. Además, las líneas partidas por símbolos de continuación de línea (puntos y comas) se consideran como una sola línea de código y sólo tienen las marcas en la última línea.

Método OrderListByTime( )

Proporciona un marcador de posición para futuras ampliaciones y subclases.

OrderListByTime( )

Valores devueltos

NOT THIS.lError

Parámetros

Ninguno

Observaciones

OrderListByTime( ) es abstracto dentro del motor.

Método PassedProperParams( )

PassedProperParams(tcFile, tlUnattended, tcAddIn)

Valores devueltos

lReturn

Parámetros

tcFile
Especifica el nombre del archivo de registro.
tlUnattended
Especifica si debe ejecutarse en modo desatendido.
tcAddIn
Especifica los nombres de los archivos de complemento.

Observaciones

Comprobación de la fase de inicio para determinar si los parámetros pasados son los apropiados para la clase. Si alguno de los parámetros pasados no son del tipo apropiado, proporciona un cuadro de mensaje que muestra qué parámetros se pueden pasar y devuelve falso (.F.), lo que impide la continuación del proceso de trayecto y la creación de una instancia de la clase.

Este método utiliza un cuadro de mensaje para informar al usuario y detiene el proceso incluso si el Analizador de trayecto se inicia en modo no atendido. Si va a configurar el Analizador de trayecto para ejecuciones automáticas, asegúrese de que el programa que lo invoque envíe los parámetros correctos; de lo contrario, el análisis se detendrá.

Método RestoreCoverage( )

Reanuda el registro de trayecto a partir de la operación suspendida.

RestoreCoverage( )

Valores devueltos

Ninguno

Parámetros

Ninguno

Observaciones

Si el Analizador de trayecto ha suspendido anteriormente el registro de trayecto, este método ofrece al usuario la posibilidad de continuar registrando trayectos cuando el Analizador de trayecto termine. El usuario puede elegir entre sobrescribir el registro anterior, agregar nuevas entradas o no continuar el registro de trayectos en ese momento.

Método RunAddin( )

Ejecuta un archivo de complemento.

RunAddin(tcAddin)

Valores devueltos

lReturn AND NOT THIS.lError

Parámetros

tcAddin
Especifica el nombre del archivo que se va a ejecutar.

Observaciones

RunAddin( ) ejecuta un archivo (.scx, .fxp, .app, .prg, .qpx, .qpr, .mpx o .mpr) que agrega funcionalidad al objeto Coverage. Si no se pasa un nombre de archivo, RunAddin( ) ejecuta el archivo especificado por la propiedad cAddIn.

El archivo tcAddin tiene que aceptar una referencia de objeto, ya que el archivo se ejecuta al pasar una referencia al formulario de trayecto, como en los ejemplos siguientes (según el tipo de archivo):

DO (cFileName) WITH THIS
DO FORM (cFileName) WITH THIS

Método SaveFormsetAttributes( )

Guarda en el registro las características del marco general y del conjunto de formularios cuando termina el Analizador.

SaveFormsetAttributes( )

Valores devueltos

Ninguno

Parámetros

Ninguno

Método SaveOptionsToRegistry( )

Guarda en el registro los valores de usuario actuales.

SaveOptionsToRegistry( )

Valores devueltos

lSuccess

Parámetros

Ninguno

Observaciones

SaveOptionsToRegistry( ) se puede invocar siempre que se deban guardar en el registro los valores actuales del usuario. Guarda las siguientes preferencias de usuario:

Grupo de opciones de trabajo
lStartInProfileModelSmartPathlMarkAllOnLoadcMarkExecutedcMarkNotExecutedlRegisterAddIn
Grupo de opciones de la interfaz de usuario
Fuente, tamaño, cursiva, negrita para la fuente monoespaciada base

Algunos valores del Registro del sistema no se guardan con este método porque hay que hacerlo en momentos concretos de la sesión del motor. Dichos valores son:

Marco de trayecto o de Visual FoxPro (debe hacerse cuando el usuario elija una opción que tenga que estar en vigor en la siguiente sesión, pero que no se corresponda ni afecte a ninguno de los valores de las propiedades de esta sesión).

Los complementos registrados (esta matriz se manipula durante toda la sesión y el conjunto de nombres de archivo que contiene se guarda en el registro al término de la sesión).

Método SaveSkippedCursor( )

Guarda en disco el cursor de archivos omitidos.

SaveSkippedCursor(tcSkipped)

Valores devueltos

RETURN NOT THIS.lError

Parámetros

tcSkipped
Especifica el cursor que contiene los registros omitidos.

Observaciones

Guarda el cursor de archivos omitidos en el disco, si contiene algún registro y coloca el nombre de la tabla del disco en la propiedad cSavedSkipFiles. Vea las propiedades cSkippedAlias y cSavedSkipFiles.

Método SaveTargetToDisk( )

Guarda en disco el archivo de resultados, incluidos el código marcado y las estadísticas.

SaveTargetToDisk(tcTarget)

Valores devueltos

lReturn y NOT THIS.lError

Parámetros

tcTarget
Especifica el nombre de la tabla modificada guardada en el disco.

Método SetFontValues( )

Establece los valores iniciales de los atributos de las fuentes a partir de valores del Registro del sistema y otros valores predeterminados.

SetFontValues( )

Valores devueltos

NOT THIS.lError

Parámetros

Ninguno

Observaciones

Para obtener información acerca de cómo el motor de trayecto obtiene dichos valores predeterminados, vea cBaseFontName y cBaseMonoFontName.

Método SetFormsetAttributes( )

Lee y restaura las características del marco general y del conjunto de formularios.

SetFormsetAttributes( )

Valores devueltos

Ninguno

Parámetros

Ninguno

Observaciones

Lee y restaura las características del marco general y del conjunto de formularios desde el registro, cuando se inicia el Analizador.

Método SetLogFile( )

Configura un archivo para su análisis.

SetLogFile(tcFile)

Valores devueltos

lReturn

Parámetros

tcFile
Especifica el nombre del archivo que se va a analizar.

Observaciones

Si no pasa una cadena de texto, se utiliza el valor SET COVERAGE. Si no hay un archivo de registro actual, el método solicita un nombre de archivo. Si se puede establecer correctamente un archivo de registro, el método devuelve .T. Si el usuario no designa un archivo de registro, el método devuelve .F. Si no se especifica un nuevo registro, el motor de trayecto devuelve el registro cargado actualmente, si hubiera alguno, o no hace nada, si no lo hubiera.

Método SetMarks( )

Sincroniza y devuelve los valores de cMarkExecuted y cMarkNotExecuted.

SetMarks( )

Valores devueltos

NOT THIS.lError

Parámetros

Ninguno

Observaciones

Sincroniza las longitudes de cMarkExecuted y cMarkNotExecuted, y restablece los valores de una de ellas, o de las dos, a un valor predeterminado si no fueran de tipo carácter o si ambas estuvieran vacías. Si no hay opciones de usuario disponibles en el registro, este método obtiene los valores predeterminados a partir de los valores #DEFINE, COV_DEFAULT_MARKNOTEXECUTED y COV_DEFAULT_MARKEXECUTED, que se pueden establecer en COV_TUNE.H. Un tercer #DEFINE, COV_DEFAULT_MARKSPACING, asegura que haya espacio entre las marcas y la línea de código.

Método SetRegisteredAddins( )

Guarda los nombres de archivo de la matriz aAddIns en valores del Registro del sistema.

SetRegisteredAddins( )

Valores devueltos

Ninguno

Parámetros

Ninguno

Método SetRegistryKeyValue( )

Establece un valor de clave de registro a partir de una opción de usuario.

SetRegistryKeyValue(tcWhichOption, tValue)

Valores devueltos

NOT THIS.lError

Parámetros

tcWhichOption
Especifica la opción de usuario a la que se va a tener acceso.
tValue
Especifica el valor de tcWhichOption.

Observaciones

SetRegistryKeyValue( ) utiliza el miembro de control del registro de la barra de herramientas del conjunto de formularios del motor para establecer el valor de una clave del registro a partir de una opción de usuario. Convierte todos los valores en cadenas de caracteres antes de enviarlos al controlador del Registro del sistema para ser aplicados.

Método SetUIFonts( )

Proporciona preferencias de fuentes.

SetUIFonts( )

Valores devueltos

NOT THIS.lError

Parámetros

Ninguno

Observaciones

Método abstracto en el motor, invocado por SetUiOptions, SetUIFonts( ) permite que las preferencias de fuentes del usuario guardadas en las propiedades de fuentes Base y BaseMont se apliquen a los caracteres presentados adecuados.

Método SetUIOptions( )

Establece las opciones y valores predeterminados de la interfaz de usuario.

SetUIOptions( )

Valores devueltos

lReturn y NOT THIS.lError

Parámetros

Ninguno

Observaciones

Establece las opciones iniciales de la interfaz de usuario de acuerdo con las preferencias del usuario o con valores predeterminados, después de la configuración inicial de los archivos de trabajo. Este grupo de opciones incluye las fuentes y la matriz de complementos registrados. Es necesario para la presentación de la interfaz de usuario y la interacción del usuario con los archivos de trabajo, después de su procesamiento.

Método SetUIToShowCode( )

Habilita la presentación del registro de destino actual en un nuevo archivo de registro.

SetUIToShowCode(tcTarget)

Valores devueltos

NOT THIS.lError

Parámetros

tcTarget
Especifica el nombre de la tabla que se está modificando.

Observaciones

Método abstracto dentro del motor, invocado al final de SetupWorkFiles( ) para permitir que la interfaz de usuario muestre el registro de destino actual en el registro recién cargado.

Método SetUIToShowFileStates( )

Habilita el informe de estado de carga del registro.

SetUIToShowFileStates(tcSource, tcTarget)

Valores devueltos

NOT THIS.lError

Parámetros

tcSource
Especifica el nombre de la tabla que contiene los registros de origen.
tcTarget
Especifica el nombre de la tabla que se está modificando.

Observaciones

Método abstracto dentro del motor, invocado al final de SetupWorkFiles( ) para permitir que la interfaz de usuario muestre si la carga del registro ha sido correcta o no.

Método SetUpWorkFiles( )

Establece y valida un registro de trazado.

SetupWorkFiles(tcLogFile, tcSource, tcTarget)

Valores devueltos

lReturn AND NOT THIS.lError

Parámetros

TcLogFile
Especifica el nombre del registro de texto que se va a analizar.
tcSource
Especifica el nombre del archivo que se va a utilizar como origen.
tcTarget
Especifica el nombre del cursor que se está modificando.

Observaciones

SetUpWorkFiles( ) establece y valida un registro de trayecto y, después, crea y llena los archivos de trabajo de origen y destino de este registro de texto. Si la elección del usuario es el mismo archivo de registro cargado actualmente, el método pregunta al usuario si el registro tiene que volver a cargarse y analizarse. Se asegura de que el registro no está abierto en una ventana de texto antes de cargarlo. Si el usuario especifica lMarkAllOnLoad, marca todos los registros con el modo actual (trayecto o perfil) después de llenar el archivo de destino con las entradas del código fuente. Si el Analizador de trayecto se ejecuta en modo desatendido, marca todos los registros en modo trayecto y en modo perfil después de llenar el archivo de destino. Si la carga termina correctamente, este método establece también cDefaultWritePath con la ruta de acceso del registro y la propiedad cSourceFile con el nombre de dicho registro.

Método SetWorkOptions( )

Establece las opciones iniciales definidas por el usuario.

SetWorkOptions( )

Valores devueltos

NOT THIS.lError

Parámetros

Ninguno

Observaciones

SetWorkOptions( ) configura las opciones iniciales de acuerdo con las preferencias del usuario o con valores predeterminados, antes de la configuración inicial de los archivos de trabajo. Este grupo de opciones incluye las marcas de trayecto y el modo trayecto inicial, y es necesario para procesar los archivos de trabajo.

Método ShowProjectStatistics( )

Ejecuta las cifras del análisis de trayecto contra un proyecto de Visual FoxPro.

ShowStatistics(tcSource, tcTarget, tcProject)

Valores devueltos

lReturn AND NOT THIS.lError

Parámetros

tcSource
Especifica el nombre de la tabla que contiene los registros de origen.
tcTarget
Especifica el nombre de la tabla que se está modificando.
tcProject
Especifica el proyecto que contiene tcSource.

Observaciones

ShowProjectStatistics( ) invoca a GetProjectStatistics( ) y DisplayProjectStatistics( ) para ejecutar el análisis de trayectos contra un conjunto específico de archivos de proyecto de Visual FoxPro.

Método ShowStatistics( )

Resumen del motor de base.

ShowStatistics( )

Valores devueltos

NOT THIS.lError

Parámetros

Ninguno

Método ShowStatus( )

Coloca un mensaje en la barra de estado o en WAIT WINDOW. Vea la propiedad lUsingStatusBar.

ShowStatus(cMessage)

Parámetros

cMessage
Especifica el mensaje que se muestra en la barra de estado o en WAIT WINDOW

Método SourceAvailable( )

Reemplaza el nombre de archivo del registro de origen compilado actual con la ruta de acceso completa del archivo que contiene el código fuente sin compilar.

SourceAvailable( )

Valores devueltos

lReturn

Parámetros

Ninguno

Observaciones

SourceAvailable( ) invoca a GetSourceLoc( ), si es necesario, para buscar el código fuente sin compilar. Si la propiedad lSmarthPath se fija con el valor verdadero (.T.), utiliza AddPath( ) para ajustar SET (PATH) a medida que el usuario especifica los directorios en los que se pueden encontrar los archivos de origen. Devuelve falso (.F.) si el archivo de origen está en la lista de archivos omitidos, si el archivo tiene un tipo desconocido o si no ha podido encontrar el archivo de origen sin compilar.

Método SourceFileIsLog( )

Comprueba que el archivo especificado en la propiedad cSourceFile tiene un formato de trayecto válido.

SourceFileIsLog( )

Valores devueltos

lReturn

Parámetros

Ninguno

Método SuspendCoverage( )

Establece la propiedad cSuspendedLog en el nombre del registro actual.

SuspendCoverage( )

Valores devueltos

Ninguno

Parámetros

Ninguno

Observaciones

Establece cSuspendedLog en el nombre del registro actual y detiene temporalmente la escritura de Visual FoxPro en dicho registro, en uno de los casos siguientes:

  • El nombre de archivo pasado es el mismo que el del registro de trayecto actual.
  • No se ha pasado ningún nombre de archivo y el motor analiza el registro de trayecto actual.

Método ToggleCoverageProfileMode( )

Marca todos los registros de destino con el nuevo modo.

ToggleCoverageProfileMode(tcSource, tcTarget)

Valores devueltos

RETURN NOT THIS.lError

Parámetros

tcSource
Especifica el nombre de la tabla que contiene los registros de origen.
tcTarget
Especifica el nombre de la tabla que se está modificando.

Observaciones

Si la propiedad lMarkAllOnLoad tiene el valor verdadero (.T.), marca todos los registros de destino con el nuevo modo.

Propiedad cSavedStackXML

Contiene el nombre del análisis de nivel de pila de trayecto en formato XML, una vez que este archivo se guarda en disco. Establézcala de nuevo en el valor predeterminado ("") cuando cargue un nuevo registro.

Propiedad lStackXMLExtendedTree

Si es .T., genera StackXML más amplio, de modo que el análisis de cada rama pueda evaluar los efectos de los argumentos y de otros factores en las diferentes invocaciones de un módulo. El valor predeterminado es .F., pero si COV_LOAD_STACK_FROM_DBF es .T., este XML más amplio se genera siempre.

ShowStackXML( )

ShowStackXML(tclog)

Devuelve

Lógico. .T. si tiene éxito.

Parámetros

tcLog
Especifica el nombre del archivo de registro.

Observaciones

ShowStackXML( ) invoca a GetStackXML(tcLog) y DisplayStackXML(tcXMLFile) para ejecutar el análisis de trayectos contra un conjunto específico de archivos de proyecto de Visual FoxPro. El argumento tcLog se omite si DEFINEd COV_LOAD_STACK_FROM_DBF es .T.

Método GetStackXML( )

Genera XML de análisis de pila a partir de tcLog.

GetStackXML(tclog)

Devuelve

Lógico. .T. si tiene éxito.

Parámetros

tcLog
Especifica el nombre del archivo de registro.

Observaciones

El valor predeterminado de esta función es el registro de origen de trazado actual. El argumento tcLog se omite si DEFINEd COV_LOAD_STACK_FROM_DBF es .T.

Método DisplayStackXML( )

Muestra un archivo XML.

DisplayStackXML(tcXMLFile)

Devuelve

Lógico. .T. si no se produce ningún error.

El valor predeterminado es el nombre actual de archivo de análisis de pila indicado por la propiedad cSavedStackXML.

Observaciones

Este método es similar a DisplayProjectStatistics, excepto en que, en lugar de ser abstracto dentro del motor, cov_engine.DisplayStackXML ejecuta ShellExecuteA.

Método ToggleStackXMLExtendedTree( )

Alterna el valor de .lStackXMLExtendedTree.

ToggleStackXMLExtendedTree( )

Devuelve

Lógico. .T. si no se produce ningún error.

Parámetros

Ninguno

Observaciones

Diseñado para agregarse a subclases para reflejar este cambio en la interfaz de usuario, modificar en consecuencia el valor predeterminado de XLST, etc. Este método es similar a ToggleCoverageProfileMode.

Propiedad *.cStackXSLT

Contiene el nombre de archivo que proporciona la hoja de estilo de Transformación XSL predeterminada que se aplicará de forma predeterminada al documento de análisis de XML de pila, cuando se llame a TransformStackXML.

Método *.TransformStackXML( )

TransformStackXML(tcXSLT, tcXMLIn, tcXMLOut, tlNoShow)

Devuelve

Devuelve .T. si es correcto.

Parámetros

tcXSLT
Especifica el nombre del archivo XSL.
tcXMLIn
Especifica el nombre del archivo de entrada XML.
tcXMLOut
Especifica el nombre del archivo de resultados XML.
tlNoShow
Especifica si se debe llamar a DisplayStackXML.

Observaciones

Aplica tcXSLT (el valor predeterminado es .cStackXSLT) a tcXMLIn (valor predeterminado .cSavedStackXML, se invoca GetStackXML( ) si está vacío). Guarda los resultados en tcXMLOut (el valor predeterminado es el nombre generado sobre la base de tcXMLIn con la extensión HTM). Si ! tlNoShow, llama a DisplayStackXML( ).

Vea también

Aplicación Analizador de trayecto


Cursor (Objeto)

Se crea cuando se agrega una tabla o una vista al entorno de datos para un formulario, un conjunto de formularios o un informe.

Cursor

Observaciones

El objeto cursor permite especificar o determinar propiedades para la tabla o la vista cuando se ejecuta el formulario, el conjunto de formularios o el informe.

Observe que al especificar una propiedad de objeto cursor en tiempo de ejecución se genera un error (con la excepción de las propiedades Filter y Order, que sí se pueden especificar en tiempo de ejecución). Para que un nuevo valor de propiedad entre en vigor, es necesario llamar a los métodos CloseTables y OpenTables para el entorno de datos. Además, si en tiempo de ejecución cambia la propiedad Order de un cursor que participa en una relación de uno a varios, esta relación de uno a varios se romperá.

Vea también

Cursor (Objeto: propiedades, métodos y eventos) | DataEnvironment (Objeto) | Relation (Objeto) | Establecer el entorno de datos


Cursor (Objeto: propiedades, métodos y eventos)

Propiedades

Alias | Application | BufferModeOverride
CursorSource | Comment | Database
Exclusive | Filter | Name
NoDataOnLoad | Order | ReadOnly
Tag |  |

Eventos

Destroy Error Init

Métodos

AddProperty | ReadExpression | ReadMethod
ResetToDefault | WriteExpression |

Vea también

Cursor (Objeto) | CURSORGETPROP( ) (Función) | DataEnvironment (Objeto) | Relation (Objeto)


CursorAdapter Class

Soporta el manejo de un amplio rango de fuentes de datos como cursores nativos de Visual FoxPro. Estos tipos de fuentes de datos incluyen los siguientes:

  • Nativos de Visual FoxPro
  • Open Database Connectivity (ODBC)
  • ActiveX Data Object (ADO)
  • Extensible Markup Language (XML)
CursorAdapter

Observaciones

El cursor abierto por un objeto CursorAdapter es siempre un cursor de búfer y de tipo Optimista.

Para información mas detallada acerca de la clase CursorAdapter, vea también Manejo de datos utilizando CursorAdapters

Ver También

Objectos, Colecciones y Clases | CursorAdapter (Objeto: propiedades, métodos y eventos) | Objeto Cursor | Objeto Relation | Función TABLEUPDATE( )


CursorAdapter (Objeto: propiedades, métodos y eventos)

Las siguientes propiedades, métodos, y eventos soportan funcionalidad extendida para el cursor y el uso de orígenes de datos a nivel del entorno de datos y del CursorAdapter.

Propiedades

Alias | AllowDelete | AllowInsert
AllowSimultaneousFetch | AllowUpdate | Application
BaseClass | BatchUpdateCount | BreakOnError
BufferModeOverride | Class | ClassLibrary
Comment | CompareMemo | ConversionFunc
CursorSchema | CursorStatus | DataSource
DataSourceType | DeleteCmd | DeleteCmdDataSource
DeleteCmdDataSourceType | FetchAsNeeded | FetchMemo
FetchSize | Flags | InsertCmd
InsertCmdDataSource | InsertCmdDataSourceType | KeyFieldList
MaxRecords | Name | Parent
ParentClass | Prepared | SelectCmd
SendUpdates | Tables | Tag
UpdateCmd | UpdateCmdDataSource | UpdateCmdDataSourceType
UpdatableFieldList | UpdateGram | UpdateGramSchemaLocation
UpdateNameList | UpdateType | UseDeDataSource
UseMemoSize | WhereType |

Métodos

AddProperty | Attach | AutoOpen
CursorAttach | CursorDetach | CursorFill
CursorRefresh | ReadExpression | ReadMethod
ResetToDefault | WriteExpression |

Eventos

AfterCursorAttach | AfterCursorClose | AfterCursorDetach
AfterCursorFill | AfterCursorRefresh | AfterCursorUpdate
AfterDelete | AfterInsert | AfterUpdate
BeforeCursorAttach | BeforeCursorClose | BeforeCursorDetach
BeforeCursorFill | BeforeCursorRefresh | BeforeCursorUpdate
BeforeDelete | BeforeInsert | BeforeUpdate
Destroy | Error | Init

Vea también

Clase CursorAdapter


Custom (Objeto)

Crea un objeto personalizado definido por el usuario.

Custom

Observaciones

Una clase personalizada definida por el usuario puede crearse con DEFINE CLASS o con el Diseñador de clases. Ejecute CREATE CLASS para mostrar el Diseñador de clases.

Las clases personalizadas definidas por el usuario son clases con propiedades, eventos y métodos, pero sin representación visual. Las reglas generales que se aplican a la definición de otros tipos de clases se aplican a la definición de clases personalizadas.

Vea Programación orientada a objetos para obtener más información acerca de la creación de objetos personalizados como clases no visuales.

Vea también

Custom (Objeto: propiedades, métodos y eventos) | CREATE CLASS | CREATE FORM | DEFINE CLASS


Custom (Objeto: propiedades, métodos y eventos)

Propiedades

Application | BaseClass | Class
ClassLibrary | Comment | ControlCount
Controls | Height | HelpContextID
Left | Name | Objects
Parent | ParentClass | Picture
Tag | Top | WhatsThisHelpID
Width |  |

Eventos

Destroy Error Init

Métodos

AddObject | AddProperty | NewObject
ReadExpression | ReadMethod | RemoveObject
ResetToDefault | SaveAsClass | ShowWhatsThis
WriteExpression (Método) | WriteMethod (Método) |

Vea también

Custom (Objeto) | Programación orientada a objetos | CREATE CLASS | CREATE FORM | DEFINE CLASS |CursorToXML( ) (Función)


DataEnvironment (Objeto)

Un objeto DataEnvironment funciona como un contenedor para los objetos Cursor, CursorAdapter, y Relation asociados con el formulario, conjunto de formularios o informe.

Nota Únicamente puede establecer en tiempo de ejecución las siguientes propiedades del objeto DataEnvironment : DataSource, DataSourceType, InitialSelectedAlias, Name, OpenViews, y Tag. Para que la configuración de una nueva propiedad tome efecto, debe ejecutar los métodos CloseTables y OpenTables del objeto DataEnvironment. Establecer cualquier otra propiedad en tiempo de ejecución produce que el objeto DataEnvironment genere un error.
DataEnvironment

Observaciones

Puede definir y hacer una subclase DataEnvironment. En un formulario, puede guardar un el entorno de datos existente como un archivo biblioteca de clases visual (.vcx) seleccionando el formulario, escogiendo Guardar Como del menú Archivo, y seleccionando DataEnvironment. Todas las propiedades, métodos y eventos están disponibles apropiadamente en la ventana de propiedades después de que abra el Diseñador de Clases. Sin embargo, puede acceder al Diseñador de Entorno de Datos únicamente desde el Diseñador de Formularios, no desde el Diseñador de Clases.

En tiempo de diseño, puede agregar a un formulario clases DataEnvironment existentes, esto mediante la barra de herramientas de la biblioteca de clases o por códgio usando el método AddObject. Sin embargo, Visual FoxPro considera a la clase DataEnvironment que ha agregado como una clase miembro, no como un Entorno de Datos Nativo.

Puede usar las propiedades Form DEClass y DEClassLibrary para especificar y cargar una clase DataEnvironment externa ya sea en tiempo de diseño o ejecución. Visual FoxPro suporta las propiedades DEClass y DEClassLibrary en archivos de formularios (.scx), biblioteca de clases visuales (.vcx), y programa (.prg), pero no para Conjuntos de Formularios o en el Diseñador de Reportes.

Para mas información, vea las propiedades DEClass y DEClassLibrary. Para mas información acerca del Entorno de Datos para formularios y conjunto de Formularios, vea Crear formularios.

Vea también

Objectos, Colecciones y Clases | DataEnvironment (Objeto: propiedades, métodos y eventos) | Form (Objeto) | Método AddObject | Objeto Cursor | Clase CursorAdapter


DataEnvironment (Objeto: propiedades, métodos y eventos)

Propiedades

Application | AutoCloseTables | AutoOpenTables
Comment | DataSource | DataSourceType
InitialSelectedAlias | Name | Objects
OpenViews | Tag |

Eventos

AfterCloseTables | BeforeOpenTables | Destroy
Error | Init |

Métodos

AddObject | AddProperty | CloseTables
OpenTables | ReadExpression | ReadMethod
RemoveObject | ResetToDefault | SaveAsClass
WriteExpression |  |

Vea también

DataEnvironment (Objeto) | Crear formularios


DataObject (Objeto)

Contenedor para los datos que se transfieren desde un origen de arrastre OLE a un destino para colocar OLE. Sólo está disponible en tiempo de ejecución.

oDataObject

Observaciones

El objeto DataObject es un contenedor para datos que se transfieren de un origen de arrastre de OLE a un destino de arrastre de OLE y sólo existe mientras dure un evento arrastrar y soltar de OLE. El objeto DataObject no se puede mostrar mediante programación y las referencias al mismo dejan de ser válidas cuando se completa la operación arrastrar y soltar de OLE. El objeto DataObject se pasa como parámetro oDataObject en los eventos OLEDragDrop, OLEDragOver, OLESetData y OLEStartDrag.

El objeto DataObject puede almacenar varios conjuntos de datos, cada uno con un formato distinto. Utilice los métodos GetFormat y GetData para determinar los formatos de datos y los datos del objeto DataObject. Utilice los métodos SetFormat, SetData o ClearData para agregar formatos de datos y datos al objeto DataObject, o borrar todos los datos y formatos de datos del objeto DataObject.

Vea también

DataObject (Objeto: propiedades, métodos y eventos) | Técnica de arrastrar y soltar OLE | OLEDragDrop (Evento) | OLEDragOver (Evento) | OLESetData (Evento) | OLEStartDrag (Evento)


DataObject (Objeto: propiedades, métodos y eventos)

Métodos

ClearData | SetData
GetData | SetFormat
GetFormat |

Vea también

DataObject (Objeto) | Técnica de arrastrar y soltar OLE | OLEDragDrop (Evento) | OLEDragOver (Evento) | OLESetData (Evento) | OLEStartDrag (Evento)


EditBox (Control)

Crea un cuadro de edición.

EditBox

Observaciones

Utilice el control EditBox para modificar una variable tipo Carácter, un elemento de matriz, un campo o un campo memo.

Todas las características de edición estándar de Visual FoxPro, como cortar, copiar y pegar, están disponibles en el cuadro de edición. El texto del cuadro de edición se desplaza verticalmente y las palabras se ajustan horizontalmente.

Si desea obtener más información acerca de la creación de cuadros de edición, vea Utilizar controles.

Vea también

EditBox (Control: propiedades, métodos y eventos) | CREATE CLASS | CREATE FORM | DEFINE CLASS


EditBox (Control: propiedades, métodos y eventos)

Propiedades

AddLineFeeds | Alignment | AllowTabs
Application | BackColor | BackStyle
BaseClass | BorderColor | BorderStyle
ClassLibrary | Class | ColorScheme
ColorSource | Comment | ControlSource
DisabledBackColor | DisabledForeColor | DragIcon
DragMode | EnableHyperlinks | Enabled
FontBold | FontCharSet | FontCondense
FontExtend | FontItalic | FontName
FontOutline | FontShadow | FontSize
FontStrikeThru | FontUnderline | ForeColor
Format | Height | HelpContextID
HideSelection | IMEMode | IntegralHeight
Left | Margin | MaxLength
MouseIcon | MousePointer | Name
NullDisplay | OLEDragMode | OLEDragPicture
OLEDropEffects | OLEDropHasData (Propiedad) | OLEDropMode
OLEDropTextInsertion | ParentClass | Parent
PasswordChar | ReadOnly | RightToLeft
ScrollBars | SelectedBackColor | SelectedForeColor
SelectOnEntry | SelLength | SelStart
SelText | SpecialEffect | StatusBarText
TabIndex | TabStop | Tag
TerminateRead | Text | ToolTipText
Top | Value | Visible
WhatsThisHelpID | Width |

Eventos

Click | DblClick | Destroy
DragDrop | DragOver | Error
ErrorMessage | GotFocus | Init
InteractiveChange | KeyPress | LostFocus
Message | MiddleClick | MouseDown
MouseEnter | MouseLeave | MouseMove
MouseUp | MouseWheel | OLECompleteDrag
OLEDragDrop | OLEDragOver | OLEGiveFeedBack
OLESetData | OLEStartDrag | ProgrammaticChange
RightClick | UIEnable | Valid
When |  |

Métodos

AddProperty | CloneObject | Drag
Move | OLEDrag | ReadExpression
ReadMethod | Refresh | ResetToDefault
SaveAsClass | SetFocus | ShowWhatsThis
WriteExpression | WriteMethod | ZOrder

Vea también

EditBox (Control)


Empty (Clase)

Crea una clase vacía que se instancia y se libera con rapidez para usar con objetos de negocio.

Empty

Comentarios

La clase Empty sólo está disponible dentro de un archivo de programa (.prg) y no puede definirse en una biblioteca de clase visual (.vcx).

La clase Empty no tiene propiedades intrínsecas, métodos o eventos. No es posible crear subclases de ella ni agregar métodos personalizados o eventos a la clase Empty. Sin embargo, en tiempo de ejecución, se puede añadir propiedades personalizadas usando la función ADDPROPERTY() o con el comando SCATTER NAME...ADDITIVE .

La clase Empty se utiliza tipicamente en los siguientes escenarios:

  • Al añadir o quitar propiedades desde una instancia en ejecución de la clase usando las funciones ADDPROPERTY () y REMOVEPROPERTY ().
  • Al usar el comando SCATTER...NAME con la cláusula ADDITIVE para almacenar el contenido del registro actual.

Ver También

Objectos, Colecciones y Clases | ADDPROPERTY( ) (Función) | REMOVEPROPERTY( ) (Función) | SCATTER (Comando)


Exception Class

Referencia de Visual FoxPro

Exception (Clase)

Cuando se produce un error en el bloque TRY dentro de una estructura de control de errores TRY...CATCH...FINALLY, Visual FoxPro crea un objeto Exceptión automaticamente y utiliza la variable de memoria VarName especificada en la instrucción CATCH TO para almacenar una referencia a la excepción. El comando THROW también genera un objeto Exceptión. Sin embargo, si la estructura TRY...CATCH...FINALLY no atrapa la excepción, Visual FoxPro escala la excepción a otro controlador de erroreso al controlador global de errores de Visual FoxPro's.

Puede definir la clase excepción y crear una subclase de ella.

Observaciones

Visual FoxPro solo soporta la clase Exceptión en programas (archivos .prg).

Los objetos Excepción no soportan toda la diversa información de errores que pueda obtener habitualmente con la función AERROR , incluyendo Component Object Model (COM), Open Database Connectivity (ODBC), y disparadores de bases de datos. Sin embargo, puede acceder a la información de AERROR() dentro del bloque TRY...CATCH.

Ejemplo

oError = CREATEOBJECT("exception")

Ver También

Objectos, Colecciones y Clases | Exception (Objeto: propiedades, métodos y eventos) | TRY...CATCH...FINALLY Comando | Control estructurado de errores


Exception (Objeto: propiedades, métodos y eventos)

Todas las propiedades, métodos y eventos de los objetos Exception son de lectura/escritura en tiempo de ejecución.

Propiedades

BaseClass | Class | ClassLibrary
Comment | Details | ErrorNo
LineContents | LineNo | Message
Name | Parent | ParentClass
Procedure | StackLevel | Tag
UserValue |  |

Métodos

AddProperty | ReadExpression | ReadMethod
ResetToDefault | SaveAsClass | WriteExpression
WriteMethod |  |

Eventos

Destroy Error Init

Vea también

Exception (Clase) | TRY...CATCH...FINALLY (Comando) | Control estructurado de errores

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Fields (Colección) (XMLTable)

Cada objeto XMLTable contiene, por lo menos, una colección de campos que contienen a su vez objetos XMLField. Cada XMLField representa la estructura de un campo que es significativo para Visual FoxPro.

Cuando un objeto XMLAdapter analiza XML ejecutando los métodos LoadXML ó Attach, es factible que contenga esquemas XML dentro de uno ó más objetos XMLTable y sus correspondientes objetos XMLField. Visual FoxPro traduce el esquema XML por cada campo, crea los correspondientes objetos XMLField, y los agrega a las Colecciones de campos XMLTable Fields.

XMLTable.Fields

Vea también

Objectos, Colecciones y Clases | XMLTable (Objeto: propiedades, métodos, eventos) | Clase XMLAdapter | Método LoadXML | Método Attach | Clase XMLTable | Clase XMLField


File (Objeto)

Cuando un archivo se agrega a un proyecto, se crea una instancia.

File

Observaciones

Se crea un objeto File y una instancia del mismo para cada archivo que se agrega a un proyecto. Un objeto File proporciona una referencia de objeto al archivo del proyecto, y permite determinar la información relativa con el archivo así como manipularla mediante las propiedades y métodos del objeto File.

Una colección de archivos de proyecto se compone de todos los objetos de archivo que contiene el proyecto.

Observe que un objeto File es un objeto COM, por lo que al asignar la referencia de un objeto File a una variable de memoria se crea una variable de memoria de clase "Tipo desconocido".

Vea también

File (Objeto: propiedades, métodos y eventos) | Agregar archivos a un proyecto


File (Objeto: propiedades, métodos y eventos)

Propiedades

CodePage | Description | Exclude
FileClass | FileClassLibrary | LastModified
Name | ReadOnly | SCCStatus
Type |  |

Métodos

AddToSCC | CheckIn | CheckOut
GetLatestVersion | Modify | Remove
RemoveFromSCC | Run | UndoCheckOut

Vea también

File (Objeto) | Files (Colección) | Agregar archivos a un proyecto


Files (Colección)

Una colección de objetos File en un proyecto.

Files

Observaciones

La colección de archivos se compone de todos los archivos contenidos en un proyecto. Cada archivo es un objeto que puede manipularse mediante las propiedades y métodos del objeto File.

Puede hacer referencia a los archivos de una colección mediante un índice o un nombre. Por ejemplo, el siguiente código abre el archivo que se agregó en primer lugar a un proyecto:

_VFP.ActiveProject.Files(1).Modify( )

El siguiente código abre una ventana de edición para Main.prg:

_VFP.ActiveProject.Files('Main.prg').Modify( )

Observe que no es necesario incluir la ruta de acceso con el nombre del archivo.

Si desea obtener más información acerca de la colección de archivos y de los proyectos, vea Enlaces del Administrador de proyectos bajo Herramientas de productividad para el desarrollo.

Vea también

Files (Colección: propiedades, métodos y eventos) | File (Objeto) | Enlaces del Administrador de proyectos | Herramientas de productividad para el desarrollo


Files (Colección: propiedades, métodos y eventos)

Propiedades

Count

Métodos

Add Item

Vea también

Files (Colección) | File (Objeto) | Enlaces del Administrador de proyectos | Herramientas de productividad para el desarrollo


Form (Objeto)

Crea un formulario en el que se pueden añadir controles

Form

Observaciones

Los formularios tienen propiedades que determinan su apariencia, como la posición, el tamaño y color y su funcionamiento, por ejemplo, cómo puede ser modificado su tamaño puede ser modificado. Además puede utilizar el Diseñador de Formularios para diseñar un formulario.

Los formularios también pueden responder a eventos iniciados por un usuario o desencadenados por el sistema. Por ejemplo, puede escribir código en el procedimiento de evento Click de un Form que cambie el color del formulario al hacer clic en él. Puede utilizar métodos para manipular formularios. Por ejemplo, puede utilizar el método Move para cambiar la posición de un formulario y su tamaño. Desde dentro de un programa, puede utilizar los métodos Hide y Show para hacer sus formularios transparentes o visibles en el tiempo de ejecución.

Para obtener información adicional acerca de cómo crear formularios, vea Crear formularios.

Vea también

Form (Objeto: propiedades, métodos y eventos) | CREATE CLASS | CREATE FORM | DEFINE CLASS | FormSet (Objeto) | DataEnvironment (Objeto)


Form (Objeto: propiedades, métodos y eventos)

Propiedades

ActiveControl | ActiveForm | AllowOutput
AlwaysOnBottom | AlwaysOnTop | Application
AutoCenter | BackColor | BaseClass
BindControls | BorderStyle | BufferMode
Caption | Class | ClassLibrary
ClipControls | Closable | ColorSource
Comment | ContinuousScroll | ControlBox
ControlCount | Controls | CurrentX
CurrentY | DataEnvironment | DataSession
DataSessionID | DefOLELCID | DEClass
DEClassLibrary | Desktop | DrawMode
DrawStyle | DrawWidth | Enabled
FillColor | FillStyle | FontBold
FontCharSet | FontCondense | FontExtend
FontItalic | FontName | FontOutline
FontShadow | FontSize | FontStrikeThru
FontUnderline | ForeColor | HalfHeightCaption
Height | HelpContextID | HScrollSmallChange
hWnd | Icon | KeyPreview
Left | LockScreen | MacDesktop
MaxButton | MaxHeight | MaxLeft
MaxTop | MaxWidth | MDIForm
MinButton | MinHeight | MinWidth
MouseIcon | MousePointer | Movable
Name | Objects | OLEDragMode
OLEDragPicture | OLEDropEffects | OLEDropHasData
OLEDropMode | Parent | ParentClass
Picture | ReleaseType | RightToLeft
ScaleMode | ScrollBars | ShowInTaskbar
ShowTips | ShowWindow | SizeBox
TabIndex | TabStop | Tag
Themes | TitleBar (Propiedad) | Top
ViewPortHeight | ViewPortLeft | ViewPortTop
ViewPortWidth | Visible | VScrollSmallChange
WhatsThisButton | WhatsThisHelpID | Width
WindowType | WindowState | ZoomBox

Métodos

AddObject | AddProperty | Box
Circle | Cls | Draw
Hide | Line | Move
NewObject | OLEDrag | Point
Print | PSet | ReadExpression
ReadMethod | Refresh | Release
RemoveObject | ResetToDefault | SaveAs
SaveAsClass | SetAll | SetViewPort
Show | ShowWhatsThis | TextHeight
TextWidth | WhatsThisMode | WriteExpression
WriteMethod | ZOrder |

Eventos

Activate | Click | DblClick
Deactivate | Destroy | DragDrop
DragOver | Error | GotFocus
Init | KeyPress | Load
LostFocus | MiddleClick (Evento) | MouseDown
MouseMove | MouseUp | MouseWheel
Moved | OLECompleteDrag | OLEDragDrop
OLEDragOver | OLEGiveFeedBack | OLESetData
OLEStartDrag | Paint | QueryUnload
Resize | RightClick | Scrolled
Unload |  |

Vea también

Form (Objeto)


FormSet (Objeto)

Crea un conjunto de formularios.

FormSet

Observaciones

Un conjunto de formularios es un objeto contenedor que contiene una serie de formularios. Los conjuntos de formularios son similares a los conjuntos de pantallas empleados en versiones anteriores de FoxPro.

Para obtener información adicional acerca de cómo crear conjuntos de formularios, vea Ampliar formularios con conjuntos de formularios.

Vea también

FormSet (Objeto: propiedades, métodos y eventos) | CREATE CLASS | CREATE FORM | DEFINE CLASS | Form (Objeto)


FormSet (Objeto: propiedades, métodos y eventos)

Propiedades

ActiveForm | Application | AutoRelease
BaseClass | Buffermode | Class
ClassLibrary | Comment | DataEnvironment
DataSession | DataSessionID | FormCount
Forms | Name | Objects
Parent | ParentClass | ReadBackColor
ReadCycle | ReadForeColor | ReadLock
ReadMouse | ReadSave | ReadTimeOut
Tag | Visible | WindowList
WindowType |  |

Eventos

Activate | Deactivate | Destroy
Error | Init | Load
ReadActivate | ReadDeactivate | ReadShow
ReadValid | ReadWhen | Unload

Métodos

AddObject | AddProperty | Hide
NewObject | ReadExpression | ReadMethod
Refresh | Release | RemoveObject
ResetToDefault | SaveAs | SaveAsClass
SetAll | Show | WriteExpression
WriteMethod |  |

Vea también

FormSet (Objeto) | Ampliar formularios con conjuntos de formularios


FoxCode (Referencia de objeto)

Proporciona metadatos para utilizarlos con las secuencias de comandos contenidas en el campo Data que se utiliza para la funcionalidad personalizada IntelliSense.

FoxCode.PropertyName[ = eValue]

Parámetros

PropertyName
Especifica una propiedad para el objeto.
eValue
Especifica un valor para la propiedad.

Propiedades

Propiedad | Descripción
Abbrev | Contenido del campo Abbrev
Case | Contenido del campo Case
Cmd | Contenido del campo Cmd
CursorLocChar | Éste es un carácter especial que denota la ubicación donde se debe situar el cursor después de la secuencia de comandos (el valor predeterminado es el carácter "~")
Data | Contenido del campo Data
DefaultCase | Configuración Case predeterminada de FoxCode, tal como se deriva del registro Version (Type = "V").
Expanded | Contenido del campo Expanded
Filename | Nombre del archivo que se está modificando.
FullLine | Texto completo de la línea que se está escribiendo.
Icon | Icono que se utiliza con matriz de elementos
Items Matriz que se utiliza para llenar una lista desplegable que se mostrará como acción posterior a la secuencia de comandos. Requiere ValueType = "L"
Items[1,1] – texto que se muestra en la lista
Items[1,2] – sugerencia de valor para el elemento

El único elemento requerido es el primer elemento de cada fila de la matriz Items. De forma predeterminada, la matriz se ordena de forma ascendente, para permitir búsquedas incrementales. Los usuarios pueden utilizar la propiedad ItemSort para desactivarlo y utilizar un orden natural de matriz.
ItemScript | Secuencia de comandos que se utiliza con matriz de elementos
ItemSort | Para ordenar la matriz de elementos (valor predeterminado = .T.)
Location Tipo de editor que se está modificando:
0 – Ventana de comandos
1 – Programa
8 – Miniprograma de menú
10 – Miniprograma de código
12 – Procedimiento almacenado
Menuitem | El elemento de menú seleccionado si el usuario ejecuta la secuencia de comandos con ValueType="L". Puede utilizarse en una secuencia de comandos de continuación.
ParamNum | Número de parámetro de la función para llamadas a la secuencia de comandos dentro de una función.
Save | Contenido del campo Save
Source | Contenido del campo Source
Timestamp | Contenido del campo Timestamp
Tip | Contenido del campo Tip
Type | Contenido del campo Type
UniqueId | Contenido del campo UniqueId
User | Contenido del campo User
UserTyped | Texto que escribió el usuario. No incluye tecla desencadenantes, o espacios o Tabs (utilice FullLine en su lugar).
ValueTip | Información rápida que se muestra cuando ValueType = "T".
ValueType Controlador para acción de secuencia de comandos de publicación
L – muestra una lista desplegable que se llena con la matriz Items
V – muestra Value
T – muestra una sugerencia de Información rápida procedente de ValueTip

Observaciones

El campo Data de la tabla FoxCode suele contener código de secuencia de comandos que ejecutarán las secuencias de comandos IntelliSense definidas por el usuario. No obstante, también es posible utilizarlo simplemente para almacenar datos que utilicen las secuencias de comandos. El objeto del parámetro FoxCode pasa de forma automática este tipo de metadatos a una secuencia de comandos. Esta referencia de objeto se suele almacenar en una variable llamada oFoxcode en las secuencias de comandos IntelliSense.

Vea también

Personalizar IntelliSense mediante FoxCode | Uso de secuencias de comandos en FoxCode.dbf | _FoxCode (Variable del sistema) | _Codesense (Variable del sistema)


Grid (Control)

Crea una cuadrícula.

Observaciones

Una cuadrícula es un objeto contenedor que muestra datos en filas y columnas, y que tiene un aspecto similar a una ventana Examinar. Grid es un objeto contenedor que contiene objetos columna. Una columna puede contener un objeto encabezado y controles. Puesto que una cuadrícula y sus columnas, encabezados y controles tienen su propio conjunto de propiedades, dispone de control completo sobre cada elemento de cuadrícula. Puede crear una cuadrícula de forma interactiva mediante el Generador de cuadrículas.

Para obtener información adicional acerca de cómo crear cuadrículas, vea Utilizar controles.

Ejemplo

El ejemplo siguiente incluye un control Cuadrícula en un formulario. Se abre la tabla customer se muestra su contenido en la cuadrícula. La propiedad Caption se utiliza para especificar otro título de encabezado (Id. de cliente) para el campo CUST_ID. Se incluye un botón de comando en el formulario para cerrarlo.

El método SetAll se emplea con la propiedad DynamicBackColor para especificar los colores de fondo para los registros. Si el número de un registro mostrado en el Grid es par, el valor de DynamicBackColor del registro será blanco. En caso contrario, el valor de DynamicBackColor será verde.

CLOSE ALL  && Close tables and databases
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer  IN 0  && Opens Customer table
frmMyForm = CREATEOBJECT('Form')  && Create a Form
frmMyForm.Closable = .F.  && Disable the window pop-up menu
frmMyForm.AddObject('cmdCommand1','cmdMyCmdBtn')  && Add Command button
frmMyForm.AddObject('grdGrid1','Grid')  && Add Grid control
frmMyForm.grdGrid1.Left = 25  && Adjust Grid position
frmMyForm.grdGrid1.SetAll("DynamicBackColor", ;
"IIF(MOD(RECNO( ), 2)=0, RGB(255,255,255) ;
, RGB(0,255,0))", "Column")  && Alternate white and green records
frmMyForm.grdGrid1.Visible = .T.  && Grid control visible
frmMyForm.cmdCommand1.Visible =.T.  && "Quit" Command button visible
frmMyForm.grdGrid1.Column1.Header1.Caption = 'Customer ID'
frmMyForm.SHOW  && Display the form
READ EVENTS  && Start event processing
DEFINE CLASS cmdMyCmdBtn AS CommandButton  && Create Command button
Caption = '\<Quit'  && Caption on the Command button
Cancel = .T.  && Default Cancel Command button (Esc)
Left = 125  && Command button column
Top = 210  && Command button row
Height = 25  && Command button height
PROCEDURE Click
CLEAR EVENTS  && Stop event processing, close form
CLOSE ALL  && Close table and database
ENDDEFINE

Vea también

Grid (Control: propiedades, métodos y eventos) | Column (Objeto) | CREATE CLASS | CREATE FORM | DEFINE CLASS | Header (Objeto)


Grid (Control: propiedades, métodos y eventos)

Propiedades

ActiveColumn | ActiveRow | AllowAddNew
AllowAutoColumnFit | AllowCellSelection | AllowHeaderSizing
AllowRowSizing | Application | BackColor
BaseClass | ChildOrder | ClassLibrary
Class | ColumnCount | Columns
Comment | DeleteMark | DragIcon
DragMode | Enabled | FontBold
FontCharSet | FontCondense | FontExtend
FontItalic | FontName | FontOutline
FontShadow | FontSize | FontStrikeThru
FontUnderline | ForeColor | GridLineColor
GridLines | GridLineWidth | HeaderHeight
Height | HelpContextID | HighLight
HighlightBackColor | HighlightForeColor | HighlightStyle
HighLightRow | HighlightRowLineWidth | LeftColumn
Left | LinkMaster | LockColumns
LockColumnsLeft | MemberClass | MemberClassLibrary
MouseIcon | MousePointer | Name
Objects | OLEDragMode | OLEDragPicture
OLEDropEffects | OLEDropHasData | OLEDropMode
PanelLink | Panel | ParentClass
Parent | Partition | ReadOnly
RecordMark | RecordSource | RecordSourceType
RelationalExpr | RelativeColumn | RelativeRow
RightToLeft | RowColChange | RowHeight
ScrollBars | SelectedBackColor | SelectedForeColor
SelectedItemBackColor | SelectedItemForeColor | SplitBar
StatusBarText | TabIndex | TabStop
Tag | Themes | ToolTipText
Top | Value | View
Visible | WhatsThisHelpID | Width

Métodos

ActivateCell | AddColumn | AddObject
AddProperty | AutoFit | CloneObject
DeleteColumn | DoScroll | Drag
GridHitTest | Move | OLEDrag
ReadExpression | ReadMethod | Refresh
RemoveObject | ResetToDefault | SaveAsClass
SetAll | SetFocus | WriteExpression
WriteMethod | Zorder |

Eventos

AfterRowColChange | BeforeRowColChange | Click
DblClick | Deleted | Destroy
DragDrop | DragOver | Error
Init | KeyPress | MiddleClick (Evento)
MouseDown | MouseEnter | MouseLeave
MouseMove | MouseUp | MouseWheel
OLECompleteDrag | OLEDragDrop | OLEDragOver
OLEGiveFeedBack | OLESetData | OLEStartDrag
Resize | RightClick | Moved
Scrolled | UIEnable | Valid
When |  |

Vea también

Grid (Control)


Header (Objeto)

Crea un encabezado para una columna de un control Cuadrícula. Cada columna del grid contiene un encabezado. El encabezado muestra el título y una imagen en la parte superior de la columna y puede responder a eventos. Para mayor información acerca de crear encabezados en controles grid, vea Utilizar controles.

Header

Vea también

Header (Objeto: propiedades, métodos y eventos) | Column (Objeto) | CREATE FORM | CREATE CLASS | DEFINE CLASS | Grid (Control)


Header (Objeto: propiedades, métodos y eventos)

Propiedades

Alignment | Application | BackColor
BaseClass | Caption | Class
ClassLibrary | Comment | FontBold
FontCharSet | FontCondense | FontExtend
FontItalic | FontName | FontOutline
FontShadow | FontSize | FontStrikeThru
FontUnderline | ForeColor | Name
Parent | ParentClass | Picture
StatusBarText | Tag | ToolTipText
WordWrap |  |

Eventos

Click | DblClick | Destroy
Error | Init | MiddleClick
MouseDown | MouseEnter | MouseLeave
MouseMove | MouseUp | MouseWheel
RightClick |  |

Métodos

AddProperty | ReadExpression | ReadMethod
Refresh | ResetToDefault | SaveAsClass
WriteExpression | WriteMethod |

Ejemplo

El ejemplo siguiente utiliza el objeto Header con la propiedad Caption para cambiar el título del primer Header de un control Grid.

Se incluye un control cuadrícula en un formulario, se abre la tabla customer y su contenido se muestra en la cuadrícula. El objeto Header y la propiedad Caption se utilizan para especificar otro título de encabezado (Id. cliente) para el primer encabezado de la cuadrícula.

El método SetAll se emplea con la propiedad DynamicBackColor para especificar los colores de fondo para los registros. Si el número de un registro mostrado en el Grid es par, el valor de DynamicBackColor del registro será blanco. En caso contrario, el valor de DynamicBackColor será verde. Se incluye un botón de comando en el formulario para cerrarlo.

CLOSE ALL  && Cierra tablas y bases de datos
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer  IN 0  && Abre tabla Customer
frmMyForm = CREATEOBJECT('form')  && Crea un formulario
frmMyForm.Closable = .f.  && Desactiva el menú de ventana
frmMyForm.AddObject('cmdCommand1','cmdMyCmdBtn')  && Agrega Command button
frmMyForm.AddObject('grdGrid1','Grid')  && Agrega control cuadrícula
frmMyForm.grdGrid1.Left = 25  && Ajusta posición del control cuadrícula
frmMyForm.grdGrid1.SetAll("DynamicBackColor", ;
"IIF(MOD(RECNO( ), 2)=0, RGB(255,255,255) ;
, RGB(0,255,0))", "Column")  && Alterna registros blancos y verdes
frmMyForm.grdGrid1.Visible = .T.  && control cuadrícula visible
frmMyForm.cmdCommand1.Visible =.T.  && "Quit" Command button visible
frmMyForm.grdGrid1.Column1.Header1.Caption = 'Customer ID'
frmMyForm.SHOW  && Muestra el formulario
READ EVENTS  && Inicia el proceso de eventos
DEFINE CLASS cmdMyCmdBtn AS CommandButton  && Crea Command button
Caption = '\<Quit'  && Título para el Command button
Cancel = .T.  && Botón Cancel predeterminado (Esc)
Left = 125  && Columna de Command button
Top = 210  && Fila de Command button
Height = 25  && Alto de Command button
PROCEDURE Click
CLEAR EVENTS  && Detiene procesamiento de eventos, cierra formulario
CLOSE ALL  && Cierra tabla y base de datos
ENDDEFINE

Vea también

Header (Objeto) | HEADER( ) (Función) | HeaderHeight (Propiedad)


Hyperlink (Objeto)

Crea un objeto Hyperlink.

Hyperlink

Observaciones

Un objeto Hyperlink proporciona capacidades de exploración a las aplicaciones Visual FoxPro y a documentos activos albergados en un contenedor como Microsoft Internet Explorer.

Observe que el objeto Hyperlink sólo es compatible con Microsoft Internet Explorer. Utilice las Foundation Classes Botón Hipervínculo, Imagen Hipervínculo o Etiqueta Hipervínculo de Visual FoxPro de la Introducción a la Galería de componentes para ver capacidades de exploración independientes del explorador.

Vea también

Hyperlink (Objeto: propiedades, métodos y eventos) | Botón Hipervínculo | Imagen Hipervínculo | Etiqueta Hipervínculo | Introducción a la Galería de componentes


Hyperlink (Objeto: propiedades, métodos y eventos)

Propiedades

Application | BaseClass | Class
ClassLibrary | Comment | Name
Parent | ParentClass | Tag

Eventos

Destroy Error Init

Métodos

AddProperty | SaveAsClass
ResetToDefault | ReadMethod
ReadExpression | WriteExpression

Vea también

Hyperlink (Objeto) | Botón Hipervínculo | Botón Hipervínculo | Etiqueta Hipervínculo | Introducción a la Galería de componentes


Image (Control)

Crea un control Image que muestra una imagen en conjunto GDI+.

Observaciones

Un control Image es un control gráfico que muestra una imagen .BMP que no puede cambiarse directamente. Sin embargo, puesto que un control Image tiene una amplio conjunto de propiedades, eventos y métodos en común con otros controles, puede responder a eventos y cambiar dinámicamente en tiempo de ejecución.

Para obtener información adicional acerca de cómo crear imágenes, vea Utilizar controles.

Vea también

Objectos, Colecciones y Clases | Image (Control: Propiedades, métodos y eventos) | CREATE CLASS | CREATE FORM | DEFINE CLASS


Image (Control: Propiedades, métodos y eventos)

Propiedades

Application | BackStyle | BaseClass
BorderColor | BorderStyle | Class
ClassLibrary | ColorSource | Comment
DragIcon | DragMode | Enabled
Height | HelpContextID | Left
MousePointer | Name | OLEDragMode
OLEDragPicture | OLEDropEffects | OLEDropHasData (Propiedad)
OLEDropMode | Parent | ParentClass
Picture | RotateFlip | StatusBarText
Stretch | Tag | Themes
ToolTipText | Top | Visible
WhatsThisHelpID | Width |

Métodos

AddProperty | CloneObject | Drag
Move | OLEDrag | ReadExpression
ReadMethod | ResetToDefault | SaveAsClass
WriteExpression | WriteMethod | Zorder

Eventos

Click | DblClick | Destroy
DragDrop | DragOver | Error
Init | MiddleClick (Evento) | MouseDown
MouseEnter | MouseLeave | MouseMove
MouseUp | MouseWheel | OLECompleteDrag
OLEDragDrop | OLEDragOver | OLEGiveFeedBack
OLESetData | OLEStartDrag | RightClick
UIEnable |  |

Vea también

Control Image


Label (Control)

Crea un control Label que muestra texto.

Observaciones

Un control Label es un control gráfico que muestra texto que no puede cambiarse directamente. Sin embargo, puesto que un control Label tiene un amplio conjunto de propiedades, eventos y métodos en común con otros controles, puede responder a eventos y cambiarse dinámicamente en tiempo de ejecución.

Para asignar una tecla de acceso a una etiqueta, incluya una barra inversa y un signo menor que (\<) en el título justo delante del carácter que desee designar como tecla de acceso. Cuando se muestre la etiqueta, este carácter aparecerá subrayado. Al presionar la tecla de acceso de una etiqueta se activa el siguiente control en el orden de tabulación. Utilice la propiedad TabIndex para asignar un orden de tabulación a una etiqueta.

Los títulos se muestran de distinta forma según el objeto de que se trate.

256 es el número máximo de carácteres para la propiedad Caption de un control Label.

Para obtener más información acerca de como crear controles Label, vea Utilizar controles.

Vea también

Label (Control: propiedades, métodos y eventos) | CREATE CLASS | CREATE FORM | DEFINE CLASS


Label (Control: propiedades, métodos y eventos)

Propiedades

Alignment | Application | AutoSize
BackColor | BackStyle | BaseClass
BorderStyle | Caption | Class
ClassLibrary | ColorScheme | ColorSource
Comment | DisabledBackColor | DisabledForeColor
DragIcon | DragMode | Enabled
FontBold | FontCharSet | FontCondense
FontExtend | FontItalic | FontName
FontOutline | FontShadow | FontSize
FontStrikeThru | FontUnderline | ForeColor
Height | HelpContextID | Left
MouseIcon | MousePointer | Name
OLEDragMode | OLEDragPicture | OLEDropEffects
OLEDropHasData (Propiedad) | OLEDropMode | Parent
ParentClass | RightToLeft | StatusBarText
Style | TabIndex | Tag
ToolTipText | Top | Visible
WhatsThisHelpID | Width | WordWrap

Eventos

Click | DblClick | Destroy
DragDrop | DragOver | Error
Init | MiddleClick (Evento) | MouseDown
MouseEnter | MouseLeave | MouseMove
MouseUp | MouseWheel | OLECompleteDrag
OLEDragDrop | OLEDragOver | OLEGiveFeedBack
OLESetData | OLEStartDrag | RightClick
UIEnable |  |

Métodos

AddProperty | CloneObject | Drag
Move | OLEDrag | ReadExpression
ReadMethod | Refresh | ResetToDefault
SaveAsClass | UIEnable | WriteExpression
WriteMethod | ZOrder |

Vea también

Label (Control) | Utilizar controles | CREATE CLASS (Comando) | CREATE FORM (Comando) | DEFINE CLASS (Comando)


Line (Control)

Crea un control que muestra una línea horizontal, vertical o diagonal.

Line

Observaciones

Un control Line es un control gráfico que muestra una línea horizontal, vertical o diagonal y que no puede cambiarse directamente. Sin embargo, debido a que un control Line tiene un completo conjunto de propiedades, eventos y métodos en común con otros controles, puede responder a eventos y cambiarse dinámicamente en tiempo de ejecución.

Para obtener más información acerca de la creación de líneas, vea Diseñador de formularios y Utilizar controles.

Vea también

Line (Control: propiedades, métodos y eventos) | CREATE CLASS | CREATE FORM | DEFINE CLASS


Line (Control: propiedades, métodos y eventos)

Propiedades

Application | BaseClass | BorderColor
BorderStyle | BorderWidth | Class
ClassLibrary | ColorSource (Propiedad) | Comment
DragIcon | DragMode | DrawMode
Enabled | Height | HelpContextID
Left | LineSlant | MousePointer
Name | OLEDragMode | OLEDragPicture
OLEDropEffects | OLEDropHasData (Propiedad) | OLEDropMode
Parent | ParentClass | StatusBarText
Tag | ToolTipText | Top
Visible | WhatsThisHelpID | Width

Eventos

Click | DblClick | Destroy
DragDrop | DragOver | Error
Init | MiddleClick (Evento) | MouseDown
MouseEnter | MouseLeave | MouseMove
MouseUp | MouseWheel | OLECompleteDrag
OLEDragDrop | OLEDragOver | OLEGiveFeedBack
OLESetData | OLEStartDrag | RightClick
UIEnable |  |

Métodos

AddProperty | CloneObject | Drag
Move | OLEDrag | ReadExpression
ReadMethod | ResetToDefault | SaveAsClass
WriteExpression | WriteMethod | ZOrder

Ejemplo

El ejemplo siguiente muestra la forma de agregar un control Line a un formulario y el posible uso de la propiedad LineSlant para especificar la dirección en que se desea inclinar la línea.

El método AddObject se utiliza para agregar un control Line a un formulario. Se agregan tres botones de comando al formulario, que permiten cambiar la dirección en que se inclina la línea y cerrar el formulario.

frmMyForm = CREATEOBJECT('Form')  && Crea un formulario
frmMyForm.Closable = .F.  && Desactiva botón cerrar ventana
frmMyForm.AddObject('shpLine','Line')  && Agrega control Line al formualrio
frmMyForm.AddObject('cmdCmndBtn1','cmdMyCmndBtn1')  && Up Cmnd button
frmMyForm.AddObject('cmdCmndBtn2','cmdMyCmndBtn2')  && Down Cmnd button
frmMyForm.AddObject('cmdCmndBtn3','cmdMyCmndBtn3')  && Quit Cmnd button
frmMyForm.shpLine.Visible = .T.  && Hace visible al control Line
frmMyForm.shpLine.Top = 20  && Fila para el control Line
frmMyForm.shpLine.Left = 125  && Columna para el control Line
frmMyForm.cmdCmndBtn1.Visible =.T.  && Up Command button visible
frmMyForm.cmdCmndBtn2.Visible =.T.  && Down" Command button visible
frmMyForm.cmdCmndBtn3.Visible =.T.  && Quit Command button visible
frmMyForm.SHOW  && Muestra el formulario
READ EVENTS  && Inicia procesamiento de eventos
DEFINE CLASS cmdMyCmndBtn1 AS COMMANDBUTTON  && Crea Command button
Caption = 'Slant \<Up'  && Título para el Command button
Left = 50  && Columna par el Command button
Top = 100  && Fila para el Command button
Height = 25  && Altura para el Command button
PROCEDURE Click
ThisForm.shpLine.Visible = .F.  && Oculta el control Line
ThisForm.shpLine.LineSlant ='/'  && Inclinación arriba
ThisForm.shpLine.Visible = .T.  && Muestra el control Line
ENDDEFINE
DEFINE CLASS cmdMyCmndBtn2 AS CommandButton  && Crea Command button
Caption = 'Slant \<Down'  && Título para el Command button
Left = 200  && Columna para el Command button
Top = 100  && Fila para el Command button
Height = 25  && Altura para el Command button
PROCEDURE Click
ThisForm.shpLine.Visible = .F.  && Oculta control Line
ThisForm.shpLine.LineSlant ='\'  && Inclinación abajo
ThisForm.shpLine.Visible = .T.  && Muestra control Line
ENDDEFINE
DEFINE CLASS cmdMyCmndBtn3 AS CommandButton  && Crea Command button
Caption = '\<Quit'  && Título para el Command button
Cancel = .T.  && Predeterminado Cancel Command button (Esc)
Left = 125  && Columna para el botón Command button
Top = 150  && Fila para el Command button
Height = 25  && Altura para el Command button
PROCEDURE Click
CLEAR EVENTS  && Detiene procesamiento de eventos, cierra formularios
ENDDEFINE

Vea también

Line (Control) | Line (Método) | LineSlant (Propiedad)


ListBox (Control)

Crea un cuadro de lista.

ListBox

Observaciones

Un cuadro de lista muestra una lista de elementos en la que es posible elegir uno o más elementos. Un cuadro de lista es similar a un cuadro combinado; sin embargo, un cuadro combinado muestra inicialmente un solo elemento.

La barra invertida (backslash) ("\") es tratada como un carácter especial cuando se utiliza en una expresión para un elemento. Para este carácter se aplican las reglas siguientes:

  • Puede deshabilitar un elemento de un cuadro de lista, o un cuadro combinado al agregar al inicio de la expresión una barra invertida ("\").
  • Cualquier múltiplo de dos barras invertidas utilizadas en la expresión son mostradas como una única barra invertida. Por ejemplo, si utiliza una o dos barras invertidas juntas, se mostrará sólo una, y si se utilizan tres o cuatro, se muestran dos barras invertidas. El código del ejemplo siguiente contiene un elemento de cuadro de lista que contiene un camino Universal Naming Convention (UNC) . El código lo va a mostrar en el cuadro de lista como \\MyServer\MyMachine\MyFolder.
    MyForm.List1.AddItem("\\\\MyServer\\MyMachine\\MyFolder")
  • Si la expresión comienza con múltiples barras invertidas, el elemento no está inactivo. Si desea desactivar un elemento que comience con varias barras invertidas, agregue una barra invertida y colóquela entre paréntesis al inicio del elemento Por ejemplo, el siguiente código va a desactivar la ruta UNC en el cuadro de lista:
    MyForm.List1.AddItem("\]\\\MyServer\\MyMachine\\MyFolder")
  • Para incluir un separador de línea, utilice la barra invertida seguida por un guión como elemento a agregar al cuadro de lista. Por ejemplo, el siguiente código agrega un separador de línea a un cuadro de lista:
    MyForm.List1.AddItem("\-")

Puede utilizar un control ActiveX que agregue características extras como puede ser una casilla de verificación a controles ListView o TreeView.

Para obtener más información acerca de la creación de controles ListBox, vea Diseñador de formularios y Utilizar controles.

Vea también

ListBox (Control: propiedades, métodos y eventos) | CREATE CLASS | CREATE FORM | DEFINE CLASS


ListBox (Control: propiedades, métodos y eventos)

Propiedades

Application | BaseClass | BorderColor
BoundColumn | BoundTo | Class
ClassLibrary | ColorScheme | ColorSource
ColumnCount | ColumnLines | ColumnWidths
Comment | ControlSource | DisabledBackColor
DisabledForeColor | DisabledItemBackColor | DisabledItemForeColor
DisplayValue | DragIcon | DragMode
Enabled | FirstElement | FontBold
FontCharSet | FontCondense | FontExtend
FontItalic | FontName | FontOutline
FontShadow | FontSize | FontStrikeThru
FontUnderLine | Height | HelpContextID
IncrementalSearch | IntegralHeight | ItemBackColor
ItemData | ItemForeColor | ItemIDData
ItemTips | Left | List
ListCount | ListIndex | ListItem
ListItemID | MouseIcon | MousePointer
MoverBars | MultiSelect | Name
NewIndex | NewItemID | NullDisplay
NumberOfElements | OLEDragMode | OLEDragPicture
OLEDropEffects | OLEDropHasData (Propiedad) | OLEDropMode
Parent | ParentClass | Picture
RightToLeft | RowSource | RowSourceType
Selected | SelectedID | SelectedItemBackColor
SelectedItemForeColor | Sorted | SpecialEffect
StatusBarText | TabIndex | TabStop
Tag | TerminateRead | Themes
ToolTipText | Top | TopIndex
TopItemID | Value | Visible
WhatsThisHelpID | Width |

Métodos

AddItem | AddListItem | AddProperty
Clear | CloneObject | Drag
IndexToItemID | ItemIDToIndex | Move
MoveItem | OLEDrag | ReadExpression
ReadMethod | Refresh | RemoveItem
RemoveListItem | Requery | ResetToDefault
SaveAsClass | SetFocus | WriteExpression
WriteMethod | ZOrder |

Eventos

Click | DblClick | Destroy
DragDrop | DragOver | Error
ErrorMessage | GotFocus | Init
InteractiveChange | KeyPress | LostFocus
Message | MiddleClick (Evento) | MouseDown
MouseEnter | MouseLeave | MouseMove
MouseUp | MouseWheel | OLECompleteDrag
OLEDragDrop | OLEDragOver | OLEGiveFeedBack
OLESetData | OLEStartDrag | OnMoveItem
ProgrammaticChange | RangeHigh | RangeLow
RightClick | UIEnable | Valid
When |  |

Ejemplo

El ejemplo siguiente crea un control ListBox. El origen de los elementos que aparecen en el cuadro de lista es una matriz especificada con las propiedades RowSourceType y RowSource.

La propiedad MultiSelect para el cuadro de lista está definida como (.T.), lo que permite realizar múltiples selecciones en la lista. Los elementos que elija se mostrarán mediante las propiedades ListCount, Selected y List (que determinan el número de elementos de la lista y los elementos elegidos).

CLEAR
DIMENSION gaMyListArray(10)
FOR gnCount = 1 to 10  && Llena la matriz con letras
STORE REPLICATE(CHR(gnCount+64),6) TO gaMyListArray(gnCount)
NEXT
frmMyForm = CREATEOBJECT('Form')  && Crea un formulario
frmMyForm.Closable = .f.  && Disactiva el cotón cerrar ventana
frmMyForm.Move(150,10)  && Mueve el formulario
frmMyForm.AddObject('cmbCommand1','cmdMyCmdBtn')  && Agrega "Quit" Command button
frmMyForm.AddObject('lstListBox1','lstMyListBox')  && Agrega control ListBox
frmMyForm.lstListBox1.RowSourceType = 5  && Especifica una matriz
frmMyForm.lstListBox1.RowSource = 'gaMyListArray' && Matrix contiene items de listbox
frmMyForm.cmbCommand1.Visible =.T.  && "Quit" Command button visible
frmMyForm.lstListBox1.Visible =.T.  && "List Box visible
frmMyForm.SHOW  && Muestra el formulario
READ EVENTS  && Inicia procesamiento de eventos
DEFINE CLASS cmdMyCmdBtn AS CommandButton  && Crea Command button
Caption = '\<Quit'  && Titulo para el Command button
Cancel = .T.  && Predeterminado Cancel Command button (Esc)
Left = 125  && Columna para Command button
Top = 210  && Fila para Command button
Height = 25  && Altura para Command button
PROCEDURE Click
CLEAR EVENTS  && Detiene rocesamiento de eventos, cierra formulario
CLEAR  && Borra ventana principal de Visual FoxPro
ENDDEFINE
DEFINE CLASS lstMyListBox AS ListBox  && Crea control ListBox
Left = 10  && Columna para List Box
Top = 10  && Fila para List Box
MultiSelect = .T.  && Permitir seleccionar mas de 1 item
PROCEDURE Click
ACTIVATE SCREEN
CLEAR
? "Selected items:"
? "---------------"
FOR nCnt = 1 TO ThisForm.lstListBox1.ListCount
IF ThisForm.lstListBox1.Selected(nCnt)  && Está seleccionado el item?
? SPACE(5) + ThisForm.lstListBox1.List(nCnt) && Muestra item
ENDIF
ENDFOR
ENDDEFINE

Vea también

ListBox (Control) | ListCount (Propiedad) | Diseñador de formularios | Utilizar controles


Clases Miembro

Definen y crean subclases para objetos miembro de ciertos objetos contenedores. La siguiente tabla muestra estos miembros y sus padres contenedores:

Miembro | Contenedor
Page | PageFrame
CommandButton | CommandGroup
OptionButton | OptionGroup
Column | Grid
Header | Column

Utilizando clases de miembro, se puede definir un comportamiento coherente para todos los miembros de una clase específica. Por ejemplo, se puede definir un comportamiento particular en el evento Activate de una clase Page para usarla en una clase u objeto PageFrame especifico. Todas las páginas miembro para ese PageFrame heredan el mismo código o comportamiento.

Para asignar la clase personalizada de objetos miembro, se establecen las propiedades MemberClassLibrary y MemberClass en las clases contenedoras PageFrame, CommandGroup, OptionGroup, y Grid. Estas propiedades especifican la clase de miembro y la biblioteca de clases que se desea utilizar. Cuando se establecen estas propiedades, los nuevos objetos miembro se basan en la clase miembro especificada. Para objetos Column, utilice las propiedades HeaderClassLibrary y HeaderClass para especificar una clase Header personalizada.

Precaución No se debe cambiar la propiedad Name para una clase miembro en una definición de clase basada en un programa (.prg) en tiempo de diseño. Hacerlo así puede resultar en la generación de un mensaje, "Definición de clase name no se encuentra."

Comentarios

En general, los objetos miembro deben estar contenidos dentro de un objeto contenedor padre, para ser usados visualmente. Los contenedores padre sólo pueden contener objetos miembro. Por ejemplo, un objeto Page debe estar en un objeto PageFrame para mostrarlo en un objeto Form y un objeto PageFrame debe tener al menos un objeto Page para ser visible en el objeto Form. Hay dos excepciones:

  • Se pueden utilizar botones de comando en otros contenedores sin necesidad de un CommandGroup.
  • Los objetos Column pueden contener otros controles pero sólo un objeto Header.

Los objetos miembro sólo existen como hijos de un contenedor padre, el cual sólo contiene miembros que pertenecen a una clase base específica. Por ejemplo, la existencia de un objeto Page requiere que previamente exista su objeto padre contenedor PageFrame. Un objeto PageFrame sólo puede contener páginas y no botones de comando.

Se puede asociar un evento a la acción de agregar un nuevo objeto miembro, utilizando el método _ASSIGN con la propiedad count del objeto miembro (PROCEDURE count_ASSIGN && Método Assign). El evento Init del objeto miembro se lanza cuando se agrega un objeto miembro. Sin embargo, no es posible pasar parámetros al evento Init de un objeto miembro creado a través de incrementar la propiedad count, ya que los miembros se crean dinámicamente cuando cambia la propiedad count del contenedor padre. Si necesita pasar parámetros, puede utilizar el método AddObject del contenedor.

Nota En un formulario .scx, si se agrega código de instanciamiento al evento Init de la clase miembro, Visual FoxPro ignora ese código y sólo ejecuta el código Init de la definición de la clase miembro. Sin embargo, con formularios de librerías de clases visuales (.vcx), Visual FoxPro crea una verdadera subclase. Se puede agregar con seguridad código de instanciamiento para otros eventos tales como Click.

Cualquier valor de una propiedad que se acceda en el evento Init de la clase miembro, pertenece a las de la clase miembro original. Cualquier valor que pueda haber sido sobrescrito en la subclase se aplica después de instanciar la clase miembro.

Este comportamiento sólo se aplica a formularios .scx. Después de que ocurre el evento Init, la clase miembro se trata igual en los formularios .scx y .vcx.

Ver también

Objectos, Colecciones y Clases | Page (Objeto) | PageFrame (Control) | CommandButton (Control) | CommandGroup (Control) | OptionButton (Control) | OptionGroup (Control) | Grid (Control) | Column (Objeto) | Header (Objeto) | MemberClass (Propiedad) | MemberClassLibrary (Propiedad) | HeaderClass (Propiedad) | HeaderClassLibrary (Propiedad) | Init (Evento) | AddObject (Método)


Objects (Colección)

Una matriz para tener acceso a objetos en un objeto Application.

ApplicationObject.Objects(nIndex)

Valores de la propiedad

nIndex
Identifica, de forma unívoca, un objeto en el objeto Application. Observe que puede ocurrir que nIndex no corresponda al orden de creación de los objetos.

Observaciones

Se puede utilizar la colección Objects para determinar los objetos actuales para una objeto Application. Los objetos Column, CommandGroup, Container, Control, Custom, DataEnvironment, Form, FormSet, Grid, Page, PageFrame, OptionGroup y Toolbar tienen colecciones y esas colecciones podrían aparecer en la ventana Depuración.

Vea también

Forms (Propiedad)

Se aplica a: Application (Objeto) | _VFP (Variable del sistema) | _SCREEN (Variable del sistema) | Column (Objeto) | CommandGroup (Control) | Container (Objeto) | Control (Objeto) | Custom (Objeto) | DataEnvironment (Objeto) | Form (Objeto) | FormSet (Objeto) | Grid (Control) | OptionGroup (Control) | Page (Objeto) | PageFrame (Control) | ToolBar (Objeto)


OLE Bound (Control)

Crea un control dependiente de OLE.

OLEBoundControl

Observaciones

En un formulario o informe, un control dependiente de OLE permite mostrar el contenido de un objeto OLE (por ejemplo, de Microsoft Word y Microsoft Excel) en un campo General de una tabla.

A diferencia de los controles OLE, los objetos OLE insertables no tienen su propio conjunto de eventos. Además, los controles dependientes de OLE, a diferencia de los controles OLE, dependen de un campo General de una tabla de Visual FoxPro.

Para obtener información adicional acerca de los objetos OLE en Visual FoxPro, vea Agregar OLE.

Vea también

OLE Bound (Control: propiedades, métodos y eventos) | APPEND GENERAL | CREATE FORM | CREATE CLASS | CREATEBINARY( ) | DEFINE CLASS | MODIFY GENERAL | OLE Container (Control)


OLE Bound (Control: propiedades, métodos y eventos)

Propiedades

Application | AutoActivate | AutoSize
BaseClass | ClassLibrary | Class
Comment | ControlSource | DocumentFile
DragIcon | DragMode | Enabled
Height | HelpContextId | HostName
Left | MousePointer | Name
Object | OLEClass | OLELCID (Propiedad)
OLETypeAllowed | ParentClass | Sizable
StatusBarText | Stretch | TabIndex
TabStop | Tag | ToolTipText
Top | Visible | WhatsThisHelpID
Width |  |

Eventos

Destroy | DragDrop | DragOver
Error | GotFocus | Init
LostFocus | Moved | Resize
UIEnable |  |

Métodos

AddProperty | CloneObject | DoVerb
Drag | Move | Refresh
ResetToDefault | SaveAsClass | SetFocus
ZOrder |  |

Vea también

OLE Bound (Control) | OLE Container (Control)


OLE Container (Control)

Crea un objeto contenedor OLE.

OLEControl

Observaciones

Un control contenedor OLE permite agregar objetos OLE a las aplicaciones. Los objetos OLE incluyen Controles OLE (archivos .ocx) y objetos OLE insertables creados en otras aplicaciones, como Microsoft Word y Microsoft Excel. A diferencia de los Controles OLE (archivos .ocx), los objetos OLE insertables no cuentan con su propio conjunto de eventos. Los controles contenedores OLE, a diferencia de los controles dependientes de OLE, no dependen de un campo General de una tabla de Visual FoxPro.

Observe que el tipo de control ActiveX situado en un control contenedor OLE determina las propiedades, los eventos y los métodos disponibles para el control ActiveX.

Para obtener información adicional acerca de los objetos OLE en Visual FoxPro, vea Agregar OLE.

Vea también

OLE Container (Control: propiedades, métodos y eventos) | Introducción a los controles ActiveX | APPEND GENERAL | CREATE FORM | CREATE CLASS | CREATEBINARY( ) | DEFINE CLASS | MODIFY GENERAL | OLE Bound (Control)


OLE Container (Control: propiedades, métodos y eventos)

Propiedades

Align | Application | AutoActivate
AutoSize | AutoVerbMenu | BaseClass
Cancel | Class | ClassLibrary
Comment | ControlSource | Default
DocumentFile | DragIcon | DragMode
Enabled | Height | HelpContextID
HostName | Left | MouseIcon
MousePointer | Name | Object
OLEClass | OLELCID | OLETypeAllowed
Parent | ParentClass | Sizable
Stretch | TabIndex | TabStop
Tag | Top | Visible
WhatsThisHelpID | Width |

Eventos

Destroy | DragDrop | DragOver
Error | GotFocus | Init
LostFocus | Moved | Resize
UIEnable |  |

Métodos

AddProperty | CloneObject | DoVerb
Drag | Move | Refresh
ResetToDefault | SaveAsClass | SetFocus
ShowWhatsThis | Zorder |

Ejemplo

El ejemplo siguiente agrega un control OLE Container a un formulario, y utiliza las propiedades OleClass y DocumentFile para especificar Microsoft Excel como el servidor de Automatización y una hoja de cálculo de Microsoft Excel como el archivo que se va a modificar.

La propiedad DocumentFile especifica una hoja de cálculo denominada Book1.xls en el directorio EXCEL de la unidad C. Este ejemplo no funcionará adecuadamente si el archivo y el directorio especificados en la propiedad DocumentFile no existen; quizás sea necesario modificar la propiedad DocumentFile para especificar un directorio y un archivo de hoja de cálculo existentes.

* El método DoVerb se usa para activar la hoja de cálculo para su modificación.

frmMyForm = CREATEOBJECT('Form')  && Crea un formulario
frmMyForm.Closable = .F.  && Desabilita la ventana del menú contextual
frmMyForm.AddObject('cmdCommand1','cmdMyCmdBtn')  && Añade un botón de comando
frmMyForm.AddObject("oleObject","oleExcelObject")  && Añade un objeto OLE
frmMyForm.cmdCommand1.Visible=.T.  && Muestra el botón de comando "Quit"
frmMyForm.oleObject.Visible=.T.  && Muestra el control OLE
frmMyForm.oleObject.Height = 50  && Altura del control OLE
frmMyForm.Show  && Muestra el formulario
frmMyForm.oleObject.DoVerb(-1)  && -1 para editar
READ EVENTS  && Inicia el procesamiento de eventos
DEFINE CLASS oleExcelObject as OLEControl
OleClass ="Excel.Sheet"  && Nombre del servidor
DocumentFile = "C:\EXCEL\BOOK1.XLS"  && Este archivo debe existir
ENDDEFINE
DEFINE CLASS cmdMyCmdBtn AS CommandButton  && Crea un botón de comando
Caption = '\<Quit'  && Título del botón de comando
Cancel = .T.  && Predeterminado para el botón Cancel (Esc)
Left = 125  && Columna del botón de comando
Top = 210  && Fila del botón de comando
Height = 25  && Altura del botón de comando
PROCEDURE Click
CLEAR EVENTS  && Detiene el procesamiento de eventos y cierra el formulario
ENDDEFINE

Vea también

OLE Container (Control) | Agregar OLE


OptionButton (Control)

Crea un botón de opción sencillo.

OptionButton

Observaciones

Un botón de opción sencillo sólo puede agregarse a un grupo de botones de opción.

Para obtener más información acerca de cómo crear un grupo de botones de opción, vea OptionGroup (Control) y Utilizar controles.

Vea también

OptionButton (Control: propiedades, métodos y eventos) | CREATE FORM | CREATE CLASS | DEFINE CLASS | OptionGroup (Control)


OptionButton (Control: propiedades, métodos y eventos)

Propiedades

Alignment | Application | AutoSize
BackColor | BackStyle | BaseClass
Caption | Class | ClassLibrary
ColorScheme | ColorSource | Comment
ControlSource | DisabledBackColor | DisabledForeColor
DisabledPicture | DownPicture | DragIcon
DragMode | Enabled | FontBold
FontCharSet | FontCondense | FontExtend
FontItalic | FontName | FontOutline
FontShadow | FontSize | FontStrikeThru
FontUnderLine | ForeColor | Height
HelpContextID | Left | MousePointer
Name | OLEDragMode | OLEDragPicture
OLEDropEffects | OLEDropHasData | OLEDropMode
Parent | ParentClass | Picture
PicturePosition | RightToLeft | SpecialEffect
StatusBarText | Style | TabIndex
TabStop | Tag | TerminateRead
Themes | ToolTipText | Top
Value | Visible | WhatsThisHelpID
Width |  |

Eventos

Click | DblClick | Destroy
DragDrop | DragOver | Error
ErrorMessage | GotFocus | Init
KeyPress | LostFocus | Message
MiddleClick (Evento) | MouseDown | MouseEnter
MouseLeave | MouseMove | MouseUp
MouseWheel | OLECompleteDrag | OLEDragDrop
OLEDragOver | OLEGiveFeedBack | OLESetData
OLEStartDrag | RightClick | Valid
When |  |

Métodos

AddProperty | CloneObject | Drag
Move | OLEDrag | ReadExpression
ReadMethod | Refresh | ResetToDefault
SaveAsClass | SetFocus | WriteExpression
WriteMethod | ZOrder |

Vea también

OptionButton (Control) | Establecer propiedades de botones de opción


OptionGroup (Control)

Crea un grupo de botones de opción.

OptionGroup

Observaciones

Los grupos de botones de opción son contenedores que alojan botones de opción. Un grupo de botones de opción permite realizar una selección en un conjunto de botones. Al elegir un botón de opción, la selección se actualiza y se libera la opción anterior. Una viñeta al lado del botón de opción indica la opción actual. Por ejemplo, los botones de opción pueden emplearse para dirigir los resultados a un archivo, una impresora o una ventana.

Para obtener más información acerca de cómo crear grupos de botones de opción, vea Utilizar controles.

Vea también

OptionGroup (Control: propiedades, métodos y eventos) | CREATE FORM | CREATE CLASS | DEFINE CLASS | OptionButton (Control)


OptionGroup (Control: propiedades, métodos y eventos)

Propiedades

Application | AutoSize | BackColor
BackStyle | BaseClass | BorderColor
BorderStyle | ButtonCount | Buttons
Class | ClassLibrary | Comment
ColorSource (Propiedad) | ControlSource | DragIcon
DragMode | Enabled | Height
HelpContextID | Left | MemberClass
MemberClassLibrary | MouseIcon | MousePointer
Name | Objects | OLEDragMode
OLEDragPicture | OLEDropEffects | OLEDropHasData (Propiedad)
OLEDropMode | Parent | ParentClass
SpecialEffect | StatusBarText | TabIndex
Tag | TerminateRead | Themes
ToolTipText | Top | Value
Visible | WhatsThisHelpID | Width

Métodos

AddObject | AddProperty | CloneObject
Drag | Move | OLEDrag
ReadExpression | ReadMethod | Refresh
RemoveObject | ResetToDefault | SaveAsClass
SetAll | WriteExpression | WriteMethod
ZOrder |  |

Eventos

Click | DblClick | DragDrop
DragOver | Error | ErrorMessage
Init | InteractiveChange | Message
MiddleClick (Evento) | MouseDown | MouseEnter
MouseLeave | MouseMove | MouseUp
MouseWheel | OLECompleteDrag | OLEDragDrop
OLEDragOver | OLEGiveFeedBack | OLESetData
OLEStartDrag | ProgrammaticChange | RightClick
UIEnable | Valid | When

Ejemplo

El ejemplo siguiente crea un control OptionGroup y coloca el control en un formulario. El control OptionGroup tiene tres botones, y dependiendo del botón donde haga clic, se mostrará un círculo, un cuadrado o una elipse. Las propiedades Buttons y Caption sirven para especificar el texto que aparece junto a cada botón de opción.

El control Shape se utiliza para crear el círculo, la elipse y el cuadrado. El evento Click del control OptionGroup usa una estructura DO CASE ... ENDCASE y la propiedad Value para mostrar la forma adecuada al hacer clic en un botón de opción.

frmMyForm = CREATEOBJECT('Form')  && Crea un formulario
frmMyForm.Closable = .F.  && Deactiva el botón cerrar ventana
frmMyForm.AddObject('cmdCommand1','cmdMyCmndBtn')  && Agrega Command button
frmMyForm.AddObject('opgOptionGroup1','opgMyOptGrp') && Agrega Option Group
frmMyForm.AddObject('shpCircle1','shpMyCircle')  && Agrega forma Circle
frmMyForm.AddObject('shpEllipse1','shpMyEllipse')  && Agrega forma Ellipse
frmMyForm.AddObject('shpSquare','shpMySquare')  && Agrega forma Box
frmMyForm.cmdCommand1.Visible =.T.  && "Quit" Command button visible
frmMyForm.opgOptionGroup1.Buttons(1).Caption = "\<Circle"
frmMyForm.opgOptionGroup1.Buttons(2).Caption = "\<Ellipse"
frmMyForm.opgOptionGroup1.Buttons(3).Caption = "\<Square"
frmMyForm.opgOptionGroup1.SetAll("Width", 100) && Ancho para Option group
frmMyForm.opgOptionGroup1.Visible = .T.  && Option Group visible
frmMyForm.opgOptionGroup1.Click  && Muesta forma circle
frmMyForm.SHOW  && Muesta el formulario
READ EVENTS  && Inicia procesamiento de eventos
DEFINE CLASS opgMyOptGrp AS OptionGroup  && Crea un Option Group
ButtonCount = 3  && Tres botones Option
Top = 10
Left = 10
Height = 75
Width = 100
PROCEDURE Click
ThisForm.shpCircle1.Visible = .F.  && Oculta forma circle
ThisForm.shpEllipse1.Visible = .F.  && Oculta forma ellipse
ThisForm.shpSquare.Visible = .F.  && Oculta forma square
DO CASE
CASE ThisForm.opgOptionGroup1.Value = 1
ThisForm.shpCircle1.Visible = .T. && Muesta forma circle
CASE ThisForm.opgOptionGroup1.Value = 2
ThisForm.shpEllipse1.Visible = .T.  && Muestra forma ellipse
CASE ThisForm.opgOptionGroup1.Value = 3
ThisForm.shpSquare.Visible = .T.  && Muestra forma square
ENDCASE
ENDDEFINE
DEFINE CLASS cmdMyCmndBtn AS CommandButton  && Crea Command button
Caption = '\<Quit'  && Título para Command button
Cancel = .T.  && Predeterminado Cancel Command button (Esc)
Left = 125  && Columna para Command button
Top = 210  && Fila para Command button
Height = 25  && Altura para Command button
PROCEDURE Click
CLEAR EVENTS  && Detiene procesamiento de eventos, cierra formulario
ENDDEFINE
DEFINE CLASS shpMyCircle AS SHAPE  && Crea circle
Top = 10
Left = 200
Width = 100
Height = 100
Curvature = 99
BackColor = RGB(255,0,0)  && Red
ENDDEFINE
DEFINE CLASS shpMyEllipse AS SHAPE  && Crea ellipse
Top = 35
Left = 200
Width = 100
Height = 50
Curvature = 99
BackColor = RGB(0,128,0)  && Green
ENDDEFINE
DEFINE CLASS shpMySquare AS SHAPE  && Crea square
Top = 10
Left = 200
Width = 100
Height = 100
Curvature = 0
BackColor = RGB(0,0,255)  && Blue
ENDDEFINE

Vea también

OptionGroup (Control) | DO CASE ... ENDCASE (Comando)


Page (Objeto)

Crea una página en un control PageFrame.

Puede usar páginas para crear formularios o cuadros de diálogo en fichas. Un marco de páginas contiene un conjunto de páginas. Para información adicional acerca de crear páginas y marcos de página, consulte "Agregar marcos de página a formularios" en Extender formularios.

Page

Observaciones

Puede referirse a una pagina de un marco de páginas por el nombre como en el siguiente ejemplo:

myFrame.MyPage1

También se puede hacer referencia a una página por su número de índice, mediante la propiedad Pages de PageFrame. Este método es coherente con las colecciones de controles de otros contenedores de Visual FoxPro.

myFrame.Pages(2).Enabled = .T.

El índice no tiene por qué ser igual que la propiedad PageOrder. Puede tener tres páginas con PageOrders de 2, 3 y 5. Puede hacer referencia a estas páginas de este modo:

myFrame.Pages(1)
myFrame.Pages(2)
myFrame.Pages(3)

Solamente la página activa se actualiza cuando ocurre el método Refresh de Form para el formulario en el cual cual está ubicada la página.

Vea también

Page (Objeto: propiedades, métodos y eventos) | CREATE FORM | CREATE CLASS | DEFINE CLASS | PageFrame (Control)


Page (Objeto: propiedades, métodos y eventos)

Propiedades

ActiveControl | Application | BackColor
BackStyle | BaseClass | Caption
Class | ClassLibrary | ColorSource
Comment | ControlCount | Controls
DragIcon | DragMode | Enabled
FontBold | FontCharSet | FontCondense
FontExtend | FontItalic | FontName
FontOutline | FontShadow | FontSize
FontStrikeThru | FontUnderline | ForeColor
HelpContextID | MouseIcon | MousePointer
Name | Objects | OLEDragMode
OLEDragPicture | OLEDropEffects | OLEDropHasData
OLEDropMode | PageOrder | Parent
ParentClass | Picture | Tag
ToolTipText | WhatsThisHelpID |

Eventos

Activate | Click | DblClick
Deactivate | Destroy | DragDrop
DragOver | Error | Init
MiddleClick (Evento) | MouseDown | MouseEnter
MouseLeave | MouseMove | MouseUp
MouseWheel | OLECompleteDrag | OLEDragDrop
OLEDragOver | OLEGiveFeedBack | OLESetData
OLEStartDrag | RightClick |

Métodos

AddObject | AddProperty | CloneObject
Drag | OLEDrag | ReadExpression
ReadMethod | Refresh | RemoveObject
ResetToDefault | SaveAsClass | SetAll
WriteExpression | WriteMethod | ZOrder

Vea también

Page (Objeto) | Extender formularios


PageFrame (Control)

Crea un marco de página para contener objetos Page.

Un marco de página es un objeto contenedor que contiene páginas, las que contienen controles.

Nota Para que un marco de página sea visible, es necesario agregarlo a un formulario.
PageFrame

Observaciones

El marco de página define las características globales de la página: tamaño y posición, estilo del borde, cuál es la página activa, etc. El marco de página determina la localización de las páginas y cuánto de cada página es visible . La páginas se posicionan en la esquina superior izquierda del marco de página. Si el marco de página es movido, las páginas se mueven con el.

Un marco de página contiene páginas individuales nombradas de forma predeterminada Page1, Page2, Page3, etc.

Nota Sólo se actualiza la página activa cuando se utiliza el método Refresh para el control Form donde se encuentra la página.

La propiedad PageFrame Themes proporciona un efecto de gradiente en los objetos de Page, como una etiqueta, un botón de opción, o controles similiares cuyo texto no se muestre correctamente si la propiedad BackStyle del control esta establecida en Opaco. Puede corregir esta situación estableciendo BackStyle a Transparente.

Para obtener información adicional acerca de cómo crear páginas y marcos de páginas, vea "Agregar marcos de página a un formulario" en Extender formularios.

Vea también

PageFrame (Control: propiedades, métodos y eventos) | CREATE FORM | CREATE CLASS | DEFINE CLASS | Page (Objeto)


PageFrame (Control: propiedades, métodos y eventos)

Propiedades

ActivePage | Application | BaseClass
BorderColor | BorderWidth | Class
ClassLibrary | ColorSource (Propiedad) | Comment
DragIcon | DragMode | Enabled
HelpContextID | Height | Left
MemberClass | MemberClassLibrary | MouseIcon
MousePointer | Name | Objects
OLEDragMode | OLEDragPicture | OLEDropEffects
OLEDropHasData (Propiedad) | OLEDropMode | PageCount
PageHeight | Pages | PageWidth
Parent | ParentClass | RightToLeft
SpecialEffect | StatusBarText | TabIndex
TabOrientation | Tabs | TabStop
TabStyle | Tag | Themes
ToolTipText | Top | Visible
WhatsThisHelpID | Width |

Métodos

AddObject | AddProperty | CloneObject
Drag | Move | OLEDrag
ReadExpression | ReadMethod | Refresh
RemoveObject | ResetToDefault | SaveAsClass
SetAll | WriteExpression | WriteMethod
Zorder |  |

Eventos

Click | DblClick | Destroy
DragDrop | DragOver | Error
Init | MiddleClick (Evento) | MouseDown
MouseEnter | MouseLeave | MouseMove
MouseUp | MouseWheel | Moved
OLECompleteDrag | OLEDragDrop | OLEDragOver
OLEGiveFeedBack | OLESetData | OLEStartDrag
Resize | RightClick | UIEnable

Vea también

PageFrame (Control) | Extender formularios


Parent (Referencia de objeto)

Hace referencia a un objeto contenedor de un control. No está disponible en tiempo de diseño; es de sólo lectura en tiempo de ejecución.

Control.Parent

Observaciones

Utilice la palabra clave Parent para tener acceso a las propiedades, métodos o controles del objeto contenedor de un control. También puede usar la referencia de objeto Parent para tener acceso al objeto contenedor de una página o de un formulario.

La referencia de objeto Parent resulta útil para aplicaciones en las que se transfieren controles como argumentos. Por ejemplo, puede transferir una variable de control a un procedimiento general y utilizar la referencia de objeto Parent para tener acceso a su objeto contenedor.

También puede utilizar esta referencia de objeto para objetos en una clase de control que se han colocado en un formulario desconocido.

Vea también

BaseClass (Propiedad)

Se aplica a: CheckBox | Collection (Clase) | Column | ComboBox | CommandButton | CommandGroup | Container | Control | CursorAdapter (Clase) | Custom | EditBox | Exception (Clase) | Form | Grid | Header | Image | Label | Line | ListBox | OLE Bound (Control) | OLE Container (Control) | OptionButton | OptionGroup | Page | PageFrame | Project (Objeto) | ProjectHook (Objeto) | Separator | Session (Objeto) | Shape | Spinner | TextBox | Timer | ToolBar


Project (Objeto)

Cuando se crea o se abre un proyecto, se crea una instancia del proyecto, que proporciona acceso por medio de programación a las propiedades y métodos del proyecto.

Project

Observaciones

Se crea una instancia de un objeto Project cuando se ejecutan los comandos CREATE PROJECT, MODIFY PROJECT, BUILD APP, BUILD DLL, BUILD EXE, BUILD MTDLL o BUILD PROJECT.

Tenga en cuenta que un objeto Project, sus propiedades y sus métodos no están disponibles en el evento Init del objeto ProjectHook. Se pasarán por alto los valores que asigne a las propiedades del objeto Project o los métodos que llame en el evento Init del objeto ProjectHook.

Un objeto Project es un objeto COM, por lo que al asignar un objeto Project a una variable de memoria crea una variable de memoria de la clase “Tipo desconocido”.

Para obtener más información acerca de los proyectos, vea Enlaces del Administrador de proyectos.

Vea también

Project (Objeto: propiedades, métodos y eventos) | ActiveProject (Propiedad) | File (Objeto) | Files (Colección) | Projects (Colección) | ProjectHook (Objeto) | Server (Objeto) | Servers (Colección)


Project (Objeto: propiedades, métodos y eventos)

Propiedades

Application | AutoIncrement | BaseClass
BuildDateTime | Debug | Encrypted
Files (Colección) | HomeDir | Icon
MainFile | Name | Parent
ProjectHook | ProjectHookClass | ProjectHookLibrary
SCCProvider | ServerHelpFile | ServerProject
TypeLibCLSID | TypeLibDesc | TypeLibName
VersionComments | VersionCompany | VersionCopyright
VersionDescription | VersionLanguage | VersionNumber
VersionProduct | VersionTrademarks | Visible

Métodos

Build | CleanUp | Close
Refresh | SetMain |

Vea también

Project (Objeto) | ProjectHook (Objeto: propiedades, métodos y eventos) | ProjectHook (Objeto)


ProjectHook (Objeto)

Se crea una instancia cuando se abre un proyecto y proporciona acceso por medio de programación a los eventos de proyecto.

Observaciones

Un objeto ProjectHook es una clase de base de Visual FoxPro que se crea de forma predeterminada siempre que se abre un proyecto. (Puede incluir la cláusula NOPROJECTHOOK en CREATE PROJECT y MODIFY PROJECT para evitar que se cree una instancia de un objeto ProjectHook para el proyecto.)

El objeto ProjectHook permite el acceso por medio de programación a los eventos que se producen en un proyecto. Por ejemplo, puede ejecutar código siempre que agregue un archivo a un proyecto. Observe que puede especificar una clase de enganche de proyecto predeterminada para nuevos proyectos en la ficha Proyecto, del cuadro de diálogo Opciones o para un proyecto individual en el Cuadro de diálogo Información del proyecto. En tiempo de ejecución, puede usar la propiedad ProjectHook para especificar una clase de enganche de proyecto como en el ejemplo siguiente:

MODIFY PROJECT MyProject
_VFP.Projects('MyProject.pjx').ProjectHook = ;
NewObject('MyProjectHook', 'MyClass.vcx')

Se puede crear una clase de base ProjectHook con CREATE CLASS, CREATEOBJECT( ), o NEWOBJECT( ).

Para obtener más información acerca de los proyectos, vea Enlaces del Administrador de proyectos.

Vea también

ProjectHook (Objeto: propiedades, métodos y eventos) | CREATE CLASS | CREATEOBJECT( ) | File (Objeto) | Files (Colección) | NEWOBJECT( ) | ProjectHook (Propiedad) | Projects (Colección) | Project (Objeto) | Server (Objeto) | Servers (Colección)


ProjectHook (Objeto: propiedades, métodos y eventos)

Propiedades

Application | BaseClass | Class
ClassLibrary | Comment | Name
OLEDropEffects | OLEDropHasData | OLEDropMode
Parent | ParentClass | Tag

Eventos

Activate | AfterBuild | BeforeBuild
Deactivate | Destroy | Error
Init | OLEDragDrop | OLEDragOver
OLEGiveFeedBack | QueryAddFile | QueryModifyFile
QueryNewFile (Evento) | QueryRemoveFile | QueryRunFile

Métodos

AddProperty | ReadExpression | ReadMethod
ResetToDefault | SaveAsClass | WriteExpression

Vea también

ProjectHook (Objeto)


Projects (Colección)

Una colección de objetos Project.

Projects

Observaciones

Una colección de proyectos proporciona acceso a objetos Project; esto le permite tratar un proyecto y los archivos y servidores del proyecto.

Se puede hacer referencia a los elementos de una colección Projects por número de índice o por nombre. Por ejemplo, el código siguiente vuelve a generar el proyecto más reciente:

_VFP.Projects(1).Build( )

El código siguiente vuelve a generar el proyecto MyProject:

_VFP.Projects('MyProject.pjx').Build( )

Para obtener más información acerca de la colección Projects, vea Enlaces del Administrador de proyectos.

Vea también

Projects (Colección: propiedades, métodos y eventos) | File (Objeto) | Files (Colección) | Project (Objeto) | ProjectHook (Objeto) | Server (Objeto) | Servers (Colección)

Se aplica a: _VFP (Variable del sistema) | Application (Objeto)


Projects (Colección: propiedades, métodos y eventos)

Propiedades

Count

Métodos

Item

Vea también

Projects (Colección)


Relation (Objeto)

Se crea cuando se establecen relaciones en el Diseñador de entorno de datos para un formulario, un conjunto de formularios o un informe.

Observaciones

El objeto Relation permite determinar o especificar como se relacionan dos tablas.

Establecer una propiedad de objeto Relation en tiempo de ejecución genera un error. Para que un nuevo valor de propiedad entre en vigor, es necesario llamar a los métodos CloseTables y OpenTables para el entorno de datos.

Para obtener más información acerca del entorno de datos para objetos Forms y FormSets, vea Establecer el entorno de datos.

Vea también

Relation (Objeto: propiedades, métodos y eventos) | Cursor (Objeto) | DataEnvironment (Objeto)


Relation (Objeto: propiedades, métodos y eventos)

Propiedades

Application | ChildAlias | ChildOrder
Comment | Name | OneToMany
ParentAlias | RelationalExpr | Tag

Eventos

Destroy Error Init

Métodos

AddProperty | ReadExpression | ReadMethod
ResetToDefault | WriteExpression |

Vea también

Relation (Objeto) | RELATION( ) (Función) | Cursor (Objeto) | DataEnvironment (Objeto)


Separator (Objeto)

Crea un objeto Separator que incluye espacios entre los controles de una barra de herramientas.

Separator

Observaciones

Los controles de una barra de herramientas se colocan unos al lado de otros a menos que se incluya Separator entre ellos. Un separador es un objeto especial que agrega espacios entre los controles y crea un grupo de controles.

Para obtener más información acerca de la creación de barras de herramientas y separadores, vea Diseñar menús y barras de herramientas.

Vea también

Separator (Objeto: propiedades, métodos y eventos) | CREATE CLASS | CREATE FORM | DEFINE CLASS | ToolBar (Objeto)


Separator (Objeto: propiedades, métodos y eventos)

Propiedades

Application | BaseClass | Class
ClassLibrary | Comment | Enabled
Name | Parent | ParentClass
Style | Tag |

Eventos

Destroy Error Init

Métodos

AddProperty | ReadExpression | ReadMethod
ResetToDefault | SaveAsClass | WriteExpression
ZOrder |  |

Vea también

Separator (Objeto) | CREATE CLASS | CREATE FORM | DEFINE CLASS | ToolBar (Objeto)


Server (Objeto)

Una referencia de objeto a un servidor del proyecto.

Server

Observaciones

Se crea un objeto Server para cada servidor de un proyecto después de generar un archivo ejecutable (.exe) o una biblioteca de vínculos dinámicos (.dll) del proyecto. El objeto Server proporciona una referencia de objeto a un servidor del proyecto y le permite determinar información acerca del servidor y manipularla mediante las propiedades del objeto de servidor.

Una colección Servers del proyecto está formada por todos los objetos Server del proyecto.

Observe que un objeto Server es un objeto COM, de forma que asignar una referencia a un objeto Server a una variable de memoria crea una variable de memoria de la clase “Tipo desconocido”.

Vea también

Server (Objeto: propiedades, métodos y eventos) | File (Objeto) | Files (Colección) | Project (Objeto) | Projects (Colección) | ProjectHook (Objeto) | Colección Servidores


Server (Objeto: propiedades, métodos y eventos)

Propiedades

CLSID | Description | HelpContextID
Instancing | ProgID | ServerClass
ServerClassLibrary |  |

Vea también

Server (Objeto) | File (Objeto) | Files (Colección) | Project (Objeto) | Projects (Colección) | ProjectHook (Objeto) | Colección Servidores


Servers (Colección)

Una colección de objetos de servidor.

Servers

Observaciones

Una colección Servers proporciona acceso a los objetos de servidor, permitiéndole manipular servidores en el proyecto.

Para obtener más información acerca de la colección Servers y los proyectos, vea Enlaces del Administrador de proyectos.

Para obtener información acerca de la creación de servidores de automatización, vea Crear servidores de Automatización.

Vea también

Servers (Colección: propiedades, métodos y eventos) | File (Objeto) | Files (Colección) | Project (Objeto) | Projects (Colección) | ProjectHook (Objeto) | Server (Objeto)


Servers (Colección: propiedades, métodos y eventos)

Propiedades

Count

Métodos

Item

Vea también

Servers (Colección) | File (Objeto) | Files (Colección) | Project (Objeto) | Projects (Colección) | ProjectHook (Objeto) | Server (Objeto)


Session (Objeto)

Crea un objeto personalizado, definido por el usuario, que administra su propia sesión de datos.

DEFINE CLASS ClassName1 AS Session

Observaciones

Sólo puede crear esta clase personalizada definida por el usuario con el comando DEFINE CLASS. Sin embargo, puede agregar este objeto a un formulario o a otro contenedor por medio de programación.

Las clases personalizadas definidas por el usuario son clases con propiedades, eventos y métodos, pero sin representación visual. Las reglas generales que se aplican a la definición de otros tipos de clases se aplican a la definición de clases personalizadas. Utilice el objeto Session para una administración eficaz de la memoria y para garantizar un comportamiento seguro de varias instancias de objeto en aplicaciones multinivel.

Vea Programación orientada a objetos para obtener más información acerca de la creación de objetos personalizados como clases no visuales.

A partir de Visual FoxPro 7, los valores predeterminados de SAFETY, EXCLUSIVE y TALK son los siguientes:

Valor | Valor
EXCLUSIVE | OFF
SAFETY | OFF
TALK | OFF

Cuando el objeto Session representa un servidor COM, todas las propiedades intrínsecas se tratan como privadas.

Vea también

Session (Objeto: propiedades, métodos y eventos) | DEFINE CLASS | Programación orientada a objetos | Agregar objetos definidos por el usuario a un formulario | Comandos que tienen como alcance una sesión de datos


Session (Objeto: propiedades, métodos y eventos)

Eventos

Destroy Error Init

Métodos

AddProperty | ReadExpression | ReadMethod
ResetToDefault | WriteExpression (Método) |

Propiedades

Application | BaseClass | Class
ClassLibrary | Comment | DataSession
DataSessionID | Name | Parent
ParentClass | Tag |

Vea también

Session (Objeto) | DEFINE CLASS | Programación orientada a objetos | Agregar objetos definidos por el usuario a un formulario | Comandos que tienen como alcance una sesión de datos


Shape (Control)

Crea un control Shape que muestra un cuadrado, un círculo o una elipse.

Shape

Observaciones

Un control Shape es un control gráfico que muestra un cuadro, un círculo o una elipse y que no puede cambiarse directamente. Sin embargo, puesto que un control Shape tiene una amplio conjunto de propiedades, eventos y métodos en común con otros controles, puede responder a eventos y cambiarse dinámicamente en tiempo de ejecución.

La propiedad Curvature determina la forma que se muestra y puede variar entre 0 y 99. 0 especifica ninguna curvatura y crea esquinas cuadradas, 99 especifica una curvatura máxima, y crea círculos y elipses.

Para obtener más información acerca de la creación de formas, vea Diseñador de formularios y Utilizar controles.

Vea también

Shape (Control: propiedades, métodos y eventos) | CREATE CLASS | CREATE FORM | DEFINE CLASS


Shape (Control: propiedades, métodos y eventos)

Propiedades

Application | BackColor | BackStyle
BaseClass | BorderColor | BorderStyle
BorderWidth | Class | ClassLibrary
ColorScheme | ColorSource | Comment
Curvature | DragIcon | DragMode
DrawMode | Enabled | FillColor
FillStyle | Height | HelpContextID
Left | MouseIcon | MousePointer
Name | OLEDragMode | OLEDragPicture
OLEDropEffects | OLEDropHasData (Propiedad) | OLEDropMode
Parent | ParentClass | SpecialEffect
Tag | ToolTipText | Top
Visible | WhatsThisHelpID | Width

Eventos

Click | DblClick | Destroy
DragDrop | DragOver | Error
Init | MiddleClick (Evento) | MouseDown
MouseEnter | MouseLeave | MouseMove
MouseUp | MouseWheel | OLECompleteDrag
OLEDragDrop | OLEDragOver | OLEGiveFeedBack
OLESetData | OLEStartDrag | RightClick
UIEnable |  |

Métodos

AddProperty | CloneObject | Drag
Move | OLEDrag | ReadExpression
ReadMethod | Refresh | ResetToDefault
SaveAsClass | ShowWhatsThis | WriteExpression
WriteMethod | ZOrder |

Ejemplo

El ejemplo siguiente muestra cómo puede utilizarse el control Shape para mostrar un círculo, una elipse o un cuadrado en un formulario.

Se crea un formulario y se incluyen varios botones de opción y un botón de comando. Al hacer clic en uno de los botones de opción se muestra la forma correspondiente en el formulario. La propiedad Visible se establece en el valor verdadero (.T.) para mostrar una forma y en el valor falso (.F.) para ocultar la forma antes de que se muestre otra forma distinta. Las propiedades Height, Width y Curvature de cada forma determinan el tipo de forma que se crea (círculo, elipse o cuadrado).

frmMyForm = CREATEOBJECT('Form')  && Crea un formulario
frmMyForm.Closable = .F.  && Deactiva el botón cerrar ventana
frmMyForm.AddObject('cmdCommand1','cmdMyCmndBtn')  && Agrega Command button
frmMyForm.AddObject('opgOptionGroup1','opgMyOptGrp') && Agrega Option Group
frmMyForm.AddObject('shpCircle1','shpMyCircle')  && Agrega forma Circle
frmMyForm.AddObject('shpEllipse1','shpMyEllipse')  && Agrega forma Ellipse
frmMyForm.AddObject('shpSquare','shpMySquare')  && Agrega forma Box
frmMyForm.cmdCommand1.Visible =.T.  && "Quit" Command button visible
frmMyForm.opgOptionGroup1.Buttons(1).Caption = "\<Circle"
frmMyForm.opgOptionGroup1.Buttons(2).Caption = "\<Ellipse"
frmMyForm.opgOptionGroup1.Buttons(3).Caption = "\<Square"
frmMyForm.opgOptionGroup1.SetAll("Width", 100) && Ancho para Option group
frmMyForm.opgOptionGroup1.Visible = .T.  && Option Group visible
frmMyForm.opgOptionGroup1.Click  && Muesta forma circle
frmMyForm.SHOW  && Muesta el formulario
READ EVENTS  && Inicia procesamiento de eventos
DEFINE CLASS opgMyOptGrp AS OptionGroup  && Crea un Option Group
ButtonCount = 3  && Tres botones Option
Top = 10
Left = 10
Height = 75
Width = 100
PROCEDURE Click
ThisForm.shpCircle1.Visible = .F.  && Oculta forma circle
ThisForm.shpEllipse1.Visible = .F.  && Oculta forma ellipse
ThisForm.shpSquare.Visible = .F.  && Oculta forma square
DO CASE
CASE ThisForm.opgOptionGroup1.Value = 1
ThisForm.shpCircle1.Visible = .T. && Muesta forma circle
CASE ThisForm.opgOptionGroup1.Value = 2
ThisForm.shpEllipse1.Visible = .T.  && Muestra forma ellipse
CASE ThisForm.opgOptionGroup1.Value = 3
ThisForm.shpSquare.Visible = .T.  && Muestra forma square
ENDCASE
ENDDEFINE
DEFINE CLASS cmdMyCmndBtn AS CommandButton  && Crea Command button
Caption = '\<Quit'  && Título para Command button
Cancel = .T.  && Predeterminado Cancel Command button (Esc)
Left = 125  && Columna para Command button
Top = 210  && Fila para Command button
Height = 25  && Altura para Command button
PROCEDURE Click
CLEAR EVENTS  && Detiene procesamiento de eventos, cierra formulario
ENDDEFINE
DEFINE CLASS shpMyCircle AS SHAPE  && Crea circle
Top = 10
Left = 200
Width = 100
Height = 100
Curvature = 99
BackColor = RGB(255,0,0)  && Red
ENDDEFINE
DEFINE CLASS shpMyEllipse AS SHAPE  && Crea ellipse
Top = 35
Left = 200
Width = 100
Height = 50
Curvature = 99
BackColor = RGB(0,128,0)  && Green
ENDDEFINE
DEFINE CLASS shpMySquare AS SHAPE  && Crea square
Top = 10
Left = 200
Width = 100
Height = 100
Curvature = 0
BackColor = RGB(0,0,255)  && Blue
ENDDEFINE

Vea también

Shape (Control) | CREATE CLASS | CREATE FORM | DEFINE CLASS


Spinner (Control)

Crea un control Spinner.

Spinner

Observaciones

Un control Spinner permite elegir entre un intervalo de valores numéricos al 'desplazarse' por los valores cuando hace clic en las flechas arriba y abajo del control numérico, o escribe un valor en el cuadro del control.

Las propiedades KeyBoardHighValue y SpinnerHighValue especifican los valores numéricos máximos que pueden escribirse con el teclado en el cuadro del control numérico o haciendo clic en los botones de flecha del control.

Las propiedades KeyBoardLowValue y SpinnerLowValue especifican los valores numéricos mínimos que pueden escribirse con el teclado en el cuadro del control numérico o haciendo clic en los botones del control.

Para obtener más información acerca de la creación de controles numéricos, vea Diseñador de formularios y Utilizar controles.

Vea también

Spinner (Control: propiedades, métodos y eventos) | CREATE CLASS | CREATE FORM | DEFINE CLASS


Spinner (Control: propiedades, métodos y eventos)

Propiedades

Alignment | Application | BackColor
BaseClass | BorderColor | BorderStyle
Class | ClassLibrary | ColorScheme
ColorSource | Comment | ControlSource
DisabledBackColor | DisabledForeColor | DragIcon
DragMode | Enabled | FontBold
FontCharSet | FontCondense | FontExtend
FontItalic | FontName | FontOutline
FontShadow | FontSize | FontStrikeThru
FontUnderline | ForeColor | Format
Height | HelpContextID | HideSelection
Increment | InputMask | KeyboardHighValue
KeyboardLowValue | Left | Margin
MouseIcon | MousePointer | Name
NullDisplay | OLEDragMode | OLEDragPicture
OLEDropEffects | OLEDropHasData | OLEDropMode
OLEDropTextInsertion | Parent | ParentClass
ReadOnly | RightToLeft | SelectedBackColor
SelectedForeColor | SelectOnEntry | SelLength
SelStart | SelText | SpecialEffect
SpinnerHighValue | SpinnerLowValue | StatusBarText
TabIndex | TabStop | Tag
TerminateRead | Text | Themes
ToolTipText | Top | Value
Visible | WhatsThisHelpID | Width

Eventos

Click | DblClick | Destroy
DownClick | DragDrop | DragOver
Error | ErrorMessage | GotFocus
Init | InteractiveChange | KeyPress
LostFocus | Message | MiddleClick (Evento)
MouseDown | MouseEnter | MouseLeave
MouseMove | MouseUp | MouseWheel
OLECompleteDrag | OLEDragDrop | OLEDragOver
OLEGiveFeedBack | OLESetData | OLEStartDrag
ProgrammaticChange | RangeHigh | RangeLow
RightClick | UIEnable | UpClick
Valid | When |

Métodos

AddProperty | CloneObject | Drag
Move | OLEDrag | ReadExpression
ReadMethod | Refresh | ResetToDefault
SaveAsClass | SetFocus | ShowWhatsThis
WriteExpression | WriteMethod | ZOrder

Vea también

Spinner (Control) | CREATE CLASS | CREATE FORM | DEFINE CLASS


Tables (Colección) (XMLAdapter)

La colección Tables es un Objeto XMLAdapter que contiene uno o más Objetos XMLTable y describe a Cursores XML como cursores VisualFoxpro, junto con cualquier información relacionada. Para crear un nuevo Objeto XMLTable y añadirlo a la Colección de Tables, o rellenarla con una o más tablas, use los métodos XMLAdapter LoadXML, AddTableSchema, ó Attach.

XMLAdapter.Tables

Vea también

Objectos, Colecciones y Clases | XMLAdapter (Objeto: propiedades, métodos y eventos) | XMLTable (Clase) | Método AddTableSchema

Se aplica a: Clase XMLAdapter


TextBox (Control)

Crea un cuadro de texto.

TextBox

Observaciones

Crea un cuadro de texto en el que puede modificar el contenido de una variable de memoria, un elemento de matriz o un campo. Todas las características estándar de edición de Visual FoxPro, como cortar, copiar y pegar, están disponibles en el cuadro de texto. Si se utiliza el cuadro de texto para modificar un valor de fecha o de fecha y hora, y se ha seleccionado todo el valor, presione + o - si desea aumentar o disminuir el valor para un día.

Utilice las propiedades InputMask y Format para especificar cómo se escriben y muestran valores en el cuadro de texto.

Para obtener más información acerca de la creación de cuadros de texto, vea Diseñador de formularios y Utilizar controles.

Vea también

TextBox (Control: propiedades, métodos y eventos) | CREATE CLASS | CREATE FORM | DEFINE CLASS


TextBox (Control: propiedades, métodos y eventos)

Propiedades

Alignment | Application | BackColor
BackStyle | BaseClass | BorderColor (Propiedad)
BorderStyle | Century | Class
ClassLibrary | ColorScheme | ColorSource
Comment | ControlSource | DateFormat
DateMark | DisabledBackColor | DisabledForeColor
DragIcon | DragMode | Enabled
EnableHyperlinks | FontBold | FontCharSet
FontCondense | FontExtend | FontItalic
FontName | FontOutline | FontShadow
FontSize | FontStrikeThru | FontUnderline
ForeColor | Format | Height
HelpContextID | HideSelection | Hours
IMEMode | InputMask | IntegralHeight
Left | Margin | MaxLength
MemoWindow | MouseIcon | MousePointer
Name | NullDisplay | OLEDragMode
OLEDragPicture | OLEDropEffects | OLEDropHasData
OLEDropMode | OLEDropTextInsertion | OpenWindow
Parent | ParentClass | PasswordChar
ReadOnly | RightToLeft | Seconds
SelectedBackColor | SelectedForeColor | SelectOnEntry
SelLength | SelStart | SelText
SpecialEffect | StatusBarText | StrictDateEntry
Style | TabIndex | TabStop
Tag | TerminateRead | Text
Themes | ToolTipText | Top
Value | Visible | WhatsThisHelpID
Width |  |

Eventos

Click | DblClick | Destroy
DragDrop | DragOver | Error
ErrorMessage | GotFocus | Init
InteractiveChange | KeyPress | LostFocus
Message | MiddleClick | MouseDown
MouseEnter | MouseLeave | MouseMove
MouseUp | MouseWheel | OLECompleteDrag
OLEDragDrop | OLEDragOver | OLEGiveFeedBack
OLESetData | OLEStartDrag | ProgrammaticChange
RangeHigh | RangeLow | RightClick
UIEnable | Valid | When

Métodos

AddProperty | CloneObject | Drag
Move | OLEDrag | ReadExpression
ReadMethod | Refresh | ResetToDefault
SaveAsClass | SetFocus | ShowWhatsThis
WriteExpression | WriteMethod | ZOrder

Vea también

TextBox (Control) | CREATE CLASS | CREATE FORM | DEFINE CLASS | Diseñador de formularios | Utilizar controles


THIS (Referencia de objeto)

Proporciona una referencia al objeto actual en el código de evento o en la definición de clase.

THIS.PropertyName | ObjectName

Parámetros

PropertyName
Especifica la propiedad que va a establecer u obtener para el objeto.
ObjectName
Especifica un objeto de la clase.

Observaciones

THIS ofrece una forma muy conveniente para hacer referencia al objeto actual mientras escribe programas que controlan eventos en un formulario. Por ejemplo, este programa Click Event para un botón de comando establece que el título del botón sea la hora actual:

this.caption = time()

La utilización de THIS en lugar de hacer referencia explícitamente al objeto actual por su nombre (por ejemplo, thisform.command1.caption) hace que el código de programa pueda alternarse entre objetos, porque evita el nombre del objeto y encapsula automáticamente la clase primaria del objeto.

THIS permite hacer referencia a una propiedad o un objeto de una definición de clase. Los métodos de un bloque de definición de clase pueden utilizar THIS para especificar una propiedad o un objeto que existirá cuando se cree la clase.

Puesto que múltiples instancias de objetos comparten el mismo código de método, THIS siempre hace referencia a la instancia en la que está ejecutándose el código. Si hay múltiples instancias de un objeto, y se llama a uno de los métodos del objeto, THIS hace referencia al objeto correcto.

Ejemplo

El ejemplo siguiente crea una subclase llamada MyForm, basada en la clase Form. Se crea un método llamado ChangeBackColor. ChangeBackColor utiliza THIS para hacer referencia a MyForm.

DEFINE CLASS MyForm AS FORM
CAPTION = "This Form"
HEIGHT = 15
WIDTH = 20
PROCEDURE ChangeBackColor
PARAMETER NewColor
THIS.BACKCOLOR = NewColor
ENDPROC
ENDDEFINE

Vea también

THISFORM | THISFORMSET | BackColor, ForeColor (Propiedades) | DEFINE CLASS


THISFORM (Referencia de objeto)

Proporciona una referencia al formulario actual en el código de evento o en la definición de clase del formulario.

THISFORM.PropertyName | ObjectName

Parámetros

PropertyName
Especifica una propiedad para el formulario.
ObjectName
Especifica un objeto del formulario.

Observaciones

THISFORM proporciona una forma muy conveniente de hacer referencia al formulario actual mientras escribe programas que controlan eventos en un formulario. Por ejemplo, este programa Click Event para un botón de comando establece que el título del botón sea la hora actual:

thisform.command1.caption = time()

La utilización de THISFORM en lugar de hacer referencia explícitamente al formulario actual mediante su nombre (por ejemplo, form1.command1.caption) hace que el código de programa sea portátil entre formularios.

Durante la creación de definiciones de clase, THISFORM también proporciona medios de hacer referencia al formulario actual dentro de un método. THISFORM permite hacer referencia a un objeto en el formulario o en la propiedad sin tener que utilizar varias propiedades Parent.

Vea también

THIS | THISFORMSET | Click (Evento)


THISFORMSET (Referencia de objeto)

Proporciona una referencia al conjunto actual de formularios en el código de evento o en la definición de clase.

THISFORMSET.PropertyName | ObjectName

Parámetros

PropertyName
Especifica una propiedad para el FormSet.
ObjectName
Especifica un objeto del FormSet.

Observaciones

THISFORMSET proporciona una forma conveniente de hacer referencia al conjunto de formularios actual cuando se escriban programas de control de eventos en un formulario. La utilización de THISFORMSET, en lugar de hacer referencia explícitamente al formulario actual por su nombre (por ejemplo, form1.command1.caption), hace que el código de programa pueda desplazarse entre formularios.

Al crear definiciones de clase, THISFORMSET también proporciona una forma de hacer referencia al conjunto de formularios actual dentro de un método. THISFORMSET permite hacer referencia a un objeto o una propiedad del conjunto de formularios sin utilizar múltiples propiedades Parent.

Vea también

THIS | THISFORM | Crear una referencia de objeto | Definición de clases mediante programación


Timer (Control)

Crea un control Timer que puede ejecutar códigos a intervalos periódicos.

Timer

Observaciones

El control Timer, es invisible para el usuario, resulta útil para procesos en segundo plano. Suele emplearse para comprobar el reloj interno del sistema con el fin de determinar si es hora de ejecutar un programa o una aplicación.

Si un control tiene la propiedad Enabled establecida en Verdadero (.T.) e inmediatamente se establece esta propiedad a Falso (.F.) después de una única ejecución puede generar múltiples eventos Timer. Esto ocurre cuando la propiedad Interval es menor o aproximadamente igual al tiempo de ejecución para el evento Timer. Puede evitarse aumentando el valor de la propiedad Interval o disminuyendo el tiempo de ejecución del evento Timer.

Para obtener más información acerca de la creación de temporizadores, vea Utilizar controles.

Vea también

Timer (Control: propiedades, métodos y eventos) | CREATE CLASS | CREATE FORM | DEFINE CLASS | Diseñador de formularios


Timer (Control: propiedades, métodos y eventos)

Propiedades

Application | BaseClass | Class
ClassLibrary | Comment | Enabled
Height | Interval | Left
Name | Parent | ParentClass
Tag | Top | Width

Eventos

Destroy | Error | Init
Timer |  |

Métodos

AddProperty | CloneObject | ReadExpression
ReadMethod | Reset | ResetToDefault
SaveAsClass | WriteExpression | WriteMethod

Vea también

Timer (Control) | CREATE CLASS | CREATE FORM | DEFINE CLASS | Diseñador de formularios


ToolBar (Objeto)

Crea una barra de herramientas personalizada.

ToolBar

Observaciones

Utilice el objeto ToolBar para crear sus propias barras de herramientas para sus aplicaciones.

La lista siguiente describe las propiedades de una barra de herramientas personalizada:

  • Las barras de herramientas siempre son visibles.
  • Las barras de herramientas se acoplan automáticamente cuando se mueven a cualquiera de los bordes de la ventana principal de Visual FoxPro.
  • Cuando las barras de herramientas no están acopladas, tienen una barra de título de media altura.
  • Cuando se cambia el tamaño de una barra de herramientas, los controles se organizan para ajustarse al nuevo tamaño.
  • Es posible mover una barra de herramientas si hace clic en cualquier área de la barra que no sea un control y la arrastra.
  • Muchos controles situados en la barra de herramientas no reciben el enfoque cuando se seleccionan.
  • Las teclas de acceso de los controles existentes en una barra de herramientas se desactivan.

Aunque se puede colocar cualquier control en una barra de herramientas, es posible que algunos controles, como los cuadros de lista, sean demasiado grandes para encajar correctamente en una barra de herramientas acoplada. Estos controles se pueden eliminar de la barra de herramientas mediante programación cuando está acoplada y sustituirlos con una versión más pequeña del mismo control o de otro distinto.

Para obtener más información acerca de la creación de barras de herramientas, vea Diseñar menús y barras de herramientas.

Ejemplo

El siguiente ejemplo muestra cómo puede crear una barra de herramientas a partir de la clase Toolbar. Visual FoxPro reconfigura los botones, cuando la barra de herramientas es redimensionada. Cuando el objeto ToolBar es creado, Visual FoxPro automáticamente coloca los controles de izquierda a derecha en el orden en que se van agregando a la definición de clases ignorando las propiedades Top y Left.

PUBLIC tbrDesktop
tbrDesktop = CREATEOBJ('mytoolbar')
tbrDesktop.SHOW

DEFINE CLASS myToolBar  AS Toolbar
ADD OBJECT btnBold  AS CommandButton
ADD OBJECT sep1      AS Separator
ADD OBJECT btnItalics AS CommandButton

btnBold.HEIGHT = 20
btnBold.WIDTH = 50
btnBold.Caption = "Bold"
btnItalics.HEIGHT = 20
btnItalics.WIDTH = 50
btnItalics.Caption = "Italic"
btnItalics.FontBold = .F.

LEFT   = 1
TOP = 1
WIDTH = 25

CAPTION = "Desktop Attributes"

PROCEDURE Activate
this.btnBold.FontBold = _SCREEN.FONTBOLD
this.btnItalics.FontItalic = _SCREEN.FONTITALIC
ENDPROC

PROCEDURE btnBold.CLICK
_SCREEN.FONTBOLD = !_SCREEN.FONTBOLD
This.FontBold =_SCREEN.FONTBOLD
ENDPROC

PROCEDURE btnItalics.CLICK
_SCREEN.FONTITALIC = !_SCREEN.FONTITALIC
This.FontItalic = _SCREEN.FONTITALIC
ENDPROC
ENDDEFINE

Vea también

ToolBar (Objeto: propiedades, métodos y eventos) | CREATE CLASS | CREATE FORM | DEFINE CLASS | Separator (Objeto)


ToolBar (Objeto: propiedades, métodos y eventos)

Propiedades

ActiveControl | Application | BackColor
BaseClass | Caption | Class
ClassLibrary | Comment | ColorSource
ControlBox | ControlCount | Controls
DataSession | DataSessionID | Docked
DockPosition | Enabled | ForeColor
Height | HelpContextID | HWnd
KeyPreview | Left | LockScreen
MouseIcon | MousePointer | Movable
Name | Objects | OLEDragMode
OLEDragPicture | OLEDropEffects | OLEDropHasData
OLEDropMode | Parent | ParentClass
ScaleMode | ShowTips | ShowWindow
Sizable | Tag | Themes
Top | Visible | WhatsThisHelpID
Width |  |

Eventos

Activate | AfterDock | BeforeDock
Click | DblClick | Deactivate
Destroy | DragDrop | DragOver
Error | Init | MiddleClick
MouseDown | MouseMove | MouseUp
MouseWheel | Moved | OLECompleteDrag
OLEDragDrop | OLEDragOver | OLEGiveFeedBack
OLESetData | OLEStartDrag | Paint
Resize | RightClick | UnDock

Métodos

AddObject | AddProperty | CloneObject
Dock | Hide | Move
NewObject | OLEDrag | ReadExpression
ReadMethod | Refresh | Release
RemoveObject | ResetToDefault | SaveAsClass
SetAll | Show | ShowWhatsThis
WriteExpression | ZOrder |

Vea también

ToolBar (Objeto) | CREATE CLASS | CREATE FORM | DEFINE CLASS | Separator (Objeto) | Objects (Colección)


Clase XMLAdapter

XMLAdapter es una clase de "doble-sentido". Usted puede importar XML y su esquema contenido para crear tablas, o puede usted crear y generar XML desde tablas.

Un objecto XMLAdapter almacena referencias de objectos a nodos del Modelo de Objeto de Documento (DOM) y esquemas XML. No almacena información del esquema actual o su contenido. Un objecto XMLAdapter contiene una colección de Tablas que contienen uno o más objetos XMLTable y describen XML como cursores de Visual FoxPro junto con cualquier información relacionada. Cada objeto XMLTable también puede contener un objeto XMLTable hijo, y, como máximo, una colección de campos con uno o más objetos XMLField.

Nota La clase XMLAdapter requiere el Service Pack 1 (SP1) de Microsoft XML Core Services (MSXML) 4.0 o superior.

Usando la clase XMLAdapter, puede realizar las siguientes tareas:

  • Interpretar los siguientes formatos de esquema cuando usted utilice los métodos XMLAdapter LoadXML y Attach.:
    • W3C XML Schemas (XS), W3C XML Schemas (XS) como los utilizados con DataSets de .NET y SQL-XML
    • Microsoft XML Data Reduced Schema (XDR) como el implementado por SQL-XML
    • Esquemas de Recordset de ADO
      Nota El método XMLAdapter LoadXML podría no interpretar correctamente otros formatos de esquemas XML como los producidos por otros productos.
  • Recuperar XML y su esquema asociado de una fuente de XML. XMLAdapter factoriza el esquema contenido en un objeto XMLTable y sus correspondientes objetos XMLField utilizando los métodos XMLAdapter LoadXML o Attach.
  • Crear un cursor basado en el esquema y poblarlo con datos representados por un objeto XMLTable cuando utilice el método XMLTable ToCursor.
  • Representar cambios desde un DiffGram de .NET para tablas locales o remotas cuando usted utilice el método XMLTable ApplyDiffgram.
  • Agregar uno o más objetos XMLTable a la colección de XMLAdapter Tables o especificar que los métodos XMLAdapter LoadXML, Attach, o AddTableSchema lo hagan por usted.
  • Utilizar el método XMLAdapter ToXML para generar un documento XML en formato de esquema W3C XML de uno o más cursores o tablas referenciadas por el objeto XMLAdapter.
XMLAdapter

Comentarios

Si usted utiliza un objeto XMLAdapter para convertir esquema XDR a esquema XSD, usted deberá cambiar la propiedad XMLAdapter XMLNamespace; en otro caso, el parser de XML no podrá recargar el XML. El siguientes ejemplo ilustra este escenario:

TEXT TO cXML NOSHOW
<xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'
xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882'
xmlns:rs='urn:schemas-microsoft-com:rowset'
xmlns:z='#RowsetSchema'>
<s:Schema id='RowsetSchema'>
<s:ElementType name='row' content='eltOnly'>
<s:AttributeType name='xmlfield' rs:number='1'
rs:writeunknown='true' rs:nullable='true'>
<s:datatype dt:type='number' rs:dbtype='currency' dt:maxLength='8'
rs:scale='4' rs:precision='6' />
</s:AttributeType>
<s:extends type='rs:rowbase'/>
</s:ElementType>
</s:Schema>
<rs:data>
<z:row xmlfield='12.12'/>
</rs:data>
</xml>
ENDTEXT
CLOSE DATABASES ALL
CLEAR
LOCAL oXMLAdapter as XMLAdapter
oXMLAdapter = NEWOBJECT('XMLAdapter')
oXMLadapter.LoadXML(cXML)
IF oXMLAdapter.Tables.Item(1).Fields.Item(1).DataType <> "Y" THEN
? 'Failed'
ELSE
oXMLAdapter.Tables.Item(1).ToCursor()
oXMLAdapter.XMLNamespace=""
oXMLAdapter.ReleaseXML(.F.)
oXMLAdapter.XMLSchemaLocation='c:\myxmlfile.xsd'
oXMLAdapter.ToXML('c:\myxmlfile.xml',,.T.)
oXMLadapter2 = NEWOBJECT('xmladapter')
oXMLAdapter2.XMLSchemaLocation='c:\myxmlfile.xsd'
oXMLAdapter2.LoadXML('c:\myxmlfile.xml',.T.,.T.)
ENDIF

Cuando el schema no exista o no este disponible, usted debe especificar un esquema que Visual FoxPro pueda usar, ajustando la propiedad XMLAdapter XMLSchemaLocation. Debe especificar esta propiedad antes de llamar al método LoadXML. Cuando Visual FoxPro ejecuta LoadXML, Visual FoxPro busca el esquema en el siguiente orden:

  • Esquema inline
  • Esquema externo especificado en el documento XML
  • Equema especificado en la propiedad XMLSchemaLocation

El siguiente código crea un objeto XMLAdapter con una colección Tables que permanecen vacias hasta que usted cargue un XML válido en el objeto XMLAdapter:

oMyAdapter=CREATEOBJECT("xmladapter")

La informacion sobre XML y esquema XML que recupere utilizando el método XMLAdapter LoadXML permanecen en memoria hasta que son reemplazados por una llamada ulterior a LoadXML o hasta que sean especificamente liberados cuando llame al método XMLAdapter ReleaseXML.

Tablas Anidadas La siguiente tabla describe como XMLAdapter trata las tablas anidadas como tablas individuales o como una sola tabla dependiendo de la fuente de XML.

Fuente XML | Descripción
DataSet ADO.NET | XMLAdapter considera cada tabla anidada como una tabla separada, que puede convertirse a un cursor de Visual FoxPro. Cuando el schema XML es analizado, los métodos XMLAdapter LoadXML y Attach crean un objeto XMLTable individual para cada tabla anidada y la agregan a la colección Tables. Entonces, puede utilizar los métodos XMLTable ToCursor, ChangesToCursor, y ApplyDiffgram para obtener datos para cada tabla.
SQL XML XMLAdapter considera cada tabla anidada como inseparable de la tabla padre. Cuando los datos se recupera, el resultado final de la operación de union entre estas tablas se representa como un único resultado. Si existen múltiples niveles de anidamiento, como por ejemplo una tabla hija conteniendo una tabla hija y así sucesivamente, este resultado único contiene los datos de la operación de unión entre todas las tablas en la jerarquía.

Los métodos XMLAdapter LoadXML y Attach crean objetos XMLTable para todas las tablas. Sin embargo, solo el objeto XMLTable para la tabla padre en la cima de la jerarquía se añade a la colección Tables. Este objeto XMLTable representa a la tabla padre y proporciona acceso al resultado final y único de la operación de unión a través del método XMLTable ToCursor. Los objetos XMLTable para tablas hijas están ligados a sus padres a través de las propiedades ChildTable y ParentTable. Sin embargo, no hay manera de obtener datos de las tablas individuales en la cadena.

Vea También

Objectos, Colecciones y Clases | XMLAdapter (Objeto: propiedades, métodos y eventos) | Tables (XMLAdapter) (Colección) | Clase XMLTable | Fields (XMLTable) (Colección) | Clase XMLField | Método LoadXML | Método Attach | Método ToCursor | Método ReleaseXML | Método ApplyDiffgram | Propiedad XMLSchemaLocation


XMLAdapter (Objeto: propiedades, métodos y eventos)

Objetos y colecciones

Tables (Colección)

Propiedades

DisableEncode | ForceCloseTag | FormattedOutput
IsDiffGram | IsLoaded | IXMLDomElement
MapN19_4ToCurrency | NoCpTrans | PreserveWhiteSpace
RespectCursorCP | SOM | Unicode
UTF8Encoded | WrapCharInCDATA | WrapMemoInCDATA
XMLConstraints | XMLName | XMLNamespace
XMLPrefix | XMLSchemaLocation |

Métodos

AddTableSchema | Attach | LoadXML
ReleaseXML | ToXML |

Vea también

Clase XMLAdapter


XMLField (Clase)

En un Objeto XMLTable, la colección Fields contiene Objetos XMLField. Cada Objeto XMLField representa la estructura de un campo que es significativo para Visual FoxPro.

La información en cada Objeto XMLField proporciona los detalles necesarios, como el tipo correcto de dato, tamaño y otros, para crear cada campo en el Cursor. Cuando Visual FoxPro genera un XML a partir de un Cursor, el Objeto XMLField ofrece información de cómo crear el Esquema y Documento XML.

XMLField

Vea también

Objectos, Colecciones y Clases | XMLField (Objeto: propiedades, métodos y eventos) | XMLTable (Clase) | Fields (XMLTable) (Colección)


XMLField (Objeto: propiedades, métodos y eventos)

Propiedades

Alias | DataType | DisableEncode
FractionDigits | IsAttribute | IsBase64
IsBinary | IsNull | Keyfield
MaxLength | NoCpTrans | Unicode
WrapInCDATA | XMLName | XMLTable
XMLType | XSDfractionDigits | XSDmaxLength
XSDtotalDigits | XSDtype |

Vea también

XMLField (Clase)


XMLTable (Clase)

La colección de tablas en un objeto XMLAdapter contiene objetos XMLTable y describe XML como cursores Visual FoxPro junto con cualquier información relacional. Cada objeto XMLTable puede además contener un XMLTable secundario y por lo menos una colección Fields que contenga objetos XMLField.

XMLTable

Observaciones

Para recuperar XML y el factor XML Schema contenido dentro de un XMLTable y sus objetos correspondientes XMLField, utilice los métodos XMLAdapter LoadXML o Attach. Puede llenar un cursor con los datos representados por el objeto XMLTable utilizando el método XMLTable ToCursor. Puede agregar manualmente un objeto XMLTable a una colección XMLAdapter Tables o puede utilizar el método XMLAdapter AddTableSchema para realizar la misma tarea.

Vea también

Objectos, Colecciones y Clases | XMLTable (Objeto: propiedades, métodos, eventos) | XMLAdapter (Clase) | Fields (XMLTable) (Colección) | XMLField (Clase) | LoadXML (Método) | Attach (Método) | ToCursor (Método) | Tables (XMLAdapter) (Colección) | AddTableSchema (Método)


XMLTable (Objeto: propiedades, métodos y eventos)

Objetos y colecciones

Fields (Colecciön)

Propiedades

Alias | ChildTable | ParentTable
XMLAdapter | XMLConstraints | XMLName
XMLNamespace | XMLPrefix |

Métodos

ApplyDiffgram ChangesToCursor ToCursor

Vea también

XMLTable (Clase)


Foundation Classes de Visual FoxPro (A-Z)

Foundation Classes

Acceso a INI (Foundation Class)

Acceso al registro (Foundation Class)

Administrador de sesiones de datos (Foundation Class)

Barra de herramientas de desplazamiento (Foundation Class)

Barra de herramientas del sistema (Foundation Class)

Barra de herramientas Formato (Foundation Class)

Biblioteca de cadenas (Foundation Class)

Biblioteca de tipos (Foundation Class)

Botón Aceptar (Foundation Class)

Botón Ayuda (Foundation Class)

Botón Buscar (Foundation Class)

Botón Cancelar (Foundation Class)

Botón del cuadro de diálogo Filtro (Foundation Class)

Botón del cuadro de diálogo Ir a (Foundation Class)

Botón del cuadro de diálogo Ordenar (Foundation Class)

Botón Ejecutar formulario (Foundation Class)

Botón Encontrar (Foundation Class)

Botón Hipervínculo (Foundation Class)

Botón Iniciar (Foundation Class)

Botones Buscar (Buscar siguiente) (Foundation Class)

Botones de desplazamiento en datos (Foundation Class)

Botones de desplazamiento simple (Foundation Class)

Botones de desplazamiento simple con imágenes (Foundation Class)

Botones de desplazamiento VCR con imágenes (Foundation Class)

Botones de edición de datos (Foundation Class)

Botones de edición simple (Foundation Class)

Botones Enviar correo (Foundation Class)

Botones VCR (Foundation Class)

Buscar archivos o texto (Foundation Class)

Calendario ActiveX (Foundation Class)

Carpetas comunes del sistema (Foundation Class)

Clase Menú contextual (Foundation Class)

Conmutador sin conexión (Foundation Class)

Control Output (Foundation Class)

Control Web Browser (Foundation Class)

Controlador de cuadro de mensaje (Foundation Class)

Controlador de matrices (Foundation Class)

Controlador de ventana (Foundation Class)

Controles RTF (Foundation Class)

Cookies (Foundation Class)

Cronómetro (Foundation Class)

Cronómetro adaptado a trazas (Foundation Class)

Crypto API (Foundation Class)

Cuadro combinado Búsqueda (Foundation Class)

Cuadro combinado de valores diferentes (Foundation Class)

Cuadro combinado Fuente (Foundation Class)

Cuadro combinado Tamaño de fuente (Foundation Class)

Cuadro combinado dirección URL (Foundation Class)

Cuadro de diálogo Abrir dirección URL (Foundation Class)

Cuadro de diálogo Acerca de (Foundation Class)

Cuadro de diálogo Buscar (Foundation Class)

Cuadro de diálogo Común (Foundation Class)

Cuadro de diálogo Contraseña (Foundation Class)

Cuadro de diálogo Expresión de filtro (Foundation Class)

Cuadro de diálogo Filtro (Foundation Class)

Cuadro de diálogo Ir a (Foundation Class)

Cuadro de diálogo Ordenar (Foundation Class)

Cuadro de diálogo Palabras clave (Foundation Class)

Cuadro de diálogo Resultados (Foundation Class)

DBF a HTML (Foundation Class)

Detector de conflictos (Foundation Class)

Efectos MouseOver (Foundation Class)

Ejecutar shell (Foundation Class)

Estado de objeto (Foundation Class)

Etiqueta Hipervínculo (Foundation Class)

Pool Manager (Foundation Class)

Expresiones regulares (Foundation Class)

Extensión SetAllX (Foundation Class)

FRX a HTML (Foundation Class)

Gráfico por registro (Foundation Class)

Imagen Hipervínculo (Foundation Class)

Localizador de elementos (Foundation Class)

Medidas del sistema (Foundation Class)

Menú contextual de desplazamiento (Foundation Class)

Objeto Buscar (Foundation Class)

Objeto Combinar correspondencia (Foundation Class)

Objeto de desplazamiento en datos (Foundation Class)

Objeto Error (Foundation Class)

Objeto Graph (Foundation Class)

Objeto Output (Foundation Class)

Objeto Resize (Foundation Class)

Objeto Sort (Foundation Class)

Obtener archivos y directorios (Foundation Class)

Pantalla de inicio (Foundation Class)

SQL Pass Through (Foundation Class)

Privilegios del usuario (Foundation Class)

QBF (Foundation Class)

Referencias cruzadas (Foundation Class)

Registro de aplicaciones (Foundation Class)

Registro ODBC (Foundation Class)

Reloj (Foundation Class)

Reproductor de sonido (Foundation Class)

Reproductor de vídeo (Foundation Class)

SCX a HTML (Foundation Class)

Selección de orden (Foundation Class)

Selección de tablas (Foundation Class)

Selección global (Foundation Class)

Selector (Foundation Class)

Selector de campos (Foundation Class)

Selector de orden (Foundation Class)

Servicios Web XML (Foundation Class)

Tabla dinámica (Foundation Class)

Termómetro (Foundation Class)

Utilidad Microsoft Agent (Foundation Class)

Validación de datos (Foundation Class)

Versión de archivo (Foundation Class)

Vista previa del informe (Foundation Class)

Servicios Web XML (Foundation Class)

Ejemplos de Foundation Classes

Agregar consultas de datos a formularios (Ejemplo)

Agregar cuadros combinados de búsqueda de datos (Ejemplo)

Agregar desplazamiento a formularios (Ejemplo)

Agregar enlaces Web a formularios (Ejemplo)

Agregar menús contextuales a objetos (Ejemplo)

Agregar ordenación y filtrado de datos a formularios (Ejemplo)

Agregar un calendario enlazado a datos (Ejemplo)

Agregar varios botones de formulario (Ejemplo)

Arrastrar y soltar en controles Treeview y Listbox (Ejemplo)

Control de errores de la aplicación (Ejemplo)

Controlar tareas de entorno de aplicación (Ejemplo)

Controlar tareas frecuentes de ventanas (Ejemplo)

Crear un explorador de Web de Visual FoxPro (Ejemplo)

Crear efectos en un control Coolbar (Ejemplo)

Crear gráficos enlazados a registros (Ejemplo)

Crear un explorador Web de Visual FoxPro (Ejemplo)

Ejecutar Automatización de Word, Excel y Graph (Ejemplo)

Formatos de datos de Arrastrar y soltar de OLE (Ejemplo)

Generar HTML (Ejemplo)

Mostrar opciones de presentación de resultados (Ejemplo)

Obtener la ubicación y el nombre del proyecto (Ejemplo)

Probar arrastrar y soltar de OLE (Ejemplo)

Probar métodos Access y Assign (Ejemplo)

Realizar el seguimiento de las actividades de un proyecto (Ejemplo)

Usar botones de edición para un formulario complejo (Ejemplo)

Usar botones de edición para un formulario sencillo (Ejemplo)

Usar control de matrices (Ejemplo)

Usar cuadros de diálogo comunes de aplicación (Ejemplo)

Utilizar cuadros de lista de selección para seleccionar datos (Ejemplo)

Usar termómetro de progreso (Ejemplo)

Utilizar los métodos Access y Assign para obtener polimorfismo (Ejemplo)


Cuadro de diálogo Acerca de (Foundation Class)

Categoría | Formularios varios
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Dialogs
Clase | _aboutbox
Clase de base | Form
Biblioteca de clases | _dialogs.vcx
Clase primaria | _form
Ejemplo | ...\Samples\Solution\Ffc\dialogs.scx

Observaciones

Esta clase es un sencilla plantilla de cuadro de diálogo Acerca de para aplicaciones personalizadas. El cuadro de diálogo incluye un botón que tiene acceso a la información del sistema a través de la clase Registry.

Para utilizarla, arrastre la clase al proyecto o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto. Al colocar la clase en un proyecto, puede elegir entre agregar la clase, crear una subclase o crear un formulario. Si elige Crear un nuevo formulario, Visual FoxPro presenta el cuadro de diálogo Abrir para que pueda especificar el nombre del formulario y, a continuación, crea y abre el formulario en el Diseñador de formularios. Especifique los valores de las etiquetas, después guarde el formulario y llámelo desde su aplicación.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Propiedad cMSINFODir | Especifica la ruta de acceso de Msinfo.exe. Valor predeterminado: ""
Método GetRegisteredCompany | Una subrutina que devuelve la compañía registrada. Para personalizarlo, substituya el valor de lblUserCorp.Caption.
Método GetRegisteredOwner | Una subrutina que devuelve el propietario registrado. Para personalizarlo, substituya el valor de lblUserName.Caption.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Calendario ActiveX (Foundation Class)

Categoría | Fecha y hora
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Data/Time
Clase | _olecalendar
Clase de base | OLEcontrol
Biblioteca de clases | _datetime.vcx
Clase primaria | _olecontrol
Ejemplo | ...\Samples\Solution\Ffc\datacal.scx

Observaciones

Esta clase utiliza el control calendario ActiveX que puede asociarse con un campo de fecha en un formulario o en otro contenedor.

Para utilizarla, coloque la clase en un proyecto o en un formulario, o desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro abre un generador para que pueda especificar el valor apropiado de Date_column. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Propiedades, eventos, métodos | Descripción
Propiedad Date_column | Especifica el campo de tipo fecha al que se va a asociar el calendario. Valor predeterminado: ""
Método RefreshDisplay | Actualiza la presentación del calendario con el valor de la columna especificada en la propiedad Date_column. Sintaxis: RefreshDisplay( ) Valor devuelto: ninguno Argumentos: ninguno

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Registro de aplicaciones (Foundation Class)

Categoría Utilidades de sistema Catálogo predeterminado Visual FoxPro Catalog\Foundation Classes\Utilities Clase _filereg Clase de base Custom Biblioteca de clases _registry.vcx Clase primaria registry Ejemplo ...\Samples\Solution\WinAPI\regfile.scx

Observaciones

Esta clase proporciona un conjunto de funciones del registro del sistema que devuelven información específica de la aplicación, como la versión y la ubicación.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro coloca la clase en el formulario. Después puede especificar los valores y proporcionar los objetos de entrada y de salida que necesite. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Método GetAppPath | Comprueba y devuelve la ruta de acceso de la aplicación asociada con una extensión concreta. Sintaxis: GetAppPath(cExtension, cExtnKey, cAppKey, lServer) Valor devuelto: GetApplication(cExtnKey, @cAppKey, lServer) Argumentos: cExtension especifica la extensión de la aplicación. cExtnKey especifica la clave del registro para la aplicación. cAppKey especifica la ruta de acceso de la aplicación. lServer especifica si la extensión es una aplicación de servidor.
Método GetLatestVersion | Devuelve la última versión de una aplicación especificada. Sintaxis: GetLatestVersion(cClass, cExtnKey, cAppKey, lServer) Valor devuelto: cExtnKey, @cAppKey, lServer Argumentos: cClass especifica la clave de la clase de la aplicación. cExtension especifica la extensión de la aplicación. cExtnKey especifica la clave del registro para la aplicación. cAppKey especifica la ruta de acceso de la aplicación. lServer especifica si es una aplicación de servidor.
Método GetApplication | Obtiene la clave de la aplicación. Sintaxis: GetApplication(cExtnKey, cAppKey, lServer) Valor devuelto: @cAppKey Argumentos: cExtension especifica la extensión de la aplicación. cExtnKey especifica la clave del registro para la aplicación. cAppKey especifica la ruta de acceso de la aplicación. lServer especifica si la extensión no es una aplicación completa.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Controlador de matrices (Foundation Class)

Categoría Utilidades de datos Catálogo predeterminado Visual FoxPro Catalog\Foundation Classes\Utilities Clase _arraylib Clase de base Custom Biblioteca de clases _utility.vcx Clase primaria _custom Ejemplo ...\Samples\Solution\Ffc\arrays.scx

Observaciones

Esta clase proporciona métodos para controlar ciertas operaciones con matrices no realizadas por las funciones para matrices de Visual FoxPro, entre las que se incluyen la inserción y eliminación de elementos concretos y el recorrido de las columnas de las matrices.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro coloca el icono de la clase en el formulario. Puede especificar los valores de las propiedades y proporcionar los objetos de entrada y de salida que necesite. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Método aColScan | Busca el valor sExpr en la columna nColumn de la matriz aSearch. Sintaxis: AcolScan(@aSearch, sExpr, nColumn, lRetRow) Valor devuelto: ninguno Argumentos: aSearch especifica la matriz que se va a examinar. sExpr especifica la expresión que se busca. nColumn especifica la columna de la matriz en la que se va a buscar sExpr. lRetRow especifica si el método devuelve el número de la fila en que se haya encontrado sExpr.
Método DelAitem | Elimina un elemento de la matriz. Sintaxis: DelAitem(@aArray, wziRow) Valor devuelto: ninguno Argumentos: aArray especifica el nombre de la matriz que se procesa. wziRow especifica el elemento que se va a eliminar.
Método InsAitem | Inserta un elemento en la matriz. InsAitem(@aArray, sContents, iRow) Valor devuelto: ninguno Argumentos: aArray especifica el nombre de la matriz que se procesa. sContents especifica el valor de cadena que se va a agregar a aArray. iRow especifica la fila en la que se va a insertar el valor de sContents.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Botón Cancelar (Foundation Class)

Categoría | Botones varios
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Buttons
Clase | _cmdCancel
Clase de base | CommandButton
Biblioteca de clases | _miscbtns.vcx
Clase primaria | _cmdOK
Ejemplo | ...\Samples\Solution\Ffc\buttons.scx

Observaciones

Esta clase libera un formulario e ignora los datos pendientes que se encontrasen en el búfer.

Para utilizarla, coloque la clase en un proyecto o en un formulario, o desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro coloca un botón en el formulario. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Reloj (Foundation Class)

Categoría | Fecha y hora
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Date/Time
Clase | _clock
Clase de base | Container
Biblioteca de clases | _datetime.vcx
Clase primaria | _container
Ejemplo | ...\Samples\Solution\Controls\Timer\clock.scx

Observaciones

Esta clase es un control de reloj simple para un formulario o contenedor.

Para utilizarla, coloque la clase en un proyecto o en un formulario, o desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro coloca el objeto en el formulario y usted puede especificar el valor apropiado de nTimeFormat. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Propiedades, eventos, métodos | Descripción
Propiedad nTimeFormat | Alterna entre los formatos cortos (0) y largos (distinto de cero) especificados en el Panel de control. Valor predeterminado: 0

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Cuadro de diálogo Común (Foundation Class)

Categoría Cuadros de diálogo del sistema Catálogo predeterminado Visual FoxPro Catalog\Foundation Classes\Dialogs Clase _comdlg Clase de base Custom Biblioteca de clases _system.vcx Clase primaria _custom Ejemplo ...\Samples\Solution\Ffc\Getfilex.scx

Observaciones

En sus aplicaciones puede utilizar los cuadros de diálogo del sistema Abrir y Guardar archivos, que emulan a los de Windows. Por ejemplo, se puede habilitar una barra Places a la izquierda del cuadro de diálogo.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro coloca el icono de la clase en el formulario. Puede especificar los valores de las propiedades y proporcionar los objetos de entrada y de salida que necesite. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Matriz aFileNames | Matriz de nombres de archivo que devuelve el cuadro de diálogo. Valor predeterminado: .F.
Matriz aFileList | Matriz de filtros de extensiones de archivo que se pasan al cuadro de diálogo. Valor predeterminado: .F.
Propiedad cCustomFilter | Filtro personalizado que crea el usuario al utilizar el cuadro de diálogo. Valor predeterminado: ninguno
Propiedad cDefaultExtension | Extensión de archivo predeterminada que se muestra. Valor predeterminado: ninguno
Propiedad cFileName | Nombre del archivo seleccionado o establecido como predeterminado. Valor predeterminado: ninguno
Propiedad cFilePath | Ruta de acceso donde se seleccionaron los archivos. Valor predeterminado: ninguno
Propiedad cFileTitle | Propiedad de título de los archivos seleccionados. Valor predeterminado: ninguno
Propiedad cInitialDirectory | Directorio inicial para mostrar archivos. Valor predeterminado: ninguno
Propiedad cTitleBar | Nombre de la barra de título del cuadro de diálogo. Valor predeterminado: ninguno
Propiedad lAllowMultiSelect | Especifica si se permite seleccionar varios archivos. Valor predeterminado: .F.
Propiedad lFileMustExist | Especifica si permitir sólo archivos existentes. Valor predeterminado: .F.
Propiedad lHideReadOnly | Especifica si se ocultan los archivos de sólo lectura en una lista. Valor predeterminado: .T.
lNewExplorer | Especifica si se utiliza la nueva interfaz del explorador y características como la barra Places. Valor predeterminado: .T.
Propiedad lNoChangeDir | Especifica si se evita el cambio de directorio mostrado. Valor predeterminado: .F.
Propiedad lNoNetworkButton | Especifica si se evita la inclusión de un botón de red en el cuadro de diálogo. Valor predeterminado: .F.
Propiedad lNoPlacesBar | Especifica si se evita la inclusión de una barra Places en el cuadro de diálogo. Valor predeterminado: .F.
Propiedad lNoValidate | Especifica que no se validen los archivos en el cuadro de diálogo. Valor predeterminado: .F.
Propiedad lSaveDialog box | Especifica si se utiliza el cuadro de diálogo Guardar en lugar del cuadro de diálogo Abrir. Valor predeterminado: .F.
Propiedad nFileCount | Especifica el número de archivos seleccionados en el cuadro de diálogo. Valor predeterminado: 0
Propiedad nFilterIndex | Especifica el filtro seleccionado en el cuadro de diálogo. Valor predeterminado: 0
Método AddFilter | Especifica los filtros de extensiones de archivo utilizados al mostrar el cuadro de diálogo. Sintaxis: AddFilter(cDescription, cSkeleton) Valor devuelto: ninguno Argumentos: cDescription proporciona una descripción del filtro. cSkeleton especifica la estructura del filtro de extensiones de archivo.
Método ClearFilters | Borra todos los filtros de extensiones de archivo. Sintaxis: ClearFilters( ) Valor devuelto: ninguno Argumentos: cUser especifica el nombre de usuario a comprobar
Método ShowDialog box | Muestra un cuadro de diálogo con varias opciones, como los filtros. Sintaxis: ShowDialog box( ) Valor devuelto: ninguno Argumentos:
Método TestDialog box | Secuencia de comandos para comprobar la visualización de un cuadro de diálogo. Sintaxis: TestDialog box( ) Valor devuelto: ninguno Argumentos:

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Carpetas comunes del sistema (Foundation Class)

Categoría Utilidades de sistema Catálogo predeterminado Visual FoxPro Catalog\Foundation Classes\Utilities Clase _commonfolder Clase de base Custom Biblioteca de clases _system.vcx Clase primaria _custom Ejemplo ...\Samples\Solution\Ffc\Logo.scx

Observaciones

Esta clase proporciona la ubicación de ventanas comunes del sistema, como las carpetas Mis documentos o Datos de programa. Se suelen utilizar en aplicaciones compatibles con el logotipo Windows 2000. Vea SHGetFolderPath en MSDN si desea más información.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro coloca el icono de la clase en el formulario. Puede especificar los valores de las propiedades y proporcionar los objetos de entrada y de salida que necesite. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Método GetFolder | Devuelve la ruta de la carpeta del sistema especificada. Sintaxis: GetFolder(nFolderID, lCreateNew) Valor devuelto: nombre de la carpeta Argumentos: nFolderID Id de referencia a la carpeta. Se refiere al método de clase para los Id. comunes, tal y como se especifica en SHGetFolderPath de MSDN. lCreateNew especifica si se crea una carpeta nueva en caso de no existir

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Detector de conflictos (Foundation Class)

Categoría | Consulta de datos
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Data Query
Clase | _conflicts
Clase de base | Form
Biblioteca de clases | _dataquery.vcx
Clase primaria | _form
Ejemplo | ...\Samples\Solution\Ffc\Conflicts.scx

Observaciones

Esta clase proporciona un cuadro de diálogo que presenta las filas que se encuentran en conflicto en las sesiones de edición que utilizan almacenamiento optimista en búfer. Para su resolución, se presentan los valores original, actual y nuevo. Esta clase se puede utilizar con búfer de fila o de tabla.

Para utilizarla, arrastre la clase al proyecto o desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto. Al colocar la clase en un proyecto, puede elegir entre agregar la clase, crear una subclase o crear un formulario. Si elige Crear un nuevo formulario a partir de la clase seleccionada, Visual FoxPro presenta el cuadro de diálogo Abrir para que pueda especificar el nombre del formulario y, a continuación, crea y abre el formulario en el Diseñador de formularios. Debe activar el comando SET MULTILOCKS y activar el búfer.

Propiedades, eventos, métodos | Descripción
Propiedad CursorAlias | Especifica el alias donde buscar los conflictos. Valor predeterminado: ""
Propiedad lAutoCheck | Especifica si la búsqueda empieza desde el inicio. Valor predeterminado: .T.
Método StartCheck | Comprueba los conflictos en el búfer de datos del alias. Sintaxis: StartCheck( ) Valor devuelto: ninguno Argumentos: ninguno
Propiedad ConflictAlias | Componente interno de la clase.
Propiedad lRowConflict | Componente interno de la clase.
Propiedad aConflicts[1,0] | Componente interno de la clase.
Método NextConflict | Componente interno de la clase.
Método CheckSource | Componente interno de la clase.
Método Alert | Componente interno de la clase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Cookies (Foundation Class)

Categoría Internet Catálogo predeterminado Visual FoxPro Catalog\Foundation Classes
\Internet Clase _cookie Clase de base Custom Biblioteca de clases _internet.vcx Clase primaria _custom

Observaciones

Ésta es una clase Web sencilla que controla los cookies entre las páginas Web. Esta clase se ha diseñado para utilizarla principalmente con servidores Internet Information Server de Microsoft como FoxISAPI.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro coloca el icono de la clase en el formulario y usted puede especificar los valores de las propiedades y proporcionar los objetos de entrada y de salida que necesite. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Propiedad cCookie | Nombre del cookie actual. Valor predeterminado: ""
Propiedad CookieTable | Nombre de la tabla de cookies. Valor predeterminado: Cookies.dbf
Propiedad DBFAlias | Alias de la tabla de cookies. Valor predeterminado: ""
Método MakeCookie | Genera un cookie único basado en la fecha y la hora del sistema. Sintaxis: MakeCookie( ) Valor devuelto: ninguno Argumentos: ninguno
Método GetCookie | Obtiene un cookie del servidor HTML. Sintaxis: GetCookie(cStr) Valor devuelto: ninguno Argumentos: cStr especifica el nombre del cookie que se va a recuperar.
Método WriteCookieInfo | Escribe la información del cookie en la tabla de cookies. Sintaxis: WriteCookieInfo( ) Valor devuelto: ninguno Argumentos: ninguno
Método FixURL | Lee la dirección URL y evalúa los marcadores % para leer el cookie. Sintaxis: FixURL(m.cStr) Valor devuelto: Argumentos: m.cStr especifica el nombre del cookie que se va a recuperar.
Método GetVal | Obtiene un valor de la cadena destino, cStr. Sintaxis: GetVal(cStr, cVal) Valor devuelto: cVal Argumentos: cStr especifica el nombre de la cadena en la que se va a buscar el valor, cVal cVal especifica el valor que se va a buscar en la cadena, cStr.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Referencias cruzadas (Foundation Class)

Categoría Automatización Catálogo predeterminado Visual FoxPro Catalog\Foundation Classes\Automation Clase _xtab Clase de base Custom Biblioteca de clases _utility.vcx Clase primaria _custom Ejemplo ...\Samples\Solution\Ffc\Automate.scx

Observaciones

Esta clase, cuando está incluida en un formulario, utiliza el motor del Asistente para referencias cruzadas para generar un informe de referencias cruzadas.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario del entorno de datos, Visual FoxPro abre un generador para que pueda especificar los valores apropiados de lDisplayNulls, lTotalRows, nTotalOption y lBrowseAfter. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Propiedad cOutFile | El nombre del archivo de resultado. Valor predeterminado: xtabquery
Propiedad lCursorOnly | Especifica si el origen de datos de entrada es un cursor. Valor predeterminado: .T.
Propiedad lCloseTable | Especifica si se va a cerrar el origen de datos después de generar las referencias cruzadas. Valor predeterminado: .T.
Propiedad lShowThem | Especifica si se va a mostrar un termómetro durante la generación de la referencia cruzada. Valor predeterminado: .T.
Propiedad nRowField | Especifica la posición del campo del origen de datos para las filas de las referencias cruzadas. Valor predeterminado: 1
Propiedad nColField | Especifica la posición del campo del origen de datos de las columnas de las referencias cruzadas. Valor predeterminado: 2
Propiedad nDataField | Especifica la posición del campo del origen de datos de los datos de las referencias cruzadas. Valor predeterminado: 3
Propiedad lTotalRows | Especifica si se van a totalizar las filas en el resultado de las referencias cruzadas. Valor predeterminado: .F.
Propiedad nTotalOption | Especifica la opción de total para ejecutar 0 = suma 1 = cuenta 2 = % del total. Valor predeterminado: 0
Propiedad lDisplayNulls | Especifica si se van a presentar valores nulos en el resultado de la referencia cruzada. Valor predeterminado: .F.
Propiedad lBrowseAfter | Especifica si se va a abrir una ventana de exploración en el resultado de la referencia cruzada. Valor predeterminado: .T.
Método RunXtab | Genera una referencia cruzada. Sintaxis: RunXtab( ) Valor devuelto: ninguno Argumentos: ninguno

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Crypto API (Foundation Class)

Categoría | Cuadros de diálogo del sistema
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Dialogs
Clase | _cryptapi
Clase de base | Custom
Biblioteca de clases | _crypt.vcx
Clase primaria | _custom
Ejemplo | ...\Samples\Solution\Ffc\Crypto.scx

Observaciones

Esta clase avanzada proporciona acceso detallado a las rutinas de Crypto API de Windows. Se puede utilizar para cifrar la información de las aplicaciones, como archivos, texto y campos de datos. Sus rutinas son válidas para el cifrado de flujos de datos, bloques y claves públicas o privadas y simétricas, así como la firma de archivos.

Para utilizarla, coloque la clase en un proyecto o en un formulario, o desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro coloca el icono de la clase en el formulario. Puede especificar los valores de las propiedades y proporcionar los objetos de entrada y de salida que necesite. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Para obtener información acerca de propiedades, eventos y métodos, consulte la clase y el ejemplo correspondientes.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Botones de edición de datos (Foundation Class)

Categoría | Modificación de datos
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Buttons
Clase | picbtns
Clase de base | CommandGroup
Biblioteca de clases | wizbtns.vcx
Clase primaria | txtbtns
Ejemplo | ...\Samples\Solution\Ffc\dataedit.scx

Observaciones

Esta clase es un completo juego de botones de edición que incluye los botones Primero, Anterior, Siguiente, Último, Buscar, Imprimir, Agregar, Eliminar, Modificar y Guardar. El Asistente para formularios utiliza esta clase.

Puede utilizar esta clase en formularios de una sola tabla o en formularios con relación uno a varios que utilicen campos para la tabla primaria y una cuadrícula para la tabla secundaria.

Para utilizarla, coloque la clase en un proyecto o en un formulario, o desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro coloca los botones en el formulario. Puede especificar el origen de datos y proporcionar objetos de entrada y de salida. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase. La clase primaria txtbtns contiene propiedades adicionales que también puede establecer.

Propiedades, eventos, métodos | Descripción
Propiedad WizBMPpath | Componente interno de la clase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Botones de desplazamiento en datos (Foundation Class)

Categoría Desplazamiento en datos Catálogo predeterminado Visual FoxPro Catalog\Foundation Classes\Data Navigation Clase _datanavbtns Clase de base Container Biblioteca de clases _datanav.vcx Clase primaria _container Ejemplo ...\Samples\Solution\Forms\single.scx

Observaciones

Esta clase es un juego de botones de desplazamiento que incluye los botones Primero, Siguiente, Anterior y Último. También contiene la clase DataChecker para comprobar la existencia de conflictos durante el desplazamiento entre registros.

Para utilizarla, arrastre la clase y colóquela en un proyecto o en un formulario del entorno de datos o, desde el menú de Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, tiene que proporcionar los objetos de entrada y de salida. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Propiedad cSkipTable | La tabla a la que se va a mover el puntero. Valor predeterminado: ""
Propiedad lEnableDisableOnInit | Especifica si los botones de desplazamiento están activados la primera vez que se cargan. Valor predeterminado: .T.
Método RecordPointerMoved | Se invoca en cada movimiento del puntero de los registros, con lo que proporciona un nuevo evento a la clase. Sintaxis: RecordPointerMoved( ) Valor devuelto: ninguno Argumentos: ninguno
Método EnableDisableButtons | Activa o desactiva los botones según la ubicación del puntero de los registros. Sintaxis: EnableDisableButtons( ) Valor devuelto: ninguno Argumentos: ninguno
Método BeforeRecordPointerMoved | Se invoca antes de mover el puntero de registros para determinar si la tabla contiene registros. Sintaxis: BeforeRecordPointerMoved( ) Valor devuelto: ninguno Argumentos: ninguno

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Objeto de desplazamiento en datos (Foundation Class)

Categoría | Desplazamiento en datos
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Data Navigation
Clase | _tablenav
Clase de base | Custom
Biblioteca de clases | _table.vcx
Clase primaria | _table
Ejemplo | ...\Samples\Solution\Ffc\datanav.scx

Observaciones

Este es un objeto de desplazamiento no visual que otros controles pueden utilizar para recorrer los registros de orígenes de datos como tablas o vistas.

Para utilizarla, coloque la clase en un proyecto o en un formulario, o desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un proyecto, puede elegir entre agregar la clase o crear una subclase. Cuando la clase se agrega a un formulario, Visual FoxPro presenta el icono de la clase en el formulario para que pueda agregar objetos de desplazamiento en datos que hagan referencia a los métodos de clase apropiados en el formulario, dentro del Diseñador de formularios.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Propiedad lCycle | Controla el movimiento cuando el puntero de los registros llega al principio o al final del archivo. Valor predeterminado: .F.
Método GoBottom | Mueve el puntero de registro al último registro. Sintaxis: GoBottom( ) Valor devuelto: ninguno Argumentos: ninguno
Método GoRecord | Mueve el puntero de registro a un registro especificado por un número. Sintaxis: GoRecord( ) Valor devuelto: ninguno Argumentos: tiRecord
Método GoNext | Mueve el puntero de registro al registro siguiente mediante SKIP 1. Si este movimiento coloca el puntero en EOF( ), su comportamiento viene determinado por la propiedad lCycle. Sintaxis: GoNext( ) Valor devuelto: ninguno Argumentos: ninguno
Método GoPrevious | Mueve el puntero de registro al registro anterior mediante SKIP –1 si el puntero no estuviera en BOF( ). Si este movimiento coloca el puntero en BOF( ), su comportamiento viene determinado por la propiedad lCycle. Sintaxis: GoNext( ) Valor devuelto: ninguno Argumentos: ninguno
Método GoTop | Mueve el puntero de registro al primer registro. Sintaxis: GoTop( ) Valor devuelto: ninguno Argumentos: ninguno

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Administrador de sesiones de datos (Foundation Class)

Categoría Aplicación Catálogo predeterminado Visual FoxPro Catalog\Foundation Classes\Application Clase _datassession Clase de base Custom Biblioteca de clases _app.vcx Clase primaria _custom Ejemplo ...\Samples\Solution\Ffc\environ.scx

Observaciones

Esta clase se utiliza para administrar sesiones de datos y controlar las actualizaciones de todos los formularios o los conjuntos de formularios de la actual sesión de datos. Activa un objeto Application para facilitar la iteración a través de las sesiones para proporcionar un comportamiento similar al cierre de Windows al Salir o Apagar. También proporciona el comportamiento genérico de QueryUnload a los formularios y los conjuntos de formularios y código genérico para la sesión para Actualizar y Revertir. Puede utilizarla para evaluar si los datos de una sesión se han modificado antes de utilizar sus propios procedimientos de control de conflictos.

Esta clase funciona con tablas libres y con tablas de bases de datos. Observe el límite de transacciones (5).

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro coloca la clase en el formulario. A continuación, puede especificar los valores de las propiedades y proporcionar los objetos de entrada y de salida que necesite. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Propiedad iDataChangedMode | Especifica el tipo de modificación efectuada en los datos. 0 - Ha cambiado todo. 1 - Omite los campos de las vistas que no estén en la lista UpdateFields. 2- Omite las vistas que no permiten actualizaciones. Valor predeterminado: 0
Propiedad iSavedSessionID | Especifica un valor entero que representa el Id. de la sesión guardada. Valor predeterminado: 1
Propiedad lSuccess | Especifica si la operación con los datos (actualización) ha sido correcta. Valor predeterminado: .T.
Propiedad lUseTransactions | Especifica si la subrutina de actualización se va a ejecutar como transacción. Nota Sólo las tablas de un contenedor de base de datos (.dbc) se ven afectadas por las transacciones. Valor predeterminado: .T.
Método DataChanged | Comprueba si los datos se han modificado. Sintaxis: DataChanged( ) Valor devuelto: ninguno Argumentos: ninguno
Método DataFlush | Asegura que el contenido actual del control activo se "reconocerá" incluso si la actualización se ejecuta a través de un botón de la barra de herramientas mientras el foco está en la cuadrícula. Sintaxis: DataFlush( ) Valor devuelto: ninguno Argumentos: ninguno
Método GetActiveControlRef | Devuelve el control activo real, loRealActiveControl, en los casos en que el control activo actual sea una cuadrícula. Sintaxis: GetActiveControlRef(toActiveControl) Valor devuelto: loRealActiveControl Argumentos: toActiveControl especifica el control actual.
Método GetMessageBoxTitle | Devuelve la parte del texto de la barra de título que especifica el nombre del mensaje. Sintaxis: GetMessageBoxTitle( ) Valor devuelto: cTitlebarText Argumentos: ninguno
Método QueryUnload | Proporciona cuadros de diálogo para administrar las decisiones sobre las modificaciones de los datos. Sintaxis: QueryUnload(tlDataChangeAlreadyConfirmed, toForm, tlNoShow) Valor devuelto: liResult Argumentos: tlDataChangeAlreadyConfirmed especifica si los datos se han modificado toForm especifica el formulario. tlNoShow especifica si se presenta el formulario. liResult especifica el CUADRO DE MENSAJE o el valor.
Método RestoreSessionID | Restablece la sesión de datos. Sintaxis: RestoreSessionID Valor devuelto: ninguno Argumentos: ninguno
Método Revert | Devuelve la sesión a sus datos originales. Sintaxis: Revert(tlUserChoiceAlreadyConfirmed, tlDataChangeAlreadyConfirmed, toForm, tlNoShow) Valor devuelto: ninguno Argumentos: tlUserChoiceAlreadyConfirmed especifica si se va a presentar un cuadro de diálogo de confirmación. tlDataChangeAlreadyConfirmed especifica si se va a presentar un cuadro de diálogo de confirmación. toForm especifica el formulario. tlNoShow especifica si se va a presentar el formulario.
Método SetSessionID | Establece la sesión de datos. Sintaxis: SetSessionID( ) Valor devuelto: ninguno Argumentos: ninguno
Método Update | Actualiza los datos. Sintaxis: Update(tlUserChoiceAlreadyConfirmed, tlDataChangeAlreadyConfirmed, toForm. tlNoShow) Valor devuelto: ninguno Argumentos: tlUserChoiceAlreadyConfirmed especifica si se va a presentar un cuadro de diálogo de confirmación. tlDataChangeAlreadyConfirmed especifica si se va a presentar un cuadro de diálogo de confirmación. toForm especifica el formulario. tlNoShow especifica si se va a presentar el formulario.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Validación de datos (Foundation Class)

Categoría | Modificación de datos
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Data Query
Clase | _datachecker
Clase de base | Custom
Biblioteca de clases | _datanav.vcx
Clase primaria | _custom
Ejemplo | ...\Samples\Solution\Ffc\conflicts.scx

Observaciones

Esta clase intercepta los conflictos en los datos del búfer.

Para utilizarla, coloque la clase en un proyecto o en un formulario, o desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, tiene que especificar los valores de las propiedades. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Método HandleRecord | Compara los valores actual, anterior y original de cada campo, y presenta un cuadro de mensaje si detecta una modificación o un conflicto. Sintaxis: HandleRecord(lnScope) Valor devuelto: nReturn Argumentos: lnScope especifica el grado de validación: 0 = comprobación de conflictos 1 = comprobación de conflictos y de modificaciones nReturn especifica la acción tomada: 0 = Ninguna modificación 1 = Modificación correcta 2 = No se puede hacer la modificación
Método String | Se invoca con el método HandleRecord; devuelve un equivalente en cadena de caracteres del valor pasado. Sólo devuelve una notificación en los campos memo. Sintaxis: String(luValue) Valor devuelto: ninguno Argumentos: luValue especifica el valor que se va a comprobar.
Método VerifyChanges | Pide al usuario que guarde todas las modificaciones efectuadas en una tabla o un registro. Sintaxis: VerifyChanges( ) Valor devuelto: ninguno Argumentos: ninguno
Método VerifyEachChange | Pide al usuario que confirme todas las modificaciones. Sintaxis: VerifyEachChange( ) Valor devuelto: ninguno Argumentos: ninguno
Método CheckcConflicts | Notifica al usuario cuando los datos han cambiado después de haber iniciado la modificación del registro. Sintaxis: CheckcConflicts( ) Valor devuelto: ninguno Argumentos: ninguno

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


DBF a HTML (Foundation Class)

Categoría | Internet
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Internet
Clase | _dbf2html
Clase de base | Custom
Biblioteca de clases | _internet.vcx
Clase primaria | _custom
Ejemplo | ...\Samples\Solution\Ffc\dohtml.scx

Observaciones

Esta clase convierte un cursor de Visual FoxPro (.DBF) en HTML. Controla el alcance, el diseño y la generación de HTML. Para obtener más información acerca de la creación de páginas Web a partir de tablas de Visual FoxPro, vea Genhtml.prg.

Para utilizarla, coloque la clase en un proyecto o en un formulario, o desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro abre un generador para aceptar los valores actuales o especificar los valores apropiados de cSource, cOutFile y nGenOutput. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Propiedad cSource | Especifica el archivo de origen desde el que se va a generar el código HTML. Valor predeterminado: ""
Propiedad nGenOutput | Opciones de resultado de _GENHTML. 0 = Generar archivo de resultados. 1 = Generar y presentar el archivo de resultados en el editor de Visual FoxPro. 2 = Generar y presentar el archivo de resultados en Internet Explorer. 3 = Generar y presentar el archivo de resultados después de presentar el cuadro de diálogo Guardar como 4 = Crear un objeto PUBLIC _oHTML y generar un archivo. 5 = Crear un objeto PUBLIC _oHTML sin generar un archivo. Valor predeterminado: 2
Propiedad cOutFile | Especifica el nombre del archivo HTML de resultados. Valor predeterminado: ""
Propiedad lAutoNameOutput | Especifica si _GENHTML tiene que asignar automáticamente el nombre del archivo de resultados, basado en el nombre del origen. Valor predeterminado: .T.
Propiedad lUseCurrentAlias | Especifica si se va a utilizar el alias actual como origen. Valor predeterminado: .T.
Propiedad cScope | Especifica el alcance (por ejemplo, NEXT o ALL) del resultado. Valor predeterminado: ""
Propiedad cStyle | Especifica el estilo visual definido en el campo Id. de Genhtml.dbf. Valor predeterminado: ""
Método GenHTML | Genera código HTML al invocar el programa Genhtml.prg mediante los valores de las propiedades cSource, cOutput y nGenOutput. Sintaxis: GenHTML( ) Valor devuelto: ninguno Argumentos: ninguno

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Cuadro combinado de valores diferentes (Foundation Class)

Categoría | Consulta de datos
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Data Query
Clase | _cbodistinctvalues
Clase de base | ComboBox
Biblioteca de clases | _dataquery.vcx
Clase primaria | _combobox
Ejemplo | ...\Samples\Solution\Ffc\datalook2.scx

Observaciones

Esta clase recopila los valores únicos del campo ControlSource para llenar un cuadro combinado.

Para utilizarla, coloque la clase en un proyecto o en un formulario, o desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al formulario. Al colocar la clase en el formulario, Visual FoxPro inserta un cuadro combinado en el formulario. Debe especificar el valor adecuado de la propiedad ControlSource. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Objeto Error (Foundation Class)

Categoría | Aplicación
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Application
Clase | _error
Clase de base | Custom
Biblioteca de clases | _app.vcx
Clase primaria | _custom
Ejemplo | ...\Samples\Solution\Ffc\error.scx

Observaciones

Esta clase es un controlador de errores genérico que funciona con código orientado a objetos y con código orientado a procedimientos. Esta clase se utiliza dentro de un marco de aplicación generado por el Asistente para aplicaciones.

Para utilizarla, coloque la clase en un proyecto o en un formulario, o desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro coloca el icono de la clase en el formulario. Después puede especificar los valores de las propiedades y tener acceso a su funcionalidad a través de objetos de entrada y de salida. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Método GetMessageBoxTitle | Devuelve el control activo real, loRealActiveControl, en los casos en que el control activo actual sea una cuadrícula. Sintaxis: GetActiveControlRef(toActiveControl) Valor devuelto: ERROR_MESSAGEBOX_TITLE_LOC Argumentos: ninguno
Propiedad cCurrentMessage. | Especifica el mensaje de error. Valor predeterminado: ""
Propiedad cCurrentMethod | Especifica el método en el que ha causado el error. Valor predeterminado: ""
Propiedad iCurrentError | Especifica el número del error. Valor predeterminado: 0
Propiedad iCurrentLine | Especifica la línea en que se ha producido el error. Valor predeterminado: 0
Propiedad cCurrentClass | Especifica la categoría del error especificada por el objeto error según el número de error. Valor predeterminado: ""
Propiedad lServer | Examina _VFP.StartMode para determinar si se tiene que evitar cualquier forma modal de presentación debido al modo de inicio de Visual FoxPro. Valor predeterminado: (BETWEEN(_VFP.StartMode,1,3)))
Propiedad cLogAlias | Especifica el nombre del alias del registro. Valor predeterminado: ""
Propiedad cLogDBF | Especifica el nombre del archivo de registro (DBF) generado por el objeto _error. Valor predeterminado: ""
Propiedad lUserCancelled | Permite que el programa externo haga las operaciones de liberación necesarias antes de terminar. Valor predeterminado: .F.
Método HandleMain | La rutina que controla el error. Sintaxis: HandleMain(tiError, tcMethod, tiLine) Valor devuelto: ninguno Argumentos: tiError especifica el número de error. tcMethod especifica el nombre del método actual. tiLine especifica el número de la línea actual.
Método OKToReport | Clase abstracta para evaluar si se informa del error. Sintaxis: OKToReport( ) Valor devuelto: ninguno Argumentos: ninguno
Método isTrivial | Especifica si un error es un error trivial. Sintaxis: IsTrivial(tlWantDialog box) Valor devuelto: ninguno Argumentos: tlWantDialog especifica la presentación de un cuadro de diálogo opcional.
Método isFatal | Especifica si un error es un error grave. Sintaxis:( ) Valor devuelto: Argumentos: tlWantDialog box especifica la presentación de un cuadro de diálogo opcional.
Método GetMessageBoxTitle | Se utiliza para que su subclase o su instancia se llene con información específica de la aplicación. Sintaxis: GetMessageBoxTitle( ) Valor devuelto: ninguno Argumentos: ninguno
Método DisplayErrorLog | Presenta el registro de errores. Sintaxis: DisplayErrorLog( ) Valor devuelto: ninguno Argumentos: ninguno
Método OKToContinue | Evalúa un error para determinar si la ejecución del programa tiene que proseguir. Sintaxis: OKToContinue( ) Valor devuelto: ninguno Argumentos: ninguno
Método SetLog | Determina o crea el nombre de la tabla de registro de errores y su alias. Sintaxis: SetLog( ) Valor devuelto: cLogAlias La tabla de registro de errores tiene el formato siguiente: CREATE TABLE (THIS.cLogDBF) ; (errstamp t, ; listing m,; usernotes m) Argumentos: ninguno
Propiedad cCurrentErrorParam | Componente interno de la clase.
Propiedad aErrorClass[1,3] | Componente interno de la clase.
Propiedad aErrors[1,6] | Componente interno de la clase.
*FillArrays . | Componente interno de la clase.
Método LogErrorReport | Componente interno de la clase.
Método GetErrorAttribute | Componente interno de la clase
Método isGoodErrorLog | Componente interno de la clase.
Método UserHandlesError | Componente interno de la clase.
Método UserCancelled | Componente interno de la clase.
Método FillLogRecord | Componente interno de la clase.
Método DoErrorLogUI | Componente interno de la clase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Selector de campos (Foundation Class)

Categoría Selectores Catálogo predeterminado Visual FoxPro Catalog\Foundation Classes\User Controls Clase _fieldmover Clase de base Container Biblioteca de clases _mover.vcx Clase primaria _supermover Ejemplo ...\Samples\Solution\Ffc\movers.scx

Observaciones

Esta clase es un cuadro de lista de selección global que carga automáticamente campos desde el origen de datos actual cuando se arrastra y coloca en un formulario.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro abre un generador para que pueda aceptar o especificar los valores apropiados de SkipGeneral, SkipMemo y AllowReadOnly. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Propiedad AllowReadOnly | Permite un origen de datos de sólo lectura. Valor predeterminado: .F.
Propiedad AutoInit | Se ejecuta automáticamente al cargarse. Valor predeterminado: .T.
Propiedad CurrentAlias | El alias actual determinado por ALIAS( ). Valor predeterminado: ""
Propiedad CurrentDBC | El archivo de la base de datos actual. Valor predeterminado: ""
Propiedad CursorType | Especifica el tipo de cursor. 1 = vista local 2 = vista remota 3 = tabla Valor predeterminado: 3
Propiedad DBCTable | Nombre de la tabla en la base de datos. Valor predeterminado: ""
Propiedad MultiTable | Especifica si se admiten varias tablas. Valor predeterminado: .F.
Propiedad SkipGeneral | Especifica si los campos General están incluidos en la lista. Valor predeterminado: .F.
Propiedad SkipMemo | Especifica si los campos Memo están incluidos en la lista. Valor predeterminado: .F.
Propiedad TableType | Devuelve el tipo de la tabla SYS(2029). Valor predeterminado: 0
Método AcolScan | Busca en una columna específica de la matriz. Sintaxis: AcolScan(@wztarr, wztexpr, wztcol) Valor devuelto: ninguno Argumentos: wztarr especifica la matriz que se va a buscar. wztexpr especifica la expresión que se va a buscar. wztcol especifica la columna en la que se va a buscar.
Método AddToArray | Agrega sContents a la matriz, aAddToArray, en iRow. Sintaxis: AddToArray(@aAddToArray, sContents, iRow) Valor devuelto: ninguno Argumentos: aAddToArray especifica la matriz a la que se va a agregar el elemento. sContents especifica el elemento que se va a agregar. iRow especifica la fila de la matriz en la que se va a insertar sContents.
Método Alert | Presenta un cuadro de mensaje. Sintaxis: Alert(pMessage) Valor devuelto: ninguno Argumentos: pMessage especifica el mensaje que MESSAGEBOX( ) va a presentar.
Método FieldChange | Se desencadena cuando se modifican los campos seleccionados. Sintaxis: FieldChange(nButton) Valor devuelto: ninguno Argumentos: nButton especifica el botón presionado.
Método GetTableData | Obtiene campos de una tabla. aWizFlist contiene la lista de campos aCalcFields contiene la lista de los campos calculados aPickFields contiene la lista de los campos seleccionados. Sintaxis: GetTableData( ) Valor devuelto: aWizFList, aCalcFields, aPickFields Argumentos: ninguno
Método InitData | Inicializa los datos. Sintaxis: InitData( ) Valor devuelto: ninguno Argumentos: ninguno
Método InitVars | Inicializa las variables utilizadas por las selecciones. Sintaxis: InitVars( ) Valor devuelto: ninguno Argumentos: ninguno
Método JustStem | Obtiene el nombre raíz del archivo. Sintaxis: JustStem(m.nombrearchivo Valor devuelto: m.nombrearchivo Argumentos: m.nombrearchivo especifica el nombre del archivo del que se va a extraer la raíz.
Método SetDataProps | Establece las propiedades de los datos del origen de datos. Sintaxis: SetDataProps( ) Valor devuelto: ninguno Argumentos: ninguno
Método UpdateStatusbar | Componente interno de la clase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro | Selección global


Versión de archivo (Foundation Class)

Categoría | Utilidades de archivo
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Utilities
Clase | _fileversion
Clase de base | Custom
Biblioteca de clases | _utility.vcx
Clase primaria | _custom
Ejemplo | ...\Samples\Solution\WinAPI\getver.scx

Observaciones

Obtiene la información del recurso versión de un archivo y la almacena en una matriz.

Para utilizarla, coloque la clase en un proyecto o en un formulario, o desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro coloca la clase en el formulario. Después puede especificar los valores y proporcionar los objetos de entrada y de salida que necesite. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Propiedades, eventos, métodos | Descripción
Propiedad cFileName | El nombre del archivo de destino. Valor predeterminado: ""
Propiedad aVersion[12,0] | Matriz que contiene la información de la versión del archivo. Valor predeterminado: .F.
Método GetVersion | Obtiene la información de la versión de cFileName. Sintaxis: GetVersion( ) Valor devuelto: ninguno Argumentos: ninguno
Método DisplayVersion | Presenta la información de la versión de cFileName. Sintaxis: DisplayVersion( ) Valor devuelto: ninguno Argumentos: ninguno

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Botón del cuadro de diálogo Filtro (Foundation Class)

Categoría | Consulta de datos
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Buttons
Clase | _filterbutton
Clase de base | CommandButton
Biblioteca de clases | _table2.vcx
Clase primaria | _dialog boxbutton
Ejemplo | ...\Samples\Solution\Ffc\datasort.scx

Observaciones

Esta clase es un botón que, cuando recibe un clic, presenta un cuadro de diálogo que le permite filtrar los datos de un campo concreto.

Para utilizarla, coloque la clase en un proyecto o en un formulario, o desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro coloca un botón en el formulario. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Propiedades, eventos, métodos | Descripción
Propiedad lExprDialog box | Componente interno de la clase.
Propiedad cExprClass | Componente interno de la clase.
Propiedad cFilterClass | Componente interno de la clase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Cuadro de diálogo Filtro (Foundation Class)

Categoría | Consulta de datos
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Data Query
Clase | _filterdialog
Clase de base | Form
Biblioteca de clases | _table.vcx
Clase primaria | _form
Ejemplo | ...\Samples\Solution\Ffc\datasort.scx

Observaciones

Esta clase es un cuadro de diálogo que utiliza un objeto de filtrado existente para permitirle filtrar los datos de un campo concreto.

Para utilizarla, arrastre la clase y colóquela en un proyecto o desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Crear formulario o Agregar al proyecto. Al colocar la clase en un proyecto, puede elegir entre agregar la clase, crear una subclase o crear un formulario. Al colocar la clase en un proyecto o elegir Crear un nuevo formulario a partir de la clase seleccionada en el menú contextual, Visual FoxPro presenta un cuadro de diálogo Abrir donde puede especificar el nombre del formulario. A continuación, Visual FoxPro crea y abre el formulario en el Diseñador de formularios.

_FilterDialog le permite utilizar expresiones de Visual FoxPro para generar filtros complejos que utilicen valores lógicos, condiciones anidadas, etc., limitados a los campos disponibles en las tablas actualmente abiertas. Proporciona automáticamente delimitadores para los distintos tipos de campos. Sugiere que expresiones podrían ser optimizables al examinar las etiquetas disponibles en la tabla actual. La lista de campos coloca “*” delante de los nombres de los campos que dispongan de índices utilizables.

Igual que _FilterExpr, _FilterDialog necesita al menos una tabla abierta en la que establecer el filtro. A diferencia de _FilterExpr, _FilterDialog no es modal necesariamente, aunque puede serlo cuando se llama mediante _FilterExpr. FilterDialog determina la tabla actual en el evento Init. FilterDialog nunca modifica las sesiones de datos.

Cuando se llama mediante _FilterExpr, _FilterDialog determina el filtro que el usuario ha especificado en el cuadro de edición _FilterExpr y presenta dicha expresión como conjunto inicial de condiciones. Cuando _FilterDialog se invoca directamente, comprueba los filtros del alias actual, mediante SET("FILTER") y muestra un filtro actual como condiciones iniciales.

El método _FilterDialog SetUpFilter( ) utiliza las condiciones presentadas en el cuadro de diálogo y crea una expresión de filtro y, a continuación, aplica la función NORMALIZE( ) a la expresión. El resultado se almacena en la propiedad cFilter. Cuando hace clic en Aceptar, se ejecuta SetupFilter( ). _FilterDialog invoca el método _FilterExpr.SetFilter si es llamado por una instancia de _FilterExpr; si no, utiliza _table para determinar si la exploración está permitida, establece el filtro directamente y actualiza la presentación si el filtro está establecido.

_FilterDialog es un objeto independiente y no requiere la existencia de _FilterExpr para generar un filtro. Sin embargo, cuando se llama mediante _FilterExpr, los dos cuadros de diálogo operan de forma conjunta para crear el filtro, al especificar una expresión en _FilterExpr y elegir opciones en _FilterDialog. Para obtener más información acerca de la clase Expresión de filtro, vea Expresión de filtro.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Propiedad cFilter | Contiene la expresión de filtro procesada por el método SetupFilter. Valor predeterminado: ""
Método SetupFilter | Este método toma las condiciones del cuadro de diálogo y las convierte en una expresión de filtro, a la que después aplica la función NORMALIZE( ). Sintaxis: SetupFilter(tcValue) Valor devuelto: cFilter Argumentos: tcValue especifica la expresión que se va a utilizar como filtro. cFilter es el valor contenido en la propiedad cFilter.
Propiedad cOldExact | Componente interno de la clase.
Propiedad iBact | Componente interno de la clase.
Propiedad iQptr | Componente interno de la clase.
Propiedad iQuerymax | Componente interno de la clase.
Propiedad iSelect | Componente interno de la clase.
Propiedad oCaller | Componente interno de la clase.
Propiedad aDBFs[1,0] | Componente interno de la clase.
Propiedad aTags[1,0] | Componente interno de la clase.
Propiedad aQuery[1,0] | Componente interno de la clase.
Propiedad aFLDs[1,0] | Componente interno de la clase.
Método SetAction | Componente interno de la clase.
Método qReset | Componente interno de la clase.
Método qSet | Componente interno de la clase.
Método sSet | Componente interno de la clase.
Método NoBrack | Componente interno de la clase.
Método Brackets | Componente interno de la clase.
Método SetTags | Componente interno de la clase.
Método OnTag | Componente interno de la clase.
Método NoTag | Componente interno de la clase.
Método EditQuery | Componente interno de la clase.
Método SetRowSources | Componente interno de la clase.
Método SetInitialQueryParts | Componente interno de la clase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro | _Expresión de filtro


Cuadro de diálogo Expresión de filtro (Foundation Class)

Categoría | Consulta de datos
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Data Query
Clase | _filterexpr
Clase de base | Form
Biblioteca de clases | _table.vcx
Clase primaria | _form
Ejemplo | ...\Samples\Solution\Ffc\datasort.scx

Observaciones

Esta clase crea un cuadro de diálogo para expresiones de filtro avanzadas.

Para utilizarla, arrastre la clase y colóquela en un proyecto o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Crear formulario o Agregar al proyecto. Al colocar la clase en un proyecto, puede elegir entre agregar la clase, crear una subclase o crear un formulario. Si coloca la clase en un proyecto o elige Crear un nuevo formulario a partir de la clase seleccionada en el menú contextual, Visual FoxPro presenta un cuadro de diálogo Abrir donde puede especificar el nombre del formulario. Seguidamente, Visual FoxPro crea y abre el formulario en el Diseñador de formularios.

_FilterExpr es un cuadro de diálogo modal que le permite especificar una expresión de filtro o generar una expresión de filtro mediante uno de los dos cuadros de diálogo subsidiarios.

La propiedad lAdvanced conmuta _FilterExpr entre dos modos, estándar y avanzado. En el modo estándar, el botón Generar expresión utiliza una instancia de la clase _FilterDialog para generar una expresión simple. En el modo avanzado, el botón utiliza el valor de la variable del sistema _GETEXPR.

La propiedad cFilter contiene el contenido actual de la expresión de filtro generada por el usuario. El cuadro de edición asociado a la propiedad cFilter puede contener hasta 254 caracteres.

Si _FilterExpr no puede encontrar una tabla sobre la que actuar, devuelve falso (.F.) antes de salir del evento Init; en caso contrario, restaura estos valores en su método Unload. Cuando se crea una instancia de _FilterExpr y si ALIAS( ) está vacío, busca una tabla abierta en la sesión de datos actual del formulario o conjunto de formularios actualmente seleccionado.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Propiedad cFilter | Contiene la expresión de filtrado procesada por el método SetupFilter. Valor predeterminado: (SPACE(254))
Propiedad lAdvanced | Se utiliza para conmutar _FilterExpr entre dos modos, _FilterDialog falso (.F.) y GETEXPR verdadero (.T.). Valor predeterminado: .F.
Propiedad iOldSession | La sesión de datos antigua. Valor predeterminado: 0
Propiedad iOldSelect | El área de trabajo antigua. Valor predeterminado: 0
Método SetFilter | Establece el valor de cFilter. Este método se utiliza principalmente cuando se invoca _FilterDialog de forma modal para seguir trabajando con la expresión que se va a generar. Sintaxis: SetFilter(tcValue) Valor devuelto: cFilter Argumentos: tcValue especifica la expresión que se va a utilizar como filtro. cFilter es la expresión de filtro.
Método SetFilterOnTable | Si la tabla actual permite la exploración, este método aplica el filtro actual al alias actual, ejecuta un comando LOCATE y, después, invoca el método RefreshLastWindowAfterChange( ) para obtener el filtro en la siguiente ventana disponible de la aplicación. Sintaxis: SetFilterOnTable( ) Valor devuelto: ninguno Argumentos: ninguno
Método cFilter_Access | Componente interno de la clase. Elimina retornos de carro, nuevas líneas y tabuladores de la expresión de filtro, y reemplaza dichos caracteres por espacios.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Botones Buscar (Buscar siguiente) (Foundation Class)

Categoría | Consulta de datos
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Data Query
Clase | _findnextbuttons
Clase de base | Container
Biblioteca de clases | _table.vcx
Clase primaria | _findbutton
Ejemplo | ...\Samples\Solution\Ffc\dataqry.scx

Observaciones

Esta clase proporciona un conjunto de botones genéricos del tipo buscar o buscar siguiente.

Para utilizarla, coloque la clase en un proyecto o en un formulario, o desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro abre un generador para que pueda especificar los valores de las propiedades. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Cuando está incluida en un formulario o en otro contenedor, esta clase busca un registro mediante el objeto Find según criterios especificados. Para obtener más detalles, vea Botón Buscar o _findbutton en la biblioteca de clases _table.vcx del Examinador de clases.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro | Botón Buscar


Botón Buscar (Foundation Class)

Categoría | Consulta de datos
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Data Query
Clase | _findbutton
Clase de base | Container
Biblioteca de clases | _table.vcx
Clase primaria | _container
Ejemplo | ...\Samples\Solution\Ffc\dataqry.scx

Observaciones

Esta clase proporciona un botón Buscar genérico, utiliza el objeto Find y busca un registro según criterios específicos.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro abre un generador para que pueda especificar los valores apropiados de cFindString, lMatchCase, lSkipMemo y lWrapAround. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Propiedad cAlias | Especifica el origen de datos en el que se va a buscar. Valor predeterminado: ""
Propiedad cFindString | Especifica la cadena por la que buscar. Valor predeterminado: ""
LFindAgain | Especifica si se va a recorrer el archivo para buscar instancias sucesivas de cFindString. Valor predeterminado: .F.
Propiedad lMatchCase | Especifica si la búsqueda distingue entre mayúsculas y minúsculas. Valor predeterminado: .F.
Propiedad lSkipMemos | Especifica si los campos Memo se pasarán por alto en la búsqueda. Valor predeterminado: .F.
Propiedad lWrapAround | Especifica si la búsqueda continúa desde el principio si se alcanza el final del archivo (EOF). Valor predeterminado: .F.
Método DoFind | Ejecuta una búsqueda. Sintaxis: DoFind( ) Valor devuelto: ninguno Argumentos: ninguno
Método SkipField | Pasa por alto el campo tcSkipField en la búsqueda. Sintaxis: SkipField( ) Valor devuelto: ninguno Argumentos: ninguno tcSkipField especifica el campo que se va a saltar en la búsqueda.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Cuadro de diálogo Buscar (Foundation Class)

Categoría | Consulta de datos
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Data Query
Clase | _finddialog
Clase de base | Form
Biblioteca de clases | _table.vcx
Clase primaria | _form
Ejemplo | ...\Samples\Solution\Ffc\dataqry.scx

Observaciones

Esta clase proporciona un cuadro de diálogo Buscar genérico con opciones sencillas como la elección de campos. Esta clase utiliza el objeto Find.

Para utilizarla, arrastre la clase y colóquela en un proyecto o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Crear formulario o Agregar al proyecto. Al colocar la clase en un proyecto, puede elegir entre agregar la clase, crear una subclase o crear un formulario. Al colocar la clase en un proyecto o elegir Crear un nuevo formulario a partir de la clase seleccionada en el menú contextual, Visual FoxPro presenta un cuadro de diálogo Abrir donde puede especificar el nombre del formulario y, a continuación, crea y abre el formulario en el Diseñador de formularios.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Propiedad cAlias | Especifica el origen de datos en el que se va a buscar. Valor predeterminado: ""
Propiedad cFindString | Especifica la cadena que se va a buscar. Valor predeterminado: ""
Propiedad lAdvanced | Especifica si en el cuadro de diálogo se van a presentar las opciones avanzadas. Valor predeterminado: .F.
Propiedad lFindAgain | Especifica si se va a recorrer el archivo para buscar instancias sucesivas de cFindString. Valor predeterminado: .F.
Propiedad lMatchCase | Especifica si la búsqueda distingue entre mayúsculas y minúsculas. Valor predeterminado: .F.
Propiedad lSkipMemos | Especifica si los campos Memo se van a saltar en la búsqueda. Valor predeterminado: .F.
Propiedad lWrapAround | Especifica si la búsqueda continúa desde el principio cuando se llegue al final del archivo (EOF). Valor predeterminado: .F.
Método DoFind | Ejecuta una búsqueda. Sintaxis: DoFind( ) Valor devuelto: ninguno Argumentos: ninguno
Método SkipField | Ignora el campo tcSkipField en la búsqueda. Sintaxis: SkipField( ) Valor devuelto: ninguno Argumentos: ninguno tcSkipField especifica el campo que se va a saltar en la búsqueda.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Buscar archivos o texto (Foundation Class)

Categoría | Utilidades de archivo
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Utilities
Clase | _filer
Clase de base | Custom
Biblioteca de clases | _utility.vcx
Clase primaria | _custom

Observaciones

Esta clase utiliza el objeto COM FILER.DLL para buscar archivos. Es una versión simplificada del formulario archivador.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro abre un generador para que pueda especificar los valores apropiados de cFileExpression, cSearchPath, cSearchText, lIgnoreCase, lSubFolder y lWholeWords. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Propiedad cFileExpression | Especifica un esqueleto de archivos para la búsqueda. Esta expresión puede incluir comodines como ? y *. Valor predeterminado: ""
Propiedad cSearchPath | Especifica el directorio en el que empezar a buscar archivos. Valor predeterminado: ""
Propiedad cSearchText | Especifica la cadena de texto que se va a buscar en los archivos. Valor predeterminado: ""
Propiedad lIgnoreCase | Especifica si no se va a distinguir entre mayúsculas y minúsculas en la búsqueda. Valor predeterminado: .T.
Propiedad lPromptDir | Especifica si hay que pedir al usuario la ruta de búsqueda si no se ha escrito ninguna. Valor predeterminado: .T.
Propiedad lSubFolder | Especifica si se va a buscar en los subdirectorios. Valor predeterminado: .T.
Propiedad lWholeWords | Especifica si se van a buscar coincidencias de palabras completas. Valor predeterminado: .F.
Propiedad oFiles | Especifica la colección de archivos devueltos por la búsqueda. Valor predeterminado: .F.
Método Find | Busca los archivos que cumplen los criterios especificados por las propiedades. Sintaxis: Find( ) Valor devuelto: ninguno Argumentos: ninguno

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Objeto Buscar (Foundation Class)

Categoría | Consulta de datos
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Data Query
Clase | _tablefind
Clase de base | Custom
Biblioteca de clases | _table.vcx
Clase primaria | _table
Ejemplo | ...\Samples\Solution\Ffc\dataqry.scx

Observaciones

Esta clase crea un objeto genérico que busca un registro según criterios especificados. La clase también proporciona un método Find Next opcional.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro abre un generador para que pueda especificar los valores apropiados de cFindString, lMatchCase, lSkipMemo y lWrapAround. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Propiedad cFields | Especifica la lista de campos en los que se va a buscar. Valor predeterminado: ""
Propiedad cFindString | Especifica la cadena que se va a buscar. Valor predeterminado: ""
Propiedad lFindAgain | Especifica si se va a recorrer el archivo para buscar instancias sucesivas de cFindString. Valor predeterminado: .F.
Propiedad lMatchCase | Especifica si se va a distinguir entre mayúsculas y minúsculas en la búsqueda. Valor predeterminado: .F.
Propiedad lSkipMemos | Especifica si los campos Memo se pasarán por alto en la búsqueda. Valor predeterminado: .F.
Propiedad lWrapAround | Especifica si la búsqueda continúa desde el principio si se alcanza el fin del archivo (EOF). Valor predeterminado: .F.
Método SkipField | Ignora el campo tcSkipField en la búsqueda. Sintaxis: SkipField( ) Valor devuelto: ninguno Argumentos: ninguno tcSkipField especifica el campo que se va a saltar en la búsqueda.
Propiedad aMemos [1] | Componente interno de la clase. Valor predeterminado: .F.
Propiedad iMemos | Componente interno de la clase. Valor predeterminado: 0
Propiedad cControlCharacter | Componente interno de la clase. Valor predeterminado: ~

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Cuadro combinado Fuente (Foundation Class)

Categoría | Formato de texto
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Text Formatting
Clase | _cbofontname
Clase de base | ComboBox
Biblioteca de clases | _format.vcx
Clase primaria | _combobox
Ejemplo | ...\Samples\Solution\Toolbars\format.scx

Observaciones

Esta clase es un cuadro combinado que enumera las fuentes disponibles cuando se coloca en un formulario. También la utilizan las clases tbrEditing y rtfControls de _format.scx.

Para utilizarla, coloque la clase en un proyecto o en un formulario, o desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro coloca un cuadro combinado en el formulario para que pueda especificar los valores de las fuentes de los objetos del formulario activo. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Cuadro combinado Tamaño de fuente (Foundation Class)

Categoría | Formato de texto
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Text Formatting
Clase | _cbofontsize
Clase de base | ComboBox
Biblioteca de clases | _format.vcx
Clase primaria | _combobox
Ejemplo | ...\Samples\Solution\Toolbars\format.scx

Observaciones

Esta clase es un cuadro combinado que enumera los tamaños de fuente disponibles. También la utilizan las clases tbrEditing y RTFControls de _format.scx.

Para utilizarla, coloque la clase en un proyecto o en un formulario, o desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro coloca un cuadro combinado en el formulario para que pueda especificar los valores del tamaño de las fuentes de los objetos del formulario activo. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Propiedades, eventos, métodos | Descripción
Propiedad nSmallestFont | Para las fuentes escalables, especifica el tamaño mínimo permitido de las fuentes. Valor predeterminado: 8
Propiedad nLargestFont | Para las fuentes escalables, especifica el tamaño máximo permitido de las fuentes. Valor predeterminado: 48

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Barra de herramientas Formato (Foundation Class)

Categoría | Formato de texto
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Text Formatting
Clase | _tbrediting
Clase de base | Toolbar
Biblioteca de clases | _format.vcx
Clase primaria | _toolbars
Ejemplo | ...\Samples\Solution\Toolbars\format.scx

Observaciones

Esta clase, cuando está incluida en un formulario, proporciona una barra de herramientas para aplicar formatos de fuente al texto del control activo.

Para utilizarla, arrastre la clase al proyecto o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto. Al agregar la clase a un proyecto, puede elegir entre agregar la clase o crear una subclase.

Propiedades, eventos, métodos | Descripción
Propiedad nAppliesTo | Especifica el alcance del formato. 1 = se aplica al control seleccionado 3 = se aplica a todos los controles Valor predeterminado: 1

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


FRX a HTML (Foundation Class)

Categoría | Internet
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Internet
Clase | _frx2html
Clase de base | Custom
Biblioteca de clases | _internet.vcx
Clase primaria | _custom
Ejemplo | ...\Samples\Solution\Ffc\dohtml.scx

Observaciones

Esta clase convierte un informe de Visual FoxPro (.FRX) en HTML. La clase incluye propiedades que controlan el alcance, el diseño visual y la generación de código HTML. Para obtener más información, vea Genhtml.prg.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro abre un generador para que pueda especificar los valores apropiados de cSource, cOutFile, nGenOutput y lAutonameOutput. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos Descripción
Propiedad cOutFile Especifica el nombre del archivo HTML que se va a crear.
Valor predeterminado: ""
Propiedad cSource Especifica el archivo de origen desde el que se va a generar el código HTML.
Valor predeterminado: ""
Propiedad nGenOutput Opciones de resultado de _GENHTML.
Valor predeterminado: 20 = Generar archivo de resultados.
1 = Generar y presentar el archivo de resultados en el editor de Visual FoxPro.
2 = Generar y presentar el archivo de resultados en Internet Explorer.
3 = Generar y presentar el archivo de resultados después de presentar el cuadro de diálogo Guardar como.
4 = Crear un objeto PUBLIC _oHTML y generar un archivo.
5 = Crear un objeto PUBLIC _oHTML sin generar un archivo.
Propiedad lAutoNameOutput Especifica si _GENHTML tiene que asignar
automáticamente el nombre del archivo de
resultados, basado en el nombre del
origen.
Valor predeterminado: .T.
Propiedad cScope Especifica el alcance (por ejemplo, NEXT o ALL) del resultado.
Valor predeterminado: ""
Propiedad cStyle Especifica el estilo visual definido en el campo Id. de Genhtml.dbf.
Valor predeterminado: ""
Método GenHTML Genera código HTML al invocar el programa
Genhtml.prg mediante los valores de las
propiedades cSource, cOutput y
nGenOutFile.
Sintaxis: GenHTML( )
Valor devuelto: ninguno
Argumentos: ninguno

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Obtener archivos y directorios (Foundation Class)

Categoría | Interfaz de usuario
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\User Controls
Clase | _carpeta
Clase de base | Container
Biblioteca de clases | _controls.vcx
Clase primaria | _container
Ejemplo | ...\Samples\Solution\Ffc\getproject.scx

Observaciones

Este cuadro de diálogo obtiene el nombre de un archivo y el de una carpeta. Se utiliza para crear nuevos proyectos en directorios con el mismo nombre.

Para utilizarla, arrastre la clase y colóquela en un proyecto o en un formulario. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase. Al colocar la clase en un formulario, Visual FoxPro coloca los controles de la clase en el formulario, incluido un botón Examinar.

Propiedades, eventos, métodos | Descripción
Propiedad cLastProjectFile | Componente interno de la clase.
Propiedad cExt | Componente interno de la clase.
Propiedad TrimFile | Componente interno de la clase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Botón del cuadro de diálogo Ir a (Foundation Class)

Categoría | Desplazamiento en datos
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Buttons
Clase | _gotobutton
Clase de base | CommandButton
Biblioteca de clases | _table2.vcx
Clase primaria | _dialogbutton
Ejemplo | ...\Samples\Solution\Ffc\Buttons.scx

Observaciones

Esta clase crea un botón que presenta el cuadro de diálogo Ir a para poder desplazarse hasta un registro específico.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al colocar la clase en un formulario, Visual FoxPro coloca un botón en el formulario. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Cuadro de diálogo Ir a (Foundation Class)

Categoría | Desplazamiento en datos
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Data Navigatio n
Clase | _gotodialog
Biblioteca de clases | _table.vcx
Clase primaria | _form
Ejemplo | ...\Samples\Solution\Ffc\datanav.scx

Observaciones

Esta clase crea un cuadro de diálogo Ir a registro.

Para utilizarla, arrastre la clase y colóquela en un proyecto o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Crear formulario. Al colocar la clase en un proyecto, puede elegir entre agregar la clase, crear una subclase o crear un formulario. Al colocar la clase en un proyecto o elegir Crear un nuevo formulario a partir de la clase seleccionada en el menú contextual, Visual FoxPro abre un generador para que pueda especificar el nombre del formulario y, a continuación, crea y abre el formulario en el Diseñador de formularios.

_GoToDialog es un cuadro de diálogo modal con un miembro _TableNav y un control numérico para permitir que el usuario especifique un número de registro. Cuando se hace clic en Aceptar, el método GoToRecord va al registro especificado, y después ejecuta el método RefreshLastWindowAfterChange para actualizar la pantalla. Observe que GoToRecord( ) actualiza la pantalla incluso si la tabla no permite la exploración, en el caso de deshacer una modificación.

_GoToDialog utiliza _TableNav para determinar el alias actual al iniciarse. Después establece las propiedades SpinnerLowValue y KeyboardLowValue del control numérico en 1, y SpinnerHighValue y KeyboardHighValue en RECCOUNT( ). También establece el valor de la propiedad Value.

Propiedades, eventos, métodos | Descripción
Método RefreshUIAfterChange | Componente interno de la clase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Gráfico por registro (Foundation Class)

Categoría | Automatización
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Automation
Clase | _graphbyrec
Clase de base | Container
Biblioteca de clases | _utility.vcx
Clase primaria | _container
Ejemplo | ...\Samples\Solution\Ffc\automate.scx

Observaciones

Esta clase contenedor crea gráficos en el registro, al contrario que la clase AutoGraph, que crea gráficos a partir de un cursor de Visual FoxPro. La clase incluye también un conjunto de botones para recorrer los registros y actualizar dinámicamente el gráfico.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario del entorno de datos, Visual FoxPro abre un generador para que pueda especificar los valores de nChartType y cLblField para los puntos y las etiquetas de los ejes del gráfico. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Propiedades, eventos, métodos Descripción
Propiedad cLblField Especifica el título de la etiqueta del registro.
Valor predeterminado: ""
Propiedad nChartType Especifica el tipo del gráfico. Los valores válidos son:
1 = Áreas
2 = Áreas 3D
3 = Barras
4 = Barras 3D
5 = Columnas
6 = Columnas 3D
7 = Circular
8 = Circular 3D
9 = Líneas
10 = Líneas 3D

Valor predeterminado: 4
Propiedad lSeriesByRow Especifica si la serie se va a presentar por fila.
Valor predeterminado: .T.
Propiedad aDataFields[1] Especifica la matriz de los campos de datos que se van a procesar.
Valor predeterminado: .F.
Método SetupGraph Inicializa los controles del gráfico.
Sintaxis: SetupGraph( )
Valor devuelto: ninguno
Argumentos: ninguno
Método RefreshGraph Actualiza el gráfico cuando se mueve el puntero de los registros.
Sintaxis: RefreshGraph( )
Valor devuelto: ninguno
Argumentos: ninguno

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Objeto Graph (Foundation Class)

Categoría | Automatización
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Automation
Clase | autograph
Clase de base | Custom
Biblioteca de clases | autograph.vcx
Clase primaria | Automation
Ejemplo | ...\Samples\Solution\Ffc\Automate.scx

Observaciones

Esta clase personalizada genera un gráfico a través de la automatización de MS Graph, mediante el motor del Asistente para gráficos.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro abre un generador para que pueda especificar los valores de cOutputfile, nChartType, lAddLegend y lSeriesByRow. También puede utilizar la clase Autograph y especificar los valores de los campos, el tipo de gráfico, el formulario de vista previa y el nombre predeterminado en el código del programa. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Propiedad aDataFields[1,1] Especifica el nombre de un campo numérico de la tabla de destino (el valor del eje “Y”).
Valor predeterminado: .F.
Propiedad cCategoryField Especifica un campo de la tabla de destino (el eje “X”).
Valor predeterminado: .F.
Propiedad cOutFile Nombre del archivo de resultados, si lo hubiera.
Valor predeterminado: ""
Propiedad cTitle Título del gráfico.
Valor predeterminado: ""
Propiedad lCurrRec Especifica si se va a retener el número del
registro actual, si se hace el gráfico de un
solo registro.
Valor predeterminado: .F.
Propiedad lAddedData Indica si los datos se agregan para aumentar el rendimiento.
Valor predeterminado: .F.
Propiedad lAddLegend Agrega una leyenda al gráfico.
Valor predeterminado: .T.
Propiedad lAddTitle Agrega un título al gráfico.
Valor predeterminado: .T.
Propiedad lGraphRecord Especifica si el gráfico es del registro actual. El valor predeterminado es crear el gráfico para todo el cursor.
Valor predeterminado: .F.
Propiedad lKeepForm Especifica si se van a utilizar el formulario y el control OLE proporcionados por el usuario.
Valor predeterminado: .F.
Propiedad lSeriesByRow Presenta una serie por fila o por columna.
Valor predeterminado: .T.
Propiedad lShowNulls Presenta valores nulos en el gráfico.
Valor predeterminado: .T.
Propiedad lShowWhenDone Especifica si se va a presentar una vista preliminar del formulario.
Valor predeterminado: .T.
Propiedad lUse8Type Especifica si se va a utilizar la propiedad nChartType.
Valor predeterminado: .F.
Propiedad lUseAutoformat Utiliza la galería de gráficos automáticos de MS Graph.
Valor predeterminado: .F.
Propiedad nAction Especifica el tipo de resultado:
0 = vista previa
1 = guardar en un formulario
2 = guardar en una tabla
3 = guardar en una consulta

Valor predeterminado: 1
Propiedad nChartAutoformat Formato automático del gráfico.
Valor predeterminado: 2
Propiedad nChartAutoGallery Formato automático de la galería de gráficos.
Valor predeterminado: 1
Propiedad nChartSubType Subtipo de gráfico.
Valor predeterminado: 1
Propiedad nChartType Especifica el tipo del gráfico. Los valores válidos son:
1 = Áreas
2 = Barras
3 = Columnas
4 = Líneas
5 = Circular
6 = Anillos
7 = Radial
8 = XY (Dispersión)
9 = Áreas 3D
10 = Barras 3D
11 = Columnas 3D
12 = Líneas 3D
13 = Circular 3D
-4102 = Circular 3D

Valor predeterminado: 1
Propiedad nGraphVersion Versión de Graph que se va a utilizar.
Valor predeterminado: 5
Propiedad cDefNewField | Componente interno de la clase.
Propiedad cGraphDBF | Componente interno de la clase.
Propiedad cGraphField | Componente interno de la clase.
Propiedad cGraphFldCol | Componente interno de la clase.
Propiedad cGraphFldRow | Componente interno de la clase.
Propiedad cGraphPrevClass | Componente interno de la clase.
Propiedad cLastDataCol | Componente interno de la clase.
Propiedad cLastDataRow | Componente interno de la clase.
Propiedad cOLEServer | Componente interno de la clase.
Propiedad cOpenAlias | Componente interno de la clase.
Propiedad cOutGenField | Componente interno de la clase.
Propiedad GraphPreview | Componente interno de la clase.
Propiedad lAutograph | Componente interno de la clase.
Propiedad lDontStripLegend | Componente interno de la clase.
Propiedad lHadPreview | Componente interno de la clase.
Propiedad lReplaceDBF | Componente interno de la clase.
Propiedad lStripExcessLegend | Componente interno de la clase.
Propiedad nDataCount | Componente interno de la clase.
Propiedad nDataSeries | Componente interno de la clase.
Propiedad nLastAction | Componente interno de la clase.
Propiedad nTotalDataFlds | Componente interno de la clase.
Propiedad oGraphRef | Componente interno de la clase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Botón Ayuda (Foundation Class)

Categoría | Botones varios
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Buttons
Clase | _cmdHelp
Clase de base | CommandButton
Biblioteca de clases | _miscbtns.vcx
Clase primaria | _commandbutton
Ejemplo | ...\Samples\Solution\Ffc\buttons.scx

Observaciones

Esta clase proporciona un botón que, al hacer clic sobre el mismo, muestra un tema de Ayuda mediante la búsqueda en el HelpContextID especificado en el control.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al formulario. Si agrega la clase a un formulario, Visual FoxPro inserta un botón en el formulario. Debe establecer el valor apropiado que sustituya el valor predeterminado de HelpContextID. Si coloca la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Botón Hipervínculo (Foundation Class)

Categoría | Internet
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Internet
Clase | _hyperlinkcommandbutton
Clase de base | CommandButton
Biblioteca de clases | _hyperlink.vcx
Clase primaria | _commandbutton
Ejemplo | ...\Samples\Solution\Ffc\buttons.scx

Observaciones

Esta clase proporciona la funcionalidad del objeto Hyperlink e inicia un explorador Web cuando se hace clic en un botón.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Si agrega la clase a un formulario, Visual FoxPro abre un generador para que pueda especificar el nombre del botón y la dirección URL asociada. Si coloca la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Propiedad cTarget | Especifica la dirección URL que se va a utilizar. Valor predeterminado: ""
Método GoBack | Ejecuta el salto al hipervínculo anterior de la lista Historial. Sintaxis: GoBack( ) Valor devuelto: ninguno Argumentos: ninguno
Método GoForward | Ejecuta el salto al hipervínculo siguiente de la lista Historial. Sintaxis: GoForward( ) Valor devuelto: ninguno Argumentos: ninguno
Propiedad cFrame | Componente interno de la clase.
Propiedad cHyperlinkClass | Componente interno de la clase.
Propiedad cHyperlinkClassLibrary | Componente interno de la clase.
Propiedad cLocation | Componente interno de la clase.
Propiedad lFormSynch | Componente interno de la clase.
Propiedad lHyperlinkCreated | Componente interno de la clase.
Propiedad lNewWindow | Componente interno de la clase.
Propiedad lVisited | Componente interno de la clase.
Propiedad nVisitedForecolor | Componente interno de la clase.
Propiedad oHyperlink | Componente interno de la clase.
Método cTarget_assign | Componente interno de la clase.
Método Follow | Componente interno de la clase.
Método lVisited_assign( ) | Componente interno de la clase.
Método nVisitedForecolor_assign( ) | Componente interno de la clase.
Método oHyperlink_access( ) | Componente interno de la clase.
Método ShowVisitedForecolor( ) | Componente interno de la clase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Imagen Hipervínculo (Foundation Class)

Categoría | Internet
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Internet
Clase | _hyperlinkimage
Clase de base | Image
Biblioteca de clases | _hyperlink.vcx
Clase primaria | _image
Ejemplo | ...\Samples\Solution\Ffc\hyperlnk.scx

Observaciones

Esta clase proporciona la funcionalidad del objeto Hyperlink e inicia un explorador Web cuando se hace clic en una imagen.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro abre un generador para que pueda especificar el nombre de la imagen y la dirección URL asociada. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Propiedad cTarget | Especifica la dirección URL que se va a utilizar. Valor predeterminado: ""
Método GoBack | Ejecuta el salto al hipervínculo anterior de la lista Historial. Sintaxis: GoBack( ) Valor devuelto: ninguno Argumentos: ninguno
Método GoForward | Ejecuta el salto al hipervínculo siguiente de la lista Historial. Sintaxis: GoForward( ) Valor devuelto: ninguno Argumentos: ninguno
Propiedad cFrame | Componente interno de la clase.
Propiedad cHyperlinkClass | Componente interno de la clase.
Propiedad cHyperlinkClassLibrary | Componente interno de la clase.
Propiedad cLocation | Componente interno de la clase.
Método cTarget_assign | Componente interno de la clase.
Método Follow | Componente interno de la clase.
Propiedad lFormsSynch | Componente interno de la clase.
Propiedad lHyperlinkcreated | Componente interno de la clase.
Propiedad lNewWindow | Componente interno de la clase.
Propiedad lVisited | Componente interno de la clase.
Propiedad oHyperlink | Componente interno de la clase.
Método oHyperlink_access | Componente interno de la clase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Etiqueta Hipervínculo (Foundation Class)

Categoría | Internet
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Internet
Clase | _hyperlinklabel
Clase de base | Label
Biblioteca de clases | _hyperlink.vcx
Clase primaria | _label
Ejemplo | ...\Samples\Solution\Ffc\hyperlnk.scx

Observaciones

Esta clase proporciona la funcionalidad del objeto Hyperlink e inicia un explorador Web cuando se hace clic en una etiqueta.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro abre un generador para que pueda especificar la etiqueta y la dirección URL (en la propiedad cTarget) asociada. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Propiedad cTarget | Especifica la dirección URL que se va a utilizar Valor predeterminado: ""
Método GoBack | Ejecuta el salto al hipervínculo anterior de la lista Historial. Sintaxis: GoBack( ) Valor devuelto: ninguno Argumentos: ninguno
Método GoForward | Ejecuta el salto al hipervínculo siguiente de la lista Historial. Sintaxis: GoForward( ) Valor devuelto: ninguno Argumentos: ninguno
Propiedad cFrame | Componente interno de la clase.
Propiedad cHyperlinkClass | Componente interno de la clase.
Propiedad cHyperlinkClassLibrary | Componente interno de la clase.
Propiedad cLocation | Componente interno de la clase.
Método cTarget_assign | Componente interno de la clase.
Método Follow | Componente interno de la clase.
Propiedad lFormsSynch | Componente interno de la clase.
Propiedad lHyperlinkcreated | Componente interno de la clase.
Propiedad lNewWindow | Componente interno de la clase.
Propiedad lVisited | Componente interno de la clase.
Propiedad oHyperlink | Componente interno de la clase.
Método oHyperlink_access | Componente interno de la clase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Acceso a INI (Foundation Class)

Categoría | Utilidades de sistema
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Utilities
Clase | oldinireg
Clase de base | Custom
Biblioteca de clases | Registry.vcx
Clase primaria | registry

Observaciones

Esta clase proporciona un conjunto de funciones del registro que tienen acceso a los valores de los archivos INI antiguos.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro coloca la clase en el formulario. A continuación, puede especificar los valores de las propiedades y proporcionar los objetos de entrada y de salida que necesite. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Propiedades, eventos, métodos | Descripción
Método GetINIEntry | Obtiene información de una entrada INI. Sintaxis: GetINIEntry(cValue, cSection, cEntry, cINIFile) Argumentos: cValue especifica el valor que se va a aplicar a cEntry. cSection especifica la sección del archivo .ini en la que se encuentra cEntry. cEntry especifica el elemento que se va a asignar a cValue. cINIFile especifica el nombre del archivo .ini.
Método GetINISection | Obtiene información de la sección INI. Sintaxis: GetINISection(@aSections, cSection, cINIFile) Argumentos: aSections especifica una matriz de cSections incluida en el archivo .ini. cSection especifica la sección del archivo cINIfile que se va a recuperar. cINIFile especifica el nombre del archivo .ini.
Método LoadINIFuncs | Carga las funciones necesarias para leer los archivos .ini. Sintaxis: LoadINIFuncs( ) Valor devuelto: ninguno Argumentos: ninguno
Método WriteINIEntry | Escribe una entrada INI específica. Sintaxis: WriteINIEntry(cValue, cSection, cEntry, cINIFile) Argumentos: cValue especifica el nuevo valor. cSection especifica la sección del archivo cINIfile que se va a recuperar. cINIFile especifica el nombre del archivo .ini.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Localizador de elementos (Foundation Class)

Categoría | Formularios varios
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Dialogs
Clase | _locateitem
Clase de base | Form
Biblioteca de clases | _dialogs.vcx
Clase primaria | _dialog
Ejemplo | ...\Samples\Solution\Ffc\dialogs.scx

Observaciones

Esta clase proporciona un cuadro de diálogo Buscar archivo. Se ha diseñado para buscar archivos necesarios para su aplicación y que ésta no puede encontrar.

Para utilizarla, arrastre la clase y colóquela en un proyecto o, desde el menú Acceso directo a elementos, seleccione Crear formulario o Crear formulario. Si coloca la clase en un proyecto, puede elegir entre agregar la clase, crear una subclase o crear un formulario. Si agrega la clase a un formulario, Visual FoxPro presenta un cuadro de diálogo Abrir donde puede especificar el nombre del formulario y, a continuación, crea y abre el formulario en el Diseñador de formularios.

En la propiedad cDefaultFileName, especifique el archivo que desee recuperar. Si no se puede encontrar el archivo, el objeto oLocateItem abre un cuadro de diálogo Obtener archivo para que pueda encontrarlo.

Propiedades, eventos, métodos | Descripción
Propiedad cDefaultFileName | El nombre del archivo para buscar. Valor predeterminado: .NULL.
Propiedad cFilename | El nombre del archivo devuelto por el botón Encontrar. Cuando no se encuentra ningún archivo, aparece el cuadro de diálogo Obtener archivo. Valor predeterminado: .NULL.
Objeto oLocateItem | Una referencia de objeto que contiene el valor devuelto establecido en la propiedad cFileName. Valor predeterminado: .F.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Cuadro de diálogo Palabras clave (Foundation Class)

Categoría | Formularios varios
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Dialogs
Clase | _keywords
Clase de base | Form
Biblioteca de clases | dialogs.vcx
Clase primaria | _dialog
Ejemplo | ...\Samples\Solution\Ffc\dialogs.scx

Observaciones

Esta clase crea un cuadro de diálogo que presenta una lista de palabras clave especificada, como el cuadro de diálogo de las palabras clave de la Galería de componentes.

Para utilizarla, arrastre la clase y colóquela en un proyecto o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Crear formulario. Al colocar la clase en un proyecto, puede elegir entre agregar la clase, crear una subclase o crear un formulario. Al colocar la clase en un proyecto o elegir Crear un nuevo formulario a partir de la clase seleccionada en el menú contextual, Visual FoxPro abre un generador para que pueda especificar el nombre del formulario y, a continuación, crea y abre el formulario en el Diseñador de formularios.

De forma predeterminada, el cuadro de diálogo utiliza el archivo Keywords.dbf de la Galería de componentes. Se puede especificar un archivo de palabras clave propio en la propiedad cTablename. También puede proporcionar un conjunto de palabras clave en una lista delimitada por comas asignada a la propiedad cKeywords.

Propiedades, eventos, métodos | Descripción
Propiedad cKeywords | Especifica el grupo de palabras clave delimitadas por espacios que se van a buscar en la tabla especificada en cTableName. Valor predeterminado: ""
Propiedad cTableName | Especifica el nombre de la tabla que contiene las palabras clave. Valor predeterminado: (IIF(VERSION(2)=0,"",HOME( )+"gallery\")+"keywords.dbf"))
Objeto oKeywords | El objeto que obtiene la lista de palabras clave establecidas en la propiedad cKeywords. Valor predeterminado: .F.
Método Apply | Presenta las palabras clave especificadas por la propiedad cKeywords desde la tabla especificada en cTableName. Sintaxis: Apply( ) Valor devuelto: ninguno Argumentos: ninguno
Propiedad lAddMode | Componente interno de la clase.
Propiedad lUpdated | Componente interno de la clase.
Propiedad cLastValue | Componente interno de la clase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Botón Iniciar (Foundation Class)

Categoría | Botones varios
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Buttons
Clase | _cmdLaunch
Clase de base | CommandButton
Biblioteca de clases | _miscbtns.vcx
Clase primaria | _commandbutton
Ejemplo | ...\Samples\Solution\Ffc\buttons.scx

Observaciones

Este botón inicia una aplicación mediante el comando RUN.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro abre un generador para que pueda especificar el valor apropiado de cFileName. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Propiedades, eventos, métodos | Descripción
Propiedad cFileName | Especifica el nombre del archivo que se va a iniciar. Valor predeterminado: ""

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Botón Encontrar (Foundation Class)

Categoría | Consulta de datos
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Data Query
Clase | _locatebutton
Clase de base | CommandButton
Biblioteca de clases | _table2.vcx
Clase primaria | _dialogbutton
Ejemplo | ...\Samples\Solution\Ffc\dataqry.scx

Observaciones

Este botón presenta un cuadro de diálogo para buscar un registro.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro coloca un botón que abre el cuadro de diálogo Encontrar. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Cuadro combinado Búsqueda (Foundation Class)

Categoría Consulta de datos Catálogo predeterminado Visual FoxPro Catalog\Foundation Classes\Data Query Clase _cbolookup Clase de base ComboBox Biblioteca de clases _dataquery.vcx Clase primaria _combobox Ejemplo ...\Samples\Solution\Ffc\datalook2.scx

Observaciones

Esta clase recopila los valores de un campo para agregarlos a un cuadro combinado.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro abre un generador para que pueda especificar los valores apropiados de Lookup_table, Order_column, Display_column y Return_column. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Propiedades, eventos, métodos | Descripción
Propiedad Display_column | Especifica la columna de la tabla Lookup_table cuyo valor se va a presentar en la lista desplegable. Valor predeterminado: ""
Propiedad Lookup_table | Especifica la tabla en la que se encuentra la columna que contiene los valores que se van a presentar en la lista desplegable. Valor predeterminado: ""
Propiedad Return_column | Especifica el valor de la columna (0, 1 ó 2) que se devuelve a la propiedad Value del cuadro combinado. Valor predeterminado: ""
Propiedad Order_column | Especifica la columna por la que se van a ordenar los registros presentados en la lista desplegable (opcional). Valor predeterminado: ""

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Objeto Combinar correspondencia (Foundation Class)

Categoría | Automatización
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Automation
Clase | mailmerge
Clase de base | Custom
Biblioteca de clases | mailmrge.vcx
Clase primaria | Automation
Ejemplo | ...\Samples\Solution\Ffc\Automate.scx

Observaciones

Esta clase personalizada utiliza el motor del Asistente para combinar correspondencia para generar un documento de combinación de correspondencia de Microsoft Word.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, tiene que especificar la tabla FROM (cDataPath), la ubicación y la versión de Word (cExe y cWordVersion), y los valores de otras propiedades necesarias. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Propiedades, eventos, métodos | Descripción
Propiedad AWPMrg[2,0] | Matriz de procedimientos para controlar los distintos estilos de combinación. Valor predeterminado: .F.
Propiedad cDataFile | Una copia de FoxPro 2.6 de una tabla de Visual FoxPro 3.0 o posterior. Valor predeterminado: ""
Propiedad cDataPath | Especifica la ruta de acceso de la tabla FROM. Valor predeterminado: ""
Propiedad cDataSrc | Especifica el origen de datos de la conexión ODBC. Valor predeterminado: ""
Propiedad cDocName | Especifica el nombre del archivo .doc existente. Valor predeterminado: ""
Propiedad cExe | Especifica la ruta de acceso completa de la aplicación Word. Valor predeterminado: ""
Propiedad cODBCSource | Especifica la cadena de conexión ODBC. Valor predeterminado: ""
Propiedad cSaveFile | Especifica el archivo que controla los datos combinados. Valor predeterminado: ""
Propiedad cSQLstmt | La instrucción SQL que extrae los datos. Valor predeterminado: ""
Propiedad cSQLstmt2 | Especifica una instrucción SQL adicional, si la longitud de cSQLstmt es superior a 255 caracteres (para Word). Valor predeterminado: ""
Propiedad cWordVersion | Especifica la versión de Word que está instalada (por ejemplo, “8”). Valor predeterminado: ""
Propiedad lAlerted | Especifica si se ha enviado una alerta de error. Valor predeterminado: .F.
Propiedad lEnglish | Comprueba si Word reconoce comandos de Word Basic en inglés. Valor predeterminado: .F.
Propiedad lHasVerWord | Comprueba la presencia de Word. Valor predeterminado: .F.
Propiedad nNewDoc | Indica si se va a utilizar un documento nuevo (vea Mailmrge.h). Valor predeterminado: 1
Propiedad nTemplate | Especifica el tipo del documento principal. Sólo se aplica a Word. Vea Mailmrge.h. Valor predeterminado: 1
Propiedad nWordProc | Especifica el procesador de texto seleccionado. Vea Mailmrge.h. Valor predeterminado: 1
Propiedad SysCh | Especifica un canal DDE. Valor predeterminado: -1
Método CheckVer | Comprueba la versión de Word que se va a utilizar. Componente interno de la clase. Sintaxis: CheckVer( ) Valor devuelto: ninguno Argumentos: ninguno
Método GetMSW | Obtiene la línea de comando de Word desde el registro. Sintaxis: GetMSW(m.cversion) Valor devuelto: la ruta de acceso completa de Word Argumentos: m.cversion especifica la versión de Word que se va a utilizar.
Método MrgCommaDel | Genera un archivo de texto delimitado por comas a partir de los datos. Sintaxis: MrgCommaDel( ) Valor devuelto: un archivo delimitado por comas Argumentos: ninguno
Método MrgWord | Determina las versiones de Word que se van a utilizar en la combinación. Sintaxis: MrgWord( ) Valor devuelto: ninguno Argumentos: ninguno
Método MSWerr | El controlador de errores que se va a utilizar en la ejecución de AppleScript. Sintaxis: MSWerr( ) Valor devuelto: ninguno Argumentos: ninguno
Método GetSQLst | Obtiene la instrucción SQL que extrae los datos. Componente interno de la clase. Sintaxis: GetSQLst( ) Valor devuelto: ninguno Argumentos: ninguno
Método PrepData | Determina el tipo del origen de datos que se va a utilizar en la combinación y normaliza los datos para su proceso. Componente interno de la clase. Sintaxis: PrepData( ) Valor devuelto: ninguno Argumentos: ninguno
Método SaveSQL | Genera una tabla de resultados SQL. Componente interno de la clase. Sintaxis: SaveSQL( ) Valor devuelto: ninguno Argumentos: ninguno
Método WzMMData | Copia los datos a un archivo de texto. Componente interno de la clase. Sintaxis: WzMMData( ) Valor devuelto: ninguno Argumentos: ninguno
MakeFieldList | Componente interno de la clase.
MailMergeWord8 | Componente interno de la clase.
MailMergeWord6 | Componente interno de la clase.
MSWmldlg | Componente interno de la clase.
StartWord | Componente interno de la clase.
MailMergeMacWord6 | Componente interno de la clase.
Método MMCleanup | Cierra archivos. Componente interno de la clase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Controlador de cuadro de mensaje (Foundation Class)

Categoría | Formularios varios
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Utilities
Clase | _msgbox
Clase de base | Custom
Biblioteca de clases | _dialogs.vcx
Clase primaria | _custom

Observaciones

Esta clase proporciona un envoltorio sencillo a la función MessageBox para poder presentar con facilidad cuadros de mensaje de tipos especificados y con contenidos alternativos.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, tiene que especificar los valores apropiados del mensaje (cMessage), el tipo del cuadro de mensaje (nType) y los valores de otras propiedades necesarias. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Propiedad cMessage | Especifica el texto del cuadro de mensaje. Valor predeterminado: ""
Propiedad nType | Especifica el tipo del cuadro de mensaje. Para conocer las opciones, vea MessageBox( ). Valor predeterminado: 48
Propiedad cTitle | Especifica el texto del título del cuadro de mensaje. Valor predeterminado: _screen.caption
Propiedad lBeep | Especifica si se emite un sonido al activar el cuadro de mensaje. Valor predeterminado: .F.
Método Show | Presenta un cuadro de mensaje y devuelve el resultado del cuadro de diálogo. Sintaxis: Show(tcMessage, tnType, tcTitle, tlBeep) Valor devuelto: this.Display( ) Argumentos: tcMessage especifica el texto que aparece en el cuadro de diálogo. tnType especifica las opciones de los botones y los iconos, el botón predeterminado y el comportamiento del cuadro de diálogo. tcTitle especifica el texto que aparece en la barra de título del cuadro de diálogo. tlBeep especifica si la presentación del cuadro de diálogo va acompañada de un sonido de alerta.
Método Set | Establece las propiedades de mensaje, tipo, título y sonido de alerta del cuadro de diálogo. Componente interno de la clase. Sintaxis: Set(tcMessage, tnType, tcTitle, tlBeep, tnParameters) Valor devuelto: ninguno Argumentos: tcMessage especifica el texto que aparece en el cuadro de diálogo. tnType especifica las opciones de los botones y los iconos, el botón predeterminado y el comportamiento del cuadro de diálogo. tcTitle especifica el texto que aparece en la barra de título del cuadro de diálogo. tlBeep especifica si la presentación del cuadro de diálogo va acompañada de un sonido de alerta.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Utilidad Microsoft Agent (Foundation Class)

Categoría Utilidades de sistema Catálogo predeterminado Visual FoxPro Catalog\Foundation Classes\Utilities Clase _agent Clase de base Custom Biblioteca de clases _agent.vcx Clase primaria _custom Ejemplo ...\Samples\Solution\Ffc\Agent.scx

Observaciones

Esta clase proporciona acceso a las rutinas de la API de Microsoft Agent, con lo que se pueden integrar agentes (parecidos a los Ayudantes de Office), como Peedy el periquito, en las aplicaciones.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro coloca el icono de la clase en el formulario. Puede especificar los valores de las propiedades y proporcionar los objetos de entrada y de salida que necesite. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Propiedad ActiveAgent | Especifica el nombre del agente activo. Valor predeterminado: .F.
Propiedad AgentControl | Proporciona un puntero al objeto del agente. Valor predeterminado: .F.
Propiedad ErrorOccurred | Especifica si se produjo un error. Valor predeterminado: .F.
Propiedad ErrorState | Determina el estado del control durante un error. Valor predeterminado: LOAD
Método GestureAt | Provoca que el agente activo haga un gesto en determinado momento. Sintaxis: GestureAt(tnX, tnY, tnCoords, toObj) Valor devuelto: .F., si no existe ActiveAgent Argumentos: tnX especifica la coordenada x. tnY especifica la coordenada y. tnCoords si las coordenadas son locales o internacionales. toObj especifica la referencia del objeto para la conversión LocalToWorld.
Método Hide | Oculta el agente activo. Sintaxis: Hide( ) Valor devuelto: .F., si no existe ActiveAgent Argumentos: ninguno
Método Interrupt | Interrumpe una animación. Sintaxis: Interrupt(toRequest) Valor devuelto: .F., si no existe ActiveAgent Argumentos: toRequest especifica el objeto de petición.
Método Load | Carga un personaje del agente desde una ubicación determinada, que puede ser un archivo o una dirección URL. Sintaxis: Load(tcAgentName, tcAgentLocation) Valor devuelto: .F., si no existe ActiveAgent Argumentos: tcAgentName especifica el nombre del agente tcAgentLocation especifica el archivo del agente.
Método LocalToWorld | Convierte coordenadas locales a internacionales. Sintaxis: LocalToWorld(tnAxis, tnPos, toObj) Valor devuelto: valor convertido de tnPos Argumentos: tnAxis especifica el eje. tnPos especifica la coordenada del eje. toObj especifica el objeto relativo a la conversión.
Método MoveBy | Mueve el agente activo según los valores pasados en la dirección x o y. Sintaxis: MoveBy(tnX, tnY, tnCoords, toObj) Valor devuelto: .F., si no existe ActiveAgent Argumentos: tnX especifica la coordenada x. tnY especifica la coordenada y. tnCoords especifica si las coordenadas son locales o internacionales. toObj referencia de objeto para la conversión LocalToWorld.
Método MoveTo | Mueve el agente predeterminado o el agente pasado a la ubicación especificada. Sintaxis: MoveTo(tnX, tnY, tnCoords, toObj) Valor devuelto: .F., si no existe ActiveAgent Argumentos: tnX especifica la coordenada x. tnY especifica la coordenada y. tnCoords especifica si las coordenadas son locales o internacionales. toObj referencia de objeto para la conversión LocalToWorld.
Método Play | Provoca que el agente ejecute una animación. Sintaxis: Play(tcAnimation) Valor devuelto: .F., si no existe ActiveAgent o una referencia de objeto requerida (Request Object reference) Argumentos: tcAnimation especifica la animación que se ejecuta.
Método SetActiveAgent | Establece el agente activo en el nombre del agente pasado. Sintaxis: SetActiveAgent(tcAgentName) Valor devuelto: .F., si no existe ActiveAgent Argumentos: tcAgentName especifica el nombre del agente
Método Show | Muestra el agente activo. Sintaxis: Show(tnX, tnY, tnCoords, toObj) Valor devuelto: .F., si no existe ActiveAgent Argumentos: tnX especifica la coordenada x tnY especifica la coordenada y tnCoords especifica si las coordenadas son locales o internacionales. toObj referencia de objeto para la conversión LocalToWorld.
Método Speak | Provoca que el agente activo pronuncie la frase pasada. Sintaxis: Speak(tcText) Valor devuelto: .F., si no existe ActiveAgent o una referencia de objeto requerida Argumentos: tcText especifica el texto que pronunciará.
Método Stop | Detiene una animación en modo continuo. Sintaxis: Stop( ) Valor devuelto: .F., si no existe ActiveAgent Argumentos:
Método Wait | Espera a que se complete una petición. Sintaxis: Wait(toRequest) Valor devuelto: .F., si no existe ActiveAgent Argumentos: toRequest especifica el objeto de la petición.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Efectos MouseOver (Foundation Class)

Categoría | Interfaz de usuario
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\User Controls
Clase | _mouseoverfx
Clase de base | Custom
Biblioteca de clases | _ui.vcx
Clase primaria | _custom
Ejemplo | ...\Samples\Solution\Ffc\mousefx.scx

Observaciones

Esta clase resalta un control cuando se arrastra el ratón sobre ella.

Para utilizarla, coloque la clase en un proyecto o en un formulario, o desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, tiene que especificar los valores del resaltado (iHighlightColor y nHighlightWidth) y los valores de otras propiedades necesarias, y después incluya una referencia al método HighlightMe en el evento MouseMove del control al que lo desee aplicar. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Propiedad nMargin | Especifica el borde entre el control y el resaltado. Valor predeterminado: 2
Propiedad iShadowColor | Especifica el código de color de la sombra. Valor predeterminado: 0
Propiedad lMouseOverHost | Especifica si el ratón se encuentra sobre el contenedor mousefx. Valor predeterminado: .T.
Propiedad nHighlightWidth | Especifica el ancho del resaltado. Valor predeterminado: 2
Propiedad iHighlightColor | Especifica el código de color del resaltado. Valor predeterminado: 0
Método CancelHighlight | Utiliza el valor de lMouseOverHost para determinar si hay un objeto resaltado que requiera ser modificado. Establece oCurrentCoolControl en .NULL. y devuelve verdadero (.T.) cuando lMouseOver indica que el control actual acaba de cambiar. Sus subclases pueden examinar este valor devuelto o el estado de lMouseOverHost y oCurrentCoolControl para "extraer" sus propios efectos especiales de los controles Cool en los momentos apropiados. Sintaxis: CancelHighlight (toObject) Valor devuelto: lChange Argumentos: toObject especifica el objeto afectado por el evento MouseOver. lChange especifica si el control actual ha cambiado.
Método HighlightMe | Establece .oCurrentCoolControl, el control actual, en la referencia de objeto especificada por toObject. Devuelve verdadero (.T.) cuando tiene que actuar porque el control actual acaba de cambiar. Devuelve falso (.F.) si no tiene que actuar porque no hay cambios en el control actual. Sus subclases pueden utilizar la propiedad oCurrentCoolControl y el valor devuelto por este método para decidir si tienen que actuar, lo que proporciona otros efectos especiales, quizás específicos para clases especiales de “controles actuales”. Sintaxis: HighlightMe(toObject) Valor devuelto: lChange Argumentos: toObject especifica el objeto afectado por el evento MouseOver. lChange especifica si el control actual ha cambiado.
Propiedad oCurrentCoolControl | Componente interno de la clase. Valor predeterminado: ""

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Selector (Foundation Class)

Categoría | Selectores
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\User Controls
Clase | _mover
Clase de base | Container
Biblioteca de clases | _mover.vcx
Clase primaria | _container
Ejemplo | ...\Samples\Solution\Ffc\movers.scx

Observaciones

Cuando está incluida en un proyecto o en un formulario, esta clase proporciona un cuadro de lista selector simple con los botones Mover y Quitar.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro coloca los controles de cuadro de lista y los botones de movimiento de la clase en el formulario. A continuación, puede especificar los valores de las propiedades y proporcionar los objetos de entrada y de salida que necesite. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Propiedad aChoices[1,0] | La matriz de opciones disponibles en el cuadro de lista izquierdo. Valor predeterminado: .F.
Propiedad aSelections[1,0] | La matriz de elementos seleccionados en el cuadro de lista derecho. Valor predeterminado: .F.
Propiedad UseArrays | Especifica si se van a utilizar matrices en los cuadros de lista. Valor predeterminado: .T.
Método InitChoices | Inicializa la matriz de opciones. Sintaxis: InitChoices(@aChoices) Valor devuelto: ninguno Argumentos: aChoices especifica la matriz de las opciones iniciales.
Método InitSelections | Inicializa la matriz de selecciones. Sintaxis: InitSelections(@aSelections) Valor devuelto: ninguno Argumentos: aSelections especifica la matriz de las selecciones iniciales.
Método GetSelections | Obtiene los elementos seleccionados. Sintaxis: GetSelections(@aSelections) Valor devuelto: ninguno Argumentos: aSelections especifica el nombre de la matriz que contiene las selecciones.
Método PopList | Rutina que llena los cuadros de lista. Sintaxis: PopList(@aListArray, oLstRef) Valor devuelto: ninguno Argumentos: aListArray especifica los elementos con que se va a llenar la lista. oLstRef es una referencia al objeto control.
Propiedad OldlSelectedItem | Componente interno de la clase.
Propiedad OldrSelectedItem | Componente interno de la clase.
Propiedad SortLeft | Componente interno de la clase.
Propiedad Updated | Componente interno de la clase.
Método SizeToContainer | Componente interno de la clase.
Método ValidItem | Componente interno de la clase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Menú contextual de desplazamiento (Foundation Class)

Categoría | Menús
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\User Controls
Clase | _navmenu
Clase de base | Container
Biblioteca de clases | _table2.vcx
Clase primaria | _container
Ejemplo | ...\Samples\Solution\Ffc\datasort.scx

Observaciones

Esta clase es un menú contextual que puede incluirse en formularios y que contiene elementos con opciones para el desplazamiento, ordenación, filtrado y búsqueda de datos. Esta clase se invoca desde el evento RightClick de los formularios.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro le pide automáticamente que agregue el código necesario para implementar el menú contextual. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Propiedad cClass | Especifica la clase del cuadro de diálogo que contiene el menú contextual. Valor predeterminado: ""
Propiedad cClasslib | Especifica la biblioteca de clases que contiene la clase del cuadro de diálogo que a su vez contiene el menú contextual. Valor predeterminado: ""
Método DoMenu | Ejecuta la rutina de un menú. Sintaxis: DoMenu( ) Valor devuelto: ninguno Argumentos: ninguno
Método RefreshForm | Actualiza el formulario activo cuando los datos se actualizan. Sintaxis: RefreshForm( ) Valor devuelto: ninguno Argumentos: ninguno
Método DeleteRecord | Elimina el registro actual. Sintaxis: DeleteRecord( ) Valor devuelto: ninguno Argumentos: ninguno
Método AddRecord | Agrega un nuevo registro. Sintaxis: AddRecord( ) Valor devuelto: ninguno Argumentos: ninguno
Método DoFilter | Presenta un cuadro de diálogo de filtro. Sintaxis: DoFilter( ) Valor devuelto: ninguno Argumentos: ninguno
Método DoGoto | Muestra el cuadro de diálogo Ir a. Sintaxis: DoGoto( ) Valor devuelto: ninguno Argumentos: ninguno
Método DoSort | Presenta un cuadro de diálogo Ordenar. Sintaxis: DoSort( ) Valor devuelto: ninguno Argumentos: ninguno
Método DoDialog | Presenta un cuadro de diálogo. Sintaxis: DoDialog( ) Valor devuelto: ninguno Argumentos: ninguno
Método SetMenu | Especifica el contenido del menú mediante código que utilice expresiones AddMenuBar( ). Sintaxis: SetMenu( ) Valor devuelto: ninguno Argumentos: ninguno
Método DoFilter2 | Presenta un cuadro de diálogo Filtro avanzado. Sintaxis: DoFilter2( ) Valor devuelto: ninguno Argumentos: ninguno

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Barra de herramientas de desplazamiento (Foundation Class)

Categoría | Desplazamiento en datos
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Data Navigation
Clase | _navtoolbarclass
Clase de base | Container
Biblioteca de clases | _table2.vcx
Clase primaria | _container
Ejemplo | ...\Samples\Solution\Ffc\datasort.scx

Observaciones

Esta clase proporciona un conjunto de botones de desplazamiento de datos y otros controles en una barra de herramientas.

Para utilizarla, arrastre la clase y colóquela en un proyecto o en un formulario de entornos de datos o, desde el menú de Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro establece las conexiones automáticamente. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Esta clase difiere de los botones de desplazamiento en que proporciona una ventana de resultado además de los botones de desplazamiento.

Propiedades, eventos, métodos | Descripción
Propiedad oToolbar | Componente interno de la clase.
Propiedad cClassLib | Componente interno de la clase.
Propiedad cClass | Componente interno de la clase.
Propiedad nLastTop | Componente interno de la clase.
Propiedad nLastLeft | Componente interno de la clase.
Propiedad lDocked | Componente interno de la clase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Estado de objeto (Foundation Class)

Categoría | Aplicación
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Application
Clase | _objectstate
Clase de base | Custom
Biblioteca de clases | _app.vcx
Clase primaria | _custom
Ejemplo | ...\Samples\Solution\Ffc\environ.scx

Observaciones

Esta clase determina el estado de un objeto. Guarda o recupera los valores de las propiedades de un objeto, de forma automática o de forma explícita.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, tiene que incluir los objetos de entrada y de salida que necesite. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Propiedad aProperties[1,3] | La matriz que guarda o restablece las propiedades de oObject. Valor predeterminado: .F.
Propiedad lAutomatic | Especifica si las propiedades de oObject se han guardado y restablecido. Si este atributo es verdadero (.T.), el objeto _ObjectState establecerá todos los atributos guardados para su destino cuando _ObjectState se destruya. Valor predeterminado: .F.
oObject | Referencia al objeto destino cuyo estado se va a guardar. Valor predeterminado: .NULL.
Método Restore | Restablece el valor de una propiedad de oObject si el valor se ha modificado. Si no se pasa tcWhichProperty, se restablecen todas las propiedades de oObject. (Este método se invoca sin argumentos en el evento _ObjectState.Destroy( ) cuando _ObjectState.lAutomatic es verdadero (.T.). Sintaxis: Restore(tcWhichProperty) Valor devuelto: tcSave Argumentos: tcWhichProperty especifica la propiedad que se va a restablecer. tcSave especifica el valor que se va a restablecer.
Método Save | Guarda el valor actual de una propiedad de oObject. Puede utilizarlo en lugar del argumento tlSave del método Set. Sintaxis: Save(tcProperty, tcTypeValue) Valor devuelto: ninguno Argumentos: tcProperty especifica la propiedad a la que se tiene acceso. tcTypeValue especifica el valor de tcProperty que se va a guardar.
Método Set | Establece un nuevo valor en una propiedad oObject. Sintaxis: Set(tcProperty, tvValue, tlSave) Valor devuelto: Argumentos: tcProperty especifica la propiedad que se va a establecer. tvValue especifica el valor que se va a establecer en tcProperty. tlSave especifica si el valor actual se va a guardar para su futuro restablecimiento.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Registro ODBC (Foundation Class)

Categoría | Utilidades de sistema
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Utilities
Clase | _odbcreg
Clase de base | Custom
Biblioteca de clases | _registry.vcx
Clase primaria | registry
Ejemplo | ...\Samples\Solution\WinAPI\regodbc.scx

Observaciones

Esta clase proporciona un conjunto de funciones del registro que devuelven información específica de ODBC, como controladores y orígenes de datos.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro coloca la clase en el formulario. A continuación, puede especificar los valores de las propiedades y proporcionar los objetos de entrada y de salida que necesite. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Método LoadODBCFuncs | Carga las funciones del registro para ODBC. Sintaxis: LoadODBCFuncs( ) Valor devuelto: ninguno Argumentos: ninguno
Método GetODBCDrvrs | Obtiene controladores ODBC. Sintaxis: GetODBCDrvrs(@aDrvrs, lDataSources) Valor devuelto: nRetVal Argumentos: aDrvrs especifica, en una matriz, los controladores que se van a recuperar. lDataSources especifica si se va a tener acceso a los orígenes de datos.
Método EnumODBCDrvrs | Enumera los controladores ODBC. Sintaxis: EnumODBCDrvrs(@aDrvrOpts, cODBCDriver) Valor devuelto: aDrvrOpts, m.cSourceKey, HKEY_LOCAL_MACHINE, .F. Argumentos: aDrvrOpts especifica las opciones de los controladores disponibles. cODBCDriver especifica el nombre del controlador.
Método EnumODBCData | Enumera los orígenes de datos ODBC. Sintaxis: EnumODBCData(@aDrvrOpts, cDataSource) Valor devuelto: aDrvrOpts, m.cSourceKey, HKEY_CURRENT_USER, .F.) Argumentos: aDrvrOpts especifica las opciones de los controladores disponibles. cDataSource especifica el nombre del origen de datos.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Conmutador sin conexión (Foundation Class)

Categoría | Modificación de datos
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Data Query
Clase | _offline
Clase de base | Container
Biblioteca de clases | _dataquery.vcx
Clase primaria | Container

Observaciones

El conmutador sin conexión funciona en las bases de datos que contengan vistas remotas. Esta clase proporciona un conjunto de botones que conmutan entre el uso de datos en línea y fuera de línea.

Para utilizarla, arrastre la clase y colóquela en un proyecto o en un formulario de entornos de datos o, desde el menú de Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro coloca los botones de la clase en el formulario y abre un generador para que pueda especificar los valores de lUseCurrentDBC, lAllViews, lUpdateViews y lRevertOnFail. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Propiedad cDatabase | Especifica el nombre de la base de datos que contiene las vistas que se van a desconectar. Valor predeterminado: .F.
Propiedad cViews[1,0] | Especifica la matriz de vistas que se van a procesar. Valor predeterminado: .F.
Propiedad lAllViews | Especifica si se van a utilizar automáticamente todas las vistas de la base de datos. Valor predeterminado: .F.
Propiedad lRevertOnFail | Especifica si se van a deshacer todas las vistas si una falla al desconectarse. Valor predeterminado: .T.
Propiedad lUpdateViews | Especifica si se van a actualizar todas las vistas al conectarse. Valor predeterminado: .T.
Propiedad lUseCurrentDBC | Especifica si se va a utilizar la base de datos actualmente abierta al iniciar. Valor predeterminado: .T.
Método GoOffLine | Desconecta las vistas especificadas en la matriz cViews. Sintaxis: GoOffLine( ) Valor devuelto: ninguno Argumentos: ninguno
Método GoOnLine | Conecta las vistas especificadas en la matriz cViews. Sintaxis: GoOnLine( ) Valor devuelto: ninguno Argumentos: ninguno
Método CheckOffLine | Examina si las vistas están conectadas o desconectadas. Sintaxis: CheckOffLine( ) Valor devuelto: ninguno Argumentos: ninguno
Método Alert | Presenta un cuadro de mensaje que contiene cMessage. Sintaxis: Alert(cMessage) Valor devuelto: m.cMessage Argumentos: cMessage especifica el texto del mensaje de alerta.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Botón Aceptar (Foundation Class)

Categoría | Botones varios
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Buttons
Clase | _cmdOK
Clase de base | CommandButton
Biblioteca de clases | _miscbtns.vcx
Clase primaria | _commanbutton
Ejemplo | ...\Samples\Solution\Ffc\buttons.scx

Observaciones

Esta clase libera un formulario y actualiza los datos pendientes del búfer.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro coloca un botón en el formulario. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Control Output (Foundation Class)

Categoría | Informes
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Output
Clase | _outputchoices
Clase de base | Container
Biblioteca de clases | _reports.vcx
Clase primaria | _output
Ejemplo | ...\Samples\Solution\Ffc\output.scx

Observaciones

Esta clase proporciona controles que le solicitan una opción de resultado de un informe. A través del objeto Report, también le permite seleccionar el informe que desee imprimir.

Para utilizarla, arrastre la clase y colóquela en un proyecto o en un formulario de entornos de datos o, desde el menú de Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro coloca la clase en el formulario. A continuación, puede incluir los objetos de entrada y de salida que necesite. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Cuadro de diálogo Resultados (Foundation Class)

Categoría | Informes
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Output
Clase | _outputdialog
Clase de base | Form
Biblioteca de clases | _reports.vcx
Clase primaria | _form
Ejemplo | ...\Samples\Solution\Ffc\output.scx

Observaciones

Esta clase utiliza el objeto Report para presentar un cuadro de diálogo que pide al usuario una opción de resultado del informe.

Para utilizarla, arrastre la clase y colóquela en un proyecto o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Crear formulario. Al colocar la clase en un proyecto, puede elegir entre agregar la clase, crear una subclase o crear un formulario. Si elige Crear un nuevo formulario, Visual FoxPro abre un generador para que pueda especificar el nombre del formulario y, a continuación, crea y abre el formulario en el Diseñador de formularios.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Propiedad cAlias | Especifica el nombre del origen de datos que se va a presentar. Valor predeterminado: ""
Propiedad cDestination | Especifica la lista de destinos disponibles, que se modifica dinámicamente si cReport, cAlias o ambos contienen valores. Valor predeterminado: ""
Propiedad cDisplayFontName | Especifica el nombre de un resultado en pantalla; por ejemplo, cuando se ejecuta BROWSE o cuando se crea una instancia de la clase _Showtext para presentar texto. Valor predeterminado: .F.
Propiedad cFieldList | Especifica una lista de campos o expresiones delimitados por comas. Sólo afecta a orígenes de datos directos (comandos BROWSE y LIST). Valor predeterminado: ""
Propiedad cHTMLClass | Especifica una clase HTML opcional y la biblioteca de clases pasada a _GENHTML. Valor predeterminado: ""
Propiedad cHTMLStyleID | Especifica el estilo HTML opcional pasado a _GENHTML. Valor predeterminado: .F.
Propiedad cReport | Especifica el nombre del informe o de las etiquetas que se van a ejecutar. Valor predeterminado: ""
Propiedad cScope | Especifica una expresión de alcance válida para el resultado. Valor predeterminado: .F.
Propiedad lAddSourceNameToDropdown | Especifica si algunos destinos se presentan en la matriz aDestinations. Valor predeterminado: .F.
Propiedad lPreventScopeChanges | Especifica si puede modificar el alcance del resultado. Valor predeterminado: .F.
Propiedad lPreventSourceChanges | Especifica si se impiden las modificaciones en los orígenes en cAlias o cReport. Valor predeterminado: .F.
Método cAlias_access | Componente interno de la clase.
Método cAlias_assign | Componente interno de la clase.
Método cDestination_access | Componente interno de la clase.
Método cDestination_assign | Componente interno de la clase.
Método cDisplayFontName_access | Componente interno de la clase.
Método cDisplayFontName_assign | Componente interno de la clase.
Método cFieldList_access | Componente interno de la clase.
Método cFieldList_assign | Componente interno de la clase.
Método CheckOKButton | Componente interno de la clase.
cHTMLClass_access | Componente interno de la clase.
cHTMLClass_assign | Componente interno de la clase.
cHTMLStyleID_access | Componente interno de la clase.
cHTMLStyleID_assign | Componente interno de la clase.
Método cReport_access | Componente interno de la clase.
Método cReport_assign | Componente interno de la clase.
Método cScope_access | Componente interno de la clase.
Método cScope_assign | Componente interno de la clase.
Método lAddSourceNameToDropdown_access | Componente interno de la clase.
Método lAddSourceNameToDropdown_assign | Componente interno de la clase.
Método lPreventScopeChanges_assign | Componente interno de la clase.
Método lPreventSourceChanges_access | Componente interno de la clase.
Método lPreventSourceChanges_assign | Componente interno de la clase.
Método RespondToPermissionForScopeChanges | Componente interno de la clase.
Método RespondToPermissionForSourceChanges | Componente interno de la clase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Objeto Output (Foundation Class)

Categoría | Informes
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Output
Clase | _output
Clase de base | Container
Biblioteca de clases | _reports.vcx
Clase primaria | _container
Ejemplo | ...\Samples\Solution\Ffc\output.scx

Observaciones

Éste es un objeto de informes genérico que proporciona una amplia gama de opciones de origen y destino de informes y etiquetas, o directamente de un origen de datos.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro coloca la clase en el formulario. A continuación, puede especificar los valores de las propiedades y proporcionar los objetos de entrada y de salida que necesite. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Propiedad aDestinations[1,2] | La matriz de destinos. Valor predeterminado: .F.
Propiedad aOptions[1,2] | La matriz de opciones de resultado del destino. Valor predeterminado: .F.
Propiedad cAlias | Especifica el origen de datos que se va a utilizar en los formatos sin informe o etiqueta. El valor predeterminado de esta propiedad es el alias actual, si lo hubiera. Valor predeterminado: ""
Propiedad cDestination | Especifica la lista de destinos disponibles que se modifica periódicamente si cReport, cAlias o ambos contienen valores. La lista de destinos disponibles se guarda en la matriz aDestinations. Valor predeterminado: "PRINTREPORT"
Propiedad cDisplayFontName | Especifica una fuente en pantalla para el resultado; por ejemplo, al ejecutar BROWSE o al crear una instancia de la clase _Showtext para mostrar texto. Valor predeterminado: Courier New
Propiedad cFieldList | Especifica una lista de campos o expresiones delimitados por comas. Sólo afecta a orígenes de datos directos (comandos BROWSE y LIST). Valor predeterminado: ""
Propiedad cHtmlClass | Especifica una clase HTML opcional y la biblioteca de clases pasada a _GENHTML. Valor predeterminado: ""
Propiedad cHtmlStyleId | Especifica el estilo HTML opcional pasado a _GENHTML. Valor predeterminado: ""
Propiedad cOption | Especifica la lista de opciones disponibles, que cambia dinámicamente para ajustarse al cDestination actual. Valor predeterminado: WINDEFAULT
Propiedad cReport | Especifica un formulario de etiquetas o de informes adaptable al resultado de Visual FoxPro. Valor predeterminado: ""
Propiedad cScope | Especifica una cadena de macro ampliada que se agregará al comando que ejecuta el resultado actual. Tiene que tener un alcance válido, como "FOR lExpression". Valor predeterminado: ""
Propiedad cTextFile | Especifica el nombre de archivo de todos los destinos de resultado que vayan al disco, que incluyen archivos de texto, archivos imagen de impresora y formatos de exportación. Valor predeterminado: ""
Propiedad cVFPPrinterName | Especifica el nombre de la impresora predeterminada actual de Visual FoxPro, que no es la impresora predeterminada de Windows. Valor predeterminado: ""
Propiedad lAddSourceNameToDropdown | Especifica si algunos destinos se presentan en la matriz aDestinations. Valor predeterminado: .T.
Propiedad lPreventSourceChanges | Impide modificaciones en los orígenes cAlias o cReport. Valor predeterminado: .F.
Método CopyTable | Exporta a una tabla. Sintaxis: CopyTable( ) Valor devuelto: Argumentos:
Método GenHTML | Genera código HTML con el programa Genhtml.prg. Sintaxis: GenHTML( ) Valor devuelto: ninguno Argumentos: ninguno
Método Output | Especifica el método principal que se utiliza para generar el resultado de acuerdo con la configuración. Sintaxis: Output(liSelect) Valor devuelto: Argumentos: liSelect especifica el destino de resultado.
Método OutputToScreen | Presenta el resultado en la pantalla. Sintaxis: OutputToScreen( ) Valor devuelto: ninguno Argumentos: ninguno
Método SetDestinations | Evalúa el entorno actual para llenar la matriz de destinos de resultado. Sintaxis: SetDestinations( ) Valor devuelto: lSuccess Argumentos: ninguno
Método SetOptions | Evalúa el entorno actual para poblar la matriz de opciones de los destinos de resultado. Sintaxis: SetOptions( ) Valor devuelto: lSuccess Argumentos: ninguno
Método cAlias_assign | Componente interno de la clase.
Método cDestination_assign | Componente interno de la clase.
Método cDisplayFontName_assign | Componente interno de la clase.
Método cOption_assign | Componente interno de la clase.
Método cReport_assign | Componente interno de la clase.
Método cScope_assign | Componente interno de la clase.
Método cVFPPrinterName_access | Componente interno de la clase.
Método lPreventSourceChanges_assign | Componente interno de la clase.
Método PrintList | Componente interno de la clase.
Método PrintReport | Componente interno de la clase.
Método SetOutputPrinter | Componente interno de la clase.
Método SetVFPPrinter | Componente interno de la clase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Cuadro de diálogo Contraseña (Foundation Class)

Categoría | Formularios varios
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Dialogs
Clase | _login
Clase de base | Form
Biblioteca de clases | _dialogs.vcx
Clase primaria | _form
Ejemplo | ...\Samples\Solution\Ffc\dialogs.scx

Observaciones

Esta clase es un sencillo cuadro de diálogo de introducción de contraseñas para aplicaciones personalizadas.

Para utilizarla, arrastre la clase y colóquela en un proyecto o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Crear formulario o Agregar al proyecto. Al colocar la clase en un proyecto, puede elegir entre agregar la clase, crear una subclase o crear un formulario. Si elige Crear un nuevo formulario a partir de la clase seleccionada, Visual FoxPro abre un generador para que pueda especificar el nombre del formulario de inicio de sesión y, a continuación, crea y abre el formulario en el Diseñador de formularios.

Propiedades, eventos, métodos | Descripción
Propiedad cAlias | Especifica el alias de la tabla de contraseñas. Valor predeterminado: ""
Propiedad cFieldName | Especifica el nombre del campo que contiene el nombre del usuario. Valor predeterminado: ""
Propiedad cPassword | Especifica el nombre del campo que contiene la contraseña del usuario. Valor predeterminado: ""
Propiedad cTable | Especifica el nombre de la tabla que contiene la información de la contraseña del usuario. Valor predeterminado: ""

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Pool Manager (Foundation Class)

Categoría | Información de la Clase
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Application
Clase | _poolmanager
Clase Base | Custom
Biblioteca de Clases | _poolmanager.vcx
Clase Padre | Custom
Ejemplo | ...\Samples\Solution\Ffc\_PoolManager.scx

Observaciones

El Administrador maneja un conjunto, o colección de objetos, de una única clase. Cuando necesite utilizar un objeto repetidamente por un corto tiempo, utilice la clase Pool Manager. Esta clase trabaja mejor, si crear una instancia del objeto toma más tiempo que obtener una instancia existente. Esto generalmente es el caso para los siguientes tipos de clases:

  • Clases pesadas como la clase Form de Visual FoxPro
  • Clases que contienen código intensivo de recursos en el evento Init del formulario
  • Clases que utilizan recursos externos tales como una conexión de base de datos, servidor de automatización, o Servicios Web XML

Puede agregar la clase Pool Manager al Diseñador de clase o formulario, o al proyecto, desde la Barra de herramientas. Cuando agregue la clase Pool Manager al proyecto, puede agregar la clase o crear una subclase.

La clase Pool Manager utiliza la clase base Collection de Visual FoxPro para almacenar referencias de objetos. Para mas información, vea Collection (Clase).

Para más información sobre utilizar foundation classes, vea Directrices para utilizar Visual FoxPro Foundation Classes.

Propiedades, Eventos, Métodos Descripción
cClass (propiedad) Nombre de la clase conjunto. También puede establecer esta propiedad pasándola como el primer parámetro cuando cree el objeto pool manager.

Predeterminado: Ninguno
cClassLibrary (propiedad) Biblioteca que contiene la clase conjunto. La propiedad cClassLibrary puede apuntar a una biblioteca de clases visual o a un archivo de programa.

Puede cambiar esta propiedad pasándola como el segundo parámetro cuando cree el objeto pool manager.

Predeterminado: Ninguno
lRaiseEvent (propiedad) Si Verdadero (.T.), activa los eventos ObjectRequested y ObjectReturned. Si no necesita estos eventos, establezca esta propiedad a Falso (.F.) para incrementar el rendimiento.

Predeterminado: .T.
nObjectsCreated (propiedad) Se incrementa cada vez que se crea un objeto

Predeterminado: 0
Get (método) Devuelve una referencia de objeto a un objeto conjunto. Todos los parámetros se pasan al evento Init del objeto creado recientemente y al evento ObjectRequested.

Sintaxis: Get( Param1, Param2, …)

Devuelve: Objeto

Argumentos: Debe pasar parámetros por valor y no puede pasar matrices a un objeto conjunto.
Free (método) Regresa un objeto al conjunto, dejándolo disponible para la siguiente llamada al método Get.

Sintaxis: Free(@oObject)

Devuelve: Ninguno

Argumentos: oObject es una referencia de objeto obtenida previamente del método Get. El objeto puede pasarse por referencia.
ObjectRequested (evento) Se desencadena cuando se solicita un objeto.

Puede utilizar este evento para inicializar un objeto basado en los parámetros actuales. Cuando se enlaza un objeto conjunto a este evento, el evento se activa para cada objeto, no sólo para el objeto conjunto en sí mismo.

Sintaxis: ObjectRequested( oObject, Param1, Param2, …)

Devuelve: Ninguno

Argumentos: oObject es una referencia a un objeto conjunto que se devuelve a quien lo llama. Todos los parámetros del método Get se pasan a este evento como parámetros adicionales.
ObjectReturned (evento) Se desencadena cuando se devuelve un objeto al conjunto al llamar el método Free. Cuando un objeto conjunto se enlaza a este evento, el evento se activa para cada objeto, no sólo para el objeto conjunto en sí mismo.

Sintaxis: ObjectReturned(oObject)

Devuelve: Ninguno

Argumentos: oObject es una referencia a el objeto conjunto.

Vea también

Foundation Classes de Visual FoxPro (A-Z) | Pool Manager (Ejemplo) | Ejemplos Foundation Classes de Visual FoxPro


Tabla dinámica (Foundation Class)

Categoría | Automatización
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Automation
Clase | pivottable
Clase de base | Custom
Biblioteca de clases | pivtable.vcx
Clase primaria | Automation
Ejemplo | ...\Samples\Solution\Ffc\Automate.scx

Observaciones

Esta clase personalizada utiliza el motor del Asistente para tablas dinámicas para generar una tabla dinámica en Excel a partir de datos de FoxPro.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario en entornos de datos, Visual FoxPro abre un generador para que pueda especificar los valores de cPivFldCol, cPivFldRow, cPivFldPage, cPivFldData, lHasColumnTotals y lHasRowTotals. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Propiedad CheckState Especifica si el estado de Microsoft Excel se va a comprobar mediante una rutina de error.
Valor predeterminado: .F.
Propiedad cOutFile Especifica el nombre del archivo de resultados.
Valor predeterminado: ""
Propiedad cPivFldCol Especifica el nombre del campo que
identifica cada columna de la tabla
dinámica.
Valor predeterminado: ""
Propiedad cPivFldData Especifica el nombre del campo presentado
como datos de tabla dinámica.
Valor predeterminado: ""
Propiedad cPivFldPage Especifica el nombre del campo que
determina las páginas de la tabla dinámica.
Valor predeterminado: ""
Propiedad cPivFldRow Especifica el nombre del campo cuyos
valores identifican cada fila de la tabla
dinámica.
Valor predeterminado: ""
Propiedad lHasColumnTotals Especifica si se van a totalizar las columnas.
Valor predeterminado: .F.
Propiedad lHasRowTotals Especifica si se van a totalizar las filas.
Valor predeterminado: .F.
Propiedad nAction Especifica la acción de resultado que se va a ejecutar.
Acción de resultado:
1 = hoja de cálculo de Microsoft Excel
2 = formulario de Visual FoxPro

Valor predeterminado: 1
Método GetXLPath Comprueba la existencia de Microsoft Excel
en el registro.
Sintaxis: GetXLPath( )
Valor devuelto: ninguno
Argumentos: ninguno
Método MSQueryCheck Comprueba la existencia de MS Query en el
registro.
Sintaxis: MSQueryCheck( )
Valor devuelto: ninguno
Argumentos: ninguno
Método PivotOutput Crea un resultado de tabla dinámica de
Microsoft Excel.
Sintaxis: PivotOutput( )
Valor devuelto: ninguno
Argumentos: ninguno
Propiedad aFldList[1,1] | Componente interno de la clase.
Propiedad cFormName | Componente interno de la clase.
Propiedad cFormSCX | Componente interno de la clase.
Método CheckFldLen | Componente interno de la clase.
Método GetDOSName | Componente interno de la clase.
Propiedad lHasMSQry32 | Componente interno de la clase.
Propiedad lHasNoTask | Componente interno de la clase.
Propiedad lIsNumeric | Componente interno de la clase.
Propiedad SkipError | Componente interno de la clase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Vista previa del informe (Foundation Class)

Categoría | Botones varios
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Buttons
Clase | _cmdRunReport
Clase de base | CommandButton
Biblioteca de clases | _miscbtns.vcx
Clase primaria | _commandbutton
Ejemplo | ...\Samples\Solution\Ffc\buttons.scx

Observaciones

Esta clase proporciona un botón genérico que ejecuta un informe directamente o a través de la clase del cuadro de diálogo Resultados.

Para utilizarla, coloque la clase en un proyecto o en un formulario, o desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro abre un generador para que pueda especificar los valores de cFileName y lSetCaption. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Propiedad cDialogClass | Especifica la clase del cuadro de diálogo Resultados. Valor predeterminado: _OutputDialog
Propiedad cDialogClasslib | Especifica la biblioteca de la clase del cuadro de diálogo Resultados. Valor predeterminado: (IIF(VERSION(2)=0,"",HOME( )+"FFC\")+"_REPORTS.VCX"))
Propiedad cFilename | Especifica el nombre del formulario que se va a ejecutar. Valor predeterminado: ""
Propiedad cOutputDialogAlias | Especifica el nombre del alias del cuadro de diálogo Resultados. Valor predeterminado: ""
Propiedad lOutputDialogPreventScope | Especifica si se impiden los cambios en el alcance del cuadro de diálogo. Valor predeterminado: .F.
Propiedad lOutputDialogPreventSource | Especifica si se impiden los cambios en el alias o informe del cuadro de diálogo. Valor predeterminado: .F.
Propiedad lPromptForReport | Especifica si se pide el nombre del informe. Valor predeterminado: .T.
Propiedad lSetCaption | Especifica si el título va a estar basado en el valor de cFileName. Valor predeterminado: .T.
Propiedad lUseOutputDialog | Especifica si se va a presentar el cuadro de diálogo Resultados de Foundation Classes. Valor predeterminado: .T.
Método ShowOutputDialog | Presenta el cuadro de diálogo Resultados de Foundation Classes. Sintaxis: ShowOutputDialog( ) Valor devuelto: ninguno Argumentos: ninguno

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro | Cuadro de diálogo Resultados


QBF (Foundation Class)

Categoría | Consulta de datos
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Data Query
Clase | _qbf
Clase de base | Container
Biblioteca de clases | _dataquery.vcx
Clase primaria | _container
Ejemplo | ...\Samples\Solution\Forms\qbf.scx

Observaciones

Esta clase proporciona un conjunto de botones para consultas del tipo Consulta mediante formulario (QBF).

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro coloca los botones de comando QBF en el formulario. A continuación, puede especificar los valores de las propiedades y proporcionar los objetos de entrada y de salida que necesite. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Propiedades, eventos, métodos | Descripción
Propiedad QBF_Table | Especifica la tabla en la que se va a ejecutar la consulta. Valor predeterminado: ""
Método ParseCondition( ) | Especifica un filtro basado en una consulta. Sintaxis: ParseCondition(cCondition, cControlSource) Valor devuelto: lcRetCondition Argumentos: cControlSource especifica los datos asociados al control. cCondition especifica la expresión de consulta.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Acceso al registro (Foundation Class)

Categoría | Utilidades de sistema
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Utilities
Clase | registry
Clase de base | Custom
Biblioteca de clases | _registry.vcx
Clase primaria | registry
Ejemplo | ...\Samples\Solution\WinAPI\regfox.scx

Observaciones

Esta clase proporciona acceso a la información del registro de Windows.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro coloca la clase en el formulario. A continuación, puede especificar los valores de las propiedades y proporcionar los objetos de entrada y de salida que necesite. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Método CloseKey | Cierra una clave del registro. Sintaxis: CloseKey( ) Valor devuelto: ninguno Argumentos: ninguno
Método DeleteKey | Elimina una clave del registro. Sintaxis: DeleteKey(nUserKey, cKeyPath) Valor devuelto: ninguno Argumentos: nUserKey especifica la clave del usuario del registro. cKeyPath especifica la ruta de acceso a la clave del usuario del registro.
Método DeleteKeyValue | Elimina un valor de una clave del registro. Sintaxis: DeleteKeyValue(cOptName, cKeyPath, nUserKey) Valor devuelto: Argumentos: cOptName especifica el nombre de la opción de la clave del registro. cKeyPath especifica la ruta de acceso a la clave del registro. nUserKey especifica la clave de usuario.
Método EnumKeys | Enumera una clave del registro. Sintaxis: EnumKeys(@aKeyNames) Valor devuelto: Argumentos: aKeyNames especifica las claves del registro a enumerar.
Método EnumKeyValues | Enumera los valores de una clave del registro. Sintaxis: EnumKeyValues(@aKeyValues) Valor devuelto: Argumentos: aKeyValues especifica los valores de la clave del usuario del registro a enumerar.
Método EnumOptions | Enumera todas las entradas de una clave y llena una matriz con sus valores. Sintaxis: EnumOptions(@aRegOpts, cOptPath, nUserKey, lEnumKeys) Valor devuelto: Argumentos: aRegOPts especifica la opción de la clave del registro. cOptPath especifica la ruta de acceso de la opción de la clave del registro. nUserKey especifica el Id. de la clave de usuario. lEnumKeys especifica si se van a enumerar otras opciones, si existieran.
Método GetKeyValue | Devuelve el valor de una clave. Sintaxis: GetKeyValue(cValueName, cKeyValue) Valor devuelto: Argumentos: cValueName especifica el nombre del valor a recuperar. cKeyValue especifica el valor de cValueName.
Método GetRegKey | Devuelve el valor de una clave del registro. Sintaxis: GetRegKey(cOptName, cOptVal, cKeyPath, nUserKey) Valor devuelto: Argumentos: cOptName especifica el nombre de la opción de clave del registro. cOptVal especifica el valor que se va a aplicar a la opción. cKeyPath especifica la ruta de acceso de la clave del registro. nUserKey especifica la clave de usuario.
Método IsKey | Devuelve si una clave especificada existe. Sintaxis: IsKey(cKeyName, nRegKey) Valor devuelto: Argumentos: cKeyName especifica el nombre de la clave de usuario a comprobar, si existe. nRegKey especifica el Id. de la clave del registro.
Método OpenKey | Abre una clave del registro. Sintaxis: Open(cLookUpKey, nRegKey, lCreateKey) Valor devuelto: Argumentos: cLookUpKey especifica el nombre de la clave de usuario que se va a buscar. nRegKey especifica el Id. de la clave del registro. lCreateKey especifica si se va a crear una nueva clave del registro si la especificada no existiera.
Método SetKeyValue | Establece el valor de una clave del registro. Sintaxis: SetKeyValue(cValueName, cValue) Valor devuelto: Argumentos: cValueName especifica el nombre del valor a establecer. cValue especifica el valor que se aplica a cValueName.
Método SetRegKey | Establece una clave del registro. Sintaxis: SetRegKey(cOptName, cOptVal, cKeyPath, nUserKey) Valor devuelto: Argumentos: cOptName especifica el nombre de la opción de la clave del registro. cOptVal especifica el valor a aplicar a la opción. cKeyPath especifica la ruta de acceso a la clave del registro. nUserKey especifica el Id. de clave de usuario.
Propiedad cAppPathKey | Componente interno de la clase.
Propiedad cIniDllFile | Componente interno de la clase.
Propiedad cODBCDllFile | Componente interno de la clase.
Propiedad cRegDllFile | Componente interno de la clase.
Propiedad cVfpOptPath | Componente interno de la clase.
Propiedad lCreateKey | Componente interno de la clase.
Propiedad lHadError | Componente interno de la clase.
Propiedad lLoaddedDlls | Componente interno de la clase.
Propiedad lLoadedInis | Componente interno de la clase.
Propiedad lLoadedOdbcs | Componente interno de la clase.
Propiedad nCurrentKey | Componente interno de la clase.
Propiedad nCurrentOS | Componente interno de la clase.
Propiedad nUserKey | Componente interno de la clase.
Método LoadRegFuncs | Componente interno de la clase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Expresiones regulares (Foundation Class)

Categoría | Utilidades de sistema
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Utilities
Clase | _regexp
Clase de base | Custom
Biblioteca de clases | _regexp.vcx
Clase primaria | _custom
Ejemplo | ...\Samples\Solution\Ffc\Regexp.scx

Observaciones

Las expresiones regulares son una notación flexible y concisa para buscar y reemplazar patrones de texto. Esta clase proporciona acceso a rutinas que permiten el uso de expresiones regulares en las aplicaciones.

Para obtener más información sobre el ejemplo, vea Buscar texto utilizando Expresiones regulares (Ejemplo). Para detalles generales sobre las expresiones regulares, se puede referir a MSDN.

Para utilizar Expresiones regulres de Foundation Class, coloque la clase en un proyecto o en un formulario, o desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro coloca el icono de la clase en el formulario. Puede especificar los valores de las propiedades y proporcionar los objetos de entrada y de salida que necesite. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Propiedades, eventos, métodos | Descripción
Matriz Matches | Especifica la matriz que contiene los resultados de la prueba de cadenas. Valor predeterminado: .F.
Propiedad Pattern | Contiene el patrón (expresión regular). Valor predeterminado: *
Método Clear | Borra todos los valores. Sintaxis: Clear( ) Valor devuelto: ninguno Argumentos:
Método Execute | Prueba el patrón con la cadena. Sintaxis: Execute(tcStr, tlCaseMatters) Valor devuelto: número de coincidencias Argumentos: tcStr especifica la cadena a buscar. tlCaseMatters especifica si se ignoran las mayúsculas.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Objeto Resize (Foundation Class)

Categoría Interfaz de usuario Catálogo predeterminado Visual FoxPro Catalog\Foundation Classes\User Controls Clase _resizable Clase de base Custom Biblioteca de clases _controls.vcx Clase primaria _custom Ejemplo ...\Samples\Solution\Forms\cresize.scx

Observaciones

Esta clase hace que los objetos colocados en un formulario cambien su tamaño y se muevan con el evento Resize del formulario.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, especifique el método AdjustControls en el evento Resize de los controles del formulario. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Propiedades, eventos, métodos | Descripción
Propiedad InitialResize | Especifica si los controles se han ajustado anteriormente. Valor predeterminado: .T.
Método AdjustControls | Ajusta la posición y el tamaño de los objetos contenidos después de un evento Resize. Sintaxis: AdjustControls( ) Valor devuelto: ninguno Argumentos: ninguno
Método Reset | Restablece el control Timer para que empiece a contar desde 0. Sintaxis: Reset( ) Valor devuelto: ninguno Argumentos: ninguno
Propiedad InitialFormHeight | Componente interno de la clase.
Propiedad InitialFormWidth | Componente interno de la clase.
Propiedad aControlStats[1,5] | Componente interno de la clase.
Método AddToArray | Componente interno de la clase.
Método SetSize | Componente interno de la clase.
Método LoopThroughControls | Componente interno de la clase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Controles RTF (Foundation Class)

Categoría | Formato de texto
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Text Formatting
Clase | _rtfcontrols
Clase de base | Container
Biblioteca de clases | _format.vcx
Clase primaria | _container
Ejemplo | ...\Samples\Solution\Toolbars\format.scx

Observaciones

Esta clase, cuando está incluida en un formulario, proporciona controles para aplicar formatos de fuente al texto del control activo.

Para utilizarla, coloque la clase en un proyecto o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un proyecto, puede elegir entre agregar la clase o crear una subclase. Al agregar la clase a un formulario, Visual FoxPro coloca los controles de cuadro combinado y botón en el formulario dentro del Diseñador de formularios.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Botón Ejecutar formulario (Foundation Class)

Categoría | Botones varios
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Buttons
Clase | _cmdRunForm
Clase de base | CommandButton
Biblioteca de clases | _miscbtns.vcx
Clase primaria | _commandbutton
Ejemplo | ...\Samples\Solution\Ffc\buttons.scx

Observaciones

Esta clase proporciona un botón genérico para ejecutar un formulario.

Para utilizarla, coloque la clase en un proyecto o en un formulario, o desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro abre un generador para que pueda especificar cFileName, el nombre del formulario que quiera ejecutar. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Propiedades, eventos, métodos | Descripción
Propiedad cFilename | Especifica el nombre del formulario que se va a ejecutar. Valor predeterminado: ""
Propiedad lSetCaption | Especifica si el título va a provenir automáticamente del valor de cFileName. Valor predeterminado: .T.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


SCX a HTML (Foundation Class)

Categoría | Internet
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Internet
Clase | _scx2html
Clase de base | Custom
Biblioteca de clases | _internet.vcx
Clase primaria | _custom
Ejemplo | ...\Samples\Solution\Ffc\dohtml.scx

Observaciones

Esta clase convierte un formulario de Visual FoxPro (.scx) en HTML. Esta clase proporciona propiedades que controlan el alcance, el diseño visual y la generación de HTML. Para obtener más información, vea Genhtml.prg.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro abre un generador para aceptar los valores actuales o especificar los valores apropiados de cSource, cOutFile y nGenOutput. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos Descripción
Propiedad cOutFile Especifica el nombre del archivo HTML de
resultados.
Valor predeterminado: ""
Propiedad cScope Especifica el alcance (por ejemplo, NEXT o
ALL, para el resultado).
Valor predeterminado: ""
Propiedad cSource Especifica el archivo .scx de origen a
partir del que se va a generar el archivo
HTML.
Valor predeterminado: ""
Propiedad cStyle Especifica el estilo visual definido en el
campo Id. de Genhtml.dbf.
Valor predeterminado: ""
Propiedad lAutoNameOutput Especifica si _GENHTML asigna
automáticamente el nombre del archivo
de resultado según el origen.
Valor predeterminado: .T.
Propiedad nGenOutput Especifica la opción de resultado de _GENHTML.
0 = Generar archivo de resultado.
1 = Generar y presentar el archivo
de resultado en el editor de Visual
FoxPro.
2 = Generar y presentar el archivo
de resultado en Internet Explorer.
3 = Generar y presentar el archivo
de resultado después de presentar
el cuadro de diálogo Guardar
como.
4 = Crear un objeto PUBLIC _oHTML y generar un archivo.
5 = Crear un objeto PUBLIC _oHTML sin generar un archivo.

Valor predeterminado: 2
Método GenHTML Genera código HTML al invocar el motor
de _GENHTML con los valores de las
propiedades cSource, cOutFile y
nGenOutput.
Sintaxis: GenHTML( )
Valor devuelto: ninguno
Argumentos: ninguno

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Botones Enviar correo (Foundation Class)

Categoría | Botones varios
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Buttons
Clase | _mailbtn
Clase de base | Container
Biblioteca de clases | _miscbtns.vcx
Clase primaria | _container
Ejemplo | ...\Samples\Solution\OLE\sendmail.scx

Observaciones

Esta clase, que utiliza el control ActiveX MAPI, controla el envío de un mensaje de correo desde un formulario. Cuando se encuentra en un formulario, puede utilizarse para enviar directamente el registro actual a su aplicación de correo.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al colocar la clase en un formulario del entorno de datos, Visual FoxPro coloca un botón en el formulario para tener acceso al registro actual del formulario activo. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Propiedades, eventos, métodos | Descripción
Propiedad logSession | Especifica si el inicio de la sesión de correo ha sido correcto. Valor predeterminado: .F.
Método SignOn | Inicia la sesión de correo. Sintaxis: SignOn( ) Valor devuelto: ninguno Argumentos: ninguno
Método AddTabs | Componente interno de la clase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Extensión SetAllX (Foundation Class)

Categoría Extensión de objeto Catálogo predeterminado Visual FoxPro Catalog\Foundation Classes\Utilities Clase _setallx Clase de base Custom Biblioteca de clases _setallx.vcx Clase primaria _custom Ejemplo ...\Samples\Solution\Ffc\Setallx.scx

Observaciones

La clase SetAllX es una extensión del método SetAll( ) de Visual FoxPro, disponible en muchas clases de Visual FoxPro. A diferencia del método SetAll( ) de Visual FoxPro, se puede especificar una clase de base cuyos objetos se vean afectados.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro coloca el icono de la clase en el formulario. Puede especificar los valores de las propiedades y proporcionar los objetos de entrada y de salida que necesite. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Método Setallx | Versión extendida del método SetAll( ). Sintaxis: SetAllX(toParent, tcProperty, tcExpr, tcBaseClassList, tlNoContainerMode, tlErrorWait) Valor devuelto: logical Argumentos: toParent proporciona una referencia al objeto primario. tcProperty especifica la propiedad a establecer. tcExpr especifica el valor de la propiedad que se establece. tcBaseClassList especifica la clase base que aplica los cambios. tlNoContainerMode evita la interacción con el contenedor. tlErrorWait especifica si se espera un error.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Ejecutar shell (Foundation Class)

Categoría | Utilidad de sistema
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Utilities
Clase | _shellexecute
Biblioteca de clases | _environ.vcx
Clase primaria | _custom
Ejemplo | ...\Samples\Solution\Ffc\Buttons.scx

Observaciones

Esta clase le permite iniciar una aplicación o un documento con su aplicación asociada desde la aplicación actual.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro coloca la clase en el formulario. A continuación, puede especificar los valores de las propiedades y proporcionar los objetos de entrada y de salida que necesite. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Propiedades, eventos, métodos | Descripción
Método ShellExecute | Ejecuta el archivo tcFileName en el directorio tcWorkDir. Sintaxis: ShellExecute(tcFileName, tcWorkDir, tcOperation) Valor devuelto: nSuccess Argumentos: tcFileName especifica el archivo que se va a ejecutar. tcWorkDir especifica la ruta de acceso del archivo que se va a ejecutar. tcOperation especifica la operación que se va a ejecutar. nSuccess especifica el error o el éxito de la ejecución a través de los siguientes valores. 2 = Asociación incorrecta (por ejemplo, URL no válida) 29 = Error al cargar la aplicación 30 = La aplicación está ocupada 31 = No hay asociación con una aplicación Los valores superiores a 32 representan la ejecución correcta y devuelven un controlador de instancias de la aplicación iniciada.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Clase Menú contextual (Foundation Class)

Categoría | Menús
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Menus
Clase | _shortcutmenu
Clase de base | Custom
Biblioteca de clases | _menu.vcx
Clase primaria | _custom
Ejemplo | ...\Samples\Solution\Ffc\newmenu.scx

Observaciones

Cuando está incluida en un proyecto o en un formulario, esta clase crea dinámicamente menús contextuales emergentes.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro coloca la clase en el formulario. A continuación, puede especificar los valores de las propiedades y proporcionar los objetos de entrada y de salida que necesite. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Propiedad cOnSelection | Especifica la rutina de selección de la barra del menú. Valor predeterminado: ""
Propiedad cMenu | Especifica el nombre del menú contextual. Valor predeterminado: ""
Método DeactivateMenu | Desactiva el menú contextual existente. Sintaxis: DeactivateMenu( ) Valor devuelto: ninguno Argumentos: ninguno
Método ActivateMenu | Activa el menú contextual existente. Sintaxis: ActivateMenu(tcParentMenu) Valor devuelto: Argumentos: tcParentMenu especifica el nombre del menú para el que se activa el acceso directo.
Método ClearMenu | Libera el menú contextual existente. Sintaxis: ClearMenu( ) Valor devuelto: ninguno Argumentos: ninguno
Método NewMenu | Crea un nuevo menú emergente para el menú contextual. Sintaxis: NewMenu( ) Valor devuelto: ninguno Argumentos: ninguno
Método AddMenubar | Agrega una nueva barra de menú al menú contextual. Sintaxis: AddMember(tcPrompt, tcOnSelection, tcClauses, tnElementNumber, tlMark, tlDisabled, tlBold) Valor devuelto: ninguno Argumentos: tcPrompt especifica la etiqueta del elemento. tcOnSelection especifica la acción ejecutada al seleccionar el elemento. tcClauses especifica las cláusulas del comando del elemento. tnElementNumber especifica la ubicación del elemento en la matriz. tlMark especifica si se utiliza el carácter de marca predeterminado. tlDisabled especifica si se desactiva el elemento del menú. tlBold especifica si el elemento va a estar en negrita.
Método AddMenuSeparator | Agrega un separador al menú contextual. Sintaxis: AddMenuSeparator(tnElementNumber) Valor devuelto: ninguno Argumentos: tnElementNumber especifica la posición ocupada por el separador dentro del menú.
Método ShowMenu | Presenta el menú contextual existente. Sintaxis: ShowMenu( ) Valor devuelto: ninguno Argumentos: ninguno
Método SetMenu | Libera el menú contextual actual para crear otro nuevo. Sintaxis: SetMenu(toObject) Valor devuelto: ninguno Argumentos: toObject especifica el nombre del nuevo menú contextual.
Propiedad aMenu[1,0] | Componente interno de la clase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Botones de edición simple (Foundation Class)

Categoría | Modificación de datos
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Buttons
Clase | picformbtns
Clase de base | Container
Biblioteca de clases | wizbtns
Clase primaria | gridbtns
Ejemplo | ...\Samples\Solution\Ffc\dataedit2.scx

Observaciones

Cuando está incluida en un proyecto o en un formulario, esta clase proporciona sencillos botones Agregar, Modificar, Eliminar, Duplicar, Guardar y Cancelar con imágenes (como los utilizados por el Asistente para formularios). Utilícela en formularios sencillos basados en una sola tabla o vista. Para obtener más información, vea gridbtns en la biblioteca de clases Wizbtns.vcx del Examinador de clases.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario del entorno de datos, Visual FoxPro coloca los botones de la clase en el formulario. A continuación, puede incluir los objetos de entrada y de salida que necesite. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Botones de desplazamiento simple (Foundation Class)

Categoría | Desplazamiento en datos
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Data Navigation
Clase | _nav2Buttons
Clase de base | Container
Biblioteca de clases | _table.vcx
Clase primaria | _container
Ejemplo | ...\Samples\Solution\Forms\single.scx

Observaciones

Cuando está incluida en un proyecto o en un formulario, esta clase proporciona un par de botones de desplazamiento Siguiente y Anterior.

Para utilizarla, arrastre la clase y colóquela en un proyecto o en un formulario de entornos de datos o, desde el menú de Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro coloca los botones de comando en el formulario. A continuación, puede especificar los valores de las propiedades y proporcionar los objetos de entrada y de salida que necesite. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Propiedades, eventos, métodos | Descripción
Propiedad lCycle | Especifica si el movimiento del puntero continúa cuando se encuentra el principio o el final del archivo. Valor predeterminado: .F.
Método TableNav | Controla el desplazamiento por los registros. Sintaxis: TableNav(tcAction) Valor devuelto: ninguno Argumentos: tcAction especifica una acción de desplazamiento, como Siguiente o Anterior.
Método lCycle_access | Componente interno de la clase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Botones de desplazamiento simple con imágenes (Foundation Class)

Categoría | Desplazamiento en datos
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Data Navigation
Clase | _nav2picbuttons
Clase de base | Container
Biblioteca de clases | _table2.vcx
Clase primaria | _nav2buttons
Ejemplo | ...\Samples\Solution\Ffc\datanav.scx

Observaciones

Cuando está incluida en un proyecto o en un formulario, esta clase proporciona un par de botones de desplazamiento Siguiente y Anterior con imágenes. Para obtener más detalles, abra _nav2buttons en la biblioteca de clases _table.vcx del Examinador de clases.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro coloca los botones de comando en el formulario. A continuación, puede especificar los valores de las propiedades y proporcionar los objetos de entrada y de salida que necesite. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Botón del cuadro de diálogo Ordenar (Foundation Class)

Categoría | Consulta de datos
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Buttons
Clase | _sortbutton
Clase de base | CommandButton
Biblioteca de clases | _table2.vcx
Clase primaria | _dialogbutton
Ejemplo | ...\Samples\Solution\Ffc\datasort.scx

Observaciones

Cuando está incluida en un proyecto o en un formulario, esta clase proporciona un botón que presenta un cuadro de diálogo que le permite ordenar los datos de un campo concreto en orden ascendente o descendente. Para obtener más detalles, abra _dialogbutton en la biblioteca de clases _table2.vcx del Examinador de clases.

Para utilizarla, arrastre la clase y colóquela en un proyecto o en un formulario de entornos de datos o, desde el menú de Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro coloca el botón en el formulario. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Cuadro de diálogo Ordenar (Foundation Class)

Categoría | Consulta de datos
Catálogo predeterminado | Visual FoxPro\Foundation Classes\Data Query
Clase | _sortdialog
Clase de base | Form
Biblioteca de clases | _table2.vcx
Clase primaria | _form
Ejemplo | ...\Samples\Solution\Ffc\datasort.scx

Observaciones

Este cuadro de diálogo le permite ordenar un campo concreto ascendente o descendentemente.

Para utilizarla, arrastre la clase al proyecto o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto. Al colocar la clase en un proyecto, puede elegir entre agregar la clase, crear una subclase o crear un formulario. Si elige Crear un nuevo formulario a partir de la clase seleccionada, Visual FoxPro abre un generador para que pueda especificar el nombre del formulario, después crea y abre el formulario en el Diseñador de formularios. En el cuadro de diálogo Ordenar tiene que proporcionar una tabla indizada.

Propiedades, eventos, métodos | Descripción
Método DoSort | Le permite ordenar por el campo actual o especificar el campo por el que desee ordenar una tabla. Sintaxis: DoSort( ) Valor devuelto: ninguno Argumentos: ninguno

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Selección de orden (Foundation Class)

Categoría Selectores Catálogo predeterminado Visual FoxPro Catalog\Foundation Classes\User Controls Clase _sortmover Clase de base Container Biblioteca de clases _mover.vcx Clase primaria _mover Ejemplo ...\Samples\Solution\Ffc\movers.scx

Observaciones

Esta subclase de la clase de cuadro de lista de selector controla automáticamente la ordenación de los datos cuando se encuentra en un formulario.

Propiedades, eventos, métodos | Descripción
Propiedad CurrentAlias | El alias de las opciones del campo actual. Valor predeterminado: ""
Propiedad CurrentDBC | La base de datos de las opciones del campo actual. Valor predeterminado: ""
Propiedad MaxFields | Número máximo de campos permitidos. Valor predeterminado: 3
Propiedad ShowTags | Especifica si, además de los campos, se van a mostrar las etiquetas de índices existentes. Valor predeterminado: .F.
Propiedad aTags[1,1] | Componente interno de la clase.
Propiedad TagName | Componente interno de la clase.
UpdateMover | Componente interno de la clase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro | Selector


Objeto Sort (Foundation Class)

Categoría | Consulta de datos
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Data Query
Clase | _tablesort
Clase de base | Custom
Biblioteca de clases | _table.vcx
Clase primaria | _table
Ejemplo | ...\Samples\Solution\Ffc\datasort.scx

Observaciones

Esta clase, cuando está incluida en un formulario, le permite ordenar un origen de datos.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro coloca el icono de la clase en el formulario. A continuación, puede especificar los valores de las propiedades y proporcionar los objetos de entrada y de salida que necesite. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Propiedad lDescending | Especifica si la ordenación es ascendente o descendente. Valor predeterminado: .F.
Método DoSort | Le permite ordenar por el campo actual o especificar el campo por el que desea ordenar una tabla o alias. Sintaxis: DoSort([tcField] [,tcAlias] [,tcTag] [,tlDescending]) Valor devuelto: ninguno Argumentos: tcField especifica el campo por el que va a ordenar. tcAlias especifica el alias de la tabla que va a ordenar. tcTag especifica la etiqueta de índice del campo, tcField. tlDescending especifica si la ordenación va a ser descendente.
Método GetSortTag | Busca un nombre apropiado para la etiqueta al examinar las expresiones clave de la tabla que contiene el campo. Sintaxis: GetSortTag(tcField, tcAlias) Valor devuelto: lcTag Argumentos: tcField especifica el campo por el que va a ordenar. tcAlias especifica el alias de la tabla que va a ordenar.
Método RemoveSort | Elimina la etiqueta del índice actual. Sintaxis: RemoveSort(tcAlias) Valor devuelto: ninguno Argumentos: tcAlias especifica el alias de la tabla de la que va a eliminar la etiqueta.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Selector de orden (Foundation Class)

Categoría | Consulta de datos
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Data Query
Clase | _sortselect
Clase de base | Container
Biblioteca de clases | _table2.vcx
Clase primaria | _container
Ejemplo | ...\Samples\Solution\Ffc\datasort.scx

Observaciones

Este conjunto de botones, cuando está incluido en un proyecto o en un formulario, hace una ordenación ascendente o descendente basada en el control actual.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro coloca los botones en el formulario. A continuación, puede especificar los valores de las propiedades y proporcionar los objetos de entrada y de salida que necesite. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Propiedades, eventos, métodos | Descripción
Método DoSort | Le permite ordenar por el campo actual o especificar el campo por el que desee ordenar una tabla. Sintaxis: DoSort([tcField] [,tcAlias] [,tcTag] [,tlDescending]) Valor devuelto: ninguno Argumentos: tcField especifica el campo por el que va a ordenar. tcAlias especifica el alias de la tabla que va a ordenar. tcTag especifica la etiqueta de índice del campo, tcField. tlDescending especifica si la ordenación va a ser descendente.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Reproductor de sonido (Foundation Class)

Categoría | Multimedia
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Multimedia
Clase | _soundplayer
Clase de base | Container
Biblioteca de clases | _multimedia.vcx
Clase primaria | _container
Ejemplo | ...\Samples\Solution\Forms\mci_play.scx

Observaciones

Esta clase carga y reproduce un archivo de sonido y proporciona acceso a la Interfaz de control de medios (MCI).

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase. Cuando elige una opción en el menú contextual o coloca la clase en un formulario, Visual FoxPro abre un generador para que pueda especificar los valores apropiados de cFileName, lAutoOpen, lAutoPlay, lAutoRepeat y cControlSource.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Propiedad cControlSource | Especifica el origen de datos al que está enlazado el objeto. Valor predeterminado: ""
Propiedad cFileName | Especifica el nombre del archivo de sonido que se va a reproducir. Valor predeterminado: ""
Propiedad cMCIAlias | Especifica el alias del archivo de vídeo al llamar a comandos MCI. Si está vacía, se utiliza el nombre del archivo. Valor predeterminado: ""
Propiedad cMCIErrorString | Almacena la cadena de error del último comando MCI. Valor predeterminado: ""
Propiedad lAutoOpen | Especifica si el archivo de vídeo especificado tiene que abrirse automáticamente al crear la clase. Valor predeterminado: .T.
Propiedad lAutoPlay | Especifica si el archivo de vídeo tiene que reproducirse automáticamente al abrirlo. Valor predeterminado: .T.
Propiedad lAutoRepeat | Especifica si el vídeo se va a reproducir continuamente. Valor predeterminado: .T.
Propiedad nMCIError | Especifica el resultado del último comando MCI ejecutado. Valor predeterminado: 0
Método CloseSound | Cierra el archivo de sonido cargado y libera sus recursos. Sintaxis: CloseSound( ) Valor devuelto: ninguno Argumentos: ninguno
Método OpenSound | Abre el archivo de sonido. Sintaxis: OpenSound( ) Valor devuelto: ninguno Argumentos: ninguno
Método PauseSound | Detiene temporalmente la reproducción de sonido. Sintaxis: PauseSound( ) Valor devuelto: ninguno Argumentos: ninguno
Método PlaySound | Reproduce el archivo de sonido cargado. Sintaxis: PlaySound( ) Valor devuelto: ninguno Argumentos: ninguno
Método SetPosition | Permite que el usuario establezca la posición en el archivo multimedia. Sintaxis: SetPosition (cPosition) Valor devuelto: ninguno Argumentos: cPosition especifica el inicio, el final o un número que representa los milisegundos del archivo multimedia.
Método DoMCI | Componente interno de la clase.
Método GetMCIError | Componente interno de la clase.
Método ShowMCIError | Componente interno de la clase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Pantalla de inicio (Foundation Class)

Categoría | Formularios varios
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Dialogs
Clase | _splash
Clase de base | Form
Biblioteca de clases | _dialogs.vcx
Clase primaria | _form
Ejemplo | ...\Samples\Solution\Ffc\dialogs.scx

Observaciones

Esta clase, cuando está incluida en un proyecto, proporciona una sencilla pantalla de inicio para aplicaciones personalizadas.

Para utilizarla, arrastre la clase y colóquela en un proyecto o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Crear formulario o Agregar al proyecto. Al colocar la clase en un proyecto, puede elegir entre agregar la clase, crear una subclase o crear un formulario. Cuando elige Crear un nuevo formulario a partir de la clase seleccionada, Visual FoxPro presenta un cuadro de diálogo Abrir en el que puede especificar el nombre del formulario y, a continuación, crea y abre el formulario en el Diseñador de formularios.

Propiedades, eventos, métodos | Descripción
Propiedad nDuration | Especifica la duración (en segundos) para presentar la pantalla. Valor predeterminado: 3

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


PassThrough de SQL (Foundation Class)

Categoría | Consulta de datos
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Data Query
Clase | _execsp
Clase de base | Custom
Biblioteca de clases | _dataquery.vcx
Clase primaria | _custom

Observaciones

Esta clase se utiliza para PassThrough de SQL y le permite ejecutar procedimientos almacenados en una base de datos host como Microsoft SQL Server.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Cuando coloca la clase en un formulario, Visual FoxPro coloca el icono de la clase en el formulario. A continuación, puede especificar los valores de las propiedades y proporcionar los objetos de entrada y de salida que necesite. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Tiene que incluir código que especifique los parámetros y los datos de conexión de forma que la clase pueda devolver un conjunto de resultados en un cursor.

Propiedades, eventos, métodos | Descripción
LUseSQLSyntax | Especifica si se va a utilizar la sintaxis de Server Exec. Valor predeterminado: .F.
Método DoSQL | Ejecuta una instrucción PassThrough de SQL. Sintaxis: DoSQL( ) Valor devuelto: ninguno Argumentos: ninguno
Método GetSQL | Obtiene los resultados de la instrucción PassThrough de SQL. Sintaxis: GetSQL( ) Valor devuelto: ninguno Argumentos: ninguno
Propiedad aParams[1,0] | Componente interno de la clase.
Propiedad cCursorName | Componente interno de la clase.
Propiedad cSpname | Componente interno de la clase.
Propiedad cSQL | Componente interno de la clase.
Propiedad hConnectHandle | Componente interno de la clase.
Método ProcessError | Componente interno de la clase.
Método SetParams | Componente interno de la clase.
Método SetSQL | Componente interno de la clase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Cronómetro (Foundation Class)

Categoría | Fecha y hora
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Date/Time
Clase | _stopwatch
Clase de base | Container
Biblioteca de clases | _datetime.vcx
Clase primaria | _container
Ejemplo | ...\Samples\Solution\Controls\Timer\swatch.scx

Observaciones

Esta clase, cuando está incluida en un formulario, proporciona un control de tipo cronómetro.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro coloca el icono en el formulario activo, en el que se va a ejecutar. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Propiedades, eventos, métodos | Descripción
Método Increment | Aumenta la ventana del cronómetro. Sintaxis: Increment( ) Valor devuelto: ninguno Argumentos: ninguno
Método Reset | Restablece el cronómetro. Sintaxis: Reset( ) Valor devuelto: ninguno Argumentos: ninguno
Método Start | Inicia el cronómetro. Sintaxis: Start( ) Valor devuelto: ninguno Argumentos: ninguno
Método Stop | Detiene el cronómetro. Sintaxis: Stop( ) Valor devuelto: ninguno Argumentos: ninguno
Método UpdateDisplay | Actualiza la presentación. Sintaxis: UpdateDisplay( ) Valor devuelto: ninguno Argumentos: ninguno

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Biblioteca de cadenas (Foundation Class)

Categoría | Utilidades de datos
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Utilities
Clase | _stringlib
Clase de base | Custom
Biblioteca de clases | _utility.vcx
Clase primaria | _custom

Observaciones

Esta clase elimina los caracteres de retorno de carro y salto de línea de una cadena de caracteres.

Propiedades, eventos, métodos | Descripción
Método TrimCRLF | Elimina los caracteres de retorno de carro y salto de línea de una cadena de caracteres. Sintaxis: TrimCRLF (tcString, tlTrimLeft, tlTrimRignt) Valor devuelto: ninguno Argumentos: tcString especifica la cadena que se va a eliminar. tlTrimLeft especifica si se elimina del lado izquierdo. tlTrimRight especifica si se elimina del lado derecho.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Selección global (Foundation Class)

Categoría | Selectores
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\User Controls
Clase | _supermover
Clase de base | Container
Biblioteca de clases | _mover.vcx
Clase primaria | supermover
Ejemplo | ...\Samples\Solution\Ffc\movers.scx

Observaciones

Esta clase, cuando está incluida en un formulario, proporciona un cuadro de lista de selector con botones Mover, Eliminar, Mover todos y Eliminar todos.

Para utilizarla, coloque la clase en un proyecto o en un formulario, o desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un proyecto, puede elegir entre agregar la clase o crear una subclase. Cuando la clase se agrega a un formulario del entorno de datos, Visual FoxPro agrega los controles de botones y de cuadro de lista de la clase al formulario en el Diseñador de formularios, para que pueda especificar los valores adecuados de las propiedades.

Propiedades, eventos, métodos | Descripción
Propiedad MaxItems | Especifica el número máximo de elementos que pueden seleccionarse. Valor predeterminado: 0
Propiedad MaxMessage | Especifica el mensaje que se presenta si se alcanza el número máximo de elementos. Valor predeterminado: ""

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro | Selector


Medidas del sistema (Foundation Class)

Categoría | Utilidades de sistema
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Utilities
Clase | _sysmetrics
Clase de base | Custom
Biblioteca de clases | _system.vcx
Clase primaria | _custom
Ejemplo | ...\Samples\Solution\Ffc\Logo.scx

Observaciones

Proporciona acceso a la información de medidas del sistema, lo que puede resultar de utilidad en aplicaciones, al tiempo que es necesario para la compatibilidad que asegura el logotipo de Windows 2000. Las medidas del sistema, como la presencia de ratón con rueda, número de sus botones o número de monitores, se incluyen en la clase, aunque se puede consultar cualquier medida válida del sistema.

Para utilizarla, coloque la clase en un proyecto o en un formulario, o desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro coloca el icono de la clase en el formulario. Puede especificar los valores de las propiedades y proporcionar los objetos de entrada y de salida que necesite. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Propiedad lMouseWheelPresent | Devuelve .T. si existe rueda en el ratón.
Propiedad nMonitors | Devuelve el número de monitores conectados al sistema.
Propiedad nMouseButtons | Devuelve el número de botones del ratón.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Barra de herramientas del sistema (Foundation Class)

Categoría | Aplicación
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Application
Clase | _systoolbars
Clase de base | Custom
Biblioteca de clases | _app.vcx
Clase primaria | _custom
Ejemplo | ...\Samples\Solution\Ffc\environ.scx

Observaciones

Esta clase es un administrador que controla y hace el seguimiento de las barras de herramientas del sistema para que pueda eliminar y restablecer automáticamente las barras de herramientas del sistema de Visual FoxPro dentro en su aplicación. Esta clase se utiliza en el marco generado por el Asistente para aplicaciones.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un proyecto, puede elegir entre agregar la clase o crear una subclase. Al agregar la clase a un formulario, Visual FoxPro coloca el icono en el formulario. Después puede especificar los valores de las propiedades e incluir los objetos que necesite.

Si lAutomatic es verdadero (.T.), como en una aplicación del tipo READEVENTS, la clase oculta automáticamente las barras de herramientas de sistema existentes cuando se crea una instancia. Después, las restablece automáticamente cuando queda sin alcance.

También se puede llamar a los métodos HideSystemToolbars( ) y ShowSystemToolbars( ) manualmente.

Propiedades, eventos, métodos | Descripción
Propiedad lAutomatic | Oculta y restablece automáticamente las barras de herramientas del sistema de la aplicación. Valor predeterminado: .F.
Propiedad aSystemToolbars[1,0] | La matriz de las barras de herramientas del sistema. Valor predeterminado: .F.
Método HideSystemToolbars | Oculta manualmente las barras de herramientas del sistema de la aplicación. Sintaxis: HideSystemToolbars( ) Valor devuelto: ninguno Argumentos: ninguno
Método ShowSystemToolbars | Muestra manualmente las barras de herramientas del sistema de la aplicación. Sintaxis: ShowSystemToolbars( ) Valor devuelto: ninguno Argumentos: ninguno
Método InitializeToolbarArray | Componente interno de la clase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Selección de tablas (Foundation Class)

Categoría Selectores Catálogo predeterminado Visual FoxPro Catalog\Foundation Classes\User Controls Clase _tablemover Clase de base Container Biblioteca de clases _mover.vcx Clase primaria _fieldmover Ejemplo ...\Samples\Solution\Ffc\movers.scx

Observaciones

Esta subclase de la clase del cuadro de lista del selector de campos carga automáticamente tablas y campos desde el origen de datos actual.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un proyecto, puede elegir entre agregar la clase o crear una subclase. Cuando la clase se agrega a un formulario, Visual FoxPro abre un generador para que pueda aceptar o especificar los valores apropiados de cDBCTable, cDBCName, SkipGeneral, SkipMemo, AllowReadOnly y AllowQuery del formulario dentro del Diseñador de formularios.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Propiedad AllowQuery | Especifica si las consultas están permitidas. Valor predeterminado: .F.
Propiedad AllowViews | Especifica si las vistas están permitidas. Valor predeterminado: .T.
Propiedad ExclDBF | Especifica el nombre de la tabla que va a quedar excluida de la lista. Valor predeterminado: ""
Propiedad ViewNoData | Especifica si se muestra información de las vistas sin recuperar los datos. Valor predeterminado: .T.
Método GetDBCAlias | Obtiene el alias del archivo de la base de datos (.dbc). Sintaxis: GetDBCAlias(cDBC) Valor devuelto: ninguno Argumentos: cDBC especifica el alias de la base de datos.
Método GetDBCData | Obtiene los campos de la tabla de la base de datos. Sintaxis: GetDBCData(cDBCName) Valor devuelto: campos de datos Argumentos: cDBCName especifica el nombre de la base de datos.
Método GetDBCName | Obtiene el nombre de la base de datos. Sintaxis: GetDBCName( ) Valor devuelto: ninguno Argumentos: ninguno
Método GetDBCTable | Obtiene la tabla de la base de datos. Sintaxis: GetDBCTable(cDBCTable) Valor devuelto: ninguno Argumentos: cDBCTable especifica el nombre corto de la tabla
Método GetFreeData | Obtiene los campos libres de la tabla. Sintaxis: GetFreeData( ) Valor devuelto: ninguno Argumentos: ninguno
Método MoverRefresh | Actualiza los selectores. Sintaxis: MoverRefresh(lRefresh, lQuickPass, cSaveLstValue) Valor devuelto: ninguno Argumentos: lRefresh especifica si se vuelven a cargar los cuadros de lista y los menús emergentes. lQuickPass especifica si se restablecen los campos si el entorno no ha sufrido cambios. cSaveLstValue especifica el valor que se va a restablecer.
Método OpenTable | Abre el origen de datos. Sintaxis: OpenTable( ) Valor devuelto: ninguno Argumentos: ninguno
Método UseTable | Controla qué tabla se abre con USE y si la tabla se abre de forma exclusiva. Sintaxis: UseTable(cGetDBF, lUseExcl) Valor devuelto: ninguno Argumentos: cGetDBF especifica la tabla. lUseExcl especifica si la tabla se abre de forma exclusiva.
Método ExclusiveSet | Componente interno de la clase.
Método RefreshCurrent | Componente interno de la clase.
Método TableChange | Componente interno de la clase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro | Selector de campos


Vista previa de texto (Foundation Class)

Categoría | Informes
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Output
Clase | _showtext
Clase de base | Form
Biblioteca de clases | _reports.vcx
Clase primaria | _form
Ejemplo | ...\Samples\Solution\Ffc\output.scx

Observaciones

Cuando está incluida en un proyecto o en un formulario, esta clase proporciona un sencillo editor de texto en un cuadro de diálogo, que además contiene botones para dar formato o guardar el texto, y cerrar el editor.

El principal propósito de esta clase es proporcionar una ventana de vista previa controlable para otras clases de _reports.vcx. Por tanto, este cuadro de diálogo no tiene botón para cargar un archivo nuevo (si bien puede agregar uno si crea una subclase) y su cuadro de edición es de sólo lectura, de forma predeterminada.

Para utilizarla, arrastre la clase al proyecto o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto. Al colocar la clase en un proyecto, puede elegir entre agregar la clase, crear una subclase o crear un formulario. Cuando elige Crear un nuevo formulario a partir de la clase seleccionada, Visual FoxPro abre un generador para que pueda especificar el nombre del formulario y, a continuación, crea y abre el formulario en el Diseñador de formularios.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Propiedad cFixedFontName | El nombre de la fuente para el contenido del cuadro de edición. Valor predeterminado: Courier New
Propiedad nFixedFontSize | El tamaño de la fuente para el contenido del cuadro de edición. Valor predeterminado: 9
Propiedad cSourceFile | El nombre del archivo de origen que se va a ver o modificar. Valor predeterminado: ""
Propiedad cTargetFile | El nombre del archivo en el que se va a guardar el contenido del cuadro de edición. Valor predeterminado: ""
Propiedad lFixedFontBold | Especifica una fuente en negrita para el contenido del cuadro de edición. Valor predeterminado: .F.
Propiedad lFixedFontiItalic | Especifica una fuente en cursiva para el contenido del cuadro de edición. Valor predeterminado: .F.
Propiedad lSuppressCaptionChange | Impide que el título del cuadro de diálogo cambie si el archivo de origen cambia. Esto es útil para presentar el contenido de un archivo temporal. Valor predeterminado: .F.
Método SetFonts | Aplica las características de la fuente actual al cuadro de edición que presenta el archivo. Sintaxis: SetFonts( ) Valor devuelto: ninguno Argumentos: ninguno
Método GetFixedFont | Utiliza un cuadro de diálogo común para presentar las fuentes. Está restringido a fuentes fijas. Sintaxis: GetFixedFont( ) Valor devuelto: ninguno Argumentos: ninguno
Método cTargetFile_access | Componente interno de la clase.
Método cSourceFile_assign | Componente interno de la clase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Termómetro (Foundation Class)

Categoría | Interfaz de usuario
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Dialogs
Clase | _thermometer
Clase de base | Form
Biblioteca de clases | _therm.vcx
Clase primaria | _thermometer
Ejemplo | ...\Samples\Solution\Ffc\therm.scx

Observaciones

Esta clase, cuando está incluida en un formulario, proporciona una clase termómetro estándar.

Para utilizarla, arrastre la clase al proyecto o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto. Al colocar la clase en un proyecto, puede elegir entre agregar la clase, crear una subclase o crear un formulario. Si elige Crear un nuevo formulario a partir de la clase seleccionada, Visual FoxPro presenta el cuadro de diálogo Abrir para que pueda especificar el nombre del formulario y, a continuación, crea y abre el formulario en el Diseñador de formularios. Tiene que especificar los valores de las propiedades en el método Update.

Propiedades, eventos, métodos | Descripción
Propiedad cCurrentTask | Especifica la tarea actual. Valor predeterminado: ""
Propiedad iBasis | Especifica la base para el cálculo del porcentaje. Valor predeterminado: 0
Propiedad iPercentage | Especifica el porcentaje de progreso al que se actualiza la presentación. Valor predeterminado: 0
Propiedad iProgress | Especifica la cantidad completada (iPercentage). Valor predeterminado: 0
Método Complete | Presenta el termómetro al 100%. Sintaxis: Complete(m.cTask) Valor devuelto: ninguno Argumentos: m.cTask especifica qué se presenta cuando la tarea ha terminado.
Método Update | Actualiza el termómetro. Sintaxis: Update(iProgress, cTask) Valor devuelto: ninguno Argumentos: iProgress especifica el incremento del progreso. cTask especifica el mensaje que se va a presentar.
Propiedad cThermRef | Componente interno de la clase.
Propiedad ShpThermBarMaxWidth | Componente interno de la clase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Cronómetro adaptado a trazas (Foundation Class)

Categoría | Aplicación
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Application
Clase | _traceawaretimer
Clase de base | Timer
Biblioteca de clases | _app.vcx
Clase primaria | _timer
Ejemplo | ...\Samples\Solution\Ffc\environ.scx

Observaciones

Esta clase es una aplicación que detecta si la ventana de seguimiento está abierta y controla los tiempos de depuración de forma adecuada. Aunque Visual FoxPro le permite saltar los eventos del cronómetro de seguimiento en las depuraciones, ésta no es siempre la mejor solución puesto que algunas veces el código de los eventos del cronómetro está relacionado con lo que se quiere depurar. En lugar de esto, este cronómetro determina si alguna ventana de depuración es visible y, si fuera así, establece un intervalo lento especial.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al formulario. Al agregar la clase a un proyecto, puede elegir entre agregar la clase o crear una subclase. Al agregar la clase a un formulario, Visual FoxPro coloca un icono en el formulario. A continuación, puede especificar los valores de las propiedades y proporcionar los objetos de entrada y de salida que necesite. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Propiedades, eventos, métodos | Descripción
Propiedad iRegularInterval | Especifica el período de intervalo estándar. Se guarda en el evento Init y se restablece en los eventos Timer en el caso de que modifique dicho período. Valor predeterminado: 0
Propiedad iTraceInterval | Especifica un período de intervalo más lento para la depuración. Valor predeterminado: 10000

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Biblioteca de tipos (Foundation Class)

Categoría Utilidades de archivo Catálogo predeterminado Visual FoxPro Catalog\Foundation Classes\Utilities Clase _typelib Clase de base Container Biblioteca de clases _utility.vcx Clase primaria _container Ejemplo ...\Samples\Solution\Winapi\typelib.scx

Observaciones

Esta clase utiliza el componente TlbInf32 COM para ller información de las bibliotecas de tipos.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un proyecto, puede elegir entre agregar la clase o crear una subclase. Al agregar la clase a un formulario, Visual FoxPro coloca el icono de la clase en el formulario. Después puede especificar los valores de las propiedades adecuados en el formulario dentro del Diseñador de formularios.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Propiedad aTypeAttr[1,0] | Especifica la matriz de la estructura TypeAttr. Valor predeterminado: .F.
Propiedad aTypeFuncDesc[1,0] | Especifica una matriz para la estructura FuncDesc. Valor predeterminado: .F.
Propiedad aTypeFuncDocs[3,0] | Especifica la matriz para la documentación de las funciones. Valor predeterminado: .F.
Propiedad aTypeFuncNames[1,0] | Especifica la matriz de nombres de función. Valor predeterminado: .F.
Propiedad aTypeFuncParms[1,0] | Especifica la matriz de los parámetros de la función. Valor predeterminado: .F.
Propiedad aTypeInfoDocs[3,0] | Especifica la matriz de la documentación de TypeInfo. Valor predeterminado: .F.
Propiedad aTypeLibDocs[3,0] | Especifica la matriz de la documentación de TypeLib. Valor predeterminado: .F.
Propiedad FuncNamesCount | Especifica el número de nombres de la función de TypeInfo. Es equivalente al número de parámetros+1. Valor predeterminado: .F.
Propiedad TypeInfoCount | Especifica el número de TypeInfo de TypeLib. Valor predeterminado: .F.
Propiedad TypeInfoIndex | Una referencia a un índice de TypeInfo. Valor predeterminado: .F.
Propiedad TypeLibHandle | El controlador de TypeLib. Valor predeterminado: .F.
Propiedad TypeLibName | Especifica el nombre de la biblioteca de tipos. Valor predeterminado: .F.
Método ExportTypeLib | Exporta el contenido de una biblioteca de tipos (TypeLib) a un archivo de texto. Sintaxis: ExportTypeLib(cExportFile, lViewFile) Valor devuelto: m.exportfile Argumentos: cExportFile especifica el archivo que se va a exportar. lViewFile especifica si se abre o no el archivo en un visor después de la exportación.
Método GetDataType | Devuelve el tipo de datos de la función. Sintaxis: GetDataType(m.nvt) Valor devuelto: nombre del tipo de datos. Argumentos: m.nvt Especifica una referencia a un elemento de datos.
Método GetFuncDesc | Obtiene información de las funciones de TypeInfo y carga las matrices. Sintaxis: GetFuncDesc(nFuncIndex) Valor devuelto: matrices TypeInfo, aTypeFuncParms, aTypeFuncNames, aTypeFuncDocs. Argumentos: nFuncIndex especifica el índice de la función.
Método GetTypeInfo | Obtiene TypeInfo y carga las matrices TypeInfo. Sintaxis: GetTypeInfo(nTypeInfoNum) Valor devuelto: ninguno Argumentos: nTypeInfoNum especifica una referencia a la clave de TypeInfo.
Método GetTypeLib | Obtiene la información de TypeLib y carga las matrices. Sintaxis: GetTypeLib( ) Valor devuelto: ninguno Argumentos: ninguno

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Cuadro combinado URL (Foundation Class)

Categoría Internet Catálogo predeterminado Visual FoxPro Catalog\Foundation Classes\Internet Clase _urlcombobox Clase de base ComboBox Biblioteca de clases _internet.vcx Clase primaria _combobox Ejemplo ...\Samples\Solution\Ffc\hyperlnk.scx

Observaciones

Esta clase, cuando está incluida en un formulario, crea un cuadro combinado para escribir una dirección URL de Web. Inicia Internet Explorer y lo dirige al sitio especificado.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase. Al colocar la clase en un formulario, Visual FoxPro abre un generador para que pueda especificar los valores apropiados de cURL, cURLHistoryTable y iURLHistory en el formulario dentro del Diseñador de formularios. Puede utilizar la tabla de historial para proporcionar una o varias ubicaciones iniciales de exploración.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Propiedad cURL | La dirección URL actual. Valor predeterminado: ""
Propiedad cURLHistoryTable | Especifica el nombre de la tabla del historial de URL que mantiene las direcciones URL ya visitadas. Valor predeterminado: (IIF(VERSION(2)=0,"",HOME( ))+"URLHstry.dbf"))
Propiedad lInitialized | Indicador de inicialización del control. Valor predeterminado: .F.
Propiedad lURLHistory | Guarda el historial de las direcciones URL. Valor predeterminado: .T.
Método Navigate | Solicita el documento de la dirección URL. Sintaxis: Navigate( ) Valor devuelto: ninguno Argumentos: ninguno
Propiedad cHyperlinkClass | Componente interno de la clase.
Propiedad cHyperlinkClassLibrary | Componente interno de la clase.
Propiedad cTempFilePrefix | Componente interno de la clase.
Propiedad lDropDown | Componente interno de la clase.
Propiedad lFormNavigate | Componente interno de la clase.
Propiedad lGotFocus | Componente interno de la clase.
Propiedad lMoveFocus | Componente interno de la clase.
Propiedad lRequestOnEnter | Componente interno de la clase.
Propiedad oHyperlink | Componente interno de la clase.
Método Initialize | Componente interno de la clase.
Método oHyperlink_access | Componente interno de la clase.
Método OpenURLHistory | Componente interno de la clase.
Método ValidURL | Componente interno de la clase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Cuadro de diálogo Abrir dirección URL (Foundation Class)

Categoría | Internet
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Internet
Clase | _openaddressdialog
Clase de base | Form
Biblioteca de clases | _internet.vcx
Clase primaria | _dialog
Ejemplo | ...\Samples\Solution\Ffc\hyperlnk.scx

Observaciones

Este cuadro de diálogo, cuando está incluido en un formulario, proporciona una lista desplegable que contiene la lista historial de direcciones URL.

Para utilizarla, arrastre la clase y colóquela en un proyecto o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Crear formulario o Agregar al proyecto. Cuando agregue la clase a un proyecto, puede elegir entre agregar la clase, crear una subclase o crear un formulario. Cuando cree un formulario, Visual FoxPro presenta un cuadro de diálogo Abrir en el que puede especificar el nombre del formulario, después crea y abre el formulario en el Diseñador de formularios para que pueda especificar los valores apropiados de Target y lShellExecute.

Propiedades, eventos, métodos | Descripción
Propiedad lShellExecute | Ejecuta la dirección URL de destino. Valor predeterminado: .T.
Propiedad Target | Especifica el nombre de la dirección URL de destino. Valor predeterminado: ""
Propiedad cFileExt | Componente interno de la clase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Privilegios del usuario (Foundation Class)

Categoría Utilidades de sistema Catálogo predeterminado Visual FoxPro Catalog\Foundation Classes\Utilities Clase _userpriv Clase de base Custom Biblioteca de clases _system.vcx Clase primaria _custom Ejemplo ...\Samples\Solution\Ffc\Logo.scx

Observaciones

Esta clase devuelve los permisos de acceso del usuario actualmente en sesión. En Windows 2000 existen los usuarios Invitado, Usuario avanzado y Administrador. Esta información se suele utilizar en aplicaciones compatibles con el logotipo de Windows 2000.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro coloca el icono de la clase en el formulario. Puede especificar los valores de las propiedades y proporcionar los objetos de entrada y de salida que necesite. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Método GetUserPriv | Devuelve la ruta de la carpeta del sistema especificada. Sintaxis: GetUserPriv(cUser) Valor devuelto: permisos del usuario Argumentos: cUser especifica el nombre de usuario a comprobar

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Botones VCR (Foundation Class)

Categoría | Desplazamiento en datos
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Data Navigation
Clase | _nav4buttons
Clase de base | Container
Biblioteca de clases | _table.vcx
Clase primaria | _nav2buttons
Ejemplo | ...\Samples\Solution\Ffc\datanav.scx

Observaciones

Este conjunto de botones de desplazamiento de registros es una subclase de _nav2buttons que incluye los botones de desplazamiento Primero, Siguiente, Anterior y Último.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario del entorno de datos, tiene que incluir los objetos de entrada y de salida que necesite. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Botones de desplazamiento VCR con imágenes (Foundation Class)

Categoría | Desplazamiento en datos
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Data Navigation
Clase | _nav4picbuttons
Clase de base | Container
Biblioteca de clases | _table2.vcx
Clase primaria | _nav4buttons
Ejemplo | ...\Samples\Solution\Ffc\datanav.scx

Observaciones

Esta clase es un conjunto de botones de desplazamiento en datos que presenta imágenes VCR en los botones Primero, Siguiente, Anterior y Último.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario del entorno de datos, tiene que especificar los objetos de entrada y de salida que necesite. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Reproductor de vídeo (Foundation Class)

Categoría Multimedia Catálogo predeterminado Visual FoxPro Catalog\Foundation Classes\Multimedia Clase _videoplayer Clase de base Container Biblioteca de clases multimedia.vcx Clase primaria _container Ejemplo ...\Samples\Solution\Forms\mci_play.scx

Observaciones

Esta clase carga y reproduce un archivo de vídeo y proporciona acceso a la Interfaz de control de medios (MCI).

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase. Cuando elige una opción en el menú contextual o coloca la clase en un formulario, Visual FoxPro abre un generador para que pueda especificar los valores apropiados de cFileName, lAutoOpen, lAutoPlay, lAutoRepeat y cControlSource.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Propiedad AutoOpen | Especifica si el archivo de vídeo especificado tiene que abrirse automáticamente al crear la clase. Valor predeterminado: .T.
Propiedad AutoPlay | Especifica si el archivo de vídeo tiene que reproducirse automáticamente al abrirlo. Valor predeterminado: .T.
Propiedad AutoRepeat | Si es verdadera (.T.), especifica que el archivo de vídeo se va reproducir continuamente. Valor predeterminado: .T.
Propiedad cFileName | Especifica el archivo de vídeo asociado con el marco de vídeo. Valor predeterminado: ""
Propiedad ControlSource | Especifica el origen de datos al que está enlazado el objeto. Valor predeterminado: ""
Propiedad MCIAlias | Especifica el alias del archivo de vídeo al llamar a comandos MCI. Si está vacía, se utiliza el nombre del archivo. Valor predeterminado: ""
Propiedad MCIError | Especifica el resultado del último comando MCI ejecutado. Valor predeterminado: 0
Propiedad MCIErrorString | Almacena la cadena de error del último comando MCI ejecutado. Valor predeterminado: ""
Método CloseVideo | Cierra el archivo de vídeo y libera todos los recursos. Sintaxis: CloseVideo( ) Valor devuelto: ninguno Argumentos: ninguno
Método DoMCI | Ejecuta un comando MCI. Sintaxis: DoMCI(cMCIcmd) Valor devuelto: cRetString Argumentos: cMCIcmd especifica el comando que se va a ejecutar.
Método PauseVideo | Detiene temporalmente la reproducción de un vídeo. Sintaxis: PauseVideo( ) Valor devuelto: ninguno Argumentos: ninguno
Método PlayVideo | Reproduce el vídeo cargado actualmente. Sintaxis: PlayVideo( ) Valor devuelto: ninguno Argumentos: ninguno
Método SetPosition | Permite que el usuario establezca la posición en el archivo multimedia. Sintaxis: SetPosition(cPosición) Valor devuelto: ninguno Argumentos: cPosición especifica el inicio, el final o un número que representa los milisegundos transcurridos en el archivo multimedia.
Método GetMCIError | Componente interno de la clase.
Método OpenVideo | Componente interno de la clase.
Método ShowMCIError | Componente interno de la clase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro | Reproducir archivos multimedia utilizando comandos MCI (Ejemplo)


Control Web Browser (Foundation Class)

Categoría Internet Catálogo predeterminado Visual FoxPro Catalog\Foundation Classes\Internet Clase _webbrowser4 Biblioteca de clases _webview.vcx Clase primaria Olecontrol Ejemplo ...\Samples\Solution\Ffc\webvwr.scx

Observaciones

Esta subclase del control Browser de Microsoft Internet Explorer proporciona enlaces con el código de Visual FoxPro y puede agregarse a los formularios de Visual FoxPro.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un formulario, Visual FoxPro coloca el logotipo de Internet Explorer en el formulario. Tiene que especificar una dirección URL apropiada en el método Navigate. Al colocar la clase en un proyecto, puede elegir entre agregar la clase o crear una subclase.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Propiedad aHistory[1,2] | Matriz del historial de direcciones URL. Valor predeterminado: .F.
Propiedad aParam[1,0] | Matriz de parámetros URL. Valor predeterminado: .F.
Propiedad aScripts[1,0] | Matriz de archivos de comandos de Visual FoxPro. Valor predeterminado: .F.
Propiedad cAlias | Devuelve el alias de la tabla actualmente seleccionada. Se establece automáticamente cuando se utiliza el método OpenTable. Valor predeterminado: ""
Propiedad cBeforeURL | Especifica la dirección URL actual antes de obtener un documento completo. Valor predeterminado: ""
Propiedad cBlankHTMLFile | Especifica un archivo .htm vacío. Valor predeterminado: Blank.htm
Propiedad cDBF | Devuelve el nombre de archivo de la tabla actualmente seleccionada. Se establece automáticamente cuando se utiliza el método OpenTable. Valor predeterminado: ""
Propiedad cDBFPath | Devuelve la ruta de acceso de la tabla actualmente seleccionada. Se establece automáticamente cuando se utiliza el método OpenTable. Valor predeterminado: ""
Propiedad cFilename | Devuelve el nombre de archivo del documento actual. Valor predeterminado: ""
Propiedad cFilepath | Devuelve la ruta de acceso del documento actual. Valor predeterminado: ""
Propiedad cLasturl | Especifica la última dirección URL. Valor predeterminado: ""
Propiedad cNewURL | Especifica la dirección URL antes de recuperar el documento completo. Valor predeterminado: ""
Propiedad cParam | Especifica la cadena de parámetros de la dirección URL. Valor predeterminado: ""
Propiedad cParamDelimiter | Especifica el carácter delimitador de los parámetros de la dirección URL. Valor predeterminado: &
Propiedad cParseFileExt | Lista de extensiones de archivo del archivo que se va a examinar en modo preproceso. Valor predeterminado: htm;html;asp
Propiedad cProgramPath | Especifica la ruta de acceso de la clase del control Web Browser. Valor predeterminado: ""
Propiedad cSourceFile | Especifica el nombre de archivo del documento actual. Valor predeterminado: ""
Propiedad cSourceFilename | Especifica el nombre de archivo del documento de origen actual. Valor predeterminado: ""
Propiedad cSourceFilepath | Especifica la ruta de acceso del documento de origen actual. Valor predeterminado: ""
Propiedad cSourceHTML | Especifica el texto HTML del documento de origen actual. Valor predeterminado: ""
Propiedad cSourceURL | Especifica la dirección URL del documento de origen actual. Valor predeterminado: ""
Propiedad cTempFilename | Especifica el nombre de archivo del documento temporal. Valor predeterminado: ""
Propiedad cTempFilePrefix | Prefijo utilizado por el nombre de archivo del documento temporal. Valor predeterminado: _temp
Propiedad cURL | Dirección URL actual. Valor predeterminado: ""
Propiedad cUserID | Id. de usuario, definido por el usuario; no se utiliza internamente. Valor predeterminado: ""
Propiedad cUserName | Nombre de usuario, definido por el usuario; no se utiliza internamente. Valor predeterminado: ""
Propiedad cVersion | Especifica la versión de la subclase del control Web Browser. Valor predeterminado: "Web Browser 04.01.0006"
Propiedad cVFPScript | Especifica el nombre de programa del archivo de comandos de Visual FoxPro. Valor predeterminado: ""
Propiedad cVFPScriptTable | Especifica el nombre de archivo de la tabla de archivos de comandos de Visual FoxPro. Valor predeterminado: ""
Propiedad cVFPSprotocol | Especifica la cadena de protocolos de archivos de comandos predeterminados de Visual FoxPro. Valor predeterminado: vps:
Propiedad lBlankHTMLStartup | Especifica si el explorador se inicia con una página Web vacía. Valor predeterminado: .F.
Propiedad lBusy | Modo ocupado en el explorador Web. Valor predeterminado: .F.
Propiedad lDebug | Especifica si el explorador Web se ejecuta en modo Depuración. Valor predeterminado: .F.
Propiedad lDesign | Especifica si el explorador Web se ejecuta en modo Diseño. Valor predeterminado: .F.
Propiedad lDHTML | Especifica si el explorador Web acepta HTML dinámico. Valor predeterminado: .T.
Propiedad lHistoryEnabled | Especifica si el seguimiento del historial de direcciones URL está activado. Valor predeterminado: .F.
Propiedad lParseSource | Especifica si está activado el modo de Análisis del documento origen. Valor predeterminado: .F.
Propiedad lRefresh | Especifica si el control se actualiza cuando se ejecuta el método Refresh. Valor predeterminado: .F.
Propiedad lRefreshDeactivate | Especifica si está activada la ejecución automática del método RefreshDeactivate para el evento LostFocus. Valor predeterminado: .F.
Propiedad lRefreshMode | Especifica si el modo Refresh del documento está activado. Valor predeterminado: .F.
Propiedad lRelease | Especifica si el método Release del objeto se ha ejecutado y si el objeto se va a liberar de la memoria. Valor predeterminado: .F.
Propiedad lRunCodeMode | Especifica si está activado el modo Ejecutar código. Valor predeterminado: .F.
Propiedad lVFPsScript | Especifica si está activado el modo de archivo de comandos de Visual FoxPro. Valor predeterminado: .F.
Propiedad lViewSourceMode | Especifica si está activado el modo Ver origen. Valor predeterminado: .F.
Propiedad nDataSessionID | Especifica el número de la sesión de datos del alias de la tabla actualmente seleccionada que se ha establecido de forma automática al utilizar el método OpenTable. Valor predeterminado: 0
Propiedad nHistoryCount | Especifica la longitud de la matriz del historial de direcciones URL. Valor predeterminado: 0
Propiedad nParamCount | Especifica la longitud de la matriz de parámetros de las direcciones URL. Valor predeterminado: .F.
Propiedad nRecno | Especifica el número del registro actual de la tabla actualmente seleccionada que se ha establecido automáticamente al utilizar el método OpenTable. Valor predeterminado: 0
Propiedad nScriptCount | Especifica la longitud de la matriz de archivos de comandos de Visual FoxPro. Valor predeterminado: 0
Propiedad nUserLevel | Especifica el nivel de usuario, definido por el usuario; no se utiliza internamente. Valor predeterminado: 0
Propiedad oAction | Especifica el objeto de la acción del usuario, definido por el usuario; no se utiliza internamente. Valor predeterminado: .NULL.
Propiedad oHost | Especifica el formulario contenedor, equivalente a THISFORM. Valor predeterminado: .NULL.
Propiedad oSource | Especifica el objeto de origen, definido por el usuario; no se utiliza internamente. Valor predeterminado: .NULL.
Propiedad oUser | Especifica el objeto del usuario, definido por el usuario; no se utiliza internamente. Valor predeterminado: .NULL.
Propiedad uResult | Especifica el valor Variant del resultado. Valor predeterminado: .T.
Propiedad uReturn | Especifica el valor Variant devuelto. Valor predeterminado: .T.
Propiedad uValue | Especifica el valor Variant, definido por el usuario; no se utiliza internamente. Valor predeterminado: .T.
Método AddProp | Agrega una nueva propiedad. Sintaxis: AddProp(tcName, tcProperty, tuValue) Argumentos: tcName especifica el objeto al que se agrega la propiedad. tcProperty especifica el nombre de la propiedad. tuValue especifica el valor que se va a asignar a la propiedad.
Método BeforeNavigate | Proporciona un evento BeforeNavigate. Sintaxis: BeforeNavigate(URL, flags, targetframename, postdata, headers, cancel) Argumentos: URL especifica la página Web que se va a utilizar. flags especifica si el recurso se va a agregar al historial, leer o escribir en la caché, o se va a presentar en una nueva ventana o combinación de ventanas. targetframename especifica el nombre del marco de destino. postdata especifica los datos que se van a enviar a la transacción HTTP de publicación. headers especifica las cabeceras HTTP que se van a enviar. cancel especifica si la exploración se ha cancelado.
Método BeforeRetrieval | Identifica el evento que se va a ejecutar antes de la recuperación. Sintaxis: BeforeRetrieval(URL, flags, targetframename, postdata, headers, cancel) Argumentos: URL especifica la página Web que se va a utilizar. flags especifica si el recurso se va a agregar al historial, leer o escribir en la caché, o se va a presentar en una nueva ventana o combinación de ventanas. targetframename especifica el nombre del marco de destino. postdata especifica los datos que se van a enviar a la transacción HTTP de publicación. headers especifica las cabeceras HTTP que se van a enviar. cancel especifica si la exploración se ha cancelado.
Método BrowseTable | Examina la selección actual basándose en cAlias. Sintaxis: BrowseTable(tcAlias, tcClauses)
Método CloseTable | Cierra la selección actual basándose en cAlias. Sintaxis: CloseTable(tcAlias)
Método EditScript | Modifica un archivo de comandos de Visual FoxPro concreto. Sintaxis: EditScript(tcScriptName) Argumentos: tcScriptName especifica el nombre del archivo de comandos de Visual FoxPro.
Método EditString | Abre una cadena en una ventana de edición. Sintaxis: EditString(tcString, tcTitle, tlNoEdit) Argumentos: tcString especifica la cadena que se va a modificar. tcTitle especifica el nombre de la ventana de edición. tlNoEdit especifica si la cadena es modificable.
Método EraseTempFile | Especifica si se va a eliminar el archivo temporal actual. Sintaxis: EraseTempFile( ) Valor devuelto: ninguno Argumentos: ninguno
Método FileToString | Devuelve el contenido de un archivo como cadena. Sintaxis: FileString(tcFileName) Argumentos: tcFileName especifica el nombre del archivo del que se va extraer la cadena.
Método FrameBeforeNavigate | Proporciona un evento FrameBeforeNavigate. Sintaxis: FrameBeforeNavigate(URL, flags, targetframename, postdata, headers, cancel) Argumentos: URL especifica la página Web que se va a utilizar. flags especifica si el recurso se va a agregar al historial, leer o escribir en la caché, o se va a presentar en una nueva ventana o combinación de ventanas. targetframename especifica el nombre del marco de destino. postdata especifica los datos que se van a enviar a la transacción HTTP de publicación. headers especifica las cabeceras HTTP que se van a enviar. cancel especifica si la exploración se ha cancelado.
Método GetHTML | Devuelve el HTML del documento actual. Sintaxis: GetHTML(tcName, tcAlias) Argumentos: tcName especifica el nombre del documento que se va a devolver. tcAlias especifica el alias de cVFPScriptTable.
Método GetSourceFile | Devuelve el nombre de archivo del documento de origen actual. Sintaxis: GetSourceFile( ) Argumentos: ninguno
Método GetSourceHTML | Devuelve el HTML del documento de origen actual. Sintaxis: GetSourceHTML( ) Argumentos: ninguno
Método GoBack | Ejecuta el salto al hipervínculo anterior de la lista Historial. Sintaxis: GoBack( ) Valor devuelto: ninguno Argumentos: ninguno
Método GoForward | Ejecuta el salto al hipervínculo siguiente de la lista Historial. Sintaxis: GoForward( ) Valor devuelto: ninguno Argumentos: ninguno
Método Msgbox | Método que controla un cuadro de mensaje. Sintaxis: Msgbox(tcMessage, tnType, tcTitle) Argumentos: tcMessage especifica el mensaje que se va a presentar. tnType especifica el tipo del cuadro de mensaje. tcTitle especifica el título del cuadro de mensaje.
Método NavigateComplete | Proporciona un evento NavigateComplete. Sintaxis: NavigateComplete(URL) Argumentos: URL especifica la página Web a la que se va a desplazar.
Método NewWindow | Proporciona un evento NewWindow. Sintaxis: NewWindow(URL, flags, targetframename, postdata, headers, processed) Argumentos: URL especifica la página Web que se va a utilizar. flags especifica si el recurso se va a agregar al historial, leer o escribir en la caché, o se va a presentar en una nueva ventana o combinación de ventanas. targetframename especifica el nombre del marco de destino. postdata especifica los datos que se van a enviar a la transacción HTTP de publicación. headers especifica las cabeceras HTTP que se van a enviar. cancel especifica si la exploración se ha cancelado.
Método OpenTable | Abre la tabla especificada y la activa como tabla actual al establecer la propiedad cAlias. Sintaxis: OpenTable(tcFileName, tcAlias, tlExclusive, tcFilter) Argumentos: tcFileName especifica el nombre de la tabla que se va a abrir. tcAlias el alias de la tabla. tlExclusive especifica si la tabla se va a abrir en modo EXCLUSIVE. tcFilter especifica la expresión de filtrado que se va a utilizar.
Método OpenVFPScript | Abre la tabla de archivos de comandos de Visual FoxPro. Sintaxis: OpenVFPScript( )
Método ParseSource | Examina el código fuente del documento HTML. Sintaxis: ParseSource(URL, flags, targetframename, postdata, headers, cancel) Argumentos: URL especifica la página Web que se va a utilizar. flags especifica si el recurso se va a agregar al historial, leer o escribir en la caché, o se va a presentar en una nueva ventana o combinación de ventanas. targetframename especifica el nombre del marco de destino. postdata especifica los datos que se van a enviar a la transacción HTTP de publicación. headers especifica las cabeceras HTTP que se van a enviar. cancel especifica si la exploración se ha cancelado.
Método RefreshDeactivate | Se utiliza cuando se pierde el enfoque del control Web Browser. Sintaxis: RefreshDeactivate( ) Argumentos: ninguno
Método RefreshMode | Establece el modo de actualización. Sintaxis: Refresh( ) Argumentos: ninguno
Método RefreshSource | Actualiza el origen. Sintaxis: RefreshSource( ) Valor devuelto: ninguno Argumentos: ninguno
Método ReleaseHost | Libera el formulario contenedor. Sintaxis: ReleaseHost( ) Argumentos: ninguno
Método RunAction | Ejecuta una acción que es un método específico del objeto al que hace referencia la propiedad oAction. Sintaxis: RunAction(tcMethod) Argumentos: tcMethod especifica el método que se va a ejecutar.
Método RunCode | Ejecuta un bloque de código específico de Visual FoxPro sin compilar. Sintaxis: RunCode(tcCode) Argumentos: tcCode especifica el código de Visual FoxPro que se va a ejecutar.
Método RunScript | Ejecuta un archivo de comandos de Visual FoxPro concreto. Sintaxis: RunScript(tcScript, tcAlias) Argumentos: tcScript especifica el archivo de comandos que se va a ejecutar. tcAlias especifica el alias del archivo que contiene tcScript.
Método SetBusyState | Método que establece el modo ocupado. Sintaxis: SetBusyState(tlBusy) Argumentos: tlBusy especifica si hay una descarga en proceso.
Método SetParam | Método que establece los parámetros de la dirección URL. Sintaxis: SetParam(tcParam) Argumentos: tcParam
Método SkipRecord | Salta el registro de la tabla actualmente seleccionada basándose en cAlias. Sintaxis: SkipRecord(tnRecords) Argumentos: tnRecords especifica el número de registros que se van a saltar.
Método StringToFile | Guarda el contenido de la cadena en un archivo. Sintaxis: StringToFile(tcText, tcFileName) Argumentos: tcText especifica el texto que se va a guardar.tcFileName especifica el archivo de destino.
Método TrimExt | Devuelve un nombre de archivo sin extensión. Sintaxis: TrimExt(tcFileName, tlPlatformType) Valor devuelto: cFileName Argumentos: tcFileName especifica el nombre del archivo que se va a procesar. tlPlatformType especifica si el archivo es de un equipo DOS o un equipo Unix.
Método TrimFile | Devuelve la ruta de acceso del nombre de archivo especificado. Sintaxis: TrimFile(tcFileName, lPlatType) Argumentos: tcFileName especifica el nombre del archivo de destino. lPlatType especifica si el archivo es de un equipo DOS o un equipo Unix.
Método TrimPath | Devuelve el nombre del archivo sin ruta de acceso. Sintaxis: TrimPath(tcFileName, tlTrimExt, tlPlatformType ) Argumentos: tcFileName especifica el nombre del archivo. tlTrimExt especifica si se va a eliminar la extensión. tlPlatformType especifica si el archivo es de un equipo DOS o un equipo Unix.
Método ValidateURL | Valida la dirección URL. Sintaxis: ValidateURL(tcURL) Argumentos: tcURL especifica la página Web que se va a validar.
Método ValidURL | Devuelve la dirección URL validada. Sintaxis: ValidURL(tcURL) Argumentos: tcURL especifica la página Web que se va a devolver.
Método VFPS | Ejecuta un archivo de comandos de Visual FoxPro basándose en la dirección URL especificada. Sintaxis: VFPS(tcCommand) Argumentos: tcCommand especifica la expresión Visual FoxPro que se va a ejecutar.
Método VFPScript | Ejecuta un archivo de comandos de Visual FoxPro concreto. Sintaxis: VFPScript(tcName, tcAlias, tnCode) Argumentos: tcName especifica el nombre del archivo cVFPScript tcAlias especifica el alias de cVFPScriptTable tnCode especifica el código de Visual FoxPro que se va a ejecutar.
Método ViewSource | Ve el origen del documento actual. Sintaxis: ViewSource(tlNoWait, tlNoEdit) Argumentos: tlNoWait especifica si el programa se detiene mientras se muestra la ventana. tlNoEdit especifica si el origen se puede modificar.
Método WaitWindow | Método de espera de ventana. Sintaxis: WaitWindow(tcText, tlWait) Argumentos: tcText especifica el texto que se presenta en la ventana de espera. tlWait especifica si el programa se detiene mientras la ventana se está presentando.
Método WildcardMatch | Devuelve verdadero (.T.) si la cadena de comodines coincide con una cadena específica. Sintaxis: WildcardMatch(tcMatchExpList, tcExpressionSearched, tlMatchAsIs) Valor devuelto: lMatch Argumentos: tcMatchExpList especifica la expresión de búsqueda. tcExpressionSearched especifica la expresión de destino. tlMatchAsIs especifica si se busca una coincidencia exacta.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Controlador de ventana (Foundation Class)

Categoría | Aplicación
Catálogo predeterminado | Visual FoxPro Catalog\Foundation Classes\Application
Clase | _windowhandler
Clase de base | Custom
Biblioteca de clases | _ui.vcx
Clase primaria | _custom
Ejemplo | ...\Samples\Solution\Ffc\whandler.scx

Observaciones

Esta clase es un controlador de ventanas de propósito general que ejecuta varias operaciones comunes en las ventanas, como su presentación en cascada.

Para utilizarla, coloque la clase en un proyecto o en un formulario o, desde el menú Acceso directo a elementos de la Galería de componentes, seleccione Agregar al proyecto o Agregar al formulario. Al agregar la clase a un proyecto, puede elegir entre agregar la clase o crear una subclase. Al agregar la clase a un formulario, Visual FoxPro presenta el icono en el formulario para que pueda especificar los valores de las propiedades y utilizar sus métodos disponibles dentro del Diseñador de formularios.

Para obtener más información sobre el uso de las Foundation Classes, vea Recomendaciones para utilizar las Foundation Classes de Visual FoxPro.

Propiedades, eventos, métodos | Descripción
Propiedad IMDIWorkspaceColor Contiene el color de Windows para la
ventana de nivel superior.
Valor predeterminado: 0
Método CascadeFormInstances
 Presenta formularios en cascada.
Sintaxis: CascadeFormInstances(tcFormName,
tlOmitAutoCenteredForms, tnStartTop,
tnStartLeft, tnStartColumn)
Valor devuelto: ninguno
Argumentos:
tcFormName especifica el formulario o
_screen en que se van a presentar los
formularios en cascada
tlOmitAutoCenteredForms especifica si se van a omitir de la cascada los formularios autocentrados.
tnStartTop especifica la coordenada inicial superior.
tnStartLeft especifica la coordenada inicial izquierda.
Método GetCurrentTopFormRef Devuelve la ventana actual. Se utiliza principalmente en aplicaciones
con formulario de nivel superior.
Sintaxis: GetCurrentTopFormReference( )
Valor devuelto: loTopForm
Argumentos: ninguno
IMDIWorkspaceColor_access( ) Sintaxis: IMDIWorkspaceColor_access( )
Valor devuelto: GetSysColor(12)
Argumentos: ninguno
Método InvokeMenuItemInFrame Se utiliza para invocar elementos de menú
en aplicaciones con formularios de nivel
superior para tener acceso a ciertos
cuadros de diálogo del sistema, como el
cuadro de diálogo Buscar. También se utiliza para implementar un
elemento de menú en un cuadro de
diálogo que no tenga menú.
Sintaxis: InvokeMenuItemInFrame(tcAction)
Valor devuelto: ninguno
Argumentos:
tcAction especifica la acción de desplazamiento, como NEXT o PREVIOUS.
También puede utilizar las siguientes
acciones: UNDO, REDO, CUT, COPY,
PASTE, CLEAR, SELECTALL, FIND,
FINDAGAIN, REPLACE.
Método ShowCurrentTopForm | Componente interno de la clase.
Método ShowWindowInFrame | Componente interno de la clase.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Servicios Web XML (Foundation Class)

Las bibliotecas _WS3Utils.vcx y _WS3Client.vcx, contienen una colección de clases que sirven como extensiones del Servicio Web XML de Visual FoxPro para Microsoft SOAP Toolkit versión 3.0. Utilice estas clases para registrar Servicios Web XML de conformidad con aquellos soportados por el Toolkit. También puede publicar Servicios COM (archivos .dll) de Visual FoxPro como Servicios Web XML utilizando estas extensiones (bibliotecas).

Biblioteca de clases _WS3Utils.vcx

Clase | Descripción
Olecontrols | Control Tree View utilizado por el Generador de Servicios Web XML
Wsbasebuilder | Clase base de formulario utilizada por el Generador de Servicios Web XML
Wsbuilder | Cuadro de diálogo Iniciar del Generador de Servicios Web XML
Wsbuilder1 | Servicio Web XML – Detalle de operación (cuadro de diálogo)
Wsbuilder2 | Servicio Web XML – Detalle de cliente (cuadro de diálogo)
Wsbuilder3 | Servicio Web XML – Tipos complejos (cuadro de diálogo)
Wsbuilder4 | Servicio Web XML – Valores de parámetro (cuadro de diálogo)
Wsconfig | Cuadro de diálogo utilizado por el Publicador de Servicios Web para especificar una ubicación URL para archivos WSDL
Wsfoxcode | Clase utilizada para controlar IntelliSense para un Servicio Web XML cuando se está accediendo por un programa en la ventana Modificar
Wsmanager | Clase llamada por el panel Servicio Web XML en el Administrador del panel de tareas para administrar Servicios Web XML
Wsphook | Clase Project hook utilizada por el Publicador de Servicios Web XML para volver a generar archivos WSDL cuando se vuelve a generar el proyecto
Wspicker | Cuadro de diálogo para seleccionar una clase Servicio Web XML para insertar código de proxy. Este cuadro de diálogo se abre cuando escriba los caracteres, ws en una ventana Modificar para un programa
Wsproxy | Clase usada para generar código de proxy cuando una clase Servicio Web XML se arrastra y suelta desde la Caja de herramientas a una ventana Modificar para un programa o llamada escribiendo los caracteres, ws, en la ventana Modificar.
Wspub | Publicador de Servicios Web XML de Visual FoxPro (cuadro de diálogo)
Wsreg | Registrar Servicios Web XML de Visual FoxPro (cuadro de diálogo)
Wstest | Cuadro de diálogo llamado desde el panel Servicios Web XML en el Administrador del panel de tareas para probar un Servicio Web XML
Wstool | Avanzado del Publicador de Servicios Web XML de Visual FoxPro (cuadro de diálogo)
Wsuddi | Buscar UDDI de Registrar Servicios Web XML de Visual FoxPro (cuadro de diálogo)
_webservices | Clase motor Core para publicar y registrar Servicios Web XML

Biblioteca de clases _WS3Client.vcx

Clase | Descripción
Wshandler | La clase cliente Core utilizada para comunicarse con un Servicio Web XML. Esta clase se utiliza en el código proxy generado en la ventana Modificar de un programa y cuando se enlazan visualmente controles a un Servicio Web XML en un formulario.
Colbase | Clase desde la cual se deriva las clases Collection del Servicio Web XML
Colclient | Clase agregada a la colección clientes ColClients
Colclients | Operación clase colección de clientes
Coloperation | Clase agregada a la colección de operaciones Coloperations
Coloperations | Operación clase colección de operaciones
Colparm | Clase agregada a la colección de parámetros Colparms
Colparms | Operación clase colección de parámetros
Wsparms | Cuadro de diálogo que pide al usuario ingresar parámetros para la operación del Servicio Web XML
Wsparmzoom | Cuadro de diálogo Zoom utilizado por el cuadro de diálogo Ingresar parámetros

Observaciones

En la biblioteca de clases _WS3Utils.vcx, la clase motor core, _WebServices, se comunica directamente con el Toolkit. La clase _WebServices contiene métodos para publicar Servicios Web XM, incluyendo aquellos que leen la información de la biblioteca tipo desde el servidor y aquellos que generan los archivos de soporte necesarios para Servicio Web XML, por ejemplo, archivos de descripción ASP listener y WSDL service. También puede registrar un Servicio Web XML externo utilizando los métodos proporcionados.

La biblioteca de clases _WS3Utils.vcx contiene otras clases de soporte para trabajar con Servicios Web XML. Estas clases son esencialmente, clases de formularios que ayudan a recoger información del usuario para registrar y publicar Servicios Web XML. Ellas trabajan junto con las clases _WebServices.

En la biblioteca de clases _WS3Client.vcx, la clase fundamental para usar un Servicio Web XML es WSHandler. Esta clase controla todas las llamadas a las clases Cliente SOAP Toolkit 3.0 que conectan a un Servicio Web XML y llaman las operaciones.

Vea también

Recomendaciones para utilizar las Foundation Classes de Visual FoxPro | Foundation Classes de Visual FoxPro (A-Z) | Ejemplos Foundation Classes de Visual FoxPro


Propiedades

Para información adicional sobre referencia de lenguaje compatible con versiones anteriores, vea Elementos del lenguaje compatibles con versiones anteriores.

A

ActiveColumn (Propiedad)

ActiveControl (Propiedad)

ActiveForm (Propiedad)

ActivePage (Propiedad)

ActiveProject (Propiedad)

ActiveRow (Propiedad)

AddLineFeeds (Propiedad)

Alias (Propiedad)

Align (Propiedad)

Alignment (Propiedad)

AllowAddNew (Propiedad)

AllowAutoColumnFit (Propiedad)

AllowCellSelection (Propiedad)

AllowDelete (Propiedad)

AllowHeaderSizing (Propiedad)

AllowInsert (Propiedad)

AllowOutput (Propiedad)

AllowRowSizing (Propiedad)

AllowSimultaneousFetch (Propiedad)

AllowTabs (Propiedad)

AllowUpdate (Propiedad)

AlwaysOnBottom (Propiedad)

AlwaysOnTop (Propiedad)

Application (Propiedad)

AutoActivate (Propiedad)

AutoCenter (Propiedad)

AutoCloseTables (Propiedad)

AutoIncrement (Propiedad)

AutoOpenTables (Propiedad)

AutoRelease (Propiedad)

AutoSize (Propiedad)

AutoVerbMenu (Propiedad)

AutoYield (Propiedad)

B

BackColor, ForeColor (Propiedades)

BackStyle (Propiedad)

BaseClass (Propiedad)

BatchUpdateCount (Propiedad)

BindControls (Propiedad)

BorderColor (Propiedad)

BorderStyle (Propiedad)

BorderWidth (Propiedad)

Bound (Propiedad)

BoundColumn (Propiedad)

BoundTo (Propiedad)

BreakOnError (Propiedad)

BufferMode (Propiedad)

BufferModeOverride (Propiedad)

BuildDateTime (Propiedad)

ButtonCount (Propiedad)

Buttons (Propiedad)

C

Cancel (Propiedad)

Caption (Propiedad)

Centered (Propiedad)

Century (Propiedad)

ChildAlias (Propiedad)

ChildOrder (Propiedad)

ChildTable (Propiedad)

Class (Propiedad)

ClassLibrary (Propiedad)

ClipControls (Propiedad)

Closable(Propiedad)

CLSID (Propiedad)

CodePage (Propiedad)

ColorScheme (Propiedad)

ColorSource (Propiedad)

ColumnCount (Propiedad)

ColumnLines (Propiedad)

ColumnOrder (Propiedad)

Columns (Propiedad)

ColumnWidths (Propiedad)

Comment (Propiedad)

CompareMemo (Propiedad)

ContinuousScroll (Propiedad)

ControlBox (Propiedad)

ControlCount (Propiedad)

Controls (Propiedad)

ControlSource (Propiedad)

ConversionFunc (Propiedad)

Count (Propiedad)

CurrentControl (Propiedad)

CurrentX, CurrentY (Propiedades)

CursorSchema (Propiedad)

CursorSource (Propiedad)

CursorStatus (Propiedad)

Curvature (Propiedad)

D

Database (Propiedad)

DataSession (Propiedad)

DataSessionID (Propiedad)

DataSource (Propiedad)

DataSourceType (Propiedad)

DataType (Propiedad)

DateFormat (Propiedad)

DateMark (Propiedad)

Debug (Propiedad)

DEClass (Propiedad)

DEClassLibrary (Propiedad)

Default (Propiedad)

DefaultFilePath (Propiedad)

DefOLELCID (Propiedad)

DeleteCmd (Propiedad)

DeleteCmdDataSource (Propiedad)

DeleteCmdDataSourceType (Propiedad)

DeleteMark (Propiedad)

Description (Propiedad)

Desktop (Propiedad)

Details (Propiedad)

DisabledBackColor, DisabledForeColor (Propiedades)

DisabledItemBackColor, DisabledItemForeColor (Propiedades)

DisabledPicture (Propiedad)

DisableEncode (Propiedad)

DisplayCount (Propiedad)

DisplayValue (Propiedad)

Docked (Propiedad)

DockPosition (Propiedad)

DocumentFile (Propiedad)

DownPicture (Propiedad)

DragIcon (Propiedad)

DragMode (Propiedad)

DrawMode (Propiedad)

DrawStyle (Propiedad)

DrawWidth (Propiedad)

DynamicAlignment (Propiedad)

DynamicBackColor, DynamicForeColor (Propiedades)

DynamicCurrentControl (Propiedad)

DynamicFontBold, DynamicFontItalic, DynamicFontStrikethru, DynamicFontUnderline (Propiedades)

DynamicFontName (Propiedad)

DynamicFontOutline (Propiedad)

DynamicFontShadow (Propiedad)

DynamicFontSize (Propiedad)

DynamicInputMask (Propiedad)

E

EditorOptions (Propiedad)

Enabled (Propiedad)

EnableHyperlinks (Propiedad)

Encrypted (Propiedad)

ErrorNo (Propiedad)

Exclude (Propiedad)

Exclusive (Propiedad)

F

FetchAsNeeded (Propiedad)

FetchMemo (Propiedad)

FetchSize (Propiedad)

FileClass (Propiedad)

FileClassLibrary (Propiedad)

FillColor (Propiedad)

FillStyle (Propiedad)

Filter (Propiedad)

FirstElement (Propiedad)

Flags (Propiedad)

FontBold, FontItalic, FontStrikethru, FontUnderline (Propiedades)

FontCharSet (Propiedad)

FontCondense, FontExtend (Propiedades)

FontName (Propiedad)

FontOutline (Propiedad)

FontShadow (Propiedad)

FontSize (Propiedad)

ForceCloseTag (Propiedad)

Format (Propiedad)

FormCount (Propiedad)

FormattedOutput (Propiedad)

Forms (Propiedad)

FractionDigits (Propiedad)

FullName (Propiedad)

G

GridLineColor (Propiedad)

GridLines (Propiedad)

GridLineWidth (Propiedad)

H

HalfHeightCaption (Propiedad)

HeaderClass (Propiedad)

HeaderClassLibrary (Propiedad)

HeaderHeight (Propiedad)

Height (Propiedad)

HelpContextID (Propiedad)

HideSelection (Propiedad)

Highlight (Propiedad)

HighlightBackColor (Propiedad)

HighlightForeColor (Propiedad)

HighlightStyle (Propiedad)

HighlightRow (Propiedad)

HighlightRowLineWidth (Propiedad)

HomeDir (Propiedad)

Hours (Propiedad)

HostName (Propiedad)

HScrollSmallChange (Propiedad)

HWnd (Propiedad)

I

Icon (Propiedad)

Increment (Propiedad)

IncrementalSearch (Propiedad)

InitialSelectedAlias (Propiedad)

InputMask (Propiedad)

InsertCmd (Propiedad)

InsertCmdDataSource (Propiedad)

InsertCmdDataSourceType (Propiedad)

Instancing (Propiedad)

IntegralHeight (Propiedad)

Interval (Propiedad)

IMEMode (Propiedad)

IsAttribute (Propiedad)

IsBase64 (Propiedad)

IsBinary (Propiedad)

IsNull (Propiedad)

IsDiffGram (Propiedad)

IsLoaded (Propiedad)

ItemBackColor, ItemForeColor (Propiedades)

ItemData (Propiedad)

ItemIDData (Propiedad)

ItemTips (Propiedad)

IXMLDomElement (Propiedad)

J

K

KeyboardHighValue, KeyboardLowValue (Propiedades)

KeyField (Propiedad)

KeyFieldList (Propiedad)

KeyPreview (Propiedad)

KeySort (Propiedad)

L

LanguageOptions (Propiedad)

Left (Propiedad)

LeftColumn (Propiedad)

LineContents (Propiedad)

LineNo (Propiedad)

LineSlant (Propiedad)

LinkMaster (Propiedad)

List (Propiedad)

ListCount (Propiedad)

ListIndex (Propiedad)

ListItem (Propiedad)

ListItemID (Propiedad)

LockColumns (Propiedad)

LockColumnsLeft (Propiedad)

LockScreen (Propiedad)

M

MacDesktop (Propiedad)

MainFile (Propiedad)

MapN19_4ToCurrency (Propiedad)

Margin (Propiedad)

MaxButton (Propiedad)

MaxHeight (Propiedad)

MaxLeft (Propiedad)

MaxLength (Propiedad)

MaxRecords (Propiedad)

MaxTop (Propiedad)

MaxWidth (Propiedad)

MDIForm (Propiedad)

MemberClass (Propiedad)

MemberClassLibrary (Propiedad)

MemoWindow (Propiedad)

Message (Propiedad)

MinButton (Propiedad)

MinHeight (Propiedad)

MinWidth (Propiedad)

MouseIcon (Propiedad)

MousePointer (Propiedad)

Movable (Propiedad)

MoverBars (Propiedad)

MultiSelect (Propiedad)

N

Name (Propiedad)

NewIndex (Propiedad)

NewItemID (Propiedad)

NoCpTrans (Propiedad)

NoDataOnLoad (Propiedad)

NullDisplay (Propiedad)

NumberOfElements (Propiedad)

O

Object (Propiedad)

OLEClass (Propiedad)

OLEDragMode (Propiedad)

OLEDragPicture (Propiedad)

OLEDropEffects (Propiedad)

OLEDropHasData (Propiedad)

OLEDropMode (Propiedad)

OLEDropTextInsertion (Propiedad)

OLELCID (Propiedad)

OLERequestPendingTimeout (Propiedad)

OLEServerBusyRaiseError (Propiedad)

OLEServerBusyTimeout (Propiedad)

OLETypeAllowed (Propiedad)

OneToMany (Propiedad)

OpenViews (Propiedad)

OpenWindow (Propiedad)

Order (Propiedad)

P

PageCount (Propiedad)

PageHeight (Propiedad)

PageOrder (Propiedad)

Pages (Propiedad)

PageWidth (Propiedad)

Panel (Propiedad)

PanelLink (Propiedad)

Parent (Referencia de objeto)

ParentAlias (Propiedad)

ParentClass (Propiedad)

ParentTable (Propiedad)

Partition (Propiedad)

PasswordChar (Propiedad)

Picture (Propiedad)

PicturePosition (Propiedad)

PictureSelectionDisplay (Propiedad)

Prepared (Propiedad)

PreserveWhiteSpace (Propiedad)

Procedure (Propiedad)

ProcessID (Propiedad)

ProgID (Propiedad)

ProjectHook (Propiedad)

ProjectHookClass (Propiedad)

ProjectHookLibrary (Propiedad)

Q

R

ReadCycle (Propiedad)

ReadLock (Propiedad)

ReadMouse (Propiedad)

ReadObject (Propiedad)

ReadOnly (Propiedad)

ReadSave (Propiedad)

ReadTimeout (Propiedad)

RecordMark (Propiedad)

RecordSource (Propiedad)

RecordSourceType (Propiedad)

RelationalExpr (Propiedad)

RelativeColumn (Propiedad)

RelativeRow (Propiedad)

ReleaseType (Propiedad)

Resizable (Propiedad)

RespectCursorCP (Propiedad)

RightToLeft (Propiedad)

RotateFlip (Propiedad)

RowColChange (Propiedad)

RowHeight (Propiedad)

RowSource (Propiedad)

RowSourceType (Propiedad)

S

ScaleMode (Propiedad)

SCCProvider (Propiedad)

SCCStatus (Propiedad)

ScrollBars (Propiedad)

Seconds (Propiedad)

SelectCmd (Propiedad)

Selected (Propiedad)

SelectedID (Propiedad)

SelectedItemBackColor (Propiedad)

SelectedItemForeColor (Propiedad)

SelectOnEntry (Propiedad)

SelLength (Propiedad)

SelStart (Propiedad)

SelText (Propiedad)

SendUpdates (Propiedad)

ServerClass (Propiedad)

ServerClassLibrary (Propiedad)

ServerHelpFile (Propiedad)

ServerName (Propiedad)

ServerProject (Propiedad)

ShowTips (Propiedad)

ShowInTaskbar (Propiedad)

ShowWindow (Propiedad)

Sizable (Propiedad)

SizeBox (Propiedad)

SOM (Propiedad)

Sorted (Propiedad)

Sparse (Propiedad)

SpecialEffect (Propiedad)

SpinnerHighValue, SpinnerLowValue (Propiedades)

SplitBar (Propiedad)

StackLevel (Propiedad)

StartMode (Propiedad)

StatusBar (Propiedad)

StatusBarText (Propiedad)

Stretch (Propiedad)

StrictDateEntry (Propiedad)

Style (Propiedad)

T

TabIndex (Propiedad)

Tables (Propiedad)

TabOrientation (Propiedad)

Tabs (Propiedad)

TabStop (Propiedad)

TabStretch (Propiedad)

TabStyle (Propiedad)

Tag (Propiedad)

TerminateRead (Propiedad)

Text (Propiedad)

Themes (Propiedad)

ThreadID (Propiedad)

TitleBar (Propiedad)

ToolTipText (Propiedad)

Top (Propiedad)

TopIndex (Propiedad)

TopItemID (Propiedad)

Type (Propiedad)

TypeLibCLSID (Propiedad)

TypeLibDesc (Propiedad)

TypeLibName (Propiedad)

U

Unicode (Propiedad)

UpdatableFieldList (Propiedad)

UpdateCmd (Propiedad)

UpdateCmdDataSource (Propiedad)

UpdateCmdDataSourceType (Propiedad)

UpdateGram (Propiedad)

UpdateGramSchemaLocation (Propiedad)

UpdateNameList (Propiedad)

UpdateType (Propiedad)

UseDeDataSource (Propiedad)

UseMemoSize (Propiedad)

UserValue (Propiedad)

UTF8Encoded (Propiedad)

V

Value (Propiedad)

Version (Propiedad)

VersionComments (Propiedad)

VersionCompany (Propiedad)

VersionCopyright (Propiedad)

VersionDescription (Propiedad)

VersionNumber (Propiedad)

VersionProduct (Propiedad)

VersionTrademarks (Propiedad)

VFPXMLProgID (Propiedad)

ViewPortHeight (Propiedad)

ViewPortLeft (Propiedad)

ViewPortTop (Propiedad)

ViewPortWidth (Propiedad)

VScrollSmallChange (Propiedad)

View (Propiedad)

Visible (Propiedad)

VisualEffect (Propiedad)

W

WhatsThisButton (Propiedad)

WhatsThisHelp (Propiedad)

WhatsThisHelpID (Propiedad)

WhereType (Propiedad)

Width (Propiedad)

WindowList (Propiedad)

WindowState (Propiedad)

WindowType (Propiedad)

WordWrap (Propiedad)

WrapCharInCDATA (Propiedad)

WrapInCDATA (Propiedad)

WrapMemoInCDATA (Propiedad)

X

XMLAdapter (Propiedad)

XMLConstraints (Propiedad)

XMLName (Propiedad)

XMLNamespace (Propiedad)

XMLPrefix (Propiedad)

XMLSchemaLocation (Propiedad)

XMLTable (Propiedad)

XMLType (Propiedad)

XSDfractionDigits (Propiedad)

XSDmaxLength (Propiedad)

XSDtotalDigits (Propiedad)

XSDtype (Propiedad)

Y

Z

ZoomBox (Propiedad)


ActiveColumn (Propiedad)

Devuelve como un entero el número de la columna que contiene la celda activa en un control cuadrícula. No está disponible en tiempo de diseño; es de sólo lectura en tiempo de ejecución.

Grid.ActiveColumn

Observaciones

ActiveColumn devuelve cero si la cuadrícula no tiene el enfoque.

Example

El siguiente ejemplo muestra la utilización de la propiedad ActiveColumn del control cuadrícula.

m.cTalk=SET("TALK")
SET TALK OFF

PUBLIC oTlb
oTlb = NEWOBJECT("tlbDemo")
oTlb.SHOW

PUBLIC oFrmDemo
oFrmDemo=NEWOBJECT("frmDemo")
oFrmDemo.SHOW

READ EVENTS

RELEASE oTlb
RELEASE oFrmDemo
SET TALK &cTalk

RETURN

DEFINE CLASS tlbDemo AS TOOLBAR

HEIGHT = 31
LEFT = 30
TOP = 30
WIDTH = 149
NAME = "tlbDemo"
CAPTION = "Example"
CONTROLBOX = .F.

ADD OBJECT cmdShowColumn AS COMMANDBUTTON WITH ;
TOP = 5, ;
LEFT = 5, ;
HEIGHT = 22, ;
WIDTH = 100, ;
CAPTION = "ActiveColumn?", ;
NAME = "cmdShowColumn"

ADD OBJECT sepSeparator1 AS SEPARATOR WITH ;
TOP = 5, ;
LEFT = 80, ;
HEIGHT = 0, ;
WIDTH = 0, ;
NAME = "sepSeparator1"

ADD OBJECT cmdExit AS COMMANDBUTTON WITH ;
TOP = 5, ;
LEFT = 80, ;
HEIGHT = 22, ;
WIDTH = 34, ;
CAPTION = "Exit", ;
NAME = "cmdExit"

PROCEDURE cmdShowColumn.CLICK
DO ShowColumn
ENDPROC

PROCEDURE cmdExit.CLICK
CLEAR EVENTS
ENDPROC

ENDDEFINE

DEFINE CLASS frmDemo AS FORM

CLOSABLE = .F.
CAPTION = "ActiveColumn Example"
NAME = "frmDemo"
LEFT = 60
TOP = 100

ADD OBJECT grdNames AS GRID WITH ;
COLUMNCOUNT = 3, ;
DELETEMARK = .F., ;
HEIGHT = 128, ;
LEFT = 12, ;
PANEL = 1, ;
RECORDSOURCE = "names", ;
SPLITBAR = .F., ;
TABINDEX = 3, ;
TOP = 48, ;
WIDTH = 340, ;
NAME = "grdNames", ;
Column1.CONTROLSOURCE = "names.cname", ;
Column1.WIDTH = 122, ;
Column1.NAME = "Column1", ;
Column2.CONTROLSOURCE = "names.nvalue", ;
Column2.WIDTH = 100, ;
Column2.NAME = "Column2", ;
Column3.CONTROLSOURCE = "names.dbirth", ;
Column3.WIDTH = 122, ;
Column3.NAME = "Column3"

PROCEDURE LOAD
CREATE CURSOR names (cname C(40), nvalue N(19,2), dbirth D)
INSERT INTO names VALUES('Thomas',12.5,{^1990-5-11})
INSERT INTO names VALUES('Jerry',18.2,{^1993-1-28})
INSERT INTO names VALUES('Andrew',9.2,{^1986-1-23})
GO TOP
ENDPROC

PROCEDURE INIT
THIS.grdNames.Column1.Header1.CAPTION = "Name"

WITH THIS.grdNames.Column1.Text1
.BORDERSTYLE = 0
.MARGIN = 0
ENDWITH

THIS.grdNames.Column2.Header1.CAPTION = "Value"

WITH THIS.grdNames.Column2.Text1
.BORDERSTYLE = 0
.MARGIN = 0
ENDWITH

THIS.grdNames.Column3.Header1.CAPTION = "Birthdate"

WITH THIS.grdNames.Column3.Text1
.BORDERSTYLE = 0
.MARGIN = 0
ENDWITH

ENDPROC

ENDDEFINE

PROCEDURE ShowColumn
WAIT WINDOW AT 4,30 "_SCREEN.ActiveForm.ActiveControl.ActiveColumn = "+TRANSFORM(_SCREEN.ActiveForm.ActiveControl.ActiveColumn) NOWAIT
ENDPROC

Vea también

ActivateCell (Método) | ActiveRow (Propiedad) | GridHitTest (Método)

Se aplica a: Grid (Control)


ActiveControl (Propiedad)

Hace referencia al control activo de un objeto. No está disponible en tiempo de diseño; es de sólo lectura en tiempo de ejecución.

Object.ActiveControl.Property[ = Value]

Valores de la propiedad

Property
La propiedad que se devuelve o establece.
Value
La propiedad actual o nueva.

Observaciones

Esta propiedad no está disponible si todos los controles del objeto especificado son invisibles o están desactivados.

Si el objeto está activo, la propiedad ActiveControl hace referencia al control que tiene el enfoque. Si el objeto no está activo, se produce un error.

Ejemplo

El siguiente ejemplo utiliza la propiedad ActiveControl para mostrar qué control en el formulario tiene el foco. Observe que el control cuadrícula es contenedor y requiere de código para determinar cual es el ActiveControl actual dentro del Grid.

m.cTalk=SET("TALK")
SET TALK OFF

PUBLIC oTlb
oTlb = NEWOBJECT("tlbDemo")
oTlb.SHOW

PUBLIC oFrmDemo
oFrmDemo=NEWOBJECT("frmDemo")
oFrmDemo.SHOW

READ EVENTS

RELEASE oTlb
RELEASE oFrmDemo
SET TALK &cTalk

RETURN

DEFINE CLASS tlbDemo AS TOOLBAR

HEIGHT = 31
LEFT = 30
TOP = 30
WIDTH = 149
NAME = "tlbDemo"
CONTROLBOX = .F.

ADD OBJECT cmdShowControl AS COMMANDBUTTON WITH ;
TOP = 5, ;
LEFT = 5, ;
HEIGHT = 22, ;
WIDTH = 100, ;
CAPTION = "ActiveControl?", ;
NAME = "cmdShowControl"

ADD OBJECT sepSeparator1 AS SEPARATOR WITH ;
TOP = 5, ;
LEFT = 80, ;
HEIGHT = 0, ;
WIDTH = 0, ;
NAME = "sepSeparator1"

ADD OBJECT cmdExit AS COMMANDBUTTON WITH ;
TOP = 5, ;
LEFT = 80, ;
HEIGHT = 22, ;
WIDTH = 34, ;
CAPTION = "Exit", ;
NAME = "cmdExit"

PROCEDURE cmdShowControl.CLICK
DO ShowControl
ENDPROC

PROCEDURE cmdExit.CLICK
CLEAR EVENTS
ENDPROC

ENDDEFINE

DEFINE CLASS frmDemo AS FORM

DOCREATE = .T.
CAPTION = "Demo Form"
NAME = "frmDemo"
LEFT = 60
TOP = 100

ADD OBJECT cmdClose AS COMMANDBUTTON WITH ;
TOP = 200, ;
LEFT = 264, ;
HEIGHT = 27, ;
WIDTH = 84, ;
CANCEL = .T., ;
CAPTION = "Close", ;
DEFAULT = .T., ;
TABINDEX = 4, ;
NAME = "cmdClose"

ADD OBJECT grdNames AS GRID WITH ;
COLUMNCOUNT = 2, ;
DELETEMARK = .F., ;
HEIGHT = 128, ;
LEFT = 12, ;
PANEL = 1, ;
RECORDSOURCE = "names", ;
SPLITBAR = .F., ;
TABINDEX = 3, ;
TOP = 48, ;
WIDTH = 344, ;
NAME = "grdNames", ;
Column1.CONTROLSOURCE = "names.cname", ;
Column1.WIDTH = 222, ;
Column1.NAME = "Column1", ;
Column2.CONTROLSOURCE = "names.nvalue", ;
Column2.NAME = "Column2"

ADD OBJECT txtName AS TEXTBOX WITH ;
CONTROLSOURCE = "names.cname", ;
HEIGHT = 24, ;
LEFT = 56, ;
TABINDEX = 2, ;
TOP = 12, ;
WIDTH = 125, ;
NAME = "txtName"

ADD OBJECT lblNameLabel AS LABEL WITH ;
CAPTION = "Name:", ;
HEIGHT = 17, ;
LEFT = 16, ;
TOP = 16, ;
WIDTH = 40, ;
TABINDEX = 1, ;
NAME = "lblNameLabel"

PROCEDURE LOAD
CREATE CURSOR names (cname C(40), nvalue N(19,2))
INSERT INTO names VALUES('Thomas',12.5)
INSERT INTO names VALUES('Jerry',18.2)
INSERT INTO names VALUES('Andrew',9.2)
GO TOP
ENDPROC

PROCEDURE INIT
THIS.grdNames.Column1.Header1.CAPTION = "Name"

WITH THIS.grdNames.Column1.Text1
.BORDERSTYLE = 0
.MARGIN = 0
ENDWITH

THIS.grdNames.Column2.Header1.CAPTION = "Value"
WITH THIS.grdNames.Column2.Text1
.BORDERSTYLE = 0
.MARGIN = 0
ENDWITH

ENDPROC

PROCEDURE cmdClose.CLICK
THISFORM.RELEASE
ENDPROC

PROCEDURE grdNames.AFTERROWCOLCHANGE
LPARAMETERS nColIndex
THISFORM.REFRESH
ENDPROC

PROCEDURE txtName.VALID
THISFORM.grdnames.REFRESH
ENDPROC

ENDDEFINE

PROCEDURE ShowControl
IF TYPE("_Screen.ActiveForm.ActiveControl")=="O"
LOCAL loActiveControl
m.loActiveControl = _SCREEN.ACTIVEFORM.ACTIVECONTROL
IF m.loActiveControl.BASECLASS = "Grid"
m.loActiveControl = ;
EVALUATE("m.loActiveControl.Columns(m.loActiveControl.ActiveColumn)." + ;
m.loActiveControl.COLUMNS(m.loActiveControl.ACTIVECOLUMN).CURRENTCONTROL)
ENDIF
m.cObjHierarchy=UPPER(SYS(1272,m.loActiveControl))
WAIT WINDOW AT 4,30 "_SCREEN.ActiveForm.ActiveControl = "+m.cObjHierarchy NOWAIT
ELSE
WAIT WINDOW AT 4,30 "There is no ActiveControl; there is no ActiveForm" NOWAIT
ENDIF
ENDPROC

Vea también

ActiveForm (Propiedad)

Se aplica a: Container (Objeto) | Form (Objeto) | Page (Objeto) | _SCREEN | ToolBar (Objeto)


ActiveForm (Propiedad)

Hace referencia al objeto Form activo en un conjunto de formularios o en el objeto _SCREEN. No está disponible en tiempo de diseño; es de sólo lectura en tiempo de ejecución.

Object.ActiveForm.Property [ = Setting] -or- Object.ActiveForm.Method

Valores de la propiedad

Property
Especifica cualquier propiedad del formulario activo contenido en el conjunto de formularios; por ejemplo, la propiedad Caption.
Setting
El valor existente o un nuevo valor de la propiedad Property.
Método
Especifica cualquier método del formulario activo contenido en el conjunto de formularios; por ejemplo, el método Move.

Observaciones

Si el objeto FormSet contenedor está activo, ActiveForm hace referencia al objeto Form que tiene el enfoque. Si el objeto FormSet contenedor no está activo, se produce un error.

Utilice la propiedad ActiveForm para tener acceso a las propiedades y los métodos del objeto Form activo.

Ejemplo

Este ejemplo muestra cómo la propiedad ActiveForm puede ser utilizada dentro de un menú para permitir abrir o cerrar el formulario. Al ejecutar este ejemplo, observe que el elemento de menú Cerrar en el menú Ventana se activa solamente si hay algún formulario abierto. Su comportamiento es controlado por la cláusula SKIP FOR en la barra 1 del popup Wwindow, el que verifica si el formulario está activo chequeando si el nombre (Name) del formulario es de tipo carácter. La propiedad Name será de tipo carácter si existe un formulario activo; en caso contrario la propiedad será indefinida (tipo U - undefined.)

SET SYSMENU TO
SET SYSMENU AUTOMATIC

DEFINE PAD _0k50sa3dr OF _MSYSMENU PROMPT "\<Window" COLOR SCHEME 3 ;
KEY ALT+W, ""
DEFINE PAD _0k50sa3ds OF _MSYSMENU PROMPT "E\<xit" COLOR SCHEME 3 ;
KEY ALT+X, ""
ON PAD _0k50sa3dr OF _MSYSMENU ACTIVATE POPUP Wwindow
ON SELECTION PAD _0k50sa3ds OF _MSYSMENU DO CloseDemo

DEFINE POPUP Wwindow MARGIN RELATIVE SHADOW COLOR SCHEME 4
DEFINE BAR 1 OF Wwindow PROMPT "\<Close" ;
SKIP FOR TYPE("_Screen.ActiveForm.Name")<>"C"
DEFINE BAR 2 OF Wwindow PROMPT "\<Open"
ON SELECTION BAR 1 OF Wwindow =_SCREEN.ACTIVEFORM.RELEASE()
ON SELECTION BAR 2 OF Wwindow DO OpenForm

PUBLIC ARRAY aoForms(1)
aoForms[1] = NEWOBJECT("frmdemo")
aoForms[1].SHOW

READ EVENTS

SET SYSMENU TO DEFAULT
CLEAR ALL

PROCEDURE OpenForm
DIMENSION aoForms(ALEN(aoForms)+1)
aoForms[ALEN(aoForms)] = NEWOBJECT("frmdemo")
aoForms[ALEN(aoForms)].SHOW
RETURN

PROCEDURE CloseDemo
CLEAR EVENTS
RETURN

DEFINE CLASS frmdemo AS FORM
CAPTION = "Demo Form"
NAME = "frmDemo"

ADD OBJECT cmdClose AS COMMANDBUTTON WITH ;
TOP = 200, ;
LEFT = 264, ;
HEIGHT = 27, ;
WIDTH = 84, ;
CANCEL = .T., ;
CAPTION = "Close", ;
DEFAULT = .T., ;
NAME = "cmdClose"

PROCEDURE cmdClose.CLICK
m.nOKButton=0
m.nInfo=64
=MESSAGEBOX("After this Form closes, select Exit from the menu to return to the Command Window",m.nInfo+m.nOKButton)
THISFORM.RELEASE
ENDPROC

PROCEDURE RELEASE
LOCAL m.nIndex
FOR m.nIndex = 1 TO ALEN(aoForms)
IF VARTYPE(aoForms[m.nIndex])=="O"
IF aoForms[m.nIndex]=THIS
aoForms[m.nIndex] = ""
EXIT
ENDIF
ENDIF
ENDFOR
ENDPROC
ENDDEFINE

Vea también

Activate (Evento) | Deactivate (Evento)

Se aplica a: Form (Objeto) | FormSet (Objeto) | _SCREEN


ActivePage (Propiedad)

Devuelve el número de la página activa de un objeto PageFrame. Disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

PageFrame.ActivePage

Ejemplo

El siguiente ejemplo crea una clase de usuario llamada WizardExample. Se utiliza esta clase para demostrar la manipulación de la propiedad ActivePage de un marco de página sin fichas, comúnmente utilizado en algunos asistentes de Visual FoxPro.

local loform
loform = createobject('WizardExample')
loform.Show(1)
return

DEFINE CLASS WizardExample AS form
Caption = "Wizard Example"
Name = "Form1"

ADD OBJECT pageframe1 AS pageframe WITH ;
PageCount = 3, ;
BorderWidth = 0, ;
Top = 12, ;
Left = 12, ;
Width = 336, ;
Height = 169, ;
Tabs = .F., ;
Name = "Pageframe1", ;
Page1.Caption = "Page1", ;
Page1.Name = "Page1", ;
Page2.Caption = "Page2", ;
Page2.Name = "Page2", ;
Page3.Caption = "Page3", ;
Page3.Name = "Page3"

ADD OBJECT CmdPrev AS commandbutton WITH ;
Top = 216, ;
Left = 60, ;
Height = 27, ;
Width = 84, ;
Caption = "Previous", ;
Name = "CmdPrev"

ADD OBJECT CmdNext AS commandbutton WITH ;
Top = 216, ;
Left = 204, ;
Height = 27, ;
Width = 84, ;
Caption = "Next", ;
Name = "CmdNext"

PROCEDURE CmdPrev.Click
With THISFORM.Pageframe1
if .ActivePage > 1 then
.ActivePage = .ActivePage - 1
endif
Endwith
ENDPROC

PROCEDURE CmdNext.Click
With THISFORM.Pageframe1
if .ActivePage < .PageCount then
.ActivePage = .ActivePage + 1
endif
Endwith
endproc

PROCEDURE Init
With THISFORM.pageframe1
.Page1.AddObject('Label1','label')
With .Page1.Label1
.Caption = "Wizard Page 1"
.Height = 17
.Left = 11
.Top = 20
.Width = 97
.Visible = .T.
Endwith

.Page2.AddObject('Label1','label')
With .Page2.Label1
.Caption = "Wizard Page 2"
.Height = 17
.Left = 11
.Top = 20
.Width = 97
.Visible = .T.
Endwith

.Page3.AddObject('Label1','label')
With .Page3.Label1
.Caption = "Wizard Page 3"
.Height = 17
.Left = 11
.Top = 20
.Width = 97
.Visible = .T.
Endwith
Endwith
ENDPROC
ENDDEFINE

Vea también

Activate (Evento) | GotFocus (Evento)

Se aplica a: PageFrame (Control)


ActiveProject (Propiedad)

Contiene una referencia al objeto Project para la ventana del Administrador de proyectos activa actualmente. Es de sólo lectura en tiempo de diseño y en tiempo de ejecución.

Object.ActiveProject

Observaciones

La propiedad ActiveProject contiene una referencia al objeto Project para la ventana del Administrador de proyectos situada en primer plano cuando hay más de una ventana del Administrador de proyectos abierta. Si intenta tener acceso a la propiedad ActiveProject cuando no hay ninguna ventana del Administrador de proyectos abierta, se produce un error.

Si desea obtener más información acerca de los proyectos, vea Enlaces del Administrador de proyectos y Herramientas de productividad para el desarrollo.

Ejemplo

El siguiente ejemplo utiliza la propiedad ActiveProject para contar los Informes y Etiquetas en un proyecto activo. Si el proyecto MyApp no existe, será creado cuando se ejectute MODIFY PROJECT.

MODIFY PROJECT myApp NOSHOW NOWAIT
nRptsLbls=0
FOR EACH oFile IN _VFP.ACTIVEPROJECT.FILES
IF INLIST(oFile.Type, "R", "B")  && Report and Label
nRptsLbls=nRptsLbls+1
ENDIF
ENDFOR

Vea también

File (Objeto) | Files (Colección) | Project (Objeto) | ProjectHook (Objeto) | Projects (Colección) | Server (Objeto) | Servers (Colección)

Se aplica a: Application (Objeto) | _VFP (Variable del sistema)


ActiveRow (Propiedad)

Especifica la fila que contiene la celda activa en un control cuadrícula. No está disponible en tiempo de diseño; es de sólo lectura en tiempo de ejecución.

Grid.ActiveRow

Observaciones

La propiedad ActiveRow no devuelve el mismo valor que RECNO( ) en una tabla indizada. ActiveRow devuelve cero si la cuadrícula no tiene el enfoque o si se tiene acceso a una fila de la cuadrícula que no se muestra por pantalla.

Example

El siguiente ejemplo crea una tabla y un formulario con un control cuadrícula. La propiedad ActiveRow del control cuadrícula es utilizada para mostrar el número de fila dentro del grid.

CREATE TABLE ardemo (fruit C(15))
INSERT INTO ardemo (fruit) VALUES ("Apples")
INSERT INTO ardemo (fruit) VALUES ("Oranges")
INSERT INTO ardemo (fruit) VALUES ("Grapes")
INSERT INTO ardemo (fruit) VALUES ("Bananas")
INSERT INTO ardemo (fruit) VALUES ("Pears")
INSERT INTO ardemo (fruit) VALUES ("Cherries")
LOCATE  && Mueve al inicio de la tabla, sinónimo de GO TOP

oForm1=NEWOBJECT("form1")
oForm1.Show
READ EVENTS
RETURN

DEFINE CLASS form1 AS Form
Caption = "Form1"
Name = "Form1"
ADD OBJECT Grid1 AS Grid WITH ;
ColumnCount = 2, ;
Height = 200, ;
Left = 24, ;
RecordSource = "ardemo", ;
Top = 24, ;
Width = 320, ;
Name = "Grid1", ;
Column1.ControlSource = "ardemo.fruit", ;
Column1.Width = 75, ;
Column1.Name = "Column1", ;
Column2.Bound = .F., ;
Column2.ControlSource = "This.ActiveRow", ;
Column2.Name = "Column2"

PROCEDURE Init
THIS.Grid1.Column2.Header1.Caption = 'ActiveRow'
ENDPROC
PROCEDURE Unload
CLEAR EVENTS
ENDPROC

ENDDEFINE

Vea también

ActivateCell (Método) | ActiveColumn (Propiedad) | GridHitTest (Método) | RECNO( ) (Función)

Se aplica a: Grid (Control)


AddLineFeeds (Propiedad)

Especifica que EditBox debe insertar caracteres de avance de línea (CHR(10)) después de los caracteres de retorno de carro (CHR(13)) dentro del texto de EditBox siempre que se lea la propiedad Value o que el valor se almacene en ControlSource. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.AddLineFeeds[ = lExpr]

Parámetros

lExpr
Verdadero (.T.) (Predeterminado) En el texto de EditBox, se insertan caracteres de avance de línea después de los caracteres de retorno de carro cuando se lee la propiedad Value o se almacena en ControlSource.

Falso (.F.) El texto de EditBox no se modifica cuando se lee la propiedad Value o se almacena en ControlSource.

Observaciones

EditBox, de forma predeterminada, se asegura que los finales de línea tengan tanto caracteres de retorno de carro como de avance de línea; para ello, inserta caracteres de avance de línea si no están ya presentes en el momento de leer la propiedad Value. Esto puede suceder, además de cuando el código de usuario lee la propiedad Value, cada vez que EditBox pierde el foco, puesto que Visual FoxPro lee automáticamente en este momento el contenido de Value y lo almacena en ControlSource.

La inserción de caracteres de avance de línea desplaza el texto, pero el valor de SelStart no cambia; en consecuencia, la propiedad SelStart puede señalar a una posición incorrecta del búfer de texto. Establezca la propiedad AddLineFeeds en el valor falso (.F.) para asegurarse de que no se inserta ningún carácter en el búfer de texto.

La lectura de la propiedad Text nunca provoca la inserción de caracteres de avance de línea, independientemente de la configuración de AddLineFeeds.

Vea también

ControlSource (Propiedad) | SelStart (Propiedad) | Text (Propiedad) | Value (Propiedad)

Se aplica a: EditBox (Control)


Alias (Propiedad)

Especifica un nombre de alias para el objeto apropiado. De lectura/escritura en tiempo de diseño y en tiempo de ejecución.

La propiedad Alias simula el comportamiento de la claúsula ALIAS en el comando USE.

DataEnvironment.Cursor.Alias [= cText]

-o-

CursorAdapter.Alias [= cText]

-o-

XMLTable.Alias [= cText]

-o-

XMLTable.XMLField.Alias [= cText]

Valores de la propiedad

cText
Tipo de datos carácter. La siguiente tabla describe los valores para cText, dependiendo del objeto.
Object | cText
Cursor | Nombre de alias para cada tabla o vista asociada con el cursor.
CursorAdapter | Nombre de alias para el cursor generado por la propiedad SelectCmd.
XMLTable Nombre de alias para el cursor de Visual FoxPro.

Si cText es una cadena vacía (""), el método XMLAdapter ToXML agrega el esquema de tabla pero no agrega ningún dato.
XMLField Nombre de alias para el nombre de campo en el cursor de Visual FoxPro.

Si cText es una cadena vacia (""), los métodos XMLTable ToCursor y ApplyDiffGram pasan por alto el campo.

Observaciones

Para objetos Cursor, cuando Visual FoxPro carga el entorno de datos, se asigna un nombre de alias que es el mismo al nombre de la tabla o vista asociada con el cursor predeterminado. Utilice la propiedad Alias para reemplazar el nombre de alias predeterminado.

Para objetos CursorAdapter, Visual FoxPro utiliza la propiedad Alias para resolver el nombre correcto de alias para tablas y campos que arrastre y coloque al formulario desde el entorno de datos en tiempo de diseño. Si no especifica un valor para Alias, Visual FoxPro generará un error, en tiempo de ejecución, utilice los alias predeterminados para las tablas y campos.

Para objetos XMLTable y XMLField, de forma predeterminada Visual FoxPro carga el valor de la propiedad XMLName dentro de la propiedad Alias correspondiente para estos objetos. Si la propiedad XMLField Alias esta vacia, el método XMLTable ToCursor pasa por alto los objetos XMLField y crea un cursor que no incluye ninguno de los campos especificados por estos objetos XMLField.

Si cambia la propiedad Alias, Visual FoxPro también renombrará el cursor creado por el método ToCursor y la propiedad Alias para los objetos XMLTable y XMLField.

Cuando ejecute el método ToXML, Visual FoxPro usa la propiedad XMLName en lugar de la propiedad Alias.

Vea también

Propiedades | USE (Comando) | ALIAS( ) (Función) | InitialSelectedAlias (Propiedad) | ParentAlias (Propiedad)

Se aplica a: Cursor (Objeto) | CursorAdapter (Clase) | XMLTable (Clase) | XMLField (Clase)


Align (Propiedad)

Especifica la alineación del control ActiveX™ (.ocx) en un formulario. Está disponible en tiempo de diseño y en tiempo de ejecución.

OLEContainerControl.Align[ = nAlign]

Valores de la propiedad

nAlign
Los valores de la propiedad Align son:
Valor | Descripción
0 | Alineación estándar. El control ActiveX está colocado en la misma posición que el control OLE Container en el formulario.
1 | Superior. El control ActiveX está colocado en la parte superior del formulario.
2 | Inferior. El control ActiveX está colocado en la parte inferior del formulario.
3 | Izquierda. El control ActiveX está colocado en el borde izquierdo del formulario.
4 | Derecha. El control ActiveX está colocado en el borde derecho del formulario.

Observaciones

Los controles ActiveX (archivos .ocx) se colocan en controles OLE Container.

La propiedad Align sólo está disponible para controles ActiveX que admitan modificaciones en su alineación. Los objetos OLE insertables, como las hojas de Microsoft Excel, no admiten la propiedad Align.

La propiedad Align sólo está disponible para los controles ActiveX colocados en un formulario.

Si dos o más controles ActiveX tienen el mismo valor de la propiedad Align, los controles se apilan uno sobre otro.

Vea también

OLE Container (Control) | Introducción a los controles ActiveX | Alignment (Propiedad) | Agregar objetos OLE a las aplicaciones

Se aplica a: OLE Container (Control)


Alignment (Propiedad)

Especifica la alineación del texto asociado a un control. Está disponible en tiempo de diseño y en tiempo de ejecución.

Control.Alignment[ = nAlign]

Valores de la propiedad

nAlign
Para un control CheckBox u OptionButton, los valores posibles para la propiedad Alignment son:
Valor | Descripción
0 | (Valor predeterminado) Izquierda. Alinea el control a la izquierda con el texto a la derecha.
1 | (Valor predeterminado para versiones de Windows de Oriente Medio) Derecha. Alinea el control a la derecha con el texto a la izquierda.

Para un control ComboBox, EditBox, Header, Label o Spinner, los valores para la propiedad Alignment son:

Valor | Descripción
0 | Izquierda. Alinea el texto a la izquierda. Es el valor predeterminado para cuadros combinados, cuadros de edición, encabezados y etiquetas.
1 | (Valor predeterminado para versiones de Windows de Oriente Medio) Derecha. Alinea el texto a la derecha. Es el valor predeterminado para controles numéricos.
2 | Centro. Alinea el texto en el centro con espacios iguales a la izquierda y la derecha.
3 | Automático. Alinea el texto basado en el tipo de datos del origen de control.

Para un control TextBox, los valores para la propiedad Alignment son:

Valor | Descripción
0 | Izquierda. Alinea el texto a la izquierda.
1 | Derecha. Alinea el texto a la derecha.
2 | Centro. Alinea el texto en el centro con espacios iguales a la izquierda y la derecha.
3 | (Valor predeterminado) Automático. Para un control TextBox que no está contenido en un control Column, alinea el texto según el tipo de datos del origen del control. Los tipos numéricos (numeric, double, float, currency, integer) se alinean a la derecha; los controles con otros tipos de datos se alinean a la izquierda. Para un control TextBox contenido en una columna, el valor Alignment de la columna determina la alineación del texto en el cuadro de texto.

Para una columna, los valores de la propiedad Alignment son:

Valor | Descripción
0 | Centro izquierda. Alinea el texto a la izquierda y lo centra verticalmente.
1 | Centro derecha. Alinea el texto a la derecha y lo centra verticalmente.
2 | Centro. Alinea el texto en el centro con espacios iguales a la derecha y a la izquierda y lo centra verticalmente.
3 | (Valor predeterminado) Automático. Alinea el texto basado en el tipo de datos del origen de control. Los tipos numéricos (numeric, double, float, currency, integer) se alinean a la derecha; los controles con otros tipos de datos se alinean a la izquierda.
4 | Superior izquierda. Alinea el texto a la izquierda en la parte superior de la columna.
5 | Superior derecha. Alinea el texto a la derecha en la parte superior de la columna.
6 | Superior centrado. Alinea el texto en el centro con espacios iguales a la derecha y a la izquierda, en la parte superior de la columna.
7 | Inferior izquierda. Alinea el texto a la izquierda en la parte inferior de la columna.
8 | Inferior derecha. Alinea el texto a la derecha en la parte inferior de la columna.
9 | Inferior centrado. Alinea el texto en el centro con espacios iguales a la derecha y a la izquierda en la parte inferior de la columna.

Observaciones

Para un control ComboBox, la propiedad Alignment sólo se aplica cuando la propiedad Style se establece en 0.

Vea también

AutoSize (Propiedad) | Caption (Propiedad)

Se aplica a: CheckBox (Control) | Column (Objeto) | ComboBox (Control) | EditBox (Control) | Header (Objeto) | Label (Control) | OptionButton (Control) | Spinner (Control) | TextBox (Control)


AllowAddNew (Propiedad)

Especifica si se pueden agregar nuevos registros a una tabla desde una cuadrícula. Está disponible en tiempo de diseño y en tiempo de ejecución.

Grid.AllowAddNew[ = lExpr]

Valores de la propiedad

lExpr
Uno de los valores siguientes:
Valor | Descripción
Verdadero (.T.) | Se pueden agregar nuevos registros a una tabla desde una cuadrícula.
Falso (.F.) | (Valor predeterminado) No se pueden agregar nuevos registros a una tabla desde una cuadrícula.

Observaciones

Si AllowAddNew se establece como verdadero (.T.), puede agregar un registro nuevo a una tabla en una cuadrícula al presionar la fecha abajo situada en el último registro de la cuadrícula si la cuadrícula es de lectura y escritura. No se pueden agregar registros nuevos desde la cuadrícula si ésta es de sólo lectura (si RecordSourceType es una consulta, una tabla es de sólo lectura, etcétera).

Vea también

APPEND | Agregar registros | RecordSourceType (Propiedad)

Se aplica a: Grid (Control)


AllowAutoColumnFit (Propiedad)

Especifica cómo las columnas fijan los datos dentro de la cuadrícula o ventana Examinar. Fijar esta propiedad le permite ajustar los datos dentro la cuadrícula cuando hace doble-clic en el área entre las cabeceras de las columnas o el cuadro que precede a la primera columna en la esquina superior izquierda. Es de lectura / escritura en tiempo de diseño y en tiempo de ejecución.

Grid.AllowAutoColumnFit [ = nValue ]

Valores de la propiedad

nValue
Dato tipo Numérico. La siguiente tabla lista los valores para nValue.
nValue | Descripción de la configuración
0 | Activa todas o algunas columnas para ajustar los datos automáticamente. (Predeterminado)
1 | Activa sólo columnas individuales para ajustar los datos automáticamente. "Todos los datos" se refiere solamente a todas las filas en la cuadrícula o ventana examinar, no a todos los registros de la tabla.
2 | Desactiva la capacidad de las columnas de ajustar los datos automáticamente.

Comentarios

AllowAutoColumnFit afecta la interacción sólo a través de la interfaz de usuario.

El ajuste automático de columnas ocurre en ambos paneles (izquierdo y derecho) del control cuadrícula o ventana Visualizar, pero sólo cuando ninguno o ambos son visibles.

Puede reemplazar AllowAutoColumnFit utilizando el método AutoFit el que redimensiona todas las columnas o columnas individuales programáticamete.

Cuando la columna se redimensiona, el evento Resize se ejecuta para esa columna.

Puede evitar el redimensionamiento automático de una columna en particular al establecer la propiedad Resizable de la columna en Falso (.F.).

El evento Click del Header no es llamado cuando se hace clic entre los encabezados de columnas.

Las columnas ocultas del objeto grid, cuya propiedad Visible es establecida a Falso (.F.) y su propiedad Width tiene valor 0, no son redimensionadas.

Vea también

Propiedades | Ajuste automático de columnas a los datos | AutoFit (Método) | Resizable (Propiedad)

Se aplica a : Grid (Control) | BROWSE...NAME (Comando)


AllowCellSelection (propiedad)

Especifica si puede seleccionar o no celdas individuales en un control cuadrícula. Puede utilizar la propiedad AllowCellSelection para imitar un cuadro de lista. Disponible en tiempo de diseño y tiempo de ejecución.

Grid.AllowCellSelection [= lExpr]

Valores de la propiedad

lExpr
Tipo de dato Lógico. La siguiente tabla lista los valores para lExpr.
lExpr | Descripción
Verdadero (.T.) | Especifica que puede seleccionar el contenido de una celda de una cuadrícula (campo). (Predeterminado)
Falso (.F.) | Especifica que tiene que seleccionar la fila completa.

Observaciones

Seleccionar celdas individuales o la fila entera no cambia el color de la fila o celda seleccionada.

El siguiente comportamiento es mostrado cuando AllowCellSelection está establecida en Falso (.F.):

  • El objeto grid hace caso omiso de las propiedades SelectedItemForeColor y SelectedItemBackColor. Las filas toman un color uniforme basado en las propiedades HighlightBackColor y HighlightForeColor y otras propiedades relacionadas con el color a nivel de columna.
    Nota Si no especifica colores para las propiedades de resaltado, aparece un contorno rectangular alrededor de la fila seleccionada.
  • Si la propiedad HighlightStyle está fijada a un valor mayor que 0, el valor predeterminado de HighlightBackColor está degradado a un 50 por ciento del valor resaltado.
  • El control cuadrícula siempre muestra el cursor especificado con la propiedad MousePointer y no muestra el puntero de inserción de texto cuando está dentro de la celda. Haciendo clic en la celda selecciona la fila entera, en lugar de establecer el foco a una celda individual.
  • Tabular entre celdas está desactivado y el comportamiento de la cuadrícula es similar a una cuadrícula con una única columna.
  • Las columnas ocultas se ignoran. Puede ver las columnas que están desplazadas a la izquierda o la derecha fuera del área visible de la cuadrícula utilizando las teclas FLECHA IZQUIERDA y FLECHA DERECHA o el ratón con la barra de desplazamiento horizontal.
  • La propiedad ActiveColumn evaluada a 0; utiliza la propiedad RelativeColumn para obtener la columna correcta en el control grid.
  • El método ActiveCell solamente selecciona la fila entera.
  • Todos los eventos son controlados a nivel de control cuadrícula en lugar de ser a nivel de control. Por ejemplo, hacer doble-clic en una celda es controlado por el evento Grid.DblClick. Sin embargo, los eventos y atributos de cabecera aún se mantienen. Por ejemplo, puede hacer clic en la cabecera de una columna para re-ordenar el contenido de una columna basado en un campo.
  • Aparecen inactivos Buscar así como los comandos del menú Editar porque configurar AllowCellSelection hace que la cuadrícula de sólo lectura. Sin embargo, la propiedad AllowCellSelection no afecta a la columna marca de borrado en el control cuadrícula.
  • Los eventos AfterRowColChange y BeforeRowColChange sólo trabajan para cambios de fila. La propiedad RowColChange siempre devuelve un valor igual a 1 (Cambio de fila).

La propiedad AllowCellSelection permite todos los controles estándar Visual FoxPro; aunque los controles ActiveX incrustados dentro de una columna no son permitidos.

Si la propiedad AllowCellSelection para una cuadrícula es fijada a Verdadero (.T.), Visual FoxPro ignora el evento Grid KeyPress y utiliza el evento a nivel de cada celda individual.

Vea también

Propiedades | ActiveColumn (Propiedad) | AfterRowColChange (Evento) | BeforeRowColChange (Evento)| HighlightBackColor (Propiedad) | HighlightStyle (Propiedad) | RelativeColumn (Propiedad) | SelectedItemForeColor (Propiedad) | KeyPress (Evento)

Se aplica a: Grid (Control)


AllowDelete (Propiedad)

Especifica si se permiten operaciones de eliminación en un origen de datos. De lectura/escritura en tiempo de desarrollo y tiempo de ejecución.

Nota AllowDelete no afecta la posibilidad de eliminar un registro en el propio cursor.
CursorAdapter.AllowDelete [ = lValue ]

Valores de la propiedad

lValue
Valor de tipo lógico. La tabla siguiente lista las opciones para lValue.
lValue | Descripción
Verdadero (.T.) Permite operaciones de eliminación. (Predeterminado)

Cuando la propiedad DeleteCmd del CursorAdapter está vacía, Visual FoxPro genera un comando SQL DELETE automáticamente. Para mas información, vea Manejo de datos utilizando CursorAdapters.
Falso (.F.) | No permite operaciones de eliminación.

Vea también

Propiedades | CursorAdapter (Objeto: propiedades, métodos y eventos)

Se aplica a: CursorAdapter (Clase)


AllowHeaderSizing (Propiedad)

Especifica si el alto del encabezado de una cuadrícula se puede modificar en tiempo de ejecución. Está disponible en tiempo de diseño y en tiempo de ejecución.

Grid.AllowHeaderSizing[ = lExpr]

Valores de la propiedad

lExpr
Uno de los valores siguientes:
Valor | Descripción
Verdadero (.T.) | (Valor predeterminado) El alto del encabezado de la cuadrícula se puede modificar al arrastrar el encabezado en tiempo de ejecución.
Falso (.F.) | El alto del encabezado de la cuadrícula no se puede modificar al arrastrar el encabezado en tiempo de ejecución.

Vea también

AllowRowSizing (Propiedad) | HEADER( ) (Función) | HeaderHeight (Propiedad)

Se aplica a: Grid (Control)


AllowInsert (Propiedad)

Especifica si se permitirán operaciones de inserción en un origen de datos. De Lectura/Escritura en tiempo de desarrollo y ejecución.

Nota AllowInsert no afecta a la capacidad en si mismo de insertar un registro en el cursor.
CursorAdapter.AllowInsert [ = lValue ]

Valores de la propiedad

lValue
Tipo de dato lógico. La siguiente tabla lista las opciones para lValue.
lValue | Descripción
Verdadero (.T.) Permite operaciones de inserción. (Valor por Defecto)

Cuando la propiedad InsertCmd del CursorAdapter está vacía (""), Visual FoxPro genera un comando SQL INSERT automáticamente. Para mas información, vea Manejo de datos utilizando CursorAdapters.
Falso (.F.) | No permite operaciones de inserción.

Vea también

Propiedades | CursorAdapter (Objeto: propiedades, métodos y eventos)

Se aplica a: CursorAdapter (Clase)


AllowOutput (Propiedad)

Especifica si se permite que la salida predeterminada aparezca sobre un formulario. Lectura / Escritura en tiempo de diseño y tiempo de ejecución.

Form.AllowOutput = lExpr

Parámetros

lExpr
Tipo de dato Lógico. La tabla siguiente lista la configuración para lExpr.
lExpr | Descripción
Verdadero (.T.) | Envía las salidas de usuario al formulario si éste está activo (Predeterminado).
Falso (.F.) | Redirecciona las salidas de usuario al escritorio si el formulario está activo.

Observaciones

Si la propiedad AllowOutput se cambia programáticamente de Verdadero (.T.) a Falso (.F.), en tiempo de ejecución, Visual FoxPro automáticamente redirecciona la salida al escritorio.

Nota Utilizar la propiedad AllowOutput puede afectar el código que dependa de la posición y tamaño de la ventana. Esto incluye la utilización de WOUTPUT( ) u otros comandos, tales como DEFINE POPUP...FROM, que implícitamente basan sus coordenadas en la ventana de salida.

Al establecer la propiedad AllowOutput a Falso (.F.) en un formulario, cambia el siguiente comportamiento de Visual FoxPro.

  • El dibujado del formulario es redireccionado a la siguiente ventana de salida o al escritorio. Esto afecta a comandos tales como ?, ??, DIR, LIST, DISPLAY, CLEAR y otros que muestran su salida sobre un formulario.
  • La función WOUTPUT( ) no devuelve el nombre del formulario activo. Devuelve el nombre del formulario de salida actual o el escritorio.
  • El comando BROWSE no hereda el tamaño de la ventana y la configuración de ventana del formulario.
  • Las funciones MCOL( ) y MROW( ), sin utilizar su parámetro opcional, podrían no ser relativas al formulario que ellas están llamando.

Cuando se cierra un formulario con la propiedad AllowOutput establecida en Falso (.F.), Visual FoxPro predetermina la salida al siguiente formulario o al escritorio.

Vea también

Propiedades | ? | ?? (Comando) | BROWSE (Comando) | CLEAR (Comando) | DEFINE POPUP (Comando) | DIR o DIRECTORY (Comando) | DISPLAY (Comando) | LIST (Comando) | WOUTPUT( ) (Función)

Se aplica a: Form (Objeto)


AllowRowSizing (Propiedad)

Especifica si el alto de los registros de una cuadrícula se puede modificar en tiempo de ejecución. Está disponible en tiempo de diseño y en tiempo de ejecución.

Grid.AllowRowSizing[ = lExpr]

Valores de la propiedad

lExpr
Uno de los valores siguientes:
Valor | Descripción
Verdadero (.T.) | (Valor predeterminado) El alto de los registros de la cuadrícula se puede modificar al arrastrarlos en tiempo de ejecución.
Falso (.F.) | El alto de los registros de la cuadrícula no se puede modificar en tiempo de ejecución.

Vea también

AllowHeaderSizing (Propiedad) | RowHeight (Propiedad) | ROW( ) (Función)

Se aplica a: Grid (Control)


AllowSimultaneousFetch (Propiedad)

Especifica si permite o no búsquedas simultáneas para cursores Open DataBase Connectivity (ODBC) cuando se está utilizando una conexión compartida. De lectura/escritura en tiempo de diseño y de ejecución.

Nota Se aplica AllowSimultaneousFetch sólo cuando la propiedad DataSourceType del CursorAdapter está establecida en "ODBC". Si la conexión asociada no está compartida, establecer AllowSimultaneousFetch no tiene ningún efecto.
CursorAdapter.AllowSimultaneousFetch [= lValue]

Valores de la propiedad

lValue
Tipo de dato lógico. La tabla siguiente especifica los valores para lValue.
lValue | Descripción
Falso (.F.) | Cuando se utilice una conexión compartida, no se permite la lectura simultánea de registros a los cursores que comparten la conexión y están configurados de manera similar. (Predeterminado)
Verdadero (.T.) | Cuando se utilice una conexión compartida, se permite la lectura simultánea de registros a los cursores que comparten la conexión y están configurados de manera similar.

Observaciones

Las vistas creadas en la versión actual de Visual FoxPro no son compatibles con Visual FoxPro anterior a 8.0.

Vea también

Propiedades | CursorAdapter (Objeto: propiedades, métodos y eventos) | DataSourceType (Propiedad)

Se aplica a CursorAdapter (Clase)


AllowTabs (Propiedad)

Especifica si se permiten tabulacionesen un control EditBox.

EditBox.AllowTabs[ = lExpr]

Valores de la propiedad

lExpr
Especifica un valor lógico para determinar si se permiten tabulaciones en un control EditBox. La tabla siguiente lists los valores posibles para lExpr:
lExpr Descripción
Verdadero (.T.) Se permiten tabulacionesen el control EditBox.

Presione CTRL+TAB para salir del control EditBox.
Falso (.F.) No se permiten tabulaciones en el control EditBox. (Valor predeterminado)

Presione la tecla TAB para salir del control y mover el foco al siguiente control en el orden de tabulación, .

Vea también

TabIndex (Propiedad) | TabStop (Propiedad) | TabStyle (Propiedad)

Se aplica a: EditBox


AllowUpdate (Propiedad)

Especifica si permite las operaciones de actualización sobre origen de datos. De Lectura/escritura en tiempo de diseño y en tiempo de ejecución.

Nota: AllowUpdate no afecta la capacidad de actualizar una fila en el mismo cursor.
CursorAdapter.AllowUpdate [ = lValue ]

Valores de la propiedad

lValue
Tipo de dato lógico. La tabla siguiente lista los valores para lValue.
lValue | Descripción
Verdadero (.T.) Permite operaciones de actualización. (Predeterminado)

Cuando la propiedad InsertCmd del CursorAdapter es nula (""), Visual FoxPro genera un comando SQL UPDATE automáticamente. Para más información, ver Manejo de datos utilizando CursorAdapters.
Falso (.F.) | No permite operaciones de actualización.

Vea también

Propiedades | CursorAdapter (Objeto: propiedades, métodos y eventos)

Se aplica a: Clase CursorAdapter


AlwaysOnBottom (Propiedad)

Impide que una ventana de formulario cubra otras ventanas. Disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

Object.AlwaysOnBottom[ = lExpr]

Valores de la propiedad

lExpr
Los valores para la propiedad AlwaysOnBottom son:
Valor | Descripción
Verdadero (.T.) | El formulario está siempre abajo (sólo puede estar debajo del formulario otra ventana con la propiedad AlwaysOnBottom establecida en Verdadero (.T.)).
Falso (.F.) | (Valor predeterminado) El formulario puede cubrir otra ventana.

Observaciones

Se pasará por alto la propiedad AlwaysOnBottom si cualquiera de las siguientes propiedades tiene los valores indicados:

  • AlwaysOnTop = .T.
  • Desktop = .T.
  • ShowWindow = 2

El valor de la propiedad AlwaysOnBottom se pasa por alto para _SCREEN.

Vea también

AlwaysOnTop (Propiedad) | Desktop (Propiedad) | ShowWindow (Propiedad) | ZOrder (Método)

Se aplica a: Form (Objeto) | _SCREEN


AlwaysOnTop (Propiedad)

Impide que otras ventanas oculten la ventana del formulario. Disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

Object.AlwaysOnTop[ = lExpr]

Valores de la propiedad

lExpr
Las configuraciones posibles de la propiedad AlwaysOnTop son:
Valor | Descripción
Verdadero (.T.) | El formulario siempre está visible (sólo puede estar sobre el formulario otra ventana con la propiedad AlwaysOnTop establecida como Verdadero (.T.)).
Falso (.F.) | (Predeterminado) El formulario puede estar oculto por otra ventana.

Vea también

AlwaysOnBottom (Propiedad) | ShowWindow (Propiedad) | ZOrder (Método) |

Se aplica a: Form (Objeto) | _SCREEN


Application (Propiedad)

Proporciona una referencia al objeto Application que contiene un objeto. No está disponible en tiempo de diseño; es de sólo lectura en tiempo de ejecución.

Object.Application.Property [ = Setting] -or- Object.Application.Method

Valores de la propiedad

Property
Especifica cualquier propiedad del objeto Application o de la variable de sistema _VFP; por ejemplo, la propiedad Caption.
Setting
El valor existente o un nuevo valor de la propiedad Property.
Method
Especifica cualquier método del objeto Application o de la variable de sistema _VFP; por ejemplo, el método DoCmd.

Observaciones

Utilice la propiedad Application para tener acceso a las propiedades y métodos de un objeto Application desde un objeto contenido en la aplicación. La propiedad Application también se puede utilizar con la variable del sistema _VFP para tener acceso a propiedades y métodos para la instancia actual de Visual FoxPro.

Vea también

CREATEOBJECT( )

Se aplica a: CheckBox (Control) | Column (Objeto) | ComboBox (Control) | CommandButton (Control) | CommandGroup (Control) | Container (Objeto) | Control (Objeto) | Cursor (Objeto) | CursorAdapter (Clase) | Custom (Objeto) | DataEnvironment (Objeto) | EditBox (Control) | Form (Objeto) | FormSet (Objeto) | Grid (Control) | Header (Objeto) | Hyperlink (Objeto) | Image (Control) | Label (Control) | Line (Control) | ListBox (Control) | OLE Bound (Control) | OLE Container (Control) | OptionButton (Control) | OptionGroup (Control) | Page (Objeto) | PageFrame (Control) | ProjectHook (Objeto) | Relation (Objeto) | _SCREEN | Separator (Objeto) | Session (Objeto) | Shape (Control) | Spinner (Control) | TextBox (Control) | Timer (Control) | ToolBar (Objeto)


AutoActivate (Propiedad)

Determina cómo puede activarse un control OLE Container. Está disponible en tiempo de diseño y en tiempo de ejecución.

Control.AutoActivate[ = nValue]

Valores de la propiedad

nValue
Los valores posibles de la propiedad AutoActivate son:
Valor | Descripción
0 | Manual. El control no se activa automáticamente. Puede activarlo por programa mediante el método DoVerb.
1 | GotFocus. Si el control contiene un objeto, la aplicación que proporciona el objeto se activará cuando el control reciba el enfoque.
2 | (Valor predeterminado) DoubleClick. Si el control contiene un objeto, la aplicación que proporciona el objeto se activará cuando el usuario haga doble clic en el control o presione ENTRAR cuando el control tenga el enfoque.
3 | Automático. Si el control contiene un objeto, la aplicación que proporciona el objeto se activará según el método normal de activación del objeto (cuando el control reciba el enfoque o cuando el usuario haga doble clic en el control).

Observaciones

Si un objeto incrustado admite la activación in situ, puede establecer AutoActivate como 1 (GotFocus) para activar un objeto cuando el control reciba el enfoque.

Nota Cuando se establece AutoActivate como 2 (Doble clic), no se produce el evento DblClick.

Vea también

DoVerb (Método) | DblClick (Evento)

Se aplica a: OLE Bound (Control) | OLE Container (Control)


AutoCenter (Propiedad)

Especifica si el objeto Form se centra automáticamente en la ventana principal de Visual FoxPro o en el escritorio la primera vez que se muestra. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.AutoCenter [ = lExpr]

Valores de la propiedad

lExpr
Especifica si el objeto Form se centra o coloca de acuerdo con los valores de las propiedades Top y Left. Los valores posibles de la propiedad AutoCenter son:
Valor | Descripción
Verdadero (.T.) | Se centra el objeto Form y los valores de las propiedades Top y Left se establecen en la nueva posición.
Falso (.F.) | (Valor predeterminado) El objeto Form no se centra y se sitúa en las coordenadas especificadas por las propiedades Top y Left.

Observaciones

Los formularios se muestran en la ventana principal; por consiguiente, si establece AutoCenter con el valor verdadero (.T.), el formulario se centrará en la ventana principal.

Nota Si se vuelve a establecer AutoCenter como falso (.F.) después de establecerse como verdadero (.T.), el formulario no volverá a la posición original de Top y Left.

Vea también

Desktop (Propiedad) | Left (Propiedad) | Top (Propiedad)

Se aplica a: Form (Objeto) | _SCREEN


AutoCloseTables (Propiedad)

Especifica si se cierran las tablas o las vistas especificadas por el entorno de datos cuando se libera el conjunto de formularios, el formulario o el informe. Está disponible en tiempo de diseño; es de sólo lectura en tiempo de ejecución.

DataEnvironment.AutoCloseTables[ = lExpr]

Valores de la propiedad

lExpr
Los valores posibles de la propiedad AutoCloseTables son:
Valor | Descripción
Verdadero (.T.) | (Valor predeterminado) Cierra las tablas y las vistas cuando se libera el conjunto de formularios, el formulario o el informe.
Falso (.F.) | Las tablas y las vistas permanecen abiertas cuando se libera el conjunto de formularios, el formulario o el informe.

Observaciones

Si AutoCloseTables está establecido como falso (.F.) y el conjunto de formularios, el formulario o el informe no está ejecutándose en una sesión privada de datos, las tablas y las vistas asociadas a cursores en el entorno de datos permanecerán abiertas cuando se libere el conjunto de formularios, el formulario o el informe. En los demás casos, se cerrarán las tablas y las vistas asociadas a cursores en el entorno de datos.

Vea también

AutoOpenTables (Propiedad) | DataSession (Propiedad) | DataSessionID (Propiedad)

Se aplica a: DataEnvironment (Objeto)


AutoIncrement (Propiedad)

Especifica si el número de versión de un proyecto aumenta automáticamente cada vez que se compila un .exe distribuible o una .dll en proceso.

Object.AutoIncrement[ = lExpression]

Valores de la propiedad

lExpression
Los valores para la propiedad AutoIncrement son:
Valor | Descripción
Verdadero (.T.) | El número de versión de un proyecto se aumenta automáticamente cada vez que se compila un .exe distribuible o una .dll en proceso.
Falso (.F.) | (Valor predeterminado) El número de versión no se aumenta automáticamente.

Observaciones

El número de versión no aumenta si AutoIncrement está establecido con falso (.F.) o cuando se recompila el proyecto o se compila un .app distribuible.

El valor de la propiedad AutoIncrement corresponde a la casilla de verificación Incrementar automáticamente del cuadro de diálogo Versión EXE. El número de versión puede determinarse o establecerse mediante la propiedad VersionNumber.

Vea también

BUILD APP | BUILD DLL | BUILD EXE | BUILD PROJECT | Cuadro de diálogo Versión EXE | VersionNumber (Propiedad)

Se aplica a: Project (Objeto)


AutoOpenTables (Propiedad)

Determina si se cargan automáticamente las tablas o las vistas asociadas con el entorno de datos de un conjunto de formularios, un formulario o un informe. Está disponible en tiempo de diseño; es de sólo lectura en tiempo de ejecución.

DataEnvironment.AutoOpenTables [= lExpr]

Parámetros

lExpr
Tipo de dato lógico. La siguiente tabla muestra los valores para lExpr.
lExpr | Descripción
Verdadero (.T.) | El conjunto de formularios, formulario, o tablas de reportes y vistas son abiertas automáticamente. (Predeterminado)
Falso (.F.) | Las tablas y las vistas no se abren automáticamente.

Observaciones

Cuando AutoOpenTables tiene un valor Verdadero (.T.), el entorno de datos automáticamente llama al método AutoOpen de cualquier objeto CursorAdapter contenido en el entorno. El entorno de datos abre cualquier cursor o cursor adapter en el orden en que fueron agregados al entorno.

Cuando AutoOpenTables está configurado como Falso (.F.), puede llamar al método OpenTables del entorno de datos para cargar el entorno programaticamente.

Vea también

BeforeOpenTables (Evento) | OpenTables (Método) | OpenViews (Propiedad) | AutoOpen (Método) | CursorAdapter (Clase)

Se aplica a: DataEnvironment (Objeto)


AutoRelease (Propiedad)

Determina si un conjunto de formularios se libera cuando se libera el último formulario del conjunto de formularios. Disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

FormSet.AutoRelease[ = lExpr]

Valores de la propiedad

lExpr
Los valores para la propiedad AutoRelease son los siguientes:
Valor | Descripción
Verdadero (.T.) | El valor predeterminado en el Diseñador de formularios. El conjunto de formularios se libera cuando se ha liberado el último formulario del conjunto.
Falso (.F.) | El valor predeterminado en el código del programa. El conjunto de formularios no se libera cuando se libera el último formulario del conjunto.

Vea también

Release (Método) | ReleaseType (Propiedad) | Diseñador de formularios

Se aplica a: FormSet (Objeto)


AutoSize (Propiedad)

Especifica si se cambia automáticamente el tamaño de un control para que quepan sus contenidos. Está disponible en tiempo de diseño y en tiempo de ejecución.

Control.AutoSize[ = lExpr]

Valores de la propiedad

lExpr
Especifica si se cambia automáticamente el tamaño de un control para que quepan sus contenidos. Los valores posibles de la propiedad AutoSize son:
Valor | Descripción
Verdadero (.T.) | El control cambia automáticamente de tamaño para que quepan sus contenidos.
Falso (.F.) | (Valor predeterminado) Los contenidos se recortan cuando superan el área del control.

Observaciones

Para controles OLE Container, AutoSize sólo se aplica a los objetos OLE que aceptan la modificación in situ. La propiedad Sizable debe establecerse con el valor verdadero (.T.) para cambiar el tamaño de un objeto OLE durante la modificación in situ.

Vea también

Alignment (Propiedad) | Height (Propiedad) | Width (Propiedad)

Se aplica a: CheckBox (Control) | CommandButton (Control) | CommandGroup (Control) | Label (Control) | OLE Bound (Control) | OLE Container (Control) | OptionButton (Control) | OptionGroup (Control)


AutoVerbMenu (Propiedad)

Especifica si se muestra un menú emergente que contiene los verbos del objeto OLE cuando se hace clic con el botón secundario del ratón en el objeto OLE. Sólo está disponible en tiempo de ejecución.

Control.AutoVerbMenu[ = lExpr]

Valores de la propiedad

lExpr
Uno de los valores siguientes:
Valor | Descripción
Verdadero (.T.) | (Valor predeterminado) Se mostrará el menú emergente que contiene los verbos del objeto OLE cuando se haga clic en el objeto OLE con el botón secundario del ratón.
Falso (.F.) | No se mostrará el menú emergente que contiene los verbos del objeto OLE cuando se haga clic en el objeto OLE con el botón secundario del ratón.

Observaciones

En tiempo de ejecución, si las propiedades AutoVerbMenu y Enabled están establecidas con el valor verdadero (.T.), cuando se haga clic en el objeto OLE con el botón secundario del ratón, se mostrará el menú emergente que contiene los verbos aceptados por el objeto OLE. Si las propiedades AutoVerbMenu y Enabled están establecidas con el valor falso (.F.) o si el objeto OLE no acepta verbos, no se mostrará el menú emergente cuando se haga clic en el objeto OLE con el botón secundario del ratón.

Vea también

DoVerb (Método) | Agregar objetos OLE a las aplicaciones

Se aplica a: Enabled (Propiedad) | OLE Bound (Control) | OLE Container (Control)


AutoYield (Propiedad)

Especifica si una instancia de Visual FoxPro procesa eventos de Windows pendientes entre la ejecución de cada línea de código de programa de usuario.

ApplicationObject.AutoYield[ = lExpr]

Valores de la propiedad

lExpr
Especifica si una instancia de Visual FoxPro procesa eventos de Windows entre la ejecución de cada línea de código de programa de usuario. lExpr puede ser uno de los siguientes valores lógicos:
lExpr Descripción
Verdadero (.T.) (Valor predeterminado) La instancia de Visual FoxPro procesa eventos de Windows pendientes entre la ejecución de cada línea de código de programa de usuario.

Si lExpr está establecida en verdadera (.T.), la instancia de Visual FoxPro procesa los eventos de Windows pendientes de la misma forma que las versiones anteriores de Visual FoxPro.
Falso (.F.) La instancia de Visual FoxPro no procesa los eventos de Windows pendientes entre la ejecución de cada línea de código de programa de usuario.

Se pondrán en una cola todos los eventos de Windows pendientes y los eventos que estén en la cola se procesarán cuando se ejecute DOEVENTS o cuando pase a estado de espera. Un estado de espera tiene lugar cuando Visual FoxPro está esperando que el usuario escriba datos. El comando WAIT no crea un estado de espera.

Observaciones

La propiedad AutoYield debería tener el valor falso (.F.) siempre que un formulario contenga un control ActiveX. Asignar el valor falso (.F.) a AutoYield impide que los eventos para un control ActiveX se ejecuten entre líneas de código de programa de usuario. Por ejemplo, si AutoYield tiene el valor verdadero (.T.), hacer clic en un control ActiveX mientras se está ejecutando código de programa de usuario puede causar que se ejecute un evento para el control ActiveX y se pase por alto el código de programa de usuario para dicho evento, lo que tendría consecuencias impredecibles o indeseables.

A continuación se describe lo que ocurre cuando se asigna el valor falso (.F.) a la propiedad AutoYield:

  • Los controles ActiveX no pueden procesar eventos hasta que tenga lugar un estado de espera. Por tanto, el hecho de hacer clic en un control ActiveX no tendrá ningún efecto mientras se esté ejecutando código de programa de usuario. Éste es el mismo comportamiento para los controles de Visual FoxPro, como Grid.
  • Los comandos ON KEY LABEL y los eventos de ratón se pasarán por alto mientras se esté ejecutando código de programa de usuario. Los comandos ON KEY LABEL y los eventos de ratón se colocan en una cola y se procesan en el siguiente estado de espera.
  • El hecho de presionar ESC no interrumpe la ejecución del programa. Es idéntico a establecer ESCAPE en OFF. En este caso no podrá salir de bucles infinitos sin cerrar la instancia de Visual FoxPro.
  • No se pueden interrumpir las consultas.
  • Se acepta que se alterne entre otras aplicaciones, pero no podrá volver a Visual FoxPro mientras se esté ejecutando el código de programa de usuario de Visual FoxPro.

Vea también

DOEVENTS (Comando) | WAIT (Comando) | ON KEY LABEL (Comando)

Se aplica a: Application (Objeto) | _VFP (Variable del sistema)


BackColor, ForeColor (Propiedades)

Especifica el color de fondo o el color de primer plano usado para mostrar texto y gráficos en un objeto. De lectura/escritura en tiempo de diseño y en tiempo de ejecución.

Object.BackColor[ = nColor] Object.ForeColor[ = nColor]

Valores de la propiedad

nColor
Especifica un valor de color simple. Si nColor es un valor negativo, Visual FoxPro utiliza el entero y pasa por alto los problemas de desbordamiento. Por ejemplo, -1 es el equivalente de 0xFFFFFFFF. La siguiente tabla muestra los valores típicos de colores.
Color | Configuración RGB | nColor
Blanco | 255, 255, 255 | 16777215
Negro | 0, 0, 0 | 0
Gris | 192, 192, 192 | 12632256
Gris oscuro | 128, 128, 128 | 8421504
Rojo | 255, 0, 0 | 255
Rojo oscuro | 128, 0, 0 | 128
Amarillo | 255, 255, 0 | 65535
Amarillo oscuro | 128, 128, 0 | 32896
Verde | 0, 255, 0 | 65280
Verde oscuro | 0, 128, 0 | 32768
Aguamarina | 0, 255, 255 | 16776960
Verde azulado | 0, 128, 128 | 8421376
Azul | 0, 0, 255 | 16711680
Azul marino | 0, 0, 128 | 8388608
Fucsia | 255, 0 ,255 | 16711935
Fucsia oscuro | 128, 0, 128 | 8388736

Observaciones

Visual FoxPro utiliza un esquema de color rojo-verde-azul (RGB) para los colores. Los componentes rojo, verde y azul estan representados por un número entre 0 y 255. Utilice la función RGB( ) para convertir los tres colores componentes en un valor nColor compuesto.

Nota La propiedad ForeColor no se aplica a los controles CommandGroup, OptionGroup o Shape.

La configuración de color o Temas, del sistema operativo establece la configuración de color predeterminado para las propiedades BackColor y ForeColor.

Si la propiedad Theme es Verdadero (.T.), configurar el valor de la propiedad BackColor produce un 35% de transparencia sobre la superficie del botón. Esto produce un efecto colorizante.

La propiedad Page BackColor se pasa por alto si Page Themes es Verdadero (.T.). Sin embargo, como una página es sólo una representación visual del Diseñador de Clases, el color de fondo aparece.

Ejemplo

El ejemplo siguiente muestra cómo puede utilizarse el control Shape para mostrar un círculo, una elipse o un cuadrado en un formulario y cómo puede usarse la propiedad BackColor para especificar el color de cada forma.

Se crea un formulario y se incluyen varios botones de opción y un botón de comando. Cuando elija uno de los botones de opción, la forma correspondiente se mostrará en el formulario. La propiedad BackColor se utiliza para especificar el color de cada forma. Las propiedades Height, Width y Curvature de cada forma determinan el tipo de forma creada.

frmMyForm = CREATEOBJECT('Form')  && Crea un Formulario
frmMyForm.Closable = .F.  && Deshabilita el cuadro de menú Control
frmMyForm.AddObject('cmdCommand1','cmdMyCmndBtn')  && Agrega un Botón de comando
frmMyForm.AddObject('opgOptionGroup1','opgMyOptGrp') && Agrega un Grupo de Opciones
frmMyForm.AddObject('shpCircle1','shpMyCircle')  && Agrega una forma circular
frmMyForm.AddObject('shpEllipse1','shpMyEllipse')  && Agrega una forma elíptica
frmMyForm.AddObject('shpSquare','shpMySquare')  && Agrega una forma cuadrada
frmMyForm.cmdCommand1.Visible =.T.  && "Quit" Botón de comando visible
frmMyForm.opgOptionGroup1.Buttons(1).Caption = "\<Circle"
frmMyForm.opgOptionGroup1.Buttons(2).Caption = "\<Ellipse"
frmMyForm.opgOptionGroup1.Buttons(3).Caption = "\<Square"
frmMyForm.opgOptionGroup1.SetAll("Width", 100) && Establece el ancho del Grupo de Opciones
frmMyForm.opgOptionGroup1.Visible = .T.  && Grupo de Opciones Visible
frmMyForm.opgOptionGroup1.Click  && Muestra el circulo
frmMyForm.SHOW  && Muestra el formulario
READ EVENTS  && Inicia el procesamiento de eventos
DEFINE CLASS opgMyOptGrp AS OptionGroup  && Crea un Grupo de Opciones
ButtonCount = 3  && Tres botones de Opción
Top = 10
Left = 10
Height = 75
Width = 100
PROCEDURE Click
ThisForm.shpCircle1.Visible = .F.  && Oculta el circulo
ThisForm.shpEllipse1.Visible = .F.  && Oculta la elipse
ThisForm.shpSquare.Visible = .F.  && Oculta el cuadrado
DO CASE
CASE ThisForm.opgOptionGroup1.Value = 1
ThisForm.shpCircle1.Visible = .T. && Muestra el circulo
CASE ThisForm.opgOptionGroup1.Value = 2
ThisForm.shpEllipse1.Visible = .T.  && Muestra la elipse
CASE ThisForm.opgOptionGroup1.Value = 3
ThisForm.shpSquare.Visible = .T.  && Muestra el cuadrado
ENDCASE
ENDDEFINE
DEFINE CLASS cmdMyCmndBtn AS CommandButton  && Crea un botón Comando
Caption = '\<Quit'  && Caption en el botón Comando
Cancel = .T.  && Botón Comando Cancelar predeterminado (Esc)
Left = 125  && Columna del botón de Comando
Top = 210  && Fila del botón de Comando
Height = 25  && Alto del botón de Comando
PROCEDURE Click
CLEAR EVENTS  && Detiene el procesamiento de eventos, cierra el formulario
ENDDEFINE
DEFINE CLASS shpMyCircle AS SHAPE  && Crea un circulo
Top = 10
Left = 200
Width = 100
Height = 100
Curvature = 99
BackColor = RGB(255,0,0)  && Rojo
ENDDEFINE
DEFINE CLASS shpMyEllipse AS SHAPE  && Crea una elipse
Top = 35
Left = 200
Width = 100
Height = 50
Curvature = 99
BackColor = RGB(0,128,0)  && Verde
ENDDEFINE
DEFINE CLASS shpMySquare AS SHAPE  && Crea un cuadrado
Top = 10
Left = 200
Width = 100
Height = 100
Curvature = 0
BackColor = RGB(0,0,255)  && Azul
ENDDEFINE

Vea también

BackStyle (Propiedad) | ColorScheme (Propiedad) | Propiedades DisabledBackColor, DisabledForeColor | FillColor (Propiedad) | FillStyle (Propiedad) | GETCOLOR( ) (Función) | RGB( ) (Función)

Se aplica a: CheckBox (Control) | Column (Objeto) | ComboBox (Control) | CommandButton (Control) | CommandGroup (Control) | Container (Objeto) | Control (Objeto) | EditBox (Control) | Form (Objeto) | Grid (Control) | Header (Objeto) | Label (Control) | OptionButton (Control) | OptionGroup (Control) | Page (Objeto) | _SCREEN | Shape (Control) | Spinner (Control) | TextBox (Control) | ToolBar (Objeto)


BackStyle (Propiedad)

Especifica si el fondo de un objeto es transparente u opaco. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.BackStyle[ = nStyle]

Valores de la propiedad

nStyle
Los valores posibles de BackStyle son:
Valor | Descripción
0 | Transparente. Lo que esté detrás del objeto será visible.
1 | (Valor predeterminado) Opaco. La propiedad BackColor del objeto llena el control y oscurece cualquier color o gráfico que haya detrás.

Observaciones

La propiedad BackStyle puede utilizarse para crear controles transparentes cuando se utiliza un color de fondo en un objeto Form o cuando se desea colocar un control sobre un gráfico. Utilice un control opaco cuando desee destacarlo en un fondo muy poblado.

La propiedad BackColor de un objeto se pasa por alto si la propiedad BackStyle tiene el valor 0 (Transparente).

Para un objeto Page, la propiedad BackStyle es de sólo lectura cuando la propiedad Tabs está establecida como verdadero (.T.) para el objeto PageFrame que contiene el objeto Page.

La propiedad BackStyle de un objeto se ignora si la propiedad Theme de ese objeto está establecida a Verdadero (.T.).

Vea también

BackColor, ForeColor (Propiedades) | DisabledBackColor, DisabledForeColor (Propiedades)

Se aplica a: CheckBox (Control) | CommandGroup (Control) | Container (Objeto) | Control (Objeto) | EditBox (Control) | Image (Control) | Label (Control) | OptionButton (Control) | OptionGroup (Control) | Page (Objeto) | Shape (Control) | TextBox (Control)


BaseClass (Propiedad)

Especifica el nombre de la clase de base de Visual FoxPro en que se basa el objeto al que se hace referencia. Es de sólo lectura en tiempo de diseño y en tiempo de ejecución.

Object.BaseClass

Valores de la propiedad

cBaseClass
Contiene la clase de base de Visual FoxPro en que se basa el objeto.

Observaciones

Para obtener una lista de clases de base de Visual FoxPro, consulte Controles y objetos.

Vea también

Class (Propiedad)

Se aplica a: CheckBox (Control) | Collection (Clase) | Column (Objeto) | ComboBox (Control) | CommandButton (Control) | CommandGroup (Control) | Container (Objeto) | Control (Objeto) | CursorAdapter (Clase) | Custom (Objeto) | EditBox (Control) | Exception (Clase) | Form (Objeto) | FormSet (Objeto) | Grid (Control) | Header (Objeto) | Hyperlink (Objeto) | Image (Control) | Label (Control) | Line (Control) | ListBox (Control) | OLE Bound (Control) | OLE Container (Control) | OptionButton (Control) | OptionGroup (Control) | Page (Objeto) | PageFrame (Control) | ProjectHook (Objeto) | _SCREEN | Session (Objeto) | Shape (Control) | Spinner (Control) | TextBox (Control) | Timer (Control) | ToolBar (Objeto)


BatchUpdateCount (Propiedad)

Especifica el número de instrucciones de actualización enviadas al origen de datos remoto para las tablas almacenadas en el búfer. Cuando trabajamos con esta propiedad para cursores normales, se utilizan las funciones CURSORSETPROP() y CURSORGETPROP(). De Lectura/Escritura.

Si se ajusta BatchUpdateCount puede aumentar considerablemente el rendimiento de la actualización automática.

Nota Cuando BatchUpdateCount, está establecida en un objeto CursorAdapter, se sobrescribe la configuración de la propiedad del cursor, cuando se realiza el enlace al objeto CursorAdapter. De tal manera, que cambiar la configuración del cursor usando CURSORSETPROP() no tiene efecto.
CursorAdapter.BatchUpdateCount [ = nValue]

Valores de la propiedad

nValue
Tipo de dato numérico. El parámetro nValue tiene un valor predeterminado de 1.

Comentarios

BatchUpdateCount se aplica para objetos CursorAdapter solo cuando el tipo de origen de datos para los comandos SQL INSERT, UPDATE, y DELETE es uno de los siguientes:

  • "ODBC"

    Adicionalmente, la misma conexión debe ser usada como el origen de datos para los comandos SQL INSERT, UPDATE, y DELETE.

    Nota El origen de datos y el tipo de origen de datos podrían heredarse de las propiedades DataSource y DataSourceType o del CursorAdapter o del objeto DataEnvironment.
  • "ADO"

    El mismo comando del objeto ADODB debe ser usado como el origen de datos para los comandos SQL INSERT, UPDATE, y DELETE. Es recomendable que configure las propiedades InsertCmdDataSource, InsertCmdDataSourceType, UpdateCmdDataSource, UpdateCmdDataSourceType, DeleteCmdDataSource, y DeleteCmdDataSourceType explícitamente porque la herencia no funciona en esta situación.

  • "XML"

    Es recomendable que configure las propiedades InsertCmdDataSource, InsertCmdDataSourceType, UpdateCmdDataSource, UpdateCmdDataSourceType, DeleteCmdDataSource, y DeleteCmdDataSourceType explícitamente porque la herencia no funciona en esta situación.

Si BatchUpdateCount es mayor que 1, Visual FoxPro actualiza por lotes ejecutando la propiedad UpdateCmd una vez por lote.

Nota Si se utiliza la actualización por lotes, los eventos BeforeInsert, AfterInsert, BeforeUpdate, AfterUpdate, BeforeDelete, y AfterDelete no se ejecutan. Si una actualización por lotes falla, Visual FoxPro intenta enviar una actualización separada para cada fila en el lote; sin embargo, los eventos aún no se ejecutaran.

Vea también

Propiedades | CursorAdapter (Objeto: propiedades, métodos y eventos) | Función CURSORGETPROP( ) | Función CURSORSETPROP( ) | Comando SQL - INSERT | Comando SQL - UPDATE | Comando DELETE - SQL | Propiedad DataSource | Propiedad DataSourceType | Propiedad InsertCmdDataSource | Propiedad InsertCmdDataSourceType | Propiedad UpdateCmdDataSource | Propiedad UpdateCmdDataSourceType | Propiedad DeleteCmdDataSource | Propiedad DeleteCmdDataSourceType | Propiedad UpdateCmd | Evento BeforeInsert | Evento AfterInsert | Evento BeforeUpdate | Evento AfterUpdate | Evento BeforeDelete | Evento AfterDelete

Se aplica a: Clase CursorAdapter


BindControls (Propiedad)

Especifica cuando ocurrirá el enlace de datos para controles vinculados a datos.

Visual FoxPro generalmente enlaza los controles al origen de datos cuando se carga el formulario. Sin embargo, se puede emplear BindControls para especificar cuándo ocurrirá el enlace a los datos, para mejorar el rendimiento o demorar el enlace de los controles al origen de datos hasta que el usuario realice alguna acción, después de que se cargue el formulario y/o hasta que se necesiten los datos.

Nota BindControls está diseñada para enlazar los controles al origen de datos después de mostrar el formulario. Aunque se puede establecer BindControls en Falso (.F.) y revertirlo a Verdadero (.T.), BindControls no está prevista para desenlazar y reenlazar controles en tiempo de ejecución.
Form.BindControls [= lValue]

Valores de la propiedad

Tipo de datos Lógico. La siguiente tabla lista los valores para lValue.

lValue | Descripción
Verdadero (.T.) | El Control.ControlSource o el Grid.RecordSource enlaza los datos cuando se carga el formulario. (Predeterminado) Si Form.BindControls = .T. y Control.ControlSource o Grid.RecordSource se cambian, el control se reconecta. Si Form.BindControls se cambia de .T. a .F., los enlaces actuales no cambian.
Falso (.F.) | El Control.ControlSource o el Grid.RecordSource no enlaza los datos cuando el formulario se carga. Si Form.BindControls = .F. y Control.ControlSource o Grid.RecordSource se cambia, el control no se reconecta pero la propiedad ControlSource o la propiedad Recordsource cambia. Si Form.BindControls se cambia de .F. a .T., todos los controles del formulario se reconectan de acuerdo con el valor actual de Control.ControlSource o Grid.RecordSource.

Ejemplo

Suponga que un formulario necesita cargar una gran número de tablas, o tiene una cuadrícula u otros controles que se enlazan a un cursor, producido por una instrucción SQL que requiere un tiempo largo de ejecución. Cuando el usuario ejecuta el formulario, el formulario no aparece hasta que carga completamente todos los datos.

Estableciendo BindControls como Falso (.F.), el formulario aparece inmediatamente. Entonces se puede cambiar BindControls a Verdadero (.T.) cuando el formulario se activa, al ocurrir el evento Form Activate, y se podría mostrar un mensaje tal como "Por favor espere mientras se cargan los datos". El usuario ve entonces el formulario en forma inmediata, junto a un mensaje que explica la demora en la carga de datos, en lugar de esperar que aparezca el formulario.

Ver también

Form (Objeto: propiedades, métodos y eventos)

Se aplica a: Form (Objeto)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


BorderColor (Propiedad)

Especifica el color del borde de un objeto. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.BorderColor[ = nColor]

Valores de la propiedad

nColor
Especifica el valor de color del borde.

La tabla siguiente muestra los valores más usuales para los colores:

Color | Valores RGB | Valor de nColor
Blanco | 255, 255, 255 | 16777215
Negro | 0, 0, 0 | 0
Gris | 192, 192, 192 | 12632256
Gris oscuro | 128, 128, 128 | 8421504
Rojo | 255, 0, 0 | 255
Rojo oscuro | 128, 0, 0 | 128
Amarillo | 255, 255, 0 | 65535
Amarillo oscuro | 128, 128, 0 | 32896
Verde | 0, 255, 0 | 65280
Verde oscuro | 0, 128, 0 | 32768
Aguamarina | 0, 255, 255 | 16776960
Verde azulado | 0, 128, 128 | 8421376
Azul | 0, 0, 255 | 16711680
Azul marino | 0, 0, 128 | 8388608
Fucsia | 255, 0 ,255 | 16711935
Fucsia oscuro | 128, 0, 128 | 8388736

Observaciones

BorderColor se aplica sólo a un cuadro de texto o a un cuadro de edición cuando la propiedad SpecialEffect está establecida en 1 - Normal.

Utilice la función RGB( ) para convertir los tres colores componentes en un valor nColor compuesto.

Vea también

BackColor, ForeColor (Propiedades) | GetColor( ) | RGB( ) | SpecialEffect (Propiedad)

Se aplica a: ComboBox (Control) | CommandGroup (Control) | Container (Objeto) | Control (Objeto) | EditBox (Control) | Image (Control) | Line (Control) | ListBox (Control) | OptionGroup (Control) | PageFrame (Control) | Shape (Control) | TextBox (Control)


BorderStyle (Propiedad)

Especifica el estilo de borde de un objeto. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.BorderStyle[ = nStyle]

Valores de la propiedad

nStyle
Para un control CommandGroup, EditBox, Image, Label, OptionGroup o TextBox, las configuraciones posibles de la propiedad BorderStyle son:
Valor | Descripción
0 | Ninguno. Opción predeterminada para Image y Label.
1 | Sencillo fijo. Opción predeterminada para CommandGroup, EditBox, OptionGroup y TextBox.

Para un control Line o Shape, las configuraciones posibles de la propiedad BorderStyle son:

Valor | Descripción
0 | Transparente
1 | (Valor predeterminado) Sólido. El extremo externo del borde es el extremo externo del control Shape.
2 | Guión
3 | Punto
4 | Guión-Punto
5 | Guión-Punto-Punto
6 | Interior sólido

Para un objeto Form, las configuraciones posibles de la propiedad BorderStyle son:

Valor | Descripción
0 | Sin borde
1 | Borde de línea sencilla
2 | Borde de línea doble
3 | (Valor predeterminado) De tamaño ajustable

Observaciones

Si la configuración de la propiedad BorderWidth es mayor que 1, independientemente del valor de BorderStyle, se dibuja un borde sólido. Si BorderWidth está establecido como 1, BorderStyle produce los efectos descritos en las tablas anteriores.

Vea también

BorderColor (Propiedad) | BorderWidth (Propiedad) | DrawStyle (Propiedad) | DrawWidth (Propiedad)

Se aplica a: ComboBox (Control) | CommandGroup (Control) | EditBox | Form (Objeto) | Image (Control) | Label (Control) | Line (Control) | OptionGroup (Control) | _SCREEN | Shape (Control) | TextBox (Control) | Spinner (Control)


BorderWidth (Propiedad)

Especifica el ancho del borde de un control. Está disponible en tiempo de diseño y en tiempo de ejecución.

Control.BorderWidth[ = nWidth]

Valores de la propiedad

nWidth
Especifica el ancho, que puede ir de 0 a 8192.
Nota Si el valor de BorderWidth es mayor que 1, se pasa por alto el valor de la propiedad BorderStyle.

Observaciones

Cuando BorderWidth se establece como 0, parece que el control no tiene borde. BorderWidth es ignorado para los controles PageFrame cuando la propiedad Tabs está establecida en Verdadero (.T.).

Vea también

BorderStyle (Propiedad)

Se aplica a: Container (Objeto) | Control (Objeto) | Line (Control) | PageFrame (Control) | Shape (Control)


Bound (Propiedad)

Determina si un control de un objeto Column está enlazado al origen del control del objeto Column. Está disponible en tiempo de diseño y en tiempo de ejecución.

Column.Bound[ = lExpr]

Valores de la propiedad

lExpr
Los valores posibles de la propiedad Bound son:
Valor | Descripción
Verdadero (.T.) | (Valor predeterminado) El control está enlazado al origen del control de Column.
Falso (.F.) | El control no está enlazado al origen del control de Column.

Observaciones

Si la propiedad Bound de un objeto Column tiene asignado el valor verdadero (.T.), el valor de la propiedad ControlSource de Column se aplicará a la columna y los controles que contenga. Si intenta establecer la propiedad ControlSource del control contenido, se producirá un error. Si la propiedad Bound de un objeto Column tiene asignado el valor falso (.F.), podrá establecer directamente la propiedad ControlSource de un control contenido. Si, posteriormente, establece el valor de la propiedad ControlSource del objeto Column, anulará el valor de ControlSource en el control contenido.

Generalmente, los controles siguientes dependen de los tipos de datos correspondientes:

Clase de base del control Column | Tipos de datos típicos de Column
CheckBox | Lógico, Numérico
ComboBox | Carácter, Numérico
CommandButton | Carácter, Numérico
EditBox | Carácter
ListBox | Carácter, Numérico
OptionButton | Carácter, Numérico
Spinner | Concurrencia, Numérico
TextBox | Cualquier tipo de datos salvo General o Memo

Nota No es posible enlazar un control a una columna cuyo tipo de datos sea General o Memo.

Vea también

AddObject (Método) | ControlSource (Propiedad) | CurrentControl (Propiedad) | Sparse (Propiedad)

Se aplica a: Column (Objeto)


BoundColumn (Propiedad)

Determina qué columna de un control ListBox o ComboBox de varias columnas depende de la propiedad Value del control. Está disponible en tiempo de diseño y en tiempo de ejecución.

Control.BoundColumn[ = nCol]

Valores de la propiedad

nCol
Especifica el número de la columna que depende de la propiedad Value. El valor predeterminado de nCol es 1.

Observaciones

Utilice BoundColumn cuando el control ListBox o el ComboBox tenga múltiples columnas y cuando desee almacenar datos en una columna que no sea la primera en la propiedad Value.

Vea también

Value (Propiedad) | ActiveColumn (Propiedad) | Columns (Propiedad)

Se aplica a: ComboBox (Control) | ListBox (Control)


BoundTo (Propiedad)

Especifica si la propiedad Value de un cuadro de lista o de un cuadro combinado está determinada por la propiedad List o ListIndex. Está disponible en tiempo de diseño y en tiempo de ejecución.

 [Form.]Control.BoundTo[ = lExpression]

Valores de la propiedad

lExpression
Los valores para la propiedad BoundTo son:
Valor | Descripción
.T. | La propiedad Value está determinada por la propiedad List.
.F. (Valor predeterminado) La propiedad Value se determina por el tipo de datos de la variable o del campo especificado en la propiedad ControlSource.

Si el campo o la variable especificados en el valor de la propiedad ControlSource es del tipo Carácter, la propiedad Value estará determinada por la propiedad List.

Si la variable o el campo especificados en el valor de la propiedad ControlSource es del tipo Numérico, la propiedad Value utilizará el número de índice de la propiedad ListIndex.

Este valor proporciona compatibilidad con Microsoft Visual FoxPro 3.0 y con las versiones 2.x de FoxPro.

Observaciones

En Visual FoxPro 3.0, si la propiedad ControlSource para un cuadro combinado o un cuadro de lista es del tipo Numérico, el valor de la propiedad ListIndex del elemento seleccionado se almacena en la variable o en el campo del que depende el control. Establezca la propiedad BoundTo con el valor verdadero (.T.) para almacenar el valor de la propiedad List en la variable o en el campo del que depende el control.

Vea también

ControlSource (Propiedad) | ListIndex (Propiedad) | Value (Propiedad)

Se aplica a: ComboBox (Control) | ListBox (Control)


BreakOnError (Propiedad)

Especifica si Visual FoxPro permite errores, para interrumpir la ejecución del programa en la posición donde ocurrieron o se los envía al CursorAdapter. De lectura/escritura en tiempo de diseño y en tiempo de ejecución.

BreakOnError Tiene aplicación sólo cuando cursorAdapter ejecuta un evento o un comando SQL INSERT, UPDATE, o DELETE.

CursorAdapter.BreakOnError [= lValue]

Valores de la propiedad

lValue
Tipo de dato lógico. La siguiente tabla lista los valores para lValue.
lValue | Descripción
Falso (.F.) Visual FoxPro no muestra un mensaje de error y envía el error al CursorAdapter. (Predeterminado)

Este comportamiento es lo mismo que si Visual FoxPro envía un error, y el usuario cancela la ejecución. La rutina de errores hace disponible el último error no controlado para la rutina de llamado.
Verdadero (.T.) | Visual FoxPro permite interrumpir la ejecución del evento o método en la posición donde el error ocurre y muestra un mensaje de error.

Vea también

Propiedades | CursorAdapter (Objeto: propiedades, métodos y eventos)

Se aplica a: CursorAdapter (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


BufferMode (Propiedad)

Especifica si los registros se actualizan de forma pesimista o de forma optimista. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.BufferMode[ = nValue]

Valores de la propiedad

nValue
Los valores posibles de la propiedad BufferMode son:
Valor | Descripción
0 | (Valor predeterminado) Ninguno. Los registros se bloquean cuando comienza la modificación y los campos se escriben cuando se mueve el puntero de registro. Simula el comportamiento de FoxPro 2.x.
1 | Pesimista. Los registros se bloquean cuando comienza la modificación y los campos se escriben cuando se mueve el puntero de registro. Puede utilizar TABLEREVERT( ) para deshacer los cambios del registro actual.
2 | Optimista. Los registros no se bloquean cuando se modifican y Visual FoxPro intenta bloquear los registros cuando se escriben al disco con TABLEUPDATE( ).

Observaciones

Si BufferMode se establece como 1 ó 2, cualquier cursor empleado por un control cuadrícula se activará para el almacenamiento de tablas en búfer. Cualquier otro control dependiente de datos utiliza el almacenamiento de filas en búfer.

El valor que se establezca para la propiedad BufferMode sobrescribirá cualquier valor establecido antes del método Init de un formulario para el uso de búfer de sus cursores, incluyendo aquellos realizados en el método Load.

Vea también

BufferModeOverride (Propiedad) | TABLEREVERT( ) | TABLEUPDATE ( )

Se aplica a: Form (Objeto) | FormSet (Objeto) | _SCREEN


BufferModeOverride (Propiedad)

Especifica si no se va a aplicar la propiedad BufferMode establecida en el formulario o conjunto de formularios. Está disponible en tiempo de diseño y en tiempo de ejecución.

DataEnvironment.Cursor.BufferModeOverride[ = nValue]

Valores de la propiedad

nValue
Las configuraciones posibles de la propiedad BufferModeOverride son las siguientes:
Valor | Descripción
3 | Almacenamiento optimista de filas en búfer. Permite efectuar modificaciones en un solo registro y bloquea el registro únicamente cuando se escribe en disco. Puede utilizar TABLEREVERT( ) para deshacer los cambios.
5 | Almacenamiento optimista de tablas en búfer. Permite efectuar modificaciones en todos los registros y no los bloquea hasta que se escriben en disco con TABLEUPDATE( ). Puede utilizar TABLEREVERT( ) para deshacer los cambios.

Vea también

BufferMode (Propiedad) | TABLEREVERT( ) | TABLEUPDATE ( )

Se aplica a: Cursor (Objeto) | CursorAdapter (Clase)


BuildDateTime (Propiedad)

Contiene la fecha y la hora en que se generó por última vez un proyecto. Sólo lectura.

Object.BuildDateTime

Observaciones

Para generar un proyecto, puede utilizar BUILD PROJECT o seleccionar Volver a generar el proyecto en el cuadro de diálogo Opciones para generar.

BuildDateTime contiene un valor DateTime vacío si no se ha generado el proyecto.

Vea también

Cuadro de diálogo Opciones para generar | BUILD PROJECT | DATETIME( ) (Función)

Se aplica a: Project (Objeto)


ButtonCount (Propiedad)

Especifica el número de botones de un control CommandGroup u OptionGroup. Está disponible en tiempo de diseño y en tiempo de ejecución.

Control.ButtonCount[ = nNumber]

Valores de la propiedad

nNumber
Especifica el número de botones del control.

Observaciones

Utilice la propiedad ButtonCount para establecer dinámicamente el número de botones contenidos en un control CommandGroup u OptionGroup.

Si cambia el número botones en tiempo de ejecución, se asignarán nombres automáticamente a los nuevos botones. Los botones recibirán el nombre CommandN para un control CommandGroup u OptionN para un control OptionGroup, donde N es el número del botón agregado. Por ejemplo, si hay cuatro botones en el control CommandGroup y se cambia a 5 la configuración de la propiedad Buttons, el nuevo botón se llamará Command5.

Ejemplo

El ejemplo siguiente crea un control OptionGroup y coloca el control en un formulario. El control OptionGroup tiene tres botones y, según el botón en el que haga clic, aparecerá un círculo, una elipse o un cuadrado. La propiedad ButtonCount se utiliza para especificar el número de botones del control OptionGroup. Las propiedades Buttons y Caption se utilizan para especificar el texto mostrado junto a cada botón de opción.

El control Shape se utiliza para crear el círculo, la elipse y el cuadrado. El evento Click del control OptionGroup usa una estructura DO CASE ... ENDCASE y la propiedad Value para mostrar la forma adecuada al hacer clic en un botón de opción.

frmMyForm = CREATEOBJECT('Form')  && Create a Form
frmMyForm.Closable = .F.  && Disable the Control menu box
frmMyForm.AddObject('cmdCommand1','cmdMyCmndBtn')  && Add Command button
frmMyForm.AddObject('opgOptionGroup1','opgMyOptGrp') && Add Option Group
frmMyForm.AddObject('shpCircle1','shpMyCircle')  && Add Circle Shape
frmMyForm.AddObject('shpEllipse1','shpMyEllipse')  && Add Ellipse Shape
frmMyForm.AddObject('shpSquare','shpMySquare')  && Add Box Shape
frmMyForm.cmdCommand1.Visible =.T.  && "Quit" Command button visible
frmMyForm.opgOptionGroup1.Buttons(1).Caption = "\<Circle"
frmMyForm.opgOptionGroup1.Buttons(2).Caption = "\<Ellipse"
frmMyForm.opgOptionGroup1.Buttons(3).Caption = "\<Square"
frmMyForm.opgOptionGroup1.SetAll("Width", 100) && Set Option group width
frmMyForm.opgOptionGroup1.Visible = .T.  && Option Group visible
frmMyForm.opgOptionGroup1.Click  && Show the circle
frmMyForm.SHOW  && Display the form
READ EVENTS  && Start event processing
DEFINE CLASS opgMyOptGrp AS OptionGroup  && Create an Option Group
ButtonCount = 3  && Three Option buttons
Top = 10
Left = 10
Height = 75
Width = 100
PROCEDURE Click
ThisForm.shpCircle1.Visible = .F.  && Hide the circle
ThisForm.shpEllipse1.Visible = .F.  && Hide the ellipse
ThisForm.shpSquare.Visible = .F.  && Hide the square
DO CASE
CASE ThisForm.opgOptionGroup1.Value = 1
ThisForm.shpCircle1.Visible = .T. && Show the circle
CASE ThisForm.opgOptionGroup1.Value = 2
ThisForm.shpEllipse1.Visible = .T.  && Show the ellipse
CASE ThisForm.opgOptionGroup1.Value = 3
ThisForm.shpSquare.Visible = .T.  && Show the square
ENDCASE
ENDDEFINE
DEFINE CLASS cmdMyCmndBtn AS CommandButton  && Create Command button
Caption = '\<Quit'  && Caption on the Command button
Cancel = .T.  && Default Cancel Command button (Esc)
Left = 125  && Command button column
Top = 210  && Command button row
Height = 25  && Command button height
PROCEDURE Click
CLEAR EVENTS  && Stop event processing, close Form
ENDDEFINE
DEFINE CLASS shpMyCircle AS SHAPE  && Create a circle
Top = 10
Left = 200
Width = 100
Height = 100
Curvature = 99
BackColor = RGB(255,0,0)  && Red
ENDDEFINE
DEFINE CLASS shpMyEllipse AS SHAPE  && Create an ellipse
Top = 35
Left = 200
Width = 100
Height = 50
Curvature = 99
BackColor = RGB(0,128,0)  && Green
ENDDEFINE
DEFINE CLASS shpMySquare AS SHAPE  && Create a square
Top = 10
Left = 200
Width = 100
Height = 100
Curvature = 0
BackColor = RGB(0,0,255)  && Blue
ENDDEFINE

Vea también

Buttons (Propiedad) | DO CASE ... ENDCASE (Comando) | CommandButton (Control)

Se aplica a: CommandGroup (Control) | OptionGroup (Control)


Buttons (Propiedad)

Una matriz para tener acceso a todos los botones de un grupo. No está disponible en tiempo de diseño.

Control.Buttons (nIndex).Property = Value-or- Control.Buttons (nIndex).Method

Valores de la propiedad

nIndex
Un entero entre 1 y el número de botones especificado en la propiedad ButtonCount para Control.
Property
Una propiedad de un control CommandButton u OptionButton.
Value
El valor de Property.
Method
Un método de un control CommandButton u OptionButton.

Observaciones

Puede utilizar la propiedad Buttons para establecer propiedades y llamar a métodos para todos los botones del grupo. La propiedad Buttons es una matriz que se crea al crear el grupo de botones.

Ejemplo

El ejemplo siguiente crea un control OptionGroup y coloca el control en un formulario. El control OptionGroup tiene tres botones y, según el botón en el que haga clic, aparecerá un círculo, una elipse o un cuadrado. La propiedad ButtonCount se utiliza para especificar el número de botones del control OptionGroup. Las propiedades Buttons y Caption se utilizan para especificar el texto mostrado junto a cada botón de opción.

El control Shape se utiliza para crear el círculo, la elipse y el cuadrado. El evento Click del control OptionGroup usa una estructura DO CASE ... ENDCASE y la propiedad Value para mostrar la forma adecuada al hacer clic en un botón de opción.

frmMyForm = CREATEOBJECT('Form')  && Create a Form
frmMyForm.Closable = .F.  && Disable the Control menu box
frmMyForm.AddObject('cmdCommand1','cmdMyCmndBtn')  && Add Command button
frmMyForm.AddObject('opgOptionGroup1','opgMyOptGrp') && Add Option Group
frmMyForm.AddObject('shpCircle1','shpMyCircle')  && Add Circle Shape
frmMyForm.AddObject('shpEllipse1','shpMyEllipse')  && Add Ellipse Shape
frmMyForm.AddObject('shpSquare','shpMySquare')  && Add Box Shape
frmMyForm.cmdCommand1.Visible =.T.  && "Quit" Command button visible
frmMyForm.opgOptionGroup1.Buttons(1).Caption = "\<Circle"
frmMyForm.opgOptionGroup1.Buttons(2).Caption = "\<Ellipse"
frmMyForm.opgOptionGroup1.Buttons(3).Caption = "\<Square"
frmMyForm.opgOptionGroup1.SetAll("Width", 100) && Set Option group width
frmMyForm.opgOptionGroup1.Visible = .T.  && Option Group visible
frmMyForm.opgOptionGroup1.Click  && Show the circle
frmMyForm.SHOW  && Display the form
READ EVENTS  && Start event processing
DEFINE CLASS opgMyOptGrp AS OptionGroup  && Create an Option Group
ButtonCount = 3  && Three Option buttons
Top = 10
Left = 10
Height = 75
Width = 100
PROCEDURE Click
ThisForm.shpCircle1.Visible = .F.  && Hide the circle
ThisForm.shpEllipse1.Visible = .F.  && Hide the ellipse
ThisForm.shpSquare.Visible = .F.  && Hide the square
DO CASE
CASE ThisForm.opgOptionGroup1.Value = 1
ThisForm.shpCircle1.Visible = .T. && Show the circle
CASE ThisForm.opgOptionGroup1.Value = 2
ThisForm.shpEllipse1.Visible = .T.  && Show the ellipse
CASE ThisForm.opgOptionGroup1.Value = 3
ThisForm.shpSquare.Visible = .T.  && Show the square
ENDCASE
ENDDEFINE
DEFINE CLASS cmdMyCmndBtn AS CommandButton  && Create Command button
Caption = '\<Quit'  && Caption on the Command button
Cancel = .T.  && Default Cancel Command button (Esc)
Left = 125  && Command button column
Top = 210  && Command button row
Height = 25  && Command button height
PROCEDURE Click
CLEAR EVENTS  && Stop event processing, close Form
ENDDEFINE
DEFINE CLASS shpMyCircle AS SHAPE  && Create a circle
Top = 10
Left = 200
Width = 100
Height = 100
Curvature = 99
BackColor = RGB(255,0,0)  && Red
ENDDEFINE
DEFINE CLASS shpMyEllipse AS SHAPE  && Create an ellipse
Top = 35
Left = 200
Width = 100
Height = 50
Curvature = 99
BackColor = RGB(0,128,0)  && Green
ENDDEFINE
DEFINE CLASS shpMySquare AS SHAPE  && Create a square
Top = 10
Left = 200
Width = 100
Height = 100
Curvature = 0
BackColor = RGB(0,0,255)  && Blue
ENDDEFINE

Vea también

ButtonCount (Propiedad) | SetAll (Método) | CommandButton (Control)

Se aplica a: CommandGroup (Control) | OptionGroup


c...Alias (Propiedades)

cBaseFontName

cBaseMonoFontName

cCovFileAlias

cDefaultWritePath

cMarExecuted

cMarkNotExecuted

cOldPath

cSavedSkippedFiles

cSavedTargetDBF

cSkippedAlias

cSourceAlias

cSourcefile

cSuspendedLog

cTargetAlias

Vea también

Objeto Coverage Engine


Cancel (Propiedad)

Especifica si un CommandButton o un control OLE Container es un botón Cancelar, es decir, si el usuario presiona la tecla ESC, se produce el evento Click del botón Cancelar. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.Cancel[ = lExpr]

Valores de la propiedad

lExpr
Los valores posibles de la propiedad Cancel son:
Valor | Descripción
Verdadero (.T.) | El control CommandButton o el control OLE Container es el botón Cancelar.
Falso (.F.) | (Valor predeterminado) El botón CommandButton o el control OLE Container no es el botón Cancelar.

Observaciones

La propiedad Cancel sólo se aplica a un control OLE Container que contenga un control ActiveX que actúa como un botón (.ocx).

Ejemplo

El ejemplo siguiente crea un botón de comando y un control OptionGroup, y los coloca en un objeto Form. La propiedad Cancel se utiliza para asignar el botón de comando como botón Cancelar. Si se presiona la tecla ESC, se produce el evento Click del botón de comando y el procedimiento de evento Click ejecuta CLEAR EVENTS para cerrar el formulario y detener el procesamiento de eventos.

El control OptionGroup tiene tres botones y, según el botón en el que haga clic, aparecerá un círculo, una elipse o un cuadrado. El control Shape se utiliza para crear el círculo, la elipse y el cuadrado. El evento Click del control OptionGroup usa una estructura DO CASE ... ENDCASE y la propiedad Value para mostrar la forma adecuada al hacer clic en un botón de opción.

frmMyForm = CREATEOBJECT('Form')  && Create a Form
frmMyForm.Closable = .F.  && Disable the Control menu box
frmMyForm.AddObject('cmdCommand1','cmdMyCmndBtn')  && Add Command button
frmMyForm.AddObject('opgOptionGroup1','opgMyOptGrp') && Add Option Group
frmMyForm.AddObject('shpCircle1','shpMyCircle')  && Add Circle Shape
frmMyForm.AddObject('shpEllipse1','shpMyEllipse')  && Add Ellipse Shape
frmMyForm.AddObject('shpSquare','shpMySquare')  && Add Box Shape
frmMyForm.cmdCommand1.Visible =.T.  && "Quit" Command button visible
frmMyForm.opgOptionGroup1.Buttons(1).Caption = "\<Circle"
frmMyForm.opgOptionGroup1.Buttons(2).Caption = "\<Ellipse"
frmMyForm.opgOptionGroup1.Buttons(3).Caption = "\<Square"
frmMyForm.opgOptionGroup1.SetAll("Width", 100) && Set Option group width
frmMyForm.opgOptionGroup1.Visible = .T.  && Option Group visible
frmMyForm.opgOptionGroup1.Click  && Show the circle
frmMyForm.SHOW  && Display the form
READ EVENTS  && Start event processing
DEFINE CLASS opgMyOptGrp AS OptionGroup  && Create an Option Group
ButtonCount = 3  && Three Option buttons
Top = 10
Left = 10
Height = 75
Width = 100
PROCEDURE Click
ThisForm.shpCircle1.Visible = .F.  && Hide the circle
ThisForm.shpEllipse1.Visible = .F.  && Hide the ellipse
ThisForm.shpSquare.Visible = .F.  && Hide the square
DO CASE
CASE ThisForm.opgOptionGroup1.Value = 1
ThisForm.shpCircle1.Visible = .T. && Show the circle
CASE ThisForm.opgOptionGroup1.Value = 2
ThisForm.shpEllipse1.Visible = .T.  && Show the ellipse
CASE ThisForm.opgOptionGroup1.Value = 3
ThisForm.shpSquare.Visible = .T.  && Show the square
ENDCASE
ENDDEFINE
DEFINE CLASS cmdMyCmndBtn AS CommandButton  && Create Command button
Caption = '\<Quit'  && Caption on the Command button
Cancel = .T.  && Default Cancel Command button (Esc)
Left = 125  && Command button column
Top = 210  && Command button row
Height = 25  && Command button height
PROCEDURE Click
CLEAR EVENTS  && Stop event processing, close Form
ENDDEFINE
DEFINE CLASS shpMyCircle AS SHAPE  && Create a circle
Top = 10
Left = 200
Width = 100
Height = 100
Curvature = 99
BackColor = RGB(255,0,0)  && Red
ENDDEFINE
DEFINE CLASS shpMyEllipse AS SHAPE  && Create an ellipse
Top = 35
Left = 200
Width = 100
Height = 50
Curvature = 99
BackColor = RGB(0,128,0)  && Green
ENDDEFINE
DEFINE CLASS shpMySquare AS SHAPE  && Create a square
Top = 10
Left = 200
Width = 100
Height = 100
Curvature = 0
BackColor = RGB(0,0,255)  && Blue
ENDDEFINE

Vea también

Click (Evento) | Default (Propiedad) | CANCEL (Comando) | Botón Cancelar

Se aplica a: CommandButton | OLE Container (Control)


Caption (Propiedad)

Especifica el texto que se muestra en el título de un objeto. Disponible en tiempo de diseño y tiempo de ejecución.

Object.Caption[ = cTexto]

Valores de la propiedad

cTexto
Especifica el texto que se muestra en un objeto. La siguiente tabla describe como los títulos se muestran dependiendo del objeto.
Objeto | Muestra en título
Form | La propiedad Caption especifica el texto que se muestra en la barra de título del formulario. Cuando el formulario se minimiza, el título se muestra a la derecha de su icono.
PageFrame | En las páginas de un objeto PageFrame, la propiedad Caption especifica el texto que se muestra en la ficha de cada página.
Controls | La propiedad Caption muestra el título sobre o junto al control. Si el control muestra un icono, configure la propiedad PicturePosition para determinar la ubicación del icono y, por lo tanto, la ubicación del título.

Observaciones

Cuando se crea un nuevo formulario o control, el valor predeterminado de la propiedad Name configura el valor determinado para la propiedad Caption. Este título predeterminado incluye el nombre de la clase del objeto y un número entero, por ejemplo, Command1, Combo1, o Form1.

Utilice la propiedad Name para referirse a un objeto en código. La propiedad Caption describe solo el texto que aparece en la pantalla para identificar el control. Estas dos propiedades tienen el mismo valor, pero luego se configuran de forma diferente.

Si no se especifica la configuración de la propiedad Width para un control, el control automáticamente ajusta el tamaño de forma que contenga el título.

Para ajustar automáticamente un control Label para que se ajuste al título, configure la propiedad AutoSize como Verdadera (.T.). El número máximo de caracteres para la propiedad Caption de un control Label es de 256.

Para asignar una clave de acceso a un control, incluya una barra y un signo menor-que (\<) en el título precediendo el carácter que quiera designar como clave de acceso. El usuario puede entonces presionar ALT y el carácter especificado para mover el foco hacia ese control. Si el control es un botón de comando, casilla de verificación, o botón de opciones, presionando ALT y el carácter especificado se obtiene el mismo efecto que al hacer clic sobre el control.

Para agregar un subrayado a un carácter en el título del encabezado de columna, preceda el carácter con un ampersand (&). Si quiere incluir el carácter "&" en un título del encabezado de columna, utilice dos carácteres ampersand (&) consecutivos. Note que esto no causa que la letra se comporte como una clave de acceso, sólo subraya un carácter del título del encabezado.

Ejemplo

Este ejemplo muestra el uso de la propiedad Caption para cambiar el título de la ventana principal de Visual FoxPro desde Microsoft Visual FoxPro para mostrar el número de versión actual de Visual FoxPro.

_SCREEN.Caption=VERSION()

Vea también

AutoSize (Propiedad) | BorderStyle (Propiedad) | Name (Propiedad) | Style (Propiedad) | Width (Propiedad)

Se aplica a: CheckBox (Control) | CommandButton (Control) | Form (Objeto) | Header (Objeto) | Label (Control) | OptionButton (Control) | Page (Objeto) | _SCREEN (Variable del sistema) | ToolBar (Objeto)


Centered (Propiedad)

Especifica si un control CheckBox (casilla de verificación) está centrado dentro de los límites del control.

CheckBox.Centered [= lExpr]

Valores de la Propiedad

lExpr
Tipo de dato lógico (Logical). La siguiente tabla lista los valores para lExpr.
lExpr | Descripción
Falso (.F.) | El control CheckBox (casilla de verificación) no está centrado dentro de los límites del control. (Predeterminado)
Verdadero (.T.) | Centra al control CheckBox (casilla de verificación) dentro de los límites del control.

Observaciones

Si un control CheckBox (casilla de verificación) no está contenido en una cuadrícula, el control está centrado dentro de sus propios límites.

Centered trabaja conjuntamente con la propiedad Alignment. Si se proporciona un título, los valores de alineación a la izquierda y la derecha de la propiedad Alignment determinan en qué lado de la casilla de verificación aparece el título. Si la propiedad Centered también está definida como Verdadero (.T.), tanto el título como la casilla de verificación estarán centrados horizontal y verticalmente en la columna de la cuadrícula.

Si la propiedad Sparse de la columna se establece como Verdadero (.T.) (predeterminado), la propiedad Alignment de la columna determina la ubicación del texto en todas las celdas de la columna. Sin embargo, cuando una celda particular tiene el foco, y el control aparece, Visual FoxPro usa la propiedad Alignment del control. Si se establece la propiedad Sparse de la columna como Falso (.F.), Visual FoxPro usa la propiedad Alignment del control y no tiene en cuenta la propiedad Alignment de la columna.

Cuando la propiedad Alignment se establece en tiempo de diseño, el diseñador intenta establecer la propiedad Alignment sobre los controles de la columna también. Cuando ese control es un CheckBox (casilla de verificación), estableciendo la propiedad Alignment de la columna en cualquiera de los valores "centrado" de la propiedad, automáticamente establece la propiedad Centered en Verdadero (.T.).

Si Centered es Verdadero (.T.), la casilla de verificación permanece centrada horizontal y verticalmente en las celdas de la cuadrícula cuando las filas y columnas de la cuadrícula cambian de tamaño.

Ejemplo 1

El siguiente ejemplo muestra cómo se puede establecer la propiedad Centered para alinear una casilla de verificación con el centro del control y que su título esté a la derecha de la casilla de verificación:

Checkbox1.Centered = .T.
Checkbox1.Alignment = 1

Ejemplo 2

El siguiente ejemplo muestra cómo se puede establecer la propiedad Centered para alinear la casilla de verificación dentro del centro de una columna de una cuadrícula. Al establecer la propiedad Sparse de la columna en Falso (.F.) se especifica que la propiedad Alignment del control tiene prioridad sobre la propiedad Alignment de la columna de la cuadrícula:

Column1.Sparse = .F.
Column1.Checkbox1.Centered = .T.
Column1.Checkbox1.Caption = ""

Vea también

Propiedades | Sparse (Propiedad) | Alignment (Propiedad)

Se aplica a: CheckBox (Control)


Century (Propiedad)

Especifica si se mostrará la parte de una fecha relativa al siglo en un cuadro de texto. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.Century[ = nValue]

Valores de la propiedad

nValue
Uno de los siguientes valores:
Valor | Descripción
0 | Desactivado. No se muestra la parte de la fecha correspondiente al siglo.
1 | (Valor predeterminado) Activado. Se muestra la parte de la fecha correspondiente al siglo.
2 | El valor SET CENTURY determina si se mostrará la parte de la fecha correspondiente al siglo. Si SET CENTURY está establecido en ON, se mostrará la parte de la fecha correspondiente al siglo. Si SET CENTURY está establecido en OFF, no se mostrará la parte de la fecha correspondiente al siglo.

Observaciones

El valor de la propiedad Century se pasa por alto si la propiedad DateFormat está establecida en Short (corta) o Long (larga).

Observe que en versiones anteriores de Visual FoxPro el valor predeterminado para la propiedad Century era 2.

Vea también

DateFormat (Propiedad) | DateMark (Propiedad) | Hours (Propiedad) | Seconds (Propiedad) | SET CENTURY | StrictDateEntry (Propiedad)

Se aplica a: TextBox (Control)


ChildAlias (Propiedad)

Especifica el nombre de alias de la tabla secundaria. Es de sólo lectura en tiempo de diseño y en tiempo de ejecución.

DataEnvironment.Relation.ChildAlias[ = cText]

Valores de la propiedad

cText
Especifica el alias de la tabla secundaria en la relación.

Observaciones

El valor de la propiedad ChildAlias debe ser el mismo nombre que el valor de la propiedad Alias para el objeto Cursor que representa la tabla secundaria.

Vea también

Alias (Propiedad) | ParentAlias (Propiedad) | Cursor (Objeto) | Cursor (Objeto: propiedades, métodos y eventos)

Se aplica a: Relation


ChildOrder (Propiedad)

Especifica la etiqueta de índice del origen de registro del control Cuadrícula o del objeto Relation. Está disponible en tiempo de diseño y es de sólo lectura en tiempo de ejecución.

Object.ChildOrder[ = cTagName]

Valores de la propiedad

cTagName
Especifica un nombre existente de etiqueta de índice.

Observaciones

Si se ha establecido la propiedad ChildOrder, se pasará por alto la propiedad Order del Cursor para la tabla secundaria.

Utilice esta propiedad para vincular dos tablas que tengan una relación de uno a varios. Por ejemplo, una tabla de clientes que contenga más de un registro por cliente se vincula con una tabla de pedidos que contenga múltiples pedidos por cliente. Para esta relación de uno a varios, establezca la propiedad ChildOrder en el campo de etiqueta de índice del Id. de cliente.

La propiedad ChildOrder simula el comportamiento de SET ORDER.

Vea también

ControlSource (Propiedad) | LinkMaster (Propiedad) | SET ORDER

Se aplica a: Grid (Control) | Relation (Objeto)


ChildTable (Propiedad)

Contiene una referencia de objeto a un objeto XMLTable secundario. Lectura/escritura.

XMLTable.ChildTable

Valores de la propiedad

Referencia de Objeto. ChildTable contiene una referencia de objeto a un objeto XMLTable hijo y nulo (.NULL.) cuando no tiene datos.

Observaciones

Para tablas anidadas en SQL XML, Visual FoxPro llena la propiedad ChildTable con información acerca de las tablas anidadas involucradas en la operación de combinación. Sin embargo, XMLAdapter no asigna la propiedad ChildTable cuando se trabaja con DataSets ADO.NET. Para más información sobre cómo el XMLAdapter trata a las tablas anidadas para fuentes DataSet ADO.NET y fuentes de datos SQL XML, ver Clase XMLAdapter.

Ejemplo

El siguiente ejemplo ilustra cómo un objeto XMLAdapter trata la tabla Orders como una tabla secundaria de la tabla Customers y a la tabla Order_details como secundaria de la tabla Orders.

<?xml version="1.0" encoding="utf-8"?>
<SqlXmlAdoData>
<Schema name="Schema1" xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes">
<ElementType name="Customers" content="eltOnly" model="closed" order="many">
<element type="Orders" maxOccurs="*"/>
<element type="CustomerID"/>
<element type="CompanyName"/>
</ElementType>
<ElementType name="CustomerID" content="textOnly" model="closed" dt:type="string"/>
<ElementType name="CompanyName" content="textOnly" model="closed" dt:type="string"/>
<ElementType name="Orders" content="eltOnly" model="closed" order="many">
<element type="Order_details" maxOccurs="*"/>
<element type="OrderID"/>
<element type="OrderDate"/>
<element type="ShipName"/>
</ElementType>
<ElementType name="OrderID" content="textOnly" model="closed" dt:type="i4"/>
<ElementType name="OrderDate" content="textOnly" model="closed" dt:type="dateTime"/>
<ElementType name="ShipName" content="textOnly" model="closed" dt:type="string"/>
<ElementType name="Order_details" content="eltOnly" model="closed" order="many">
<element type="ProductID"/>
<element type="UnitPrice"/>
<element type="Quantity"/>
</ElementType>
<ElementType name="ProductID" content="textOnly" model="closed" dt:type="i4"/>
<ElementType name="UnitPrice" content="textOnly" model="closed" dt:type="fixed.14.4"/>
<ElementType name="Quantity" content="textOnly" model="closed" dt:type="i2"/>
</Schema>
<Customers xmlns="x-schema:#Schema1">
<CustomerID>CACTU</CustomerID>
<CompanyName>Cactus Comidas para llevar</CompanyName>
<Orders>
<OrderID>10521</OrderID>
<OrderDate>1997-04-29T00:00:00</OrderDate>
<ShipName>Cactus Comidas para llevar</ShipName>
<Order_details>
<ProductID>35</ProductID>
<UnitPrice>18</UnitPrice>
<Quantity>3</Quantity>
</Order_details>
<Order_details>
<ProductID>41</ProductID>
<UnitPrice>9.65</UnitPrice>
<Quantity>10</Quantity>
</Order_details>
<Order_details>
<ProductID>68</ProductID>
<UnitPrice>12.5</UnitPrice>
<Quantity>6</Quantity>
</Order_details>
</Orders>
</Customers>
</SqlXmlAdoData>

Vea también

Propiedades | XMLTable (Objeto: propiedades, métodos, eventos)

Se aplica a: XMLTable (Clase)


Propiedades del Examinador de clases

El Examinador de clases tiene asociadas las propiedades siguientes.

Nota Las propiedades con la indicación “Sólo referencia” o “Sólo uso interno” las utiliza y mantiene internamente el Examinador de clases. Evite cambiar el valor de estas propiedades, pues de lo contrario podría provocar errores en el Examinador de clases.
lActive
Sólo referencia. Devuelve el estado de actividad del Examinador de clases. Si el Examinador de clases tiene el enfoque, el valor es verdadero (.T.).
cAlias
Devuelve el alias del área de trabajo dentro de la sesión de datos del Examinador de clases asociada a la clase seleccionada en la lista de clases. De forma predeterminada, la sesión de datos privada del Examinador de clases abre al menos dos alias de tabla: BROWSER y METADATA. El alias BROWSER es para Browser.dbf y lo comparten todas las instancias. El alias METADATA es para la biblioteca de clases (.vcx) o el formulario (.scx) abierto en el Examinador de clases. Si hay más de un archivo abierto, el alias METADATA se incrementa una vez por cada uno de ellos.
cAddInMethod
Sólo referencia. Devuelve el nombre del método que ha llamado al complemento externo que se está ejecutando, y se borra cuando la ejecución termina. Cuando se ejecuta un complemento, esta propiedad contiene el nombre del método que lo ha llamado.
lAddInMode
Devuelve el estado de un complemento del Examinador de clases. Si es verdadero (.T.), se ha llamado al complemento, y si es falso (.F.), el complemento ha terminado.
lAddInTrace
Devuelve el estado del modo de seguimiento de presentación que supervisa los eventos de un complemento. Si es verdadero (.T.), los mensajes que describen los eventos de un complemento se envían a la ventana principal de Visual FoxPro.
nAtPos
Sólo uso interno. El valor predeterminado es 0.
lAutoExpand
Determina si la lista de clases debe expandirse o agruparse automáticamente cuando se actualiza. Si el valor es verdadero (.T.), la lista expandirá y agrupará automáticamente los árboles de clases del esquema. Si es falso (.F.), el esquema de la lista de clases no se expandirá ni agrupará. El valor predeterminado es verdadero (.T.).
cBaseClass
Sólo referencia. Devuelve el nombre de la clase de base de la clase seleccionada en la lista de clases.
cBrowserTable
Sólo referencia. Devuelve la ruta completa de acceso a la tabla de registro Brower.dbf.
lBusyState
Sólo referencia. Devuelve el estado de la operación de actualización para el Examinador de clases. Si es verdadero (.T.), la operación de actualización está en curso.
cClass
Sólo referencia. Devuelve el nombre de la clase seleccionada en la lista de clases.
nClassCount
Sólo referencia. Devuelve el número total de elementos de la lista de clase. El valor predeterminado es 0.
cClassLibrary
Sólo referencia. Devuelve el nombre de la biblioteca de clases correspondiente a la clase seleccionada en la lista de clases.
aClassList
Sólo referencia. Una matriz de dos dimensiones de valores asociados a una biblioteca de clases (.vcx) o un archivo de formulario (.scx) en la lista de clases actual. Cada archivo de la lista tiene su propio alias. Por ejemplo, si en la lista de clases aparecen dos archivos, los alias serán METADATA1 y METADATA2.

La matriz contiene la información siguiente:

Posición de aClassList | Valor
[nIndex,1] | Nombre de una clase
[nIndex,2] | Número de registro de metadatos asociado
[nIndex,3] | Nivel de sangría en el esquema
[nIndex,4] | Nombre del archivo que contiene la clase primaria.
[nIndex,5] | Nombre de la clase primaria
[nIndex,6] | Nombre del archivo que contiene la clase
[nIndex,7] | Nombre del archivo de icono de clase
[nIndex,8] | La propiedad BaseClass de la clase
[nIndex,9] | Especifica si la clase se define como una clase pública OLE.
nClassListIndex
Sólo referencia. Devuelve la posición de la clase seleccionada en la lista de clases. El valor para el primer elemento es 0. El valor predeterminado es – 1.
nClassTimeStamp
El valor de TimeStamp (del campo TimeStamp de .vcx o .scx) para la clase seleccionada.
cClassType
Sólo referencia. Devuelve el filtro actual de la lista de clases, según se especifica en el cuadro ClassType.
tcClassType
El filtro Type inicial para la lista de clases.
tcDefaultClass
Sólo referencia. Devuelve el valor o referencia del segundo parámetro pasado a BROWSER.APP. Por ejemplo si se abre el Examinador de clases, al escribir el código siguiente, esta propiedad devolverá “baseform”:
DO (_BROWSER) WITH "wizstyle.vcx","baseform"
lDescriptions
Si es verdadero (.T.), se muestran descripciones para clases y miembros.
lDisplayHierarchyError
Determina si se debe mostrar o no un mensaje de error si se cargan clases sin clases principales válidas en el Examinador de clases. El valor predeterminado es verdadero (.T.).
nDisplayMode
Sólo referencia. Devuelve el modo de presentación especificado en el grupo de opciones de modo de presentación: 1 (jerárquico) o 2 (alfabético). El valor predeterminado es 0.
lDragDrop
Sólo para uso interno. Especifica si hay o no una operación de arrastre en curso.
cDragIcon
Devuelve el archivo de cursor actual utilizado para el icono de cursor durante las operaciones de arrastre.
lEmptyFilter
Si es verdadero (.T.), se muestran métodos vacíos en la lista de miembros. El valor predeterminado es falso (.F.).
lError
Devuelve el estado de la comprobación de errores. Si es verdadero (.T.), se ha producido un error y se ha mostrado el cuadro de diálogo de error del Examinador de clases. Cuando se abre el Examinador de clases, se establece esta propiedad en falso (.F.). Si desea comprobar si hay errores, asegúrese de que el valor de esta propiedad es falso.
lExpanded
Sólo para uso interno.
nFileCount
Sólo referencia. Devuelve el número de archivos de biblioteca de clases (.vcx) o de formularios (.scx) abiertos actualmente en el Examinador de clases. El valor predeterminado es 0.
lFileMode
Sólo referencia. Devuelve el tipo del elemento seleccionado en la lista de clases. Si es verdadero (.T.), se selecciona un archivo; si es falso (.F.), se selecciona una clase.
cFileName
Sólo referencia. Devuelve la ruta completa de acceso al archivo asociado a la clase seleccionada en la lista de clases.
tcFileName
Sólo referencia. Devuelve el valor o referencia del primer parámetro pasado a BROWSER.APP. Por ejemplo, si se abre el Examinador de clases con el código siguiente, esta propiedad devolverá “Wizstyle.vcx”:
DO (_BROWSER) WITH "wizstyle.vcx","baseform"
aFiles
Sólo referencia. Matriz con los archivos de biblioteca de clases (.vcx), formularios (.scx), aplicación (.exe), biblioteca de objetos (.olb) y biblioteca de tipos (.tlb) abiertos actualmente en el Examinador de clases.
cFilter
Sólo referencia. Devuelve el valor actual de SET FILTER de la tabla de metadatos abierta para la clase seleccionada en la lista de clases.
lFormAddObject
Sólo para uso interno.
cGetFileExt
Determina las extensiones de métodos predeterminadas GETFILE( ) del Examinador de clases. El valor predeterminado es “VCX;SCX;PJX;EXE;OLB;TLB”.
lHiddenFilter
Si es verdadero (.T.), se muestran los miembros ocultos en la lista de miembros. El valor predeterminado es falso (.F.).
lIgnoreErrors
Sólo para uso interno.
lInitialized
Sólo referencia. Devuelve el estado de inicialización del Examinador de clases. Si es verdadero (.T.), el Examinador de clases está inicializado; si es falso (.F.) el Examinador de clases no está inicializado.
aInstances
Sólo referencia. Matriz de instancias asociadas a la clase seleccionada en la lista de clases. Su funcionalidad es idéntica a la de AINSTANCE( ).
nInstances
Sólo referencia. Devuelve el número total de instancias asociadas a la clase seleccionada en la lista de clases mediante AINSTANCE( ). El valor predeterminado es 0.
cLastFindText
Sólo para uso interno.
nLastHeight
Devuelve el alto inicial de un formulario antes de que se produzca un evento Resize. El valor predeterminado es (THIS.Height).
nLastRecNo
Sólo para uso interno. El valor inicial es 1.
cLastSetComp
Valor de SET COMPATIBLE cuando se cargó el Examinador de clases.
cLastSetESC
Valor de SET ESCAPE cuando se cargó el Examinador de clases.
cLastSetUDFParms
Valor de SET UDFPARMS cuando se cargó el Examinador de clases.
cLastValue
Sólo para uso interno.
nLastWidth
Devuelve el ancho inicial de un formulario antes de que se produzca un evento Resize. El valor predeterminado es (THIS.Width).
tlListBox
Si se pasa un valor verdadero (.T.) al Examinador de clases en este argumento, se muestran las clases y los miembros en cuadros de lista en lugar de controles de vista de árbol.
lModalDialog
Determina si se actualiza la lista de clases cuando el Examinador de clases recupera el enfoque después de activar un cuadro de diálogo modal. Si es verdadero (.T.), la lista no se actualiza; si es falso (.F.), la lista se actualiza. El valor predeterminado es verdadero (.T.).
nMouseButton
Sólo para uso interno. Devuelve qué botón del mouse se ha presionado.
lNoDefault
Devuelve la forma de tratar el comportamiento predeterminado cuando se vuelve de un complemento. Si es verdadero (.T.), el comportamiento predeterminado se ignora.
lOutlineOCX
Sólo referencia. Si es verdadero (.T.), se muestran las clases y los miembros en controles de vista de árbol. Es posible que necesite esta información en un complemento.
cParentClass
Sólo referencia. Devuelve el nombre de la clase primaria que corresponde a la clase seleccionada en la lista de clases.
lParentClassBrowser
Si es verdadero (.T.), se muestra la barra de herramientas Editar método de clase primaria. El valor predeterminado es verdadero. Puede hacer clic en este botón para ver o modificar inmediatamente el método de clase primaria en el editor.
cParentClassBrowserCaption
El título de la barra de herramientas del examinador de la clase primaria. El valor predeterminado es SPACE(10) + “ParentClass Browser”.
cParentClassSymbol
Determina el símbolo que se muestra junto a una clase para indicar que es una subclase de una clase que no se muestra en la lista Clases.
nPixelOffset
Sólo uso interno. Determina el número de píxeles para colocar en cascada múltiples instancias del Examinador de clases. El valor predeterminado es 22.
cPlatform
Sólo referencia. Devuelve el nombre de la plataforma activa.
cProgramName
Sólo referencia. Devuelve la ruta completa de acceso al archivo BROWSER.APP que se está ejecutando.
lProtectedFilter
Si es verdadero (.T.), los miembros protegidos se muestran en la lista de miembros. El valor predeterminado es falso (.F.).
lReadOnly
Sólo referencia. Devuelve el estado de sólo lectura del archivo asociado a la clase seleccionada en la lista de clases.
nRecCount
Sólo referencia. Devuelve el número total de registros de los archivos abiertos de biblioteca de clases (.vcx) y de formularios (.scx). El valor predeterminado es 0.
lRefreshMode
Sólo uso interno.
lRelease
Sólo uso interno. Especifica que el Examinador de clases se liberó de forma automática.
lResizeMode
Sólo uso interno. Devuelve el modo de cambio de tamaño del Examinador de clases.
lSCXMode
Sólo referencia. Devuelve el estado del tipo de archivo de la clase seleccionada en la lista de clases. Si es verdadero (.T.), el archivo es un formulario (.scx); si es falso (.F.), el archivo es una biblioteca de clases (.vcx).
nShift
Sólo para uso interno. Estado de la tecla MAYÚS cuando se presiona un botón del mouse.
oSource
Sólo referencia. Devuelve la referencia de un objeto colocado en un formulario desde el Examinador de clases. Una vez terminado el método DragDrop, se establece oSource al valor nulo (.NULL.).
cStartName
Sólo referencia. Devuelve la propiedad Name del Examinador de clases en el momento de cargarse éste antes de que se incremente el nombre. Por ejemplo, el valor predeterminado es ClassBrowser y, para cada nueva instancia que se abre, el nombre se incrementa: ClassBrowser1, ClassBrowser2.
nStrLen
Sólo para uso interno. El valor predeterminado es 0.
cTimeStamp
Sólo referencia. Devuelve el valor del campo de marca de hora de la clase seleccionada en la lista de clases.
lVCXSCXMode
Si es verdadero (.T.), la clase o el archivo seleccionado es un .vcx o un .scx, o está en un .vcx o un .scx.
tnWindowState
Sólo para uso interno. Especifica si la ventana del Examinador de clases está minimizada (1), maximizada (2) o normal (0).

Valores iniciales de las propiedades del Examinador de clases

Cuando se abre una instancia del Examinador de clases, en sus propiedades se establecen los valores predeterminados indicados en la tabla siguiente:

Propiedad del Examinador de clases | Valor inicial
Caddin | ""
caddinmethod | ""
Calias | ""
Título | “Examinador de clases”
Cbaseclass | ""
Cbrowsertable | ""
Cclass | ""
Cclasslibrary | ""
cclasstimestamp | ""
Cclasstype | ""
Cdragicon | ""
Cfilename | ""
Cfilter | ""
Cgetfileext | vcx;scx;pjx;exe;olb;tlb
clastgetfileext | ""
Clastsetcomp | ""
Clastsetesc | ""
clastsetudfparms | ""
Clastvalue | ""
Cparentclass | ""
cparentclasssymbol | (IIF(VERSION(3)=="00",CHR(171),"<"))
Cplatform | ""
cprogramname | ""
Cstartname | ""
DataSession | 2
FontBold | .F.
FontName | “MS Sans Serif”
FontSize | 8
Alto | 360
HelpContextID | 95825501
Icono | Browser.ico
Lautoexpand | .T.
Ldescriptions | .T.
ldisplayhierarchyerror | .T.
Izquierda | 0
lparentclassbrowser | .T.
MinHeight | (175)
MinWidth | (250)
Nombre | “classbrowser”
Natpos | 0
Nclasscount | 0
nclasslistindex | -1
Ndisplaymode | 1
Nfilecount | 0
Ninstances | 0
Nlastheight | (this.Height)
Nlastrecno | 1
Nlastwidth | (this.Width)
nmousebutton | 0
Npixeloffset | 22
Nreccount | 0
Nshift | 0
Nstrlen | 0
Ntimestamp | 0
oparentclassbrowser | .NULL.
Osource | .NULL.
ShowTips | .T.
Primero | -1
Ancho | 462

Vea también

Examinar clases con el Examinador de clases | Botones del Examinador de clases | Métodos del Examinador de clases | Miembros objeto del Examinador de clases | Propiedades del Examinador de clases | Ventana Examinador de clases | Personalizar el Examinador de clases


Class (Propiedad)

Devuelve el nombre de la clase en la que se basa un objeto. Es de sólo lectura en tiempo de diseño y en tiempo de ejecución.

Object.Class

Observaciones

En el Diseñador de clases, la propiedad Class devuelve el nombre actual de la clase.

Vea también

AddObject (Método) | BaseClass (Propiedad)

Se aplica a: CheckBox (Control) | Collection (Clase) | Column | ComboBox (Control) | CommandButton (Control) | CommandGroup (Control) | Container (Objeto) | Control (Objeto) | CursorAdapter (Clase) | Custom (Objeto) | EditBox (Control) | Exception (Clase) | Form (Objeto) | FormSet (Objeto) | Grid (Control) | Header (Objeto) | Image (Control) | Label (Control) | Line (Control) | ListBox (Control) | OLE Bound (Control) | OLE Container (Control) | OptionButton (Control) | OptionGroup (Control) | Page (Objeto) | PageFrame (Control) | ProjectHook (Objeto) | Session (Objeto) | Shape (Control) | _SCREEN | Spinner (Control) | TextBox (Control) | Timer (Control) | ToolBar (Objeto)


ClassLibrary (Propiedad)

Especifica el nombre de archivo de la biblioteca de clases definida por el usuario que contiene la clase del objeto. Es de sólo lectura en tiempo de diseño y en tiempo de ejecución.

Object.ClassLibrary

Observaciones

Los objetos de la clase de base de Visual FoxPro están integrados en el producto y no tienen configuración para ClassLibrary.

Vea también

BaseClass (Propiedad) | Class (Propiedad)

Se aplica a: CheckBox (Control) | Collection (Clase) | Column (Objeto) | ComboBox (Control) | CommandButton (Control) | CommandGroup (Control) | Container (Objeto) | Control (Objeto) | Custom (Objeto) | CursorAdapter (Clase) | EditBox (Control) | Exception (Clase) | Form (Objeto) | FormSet (Objeto) | Grid (Control) | Header (Objeto) | Image (Control) | Label (Control) | Line (Control) | ListBox (Control) | OLE Bound (Control) | OLE Container (Control) | OptionButton (Control) | OptionGroup (Control) | Page (Objeto) | PageFrame (Control) | ProjectHook (Objeto) | _SCREEN | Session (Objeto) | Shape (Control) | Spinner (Control) | TextBox (Control) | Timer (Control) | ToolBar (Objeto)


ClipControls (Propiedad)

Determina si los métodos gráficos de los eventos Paint vuelven a pintar todo el objeto o sólo las áreas que se acaban de exponer. También determina si el entorno operativo gráfico crea una región de recorte que excluye los controles no gráficos que contiene el objeto. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.ClipControls[ = lExpr]

Valores de la propiedad

lExpr
Las configuraciones posibles de la propiedad ClipControls son:
Valor | Descripción
Verdadero (.T.) | (Valor predeterminado) Los métodos gráficos de los eventos Paint vuelven a pintar todo el objeto. Se crea una región de recorte alrededor de los controles no gráficos de un formulario antes del evento Paint.
Falso (.F.) | Los métodos gráficos de los eventos Paint sólo vuelven a pintar las áreas que se acaban de exponer. No se crea una región de recorte alrededor de los controles no gráficos.

Vea también

Paint (Evento) | DataToClip (Método) | _CLIPTEXT (Variable del sistema)

Se aplica a: Form (Objeto) | _SCREEN


Closable (Propiedad)

Especifica si puede cerrarse el formulario al hacer doble clic en el icono del menú desplegable de la ventana, al elegir Cerrar en el menú desplegable de la ventana o al hacer clic el botón Cerrar. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.Closable[ = lExpr]

Valores de la propiedad

lExpr
Las configuraciones posibles de la propiedad Closable son:
Valor | Descripción
Verdadero (.T.) | (Valor predeterminado) Se agrega el elemento Cerrar al menú desplegable de la ventana.
Falso (.F.) | No se puede cerrar el formulario mediante doble clic en el icono del menú desplegable de la ventana y se quita el elemento Cerrar del menú desplegable de la ventana.

Ejemplo

El ejemplo siguiente muestra cómo se establece la propiedad Closable para impedir que se cierre un formulario si utiliza el menú desplegable de la ventana o el botón Cerrar. La propiedad Closable del formulario se establece en el valor falso (.F.), lo que impide que se cierre el formulario mediante el menú Control. Si la propiedad Closable del formulario se establece en el valor verdadero (.T.) y el formulario se cierra al usar el menú desplegable de la ventana, deberá ejecutar CLEAR EVENTS para detener el procesamiento de eventos y salir del programa.

frmMyForm = CREATEOBJECT('Form')  && Create a Form
frmMyForm.Closable = .F.  && Disable the window pop-up menu
&& and Close button
frmMyForm.AddObject('shpLine','Line')  && Add a Line control to the form
frmMyForm.AddObject('cmdCmndBtn1','cmdMyCmndBtn1')  && Up Cmnd button
frmMyForm.AddObject('cmdCmndBtn2','cmdMyCmndBtn2')  && Down Cmnd button
frmMyForm.AddObject('cmdCmndBtn3','cmdMyCmndBtn3')  && Quit Cmnd button
frmMyForm.shpLine.Visible = .T.  && Make Line control visible
frmMyForm.shpLine.Top = 20  && Specify Line control row
frmMyForm.shpLine.Left = 125  && Specify Line control column
frmMyForm.cmdCmndBtn1.Visible =.T.  && Up Command button visible
frmMyForm.cmdCmndBtn2.Visible =.T.  && Down" Command button visible
frmMyForm.cmdCmndBtn3.Visible =.T.  && Quit Command button visible
frmMyForm.SHOW  && Display the form
READ EVENTS  && Start event processing
DEFINE CLASS cmdMyCmndBtn1 AS COMMANDBUTTON  && Create Command button
Caption = 'Slant \<Up'  && Caption on the Command button
Left = 50  && Command button column
Top = 100  && Command button row
Height = 25  && Command button height
PROCEDURE Click
ThisForm.shpLine.Visible = .F.  && Hide the Line control
ThisForm.shpLine.LineSlant ='/'  && Slant up
ThisForm.shpLine.Visible = .T.  && Show the Line control
ENDDEFINE
DEFINE CLASS cmdMyCmndBtn2 AS CommandButton  && Create Command button
Caption = 'Slant \<Down'  && Caption on the Command button
Left = 200  && Command button column
Top = 100  && Command button row
Height = 25  && Command button height
PROCEDURE Click
ThisForm.shpLine.Visible = .F.  && Hide the Line control
ThisForm.shpLine.LineSlant ='\'  && Slant down
ThisForm.shpLine.Visible = .T.  && Show the Line control
ENDDEFINE
DEFINE CLASS cmdMyCmndBtn3 AS CommandButton  && Create Command button
Caption = '\<Quit'  && Caption on the Command button
Cancel = .T.  && Default Cancel Command button (Esc)
Left = 125  && Command button column
Top = 150  && Command button row
Height = 25  && Command button height
PROCEDURE Click
CLEAR EVENTS  && Stop event processing, close Form
ENDDEFINE

Vea también

ControlBox (Propiedad) | TitleBar (Propiedad) | DEFINE CLASS | QueryUnload (Evento) | Unload (Evento) | Release (Método) | Destroy (Evento)

Se aplica a: Form (Objeto) | _SCREEN


CLSID (Propiedad)

Contiene el CLSID registrado (Identificador de clase) para un servidor de un proyecto. Es de sólo lectura en tiempo de diseño y en tiempo de ejecución.

Object.CLSID

Observaciones

Se crea un CLSID en el registro de Windows para un servidor cuando se genera un archivo ejecutable (.exe) o una biblioteca de vínculos dinámicos (.dll) a partir de un proyecto.

Ejemplo

El ejemplo siguiente muestra un uso de la propiedad CLSID después de la creación de un servidor COM (.dll).

* In a program("Testclass.prg"), create a class
DEFINE CLASS myclass AS SESSION OLEPUBLIC
ENDDEFINE
...

En un proyecto, incluya el archivo .prg en una generación de .dll o MTDLL. Las propiedades del objeto servidor estarán disponibles para el acceso por código. Por ejemplo, en la ventana Comandos, escriba lo siguiente:

MyServer = _VFP.ActiveProject.Servers("myclass")
? "Class ID is ", MyServer.CLSID      && Class ID is {620E56FE-F7F8-4E99-B767-CB08009261F0}
&& a GUID
? "Description is ", MyServer.Description    && testclass.myclass

Vea también

CREATEOBJECTEX( ) | ProgID (Propiedad) | TypeLibCLSID (Propiedad) | TypeLibDesc (Propiedad) | TypeLibName (Propiedad)

Se aplica a: Server (Objeto)


CodePage (Propiedad)

Contiene la página de códigos de un archivo de un proyecto. Es de sólo lectura en tiempo de diseño y en tiempo de ejecución.

Object.CodePage

Observaciones

La página de códigos es un valor numérico que indica el juego de caracteres utilizado en el archivo. Las tablas de códigos suelen corresponder a distintas plataformas e idiomas, y se usan en aplicaciones internacionales.

Ejemplo

Este ejemplo cuenta cuántos archivos de proyectos están utilizando el código de página 1252 (ANSI Windows).

nCode1252=0
MODIFY PROJECT myproject NOWAIT
FOR i = 1 TO _VFP.ActiveProject.Files.Count
IF  _VFP.ActiveProject.Files(i).CodePage = 1252
bCode1252=nCode1252+1
ENDIF
ENDFOR
?nCode1252    && Muestra el resultado en la pantalla de Visual FoxPro.

Vea también

CPCONVERT( ) (Función) | CPCURRENT( ) (Función) | CPDBF( ) (Función)

Se aplica a: File (Objeto)


ColorScheme (Propiedad)

Se incluye por compatibilidad con versiones anteriores. Utilice las propiedades BackColor y ForeColor en su lugar.


ColorSource (Propiedad)

Determina como se establecen los colores de un control. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.ColorSource[ = nSource]

Valores de la propiedad

nSource
Los valores posibles para nSource son:
Valor | Descripción
0 Propiedades de color del objeto. El control utiliza su configuración de propiedades de color (ForeColor, BackColor, etc.). Esta configuración está disponible para los siguientes controles y objetos:

CheckBox, ComboBox, CommandButton, CommandGroup, Container, Control, EditBox, Form, Image, Label, Line, ListBox, OptionButton, OptionGroup, Page, PageFrame, Shape, Spinner, TextBox y Toolbar.
1 Esquema de colores del formulario. El control utiliza el esquema de colores del formulario donde se encuentra. Esta configuración está disponible para los siguientes controles y objetos:

CheckBox, ComboBox, CommandButton, EditBox, Label, ListBox, OptionButton, Shape, Spinner y TextBox.
2 Esquema de la propiedad ColorScheme. El control utiliza el esquema de colores especificado en su propiedad ColorScheme. Esta configuración está disponible para los siguientes controles y objetos:

CheckBox, ComboBox, CommandButton, EditBox, Label, ListBox, OptionButton, Shape, Spinner y TextBox.
3 Esquema predeterminado. El control utiliza su esquema de colores predeterminado. Para la mayoría de los controles, el esquema de colores predeterminado es el del formulario; para los controles EditBox y ListBox, el esquema de colores predeterminado es el 2, Menús de usuario. Esta configuración está disponible para los siguientes controles y objetos:

CheckBox, ComboBox, CommandButton, EditBox, Label, ListBox, OptionButton, Shape, Spinner y TextBox.
4 Panel de control de Windows (colores 3D) (valor predeterminado). El control utiliza los valores de color 3D especificados en el Panel de control de Windows. Esta configuración está disponible para los siguientes controles y objetos:

CheckBox, ComboBox, CommandButton, CommandGroup, Container, Control, EditBox, Form, Image, Label, Line, ListBox, OptionButton, OptionGroup, Page, PageFrame, Shape, Spinner, TextBox y Toolbar.
5 | Panel de control de Windows (colores de Windows). El control utiliza los valores de color especificados en el Panel de control de Windows. Esta configuración sólo está disponible para los objetos Form.

Observaciones

El hecho de establecer una propiedad de color (ForeColor, BackColor, SelectedForeColor, etc) para un objeto sobrescribe el valor de la propiedad ColorSource Si no se establece una propiedad de color para un objeto, los colores de objetos se determinan mediante el valor de la propiedad ColorSource.

Vea también

ColorScheme (Propiedad)

Se aplica a: CheckBox (Control) | ComboBox (Control) | CommandButton (Control) | CommandGroup (Control) | Container (Objeto) | Control (Objeto) | EditBox (Control) | Form (Objeto) | Image (Control) | Label (Control) | Line (Control) | ListBox (Control) | OptionButton (Control) | OptionGroup (Control) | Page (Objeto) | PageFrame (Control) | Shape (Control) | Spinner (Control) | TextBox (Control) | ToolBar (Objeto)


ColumnCount (Propiedad)

Especifica el número de objetos Column en un control cuadrícula, ComboBox o ListBox. En el caso de una cuadrícula, está disponible en tiempo de diseño y es de lectura y escritura en tiempo de ejecución. Para un cuadro combinado o un cuadro de lista, está disponible en tiempo de diseño y en tiempo de ejecución.

Object.ColumnCount[ = nCol]

Valores de la propiedad

nCol
Para un control cuadrícula, especifica el número de columnas que se van a mostrar. El valor predeterminado es -1, lo que especifica que el control cuadrícula debería contener columnas suficientes para incluir todos los campos del origen de registros de la cuadrícula. El máximo número de columnas es 255. Si crea un número específico de columnas al establecer nCol en un valor positivo, especifique los datos que se van a mostrar en una columna específica mediante la propiedad ControlSource para esa columna. (Si no se especifica ControlSource para una columna, el control cuadrícula mostrará el siguiente campo no mostrado disponible del origen de registros de la cuadrícula.)

Para un control ComboBox o ListBox, nCol especifica el número de columnas que contiene el control. Si establece ColumnCount con 0, se mostrará la primera columna basada en la propiedad RowSource o en los elementos agregados con el método AddItem.

Observaciones

Para una cuadrícula, utilice el método AddColumn para aumentar el número de columnas.

Vea también

AddColumn (Método) | ColumnOrder (Propiedad) | Order (Propiedad)

Se aplica a: ComboBox (Control) | Grid (Control) | ListBox (Control)


ColumnLines (Propiedad)

Muestra u oculta las líneas que hay entre las columnas. Está disponible en tiempo de diseño y en tiempo de ejecución.

Control.ColumnLines[ = lExpr]

Valores de la propiedad

lExpr
Especifica si se muestran las líneas de separación de columnas. Las configuraciones posibles de la propiedad ColumnLines son:
Valor | Descripción
Verdadero (.T.) | (Valor predeterminado) Las líneas que hay entre las columnas son visibles.
Falso (.F.) | Las líneas que hay entre las columnas se ocultan.

Vea también

ColumnWidths (Propiedad) | ColumnOrder (Propiedad) | Columns (Propiedad)

Se aplica a: ComboBox (Control) | ListBox (Control)


ColumnOrder (Propiedad)

Especifica el orden relativo de objetos Column en un control cuadrícula. Está disponible en tiempo de diseño y en tiempo de ejecución.

Column.ColumnOrder[ = nExpr]

Valores de la propiedad

nExpr
Especifica el orden de una columna en relación con otras columnas de la cuadrícula.

Observaciones

Si un control cuadrícula contiene cinco columnas y desea que la tercera aparezca en último lugar, establezca en 5 la propiedad ColumnOrder de la tercera columna. El valor de ColumnOrder para la cuarta columna pasa a ser 3, el valor de ColumnOrder para la quinta columna pasa a ser 4, etc.

Nota No es necesario que los valores de ColumnOrder sean secuenciales. Puede haber huecos. Por ejemplo, si un control cuadrícula contiene tres columnas, puede agregar una cuarta y establecer en 10 su propiedad ColumnOrder.

Vea también

Activate (Evento) | Deactivate (Evento) | ZOrder (Método) | ColumnCount (Propiedad) | ColumnLines (Propiedad) | ColumnWidths (Propiedad)

Se aplica a: Column (Objeto)


Columns (Propiedad)

Una matriz para tener acceso a objetos Column individuales del control cuadrícula por número de columna. Está disponible en tiempo de diseño y es de sólo lectura en tiempo de ejecución.

Grid.Columns(nCol).Property [ = Setting]

Valores de la propiedad

nCol
Especifica la columna del control cuadrícula a cuya propiedad se hace referencia. El objeto Column más a la izquierda es el número 1.
Property
Especifica la propiedad de la columna a la que se tiene acceso.
Setting
Especifica el valor de la nueva propiedad para todas las celdas especificadas con nCol.

Observaciones

Utilice la propiedad Columns para acceder a las propiedades de una columna particular en un control cuadrícula. Por ejemplo, SpecialGrid.Column(1).BackColor = RGB(255,0,0) cambia la propiedad BackColor de todas las celdas en la columna 1 a rojo brillante.

Vea también

Column (Objeto) | ColumnCount (Propiedad) | SetAll (Método)

Se aplica a: Grid (Control)


ColumnWidths (Propiedad)

Especifica el ancho de las columnas de un control ComboBox o ListBox. Está disponible en tiempo de diseño y en tiempo de ejecución.

Control.ColumnWidths[ = "cCol1Width, cCol2Width, ... cColnWidth"]

Valores de la propiedad

"cColWidth1, cColWidth2, ... cColWidthn"
Especifica el ancho de una columna o conjunto de columnas del control ComboBox o ListBox. Por ejemplo, cColumnWidths = "5, 7, 9" especifica que la primera columna tiene un ancho de 5 unidades, la segunda columna, de 7 unidades y la tercera, de 9, en la unidad de medida especificada por la propiedad ScaleMode del formulario. Utilice comas para separar cada número de ancho. Puede especificar el número de columnas con la propiedad ColumnCount.

Vea también

ColumnCount (Propiedad) | ScaleMode (Propiedad) | Width (Propiedad) | ColumnLines (Propiedad)

Se aplica a: ComboBox (Control) | ListBox (Control)


Comment (Propiedad)

Almacena información acerca de un objeto. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.Comment[ = cTextString]

Valores de la propiedad

cTextString
Especifica una cadena de texto.

Observaciones

A diferencia de otras propiedades, Visual FoxPro no utiliza el valor de la propiedad Comment; esta propiedad puede emplearse para identificar o describir objetos.

Puede utilizar esta propiedad para asignar una cadena de identificación a un objeto sin que se vea afectado ninguno de los otros valores de la propiedad. La propiedad Comment es útil para comprobar la identidad de un control o un Formulario que se pasa como variable a un procedimiento.

De forma predeterminada, la propiedad Comment se establece como una cadena de longitud cero ("").

Sugerencia Cuando cree una nueva instancia de un formulario, asigne un valor único a la propiedad Comment.

Vea también

Caption (Propiedad) | Name (Propiedad)

Se aplica a: CheckBox (Control) | Collection (Clase) | ComboBox (Control) | CommandButton (Control) | CommandGroup (Control) | Container (Objeto) | Control (Objeto) | CursorAdapter (Clase) | Custom (Objeto) | EditBox (Control) | Exception (Clase) | Form (Objeto) | FormSet (Objeto) | Grid (Control) | Image (Control) | Label (Control) | Line (Control) | ListBox (Control) | OLE Bound (Control) | OLE Container (Control) | OptionButton (Control) | OptionGroup (Control) | Page (Objeto) | PageFrame (Control) | ProjectHook (Objeto) | _SCREEN | Session (Objeto) | Shape (Control) | Spinner (Control) | TextBox (Control) | Timer (Control) | ToolBar (Objeto)


CompareMemo (Propiedad)

Especifica si los campos de tipo Memo, General o Picture se incluyen en la cláusula WHERE cuando se realiza la actualización automática. Cuando trabaje con esta propiedad para cursores normales, utilice las funciones CURSORSETPROP( ) y CURSORGETPROP( ). De lectura/escritura.

Nota Cuando CompareMemo, está establecida en un objeto CursorAdapter, se sobrescribe el valor de la propiedad del cursor, cuando se realiza el enlace al objeto CursorAdapter. De tal manera, que cambiar la configuración del cursor usando CURSORSETPROP( ) no tiene efecto.
CursorAdapter.CompareMemo [= lValue]

Valores de la propiedad

lValue
Tipo de dato lógico. En la siguiente tabla se listan los valores para lValue.
lValue | Descripción
Verdadero (.T.) | Incluye campos memo en la cláusula WHERE.
Falso (.F.) | No incluye campos memo en la cláusula WHERE.

Vea también

Propiedades | CursorAdapter (Objeto: propiedades, métodos y eventos) | CURSORGETPROP( ) (Función) | CURSORSETPROP( ) (Función)

Se aplica a: CursorAdapter (Clase)


ContinuousScroll (Propiedad)

Especifica si el desplazamiento en un formulario es continuo o se produce sólo cuando se libera el cuadro de desplazamiento. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.ContinuousScroll[ = lExpression]

Valores de la propiedad

lExpression
Los valores de lExpression son:
Valor | Descripción
Verdadero (.T.) | (Predeterminado) El desplazamiento es continuo en el formulario. El formulario se desplaza de forma continua a medida que se mueven los cuadros de desplazamiento. El evento Scrolled ocurre continuamente a medida que se desplaza el formulario.
Falso (.F.) | Sólo se produce un desplazamiento cuando se libera el cuadro de desplazamiento. El formulario no se mueve hasta que se libera un cuadro de desplazamiento y entonces vuelve a dibujarse en su nueva posición. El evento Scrolled ocurre después de que se vuelva a dibujar el formulario.

Observaciones

La propiedad Scrollbars determina si un formulario tiene barras de desplazamiento.

Vea también

ScrollBars (Propiedad) | Scrolled (Evento) | HScrollSmallChange (Propiedad)

Se aplica a: Form (Objeto)


ControlBox (Propiedad)

Especifica si aparece un icono de menú desplegable en el ángulo superior izquierdo de un formulario o una barra de herramientas en tiempo de ejecución. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.ControlBox[ = lExpr]

Valores de la propiedad

lExpr
Las configuraciones posibles de la propiedad ControlBox son:
Valor | Descripción
Verdadero (.T.) | (Valor predeterminado) Muestra un icono de menú desplegable.
Falso (.F.) | No muestra un icono de menú desplegable.

Observaciones

Los formularios y las barras de herramientas modales y no modales pueden incluir un icono de menú desplegable. Los comandos de menú disponibles en tiempo de ejecución dependen de los valores de las propiedades relacionadas. Por ejemplo, al establecer MaxButton y MinButton como Falso (.F.) se desactivan los comandos Maximizar y Minimizar del menú desplegable, pero los comandos de menú Mover y Cerrar permanecen disponibles.

Nota Los valores que especifica para ControlBox, BorderStyle, MaxButton y MinButton no se reflejan en la apariencia del formulario hasta el tiempo de ejecución.

Vea también

BorderStyle (Propiedad) | Closable (Propiedad) | MaxButton (Propiedad) | MinButton (Propiedad)

Se aplica a: Form (Objeto) | _SCREEN | ToolBar (Objeto)


ControlCount (Propiedad)

Especifica el número de controles de un objeto contenedor. No está disponible en tiempo de diseño; es de sólo lectura en tiempo de ejecución.

Object.ControlCount

Observaciones

Puede utilizar esta propiedad para recorrer todos los controles de un contenedor y ejecutar una operación en cada uno.

Vea también

Controls (Propiedad)

Se aplica a: Column (Objeto) | Container (Objeto) | Control (Objeto) | Form (Objeto) | Page (Objeto) | _SCREEN | ToolBar (Objeto)


Controls (Propiedad)

Una matriz para tener acceso a los controles de un objeto contenedor. Está disponible en tiempo de ejecución.

ContainerObject.Controls(Index).Property[ = Expr]

Valores de la propiedad

Expr
Especifica el valor de una propiedad de uno de los controles contenidos en ContainerObject.

Observaciones

Utilice la propiedad Controls para tener acceso a las propiedades de los objetos contenidos.

Vea también

ControlCount (Propiedad)

Se aplica a: Column (Objeto) | Container (Objeto) | Control (Objeto) | Form (Objeto) | Page (Objeto) | _SCREEN | ToolBar (Objeto)


ControlSource (Propiedad)

Especifica el origen de datos al que está enlazado el objeto. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.ControlSource[ = cName]

Valores de la propiedad

cName
Para controles, cName es una variable o un campo.

Observaciones

Una vez se ha establecido la propiedad ControlSource como un campo o una variable, la propiedad Value siempre tiene el mismo valor de datos y el mismo tipo de datos que la variable o el campo en el que está establecida la propiedad ControlSource.

Para los controles TextBox, cName suele ser un campo.

En un control cuadrícula, si no especifica un valor ControlSource para una columna, la columna mostrará el siguiente campo no mostrado disponible del origen de registros de la cuadrícula.

Si se asigna el valor verdadero (.T.) a una propiedad Bound de un objeto Column, el valor de la propiedad ControlSource del objeto Column se aplicará a la columna y los controles que contenga. Si intenta establecer la propiedad ControlSource del control contenido, se producirá un error. Si establece como falso (.F.) la propiedad Bound de un objeto Column, podrá establecer directamente la propiedad ControlSource de un control contenido. Si, posteriormente, establece el valor ControlSource del objeto Column, anulará el valor de ControlSource del control contenido.

Vea también

Bound (Propiedad) | Order (Propiedad) | RecordSourceType (Propiedad) | Value (Propiedad)

Se aplica a: CheckBox (Control) | Column (Objeto) | ComboBox (Control) | CommandGroup (Control) | EditBox (Control) | ListBox (Control) | OLE Bound (Control) | OptionButton (Control) | OptionGroup (Control) | Spinner (Control) | TextBox (Control)


ConversionFunc (Propiedad)

Especifica una lista delimitada por comas, de parejas de nombres de campo y función separados por un espacio. De lectura/escritura en tiempo de diseño y en tiempo de ejecución.

Nota ConversionFunc sólo se aplica cuando utiliza actualización automática. ConversionFunc no se evalúa en tiempo de diseño.

Utilice ConversionFunc para especificar funciones de conversión nativas de Visual FoxPro o personalizadas, que se aplican a uno o más campos del cursor antes de enviarlos al origen de datos a través de una operación actualizar, insertar o borrar. Los valores actuales enviados al origen de datos son los valores devueltos por la función asociada a cada campo.

CursorAdapter.ConversionFunc [ = 'cFieldName1 cFuncName1 [, cFieldName2 cFuncName2 ]...' ]

Valores de la propiedad

cFieldName
Especifica el nombre de campo.
cFuncName
Especifica un nombre de función que acepta un valor campo como el primer parámetro. La función o método especificado debe aceptar el nombre de campo asociado como único parámetro.
Nota No incluya paréntesis al final del nombre de la función o método.

Observaciones

Si el cursor local contiene campos de caracteres, que se usan como parte de la cláusula WHERE para un comando actualizar generado automáticamente, el origen de datos podría requerir que se quiten los espacios sobrantes, para obtener una coincidencia apropiada en el origen de datos. El siguiente ejemplo ilustra cómo quitar tales espacios:

CursorAdapter.ConversionFunc = "companyname TRIM, contactname TRIM"

Vea también

Propiedades | CursorAdapter (Objeto: propiedades, métodos y eventos)

Se aplica a: CursorAdapter (Clase)


Count (Propiedad)

Contiene una cuenta del número de elementos en una colección, por ejemplo, objetos de proyecto, archivo o servidor de una colección de proyectos, archivos o servidores. Es de sólo lectura en tiempo de diseño y en tiempo de ejecución.

Object.Count

Valores de la propiedadd

Numérico

Observaciones

Para una colección de proyectos, la propiedad Count contiene cero si no hay ninguna instancia del Administrador de proyectos. Para una colección de archivos o servidores, la propiedad Count contiene cero si no hay ningún archivo o servidor en la colección de archivos o servidores.

Puede utilizar la propiedad Count para acceder al número de elementos de una colección. Sin embargo, no puede cambiar Count manualmente, excepto usando los métodos Add y Remove de la colección. Los objetos Collection proporcionan sus propios métodos Add y Remove.

Usted debe usar Count para determinar el número de elementos en una colección cuando recorra los elementos de la colección usando FOR…ENDFOR o se refiera a elementos individuales con el método Item .

Count admite el método Access. Desde que Count es de sólo lectura, este no admite el método Assign.

Vea también

Método Item (objeto File) | Método Add (objeto File) | Método Remove (Objeto File) | Método Item (Clase Collection) | Método Add (Clase Collection) | Método Remove (Clase Collection) | FOR ... ENDFOR (Comando) | Métodos Access y Assign

Se aplica a: Files (Colección) | Projects (Colección) | Servers (Colección) | Collection (Clase)


CurrentControl (Propiedad)

Especifica qué control contenido en un objeto Column se utiliza para mostrar los valores de la celda activa. Disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

Column.CurrentControl[ = cName]

Valores de la propiedad

cName
Especifica el nombre del control que muestra y acepta datos para la celda activa en un objeto Column.

Observaciones

El control predeterminado es un TextBox que tiene Text1 como propiedad Name. Utilice el método AddObject para agregar otros controles.

Si la propiedad Sparse de un objeto Column está establecida con el valor verdadero (.T.), sólo la celda activa de la columna utilizará el objeto especificado en la propiedad CurrentControl; las otras celdas mostrarán datos mediante un control TextBox. Si la propiedad Sparse se establece con el valor falso (.F.), todas las celdas del objeto Column utilizarán la propiedad CurrentControl para mostrar datos.

Nota Puede agregar un número ilimitado de controles a un objeto Column si utiliza el método AddObject . Sin embargo, sólo puede establecer la propiedad CurrentControl para un control en cada momento.

Vea también

AddObject (Método) | Bound (Propiedad) | RemoveObject (Método) | Sparse (Propiedad)

Se aplica a: Column (Objeto)


CurrentX, CurrentY (Propiedades)

Especifica las coordenadas horizontal (X) y vertical (Y) del siguiente método de dibujo. No está disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

Object.CurrentX[ = nXCoord] Object.CurrentY[ = nYCoord]

Valores de la propiedad

nXCoord
Especifica la coordenada horizontal del formulario, en la unidad de medida especificada por la propiedad ScaleMode del formulario.
nYCoord
Especifica la coordenada vertical del formulario, en la unidad de medida especificada por la propiedad ScaleMode del formulario.

Observaciones

Las coordenadas se miden desde la esquina superior izquierda de un objeto. CurrentX es 0 en el extremo izquierdo de un objeto y CurrentY es 0 en su extremo superior. Las coordenadas se expresan en fóxeles o en la unidad de medida actual definida por la propiedad ScaleMode.

Cuando utiliza los siguientes métodos gráficos, los valores de CurrentX y CurrentY cambian como se indica.

Método | Establece CurrentX, CurrentY como
Box | El punto final del cuadro especificado por los dos últimos argumentos.
Circle | El centro del objeto.
Cls | 0, 0.
Line | El punto final de la línea.
Print | La siguiente posición de impresión.
Pset | El punto dibujado.

Vea también

Box (Método) | Circle (Método) | Cls (Método) | DrawMode (Propiedad) | DrawStyle (Propiedad) | Left (Propiedad) | Line (Método) | PSet (Método) | ScaleMode (Propiedad) | SYS(1270) - Ubicación de objetos | Top (Propiedad)

Se aplica a: Form (Objeto) | _SCREEN


CursorSchema (Propiedad)

Especifica la estructura del cursor asociado con un objeto CursorAdapter. De lectura/escritura en tiempo de diseño y en tiempo de ejecución.

CursorSchema es esencialmente la porción "entre los paréntesis" de los comandos SQL CREATE TABLE y CREATE CURSOR. Puede usar CursorSchema para definir un origen de datos XML. Visual FoxPro usa CursorSchema en tiempo de diseño para determinar la estructura del cursor a colocar en el área del Diseñador de entorno de datos. Visual FoxPro utiliza CursorSchema en tiempo de ejecución si se especifica por el método CursorFill.

Nota Debe asegurarse que CursorSchema coincida y mapee a las columnas del origen de datos en una manera aceptable.
CursorAdapter.CursorSchema [ = cList ]

Valores de la Propiedad

cList
Tipo de dato carácter. El parámetro cList especifica una cadena de caracteres o expresión que se evalúe como una lista válida, delimitada por comas, de nombres y tipos de campos.

Por ejemplo:

CursorAdapter.CursorSchema = ;
"col1 I, col2 c(25), col3 M, col4 Y, col5 n(12,3)"

Si CursorSchema está vacío o se establece a nulo (.NULL.), Visual FoxPro utiliza el origen de datos del objeto CursorAdapter para determinar la estructura del cursor.

Observaciones

Cuando el parámetro lUseCursorSchema en el método CursorFill se evalúa a Verdadero (.T.) o cuando agregue un cursor basado en un CursorAdapter al área del Diseñador Entorno de Datos, el objeto CursorAdapter utiliza CursorSchema como una plantilla par el cursor creado por CursorFill.

Vea también

Propiedades | CursorAdapter (Objeto: propiedades, métodos y eventos) | CursorFill (Método)

Se aplica a: CursorAdapter (Clase)


CursorSource (Propiedad)

Especifica el nombre de la tabla o la vista asociada con un objeto Cursor. Es de sólo lectura en tiempo de diseño, y de lectura y escritura en tiempo de ejecución.

DataEnvironment.Cursor.CursorSource[ = cText]

Valores de la propiedad

cText
Para vistas, especifica el nombre de la vista de una base de datos. Para tablas de una base de datos, especifica el nombre largo de la tabla. Para tablas libres, especifica la ruta de acceso completa a la tabla libre.

Vea también

Database (Propiedad) | CURSORGETPROP( ) | CURSORSETPROP( ) (Función)

Se aplica a: Cursor (Objeto)


CursorStatus (Propiedad)

Especifica si se asocia el objeto CursorAdapter representado por la propiedad Alias de CursorAdapter y cómo se asocia. Visual FoxPro necesita CursorStatus para determinar el estado del objeto CursorAdapter actual y dónde se originó el cursor asociado. De sólo lectura.

CursorAdapter.CursorStatus [ = nValue ]

Valores de la Propiedad

nValue
Tipo de dato numérico. En la siguiente tabla se listan los posibles valores para nValue.
nValue | Descripción
0 | CursorAdapter <Alias> no se asocia. (Predeterminado)
1 | CursorAdapter <Alias> se asocia vía el método CursorFill.
2 | CursorAdapter <Alias> se asocia vía el método CursorAttach.

Vea también

Propiedades | CursorAdapter (Objeto: propiedades, métodos y eventos) | Alias (Propiedad) | CursorFill (Método) | CursorAttach (Método)

Se aplica a: CursorAdapter (Clase)


Curvature (Propiedad)

Especifica la curvatura de las esquinas de un control Shape. Está disponible en tiempo de diseño y en tiempo de ejecución.

Shape.Curvature[ = nCurve]

Valores de la propiedad

nCurve
Las configuraciones posibles de la propiedad Curvature son:
Valor | Descripción
0 | Especifica sin curvatura y crea esquinas cuadradas.
1 a 98 | Especifica esquinas redondeadas progresivamente. Al incrementar el número aumenta la curvatura.
99 | Especifica la curvatura máxima y crea un círculo o una elipse.

Ejemplo

El siguiente ejemplo muestra un posible uso de la propiedad Curvature con el control Shape para mostrar un círculo, una elipse o un cuadrado en un formulario.

Se crea un formulario y se incluyen varios botones de opción y un botón de comando. Al hacer clic en uno de los botones de opción se muestra la forma correspondiente en el formulario. Las propiedades Height, Width y Curvature de cada forma determinan el tipo de forma que se crea (círculo, elipse o cuadrado). La propiedad Curvature se establece en 99 para crear el círculo y la elipse.

frmMyForm = CREATEOBJECT('Form')  && Create a Form
frmMyForm.Closable = .F.  && Disable the Control menu box
frmMyForm.AddObject('cmdCommand1','cmdMyCmndBtn')  && Add Command button
frmMyForm.AddObject('opgOptionGroup1','opgMyOptGrp') && Add Option Group
frmMyForm.AddObject('shpCircle1','shpMyCircle')  && Add Circle Shape
frmMyForm.AddObject('shpEllipse1','shpMyEllipse')  && Add Ellipse Shape
frmMyForm.AddObject('shpSquare','shpMySquare')  && Add Box Shape
frmMyForm.cmdCommand1.Visible =.T.  && "Quit" Command button visible
frmMyForm.opgOptionGroup1.Buttons(1).Caption = "\<Circle"
frmMyForm.opgOptionGroup1.Buttons(2).Caption = "\<Ellipse"
frmMyForm.opgOptionGroup1.Buttons(3).Caption = "\<Square"
frmMyForm.opgOptionGroup1.SetAll("Width", 100) && Set Option group width
frmMyForm.opgOptionGroup1.Visible = .T.  && Option Group visible
frmMyForm.opgOptionGroup1.Click  && Show the circle
frmMyForm.SHOW  && Display the form
READ EVENTS  && Start event processing
DEFINE CLASS opgMyOptGrp AS OptionGroup  && Create an Option Group
ButtonCount = 3  && Three Option buttons
Top = 10
Left = 10
Height = 75
Width = 100
PROCEDURE Click
ThisForm.shpCircle1.Visible = .F.  && Hide the circle
ThisForm.shpEllipse1.Visible = .F.  && Hide the ellipse
ThisForm.shpSquare.Visible = .F.  && Hide the square
DO CASE
CASE ThisForm.opgOptionGroup1.Value = 1
ThisForm.shpCircle1.Visible = .T. && Show the circle
CASE ThisForm.opgOptionGroup1.Value = 2
ThisForm.shpEllipse1.Visible = .T.  && Show the ellipse
CASE ThisForm.opgOptionGroup1.Value = 3
ThisForm.shpSquare.Visible = .T.  && Show the square
ENDCASE
ENDDEFINE
DEFINE CLASS cmdMyCmndBtn AS CommandButton  && Create Command button
Caption = '\<Quit'  && Caption on the Command button
Cancel = .T.  && Default Cancel Command button (Esc)
Left = 125  && Command button column
Top = 210  && Command button row
Height = 25  && Command button height
PROCEDURE Click
CLEAR EVENTS  && Stop event processing, close Form
ENDDEFINE
DEFINE CLASS shpMyCircle AS SHAPE  && Create a circle
Top = 10
Left = 200
Width = 100
Height = 100
Curvature = 99
BackColor = RGB(255,0,0)  && Red
ENDDEFINE
DEFINE CLASS shpMyEllipse AS SHAPE  && Create an ellipse
Top = 35
Left = 200
Width = 100
Height = 50
Curvature = 99
BackColor = RGB(0,128,0)  && Green
ENDDEFINE
DEFINE CLASS shpMySquare AS SHAPE  && Create a square
Top = 10
Left = 200
Width = 100
Height = 100
Curvature = 0
BackColor = RGB(0,0,255)  && Blue
ENDDEFINE

Vea también

DEFINE CLASS (Comando) | DO CASE ... ENDCASE (Comando) | Shape (Control: propiedades, métodos y eventos)

Se aplica a: Shape (Control)


Database (Propiedad)

Especifica la ruta de acceso a la base de datos que contiene la tabla o la vista asociada con el objeto Cursor o CursorAdapter. Es de sólo lectura en tiempo de diseño y de lectura y escritura en tiempo de ejecución.

Nota Al acceder a un cursor regular mediante la función CURSORSETPROP() la propiedad Database es de sólo lectura en tiempo de ejecución.
DataEnvironment.Cursor.Database [ = cPath ]

Valores de la propiedad

cPath
Especifica la ruta de acceso completa al archivo de base de datos (.dbc).

Observaciones

Si el cursor esta basado en una tabla libre, Database contiene una cadena vacía ("").

Vea también

CursorSource (Propiedad) | CURSORSETPROP() (Función) | Manipulación de bases de datos

Se aplica a: Cursor (Objeto)


DataEnvironment (Propiedad)

Ofrece una referencia al entorno de datos del objeto. Es de sólo lectura en tiempo de diseño y en tiempo de ejecución.

Object.DataEnvironment

Vea también

DataEnvironment (Objeto) | DataEnvironment (Objeto: propiedades, métodos y eventos)

Se aplica a: Form (Objeto) | FormSet


DataSession (Propiedad)

Especifica si un objeto puede ejecutarse en su propia sesión de datos con un entorno de datos único. Está disponible en tiempo de diseño; es de sólo lectura en tiempo de ejecución.

Object.DataSession[ = nSession]

Valores de la propiedad

nSession
Las configuraciones posibles de la propiedad DataSession son:
Valor | Descripción
1 | (Valor predeterminado) Sesión de datos predeterminada.
2 | Sesión de datos privada. Crea una nueva sesión de datos para cada instancia que se crea.

Vea también

DataSessionID (Propiedad) | SET DATASESSION

Se aplica a: Form (Objeto) | FormSet (Objeto) | _SCREEN | Session (Objeto) | ToolBar (Objeto)


DataSessionID (Propiedad)

Devuelve el Id. de sesión de datos que identifica la sesión de datos privada para el objeto. Es de sólo lectura en tiempo de diseño, y de lectura y escritura en tiempo de ejecución.

Si la propiedad DataSession del objeto se establece en 1 (sesión de datos predeterminada), devuelve el identificador de la sesión de datos predeterminada.

Object.DataSessionID

Observaciones

Disponible sólo si la propiedad DataSession del objeto se establece en 2 (sesión de datos privada).

Puede utilizar SET DATASESSION con la propiedad DataSessionID para cambiar sesiones de datos.

Cuando se establece DataSessionID, la configuración afecta a la sesión de datos de trabajo del objeto. La configuración de la propiedad DataSessionID no afecta a objetos creados mediante CREATEOBJECT( ).

Al cambiar la configuración de la propiedad DataSessionID aumentará el contador de referencia de la sesión de datos a la que se ha cambiado y disminuirá el contador de referencia de la sesión de datos desde la que se ha cambiado. No obstante, si para crear una sesión de datos se establece la propiedad DataSession en 2 (sesión de datos privada), al cambiar la configuración de la propiedad DataSessionID no se libera la sesión de datos inicial. En este caso, es necesario liberar el objeto para dejar libre la sesión inicial.

Para obtener más información acerca de las sesiones de datos múltiples, vea Programar para acceso compartido.

Precaución Al cambiar la configuración de la propiedad DataSessionID de un objeto que contiene controles dependientes de datos, los controles perderán sus orígenes de datos originales. En general, utilice DataSessionID con objetos que no contengan controles dependientes de datos.

Vea también

CREATEOBJECT( ) | DataSession (Propiedad) | SET DATASESSION

Se aplica a: Form (Objeto) | FormSet (Objeto) | _SCREEN | Session (Objeto) | ToolBar (Objeto)


DataSource (Propiedad)

Especifica el origen de datos a utilizar para objetos DataEnvironment y CursorAdapter. La propiedad DataSourceType de DataEnvironment o CursorAdapter determina el valor de la propiedad DataSource correspondiente. De lectura/escritura en tiempo de diseño y en tiempo de ejecución.

DataEnvironment.DataSource [= DataSource]

-o-

CursorAdapter.DataSource [= DataSource]

Valores de la propiedad

DataSource
Especifica una referencia a un origen de datos existente de un tipo aceptable. DataSource actúa sólo como un puntero al origen de datos actual, el cual debe existir en tiempo de ejecución.

En la siguiente tabla se listan los valores para DataSource, el cual depende del valor de la propiedad DataSourceType.

DataSource | DataSourceType
Referencia a un objeto válido RecordSet ActiveX Data Object (ADO) | "ADO"
Entero positivo que representa una variable de memoria que a su vez contiene un controlador de conexión Open Database Connectivity (ODBC) válido | "ODBC"
No se tiene en cuenta. | "Nativo", "XML", nulo (.NULL.), o cadena vacía ("")

Observaciones

Cuando DataSourceType de CursorAdapter es "Nativo", no se necesita especificar DataSource de CursorAdapter porque el cursor devuelto por la propiedad SelectCmd de CursorAdapter es el origen de datos predeterminado. El nombre del cursor devuelto se determina por la propiedad Alias de CursorAdapter, la cual se establece por el método CursorFill de CursorAdapter.

Si las propiedades InsertCmdDataSourceType, UpdateCmdDataSourceType, y DeleteCmdDataSourceType de CursorAdapter están vacías, la propiedad DataSource de CursorAdapter sobrescribe las propiedades InsertCmdDataSource, UpdateCmdDataSource, y DeleteCmdDataSource de CursorAdapter.

Si la propiedad UseDeDataSource de CursorAdapter es Verdadero (.T.), las propiedades DataSource y DataSourceType de DataEnvironment sobrescribe las mismas propiedades de CursorAdapter.

Vea también

Propiedades | DataEnvironment (Objeto: propiedades, métodos y eventos) | CursorAdapter (Objeto: propiedades, métodos y eventos) | DEClass (Propiedad) | DataSourceType (Propiedad)

Se aplica a: CursorAdapter (Clase) | DataEnvironment (Objeto)


DataSourceType (Propiedad)

Especifica el tipo del origen de datos en la propiedad DataSource de DataEnvironment o CursorAdapter. La propiedad DataSourceType de DataEnvironment o CursorAdapter determina el valor de la propiedad DataSource correspondiente. De sólo lectura en tiempo de diseño y de lectura/escritura en tiempo de ejecución.

DataEnvironment.DataSourceType [= cDataSourceType]

-o-

CursorAdapter.DataSourceType [= cDataSourceType]

Valores de la propiedad

cDataSourceType
Tipo de dato carácter. El parámetro cDataSourceType especifica, la cadena de caracteres, que describe el tipo del origen de datos utilizado por el entorno de datos o cursor adapter.

En la siguiente tabla se listan los valores para cDataSourceType.

DataSourceType | DataSource
"ADO" | Referencia a un objeto RecordSet o Comando ActiveX Data Object (ADO) válido
"ODBC" | Un controlador de conexión Open DataBase Connectivity (ODBC) válido
"Nativo", "XML", nulo (.NULL.), o cadena vacía("") | No se tiene en cuenta

Observaciones

No pueden utilizar vistas locales y remotas como un origen "Nativo" para objetos CursorAdapter, pero puede asociarlas utilizando el método CursorAttach.

La propiedad DataSourceType de DataEnvironment no se especifica, en tiempo de diseño, mientras en el entorno de datos no especifique un origen de datos.

Vea también

Propiedades | DataEnvironment (Objeto: propiedades, métodos y eventos) | CursorAdapter (Objeto: propiedades, métodos y eventos) | DEClass (Propiedad) | DataSource (Propiedad) | CursorAttach (Método)

Se aplica a: CursorAdapter (Clase) | DataEnvironment (Objeto)


DataType (Propiedad)

Especifica el tipo de dato Visual FoxPro para el campo en el documento XML.

Para mas información acerca de la equivalencia de datos entre Visual FoxPro y XML, vea Equivalencia entre tipo de datos Visual FoxPro y esquema XML.

XMLField.DataType

Valores de la propiedad

Dato tipo Carácter (C(1)). La propiedad DataType contiene el nombre de un tipo de dato Visual FoxPro para el objeto XMLField.

Vea también

Propiedades | XMLField (Objeto: propiedades, métodos y eventos)

Se aplica a: XMLField (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


DateFormat (Propiedad)

Especifica el formato para valores Date y DateTime mostrado en un cuadro de texto. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.DateFormat[ = nValue]

Valores de la propiedad

nValue
Uno de los siguientes valores:
Valor | Descripción | Formato
0 | (Valor predeterminado) El formato de la fecha mostrado está determinado por el valor de SET DATE. | Determinado por SET DATE
1 | Americano | mm/dd/aa
2 | ANSI | aa.mm.dd
3 | Británico | dd/mm/aa
4 | Italiano | dd-mm-aa
5 | Francés | dd/mm/aa
6 | Alemán | dd.mm.aa
7 | Japón | aa/mm/dd
8 | Taiwan | aa/mm/dd
9 | USA | mm-dd-aa
10 | MDA | mm/dd/aa
11 | DMA | dd/mm/aa
12 | AMD | aa/mm/dd
13 | Corta | Determinado por la configuración de fecha corta en el Panel de control de Windows
14 | Larga | Determinado por la configuración de fecha larga en el Panel de control de Windows

Observaciones

Se puede mostrar en un formato distinto un valor Date o DateTime que aparezca en un cuadro de texto cuando el cuadro de texto no tenga el enfoque. Ciertos formatos de fecha largos y cortos que se pueden especificar en el Panel de control de Windows no se corresponden con formatos válidos para Visual FoxPro y se muestran en un formato predeterminado.

La propiedad Format sobrescribe la propiedad DateFormat cuando se especifiquen los valores YS, YL, E, o D para la propiedad Format.

Vea también

Century (Propiedad) | DateMark (Propiedad) | Hours (Propiedad) | Seconds (Propiedad) | SET DATE | StrictDateEntry (Propiedad)

Se aplica a: TextBox (Control)


DateMark (Propiedad)

Especifica el delimitador para valores Date y DateTime que aparezcan en un cuadro de texto. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.DateMark[ = cDateMarkCharacter]

Valores de la propiedad

cDateMarkCharacter
Especifica el delimitador de valores Date y DateTime. Si cDateMarkCharacter es la cadena vacía, el delimitador se determina por el valor SET MARK. Si cDateMarkCharacter es un espacio, se utiliza el delimitador para el valor actual de la propiedad DateFormat del cuadro de texto.

En la ventana de Propiedades, utilice el comando = para especificar la cadena vacía (= "") o un espacio (= " ") para la propiedad DateMark.

Observaciones

El valor de la propiedad DateMark se pasa por alto si la propiedad DateFormat tiene el valor Short (corto) o Long (largo)

Vea también

Century (Propiedad) | DateFormat (Propiedad) | Hours (Propiedad) | Seconds (Propiedad) | SET MARK TO | StrictDateEntry (Propiedad)

Se aplica a: TextBox (Control)


Debug (Propiedad)

Especifica si la información de depuración se incluye en el código fuente compilado de un proyecto.

Object.Debug[ = lExpression]

Valores de la propiedad

lExpression
Los valores de la propiedad Debug:
Valor | Descripción
Verdadero (.T.) | (Predeterminado) La información de depuración se incluye con el código fuente compilado.
Falso (.F.) | No se incluye la información de depuración y no puede ver la ejecución de un programa en la ventana Seguimiento ni utilizar MESSAGE(1) para ver en el código fuente una línea que produce un error. Establecer lExpression en Falso (.F.) es lo mismo que incluir el argumento NODEBUG en el comando COMPILE.

Observaciones

El código fuente de un proyecto incluye archivos de programa y de formato, código fuente de formularios, etiquetas, informes y bibliotecas de clases visuales, y procedimientos almacenados en bases de datos. La propiedad Debug corresponde a la casilla de verificación Informar de depuración de la ficha Proyecto del cuadro de diálogo Información del proyecto.

Vea también

COMPILE | Cuadro de diálogo Información del proyecto

Se aplica a: Project (Objeto)


DEClass (Propiedad)

Especifica el nombre de la clase DataEnvironment, a utilizar cuando se agregue un entorno de datos a un formulario. De lectura/escritura en tiempo de diseño y de sólo lectura en tiempo de ejecución.

En tiempo de diseño, DEClass hace posible que especifique una clase DataEnvironment de la biblioteca especificada en la propiedad DEClassLibrary.

Form.DEClass [= cClassName]

Valores de la propiedad

cClassName
Dato tipo Caracter. El parámetro cClassName especifica uno de los siguientes:
  • Nombre de una clase programática, incluida en un archivo de programa (.prg)
  • Nombre de una clase no visual incluida en un archivo biblioteca de clases visuales (.vcx)

Observaciones

Visual FoxPro soporta DEClass y DEClassLibrary para archivos de formularios (.scx), de biblioteca de clases visuales (.vcx), y de programa (.prg) pero no para objetos FormSet o en el Diseñador de Informes.

Visual FoxPro instancia un objeto DataEnvironment desde DEClass y su propiedad asociada DEClassLibrary bajo las siguientes condiciones:

  • DEClass especifica una clase DataEnvironment para el formulario, en tiempo de diseño, en la ventana Propiedades.
  • DEClass especifica una clase DataEnvironment cuando se crea programáticamente el formulario.

Cuando se crea el formulario, Visual FoxPro utiliza le clase DataEnvironment especificada para crear el objeto DataEnvironment. Si usted especifica un valor para la propiedad DEClassLibrary pero no para DEClass, o si la clase DataEnvironment es de un tipo erróneo o no existe en la biblioteca de clases especificada, Visual FoxPro genera el mensaje apropiado.

Puede establecer DEClass y DEClassLibrary utilizando la ventana Propiedades en el Diseñador de Formularios, en una clase Form, o una definición de formulario o clase en un archivo .prg. Visual FoxPro muestra DEClass y DEClassLibrary en la ventana Propiedades como de sólo lectura. Sin embargo, haciendo clic en el botón Examinar (...) de la ventana Propiedades muestra el cuadro de diálogo Abrir, así puede seleccionar el archivo .prg que desee o, si está soportado, el archivo .vcx.

También puede utilizar la función ASELOBJ( ) para almacenar referencias de objeto a una matriz para establecer individualmente las propiedades de objeto. Sin embargo, si sólo establece la propiedad DEClass o DEClassLibrary, Visual FoxPro ignora la configuración para estas propiedades y utiliza la clase DataEnvironment predeterminada. Debe establecer ambas propiedades.

Nota Cuando establezca las propiedades DEClass y DEClassLibrary utilizando código o la función ASELOBJ( ), debe establecer la propiedad DEClassLibrary antes de establecer la propiedad DEClass.

Cuando abra el Diseñador de Entorno de Datos haciendo clic derecho sobre el formulario, ocurre lo siguiente:

  • Si la clase DataEnvironment contiene objetos Cursor

    Si el cursor o cursores contenidos, se refiere a una tabla existente o vista remota, las tablas y vistas colocadas en el área del Diseñador de Entorno de Datos son de sólo lectura. Puede arrastrar y soltar campos o tablas en el área del Diseñador de Formularios si las siguientes propiedades están establecidas con los requisitos especificados:

    • CursorSource (Requerida) Nombre de la tabla y ruta si es una tabla libre; el nombre de tabla sólo si la tabla está en un contenedor de bases de datos (DBC).
    • Database (Opcional) El nombre y ruta de la DBC se llena automáticamente si es una tabla o vista de una DBC.
    • Alias (Opcional) Alias asignado a la tabla si es diferente del nombre de la tabla. De otro modo, el alias es predefinido como el nombre almacenado en CursorSource.

    Si la clase DataEnvironment contiene un objeto Cursor, pero el objeto cursor no contiene una referencia válida a una tabla o vista, el Diseñador de Entorno de Datos no se abre. Visual FoxPro carga el entorno de datos después de generar el mensaje apropiado.

    Si la clase DataEnvironment contiene múltiples objetos Cursor, sólo aquellos objetos cursor que contienen referencias válidas a tablas y/o vistas, se colocan en la superficie del Diseñador del Entorno de Datos. Los objetos cursor que no contienen referencias válidas se ignoran.

    Si el objeto cursor referencia a una base de datos DBC, pero no referencia una tabla o vista válida en la DBC, Visual FoxPro carga el entorno de datos después de mostrar el mensaje apropiado.

    Si la clase DataEnvironment no contiene un objeto Cursor, el Diseñador de Entorno de Datos no se abre, y Visual FoxPro genera un mensaje apropiado.

    Cuando arrastre un archivo de tabla (.dbf) desde una carpeta a un formulario, mientras esté abierto un entorno de datos que no es una clase DataEnvironment, Visual FoxPro agrega la tabla automáticamente al entorno de datos. Sin embargo, si el entorno datos está basado en una clase DataEnvironment, el entorno de datos será de sólo lectura, y Visual FoxPro no agrega el archivo .dbf al entorno de datos.

  • Si la clase DataEnvironment contiene objetos CursorAdapter

    Si la clase DataEnvironment contiene un objeto CursorAdapter, el CursorAdapter debe cumplir los siguientes requisitos para aparecer en la superficie del Diseñador del Entorno de Datos:

    • La propiedad CursorSchema de CursorAdapter se especifica y establece a un valor válido.
    • La propiedad Alias de CursorAdapter se especifica.
    Nota Si las anteriores condiciones se cumplen, el CursorAdapter aparece en la superficie del Diseñador de Entorno de Datos como sólo lectura. Puede arrastrar y soltar tablas campos, en el formulario. Las propiedades, eventos o métodos del entorno de datos y cualquier objeto CursorAdapter contenido, son de sólo lectura.

    El Diseñador de Entorno de Datos no se abre si alguna de las siguientes condiciones es verdadera:

    • La clase DataEnvironment contiene un objeto CursorAdapter, pero el CursorAdapter no contiene datos válidos en la propiedad CursorSchema.
    • El objeto CursorAdapter no se instancia por alguna razón.

Para modificar la clase DataEnvironment, debe cerrar el Diseñador de Formularios, liberar cualquier clase que se esté utilizando, modificar y recompilar la clase DataEnvironment en el archivo especificado por la propiedad DEClassLibrary, y regresar al Diseñador de Formularios.

Cuando las propiedades DEClass y DEClassLibrary se establecen, al ejecutar el formulario crea y carga el entorno de datos desde la clase DataEnvironment especificada. Para establecer DEClass y DEClassLibrary en tiempo de ejecución, debe usar código.

Si intenta convertir un formulario en un conjunto de formularios en tiempo de diseño, cuando el Diseñador de Formularios esté abierto, y las propiedades DEClass y DEClassLibrary están especificadas para el formulario, Visual FoxPro genera el mensaje apropiado. Si un conjunto de formularios está abierto en el Diseñador de formularios, y usted intenta agregar un formulario a que especifique la propiedades DEClass y DEClassLibrary para el conjunto de formularios en tiempo de diseño, Visual FoxPro genera el mensaje apropiado ya que las propiedades DEClass y DEClassLibrary no estén disponibles. Si intenta agregar un formulario a un formulario que especifica la propiedades DEClass y DEClassLibrary para el conjunto de formularios en tiempo de ejecución, Visual FoxPro ignora DEClass y DEClassLibrary y no carga la clase de entorno de datos especificada.

DEClass y DEClassLibrary soportan el alcance Public, Hidden y Protected.

DEClass y DEClassLibrary no soportan los métodos Access y Assign.

En un formulario sub-claseado, DEClass y DEClassLibrary se heredan normalmente.

Ejemplo

El siguiente ejemplo crea una clase Form y entonces establece las propiedades DEClassLibrary y DEClass para especificar una clase DataEnvironment externa y una biblioteca de clases.

DEFINE CLASS form1 as Form
DEClassLibrary="MyProgram.prg"
DEClass="MyDE"
ENDDEFINE

Vea también

Propiedades | Form (Objeto: propiedades, métodos y eventos) | DEClassLibrary (Propiedad) | Access y Assign (Métodos) | Public (Comando) | Proteger y ocultar miembros de clases | Proteger y ocultar miembros de clases | Report (Comando) | DataEnvironment (Objeto)

Se aplica a: Form (Objeto)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


DEClassLibrary (Propiedad)

Especifica el nombre de un archivo de programa (.prg) o biblioteca visual de clases (.vcx) que contiene a la clase DataEnvironment especificada por la propiedad DEClass. De lectura/escritura en tiempo de diseño y de sólo lectura en tiempo de ejecución.

Form.DEClassLibrary [= cClassLibraryName]

Valores de la propiedad

cClassLibraryName
Dato tipo Carácter. El parámetro cClassLibraryName especifica uno de los siguientes:
  • Nombre de un archivo de programa (.prg)
  • Nombre de un archivo de biblioteca visual de clases (.vcx)

Observaciones

Para detalles, vea DEClass (Propiedad).

Ejemplo

El siguiente ejemplo crea una clase Form y después establece las propiedades DEClassLibrary y DEClass para especificar una clase DataEnvironment externa y una biblioteca de clases.

DEFINE CLASS form1 as Form
DEClassLibrary="MyProgram.prg"
DEClass="MyDE"
ENDDEFINE

Vea también

Propiedades | Form (Objeto: propiedades, métodos y eventos) | Access y Assign (Métodos) | Public (Comando) | Miembros de clases protegidos y ocultos | Proteger y ocultar miembros de clases | Report (Comando) | DataEnvironment (Objeto)

Se aplica a: Form (Objeto)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


Default (Propiedad)

Especifica qué botón de comando o control OLE Container responde a la tecla ENTRAR presionada cuando hay dos o más botones de comando en un formulario activo. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.Default[ = lExpr]

Valores de la propiedad

lExpr
Las configuraciones posibles de la propiedad Default son:
Valor | Descripción
Verdadero (.T.) | Cuando la propiedad Default del botón se establece como verdadero (.T.) y el formulario primario está activo, el usuario podrá ejecutar el comando del botón al presionar ENTRAR. (Si el enfoque se encuentra en un cuadro de edición, el usuario puede presionar CTRL+ENTRAR.) Si KEYCOMP se establece en WINDOWS, el comando del botón predeterminado no se ejecuta si el enfoque se movió a otro botón de comando. En ese caso, el hecho de presionar ENTRAR afectará al botón que tenga el enfoque en vez de al botón predeterminado.
Falso (.F.) | (Valor predeterminado) El botón no es el predeterminado.

Observaciones

La propiedad Default sólo se aplica a un control OLE Container que contenga un control ActiveX "Actúa como un botón" (.ocx).

En un formulario, sólo un botón de comando o un control OLE Container puede ser el botón de comando predeterminado. Cuando la propiedad Default se establece como verdadero (.T.) para un botón de comando o un control OLE Container, se establece automáticamente como falso (.F.) para los demás botones de comando o controles OLE Container del formulario. No es posible crear un botón de comando o un control OLE Container predeterminados en una barra de herramientas.

Vea también

Enabled (Propiedad) | KeyPress (Evento)

Se aplica a: CommandButton | OLE Container (Control)


DefaultFilePath (Propiedad)

Especifica la unidad y el directorio predeterminados que utilizará un objeto Application. Está disponible en tiempo de ejecución.

ApplicationObject.DefaultFilePath[ = cPath]

Valores de la propiedad

cPath
Especifica uno de los elementos siguientes:
  • Un designador de unidad.
  • Un designador de unidad con un nombre de directorio.
  • Un nombre de un directorio secundario.
  • Cualquiera de los anteriores mediante la anotación abreviada de MS-DOS® ( \ ó ..).

Observaciones

La propiedad DefaultFilePath es similar a SET DEFAULT.

Visual FoxPro busca un archivo en el directorio predeterminado de Visual FoxPro. El directorio predeterminado es aquél desde el cual se inicia Visual FoxPro. De todas formas, puede utilizar la propiedad DefaultFilePath para especificar un directorio predeterminado distinto. Si Visual FoxPro no encuentra un archivo en el directorio predeterminado, buscará en la ruta de acceso de Visual FoxPro si se ha especificado una. Utilice SET PATH para especificar la ruta de Visual FoxPro.

Vea también

SET DEFAULT | SET PATH

Se aplica a: Application (Objeto) _VFP (Variable del sistema)


DefOLELCID (Propiedad)

Especifica el Id. de configuración regional de OLE predeterminado para un formulario o la ventana principal de Visual FoxPro. Está disponible en tiempo de diseño y en tiempo de ejecución.

Form.DefOLELCID[ = nValue]

Valores de la propiedad

nValue
Especifica un valor del Id. de configuración regional de OLE para un formulario o la ventana principal de Visual FoxPro. Este valor predeterminado determina el Id. de configuración para controles OLE Bound y controles OLE Container cuando se colocan en el formulario o en la ventana principal de Visual FoxPro.

Observaciones

Si el valor predeterminado del Id. de configuración regional de OLE para un formulario o para la ventana principal de Visual FoxPro se cambia por un nuevo valor, los controles OLE Bound y los controles OLE Container situados en el formulario o en la ventana principal de Visual FoxPro después de que esté actuando el nuevo valor del Id. de configuración regional de OLE utilizan el nuevo valor.

Si DefOLELCID está establecida en cero para un formulario o para la ventana principal de Visual FoxPro, SYS(3004) determina el valor predeterminado del Id. de configuración regional de OLE para controles OLE Bound y para controles OLE Container colocados en el formulario o en la ventana principal de Visual FoxPro.

Vea SYS(3005) para obtener una lista de los Id. de configuración regional.

Nota La propiedad DefOLELCID sólo afecta al idioma de la interfaz del usuario, cuya presentación muestran los controles OLE, pero no al idioma de los comandos de Automatización. El idioma de los comandos de Automatización sólo se verá afectado por el valor del Id. de configuración regional global establecido con SYS(3005).

Vea también

OLELCID (Propiedad) | SYS(3005) - Establecer Id. de configuración regional

Se aplica: Form | _SCREEN


DeleteCmd (Propiedad)

Especifica el comando a utilizar cuando se borran registros. De lectura/escritura en tiempo de diseño y en tiempo de ejecución.

CursorAdapter.DeleteCmd [ = cCommand ]

Valores de la propiedad

cCommand
Tipo de dato carácter. En la siguiente tabla se listan los posibles valores para DeleteCmd.
cCommand | Descripción
Cadena o expresión de caracteres | Especifica una cadena de comando válido para el origen de datos en la propiedad DeleteCmdDataSource.
Cadena vacía ("") El objeto CursorAdapter genera automáticamente un comando SQL DELETE si la propiedad AllowDelete se establece a Verdadero (.T.).

Para mas información acerca de la generación automática de comandos SQL, vea Manejo de datos utilizando CursorAdapters.

Vea también

Propiedades | CursorAdapter (Objeto: propiedades, métodos y eventos)

Se aplica a: CursorAdapter (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


DeleteCmdDataSource (Propiedad)

Especifica el origen de datos usada por la propiedad DeleteCmd.

De Lectura/escritura en tiempo de diseño y ejecución.

Nota La propiedad del CursorAdapter DeleteCmdDataSourceType determina, como es usada la propiedad DeleteCmdDataSource.
CursorAdapter.DeleteCmdDataSource [ = cDataSource]

Valores de la propiedad

cDataSource
Tipo de dato carácter. El parámetro cDataSource especifica el origen de datos usado por la propiedad DeleteCmd.

Observaciones

La siguiente tabla, describe los comportamientos adicionales, que se aplican a DeleteCmdDataSource dependiendo del valor de DeleteCmdDataSourceType.

DeleteCmdDataSourceType Comportamiento DeleteCmdDataSource
Vacio ("") DeleteCmdDataSource se ignora. Visual FoxPro utiliza el origen de datos de la propiedad CursorAdapter DataSource.

Si el cursor asociado con el objeto CursorAdapter está basado en un ActiveX Data Object (ADO) RecordSet, Visual FoxPro utiliza la funcionalidad de ADO RecordSet para borrar el registro. Para usar esta funcionalidad, asegúrese que la propiedad CursorAdapter DataSourceType está configurada a "ADO".
"ADO" DeleteCmdDataSource debe estar configurado como un objeto ADO Command válido. La propiedad ActiveConnection del Objeto ADO Command, debe ser configurado a una conexión objeto ADO válida y abierta.

Visual FoxPro configura la propiedad CommandText del objeto ADO Command, como el valor de la propiedad CursorAdapter DeleteCmd. Visual FoxPro analiza gramaticalmente los parámetros del comando, crea los valores de los parámetros si los encuentra, y los configura en el objeto Command.

La Operación de borrado ocurre como:

CursorAdapter.DeleteCmdDataSource.Execute()

Para más información acerca del uso de ADO RecordSet, actualización automática, y generación automática de comandos SQL, Vea Manejo de datos utilizando CursorAdapters.

Vea también

Propiedades | CursorAdapter (Objeto: propiedades, métodos y eventos)

Se aplica a: CursorAdapter (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


DeleteCmdDataSourceType (Propiedad)

Especifica el tipo de origen de datos, para el origen de datos usada por la propiedad DeleteCmdDataSource. Lectura/escritura en tiempo de diseño y ejecución.

CursorAdapter.DeleteCmdDataSourceType [= cDataSourceType]

Valores de la propiedad

cDataSourceType
Tipo de dato carácter. El parámetro cDataSourceType especifica el tipo de origen de datos en la propiedad DeleteCmdDataSource.

Observaciones

Si DeleteCmdDataSourceType esta vacío ("") o nulo (.NULL.), Visual FoxPro descarta la propiedad CursorAdapter DeleteCmdDataSource y usa las propiedades CursorAdapter DataSource y DataSourceType.

Para generar un XML UpdateGram, debe configurar los valores de DeleteCmdDataSourceType a "XML".

Vea también

Propiedades | CursorAdapter (Objeto: propiedades, métodos y eventos) | UpdateGram (Propiedad)

Se aplica a: CursorAdapter (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


DeleteMark (Propiedad)

Especifica si la columna con marca de eliminación aparece en un control cuadrícula. Está disponible en tiempo de diseño y en tiempo de ejecución.

Grid.DeleteMark[ = lExpr]

Valores de la propiedad

lExpr
Las configuraciones posibles de la propiedad DeleteMark son:
Valor | Descripción
Verdadero (.T.) | (Valor predeterminado) La columna con marca de eliminación aparece en el control cuadrícula como la columna de la izquierda.
Falso (.F.) | La columna con marca de eliminación no aparece.

Observaciones

La columna con marca de eliminación permite al usuario marcar registros para eliminar. El usuario hace clic en la columna de eliminación sobre el registro que desea eliminar.

Vea también

DELETE | Deleted (Evento)

Se aplica a: Grid


Description (Propiedad)

Para un objeto File es la descripción del archivo. Para un objeto Server, es la descripción de la clase de servidor. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.Description[ = cExpression]

Valores de la propiedad

cExpression
Especifica la descripción para el objeto File o Server.

Para un objeto File, el valor predeterminado es la cadena vacía. También puede especificar una descripción para un archivo de un proyecto si elige Modificar descripción en el menú Proyecto.

Para Server, el valor predeterminado es el nombre de la clase de servidor. También puede especificar una descripción para un servidor en la ficha Servidores del cuadro de diálogo Información del proyecto. La descripción del objeto Server también aparece en el Registro para el servidor.

Vea también

Name (Propiedad)

Se aplica a: File (Objeto) | Server (Objeto)


Desktop (Propiedad)

Especifica si puede aparecer un formulario en cualquier lugar del escritorio de Windows o si se encuentra en la ventana principal de Visual FoxPro. Está disponible en tiempo de diseño; es de sólo lectura en tiempo de ejecución.

Object.Desktop[ = lExpr]

Valores de la propiedad

lExpr
Las configuraciones posibles de la propiedad Desktop son:
Valor | Descripción
Verdadero (.T.) | El formulario puede estar en cualquier parte del escritorio de Windows.
Falso (.F.) | (Valor predeterminado) El formulario está en la ventana principal de Visual FoxPro.

Observaciones

Se pasará por alto la propiedad Desktop si la propiedad ShowWindow está establecida en 2 - Como formulario de nivel superior.

No es recomendable utilizar la propiedad Desktop cuando se crean aplicaciones de tipo Interfaz de un único documento (SDI) en las que quizá se desee ocultar la ventana del escritorio de Visual FoxPro (_SCREEN). En su lugar, utilice la configuración 2 de la propiedad ShowWindow para crear un formulario de nivel superior.

Vea también

AlwaysOnBottom (Propiedad) | AlwaysOnTop (Propiedad) | AutoCenter (Propiedad) | MaxHeight (Propiedad) | MaxLeft (Propiedad) | MaxTop (Propiedad) | MaxWidth (Propiedad) | MinHeight (Propiedad) | MinWidth (Propiedad) | ShowWindow (Propiedad)

Se aplica: Form | _SCREEN


Details (Propiedad)

Especifica detalles adicionales sobre un objeto Exception que está relacionado con la información especificada en la propiedad Message. Lectura/escritura en tiempo de ejecución.

Exception.Details

Valores de la propiedad

Tipo de dato Carácter. Details puede ser NULL salvo que el error tenga un parámetro adicional; en ese caso, esta propiedad contiene el texto del parámetro de error.

Observaciones

Es idéntico al valor obtenido con SYS(2018) y al tercer elemento en la matriz creada por la función AERROR().

Vea también

Propiedades | Exception (Objeto: propiedades, métodos y eventos) | Message (Propiedad) | AERROR( ) (Función) | SYS(2018) - Parámetro del mensaje de error | TRY...CATCH...FINALLY (Comando) | Control estructurado de errores

Se aplica a: Exception (Clase)


DisabledBackColor, DisabledForeColor (Propiedades)

Especifica los colores de fondo y primer plano cuando se desactiva un control. Está disponible en tiempo de diseño y en tiempo de ejecución.

Control.DisabledBackColor[ = nColor]

O bien:

Control.DisabledBackColor = RGB(nRedValue, nGreenValue, nBlueValue) Control.DisabledForeColor[ = nColor]

O bien:

Control.DisabledForeColor = RGB(nRedValue, nGreenValue, nBlueValue)

Valores de la propiedad

nColor
Especifica un solo número que representa el color.
nRedValue, nGreenValue, nBlueValue
Especifica tres intensidades distintas de color para crear color del primer plano o del fondo del control, y que deben emplearse con RGB( ) para consolidar los tres componentes de color en un número.

Observaciones

El color que especifique se mezclará con gris.

Nota En la ventana Propiedades, puede hacer doble clic en cualquiera de las propiedades de color para mostrar el cuadro de diálogo Color. A continuación, puede elegir o definir colores en este cuadro de diálogo. Las intensidades de rojo, verde y azul que corresponden al color que elija se convertirán en los valores de estas propiedades cuando cierre el cuadro de diálogo Color.

La configuración de colores o Temas (Themes) del sistema operativo, establece los colores predeterminados para las propiedades DisabledBackColor y DisabledForeColor.

Nota La propiedad DisabledBackColor no se aplica a los controles CommandButton.

Si la propiedad Theme es establecida a Verdadero (.T.), establecer la propiedad DisabledBackColor produce un 35% de transparencia sobre el botón con tema. Esto produce un efecto de coloración.

Vea también

BackColor, ForeColor (Propiedades)

Se aplica: CheckBox | ComboBox | CommandButton | EditBox | Label | ListBox | OptionButton | Spinner | TextBox


DisabledItemBackColor, DisabledItemForeColor (Propiedades)

Especifica el color del fondo o de primer plano para los elementos desactivados de un control ComboBox o ListBox. Está disponible en tiempo de diseño y en tiempo de ejecución.

Control.DisabledItemBackColor[ = nColor]

O bien:

Control.DisabledItemBackColor RGB(nRedValue, nGreenValue,  nBlueValue) Control.DisabledItemForeColor[ = nColor]

O bien:

Control.DisabledItemForeColor RGB(nRedValue, nGreenValue, nBlueValue)

Valores de la propiedad

nColor
Especifica un solo número que representa el color.
Nota En la ventana Propiedades, puede hacer doble clic en cualquiera de las propiedades de color para mostrar el cuadro de diálogo Color. A continuación, puede elegir o definir colores en este cuadro de diálogo. Las intensidades de rojo, verde y azul que corresponden al color que elija se convertirán en los valores de estas propiedades cuando cierre el cuadro de diálogo Color.

Para obtener más información, vea la tabla de colores en el tema BackColor, ForeColor (Propiedades).

Vea también

BackColor, ForeColor (Propiedades) | DisabledBackColor, DisabledForeColor (Propiedades) | RGB( ) | SelectedBackColor, SelectedForeColor (Propiedades)

Se aplica a: ComboBox | ListBox


DisabledPicture (Propiedad)

Especifica el gráfico que se va a mostrar cuando el control esté desactivado. Está disponible en tiempo de diseño y en tiempo de ejecución.

Control.DisabledPicture[ = cPicture]

Valores de la propiedad

cPicture
Especifica una ruta de acceso y un nombre de archivo completos de un mapa de bits o el nombre de un campo general de una tabla de base de datos.

Observaciones

Si establece la propiedad DisabledPicture en tiempo de diseño y el archivo especificado no existe, Visual FoxPro mostrará un mensaje de error pero la propiedad seguirá estando establecida para el archivo especificado. Visual FoxPro pasa por alto la propiedad DisabledPicture en tiempo de ejecución si está establecida como un archivo que no existe.

Si no establece la propiedad DisabledPicture, Visual FoxPro utilizará la configuración de la propiedad Picture para determinar el gráfico que se muestra cuando el control está desactivado.

Para los controles CommandButton, es necesario que la propiedad Style esté establecida en 0 (Estándar) para que se muestre el mapa de bits en el control. En el caso de los controles CheckBox y OptionButton, es necesario que la propiedad Style esté establecida en 1 (Gráfico).

Vea también

DownPicture (Propiedad) | Enabled (Propiedad) | Picture (Propiedad) | Style (Propiedad)

Se aplica: CheckBox | CommandButton | OptionButton


DisableEncode (Propiedad)

Habilita o deshabilita la codificación base64 o hexBinary para campos Memo (Binario) o Carácter (Binario).

La Configuración DisableEncode del conjunto de niveles XMLAdapter, es el valor predeterminado cuando se crean objetos XMLField y son agregados a una colección de campos por los siguientes métodos XMLAdapter:

  • LoadXML
  • Attach
  • AddTableSchema

Adicionalmente, cambiando DisableEncode a nivel de XMLAdapter afecta únicamente al próximo conjunto de objetos XMLField que sean creados, no a los objetos XMLField existentes en la colección Fields. Por lo tanto, al modificar la configuración de DisableEncode por un objeto XMLField existente, cambia el valor en el nivel XMLField.

Objeto.DisableEncode [= lValor]

Valores de la propiedad

lValor
Tipo de Valor Lógico. La siguiente tabla lista los valores para lValor.
lValor | Descripción
Falso (.F.) | Deshabilita la codificación base64 o hexBinary para campos Memo (Binario) o Carácter (Binario). (Predeterminado)
Verdadero (.T.) | Habilita la codificación base64 o hexBinary para campos Memo (Binario) o Carácter (Binario).

Observaciones

Visual FoxPro descarta caracteres inválidos o de longitud incorrecta en cadenas codificadas en base64 y hexBinary.

Si XMLAdapter DisableEncode es Verdadero (.T.) cuando se ejecuta el método LoadXML, la propiedad XMLField MaxLength se ajusta a la longitud máxima de los datos codificados. En cualquier otro caso, Visual FoxPro usa el valor original de MaxLength.

Si XMLAdapter DisableEncode es Verdadero (.T.) cuando se ejecuta el método ToXML, el valor xsd:maxLength en el esquema "XML Schema Definition" (XSD) es la máxima longitud de datos decodificados. En cualquier otro caso, Visual FoxPro usa el valor de la propiedad XMLField MaxLength.

Vea también

Propiedades | XMLAdapter (Objeto: propiedades, métodos y eventos) | XMLField (Objeto: propiedades, métodos y eventos) | Fields (XMLTable) (Colección) | MaxLength (Propiedad) | ToXML (Método)

Se aplica a: XMLAdapter (Clase) | XMLField (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


DisplayCount (Propiedad)

Especifica el número máximo de elementos que se muestran en la parte de lista de un control ComboBox.

Object.DisplayCount[ = nExpression]

Valores de la propiedad

nExpression
Especifica el número máximo de elementos que se muestran en la parte de lista del control ComboBox. El valor predeterminado es cero; si nExpression es cero, se mostrará un valor máximo de 7 elementos en la lista.

Si nExpression vale 1, no se muestran flechas de desplazamiento en la parte de lista de un control ComboBox.

Vea también

ColumnCount (Propiedad) | DisplayValue (Propiedad)

Se aplica a: ComboBox


DisplayValue (Propiedad)

Especifica el contenido de la primera columna del elemento seleccionado en un control ListBox o ComboBox. Está disponible en tiempo de diseño y en tiempo de ejecución.

Utilice la propiedad DisplayValue cuando un combobox o un listbox tienen más que una columna, y la propiedad BoundColumn del control está establecida a un valor mayor que 1.

 [Form.]Control.DisplayValue[ = Expr]

Valores de la propiedad

Expr
Especifica una cadena de caracteres o un valor numérico. La siguiente tabla describe el valor de Expr.
Expr | Descripción
Cadena de caracteres Especifica el valor de la primera columna del elemento seleccionado.

Para cuadros combinados, DisplayValue especifica el texto mostrado en el cuadro de texto del cuadro combinado cuando DisplayValue es una cadena de caracteres. Sin embargo, las propiedades del ComboBox InputMask y MaxLength pueden afectar ese despliegue.
Valor numérico | Especifica el índice del elemento seleccionado.

Observaciones

Cuando un control ComboBox o ListBox tenga solo una columna, las propiedades DisplayValue y Value del control normalmente tendrán ambas la misma configuración si ambas contienen cadenas de caracteres. Hay una excepción cuando ambas propiedades contienen cadenas de caracteres, y se escribe un valor en el combobox, pero el valor no existe en la lista. En este caso, el valor es una cadena vacía (""), y DisplayValue pasa a ser el valor escrito.

Vea también

BoundColumn (Propiedad) | Value (Propiedad)

Se aplica a: ComboBox | ListBox


Docked (Propiedad)

Contiene el indicador de acoplado para un objeto ToolBar definido por el usuario. Es de sólo lectura en tiempo de diseño y en tiempo de ejecución.

ToolBar.Docked[ = lExpr]

Valores de la propiedad

lExpr
Las configuraciones posibles de la propiedad Docked son:
Valor | Descripción
Verdadero (.T.) | La barra de herramientas está acoplada.
Falso (.F.) | La barra de herramientas no está acoplada.

Vea también

DockPosition (Propiedad)

Se aplica a: ToolBar


DockPosition (Propiedad)

Especifica la posición en que está acoplado un objeto ToolBar definido por el usuario. Es de sólo lectura en tiempo de diseño y en tiempo de ejecución.

ToolBar.DockPosition[= nPosition]

Valores de la propiedad

nPosition
Las configuraciones posibles de nPosition son:
Valor | Posición
–1 | No acoplada
0 | Primero
1 | Izquierda
2 | Derecha
3 | Parte inferior

Vea también

Docked (Propiedad)

Se aplica a: ToolBar


DocumentFile (Propiedad)

Devuelve el nombre del archivo a partir del cual se ha creado un objeto OLE vinculado. En tiempo de diseño, especifica el nombre del archivo vinculado. Es de sólo lectura en tiempo de diseño y en tiempo de ejecución para un objeto ya existente, pero se puede establecer para un objeto mientras se está creando.

Object.DocumentFile[ = cFileName]

Valores de la propiedad

cFileName
El nombre del archivo al cual se vinculó el objeto. El nombre incluye la ruta de acceso completa del archivo.

Observaciones

DocumentFile contiene la cadena vacía para objetos incrustados (no vinculados).

Puede establecer la propiedad DocumentFile de un objeto OLE vinculado mediante el cuadro de diálogo Insertar objeto cuando agregue, al principio, un contenedor OLE a un formulario. También puede establecer esta propiedad durante la creación de un objeto OLE mediante el comando APPEND GENERAL o durante la definición de un objeto en código como parte de una definición de clase.

Antes de especificar el contenido de un objeto OLE mediante la propiedad DocumentFile, puede especificar la aplicación del servidor de Automatización al establecer la propiedad OLEClass del objeto.

Ejemplo

El ejemplo siguiente agrega un control OLE Container a un formulario, y utiliza las propiedades DocumentFile y OleClass para especificar una hoja de cálculo Microsoft Excel como el archivo que se va a modificar, y Microsoft Excel como el servidor de Automatización.

La propiedad DocumentFile especifica una hoja de cálculo denominada Hoja1.xls en el directorio EXCEL de la unidad C. Este ejemplo no funcionará adecuadamente si el archivo y el directorio especificados en la propiedad DocumentFile no existen; quizás sea necesario modificar la propiedad DocumentFile para especificar un directorio y un archivo de hoja de cálculo existentes.

El método DoVerb se usa para activar la hoja de cálculo para su modificación.

frmMyForm = CREATEOBJECT('form')  && Create a form
frmMyForm.Closable = .F.  && Disable the Control menu box
frmMyForm.AddObject('cmdCommand1','cmdMyCmdBtn')  && Add Command button
frmMyForm.AddObject("oleObject","oleExcelObject")  && Add OLE object
frmMyForm.cmdCommand1.Visible=.T.  && Display the "Quit" Command button
frmMyForm.oleObject.Visible=.T.  && Display the OLE control
frmMyForm.oleObject.Height = 50  && OLE control height
frmMyForm.Show  && Display the form
frmMyForm.oleObject.DoVerb(-1)  && -1 for Edit
READ EVENTS  && Start event processing
DEFINE CLASS oleExcelObject as OLEControl
OleClass ="Excel.Sheet"  && Server name
DocumentFile = "C:\EXCEL\BOOK1.XLS"  && This file must exist
ENDDEFINE
DEFINE CLASS cmdMyCmdBtn AS CommandButton  && Create Command button
Caption = '\<Quit'  && Caption on the Command button
Cancel = .T.  && Default Cancel Command button (Esc)
Left = 125  && Command button column
Top = 210  && Command button row
Height = 25  && Command button height
PROCEDURE Click
CLEAR EVENTS  && Stop event processing, close form
ENDDEFINE

Vea también

APPEND GENERAL | CREATEOBJECT( ) | OLEClass

Se aplica a: OLE Bound (Control) | OLE Container (Control)


DownPicture (Propiedad)

Especifica el gráfico que se muestra cuando se selecciona el control. Está disponible en tiempo de diseño y en tiempo de ejecución.

Control.DownPicture[ = cPicture]

Valores de la propiedad

cPicture
Especifica una ruta de acceso y un nombre de archivo completos de un mapa de bits o de un campo General en una tabla de la base de datos.

Observaciones

Si establece la propiedad DownPicture en tiempo de diseño y el archivo que especifique no existe, Microsoft Visual FoxPro mostrará un mensaje de error, pero la propiedad se quedará establecida en el archivo especificado. Visual FoxPro pasa por alto la propiedad DownPicture en tiempo de ejecución si está establecida en un archivo que no existe.

Si no especifica un valor para la propiedad DownPicture, Visual FoxPro utilizará el gráfico especificado mediante la propiedad Picture cuando se seleccione el control.

Para los controles CommandButton, es necesario que la propiedad Style esté establecida en 0 (Estándar) para que se muestre el mapa de bits en el control. En el caso de los controles CheckBox y OptionButton, es necesario que la propiedad Style esté establecida en 1 (Gráfico).

Vea también

DisabledPicture (Propiedad) | Enabled (Propiedad) | Picture (Propiedad) | Style (Propiedad)

Se aplica: CheckBox | CommandButton | OptionButton


DragIcon (Propiedad)

Especifica el icono que se muestra como puntero durante una operación de arrastrar y soltar. Está disponible en tiempo de diseño y en tiempo de ejecución.

Control.DragIcon[ = cIcon]

Valores de la propiedad

cIcon
Especifica la ruta de acceso al archivo que contiene el icono que se va a utilizar como puntero del ratón. Generalmente, se especifica el archivo de icono utilizando la ventana Propiedades en tiempo de diseño. El archivo especificado debe tener la extensión .cur y guardarse en formato VGA-Mono 2-Color 32 x 32. Si intenta utilizar un archivo .cur en color, se generará un mensaje de error. Puede utilizar ImageEdit, para crear un archivo .cur de dos colores. Si omite cIcon, se utilizará un puntero de flecha dentro de un rectángulo.

Observaciones

DragIcon resulta útil para proporcionar respuesta visual en una operación de arrastrar; por ejemplo, para indicar que el control de código fuente está sobre un destino adecuado. DragIcon surte efecto cuando el usuario inicia el arrastre. DragIcon suele establecerse durante un evento MouseDown o DragOver.

Si establece la propiedad DragIcon en tiempo de diseño y el archivo especificado no existe, Visual FoxPro mostrará un mensaje de error pero la propiedad seguirá estando establecida como el archivo especificado. Visual FoxPro pasa por alto la propiedad DragIcon en tiempo de ejecución si se establece como un archivo que no existe.

Vea también

Drag (Método) | DragDrop (Evento) | DragMode (Propiedad) | MouseDown (Evento) | MouseMove (Evento) | MousePointer (Propiedad) | MouseUp (Evento)

Se aplica: CheckBox | ComboBox | CommandButton | CommandGroup | Container (Objeto) | Control (Objeto) | EditBox | Grid | Image | Label | Line | ListBox | OLE Bound (Control) | OLE Container (Control) | OptionButton | OptionGroup | Page | Shape | Spinner | TextBox


DragMode (Propiedad)

Especifica el modo de arrastre manual o automático para una operación de arrastrar y soltar. Está disponible en tiempo de diseño y en tiempo de ejecución.

Control.DragMode[ = nMode]

Valores de la propiedad

nMode
Los valores posibles de la propiedad DragMode son:
Valor | Descripción
0 | (Valor predeterminado) Manual. Es necesario utilizar el método Drag para iniciar el arrastre del control de código fuente.
1 | Automático. Al hacer clic en el control de código fuente se inicia el arrastre automáticamente.

Observaciones

Cuando DragMode está establecido como 0 (Manual), el control responde a los eventos del ratón y el método Drag debe emplearse para comenzar operaciones de arrastre.

Cuando DragMode está establecido como 1 (Automático), el control no responde a eventos del ratón, y las operaciones de arrastrar comienzan automáticamente cuando el usuario presiona y mantiene el botón primario (izquierdo) del ratón sobre el control.

Al soltar el botón del ratón mientras su puntero está situado sobre un control o un formulario de destino durante una operación de arrastrar, se generará un evento DragDrop para el objeto de destino y finalizará la operación de arrastre. El arrastre también puede desencadenar un evento DragOver.

Nota Mientras se arrastra un control, no recibe otros eventos del teclado o el ratón iniciados por el usuario (KeyPress, MouseDown, MouseMove o MouseUp).

Vea también

DragDrop (Evento) | DragIcon (Propiedad) | DragOver (Evento) | KeyPress (Evento) | MouseDown (Evento) | MouseMove (Evento) | MouseUp (Evento) | OLEDragMode (Propiedad)

Se aplica: CheckBox | ComboBox | CommandButton | CommandGroup | Container (Objeto) | Control (Objeto) | EditBox | Grid | Image | Label | Line | ListBox | OLE Bound (Control) | OLE Container (Control) | OptionButton | OptionGroup | Page | PageFrame | Shape | Spinner | TextBox


DrawMode (Propiedad)

Determina, junto a las propiedades de color, cómo se muestra en la pantalla un control Shape o Line. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.DrawMode[ = nMode]

Valores de la propiedad

nMode
Las valores posibles de la propiedad DrawMode son:
Valor | Descripción
1 | Pluma negra. La forma se dibuja en negro.
2 | Pluma NoCombinar. Inversa del valor 15.
3 | Máscara No Pluma. Combinación de los colores comunes a BackColor y la inversa del ForeColor.
4 | No Copiar Pluma. Inversa del valor 13.
5 | Máscara Pluma No. Combinación de colores comunes al ForeColor y la inversa del BackColor.
6 | Invertir. Inversa del BackColor.
7 | XOR Pluma. Combinación de los colores del ForeColor y del BackColor, pero no de ambos.
8 | No Máscara Pluma. Inversa del valor 9.
9 | Máscara Pluma. Combinación de colores comunes al ForeColor y al BackColor.
10 | No XOR Pluma. Inversa del valor 7.
11 | NOP. Ninguna operación. Los resultados no cambian. En realidad, este valor desactiva la operación de dibujar.
12 | Combinar No Pluma. Combinación del BackColor y la inversa del ForeColor.
13 | (Valor predeterminado). Copiar Pluma. Color especificado por la propiedad ForeColor.
14 | Combinar Pluma No. Combinación del ForeColor y la inversa del BackColor.
15 | Combinar Pluma. Combinación del ForeColor y el BackColor.
16 | Pluma blanca. La forma se dibuja en blanco.

Observaciones

Utilice la propiedad DrawMode para producir efectos visuales con controles Shape o Line o para dibujar con métodos gráficos. A medida que se dibuja una nueva forma, Visual FoxPro compara cada píxel del patrón con el píxel correspondiente del fondo existente y, a continuación, aplica operaciones a nivel de bit. Por ejemplo, el valor 7 utiliza el operador OR exclusivo (XOR) para combinar un píxel de patrón de dibujo con el píxel del fondo.

El efecto exacto del valor de la propiedad DrawMode depende de cómo se combina el color de una línea dibujada en tiempo de ejecución con los colores que ya están en la pantalla. Los valores 1, 6, 7, 11, 13 y 16 proporcionan los resultados más predecibles.

Vea también

Box (Método) | Circle (Método) | DrawWidth (Propiedad) | DrawStyle (Propiedad) | FillColor (Propiedad) | FillStyle (Propiedad) | Line (Método) | Pset (Método)

Se aplica: Form | Line | _SCREEN | Shape


DrawStyle (Propiedad)

Especifica el estilo de línea que se va a utilizar para dibujar con métodos gráficos. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.DrawStyle[ = nStyle]

Valores de la propiedad

nStyle
Las valores posibles de la propiedad DrawStyle son:
Valor | Descripción
0 | (Valor predeterminado) Sólido
1 | Guión
2 | Punto
3 | Guión-Punto
4 | Guión-Punto-Punto
5 | Transparente
6 | Interior sólido
Nota Si DrawWidth está establecido como 1, DrawStyle produce el efecto descrito en la tabla anterior para cada valor. Pero si DrawWidth está establecido con un valor mayor que 1, los valores 1 a 4 producirán una línea sólida.

Vea también

Circle (Método) | DrawMode (Propiedad) | DrawWidth (Propiedad) | FillColor (Propiedad) | FillStyle (Propiedad) | ForeColor (Propiedad) | Line (Método) | PSet (Método)

Se aplica: Form | _SCREEN


DrawWidth (Propiedad)

Especifica el ancho de línea para los resultados de métodos gráficos. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.DrawWidth[ = nSize]

Valores de la propiedad

nSize
Especifica el ancho de la línea en píxeles. Puede establecer DrawWidth con un valor de 1 a 32.767. El valor predeterminado es de 1 píxel de ancho.

Aumente el valor de esta propiedad para aumentar el ancho de la línea.

Vea también

Circle (Método) | DrawMode (Propiedad) | DrawStyle (Propiedad) | FillColor (Propiedad) | FillStyle (Propiedad) | ForeColor (Propiedad)

Se aplica: Form | _SCREEN


DynamicAlignment (Propiedad)

Especifica la alineación del texto y los controles en un objeto Column. La alineación se vuelve a evaluar en tiempo de ejecución cada vez que se actualiza el control cuadrícula. Disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

Column.DynamicAlignment[ = cAlign]

Valores de la propiedad

cAlign
Especifica una expresión de cadena de caracteres que se vuelve a evaluar en tiempo de ejecución y produce uno de los siguientes valores:
Valor | Descripción
0 | Centro izquierda. Alinea el texto completamente a la izquierda y lo centra verticalmente.
1 | Centro derecha. Alinea el texto completamente a la derecha y lo centra verticalmente.
2 | Centro. Alinea el texto en el medio con el mismo número de espacios a izquierda y a derecha, y lo centra verticalmente.
3 | (Valor predeterminado) Automático. Alinea el texto basado en el tipo de datos del origen de control. Los tipos numéricos (numeric, double, float, currency, integer) se alinean a la derecha; los controles con otros tipos de datos se alinean a la izquierda.
4 | Superior izquierda. Alinea el texto completamente a la izquierda y en la parte superior de la columna.
5 | Superior derecha. Alinea el texto completamente a la derecha y en la parte superior de la columna.
6 | Superior centrado. Alinea el texto al medio con el mismo número de espacios a derecha y a izquierda, y a la parte superior de la columna.
7 | Inferior izquierda. Alinea el texto completamente a la izquierda y en la parte inferior de la columna.
8 | Inferior derecha. Alinea el texto completamente a la derecha y en la parte inferior de la columna.
9 | Inferior centrado. Alinea el texto al medio con igual número de espacios a derecha y a izquierda y a la parte inferior de la columna.

Vea también

Alignment (Propiedad)

Se aplica a: Column


DynamicBackColor, DynamicForeColor (Propiedades)

Especifica los colores de fondo y primer plano de un objeto Column. Los colores se vuelven a evaluar en tiempo de ejecución cada vez que se actualiza el control cuadrícula. Disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

Column.DynamicBackColor[ = cExpression]Column.DynamicForeColor [ = cExpression]

Valores de la propiedad

cExpression
Especifica una expresión entre comillas que se vuelve a evaluar en tiempo de ejecución cada vez que se actualiza el control cuadrícula. La evaluación en tiempo de ejecución debe producir un solo valor de color.

Observaciones

Es posible utilizar las propiedades DynamicBackColor y DynamicForeColor para crear efectos especiales, como mostrar las filas impares en verde y las pares en gris.

Ejemplo

El ejemplo siguiente utiliza la propiedad DynamicBackColor y el método SetAll para especificar los colores de fondo de los registros de un control cuadrícula. Si el número de un registro mostrado en la cuadrícula es par, la propiedad DynamicBackColor del registro será blanca, de lo contrario DynamicBackColor será verde.

Se coloca un control cuadrícula en un formulario, se abre la tabla customer y sus contenidos se muestran en el control cuadrícula. La propiedad Caption se utiliza para especificar otro título de encabezado (Id. de cliente) para el campo CUST_ID. Se incluye un botón de comando en el formulario para cerrarlo.

CLOSE ALL  && Close tables and databases
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer  IN 0  && Opens Customer table
frmMyForm = CREATEOBJECT('Form')  && Create a Form
frmMyForm.Closable = .f.  && Disable the Control menu box
frmMyForm.AddObject('cmdCommand1','cmdMyCmdBtn')  && Add Command button
frmMyForm.AddObject('grdGrid1','Grid')  && Add Grid control
frmMyForm.grdGrid1.Left = 25  && Adjust Grid position
frmMyForm.grdGrid1.SetAll("DynamicBackColor", ;
"IIF(MOD(RECNO( ), 2)=0, RGB(255,255,255) ;
, RGB(0,255,0))", "Column")  && Alternate white and green records
frmMyForm.grdGrid1.Visible = .T.  && Grid control visible
frmMyForm.cmdCommand1.Visible =.T.  && "Quit" Command button visible
frmMyForm.grdGrid1.Column1.Header1.Caption = 'Customer ID'
frmMyForm.SHOW  && Display the form
READ EVENTS  && Start event processing
DEFINE CLASS cmdMyCmdBtn AS CommandButton  && Create Command button
Caption = '\<Quit'  && Caption on the Command button
Cancel = .T.  && Default Cancel Command button (Esc)
Left = 125  && Command button column
Top = 210  && Command button row
Height = 25  && Command button height
PROCEDURE Click
CLEAR EVENTS  && Stop event processing, close Form
CLOSE ALL  && Close table and database
ENDDEFINE

Vea también

BackColor, ForeColor (Propiedades)

Se aplica a: Column


DynamicCurrentControl (Propiedad)

Especifica qué control contenido en un objeto Column se utiliza para mostrar los valores de la celda activa. El nombre del control se vuelve a evaluar cada vez que se actualiza el control cuadrícula. Disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

Column.DynamicCurrentControl[ = cExpression]

Valores de la propiedad

cExpression
En tiempo de ejecución, da como resultado el nombre del control que muestra y acepta datos para la celda activa en Columna.

Observaciones

El control predeterminado es un TextBox que tiene Text1 como propiedad Name. Utilice el método AddObject para agregar otros controles.

Si la propiedad Sparse de Column está establecida como verdadero (.T.), sólo la celda activa de Column utilizará el objeto especificado en el valor de la propiedad DynamicCurrentControl para mostrar datos; las otras celdas muestran datos mediante un control TextBox. Si la propiedad Sparse está establecida como falso (.F.), todas las celdas de Column utilizarán el objeto especificado en el valor de la propiedad DynamicCurrentControl para mostrar datos.

Vea también

AddObject (Método) | CurrentControl (Propiedad)

Se aplica a: Column


DynamicFontBold, DynamicFontItalic, DynamicFontStrikethru, DynamicFontUnderline (Propiedades)

Especifica que el texto que se muestra en un objeto Columna tiene uno o más de los estilos siguientes: Negrita, Cursiva, Tachado o Subrayado. La expresión lógica se vuelve a evaluar cada vez que se actualiza el control cuadrícula. Disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

Column.DynamicFontBold[ = "lExpr"]Column.DynamicFontItalic [ = "lExpr"]Column.DynamicFontStrikeThru [ = "lExpr"]Column.DynamicFontUnderline[ = "lExpr"]

Valores de la propiedad

"lExpr"
Da como resultado verdadero (.T.) o falso (.F.). Las configuraciones posibles para las propiedades dinámicas de fuente son las siguientes:
Valor | Descripción
Verdadero (.T.) | El estilo de fuente es negrita, cursiva, tachado o subrayado.
Falso (.F.) | (Predeterminado excepto para FontBold) El estilo de fuente no es negrita, cursiva, tachado ni subrayado.

Observaciones

Utilice estas propiedades para controlar la apariencia del texto según los valores de datos en tiempo de ejecución. Por ejemplo, puede establecer DynamicFontUnderline para indicar los nombres de nuevos miembros de una empresa.

Vea también

DynamicFontSize (Propiedad) | DynamicFontName (Propiedad) | DynamicFontBold, DynamicFontItalic, DynamicFontStrikethru, DynamicFontUnderline (Propiedades)

Se aplica a: Column


DynamicFontName (Propiedad)

Especifica el nombre de la fuente empleada para mostrar texto en un objeto Column. La expresión lógica se vuelve a evaluar en tiempo de ejecución cada vez que se actualiza el control cuadrícula. Disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

Column.DynamicFontName[ = cName]

Valores de la propiedad

cName
Da como resultado el nombre de una fuente.

Observaciones

En tiempo de diseño, se muestra una lista de fuentes disponibles cuando se selecciona la propiedad FontName en la ventana Propiedades y se hace clic en la flecha hacia abajo a la derecha del cuadro Configuración de propiedades.

Vea también

FontName (Propiedad) | DynamicFontOutline (Propiedad) | DynamicFontBold, DynamicFontItalic, DynamicFontStrikethru, DynamicFontUnderline (Propiedades)

Se aplica a: Column


DynamicFontOutline (Propiedad)

Especifica si el texto asociado con un objeto Column tiene formato hueco. La expresión lógica se vuelve a evaluar en tiempo de ejecución cada vez que se actualiza el control cuadrícula. Está disponible en tiempo de diseño y en tiempo de ejecución.

Column.DynamicFontOutline[ = "lExpr"]

Valores de la propiedad

"lExpr"
Da como resultado verdadero (.T.) o falso (.F.). Las configuraciones para la propiedad DynamicFontOutline son las siguientes:
Valor | Descripción
Verdadero (.T.) | El texto tiene formato hueco.
Falso (.F.) | (Predeterminada) El texto no tiene formato hueco.

Vea también

FontOutline (Propiedad) | DynamicFontShadow (Propiedad) | DynamicFontBold, DynamicFontItalic, DynamicFontStrikethru, DynamicFontUnderline (Propiedades)

Se aplica a: Column


DynamicFontShadow (Propiedad)

Especifica si el texto asociado con un objeto Column tiene sombreado. La expresión lógica se vuelve a evaluar en tiempo de ejecución cada vez que se actualiza el control cuadrícula. Está disponible en tiempo de diseño y en tiempo de ejecución.

Column.DynamicFontShadow[ = "lExpr"]

Valores de la propiedad

"lExpr"
Da como resultado verdadero (.T.) o falso (.F.). Las configuraciones para la propiedad DynamicFontShadow son las siguientes:
Valor | Descripción
Verdadero (.T.) | El texto tiene sombreado.
Falso (.F.) | (Predeterminada) El texto no tiene sombreado.

Vea también

FontShadow (Propiedad) | DynamicFontOutline (Propiedad) | DynamicFontBold, DynamicFontItalic, DynamicFontStrikethru, DynamicFontUnderline (Propiedades)

Se aplica a: Column


DynamicFontSize (Propiedad)

Especifica el tamaño de fuente del texto que se muestra en un objeto Column. El tamaño de fuente se vuelve a evaluar en tiempo de ejecución cada vez que se actualiza el control cuadrícula. Disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

Column.FontSize[ = "nSize"]

Valores de la propiedad

"nSize"
Da como resultado un tamaño de fuente. El tamaño de fuente predeterminado es de 10 puntos.

Observaciones

El valor máximo de nSize es de 2.048 puntos. Una pulgada tiene 72 puntos.

Utilice esta propiedad para cambiar el tamaño de fuente de una fila.

Vea también

DynamicAlignment (Propiedad) | DynamicFontName (Propiedad) | DynamicFontBold, DynamicFontItalic, DynamicFontStrikethru, DynamicFontUnderline (Propiedades)

Se aplica a: Column


DynamicInputMask (Propiedad)

Especifica cómo se introducen y se muestran los datos en un objeto Column. Se vuelve a evaluar en tiempo de diseño cada vez que se actualiza el control cuadrícula. Disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

Column.DynamicInputMask[ = cInputMask]

Valores de la propiedad

cInputMask
Especifica el formato dinámico del texto y de los controles de una columna. cInputMask tiene que evaluarse a una cadena de caracteres del siguiente formato:
[@cFunction] [cMask]

La línea siguiente muestra un formato típico para cInputMask:

Column1.DynamicInputMask = "@R$ ###,###,###.##"

Para obtener información adicional sobre el formato de cFunction y cMask, vea las propiedades Format e InputMask.

Observaciones

La propiedad DynamicInputMask sienta precedente ante las propiedades Format e InputMask.

Si el control especificado mediante la propiedad CurrentControl de la columna es un cuadro de texto, un control numérico o un cuadro combinado, las partes de Format y de InputMask de la expresión DynamicInputMask se pasan a las propiedades Format e InputMask para el cuadro de texto, el control numérico o el cuadro combinado.

Vea también

Format (Propiedad) | InputMask (Propiedad)

Se aplica a: Column


EditorOptions (Propiedad)

Esta propiedad del objeto Application, especifica las opciones del editor de Visual FoxPro que pueden ser habilitadas.

_VFP.EditorOptions [= cOpciones]

Valores Permitidos

cOpciones
Consta de una cadena de caracteres formada por una ó más letras que representan opciones a habilitar ó deshabilitar. La tabla siguiente describe los valores válidos que puede incluir en cOpciones:
Opción del Editor | cOpciones | Valor predeterminado | Tiempo de ejecución
Lista Miembros | l | Desactivado | No
Información Rápida | q | Desactivado | No
Lista Miembros automática | L | Activadas | No
Información Rápida Automática | Q | Activadas | No
Habilitar Hipervínculos (CTRL + Clic para seguir el vínculo) | K | Activadas | Sí
Habilitar Hipervínculos (Clic para seguir el vinculo) | k | Desactivado | Sí
Arrastrar y Soltar entre palabras | W | Desactivado | No
Valores Sugeridos en el Diseñador | T | Activadas | No
Note No pueden usarse juntos valores en mayúsculas y minúsculas de la misma letra en la misma cadena cOpciones.

Valores sugeridos en el Diseñador ("T"), es información sugerida asociada con ítems en listas y combos. Esto incluye los siguiente:

  • Campos en listas de orígenes de dato (tablas y vistas) en Bases de Datos, Diseñadores de Vistas y Formularios (Entorno de Datos)
  • Métodos y eventos mostrados en la lista desplegable Procedimiento en el Editor de métodos del Diseñador de clases o de formularios.

Observaciones

En forma predeterminada, Visual FoxPro habilita Auto IntelliSense. Para desactivar la habilitación automática manteniendo la funcionalidad de IntelliSense usando atajos de teclado ú opciones de menú, use minúsculas en lugar de mayúsculas como en el ejemplo que sigue:

_VFP.EditorOptions = "lq"   && Deshabilita Auto IntelliSense.
_VFP.EditorOptions = "LQ"   && Habilita Auto IntelliSense

Puede deshabilitar toda la funcionalidad de IntelliSense configurando la propiedad EditorOptions con una cadena vacía (""). El valor predeterminado es "LQKT".

Vea también

Función EDITSOURCE( ) | Introducción a IntelliSense | Mostrar miembros | Información rápida | Configurar las opciones del Editor

Se aplica a: Application (Objeto) | _VFP (Variable del sistema)


Enabled (Propiedad)

Especifica si un objeto puede responder a eventos generados por el usuario. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.Enabled[ = lExpr]

Valores de la propiedad

lExpr
Los valores para la propiedad Enabled son:
Valor | Descripción
Verdadero (.T.) | (Predeterminado) Un objeto responde a eventos.
Falso (.F.) | Un objeto no responde a eventos.

Observaciones

La propiedad Enabled permite que los objetos sean habilitados o deshabilitados en tiempo de ejecución. Por ejemplo, puede habilitar objetos que no correspondan al estado actual de la aplicación. También puede deshabilitar un control para restringir su uso. Por ejemplo, un cuadro de edición puede deshabilitarse de forma que muestre información de sólo lectura. Si un control está deshabilitado, no se puede seleccionar.

Cuando un objeto contenedor tiene establecida su propiedad Enabled a falso (.F.), todos los controles que contiene están deshabilitados también. Por ejemplo, si el usuario hace clic en cualquiera de los controles contenidos en un formulario deshabilitado, no se desencadena ningún evento.

Deshabilitar un control Timer estableciendo Enabled a falso (.F.) cancela la cuenta atrás especificada por la propiedad Interval del control Timer.

Vea también

Click (Evento) | DblClick (Evento) | DragDrop (Evento) | DragOver (Evento) | DropDown (Evento) | KeyPress (Evento) | MouseDown (Evento) | MouseMove (Evento) | MouseUp (Evento) | RightClick (Evento) | Scrolled (Evento) | Undock (Evento)

Se aplica: CheckBox | Column | ComboBox | CommandButton | CommandGroup | Container (Objeto) | Control (Objeto) | EditBox | Form | Grid | Image | Label | Line | ListBox | OLE Bound (Control) | OLE Container (Control) | OptionButton | OptionGroup | Page | PageFrame | _SCREEN | Shape | Spinner | TextBox | Timer | ToolBar


EnableHyperlinks (Propiedad)

Especifica si se muestran y habilitan hipervínculos en un control EditBox o TextBox. De lectura/escritura en tiempo de diseño y tiempo de ejecución.

Object.EnableHyperlinks [ = lExpr ]

Parámetros

lExpr
Tipo de dato Lógico. La siguiente tabla muestra los valores para lExpr.
Valor | Descripción
Verdadero (.T.) | Habilita y activa hipervínculos URL dentro del control.
Falso (.F.) | No muestra hipervínculos dentro del control. (Predeterminado)

Observaciones

Configurando la opción global, Habilitar hipervínculos, en el cuadro de diálogo Opciones afecta a la propiedad EnableHyperlinks, la cual puede establecerse en tiempo de ejecución usando _VFP.EditorOptions. Si desactiva globalmente los hipervínculos, Visual FoxPro no tendrá en cuenta a EnableHyperlinks y no activará los hipervínculos.

Como en el editor, la activación de hipervínculos depende de la configuración del _VFP.EditorOptions (si hace clic o CTRL+Clic va al vínculo).

Si la propiedad ShowTips de un formulario se establece como Verdadero (.T.), Visual FoxPro muestra información sobre herramientas tal como "CTRL+Clic para seguir al vínculo" cuando mueve el ratón sobre el hipervínculo. Si un valor esta especificado para la propiedad ToolTipText, Visual FoxPro muestra el texto de información sobre herramientas cuando mueve el ratón sobre cualquier parte del control que no sea el hipervínculo.

Vea también

Propiedades | Ficha Editor, cuadro de diálogo Opciones | Variable del sistema _VFP | EditorOptions (Propiedad) | ShowTips (Propiedad) | ToolTipText (Propiedad)

Se aplica a: EditBox (Control) | TextBox (Control)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


Encrypted (Propiedad)

Especifica si se va a cifrar el código fuente compilado de un proyecto.

Object.Encrypted[ = lExpression]

Valores de la propiedad

lExpression
Los valores para la propiedad Encrypted son:
Valor | Descripción
Verdadero (.T.) | El código fuente compilado está cifrado. Establecer lExpression en verdadero (.T.) proporciona protección adicional al código fuente y el resultado es idéntico a incluir el argumento ENCRYPT en el comando COMPILE.
Falso (.F.) | (Valor predeterminado) El código fuente compilado no está cifrado.

Observaciones

El código fuente de un proyecto incluye archivos de programa y de formato, código fuente de formularios, etiquetas, informes y bibliotecas de clases visuales, y procedimientos almacenados en bases de datos. La propiedad Encrypted corresponde a la casilla de verificación Cifrado de la ficha Proyecto del cuadro de diálogo Información del proyecto.

Vea también

COMPILE | Cuadro de diálogo Información del proyecto

Se aplica a: Project (Objeto)


ErrorNo (Propiedad)

Especifica el número de error para un objeto Exception. De Lectura/Escritura en tiempo de ejecución.

Exception.ErrorNo

Valores de la propiedad

Tipo de dato Numérico

Observaciones

Si la excepción resulta de un comando THROW que especifica un valor para el parámetro eUserExpression, el valor de ErrorNo es 2071.

Idéntico al valor devuelto por la función ERROR() y el primer elemento de la matriz producida por la función AERROR().

Vea también

Propiedades | Exception (Objeto: propiedades, métodos y eventos) | ERROR( ) (Función) | AERROR( ) (Función) | SYS(2018) - Parámetro de mensaje de error | TRY...CATCH...FINALLY (Comando) | Control estructurado de errores

Se aplica a: Exception (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


Exclude (Propiedad)

Especifica si se va a excluir un archivo de una aplicación (.app), una biblioteca de vínculos dinámicos (.dll) o un archivo ejecutable (.exe) cuando se genere a partir de un proyecto. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.Exclude[ = lExpression]

Valores de la propiedad

lExpression
Especifica si el archivo se excluye de un .app, .dll o .exe cuando se genera. Si lExpression es verdadero (.T.), se excluye el archivo; en caso contrario, se incluye el archivo.

El tipo de archivo determina el valor predeterminado de lExpression. Por ejemplo, las tablas se excluyen automáticamente cuando se agregan a un proyecto.

Observaciones

Los archivos excluidos aparecen con un círculo con una barra antes de los nombres en el Administrador de proyectos. Los archivos excluidos se muestran en la ventana Administrador de proyectos para referencia sólo, sin embargo, debe distribuirlos manualmente si la aplicación los necesita. También puede excluir un archivo seleccionando Excluir en el menú Proyecto.

Vea también

Build (Método)

Se aplica a: File (Objeto)


Exclusive (Propiedad)

Especifica si una tabla está asociada o no con un objeto Cursor abierto en modo exclusivo. Disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

DataEnvironment.Cursor.Exclusive[ = lExpr]

Valores de la propiedad

lExpr
Los valores posibles de la propiedad Exclusive son:
Valor | Descripción
Verdadero (.T.) | (Valor predeterminado) La tabla asociada con el Cursor está abierta en modo exclusivo cuando se carga el entorno de datos.
Falso (.F.) | La tabla asociada con el Cursor no está abierta en modo exclusivo cuando se carga el entorno de datos.

Observaciones

Nota Cuando se obtiene acceso al Cursor utilizando CURSORSETPROP( ), la propiedad Exclusive es de sólo lectura en tiempo de ejecución.

Cuando se carga el entorno de datos, puede abrirse en modo exclusivo cada tabla asociada con un Cursor (ningún otro usuario de un entorno multiusuario puede tener acceso a la tabla) o en modo compartido. Utilice la propiedad Exclusive para especificar cómo se obtiene acceso a la tabla.

Nota Si establece la propiedad DataSession como 2 (Sesión privada de datos), el valor predeterminado de la propiedad Exclusive para todos los objetos Cursor del entorno de datos cambiará a falso (.F.).

Para las vistas, el objeto View propiamente dicho siempre se abre en modo compartido. No obstante, las tablas que definen la vista se ven afectadas por la propiedad Exclusive. Para las vistas locales, las tablas de Visual FoxPro que definen la vista se abren en modo exclusivo o compartido, dependiendo de la configuración de la propiedad Exclusive. La propiedad Exclusive no tiene ningún efecto sobre las vistas remotas.

La propiedad Exclusive simula el comportamiento de las cláusulas EXCLUSIVE y SHARE del comando USE.

Vea también

DataSession (Propiedad) | SET EXCLUSIVE | USE

Se aplica a: Cursor


FetchAsNeeded (Propiedad)

Especifica cómo son leídos los registros. Al trabajar con esta propiedad para cursores normales, utilice las funciones CURSORSETPROP( ) y CURSORGETPROP( ). Es de Lectura / Escritura.

Nota Cuando FetchAsNeeded, está establecida en un objeto CursorAdapter con orígenes de datos ODBC o ADO, solamente afecta en la próxima apertura del cursor y se sobrescribe la configuración de propiedad del cursor, cuando se realiza el enlace al objeto CursorAdapter. De tal manera, que cambiar la configuración del cursor usando CURSORSETPROP( ) no tiene efecto.
CursorAdapter.FetchAsNeeded [= lValue]

Valores de la propiedad

lValue
Tipo de dato lógico. La siguiente tabla lista los valores para lValue.
lValue | Descripción
Verdadero (.T.) | Se leen los registros como se necesita.
Falso (.F.) | Para CursorAdapter con orígenes de datos ODBC o ADO, la propiedad MaxRecords determina el número de registros a leer. Para orígenes de datos nativos y XML son leídos todos los registros.

Vea también

Propiedades | CursorAdapter (Objeto: propiedades, métodos y eventos) | CURSORGETPROP( ) (Función) | CURSORSETPROP( ) (Función) | MaxRecords (Propiedad)

Se aplica a: CursorAdapter (Clase)


FetchMemo (Propiedad)

Especifica si el archivo memo es leído con los resultados de las vistas. Al manipular esta propiedad para cursores regulares, utilice las funciones CURSORSETPROP( ) y CURSORGETPROP( ). Es de lectura / Escritura.

Nota Cuando FetchMemo, está establecida en un objeto CursorAdapter con orígenes de datos ODBC o ADO, se sobrescribe la configuración de la propiedad del cursor, cuando se realiza el enlace al objeto CursorAdapter. De tal manera, que cambiar la configuración del cursor usando CURSORSETPROP( ) no tiene efecto.
CursorAdapter.FetchMemo [= lValue]

Valores de la propiedad

lValue
Tipo de dato lógico. La siguiente tabla lista los valores para lValue.
lValue | Descripción
Verdadero (.T.) | El campo memo es leído con el resultado de las vistas.
Falso (.F.) | El campo memo no es leído con el resultado de las vistas.

Observaciones

FetchMemo se aplica en primer lugar para vistas remotas y configurándolo no afecta las vistas locales. De todas formas, puede pre-configurar esta propiedad para las vistas locales que serán migradas a remotas.

Vea también

Propiedades | CursorAdapter (Objeto: propiedades, métodos y eventos) | CURSORGETPROP( ) (Función) | CURSORSETPROP( ) (Función)

Se aplica a: CursorAdapter (Clase)


FetchSize (Propiedad)

Especifica el número de filas progresivamente leídas desde un conjunto de resultados de una tabla remota. Mientras está manipulando esta propiedad para cursores regulares utilice las funciones CURSORSETPROP( ) y CURSORGETPROP( ). Es de Lectura / Escritura.

Nota Cuando FetchSize, está establecida en un objeto CursorAdapter con orígenes de datos ODBC o ADO, se sobrescribe la configuración de la propiedad del cursor, cuando se realiza el enlace al objeto CursorAdapter. De tal manera, que cambiar la configuración del cursor usando CURSORSETPROP( ) no tiene efecto.
CursorAdapter.FetchSize [= nValue]

Valores de propiedad

nValue
Tipo de dato numérico. El parámetro nValue tiene un valor predeterminado de 100 filas. Si nValue es -1, Visual FoxPro recupera el conjunto completo de resultado, el cual es limitado por el valor de la propiedad MaxRecords

Observaciones

FetchSize se aplica, en primer lugar para vistas remotas, y configurándolo no afecta las vistas locales. De todas formas, puede pre-configurar esta propiedad para las vistas locales que serán migradas a remotas.

Vea también

Propiedades | CursorAdapter (Objeto: propiedades, métodos y eventos) | CURSORGETPROP( ) (Función) | CURSORSETPROP( ) (Función)

Se aplica a: CursorAdapter (Clase)


FileClass (Propiedad)

Contiene el nombre de la clase de formulario en la que se basa un formulario de un proyecto. Es de sólo lectura en tiempo de diseño y en tiempo de ejecución.

Object.FileClass

Observaciones

La propiedad FileClass se aplica sólo a los formularios de un proyecto y contiene la cadena vacía para los demás tipos de archivo.

Vea también

FileClassLibrary (Propiedad) | Type (Propiedad)

Se aplica a: File (Objeto) |


FileClassLibrary (Propiedad)

Contiene el nombre de la biblioteca de clases que contiene la clase en la que se basa un formulario de un proyecto. Es de sólo lectura en tiempo de diseño y en tiempo de ejecución.

Object.FileClassLibrary

Observaciones

La propiedad FileClassLibrary sólo se aplica a los formularios de un proyecto y contiene la cadena vacía para los demás tipos de archivo.

Vea también

FileClass (Propiedad) | Type (Propiedad)

Se aplica a: File (Objeto) |


FillColor (Propiedad)

Especifica el color que se utiliza para llenar formas dibujadas en un objeto mediante rutinas gráficas. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.FillColor[ = nColor ] Object.FillColor[ = RGB(nRedValue, nGreenValue, nBlueValue) ]

Valores de la propiedad

nColor
Especifica un solo número que representa el color. De forma predeterminada, FillColor se establece como 0 (Negro). Para obtener más información sobre la configuración de color, vea el tema BackColor, ForeColor (Propiedades).
nRedValue, nGreenValue, nBlueValue
Especifican tres intensidades distintas de color que comprenden el color de relleno, y deben emplearse con la función RGB( ) para consolidar los tres componentes de color en un número, lo que en realidad es la propiedad FillColor.
Nota En la ventana Propiedades, puede hacer doble clic en cualquiera de las propiedades de color para mostrar el cuadro de diálogo Color. A continuación, podrá elegir o definir colores en este cuadro de diálogo. Las intensidades de rojo, verde y azul que corresponden al color que elija se convertirán en los valores de estas propiedades cuando cierre el cuadro de diálogo Color.

Observaciones

Si la propiedad FillStyle se establece en su valor predeterminado, 1 (Transparente), se pasará por alto el valor de FillColor.

Sólo puede llenarse una forma cerrada, como un círculo, un cuadro o una elipse.

Los objetos Shape utilizan la propiedad BackColor para especificar el color de relleno.

Vea también

BackColor, ForeColor (Propiedades) | BorderColor (Propiedad) | Box (Método) | Circle (Método) | FillStyle (Propiedad) | ForeColor (Propiedad) | GETCOLOR( ) | RGB( )

Se aplica a: Form | _SCREEN | Shape


FillStyle (Propiedad)

Especifica el patrón de relleno empleado para rellenar formas y figuras creadas con los métodos gráficos Circle y Box. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.FillStyle[ = nStyle]

Valores de la propiedad

nStyle
Especifica el patrón de relleno empleado para llenar una forma o una figura. Los valores posibles de la propiedad FillStyle son:
Valor | Descripción
0 | Sólido.
1 | (Valor predeterminado) Transparente. Se pasa por alto la propiedad FillColor.
2 | Línea horizontal.
3 | Línea vertical.
4 | Diagonal hacia arriba. Líneas diagonales hacia arriba desde la esquina superior izquierda a la inferior derecha.
5 | Diagonal hacia abajo. Diagonal hacia abajo desde la esquina inferior izquierda a la superior derecha.
6 | Cruz. Líneas verticales y horizontales en cruz que forman cuadrados.
7 | Cruz diagonal.

Vea también

BorderStyle (Propiedad) | Box (Método) | Circle (Método) | DrawMode (Propiedad) | DrawStyle (Propiedad) | DrawWidth (Propiedad) | FillColor (Propiedad)

Se aplica a: Form | _SCREEN | Shape


Filter (Propiedad)

Excluye los registros que no cumplen los criterios de la expresión especificada. Disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

DataEnvironment.Cursor.Filter[ = cExpr]

Valores de la propiedad

cExpr
Cualquier expresión de Visual FoxPro, generalmente una expresión que opere sobre un conjunto de registros.

Observaciones

Imita el comportamiento de SET FILTER.

Nota Cuando se tiene acceso al objeto Cursor mediante CURSORSETPROP( ), la propiedad Filter es de sólo lectura en tiempo de ejecución.

Vea también

SET FILTER

Se aplica a: Cursor | CURSORSETPROP( ) (Función)


FirstElement (Propiedad)

Especifica el primer elemento de una matriz que se va a mostrar en un control ComboBox o ListBox. Está disponible en tiempo de diseño y en tiempo de ejecución.

Control.FirstElement[ = nElement]

Valores de la propiedad

nElement
Especifica qué elemento de la matriz se va a mostrar como primer elemento de la lista.

Observaciones

Esta propiedad sólo está disponible cuando RowSource es una matriz (RowSourceType = 5). Observe que la propiedad FirstElement sólo se aplica a los controles ComboBox y ListBox que tienen una columna.

Vea también

NumberOfElements (Propiedad) | RowSource (Propiedad)

Se aplica a: ComboBox | ListBox


Flags (Propiedad)

Especifica el marcador deseado, configurado como ha sido descrito por los parámetros nFlags en la función XMLUPDATEGRAM( ). Es de Lectura / Escritura en tiempo de diseño y de ejecución.

Nota Flags se aplica solamente cuando la propiedad CursorAdapter DataSourceType está establecida a "XML". El objeto CursorAdapter pasa marcadores o parámetros especificados por la propiedad Flags al crear un XML UpdateGram. El objeto CursorAdapter evalúa Flags solamente una vez por cada operación de actualización.
CursorAdapter.Flags [= nFlags]

Valores de la propiedad

nFlags
Tipo de dato entero. El parámetro nFlags, configura nFlag desde la función XMLUPDATEGRAM( ) y su valor predeterminado es 0.

Vea también

Propiedades | CursorAdapter (Objeto: propiedades, métodos y eventos) | UpdateGram (Propiedad)

Se aplica a: CursorAdapter (Clase)


FontBold, FontItalic, FontStrikethru, FontUnderline (Propiedades)

Especifica que el texto tiene uno o más de los estilos siguientes: Negrita, Cursiva, Tachado o Subrayado. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.FontBold[ = lExpr]Object.FontItalic [ = lExpr]Object.FontStrikeThru[ = lExpr]Object.FontUnderline[ = lExpr]

Valores de la propiedad

lExpr
Las configuraciones posibles de las propiedades de fuentes son:
Valor | Descripción
Verdadero (.T.) | El estilo de fuente es negrita, cursiva, tachado o subrayado.
Falso (.F.) | (Valor predeterminado salvo para FontBold) El estilo de fuente no es negrita, cursiva, tachado o subrayado.

Observaciones

En general, cambie la propiedad FontName antes de establecer los atributos de tamaño y estilo con las propiedades FontSize, FontBold, FontItalic, FontStrikethru y FontUnderline. Sin embargo, cuando se establecen fuentes TrueType menores de 8 puntos, deberá establecer el tamaño de puntos con la propiedad FontSize y, a continuación, la propiedad FontName, para volver a establecer el tamaño con la propiedad FontSize. El entorno Windows utiliza una fuente distinta para fuentes TrueType que son menores de 8 puntos.

Nota Las fuentes disponibles varían según la configuración del sistema, el monitor empleado y los dispositivos de impresión. Las propiedades relacionadas con las fuentes sólo pueden establecerse con valores para los que existen fuentes.
Nota La propiedad FontBold no se aplica al objeto Page.

Vea también

FontName (Propiedad) | FontSize (Propiedad) | SetAll (Método)

Se aplica: CheckBox | Column | ComboBox | CommandButton | EditBox | Form | Grid | Header | Label | ListBox | OptionButton | Page | _SCREEN | Spinner | TextBox


FontCharSet (Propiedad)

Especifica el conjunto o juego de caracteres del lenguaje de la fuente utilizada para mostrar texto para todos los objetos que soportan fuentes. Es de lectura/escritura en tiempo de diseño y en tiempo de ejecución.

Objeto.FontCharSet [ = nFontCharSet ]

Parámetros

Tipo de dato numérico. La siguiente tabla lista los valores para FontCharSet.

nFontCharSet | Juego de caracteres
0 | Caracteres estándar de Windows (ANSI)
1 | Predeterminado
2 | Símbolo
77 | Macintosh
128 | Japonés
129 | Coreano
134 | Chino simplificado
136 | Chino tradicional
161 | Griego
162 | Turco
163 | Vietnamita
177 | Hebreo
178 | Arábico
186 | Báltico
204 | Ciríllico
238 | Europeo Central
255 | OEM/DOS

Observaciones

Cuando se establece la propiedad FontCharSet, se debe utilizar un valor numérico, no el nombre del juego de caracteres del lenguaje, como por ejemplo, Occidental.

Visual FoxPro intenta recuperar el identificador del conjunto de caracteres para la fuente que se especifique. Si Visual FoxPro no puede encontrar el identificador del conjunto de caracteres o si se establece un valor no válido de FontCharSet para un conjunto de fuente en particular, el administrador de fuentes de Windows realiza la sustitución apropiada utilizando el conjunto de caracteres predeterminado, normalmente ANSI o Symbol.

Las fuentes admiten solo ciertos juegos de caracteres de lenguaje. Para escoger un juego de caracteres de lenguaje que una fuente pueda admitir, seleccione la propiedad FontCharSet en la ventana Propiedades y haga clic en el botón puntos suspensivos (…) que aparece para abrir el cuadro de diálogo Fuente. Puede seleccionar un juego de caracteres de lenguaje desde la lista desplegable Script. Puede además cambiar la fuente, tamaño y estilo. Visual FoxPro actualiza las propiedades de la fuente con los valores cambiados.

Si se cambia la fuente a una para la cual el valor actual de FontCharSet no está permitido, Visual FoxPro reestablece la propiedad FontCharSet.

Si la propiedad Style para una etiqueta se establece en 3 (Soporte de Temas de Windows XP), la propiedad FontCharSet se ignora. Si la propiedad Themes se establece en Verdadero (.T.) para una cuadrícula, la propiedad FontCharSet para el Header de la cuadrícula se ignora. Para mostrar el Header de la cuadrícula utilizando la propiedad FontCharSet, establecer Themes de la cuadrícula como Falso (.F.).

La función GETFONT( ) permite pasar o recuperar un tipo de fuente de una secuencia de texto.

Vea también

Propiedades | GETFONT( ) (Función) | Style (Propiedad) | AFONT( ) (Función)

Se aplica a: CheckBox (Control) | Column (Objeto) | ComboBox (Control) | CommandButton (Control) | EditBox (Control) | Form (Objeto) | Grid (Control) | Header (Objeto) | Label (Objeto) | ListBox (Control) | OptionButton (Control) | Page (Objeto) | _SCREEN (Variable del sistema) | Spinner (Control) | TextBox (Control)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


FontCondense, FontExtend (Propiedades)

Sólo está disponible en Visual FoxPro para Macintosh.


FontName (Propiedad)

Especifica el nombre de la fuente empleada para mostrar texto. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.FontName[ = cName]

Valores de la propiedad

cName
Especifica el nombre de la fuente. El valor predeterminado es Arial.

Observaciones

El valor predeterminado de la propiedad FontSize es 9 puntos. Las fuentes disponibles varían según la configuración del sistema. Las propiedades relacionadas con fuentes sólo pueden establecerse en valores para los que existan fuentes. En tiempo de diseño, se muestra una lista de fuentes disponibles cuando se selecciona la propiedad FontName en la ventana Propiedades y hace clic en la flecha hacia abajo a la derecha del cuadro “Configuración de propiedad”.

En general, cambie FontName antes de establecer atributos de tamaño y estilo con las propiedades FontSize, FontBold, FontItalic, FontStrikethru y FontUnderline.

Vea también

FontBold (Propiedad) | FontItalic (Propiedad) | FontStrikethru (Propiedad) | FontUnderline (Propiedad) | FontSize (Propiedad)

Se aplica: CheckBox | Column | ComboBox | CommandButton | EditBox | Form | Grid | Header | Label | ListBox | OptionButton | Page | _SCREEN | Spinner | TextBox


FontOutline (Propiedad)

Se incluye por compatibilidad con Macintosh.


FontShadow (Propiedad)

Se incluye por compatibilidad con Macintosh.


FontSize (Propiedad)

Especifica el tamaño de fuente para el texto mostrado con un objeto. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.FontSize[ = nSize]

Valores de la propiedad

nSize
Especifica el tamaño de la fuente en puntos. El tamaño predeterminado de fuente es 9 puntos.

Observaciones

El valor máximo de nSize es 127 puntos. Una pulgada tiene 72 puntos.

En general, debe cambiar la propiedad FontName antes de establecer los atributos de tamaño y estilo con las propiedades FontSize, FontBold, FontItalic, FontStrikethru y FontUnderline. Sin embargo, cuando se establecen fuentes TrueType menores de 8 puntos, deberá establecer el tamaño de puntos con la propiedad FontSize y, a continuación, la propiedad FontName, para volver a establecer el tamaño con la propiedad FontSize. El entorno Windows usa otra fuente diferente para las fuentes TrueType de menos de 8 puntos.

Nota Las fuentes disponibles varían según la configuración y los dispositivos de impresión del sistema. Las propiedades relacionadas con fuentes sólo pueden establecerse en valores para los que existan fuentes.

Vea también

FontBold (Propiedad) | FontItalic (Propiedad) | FontStrikethru (Propiedad) | FontUnderline (Propiedad)

Se aplica: CheckBox | Column | ComboBox | CommandButton | EditBox | Form | Grid | Header | Label | ListBox | OptionButton | Page | _SCREEN | Spinner | TextBox


ForceCloseTag (Propiedad)

Especifica si se reemplazan las etiquetas de elemento vacío con un conjunto de etiquetas de apertura y cierre para los elementos vacíos. Puede utilizar ForceCloseTag si busca etiquetas de apertura y cierre cuando se analiza (parse) el XML o si se desea aumentar su legibilidad.

ForceCloseTag se aplica cuando se ejecuta el método XMLAdapter ToXML, que crea un XML de acuerdo con esta configuración.

XMLAdapter.ForceCloseTag [= lValue]

Valores de la propiedad

lValue
Tipo de dato Lógico. La siguiente tabla lista los valores para lValue.
lValue | Descripción
Falso (.F.) | No reemplaza las etiquetas de elemento vacío con un conjunto de etiquetas de apertura y cierre para los elementos vacíos. (Predeterminado)
Verdadero (.T.) | Reemplaza las etiquetas de elemento vacío con un conjunto de etiquetas de apertura y cierre para los elementos vacíos.

Ejemplo

El siguiente ejemplo contiene un elemento de etiqueta vacío, <col1/>:

<?xml version = "1.0" encoding="Windows-1252" standalone="yes"?>
<VFPData>
<etest>
<col1>One</col1>
</etest>
<etest>
<col1/>
</etest>
</VFPData>

Configurar ForceCloseTag a Verdadero (.T.) reemplaza las etiquetas del elemento vacío con un conjunto de etiquetas de apertura y cierre para ese elemento. <col1></col1>.

<?xml version = "1.0" encoding="Windows-1252" standalone="yes"?>
<VFPData>
<etest>
<col1>One</col1>
</etest>
<etest>
<col1></col1>
</etest>
</VFPData>

Vea también

Propiedades | XMLAdapter (Objeto: propiedades, métodos y eventos)

Se aplica a: XMLAdapter (Clase)


Format (Propiedad)

Especifica el formato de entrada y resultados de la propiedad Value de un control. Está disponible en tiempo de diseño y en tiempo de ejecución.

Control.Format[ = cFunction]

Valores de la propiedad

cFunction
Especifica las limitaciones de caracteres para la introducción de datos y formato de la presentación.

Los valores válidos de cFunction para un control EditBox son:

Valor | Descripción
K | Selecciona todo el texto cuando el control obtiene el enfoque.

Los valores válidos de cFunction para un control Spinner son:

Valor | Descripción
$ Muestra el símbolo de moneda.
^ Muestra datos numéricos utilizando notación científica.
K | Selecciona todo el texto cuando el control obtiene el enfoque.
L | Muestra ceros a la izquierda (en lugar de espacios) en el cuadro de texto.
R | Muestra la máscara de formato para el cuadro de texto especificada en la propiedad InputMask. Los datos de formatos de máscaras para una entrada más fácil y una presentación más clara (por ejemplo, si la máscara es 99-999, el número 12345 se mostrará como 12-345), pero no se almacena como parte de los datos. Se usa sólo con datos de caracteres o numéricos.
Z | Muestra el valor en blanco si es 0, excepto cuando el control tiene el enfoque.

Los valores válidos de cFunction para un control TextBox y un objeto Column son:

Valor | Descripción
! Convierte los caracteres alfabéticos en mayúsculas. Utilícelo sólo con datos del tipo Carácter.
$ Muestra el símbolo de moneda. Es necesario que la propiedad ControlSource especifique un origen numérico para el cuadro de texto.
^ Muestra datos numéricos utilizando notación científica. Es necesario que la propiedad ControlSource especifique un origen numérico para el cuadro de texto.
A | Sólo permite caracteres alfabéticos (sin espacios ni signos de puntuación).
D | Utiliza el formato actual de SET DATE.
E | Edita los datos tipo Date como fecha BRITISH.
K | Selecciona todo el texto cuando el control obtiene el enfoque.
L | Muestra ceros a la izquierda (en lugar de espacios) en el cuadro de texto. Es necesario que la propiedad ControlSource especifique un origen numérico para el cuadro de texto.
M | Se incluye por compatibilidad con versiones anteriores.
R | Muestra la máscara de formato para el cuadro de texto especificada en la propiedad InputMask. Los datos de formatos de máscaras para una entrada más fácil y una presentación más clara (por ejemplo, si la máscara es 99-999, el número 12345 se mostrará como 12-345), pero no se almacena como parte de los datos. Se usa sólo con datos de caracteres o numéricos.
T | Elimina los espacios en blanco iniciales y finales del campo de entrada.
YS | Muestra valores del tipo Date en un formato de fecha corta determinado por la configuración de fecha corta del Panel de control de Windows.
YL | Muestra valores del tipo Date en un formato de fecha larga determinado por la configuración de fecha larga del Panel de control de Windows.

Observaciones

La propiedad Format simula el comportamiento de la cláusula FUNCTION para los comandos @ ... GET y @ ... EDIT.

La propiedad Format especifica un comportamiento para todo el campo de entrada. Puede mezclar varios códigos de Format, pero siempre afectan a todo lo que hay en el campo de entrada. Esta propiedad contrasta con la propiedad InputMask en el que cada entrada de la máscara de entrada corresponde a una entrada en el campo de entrada.

Vea también

DynamicInputMask (Propiedad) | InputMask (Propiedad)

Se aplica a: Column | ComboBox | EditBox | Spinner | TextBox


FormattedOutput (Propiedad)

Genera XML como salida formateada o como una cadena continua y simple.

FormattedOutput se aplica cuando se ejecuta el método XMLAdapter ToXML, el cual crea XML conforme a esta configuración.

XMLAdapter.FormattedOutput [= lValue]

Valores de la propiedad

lValue
Tipo de dato Lógico. la siguiente tabla lista los valores para lValue.
lValue | Descripción
Verdadero (.T.) | Muestra XML como salida formateada. (Predeterminado)
Falso (.F.) | Muestra XML como una cadena de caracteres simple y continua.

Vea también

Propiedades | XMLAdapter (Objeto: propiedades, métodos y eventos) | ToXML (Método)

Se aplica a: XMLAdapter (Clase)


FormCount (Propiedad)

Contiene el número de objetos Form que hay en un FormSet. No está disponible en tiempo de diseño; es de sólo lectura en tiempo de ejecución.

Object.FormCount

Observaciones

Puede emplear esta propiedad para recorrer todos los Forms de un FormSet y llevar a cabo algunas acciones.

Vea también

Forms (Propiedad)

Se aplica a: FormSet | _SCREEN


Forms (Propiedad)

Una matriz para tener acceso a objetos Form individuales de un FormSet. No está disponible en tiempo de diseño; es de sólo lectura en tiempo de ejecución.

Object.Forms(nIndex)

Valores de la propiedad

nIndex
Identifica un objeto Form de forma exclusiva en un FormSet.

Observaciones

Utilice la propiedad Forms para cambiar los valores de propiedad de los Forms de un FormSet sin utilizar su propiedad Name. Puede emplear la propiedad Forms junto a la propiedad FormCount para recorrer todos los Forms del FormSet y llevar a cabo una acción. Por ejemplo, el código siguiente cambia los títulos de todos los Forms de un FormSet:

FOR x = 1 TO THISFORMSET.FormCount
THISFORMSET.Forms(x).Caption = THISFORMSET.Forms(x).Caption;
+ "[Read Only]"
ENDFOR

Vea también

FormCount (Propiedad) | Objects (Colección)

Se aplica a: FormSet | _SCREEN


FractionDigits (Propiedad)

Para el tipo de datos Numérico, FractionDigits especifica el número de dígitos a la derecha del punto decimal.

XMLField.FractionDigits

Valores de la propiedad

Tipo de dato numérico. FractionDigits especifica el número de dígitos a la derecha del punto decimal. Si no existe ninguno o si no es aplicable FractionDigits, el valor de FractionDigits es -1.

Vea también

Propiedades | XMLField (Objeto: propiedades, métodos y eventos) | Equivalencia entre tipo de datos Visual FoxPro y esquema XML

Se aplica a: XMLField (Clase)


FullName (Propiedad)

Contiene el nombre de archivo de una instancia de Visual FoxPro y el nombre del directorio a partir del cual se ha iniciado la instancia de Visual FoxPro. Es de sólo lectura en tiempo de ejecución.

ApplicationObject.FullName

Observaciones

Utilice la propiedad FullName para determinar el directorio a partir del cual se ha iniciado una instancia de Visual FoxPro.

Vea también

HOME( )

Se aplica a: Application (Objeto) | _VFP (Variable del sistema)


GridLineColor (Propiedad)

Especifica el color de las líneas que separan las celdas de un control Grid. Está disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

Grid.GridLineColor[ = nColor]

–O bien–

Grid.GridLineColor = RGB(nRedValue, nGreenValue, nBlueValue)

Valores de la propiedad

nColor
Especifica un solo número que representa el color. De forma predeterminada, GridLineColor se establece como 0 (Negro).
nRedValue, nGreenValue, nBlueValue
Especifican tres intensidades distintas de color que comprenden el color de la línea de la Cuadrícula, y deben emplearse con la función RGB( ) para consolidar los tres componentes de color en un número, lo que en realidad es la propiedad GridLineColor.
Nota En la ventana Propiedades, puede hacer doble clic en cualquiera de las propiedades de color para mostrar el cuadro de diálogo Color. A continuación, puede elegir o definir colores en este cuadro de diálogo. Las intensidades de rojo, verde y azul que corresponden al color que elija se convertirán en los valores de estas propiedades cuando cierre el cuadro de diálogo Color.

Vea también

GridLines (Propiedad) | GridLineWidth (Propiedad)

Se aplica a: Grid


GridLines (Propiedad)

Determina si se muestran líneas horizontales y verticales en el control Grid. Está disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

Grid.GridLines[ = nSetting]

Valores de la propiedad

nSetting
Los valores posibles de la propiedad GridLinesson:
Valor | Descripción
0 | Ninguno. Sin líneas de cuadrícula.
1 | Horizontal. Sólo líneas de cuadrícula horizontales.
2 | Vertical. Sólo líneas de cuadrícula verticales.
3 | (Valor predeterminado) Ambas. Líneas de cuadrícula horizontales y verticales.

Vea también

GridLineColor (Propiedad) | GridLineWidth (Propiedad)

Se aplica a: Grid


GridLineWidth (Propiedad)

Especifica el grosor, en píxeles, de las líneas que separan las celdas en un control cuadrícula. Está disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

Grid.GridLineWidth[ = nWidth]

Valores de la propiedad

nWidth
Especifica el grosor de la línea que separa las celdas en un control cuadrícula. El valor predeterminado para nWidth es 1 y los valores mínimo y máximo son 1 y 40, respectivamente.

Vea también

GridLineColor (Propiedad) | GridLines (Propiedad)

Se aplica a: Grid


HalfHeightCaption (Propiedad)

Especifica si el título de un formulario tiene la mitad de la altura normal. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.HalfHeightCaption[ = lExpr]

Valores de la propiedad

lExpr
Los valores posibles de la propiedad HalfHeightCaption son:
Valor | Descripción
Verdadero (.T.) | El título del formulario tiene la mitad de la altura normal.
Falso (.F.) | (Valor predeterminado) El título del formulario tiene la altura normal.

Vea también

Caption (Propiedad)

Se aplica a: Form | _SCREEN | Height (Propiedad)


HeaderClass (Propiedad)

Especifica el nombre de la clase de miembro a utilizar cuando se añade un nuevo objeto ecanezado (Header) a un contenedor Column. Es de Lectura / Escritura en tiempo de diseño y ejecución.

La propiedad HeaderClass es utilizada en lugar de MemberClass en un contenedor padre de tipo Column. Para más información sobre la propiedad MemberClass, vea MemberClass (Propiedad).

Nota Si la clase de miembro está basada en una clase almacenada en un archivo de programa (.prg), es necesario asegurarse de que el programa compilado (.fxp) está sincronizado con el archivo .prg.
Column.HeaderClass [ = cClassName ]

Valores de la propiedad

cClassName
Especifica el nombre de la clase de miembro en el archivo de programa (.prg).

Observaciones

No puede editarse o crearse una subclase de la clase Header en una biblioteca de clases visuales (.vcx). Es necesario utilizar un archivo de programa (.prg) para definir la clase Header.

La clase Column solo puede contener un objeto Header, por tanto no existe una propiedad HeaderCount asociada a una columna.

En tiempo de ejecución, modificar las propiedades HeaderClassLibrary y HeaderClass no afecta el encabezado. Puede cambiar el encabezado solamente utilizando los métodos AddObject o NewObject que reemplazaran el encabezado actual por un encabezado nuevo.

Vea también

Clases Miembro | MemberClass (Propiedad) | HeaderClassLibrary (Propiedad) | AddObject (Método) | NewObject (Método)

Se aplica a: Column (Objeto)


HeaderClassLibrary (Propiedad)

Especifica la biblioteca de clases que contiene la clase de miembro asociada a la propiedad HeaderClass. Es de Lectura / Escritura en tiempo de diseño y ejecución.

HeaderClassLibrary es utilizada en lugar de MemberClassLibrary para un contenedor padre de tipo Column. Para más información, vea MemberClassLibrary (Propiedad).

Column.HeaderClassLibrary [= cClassFile]

Valores de la propiedad

Cadena de caracteres. El parámetro cClassFile especifica el nombre de archivo de programa (.prg) que contiene la definición de clase de miembro especificada en HeaderClass.

Observaciones

Visual FoxPro incluye el programa (.prg) HeaderClassLibrary en el proyecto durante la generación del mismo.

Si se establece HeaderClassLibrary en tiempo de ejecución, es necesario utilizar el nombre completo del archivo, incluyendo su extensión.

Vea también

Clases Miembro | HeaderClass (Propiedad) | MemberClassLibrary (Propiedad) | MemberClassLibrary (Propiedad)

Se aplica a: Column (Objeto)


HeaderHeight (Propiedad)

Especifica la altura de los encabezados de columna en el control cuadrícula. Disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

Header.HeaderHeight[ = nHeight]

Valores de la propiedad

nHeight
La altura del encabezado, especificada en píxeles.

Vea también

ScaleMode (Propiedad) | Height (Propiedad) | HEADER( ) (Función)

Se aplica a: Grid


Height (Propiedad)

Especifica la dimensión vertical de un objeto de la pantalla. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.Height[ = nHeight]

Valores de la propiedad

nHeight
Especifica la altura del objeto medida en la unidad especificada por la propiedad ScaleMode del formulario.

Observaciones

Para formularios, en la medida de Height no se incluyen los bordes ni la barra de título. Además si la propiedad ScrollBars está establecida para permitir barras de desplazamiento, Height no incluye el espacio que ocupa la barra de desplazamiento, cuando esta aparece.

Para controles, la altura se mide desde fuera del borde del control.

El valor de esta propiedad cambia cuando el usuario o el código cambian el tamaño del objeto.

Utilice las propiedades Height y Width para cálculos basados en el área total de un objeto.

Nota La propiedad Height es de sólo lectura cuando se aplica a un control contenido en un objeto Column.

Ejemplo

El ejemplo siguiente muestra la forma de utilizar la propiedad Height para especificar la altura de tres botones de comando de un formulario.

El método AddObject se emplea para agregar un control Line y tres botones de comando a un formulario. La propiedad Height especifica la altura en vertical de cada botón de comando.

frmMyForm = CREATEOBJECT('form')  && Create a form
frmMyForm.Closable = .F.  && Disable the Control menu box
frmMyForm.AddObject('shpLine','Line')  && Add a Line control to the form
frmMyForm.AddObject('cmdCmndBtn1','cmdMyCmndBtn1')  && Up Cmnd button
frmMyForm.AddObject('cmdCmndBtn2','cmdMyCmndBtn2')  && Down Cmnd button
frmMyForm.AddObject('cmdCmndBtn3','cmdMyCmndBtn3')  && Quit Cmnd button
frmMyForm.shpLine.Visible = .T.  && Make Line control visible
frmMyForm.shpLine.Top = 20  && Specify Line control row
frmMyForm.shpLine.Left = 125  && Specify Line control column
frmMyForm.cmdCmndBtn1.Visible =.T.  && Up Command button visible
frmMyForm.cmdCmndBtn2.Visible =.T.  && Down" Command button visible
frmMyForm.cmdCmndBtn3.Visible =.T.  && Quit Command button visible
frmMyForm.SHOW  && Display the form
READ EVENTS  && Start event processing
DEFINE CLASS cmdMyCmndBtn1 AS COMMANDBUTTON  && Create Command button
Caption = 'Slant \<Up'  && Caption on the Command button
Left = 50  && Command button column
Top = 100  && Command button row
Height = 25  && Command button height
PROCEDURE Click
ThisForm.shpLine.Visible = .F.  && Hide the Line control
ThisForm.shpLine.LineSlant ='/'  && Slant up
ThisForm.shpLine.Visible = .T.  && Show the Line control
ENDDEFINE
DEFINE CLASS cmdMyCmndBtn2 AS CommandButton  && Create Command button
Caption = 'Slant \<Down'  && Caption on the Command button
Left = 200  && Command button column
Top = 100  && Command button row
Height = 25  && Command button height
PROCEDURE Click
ThisForm.shpLine.Visible = .F.  && Hide the Line control
ThisForm.shpLine.LineSlant ='\'  && Slant down
ThisForm.shpLine.Visible = .T.  && Show the Line control
ENDDEFINE
DEFINE CLASS cmdMyCmndBtn3 AS CommandButton  && Create Command button
Caption = '\<Quit'  && Caption on the Command button
Cancel = .T.  && Default Cancel Command button (Esc)
Left = 125  && Command button column
Top = 150  && Command button row
Height = 25  && Command button height
PROCEDURE Click
CLEAR EVENTS  && Stop event processing, close form
ENDDEFINE

Vea también

Left (Propiedad) | Move (Método) | ScaleMode (Propiedad) | Top (Propiedad) | Width (Propiedad)

Se aplica a: CheckBox | ComboBox | CommandButton | CommandGroup | Container (Objeto) | Control (Objeto) | Custom | EditBox | Form | Grid | Image | Label | Line | ListBox | OLE Bound (Control) | OLE Container (Control) | OptionButton | OptionGroup | PageFrame | _SCREEN | Shape | Spinner | TextBox | Timer | ToolBar


HelpContextID (Propiedad)

Especifica un identificador de contexto para un tema de un archivo de Ayuda con el fin de proporcionar Ayuda interactiva para el objeto. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.HelpContextID[ = nContextID]

Valores de la propiedad

nContextID
Especifica el número de identificación del contexto de un tema de un archivo de Ayuda gráfica o estilo .dbf. El rango válido para números Id. de contexto es de 0 a 268,435,455.

Observaciones

Para crear ayuda interactiva sobre un objeto de la aplicación, debe asignar el mismo número de contexto al objeto y al tema de Ayuda asociado cuando cree el archivo de Ayuda.

Si ha creado una Ayuda para su aplicación, Visual FoxPro llama al archivo de Ayuda y solicita el tema identificado por el número de identificación de contexto. Puede especificar un archivo de Ayuda con SET HELP TO y una clave para activar el archivo de Ayuda con ON KEY LABEL. El compilador de Ayuda necesario para crear Ayuda estilo gráfico se incluye en la Edición profesional de Visual FoxPro.

El número de identificación de contexto es el valor de la propiedad HelpContextID para el objeto que tiene el enfoque. Si no se encuentra un número actual de contexto distinto de cero, se muestra la pantalla principal de contenido del archivo de Ayuda.

Para un objeto servidor, la propiedad HelpContextID especifica el identificador de contexto para la biblioteca de tipos que crea el servidor. La propiedad ServerHelpFile especifica el archivo de Ayuda que contiene el tema correspondiente al identificador de contexto.

Vea también

ServerHelpFile (Propiedad) | SET HELP | SET TOPIC

Se aplica a: CheckBox | ComboBox | CommandButton | CommandGroup | EditBox | Form | Grid | Image | Label | Line | ListBox | OLE Bound (Control) | OLE Container (Control) | OptionButton | OptionGroup | Page | _SCREEN | Server (Objeto) | Shape | Spinner | TextBox | ToolBar


HideSelection (Propiedad)

Especifica si el texto seleccionado aparece seleccionado cuando un control pierde el enfoque. Está disponible en tiempo de diseño y en tiempo de ejecución.

Control.HideSelection[ = lExpr]

Valores de la propiedad

lExpr
Los valores posibles de la propiedad HideSelection son:
Valor | Descripción
Verdadero (.T.) | (Valor predeterminado) El texto seleccionado no aparece seleccionado cuando el control pierde el enfoque.
Falso (.F.) | El texto seleccionado aparece seleccionado cuando el control pierde el enfoque.

Observaciones

Esta propiedad puede utilizarse para indicar el texto que está seleccionado mientras otro formulario o un cuadro de diálogo tiene el enfoque, por ejemplo, en una rutina de comprobación ortográfica.

Vea también

DisabledBackColor, DisabledForeColor (Propiedades) | GotFocus (Evento) | LostFocus (Evento)

Se aplica a: ComboBox | EditBox | Spinner | TextBox


Highlight (Propiedad)

Especifica si aparece seleccionada la celda que tiene el enfoque del control Grid. Está disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

Grid.Highlight [= lExpr ]

Valores de la propiedad

lExpr
Los valores posibles de la propiedad Highlight son:
Valor | Descripción
Verdadero (.T.) | La celda está marcada (resaltada) como seleccionada. (Valor predeterminado)
Falso (.F.) | La celda no está seleccionada.

Observaciones

Si la propiedad HighLight está establecida como verdadera (.T.), puede utilizarla junto con la propiedad SelectOnEntry de un objeto Column para determinar si toda la celda aparece seleccionada. Si establece la propiedad HighLight como falsa (.F.), se ignorará la propiedad SelectOnEntry.

Vea también

HighlightRow (Propiedad) | SelectOnEntry (Propiedad) | HighlightForeColor (Propiedad) | HighlightBackColor (Propiedad) | HighlightStyle (Propiedad)

Se aplica a: Grid (Control)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


HighlightBackColor (Propiedad)

Especifica el color de fondo de una fila del control Grid cuando está seleccionado. La propiedad del control cuadrícula HighlightBackColor se aplica solamente cuando la propiedad del control cuadrícula HighlightStyle está establecida a un valor mayor que 0. Es de lectura / escritura en tiempo de diseño y tiempo de ejecución.

Grid.HighlightBackColor [= nColor ]

Parámetros

nColor
Tipo de dato numérico. HighlightBackColor especifica un entero que representa un valor único de color. Visual FoxPro obtiene la configuración de color predeterminada del color del sistema operativo Windows para los elementos seleccionados. Para mayor información acerca de los valores de colores válidos, vea las propiedades BackColor, ForeColor.

Observaciones

Si HighlightStyle contiene un valor mayor que 0, Visual FoxPro muestra en forma predeterminada HighlightBackColor con un color degradado en un color 50% más claro. Si reemplaza el parámetro, HighlightBackColor Visual FoxPro no aplica ningún efecto de gradiente.

Para más información, vea HighlightForeColor (Propiedad).

Vea también

Propiedades | HighlightStyle (Propiedad) | AllowCellSelection (Propiedad) | HighlightBackColor (Propiedad) | ResetToDefault (Método) | Propiedades DynamicBackColor, DynamicForeColor | Highlight (Propiedad) | HighlightRow (Propiedad) | HighlightStyle (Propiedad)

Se aplica a: Grid (Control) | BROWSE (Comando)


HighlightForeColor (Propiedad)

Especifica el color de primer plano o el color resaltado de un texto en una fila de una Cuadrícula cuando es seleccionada. La propiedad HighlightForeColor en una cuadrícula sólo se aplica cuando la propiedad HighlightStyle contiene un valor mayor a 0. De lectura/escritura en tiempo de diseño y en tiempo de ejecución.

Grid.HighlightForeColor [= nColor ]

Parámetros

nColor
Dato de tipo numérico. HighlightForeColor especifica un valor entero que representa un color. Visual FoxPro deriva la configuración de color predeterminada de la configuración de color de fuente en el sistema operativo Windows para los elementos seleccionados. Para información sobre valores válidos de colores vea las propiedades BackColor y ForeColor.

Observaciones

En Windows XP, puede encontrar la configuración del color de fuente para elementos seleccionados en el cuadro de diálogo Apariencia avanzada. Para abrir el cuadro de diálogo Apariencia avanzada, haga clic con el botón secundario del ratón sobre el escritorio de Windows y luego clic en Propiedades. En el cuadro de diálogo Propiedades de Pantalla, haga clic sobre la ficha Apariencia, luego Avanzada y seleccione Elementos seleccionados en la lista Elementos. El color de la fuente del sistema operativo está indicado en el cuadro Color a la derecha del cuadro Fuente.

En Windows 2000, se puede configurar el color de la fuente para elementos seleccionados en la ficha Apariencia.

Nota Cambiando el color de la fuente para los elementos seleccionados, la configuración cambia para todas las aplicaciones.

Puede seleccionar un color al escribir el valor RGB en las Propiedades del cuadro de configuración de propiedades o mostrar el cuadro de diálogo haciendo doble clic sobre la propiedad dentro de la ventana con la lista de propiedades. El valor RGB para el color seleccionado en el cuadro de diálogo Color será configurado una vez que cierre el cuadro de diálogo.

Después de configurar HighlightStyle con un valor mayor a 0, el resaltado se mantendrá hasta que HighlightStyle vuelva a 0. Si HighlightStyle se establece en un valor de 2, solo se mantendrá el color resaltado. Los elementos seleccionados solo se mostrarán cuando una cuadrícula tenga el foco.

El resaltado afecta a todas las celdas de una fila a excepción de la que esté seleccionada, a menos que la propiedad AllowCellSelection de la cuadrícula esté establecida como Falso (.F.), porque entonces sobrescribe la configuración de las propiedades como BackColor y DynamicBackColor para cualquier columna de la cuadrícula.

El siguiente ejemplo muestra como intercambiar los colores de los elementos seleccionados de Windows y los colores de las fuentes de los elementos seleccionados con HighlightForeColor and HighlightBackColor:

tmpColor1 = THIS.GrdCustomer.HighlightBackcolor
tmpColor2 = THIS.GrdCustomer. HighlightForecolor
THIS.GrdCustomer.HighlightBackcolor= tmpColor2
THIS.GrdCustomer.HighlightForecolor=tmpColor1

Vea también

Propiedades | HighlightStyle (Propiedad) | AllowCellSelection (Propiedad) | HighlightBackColor (Propiedad) | ResetToDefault (Método) | Propiedades DynamicBackColor, DynamicForeColor | Highlight (Propiedad) | HighlightRow (Propiedad) | HighlightStyle (Propiedad)

Se aplica a: Grid (Control) | BROWSE (Comando)


HighlightRow (Propiedad)

Especifica si la fila y la celda actuales de un control Grid están resaltadas. Está disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

Grid.HighlightRow [= lExpr]

Valores de la propiedad

lExpr
Los valores para la propiedad HighlightRow son:
Valor | Descripción
Verdadero (.T.) | Se resaltan la celda y la fila actuales. (Valor predeterminado)
Falso (.F.) | No se resaltan la celda y la fila actuales.

Vea también

Highlight (Propiedad) | HighlightForeColor (Propiedad) | HighlightBackColor (Propiedad) | HighlightStyle (Propiedad)

También aplica: Grid (Control)


HighlightRowLineWidth (Propiedad)

Especifica el grosor del borde que rodea la fila de cuadrícula seleccionada.

Grid.HighlightRowLineWidth [= nValue]

Parámetros

nValue
Especifica el grosor en píxeles de la línea horizontal del borde. El valor mínimo es 0, el máximo es 7 y el predeterminado es 1. El grosor de la línea vertical no se muestra en tiempo de diseño, sino que se trata de un efecto visual en tiempo de ejecución.

Observaciones

Esta propiedad sólo surte efecto cuando el valor de la propiedad HighlightRow está establecido a verdadero (.T.).

Vea también

HighlightRow (Propiedad)

Se aplica a: Grid


HighlightStyle (Propiedad)

Especifica si la fila seleccionada en una Cuadrícula se mantiene resaltada al cambiar el foco a otro control en el formulario. Es de lectura / escritura en tiempo de diseño y tiempo de ejecución.

HighlightStyle trabaja con las propiedades HighlightForeColor y HighlightBackColor al determinar si la fila seleccionada está resaltada y si se mantiene resaltada al presionar la tecla TAB para moverse dentro de la cuadrícula o cuando se hace clic fuera de la cuadrícula para mover el foco a otro control.

Grid.HighlightStyle [ = nValue ]

Parámetros

nValue
Tipo de dato numérico. La siguiente tabla describe la configuración para nValue.
nValue
0 | No se resalta el color para la fila de la cuadrícula (Predeterminado)
1 | Permite resaltar la fila actual.
2 | Permite resaltar la fila actual y persiste cuando la cuadrícula no es el control activo actualmente.

Observaciones

Si HighlightStyle contiene un valor mayor que 0, el color predeterminado de HighlightBackColor aparece degradado un 50% respecto al color resaltado. .

Si HighlightStyle está fijada como 2, solamente persiste el color resaltado. Los elementos seleccionados se muestran solo cuando el control grid tiene el foco.

Si la propiedad Sparse de una columna está establecida a Falso (.F.), la columna no será resaltada cuando la propiedad HighlightStyle del control cuadrícula es establecido a 1 ó 2.

Vea también

Propiedades | HighlightForeColor (Propiedad) | Highlight (Propiedad) | HighlightBackColor (Propiedad) | HighlightRow (Propiedad)

Se aplica a: Grid (Control)


HomeDir (Propiedad)

Especifica el directorio de inicio de un proyecto.

Object.HomeDir[ = cDirectory]

Valores de la propiedad

cDirectory
Especifica el directorio principal del proyecto. El valor predeterminado es el directorio en que está ubicado el archivo de proyecto (.pjx).

Observaciones

El directorio principal de un proyecto es la ruta de acceso relativa para todos los archivos del proyecto. La propiedad HomeDir corresponde al directorio especificado en el cuadro de texto Local de la ficha Proyecto en el cuadro de diálogo Información del proyecto.

Vea también

CURDIR( ) | Cuadro de diálogo Información del proyecto

Se aplica a: Project (Objeto)


HostName (Propiedad)

Devuelve o establece el nombre de host que el usuario de su aplicación Visual FoxPro puede leer. Está disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

Control.HostName [ = cName]

Valores de la propiedad

cName
Devuelve o establece una expresión de cadena que especifica el nombre del host.

Observaciones

Al modificar un objeto, la configuración de la propiedad HostName puede mostrarse en el título de la ventana del objeto. Sin embargo, algunas aplicaciones que ofrecen objetos no muestran HostName.

Vea también

DocumentFile (Propiedad)

Se aplica a: OLE Bound (Control) | OLE Container (Control)


Hours (Propiedad)

Especifica si la parte de las horas de un valor DateTime se mostrará en formato de 12 o de 24 horas. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.Hours[ = nValue]

Valores de la propiedad

nValue
Uno de los siguientes valores:
Valor | Descripción
0 | (Valor predeterminado) El valor de SET HOURS determina si la parte de las horas de un valor DateTime se muestra en el formato de 12 o de 24 horas. Si SET HOURS es 12, la parte correspondiente a las horas de un valor DateTime se mostrará en formato de 12 horas. Si el valor de SET HOURS es 24, la parte correspondiente a las horas de un valor DateTime se mostrará en formato de 24 horas.
12 | La parte correspondiente a las horas de un valor DateTime se mostrará en formato de 12 horas.
24 | La parte correspondiente a las horas de un valor DateTime se mostrará en formato de 24 horas.

Observaciones

El valor de la propiedad Hours se ignora si la propiedad DateFormat está establecida en Short o en Long.

Vea también

Century (Propiedad) | DateFormat (Propiedad) | DateMark (Propiedad) | Seconds (Propiedad) | SET HOURS | StrictDateEntry (Propiedad)

Se aplica a: TextBox


HScrollSmallChange (Propiedad)

Especifica la cantidad que se desplaza un formulario en la dirección horizontal cuando hace clic en una flecha de desplazamiento horizontal. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.HScrollSmallChange[ = nExpression]

Valores de la propiedad

nExpression
Especifica el incremento en el desplazamiento horizontal. La unidad de medida se determina con los valores de la propiedad Scalemode. El incremento predeterminado es de 10 píxeles cuando la propiedad Scalemode está establecida en 3 - Píxeles.

Vea también

ScaleMode (Propiedad) | ScrollBars (Propiedad) | VScrollSmallChange (Propiedad)

Se aplica a: Form


hWnd (Propiedad)

Devuelve un identificador a objetos Forms y Toolbar definidos por el usuario.

Object.hWnd

Observaciones

El entorno operativo Microsoft Windows identifica cada formulario de una aplicación mediante un identificador (hWnd). En las llamadas a la API de Windows se utiliza la propiedad hWnd. Muchas funciones del entorno operativo de Windows requieren el identificador hWnd de la ventana activa como argumento.

Como el valor de esta propiedad puede cambiar durante la ejecución de un programa, no podrá estar seguro de su valor (p. ej., cuando está almacenado en una variable).

El identificador hWnd está disponible en objetos Forms y Toolbar definidos por el usuario y es de sólo lectura tanto en tiempo de diseño como en tiempo de ejecución.

Vea también

Form (Objeto) | ToolBar (Objeto) | _WhToHwnd( ) (Rutina de biblioteca API)


Icon (Propiedad)

Para formularios, especifíca el icono que se muestra, en tiempo de ejecución, al minimizar un formulario. Está disponible en tiempo de diseño y en tiempo de ejecución.

Para objetos Project, especifica el icono mostrado por una aplicación .exe distribuida.

Object.Icon[ = cFileName]

Valores de la propiedad

cFileName
Para un formulario, especifica el nombre de archivo y la ruta de acceso del icono que se va a mostrar cuando se minimíce el formulario. Para una aplicación .exe distribuida, especifica el nombre y la ruta del icono mostrado por la aplicación.

Observaciones

Para formularios, utilice la propiedad Icon para especificar un icono personalizado para cualquier formulario que el usuario pueda minimizar en tiempo de ejecución. Por ejemplo, puede asignar un icono único a un formulario para indicar la función del mismo. Introdúzca el nombre de archivo del icono en la ventana Propiedades en tiempo de diseño. El nombre de archivo que introdúzca deberá tener la extensión .ico y formato de icono. Si no especifica un icono personalizado, se utilizará el icono predeterminado de Visual FoxPro para formularios.

Puede utilizar la biblioteca de iconos de Microsoft Visual FoxPro del subdirectorio Graphics\Icons como origen de los iconos.

Nota Si establece la propiedad Icon en tiempo de diseño y el archivo especificado no existe, Visual FoxPro muestra un mensaje de error pero la propiedad sigue establecida como el archivo especificado. Visual FoxPro pasa por alto la propiedad Icon en tiempo de ejecución si se establece como un archivo que no existe.

Para un objeto Project, utilice Icon para especificar el icono que muestra la aplicación .exe distribuida. No puede especificar un icono para una aplicación .app distribuida de Visual FoxPro.

Vea también

Caption (Propiedad) | Picture (Propiedad)

Se aplica: Form | Project (Objeto) | _SCREEN


IMEMode (Propiedad)

Especifica el valor de ventana de Editor de método Input (IME, Input Method Editor) para un control individual. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.IMEMode[ = nExpression]

Valores de la propiedad

nExpression
Uno de los siguientes valores:
nExpression | Acción de ventana IME
0 | (Valor predeterminado) Ningún control. El sistema operativo determina si se abre la ventana IME cuando el control tenga el enfoque. Si se cierra la ventana IME cuando el control tiene el enfoque, es posible abrirla si se presiona la combinación de teclas que la activa.
1 | Abrir IME. La ventana IME se abrirá cuando el control tenga el enfoque.
2 | Cerrar IME. Se cerrará la ventana IME cuando el control tenga el enfoque. Se puede abrir la ventana IME presionando la combinación de teclas que activa la ventana IME.

Observaciones

Esta propiedad se omite a menos que se esté ejecutando una versión de Microsoft Windows para el Este de Asia.

Vea también

Escribir datos internacionales | IMESTATUS( ) | SET BROWSEIME

Se aplica a: ComboBox | EditBox | TextBox


Increment (Propiedad)

Especifica cuánto aumenta o disminuye el valor del control Spinner cuando se hace clic en la flecha arriba o abajo. Está disponible en tiempo de diseño y en tiempo de ejecución.

Spinner.Increment[ = nIncrement]

Valores de la propiedad

nIncrement
Especifica el número que se va a agregar al Spinner cuando se haga clic en el botón arriba y el número que se va a restar del Spinner cuando se haga clic en el botón hacia abajo. El valor predeterminado es 1,00.

Vea también

RangeLow (Evento) | IncrementalSearch (Propiedad)

Se aplica a: Spinner


IncrementalSearch (Propiedad)

Especifica si un control admite una búsqueda incremental para el manejo del teclado. Está disponible en tiempo de diseño y en tiempo de ejecución.

Control.IncrementalSearch[ = lExpr]

Valores de la propiedad

lExpr
Los valores posibles de la propiedad IncrementalSearch son:
Valor | Descripción
Verdadero (.T.) | (Valor predeterminado) Admite búsqueda incremental.
Falso (.F.) | No admite búsqueda incremental.

Observaciones

Un ejemplo de búsqueda incremental es el siguiente: Si usted busca la palabra "ELÁSTICO", puede escribir E-L-A, etc. A medida que escribe, Visual FoxPro buscará incrementalmente la combinación de letras que ha escrito de modo que coincida con la palabra que busca. Si la encuentra, buscará la primera palabra que comience por la letra E y, a continuación, la primera palabra que comience por EL, y así sucesivamente.

Tenga en cuenta que el valor de la variable del sistema _INCSEEK determina la duración del tiempo de espera hasta que se escriba la letra siguiente. Puede que tenga que ajustar el valor de _INCSEEK para que la búsqueda incremental funcione correctamente.

Un combobox con la propiedad Style fijada en 0 (Cuadro desplegable) solo mostrará la búsqueda incremental en el cuadro de texto si la lista deplegable está a la vista. Con la propiedad Style fijada en 2 (Lista desplegable), la búsqueda incremental se mostrará en el cuadro de texto, sin tener en cuenta si la lista desplegable está a la vista.

Vea también

ComboBox | _INCSEEK (Variable del sistema) | ListBox

Se aplica a: ComboBox | ListBox


InitialSelectedAlias (Propiedad)

Especifica un alias asociado a un objeto Cursor como el alias actual cuando se carga el entorno de datos. Está disponible en tiempo de diseño; es de sólo lectura en tiempo de ejecución.

DataEnvironment.InitialSelectedAlias[ = cText]

Valores de la propiedad

cText
Especifica un nombre de alias asociado a un objeto Cursor.

Observaciones

Simula el comportamiento de SELECT.

Vea también

Alias (Propiedad) | SELECT

Se aplica a: DataEnvironment


InputMask (Propiedad)

Especifica cómo se introducen y muestran los datos en un control. Está disponible en tiempo de diseño y en tiempo de ejecución.

Control.InputMask[ = cMask]

Valores de la propiedad

cMask
Los valores para la propiedad InputMask son:
Valor | Descripción
! Convierte letras minúsculas a letras mayúsculas.
# Dígitos, espacios en blanco y signos.
$ El símbolo de moneda actual (especificado con SET CURRENCY) en una posición fija.
$$ Muestra un símbolo de moneda flotante que siempre aparece junto a los dígitos de los controles Spinner o TextBox.
, Valor actual del símbolo de agrupación de dígitos establecido en las opciones de configuración regional del Panel de control de Windows.
. Carácter actual de SET POINT (valor predeterminado = punto (.)).
9 | Pueden introducirse dígitos y signos, como el signo menos ( – ).
A | Sólo caracteres alfabéticos.
L | Sólo datos lógicos.
N | Sólo letras y dígitos.
X | Puede introducirse cualquier carácter.
Y | Y, y, N y n para los valores lógicos verdadero (.T.) y falso (.F.), respectivamente.

Observaciones

Esta propiedad contrasta con la propiedad Format, en la que se especifica un comportamiento para todo el campo de entrada. Puede mezclar varios códigos de Format, pero siempre afectan a todo lo que hay en el campo de entrada.

Vea también

DynamicInputMask (Propiedad) | Format (Propiedad)

Se aplica a: Column | ComboBox | Spinner | TextBox


InsertCmd (Propiedad)

Especifica el comando a usar para insertar nuevas filas. De lectura/escritura en tiempo de diseño y en tiempo de ejecución.

CursorAdapter.InsertCmd [ = cCommand ]

Valores de la propiedad

cCommand
Tipo de dato carácter. En la siguiente tabla se listan los posibles valores para cCommand.
cCommand | Descripción
Cadena de caracteres o expresión | Especifica una cadena de comando válido para el origen de datos en la propiedad InsertCmdDataSource.
Cadena vacía ("") El objeto CursorAdapter genera automáticamente un comando SQL INSERT si la propiedad AllowInsert está establecida a Verdadero (.T.).

Para más información acerca de generar automáticamente comandos SQL, vea Manejar el acceso a datos usando CursorAdapters.

Vea también

Propiedades | CursorAdapter (Objeto: propiedades, métodos y eventos)

Se aplica a: CursorAdapter (Clase)


InsertCmdDataSource (Propiedad)

Especifica el origen de datos a usar para la propiedad InsertCmd. De lectura/escritura en tiempo de ejecución.

Nota: La propiedad InsertCmdDataSourceType de CursorAdapter determina como se usa la propiedad InsertCmdDataSource.
CursorAdapter.InsertCmdDataSource [= cDataSource]

Valores de la propiedad

cDataSource
Tipo de dato carácter. El parámetro cDataSource especifica el origen de datos usado por la propiedad InsertCmd.

Observaciones

La siguiente tabla describe el comportamiento que se aplica a InsertCmdDataSource dependiendo del valor de InsertCmdDataSourceType.

InsertCmdDataSourceType | InsertCmdDataSource behavior
Vacío ("") InsertCmdDataSource no se tiene en cuenta. Visual FoxPro usa el origen de datos de la propiedad DataSource de CursorAdapter.

Sin embargo, si el cursor asociado con el objeto CursorAdapter está basado en un ActiveX Data Object (ADO) RecordSet, Visual FoxPro usa la funcionalidad del ADO RecordSet para insertar el registro. Para usar esta funcionalidad, asegúrese de establecer como "ADO" la propiedad DataSourceType de CursorAdapter.
"ADO" InsertCmdDataSource debe establecerse como un objeto ADO Command válido. La propiedad ActiveConnection del objeto ADO Command debe establecerse a un objeto ADO Connection válido y abierto.

Visual FoxPro establece la propiedad CommandText del objeto ADO Command a el valor de la propiedad InsertCmd de CursorAdapter. Visual FoxPro divide el comando por parámetros, crea valores de parámetros si los halla, y los establece en el objeto Command.

La operación insertar sucede como:

CursorAdapter.InsertCmdDataSource.Execute()

Para mas información acerca de usar un ADO RecordSet, actualización automática, y generación automática de comandos SQL, vea Manejo de datos utilizando CursorAdapters.
"XML" | Visual FoxPro no tiene en cuenta la propiedad DataSource de CursorAdapter.

Vea también

Propiedades | CursorAdapter (Objeto: propiedades, métodos y eventos)

Se aplica a: CursorAdapter (Clase)


InsertCmdDataSourceType (Propiedad)

Especifica el tipo de origen de datos para la propiedad InsertCmdDataSource. De lectura/escritura en tiempo de diseño y en tiempo de ejecución.

CursorAdapter.InsertCmdDataSourceType [= cDataSourceType]

Valores de la propiedad

cDataSourceType
Tipo de dato carácter. El parámetro cDataSourceType especifica el tipo de origen de datos para la propiedad InsertCmdDataSource.

Observaciones

Si InsertCmdDataSourceType es una cadena vacía ("") o nulo (.NULL.), Visual FoxPro ignora la propiedad InsertCmdDataSource del CursorAdapter y usa las propiedades DataSource y DataSourceType de CursorAdapter.

Para generar un XML UpdateGram, debe establecer el valor de InsertCmdDataSourceType a "XML".

Vea también

Propiedades | CursorAdapter (Objeto: propiedades, métodos y eventos) | UpdateGram (Propiedad)

Se aplica a: CursorAdapter (Clase)


Instancing (Propiedad)

Especifica cómo se puede crear una instancia de un servidor de un proyecto. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.Instancing[ = nExpression]

Valores de la propiedad

nExpression
Especifica cómo se puede instanciar el servidor. La tabla siguiente presenta la lista de valores de nExpression con su correspondiente descripción.
Configuración | Constante FoxPro.h | Descripción
0 | SERVERINSTANCE_NOTCREATABLE | Sólo permite crear instancias de la clase dentro de Visual FoxPro.
1 SERVERINSTANCE_SINGLEUSE (Predeterminado) Permite crear una instancia de la clase tanto dentro de Visual FoxPro como fuera, mediante la Automatización.

Cada petición de una instancia de la clase por un cliente de automatización fuera del proyecto produce el inicio de una copia separada del servidor de automatización.
2 SERVERINSTANCE_MULTIUSE Permite crear una instancia de la clase tanto dentro de Visual FoxPro como fuera, mediante la Automatización.

Cada petición de una instancia de la clase por un cliente de automatización fuera del proyecto tiene como resultado que se proporcione una copia ya en funcionamiento del servidor de automatización como origen de la nueva instancia.

Vea también

GETOBJECT( ) (Función) | ServerClass (Propiedad) | ServerClassLibrary (Propiedad)

Se aplica a: Server (Objeto)


IntegralHeight (Propiedad)

Especifica que el alto de un control EditBox o ListBox se ajustará automáticamente para que se pueda mostrar correctamente el último elemento del control. Especifica que el alto de un control TextBox se ajustará a una línea de texto. Está disponible en tiempo de diseño; es de sólo lectura en tiempo de ejecución.

Object.IntegralHeight[ = lExpr]

Valores de la propiedad

lExpr
Uno de los valores siguientes:
lExpr | Descripción
Verdadero (.T.) | El alto de un control EditBox o ListBox se ajustará hasta que se muestre correctamente el último elemento del control. El alto de un control TextBox se ajustará a una línea de texto.
Falso (.F.) | (Valor predeterminado) No se ajustará el alto de un control EditBox ni de un control ListBox, con lo que es posible que no se muestre correctamente el último elemento del control. El alto de un control TextBox no se ajustará a una línea de texto.

Observaciones

Es posible que la última línea de texto de un control EditBox o ListBox no aparezca completa si el control no tiene el alto correcto. Por ejemplo, el alto del control podría provocar que en el control sólo se viera la mitad superior del último elemento. Establezca IntergralHeight como verdadero (.T.) para que se ajuste automáticamente el alto del control de forma que siempre se muestre correctamente el último elemento del control.

Para un control TextBox, establezca IntergralHeight como verdadero (.T.) para asegurarse de que el control ajustará automáticamente su alto cuando se modifique su propiedad FontSize.

Cuando la propiedad IntegralHeight está establecida como verdadero (.T.), es posible que el valor de la propiedad Height no coincida con el alto actual del control.

Vea también

Height (Propiedad)

Se aplica a: EditBox | ListBox | TextBox


Interval (Propiedad)

Especifica el número de milisegundos entre llamadas a un evento Timer de un control Timer. Está disponible en tiempo de diseño y en tiempo de ejecución.

Timer.Interval[ = nTime]

Valores de la propiedad

nTime
Especifica el número de milisegundos entre eventos Timer. El valor predeterminado es 0, que impide que se desencadene el evento Timer.

Observaciones

Para obtener más información acerca de la propiedad Interval, vea "Inicializar un control Timer" en Realizar acciones específicas a intervalos regulares .

Vea también

Reset (Método) | Timer (Evento)

Se aplica a: Timer


IsAttribute (Propiedad)

Especifica si el campo está representado como un Atributo en el documento XML asociado.

XMLField.IsAttribute [= lValue]

Valores de la propiedad

Dato tipo Lógico. En la siguiente tabla se listan los valores para lValue.

lValue | Descripción
Falso (.F.) | El campo está en forma de Elemento, no en forma de Atributo, en el documento XML asociado. (Predefinido)
Verdadero (.T.) | El campo está representado como un Atributo en el documento XML asociado.

Vea también

Propiedades | XMLField (Objeto: propiedades, métodos y eventos)

Se aplica a: XMLField (Clase)


IsBase64 (Propiedad)

Especifica si el campo en el documento XML está codificado como base64 o hexBinary.

XMLField.IsBase64 [= lValue]

Valores de la propiedad

Dato tipo Lógico. En la siguiente tabla se listan los valores para lValue.

lValue | Descripción
Falso (.F.) | El campo está codificado como hexBinary. (Predefinido)
Verdadero (.T.) | El campo está codificado como base64.

Observaciones

IsBase64 se aplica sólo cuando la propiedad IsBinary es Verdadero (.T.).

Vea también

Propiedades | XMLField (Objeto: propiedades, métodos y eventos) | IsBinary (Propiedad)

Se aplica a: XMLField (Clase)


IsBinary (Propiedad)

Especifica si el campo es Binary en el XML Schema.

XMLField.IsBinary [= lValue]

Valores de la propiedad

Dato tipo Lógico. En la siguiente tabla se listan los valores para lValue.

lValue | Descripción
Falso (.F.) | El campo no es Binary, es String en el XML Schema. (Predefinido)
Verdadero (.T.) | El campo se especifica como Binary en el XML Schema.

Observaciones

Para aplicar la propiedad IsBase64, IsBinary debe ser Verdadero (.T.).

Vea también

Propiedades | XMLField (Objeto: propiedades, métodos y eventos)

Se aplica a: XMLField (Clase)


IsDiffGram (Propiedad)

Indica si el objeto XMLAdapter está asociado con un .NET DiffGram. De lectura/escritura.

Nota Establecer la propiedad IsDiffGram actualmente no afecta al documento XML asociado.
XMLAdapter.IsDiffGram [= lValue]

Valores de la propiedad

lValue
Dato tipo Lógico. En la siguiente tabla se listan los valores para lValue.
lValue | Descripción
Falso (.F.) | El objeto XMLAdapter no es un .NET DiffGram. (Predefinido)
Verdadero (.T.) | El objeto XMLAdapter es un objeto .NET DiffGram.

Observaciones

XMLAdapter detecta si el XML importado es un DiffGram y establece IsDiffGram. Cuando se crea y genera XML desde tablas y se ejecuta el método XMLAdapter ToXML, Visual FoxPro verifica IsDiffGram y crea un XML consistente con su valor.

Vea también

Propiedades | XMLAdapter (Objeto: propiedades, métodos y eventos) | ToCursor (Método) | ToXML (Método)

Se aplica a: XMLAdapter (Clase)


IsLoaded (Propiedad)

Indica si el objeto XMLAdapter está asociado con un documento XML. De sólo lectura.

XMLAdapter.IsLoaded [= lValue]

Valores de la propiedad

lValue
Dato tipo Lógico. En la siguiente tabla se listan los valores para lValue.
lValue | Descripción
Falso (.F.) | XMLAdapter no está asociado con un documento XML. (Predefinido)
Verdadero (.T.) | XMLAdapter está asociado con un documento XML.

Vea también

Propiedades | XMLAdapter (Objeto: propiedades, métodos y eventos)

Se aplica a: Clase XMLAdapter

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y asuntos del producto, vea el tema "Soporte Técnico Microsoft Visual FoxPro"..

© 1992 - 2003 Microsoft Corporation. Reservados todos los derechos.


IsNull (Propiedad)

Especifica si el campo en el documento XML soporta valores nulos.

XMLField.IsNull [= lValue]

Valores de la Propiedad

Dato tipo Lógico. En la siguiente tabla se listan los valores para lValue.

lValue | Descripción
Falso (.F.) | El campo no soporta valores nulos. (Predefinido)
Verdadero (.T.) | El campo soporta valores nulos.

Vea también

Propiedades | XMLField (Objeto: propiedades, métodos y eventos)

Se aplica a: XMLField (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y asuntos del producto, vea el tema "Soporte Técnico Microsoft Visual FoxPro"..

© 1992 - 2003 Microsoft Corporation. Reservados todos los derechos.


ItemBackColor, ItemForeColor (Propiedades)

Especifica el color de fondo y de primer plano que se utiliza para mostrar el texto de elementos de un control ComboBox o ListBox Está disponible en tiempo de diseño y en tiempo de ejecución.

Control.ItemBackColor [= nColor ] -o-

Control.ItemBackColor = RGB( nRedValue, nGreenValue, nBlueValue )
nBlueValue)Control.ItemForeColor[ = nColor]
Control.ItemForeColor [ = nColor ] -o-

Control.ItemForColor = RGB( nRedValue, nGreenValue, nBlueValue )

Valores de la propiedad

nColor
Especifica un entero que representa el color del texto. Para mayor información, vea la tabla de colores en el tema BackColor_ForeColor (Propiedades) .

Observaciones

Para escoger o definir colores, hacer un doble clic en cualquiera de las propiedades de color en la ventana Propiedades para mostrar el cuadro de diálogo Color. Los valores para los colores rojo, verde y azul (RGB) corresponderán al color que elija luego de cerrar el cuadro de diálogo Color.

Vea también

BackColor, ForeColor (Propiedades)

Se aplica a: ComboBox (Control) | ListBox (Control)


ItemData (Propiedad)

Utiliza un índice para hacer referencia a una matriz de una dimensión que contiene el mismo número de elementos que el valor de la propiedad List de un control ComboBox o ListBox. No está disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

Control.ItemData(nIndex)[ = nData]

Valores de la propiedad

nIndex
Especifica el índice del elemento que se va a guardar o recuperar. El nIndex corresponde al orden de presentación de los elementos de la lista.
nData
El número que se va a guardar o recuperar de la lista ItemData.

Observaciones

Utilice la propiedad ItemData para asociar un número específico a cada elemento de un control ComboBox o ListBox. A continuación, podrá utilizar estos números en el código para identificar los elementos de la lista. Por ejemplo, puede utilizar un número de identificación para identificar el nombre de cada empleado en un control ListBox. Cuando llene el control ListBox, llene asimismo los elementos correspondientes de la matriz ItemData con los números de empleado.

Nota Cuando inserta un elemento en una lista con el método AddItem, también se asigna automáticamente un elemento a la matriz ItemData. Sin embargo, el valor no se inicializa, mantiene el valor que estaba en esa posición antes de que agregara el elemento a la lista. Cuando utilice la propiedad ItemData, asegúrese de establecer el valor de cada elemento cuando agregue nuevos elementos a la lista..

Vea también

AddItem (Método) | ItemIDToIndex (Método) | List (Propiedad) | ListItemID (Propiedad) | NewItemID (Propiedad) | RemoveItem (Método) | Selected (Propiedad) | TopItemID (Propiedad)

Se aplica a: ComboBox | ListBox


ItemIDData (Propiedad)

Utiliza un número de identificación único para hacer referencia a una matriz de una dimensión que contiene el mismo número de elementos que el valor de la propiedad List de un control ComboBox o ListBox. No está disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

Control.ItemIDData(nItemID)[ = nData]

Valores de la propiedad

nItemID
Especifica el identificador del elemento, un número de identificación único.
nData
El número que se almacena o recupera de la lista ItemIDData.

Observaciones

Utilice la propiedad ItemIDData para asociar un número específico a cada elemento de un control ComboBox o ListBox. A continuación, podrá utilizar estos números en el código para identificar los elementos. Por ejemplo, puede utilizar un número de identificación para identificar el nombre de cada empleado en un control ListBox. Cuando llene el control ListBox, llene asimismo los elementos correspondientes de la matriz ItemIDData con los números de empleado.

Nota Cuando inserta un elemento en una lista con el método AddItem, también se asigna automáticamente un elemento a la matriz ItemIDData. Sin embargo, el valor no se inicializa, mantiene el valor que estaba en esa posición antes de que agregara el elemento a la lista. Cuando utilice la propiedad ItemIDData, asegúrese de establecer el valor de cada elemento cuando agregue nuevos elementos a la lista. Ésta es la misma matriz a la que se tiene acceso con la propiedad ItemData.

Vea también

IndexToItemID (Método) | List (Propiedad) | ListItemID (Propiedad) | NewItemID (Propiedad) | RemoveItem (Método) | Selected (Propiedad) | TopItemID (Propiedad)

Se aplica a: ComboBox | ListBox


ItemTips (Propiedad)

Especifica si se mostrará información sobre elementos de un cuadro combinado o de un cuadro de lista. Disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

Control.ItemTips[= lExpression]

Valores de la propiedad

lExpression
Los valores para la propiedad ItemTip son:
Valor | Descripción
Verdadero (.T.) | Se mostrará la información para los elementos de un cuadro combinado o de un cuadro de lista.
Falso (.F.) | (Valor predeterminado) No se mostrará la información para los elementos de un cuadro combinado o de un cuadro de lista.

Observaciones

La información sobre un elemento es una ventanita en la que se muestra completamente un cuadro de lista o un cuadro combinado cuando el puntero del ratón está situado sobre el elemento. Establezca esta propiedad en el valor lógico verdadero (.T.) cuando los elementos de un control ComboBox o ListBox superen el ancho del control.

Vea también

ItemData (Propiedad)

Se aplica a: ComboBox | ListBox


IXMLDOMElement (Propiedad)

Contiene una referencia de objeto a un objeto IXMLDOMElement después de la ejecución exitosa de un método LoadXML o Attach de XMLAdapter. Los métodos XMLAdapter trabajan dentro del ámbito de este objeto IXMLDOMElement.

Para mas información acerca de objetos IXMLDOMElement, vea Microsoft XML Core Services (MSXML) 4.0 SDK en la Biblioteca MSDN, sitio Web http://msdn.microsoft.com/library/.

XMLAdapter.IXMLDOMElement

Valores de la propiedad

Referencia de objeto. IXMLDOMElement contiene una referencia de objeto a un objeto IXMLDOMElement. Cuando no se ha llenado, IXMLDOMElement contiene nulo (.NULL.).

Observaciones

El método LoadXML de XMLAdapter apunta al IXMLDOMElement del elemento raíz del documento.

Si pasa un objeto XMLDOMElement como el primer parámetro del método Attach de XMLAdapter, Attach asigna el elemento a la propiedad IXMLDOMElement.

Si pasa un objeto IXMLDOMDocument como el primer parámetro del método Attach de XMLAdapter, Attach asigna su elemento raíz a la propiedad IXMLDOMElement.

Vea también

Propiedades | XMLAdapter (Objeto: propiedades, métodos y eventos) | Método LoadXML | Método Attach

Se aplica a: Clase XMLAdapter

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y asuntos del producto, vea el tema "Soporte Técnico Microsoft Visual FoxPro"..

© 1992 - 2003 Microsoft Corporation. Reservados todos los derechos.


KeyboardHighValue, KeyboardLowValue (Propiedades)

Especifica el valor más alto o más bajo que puede escribirse en un control Spinner mediante el teclado. Está disponible en tiempo de diseño y en tiempo de ejecución.

Spinner.KeyboardHighValue[ = nHigh]Spinner.KeyboardLowValue[ = nLow]

Valores de la propiedad

nHigh
Especifica el valor más alto que puede escribirse. El valor predeterminado para nHigh es 2.147.483.647.
nLow
Especifica el valor más bajo que puede escribirse. El valor predeterminado para nLow es – 2.147.483.647.

Vea también

SpinnerHighValue, SpinnerLowValue (Propiedades) | KEYBOARD (Comando)

Se aplica a: Spinner


Keyfield (Propiedad)

Especifica si el campo es un campo clave.

Keyfield se aplica sólo cuando se ejecuta el método ApplyDiffgram de XMLTable. Puede establecer esta propiedad cuando lo desee; Visual FoxPro no establece esta propiedad.

XMLField.Keyfield [= lValue]

Valores de la propiedad

Dato tipo Lógico. En la siguiente tabla se listan los valores para lValue.

lValue | Descripción
Falso (.F.) | El campo no es un campo clave. (Predefinido)
Verdadero (.T.) | El campo es un campo clave.

Vea también

Propiedades | XMLField (Objeto: propiedades, métodos y eventos) | ApplyDiffgram (Método)

Se aplica a: XMLField (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y asuntos del producto, vea el tema "Soporte Técnico Microsoft Visual FoxPro"..

© 1992 - 2003 Microsoft Corporation. Reservados todos los derechos.


KeyFieldList (Propiedad)

Especifica una lista delimitada por comas de campos primarios para el cursor u objeto CursorAdapter. Cuando se trabaja con esta propiedad para cursores regulares, use las funciones CURSORSETPROP( ) y CURSORGETPROP( ). De lectura/escritura.

Nota: Cuando KeyFieldList, está establecida en un objeto CursorAdapter, se sobrescribe la configuración de la propiedad del cursor, cuando se realiza el enlace al objeto CursorAdapter. De tal manera, que cambiar la configuración del cursor usando CURSORSETPROP() no tiene efecto.
CursorAdapter.KeyFieldList [= cList]

Valores de la Propiedad

cList
Tipo de dato carácter. El parámetro cList especifica una lista delimitada por comas de campos primarios para el cursor u objeto CursorAdapter y no tiene un valor predefinido.
Nota: Debe incluir una lista de nombres de campos cuando use actualización automática para el trabajo de actualizar.

Vea también

Propiedades | CursorAdapter (Objeto: propiedades, métodos y eventos) | CURSORGETPROP( ) (Función) | CURSORSETPROP( ) (Función)

Se aplica a: CursorAdapter (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y asuntos del producto, vea el tema "Soporte Técnico Microsoft Visual FoxPro"..

© 1992 - 2003 Microsoft Corporation. Reservados todos los derechos.


KeyPreview (Propiedad)

Especifica si el evento KeyPress de un formulario intercepta los eventos KeyPress de los controles. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.KeyPreview[ = lExpr]

Valores de la propiedad

lExpr
Las configuraciones posibles de la propiedad KeyPreview son:
Valor | Descripción
Verdadero (.T.) | El formulario recibe primero los eventos KeyPress y, a continuación, los recibe el control activo.
Falso (.F.) | (Valor predeterminado) El control activo recibe los eventos Keypress y el formulario no los recibe.

Observaciones

La propiedad KeyPreview se utiliza para permitir que el formulario controle los eventos KeyPress antes de que el control activo los procese.

Puede utilizar esta propiedad para crear un procedimiento de control del teclado para un Form. Por ejemplo, cuando una aplicación utiliza teclas de función, usted puede procesar las pulsaciones a nivel de formulario en lugar de escribir código para cada control que reciba los eventos de pulsación.

Si un formulario no tiene controles visibles y activados, recibe automáticamente todos los eventos de teclado.

Vea también

Enabled (Propiedad) | KeyPress (Evento) | Visible (Propiedad)

Se aplica: Form | Page | _SCREEN | ToolBar


KeySort (Propiedad)

Especifica cómo enumera Visual FoxPro los elementos en una colección cuando use el comando FOR EACH. Disponible en tiempo de diseño y tiempo de ejecución.

Collection.KeySort [ = nValue ]

Valores de la propiedad

nValue
En la siguiente tabla se listan los valores para nValue.
nValue | Descripción
0 | Indice ascendente (predefinido)
1 | Indice descendente
2 | Clave ascendente
3 | Clave descendente

Observaciones

La propiedad KeySort sea aplica sólo a enumeraciones FOR EACH.

La propiedad KeySort no afecta cómo el método Add de la colección de objetos agrega elementos a una colección. Add siempre agrega elementos por índice al final a menos que especifique un parámetro eBeforeItem o eAfterItem.

Puede tener una colección en la cual ninguno de los elementos tenga claves. En este caso, los últimos dos valores que especifique para nValue, 2 y 3, no aplican. Si especifica un valor de 3, Visual FoxPro usa el valor 1.

Dentro de un bucle FOR EACH de una colección, cambiar la propiedad KeySort no afecta la secuencia de elementos. Sin embargo, puede anidar enumeraciones de colección para cambiar la secuencia. En el siguiente ejemplo, el bucle FOR EACH exterior se ordena usando KeySort con un valor de 1, y el bucle interior se ordena usando KeySort con un valor de 2:

oCollection.KeySort = 1
FOR EACH oItem IN oCollection
oCollection.KeySort = 2
FOR EACH oItem2 IN oCollection
ENDFOR
ENDFOR

Ejemplo

Puede establecer un valor para KeySort como se muestra en el siguiente ejemplo:

* Ordena una colección en orden de índice descendente
oCollection.KeySort = 1

Vea también

Collection (Objeto: propiedades, métodos y eventos) | Add (Clase Collection) (Método) | FOR EACH ... ENDFOR (Comando)

Se aplica a: Collection (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y asuntos del producto, vea el tema "Soporte Técnico Microsoft Visual FoxPro"..

© 1992 - 2003 Microsoft Corporation. Reservados todos los derechos.


LanguageOptions (Propiedad)

Esta propiedad del objeto de aplicación ofrece la capacidad de controlar las configuraciones generales del lenguaje Visual FoxPro. Incluye la capacidad de comprobar la declaración incorrecta de variables de memoria.

_VFP.LanguageOptions [= eValue]

Parámetros

eValue

Valor de bit | Descripción
1 | Es necesaria la declaración estricta de tipos para las variables de memoria.

Observaciones

Cuando se establece el valor de LanguageOptions a 1, habrá que declarar todas las variables de memoria y matrices como LOCAL o PUBLIC antes de utilizarlas. Si se intenta utilizar una variable o matriz no declarada, se generan resultados en la ventana DEBUG OUTPUT. No se genera ningún error. Puede registrar estos resultados en un archivo, como en el código siguiente:

   SET DEBUGOUT TO MyErrorFile

Los resultados de las variables no declaradas en LanguageOptions se delimitan con comas, con el formato siguiente:

LangOptionsErr, DateTime, cLineNo, cProcedure|cMethod, cFileName, cVarName

Elemento | Descripción
LangOptionsErr | Especifica el nombre del tipo resultante para búsquedas y filtros
DateTime | Especifica la marca de tiempo en el momento de la ejecución (= DATETIME( ))
cLineNo | Especifica el número de línea donde se produjo el error (=LINENO( ))
cProcedure|cMethod | Especifica el nombre del procedimiento o método en el que se produjo el error ( = PROGRAM( ))
cFileName | Especifica el nombre del archivo en el que se produjo el error. (=SYS(16( ))
cVarName | Especifica el nombre de la variable no declarada.

Al declarar las variables como PRIVATE no se crea una variable (a diferencia de lo que ocurre al declararlas como PUBLIC o LOCAL), así que el código siguiente genera una entrada en el registro:

   PRIVATE myvar
myvar = 1

Los comandos que crean variables instantáneamente, tales como SCATTER ... NAME, REPORT... NAME y otros, generan entradas de registro, porque tales variables se crean como PRIVATE.

Ejemplo

El código siguiente muestra los resultados de depuración consecuencia de escribir una variable no declarada, RR.

example:
vfp.LanguageOptions=1
RR=4
LangOptionsErr,01/23/01 03:02:41 PM,11,TTT,C:\VFP\TEST\TTT.FXP,RR

En Visual FoxPro sólo se exige el uso estricto de tipos en tiempo de ejecución; deberá ejecutar el código para detectar errores. El uso estricto de tipos afecta a las versiones de desarrollo y de tiempo de ejecución de Visual FoxPro.

Nota El uso de variables privadas como las declaradas con el comando PRIVATE o las creadas mediante la cláusula NAME de determinados comandos generarán errores. Cuando distribuya código que pueda verse afectado si los programadores establecen el valor de esta propiedad en 1, deberá protegerlo de forma que restaure el valor de esta propiedad en 0 cuando sea necesario.

Vea también

PUBLIC | PRIVATE | LOCAL | Establecer propiedades en tiempo de ejecución | Declaración de variables

Se aplica a: Application (Objeto) | _VFP (Variable del sistema)


LastModified (Propiedad)

Contiene la fecha y la hora de la última modificación realizada a un archivo de un proyecto. Es de sólo lectura en tiempo de diseño y en tiempo de ejecución.

Object.LastModified

Observaciones

La propiedad LastModified contiene un valor DateTime que indica cuándo se modificó el archivo por última vez.

Vea también

FDATE( ) (Función) | FTIME( ) (Función)

Se aplica a: File (Objeto)


Left (Propiedad)

Especifica la distancia entre el borde izquierdo de un objeto y su objeto contenedor. Está disponible en tiempo de diseño y en tiempo de ejecución.

Objeto.Left[ = nDist]

Valores de la propiedad

nDist
Especifica la distancia entre el borde izquierdo de un objeto o formulario y el borde izquierdo del objeto contenedor.

El contenedor predeterminado para un formulario es la ventana principal de Visual FoxPro.

Observaciones

La propiedad Left especifica a qué distancia de su posición cero se situará el objeto. Por ejemplo, si un formulario está contenido en la ventana principal de Visual FoxPro, la posición cero es justo a la derecha del borde izquierdo de la ventana principal. Si hay una barra de herramientas acoplada a la izquierda de la ventana principal, la posición cero es justo a la derecha de la barra de herramientas.

Utilice las propiedades Left, Top, Height y Width para operaciones basadas en las dimensiones externas de un objeto, como mover o cambiar el tamaño. Utilice la propiedad ScaleMode para cambiar la unidad de medida.

Nota La propiedad Left es de solo lectura cuando se aplica a un control contenido en un objeto Column.

Ejemplo

El ejemplo siguiente muestra el uso de la propiedad Left para colocar controles en un formulario. El método AddObject se utiliza para agregar un control Line y tres botones de comando al formulario y la propiedad Left especifica su ubicación horizontal en el formulario.

frmMyForm = CREATEOBJECT('Form')  && Crea un formulario
frmMyForm.Closable = .F.  && Disable the window pop-up menu
frmMyForm.AddObject('shpLine','Line')  && Add a Line control to the form
frmMyForm.AddObject('cmdCmndBtn1','cmdMyCmndBtn1')  && Up Cmnd button
frmMyForm.AddObject('cmdCmndBtn2','cmdMyCmndBtn2')  && Down Cmnd button
frmMyForm.AddObject('cmdCmndBtn3','cmdMyCmndBtn3')  && Quit Cmnd button
frmMyForm.shpLine.Visible = .T.  && Make Line control visible
frmMyForm.shpLine.Top = 20  && Specify Line control row
frmMyForm.shpLine.Left = 125  && Specify Line control column
frmMyForm.cmdCmndBtn1.Visible =.T.  && Up Command button visible
frmMyForm.cmdCmndBtn2.Visible =.T.  && Down" Command button visible
frmMyForm.cmdCmndBtn3.Visible =.T.  && Quit Command button visible
frmMyForm.SHOW  && Display the form
READ EVENTS  && Start event processing
DEFINE CLASS cmdMyCmndBtn1 AS COMMANDBUTTON  && Create Command button
Caption = 'Slant \<Up'  && Caption on the Command button
Left = 50  && Command button column
Top = 100  && Command button row
Height = 25  && Command button height
PROCEDURE Click
ThisForm.shpLine.Visible = .F.  && Hide the Line control
ThisForm.shpLine.LineSlant ='/'  && Slant up
ThisForm.shpLine.Visible = .T.  && Show the Line control
ENDDEFINE
DEFINE CLASS cmdMyCmndBtn2 AS CommandButton  && Create Command button
Caption = 'Slant \<Down'  && Caption on the Command button
Left = 200  && Command button column
Top = 100  && Command button row
Height = 25  && Command button height
PROCEDURE Click
ThisForm.shpLine.Visible = .F.  && Hide the Line control
ThisForm.shpLine.LineSlant ='\'  && Slant down
ThisForm.shpLine.Visible = .T.  && Show the Line control
ENDDEFINE
DEFINE CLASS cmdMyCmndBtn3 AS CommandButton  && Create Command button
Caption = '\<Quit'  && Caption on the Command button
Cancel = .T.  && Default Cancel Command button (Esc)
Left = 125  && Command button column
Top = 150  && Command button row
Height = 25  && Command button height
PROCEDURE Click
CLEAR EVENTS  && Stop event processing, close form
ENDDEFINE

Vea también

Height (Propiedad) | Move (Método) | ScaleMode (Propiedad) | Top (Propiedad) | Width (Propiedad)

Se aplica: CheckBox | ComboBox | CommandButton | CommandGroup | Container (Objeto) | Control (Objeto) | Custom | EditBox | Form | Grid | Image | Label | Line | ListBox | OLE Bound (Control) | OLE Container (Control) | OptionButton | OptionGroup | PageFrame | _SCREEN | Shape | Spinner | TextBox | Timer | ToolBar

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


LeftColumn (Propiedad)

Contiene el número de la columna situada más a la izquierda que muestra un control cuadrícula. Es de sólo lectura en tiempo de diseño y en tiempo de ejecución.

Grid.LeftColumn

Observaciones

Utilice la propiedad LeftColumn para determinar qué columnas no son visibles para el usuario. Por ejemplo, si LeftColumn = 3, las columnas 1 y 2 no serán visibles.

Vea también

ActiveColumn (Propiedad) | ActiveRow (Propiedad) | ColumnOrder (Propiedad) | RelativeColumn (Propiedad) | RelativeRow (Propiedad)

Se aplica a: Grid


LineContents (Propiedad)

Especifica el contenido de la línea que produjo un objeto Exception. De lectura/escritura en tiempo de ejecución.

Exception.LineContents

Valores de la propiedad

Dato tipo Carácter.

Observaciones

Idéntico al valor devuelto por la instrucción:

MESSAGE(1)

Vea también

Propiedades | Exception (Objeto: propiedades, métodos y eventos) | MESSAGE( ) (Función) | TRY...CATCH...FINALLY (Comando) | Control estructurado de errores

Se aplica a: Exception (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y asuntos del producto, vea el tema "Soporte Técnico Microsoft Visual FoxPro"..

© 1992 - 2003 Microsoft Corporation. Reservados todos los derechos.


LineNo (Propiedad)

Especifica el número de línea de la instrucción que produjo un objeto Exception. De lectura/escritura en tiempo de ejecución.

Exception.LineNoProperty

Valores de la propiedad

Dato tipo Numérico

Observaciones

Idéntica al valor devuelto por la función LINENO().

Vea también

Propiedades | Exception (Objeto: propiedades, métodos y eventos) | LineNo (Propiedad) | TRY...CATCH...FINALLY (Comando) | Control estructurado de errores

Se aplica a: Exception (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y asuntos del producto, vea el tema "Soporte Técnico Microsoft Visual FoxPro"..

© 1992 - 2003 Microsoft Corporation. Reservados todos los derechos.


LineSlant (Propiedad)

Especifica en qué sentido se inclina una línea, desde la parte superior izquierda a la inferior derecha o desde la inferior izquierda a la superior derecha. Está disponible en tiempo de diseño y en tiempo de ejecución.

Line.LineSlant[ = cSlant]

Valores de la propiedad

cSlant
Las configuraciones posibles de la propiedad LineSlant son:
Valor Descripción
\ (Valor predeterminado) La línea se inclina desde la parte superior izquierda a la inferior derecha.
/ La línea se inclina desde la parte inferior izquierda a la superior derecha.

Ejemplo

El ejemplo siguiente muestra la utilización de la propiedad LineSlant para especificar la dirección en que se inclina un control Line.

Se agrega un control Line a un formulario. Se agregan tres botones de comando al formulario, lo que permite cambiar la dirección en que se inclina la línea y cerrar el formulario.

frmMyForm = CREATEOBJECT('Form')  && Create a Form
frmMyForm.Closable = .F.  && Disable the Control menu box
frmMyForm.AddObject('shpLine','Line')  && Add a Line control to the form
frmMyForm.AddObject('cmdCmndBtn1','cmdMyCmndBtn1')  && Up Cmnd button
frmMyForm.AddObject('cmdCmndBtn2','cmdMyCmndBtn2')  && Down Cmnd button
frmMyForm.AddObject('cmdCmndBtn3','cmdMyCmndBtn3')  && Quit Cmnd button
frmMyForm.shpLine.Visible = .T.  && Make Line control visible
frmMyForm.shpLine.Top = 20  && Specify Line control row
frmMyForm.shpLine.Left = 125  && Specify Line control column
frmMyForm.cmdCmndBtn1.Visible =.T.  && Up Command button visible
frmMyForm.cmdCmndBtn2.Visible =.T.  && Down" Command button visible
frmMyForm.cmdCmndBtn3.Visible =.T.  && Quit Command button visible
frmMyForm.SHOW  && Display the form
READ EVENTS  && Start event processing
DEFINE CLASS cmdMyCmndBtn1 AS COMMANDBUTTON  && Create Command button
Caption = 'Slant \<Up'  && Caption on the Command button
Left = 50  && Command button column
Top = 100  && Command button row
Height = 25  && Command button height
PROCEDURE Click
ThisForm.shpLine.Visible = .F.  && Hide the Line control
ThisForm.shpLine.LineSlant ='/'  && Slant up
ThisForm.shpLine.Visible = .T.  && Show the Line control
ENDDEFINE
DEFINE CLASS cmdMyCmndBtn2 AS CommandButton  && Create Command button
Caption = 'Slant \<Down'  && Caption on the Command button
Left = 200  && Command button column
Top = 100  && Command button row
Height = 25  && Command button height
PROCEDURE Click
ThisForm.shpLine.Visible = .F.  && Hide the Line control
ThisForm.shpLine.LineSlant ='\'  && Slant down
ThisForm.shpLine.Visible = .T.  && Show the Line control
ENDDEFINE
DEFINE CLASS cmdMyCmndBtn3 AS CommandButton  && Create Command button
Caption = '\<Quit'  && Caption on the Command button
Cancel = .T.  && Default Cancel Command button (Esc)
Left = 125  && Command button column
Top = 150  && Command button row
Height = 25  && Command button height
PROCEDURE Click
CLEAR EVENTS  && Stop event processing, close Form
ENDDEFINE

Vea también

DrawMode (Propiedad) | DrawStyle (Propiedad)

Se aplica a: Line


LinkMaster (Propiedad)

Especifica la tabla primaria vinculada a la tabla secundaria que se muestra en un control cuadrícula. Disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

Grid.LinkMaster[ = cName]

Valores de la propiedad

cName
Especifica el alias de la tabla primaria que dirige la presentación de la tabla secundaria en un control cuadrícula.

Observaciones

Utilice la propiedad LinkMaster para establecer una relación de uno a varios entre la tabla primaria, o principal, del formulario y la tabla a la que hace referencia la propiedad RecordSource del control cuadrícula.

Vea también

ChildOrder (Propiedad) | RelationalExpr (Propiedad)

Se aplica a: Grid


List (Propiedad)

Una matriz de cadenas de caracteres empleadas para tener acceso a los elementos de un control ComboBox o ListBox. No está disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

Control.List(nRow [, nCol]])[ = cChar]

Valores de la propiedad

nRow
Especifica la fila del elemento que se recupera mediante el orden de presentación. Por ejemplo, nRow = 3 especifica la tercera fila que se muestra en la lista.
nCol
Especifica la columna del elemento que se recupera mediante el orden de presentación. Por ejemplo, nCol = 2 especifica la segunda columna que se muestra en la lista. Si no se especifica nCol, la propiedad List recupera la primera columna de forma predeterminada. Especifique nCol sólo para controles ComboBox y ListBox que tengan más de una columna.
cChar
Especifica un valor que se agrega a un cuadro combinado o un cuadro de lista.

Observaciones

La propiedad List funciona junto a la propiedad ListCount; al enumerar una lista desde 1 hasta el valor devuelto por ListCount, se devuelven todos los elementos de la lista.

No puede utilizar funciones de matriz con la propiedad List. Sin embargo, si establece la propiedad RowSourceType como 5 (Matriz) y establece la propiedad RowSource como la matriz de valores que van a estar contenidos en la lista, puede usar funciones de matriz en la matriz especificada por la propiedad RowSource.

Nota Cuando RowSourceType se establece como 0 ó 1, agrega elementos a un control ComboBox o ListBox mediante el método AddItem. Para eliminar elementos, utilice el método RemoveItem. Para mantener los elementos en orden alfabético, establezca la propiedad Sorted del control en el valor verdadero (.T.) antes de agregar elementos a la lista.

Ejemplo

En el ejemplo siguiente, se utiliza ListCount para dibujar un círculo alrededor de todos los elementos especificados por la propiedad List del control ComboBox o ListBox

El siguiente ejemplo crea un cuadro de lista. El origen de los elementos que aparecen en el cuadro de lista es una matriz, especificada con las propiedades RowSourceType y RowSource.

La propiedad MultiSelect para el cuadro de lista está establecida en el valor verdadero (.T.), lo que permite realizar varias selecciones desde el cuadro de lista. La propiedad ListCount se utiliza dentro de un bucle FOR ... ENDFOR para mostrar los elementos elegidos en el cuadro de lista. La propiedad Selected se utiliza para determinar los elementos que eligió y la propiedad List sirve para devolver estos elementos.

CLEAR
DIMENSION gaMyListArray(10)
FOR gnCount = 1 to 10  && Fill the array with letters
STORE REPLICATE(CHR(gnCount+64),6) TO gaMyListArray(gnCount)
ENDFOR
frmMyForm = CREATEOBJECT('Form')  && Create a Form
frmMyForm.Closable = .F.  && Disable the Control menu box
frmMyForm.Move(150,10)  && Move the form
* Add "Quit" command button and list box control
frmMyForm.AddObject('cmbCommand1','cmdMyCmdBtn')
frmMyForm.AddObject('lstListBox1','lstMyListBox')
* && Specifies an array containing listbox items
frmMyForm.lstListBox1.RowSourceType = 5
frmMyForm.lstListBox1.RowSource = 'gaMyListArray'
frmMyForm.cmbCommand1.Visible =.T.  && "Quit" Command button visible
frmMyForm.lstListBox1.Visible =.T.  && "List Box visible
frmMyForm.SHOW  && Display the form
READ EVENTS  && Start event processing
DEFINE CLASS cmdMyCmdBtn AS CommandButton  && Create Command button
Caption = '\<Quit'  && Caption on the Command button
Cancel = .T.  && Default Cancel Command button (Esc)
Left = 125  && Command button column
Top = 210  && Command button row
Height = 25  && Command button height
PROCEDURE Click
CLEAR EVENTS  && Stop event processing, close Form
CLEAR  && Clear main Visual FoxPro window
ENDDEFINE
DEFINE CLASS lstMyListBox AS ListBox  && Create ListBox control
Left = 10  && List Box column
Top = 10  && List Box row
MultiSelect = .T.  && Allow selecting more than 1 item
PROCEDURE Click
ACTIVATE SCREEN
CLEAR
? "Selected items:"
? "---------------"
FOR nCnt = 1 TO ThisForm.lstListBox1.ListCount
IF ThisForm.lstListBox1.Selected(nCnt)  && Is item selected?
? SPACE(5) + ThisForm.lstListBox1.List(nCnt) && Show item
ENDIF
ENDFOR
ENDDEFINE

Vea también

AddItem (Método) | IndexToItemID (Método) | ItemIDToIndex (Método) | ListCount (Propiedad) | ListItem (Propiedad) | ListItemID (Propiedad) | RowSource | RowSourceType | Sorted (Propiedad)

Se aplica a: ComboBox | ListBox


ListCount (Propiedad)

Contiene el número de elementos en la parte de lista de un control ComboBox o ListBox. No está disponible en tiempo de diseño; es de sólo lectura en tiempo de ejecución.

Control.ListCount

Ejemplo

El siguiente ejemplo crea un cuadro de lista. El origen de los elementos que aparecen en el cuadro de lista es una matriz, especificada con las propiedades RowSourceType y RowSource.

ListCount se utiliza para dibujar un círculo alrededor de todos los elementos especificados por la propiedad List del control ComboBox o ListBox.

La propiedad MultiSelect para el cuadro de lista está establecida en el valor verdadero (.T.), lo que permite realizar varias selecciones desde el cuadro de lista. La propiedad ListCount se utiliza dentro de un bucle FOR ... ENDFOR para mostrar los elementos elegidos en el cuadro de lista. Las propiedades Selected y List se utilizan para determinar los elementos que se han elegido.

CLEAR
DIMENSION gaMyListArray(10)
FOR gnCount = 1 to 10  && Fill the array with letters
STORE REPLICATE(CHR(gnCount+64),6) TO gaMyListArray(gnCount)
ENDFOR
frmMyForm = CREATEOBJECT('Form')  && Create a Form
frmMyForm.Closable = .f.  && Disable the Control menu box
frmMyForm.Move(150,10)  && Move the form
frmMyForm.AddObject('cmbCommand1','cmdMyCmdBtn')  && Add "Quit" Command button
frmMyForm.AddObject('lstListBox1','lstMyListBox')  && Add list box control
frmMyForm.lstListBox1.RowSourceType = 5  && Specifies an array
frmMyForm.lstListBox1.RowSource = 'gaMyListArray' && Array containing listbox items
frmMyForm.cmbCommand1.Visible =.T.  && "Quit" Command button visible
frmMyForm.lstListBox1.Visible =.T.  && "List Box visible
frmMyForm.SHOW  && Display the form
READ EVENTS  && Start event processing
DEFINE CLASS cmdMyCmdBtn AS CommandButton  && Create Command button
Caption = '\<Quit'  && Caption on the Command button
Cancel = .T.  && Default Cancel Command button (Esc)
Left = 125  && Command button column
Top = 210  && Command button row
Height = 25  && Command button height
PROCEDURE Click
CLEAR EVENTS  && Stop event processing, close Form
CLEAR  && Clear main Visual FoxPro window
ENDDEFINE
DEFINE CLASS lstMyListBox AS ListBox  && Create ListBox control
Left = 10  && List Box column
Top = 10  && List Box row
MultiSelect = .T.  && Allow selecting more than 1 item
PROCEDURE Click
ACTIVATE SCREEN
CLEAR
? "Selected items:"
? "---------------"
FOR nCnt = 1 TO ThisForm.lstListBox1.ListCount
IF ThisForm.lstListBox1.Selected(nCnt)  && Is item selected?
? SPACE(5) + ThisForm.lstListBox1.List(nCnt) && Show item
ENDIF
ENDFOR
ENDDEFINE

Vea también

AddItem (Método) | List (Propiedad) | ListItemID (Propiedad) | RemoveItem (Método)

Se aplica a: ComboBox | ListBox


ListIndex (Propiedad)

Especifica el número de índice del elemento seleccionado en un control ComboBox o ListBox. No está disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

Control.ListIndex[ = nIndex]

Valores de la propiedad

nIndex
Las configuraciones posibles de la propiedad ListIndex son:
Valor | Descripción
0 | (Valor predeterminado) Indica que no hay elementos seleccionados. Para un cuadro combinado, esto significa que el usuario ha escrito un valor que no está en la lista.
1 ... ListCount | El índice del elemento seleccionado.

Observaciones

Lo siguiente muestra la cadena del elemento seleccionado.

? List(MyList.ListIndex)

Puede devolver el mismo valor mediante la propiedad Value del control.

Establecer la propiedad MultiSelect de un control ListBox en Verdadero (.T.) permite seleccionar más de un item. En este caso ListIndex contendrá el índice del elemento actualmente seleccionado.

Vea también

AddItem (Método) | AddListItem (Método) | IndexToItemID (Método) | ItemIDToIndex (Método) | List (Propiedad) | ListItem (Propiedad) | RemoveItem (Método) | Value (Propiedad)

Se aplica a: ComboBox | ListBox


ListItem (Propiedad)

Una matriz de cadenas de caracteres que se emplean para tener acceso a los elementos de un control ComboBox o ListBox mediante el identificador de elemento. No está disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

Control.ListItem(nRow [, nCol])[ = cChar]

Valores de la propiedad

nRow
Especifica la fila desde la que se recupera el elemento. Puede utilizar la propiedad control.listitemID.
nCol
Especifica (opcionalmente) la columna desde la que se deriva el valor. Si sólo especifica listitemID, la primera columna proporciona el valor.
nChar
Representa un valor (opcionalmente) que se debe asignar al valor especificado de Control.listitem.

Observaciones

Utilice la propiedad List para recuperar elementos en el orden en que se muestran. Utilice también la propiedad ListItem para recuperar elementos de acuerdo con su identificador de elemento.

Nota Para agregar elementos a un cuadro combinado o un cuadro de lista, utilice el método AddItem o AddListItem. Para eliminar elementos, utilice el método RemovetItem o RemoveListItem. Para mantener los elementos en orden alfabético, establezca la propiedad Sorted del control como verdadero (.T.) antes de agregar elementos a la lista.

También se establece la propiedad ListItem cuando se establece la propiedad Selected en un control Listbox.

Vea también

AddItem (Método) | AddListItem (Método) | IndexToItemID (Método) | ItemIDToIndex (Método) | ListCount (Propiedad) | List (Propiedad) | ListItemID (Propiedad) | Selected (Propiedad)

Se aplica a: ComboBox | ListBox


ListItemID (Propiedad)

Especifica el número de identificación único para el elemento seleccionado en un control. No está disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

Control.ListItemID[ = nItemID]

Valores de la propiedad

nItemID
Las configuraciones y las interpretaciones de la propiedad ListItemID son:
Valor | Descripción
– 1 | Indica que no hay elementos seleccionados. Para un cuadro combinado, significa que el usuario ha escrito un valor que no está en la lista.
1 (o cualquier número mayor que 1) | El identificador del elemento seleccionado.

Observaciones

Si se elimina un elemento de una lista que utiliza el método RemoveListItem, todos los restantes elementos mantendrán sus números de identificación únicos. Cuando se agrega un elemento a una lista mediante el método AddItem y la propiedad Sorted está establecida como falso (.F.), se asignará el número más bajo disponible a nItemID. Cuando se agrega un elemento a una lista mediante el método AddListItem y la propiedad Sorted está establecida como falso (.F.), podrá asignar cualquier número a nItemID.

También se establece la propiedad ListItemID cuando se establece la propiedad SelectedID en un control Listbox.

Vea también

AddItem (Método) | AddListItem (Método) | IndexToItemID (Método) | ItemIDToIndex (Método) | ListCount (Propiedad) | List (Propiedad) | ListItem (Propiedad) | RemoveItem (Método) | RemoveListItem (Método) | SelectedID (Propiedad)

Se aplica a: ComboBox | ListBox


LoadXML (Método)

Carga XML desde un archivo o cadena en un documento Document Object Model (DOM) y lo anexa al objeto XMLAdapter.

LoadXML también establece la propiedad IXMLDOMElement de XMLAdapter. En adición, si el esquema XML se analiza, Visual FoxPro recarga la colección Tables con un nuevo conjunto de objetos XMLTable y establece las propiedades XMLName, XMLNamespace, XMLPrefix, IsDiffgram, y SOM de XMLAdapter a valores apropiados.

XMLAdapter.LoadXML( cXMLDocument [, lFile [, lValidateOnParse ]] )

Parámetros

cXMLDocument
Especifica un nombre de archivo XML, cadena XML o expresión que se evalúa como un nombre de archivo o cadena XML válidos.
lFile
Especifica si cXMLDocument es un nombre de archivo. El valor predefinido de lFile es False (.F.).
lValidateOnParse
Especifica si el XML debe validarse al analizar. El valor predefinido de lValidateOnParse es True (.T.).

Para mas información acerca de cómo DOM realiza la validación, vea el Microsoft XML Core Services (MSXML) 4.0 SDK en la Biblioteca MSDN sitio Web http://msdn.microsoft.com/library/.

Observaciones

Los valores de las siguientes propiedades afectan la forma como se ejecuta el método LoadXML:

  • DisableEncode
  • MapN19_4ToCurrency
  • NoCpTrans
  • PreserveWhiteSpace
  • WrapCharInCDATA
  • WrapMemoInCDATA
  • XMLSchemaLocation

Vea también

Métodos | XMLAdapter (Objeto: propiedades, métodos y eventos) | IXMLDOMElement (Propiedad) | Tables (XMLAdapter) (Colección) | XMLName (Propiedad) | XMLNamespace (Propiedad) | XMLPrefix (Propiedad) | IsDiffgram (Propiedad) | SOM (Propiedad) | LoadXML (Método)

Se aplica a: XMLAdapter (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y asuntos del producto, vea el tema "Soporte Técnico Microsoft Visual FoxPro"..

© 1992 - 2003 Microsoft Corporation. Reservados todos los derechos.


LockColumns (Propiedad)

Especifica el número de columnas a bloquear en el panel derecho de una cuadrícula, empezando en el lado izquierdo. De lectura/escritura en tiempo de diseño y ejecución.

Después de establecer LockColumns, se deshabilita la capacidad para mover columnas. Las columnas bloqueadas permanecen en la cuadrícula o en la ventana Browse cuando se desplaza a la derecha.

Grid.LockColumns [ = nValue ]

Parámetros

nValue
Dato tipo Numérico. Especifica el número de columnas a bloquear en el panel derecho de una cuadrícula. El valor predefinido es 0. Si nValue es mayor que 0, al establecer nValue a 0 elimina el número actual de columnas bloqueadas.

Observaciones

Una cuadrícula siempre contiene dos paneles; sin embargo, sólo el panel derecho está visible en el modo predefinido. Puede activar el panel izquierdo estableciendo la propiedad SplitBar en verdadero (.T.) y arrastrando la barra de división en la interfase de usuario para exponer el panel izquierdo, o estableciendo un valor para la propiedad Partition.

Una línea separadora de columna, la cual aparece 1 pixel mas ancha que las líneas que separan las otras columnas, indica el área donde terminan las columnas bloqueadas y empiezan las columnas normales.

LockColumns se aplica sólo al panel derecho de la cuadrícula, el cual se muestra como predefinido. Para bloquear columnas en el panel izquierdo de la cuadrícula, cuando está visible por medio de las propiedades Partition o SplitBar, utilice la propiedad LockColumnsLeft.

El método Column SetFocus no trabaja si una columna está bloqueada y no está visible en la ventana de la cuadrícula, por ejemplo, desplazada fuera del lado izquierdo.

Cuando algunas columnas se desplazan fuera de la ventana del Grid a la izquierda, ellas permanecen fuera de la vista y no se hacen visibles de nuevo hasta que se quita el bloqueo. Por ejemplo, suponga una cuadrícula que contiene cinco columnas, y el origen de datos tiene diez columnas. Cuando desplace dos columnas a la derecha, la primer y segunda columnas se desplazan fuera de la cuadrícula a la izquierda.

Suponga que establece LockColumns con el siguiente código:

Grid.LockColumns = 3

La primer, segunda y tercer columnas están ahora bloqueadas. La tercer columna aparece como la primera columna visible en la cuadrícula bloqueada, aun cuando la primer y segunda columnas todavía existen y permanecen fuera de la vista. No puede desplazarse a la izquierda para ver todas las columnas bloqueadas. Esta funcionalidad es útil si desea bloquear las columnas en medio de la cuadrícula y no desea mostrar las columnas precedentes o siguientes.

Ejemplo

El siguiente ejemplo muestra cómo usar LockColumns con BROWSE...NAME:

CLOSE DATABASES
OPEN DATABASE testdata && Abre la base de datos \Samples\Data.
USE Customer
BROWSE NAME Customer
Customer.LockColumns = 2 && Bloquea primeras dos columnas en panel derecho.

Vea también

Propiedades | SplitBar (Propiedad) | Partition (Propiedad) | LockColumnsLeft (Propiedad) | SetFocus (Método) | Bloquear Columnas

Se aplica a: Grid (Control) | BROWSE...NAME (Comando)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y asuntos del producto, vea el tema "Soporte Técnico Microsoft Visual FoxPro"..

© 1992 - 2003 Microsoft Corporation. Reservados todos los derechos.


LockColumnsLeft (Propiedad)

Especifica el número de columnas a bloquear en el panel izquierdo de una cuadrícula, empezando en el lado izquierdo. De lectura/escritura en tiempo de diseño y ejecución.

Las columnas bloqueadas permanecen en la cuadrícula o en la ventana Browse cuando se desplaza a la derecha. LockColumnsLeft se aplica sólo al panel izquierdo de la cuadrícula, el cual no se muestra de forma predeterminada. Después de establecer LockColumns, se deshabilita la posibilidad de mover columnas.

Grid.LockColumnsLeft [ = nValue ]

Parámetros

nValue
Dato tipo Númerico. Especifica un número de columnas a bloquear en el panel izquierdo de una cuadrícula. El valor predefinido es 0. Si nValue mayor que 0, al establecer nValue en 0 elimina el número actual de columnas bloqueadas.

Observaciones

Una línea separador de columna, la cual aparece 1 pixel mas ancha que las líneas que separan las otras columnas, indica el área donde terminan las columnas bloqueadas y empiezan las columnas normales.

Para bloquear columnas en el panel derecho de la cuadrícula, use la propiedad LockColumns.

Ejemplo

El siguiente ejemplo muestra cómo usar LockColumnsLeft con BROWSE...NAME:

CLOSE DATABASES
OPEN DATABASE testdata && Abre la base de datos \Samples\Data.
USE Customer
BROWSE NAME Customer
Customer.LockColumnsLeft = 2 && Bloquea primeras dos columnas en panel izquierdo.

Vea también

Propiedades | LockColumns (Propiedad) | Bloquear Columnas

Se aplica a: Grid (Control) | BROWSE...NAME (Comando)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y asuntos del producto, vea el tema "Soporte Técnico Microsoft Visual FoxPro"..

© 1992 - 2003 Microsoft Corporation. Reservados todos los derechos.


LockScreen (Propiedad)

Determina si un formulario agrupa por lotes todos los cambios en las configuraciones de las propiedades del formulario y sus objetos contenidos. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.LockScreen[ = lExpr]

Valores de la propiedad

lExpr
Los valores para la propiedad LockScreen son:
Valor | Descripción
Verdadero (.T.) | El formulario y sus objetos contenidos reflejan los cambios en las configuraciones de las propiedades en modo por lotes, o todos al mismo tiempo, en lugar de hacerlo en cuanto se producen los cambios.
Falso (.F.) | (Valor predeterminado) El formulario y sus objetos contenidos reflejan los cambios en las configuraciones de las propiedades en cuanto se producen.

Observaciones

Establezca LockScreen como verdadero (.T.) para reducir un elevado número de actualizaciones de pantalla cuando se modifican en tiempo de ejecución propiedades relacionadas con la presentación como BackColor, FontName, etc.

La propiedad LockScreen no impide que los cambios realizados en el formulario se reflejen inmediatamente. Por ejemplo, aunque LockScreen esté establecida en verdadero, el formulario se moverá si llama a su método Move.

Nota Si establece LockScreen como Falso (.F.), se volverán a pintar el formulario y todos sus controles.

Vea también

Paint (Evento)

Se aplica: Form | _SCREEN | ToolBar


MacDesktop (Propiedad)

Incluída por compatibilidad con versiones anteriores. Especifica si un formulario está colocado o no en la ventana principal de Visual FoxPro.

Object.MacDesktop[ = nValue]

Valores de la propiedad

nValue
Los valores para la propiedad MacDesktop son:
Valor | Descripción
0 | (Valor predeterminado) Automático. La ventana principal de Visual FoxPro contiene el formulario, de acuerdo con el valor establecido con el comando SET MACDESKTOP. Si SET MACDESKTOP está establecido en ON, el formulario existirá al nivel del escritorio de Macintosh; si está establecido en OFF, el formulario estará contenido en la ventana principal de Visual FoxPro.
1 | Escritorio de Macintosh. El formulario existe a nivel del escritorio de Macintosh, y se puede mover y cambiar su tamaño independientemente de la ventana principal de Visual FoxPro.
2 | Escritorio de Visual FoxPro. La ventana principal de Visual FoxPro contiene el formulario y no se puede desplazar fuera de ella.

Observaciones

El establecimiento de la propiedad MacDesktop permite sobrescribir el valor establecido con el comando SET MACDESKTOP para formularios individuales. SET MACDESKTOP afecta a ventanas definidas por el usuario (formularios) y a ventanas del sistema tales como las ventanas Examinar, Vista y Diseñador de formularios. De forma predeterminada, las ventanas definidas por el usuario se comportan según el valor de SET MACDESKTOP.

La propiedad MacDesktop le permite controlar si sus aplicaciones serán similares a aplicaciones Macintosh o a aplicaciones Windows.

Vea también

SET KEYCOMP

Se aplica a: Form


MainFile (Propiedad)

Contiene el nombre y la ruta de acceso del archivo establecido como programa principal de un proyecto. Sólo lectura.

Object.MainFile

Observaciones

MainFile contiene la cadena vacía si el programa principal no se ha establecido para un proyecto. Para establecer un programa, un formulario o una clase ActiveDoc como el programa principal de un proyecto, haga clic con el botón secundario del ratón en el programa, formulario o clase ActiveDoc y seleccione Establecer principal en el menú contextual. También se puede utilizar el método SetMain para especificar mediante programación un programa principal para un proyecto.

Vea también

SetMain (Método)

Se aplica a: Project (Objeto)


MapN19_4ToCurrency (Propiedad)

Especifica cómo asignar el tipo xsd:decimal de XML al tipo Monetario de Visual FoxPro cuando el aspecto totalDigits y fractionDigits de XML son 19 y 4 respectivamente. Usted puede establecer la propiedad MapN19_4ToCurrency para conservar la precisión. Lectura/escritura.

MapN_4ToCurrency se aplica sólo cuando ejecute los métodos LoadXML y Attach, que recuperan XML de acuerdo con esta configuración.

XMLAdapter.MapN19_4ToCurrency [= lValue]

Valores de la propiedad

lValue
Dato tipo Lógico. En la siguiente tabla se listan los valores para lValue.
lValue | Descripción
Falso (.F.) | No asigna xsd:decimal a Monetario. (Predefinido)
Verdadero (.T.) | Asigna x sd:decimal como Monetario. Los aspectos totalDigits y fractionDigits de XML deben ser 19 y 4 respectivamente.

Observaciones

Por defecto, Visual FoxPro asigna xsd:decimal a Númerico. Sin embargo, puede mantener la precisión del tipo monetario asignando xsd:decimal a Monetario en lugar de Númerico. Por ejemplo, los campos monetario de SQL Server se presentan en XML como decimal 19,4 con 19 dígitos en total y 4 dígitos a continuación del punto decimal.

Para mas información acerca del mapeo de tipos de datos Visual FoxPro y XML, vea Asignación de tipos de datos entre Visual FoxPro y esquemas XML.

Ejemplo

El siguiente ejemplo muestra cómo el tipo simpleType de XML Schema, como se define, se asigna como Monetario en Visual FoxPro:

<xsd:simpleType>
<xsd:restriction base="xsd:decimal">
<xsd:totalDigits value="19"/>
<xsd:fractionDigits value="4"/>
</xsd:restriction>
</xsd:simpleType>

Vea también

Propiedades | XMLAdapter (Objeto: propiedades, métodos y eventos) | Tipo de datos Monetario (Currency) | Tipo de datos Numérico | LoadXML (Método) | Attach (Método)

Se aplica a: XMLAdapter (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y asuntos del producto, vea el tema "Soporte Técnico Microsoft Visual FoxPro"..

© 1992 - 2003 Microsoft Corporation. Reservados todos los derechos.


Margin (Propiedad)

Especifica el margen creado en la parte de texto del control. Está disponible en tiempo de diseño y en tiempo de ejecución.

Control.Margin[ = nValue]

Valores de la propiedad

nValue
Especifica el margen creado en la parte de texto del control.

Observaciones

Utilice la propiedad Margin para especificar la posición del texto en el control. La propiedad Margin crea un margen en la parte interior del control, lo que no afecta al tamaño del control.

Vea también

Alignment (Propiedad)

Se aplica a: ComboBox | EditBox | Spinner | TextBox


MaxButton (Propiedad)

Especifica si un formulario tiene un botón Maximizar. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.MaxButton[ = lExpr]

Valores de la propiedad

lExpr
Los valores para la propiedad MaxButton son:
Valor | Descripción
Verdadero (.T.) | (Valor predeterminado) El formulario tiene un botón Maximizar.
Falso (.F.) | El formulario no tiene un botón Maximizar.

Observaciones

Un botón Maximizar permite al usuario aumentar el tamaño de un formulario hasta ocupar toda la pantalla.

Un botón Maximizar se convierte automáticamente en un botón Restaurar cuando se maximiza una ventana. Al minimizar o restaurar, una ventana vuelve a cambiar automáticamente el botón Restaurar por el botón Maximizar.

Los valores que especifique para MaxButton, MinButton, BorderStyle y ControlBox no reflejan la apariencia del formulario hasta que esté en tiempo de ejecución.

Al maximizar un formulario en tiempo de ejecución, se desencadena el evento Resize.

Nota La propiedad WindowState refleja el estado actual de la ventana. Si establece la propiedad WindowState como 2 (maximizada), el formulario se maximizará independientemente de los valores que estén vigentes en las propiedades MaxButton y BorderStyle.

Vea también

BorderStyle (Propiedad) | ControlBox (Propiedad) | MinButton (Propiedad) | Resize (Evento) | TitleBar (Propiedad) | WindowState (Propiedad)

Se aplica a: Form | _SCREEN


MaxHeight (Propiedad)

Determina el alto máximo al que puede ajustarse un formulario. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.MaxHeight[ = nHeight]

Valores de la propiedad

nHeight
El alto máximo del formulario en la unidad de medida especificada por la propiedad del formulario ScaleMode.

Observaciones

Cuando el usuario ajusta el tamaño de un formulario al elegir el comando Tamaño del menú Control o al arrastrar los bordes del formulario, este no superará el alto especificado en el valor de la propiedad MaxHeight.

El valor predeterminado de la propiedad MaxHeight es – 1; no se especifica un alto máximo.

Vea también

ScaleMode (Propiedad)

Se aplica a: Form | _SCREEN


MaxLeft (Propiedad)

Especifica la distancia máxima que puede haber entre el formulario y el borde izquierdo de la ventana principal de FoxPro. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.MaxLeft[ = nMaxLeft]

Valores de la propiedad

nMaxLeft
Especifica la distancia desde el borde izquierdo de la ventana principal de Visual FoxPro al borde izquierdo del formulario, en la unidad de medida especificada en la propiedad ScaleMode de ese formulario.

Observaciones

Utilice la propiedad MaxLeft para asegurarse de que el formulario no se mueve demasiado hacia la izquierda en la pantalla principal de Visual FoxPro en tiempo de ejecución.

Vea también

MaxTop (Propiedad) | MaxWidth (Propiedad) | MinHeight (Propiedad) | Scalemode (Propiedad)

Se aplica a: Form | _SCREEN


MaxLength (Propiedad)

Especifica la longitud máxima (en caracteres) que puede escribirse en un control EditBox, TextBox o ComboBox. Para estos controles, utilice MaxLength para limitar la cantidad de texto que un usuario pueda ingresar en un cuadro de edición, cuadro de texto, o cuadro combinado.

Para objetos XMLField, MaxLength especifique el tamaño total del campo Carácter o Numérico en un cursor cuando utilice un método XMLTable ToCursor o en un esquema XML utilizando el método XMLAdapter ToXML.

Disponible en tiempo de diseño y en tiempo de ejecución.

Control.MaxLength [= nMaxLength]

-o-

XMLField.MaxLength [= nMaxLength]

Valores de la propiedad

nMaxLength
El número máximo de caracteres que pueden escribirse en un control EditBox, TextBox o ComboBox.

Si nMaxLength está definido como 0, no hay límite en cuanto al número de caracteres que se pueden escribir en el control EditBox.

Para objetos XMLField, MaxLength para campos Memo es 2147483647. Para campos Numérico, Float y Double, MaxLength es lo mismo que el XML pone como totalDigits+1.

Observaciones

Para textos o cuadros combinados, MaxLength se aplica sólo cuando configurados a un valor mayor que 0 y el control no utilice la propiedad InputMask. Para los cuadros combinados, MaxLength sólo es significativo cuando Style está configurado como 0 y se aplica sólo a la porción textbox del cuadro combinado. La propiedad Value del cuadro de texto debe ser del tipo Carácter; sin embargo, la propiedad Value de un combobox puede ser de otros tipos, tales como Numérico.

Si la propiedad ControlSource de un control está vinculada a un campo, Visual FoxPro elimina cualquier carácter ingresado que exceda el tamaño del campo.

Vea también

Propiedades | ToCursor (Método) | ToXML (Método) | InputMask (Propiedad) | Value (Propiedad) | Style (Propiedad) | ControlSource (Propiedad) | SelLength (Propiedad)

Se aplica a: ComboBox (Control) | EditBox (Control) | TextBox (Control) | XMLField (Clase)


MaxRecords (Propiedad)

Especifica el número máximo de filas a traer cuando se devuelve un conjunto de resultados. Cuando trabaje con esta propiedad para cursores regulares, utilice las funciones CURSORSETPROP( ) y CURSORGETPROP( ). De lectura/escritura.

Nota Cuando MaxRecords, está establecida en un objeto CursorAdapter con orígenes de datos ODBC o ADO, se sobrescribe la configuración de la propiedad del cursor, cuando se realiza el enlace al objeto CursorAdapter. De tal manera, que cambiar la configuración del cursor usando CURSORSETPROP() no tiene efecto.
CursorAdapter.MaxRecords [= nValue]

Valores de la propiedad

nValue
Tipo de dato numérico. El parámetro nValue tiene un valor predefinido de -1, el cual especifica que todas las filas serán devueltas. Establecer nValue a 0 especifica que la vista se ejecuta, pero no trae resultados.

Observaciones

MaxRecords se aplica sobre todo para vistas remotas y establecerla no afecta a las vistas locales. Sin embargo, puede programar esta propiedad para vistas locales que serán migradas.

Vea también

Propiedades | CursorAdapter (Objeto: propiedades, métodos y eventos) | CURSORGETPROP( ) (Función) | CURSORSETPROP( ) (Función)

Se aplica a: CursorAdapter (Clase)


MaxTop (Propiedad)

Especifica la distancia máxima que puede haber entre un formulario y el borde superior de la ventana principal de Visual FoxPro. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.MaxTop[ = nMaxTop]

Valores de la propiedad

nMaxTop
Especifica la distancia desde el límite superior de la ventana principal de FoxPro hasta el límite superior del formulario maximizado, en la unidad de medida especificada mediante la propiedad ScaleMode del formulario.

Observaciones

Esta propiedad se ignora en Visual FoxPro para Macintosh.

Utilice la propiedad MaxTop para asegurarse de que un formulario maximizado desplazado no queda demasiado cerca de la parte superior de la ventana principal de Visual FoxPro en tiempo de ejecución.

Vea también

MaxLeft (Propiedad) | MaxWidth (Propiedad) | MinHeight (Propiedad) | MinWidth (Propiedad) | Scalemode (Propiedad)

Se aplica a: Form | _SCREEN


MaxWidth (Propiedad)

Especifica el ancho máximo al que puede ajustarse un formulario. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.MaxWidth[ = nMaxWidth]

Valores de la propiedad

nMaxWidth
Especifica el ancho máximo al que se puede ajustar un formulario, en la unidad de medida especificada por la propiedad ScaleMode de ese formulario.

Observaciones

Cuando el usuario ajusta el tamaño de un formulario al elegir el comando Tamaño del menú Control o al arrastrar los bordes del formulario, éste no superará el ancho especificado en el valor de la propiedad MaxWidth.

El valor predeterminado de la propiedad MaxWidth es – 1. Es decir, no se especifica el ancho máximo.

Vea también

MaxHeight (Propiedad) | MinHeight (Propiedad) | MinWidth (Propiedad) | ScaleMode (Propiedad)

Se aplica a: Form | _SCREEN


MDIForm (Propiedad)

Especifica si el formulario es ... multiple-document interface (MDI) compliant.

Object.MDIForm[ = 1Expr]

Valores de la propiedad

IExpr
Los valores para la propiedad MDIForm son:
Valor | Descripción
Verdadero (.T.) | El formulario será combinado con un formulario padre al ser maximizado.
Falso (.F.) | (Predeterminado) El formulario es siempre una ventana separada.

Observaciones

Establece la propiedad MDIForm del formulario a Verdadero (.T.) si desea que el formulario hijo sea combinado con el padre al ser maximizado o a Falso (.F.) si la ventana hija debe ser guardada como una ventana separada al ser maximizada.


MemberClass (Propiedad)

Especifica el nombre de la clase miembro a utilizar cuando se agreguen nuevos miembros a un contenedor. De lectura/escritura en tiempo de diseño y ejecución.

Para un contenedor padre Column y sus miembros header, utilizar la propiedad HeaderClass en lugar de MemberClass.

Nota Si la clase miembro está basada en una clase que definida en un archivo de programa (.prg), asegúrese que el archivo de programa compilado (.fxp) está sincronizado con el archivo .prg.
Object.MemberClass [ = cClassName ]

Valores de la propiedad

cClassName
Especifica el nombre de una clase miembro definida en un archivo de programa (.prg) o en una biblioteca de clases visuales (.vcx).

Observaciones

Visual FoxPro crea un objeto miembro usando MemberClass bajo las siguientes condiciones:

  • MemberClass se especifica para una definición de clase contenedor en tiempo de diseño. Cuando Visual FoxPro crea el contenedor, instancia los miembros utilizando MemberClass.
  • La propiedad Count del objeto miembro, tal como las propiedades PageCount, ButtonCount, o ColumnCount, se incrementa en tiempo de ejecución. Si la propiedad Count del objeto miembro se incrementa programáticamente o interactivamente, Visual FoxPro agrega nuevas instancias utilizando MemberClass.
    Nota La propiedad ColumnCount es la única en la cual se puede especificar como valor -1 o 0. Todas las demas propiedades Count deben ser mayores o iguales a cero.

Ambas MemberClass y MemberClassLibrary aceptan los métodos Access y Assign y el alcance Public, Hidden y Protected.

Un contenedor puede soportar objetos de diferentes clases miembros mediante la misma clase base. Por ejemplo, suponga que tiene un objeto PageFrame y dos clases de miembro, myPage1 y myPage2, definidas como clases Page. Se puede especificar myPage1 en la propiedad MemberClass de PageFrame en tiempo de diseño y cambiar MemberClass de PageFrame a myPage2 en tiempo de ejecución, seguido de un incremento en la propiedad PageCount de PageFrame.

Las propiedades MemberClass y MemberClassLibrary tienen el siguiente comportamiento adicional en tiempo de diseño y en tiempo de ejecución:

  • Comportamiento en tiempo de diseño

    Al establecer las propiedades MemberClass y MemberClassLibrary en tiempo de diseño, VFP advertirá de que se van a destruir las clases miembros existentes, incluyendo la configuración de propiedades; el código de los métodos nuevos, añadidos o modificados; y los objetos añadidos.

    Al crear una subclase de un contenedor que especifica la propiedad MemberClass, la subclase hereda los valores de las propiedades MemberClass y MemberClassLibrary, las cuales se pueden modificar.

    Visual FoxPro muestra las propiedades MemberClass y MemberClassLibrary como de sólo lectura en la ventana Propiedades. Sin embargo, se puede modificar el valor de estas propiedades haciendo clic en el botón de puntos suspensivos (...) para mostrar el cuadro de diálogo Abrir, para examinar y seleccionar la clase de miembro y la biblioteca de clases que se desea utilizar.

    Nota Si se quiere especificar una clase de miembro para el contenedor, se debe establecer no una sino ambas propiedades MemberClass y MemberClassLibrary.

    Si se establece la propiedad Count del objeto miembro en un archivo de programa (.prg) en tiempo de diseño, se debe especificar la propiedad Count del objeto miembro después de haber establecido las propiedades MemberClass y MemberClassLibrary a causa de ciertas dependencias. Por ejemplo:

    DEFINE CLASS myPageFrame AS PageFrame
MemberClassLibrary = 'MyPages.prg'
MemberClass = 'myPage'
PageCount = 3
ENDDEFINE

    Cuando se usa la función ASELOBJ( ) para establecer las propiedades MemberClass y MemberClassLibrary individualmente, ocurre el siguiente comportamiento:

    • Si se especifica sólo la propiedad MemberClass o MemberClassLibrary usando la función ASELOBJ(), Visual FoxPro no genera un error pero no tiene en cuenta la propiedad especificada y usa la clase base cuando agrega un nuevo objeto miembro.
    • Si la propiedad Count del objeto miembro es 0 (o -1 para objetos Grid), Visual FoxPro no realiza una verificación de error cuando establece MemberClass y MemberClassLibrary, las cuales pueden establecerse en cualquier orden.
    • Si la propiedad Count del objeto miembro es mayor que 0, Visual FoxPro realiza una verificación de error cuando se establece MemberClass. Por lo tanto, en esta situación, necesita establecer MemberClassLibrary antes de establecer MemberClass.
      Nota Si ambas propiedades no son válidas, Visual FoxPro genera el mensaje apropiado si la clase o biblioteca de clases no es válida y establece la propiedad Count del objeto miembro a un valor 0.

      Si ambas MemberClass y MemberClassLibrary son válidas, Visual FoxPro recrea todas las clases miembro existes basadas en la nueva clase miembro, y todos los datos de los objetos miembro anteriores se pierden.

      Advertencia Visual FoxPro no pregunta si destruye las clases miembro existentes, incluyendo valores de propiedades; código de métodos nuevos, añadidos o modificados; y objetos añadidos cuando se establece MemberClass y MemberClassLibrary por código.

      Al establecer la propiedad Count del objeto miembro en un archivo de programa (.prg) en tiempo de diseño, debe especificar la propiedad Count del objeto miembro después de establecer las propiedades MemberClass y MemberClassLibrary.

      Puede cambiar MemberClassLibrary a otra biblioteca de clases que tenga la misma MemberClass. Si incrementa el número de la propiedad Count del objeto miembro, Visual FoxPro agrega una nueva clase miembro usando la nueva MemberClassLibrary. Aunque el diseñador muestra clases miembro de diferentes librerías de clases, sólo la mas reciente MemberClassLibrary persiste cuando guarda la clase. Por lo tanto, cuando instancia o abre la clase de nuevo, todos los objetos miembro se crean a partir de la mas reciente MemberClassLibrary.

  • Comportamiento en tiempo de ejecución

    Cambiando MemberClass y MemberClassLibrary afecta sólo a los nuevos objetos miembro que se creen, los objetos miembros que no existen en el contenedor. También se puede usar los métodos AddObject y NewObject, los cuales funcionan como de costumbre, para especificar una clase diferente.

    Nota Se debe establecer ambas propiedades MemberClass y MemberClassLibrary en tiempo de ejecución. Si se especifica sólo MemberClass o MemberClassLibrary en tiempo de ejecución, Visual FoxPro no genera un error, sin embargo, utiliza la clase base al agregar nuevos miembros y no tiene en cuenta la propiedad especificada.

    Para determinar con seguridad la clase usada para instanciar un objeto miembro particular, se debe utilizar las propiedades Class y ClassLibrary del objeto miembro en lugar de las propiedades MemberClass y MemberClassLibrary del contenedor debido a que estas últimas pueden cambiar en tiempo de ejecución.

    Nota Un contenedor puede tener objetos miembro derivados de clases miembro diferentes.

    Visual FoxPro no admite especificar una clase de una biblioteca de clases contenida dentro de una aplicación Visual FoxPro compilada (.app).

Ejemplo

El siguiente ejemplo crea un formulario, agrega un contenedor PageFrame al formulario, define el contenedor PageFrame como "myPageFrame", establece las propiedades MemberClassLibrary y MemberClass para "myPageFrame", define un objeto miembro Page como "myPage", y agrega código para un botón comando y eventos.

PUBLIC x
x = CREATEOBJECT("form")
x.ADDOBJECT("pf1","myPageFrame")
x.pf1.Visible = .T.
x.Show()
DEFINE CLASS myPageFrame AS PageFrame
MemberClassLibrary = 'myPages.PRG'
MemberClass = 'myPage'
PageCount = 2
TabOrientation = 1
ENDDEFINE
DEFINE CLASS myPage AS Page
ADD OBJECT cmd1 AS commandbutton WITH ;
Caption = "Hello", FontBold = .T.
PROCEDURE Init
THIS.Caption = "Funpage"+TRANSFORM(THIS.Parent.PageCount)
ENDPROC
PROCEDURE cmd1.Click
MESSAGEBOX(this.Caption)
THIS.Parent.Parent.PageCount = THIS.Parent.Parent.PageCount+1
ENDPROC
ENDDEFINE

Ver también

Clases Miembro | MemberClassLibrary (Propiedad) | HeaderClass (Propiedad) | HeaderClassLibrary (Propiedad) | ASELOBJ( ) (Función)

Se aplica a: PageFrame (Control) | CommandGroup (Control) | OptionGroup (Control) | Grid (Control)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y asuntos del producto, vea el tema "Soporte Técnico Microsoft Visual FoxPro"..

© 1992 - 2003 Microsoft Corporation. Reservados todos los derechos.


MemberClassLibrary (Propiedad)

Especifica el nombre de la biblioteca de clases que contiene el miembro de clase de la propiedad MemberClass. Es de Lectura / Escritura en tiempo de diseño y ejecución.

Para un contenedor padre Column y sus miembros Header, se utiliza la propiedad HeaderClassLibrary en lugar de MemberClassLibrary.

Object.MemberClassLibrary [ = cClassFile ]

Valores de la propiedad

Cadena de caracteres. El parámetro cClassFile especifica el nombre del archivo que contiene la definición del miembro de clase especificado en la propiedad MemberClass.

Observaciones

Visual FoxPro incluye la biblioteca visual de clases (.vcx) o el programa (.prg) especificados en la propiedad MemberClassLibrary en el proyecto durante la generación del mismo.

Si se establece MemberClassLibrary en tiempo de ejecución, se debe utilizar el nombre de archivo completo incluyendo su extensión.

Si se especifica MemberClassLibrary sin especificar MemberClass, Visual FoxPro no genera un error; aunque utiliza la clase base al añadir un nuevo miembro, ignorando la propiedad especificada.

Para información adicional sobre las propiedades MemberClassLibary y MemberClass, ver MemberClass (Propiedad).

Ver también

Clases Miembro | MemberClass (Propiedad) | HeaderClassLibrary (Propiedad)

Se aplica a: PageFrame (Control) | CommandGroup (Control) | OptionGroup (Control) | Grid (Control)


MemoWindow (Propiedad)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar un control EditBox.


Message (Propiedad)

Especifica el mensaje de error actual para un objeto Exception. De lectura/escritura en tiempo de ejecución.

Exception.MessageProperty

Valores de la propiedad

Dato tipo Carácter.

Observaciones

Idéntico al valor devuelto por la función MESSAGE() y el segundo elemento en la matriz producida por la función AERROR().

Vea también

Propiedades | Exception (Objeto: propiedades, métodos y eventos) | MESSAGE( ) (Función) | AERROR( ) (Función) | TRY...CATCH...FINALLY (Comando) | Control estructurado de errores

Se aplica a: Exception (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y asuntos del producto, vea el tema "Soporte Técnico Microsoft Visual FoxPro"..

© 1992 - 2003 Microsoft Corporation. Reservados todos los derechos.


MinButton (Propiedad)

Especifica si un formulario tiene un botón Minimizar. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.MinButton[ = lExpr]

Valores de la propiedad

lExpr
Los valores para la propiedad MinButton son:
Valor | Descripción
Verdadero (.T.) | (Valor predeterminado) El formulario tiene un botón Minimizar.
Falso (.F.) | El formulario carece de un botón Minimizar.

Observaciones

Un botón Minimizar permite a los usuarios minimizar una ventana de Form y convertirla en un icono.

Los valores que especifique para MaxButton, MinButton, BorderStyle y ControlBox no se reflejarán en la apariencia del formulario hasta que esté en tiempo de ejecución.

En Microsoft Windows versión 3.0 o posterior, se muestra un formulario secundario MDI con un botón Minimizar independientemente del valor de MinButton. Sin embargo, si se establece MinButton como Falso (.F.), este botón no responderá a clic y el comando Minimizar correspondiente no aparecerá en el menú Control del formulario.

Al minimizar un formulario a un icono en tiempo de ejecución se generará un evento Resize. La propiedad WindowState refleja el estado actual de la ventana. Si establece la propiedad WindowState como 1 (minimizado), el formulario se minimizará independientemente de los valores que estén vigentes para las propiedades MinButton y BorderStyle.

Vea también

BorderStyle (Propiedad) | ControlBox (Propiedad) | MaxButton (Propiedad) | TitleBar (Propiedad) | WindowState (Propiedad)

Se aplica: Form | _SCREEN


MinHeight (Propiedad)

Especifica el alto mínimo al que puede ajustarse el tamaño de un formulario. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.MinHeight[ = nHeight]

Valores de la propiedad

nHeight
El alto mínimo al que puede ajustarse el formulario, en la unidad de medida especificada por su propiedad ScaleMode.

Observaciones

Cuando el usuario ajusta el tamaño de un formulario al elegir el comando Tamaño del menú Control o al arrastrar los bordes del formulario, este no podrá tener un alto inferior al especificado en el valor de la propiedad MinHeight.

El valor predeterminado de la propiedad MinHeight es –1; es decir, no se especifica el alto mínimo.

Vea también

MaxHeight (Propiedad) | MaxWidth (Propiedad) | MinWidth (Propiedad) | ScaleMode (Propiedad)

Se aplica: Form | _SCREEN


MinWidth (Propiedad)

Especifica el ancho mínimo al que puede ajustarse un formulario. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.MinWidth[ = nWidth]

Valores de la propiedad

nWidth
El ancho mínimo al que puede ajustarse el formulario, en la unidad de medida especificada por su propiedad ScaleMode.

Observaciones

Cuando el usuario ajusta el tamaño de un formulario al elegir el comando Tamaño del menú Control o al arrastrar los bordes del formulario, este no podrá tener un ancho inferior al especificado en el valor de la propiedad MinWidth.

El valor predeterminado de la propiedad MinWidth es – 1; no se especifica ningún ancho mínimo.

Vea también

MaxHeight (Propiedad) | MaxWidth (Propiedad) | MinHeight (Propiedad) | ScaleMode (Propiedad)

Se aplica: Form | _SCREEN


MouseIcon (Propiedad)

Especifica el icono del puntero del ratón que se muestra cuando se sitúa el puntero del ratón sobre un objeto. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.MouseIcon[ = cFileName]

Valores de la propiedad

cFileName
Especifica el archivo que se muestra en pantalla cuando se coloca el puntero del ratón sobre el objeto. Puede especificar un archivo de icono de ratón (.ico), un archivo de cursor de ratón (.cur) o un archivo de cursor de ratón animado (.ani).

Observaciones

Para mostrar el icono del ratón en pantalla, establezca la propiedad MousePointer en 99 (Personalizado).

Vea también

MousePointer (Propiedad)

Se aplica: CheckBox | ComboBox | CommandButton | CommandGroup | Container (Objeto) | Control (Objeto) | EditBox | Form | Grid | Image | Label | Line | ListBox | OLE Bound (Control) | OLE Container (Control) | OptionButton | OptionGroup | _SCREEN | Shape | Spinner | TextBox | ToolBar


MousePointer (Propiedad)

Especifica la forma del puntero del ratón cuando está sobre una determinada parte de un objeto en tiempo de ejecución. Puede utilizar la propiedad MousePointer para indicar los cambios en la funcionalidad del puntero del ratón sobre los controles de un formulario o cuadro de diálogo. Está disponible en tiempo de diseño y ejecución.

Object.MousePointer [= nType]

Valores de la propiedad

nType
Especifica un valor que representa una figura para el puntero del ratón.
Nota Cuando cambia la propiedad MousePointer utilizando la venta Propiedades, la lista del cuadro combinado muestra los nombres utilizados en Visual FoxPro para Windows.

La siguiente lista muestra los valores para nType.

nType | Descripción
0 | Forma determinada por el objeto (Predeterminado)
1 | Flecha
2 | Cruz (Cursor en forma de cruz)
3 | Cursor en forma de I
4 | Icono (Pequeño cuadrado blanco dentro de un cuadrado negro)
5 | Tamaño (Una flecha de cuatro puntas que señala al norte, sur, este y oeste)
6 | Tamaño NE SO (Una flecha doble que apunta al noreste y suroeste)
7 | Tamaño NS (Una flecha doble que apunta al norte y al sur)
8 | Tamaño SE NO (Una flecha doble que apunta al sudeste y al noroeste)
9 | Tamaño OE (Una flecha doble que apunta al oeste y al este)
10 | Flecha arriba
11 | Reloj de Arena
12 | No Borrar
13 | Ocultar Puntero
14 | Flecha. No es un valor de propiedad válido para los controles grid y devolverá el mensaje de error "El resultado de la expresión no es válido."
15 | Mano
99 | Personalizado. Utiliza el puntero especificado en la propiedad MouseIcon del objeto.

Observaciones

Para indicar que el usuario debe esperar la finalización de un proceso, cambie la propiedad MousePointer a 11 (Reloj de Arena).

Cuando MousePointer esta configurado a 15 (Mano), una flecha aparece en lugar de la mano cuando las aplicaciones de Visual FoxPro se ejecutan en sistemas operativos Windows NT 4.0

Vea también

MouseMove (Evento) | MouseIcon (Propiedad)

Se aplica: CheckBox | ComboBox | CommandButton | CommandGroup | Container (Objeto) | Control (Objeto) | EditBox | Form | Grid | Image | Label | Line | ListBox | OLE Bound (Control) | OLE Container (Control) | OptionButton | OptionGroup | _SCREEN | Shape | Spinner | TextBox | ToolBar


Movable (Propiedad)

Especifica si un usuario puede mover un objeto en tiempo de ejecución. Está disponible en tiempo de diseño; es de sólo lectura en tiempo de ejecución.

Object.Movable[ = lExpr]

Valores de la propiedad

lExpr
Los valores para la propiedad Movable son:
Valor | Descripción
Verdadero (.T.) | (Valor predeterminado) Se puede mover el objeto. Para los formularios de Visual FoxPro para Windows, el comando Mover se agrega al menú Control.
Falso (.F.) | No se puede mover el objeto. Para columnas de cuadrícula, no puede mover la columna mediante manipulación directa. Sin embargo, puede mover la columna si cambia la propiedad ColumnOrder de la columna o mueve otra columna encima de ella.

Vea también

Sizable (Propiedad)

Se aplica a: Column | Form | _SCREEN | ToolBar


MoverBars (Propiedad)

Especifica si las barras de movimiento se muestran en un control ListBox. Está disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

ListBox.MoverBars[ = lExpr]

Valores de la propiedad

lExpr
Las configuraciones posibles de la propiedad MoverBars son:
Valor | Descripción
Verdadero (.T.) Muestra las barras de movimiento.

Puede reorganizar interactivamente el contenido del control.
Falso (.F.) | No se muestran las baras de movimiento. (Predeterminado)

Observaciones

Puede seleccionar y mover un elemento pulsando CTRL+UP ARROW, CTRL+DOWN ARROW, utilizando el ratón, o por programación mediante una llamada al método MoveItem. El evento OnMoveItem se ejecuta cuando un elemento se ueve hacia arriba o hacia abajo en un list box.

La propiedad MoverBars está disponible solo si la propiedad RowSourceType tiene configurada como valor el 0 (None) o el 1 (Value).

Vea también

RowSourceType (Propiedad) | ScrollBars (Propiedad) | OnMoveItem (Evento) | MoveItem (Método)

Se aplica a: ListBox


MultiSelect (Propiedad)

Especifica si el usuario puede realizar varias selecciones en un control ListBox y cómo puede hacerlo. Está disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

ListBox.MultiSelect[ = nChoice]

Valores de la propiedad

nChoice
Las configuraciones posibles de la propiedad MultiSelect son:
Valor | Descripción
0 | (Valor predeterminado) No se permite la selección múltiple.
1 | Se permite la selección múltiple. Para seleccionar varios elementos en un control ListBox, mantenga presionada la tecla CTRL mientras hace clic en los elementos.

Observaciones

Establezca MultiSelect como verdadero (.T.) para permitir que un usuario seleccione varios elementos de una lista. Puede utilizar la propiedad Selected para determinar qué elementos se seleccionan.

Ejemplo

El ejemplo siguiente crea un control ListBox. La propiedad MultiSelect para el cuadro de lista está establecida en el valor verdadero (.T.), lo que permite realizar múltiples selecciones desde el cuadro de lista. El origen de los elementos que aparecen en el cuadro de lista es una matriz, especificada con las propiedades RowSourceType y RowSource.

La propiedad ListCount se utiliza dentro de un bucle FOR ... ENDFOR para mostrar los elementos elegidos en el cuadro de lista. La propiedad Selected se utiliza para determinar los elementos que eligió y la propiedad List sirve para devolver estos elementos.

CLEAR
DIMENSION gaMyListArray(10)
FOR gnCount = 1 to 10  && Fill the array with letters
STORE REPLICATE(CHR(gnCount+64),6) TO gaMyListArray(gnCount)
ENDFOR
frmMyForm = CREATEOBJECT('Form')  && Create a Form
frmMyForm.Closable = .f.  && Disable the Control menu box
frmMyForm.Move(150,10)  && Move the form
frmMyForm.AddObject('cmbCommand1','cmdMyCmdBtn')  && Add "Quit" Command button
frmMyForm.AddObject('lstListBox1','lstMyListBox')  && Add ListBox control
frmMyForm.lstListBox1.RowSourceType = 5  && Specifies an array
frmMyForm.lstListBox1.RowSource = 'gaMyListArray' && Array containing listbox items
frmMyForm.cmbCommand1.Visible =.T.  && "Quit" Command button visible
frmMyForm.lstListBox1.Visible =.T.  && "List Box visible
frmMyForm.SHOW  && Display the form
READ EVENTS  && Start event processing
DEFINE CLASS cmdMyCmdBtn AS CommandButton  && Create Command button
Caption = '\<Quit'  && Caption on the Command button
Cancel = .T.  && Default Cancel Command button (Esc)
Left = 125  && Command button column
Top = 210  && Command button row
Height = 25  && Command button height
PROCEDURE Click
CLEAR EVENTS  && Stop event processing, close Form
CLEAR  && Clear main Visual FoxPro window
ENDDEFINE
DEFINE CLASS lstMyListBox AS ListBox  && Create ListBox control
Left = 10  && List Box column
Top = 10  && List Box row
MultiSelect = .T.  && Allow selecting more than 1 item
PROCEDURE Click
ACTIVATE SCREEN
CLEAR
? "Selected items:"
? "---------------"
FOR nCnt = 1 TO ThisForm.lstListBox1.ListCount
IF ThisForm.lstListBox1.Selected(nCnt)  && Is item selected?
? SPACE(5) + ThisForm.lstListBox1.List(nCnt) && Show item
ENDIF
ENDFOR
ENDDEFINE

Vea también

AddItem (Método) | Clear (Método) | List (Propiedad) | ListCount (Propiedad) | NewItemID (Propiedad) | RemoveItem (Método) | Selected (Propiedad) | TopItemID (Propiedad)

Se aplica a: ListBox


Name (Propiedad)

Especifica el nombre del objeto al que se hace referencia en el código. Disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

Object.Name[ = cName]

Valores de la propiedad

cName
Especifica el nombre empleado para hacer referencia al objeto en el código.

Observaciones

El nombre predeterminado de objetos nuevos es el tipo del objeto más un entero único. Por ejemplo, el primer objeto Form nuevo será Form1, y el tercer cuadro de texto que cree en un Form será Text3.

Nota Si el objeto es el primero de la jerarquía de objetos (es decir, el objeto contenedor más externo), se utiliza la variable del objeto para hacer referencia al objeto en lugar de a la propiedad Name.

Para un objeto Project, la propiedad Name contiene el nombre y la ruta del proyecto, y es de solo lectura en tiempo de diseño y tiempo de ejecución.

Para un objeto File, la propiedad Name contiene el nombre y la ruta del archivo, y es de solo lectura en tiempo de diseño y tiempo de ejecución.

Para un objeto File, la propiedad Name contiene el nombre y la ruta del archivo, y es de solo lectura en tiempo de diseño y tiempo de ejecución.

Vea también

Caption (Propiedad) | NewIndex (Propiedad) | NewItemID (Propiedad) | ServerName (Propiedad) | TypeLibName (Propiedad)

Applies To: CheckBox | Collection (Clase) | Column | ComboBox | CommandButton | CommandGroup | Container (Objeto) | Control (Objeto) | Cursor | CursorAdapter (Clase) | Custom | DataEnvironment | EditBox | Exception (Clase) | File (Objeto) | Form | FormSet | Grid | Header | Image | Label | Line | ListBox | OLE Bound (Control) | OLE Container (Control) | OptionButton | OptionGroup | Page | PageFrame | Project (Objeto) | ProjectHook (Objeto) | Relation | _SCREEN | Session (Objeto) | Shape | Spinner | TextBox | Timer | ToolBar


NewIndex (Propiedad)

Especifica el índice del elemento que se ha agregado más recientemente a un control ComboBox o ListBox. No está disponible en tiempo de diseño; es de sólo lectura en tiempo de ejecución.

Control.NewIndex

Observaciones

La propiedad NewIndex resulta especialmente útil para agregar elementos a una lista ordenada.

Vea también

Caption (Propiedad) | NewItemID (Propiedad) | Name (Propiedad)

Se aplica a: ComboBox | ListBox


NewItemID (Propiedad)

Especifica el identificador del elemento que se ha agregado más recientemente a un control ComboBox o ListBox. No está disponible en tiempo de diseño; es de sólo lectura en tiempo de ejecución.

 [Form.]Control.NewItemID

Observaciones

Para obtener más información acerca de las diferencias entre el uso de un identificador de elemento o un índice, vea AddItem (Método) o AddListItem (Método).

Vea también

AddItem (Método) | AddListItem (Método) | Clear (Método) | ItemData (Propiedad) | List (Propiedad) | ListCount (Propiedad) | MultiSelect (Propiedad) | NewIndex (Propiedad) | RemoveItem (Método) | Selected (Propiedad) | TopItemID (Propiedad)

Se aplica a: ComboBox | ListBox


NoCpTrans (Propiedad)

Especifica si los campos tipo carácter y memo se crean como datos tipo Carácter (Binario) o Memo (Binario). De lectura/escritura.

Para mas información acerca de la equivalencia de tipos de datos Visual FoxPro y XSD, vea Equivalencia entre tipo de datos Visual FoxPro y esquema XML.

Establecer NoCpTrans a nivel de XMLAdapter, los valores predeterminados NoCpTrans para objetos XMLField que se crean y agregan a la colección Fields por los siguientes métodos de XMLAdapter:

  • LoadXML
  • Attach
  • AddTableSchema

Adicionalmente, cambiar NoCpTrans a nivel de XMLAdapter afecta sólo los siguientes conjuntos de objetos creados por XMLField, no a los objetos XMLField existentes en la colección Fields. Por lo tanto, para modificar la configuración de NoCpTrans de un objeto XMLField existente, cambie el valor a nivel de XMLField.

XMLAdapter.NoCpTrans [= lValue]

-o-

XMLField.NoCpTrans [= lValue]

Valores de propiedad

lValue
Dato tipo Lógico. En la siguiente tabla se lista los valores para lValue.
lValue | Descripción
Falso (.F.) | Crea un campo como campo Carácter o Memo normal. (Predefinido)
Verdadero (.T.) | Crea un campo como campo Carácter (NoCpTrans) o Memo (NoCpTrans).

Vea también

Propiedades | XMLAdapter (Objeto: propiedades, métodos y eventos) | XMLField (Objeto: propiedades, métodos y eventos) | Tipos de datos y campos de Visual FoxPro | XMLAdapter (Clase) | Fields (XMLTable) (Colección)

Se aplica a: XMLAdapter (Clase) | XMLField (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y asuntos del producto, vea el tema "Soporte Técnico Microsoft Visual FoxPro"..

© 1992 - 2003 Microsoft Corporation. Reservados todos los derechos.


NoDataOnLoad (Propiedad)

Activa la vista asociada con un Cursor sin transferir datos. Disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

DataEnvironment.Cursor.NoDataOnLoad[ = lExpr]

Valores de la propiedad

lExpr
Los valores de la propiedad NoDataOnLoad son:
Valor | Descripción
Verdadero (.T.) | Se abre la vista asociada con el Cursor sin transferir datos.
Falso (.F.) | (Valor predeterminado) Se abre la vista asociada con el Cursor con datos.

Observaciones

Nota Cuando se tiene acceso al Cursor utilizando CURSORSETPROP( ), la propiedad NoDataOnLoad es de sólo lectura en tiempo de ejecución.

Utilice la propiedad NoDataOnLoad para asegurarse de que el FormSet o Form asociado a la vista se carga rápidamente (puede necesitarse mucho tiempo para transferir datos desde un servidor de apoyo). Puede utilizar REQUERY( ) junto con NoDataOnLoad para transferir datos a la vista activa una vez que se haya cargado el Form.

La propiedad NoDataOnLoad simula el comportamiento de la cláusula NODATA de USE.

Vea también

REQUERY( ) | USE

Se aplica a: Cursor


NullDisplay (Propiedad)

Especifica el texto que se mostrará en pantalla para indicar valores nulos. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.NullDisplay[ = cNullText]

Valores de la propiedad

cNullText
Especifica el texto que aparecerá en pantalla para valores nulos. .NULL. es el valor predeterminado.

Observaciones

Esta propiedad modifica la presentación del valor nulo sólo para objetos individuales. Para cambiar la presentación del valor nulo para todos los objetos, utilice SET NULLDISPLAY.

Vea también

CREATE TABLE - SQL | SET NULLDISPLAY

Se aplica a: ComboBox | EditBox | ListBox | Spinner | TextBox


NumberOfElements (Propiedad)

Especifica cuantos elementos de una matriz se utilizan para rellenar la parte de la lista de un control ComboBox o ListBox. Está disponible en tiempo de diseño y en tiempo de ejecución.

 [Form.]Control.NumberOfElements[ = nTotal]

Valores de la propiedad

nTotal
Especifica el número de elementos que puede contener una lista.

Observaciones

Sólo está disponible cuando la propiedad ListSourceType se establece como 5 (Matriz) y la propiedad ColumnCount a 1.

NumberOfElements sirve para limitar el número de elementos de una matriz que se muestran en una lista. El número de elementos empleado para la lista comienza con el valor de la propiedad FirstElement e incluye el número de elementos especificado en el valor de la propiedad NumberOfElements.

Vea también

DisplayCount (Propiedad) | FirstElement (Propiedad)

Se aplica a: ComboBox | ListBox


Object (Propiedad)

Proporciona acceso a las propiedades y métodos del servidor de Automatización para un objeto OLE. No está disponible en tiempo de diseño. Dependiendo del servidor de Automatización, las propiedades para el objeto OLE pueden ser de sólo lectura o de lectura-escritura en tiempo de ejecución.

OLEObject.Object[.Property] [= eValue] O bien: OLEObject.Object[.Method]

Valores de la propiedad

Property
Especifica una propiedad que el servidor de Automatización admite para el objeto OLE.
eValue
Especifica un valor para una propiedad que el servidor de Automatización admite para el objeto OLE.
Method
Especifica un método que el servidor de Automatización admite para el objeto OLE

Observaciones

Para obtener información acerca de las propiedades y los métodos admitidos por el servidor de Automatización, consulte la documentación de la aplicación preparada para OLE que creó el objeto. Por ejemplo, si el objeto OLE es una hoja de cálculo de Microsoft Excel, consulte en la documentación de Excel las propiedades y métodos admitidos por Excel (una aplicación preparada para OLE).

Vea también

CREATEOBJECT( ) | GETOBJECT( )

Se aplica a: OLE Bound (Control) | OLE Container (Control)


OLEClass (Propiedad)

Devuelve el Id. de una clase con nombre de un objeto OLE. Es de solo lectura en tiempo de diseño y en tiempo de ejecución para un objeto ya existente, pero se puede establecer para un objeto mientras se esta creando.

Control.OLEClass[ = cName]

Valores de la propiedad

cName
El Id. de la clase con nombre del objeto. Este es el nombre registrado de la aplicación que se utilizó para crear el objeto o el que se invocará si se activa el objeto.

Observaciones

Establecer OLEClass de un objeto contenedor OLE mediante el cuadro de diálogo Insertar objeto cuando ha agregado inicialmente un contenedor OLE a un formulario, o en código cuando cree un objeto OLE como parte de una definición de clase. También se establecerá esta propiedad cuando cree objetos OLE utilizando el comando APPEND GENERAL.

La propiedad OLEClass de un objeto especifica la aplicación utilizada para crear o modificar el objeto OLE. Para especificar el contenido actual del objeto, establezca esta propiedad DocumentFile.

Ejemplo

En el siguiente ejemplo se agrega un control Contenedor OLE a un formulario, y se utilizan las propiedades OLEClass y DocumentFile para especificar Microsoft Excel como servidor de Automatización y una hoja de cálculo de Excel como el archivo que se va a modificar.

Define class myForm as form
add object oleXLSheet1 as oleXLSheet
EndDefine
Define class oleXLSheet as OLECONTROL
oleclass = "Excel.Sheet"
documentfile="C:\msoffice\Excel\mysheet.xls"
oletypeallowed = 1  && Embedded
EndDefine

Vea también

APPEND GENERAL | CREATEOBJECT( ) | DocumentFile (Propiedad)

Se aplica a: OLE Bound (Control) | OLE Container (Control)


OLEDragMode (Propiedad)

Especifica cómo se inicia una operación de arrastre. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.OLEDragMode[= nValue]

Valores de la propiedad

nValue
Especifica cómo controla el control u objeto las operaciones de arrastre de OLE. La tabla siguiente muestra los valores de nValue.
Valor Descripción
0 Manual (Predeterminado).

Visual FoxPro no inicia la operación de arrastre de OLE cuando intenta arrastrar datos. Debe llamar al método OLEDrag para iniciar la operación de arrastre.

Si establece OLEDragMode a 0 proporciona compatibilidad con versiones anteriores (no hay compatibilidad con arrastre de OLE) para aplicaciones existentes si no incluye código adicional de operaciones de arrastre.
1 Automático

Visual FoxPro permite iniciar automáticamente una operación de arrastre cuando intenta arrastrar datos.

Observaciones

OLEDragMode es una propiedad de origen de arrastre. Si la propiedad DragMode para un objeto o control está establecida a 1 – Automático, el objeto o control no puede actuar como un origen de arrastre OLE. Esto proporciona compatibilidad con versiones anteriores para arrastrar y soltar de versiones anteriores de Visual FoxPro.

Observe que la propiedad OLEDragMode es de sólo lectura para el control cuadrícula.

Vea también

DragMode (Propiedad) | Técnica de arrastrar y soltar OLE | OLEDrag (Método) | OLEStartDrag (Evento)

Se aplica: CheckBox | ComboBox | CommandButton | CommandGroup | Container (Objeto) | Control (Objeto) | EditBox | Form | Grid | Image | Label | Line | ListBox | OptionButton | OptionGroup | Page | PageFrame | Shape | Spinner | TextBox | ToolBar


OLEDragPicture (Propiedad)

Especifica la imagen que aparece debajo del puntero del ratón durante una operación de arrastrar y soltar de OLE. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.OLEDragPicture[= cFileName]

Parámetros

cFileName
Especifica el nombre de archivo y la ruta al gráfico que se va a mostrar cuando se produzca una operación arrastrar y soltar de OLE. Los archivos de gráficos que especifique pueden ser de tipo .bmp, .dib, .jpg, .gif, .ani, .cur o .ico.

El archivo de gráficos suele ser una representación traslúcida o esquematizada del objeto que se arrastra. Para crear una representación traslúcida del objeto, use un archivo de máscara de tipo tablero de ajedrez (.msk).

Observaciones

La propiedad OLEDragPicture es una propiedad de origen de arrastre. La imagen se muestra cuando el puntero del ratón se coloca sobre el formulario que contiene el origen de arrastre.

Vea también

Técnica de arrastrar y soltar OLE

Se aplica: CheckBox | ComboBox | CommandButton | CommandGroup | Container (Objeto) | Control (Objeto) | EditBox | Form | Grid | Image | Label | Line | ListBox | OptionButton | OptionGroup | Page | PageFrame | Shape | Spinner | TextBox | ToolBar


OLEDropEffects (Propiedad)

Especifica el tipo de operaciones de soltar que admite un destino de colocación de OLE. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.OLEDropEffects[= nDropEffect]

Valores de la propiedad

nDropEffect
Especifica el tipo de operaciones de soltar que admite un destino de colocación de OLE. La tabla siguiente muestra los valores para nDropEffect con una descripción de cada uno de ellos.
nDropEffect | Constante de Foxpro.h | Descripción
0 | DROPEFFECT_NONE | El destino para colocar no acepta los datos como destino para colocar.
1 | DROPEFFECT_COPY | Los datos se pueden copiar en el destino para colocar.
2 | DROPEFFECT_MOVE | Los datos se pueden mover al destino para colocar.
4 | DROPEFFECT_LINK | Los datos se pueden vincular al destino para colocar.

Se admiten múltiples operaciones colocar al agregar múltiples valores para nDropEffect. Por ejemplo, si nDropEffect es 3, el destino para colocar admite operaciones de copia y de mover para colocar (3 = 1 (copiar) + 2 (mover)).

Observaciones

OLEDropEffects es una propiedad de destino para colocar y debe establecerse en el evento OLEDragOver.

Vea también

Técnica de arrastrar y soltar OLE | OLEDragOver (Evento) | OLEDropHasData (Propiedad)

Se aplica: CheckBox | ComboBox | CommandButton | CommandGroup | Container (Objeto) | Control (Objeto) | EditBox | Form | Grid | Image | Label | Line | ListBox | OptionButton | OptionGroup | Page | PageFrame | ProjectHook (Objeto) | Shape | Spinner | TextBox | ToolBar


OLEDropHasData (Propiedad)

Especifica la forma de administrar una operación de soltar. Está disponible en tiempo de ejecución y es de sólo lectura en tiempo de diseño.

Object.OLEDropHasData[= nDropEffect]

Valores de la propiedad

nDropEffect
Especifica cómo se administra la operación soltar. La tabla siguiente muestra los valores para nDropEffect con una descripción de cada uno de ellos.
nDropEffect | Constante de Foxpro.h | Descripción
–1 DROPHASDATA_VFPDETERMINE Predeterminado. Visual FoxPro determina automáticamente si el DataObject contiene datos en un formato que se puede colocar en el destino para colocar.

Si el DataObject contiene datos en un formato apropiado para el destino para colocar, los datos se colocan en el destino para colocar. Visual FoxPro controla el puntero del ratón y la notificación del origen de arrastre.

Si los datos no están en el formato apropiado para el destino para colocar, Visual FoxPro muestra el puntero del ratón No soltar, la operación colocar se cancela y se notifica al origen de arrastre que se ha cancelado la operación soltar.
0 | DROPHASDATA_NOTUSEFUL | El DataObject no contiene datos en un formato que se pueda colocar en el destino para colocar y se muestra el puntero del ratón No soltar.
1 | DROPHASDATA_USEFUL | El DataObject contiene datos en un formato que se puede colocar en el destino para colocar.

Observaciones

OLEDropHasData es una propiedad de destino para colocar y debe establecerse en el evento OLEDragOver. Utilice GetFormat en el evento OLEDragOver para determinar si el DataObject contiene datos en el formato apropiado para el destino para colocar. Si los datos están en el formato apropiado para el destino para colocar, establezca OLEDropHasData a 1.

Vea también

Técnica de arrastrar y soltar OLE | OLEDragOver (Evento) | OLEDropEffects (Propiedad)

Se aplica: CheckBox | ComboBox | CommandButton | CommandGroup | Container (Objeto) | Control (Objeto) | EditBox | Form | Grid | Image | Label | Line | ListBox | OptionButton | OptionGroup | Page | PageFrame | ProjectHook (Objeto) | Shape | Spinner | TextBox | ToolBar


OLEDropMode (Propiedad)

Especifica la forma en que un destino de colocación administra las operaciones de colocación de OLE. Está disponible en tiempo de diseño y en tiempo de ejecución.

Objeto.OLEDropMode[= nValue]

Valores de la propiedad

nValue
Especifica cómo controla el control u objeto las operaciones colocar de OLE. La tabla siguiente muestra los valores de nValue.
nValue Constante de Foxpro.h Descripción
0 DROP_DISABLED Deshabilitado (Predeterminado).

No se pueden colocar los datos en el control u objeto y no se produce ningún evento de destino para colocar. Se muestra el puntero del raton No colocar cuando se coloca sobre el control u objeto.

Si establece OLEDropMode a 0 proporciona compatibilidad con versiones anteriores (sin compatibilidad para colocarOLE) para aplicaciones existentes.
1 DROP_ENABLED Habilitado.

Visual FoxPro permite colocar datos en el control u objeto y se producen eventos de destino para colocar.
2 DROP_PASSTOCONTAINER Pasar al contenedor.

El control u objeto se comporta como si estuviera deshabilitado para operaciones colocar de OLE y los datos se colocan en el contenedor para el control o el objeto.

La propiedad OLEDropMode del contenedor debe establecerse a 1 o 2 para aceptar los datos. El puntero del raton No Colocar se muestra si la propiedad OLEDropMode del contenedor se establece en 0.

Observaciones

OLEDropMode es una propiedad de destino para colocar. Si la propiedad DropMode para un control u objeto se establece a 0 – Deshabilitado, el control u objeto no puede actuar como origen de colocar OLE. Esto proporciona compatibilidad con versiones anteriores para arrastrar y soltar de versiones de Visual FoxPro mas antiguas.

Si la propiedad Enabled de un control u objeto se establece a falso (.F.), no podrá colocarle datos. Para operaciones colocar, se muestra el puntero del ratón No Colocar cuando la propiedad Enabled de un control u objeto está establecida a falso (.F.).

Vea también

Enabled (Propiedad) | Técnica de arrastrar y soltar OLE |

Se aplica: CheckBox | ComboBox | CommandButton | CommandGroup | Container (Objeto) | Control (Objeto) | EditBox | Form | Grid | Image | Label | Line | ListBox | OptionButton | OptionGroup | Page | PageFrame | ProjectHook (Objeto) | Shape | Spinner | TextBox | ToolBar

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


OLEDropTextInsertion (Propiedad)

Especifica si puede colocar texto en medio de una palabra en la parte de cuadro de texto de un control.

Object.OLEDropTextInsertion[= lExpression]

Parámetros

lExpression
Los valores que puede tomar la propiedad OLEDropTextInsertion son:
Valor | Descripción
0 | (Predeterminado) El texto se puede colocar en una palabra.
1 | El texto sólo se puede colocar antes o después de una palabra.

Observaciones

La propiedad OLEDropMode de un control debe establecerse a 1 – Habilitado para colocar texto en la parte de cuadro de texto del control.

Vea también

Técnica de arrastrar y soltar OLE | OLEDropMode (Propiedad)

Se aplica a: ComboBox | EditBox | Spinner | TextBox


OLELCID (Propiedad)

Contiene un valor numérico que indica el Id. de la configuración regional para un control OLE dependiente o para un control Contenedor OLE. Es de sólo lectura en tiempo de diseño y en tiempo de ejecución.

Control.OLELCID

Observaciones

El valor del Id. de configuración regional se determina mediante el valor de la propiedad DefOLELCID para el formulario o la ventana principal de Visual FoxPro cuando se coloca un control OLE dependiente o un control Contenedor OLE en el formulario o en la ventana principal de Visual FoxPro.

Si la propiedad DefOLELCID de la ventana principal de Visual FoxPro o del formulario es cero cuando el control OLE dependiente o el control Contenedor OLE está situado en el formulario o en la ventana principal de Visual FoxPro, el control utilizará el Id. de configuración regional actual de Visual FoxPro (LCID). Utilice SYS(3004) para determinar el Id. de configuración regional actual de Visual FoxPro. Utilice la propiedad DefOLELCID para especificar un Id. de configuración regional para un formulario.

Para obtener una lista de los Ids. de configuración regional, vea SYS(3005).

Nota La propiedad OLELCID sólo afecta al idioma de la interfaz del usuario, cuya presentación está controlada por OLE, pero no afectará al idioma de los comandos de Automatización. El idioma de los comandos de Automatización sólo se verá afectado por el valor del Id. de configuración regional global establecido con SYS(3005).

Vea también

DefOLELCID (Propiedad) | SYS(3005) - Establecer Id. de configuración regional

Se aplica a: OLE Bound (Control) | OLE Container (Control)


OLERequestPendingTimeout (Propiedad)

Especifica el tiempo que transcurrirá desde que se realice una solicitud de automatización hasta que aparezca un mensaje de ocupado. De lectura/escritura en tiempo de ejecución.

ApplicationObject.OLERequestPendingTimeout[ = nMilliseconds]

Valores de la propiedad

nMilliseconds
Especifica el número de milisegundos que tienen que transcurrir antes de que aparezca un mensaje de ocupado cuando está pendiente una solicitud de automatización. El mensaje de ocupado aparecerá cuando tenga lugar un evento de ratón o de teclado. El valor predeterminado para nMilliseconds es 5000 milisegundos.

Si nMilliseconds es 0, no aparecerá ningún mensaje de ocupado cuando esté pendiente una solicitud de automatización y suceda un evento de teclado o de ratón.

Vea también

OLEServerBusyRaiseError (Propiedad) | OLEServerBusyTimeout (Propiedad)

Se aplica a: Application (Objeto) | _VFP (Variable del sistema)


OLEServerBusyRaiseError (Propiedad)

Especifica si aparecerá o no un mensaje de error cuando se rechace una solicitud de automatización. De lectura/escritura en tiempo de ejecución.

ApplicationObject.OLEServerBusyRaiseError[ = lExpression]

Valores de la propiedad

lExpression
Uno de los siguientes valores:
Valor | Descripción
.T. (Verdadero) | No se producirá ningún error ni aparecerá un mensaje de ocupado cuando haya transcurrido el número de milisegundos especificado mediante la propiedad OLEServerBusyTimeout.
.F. (Falso) | (Valor predeterminado) Se producirá un error y aparecerá un mensaje de ocupado cuando haya transcurrido el número de milisegundos especificado mediante la propiedad OLEServerBusyTimeout.

Vea también

OLERequestPendingTimeout (Propiedad) | OLEServerBusyTimeout (Propiedad)

Se aplica a: Application (Objeto) | _VFP (Variable del sistema)


OLEServerBusyTimeout (Propiedad)

Especifica durante cuánto tiempo se seguirá intentando la solicitud de automatización mientras un servidor está ocupado. De lectura/escritura en tiempo de ejecución.

ApplicationObject.OLEServerBusyTimeout[ = nMilliseconds]

Valores de la propiedad

nMilliseconds
Especifica el tiempo (en milisegundos) permitido para volver a intentar una solicitud de automatización antes de que aparezca un mensaje de ocupado.

Vea también

OLERequestPendingTimeout (Propiedad) | OLEServerBusyRaiseError (Propiedad)

Se aplica a: Application (Objeto) | _VFP (Variable del sistema)


OLETypeAllowed (Propiedad)

Devuelve el tipo de objeto OLE (incrustado o vinculado) contenido en un control. Es de sólo lectura en tiempo de diseño y en tiempo de ejecución.

Control.OLETypeAllowed[ = nValue]

Valores de la propiedad

nValue
Devuelve un valor que indica el tipo de objeto OLE (incrustado o vinculado) contenido en un control. Los valores posibles son 0 (Vinculado), 1 (Incrustado) y -1 (el control no contiene un objeto OLE)., y -2 (control ActiveX (.ocx)).

Observaciones

OLETypeAllowed sólo es útil cuando se especifica un valor para la propiedad DocumentFile.

Nota Puede establecer la propiedad OLETypeAllowed en el código para crear un objeto OLE vinculado mediante el comando DEFINE CLASS.

Vea también

DEFINE CLASS | DocumentFile (Propiedad)

Se aplica a: OLE Bound (Control) | OLE Container (Control)


OneToMany (Propiedad)

Al moverse por los registros de la tabla primaria, especifica si el puntero de registro permanece en el mismo registro primario hasta que el puntero de registro de la tabla secundaria se mueva por todos los registros relacionados. Esta disponible en tiempo de diseño; es de solo lectura en tiempo de ejecución.

Object.DataEnvironment.Relation.OneToMany[ = lExpr]

Valores de la propiedad

lExpr
Los valores para la propiedad OneToMany son:
Valor | Descripción
Verdadero (.T.) | El puntero de registro permanece en el mismo registro primario hasta que el puntero de registro de la tabla secundaria se mueva por todos los registros relacionados.
Falso (.F.) | (Valor predeterminado) El puntero de registro de la tabla primaria se mueve al registro especificado y el puntero de registro de la tabla secundaria se mueve al primer registro relacionado.

Observaciones

Se puede utilizar la propiedad OneToMany para especificar el movimiento del puntero de registro en una tabla de relación primaria-secundaria simple. Para especificar el movimiento del puntero de registro en una relación más compleja (por ejemplo, una relación abuelo-padre-hijo), utilice SET SKIP en el método Init para el Form o el informe.

Cuando OneToManyse establece como Verdadero (.T.), simula el comportamiento de SET SKIP.

Vea también

SET SKIP

Se aplica a: Relation


OpenViews (Propiedad)

Determina el tipo de vistas asociado con un entorno de datos de un conjunto de formularios, de un formulario o de un informe que se abren automáticamente. Está disponible en tiempo de diseño; es de sólo lectura en tiempo de ejecución.

DataEnvironment.OpenViews[ = nExpression]

Valores de la propiedad

nExpression
Los valores para la propiedad OpenViews son:
Valor | Descripción
0 | (Predeterminado) Local y Remota. Tanto la vista local como la remota para el entorno de datos del conjunto de formularios, del formulario o del informe se abrirán automáticamente.
1 | Sólo local. Sólo se abrirán automáticamente las vistas locales para el entorno de datos del conjunto de formularios, del formulario o del informe.
2 | Sólo remota. Sólo se abrirán automáticamente las vistas remotas para el entorno de datos del conjunto de formularios, del formulario o del informe.
3 | Ninguno. No se abrirá ninguna vista para el entorno de datos del conjunto de formularios, del formulario o del informe.

Observaciones

La propiedad OpenViews se aplica cuando la propiedad AutoOpenTables está establecida en el valor verdadero (.T.) o cuando se ejecuta el método OpenTables.

Vea también

AutoOpenTables (Propiedad) | OpenTables (Método)

Se aplica a: DataEnvironment


OpenWindow (Propiedad)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar un control EditBox.


Order (Propiedad)

Especifica la etiqueta de índice de control para un objeto Cursor. Está disponible en tiempo de diseño y en tiempo de ejecución.

DataEnvironment.Cursor.Order[ = cTagName]

Valores de la propiedad

cTagName
Especifica una etiqueta de índice existente para una tabla.

Observaciones

Si se establece la propiedad ChildOrder de un objeto Relation, se pasará por alto la propiedad Order.

Utilice la propiedad Order para especificar el orden de aparición o de acceso de los registros. Si establece la propiedad Order, se cambia el orden del índice y se mueve el puntero de registros al primer registro del cursor.

Vea también

ChildOrder (Propiedad) | INDEX | SET ORDER

Se aplica a: Cursor


PageCount (Propiedad)

Especifica el número de páginas que contiene un marco de página. Está disponible en tiempo de diseño y en tiempo de ejecución.

PageFrame.PageCount[ = nPages]

Valores de la propiedad

nPages
Especifica el número de páginas que contiene un marco de página.

Observaciones

El valor mínimo de la propiedad PageCount es 0 y el máximo es 99

Precaución Si reduce el valor de la propiedad PageCount (por ejemplo, si cambia el valor de 3 a 2), se perderán todas las páginas que superen el nuevo valor y los objetos que contienen.

Vea también

ButtonCount (Propiedad) | ControlCount (Propiedad) | FormCount (Propiedad) | Page (Objeto)

Applies To: PageFrame (Control)


PageHeight (Propiedad)

Especifica la altura de una página. Es de sólo lectura en tiempo de diseño y en tiempo de ejecución.

PageFrame.PageHeight[ = nHeight]

Parámetros

nHeight
Especifica la altura de la página en la unidad de medida especificada por la propiedad ScaleMode del formulario.

Vea también

PageWidth (Propiedad) | Page (Objeto) | ScaleMode (Propiedad)

Se aplica a: PageFrame


PageOrder (Propiedad)

Especifica el orden relativo de las páginas en un marco de página. Está disponible en tiempo de diseño y en tiempo de ejecución.

Page.PageOrder[ = nOrder]

Parámetros

nOrder
Especifica el orden relativo de una página en un marco de página.

Observaciones

Si un marco de página contiene cinco páginas y desea que la tercera se muestre en último lugar, establezca la propiedad PageOrder de la tercera página en 5. El valor de PageOrder para la cuarta página se convierte en 3, el valor de PageOrder para la quinta página en 4, y así sucesivamente.

Nota No es necesario que los valores dePageOrder sean secuenciales. Además, el valor de PageOrder tiene que ser menor o igual al número de páginas que hay en un marco de página.

Vea también

Activate (Evento) | Deactivate (Evento) | PageFrame (Control) | ZOrder (Método)

Se aplica a: Page


Pages (Propiedad)

Una matriz que se utiliza para tener acceso a las páginas individuales de un marco de página. Sólo está disponible en tiempo de ejecución.

PageFrame.Pages(Index).Property[ = Expr]

Parámetros

Index
Representa el índice de la página a la que desea tener acceso.
Expr
Especifica el valor de una propiedad para la página contenida en un marco de página.

Vea también

Buttons (Propiedad) | Page (Objeto) | PageCount (Propiedad)

Se aplica a: PageFrame


PageWidth (Propiedad)

Especifica el ancho de la página. Está disponible en tiempo de diseño; es de sólo lectura en tiempo de ejecución.

PageFrame.PageWidth[ = nWidth]

Valores de la propiedad

nWidth
Especifica el ancho de la página en la unidad de medida especificada por la propiedad ScaleMode del formulario.

Observaciones

El valor de la propiedad PageWidth es el mismo que el de la propiedad Width, a menos que el objeto PageFrame contenga más de una página y las páginas estén apiladas.

Vea también

PageHeight (Propiedad) | Page (Objeto) | ScaleMode (Propiedad)

Se aplica a: PageFrame


Panel (Propiedad)

Especifica el panel activo de un control cuadrícula. Está disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución. Sólo está disponible si la propiedad Partition está establecida en un valor mayor que 0.

Grid.Panel[ = nSide]

Valores de la propiedad

nSide
Los valores para la propiedad Panel son:
Valor | Descripción
0 | El panel izquierdo está activo.
1 | (Valor predeterminado) El panel derecho está activo.

Vea también

PanelLink (Propiedad) | Partition (Propiedad)

Se aplica a: Grid


PanelLink (Propiedad)

Especifica si los paneles izquierdo y derecho de un control cuadrícula están vinculados cuando se divide la cuadrícula. Está disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución. Sólo está disponible si la propiedad Partition está establecida en un valor mayor que 0.

Grid.PanelLink[ = lExpr]

Valores de la propiedad

lExpr
Los valores para la propiedad PanelLink son:
Valor | Descripción
Verdadero (.T.) | (Valor predeterminado) Los paneles izquierdo y derecho de la cuadrícula están vinculados cuando se divide la cuadrícula.
Falso (.F.) | Los paneles izquierdo y derecho de la cuadrícula no están vinculados cuando se divide la cuadrícula.

Si PanelLink está establecida como verdadero (.T.), los dos paneles de la cuadrícula se verán afectados cuando se establezcan las propiedades siguientes: HeaderHeight, DeleteMark, GridLineColor, GridLines, GridLineWidth, Highlight, RecordMark, RowHeight y ScrollBars.

Si PanelLink está establecido en falso (.F.), el valor de la propiedad Panel determinará en qué panel se establecen las propiedades siguientes: HeaderHeight, DeleteMark, GridLineColor, GridLines, GridLineWidth, HighLight, RecordMark, RowHeight y ScrollBars.

Vea también

DeleteMark (Propiedad) | GridLineColor (Propiedad) | GridLines (Propiedad) | GridLineWidth (Propiedad) | HeaderHeight (Propiedad) | Highlight (Propiedad) | Panel (Propiedad) | Partition (Propiedad) | RecordMark (Propiedad) | RowHeight (Propiedad) | ScrollBars (Propiedad)

Se aplica a: Grid


ParentAlias (Propiedad)

Especifica el nombre de alias de la tabla primaria. Es de sólo lectura en tiempo de diseño y en tiempo de ejecución.

DataEnvironment.Relation.ParentAlias[ = cAliasName]

Valores de la propiedad

cAliasName
Especifica el nombre de alias de la tabla primaria de la relación.

Observaciones

El valor de la propiedad ParentAlias debe ser el mismo nombre que el de la propiedad Alias para el objeto Cursor que representa a la tabla primaria.

Vea también

Alias (Propiedad) | ChildAlias (Propiedad)

Se aplica a: Relation


ParentClass (Propiedad)

Devuelve el nombre de la clase en la que se basa la clase del objeto. Es de sólo lectura en tiempo de diseño y en tiempo de ejecución.

Object.ParentClass

Observaciones

En el Diseñador de clases, la propiedad ParentClass contiene el nombre de la clase en la que se basa la clase de la subclase.

Vea también

Parent (Propiedad)

Se aplica a: CheckBox | Collection (Clase) | Column | ComboBox | CommandButton | CommandGroup | Container (Objeto) | Control (Objeto) | CursorAdapter (Clase) | Custom | EditBox | Exception (Clase) | Form | FormSet | Grid | Header | Image | Label | Line | ListBox | OLE Bound (Control) | OLE Container (Control) | OptionButton | OptionGroup | Page | PageFrame | ProjectHook (Objeto) | _SCREEN | Session (Objeto) | Shape | Spinner | TextBox | Timer | ToolBar


ParentTable (Propiedad)

Contiene una referencia de objeto a un objeto XMLTable primario que existe y contiene el objeto XMLTable. De sólo lectura.

XMLTable.ParentTable

Valores de la propiedad

Referencia de Objeto. ParentTable contiene uno de los siguientes:

  • Una referencia de objeto al objeto XMLTable primario cuando contiene el objeto XMLTable
  • Null (.NULL.) bajo las siguientes condiciones:
    • Puede crear el objeto XMLTable por si mismo, ni contenido por un objeto XMLAdapter o como secundario de otro objeto XMLTable.
    • Cuando el objeto XMLTable está contenido por un objeto XMLAdapter. La propiedad XMLAdapter contiene una referencia de objeto al objeto XMLAdapter que contiene el objeto XMLTable.

Vea también

Propiedades | XMLTable (Objeto: propiedades, métodos, eventos) | XMLAdapter (Clase)

Se aplica a: XMLTable (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y asuntos del producto, vea el tema "Soporte Técnico Microsoft Visual FoxPro"..

© 1992 - 2003 Microsoft Corporation. Reservados todos los derechos.


Partition (Propiedad)

Especifica si un control cuadrícula se divide en dos paneles y dónde está la división con relación al borde izquierdo de la cuadrícula. Está disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

Grid.Partition[ = nSplit]

Valores de la propiedad

nSplit
Especifica la posición en la que el control cuadrícula se divide en dos paneles. Si nSplit es 0, la cuadrícula no se dividirá.

Observaciones

Observe que la propiedad SplitBar tiene prioridad sobre la propiedad Partition.

Vea también

Panel (Propiedad) | PanelLink (Propiedad) | SplitBar (Propiedad)

Se aplica a: Grid


PasswordChar (Propiedad)

Determina si se muestran en un control TextBox los caracteres escritos por un usuario o los caracteres de marcador de posición; determina el carácter utilizado como marcador de posición. Está disponible en tiempo de diseño y en tiempo de ejecución.

TextBox.PasswordChar[ = cCharString]

Valores de la propiedad

cCharString
Especifica los caracteres que se muestran en un cuadro de texto.

Observaciones

Utilice esta propiedad para crear un campo de contraseña en un cuadro de diálogo. Aunque puede utilizar cualquier carácter, la mayoría de las aplicaciones utilizan el asterisco (*), carácter ANSI 42.

Esta propiedad no afecta al valor de la propiedad Value; contiene exactamente lo que el usuario escribe o lo que se establece desde el código. Establezca PasswordChar como una cadena vacía ("") para mostrar el texto real. La configuración predeterminada es una cadena vacía.

Puede asignar cualquier cadena a esta propiedad, pero sólo es significativo el primer carácter; los demás se pasan por alto.

Vea también

Format (Propiedad) | InputMask (Propiedad) | Value (Propiedad)

Applies To: TextBox (Control)


Picture (Propiedad)

Especifica el archivo de gráficos que se va a mostrar en el control. Está disponible en tiempo de diseño y en tiempo de ejecución.

Control.Picture [ = cFileName ]

Parámetros

cFileName
Dato tipo Carácter. Especifica el nombre de un archivo gráfico.

Visual FoxPro admite todos los formatos de archivo gráfico controlados por Graphics Device Interface+ (GDI+). Para detalles acerca de formatos de archivos gráfico válidos, vea Compatibilidad con gráficos en Visual FoxPro.

Observaciones

Muestra imágenes centradas en el control.

Para los controles CommandButton y OptionButton, la imagen especificada se utiliza si un botón está habilitado, seleccionado o deshabilitado. Puede especificar una imagen diferente para cada estado del botón estableciendo las propiedades DownPicture y DisabledPicture.

Nota Si establece la propiedad Picture en tiempo de diseño y el archivo especificado no existe, Microsoft Visual FoxPro muestra un mensaje de error, pero la propiedad sigue establecida al archivo especificado. Visual FoxPro pasa por alto la propiedad Picture en tiempo de ejecución si se establece en un archivo que no existe.

Para mostrar la imagen en los controles CommandButton, CheckBox y OptionButton, necesita establecer el valor de la propiedad Style para el control correspondiente.

Control | Valor de la propiedad Style
CommandButton | 0 (Estándar)
CheckBox, OptionButton | 1 (Gráfico)

Para objetos Header, si la cabecera no contiene un título, la imagen aparece en el centro de la cabecera. Si la cabecera contiene un título, la propiedad Alignment de Header determina como se alinea la imagen con el texto del título. Si Alignment se establece como izquierda o centro, la imagen aparece a la derecha del título. Si Alignment se establece como derecha, la imagen aparece a la izquierda del título.

Para Toolbars, las dimensiones recomendadas para la imagen son 16 x 15 pixels (ancho x altura).

Para controles ComboBox y ListBox, puede utilizar la propiedad Picture como un único valor de propiedad o como una matriz. Si utiliza Picture como un único valor de propiedad, todos los items en el control muestran la misma imagen. Si utiliza Picture como una matriz, la cual almacena una imagen para cada elemento en la lista, cada elemento puede tener una imagen diferente. Por ejemplo:

oCombobox.AddItem("Home")
oCombobox.AddItem("Community")
oCombobox.AddItem("Web Services")
oCombobox.Picture[1] = 'home.bmp'
oCombobox.Picture[2] = 'community.bmp'
oCombobox.Picture[3] = 'websvc.bmp'
Nota Si establece la propiedad Picture en tiempo de diseño y el archivo que especifique no existe, Visual FoxPro muestra el mensaje apropiado, pero la propiedad permanece establecida con el valor del archivo que se especificó. Visual FoxPro ignora la propiedad Picture en tiempo de ejecución si se establece a un archivo que no exista.

Visual FoxPro admite archivos .gif animados para la propiedad Picture solamente en un control Image.

Vea también

DisabledPicture (Propiedad) | DownPicture (Propiedad) | Style (Propiedad) | Agregar imágenes a elementos de una lista

Se aplica a: CheckBox (Control) | CommandButton (Control) | ComboBox (Control) | Container (Objeto) | Control (Objeto) | Custom (Objeto) | Form (Objeto) | Header (Objeto) | Image (Control) | ListBox (Control) | OptionButton (Control) | Page (Objeto) | _SCREEN (Variable del sistema) |


PicturePosition (Propiedad)

Especifica la localización de una imagen respecto a su título. De lectura/escritura en tiempo de ejecución.

Object.PicturePosition [ = nValue ]

Parámetros

nValue
Especifica el alineamiento para una imagen. En la siguiente tabla se listan los valores para nValue.
nValue | Ubicación
0 | La imagen aparece a la izquierda del título. La imagen se alinea con la parte superior del título.
1 | La imagen aparece a la izquierda del título. La imagen se centra respecto al título.
2 | La imagen aparece a la izquierda del título. La imagen se alinea con la parte inferior del título.
3 | La imagen aparece a la derecha del título. La imagen se alinea con la parte superior del título.
4 | La imagen aparece a la derecha del título. La imagen se centra respecto al título.
5 | La imagen aparece a la derecha del título. La imagen se alinea con la parte inferior del título.
6 | La imagen aparece arriba del título. La imagen se alinea con la parte izquierda del título.
7 | La imagen aparece arriba del título. La imagen se centra respecto al título.
8 | La imagen aparece arriba del título. La imagen se alinea con la parte derecha del título.
9 | La imagen aparece debajo del título. La imagen se alinea con la parte izquierda del título.
10 | La imagen aparece debajo del título. La imagen se centra respecto al título.
11 | La imagen aparece debajo del título. La imagen se alinea con la parte derecha del título.
12 | La imagen aparece en el centro del control. El título está centrado horizontal y verticalmente con la parte superior de la imagen.
13 | La imagen aparece en el centro del control. El título está centrado debajo de la imagen pero permanece relativo a la parte inferior del botón cuando cambia el tamaño. (Predeterminado)

Observaciones

La imagen y título, como una unidad, se centran en el control. Si no existe título, la imagen se localiza relativa al centro del control.

La propiedad PicturePosition está soportada en los controles OptionButton y CheckBox cuando sus propiedades Style se establecen a un valor de 1 (Gráfico). Cuando Style se establece a un valor diferente de 1, Visual FoxPro ignora PicturePosition además de Picture.

Visual FoxPro ignora PicturePosition si la propiedad Picture no especifica una imagen. Para controles CommandButton, Visual FoxPro no tiene en cuenta PicturePosition si Style se establece a 1 (Invisible).

Las propiedades Wordwrapping y AutoSize están soportadas con PicturePosition.

Las propiedades SpecialEffect y VisualEffect afectan el borde exterior pero no afectan a PicturePosition.

Con el comportamiento actual, el tamaño de la imagen es fijo. Si desea alargar, cambiar el tamaño o cortar la imagen, debe usar un control Image.

Versiones anteriores a Visual FoxPro 8.0 usan un algoritmo de posicionamiento que difiere ligeramente de la configuración estándar 0 – 12. La imagen siempre permanece centrada; sin embargo, el texto permanece relativo a la parte inferior de la imagen.

Cuando PicturePosition se establece a un valor de 7, ocurre un comportamiento similar. Sin embargo, si se reduce el tamaño del botón, el texto se recorta en lugar de cambiarlo a la parte superior del botón. Establecer PicturePosition a un valor de 13 corresponde al comportamiento en versiones anteriores a Visual FoxPro 8.0.

Los archivos .gif animados no están soportados.

La propiedad PicturePosition se aplica a las propiedades Picture, DownPicture y DisabledPicture.

Vea también

Propiedades | Picture (Propiedad) | Style (Propiedad) | AutoSize (Propiedad) | SpecialEffect (Propiedad) | VisualEffect (Propiedad) | Image (Control) | DownPicture (Propiedad) | DisabledPicture (Propiedad)

Se aplica a: CommandButton (Control) | OptionButton (Control) | CheckBox (Control)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y asuntos del producto, vea el tema "Soporte Técnico Microsoft Visual FoxPro"..

© 1992 - 2003 Microsoft Corporation. Reservados todos los derechos.


PictureSelectionDisplay (Propiedad)

Especifica cómo aparece una imagen en la porción cuadro de texto de un control ComboBox.

Nota Puede especificar una imagen estableciendo la propiedad Picture del control a un nombre de archivo imagen.
Combobox.PictureSelectionDisplay = nExpr

Parámetros

nExpr
Dato tipo Numérico. En la siguiente tabla se listan los valores de nExpr.
nExpr | Descripción
0 (Ninguno) | No muestra la imagen en el cuadro de texto de un cuadro combinado. (Predeterminado)
1 (Recortar) | La imagen se recorta a la misma altura del cuadro de texto de un cuadro combinado. El ancho de la imagen permanece igual.
2 (Isométrico) | Cambia el tamaño de la imagen para ajustarse a la altura del cuadro de texto de un cuadro combinado mientras se mantiene su proporción original.
3 (Estirar) | Cambia el tamaño de la imagen para ajustarse a la altura del cuadro de texto de un cuadro combinado pero no mantiene su proporción original. El ancho de la imagen permanece igual.

Observaciones

Si la propiedad Style del cuadro combinado se establece a 0 (Cuadro desplegable), las imágenes se muestran en el cuadro de texto del cuadro combinado con el siguiente comportamiento:

  • Cuando la porción lista de un cuadro combinado no está visible, y está escribiendo texto directamente en el cuadro combinado, la imagen predefinida, si se especificó, aparece hasta que el texto coincida con un ítem en la lista. Si no existe coincidencia, la imagen predefinida aparece aun cuando el control pierda el foco.
  • La propiedad Margin del cuadro combinado especifica el espacio de texto, mas el relleno, desde el borde superior izquierdo del cuadro de texto. Cuando aparece una imagen en el cuadro de texto, la propiedad Margin especifica el espacio entre el borde de la imagen y el borde superior izquierdo del cuadro de texto. El espacio horizontal entre el borde derecho de la imagen y el texto siempre es cuatro píxeles, a pesar del valor de la propiedad Margin del cuadro combinado. El cursor de texto aparece a dos píxeles desde el borde derecho de la imagen. Puede insertar espacio adicional haciendo que la imagen contenga espacio en blanco.
    Nota Aun si Margin se establece a 0, existe un espacio de tres píxeles desde los bordes izquierdo y superior para proveer espacio para el cursor de texto. Especificar un valor para Margin agrega píxeles a su relleno. Sin embargo, si una imagen aparece, Margin sólo afecta el margen entre el borde superior del cuadro de texto y el texto. El margen izquierdo del texto siempre aparece a cuatro píxeles desde la imagen para mantener el alineamiento de los ítems dentro de la lista.

Si la propiedad Style del cuadro combinado se establece a 2 (Lista desplegable), las imágenes se muestran en el cuadro de texto de un cuadro combinado con dos píxeles de espacio horizontal entre el borde derecho de la imagen y el texto.

Vea también

Propiedades | Margin (Propiedad) | Picture (Propiedad)

Se aplica a: ComboBox (Control)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y asuntos del producto, vea el tema "Soporte Técnico Microsoft Visual FoxPro"..

© 1992 - 2003 Microsoft Corporation. Reservados todos los derechos.


Prepared (Propiedad)

Especifica si preparar las instrucciones SQL para las subsiguientes llamadas a la función REQUERY( ). Puede usar REQUERY( ) para recuperar de nuevo datos para una vista SQL. Cuando maneje esta propiedad para cursores regulares, use las funciones CURSORSETPROP( ) y CURSORGETPROP( ). De lectura/escritura.

Nota Cuando Prepared, está establecida en un objeto CursorAdapter, se sobrescribe la configuración de la propiedad del cursor, cuando se realiza el enlace al objeto CursorAdapter. De tal manera, que cambiar la configuración del cursor usando CURSORSETPROP() no tiene efecto.

Para mas información, vea REQUERY( ) (Función) y SQLPREPARE( ) (Función).

CursorAdapter.Prepared [= lValue]

Valores de la propiedad

lValue
Tipo de dato lógico. En la siguiente tabla se listan los valores para lValue.
lValue | Descripción
Verdadero (.T.) | Prepara instrucciones SQL para subsiguientes llamadas a la función REQUERY( ). (Predefinido)
Falso (.F.) | No prepara instrucciones SQL para subsiguientes llamadas a la función REQUERY( ).

Vea también

Propiedades | CursorAdapter (Objeto: propiedades, métodos y eventos) | CURSORGETPROP( ) (Función) | CURSORSETPROP( ) (Función)

Se aplica a: CursorAdapter (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y asuntos del producto, vea el tema "Soporte Técnico Microsoft Visual FoxPro"..

© 1992 - 2003 Microsoft Corporation. Reservados todos los derechos.


PreserveWhiteSpace (Propiedad)

Conserva o quita espacios en blanco de la salida XML. De lectura/escritura.

PreserveWhiteSpace sólo se aplica cuando cuando ejecute los métodos LoadXML y ToXML de XMLAdapter, que recuperan XML de acuerdo con esta configuración.

XMLAdapter.PreserveWhiteSpace [= lValue]

Valores de la propiedad

lValue
Dato tipo Lógico. En la siguiente tabla se listan los valores para lValue.
lValue | Descripción
Falso (.F.) | Quita espacios en blanco. (Predefinido)
Verdadero (.T.) | Conserva espacios en blanco.

Vea también

Propiedades | XMLAdapter (Objeto: propiedades, métodos y eventos) | LoadXML (Método) | ToXML (Método)

Se aplica a: XMLAdapter (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y asuntos del producto, vea el tema "Soporte Técnico Microsoft Visual FoxPro"..

© 1992 - 2003 Microsoft Corporation. Reservados todos los derechos.


Procedure (Propiedad)

Especifica el nombre del procedimiento o método donde ocurre una excepción. De lectura/escritura en tiempo de ejecución.

Exception.Procedure

Valores de la propiedad

Dato tipo Carácter

Observaciones

Idéntico al valor devuelto por la función PROGRAM().

Vea también

Propiedades | Exception (Objeto: propiedades, métodos y eventos) | PROGRAM( ) (Función) | TRY...CATCH...FINALLY (Comando) | Control estructurado de errores

Se aplica a: Exception (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..

© 1992 - 2003 Microsoft Corporation. Reservados todos los derechos.


PROCESSID (Propiedad)

Devuelve el identificador único del proceso actual.

_VFP.ProcessID

Observaciones

Puede utilizar esta propiedad para evaluar el uso de recursos durante la depuración.

Vea también

Application (Objeto)

Se aplica a: Application (Objeto) | _VFP


ProgID (Propiedad)

Contiene el PROGID registrado (Identificador programático) de un servidor de un proyecto. Es de sólo lectura en tiempo de diseño y en tiempo de ejecución.

Object.ProgID

Observaciones

Se crea un PROGID en el Registro de Windows para un servidor cuando se crea el archivo ejecutable (.exe) o la biblioteca de vínculos dinámicos (.dll) desde un proyecto.

Vea también

CLSID (Propiedad) | CREATEOBJECTEX( ) | TypeLibCLSID (Propiedad) | TypeLibDesc (Propiedad) | TypeLibName (Propiedad)

Se aplica a: Server (Objeto)


ProjectHook (Propiedad)

Una referencia de objeto al objeto ProjectHook que se crea para un proyecto.

Object.ProjectHook[ = oProjectHookClass]

Valores de la propiedad

oProjectHookClass
Especifica una clase basada en la clase de base ProjectHook de Visual FoxPro. De forma predeterminada, contiene una referencia de objeto a la clase ProjectHook predeterminada especificada en la Ficha Proyecto del Cuadro de diálogo Información del proyecto.

Observaciones

La propiedad ProjectHook contiene el valor Null si no se le ha asignado una clase basada en la clase de base ProjectHook o si el proyecto no tiene una clase ProjectHook predeterminada (especificada en la ficha Proyecto del cuadro de diálogo Información del proyecto. Si asigna el valor Null a la propiedad ProjectHook, libera el objeto ProjectHook, pero no afecta a la clase ProjectHook predeterminada del proyecto.

Para obtener más información acerca de los proyectos, vea Enlaces del Administrador de proyectos.

Vea también

ProjectHook (Objeto) | ProjectHookClass (Propiedad) | ProjectHookLibrary (Propiedad)

Se aplica a: Project (Objeto)


ProjectHookClass (Propiedad)

La clase ProjectHook predeterminada de un proyecto.

Object.ProjectHookClass[ = cClassName]

Valores de la propiedad

cClassName
Especifica la clase ProjectHook predeterminada para un proyecto. Antes de que pueda especificar una clase ProjectHook para un proyecto, especifique la biblioteca de clases visuales .vcx que contiene la clase ProjectHook con la propiedad ProjectHookLibrary.

Para eliminar la clase ProjectHook predeterminada del proyecto, establezca la propiedad ProjectHookClass o ProjectHookLibrary como una cadena vacía.

Observaciones

También puede especificar la clase ProjectHook predeterminada en la ficha Proyecto del cuadro de diálogo Información del proyecto.

Si cambia la propiedad ProjectHookClass no se crea el nuevo objeto ProjectHook. El cambio tendrá lugar la próxima vez que se abra el proyecto. Para cambiar el objeto ProjectHook actual, use la propiedad ProjectHook.

Para obtener más información acerca de los proyectos, vea Enlaces del Administrador de proyectos.

Vea también

ProjectHook (Objeto) | ProjectHook (Propiedad) | ProjectHookLibrary (Propiedad)

Se aplica a: Project (Objeto)


ProjectHookLibrary (Propiedad)

La biblioteca de clases visuales .vcx contiene la clase ProjectHook predeterminada para un proyecto.

Object.ProjectHookLibrary[ = cLibraryName]

Valores de la propiedad

cLibraryName
Especifica una biblioteca de clases visuales .vcx que contiene una clase basada en la clase base ProjectHook. Luego de especificar la biblioteca de clases visuales .vcx con esta propiedad, utilice la propiedad ProjectHookClass para indicar la clase predeterminada para el proyecto.

Para eliminar la clase ProjectHook predeterminada de un proyecto, configure las propiedades ProjectHookLibrary o ProjectHookClass con una cadena vacía.

Observaciones

También puede especificar la clase ProjectHook predeterminada para un proyecto en la ficha Proyecto del cuadro de diálogo Información del proyecto.

Cambiar la propiedad ProjectHookLibrary no instancia el nuevo objeto ProjectHook. El cambio toma efecto la próxima vez que se abra el proyecto. Para cambiar el objeto ProjectHook actualmente en uso, utilice la propiedad ProjectHook.

Para obtener más información acerca de los proyectos, vea Enlaces del Administrador de proyectos.

Vea también

ProjectHook (Objeto) | ProjectHook (Propiedad) | ProjectHookClass (Propiedad)

Se aplica a: Project (Objeto)


ReadBackColor, ReadForeColor (Propiedades)

Se incluye por compatibilidad con versiones anteriores de READ. Utilice el Diseñador de formularios en lugar de READ.


ReadCycle (Propiedad)

Se incluye por compatibilidad con versiones anteriores de READ. Utilice el Diseñador de formularios en lugar de READ.


ReadLock (Propiedad)

Se incluye por compatibilidad con versiones anteriores de READ. Utilice el Diseñador de formularios en lugar de READ.


ReadMouse (Propiedad)

Se incluye por compatibilidad con versiones anteriores de READ. Utilice el Diseñador de formularios en lugar de READ.


ReadObject (Propiedad)

Se incluye por compatibilidad con versiones anteriores de READ. Utilice el Diseñador de formularios en lugar de READ.


ReadOnly (Propiedad)

Especifica si el usuario puede modificar un control, o si una tabla o vista asociada con un objeto Cursor permite actualizaciones, o contiene un valor que indica si se puede modificar el archivo de un proyecto. Está disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

 [Form.]Control.ReadOnly[ = lExpr] DataEnvironment.Cursor.ReadOnly[ = lExpr] Project.Files.Item(nItem).ReadOnly

Valores de la propiedad

lExpr
Las configuraciones posibles para la propiedad ReadOnly son:
Valor | Descripción
Verdadero (.T.) | El usuario no puede modificar el control. No puede modificar la tabla o la vista asociada al objeto Cursor.
Falso (.F.) | (Predeterminado) El usuario puede modificar el control. No puede modificar la tabla o la vista asociada al objeto Cursor.

Observaciones

Nota Cuando se tiene acceso a Cursor utilizando CURSORSETPROP( ), la propiedad ReadOnly es de sólo lectura en tiempo de ejecución.

La propiedad ReadOnly difiere de la propiedad Enabled en que cuando ReadOnly está establecida en verdadero (.T.), el usuario todavía puede moverse hacia el control.

Para cursores, ReadOnly se comporta de forma similar a la cláusula NOUPDATE de la función USE.

Para controles ComboBox, no se puede establecer la propiedad ReadOnly en verdadero (.T.) cuando la propiedad Style está establecida en 2 - Lista desplegable.

Para un archivo de un proyecto, la propiedad ReadOnly contiene un valor lógico que indica si se puede modificar el archivo. Si la propiedad ReadOnly tiene el valor verdadero (.T.), el archivo se puede modificar; de lo contrario, el archivo no se puede modificar. Es de sólo lectura en tiempo de diseño y en tiempo de ejecución.

Vea también

Enabled (Propiedad) | USE

Se aplica a: CheckBox | Column | ComboBox | Cursor | EditBox | File (Objeto) | Grid | Spinner | TextBox


ReadTimeout (Propiedad)

Se incluye por compatibilidad con versiones anteriores de READ. Utilice el Diseñador de formularios en lugar de READ.


RecordMark (Propiedad)

Especifica si la columna selectora de registros se muestra en un control cuadrícula. Está disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

Grid.RecordMark[ = lExpr]

Valores de la propiedad

lExpr
Los valores para la propiedad RecordMark son:
Valor | Descripción
Verdadero (.T.) | (Predeterminado) La columna selectora de registros se muestra en un control cuadrícula.
Falso (.F.) | La columna selectora de registros no se muestra en un control cuadrícula.

Vea también

ScrollBars (Propiedad) | Controlar la selección de registros con combinaciones

Se aplica a: Grid


RecordSource (Propiedad)

Especifica el origen de los datos del cual depende el control cuadrícula. Está disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

Grid.RecordSource[ = cName]

Valores de la propiedad

cName
cName suele ser el nombre de alias de un cursor o el nombre de una tabla. La propiedad RecordSource especifica el cursor principal del que depende el control cuadrícula.

Observaciones

Si especifica un origen de registros para una cuadrícula, puede establecer ControlSource (Propiedad) para especificar el contenido de las columnas individuales en la cuadrícula. Si no establece la propiedad ControlSource para una columna de la cuadrícula, la columna muestra el siguiente campo disponible no mostrado del origen de registros de la cuadrícula.

Vea también

ControlSource (Propiedad) | Order (Propiedad) | RecordMark (Propiedad) | RecordSourceType (Propiedad)

Se aplica a: Grid


RecordSourceType (Propiedad)

Especifica como se abre el origen de datos que llena el control cuadrícula. Disponible en tiempo de diseño; es de lectura-escritura en tiempo de ejecución.

Grid.RecordSourceType[ = nType]

Valores de la propiedad

nType
The settings for the RecordSourceType property are:
Valor | Descripción
0 | Tabla. Abre automáticamente la tabla especificada en el valor de la propiedad RecordSource.
1 | (Predeterminado) Alias. Trata el origen del registro como especificado.
2 | Petición. Se pide el origen del registro al usuario durante la ejecución. Si hay una base de datos abierta, el usuario puede elegir una de las tablas que contenga como origen del registro.
3 | Consulta (.qpr). El valor de la propiedad RecordSource especifica un archivo .qpr.
4 | Instrucción SQL. La instrucción SQL se especifica en la propiedad RecordSource.

Vea también

RecordSource (Propiedad) | Establecer el entorno de datos

Se aplica a: Grid


RelationalExpr (Propiedad)

Especifica la expresión basada en los campos de la tabla primaria que se relaciona con un índice en la tabla secundaria, combinando las dos tablas. Para el control Grid, disponible en tiempo de diseño; de lectura-escritura en tiempo de ejecución. Para el objeto Relation, disponible en tiempo de diseño; de sólo lectura en tiempo de ejecución.

Object.RelationalExpr[ = cExpr]

Valores de la propiedad

cExpr
Especifica una expresión de Visual FoxPro, típicamente, una que empareja los índices actuales de la tabla secundaria de acuerdo con lo especificado por la propiedad ChildOrder.

Vea también

ChildOrder (Propiedad) | LinkMaster (Propiedad) | SET RELATION (comando)

Se aplica a: Grid | Relation


RelativeColumn (Propiedad)

Especifica la columna activa en la parte visible de un control cuadrícula. No está disponible en tiempo de diseño y es de sólo lectura en tiempo de ejecución.

Grid.RelativeColumn[ = nColumn]

Valores de la propiedad

nColumn
Especifica la columna activa en un control cuadrícula.

Observaciones

Utilice la propiedad RelativeColumn para determinar la posición relativa de la columna activa en una cuadrícula. Por ejemplo, si se mueve a lo largo de la cuadrícula de modo que la primera columna deje de ser visible, pero ahora la columna activa es la primera columna visible de la cuadrícula, RelativeColumn estará establecida en 1. Para determinar la posición absoluta de la columna activa en una cuadrícula, utilice la propiedad ActiveColumn.

Vea también

ActiveColumn (Propiedad) | ActiveRow (Propiedad) | RelativeRow (Propiedad)

Se aplica a: Grid


RelativeRow (Propiedad)

Contiene la fila activa de la parte visible de un control cuadrícula. No disponible en tiempo de diseño y de sólo lectura en tiempo de ejecución.

Grid.RelativeRow

Valores de la propiedad

nRow
Tipo de dato Numérico. RelativeRow contiene el número de la fila activa en un control cuadrícula.

Observaciones

Utilice la propiedad RelativeRow para determinar la posicion relativa de la fila activa en un Grid. Por ejemplo, si se desliza en un Grid de manera que no se posible ver la primera fila, pero la fila activa es la primera fila visible en el grid, RelativeRow devolvera 1.

Para determinar la posicion de la fila activa en un Grid, utilice la propiedad ActiveRow.

Vea también

Propiedades | ActiveColumn (Propiedad) | ActiveRow (Propiedad) | RelativeColumn (Propiedad)

Se aplica a: Grid


ReleaseType (Propiedad)

Devuelve un entero que determina como se libera un objeto Form. No está disponible en tiempo de diseño; es de sólo lectura en tiempo de ejecución.

Object.ReleaseType

Valores de la propiedad

Los valores para la propiedad ReleaseType son:

Valor | Descripción
0 | Variable liberada.
1 | Comando de menú Cerrar o cuadro Cerrar.
2 | Salir de Visual FoxPro.

Observaciones

La propiedad ReleaseType se establece antes del evento QueryUnload que se está llamando.

Vea también

QueryUnload (Evento) | Unload (Evento)

Applies To: Form (Objeto) | _SCREEN (Variable del sistema)


ReleaseXML (Método)

Libera el objeto adjunto IXMLDOMElement.

XMLAdapter.ReleaseXML( [lDisposeSchema] )

Parámetros

lDisposeSchema
Determina si se limpia la información de esquema por ReleaseXML. En la siguiente tabla se listan los valores para lDisposeSchema.
lDisposeSchema | Descripción
Verdadero (.T.) Limpia la colección Tables y establece las siguientes propiedades de XMLAdapter:
  • XMLName, XMLNamespace, y XMLPrefix a una cadena vacía ("")
  • IsDiffGram a Falso (.F.)
  • SOM a null (.NULL.)
  • XMLConstraints a null (.NULL.)

(Predeterminado)
Falso (.F.) | Se mantiene la información de esquema y las propiedades XMLName, XMLNamespace, XMLPrefix, IsDiffGram, XMLConstraints, y SOM de XMLAdapter no se cambian.

Vea también

Métodos | XMLAdapter (Objeto: propiedades, métodos y eventos) | Tables (XMLAdapter) (Colección) | XMLName (Propiedad) | XMLNamespace (Propiedad) | XMLPrefix (Propiedad) | IsDiffgram (Propiedad) | SOM (Propiedad) | XMLConstraints (Propiedad)

Se aplica a: XMLAdapter (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y asuntos del producto, vea el tema "Soporte Técnico Microsoft Visual FoxPro"..

© 1992 - 2003 Microsoft Corporation. Reservados todos los derechos.


Resizable (Propiedad)

Especifica si el usuario puede cambiar el tamaño de un objeto Column en tiempo de ejecución. Está disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

Column.Resizable[ = lExpr]

Valores de la propiedad

lExpr
Los valores de configuración para la propiedad Resizable son:
Valor | Descripción
Verdadero (.T.) | El tamaño del objeto Column es ajustable.
Falso (.F.) | (Predeterminado) El usuario no puede cambiar el tamaño del objeto Column.

Vea también

Width (Propiedad) | Resize (Objeto) | Resize (Evento)

Se aplica a: Column


RespectCursorCP (Propiedad)

Especifica si tomar en consideración la página de códigos del cursor.

Nota La propiedad UTF8Encoded trabaja en conjunto con la configuración de RespectCursorCP cuando UTF8Encoded es Verdadero (.T.).

RespectCursorCP sólo se aplica cuando ejecute el método ToXML de XMLAdapter, que recupera XML de acuerdo con esta configuración.

Para mas información acerca de equivalencias de códigos de página para codificar atributos XML, vea CURSORTOXML( ) (Función).

XMLAdapter.RespectCursorCP [= lValue]

Valores de la propiedad

lValue
Dato tipo Lógico. En la siguiente tabla se listan los valores para lValue.
lValue | Descripción
Falso (.F.) | Crea XML con codificación predefinida Windows-1252. (Predeterminado)
Verdadero (.T.) | Establece codificación a la página de códigos del cursor.

Observaciones

Por ejemplo, La siguiente tabla describe cómo interactúan RespectCursorCP y UTF8Encoded, cada uno con el otro..

RespectCursorCP | UTF8Encoded | Conversión realizada
Falso | Falso | Windows-1252 (Predefinido)
Verdadero | Falso | Establece el atributo codificación de salida a la página de códigos del cursor.
Falso | Verdadero | Establece el atributo codificación de salida a UTF-8. No se traduce ningún carácter.
Verdadero | Verdadero | Establece el atributo codificación de salida a UTF-8. Traduce los caracteres de datos UTF-8.

Vea también

Propiedades | XMLAdapter (Objeto: propiedades, métodos y eventos) | UTF8Encoded (Propiedad) | ToXML (Método)

Se aplica a: XMLAdapter (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y asuntos del producto, vea el tema "Soporte Técnico Microsoft Visual FoxPro"..

© 1992 - 2003 Microsoft Corporation. Reservados todos los derechos.


RightToLeft (Propiedad)

Esta propiedad se pasa por alto a menos que esté ejecutando una versión de Microsoft Windows para Oriente Medio. Especifica el orden de lectura del texto en controles y la presentación del resultado en cadena en los formularios. Está disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

Object.RightToLeft[ = lExpression]

Valores de la propiedad

lExpression
Los valores para la propiedad RightToLeft son:
Valor | Descripción
Verdadero (.T.) | (Predeterminado) El texto de los comandos se introduce y se presenta en un orden de lectura de derecha a izquierda. El resultado en cadena (por ejemplo, texto presentado con ? o ??) se muestra en los formularios en el sentido de derecha a izquierda.
Falso (.F.) | El texto de los comandos se introduce y se presenta en un orden de lectura de izquierda a derecha. El resultado en cadena se mostrará en los formularios en un orden de lectura de izquierda a derecha.

Observaciones

Utilice la propiedad Alignment para especificar la orientación del texto en las casillas de verificación y en los botones de opción.

Vea también

Alignment (Propiedad)

Se aplica a: CheckBox | ComboBox | CommandButton | EditBox | Form | Grid | Label | ListBox | OptionButton | PageFrame | _SCREEN | Spinner | TextBox


RotateFlip (Propiedad)

Especifica la rotación o inversión (flip) para una imagen. De lectura/escritura en tiempo de diseño y en tiempo de ejecución.

Image.RotateFlip [ = nValue ]

Parámetros

nValue
Dato tipo Numérico. En la siguiente tabla se listan los valores para nValue.
nValue | Configuración | Descripción
0 | RotateNoneFlipNone | No rotar o invertir.
1 | Rotate90FlipNone | Rotar 90-grados sin invertir.
2 | Rotate180FlipNone | Rotar 180-grados sin invertir.
3 | Rotate270FlipNone | Rotar 270-grados sin invertir.
4 | RotateNoneFlipX | No rotar e invertir horizontal.
5 | Rotate90FlipX | Rotar 90-grados seguido por invertir horizontal.
6 | Rotate180FlipX | Rotar 180-grados seguido por invertir horizontal.
7 | Rotate270FlipX | Rotar 270-grados seguido por invertir horizontal.

Observaciones

No están soportadas imágenes .gif animadas.

Puesto que una imagen puede tener un archivo .msk, el archivo .msk debe formatearse apropiadamente.

Nota Visual FoxPro almacena una única imagen internamente en memoria. Si se emplea esa imagen varias veces, Visual FoxPro muestra la imagen en la misma forma independientemente de RotateFlip. Si se desea mostrar la misma imagen varias veces en varias rotaciones, renombrar cada copia que se utilice de la imagen. Si se ejecuta el comando CLEAR...RESOURCES, Visual FoxPro recarga la imagen en memoria y pierde cualquier configuración anterior de GDI+.

Vea también

Propiedades | Compatibilidad con Gráficos en Visual FoxPro | CLEAR (Comandos) | PicturePosition (Propiedad) | Picture (Propiedad)

Se aplica a: Image (Control)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y asuntos del producto, vea el tema "Soporte Técnico Microsoft Visual FoxPro"..

© 1992 - 2003 Microsoft Corporation. Reservados todos los derechos.


RowColChange (Propiedad)

Contiene un valor que identifica el tipo de movimiento de celda realizado en una cuadrícula. Es de sólo lectura en tiempo de diseño y en tiempo de ejecución.

Grid.RowColChange

Observaciones

El valor de RowColChange es 0 al abrir la cuadrícula y después de actualizarla. Puede consultar esta propiedad en los eventos AfterRowColChange y BeforeRowColChange para determinar el tipo de cambio que desencadenó el evento, de la manera descrita en la tabla siguiente.

Valor | Descripción
0 (predeterminado) | Sin cambios.
1 | Cambio de fila
2 | Cambio de columna
3 | Cambio de fila y columna

Vea también

Grid (Control) | AfterRowColChange (Evento) | BeforeRowColChange (Evento)

Se aplica a: Grid


RowHeight (Propiedad)

Especifica el alto de las filas de un control cuadrícula. Está disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

Grid.RowHeight[ = nHeight]

Valores de la propiedad

nHeight
Especifica el alto de todas las filas de un control cuadrícula.

Observaciones

Si RowHeight se establece como – 1 (Auto), el tamaño de las filas cambia automáticamente para ajustarse al valor actual de la propiedad FontSize.

Vea también

FontSize (Propiedad) | RowColChange (Propiedad) | RowSource (Propiedad)

Se aplica a: Grid


RowSource (Propiedad)

Especifica el origen de los valores en un control ComboBox o ListBox. Está disponible en tiempo de diseño y en tiempo de ejecución.

Control.RowSource[ = cName]

Valores de la propiedad

cName
Especifica el origen de los valores.

Observaciones

El origen de los valores puede ser una lista delimitada por comas que contenga valores, una tabla, una instrucción SQL que cree un cursor o una tabla, una consulta, una matriz, una lista de campos delimitada por comas (que puede llevar delante un punto y el alias de tabla), una estructura de archivo (como *.dbf o *.txt), los nombres de los campos de una tabla o un menú. Utilice la propiedad RowSourceType para indicar el tipo de origen de la fila.

Puede utilizar RowSource para especificar varias columnas para un control ComboBox o ListBox en tiempo de diseño. Para especificar varias columnas, establezca RowSourceType en 1 (Valor) y especifique los valores de RowSource (separados por comas) de la siguiente manera:

Col1Row1,Col2Row1,Col1Row2,Col2Row2,,Col2Row3

Para especificar un alias para la tabla que contiene las columnas, utilice la siguiente sintaxis:

Alias.Col1Row1,Col2Row1,Col1Row2,Col2Row2,,Col2Row3

Los valores que especifique llenan el control, por filas, hasta el número de columnas especificado por la propiedad ColumnCount. El ejemplo anterior supone que ColumnCount está establecido como 2. Como se muestra en el ejemplo anterior, no habrá ningún valor en la columna 1, fila 3, porque hay dos comas sucesivas sin ningún valor entre ellas delante de columna 2, fila 3.

Ejemplo

El siguiente ejemplo crea un cuadro de lista. El origen de los elementos que aparecen como elementos de un cuadro de lista es una matriz; el nombre de la matriz se especifica con la propiedad RowSource. La propiedad RowSourceType se establece como 5 (matriz) para especificar que una matriz es el origen de los elementos del cuadro de lista.

La propiedad MultiSelect para el cuadro de lista está establecida en el valor verdadero (.T.), lo que permite realizar varias selecciones desde el cuadro de lista. El elemento o elementos que elija en el cuadro de lista aparecerán usando las propiedades ListCount, Selected y List para determinar el número de elementos del cuadro de lista y los elementos que ha elegido.

CLEAR
DIMENSION gaMyListArray(10)
FOR gnCount = 1 to 10  && Fill the array with letters
STORE REPLICATE(CHR(gnCount+64),6) TO gaMyListArray(gnCount)
NEXT
frmMyForm = CREATEOBJECT('Form')  && Create a Form
frmMyForm.Closable = .f.  && Disable the Control menu box
frmMyForm.Move(150,10)  && Move the form
frmMyForm.AddObject('cmbCommand1','cmdMyCmdBtn')  && Add "Quit" Command button
frmMyForm.AddObject('lstListBox1','lstMyListBox')  && Add ListBox control
frmMyForm.lstListBox1.RowSourceType = 5  && Specifies an array
frmMyForm.lstListBox1.RowSource = 'gaMyListArray' && Array containing listbox items
frmMyForm.cmbCommand1.Visible =.T.  && "Quit" Command button visible
frmMyForm.lstListBox1.Visible =.T.  && "List Box visible
frmMyForm.SHOW  && Display the form
READ EVENTS  && Start event processing
DEFINE CLASS cmdMyCmdBtn AS CommandButton  && Create Command button
Caption = '\<Quit'  && Caption on the Command button
Cancel = .T.  && Default Cancel Command button (Esc)
Left = 125  && Command button column
Top = 210  && Command button row
Height = 25  && Command button height
PROCEDURE Click
CLEAR EVENTS  && Stop event processing, close Form
CLEAR  && Clear main Visual FoxPro window
ENDDEFINE
DEFINE CLASS lstMyListBox AS ListBox  && Create ListBox control
Left = 10  && List Box column
Top = 10  && List Box row
MultiSelect = .T.  && Allow selecting more than 1 item
PROCEDURE Click
ACTIVATE SCREEN
CLEAR
? "Selected items:"
? "---------------"
FOR nCnt = 1 TO ThisForm.lstListBox1.ListCount
IF ThisForm.lstListBox1.Selected(nCnt)  && Is item selected?
? SPACE(5) + ThisForm.lstListBox1.List(nCnt) && Show item
ENDIF
ENDFOR
ENDDEFINE

Vea también

ColumnCount (Propiedad) | RecordSource (Propiedad) | RowSourceType (Propiedad)

Se aplica a: ComboBox | ListBox


RowSourceType (Propiedad)

Especifica el tipo de origen para los valores de un control. Está disponible en tiempo de diseño y en tiempo de ejecución.

Control.RowSourceType[ = nSource]

Valores de la propiedad

nSource
Los valores para la propiedad RowSourceType son:
Valor | Descripción
0 | (Valor predeterminado) Ninguno. Si utiliza el valor predeterminado, rellene la lista en tiempo de ejecución utilizando los métodos AddItem o AddListItem.
1 | Valor. Se rellena con una lista delimitada por comas.
2 | Alias. Utilice la propiedad ColumnCount para seleccionar campos de la tabla.
3 | Instrucción SQL. Un comando SELECT de SQL que crea un cursor o una tabla.
4 | Consulta (.qpr). Especifica un nombre de archivo con extensión .qpr.
5 | Matriz. Establece las propiedades de columna para mostrar varias dimensiones.
6 | Campos. Una lista de campos delimitada por comas. Los campos pueden llevar delante un punto y el alias de tabla.
7 | Archivos. La lista se rellena desde el directorio actual. Especifique una estructura de archivo (como *.dbf o *.txt) u ocúltela en la propiedad RowSource.
8 Estructura. Campos de la tabla especificada en RowSource.

Tenga en cuenta que cuando RowSourceType está establecido en 8, si la propiedad RowSource está vacía, se usa la tabla seleccionada como origen para los valores del control ComboBox o ListBox. En caso contrario, la propiedad RowSource especifica el alias de la tabla, el nombre de la tabla o el nombre de la base de datos usada como origen para los valores del control ComboBox o ListBox.
9 | Emergente. Se incluye por compatibilidad con versiones anteriores.

Para obtener más información acerca de cómo utilizar cada valor de RowSourceType, vea Controles para mostrar listas .

Ejemplo

El siguiente ejemplo crea un cuadro de lista. El origen de los elementos que aparecen como elementos de un cuadro de lista es una matriz; el nombre de la matriz se especifica con la propiedad RowSource. La propiedad RowSourceType se establece como 5 (matriz) para especificar que una matriz es el origen de los elementos del cuadro de lista.

La propiedad MultiSelect para el cuadro de lista está establecida en el valor verdadero (.T.), lo que permite realizar varias selecciones desde el cuadro de lista. El elemento o elementos que elija en el cuadro de lista aparecerán usando las propiedades ListCount, Selected y List para determinar el número de elementos del cuadro de lista y los elementos que ha elegido.

CLEAR
DIMENSION gaMyListArray(10)
FOR gnCount = 1 to 10  && Fill the array with letters
STORE REPLICATE(CHR(gnCount+64),6) TO gaMyListArray(gnCount)
NEXT
frmMyForm = CREATEOBJECT('Form')  && Create a Form
frmMyForm.Closable = .f.  && Disable the Control menu box
frmMyForm.Move(150,10)  && Move the form
frmMyForm.AddObject('cmbCommand1','cmdMyCmdBtn')  && Add "Quit" Command button
frmMyForm.AddObject('lstListBox1','lstMyListBox')  && Add ListBox control
frmMyForm.lstListBox1.RowSourceType = 5  && Specifies an array
frmMyForm.lstListBox1.RowSource = 'gaMyListArray' && Array containing listbox items
frmMyForm.cmbCommand1.Visible =.T.  && "Quit" Command button visible
frmMyForm.lstListBox1.Visible =.T.  && "List Box visible
frmMyForm.SHOW  && Display the form
READ EVENTS  && Start event processing
DEFINE CLASS cmdMyCmdBtn AS CommandButton  && Create Command button
Caption = '\<Quit'  && Caption on the Command button
Cancel = .T.  && Default Cancel Command button (Esc)
Left = 125  && Command button column
Top = 210  && Command button row
Height = 25  && Command button height
PROCEDURE Click
CLEAR EVENTS  && Stop event processing, close Form
CLEAR  && Clear main Visual FoxPro window
ENDDEFINE
DEFINE CLASS lstMyListBox AS ListBox  && Create ListBox control
Left = 10  && List Box column
Top = 10  && List Box row
MultiSelect = .T.  && Allow selecting more than 1 item
PROCEDURE Click
ACTIVATE SCREEN
CLEAR
? "Selected items:"
? "---------------"
FOR nCnt = 1 TO ThisForm.lstListBox1.ListCount
IF ThisForm.lstListBox1.Selected(nCnt)  && Is item selected?
? SPACE(5) + ThisForm.lstListBox1.List(nCnt) && Show item
ENDIF
ENDFOR
ENDDEFINE

Vea también

RowSource (Propiedad)

Se aplica a: ComboBox | ListBox


ScaleMode (Propiedad)

Especifica la unidad de medida para las coordenadas de un objeto cuando se utilizan métodos gráficos o se colocan controles. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.ScaleMode = nMode

Valores de la propiedad

nMode
Los valores para la propiedad ScaleMode son:
Valor | Descripción
0 | Fóxeles (un término de Visual FoxPro. Equivale al alto máximo y el ancho promedio de un carácter en la fuente actual).
3 | Píxeles (predeterminado; la unidad más pequeña de resolución de un monitor o de una impresora)

Vea también

DrawMode (Propiedad) | DrawStyle (Propiedad)

Se aplica a: Form | _SCREEN | ToolBar


SCCProvider (Propiedad)

El nombre del proveedor de control de código fuente para un proyecto. Sólo lectura.

Object.SCCProvider

Observaciones

Puede especificar un proveedor de control de código fuente para proyectos nuevos en la ficha Proyectos del cuadro de diálogo Opciones. La propiedad SCCProvider contiene la cadena vacía si el proyecto no está bajo control de código fuente.

Vea también

Software de control de código fuente en Visual FoxPro | SCCStatus (Propiedad) | Ficha Proyecto | cuadro de diálogo Opciones

Se aplica a: Project (Objeto)


SCCStatus (Propiedad)

Contiene un valor numérico que indica el estado de control de código fuente de un archivo de un proyecto. Es de sólo lectura en tiempo de diseño y en tiempo de ejecución.

Object.SCCStatus

Observaciones

La tabla siguiente muestra los valores que puede contener la propiedad SCCStatus:

Valor | Constante FoxPro.h | Descripción
0 | SCCFILE_NOTCONTROLLED | El archivo no está bajo control de código fuente.
1 | SCCFILE_NOTCHECKEDOUT | El archivo está bajo control de código fuente pero no está desprotegido.
2 | SCCFILE_CHECKEDOUTCU | El archivo está desprotegido para el usuario actual.
3 | SCCFILE_CHECKEDOUTOU | El archivo está desprotegido para otra persona que no es el usuario actual.
4 | SCCFILE_MERGECONFLICT | El archivo tiene un conflicto de combinación.
5 | SCCFILE_MERGE | El archivo se ha combinado sin conflictos.
6 | SCCFILE_CHECKEDOUTMU | El archivo está desprotegido para varios usuarios.

Vea también

SCCProvider (Propiedad) | Software de control de código fuente en Visual FoxPro | Colocar proyectos bajo control de código fuente

Se aplica a: File (Objeto)


ScrollBars (Propiedad)

Especifica el tipo de barras de desplazamiento de un cuadro de edición, un formulario o una cuadrícula. Es de lectura y escritura en tiempo de diseño y de sólo lectura en tiempo de ejecución.

 [Form.]Control.ScrollBars[= nType]

Valores de la propiedad

nType
Para un cuadro de edición, los valores son:
Valor | Descripción
0 | Ninguna
2 | (Valor predeterminado) Vertical

Para un formulario, los valores de la propiedad ScrollBars son:

Valor | Descripción
0 | (Predeterminado) Ninguno
1 | Horizontal
2 | Vertical
3 | Vertical y horizontal

Para una cuadrícula, los valores de la propiedad ScrollBars son:

Valor | Descripción
0 | Ninguna
1 | Horizontal
2 | Vertical
3 | (Predeterminado) Vertical y horizontal

Observaciones

Si están habilitadas, las barras de desplazamiento se muestran automáticamente cuando el formulario, la cuadrícula o el cuadro de edición contienen más información de la que se puede mostrar en el espacio disponible. El valor de la propiedad Scrollbars se evalúa para un formulario cuando se crea el formulario.

Si desea controlar el tamaño de la barra de desplazamiento en tiempo de ejecución, debe especificar un valor distinto de cero para nType.

Nota Los valores de nType mayores que cero requieren más memoria para poder utilizar la función SAVEAS( ). Para ahorrar memoria, debe especificar nType =0.

La propiedad Scrollbars se pasa por alto para _SCREEN.

Vea también

ContinuousScroll (Propiedad) | DoScroll (Método) | Scrolled (Evento)

Se aplica a: EditBox | Form | Grid


Seconds (Propiedad)

Especifica si se mostrará en un cuadro de texto la parte de los segundos de un valor DateTime. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.Seconds[ = nValue]

Valores de la propiedad

nValue
Uno de los siguientes valores:
Valor | Descripción
0 | Desactivado. No se mostrará la parte de los segundos del valor DateTime.
1 | On. Se mostrará la parte de los segundos del valor DateTime.
2 | (Predeterminado) El valor SET SECONDS determina si se muestra la parte de los segundos del valor DateTime. Si SET SECONDS está en ON, se mostrará la parte de los segundos del valor DateTime. Si SET SECONDS está en OFF, no se mostrará la parte de los segundos del valor DateTime.

Observaciones

El valor de la propiedad Seconds se pasará por alto si la propiedad DateFormat está establecida en Short o en Long.

Vea también

Century (Propiedad) | DateFormat (Propiedad) | DateMark (Propiedad) | Hours (Propiedad) | SET SECONDS | StrictDateEntry (Propiedad)

Se aplica a: TextBox


SelectCmd (Propiedad)

Especifica el comando para recuperar datos, desde el origen de datos en la propiedad DataSourceType de CursorAdapter. De lectura/escritura en tiempo de diseño y en tiempo de ejecución.

CursorAdapter.SelectCmd [ = cCommand ]

Valores de la propiedad

cCommand
Especifica una cadena de caracteres o expresión que se evalúa como un comando válido.

Para orígenes de datos XML, cCommand debe ser uno de los siguientes:

  • Una expresión que se evalúa como un origen XML válido para la función XMLTOCURSOR( ). XMLTOCURSOR( ) recupera los datos.
  • Una expresión que se evalúa como un objeto XMLTable. El método ToCursor de XMLTable recupera los datos.

Observaciones

Si la propiedad UseDeDataSource de CursorAdapter es Verdadera (.T.), y el CursorAdapter es un miembro del entorno de datos, las propiedades DataSource y DataSourceType de DataEnvironment sobrescriben las propiedades aplicables de CursorAdapter.

Vea también

Propiedades | CursorAdapter (Objeto: propiedades, métodos y eventos) | XMLTOCURSOR( ) (Función) | XMLTable (Clase) | ToCursor (Método)

Se aplica a: CursorAdapter (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y asuntos del producto, vea el tema "Soporte Técnico Microsoft Visual FoxPro"..

© 1992 - 2003 Microsoft Corporation. Reservados todos los derechos.


Selected (Propiedad)

Especifica si un elemento está seleccionado en un control ComboBox o ListBox. No está disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

[Form.]Control.Selected(nIndex) [= lExpr ]

Valores de la propiedad

nIndex
Dato de tipo numérico. Selected Especifica el índice de un elemento en un ComboBox o ListBox.
lExpr
Dato tipo Lógico. La siguiente lista muestra los valores para la propiedad Selected.
Valor | Descripción
Verdadero (.T.) | El elemento está seleccionado.
Falso (.F.) | El elemento no está seleccionado. (Predeterminado)

Observaciones

Si se establece la propiedad Selected de un control ListBox también se establece la propiedad ListItem y se desencadena el evento ProgrammaticChange.

La propiedad Selected es útil especialmente cuando los usuarios pueden hacer varias selecciones. Puede comprobar rápidamente qué elementos de la lista están seleccionados. También puede usar esta propiedad para seleccionar o deseleccionar elementos de una lista desde un programa. Para comprobar si el tercer elemento de un cuadro de lista está seleccionado, ejecute lo siguiente:

IF MyList.Selected(3)
WAIT WINDOW "Esta seleccionado!"
ELSE
WAIT WINDOW "No esta seleccionado!"
ENDIF

Ejemplo

El siguiente ejemplo crea un cuadro de lista. El origen de los elementos que aparecen como elementos de un cuadro de lista es una matriz; el nombre de la matriz se especifica con la propiedad RowSource. La propiedad RowSourceType se establece a 5 (matriz) para especificar que es una matriz el origen de los elemetos del cuadro de lista.

La propiedad MultiSelect para el cuadro de lista está establecida en el valor Verdadero (.T.), lo que permite realizar múltiples selecciones desde el cuadro de lista. El elemento o elementos que elija en el cuadro de lista aparecerán utilizando las propiedades ListCount, Selected y List para determinar el número de elementos del cuadro de lista y los elementos que ha elegido.

CLEAR
DIMENSION gaMyListArray(10)
FOR gnCount = 1 to 10  && Llena la matriz con letras
STORE REPLICATE(CHR(gnCount+64),6) TO gaMyListArray(gnCount)
NEXT

frmMyForm = CREATEOBJECT('Form')  && Crea un formulario.
frmMyForm.Closable = .f.  && Desactivar el menu contextual de la ventana.

frmMyForm.Move(150,10)  && Mover el formulario.

frmMyForm.AddObject('cmbCommand1','cmdMyCmdBtn')  && Agrega un boton de comando "Quit".
frmMyForm.AddObject('lstListBox1','lstMyListBox')  && Agrega un cuadro de lista

frmMyForm.lstListBox1.RowSourceType = 5  && Especifica una matriz.
frmMyForm.lstListBox1.RowSource = 'gaMyListArray' && Especifica la matriz que contiene los elementos del cuadro de lista.

frmMyForm.cmbCommand1.Visible =.T.  && Botoón de comando "Quit" visible.
frmMyForm.lstListBox1.Visible =.T.  && Cuadro de lista visible.

frmMyForm.SHOW  && Mostrar el formulario.
READ EVENTS  && Iniciar el proceso de eventos.

DEFINE CLASS cmdMyCmdBtn AS CommandButton  && Crear un botón de comando.
   Caption = '\<Quit'  && Asigna el texto que mostrara el botón de comando.
   Cancel = .T.  && Valor prdeterminado Cancel para el botón de comando (Esc).
   Left = 125  && Posición desde la izquierda.
   Top = 210  && Posición desde arriba.
   Height = 25  && Altura de Botón de comando.
PROCEDURE Click
      CLEAR EVENTS  && Detiene todos los eventos y procesos y cierra el formulario.
      CLEAR  && Limpia la ventana principal de Visual FoxPro
ENDDEFINE

DEFINE CLASS lstMyListBox AS ListBox  && Crea un control de cuadro de lista.
Left = 10  && Posición desde la izquierda
Top = 10  && Posición desde arriba
   MultiSelect = .T.  && Permite seleccionar mas de 1 elemento.
PROCEDURE Click
ACTIVATE SCREEN
CLEAR
? "Selected items:"
? "---------------"
FOR nCnt = 1 TO ThisForm.lstListBox1.ListCount
IF ThisForm.lstListBox1.Selected(nCnt)  && Está el elemento seleccionado?
         ? SPACE(5) + ThisForm.lstListBox1.List(nCnt) && Mostrar el elemento.
ENDIF
ENDFOR
ENDDEFINE

Vea también

AddItem (Método) | Clear (Método) | ItemBackColor, ItemForeColor (Propiedades) | | List (Propiedad) | ListCount (Propiedad) | ListItemID (Propiedad) | MultiSelect (Propiedad) | NewItemID (Propiedad) | RemoveItem (Método) | RemoveListItem (Método) | SelectedID (Propiedad) | SelectedItemBackColor (Propiedad) | SelectedItemForeColor (Propiedad) | TopItemID (Propiedad)

Applies To: ComboBox (Control) | ListBox (Control)


SelectedBackColor, SelectedForeColor (Propiedades)

Especifica el color de fondo y el de primer plano para el texto seleccionado. Esta disponible en tiempo de diseño y en tiempo de ejecución.

Control.SelectedBackColor[ = nColor]

O bien:

Control.SelectedBackColor = RGB(nRedValue, nGreenValue, nBlueValue)
Control.SelectedForeColor[ = nColor]
Control.SelectedForeColor[ = nColor]

O bien:

Control.SelectedForeColor = RGB(nRedValue, nGreenValue, nBlueValue)

Valores de la propiedad

nColor
Especifica un solo número que representa el color.
Nota En la ventana Propiedades, puede hacer doble clic en cualquiera de las propiedades de color para mostrar el cuadro de diálogo Color. A continuación, puede elegir o definir colores en este cuadro de diálogo. Las intensidades de rojo, verde y azul que corresponden al color que elija se convertirán en los valores de estas propiedades cuando cierre el cuadro de diálogo Color.

Vea también

BackColor, ForeColor (Propiedades) | RGB( ) | SelectedItemBackColor (Propiedad) | SelectedItemForeColor (Propiedad)

Se aplica a: ComboBox | EditBox | Spinner | TextBox


SelectedID (Propiedad)

Especifica si un elemento está seleccionado en un control ComboBox o ListBox. No está disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

Control.SelectedID(nItemID)[= lExpr]

Valores de la propiedad

nItemID
Especifica el Id. de elemento de un ComboBox o de un ListBox.
lExpr
Los valores posibles para la propiedad SelectedID son:
Valor | Descripción
Verdadero (.T.) | El elemento está seleccionado.
Falso (.F.) | (Predeterminado) El elemento no está seleccionado.

Observaciones

Si se establece la propiedad SelectedID de un control Listbox también se establece la propiedad ListItemID y se desencadena el evento Programmatic Change.

La propiedad SelectedID es útil especialmente cuando los usuarios pueden hacer varias selecciones. Puede comprobar rápidamente qué elementos de la lista están seleccionados. También puede utilizar esta propiedad para seleccionar o deseleccionar elementos de una lista utilizando código. Para comprobar si el tercer elemento de un ListBox está seleccionado, ejecute lo siguiente:

IF MyList.SelectedID(3)
WAIT WINDOW "It's selected!"
ELSE
WAIT WINDOW "It's not!"
ENDIF

Vea también

AddItem (Método) | Clear (Método) | List (Propiedad) | ListCount (Propiedad) | ListItemID (Propiedad) | MultiSelect (Propiedad) | NewItemID (Propiedad) | RemoveItem (Método) | RemoveListItem (Método) | Selected (Propiedad) | TopItemID (Propiedad)

Se aplica a: ComboBox | ListBox


SelectedItemBackColor (Propiedad)

Especifica el color de fondo para un elemento seleccionado en un ComboBox o ListBox o celda de un control Grid (sólo TextBox). SelectedItemBackColor está relacionado con las propiedades HighlightForeColor y HighlightBackColor cuando necesita controlar la celda seleccionada en la fila de una Cuadrícula. De lectura/escritura en tiempo de diseño y en tiempo de ejecución.

Control.SelectedItemBackColor [= nColor ]

-o-

Control.SelectedItemBackColor = RGB( nRedValue, nGreenValue, nBlueValue )

Parámetros

nColor
Dato tipo Numérico. SelectedItemBackColor especifica un entero que representa un único valor de color. Visual FoxPro obtiene la configuración predeterminada de color desde la configuración de color para elementos seleccionados del sistema operativo Windows. Para información acerca de colores válidos, vea BackColor, ForeColor (Propiedades).

Observaciones

Puede encontrar la configuración de color para elementos seleccionados en el cuadro de diálogo Opciones avanzadas de apariencia, el cual se puede abrir yendo al Menú Inicio, abrir Panel de Control, seleccionar Pantalla, hacer clic en la ficha Apariencia, hacer clic en Opciones avanzadas, y seleccionar Elementos seleccionados en la lista desplegable.

También puede definir colores entrando el valor RGB para la propiedad en la ventana Propiedades o elegir colores haciendo doble clic sobre la propiedad en la ventana Propiedades para mostrar el cuadro de diálogo Color. Los valores de color rojo, verde y azul correspondientes al color que elija se convierten en el valor para estas propiedades después que cierre el cuadro de diálogo Color.

A nivel del control Grid, SelectedItemBackColor y SelectedItemForeColor sólo se aplican a los controles TextBox. Aunque una columna del Grid puede contener muchos tipos diferentes de objetos, sólo se soporta el control predefinido TextBox. Debe establecer SelectedItemBackColor y SelectedItemForeColor individualmente a nivel de control para otros controles. La prioridad de la configuración de SelectedItemBack y SelectedItemForeColor en el control Grid respecto del comportamiento de un control específico TextBox en la columna está determinado como sigue:

  • Cuando HighlightStyle del control Grid es 0, no se tienen en cuenta SelectedItemBackColor y SelectedItemForeColor del control Grid y las propiedades de los cuadros de texto tienen la prioridad. Si HighlightStyle del Grid se establece a un valor 2, sólo se mantienen los colores resaltados y los elementos seleccionados los muestran sólo cuando la cuadrícula tiene el foco.
  • Cuando HighlightStyle del Grid se establece a un valor mayor que 0, se aplican los siguientes comportamientos:
    • Las propiedades del control TextBox controlan los colores actuales del cuadro de texto seleccionado.
    • Cuando SelectedItemBackColor y SelectedItemForeColor del control Grid se establecen explícitamente, se configuran las propiedades correspondientes para todos los controles TextBox de la cuadrícula. Esto ocurre en tiempo de diseño y en tiempo de ejecución.
    • La configuración de las propiedades de la cuadrícula tienen prioridad sobre configuraciones en conflicto de las propiedades de los cuadros de texto. Si desea que SelectedItemBackColor y SelectedItemForeColor del TextBox sobre-escriban las propiedades correspondientes de la cuadrícula, establezca las propiedades individuales de los cuadros de texto después de establecer las propiedades de la cuadrícula.
      Sugerencia Puede crear rutinas que realicen este proceso, que proporcionen flexibilidad si las propiedades de la cuadrícula deben cambiar en tiempo de ejecución.
    • Cuando se establecen las propiedades TextBox BackColor y ForeColor para controlar cómo se muestran los cuadros de texto cuando se hace clic para editar, las propiedades SelectedItemBackColor y SelectedItemForeColor del control Grid se comportan como si estuviera seleccionada la celda completa.

Puede restablecer los colores de una cuadrícula y sus cuadros de texto a la configuración predeterminada en su clase llamando al método ResetToDefault para el Grid y las propiedades SelectedItemForeColor y SelectedItemBackColor del TextBox.

Nota Esto es diferente a cómo Visual FoxPro maneja otras configuraciones de color de la cuadrícula. Por ejemplo, cuando llame a ResetToDefault para la propiedad BackColor de la cuadrícula, en las columnas y cuadros de texto se establece la propiedad BackColor a la predeterminada de la cuadrícula y no las propiedades BackColor predeterminadas de las columnas y cuadros de texto.

Vea también

Propiedades | HighlightStyle (Propiedad) | SelectedItemForeColor (Propiedad) | TextBox (Control) | ResetToDefault (Método) | Selected (Propiedad) | ItemBackColor, ItemForeColor (Propiedades) | RGB( ) (Función)

Se aplica a: ComboBox (Control) | ListBox (Control) | Grid (Control)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y asuntos del producto, vea el tema "Soporte Técnico Microsoft Visual FoxPro"..

© 1992 - 2003 Microsoft Corporation. Reservados todos los derechos.


SelectedItemForeColor (Propiedad)

Especifica el color primer plano de texto para un elemento seleccionado en un ComboBox o ListBox o celda (sólo TextBox) en un control Grid. SelectedItemForeColor está relacionado con las propiedades HighlightForeColor y HighlightBackColor cuando necesite controlar el color de la celda seleccionada en una fila de una cuadrícula. De lectura/escritura en tiempo de diseño.

Control.SelectedItemForeColor [= nColor ]

-o-

Control.SelectedItemForeColor = RGB( nRedValue, nGreenValue, nBlueValue )

Parámetros

nColor
Dato tipo numérico. SelectedItemForeColor especifica un entero que representa un valor de color. Visual FoxPro obtiene el color predeterminado de la configuración de color de la fuente para Elementos seleccionados en el sistema operativo Windows. Para información acerca de valores de color válidos, vea BackColor, ForeColor (Propiedades).

Observaciones

Para mas información acerca de las propiedades SelectedItemForeColor y GridSelectedItemBackColor del control Grid, vea SelectedItemBackColor (Propiedad).

Vea también

Propiedades | HighlightStyle (Propiedad) | TextBox (Control) | ResetToDefault (Método) | Selected (Propiedad) | ItemBackColor, ItemForeColor (Propiedades) | RGB( ) (Función)

Se aplica a: ComboBox (Control) | ListBox (Control) | Grid (Control)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y asuntos del producto, vea el tema "Soporte Técnico Microsoft Visual FoxPro"..

© 1992 - 2003 Microsoft Corporation. Reservados todos los derechos.


SelectOnEntry (Propiedad)

Especifica si se selecciona el texto de una celda de una columna, de un cuadro de edición o de un cuadro de texto seleccionado cuando el usuario se desplaza a él. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.SelectOnEntry[ = lExpr]

Valores de la propiedad

Los valores para la propiedad SelectOnEntry son:

Valor | Descripción
Verdadero (.T.) | (Predeterminado para columnas). El texto se selecciona.
Falso (.F.) | (Predeterminado para cuadros de edición y de texto). El texto no se selecciona.

Observaciones

Si la propiedad Highlight está establecida a Verdadero (.T.), puede utilizarla junto con una propiedad SelectOnEntry para determinar si el texto completo aparece seleccionado. Si establece la propiedad Highlight en el valor falso (.F.), la propiedad SelectOnEntry se pasa por alto.

Vea también

Highlight (Propiedad) | HighlightRow (Propiedad)

Se aplica a: Column | EditBox (Control) | TextBox (Control)


SelLength (Propiedad)

Devuelve el número de caracteres que el usuario selecciona en un área de entrada de texto de un control o especifica el número de caracteres que se van a seleccionar. No está disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

 [Form.]Control.SelLength[= nLength]

Valores de la propiedad

nLength
Especifica el número de caracteres seleccionados. El texto seleccionado aparece resaltado. El intervalo válido de valores es desde 0 al número total de caracteres del control. Un valor SelLength menor que 0 causa un error en tiempo de ejecución.

Observaciones

Utilice esta propiedad con las propiedades SelStart y SelText para tareas como:

  • Configurar el punto de inserción en una cadena de caracteres.
  • Establecer un intervalo de inserción que limite dónde puede ir el punto de inserción.
  • Seleccionar un grupo específico de caracteres (subcadenas) en un control.
  • Borrar texto.

Cuando trabaje con esas propiedades, tenga cuidado con los siguientes comportamientos:

  • Un valor SelLength menor que 0 causa un error en tiempo de ejecución.
  • Establecer SelStart en un valor mayor que la longitud del texto establece la propiedad como la longitud de texto existente. Al cambiar SelStart cambia la selección a un punto de inserción y se establece SelLength como el valor 0.
  • Establecer SelText en un nuevo valor establece SelLength en 0 y reemplaza el texto seleccionado con la nueva cadena de caracteres.

Vea también

SelStart (Propiedad) | SelText (Propiedad)

Se aplica a: ComboBox | EditBox | Spinner | TextBox


SelStart (Propiedad)

Devuelve el punto inicial de una selección de texto realizada por el usuario en un área de entrada de texto de un control o indica la posición del punto de inserción si no hay texto seleccionado. También especifica el punto inicial de una selección de texto en un área de entrada de texto de un control. No está disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

 [Form.]Control.SelStart[= nStart]

Valores de la propiedad

nStart
Especifica el punto de inicio de un texto seleccionado o indica la posición del punto de inserción si no hay texto seleccionado. El texto seleccionado aparece sombreado. El intervalo válido de valores es desde 0 al total de caracteres en el área de edición del control.

Observaciones

Utilice esta propiedad con las propiedades SelLength y SelText para tareas como:

  • Configurar el punto de inserción en una cadena de caracteres.
  • Establecer un intervalo de inserción que limite dónde puede ir el punto de inserción.
  • Seleccionar un grupo específico de caracteres (subcadenas) en un control.
  • Borrar texto.

Cuando trabaje con esas propiedades, tenga cuidado con los siguientes comportamientos:

  • Un valor SelLength menor que 0 causa un error en tiempo de ejecución.
  • Establecer SelStart en un valor mayor que la longitud del texto establece la propiedad como la longitud de texto existente. Al cambiar SelStart cambia la selección a un punto de inserción y se establece SelLength como el valor 0.
  • Establecer SelText en un nuevo valor establece SelLength en 0 y reemplaza el texto seleccionado con la nueva cadena de caracteres.

Vea también

SelLength (Propiedad) | SelText (Propiedad)

Se aplica a: ComboBox | EditBox | Spinner | TextBox


SelText (Propiedad)

Devuelve el texto seleccionado por usuario en una área de entrada de texto de un control o devuelve una cadena de caracteres vacía ("") si no hay caracteres seleccionados. Especifica la cadena que contiene el texto seleccionado. No esta disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

 [Form.]Control.SelText[= cString]

Valores de la propiedad

cString
Especifica la cadena que contiene el texto seleccionado o consta de una cadena vacía si no hay caracteres seleccionados. El texto seleccionado aparece sombreado.

Observaciones

Utilice esta propiedad junto con las propiedades SelLength y SelStart para tareas como:

  • Configurar el punto de inserción en una cadena de caracteres.
  • Establecer un intervalo de inserción que limite donde puede ir el punto de inserción.
  • Seleccionar un grupo específico de caracteres (subcadenas) en un control.
  • Borrar texto.

Cuando trabaje con esas propiedades, tenga cuidado con los siguientes comportamientos:

  • Un valor SelLength menor que 0 causa un error en tiempo de ejecución.
  • Establecer SelStart en un valor mayor que la longitud del texto establece la propiedad como la longitud de texto existente. Al cambiar SelStart cambia la selección a un punto de inserción y se establece SelLength como el valor 0.
  • Establecer SelText en un nuevo valor establece SelLengthen 0 y reemplaza el texto seleccionado con la nueva cadena de caracteres.

Vea también

SelLength (Propiedad) | SelStart (Propiedad) | Se aplica a: ComboBox | EditBox | Spinner | TextBox


SendUpdates (Propiedad)

Especifica si las actualizaciones del cursor, se envían a las tablas en las que se basa el cursor. Cuando maneje esta propiedad para cursores regulares, use las funciones CURSORSETPROP( ) y CURSORGETPROP( ). De lectura/escritura.

Nota Cuando SendUpdates, está establecida en un objeto CursorAdapter con origen de datos ODBC o ADO, se sobrescribe la configuración de la propiedad del cursor, cuando se realiza el enlace al objeto CursorAdapter. De tal manera, que cambiar la configuración del cursor usando CURSORSETPROP() no tiene efecto.
CursorAdapter.SendUpdates [= lValue]

Valores de la propiedad

lValue
Dato tipo Lógico. En la siguiente tabla se listan los valores para lValue.
lValue | Descripción
Verdadero (.T.) | Envía las actualizaciones del cursor a las tablas en las que se basa cuando se usa una vista para hacer la actualización. (Predefinido)
Falso (.F.) | No envía las actualizaciones del cursor a las tablas en las que se basa.

Vea también

Propiedades | CursorAdapter (Objeto: propiedades, métodos y eventos) | CURSORGETPROP( ) (Función) | CURSORSETPROP( ) (Función)

Se aplica a: CursorAdapter (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y asuntos del producto, vea el tema "Soporte Técnico Microsoft Visual FoxPro"..

© 1992 - 2003 Microsoft Corporation. Reservados todos los derechos.


ServerClass (Propiedad)

Contiene el nombre de una clase de servidor de un proyecto. Es de sólo lectura en tiempo de diseño y en tiempo de ejecución.

Object.ServerClass

Observaciones

Los nombres de las clases de servidor de un proyecto también se muestran en la ficha Servidores del cuadro de diálogo Información del proyecto.

Los servidores de automatización se crean en Visual FoxPro al agregar clases definidas como OLEPUBLIC a un proyecto y generar un archivo ejecutable (.exe) o una biblioteca de vínculos dinámicos (.dll) del proyecto. Puede tener en el proyecto tantas clases OLEPUBLIC como desee y se pueden definir en archivos de programa (.prg) o en bibliotecas de clases (.vcx).

Para obtener información acerca de la creación de servidores de automatización, vea Crear servidores de Automatización.

Vea también

CREATE CLASS | DEFINE CLASS | ServerClassLibrary (Propiedad)

Se aplica a: Server (Objeto)


ServerClassLibrary (Propiedad)

Contiene el nombre de la biblioteca de clases o de programa que contiene una clase de servidor. Es de sólo lectura en tiempo de diseño y en tiempo de ejecución.

Object.ServerClassLibrary

Observaciones

El nombre la biblioteca de clases o el programa que contiene la clase de servidor también se muestra en la ficha Servidores del cuadro de diálogo Información del proyecto.

Los servidores de automatización se crean en Visual FoxPro al agregar clases definidas como OLEPUBLIC a un proyecto y generar un archivo ejecutable (.exe) o una biblioteca de vínculos dinámicos (.dll) del proyecto. Puede tener en el proyecto tantas clases OLEPUBLIC como desee y se pueden definir en archivos de programa (.prg) o en bibliotecas de clases (.vcx).

Para obtener información acerca de la creación de servidores de automatización, vea Crear servidores de Automatización.

Vea también

CREATE CLASS | DEFINE CLASS | ServerClass (Propiedad)

Se aplica a: Server (Objeto)


ServerHelpFile (Propiedad)

El archivo de Ayuda de la biblioteca de tipos creada para las clases de servidor de un proyecto.

Object.ServerHelpFile[ = cHelpFileName]

Valores de la propiedad

cHelpFileName
Especifica el nombre del archivo de Ayuda para la biblioteca de tipos. De forma predeterminada, cHelpFileName contiene una cadena vacía.

Observaciones

El archivo de Ayuda de una biblioteca de tipos se usa generalmente para proporcionar información acerca de las propiedades o métodos de clases de servidor cuando se ve la biblioteca de tipos en un examinador de clases o de objetos. Visual FoxPro incluye el Examinador de clases, que permite ver la información de la biblioteca de tipos.

Se crea una biblioteca de tipos cuando se genera un archivo .dll o .exe que contiene clases de servidor. Visual FoxPro enlazará la biblioteca de tipos con el archivo .dll si genera el archivo .dll en un equipo que ejecute Windows NT 4.0 o versiones posteriores. Si genera el archivo .dll en un equipo que ejecute Windows 98, Visual FoxPro no enlazará la biblioteca con el archivo .dll.

Si utiliza la propiedad ServerHelpFile para especificar un archivo de Ayuda para la biblioteca de tipos, puede proporcionar ayuda para las propiedades o los métodos de las clases de servidor de un examinador de objetos o clases.

Vea también

HelpContextID (Propiedad) | Server (Objeto) | Servers (Colección) | ServerProject (Propiedad)

Se aplica a: Project (Objeto)


ServerName (Propiedad)

Contiene la ruta de acceso completa y el nombre de archivo de un servidor de automatización. Es de sólo lectura en tiempo de ejecución.

ApplicationObject.ServerName

Observaciones

La propiedad ServerName, le permite determinar el directorio desde el que se ha iniciado un servidor de Automatización .dll en proceso o .exe fuera de proceso, y facilita la referencia a otros archivos en aplicaciones distribuidas. También puede utilizar ServerName, para determinar el directorio desde el que se inició una aplicación .EXE de Visual FoxPro.

La propiedad ServerName de la versión desarrollador de Visual FoxPro comienza en una sesión interactiva conteniendo el mismo valor que la propiedad FullName.

Vea también

FullName (Propiedad) | StartMode (Propiedad)

Se aplica a: Application (Objeto) | _VFP

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


ServerProject (Propiedad)

El nombre del proyecto que contiene las clases de servidor.

Object.ServerProject[ = cName]

Valores de la propiedad

cName
Especifica el nombre del proyecto que contiene las clases de servidor. El valor predeterminado es el nombre del proyecto que contiene las clases de servidor o el valor de la propiedad Name para el proyecto.

Observaciones

El nombre ServerProject que especifique será la primera sección del ProgID (identificador programático) que identifica de forma exclusiva al servidor. Por ejemplo, si establece la propiedad ServerProject en “MyApp” y el servidor tiene una clase OLEPublic llamada “Server1”, tendrá acceso a la clase Server1 con la sintaxis “MyApp.Server1.”

Esta propiedad corresponde al elemento Nombre de proyecto de la ficha Servidores del cuadro de diálogo Información del proyecto.

Vea también

Name (Propiedad) | Server (Objeto) | Servers (Colección) | ServerHelpFile (Propiedad)

Se aplica a: Project (Objeto)


ShowInTaskbar (Propiedad)

Especifica si el objeto formulario de nivel superior aparece en la barra de tareas de Windows en tiempo de ejecución. Este valor es de sólo lectura en tiempo de ejecución.

Form.ShowInTaskbar = lExpr

Parámetros

lExpr
El valor predeterminado es verdadero (.T.). Si se establece su valor en falso (.F.), esta propiedad quedará deshabilitada.

Observaciones

El valor de ShowInTaskbar se pasará por alto a menos que el valor de la propiedad ShowWindow sea 2.

Vea también

ShowWindow (Propiedad) | Form (Objeto)


ShowTips (Propiedad)

Determina si se muestra la Información sobre herramientas para los controles del objeto Form o ToolBar especificado. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.ShowTips = lExpr

Valores de la propiedad

lExpr
Determina si se muestra la Información sobre herramientas para el control especificado. Los valores para la propiedad ShowTips son:
Valor | Descripción
Verdadero (.T.) | (Predeterminado para el objeto ToolBar) Se muestra Información sobre herramientas cuando un usuario lleva el cursor del ratón a un control.
Falso (.F.) | (Predeterminado para el objeto Form ) No se muestra Información sobre herramientas cuando el usuario coloca el ratón en el control.

Observaciones

Puede especificar el texto que aparece en cada Información sobre herramientas utilizando la propiedad ToolTipText.

Vea también

ToolTipText (Propiedad)

Se aplica a: Form | _SCREEN | ToolBar


ShowWindow (Propiedad)

Especifica si un formulario o una barra de herramientas es un formulario de nivel superior o secundario. Está disponible en tiempo de diseño; es de sólo lectura en tiempo de ejecución.

Form.ShowWindow[ = nExpr]

Valores de la propiedad

nExpr
Los valores de la propiedad ShowWindow son:
Valor | Descripción
0 | En pantalla (valor predeterminado). Se trata de un formulario secundario que está colocado en la ventana principal de Visual FoxPro.
1 En formulario de nivel superior. Se trata de un formulario secundario del formulario de nivel superior activo, que puede ser la ventana principal de Visual FoxPro u otro formulario de nivel superior. Use esta opción si desea colocar el formulario secundario dentro del formulario de nivel superior activo.

Si nExpr está establecido en 1 cuando el formulario de nivel superior es la ventana principal de Visual FoxPro, Visual FoxPro restablecerá automáticamente nExpr en 0.
2 | Como un formulario de nivel superior. Se trata de un formulario de nivel superior en el que se pueden colocar formularios secundarios. Observe que un formulario de nivel superior es siempre no modal, independientemente de lo establecido en la propiedad WindowType.

Observaciones

Un formulario secundario es un formulario que se encuentra dentro de otro. Los formularios secundarios no se pueden mover fuera de los límites de su formulario primario; cuando se minimizan, aparecen en la parte inferior del formulario primario. Si se minimiza un formulario primario, también se modificarán los secundarios.

Un formulario de nivel superior es un formulario independiente no modal, que sirve para crear una aplicación SDI (interfaz de un solo documento, single document interface) o para utilizarse como el primario de otros formularios secundarios. Los formularios de nivel superior funcionan al mismo nivel que otras aplicaciones de Windows y pueden aparecer por delante o por detrás de ellas. Los formularios de nivel superior aparecen en la barra de tareas de Windows.

La propiedad Desktop determina el comportamiento de un formulario secundario. Si la propiedad Desktop está establecida en el valor verdadero (.T.), el formulario secundario no estará limitado a los bordes de su formulario primario y podrá desplazarse a cualquier sitio dentro del escritorio de Windows. El formulario secundario no aparece en la barra de tareas de Windows.

Vea también

ACTIVATE WINDOW | AlwaysOnBottom (Propiedad) | AlwaysOnTop (Propiedad) | Desktop (Propiedad)

Se aplica a: Form | ToolBar


Sizable (Propiedad)

Especifica si se puede ajustar el tamaño de un objeto. Está disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

Object.Sizable = lExpr

Valores de la propiedad

lExpr
Los valores de la propiedad Sizable son los siguientes:
Valor | Descripción
Verdadero (.T.) | (Predeterminado) Puede ajustar el tamaño del objeto.
Falso (.F.) | No puede ajustar el tamaño del objeto.

Observaciones

Para los controles OLE dependientes e independientes, Sizable afecta al objeto OLE que contiene el control. Si Sizable se establece como verdadero (.T.) y activa el objeto OLE, podrá hacerlo más grande o más pequeño que el control OLE. Si la propiedad AutoSize está establecida en el valor verdadero (.T.), el control OLE se redimensionará automáticamente para ajustarse al nuevo tamaño del objeto OLE cuando usted lo desactive.

Nota Para poder ajustar el tamaño de un Form, establezca su propiedad BorderStyle en 3.

Vea también

AutoSize (Propiedad) | BorderStyle (Propiedad)

Se aplica a: OLE Bound (Control) | OLE Container (Control) | ToolBar


SizeBox (Propiedad)

Incluído por compatibilidad con Macintosh. Especifica si un formulario va a tener un cuadro de ajuste de tamaño. Está disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

Object.SizeBox = lExpr

Valores de la propiedad

lExpr
Los valores de la propiedad SizeBox son los siguientes:
Valor | Descripción
Verdadero (.T.) | Aparece un cuadro de ajuste de tamaño en la esquina inferior derecha del formulario si la propiedad BorderStyle del formulario está establecida en 3 (el valor predeterminado).
Falso (.F.) | (Predeterminado) No aparecerá ningún cuadro de ajuste de tamaño en el formulario.

Observaciones

La propiedad SizeBox permite que el usuario cambie el tamaño de un formulario con el ratón (ratón). Sólo puede aparecer un cuadro de ajuste de tamaño en un formulario si la propiedad BorderStyle del formulario está establecida en 3 (Borde ajustable), que es el valor predeterminado para nuevos formularios.

Vea también

BorderStyle (Propiedad) | ZoomBox (Propiedad)

Se aplica a: Form


SOM (Propiedad)

Contiene una referencia de objeto a un documento (ISchema) XML Schema Object Model (SOM) después de ejecutar exitosamente un método LoadXML o Attach de XMLAdapter.

XMLAdapter.SOM

Valores de la Propiedad

Referencia de Objeto. SOM contiene una referencia de objeto a un documento SOM o un valor nulo (.NULL.) cuando no se ha llenado.

Observaciones

El SOM suministra un conjunto de clases que reflejan directamente la especificación de lenguaje W3C XML Schema Definition (XSD). Estas clases le permiten recorrer los elementos de un documento XML Schema y obtener información acerca de las propiedades y declaraciones, y las relaciones entre ellas.

Para mas información acerca de XML SOM ISchema, vea SOM Reference en Microsoft XML Core Services 4.0 reference en el MSDN Library. Sitio Web http://msdn.microsoft.com/library/.

Vea también

Propiedades | XMLAdapter (Objeto: propiedades, métodos y eventos) | LoadXML (Método) | Attach (Método)

Se aplica a: XMLAdapter (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y asuntos del producto, vea el tema "Soporte Técnico Microsoft Visual FoxPro"..

© 1992 - 2003 Microsoft Corporation. Reservados todos los derechos.


Sorted (Propiedad)

Especifica si los elementos de la parte de lista de un control ComboBox o ListBox se ordenan alfabéticamente de manera automática. Está disponible en tiempo de diseño y en tiempo de ejecución.

 [Form.]Control.Sorted[= lExpr]

Valores de la propiedad

lExpr
Los valores de la propiedad Sorted son los siguientes:
Valor | Descripción
Verdadero (.T.) | La lista de elementos se ordena alfabéticamente (distingue entre mayúsculas y minúsculas). Visual FoxPro tiene casi todos los procesamientos de cadenas necesarios para mantener el orden alfabético, incluido el cambio de números de índice cuando sea necesario para los elementos que se agreguen o se quiten de la lista.
Falso (.F.) | (Predeterminada) La lista de elementos no se ordena alfabéticamente.

Observaciones

La propiedad Sorted sólo está disponible si la propiedad RowSourceType se ha establecido en 0 (Ninguno) o 1 (Valor).

Observe que una vez que los elementos se han ordenado alfabéticamente, establecer la propiedad Sorted en falso (.F.) no restaura el orden original de los elementos. Para restaurar el orden original, establezca la propiedad RowSource del control en ella misma, como ilustra el ejemplo siguiente:

MyForm.MyCombo1.Rowsource = MyForm.MyCombo1.Rowsource

Vea también

AddItem (Método) | List (Propiedad) | ListCount (Propiedad) | ListItemID (Propiedad) | RemoveItem (Método) | RowSource (Propiedad) | RowSourceType (Propiedad)

Se aplica a: ComboBox | ListBox


Sparse (Propiedad)

Especifica si la propiedad CurrentControl afecta a todas o sólo a las celdas activas de un objeto Column. Está disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

Column.Sparse [= lExpr]

Valores de la propiedad

lExpr
Los valores para la propiedad Sparse son los siguientes:
Valor | Descripción
Verdadero (.T.) | (Predeterminado) Sólo la celda activa de Column usa la configuración de la propiedad CurrentControl para aceptar y mostrar datos. Las otras celdas usan el control TexBox si el control actual para las celdas no es el objeto contenedor o un botón de comando. Las otras celdas permanecen vacías si el control actual de las celdas es el objeto contenedor o un botón de comando.
Falso (.F.) | Todas las celdas del objeto Column usan la configuración de la propiedad CurrentControl para mostrar datos; la celda activa acepta datos.

Vea también

Bound (Propiedad) | CurrentControl (Propiedad) | DynamicCurrentControl (Propiedad)

Se aplica a: Column


SpecialEffect (Propiedad)

Especifica distintas opciones de formato para un control. Está disponible en tiempo de diseño y en tiempo de ejecución.

 [Form.]Control.SpecialEffect = nExpr

Valores de la propiedad

nExpr
Para un control PageFrame, un objeto Container o Control, los valores de la propiedad SpecialEffect son los siguientes:
Valor | Descripción
0 | En relieve. Parece como si el control surgiera del formulario.
1 | Bajo relieve. Da la impresión de que el control está incrustado en el formulario.
2 | Plano.
Nota Para un control PageFrame, SpecialEffect sólo está disponible si la propiedad Tabs está establecida en el valor falso (.F.). Además, la propiedad BorderColor para un control PageFrame sólo se aplica cuando nExpr está establecido en 2 (Plano).

Para todos los demás controles, los valores de la propiedad SpecialEffect son los siguientes:

Valor | Descripción
0 | (Predeterminado para todos los controles y objetos, excepto el objeto Container.) 3D. El borde del control sobresale para dar una impresión tridimensional.
1 | Normal. El control aparece sin un borde tridimensional.
2 | Seguimiento activo. Proporciona el efecto MouseOver para controles específicos.
Nota Si la propiedad Height tiene un valor demasiado pequeño, la configuración 3D no tendrá efecto. Se admite el seguimiento activo para los siguientes controles: ListBox, ComboBox, Spinner, TextBox, EditBox, CommandButton, CheckBox y OptionButton. Sólo se admite seguimiento activo para los controles CheckBox y OptionButton si el valor de Style es 2 (gráfico). Para el control CommandButton, sólo se admite cuando el valor de Style sea distinto de 1 (invisible). En la tabla siguiente se describe la compatibilidad con el seguimiento activo.
Control | Valor predeterminado | Efecto MouseOver
ListBox | Normal | 3D
ComboBox | Normal | 3D
Spinner | Normal | 3D
TextBox | Normal | 3D
EditBox | Normal | 3D
CommandButton | Normal en posición normal | 3D
CheckBox | Normal | Ninguna
OptionButton | Normal en posición normal | 3D

Vea también

BackColor, ForeColor (Propiedades) | SelectedBackColor, SelectedForeColor (Propiedades)

Se aplica a: CheckBox | ComboBox | CommandButton | CommandGroup | Container (Objeto) | Control (Objeto) | EditBox | ListBox | OptionButton | OptionGroup | PageFrame | Shape | Spinner | TextBox


SpinnerHighValue, SpinnerLowValue (Propiedades)

Especifica el valor más alto o el más bajo que se puede escribir en un control Spinner haciendo clic en las flechas arriba y abajo. Está disponible en tiempo de diseño y en tiempo de ejecución.

Spinner.SpinnerHighValue[ = nHigh] Spinner.SpinnerLowValue[ = nLow]

Valores de la propiedad

nHigh
Especifica el valor más alto que se puede escribir en un control Spinner con la flecha arriba.
nLow
Especifica el valor más bajo que se puede escribir en un control Spinner con la flecha abajo.

Vea también

KeyboardHighValue, KeyboardLowValue (Propiedades)

Se aplica a: Spinner


SplitBar (Propiedad)

Especifica si la barra de división aparecerá en un control cuadrícula. Está disponible en tiempo de diseño; es de sólo lectura en tiempo de ejecución.

Grid.SplitBar[ = lExpr]

Valores de la propiedad

lExpr
Uno de los valores siguientes:
lExpr | Descripción
Verdadero (.T.) | (Predeterminado) La barra de división se muestra en un control cuadrícula, lo que le permite dividir la cuadrícula en dos paneles separados. Para sincronizar las dos mitades de la cuadrícula, agregue "This.Refresh" al evento AfterRowColChange del control cuadrícula.
Falso (.F.) | No se muestra la barra de división en un control cuadrícula, lo que le impide dividir la cuadrícula en paneles separados.

Observaciones

Observe que la propiedad SplitBar tiene prioridad sobre la propiedad Partition.

Vea también

GridLines (Propiedad) | Partition (Propiedad)

Se aplica a: Grid (Control)


StackLevel (Propiedad)

Especifica el nivel de pila para el programa en el cual ocurre una excepción. De lectura/escritura en tiempo de ejecución.

Exception.StackLevel

Valores de la propiedad

Dato tipo Numérico.

Vea también

Propiedades | Exception (Objeto: propiedades, métodos y eventos) | TRY...CATCH...FINALLY (Comando) | Control estructurado de errores

Se aplica a: Exception (Clase)


StartMode (Propiedad)

Contiene un valor numérico que indica como se ha iniciado una instancia de Visual FoxPro. Es de sólo lectura en tiempo de ejecución.

ApplicationObject.StartMode

Observaciones

En la siguiente tabla se muestran los valores numéricos que puede contener la propiedad StartMode y cómo se ha iniciado la instancia de Visual FoxPro.

Valor | Descripción
0 | Se inició una versión de programación de Visual FoxPro en una sesión interactiva.
1 Visual FoxPro se inició como un objeto Application. Por ejemplo, el siguiente comando crea una instancia de Visual FoxPro como un objeto Application:
oMyObject = CREATEOBJECT('VisualFoxPro.Application')
2 | Visual FoxPro se inició como un servidor de Automatización .exe fuera de proceso.
3 | Visual FoxPro se inició como un servidor de Automatización .dll en proceso.
4 | Visual FoxPro se inició como un archivo .app o .exe que se puede distribuir.
5 | Visual FoxPro se inició como un servidor de automatización .dll en proceso para su uso con varios subprocesos.

Para obtener más información acerca de como utilizar Visual FoxPro para crear servidores de automatización personalizados, vea Agregar OLE.

Vea también

CREATEOBJECT( ) | ServerName (Propiedad) | SYS(2335) - Modo de servidor desatendido

Se aplica a: Application (Objeto) | _VFP (Variable del sistema)


StatusBar (Propiedad)

Especifica el texto que aparece en la barra de estado de una instancia de Visual FoxPro. Es de lectura y escritura en tiempo de ejecución.

ApplicationObject.StatusBar[ = cMessageText]

Valores de la propiedad

cMessageText
Especifica el texto que aparece en la barra de estado.

Vea también

SET MESSAGE (Comando)

Se aplica a: Application (Objeto) | _VFP (Variable del sistema)


StatusBarText (Propiedad)

Especifica el texto que se muestra en la barra de estado cuando un control obtiene el foco o cuando el puntero del ratón pasa sobre el control. El control es de lectura/escritura en tiempo de diseño y en tiempo de ejecución.

 [Form.]Control.StatusBarText [= cExpr]

Valores de la propiedad

cExpr
Tipo de dato Carácter. StatusBarText especifica el texto que describe al control.

Observaciones

El texto se muestra en la barra de estado solo cuando son visibles la barra de estado gráfica o la seccion de estado.

El texto se muestra en la barra de estado en controles que obtienen el foco solo cuando el control ha obtenido el foco sin importar el estado de la propiedad ShowTips del formulario. En el caso de un control que nunca obtienen el enfoque, el texto se muestra solo cuando el puntero del ratón pasa sobre el control, y la propiedad ShowTips tiene el valor True (.T.). Los siguientes controles nunca obtienen el foco:

  • CommandGroup
  • OptionGroup
  • Container
  • Line
  • Label
  • Image
  • Shape

Si la barra de estado gráfica no es visible porque se ha configurado SET STATUS BAR como OFF, pero la status section es visible porque se ha configurado SET STATUS como ON, el texto en la barra de estado se muestra en la mitad de la status section al fondo de la pantalla.

Vea también

Caption (Propiedad)

Se aplica a: CheckBox | Column | ComboBox | CommandButton | CommandGroup | Container | Control | EditBox | Grid | Header | Image | Label | Line | ListBox | OLE Bound (Control) | OptionButton | OptionGroup | PageFrame | Shape | Spinner | TextBox


Stretch (Propiedad)

Especifica cómo se ajusta el tamaño de una imagen para que quepa dentro de un control. Está disponible en tiempo de diseño y en tiempo de ejecución.

 [Form.]Control.Stretch[= nType]

Valores de la propiedad

nType
Los valores para la propiedad Stretch son los siguientes:
Valor | Descripción
0 | (Predeterminada) Recortar. La imagen se recorta para ajustarla al control.
1 | Isométrica. La imagen se redimensiona para ajustarla al control, conservando sus proporciones originales.
2 | Estirar. Se reajusta el tamaño de la imagen de acuerdo con el tamaño del control, sin conservar sus proporciones originales.

Comentarios

Debe establecer la propiedad Picture del objeto antes de establecer el valor de Stretch, o el valor de Stretch será ignorado.

Ejemplo

CREATE FORM xxx nowait
oform=_vfp.ActiveForm
oform.ADDOBJECT("image1","image")
this1=oform.image1
this1.picture= HOME()+"\graphics\bitmaps\assorted\beanie.bmp"
this1.stretch=0
this1.height = 50
this1.width = 50

Vea también

AutoSize (Propiedad) | Sizable (Propiedad)

Se aplica a: Image | OLE Bound (Control) | OLE Container (Control)


StrictDateEntry (Propiedad)

Especifica que hay que escribir los valores DateTime en un formato determinado y estricto en un cuadro de texto. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.StrictDateEntry[ = nValue]

Valores de la propiedad

nValue
Uno de los siguientes valores:
Valor Descripción
0 Libre. Los valores Date y DateTime se pueden escribir en formato libre. El orden en que se escriben los días, meses y años se determina con la propiedad DateFormat o con SET DATE.

Se pueden utilizar espacios, barras invertidas, puntos, guiones y el delimitador de fecha actual (especificado con la propiedad DateMark o con SET MARK) para determinar valores de fechas. Si en una fecha se omite el año, se utilizará el año actual.

Se puede incluir un circunflejo (^) como primer carácter de una fecha para especificar que el orden es año-mes-día, lo que sobrescribirá el orden especificado con la propiedad DateFormat o con SET DATE.

Se puede utilizar una coma o un espacio para separar la fecha de la hora en un valor DateTime. Si se escribe sólo la hora en un valor DateTime, se pueden omitir los dos puntos si el año está incluido en la fecha o si se ha utilizado una coma para separar la fecha de la hora.

Si se escribe una fecha o un valor DateTime no válido, no aparecerá ningún mensaje de error y el valor del cuadro de texto se establecerá en una fecha o un valor DateTime vacíos. Puede comprobar si tiene alguna fecha no válida en el evento Valid.
1 (Predeterminado) Estricto. Proporciona compatibilidad con versiones anteriores de Visual FoxPro.

Es necesario escribir las fechas y los valores DateTime únicamente en el formato 99/99/99 estricto cuando CENTURY está establecido en OFF, o en el formato 99/99/9999 cuando CENTURY está establecido en ON. 99 representa días, meses y años, y 9999 representa años que incluyen el siglo. El orden en que se escriben los días, meses y años se determina con la propiedad DateFormat o con SET DATE.

Observaciones

La siguiente tabla muestra las fechas y los valores DateTime válidos que puede escribir en un cuadro de texto cuando se ha establecido StrictDateEntry en 0 (Libre).

Valor Date o DateTime | Descripción
12 31 | 31 de diciembre del año en curso.
12 31 98 14 | 31 de diciembre de 1998, 2:00 p.m.
12 31, 14 | 31 de diciembre del año en curso, 2:00 p.m.
12 - 31 - 98, 2p | 31 de diciembre de 1998, 2:00 p.m. Observe que hay un espacio delante y otro detrás de cada guión.
^98-12-31, 2p | 31 de diciembre de 1998, 2:00 p.m. El circunflejo (^) especifica el orden año-mes-día para la fecha y sobrescribe el orden especificado con la propiedad DateFormat o con SET DATE.
^/12/31 | 31 de diciembre del año en curso. El circunflejo (^) especifica el orden año-mes-día para la fecha y sobrescribe el orden especificado con la propiedad DateFormat o con SET DATE.

Vea también

Century (Propiedad) | DateFormat (Propiedad) | DateMark (Propiedad) | Hours (Propiedad) | Seconds (Propiedad) | SET CENTURY | SET DATE | SET MARK TO | SET STRICTDATE

Se aplica a: TextBox


Style (Propiedad)

Especifica el estilo de un control. Está disponible en tiempo de diseño y en tiempo de ejecución.

[Form.]Control.Style[= nType]

Valores de la propiedad

nType
Para Controles ComboBox, la siguiente tabla lista los valores para Style.
nType Descripción
0 Cuadro combinado desplegable. Incluye una lista desplegable y un área de edición.

El usuario puede seleccionar de la lista o escribir caracteres en el área de edición.
2 Lista desplegable. El usuario debe seleccionar de la lista desplegable.

El Usuario debe seleccionar de la lista.

Siga estas indicaciones para decidir los valores que debe elegir:

  • Establezca Style en 0 (Cuadro combinado desplegable) para proporcionar al usuario una lista de opciones y permitirle insertar una selección en el área de edición. Style 0 ahorra espacio en el formulario, ya que la parte de lista se cierra cuando el usuario hace una selección.
  • Establezca Style en 2 (Lista desplegable) para ver una lista fija de opciones entre las que el usuario pueda seleccionar una. La parte de lista se cierra cuando el usuario selecciona un elemento.

Para los controles CheckBox y OptionButton, la siguiente tabla lista los valores para la propiedad Style.

nType | Descripción
0 | Estándar
1 | Gráfico. El botón aparece como un botón de comando. Puede contener gráficos y texto. Cuando el botón contiene ambas cosas, la posición del texto y gráfico esta determinada por la propiedad PicturePosition.

Para controles CommandButton, la siguiente tabla lista los valores para la propiedad Style.

nType | Descripción
0 | Estándar
1 | Invisible

Para controles TextBox, la siguiente tabla muestra los valores para la propiedad Style.

nType | Descripción
0 | Normal (Predeterminada)
1 | Incluido por compatibilidad con el comando FoxPro versión 2.x @ ... SAY. El control TextBox es de sólo lectura y no puede recibir el enfoque.

Para el objeto separador Toolbar, la siguiente tabla lista los valores de la propiedad Style.

nType | Descripción
0 | Normal (Predeterminada). Ninguna regla de línea vertical.
1 | Especifica una línea vertical como objeto separador de objetos Toolbar y es visible sólo en tiempo de ejecución.

Para controles Label y Shape y objetos Container y Control, la siguiente table muestra los valores para la propiedad Style.

nType | Descripción
0 | Normal (Predeterminado)
3 | Tema

Estableciendo nType en 3 produce los siguientes efectos:

  • Sobre un control Label, Style controla el color del texto. Si Temas está activado para etiquetas, Visual FoxPro ignora las propiedades Enabled y FontCharSet.
  • Sobre un control Shape, Container u objeto Control, Style controla el color y el estilo de bordes. Si Temas está en on para un control Shape, Visual FoxPro ignora la propiedad Curvature.

Si el sistema operativo no soporta Temas de Windows XP, o si Temas está en off, Visual FoxPro utiliza lo establecido por otras propiedades como SpecialEffect.

Vea también

Click (Evento) | DblClick (Evento) | Curvature (Propiedad) | SpecialEffect (Propiedad) | Enabled (Propiedad) | FontCharSet (Propiedad)

Se aplica a: CheckBox (Control) | ComboBox (Control) | CommandButton (Control) | OptionButton (Control) | Separator (Objeto) | TextBox (Control) | ToolBar (Objeto) | Label (Control) | Shape (Control) | Container (Objeto) | Objeto Control


SYS(1269) - Información de propiedad

Devuelve un valor lógico que indica si el valor de una propiedad es diferente de su valor predeterminado o si la propiedad es de sólo lectura.

SYS(1269, oObjectName, cProperty, nPropertyAttribute)

Valores devueltos

Logical

Parámetros

oObjectName
Especifica el objeto para el que se devuelve la información.
cProperty
Especifica la propiedad para la que SYS(1269) devuelve información.
nPropertyAttribute
Especifica el atributo de la propiedad.

Si nPropertyAttribute es 0, SYS(1269) devuelve verdadero (.T.) si el valor de la propiedad es diferente de su valor predeterminado. SYS(1269) devuelve falso (.F.) si el valor de la propiedad no es diferente de su valor predeterminado.

Si nPropertyAttribute es 1, SYS(1269) devuelve verdadero (.T.) si el valor de la propiedad es de sólo lectura. SYS(1269) devuelve falso (.F.) si el valor de la propiedad es de lectura y escritura.

Observaciones

Utilice SYS(1269) para determinar si el valor de una propiedad es diferente de su valor predeterminado o es de sólo lectura antes de intentar establecer la propiedad mediante programación.

Vea también

CREATE FORM | GETPEM( ) | PEMSTATUS( ) | SYS(1270) - Ubicación de objetos | SYS(1271) - Archivo .SCX del objeto | SYS(1272) - Jerarquía de objetos


TabIndex (Propiedad)

Especifica el orden de tabulación de los controles en una página y de los formularios en un conjunto de formularios. Está disponible en tiempo de diseño y en tiempo de ejecución.

 [Object.]Control.TabIndex[ = nOrder]

Valores de la propiedad

nOrder
Especifica el orden de tabulación para el control.

Observaciones

Para los controles de un formulario, el orden de tabulación se asigna según el orden en que se agregan los controles. Cada nuevo control se coloca el último en el orden de tabulación.

Para un formulario en un conjunto de formularios, un orden de tabulación se asigna según el orden en el cual se agregó el formulario. El formulario con nOrder se establece en 1 si el primer formulario está activo en el conjunto de formularios. Cuando un usuario tabula desde el último control de un formulario, recibe el enfoque el primer control del próximo formulario en el orden de tabulación. Si un formulario no se incluye en un conjunto de formularios, la propiedad TabIndex se pasa por alto.

Puede realizar cambios en tiempo de diseño en la ventana Propiedades o en tiempo de ejecución, utilizando el código. Sin embargo, si cambia la configuración TabIndex de un control o de un formulario, asegúrese de cambiar la configuración TabIndex para todos los controles de las páginas o formularios del conjunto de formularios. Si no designa un orden de tabulación para todos los controles o formularios, Microsoft Visual FoxPro asigna el orden de tabulación para los restantes controles y formularios según el orden en que se agregan y se cambian en tiempo de ejecución, lo cual puede producir resultados inesperados.

Para omitir el orden de tabulación de un control o un formulario, establezca la propiedad TabStop con el valor falso (.F.).

Vea también

TabStop (Propiedad)

Se aplica a: CheckBox | ComboBox | CommandButton | CommandGroup | Container (Objeto) | Control (Objeto) | EditBox | Form | Grid | Label | ListBox | OLE Bound (Control) | OLE Container (Control) | OptionButton | OptionGroup | PageFrame | _SCREEN | Spinner | TextBox


Tables (Propiedad)

Especifica una lista de nombres de tablas delimitada por comas, la cual debe tener los nombres de tabla en el orden exacto que aparecerán en los comandos SQL UPDATE, INSERT, y DELETE. Cuando trabaje con esta propiedad para cursores regulares, use las funciones CURSORSETPROP( ) y CURSORGETPROP( ). De lectura/escritura.

Nota Debe incluir esta lista de nombres de tablas, cuando use actualización automática para los procesos de actualizaciones.
Cuando Tables, está establecida en un objeto CursorAdapter, se sobrescribe la configuración de la propiedad del cursor, cuando se realiza el enlace al objeto CursorAdapter. De tal manera, que cambiar la configuración del cursor usando CURSORSETPROP( ) no tiene efecto.
CursorAdapter.Tables [= cList]

Valores de la propiedad

cList
Tipo de dato carácter. El parámetro cList, especifica una lista delimitada por comas de nombres de tabla, que muestra los nombres de tabla en el orden exacto que aparecerán en los comandos SQL UPDATE, INSERT, y DELETE. No existe configuración predefinida.

Observaciones

Tables no debe referirse a un cursor que se haya asociado a un objeto CursorAdapter por CursorAttach.

Vea también

Propiedades | CursorAdapter (Objeto: propiedades, métodos y eventos) | CURSORGETPROP( ) (Función) | CURSORSETPROP( ) (Función)

Se aplica a: CursorAdapter (Clase)


TabOrientation (Propiedad)

Especifica dónde se muestran las fichas en un control PageFrame. De lectura/escritura en tiempo de diseño y en tiempo de ejecución.

PageFrame.TabOrientation [ = nValue ]

Parámetros

nValue
Dato tipo Numérico. En la siguiente tabla se listan los posibles valores para nValue.
nValue | Configuración
0 | Arriba (predefinido)
1 | Abajo
2 | Izquierda
3 | Derecha

Observaciones

Generalmente puede especificar teclas de acceso directo en los títulos de la Page incluyendo los caracteres "\<". Aunque Visual FoxPro funcionalmente soporta teclas de acceso directo cuando TabOrientation se establece a la posición izquierda o derecha, las teclas de acceso directo no se muestran visualmente.

Vea también

Propiedades | Themes (Propiedad)

Se aplica a: PageFrame (Control)


Tabs (Propiedad)

Especifica si un control PageFrame tiene o no tiene fichas. Está disponible en tiempo de diseño y en tiempo de ejecución.

PageFrame.Tabs[ = lExpr]

Valores de la propiedad

lExpr
Estos son los valores de la propiedad Tabs:
Valor | Descripción
Verdadero (.T.) | (Predeterminado) El marco de página contiene fichas.
Falso (.F.) | El marco de página no contiene fichas.

Observaciones

Especifica el texto de las fichas al establecer la propiedad Caption de una página. El ancho de la ficha se aumenta si el ancho de Caption es mayor que el ancho predeterminado de la ficha. Títulos más pequeños no afectan al ancho de la ficha.

Vea también

Caption (Propiedad) | AllowTabs (Propiedad) | TabStop (Propiedad)

Se aplica a: PageFrame


TabStop (Propiedad)

Especifica si un usuario puede utilizar la tecla TAB para mover el enfoque a un objeto. Está disponible en tiempo de diseño y en tiempo de ejecución.

 [Object.]Control.TabStop[ = lExpr]

Valores de la propiedad

lExpr
Especifica si un objeto se incluye o no en el orden de tabulación. Estos son los valores para la propiedad TabStop:
Valor | Descripción
Verdadero (.T.) | (Predeterminado) El control o Form se incluye en el orden de tabulación, como lo determine la propiedad TabIndex.
Falso (.F.) | El objeto se pasa por alto en el orden de tabulación. Para un control, cuando un usuario presione la tecla TAB, el enfoque pasa por alto un control que tiene su propiedad TabStop con el valor falso (.F.). Para un Form, cuando un usuario presiona la tecla TAB en el último control de un Form y el siguiente Form del orden de tabulación tiene su propiedad TabStop con el valor falso (.F.), el enfoque se mueve al primer control del mismo Form. El enfoque no se mueve al siguiente Form del orden de tabulación.

Observaciones

Si la propiedad TabStop está establecida en falso (.F.) para un control o un Form, el control o el Form se omite cuando se usa la tecla TAB para moverse por el orden de tabulación, pero aún puede recibir el enfoque cuando se utiliza el ratón.

Nota La propiedad TabStop es de sólo lectura cuando se aplica a un control contenido en un objeto Column.

Vea también

TabIndex (Propiedad)

Se aplica a: CheckBox | ComboBox | CommandButton | Container (Objeto) | Control (Objeto) | EditBox | Form | Grid | ListBox | OLE Bound (Control) | OLE Container (Control) | OptionButton | Page | PageFrame | _SCREEN | Spinner | TextBox


TabStretch (Propiedad)

Especifica el comportamiento si las fichas no caben en el control PageFrame. Está disponible en tiempo de diseño y en tiempo de ejecución. TabStretch sólo estará disponible si Tabs está establecido en verdadero (.T.).

PageFrame.TabStretch[ = nSetting]

Valores de la propiedad

nSetting
Estos son los valores para la propiedad TabStretch:
Valor | Descripción
0 | Pila. Se crea una segunda fila de fichas.
1 | (Predeterminada) Recortar. Las fichas se recortan si es necesario.

Vea también

Tabs (Propiedad) | TabStyle (Propiedad)

Se aplica a: PageFrame


TabStyle (Propiedad)

Especifica si se han alineado o no los tabuladores de Page en un marco de página. Está disponible en tiempo de diseño y en tiempo de ejecución.

PageFrame.TabStyle[ = nStyle]

Valores de la propiedad

nStyle
Uno de los valores siguientes:
nStyle Descripción
0 (Predeterminado) Alineado. Se ajusta el ancho de cada página para colocar su título. Si es necesario, se aumenta el ancho de cada página para que los tabuladores de la página abarquen todo el ancho del PageFrame.

Este valor se omite si la propiedad TabStretch está establecida en 1, Fila única.
1 No alineado. No se ajusta el ancho de cada página para colocar su título. Tampoco se ajusta el ancho de los tabuladores de la página para que abarquen todo el ancho del PageFrame. .

Este valor se omite si la propiedad TabStretch está establecida en 1, Fila única.

Vea también

TabStretch (Propiedad) | AllowTabs (Propiedad)

Se aplica a: PageFrame


Tag (Propiedad)

Almacena cualquier dato adicional necesario para el programa. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.Tag[ = Expr]

Valores de la propiedad

Expr
Especifica cualquier cadena.

Observaciones

De manera predeterminada, el valor de la propiedad Tag se establece en una cadena vacía (""). Puede utilizar esta propiedad para asignar cualquier cadena a un objeto sin afectarle de ninguna otra manera. A diferencia de otras propiedades, Visual FoxPro no usa el valor de la propiedad Tag.

Vea también

Comment (Propiedad)

Applies To: CheckBox | Collection (Clase) | ComboBox | CommandButton | CommandGroup | CursorAdapter (Clase) | EditBox | Exception (Clase) | Form | Grid | Image | Label | Line | ListBox | OLE Bound (Control) | OLE Container (Control) | OptionButton | OptionGroup | ProjectHook (Objeto) | _SCREEN | Session (Objeto) | Shape | Spinner | TextBox | Timer


TerminateRead (Propiedad)

Se incluye por compatibilidad con versiones anteriores del comando READ.


Text (Propiedad)

Contiene el texto sin formato escrito en la parte de cuadro de texto de un control. No está disponible en tiempo de diseño; es de sólo lectura en tiempo de ejecución.

Object.Text

Observaciones

A diferencia de la propiedad Value, el valor que contiene la propiedad Text no tiene formato y es idéntico al texto escrito en el control por el usuario.

El texto sin formato contenido en la propiedad Text de un control puede ser distinto de la propiedad Value del control por las siguientes razones:

  • Es posible que la propiedad Value no sea del tipo Carácter; puede contener un valor de tipo Date o Numérico.
  • Para un cuadro de edición, la propiedad Value puede agregar avances de línea al texto escrito en el cuadro de edición, lo que proporciona compatibilidad con las versiones anteriores. Por este motivo, se recomienda que utilice la propiedad Text para seleccionar texto con las propiedades SelStart y SelLength.
  • Si la propiedad Format para el control utiliza el valor R, los caracteres de la máscara de entrada se eliminarán de la propiedad Value.

Si la propiedad Style para un control de un cuadro combinado se establece en 2 (Lista desplegable), la propiedad Text contendrá la cadena vacía porque el ComboBox carece de un cuadro de texto.

Vea también

Format (Propiedad) | SelStart (Propiedad) | SelLength (Propiedad) | Style (Propiedad) | Value (Propiedad)

Se aplica a: ComboBox | EditBox | Spinner | TextBox


Themes (Propiedad)

Especifica si los Temas de Windows XP están habilitados o deshabilitados para un control. Para formularios y barras de herramientas, Themes controla si los objetos hijo soportan Temas de lectura/escritura en tiempo de diseño y en tiempo de ejecución.

Nota La propiedad Themes para clases visuales puede afectar la interfaz de usuario existente cuando usa Microsoft Windows XP. Puede desactivar este soporte estableciendo la propiedad Themes en el control, a nivel de formulario o en la variable de sistema _SCREEN.
Object.Themes [ = lExpr ]

Parámetros

lExpr
Dato tipo Lógico. En la siguiente tabla se listan las configuraciones para lExpr.
lExpr
Verdadero (.T.) | Habilitado (Predefinido)
Falso (.F.) | Deshabilitado

Observaciones

Los controles definidos usando @...GET o @...SAY y comando similares @... no son compatibles con Temas de Windows XP. Por lo tanto, cuando ejecute programas escritos con FoxPro 2.x en Windows XP o posteriores, debe establecer la propiedad _SCREEN Themes a Falso (.F.); de otro modo, los controles de los formularios desaparecen.

Cuando Themes está habilitado, Visual FoxPro sobrescribe la propiedad SpecialEffect y usa el tema predefinido excepto cuando SpecialEffect está establecido a un valor de 2 (seguimiento intensivo). En este escenario, Visual FoxPro mantiene el seguimiento intensivo, el cual muestra efectos especiales cuando se mueve el ratón sobre el CommandButton, controles gráficos OptionButton y CheckBox.

Para controles CheckBox, Themes soporta tres estados de la casilla de verificación.

Para objetos Form y ToolBar, Themes habilita temas para todo el formulario. Para habilitar temas para un control, necesita establecer Themes a Verdadero (.T.) para ambos el formulario y el control. Para otros contenedores como PageFrame, Themes no controla como los objetos hijo muestran temas; solo controla aspectos visuales como bordes o fichas.

Nota Cuando Themes está habilitado, debe evitar usar el comando CLEAR COMMAND para formularios por que podría causar que se dibujen cosas en controles con temas, como botones de comando, que tienen efectos de sobrevuelo del ratón.

Para controles OptionGroup, CommandGroup, e Image, Themes determina si los bordes tienen temas o no.

Controles como fichas de PageFrame y cabeceras de Grid se dibujan dinámicamente por el controlador Themes del sistema operativo cuando mueva su ratón sobre ellos. Por lo tanto, no posicione otros controles sobre estos.

Para un control Grid, Themes afecta la apariencia visual de las cabeceras de columna. Si temas está habilitado para una cuadrícula, las propiedades BackColor y ForeColor de la cabecera no se tienen en cuenta por que ellas son inherentes a los atributos del tema. Sin embargo, las propiedades BackColor y ForeColor de un objeto Column se muestran independientemente de la configuración de la propiedad Themes de la cuadrícula.

Para controles PageFrame, Themes determina si las fichas tienen tema. Podría necesitar hacer modificaciones menores a los formularios que contienen objetos PageFrame. La propiedad Themes da un efecto degradado en objetos Page, así una etiqueta, botones de opción, o controles similares con texto no aparecen correctamente si la propiedad BackStyle del control está establecida a Opaco. Puede remediar esta situación estableciendo BackStyle a Transparente.

Si su sistema operativo no soporta temas, o si Themes está desactivado, Visual FoxPro usa las configuraciones controladas por SpecialEffect y otras propiedades.

Puede establecer la propiedad _SCREEN Themes a Falso (.F.) para deshabilitar Themes por completo en Visual FoxPro.

Nota Cuando establece la propiedad _SCREEN Themes, realmente no altera el estado actual de Themes establecido a nivel del sistema operativo. Debe usar SYS(2700) - Enables Windows XP Themes para verificar el estado actual de Themes.

Para detalles mas específicos acerca de Windows XP Themes, vea los siguientes recursos:

  • "Using Windows XP Visual Styles" en http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwxp/html/xptheming.asp
  • "Visual Styles" en http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/CommCtls/Userex/themes.asp
  • "Microsoft Windows XP: What's in It for Developers?" en http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwxp/html/winxpintro.asp

Vea también

Propiedades | SpecialEffect (Propiedad) | _SCREEN (Variable del sistema) | Style (Propiedad) | SYS(2700) - Activar Temas de Windows XP

Se aplica a: CheckBox (Control), ComboBox (Control) | CommandButton (Control) | CommandGroup (Control) | Form (Objeto) | Grid (Control) | Image (Control) | ListBox (Control) | OptionButton (Control) | OptionGroup (Control) | PageFrame (Control) | Spinner (Control) | TextBox (Control) | ToolBar (Objeto)


ThreadID (Propiedad)

Devuelve el Id. de Win32 del subproceso en el que se llamó al objeto.

_VFP.ThreadID

Observaciones

Puede utilizar esta propiedad sobre todo durante la depuración. Por ejemplo, puede utilizarla para comparar el valor de threadID de una llamada recibida con el valor de threadID del objeto que recibe la llamada.

Vea también

Application (Objeto)

Se aplica a: Application (Objeto) | _VFP


TitleBar (Propiedad)

Especifica si se muestra una barra de título en la parte superior de un formulario.

Object.TitleBar[ = nExpression]

Valores de la propiedad

nExpression
La propiedad TitleBar puede tener los siguientes valores:
Valor | Descripción
0 | No se muestra la barra de título.
1 | (Predeterminado) Se muestra la barra de título.

Observaciones

Si la propiedad TitleBar tiene el valor 0, no se muestra una barra de título y no están disponibles el menú contextual de la ventana ni los botones Minimizar, Maximizar y Cerrar.

Vea también

Closable (Propiedad) | MaxButton (Propiedad) | MinButton (Propiedad) | WhatsThisButton (Propiedad)

Se aplica a: Form


ToCursor (Método)

Crea un cursor especificado en XMLTable con los campos descritos en la colección Fields de XMLTable y cargarlo con datos del documento XML referenciado.

ToCursor sólo se soporta para objetos XMLTable en la colección Tables de XMLAdapter.

XMLTable.ToCursor( [ lAppend [, cAlias [, Reserved ]]] )

Parámetros

lAppend
Especifica si agregar datos o registros a un cursor existente especificado por el parámetro cAlias. En la siguiente tabla se listan los valores para lAppend.
lAppend | Descripción
Falso (.F.) | No agrega campos a un cursor existente. (Predefinido)
Verdadero. (.T.) | Agrega campos a un cursor existente.
cAlias
Especifica el alias para el cursor destino. El valor de cAlias es el valor predefinido para la propiedad Alias de XMLTable, inclusive cuando cAlias es una cadena vacía ("").
Reserved
Reservado para uso futuro. El valor predefinido es cero 0.

Observaciones

Si la propiedad Alias de XMLField está vacía, el método ToCursor de XMLTable no tiene en cuenta los objetos XMLField y crea un cursor que no incluye ningún campo especificado por aquellos objetos XMLField.

Cuando use ToCursor en modo agregar, Visual FoxPro agrega una fila vacía si ningún objeto XMLField coincide con alguna columna del cursor.

Cuando se asignen campos binarios a datos tipo Caracter, Visual FoxPro llena cualquier espacio restante con caracteres 0x00 (CHR(0) o ceros) después de decodificar.

Vea también

Métodos | XMLTable (Objeto: propiedades, métodos, eventos) | Fields (XMLTable) (Colección) | XMLName (Propiedad) | Alias (Propiedad) | ToCursor (Método) | XMLField (Clase)

Se aplica a: XMLTable (Clase)


ToolTipText (Propiedad)

Especifica el texto que aparece como ToolTip de un control. Puede establecer la propiedad ToolTipText únicamente si la propiedad ShowTips de un formulario o barra de herramientas que contenie al control está establecido como verdadero (.T.). Disponible como Lectura/Escritura en tiempo de diseño y ejecución.

Control.ToolTipText [= cExpr]

Valores de la propiedad

cExpr
Especifica el texto a usar para el . El máximo número de caracteres que puede especificar para cExpr es 4,095.

Observaciones

Visual FoxPro soporta el ajuste automático de línea para los ToolTips.

Cuando establece la propiedad ToolTipText para controles contenidos tales como Column, Header, o OptionButton, la propiedad ToolTipText mas interna de los objetos toma precedencia si el cursor del ratón se mueve sobre ambos objetos especificados con ToolTip.

Para todos los controles contenidos excepto el control Grid, si el objeto contenido no especifica una propiedad ToolTipText, pero el contenedor si lo hace, Visual FoxPro no muestra un ToolTip cuando el ratón se mueve sobre el control contenido.

Si el objeto contenido en un control Grid no especifica una propiedad ToolTipText, pero el contenedor si lo hace, Visual FoxPro muestra el ToolTip de el contenedor. Por ejemplo, si el ratón se mueve sobre un objeto Header, y éste no tiene especificado una propiedad ToolTipText, Visual FoxPro muestra el ToolTip de la columna.

Visual FoxPro muestra controles dentro de una columna, por ejemplo, un control TextBox, y este especifica la propiedad ToolTipText únicamente cuando el control tiene el enfoque. Si el control no especifica un Tooltip cuando tiene enfoque, se mostrará el Tooltip de la columna.

Ejemplos

Ejemplo 1

La siguiente sección de código ilustra cómo mostrar Tooltips para objetos contenidos ademas de un grid. El siguiente ejemplo muestra cómo los Tooltips de controles CommandButton y CommandGroup se muestran cuando cada uno de los controles tiene el enfoque, por ejemplo, cuando mueve el puntero del ratón sobre el botón o grupo de comando.

CommandGroup1.ToolTipText = "Hi, I'm a CommandGroup."
CommandGroup1.Command1.ToolTipText = "Hi, I'm Command 1."
CommandGroup1.Command2.ToolTipText = "Hi, I'm Command 2."

En la siguiente sección de código, el ToolTip para Command2 no se muestra cuando el control tiene el enfique debido a que el ToolTip para el control no fué especificado.

CommandGroup1.ToolTipText = "Hi, I'm a CommandGroup."
CommandGroup1.Command1.ToolTipText = "Hi, I'm Command 1."

Ejemplo 2

La siguiente sección de código ilustra cómo mostrar ToolTips para controles contenidos en un grid. El siguiente ejemplo muestra cómo el ToolTip para el control TextBox se muestra cuando el control tiene el enfoque, por ejemplo, cuando mueve el puntero del ratón sobre la caja de texto..

Grid1.ToolTipText = "Hi, I'm a Grid."
Grid1.Column1.ToolTipText = "Hi, I'm a Column."
Grid1.Column1.Header1.ToolTipText = "Hi, I'm a Header."
Grid1.Column1.Text1.ToolTipText = "Hi! I'm the Textbox!"

En la siguiente sección de código, el ToolTip para el control TextBox no se muestra cuando el control tiene enroque deibod a que no se ha especificado el ToolTip.

Grid1.ToolTipText = "Hi, I'm a Grid."
Grid1.Column1.ToolTipText = "Hi, I'm a Column."
Grid1.Column1.Header1.ToolTipText = "Hi, I'm a Header."

En la siguiente sección de código, el ToolTip para la columna aparece cuando el control Header tiene el enroque, debido a que no se ha especificado ToolTip para el encabezado de columna..

Grid1.ToolTipText = "Hi, I'm a Grid."
Grid1.Column1.ToolTipText = "Hi, I'm a Column."

En la siguiente sección de código, el ToolTip para el for the grid aparece cuando los controles Column o Header tienen el enfoque, debido a que el ToolTip para la columna o encabezado no ha sido especificado.

Grid1.ToolTipText = "Hi, I'm a Grid."

Vea también

ShowTips (Propiedad)

Aplica a: CheckBox | Column | ComboBox | CommandButton | CommandGroup | Container | Control | EditBox | Grid | Header | Image | Label | Line | ListBox | Control OLE Bound | OptionButton | OptionGroup | PageFrame | Shape | Spinner | TextBox


Top (Propiedad)

Especifica la distancia entre el borde superior de un control o de un formulario y su objeto contenedor. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.Top[ = nValue]

Valores de la propiedad

nValue
Especifica la distancia entre el borde superior de un objeto y el borde superior de su objeto contenedor.

El contenedor predeterminado para un formulario es la ventana principal de Visual FoxPro.

Observaciones

La propiedad Top especifica la distancia a la que está ubicado el objeto, respecto a su posición cero. Por ejemplo, si hay un formulario en la ventana principal de Visual FoxPro, la posición cero se encontrará justo debajo del menú del sistema o bien, si hay una barra de herramientas acoplada en la parte superior de la ventana principal, inmediatamente debajo de la barra de herramientas.

Utilice las propiedades Left y Top y las propiedades Height y Width para operaciones basadas en las dimensiones externas de un objeto, como su movimiento o ajuste de tamaño.

Nota La propiedad Top es de sólo lectura cuando se aplica a un control contenido en un objeto Columna.

La unidad de medida que utiliza la propiedad Top se determina mediante la configuración de la propiedad ScaleMode del control.

Ejemplo

El ejemplo siguiente muestra cómo se utiliza la propiedad Top para colocar controles en un formulario. El método AddObject se utiliza para agregar un control Line y tres botones de comando a un formulario. La propiedad Top especifica la colocación vertical de cada control en el formulario.

frmMyForm = CREATEOBJECT('Form')  && Create a Form
frmMyForm.Closable = .F.  && Disable the window pop-up menu
frmMyForm.AddObject('shpLine','Line')  && Add a Line control to the form
frmMyForm.AddObject('cmdCmndBtn1','cmdMyCmndBtn1')  && Up Cmnd button
frmMyForm.AddObject('cmdCmndBtn2','cmdMyCmndBtn2')  && Down Cmnd button
frmMyForm.AddObject('cmdCmndBtn3','cmdMyCmndBtn3')  && Quit Cmnd button
frmMyForm.shpLine.Visible = .T.  && Make Line control visible
frmMyForm.shpLine.Top = 20  && Specify Line control row
frmMyForm.shpLine.Left = 125  && Specify Line control column
frmMyForm.cmdCmndBtn1.Visible =.T.  && Up Command button visible
frmMyForm.cmdCmndBtn2.Visible =.T.  && Down" Command button visible
frmMyForm.cmdCmndBtn3.Visible =.T.  && Quit Command button visible
frmMyForm.SHOW  && Display the form
READ EVENTS  && Start event processing
DEFINE CLASS cmdMyCmndBtn1 AS COMMANDBUTTON  && Create Command button
Caption = 'Slant \<Up'  && Caption on the Command button
Left = 50  && Command button column
   Top = 100  && Command button row
Height = 25  && Command button height
PROCEDURE Click
ThisForm.shpLine.Visible = .F.  && Hide the Line control
ThisForm.shpLine.LineSlant ='/'  && Slant up
ThisForm.shpLine.Visible = .T.  && Show the Line control
ENDDEFINE
DEFINE CLASS cmdMyCmndBtn2 AS CommandButton  && Create Command button
Caption = 'Slant \<Down'  && Caption on the Command button
Left = 200  && Command button column
   Top = 100  && Command button row
Height = 25  && Command button height
PROCEDURE Click
ThisForm.shpLine.Visible = .F.  && Hide the Line control
ThisForm.shpLine.LineSlant ='\'  && Slant down
ThisForm.shpLine.Visible = .T.  && Show the Line control
ENDDEFINE
DEFINE CLASS cmdMyCmndBtn3 AS CommandButton  && Create Command button
Caption = '\<Quit'  && Caption on the Command button
Cancel = .T.  && Default Cancel Command button (Esc)
Left = 125  && Command button column
Top = 150  && Command button row
Height = 25  && Command button height
PROCEDURE Click
CLEAR EVENTS  && Stop event processing, close Form
ENDDEFINE

Vea también

Left (Propiedad) | Height (Propiedad) | Move (Método) | ScaleMode (Propiedad) | Width (Propiedad)

Se aplica a: CheckBox | ComboBox | CommandButton | CommandGroup | Container (Objeto) | Control (Objeto) | Custom | EditBox | Form | Grid | Image | Label | Line | ListBox | OLE Bound (Control) | OLE Container (Control) | OptionButton | OptionGroup | PageFrame | _SCREEN | Shape | Spinner | TextBox | Timer | ToolBar


TopIndex (Propiedad)

Especifica el elemento que aparece en la posición superior en una lista.

Control.TopIndex[ = nIndex]

Valores de la propiedad

nIndex
Especifica el índice del elemento que aparece en la posición superior de una lista.

Observaciones

El índice de un elemento refleja su posición en la lista respecto a otros elementos de la lista y puede cambiar.

Los controles combobox son de sólo lectura todo el tiempo y los controles listbox son de sólo lectura en tiempo de diseño y lectura, escritura en tiempo de ejecución.

Vea también

AddItem (Método) | Clear (Método) | List (Propiedad) | ListCount (Propiedad) | MultiSelect (Propiedad) | NewItemID (Propiedad) | RemoveItem (Método) | Selected (Propiedad) | TopItemID (Propiedad)

Se aplica a: ComboBox | ListBox


TopItemID (Propiedad)

Especifica el Id. de elemento que aparece en la posición superior de una lista.

Control.TopIItemID[ = nItemID]

Valores de la propiedad

nItemID
Especifica el Id. de elemento que aparece en la posición superior de una lista.

Observaciones

La configuración predeterminada para la propiedad TopItemID es 1 o el primer elemento de la lista.

Los controles ComboBox son de solo lectura todo el tiempo y los controles ListBox son de solo lectura en tiempo de diseño y lectura / escritura en tiempo de ejecución.

Vea también

AddItem (Método) | Clear (Método) | List (Propiedad) | ListCount (Propiedad) | MultiSelect (Propiedad) | NewItemID (Propiedad) | RemoveItem (Método) | Selected (Propiedad) | TopIndex (Propiedad)

Se aplica a: ComboBox | ListBox


ToXML (Método)

Genera XML a un archivo o variable de memoria.

XMLAdapter.ToXML( cXMLDocument [, cSchemaLocation [, lFile [, lIncludeBefore [, lChangesOnly ]]]] )

Parámetros

cXMLDocument
Especifica el nombre de archivo o variable de memoria para el documento XML.
cSchemaLocation
Especifica la localización para una referencia a un esquema externo. El valor predefinido de cSchemaLocation es una cadena vacía (""). Si cSchemaLocation está vacía y se ha generado un esquema externo, se usa el valor de XMLSchemaLocation de XMLAdapter como la referencia de esquema externo.
lFile
Especifica si cXMLDocument es un archivo. El valor predefinido de lFile es Falso (.F.).
lIncludeBefore
Especifica si incluir la sección diffgr:before en el DiffGram. La sección diffgr:before contiene la versión original de una fila (registro). El valor predefinido de lIncludeBefore es Falso (.F.).

Si lIncludeBefore es Verdadero (.T.), Visual FoxPro filtra los registros borrados, independientemente del filtro establecido actualmente, como SET FILTER TO NOT DELETED() y SET DELETED ON o OFF. Todos los registros borrados en el búfer de tabla se insertan en la sección diffgr:before pero no tienen ninguna fila coincidente en el bloque DataInstance de DiffGram.

Aunque usted podría desear ocultar las filas borradas utilizando un filtro, el DiffGram señala cuáles filas están borradas para que la fuente de datos se pueda actualizar correctamente.

Visual FoxPro ignora lIncludeBefore si la propiedad IsDiffGram de XMLAdapter es Falso (.F.).

lChangesOnly
Especifica si el XML debe contener sólo cambios.

Visual FoxPro ignora lChangesOnly si la propiedad IsDiffGram de XMLAdapter es Falso (.F.) o si lIncludeBefore es Falso (.F.).

Observaciones

Si la propiedad Alias de XMLTable está vacía, no se generan elementos XML para ese objeto XMLTable, sin embargo, la tabla está incluida en el esquema si se genera uno.

Para campos carácter, Visual FoxPro llena cualquier espacio restante en el campo con espacios en blanco (0x20). Cuando ToXML asigna campos carácter a campos binario y los codifica, ToXML codifica los espacios en blanco al comienzo y final independientemente del valor de la propiedad PreserveWhiteSpace de XMLAdapter.

La siguiente configuración de las propiedades de XMLAdapter afectan cómo se ejecuta ToXML:

  • ForceCloseTag
  • FormattedOutput
  • PreserveWhiteSpace
  • RespectCursorCP
  • UTF8Encoded
  • XMLSchemaLocation

XML Encoding Cuando la propiedad RespectCursorCP de XMLAdapter es Verdadero (.T.), UTF8Encoded de XMLAdapter es Falso (.F.), y dos o mas alias de tablas están referenciadas en la colección Tables, aquellas tablas deben usar el mismo código de página. De otro modo, Visual FoxPro informa un error.

Condiciones de Desbordamiento Numérico Un objeto XMLAdapter no carga XML que contenga condiciones de desbordamiento numérico tipo Visual FoxPro, por ejemplo, *****.**, en el lugar de un valor Numérico o Integer. El analizador Microsoft XML Core Services (MSXML) causa un error similar al siguiente:

Error 2110 (XML Error): XML Error: XML Parse error: El valor de '***' no es válido
según su tipo de dato.
El elemento: 'myfield' tiene un valor no válido según su tipo de dato.
Linea 7, Posición 17.
<myfield>***</myfield>

Vea también

Métodos | XMLAdapter (Objeto: propiedades, métodos y eventos) | IsDiffGram (Propiedad) | Alias (Propiedad) | XMLTable (Clase) | Tables (XMLAdapter) (Colección)

Se aplica a: XMLAdapter (Clase)


Type (Propiedad)

Contiene un carácter que indica el tipo de un archivo en un proyecto. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.Type

Observaciones

La siguiente tabla presenta la lista de valores que puede contener la propiedad Type y los tipos de archivo correspondientes.

Valor | Constante FoxPro.H | Tipo de archivo y extensión
d | FILETYPE_DATABASE | Base de datos, .dbc
D | FILETYPE_FREETABLE | Tabla libre, .dbf
Q | FILETYPE_QUERY | Consulta, .qpr
K | FILETYPE_FORM | Formulario, .scx
R | FILETYPE_REPORT | Informe, .frx
B | FILETYPE_LABEL | Etiqueta, .lbx
V | FILETYPE_CLASSLIB | Biblioteca de clases visuales, .vcx
P | FILETYPE_PROGRAM | Programa, .prg
L | FILETYPE_APILIB | Biblioteca de vínculos dinámicos de Visual FoxPro, .fll
Z | FILETYPE_APPLICATION | Aplicación, .app
M | FILETYPE_MENU | Menú, .mnx
T | FILETYPE_TEXT | Archivo de texto, varias extensiones
x | FILETYPE_OTHER | Otros, varias extensiones

Estos valores se almacenan en el campo Type del archivo .pjx del proyecto.

Vea también

FileClass (Propiedad) | FileClassLibrary (Propiedad)

Se aplica a: File (Objeto)


TypeLibCLSID (Propiedad)

El CLSID de registro (identificador de clase) para una biblioteca de tipos creada para las clases de servidor de un proyecto. Sólo lectura.

Object.TypeLibCLSID

Observaciones

Una biblioteca de tipos se crea y se registra al generar un archivo .dll o .exe a partir de un proyecto que contiene clases de servidores. Las bibliotecas de tipos tienen la extensión .tlb y se colocan en el mismo directorio que el archivo .dll o .exe que se genera.

Vea también

CLSID (Propiedad) | ProgID (Propiedad) | TypeLibDesc (Propiedad) | TypeLibName (Propiedad)

Se aplica a: Project (Objeto)


TypeLibDesc (Propiedad)

La descripción de una biblioteca de tipos creada para las clases de servidor de un proyecto.

Object.TypeLibDesc[ = cTypeLibraryDescription]

Valores de la propiedad

cTypeLibraryDescription
Especifica la descripción de una biblioteca de tipos creada para las clases de servidores de un proyecto. De manera predeterminada, incluye el nombre del proyecto que contiene las clases de servidor adjuntadas con "Type Library".

Observaciones

Una biblioteca de tipos se crea y se registra al generar un archivo .dll o .exe a partir de un proyecto que contiene clases de servidores. Las bibliotecas de tipos tienen la extensión .tlb y se colocan en el mismo directorio que el archivo .dll o .exe que se genera.

Esta propiedad corresponde al elemento de descripción Typelib de la ficha Servidores del cuadro de diálogo Información del proyecto.

Vea también

CLSID (Propiedad) | ProgID (Propiedad) | TypeLibCLSID (Propiedad) | TypeLibName (Propiedad)

Se aplica a: Project (Objeto)


TypeLibName (Propiedad)

El nombre de una biblioteca de tipos creada para las clases de servidor de un proyecto. Sólo lectura.

Object.TypeLibName

Observaciones

Una biblioteca de tipos se crea y se registra al generar un archivo .dll o .exe a partir de un proyecto que contiene clases de servidores. Las bibliotecas de tipos tienen la extensión .tlb y se colocan en el mismo directorio que el archivo .dll o .exe que se genera.

Vea también

CLSID (Propiedad) | Name (Propiedad) | ProgID (Propiedad) | TypeLibCLSID (Propiedad) | TypeLibDesc (Propiedad)

Se aplica a: Project (Objeto)


Unicode (Propiedad)

Especifica cómo los métodos LoadXML, Attach, AddTableSchema, y ToXML de XMLAdapter y los métodos ToCursor, ChangesToCursor, y ApplyDiffGram de XMLTable controlan cadenas de caracteres.

XMLField Unicode especifica si colocar una cadena Unicode en el campo.

Nota Si la propiedad IsBinary de XMLField es Verdadero (.T.), y Unicode de XMLField es Verdadero (.T.), Visual FoxPro genera el mensaje apropiado.

De lectura/escritura en tiempo de diseño y en tiempo de ejecución.

Object.Unicode [= lValue]

Parámetros

lValue
Especifica un valor lógico que determina cómo se controlan las cadenas, dependiendo de qué método se está ejecutando o almacenando.

La siguiente tabla describe los valores y comportamientos de Unicode dependiendo del método que se está llamando o ejecutando.

Método u Objeto lValue
XMLAdapter LoadXML y Attach (métodos) Verdadero (.T.): Duplica la longitud de una cadena determinada y asigna el resultado a la propiedad MaxLength de XMLField.

Falso (.F.): Asigna la longitud de una cadena determinada a la propiedad MaxLength de XMLField.

Cuando LoadXML y Attach son llamados, XMLField Unicode se establece al valor de XMLAdapter Unicode para campos Carácter y Memo.
XMLAdapter AddTableSchema (método) Verdadero (.T.): Asigna el valor de XMLAdapter Unicode (Verdadero o .T.) a XMLField Unicode.

Falso (.F.): Asigna el valor de XMLAdapter Unicode (Falso o .F.) a XMLField Unicode.
XMLAdapter ToXML (método) Verdadero (.T.): Divide por 2 la longitud de un campo de caracteres determinado y asigna el resultado a xsd:maxLength.

Falso (.F.): Asigna la longitud de un campo de caracteres determinado a xsd:maxLength.

Cuando use XMLAdapter ToXML, el contenido del campo se convierte desde Unicode a la página de códigos del XML, y el símbolo nulo (null) (CHR(0)+CHR(0)) incrustado se considera un final de cadena. Para cadenas Unicode almacenadas en campos Carácter, la longitud de la cadena es mas corta que el tamaño del campo, se requiere el terminador nulo (null). Para terminar la cadena, use CHR(0)+CHR(0).
XMLTable ToCursor, ChangesToCursor, y ApplyDiffgram (métodos) Verdadero (.T.): Crea un campo con el marcador NOCPTRANS independientemente de la propiedad XMLField NoCpTrans y almacena una cadena Unicode en el campo. Para mas información, vea SET NOCPTRANS (Comando).
Nota Si la propiedad XMLField MaxLength es un número impar, Visual FoxPro genera el mensaje apropiado.

Falso (.F.): Crea el campo como un campo Carácter o Memo normal.
XMLField (objeto) Verdadero (.T.): Almacena una cadena Unicode en el campo.

Falso (.F.): Almacena una cadena no-Unicode en el campo.

Vea también

Propiedades | XMLAdapter (Objeto: propiedades, métodos y eventos) | XMLField (Objeto: propiedades, métodos y eventos) | LoadXML (Método) | Attach (Método) | ToCursor (Método) | ChangesToCursor (Método) | ApplyDiffGram (Método) | AddTableSchema (Método)

Se aplica a: XMLAdapter (Clase) | XMLField (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y asuntos del producto, vea el tema "Soporte Técnico Microsoft Visual FoxPro"..

© 1992 - 2003 Microsoft Corporation. Reservados todos los derechos.


UpdatableFieldList (Propiedad)

Especifica una lista delimitada por comas, de campos de una vista e incluye campos del cursor. Cuando trabaje esta propiedad con cursores normales, utilice las funciones CURSORSETPROP( ) y CURSORGETPROP( ). De lectura/escritura.

Nota Debe incluir una lista de nombres de campos a actualizar cuando use actualización automática.
Cuando UpdatableFieldList, está establecida en un objeto CursorAdapter, se sobrescribe la configuración de la propiedad del cursor, cuando se realiza el enlace al objeto CursorAdapter. De tal manera, cambiar la configuración del cursor usando CURSORSETPROP() no tiene efecto.
CursorAdapter.UpdatableFieldList [= cList]

Valores de la propiedad

cList
Tipo de dato carácter. El parámetro cList especifica una lista delimitada por comas de campos en la vista e incluye campos del cursor.

Vea también

Propiedades | CursorAdapter (Objeto: propiedades, métodos y eventos) | CURSORGETPROP( ) (Función) | CURSORSETPROP( ) (Función)

Se aplica a: CursorAdapter (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y asuntos del producto, vea el tema "Soporte Técnico Microsoft Visual FoxPro"..

© 1992 - 2003 Microsoft Corporation. Reservados todos los derechos.


UpdateCmd (Propiedad)

Especifica el comando que se usa cuando se actualizan tablas. De lectura/escritura en tiempo de diseño y en tiempo de ejecución.

CursorAdapter.UpdateCmd [ = cCommand ]

Valores de la propiedad

cCommand
Tipo de dato carácter. En la siguiente tabla se listan los posibles valores para cCommand.
cCommand | Descripción
Cadena de caracteres o expresión | Especifica un cadena de comando válida para el origen de datos en la propiedad UpdateCmdDataSource.
Cadena vacía ("") | El objeto CursorAdapter genera automáticamente un comando SQL UPDATE si la propiedad AllowUpdate de CursorAdapter tiene un valor True (.T.).

Vea también

Propiedades | CursorAdapter (Objeto: propiedades, métodos y eventos)

Se aplica a: CursorAdapter (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y asuntos del producto, vea el tema "Soporte Técnico Microsoft Visual FoxPro"..

© 1992 - 2003 Microsoft Corporation. Reservados todos los derechos.


UpdateCmdDataSource (Propiedad)

Especifica el origen de datos usado para la propiedad UpdateCmd. De lectura/escritura en tiempo de diseño y en tiempo de ejecución.

CursorAdapter.UpdateCmdDataSource [= cDataSource]

Valores de la propiedad

cDataSource
Tipo de dato carácter. El parámetro cDataSource especifica el origen de datos usado para la propiedad UpdateCmd.

Observaciones

La siguiente tabla describe el comportamiento que se aplica a UpdateCmdDataSource dependiendo del valor de UpdateCmdDataSourceType.

UpdateCmdDataSourceType Comportamiento de UpdateCmdDataSource
Empty ("") UpdateCmdDataSource no se tiene en cuenta. Visual FoxPro usa el origen de datos en la propiedad DataSource de CursorAdapter.

Sin embargo, si el cursor asociado con el objeto CursorAdapter está basado en un RecordSet de ActiveX Data Object (ADO), Visual FoxPro usa la funcionalidad del ADO RecordSet para actualizar un registro. Para utilizar esta funcionalidad, asegúrese que la propiedad DataSourceType de CursorAdapter esté establecida como "ADO".
"ADO" UpdateCmdDataSource debe estar establecida a un objeto ADO Command válido. La propiedad ActiveConnection del objeto ADO Command debe estar establecida como un objeto ADO Connection válido y abierto.

Visual FoxPro establece la propiedad CommandText del objeto ADO Command al valor de la propiedad UpdateCmd de CursorAdapter. Visual FoxPro analiza los parámetros del comando, crea valores de los parámetros si los encuentra, y los establece en el objeto Command.

La operación de actualización se hace como:

CursorAdapter.UpdateCmdDataSource.Execute()

Para mas información acerca de usar un ADO RecordSet, actualización automática, y generar comandos SQL automáticamente, vea Manejo de datos utilizando CursorAdapters.

Vea también

Propiedades | CursorAdapter (Objeto: propiedades, métodos y eventos)

Se aplica a: CursorAdapter (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y asuntos del producto, vea el tema "Soporte Técnico Microsoft Visual FoxPro"..

© 1992 - 2003 Microsoft Corporation. Reservados todos los derechos.


UpdateCmdDataSourceType (Propiedad)

Especifica el tipo para el origen de datos usado por la propiedad UpdateCmdDataSource. De lectura/escritura en tiempo de diseño y en tiempo de ejecución.

CursorAdapter.UpdateCmdDataSourceType [= cDataSourceType]

Valores de la propiedad

cDataSourceType
Tipo de dato carácter. El parámetro cDataSourceType especifica el tipo para el origen de datos usado en la propiedad UpdateCmdDataSource.

Observaciones

Si UpdateCmdDataSourceType está vacía ("") o es nulo (.NULL.), Visual FoxPro usa el origen de datos en la propiedad DataSource de CursorAdapter.

Para generar un XML UpdateGram, debe establecer explícitamente el valor de UpdateCmdDataSourceType como "XML".

Vea también

Propiedades | CursorAdapter (Objeto: propiedades, métodos y eventos) | UpdateGram (Propiedad)

Se aplica a: CursorAdapter (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y asuntos del producto, vea el tema "Soporte Técnico Microsoft Visual FoxPro"..

© 1992 - 2003 Microsoft Corporation. Reservados todos los derechos.


UpdateGram (Propiedad)

Contiene el XML UpdateGram generado, sólo bajo las siguientes condiciones:

  • Visual FoxPro ejecuta los comandos insertar, actualizar, o borrar.
  • Las propiedades UpdateCmdDataSourceType, InsertCmdDataSourceType, y DeleteCmdDataSourceType tienen el valor "XML".

De sólo-lectura en tiempo de diseño y en tiempo de ejecución.

CursorAdapter.UpdateGram

Valores de la propiedad

Tipo de dato carácter. UpdateGram contiene un XML UpdateGram.

Observaciones

Aunque un objeto CursorAdapter puede generar el XML UpdateGram, se debe implementar la operación de actualización actual usando los protocolos apropiados, tales como SQL XML a través de HTTP, SQL XML OLEDB, o XML Web service a .NET.

Para mas información acerca de actualización automática y XML, vea Manejar Acceso a Datos Usando CursorAdapters.

Vea también

Propiedades | CursorAdapter (Objeto: propiedades, métodos y eventos)

Se aplica a: CursorAdapter (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y asuntos del producto, vea el tema "Soporte Técnico Microsoft Visual FoxPro"..

© 1992 - 2003 Microsoft Corporation. Reservados todos los derechos.


UpdateGramSchemaLocation (Propiedad)

Especifica el nombre y localización del esquema de equivalencia pasado a la función XMLUPDATEGRAM( ). De lectura/escritura en tiempo de diseño y en tiempo de ejecución.

Nota UpdateGramSchemaLocation se aplica sólo cuando DataSourceType de CursorAdapter es "XML". Cuando se especifica, UpdateGramSchemaLocation se pasa al parámetro SchemaLocation en XMLUPDATEGRAM( ). Visual FoxPro no soporta crear esquemas de equivalencia; por lo tanto se debe suministrar uno.
CursorAdapter.UpdateGramSchemaLocation [= cName]

Valores de la propiedad

cName
Tipo de dato carácter. El parámetro cName especifica el nombre y localización de un esquema de equivalencia, y el valor predefinido es una cadena vacía ("").

Vea también

Propiedades | CursorAdapter (Objeto: propiedades, métodos y eventos)

Se aplica a: CursorAdapter (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y asuntos del producto, vea el tema "Soporte Técnico Microsoft Visual FoxPro"..

© 1992 - 2003 Microsoft Corporation. Reservados todos los derechos.


UpdateNameList (Propiedad)

Especifica, una lista delimitada por comas, consistiendo de pares de nombres de campos local y remoto completo. Cada par de nombres consiste de un nombre de campo local seguido por el nombre completo de campo remoto. El nombre remoto aparece como: <remote table name>, <remote field name>, donde <remote table name> coincide con el nombre en la propiedad Tables. De lectura/escritura.

Nota Cuando UpdateNameList, está establecida en un objeto CursorAdapter, se sobrescribe la configuración de la propiedad del cursor, cuando se realiza el enlace al objeto CursorAdapter. De tal manera, que cambiar la configuración del cursor usando CURSORSETPROP( ) no tiene efecto.
Debe establecer UpdateNameList, para especificar nombres válidos de Visual FoxPro, para campos del cursor que tengan nombres de campos no válidos para Visual FoxPro.

Cuando trabaje con esta propiedad para cursores normales, use las funciones CURSORSETPROP( ) y CURSORGETPROP( ).

CursorAdapter.UpdateNameList [= cList]

Valores de la propiedad

cList
Tipo de dato carácter. El parámetro cList especifica una lista delimitada por comas, consistiendo de pares de nombres de campos local y remoto completo.

Vea también

Propiedades | CursorAdapter (Objeto: propiedades, métodos y eventos) | CURSORGETPROP( ) (Función) | CURSORSETPROP( ) (Función) | Tables (Propiedad)

Se aplica a: CursorAdapter (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y asuntos del producto, vea el tema "Soporte Técnico Microsoft Visual FoxPro"..

© 1992 - 2003 Microsoft Corporation. Reservados todos los derechos.


UpdateType (Propiedad)

Especifica qué hacer con los datos viejos cuando se realiza una actualización. Cuando trabaje con esta propiedad para cursores normales, utilice las funciones CURSORSETPROP( ) y CURSORGETPROP( ). De lectura/escritura.

Nota Cuando UpdateType, está establecida en un objeto CursorAdapter, se sobrescribe la configuración de la propiedad del cursor, cuando se realiza el enlace al objeto CursorAdapter. De tal manera, que cambiar la configuración del cursor usando CURSORSETPROP( ) no tiene efecto.
CursorAdapter.UpdateType [= nValue]

Valores de la propiedad

nValue
Tipo de dato numérico. En la siguiente tabla se listan los valores para nValue.
nValue | Descripción
1 | Actualiza los datos viejos con los datos nuevos. (Predefinido)
2 | Borra los datos viejos e inserta los datos nuevos.

Vea también

Propiedades | CursorAdapter (Objeto: propiedades, métodos y eventos) | CURSORGETPROP( ) (Función) | CURSORSETPROP( ) (Función)

Se aplica a: CursorAdapter (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y asuntos del producto, vea el tema "Soporte Técnico Microsoft Visual FoxPro".

© 1992 - 2003 Microsoft Corporation. Reservados todos los derechos.


UseDeDataSource (Propiedad)

Determina, si usar el origen de datos, del entorno de datos del contenedor, como origen de datos par el objeto CursorAdapter. El origen de datos del entorno de datos asociado se especifica por la propiedad DataSource de DataEnvironment. De lectura/escritura en tiempo de diseño y en tiempo de ejecución.

Nota UseDeDataSource se aplica sólo cuando el cursorAdapter existe en el entorno de datos.
CursorAdapter.UseDeDataSource [ = lValue ]

Valores de la propiedad

lValue
Tipo de dato lógico. En la siguiente tabla se listan los valores para lValue.
lValue | Descripción
Verdadero (.T.) Usa el origen de datos del entorno de datos asociado como el origen de datos del cursorAdapter.

Establecer UseDeDataSource a Verdadero (.T.) no es apropiado si el entorno de datos contiene múltiples objetos CursorAdapter usando como origen de datos ActiveX Data Object (ADO). Múltiples cursor adapters no pueden compartir un único ADO RecordSet. Usted debe establecer individualmente cada propiedad DataSource y DataSourceType de los CursorAdapter.

Si el cursorAdapter es un miembro del entorno de datos, las propiedades DataSource y DataSourceType de DataEnvironment sobrescriben las propiedades pertinentes del CursorAdapter.
Falso (.F.) | No use el origen de datos del entorno de datos asociado como el origen de datos del cursorAdapter.

Vea también

Propiedades | CursorAdapter (Objeto: propiedades, métodos y eventos) | DataEnvironment (Objeto: propiedades, métodos y eventos)

Se aplica a: CursorAdapter (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y asuntos del producto, vea el tema "Soporte Técnico Microsoft Visual FoxPro".

© 1992 - 2003 Microsoft Corporation. Reservados todos los derechos.


UseMemoSize (Propiedad)

Especifica, el tamaño mínimo en bytes para devolver las columnas resultado en campos memo. Por ejemplo, si el ancho de una columna resultado excede el valor de UseMemoSize, la columna resultado se almacena en un campo memo. De lectura/escritura.

Nota Cuando UseMemoSize, está establecida en un objeto CursorAdapter con origen datos ODBC o ADO, se sobrescribe la configuración de la propiedad del cursor, cuando se realiza el enlace al objeto CursorAdapter. De tal manera, cambiar la configuración del cursor usando CURSORSETPROP() no tiene efecto.

Cuando trabaje con esta propiedad para cursores normales, utilice las funciones CURSORSETPROP( ) y CURSORGETPROP( ).

CursorAdapter.UseMemoSize [= nValue]

Valores de la propiedad

nValue
Tipo de dato numérico. El parámetro nValue tiene un valor predefinido de 255 bytes y puede variar desde 1 a 255 bytes.

Observaciones

Esta propiedad, se aplica ante todo para vistas remotas y establecerla no afecta las vistas locales. Sin embargo, puede predefinir esta propiedad para vistas locales que serán migradas (convertidas).

Vea también

Propiedades | CursorAdapter (Objeto: propiedades, métodos y eventos) | CURSORGETPROP( ) (Función) | CURSORSETPROP( ) (Función)

Se aplica a: CursorAdapter (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y asuntos del producto, vea el tema "Soporte Técnico Microsoft Visual FoxPro"..

© 1992 - 2003 Microsoft Corporation. Reservados todos los derechos.


UserValue (Propiedad)

Especifica el valor pasado por la instrucción THROW utilizado para generar una excepción. Puede utilizar este valor como una referencia de objeto. De lectura/escritura en tiempo de ejecución.

Exception.UserValue

Valores de la propiedad

Dato tipo Variante

Vea también

Propiedades | Exception (Objeto: propiedades, métodos y eventos) | TRY...CATCH...FINALLY (Comando) | Control estructurado de errores

Se aplica a: Exception (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y asuntos del producto, vea el tema "Soporte Técnico Microsoft Visual FoxPro"..

© 1992 - 2003 Microsoft Corporation. Reservados todos los derechos.


UTF8Encoded (Propiedad)

Especifica si se establece el formato 8 de codificación Unicode (UTF-8). UTF8Encoded trabaja conjuntamente con la propiedad RespectCursorCP.

UTF8Encoded se aplica solamente cuando se ejecuta el método XMLAdapter ToXML, que recupera XML de acuerdo con esta configuración.

XMLAdapter.UTF8Encoded [= lValue]

Valores de la propiedad

lValue
Tipo de datos lógico. La siguiente tabla lista los valores para lValue.
lValue | Descripción
Falso (.F.) | No establece la codificación a UTF-8. (Predeterminado)
Verdadero (.T.) | Establece la codificación a UTF-8.

Observaciones

La codificación predeterminada para XML es UTF-8, mientras que para Visual FoxPro el valor predeterminado es Windows-1252. Cuando se desea una salida de datos a XML, se puede preservar la codificación UTF-8 estableciendo la codificación a UTF-8 e instruyendo a Visual FoxPro para que traduzca los caracteres de dos bytes a la secuencia de codificación UTF-8 apropiada.

Si se tiene una secuencia de caracteres que representan texto coreano o chino, se pueden convertir esos caracteres a conjuntos de caracteres de dos bytes (double-byte character sets, DBCS) para visualizarlos en Visual FoxPro. Se puede entonces reconvertirlos a UTF-8 cuando se los transmite a través de la Web como XML de manera tal que otros sistemas puedan mostrar los datos correctamente.

Por ejemplo, la siguiente tabla describe como las propiedades RespectCursorCP y UTF8Encoded interactúan una con la otra. .

RespectCursorCP | UTF8Encoded | Conversión realizada
Falso | Falso | Windows-1252 (Predeterminado)
Verdadero | Falso | Establece el atributo de codificación de la salida como el código de página del cursor.
Falso | Verdadero | Establece el atributo de codificación de la salida a UTF-8. No ocurre traducción de caracteres.
Verdadero | Verdadero | Establece el atributo de codificación de la salida a UTF-8.Traduce los caracteres de datos a UTF-8.

Ver también

Propiedades | XMLAdapter (Objeto: propiedades, métodos y eventos) | RespectCursorCP (Propiedad) | ToXML (Método)

Aplicable a: XMLAdapter (Clase)


Value (Propiedad)

Especifica el estado actual de un control. Está disponible en tiempo de diseño y en tiempo de ejecución.

[Form.]Control.Value[ = nSetting]

Valores de la propiedad

nSetting
Para un control CheckBox, los valores de la propiedad Value son:
Valor | Descripción
0 | (Predeterminado) Desactivada.
1 | Activada.
2 | En gris. Esta configuración sólo está disponible en código.

Para los controles CommandGroup, ComboBox, EditBox, ListBox, OptionGroup y Spinner, el valor de la propiedad Value es la cadena de caracteres o el valor numérico que esté seleccionado en ese momento.

Para un control OptionButton, los valores de la propiedad Value son:

Valor | Descripción
0 | (Predeterminado) Indica que el botón no está seleccionado.
1 | Indica que el botón está seleccionado.

Para un control TextBox, el valor de la propiedad Value es la cadena de caracteres o el valor numérico, de fecha, de fecha y hora, o lógico que esté seleccionado en ese momento. El valor predeterminado es una cadena de caracteres.

Observaciones

Para el control cuadrícula, la propiedad Value sólo estará disponible cuando el control cuadrícula tenga el enfoque.

La propiedad Value no admite el método Assign.

La propiedad Value de un control CommandGroup u OptionGroup puede usarse para determinar qué botón del grupo causó un evento. Se establece como un entero que indica qué botón del grupo causó el evento.

La propiedad Value cambia su comportamiento cuando se establece el origen de un control. Cuando se establece un origen del control, el valor de la propiedad Value de un control es el tipo de datos de la variable o campo al que hace referencia la propiedad ControlSource. Si el tipo de datos no es válido para el control, Visual FoxPro generará un error.

A continuación se muestra una lista de tipos de datos válidos:

Control | Tipos de datos permitidos
CheckBox | Integer, Logical, Numérico
ComboBox | Character, Integer, Numérico
CommandGroup | Character, Integer, Numérico
EditBox | Character, Memo
Cuadrícula | Character, Numérico
ListBox | Character, Integer, Numérico
OptionButton | Integer, Logical, Numérico
OptionGroup | Character, Integer, Numérico
Spinner | Currency, Integer, Numérico
TextBox | Cualquier tipo de datos

Vea también

Bound (Propiedad) | ListIndex (Propiedad)

Se aplica a: CheckBox | ComboBox | CommandGroup | EditBox | Grid | ListBox | OptionButton | OptionGroup | Spinner | TextBox


Version (Propiedad)

Devuelve una cadena de caracteres que contiene el número de versión de Visual FoxPro que está usando. Es de sólo lectura en tiempo de ejecución.

ApplicationObject.Version

Vea también

VERSION( )

Se aplica a: Application (Objeto) | _VFP (Variable del sistema)


VersionComments (Propiedad)

Los observaciones del proyecto.

Object.VersionComments[ = cComments]

Valores de la propiedad

cComments
Especifica los observaciones de un proyecto. El valor predeterminado es una cadena vacía.

Observaciones

La propiedad VersionComments corresponde al valor del elemento Comentarios del cuadro de diálogo Versión EXE.

Vea también

AGETFILEVERSION( ) | VersionCompany (Propiedad) | VersionCopyright (Propiedad) | VersionDescription (Propiedad) | VersionLanguage (Propiedad) | VersionNumber (Propiedad) | VersionProduct (Propiedad) | VersionTrademarks (Propiedad)

Se aplica a: Project (Objeto)


VersionCompany (Propiedad)

El nombre de la compañía del proyecto.

Object.VersionCompany[ = cCompanyName]

Valores de la propiedad

cCompanyName
Especifica la información de nombre de la organización para un proyecto. El valor predeterminado es una cadena vacía.

Observaciones

La propiedad VersionCompany corresponde al valor del elemento Nombre de organización del cuadro de diálogo Versión EXE.

Vea también

AGETFILEVERSION( ) | VersionComments (Propiedad) | VersionCopyright (Propiedad) | VersionDescription (Propiedad) | VersionLanguage (Propiedad) | VersionNumber (Propiedad) | VersionProduct (Propiedad) | VersionTrademarks (Propiedad)

Se aplica a: Project (Objeto)


VersionCopyright (Propiedad)

La información de copyright del proyecto.

Object.VersionCopyright[ = cCopyRight]

Valores de la propiedad

cCopyRight
Especifica la información de copyright para un proyecto. El valor predeterminado es una cadena vacía.

Observaciones

La propiedad VersionCopyRight corresponde al valor del elemento Copyright legal del cuadro de diálogo Versión EXE.

Vea también

AGETFILEVERSION( ) | VersionComments (Propiedad) | VersionCompany (Propiedad) | VersionDescription (Propiedad) | VersionLanguage (Propiedad) | VersionNumber (Propiedad) | VersionProduct (Propiedad) | VersionTrademarks (Propiedad)

Se aplica a: Project (Objeto)


VersionDescription (Propiedad)

La descripción del proyecto.

Object.VersionDescription[ = cDescription]

Valores de la propiedad

cDescription
Especifica la descripción de un proyecto. El valor predeterminado es una cadena vacía.

Observaciones

La propiedad VersionDescription corresponde al valor del elemento Descripción del archivo del cuadro de diálogo Versión EXE.

Vea también

AGETFILEVERSION( ) | VersionComments (Propiedad) | VersionCompany (Propiedad) | VersionCopyright (Propiedad) | VersionLanguage (Propiedad) | VersionNumber (Propiedad) | VersionProduct (Propiedad) | VersionTrademarks (Propiedad)

Se aplica a: Project (Objeto)


VersionLanguage (Propiedad)

La información de idioma del proyecto.

Object.VersionLanguage[ = nLanguage]

Valores de la propiedad

nLanguage
Especifica el Id. de idioma de un proyecto. FOXPRO.H contiene una lista de valores de Id. primarios y secundarios de idiomas que se pueden combinar para crear un Id. de idioma válido. Por ejemplo, el siguiente código asigna a VersionLanguage el valor Inglés Estados Unidos (0x09 especifica Inglés, 0x0400 especifica Inglés Estados Unidos) para el proyecto actual:
Application.ActiveProject.VersionLanguage = 0x09 + 0x0400

Observaciones

La propiedad VersionLanguage corresponde al valor del elemento Id. de idioma del cuadro de diálogo Versión EXE.

Vea también

AGETFILEVERSION( ) | VersionComments (Propiedad) | VersionCompany (Propiedad) | VersionCopyright (Propiedad) | VersionDescription (Propiedad) | VersionNumber (Propiedad) | VersionProduct (Propiedad) | VersionTrademarks (Propiedad)

Se aplica a: Project (Objeto)


VersionNumber (Propiedad)

El número de versión de compilación del proyecto.

Object.VersionNumber[ = cBuildNumber]

Valores de la propiedad

cBuildNumber
Especifica un número de versión de compilación de un proyecto. El formato estándar del número de versión de compilación de un proyecto es "MMMM.mmmm.bbbb", donde MMMM es el número de versión de compilación principal, mmmm es el número de versión de compilación secundario y bbbb es el número de versión de compilación. Separe los componentes del número de versión de compilación de un proyecto con un punto (.). Cada número de versión de compilación puede contener de cero a cuatro dígitos. No utilice letras en el número de versión de compilación. Puede especificar el valor “..” en cBuildNumber para restablecer en cero tanto el número secundario de versión de compilación como el número de versión de compilación.

Si la propiedad AutoIncrement tiene el valor verdadero (.T.) y genera un archivo ejecutable (.exe) o una biblioteca de vínculos dinámicos (.dll) a partir del proyecto, se quitarán los ceros a la izquierda de la última parte (“.bbbb”) del número de versión de compilación.

El valor predeterminado es una cadena vacía.

Observaciones

La propiedad VersionNumber corresponde a los valores de los elementos de Version Number del cuadro de diálogo Versión EXE.

Vea también

AGETFILEVERSION( ) | VersionComments (Propiedad) | VersionCompany (Propiedad) | VersionCopyright (Propiedad) | VersionDescription (Propiedad) | VersionLanguage (Propiedad) | VersionProduct (Propiedad) | VersionTrademarks (Propiedad)

Se aplica a: Project (Objeto)


VersionProduct (Propiedad)

El nombre del producto del proyecto.

Object.VersionProduct[ = cProductName]

Valores de la propiedad

cProductName
Especifica la información de nombre de producto para un proyecto. El valor predeterminado es una cadena vacía.

Observaciones

La propiedad VersionProduct corresponde al valor del elemento Nombre del producto del cuadro de diálogo Versión EXE.

Vea también

AGETFILEVERSION( ) | VersionComments (Propiedad) | VersionCompany (Propiedad) | VersionCopyright (Propiedad) | VersionDescription (Propiedad) | VersionLanguage (Propiedad) | VersionNumber (Propiedad) | VersionTrademarks (Propiedad)

Se aplica a: Project (Objeto)


VersionTrademarks (Propiedad)

La información de marcas registradas del proyecto.

Object.VersionTrademarks[ = cTradeMarks]

Valores de la propiedad

cTradeMarks
Especifica la información de marcas comerciales de un proyecto. El valor predeterminado es una cadena vacía.

Observaciones

La propiedad VersionTrademarks corresponde al valor del elemento Marcas comerciales legales del cuadro de diálogo Versión EXE.

Vea también

AGETFILEVERSION( ) | VersionComments (Propiedad) | VersionCompany (Propiedad) | VersionCopyright (Propiedad) | VersionDescription (Propiedad) | VersionLanguage (Propiedad) | VersionNumber (Propiedad) | VersionProduct (Propiedad)

Se aplica a: Project (Objeto)


VFPXMLProgID (Propiedad)

Hace referencia a un componente COM que puede utilizarse para reemplazar la funcionalidad de las funciones internas XML CURSORTOXML( ), XMLTOCURSOR( ), y XMLUPDATEGRAM( ).

Puede crear un componente COM en Visual FoxPro, Visual C/C++, Visual Basic o cualquier herramienta de desarrollo que cree componentes COM o cualquier herramienta de desarrollo que permita crear componentes COM con la habilidad de manejar interfaces.

_VFP.VFPXMLProgID [=cValue]

Valor de la Propiedad

cValue
Especifica el valor de ProgID de la clase de componente COM cuyas funciones reemplazan la funcionalidad de las funciones XML de Visual FoxPro mencionadas. Si se establece cValue al valor predeterminado de cadena vacía (""), se reinicia a las funciones XML internas.

Observaciones

La clase debe implementar la interfaz IVFPXML desde la biblioteca tipo de Visual FoxPro. Para reemplazar los métodos, abrie el Examinador de Objetos desde el menú Herramientas. Desde la biblioteca tipo de Microsoft Visual FoxPro 8.0, arrastre la interfaz IVFPXML hacia un archivo de programa (.prg).

Ejemplo

El siguiente ejemplo crea una clase que reemplaza las funciones CURSORTOXML( ), XMLTOCURSOR( ) y XMLUPDATEGRAM( ). Crea un proyecto para estas clases y agrega el código controlador a una función XML personalizada para los tres métodos.

DEFINE CLASS MyXMLClass AS session OLEPUBLIC
IMPLEMENTS IVFPXML8 IN "VisualFoxPro.Application.8"

* Reemplaza CURSORTOXML( ).
PROCEDURE IVFPXML8_CursorToXML(bstrAlias AS STRING, ;
nOutputFormat AS Number, nFlags AS Number, ;
nRecords AS Number, bstrOutputFile AS STRING, ;
bstrSchema AS STRING, bstrSchemaLocation AS STRING, ;
bstrNameSpace AS STRING, pVFP AS VARIANT) AS VARIANT ;

HELPSTRING "Convertir de Cursor a XML"

* Agregar aquí código personalizado.
ENDPROC

* Reemplaza XMLTOCURSOR( ).
PROCEDURE IVFPXML8_XMLToCursor(pvarXMLSource AS VARIANT, ;
bstrCursorName AS STRING, nFlags AS Number, pVFP AS VARIANT) ;
AS Number HELPSTRING "Converts from XML to a Cursor"

* Agregar aquí código personalizado..
ENDPROC

* Replaces XMLUPDATEGRAM( ).
PROCEDURE IVFPXML8_XMLUpdateGram8( nFlags AS Number, ;
bstrCursorList AS STRING, pVFP AS VARIANT , ;
bstrSchemaLocation AS STRING ) AS VARIANT;
HELPSTRING "Generates an XML UpdateGram"
* Add user code here.
ENDPROC

* Incluido por compatibilidad con
* versiones anteriores de esta interfaz.
PROCEDURE IVFPXML8_XMLUpdateGram(nFlags AS Number, ;
bstrCursorList AS STRING, pVFP AS VARIANT) AS VARIANT;
HELPSTRING "Generates an XML UpdateGram"
* Agregar aquí código personalizado..
ENDPROC

ENDDEFINE

Cuando termine, genere una biblioteca de vínculos dinámica (.dll) o archivo ejecutable (.exe) desde el proyecto. Cambie la propiedad VFPXMLProgID al ProgID correcto para la clase. Por ejemplo, si el nombre del proyecto es MyXMLProj, debe cambiar VFPXMLProgID utilizando la siguiente línea de código:

_VFP.VFPXMLProgID = "MyXMLProj.MyXMLClass"

Con el cambio de _VFP VFPXMLProgID a un ProgID específico, las llamadas a CURSORTOXML( ), XMLTOCURSOR( ) o XMLUPDATEGRAM( ) son redireccionadas al método correspondiente en la clase especificada por este ProgID. Una referencia a _VFP es también pasada al método, lo que permite acceder y manipular los cursores de datos y variables de memoria. Para mayor información, vea _VFP (Variable del sistema: propiedades, métodos y eventos).

Versiones anteriores a Visual FoxPro 8.0, XMLUPDATEGRAM( ) no soportan el parámetro cSchemaLocation; por lo tanto, la interfaz era diferente. Visual FoxPro soporta ambas interfaces y busca primero para la interfaz actual. Si no tiene éxito, Visual FoxPro busca para versiones anteriores.

El siguiente es un ejemplo de definición de clase para una interfaz anterior sin el parámetro cSchemaLocation:

DEFINE CLASS MyXMLClass AS session OLEPUBLIC
IMPLEMENTS IVFPXML IN "VisualFoxPro.Application.8"

* Reemplaza CURSORTOXML( ).
PROCEDURE IVFPXML_CursorToXML(bstrAlias AS STRING, ;
nOutputFormat AS Number, nFlags AS Number, ;
nRecords AS Number, bstrOutputFile AS STRING, ;
bstrSchema AS STRING, bstrSchemaLocation AS STRING, ;
bstrNameSpace AS STRING, pVFP AS VARIANT) AS VARIANT ;
HELPSTRING "Convierte de Cursor a XML"
* Agregar código de usuario.
ENDPROC

* Reemplaza XMLTOCURSOR( ).
PROCEDURE IVFPXML_XMLToCursor(pvarXMLSource AS VARIANT, ;
bstrCursorName AS STRING, nFlags AS Number, pVFP AS VARIANT) ;
AS Number HELPSTRING "Converts from XML to a Cursor"
* Agregar código de usuario.
ENDPROC

* Reemplaza XMLUPDATEGRAM( ).
PROCEDURE IVFPXML_XMLUpdateGram(nFlags AS Number, ;
bstrCursorList AS STRING, pVFP AS VARIANT) AS VARIANT;
HELPSTRING "Genera un XML UpdateGram"

* Agregar código de usuario.
ENDPROC

ENDDEFINE

Vea también

_VFP (Variable del sistema) | Ver información de bibliotecas de tipos | XML Funciones | CURSORTOXML( ) (Función) | XMLTOCURSOR( ) | XMLUPDATEGRAM( )


View (Propiedad)

Especifica el tipo de vista para un control cuadrícula. Disponible en tiempo de diseño; es de lectura y escritura en tiempo de ejecución.

Grid.View[ = nType]

Valores de la propiedad

nType
Si los paneles no se dividen (la propiedad Partition está establecida en 0), los valores para la propiedad View son:
Valor | Descripción
0 | Examinar
1 | Cambiar

Si los paneles se dividen, los valores para la propiedad View son:

Valor | Descripción
0 | Examinar (panel izquierdo), Examinar (panel derecho)
1 | Examinar (panel izquierdo), Cambiar (panel derecho)
2 | Cambiar (panel izquierdo), Examinar (panel derecho)
3 | Cambiar (panel izquierdo), Cambiar (panel derecho)

Vea también

Panel (Propiedad) | PanelLink (Propiedad) | Partition (Propiedad)

Se aplica a: Grid


ViewPortHeight (Propiedad)

Contiene el alto de la vista de un formulario. Es de sólo lectura en tiempo de diseño y en tiempo de ejecución.

Object.ViewPortHeight

Observaciones

El área de visualización es el área rectangular de un formulario que se muestra en el contenedor del formulario. El contenedor del formulario controla el tamaño del área de visualización. Si cambia el tamaño del contenedor de un formulario, también cambia el tamaño del área de visualización.

La unidad de medida del alto del área de visualización está determinada por el valor de la propiedad ScaleMode del formulario: píxeles (valor predeterminado) o fóxeles.

Vea también

ScaleMode (Propiedad) | SetViewPort (Método) | ViewPortLeft (Propiedad) | ViewPortTop (Propiedad) | ViewPortWidth (Propiedad)

Se aplica a: Form (Objeto)


ViewPortLeft (Propiedad)

Contiene la coordenada izquierda del formulario visible en el área de visualización. Es de sólo lectura en tiempo de diseño y en tiempo de ejecución.

Object.ViewPortLeft

Observaciones

El área de visualización es el área rectangular de un formulario que se muestra en el contenedor del formulario. El contenedor del formulario controla el tamaño del área de visualización. Si cambia el tamaño del contenedor de un formulario, también cambia el tamaño del área de visualización.

La unidad de medida para la coordenada izquierda del formulario está determinada por la propiedad ScaleMode estableciendo – pixels (predeterminado) o foxels.

Vea también

ScaleMode (Propiedad) | SetViewPort (Método) | ViewPortHeight (Propiedad) | ViewPortTop (Propiedad) | ViewPortWidth (Propiedad)

Se aplica a: Form (Objeto)


ViewPortTop (Propiedad)

Contiene la coordenada superior del formulario visible en el área de visualización. Es de sólo lectura en tiempo de diseño y en tiempo de ejecución.

Object.ViewPortTop

Observaciones

El área de visualización es el área rectangular de un formulario que se muestra en el contenedor del formulario. El contenedor del formulario controla el tamaño del área de visualización. Si cambia el tamaño del contenedor de un formulario, también cambia el tamaño del área de visualización.

La unidad de medida para la coordenada izquierda del formulario está determinada por la propiedad ScaleMode estableciendo – pixels (predeterminado) o foxels.

Vea también

ScaleMode (Propiedad) | SetViewPort (Método) | ViewPortHeight (Propiedad) | ViewPortLeft (Propiedad) | ViewPortWidth (Propiedad)

Se aplica a: Form (Objeto)


ViewPortWidth (Propiedad)

Contiene el ancho del área de visualización de un formulario. Es de sólo lectura en tiempo de diseño y en tiempo de ejecución.

Object.ViewPortWidth

Observaciones

El área de visualización es el área rectangular de un formulario que se muestra en el contenedor del formulario. El contenedor del formulario controla el tamaño del área de visualización. Si cambia el tamaño del contenedor de un formulario, también cambia el tamaño del área de visualización.

La unidad de medida para la coordenada izquierda del formulario está determinada por la propiedad ScaleMode estableciendo – pixels (predeterminado) o foxels.

Vea también

ScaleMode (Propiedad) | SetViewPort (Método) | ViewPortHeight (Propiedad) | ViewPortLeft (Propiedad) | ViewPortTop (Propiedad)

Se aplica a: Form (Objeto)


Visible (Propiedad)

Especifica si un objeto está visible u oculto. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.Visible[ = lExpr]

Valores de la propiedad

lExpr
Los valores para la propiedad Visible son:
Valor | Descripción
Verdadero (.T.) | El valor predeterminado en el Diseñador de formularios. El objeto es visible.
Falso (.F.) | El valor predeterminado en el código del programa. El objeto está oculto.

Observaciones

Establecer la propiedad Visible para la variable del sistema _SCREEN en versiones de Visual FoxPro para Windows anteriores a la versión 5 no tiene ningún efecto.

Aunque el objeto esté oculto, puede tener acceso al mismo en el código.

Para ocultar un objeto al iniciar, establezca la propiedad Visible en falso (.F.) en tiempo de diseño. Si en el código establece la propiedad Visible , puede ocultar un objeto y mostrarlo en tiempo de ejecución en respuesta a un evento particular.

Cuando la propiedad Visible de un objeto Form está establecida en falso (.F.), el formulario se oculta y se activa el último conjunto de formularios, formulario u objeto activo. Cuando la propiedad Visible de un formulario se establece en el valor verdadero (.T.), el formulario se hace visible. Establecer la propiedad Visible de un formulario en el valor verdadero (.T.) no afecta a la configuración de la propiedad Order del formulario. El formulario no se vuelve activo cuando Visible es verdadero (.T.). Use el método Show para activar un formulario y hacerlo visible en el mismo paso.

Nota Si la propiedad Visible de un formulario se establece en el valor falso (.F.), el formulario no aparecerá en pantalla, aunque la propiedad Visible del conjunto de formularios tenga el valor verdadero (.T.). Sin embargo, si la propiedad Visible de un conjunto de formularios está establecida en el valor falso (.F.), se ocultarán todos los formularios contenidos en el conjunto.

Ejemplo

El ejemplo siguiente muestra cómo se utiliza la propiedad Visible para mostrar controles después de agregarlos a un formulario con el método AddObject.

El método AddObject se usa para agregar un control Line y tres botones de comando al formulario. La propiedad Visible se establece en el valor verdadero (.T.) para el control Line y los botones de comando, y los muestra en el formulario. La propiedad Visible también se usa para ocultar el control Line antes de cambiar su dirección de inclinación y para mostrar el control Line una vez cambiada dicha dirección.

frmMyForm = CREATEOBJECT('Form')  && Crea un formulario
frmMyForm.Closable = .F.  && Desactiva  el menú emergente de la ventana
frmMyForm.AddObject('shpLine','Line')  && Agrega un control Line al formulario
frmMyForm.AddObject('cmdCmndBtn1','cmdMyCmndBtn1')  && Botón de commando Arriba
frmMyForm.AddObject('cmdCmndBtn2','cmdMyCmndBtn2')  && Botón de commando Abajo
frmMyForm.AddObject('cmdCmndBtn3','cmdMyCmndBtn3')  && Botón de commando Salir
frmMyForm.shpLine.Visible = .T.  && Hace visible el control Line
frmMyForm.shpLine.Top = 20  && Especifica la fila para el control Line
frmMyForm.shpLine.Left = 125  && Especifica la columna para el control Line
frmMyForm.cmdCmndBtn1.Visible =.T.  && Botón de commando Arriba visible
frmMyForm.cmdCmndBtn2.Visible =.T.  && Botón de commando Abajo visible
frmMyForm.cmdCmndBtn3.Visible =.T.  && Botón de commando Salir visible
frmMyForm.SHOW  && Muestra el formulario
READ EVENTS     && Inicia el proceso de eventos
DEFINE CLASS cmdMyCmndBtn1 AS COMMANDBUTTON  && Crea el botón de comandos
Caption = 'Inclinar \<Arriba'  && Título del botón de comandos
Left = 50  && Columna del botón de comandos
Top = 100  && Fila del botón de comandos
Height = 25  && Altura del botón de comandos
PROCEDURE Click
ThisForm.shpLine.Visible = .F.  && Oculta el control Line
ThisForm.shpLine.LineSlant ='/'  && Inclina hacia arriba
ThisForm.shpLine.Visible = .T.  && Muestra el control Line
ENDDEFINE
DEFINE CLASS cmdMyCmndBtn2 AS CommandButton  && Crea el botón de comandos
Caption = 'Inclinar \<Abajo'  && Título del botón de comandos
Left = 200  && Columna del botón de comandos
Top = 100  && Fila del botón de comandos
Height = 25  && Altura del botón de comandos
PROCEDURE Click
ThisForm.shpLine.Visible = .F.  && Oculta el control Line
ThisForm.shpLine.LineSlant ='\'  && Inclina hacia abajo
ThisForm.shpLine.Visible = .T.  && Muestra el control Line
ENDDEFINE
DEFINE CLASS cmdMyCmndBtn3 AS CommandButton  && Crea el botón de comandos
Caption = '\<Quit'  && Título del botón de comandos
Cancel = .T.  && Predetermina el botón para Cancelar (Esc)
Left = 125  && Columna del botón de comandos
Top = 150  && Fila del botón de comandos
Height = 25  && Altura del botón de comandos
PROCEDURE Click
CLEAR EVENTS  && Detiene el proceso de eventos, cierra el formulario
ENDDEFINE

Vea también

Show (Método) | ZOrder (Método)

Se aplica a: CheckBox | Column | ComboBox | CommandButton | CommandGroup | Container (Objeto) | Control (Objeto) | EditBox | Form | FormSet | Grid | Image | Label | Line | ListBox | OLE Bound (Control) | OLE Container (Control) | OptionButton | OptionGroup | PageFrame | Project (Objeto) | _SCREEN | Shape | Spinner | TextBox | ToolBar


VisualEffect (Propiedad)

Permite aplicar mediante programación comportamientos de SpecialEffect a los botones de comandos de Visual FoxPro. Sólo está disponible en tiempo de ejecución.

CommandButton.VisualEffect[ = nValue]

Valores de la propiedad

nValue
Especifica la configuración de formato de un control de acuerdo con la tabla siguiente:
Valor | Descripción
0 | Ninguno. No cambia el efecto visual.
1 | En relieve. Proporciona una efecto visual de relieve similar a la activación con el ratón, con SpecialEffect=2 (Seguimiento activo).
2 | Presionado. Muestra el efecto visual de botón hundido similar al producido al hacer clic con el ratón en el botón comando.

Observaciones

Como el valor VisualEffect (1) de Raised está en conflicto con el valor SpecialEffect de 3D, se omitirá el valor 1 deVisualEffect si SpecialEffect = 0 .

Vea también

SpecialEffect (Propiedad) | OLEDropEffects (Propiedad) | Crear efectos en un control Coolbar (Ejemplo)

Se aplica a: Botón de comando


VScrollSmallChange (Propiedad)

Especifica la cantidad de desplazamiento vertical de un formulario al hacer clic en una flecha de desplazamiento. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.VScrollSmallChange[ = nExpression]

Valores de la propiedad

nExpression
Especifica el incremento de desplazamiento vertical. La unidad de medida se determina con los valores de la propiedad Scalemode. El incremento predeterminado es de 10 píxeles cuando la propiedad Scalemode está establecida en 3 - Píxeles.

Vea también

HScrollSmallChange (Propiedad) | ScaleMode (Propiedad) | ScrollBars (Propiedad)

Se aplica a: Form


WhatsThisButton (Propiedad)

Especifica si el botón ¿Qué es esto? aparecerá o no en la barra de título de un formulario. Es de sólo lectura en tiempo de ejecución.

Form.WhatsThisButton[ = lExpr]

Valores de la propiedad

lExpr
Uno de los valores siguientes:
Valor | Descripción
Verdadero (.T.) | Activa la presentación del botón ¿Qué es esto?.
Falso (.F.) | (Predeterminado) Desactiva la presentación del botón ¿Qué es esto?.

Observaciones

El botón ¿Qué es esto? no aparecerá en la barra de título del formulario si la propiedad WhatsThisButton está establecida en verdadero (.T.) y si una de las siguientes afirmaciones se cumple:

  • La propiedad de formulario WhatsThisHelp está establecida en falso (.F).
  • La propiedad de formulario BorderStyle está establecida en 0 (Ninguno).
  • La propiedad de formulario MinButton está establecida en verdadero (.T.).
  • La propiedad de formulario MaxButton está establecida en verdadero (.T.).

Vea también

BorderStyle (Propiedad) | MaxButton (Propiedad) | MinButton (Propiedad) | ShowWhatsThis (Método) | TitleBar (Propiedad) | WhatsThisMode (Método) | WhatsThisHelp (Propiedad) | WhatsThisHelpID (Propiedad)

Se aplica a: Form


WhatsThisHelp (Propiedad)

Especifica si la Ayuda sensible al contexto utiliza la Ayuda ¿Qué es esto? o el archivo de Ayuda de Windows especificado con SET HELP.

Form.WhatsThisHelp[ = lExpr]

Valores de la propiedad

lExpr
Uno de los valores siguientes:
Valor | Descripción
Verdadero (.T.) | El formulario utiliza una de las tres técnicas de la Ayuda ¿Qué es esto? para abrir el archivo de Ayuda de Windows especificado con SET HELP y mostrar el tema elegido con la propiedad WhatsThisHelpID.
Falso (.F.) | (Predeterminado) El formulario utiliza la tecla F1 para abrir el archivo de Ayuda de Windows especificado con SET HELP. Muestra el tema de Ayuda especificado con la propiedad HelpContextID.

Observaciones

Las tres técnicas de la Ayuda ¿Qué es esto? son:

  1. Se muestra un botón ¿Qué es esto? en la barra de título del formulario. Al hacer clic en este botón, el puntero del ratón se transforma en una flecha con un signo de interrogación. El tema de la Ayuda que aparece al hacer clic en un control se especifica con la propiedad WhatsThisHelpID del control.
  2. Se invoca el método WhatsThisMode, lo que transforma el puntero del ratón en una flecha con un signo de interrogación. El tema de la Ayuda que aparece al hacer clic en un control se especifica con la propiedad WhatsThisHelpID del control.
  3. Se invoca el método ShowWhatsThis para un control. El tema de la Ayuda que aparece se especifica con la propiedad WhatsThisHelpID del control.

Si la Ayuda es un archivo de HTML Help (por ejemplo, Foxhelp.chm), el tema de Ayuda se mostrará en el visor de HTML Help. Si la Ayuda es un archivo de Ayuda de Windows (por ejemplo, Foxhelp.hlp), el tema de Ayuda se mostrará en una pequeña ventana emergente junto al control.

Vea también

HelpContextID (Propiedad) | SET HELP | ShowWhatsThis (Método) | WhatsThisButton (Propiedad) | WhatsThisMode (Método) | WhatsThisHelpID (Propiedad)

Se aplica a: Form


WhatsThisHelpID (Propiedad)

Especifica un Id. de contexto de un tema de Ayuda para proporcionar Ayuda ¿Qué es esto? para un objeto. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.WhatsThisHelpID[ = nContextID]

Valores de la propiedad

nContextID
Especifica el número de Id. de contexto de un tema en un archivo de Ayuda. nContextID puede ser negativo, cero o positivo. En la siguiente tabla se muestran los valores de nContextID y lo que aparecerá en pantalla cuando se haga clic en el objeto con el puntero del ratón que representa un signo de interrogación:
nContextID | Descripción
Negativo | (Predeterminado, –1) Muestra el menú contextual de la Ayuda ¿Qué es esto? con el mensaje "No hay ningún tema de Ayuda asociado a este elemento".
Cero | Visual FoxPro buscará, en dirección ascendente por la jerarquía del objeto, el primer objeto con un valor positivo de la propiedad WhatsThisHelpID. Si encuentra un objeto con un valor positivo para la propiedad WhatsThisHelpID, se mostrará el tema de Ayuda ¿Qué es esto?. Si no se encuentra ningún objeto con un valor positivo para la propiedad WhatsThisHelpID, no se mostrará ningún tema de Ayuda ¿Qué es esto?.
Positivo | Muestra el tema de Ayuda ¿Qué es esto? correspondiente al Id. de contexto especificado con nContextID. Si ningún tema de Ayuda tiene el Id. de contexto especificado con nContextID, aparecerá la Ayuda ¿Qué es esto? con el mensaje "No hay ningún tema de Ayuda asociado a este elemento".

Vea también

HelpContextID (Propiedad) | SET HELP | ShowWhatsThis (Método) | WhatsThisButton (Propiedad) | WhatsThisHelp (Propiedad) | WhatsThisMode (Método)

Se aplica a: CheckBox | ComboBox | CommandButton | CommandGroup | Container (Objeto) | Control (Objeto) | EditBox | Form | Grid | Header | Image | Label | Line | ListBox | OLE Bound (Control) | OLE Container (Control) | OptionButton | OptionGroup | Shape | Spinner | TextBox | Timer | ToolBar


WhereType (Propiedad)

Especifica, los campos para la cláusula WHERE cuando se usa para actualizar tablas. Cuando trabaje esta propiedad con cursores normales, utilice las funciones CURSORSETPROP( ) y CURSORGETPROP( ). De lectura/escritura.

Nota Cuando WhereType, está establecida en un objeto CursorAdapter, se sobrescribe la configuración de la propiedad del cursor, cuando se realiza el enlace al objeto CursorAdapter. De tal manera, que cambiar la configuración del cursor usando CURSORSETPROP() no tiene efecto.
CursorAdapter.WhereType [= nValue]

Valores de la propiedad

nValue
Tipo de dato numérico. En la siguiente tabla se listan los valores para nValue.
nValue | Descripción
1 o DB_KEY (desde FOXPRO.H) | Incluye sólo los campos primarios especificados por la propiedad KeyFieldList.
2 o DB_KEYANDUPDATABLE (desde FOXPRO.H) | Incluye los campos primarios especificados por la propiedad KeyFieldList y cualquier campo actualizable.
3 o DB_KEYANDMODIFIED (desde FOXPRO.H) | Incluye los campos primarios especificados por la propiedad KeyFieldList y otros campos modificados.
4 o DB_KEYANDTIMESTAMP (desde FOXPRO.H) | Incluye los campos primarios especificados por la propiedad KeyFieldList y una comparación de la marca de tiempo.

Observaciones

Para forzar las operaciones de actualización y borrado, CursorAdapter utiliza el valor de 1 para la propiedad WhereType de CursorAdapter independientemente de su valor actual. De otro modo, CursorAdapter respeta la configuración del usuario para WhereType.

Vea también

Propiedades | CursorAdapter (Objeto: propiedades, métodos y eventos) | CURSORGETPROP( ) (Función) | CURSORSETPROP( ) (Función) | KeyFieldList (Propiedad)

Se aplica a: CursorAdapter (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


Width (Propiedad)

Especifica el ancho de un objeto. Está disponible en tiempo de diseño y en tiempo de ejecución.

 [Object.]Width[ = nWidth]

Valores de la propiedad

nWidth
Especifica el ancho de un objeto.

Observaciones

Use las propiedades Height, Width, Left y Top para operaciones o cálculos basados en el área total de un objeto, como el cambio de tamaño o el movimiento de un objeto.

Para los formularios y los controles, los valores de esta propiedad cambian según el cambio de tamaño del objeto que realice el usuario o el código. La configuración máxima de esta propiedad para todos los objetos depende del sistema.

Para los formularios, la propiedad Width especifica el ancho externo del formulario, sin los bordes. Si la propiedad ScrollBars está establecida como activar las barras de desplazamiento (enable scroll bars), Width no incluye el espacio que ocupan las barras de desplazamiento cuando aparecen.

Para los controles, la propiedad Width se mide desde el centro del borde del control, de manera que los controles con anchos de borde diferentes se alineen correctamente.

Nota La propiedad Width es de sólo lectura cuando se aplica a un control contenido en un objeto Column.

La propiedad Width se determina en la unidad de medida especificada por el valor de la propiedad ScaleMode.

Vea también

Height (Propiedad) | Left (Propiedad) | Move (Método) | ScaleMode (Propiedad) | Top (Propiedad)

Se aplica a: CheckBox | Column | ComboBox | CommandButton | CommandGroup | Container (Objeto) | Control (Objeto) | Custom | EditBox | Form | Grid | Image | Label | Line | ListBox | OLE Bound (Control) | OLE Container (Control) | OptionButton | OptionGroup | PageFrame | _SCREEN | Shape | Spinner | TextBox | Timer | ToolBar


WindowList (Propiedad)

Se incluye por compatibilidad con versiones anteriores de READ. Utilice el Diseñador de formularios en lugar de READ.


WindowState (Propiedad)

Especifica si una ventana de formulario se muestra maximizada, minimizada o normal en tiempo de ejecución. Está disponible en tiempo de diseño y en tiempo de ejecución.

 [Object.]WindowState[ = nState]

Valores de la propiedad

nState
Los valores para la propiedad WindowState son los siguientes:
Valor | Descripción
0 | Normal
1 | Minimizada (reducida a un icono). Si se minimiza la ventana principal de Visual FoxPro al salir de Visual FoxPro, no se mostrará esta ventana antes de salir de la aplicación. Si su aplicación muestra un cuadro de diálogo antes de salir, no olvide establecer _SCREEN.WindowState en 0 antes de mostrar el diálogo en pantalla.
2 | Maximizada (aumentada hasta llenar la pantalla).

Vea también

Height (Propiedad) | Left (Propiedad) | Top (Propiedad) | Width (Propiedad)

Se aplica a: Form | _SCREEN


WindowType (Propiedad)

Especifica cómo se comporta un conjunto de formularios o un formulario cuando se muestra o se ejecuta con DO FORM. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.WindowType[ = nType]

Valores de la propiedad

nType
Para un objeto FormSet, los valores para la propiedad WindowType son los siguientes:
Valor | Descripción
0 | No modal.
1 | Modal. No se puede activar ningún otro formulario; el menú puede estar activo. Todos los formularios del conjunto de formularios están activos.
2 | Lectura. El conjunto de formularios se comporta como si se hubiera activado con el comando READ. La ejecución se para en el método Show o en el comando DO FORM. Cuando el Form se desactiva, la ejecución continúa. (Se incluye por compatibilidad con versiones anteriores y sólo está disponible para formularios convertidos de versiones anteriores de FoxPro.)
3 | Lectura modal. El conjunto de formularios se comporta como si estuviera activado por una cláusula MODAL de un comando READ. La ejecución del programa se para en el método Show o en el comando DO FORM. Todos los formularios especificados en la propiedad WindowList están disponibles, pero otros formularios y el menú no lo están. (Se incluye por compatibilidad con versiones anteriores y sólo está disponible para formularios convertidos de versiones anteriores de FoxPro.)

Para un formulario, los valores de la propiedad WindowType son:

Valor | Descripción
0 | No modal.
1 | Modal. No se puede activar ningún otro formulario; el menú está inactivo. Todos los formularios del conjunto de formularios están activos.

Observaciones

No puede cambiar la configuración de WindowType una vez que aparezca la ventana.

El método Show toma un parámetro que puede sobrescribir la configuración de la propiedad WindowType.

Nota La configuración de la propiedad WindowType de un conjunto de formularios sobrescribe la configuración individual de WindowType de los formularios que contiene. Por ejemplo, si la propiedad WindowType está establecida en 0 para un conjunto de formularios, todos los formularios contenidos en él carecerán de modo, cualquiera que sea la configuración de su propiedad WindowType individual.

Vea también

DO FORM | READ | READ EVENTS | Show (Método) | WindowList (Propiedad)

Se aplica a: Form | FormSet | _SCREEN


WordWrap (Propiedad)

Especifica si un control Label se expande vertical u horizontalmente para dar cabida al texto especificado con su propiedad Caption cuando se cambia el tamaño del control. Esta disponible en tiempo de diseño y en tiempo de ejecución.

 [Form.]Label.WordWrap[ = lExpr]

O bien:

Especifica si el texto de un encabezado de columna de cuadrícula se ajusta a la línea siguiente al llegar al límite de la columna. Esta disponible en tiempo de diseño y en tiempo de ejecución.

 Grid.Column.Header.WordWrap[ = lExpr]

Valores de la propiedad

lExpr
Los valores de la propiedad WordWrap de las etiquetas son los siguientes:
Valor | Descripción
Verdadero (.T.) | El texto se ajusta y la etiqueta se expande o se contrae verticalmente para dar cabida al texto y al tamaño de la fuente. El tamaño horizontal no cambia.
Falso (.F.) | (Valor predeterminado) El texto no se ajusta y la etiqueta se expande o se contrae horizontalmente para dar cabida a la longitud del texto, y verticalmente para dar cabida al tamaño de la fuente y el número de líneas. El tamaño vertical no cambia.

Los valores de la propiedad WordWrap de los encabezados de columna de cuadrícula son los siguientes:

Valor | Descripción
Verdadero (.T.) | Se ajusta el texto, pero el encabezado de columna de cuadrícula no se expande para adaptarse al texto y al tamaño de la fuente. Para cambiar el alto del encabezado, utilice la propiedad Grid.HeaderHeight.
Falso (.F.) | (Predeterminado) No se ajusta el texto.
Nota La alineación de texto en el encabezado de cuadrícula esta determinada por el valor de la propiedad Header Alignment. El texto se justifica y se centra para los valores 2 - Middle Center, 6 - Top Center, y 9 - Bottom Center.

Observaciones

Utilice esta propiedad para determinar como muestra una etiqueta su contenido. Por ejemplo, un gráfico que cambia dinámicamente podría tener una etiqueta con texto que también cambie. Para mantener un tamaño horizontal constante para la etiqueta y permitir el aumento o disminución del texto, puede establecer la propiedad WordWrap como verdadero (.T.).

Si desea que una etiqueta se expanda solo horizontalmente, establezca WordWrap como falso (.F.). Si no quiere que la etiqueta cambie de tamaño, establezca AutoSize como falso (.F.).

Vea también

AutoSize (Propiedad) | Caption (Propiedad)

Se aplica a: Header | Label


WrapCharInCDATA (Propiedad)

Especifica si ajustar (encapsular) campos de caracteres en secciones CDATA.

WrapCharInCDATA se aplica sólo cuando se ejecutan los siguiente métodos:

  • LoadXML
  • Attach
  • AddTableSchema
XMLAdapter.WrapCharInCDATA [= lValue]

Valores de la propiedad

lValue
Dato tipo Lógico. En la siguiente tabla se listan los valores para lValue.
lValue | Descripción
Falso (.F.) | No ajusta los campos de caracteres en secciones CDATA. (Predefinido)
Verdadero (.T.) | Ajusta los campos de caracteres en secciones CDATA.

Observaciones

Los métodos LoadXML, Attach, y AddTableSchema de XMLAdapter utilizan WrapCharInCDATA para establecer la propiedad WrapInCDATA de XMLField para campos Carácter.

Vea también

Propiedades | XMLAdapter (Objeto: propiedades, métodos y eventos) | XMLField (Clase) | WrapCharInCDATA (Propiedad) | WrapInCDATA (Propiedad)

Se aplica a: XMLAdapter (Clase)


WrapInCDATA (Propiedad)

Especifica si el campo se ajusta en secciones CDATA.

WrapInCDATA sólo se aplica a campos Carácter, Carácter (Binary), Memo, o Memo (Binary) y cuando se ejecuta el método ToXML de XMLAdapter, el cual crea XML consistente con su configuración.

XMLField.WrapInCDATA [= lValue]

Valores de la propiedad

Dato tipo Lógico. El valor de WrapInCDATA está predefinido con el valor apropiado de las propiedades WrapMemoInCDATA o WrapCharInCDATA de XMLAdapter. En la siguiente tabla se listan los valores para lValue.

lValue | Descripción
Verdadero (.T.) | El campo se ajusta en secciones CDATA.
Falso (.F.) | El campo no se ajusta en secciones CDATA.

Vea también

Propiedades | XMLField (Objeto: propiedades, métodos y eventos) | Tipos de datos y campos de Visual FoxPro | ToXML (Método) | WrapMemoInCDATA (Propiedad) | WrapCharInCDATA (Propiedad)

Se aplica a: XMLField (Clase)


WrapMemoInCDATA (Propiedad)

Especifica si ajusta (encapsula) el campo Memo en secciones CDATA.

WrapMemoInCDATA se aplica sólo cuando ejecute los siguientes métodos de XMLAdapter:

  • LoadXML
  • Attach
  • AddTableSchema
XMLAdapter.WrapMemoInCDATA [= lValue]

Valores de propiedad

lValue
Dato tipo Lógico. En la siguiente tabla se listan los valores para lValue.
lValue | Descripción
Falso (.F.) | No ajusta los campos Memo en secciones CDATA. (Predefinido)
Verdadero (.T.) | Ajusta los campos Memo en secciones CDATA.

Observaciones

Los métodos LoadXML, Attach, y AddTableSchema de XMLAdapter utilizan WrapMemoInCDATA para establecer la propiedad XMLField WrapInCDATA para campos Memo.

Vea también

Propiedades | XMLAdapter (Objeto: propiedades, métodos y eventos) | XMLField (Clase) | WrapMemoInCDATA (Propiedad) | WrapInCDATA (Propiedad)

Se aplica a: XMLAdapter (Clase)


XMLAdapter (Propiedad)

Contiene una referencia de objeto a un objeto XMLAdapter solamente cuando la colección Tables de XMLAdapter contiene el objeto XMLTable.

XMLTable.XMLAdapter

Valores de la propiedad

Referencia de objeto. XMLAdapter contiene una de las siguientes:

  • Una referencia de objeto a un objeto XMLAdapter cuya colección Tables contiene el objeto XMLTable
  • Null (.NULL.) bajo las siguientes condiciones:
    • Crea el objeto XMLTable por si mismo, ni contenido por un objeto XMLAdapter ni como secundario de otro objeto XMLTable.
    • Cuando el objeto XMLTable está contenido por otro objeto XMLTable. La propiedad ParentTable contiene una referencia de objeto al objeto XMLTable primario.

Vea también

Propiedades | XMLTable (Objeto: propiedades, métodos, eventos) | XMLAdapter (Clase) | Tables (XMLAdapter) (Colección) | ParentTable (Propiedad)

Se aplica a: XMLTable (Clase)


XMLConstraints (Propiedad)

Contiene una referencia objeto al ISchemaItemCollection (objeto) después de una ejecución exitosa del método XMLAdapter LoadXML o del método Attach.

Si los métodos LoadXML y Attach analizan el esquema XML, establecen XMLConstraints en el valor apropiado, aunque Visual FoxPro no analiza ni fuerza ninguna restricción declarada en la colección XMLConstraints.

Objeto.XMLConstraints

Valores de la propiedad

Referencia a objeto XMLConstraints contiene una referencia objeto al ISchemaItemCollection (objeto) o un valor nulo (NULL) cuando no está definida.

Observaciones

El esquema XML puede contener restricciones, las que están asociadas con el esquema. XMLConstraints proporciona un acceso a las restricciones definidas dentro del elemento DataSet.

Visual FoxPro no incluye ninguna funcionalidad en XMLAdapter que use estas restricciones, pero proporciona el acceso de forma que se pueda obtener información de las restricciones y usarlas en la aplicación si fuera necesario.

En el siguiente ejemplo XML, notar la ubicación de la restricción de la clave primaria:

<?xml version="1.0" encoding="Windows-1252"?>
<DataSet xmlns="http://tempuri.org/">
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="NewDataSet" msdata:IsDataSet="true">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="Tbl2">
<xs:complexType>
<xs:sequence>
<xs:element name="source"/>
<xs:element name="num" type="xs:int"/>
<xs:element name="xdtime" type="xs:dateTime"/>
<xs:element name="xlog" type="xs:boolean"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
<xs:unique name="Constraint1" msdata:PrimaryKey="true">
<xs:selector xpath=".//Tbl2"/>
<xs:field xpath="source"/>
</xs:unique>
</xs:element>
</xs:schema>
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<NewDataSet xmlns="">
<Tbl2 diffgr:id="Tbl21" msdata:rowOrder="0">
<source>Buckner             </source>
<num>9</num>
<xdtime>2002-04-03T00:00:00.0000000-08:00</xdtime>
<xlog>true</xlog>
</Tbl2>
</NewDataSet>
</diffgr:diffgram>
</DataSet>

Vea también

Propiedades | XMLAdapter (Objeto: propiedades, métodos y eventos) | XMLTable (Objeto: propiedades, métodos, eventos) | LoadXML (método) | Attach (método)

Se aplica a: XMLAdapter (Clase) | XMLTable (clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


XMLName (Propiedad)

Contiene lo siguiente para los objetos que se especifican:

XMLAdapter: XMLName contiene el nombre del elemento que especifica dónde buscar tablas. Lectura/escritura.

Para más información sobre cómo los métodos XMLAdapter LoadXML y Attach establecen esta propiedad, ver la sección Observaciones.

XMLTable: XMLName contiene el nombre del elemento para aquella tabla en el documento XML. De lectura solamente cuando está asociada con un objeto XMLAdapter.

XMLField: XMLName contiene el nombre del elemento o el nombre del atributo para aquel campo en el documento XML. De lectura solamente cuando está asociada a un objeto XMLTable.

Object.XMLName

Valores de la propiedad

Dato tipo carácter. XMLName contiene una cadena de caracteres Unicode o está vacía ("") cuando no está llena.

Nota Antes de asignar un valor de cadena de texto a XMLName, se debe convertir el valor a Unicode. Se puede utilizar la función STRCONV( ) para cumplir con este requisito.

Observaciones

Los métodos XMLAdapter LoadXML y Attach establecen la propiedad XMLAdapter XMLName como sigue:

  • Nombre del elemento DataSet ADO.NET para un DataSet ADO.NET
  • "dato" para un ADO Recordset XML
  • La cadena vacía ("") para Microsoft XML Data Reduced Schema (XDR) tal como es utilizado por Microsoft SQL-XML

Si XMLAdapter XMLName es la cadena vacía, XMLTable ToCursor busca elementos de tabla dentro de los elementos referenciados por la propiedad XMLAdapter IXMLDOMElement.

El método XMLAdapter ToXML utiliza a XMLAdapter XMLName como el nombre del elemento DataSet. Si XMLName es la cadena vacía, ToXML utiliza la cadena, "VFPDataSet".

Los métodos XMLTable ChangesToCursor y ApplyDiffgram requieren que XMLAdapter XMLName estén establecidos en un valor no nulo y que el documento XML esté en formato DiffGram.

Vea también

Propiedades | XMLAdapter (Objeto: propiedades, métodos y eventos) | XMLTable (Objeto: propiedades, métodos, eventos) | XMLField (Objeto: propiedades, métodos y eventos) | LoadXML (Método) | Attach (Método) | STRCONV( ) (Función)| ToCursor (Método) | IXMLDOMElement (Propiedad) | ToXML (Método) | XMLName (Propiedad) | ChangesToCursor (Método) |

Se aplica a: XMLAdapter (Clase) | XMLTable (Clase) | XMLField (Clase)


XMLNamespace (Propiedad)

Contiene lo siguiente para los objetos especificados:

XMLAdapter: XMLNamespace contiene el espacio de nombres XML al cual pertenece XMLAdapter XMLName, si existe alguno. Lectura/escritura.

XMLTable: XMLNamespace contiene el espacio de nombres XML al cual pertenece XMLTable XMLName. Si está vacío, se usa la propiedad XMLAdapter Namespace en su lugar. Lectura/escritura.

Nota Sólo los métodos XMLTable ToCursor, ChangesToCursor y ApplyDiffgram utilizan XMLTable XMLNameSpace. El XMLField XMLName debería pertenecer al mismo espacio de nombres que XMLTable XMLName.
Object.XMLNamespace

Valores de la propiedad

Tipo de datos carácter. XMLNamespace contiene una cadena de caracteres Unicode o la cadena vacía ("") cuando no está definida.

Nota Antes de asignar un valor de cadena de caracteres a XMLNamespace, se debe convertir su valor a Unicode. Para cumplir con este requerimiento, se puede usar la función STRCONV( ).

Observaciones

Nota Visual FoxPro no tiene en cuenta la propiedad XMLTable XMLNamespace cuando ejecuta el método XMLAdapter ToXML. En su lugar, inserta XMLTable XMLName y XMLField XMLName dentro de XMLAdapter XMLNamespace.

Vea también

Propiedades | XMLAdapter (Objeto: propiedades, métodos y eventos) | XMLTable (Objeto: propiedades, métodos, eventos) | XMLName (Propiedad) | ToXML (Método) | ToCursor (Método) | ChangesToCursor (Método) | ApplyDiffgram (Método) | STRCONV( ) (Función)

Se aplica a: XMLAdapter (Clase) | XMLTable (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


XMLPrefix (Propiedad)

Contiene el prefijo utilizado al referenciar la propiedad XMLNamespace para el objeto correspondiente.

Visual FoxPro ignora XMLPrefix a menos que XMLNamespace sea establecida a un valor no vacío para el objeto correspondiente. El método XMLAdapter ToXML no tiene en cuenta XMLTable XMLPrefix.

Object.Prefix

Valores de la propiedad

Tipo de dato Carácter. XMLPrefix contiene una cadena de caracteres Unicode o está vacía ("") cuando no ha sido llenada.

Nota Antes de asignar un valor de cadena a XMLPrefix, puede convertir el valor a Unicode. Puede utilizar la función STRCONV( ) para ejecutar ese requerimiento.

Vea también

Propiedades | XMLAdapter (Objeto: propiedades, métodos y eventos) | XMLTable (Objeto: propiedades, métodos, eventos) | XMLNamespace (Propiedad) | ToXML (Método) | STRCONV( ) (Función)

Se aplica a: XMLAdapter (Clase) | XMLTable (Clase)


XMLSchemaLocation (Propiedad)

Especifica información del esquema.

XMLSchemaLocation se aplica solamente cuando se ejecutan los siguientes métodos de XMLAdapter

  • LoadXML
  • Attach
  • ToXML
XMLAdapter.XMLSchemaLocation [= cValue]

Valores de la propiedad

Tipo de datos caracteres. La siguiente tabla lista los valores para cValue.

cValue | Descripción
"1" | LoadXML procesa un esquema en línea o externo, si es referenciado en el documento XML. ToXML genera un esquema en línea. (Predeterminado)
"localización de esquema" | LoadXML procesa un esquema en línea o externo, si es referenciado y accesible en el documento XML. En otro caso, Visual FoxPro intenta cargar el esquema desde la "localización de esquema" especificada. ToXML genera un esquema externo en la localizaión especificada.
"" (Vacío) LoadXML no:
  • Procesa cualquier esquema durante la carga.
  • Cambia la colección Tables.
  • Establece la propiedad IsDiffGram.

ToXML no genera ningún esquema.

Vea también

Propiedades | XMLAdapter (Objeto: propiedades, métodos y eventos) | Tables (XMLAdapter) (Colección) | IsDiffGram (Propiedad)

Se aplica a: XMLAdapter (Clase)


XMLTable (Propiedad)

Contiene una referencia de objeto a un objeto XMLTable asociado.

XMLField.XMLTable

Valores de la propiedad

Referencia de objeto. XMLTable contiene una referencia de objeto a un objeto XMLTable asociado.

Vea también

Propiedades | XMLField (Objeto: propiedades, métodos y eventos) | XMLTable (Clase)

Se aplica a: XMLField (Clase)


XMLType (Propiedad)

Contiene una referencia de objeto a un objeto Microsoft XML Core Services (MSXML) 4.0 lSchemaType que contiene restricciones, patrones y demás para el campo.

Para más información acerca de objetos lSchemaType, vea MSXML 4.0 SDK en el sitio Web MSDN Library en http://msdn.microsoft.com/library/.

XMLField.XMLType

Valores de la propiedad

Referencia de objeto. XMLType contiene una referencia de objeto a un objeto MSXML 4.0 lSchemaType.

Vea también

Propiedades | XMLField (Objeto: propiedades, métodos y eventos)

Se aplica a: XMLField (Clase)


XSDfractionDigits (Propiedad)

Contiene el valor XML Schema Definition (XSD) fractionDigits, que aparece a la derecha del punto decimal.

Nota XSDfractionDigits se ignora a menos que XMLField XSDtype tenga un valor no vacío.

Los siguientes métodos XMLAdapter llenan la propiedad XSDfractionDigits como es apropiado:

  • LoadXML
  • Attach
  • AddTableSchema
XMLField.XSDfractionDigits

Valores de la propiedad

Tipo de datos Carácter. XSDfractionDigits especifica los dígitos de fracción XSD.

Observaciones

Cuando se genera un XML utilizando el método ToXML de XMLAdapter, se puede configurar esta propiedad especificando la restricción fractionDigits en el esquema XSD. Se podrá necesitar esta ventaja cuando el valor fractionDigits repquerido por el esquema, difiere del que Visual FoxPro pueda calcular por su cuenta. Visual FoxPro no realiza validaciones en estas situaciones; por lo tanto debe asegurarse que los datos cumplan las restricciones impuestas por fractionDigits.

Vea también

Propiedades | XMLField (Objeto: propiedades, métodos y eventos) | XSDtype (Propiedad) | XMLAdapter (Clase) | ToXML (Método)

Se aplica a: XMLField (Clase)


XSDmaxLength (Propiedad)

Contiene la definición del Valor (XSD) maxLength en el esquema XML

Nota XSDmaxLength se ignora, a menos que XMLField XSDtype tenga un valor no nulo.

Los siguientes métodos del XMLAdapter llenan la Propiedad XSDmaxLength apropiadamente:

  • LoadXML
  • Attach
  • AddTableSchema
XMLField.XSDmaxLength

Valores de la propiedad

Tipo de dato Carácter. XSDmaxLength especifica el número máximo en unidades de longitud de VSD.

Observaciones

Cuando se genera un XML utilizando el método ToXML de XMLAdapter, se puede configurar esta propiedad especificando la restricción maxLength en el esquema XSD. Se podrá necesitar esta ventaja cuando el valor maxLengtht repquerido por el esquema, difiere del que Visual FoxPro pueda calcular por su cuenta. Visual FoxPro no realiza validaciones en estas situaciones; por lo tanto debe asegurarse que los datos cumplan las restricciones impuestas por maxLength.

Vea también

Propiedades | XMLField (Objeto: propiedades, métodos y eventos) | XSDtype (Propiedad) | MLAdapter (Clase) | ToXML (Método)

Se aplica a: XMLField (Clase)


XSDtotalDigits (Propiedad)

Contiene el valor de XML Schema Definition (XSD) totalDigits, el cual determina la precisión numérica.

Nota XSDtotalDigits se ignora a menos que XMLField XSDtype sea un valor no vacío.

El siguiente método XMLAdapter llena la propiedad XSDtotalDigits del formulario apropiado:

  • LoadXML
  • Attach
  • AddTableSchema
XMLField.XSDtotalDigits

Valores de la propiedad

Tipo de dato Carácter. XSDtotalDigits especifica el número total de dígitos XSD.

Observaciones

Cuando se genera un XML utilizando el método ToXML de XMLAdapter, se puede configurar esta propiedad especificando la restricción totalDigits en el esquema XSD. Se podrá necesitar esta ventaja cuando el valor totalDigits repquerido por el esquema, difiere del que Visual FoxPro pueda calcular por su cuenta. Visual FoxPro no realiza validaciones en estas situaciones; por lo tanto debe asegurarse que los datos cumplan las restricciones impuestas por totalDigits.

Vea también

Propiedades | XMLField (Objeto: propiedades, métodos y eventos) | XSDtype (Propiedad) | XMLAdapter (Clase) | ToXML (Método)

Se aplica a: XMLField (Clase)


XSDtype (Propiedad)

Contiene el tipo de dato XML Schema Definition (XSD) del atributo o restricción base.

El siguiente método XMLAdapter llena la propiedad XSDtype apropiadamente:

  • LoadXML
  • Attach
  • AddTableSchema

Por ejemplo, el tipo de dato xsd:int o xs:int XSD Schema desde el XML Schema se guardan como "int", sin su prefijo, en XSDtype.

XMLField.XSDtype

Valores de la propiedad

Tipo de datos Carácter. XSDtype especifica el tipo de dato XSD del atributo o la restricción base. Si XSDtype está vacío, las siguientes propiedades XMLField se ignoran:

  • XSDmaxLength
  • XSDfractionDigits
  • XSDtotalDigits

Observaciones

Cuando se genera un XML utilizando el método ToXML de XMLAdapter, se puede configurar esta propiedad especificando la restricción totalDigits en el esquema XSD. Se podrá necesitar esta ventaja cuando el valor totalDigits repquerido por el esquema, difiere del que Visual FoxPro pueda calcular por su cuenta. Visual FoxPro no realiza validaciones en estas situaciones; por lo tanto debe asegurarse que los datos cumplan las restricciones impuestas por totalDigits.

Al generar XML utilizando el método XMLAdapter ToXML, puede establecer esta propiedad para especificar el tipo de dato XSD en el esquema XSD. Se podrá necesitar este comportamiento cuando Visual FoxPro no permite el valor del tipo de dato requerido por el esquema. Visual FoxPro no valida los datos en esta situación; por consiguiente, deberá estar seguro de que los datos cumplen con los límites impuestos por el tipo de dato XSD especificado.

Vea también

Propiedades | XMLField (Objeto: propiedades, métodos y eventos) | XMLAdapter (Clase) | ToXML (Método)

Se aplica a: XMLField (Clase)


ZoomBox (Propiedad)

Incluída por compatibilidad con Macintosh. Especifica si un formulario tiene un cuadro de zoom. Disponible en tiempo de diseño; de lectura / escritura en tiempo de ejecución.

Object.ZoomBox = lExpr

Valores de la propiedad

lExpr
Los valores para la propiedad ZoomBox son:
Valor | Descripción
Verdadero (.T.) | Aparece un cuadro de zoom en la esquina superior derecha del formulario.
Falso (.F.) | (Predeterminado) No aparece ningún cuadro de zoom en el formulario.

Vea también

BorderStyle (Propiedad) | SizeBox (Propiedad)

Se aplica a: Form


Métodos

Para información de referencia sobre elementos de lenguaje sólo compatibles con versiones anteriores, vea Elementos del lenguaje compatibles con versiones anteriores.

A

ActivateCell (Método)

Método Add (Clase Collection)

Add Method (Objeto File)

AddColumn (Método)

AddItem (Método)

AddListItem (Método)

AddObject (Método)

AddProperty (Método)

AddTableSchema (Método)

AddToSCC (Método)

ApplyDiffGram (Método)

Attach (Método)

AutoFit (Método)

AutoOpen (Método)

B

Box (Método)

Build (Método)

C

ChangesToCursor (Método)

CheckIn (Método)

CheckOut (Método)

Circle (Método)

CleanUp (Método)

Clear (Método)

ClearData (Método)

CloneObject (Método)

Close (Método)

CloseTables (Método)

Cls (Método)

CursorAttach (Método)

CursorDetach (Método)

CursorFill (Método)

CursorRefresh (Método)

D

DataToClip (Método)

DeleteColumn (Método)

Dock (Método)

DoScroll (Método)

DoVerb (Método)

Drag (Método)

Draw (Método)

E

Eval (Método)

F

G

GetData (Método)

GetFormat (Método)

GetKey (Método)

GetLatestVersion (Método)

H

Help (Método)

Hide (Método)

I

IndexToItemID (Método)

Item (Objeto File) (Método)

ItemIDToIndex (Método)

J

K

L

LoadXML (Método)

Line (Método)

M

Modify (Método)

Move (Método)

MoveItem (Método)

N

O

OLEDrag (Método)

P

Point (Método)

Print (Método)

PSet (Método)

Q

Quit (Método)

R

ReadExpression (Método)

ReadMethod (Método)

Refresh (Método)

Release (Método)

ReleaseXML (Método)

Remove (Método)

RemoveFromSCC (Método)

RemoveItem (Método)

RemoveListItem (Método)

RemoveObject (Método)

Requery (Método)

RequestData (Método)

Reset (Método)

ResetToDefault (Método)

Run (Método)

S

SaveAs (Método)

SaveAsClass (Método)

SetAll (Método)

SetData (Método)

SetFocus (Método)

SetFormat (Método)

SetMain (Método)

SetVar (Método)

SetViewPort (Método)

Show (Método)

ShowWhatsThis (Método)

T

TextHeight (Método)

TextWidth (Método)

ToCursor (Método)

ToXML (Método)

U

UndoCheckOut (Método)

V

W

WhatsThisMode (Método)

WriteExpression (Método)

WriteMethod (Método)

X

Y

Z

ZOrder (Método)


ActivateCell (Método)

Activa una celda en un control cuadrícula.

Grid.ActivateCell(nRow, nCol)

Parámetros

nRow, nCol
Especifica la fila y la columna que contiene la celda activa.

Vea también

ActiveColumn (Propiedad) | ActiveRow (Propiedad) | GridHitTest (Método)

Se aplica a: Grid (Control)


Add (Método) (Clase Collection)

Se utiliza para agregar un miembro a la colección.

El objeto miembro puede tener cualquier tipo válido que pueda ser asignado a una variable de memoria. Esto incluye tipos de datos simples, tales como cadenas, números, fechas, lógicos, o tipos más complejos tales como objetos de Visual FoxPro y objetos COM (Component Object Model).

Collection.Add( eItem [, cKey [, [eBeforeItem |, eAfterItem ]]] )

Parámetros:

eItem
Especifica una expresión de cualquier tipo que represente un miembro a agregar en la colección. Usualmente, éste es un objeto, pero podría ser un número, cadena, o miembro que tenga un tipo válido.
cKey
Especifica una expresión opcional, única, alfanumérica (de tipo carácter) que representa una cadena clave, en lugar del índice posicional, que puede ser usado para acceder al miembro de la colección.

Para colecciones que usan claves, cKey es un parámetro sensible a MAY/Min y no puede estar vacío o tener un valor nulo (.NULL.).

Todos los elementos agregados a la colección, deben tener especificado el parámetro cKey para ellos o no especificado por razones de rendimiento. El primer elemento agregado determina el comportamiento de la colección. Puede probar la existencia de claves en una colección usando el código siguiente:

GetKey(1)

Si la clave ya existe para un miembro en la colección, ocurrirá un error. Sin embargo, como cKey es sensible a MAY/min, no ocurrirá un error de duplicación si la misma clave es agregada con diferentes MAY/min. Una clave incluye cualquier espacio en blanco presente en la clave cKey.

[, [ eBeforeItem |, eAfterItem ]]
Especifica una expresión opcional que representa una posición donde el nuevo miembro será insertado antes o después de otro ítem en la colección.

Puede especificar una expresión eBeforeItem o una eAfterItem pero no ambas, o se generara el mensaje apropiado. Esta expresión puede ser de dos tipos:

  • Numérica. La expresión eBeforeItem y eAfterItem deben tener un valor desde 1 hasta el valor de la propiedad Count para la colección.
  • Cadena. La expresión eBeforeItem y eAfterItem deben corresponder a la cKey que fue especificada por el ítem referenciado cuando éste fue agregado a la colección.

Insertar un nuevo ítem en una colección antes o después de uno existente requiere que la colección debe ser una colección codificada. Cuando especifica un valor cKey con un parámetro eBeforeItem o eAfterItem, el nuevo elemento es agregado antes o después del índice clave especificado. En ese caso, el valor de Collection KeySort no tiene efecto. Por ejemplo, Suponga que cKey para un nuevo ítem es "ZZZ", y para un ítem existente, cKey es "XXX", y éste tiene un valor índice 15. El nuevo elemento recibirá un valor de índice de 15, y el ítem existente recibirá un nuevo valor de índice de 16.

Para insertar un nuevo elemento antes de uno existente, incluya la clave del elemento que quiere insertar al nuevo ítem como se muestra en el siguiente ejemplo:

loItems.Add("Rosas", "flor1", "flor2")

Para insertar un nuevo ítem después de uno existente, incluya la clave del ítem que quiere insertar al nuevo ítem. Además, debe pasar un tercer parámetro vacío para eBeforeItem como se muestra en el siguiente ejemplo:

loItems.Add("Orquideas", "flor3",, "flor2")

Si eBeforeItem y eAfterItem no se refieren a un miembro existente de la colección, ocurrirá un error. Visual FoxPro agrega un ítem al final de la colección cuando eBeforeItem o eAfterItem no estan especificados.

Observaciones

Cuando se agregan objetos a las colecciones, Visual FoxPro incrementa la referencia al contador para ese objeto. Según el comportamiento usual del objeto de Visual FoxPro, usted puede liberar un objeto solamente cuando el contador de referencia es 0. Por lo tanto, asegúrese que la referencia al objeto en la colección es liberada cuando libera al objeto; de lo contrario, Visual FoxPro no elimina al objeto completamente de memoria.

No está limitado el número de ítems que se puede agregar a una colección. Sin embargo, el tamaño de una colección puede afectar el rendimiento de las operaciones tales como el acceso, búsqueda, y enumeración de los elementos de la colección. Por ejemplo, crear una gran colección, basada en los registros de una tabla muy grande (.dbf), no es recomendable porque no podría usar la optimización de consultas y otras características asociadas con el motor de datos nativo de Visual FoxPro.

Puede tener una colección de colecciones porque las colecciones son objetos. Sin embargo, evite la creación de referencias circulares, tales como intentar agregar una colección externa a una colección interna.

Agregar matrices como ítems a una colección instanciada desde la clase base tiene un uso limitado porque no hay una manera fácil de referirse a todos los elementos en la matriz. Considere el siguiente ejemplo:

DIMENSION x[3]
x[1] = 1
x[2] = 22
x[3] = 333
y = CREATEOBJECT("collection")
y.Add(@x)
z = y.item(1)   && Retorna sólo el primer elemento
? z[2]          && Error

Por lo tanto, deberá crear una subclase con un especial manejo para esa situación.

Puede pasar un valor NULL como un tipo de ítem y usar las funciones TYPE( ) y VARTYPE( ) para consultar el tipo de ítem en la colección.

Puede agregar ítems de tipo variado. Sin embargo, Visual FoxPro no fuerza a la seguridad del tipo, asi que debería proveer éste para la clase si es necesario. Si un tipo incorrecto es pasado por un parámetro específico, ocurrirá un error.

Incluya el comando NODEFAULT en el método Add de la colección para prevenir agregar un ítem particular a la colección.

Ejemplo

El siguiente ejemplo ilustra las siguientes tareas:

  • Agregar 4 ítems a la colección usando el parámetro cKey.
  • Agregar un segundo ítem con una clave que preceda al primer ítem usando el parámetro eBeforeItem.
  • Agregar un cuarto ítem con una clave que siga al primer ítem agregado usando el parámetro eAfterItem.
  • Iterar a través de todos los ítems mostrándolos en pantalla.
CLEAR
LOCAL loItems, lcFlower
loItems = NEWOBJECT("Collection")
loItems.Add("Narcisos", "flor2")
* Agregar "Rosas" con la clave "flor1" antes de "flor2".
loItems.Add("Rosas", "flor1", "flor2")
loItems.Add("Margaritas", "flor4")
* Agregar "Orquideas" con la clave "flor4" después de "flor2".
loItems.Add("Orquideas","flor3",,"flor2")
FOR EACH lcFlower IN loItems
? lcFlower
ENDFOR

El siguiente ejemplo genera un error. No se puede especificar ambos parámetros un eBeforeItem y un eAfterItem.

* Genera un error. No se puede especificar ambos parámetros eBeforeItem y eAfterItem.
loItems.Add("Violetas","flor5","flor2","flor1")

Vea también

Collection (Objeto: propiedades, métodos y eventos) | Collection (Clase) | KeySorr (Propiedad) | TYPE( ) (Función) | VARTYPE( ) (Función) | NODEFAULT (Comando)


Add - Objeto File (Método)

Agrega un archivo a un proyecto.

Objeto.Add(cNombreArchivo)

Valores devueltos

Objeto

Parámetros

cNombreArchivo
Especifica el nombre del archivo que va a agregar al proyecto. Si el archivo especificado no existe, se produce un error. Si la ventana del Administrador de proyectos está abierta, se actualizará después de agregar el archivo.

Observaciones

El método Add es un método para la colección Files. Cuando se agrega un archivo a un proyecto mediante el método Add, se crea un objeto File para el archivo y el objeto File se agrega a la colección Files.

Si el archivo se agrega correctamente al proyecto, se devuelve una referencia de objeto al archivo recién agregado. Si no se puede agregar el archivo al proyecto, se devuelve el valor nulo.

El evento QueryAddFile ocurre justo antes de agregar un archivo a un proyecto. Si se especifica NODEFAULT en el evento QueryAddFile, no se agrega el archivo al proyecto.

Incluya NODEFAULT en el evento QueryAddFile para impedir que se agregue el archivo al proyecto.

Ejemplo

El ejemplo siguiente crea un proyecto mediante programación y luego genera un ejecutable (.EXE) desde dicho proyecto. Usa el método Add para agregar código de programa al proyecto.

SET SAFETY OFF
LOCAL lcCode
TEXT TO lcCode NOSHOW
CLEAR
PUBLIC loForm

SET TALK OFF
SET DELETED ON
SET EXCLUSIVE OFF
SET CENTURY ON

ON SHUTDOWN clear events
loForm = CREATEOBJECT('Test1')
loForm.Show(0)
READ EVENTS
ON SHUTDOWN
RETURN

DEFINE CLASS Test1 as Form
Top = 0
Left = 0
Width = 240
Height = 150
Caption = 'Ejemplo del método Add'
ShowWindow = 2

ADD OBJECT cmdClose as CommandButton WITH ;
Caption = '\<Cerrar', ;
Top = 80, ;
Left = 80, ;
Height = 24, ;
Width = 80

ADD OBJECT lblTitle as Label WITH ;
Top = 30, ;
Left = 40, ;
Height = 34, ;
Width = 160, ;
Caption = 'Este ejemplo fue creado mediante programación.';
WordWrap = .t.

PROCEDURE Init
SET TALK off
ThisForm.AutoCenter = .t.
ENDPROC
PROCEDURE Unload
CLEAR EVENTS
ENDPROC
PROCEDURE cmdClose.Click
ThisForm.Release()
ENDPROC
ENDDEFINE
ENDTEXT

STRTOFILE(lcCode, 'addsample.prg')
CREATE PROJECT 'AddSample' NOSHOW NOWAIT SAVE
LOCAL loPJX
loPJX = _VFP.ActiveProject
WITH loPJX
.Files.Add('addsample.prg')
.SetMain('addsample.prg')
.Build('addsample.exe',3,.t.,.t.,.f.)
.Close()
ENDWITH
RUN /n addsample.exe

Vea también

File (Objeto) | QueryAddFile (Evento) | NODEFAULT (Comando)

Se aplica a: Files (Colección)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


AddColumn (Método)

Agrega un objeto Column a un control cuadrícula.

Grid.AddColumn(nIndex)

Parámetros

nIndex
Especifica un número que representa la posición en la cuadrícula donde se agrega el nuevo objeto Column.

Observaciones

Cuando se llama a AddColumn( ) las columnas existentes se mueven a la derecha y sus propiedades ColumnOrder se incrementan. La propiedad ColumnCount de la cuadrícula también se incrementa.

La matriz de propiedades Controls de la cuadrícula aumenta en un elemento y se coloca una referencia a la nueva columna en el nuevo elemento. Se asigna un nombre único a la nueva columna.

Por ejemplo, para agregar una columna nueva y, a continuación, asignar un nuevo nombre a la columna, puede ejecutar el código siguiente.

THISFORM.Grid1.AddColumn(1)   && Insert column at left.
THISFORM.Grid1.Columns(THISFORM.Grid1.ColumnCount).Name = "NewColumn"
THISFORM.Grid1.NewColumn.ControlSource = "Customer.CustID"

Vea también

AddObject (Método) | ColumnCount (Propiedad) | DeleteColumn (Método)

Se aplica a: Grid (Control)


AddItem (Método)

Agrega un nuevo elemento a un control ComboBox o ListBox; opcionalmente, permite especificar el índice del elemento.

Control.AddItem(cItem [, nIndex] [, nColumn])

Parámetros

cItem
Especifica la expresión de cadena que se agrega al control.
nIndex
Especifica la posición donde el elemento se coloca en el control. Si proporciona un valor válido para el parámetro opcional nIndex, cItem se colocará en esa posición dentro del control. Si especifica un nIndex que ya existe, el elemento se insertará en esa posición y todos los elementos por debajo del elemento se moverán una posición hacia abajo en la parte de lista del control ComboBox o ListBox.

Si omite nIndex y la propiedad Sorted está establecida en el valor verdadero (.T.), cItem se agregará en orden alfabético. Si omite nIndex y la propiedad Sorted está establecida en el valor falso (.F.), cItem se agregará al final de la parte de lista del control ComboBox o ListBox.

nColumn
Especifica la columna del control al que se va a agregar el nuevo elemento. El valor predeterminado es 1.

Observaciones

Utilice el método AddItem o AddListItem para establecer la propiedad RowSourceType como 0 (Ninguno).

A cada elemento que se agrega a un cuadro combinado o un cuadro de lista se le asignan dos números de identificación:

  • nItemID, un entero correspondiente al Id. único del elemento del control: el primer elemento corresponde a nItemID = 1, a menos que se especifique otro nItemID.
  • nIndex, un entero correspondiente al orden en que el control muestra los elementos: el primer elemento del control corresponde a nIndex = 1.

El método AddItem siempre inserta una nueva fila en un ComboBox o ListBox de múltiples columnas. Después de que una fila haya sido insertada, las columnas en esa fila deben llenarse usando la sintaxis .List(.NewIndex, nColumn).

La barra inversa es tratada como un carácter especial cuando usada en la expresión para un elemento. Las siguientes reglas se aplican para ese carácter:

  • Puede desactivar un elemento en un listbox o combobox agregando una simple barra inversa al inicio de la expresión.
  • Cualquier múltiplo de dos barras inversas usado en la expresión es mostrado como una simple barra inversa. Por ejemplo, una o dos barras invesas usadas juntas se mostrarán como una y tres o cuatro barras inversas juntas se mostrarán como dos. El siguiente código de ejemplo contiene un elemento de un listbox que por su vez contiene una ruta tipo Universal Naming Convention (UNC). El código se muestra en el listbox como\\MyServer\MyMachine\MyFolder.
    MyForm.List1.AddItem("\\\\MyServer\\MyMachine\\MyFolder")
  • Si la expresión empieza con múltiples barras inversas, el elemento no es desactivado. Si quiere desactivar un elemento que empieza con múltiples barras inversas, agrega una barra inversa y un corchete de cierre (]) al inicio del elemento. Por ejemplo, lo siguiente desactiva un item tipo ruta UNC en el listbox.
    MyForm.List1.AddItem("\]\\\MyServer\\MyMachine\\MyFolder")
  • Para incluir una linea separadora, use una barra inversa seguida por un guión como el elemento a ser agregado a un listbox.
    MyForm.List1.AddItem("\-")

Ejemplo

Este ejemplo muestra el uso de los métodos AddItem y AddListItem para agregar valores a la matriz ListItem. Para mayor claridad, se muestran las maneras apropiada e inapropiada de llenar un combobox.

PUBLIC ofrmListExamples
ofrmListExamples=NEWOBJECT("frmListExamples")
ofrmListExamples.Show
RETURN

DEFINE CLASS frmListExamples AS form

 DataSession = 2
 Top = 0
 Left = 0
 Height = 262
 Width = 325
 Caption = "Ejemplo de matriz List y ListItem"
 Name = "frmListExamples"

 ADD OBJECT shape1 AS shape WITH ;
  Top = 43, ;
  Left = 32, ;
  Height = 76, ;
  Width = 261, ;
  SpecialEffect = 0, ;
  Name = "Shape1"

 ADD OBJECT cbolistbad AS combobox WITH ;
  ColumnCount = 3, ;
  ColumnWidths = "100,100,50", ;
  Height = 22, ;
  Left = 111, ;
  Sorted = .T., ;
  Style = 2, ;
  TabIndex = 1, ;
  Top = 53, ;
  Width = 147, ;
  Name = "cboListBad"

 ADD OBJECT cbolistitem AS combobox WITH ;
  ColumnCount = 3, ;
  ColumnWidths = "100,100,50", ;
  Left = 34, ;
  Sorted = .T., ;
  Style = 2, ;
  TabIndex = 3, ;
  Top = 154, ;
  Name = "cboListItem"

 ADD OBJECT label1 AS label WITH ;
  FontBold = .T., ;
  Caption = "Usando la matriz List:", ;
  Height = 17, ;
  Left = 34, ;
  Top = 24, ;
  Width = 176, ;
  TabIndex = 7, ;
  Name = "Label1"

 ADD OBJECT label2 AS label WITH ;
  FontBold = .T., ;
  Caption = "Usando la matriz ListItem:", ;
  Height = 17, ;
  Left = 34, ;
  Top = 135, ;
  Width = 173, ;
  TabIndex = 8, ;
  Name = "Label2"

 ADD OBJECT cbolistgood AS combobox WITH ;
  ColumnCount = 3, ;
  ColumnWidths = "100,100,50", ;
  Height = 22, ;
  Left = 111, ;
  Sorted = .T., ;
  style = 2, ;
  TabIndex = 2, ;
  Top = 86, ;
  Width = 147, ;
  Name = "cboListGood"

 ADD OBJECT label3 AS label WITH ;
  Alignment = 1, ;
  Caption = "Errado!", ;
  Height = 17, ;
  Left = 51, ;
  Top = 56, ;
  Width = 47, ;
  TabIndex = 9, ;
  Name = "Label3"

 ADD OBJECT label4 AS label WITH ;
  Alignment = 1, ;
  Caption = "Cierto!", ;
  Height = 17, ;
  Left = 58, ;
  Top = 89, ;
  Width = 40, ;
  TabIndex = 10, ;
  Name = "Label4"

 PROCEDURE cbolistbad.Init
  WITH This
   .AddItem( 'Cleveland' )
   .AddItem( 'Ohio', .NewIndex, 2 )
   .AddItem( '44122', .NewIndex, 3 )
   .AddItem( 'Caversham' )
   .AddItem( 'England', .NewIndex, 2 )
   .AddItem( 'RG4 8BX', .NewIndex, 3 )
   .AddItem( 'Buffalo' )
   .AddItem( 'New York', .NewIndex, 2 )
   .AddItem( '14228', .NewIndex, 3 )
   .AddItem( 'Milwaukee' )
   .AddItem( 'Wisconsin', .NewIndex, 2 )
   .AddItem( '43225', .NewIndex, 3 )
   .AddItem( 'International Falls')
   .AddItem( 'Minnesota', .NewIndex, 2 )
   .AddItem( '42666', .NewIndex, 3 )
  ENDWITH
 ENDPROC

PROCEDURE cbolistgood.Init
  WITH This
   .AddItem( 'Cleveland' )
   .List[.NewIndex, 2] = 'Ohio'
   .List[.NewIndex, 3] = '44122'
   .AddItem( 'Caversham' )
   .List[.NewIndex, 2] = 'England'
   .List[.NewIndex, 3] = 'RG4 8BX'
   .AddItem( 'Buffalo' )
   .List[.NewIndex, 2] = 'New York'
   .List[.NewIndex, 3] = '14228'
   .AddItem( 'Milwaukee' )
   .List[.NewIndex, 2] = 'Wisconsin'
   .List[.NewIndex, 3] = '43225'
   .AddItem( 'International Falls' )
   .List[.NewIndex, 2] = 'Minnesota'
   .List[.NewIndex, 3] = '42666'
  ENDWITH
 ENDPROC

 PROCEDURE cbolistitem.Init
  WITH This
   .AddListitem( 'Cleveland' )
   .AddListItem( 'Ohio', .NewItemID, 2 )
   .AddListItem( '44122', .NewItemID, 3 )
   .AddListItem( 'Caversham' )
   .AddListItem( 'England', .NewItemID, 2 )
   .AddListItem( 'RG4 8BX', .NewItemID, 3 )
   .AddListItem( 'Buffalo' )
   .AddListItem( 'New York', .NewItemID, 2 )
   .AddListItem( '14228', .NewItemID, 3 )
   .AddListItem( 'Milwaukee' )
   .AddListItem( 'Wisconsin', .NewItemID, 2 )
   .AddListItem( '43225', .NewItemID, 3 )
   .AddListItem( 'International Falls')
   .AddListItem( 'Minnesota', .NewItemID, 2 )
   .AddListItem( '42666', .NewItemID, 3 )
  ENDWITH
 ENDPROC
ENDDEFINE

Vea también

AddListItem (Método) | Clear (Método) | List (Propiedad) | ListIndex (Propiedad) | ListItemID (Propiedad) | RowSourceType (Propiedad) | RemoveItem (Método) | Sorted (Propiedad)


AddListItem (Método)

Agrega un nuevo elemento a un control ComboBox o ListBox, lo que permite especificar opcionalmente el Id. del elemento.

Control.AddListItem(cItem [, nItemID] [, nColumn])

Parámetros

cItem
Especifica el elemento que se va a agregar al control.
nItemID
Especifica un entero que representa el Id. único del elemento del control. El valor máximo que puede especificar para nItemID es 32.767.

Si omite nItemID y la propiedad Sorted está establecida en el valor verdadero (.T.), cItem se agregará en orden alfabético. Si omite nItemID y la propiedad Sorted está establecida en el valor falso (.F.), cItem se agregará al final de la lista del control ComboBox o ListBox.

nColumn
Especifica la columna del control que se va a agregar al nuevo elemento. El valor predeterminado es 1.

Observaciones

Utilice el método AddItem o AddListItem para establecer la propiedad RowSourceType como 0 (Ninguno).

A cada elemento que se agrega a un cuadro combinado o un cuadro de lista se le asignan dos números de identificación:

  • nItemID, un entero correspondiente al Id. único del elemento del control: el primer elemento corresponde a nItemID = 1, a menos que se especifique otro nItemID.
  • nIndex, un entero correspondiente al orden en que el control muestra los elementos: el primer elemento del control corresponde a nIndex = 1.

La barra inversa es tratada como un carácter especial cuando usada en la expresión para un elemento. Las siguientes reglas se aplican para ese carácter:

  • Puede desactivar un elemento en un listbox o combobox agregando una simple barra inversa al inicio de la expresión.
  • Cualquier múltiplo de dos barras inversas usado en la expresión es mostrado como una simple barra inversa. Por ejemplo, una o dos barras inversas usadas juntas se mostrarán como una y tres o cuatro barras inversas juntas se mostrarán como dos. El siguiente código de ejemplo contiene un elemento de un listbox que por su vez contiene una ruta tipo Universal Naming Convention (UNC). El código se muestra en el listbox como \\MyServer\MyMachine\MyFolder.
    MyForm.List1.AddItem("\\\\MyServer\\MyMachine\\MyFolder")
  • Si la expresión empieza con múltiples barras inversas, el elemento no es desactivado. Si quiere desactivar un elemento que empieza con múltiples barras inversas, agrega una barra inversa y un corchete de cierre (]) al inicio del elemento. Por ejemplo, lo siguiente desactiva un item tipo ruta UNC en el listbox:
    MyForm.List1.AddItem("\]\\\MyServer\\MyMachine\\MyFolder")
  • Para incluir una linea separadora, use una barra inversa seguida por un guión como el elemento a ser agregado al listbox.
    MyForm.List1.AddItem("\-")

Ejemplo

Este ejemplo muestra el uso de los métodos AddItem y AddListItem para agregar valores a la matriz ListItem. Para mayor claridad, se muestran las maneras apropiada e inapropiada de llenar un combobox.

PUBLIC ofrmListExamples
ofrmListExamples=NEWOBJECT("frmListExamples")
ofrmListExamples.Show
RETURN

DEFINE CLASS frmListExamples AS form

 DataSession = 2
 Top = 0
 Left = 0
 Height = 262
 Width = 325
 Caption = "Ejemplo de las matrices List y ListItem"
 Name = "frmListExamples"

 ADD OBJECT shape1 AS shape WITH ;
  Top = 43, ;
  Left = 32, ;
  Height = 76, ;
  Width = 261, ;
  SpecialEffect = 0, ;
  Name = "Shape1"

 ADD OBJECT cbolistbad AS combobox WITH ;
  ColumnCount = 3, ;
  ColumnWidths = "100,100,50", ;
  Height = 22, ;
  Left = 111, ;
  Sorted = .T., ;
  Style = 2, ;
  TabIndex = 1, ;
  Top = 53, ;
  Width = 147, ;
  Name = "cboListBad"

 ADD OBJECT cbolistitem AS combobox WITH ;
  ColumnCount = 3, ;
  ColumnWidths = "100,100,50", ;
  Left = 34, ;
  Sorted = .T., ;
  Style = 2, ;
  TabIndex = 3, ;
  Top = 154, ;
  Name = "cboListItem"

 ADD OBJECT label1 AS label WITH ;
  FontBold = .T., ;
  Caption = "Usando la matriz List:", ;
  Height = 17, ;
  Left = 34, ;
  Top = 24, ;
  Width = 176, ;
  TabIndex = 7, ;
  Name = "Label1"

 ADD OBJECT label2 AS label WITH ;
  FontBold = .T., ;
  Caption = "Usando la matriz ListItem:", ;
  Height = 17, ;
  Left = 34, ;
  Top = 135, ;
  Width = 173, ;
  TabIndex = 8, ;
  Name = "Label2"

 ADD OBJECT cbolistgood AS combobox WITH ;
  ColumnCount = 3, ;
  ColumnWidths = "100,100,50", ;
  Height = 22, ;
  Left = 111, ;
  Sorted = .T., ;
  style = 2, ;
  TabIndex = 2, ;
  Top = 86, ;
  Width = 147, ;
  Name = "cboListGood"

 ADD OBJECT label3 AS label WITH ;
  Alignment = 1, ;
  Caption = "Errado!", ;
  Height = 17, ;
  Left = 51, ;
  Top = 56, ;
  Width = 47, ;
  TabIndex = 9, ;
  Name = "Label3"

 ADD OBJECT label4 AS label WITH ;
  Alignment = 1, ;
  Caption = "Cierto!", ;
  Height = 17, ;
  Left = 58, ;
  Top = 89, ;
  Width = 40, ;
  TabIndex = 10, ;
  Name = "Label4"

 PROCEDURE cbolistbad.Init
  WITH This
   .AddItem( 'Cleveland' )
   .AddItem( 'Ohio', .NewIndex, 2 )
   .AddItem( '44122', .NewIndex, 3 )
   .AddItem( 'Caversham' )
   .AddItem( 'England', .NewIndex, 2 )
   .AddItem( 'RG4 8BX', .NewIndex, 3 )
   .AddItem( 'Buffalo' )
   .AddItem( 'New York', .NewIndex, 2 )
   .AddItem( '14228', .NewIndex, 3 )
   .AddItem( 'Milwaukee' )
   .AddItem( 'Wisconsin', .NewIndex, 2 )
   .AddItem( '43225', .NewIndex, 3 )
   .AddItem( 'International Falls')
   .AddItem( 'Minnesota', .NewIndex, 2 )
   .AddItem( '42666', .NewIndex, 3 )
  ENDWITH
 ENDPROC

 PROCEDURE cbolistitem.Init
  WITH This
   .AddListitem( 'Cleveland' )
   .AddListItem( 'Ohio', .NewItemID, 2 )
   .AddListItem( '44122', .NewItemID, 3 )
   .AddListItem( 'Caversham' )
   .AddListItem( 'England', .NewItemID, 2 )
   .AddListItem( 'RG4 8BX', .NewItemID, 3 )
   .AddListItem( 'Buffalo' )
   .AddListItem( 'New York', .NewItemID, 2 )
   .AddListItem( '14228', .NewItemID, 3 )
   .AddListItem( 'Milwaukee' )
   .AddListItem( 'Wisconsin', .NewItemID, 2 )
   .AddListItem( '43225', .NewItemID, 3 )
   .AddListItem( 'International Falls')
   .AddListItem( 'Minnesota', .NewItemID, 2 )
   .AddListItem( '42666', .NewItemID, 3 )
  ENDWITH
 ENDPROC

 PROCEDURE cbolistgood.Init
  WITH This
   .AddItem( 'Cleveland' )
   .List[.NewIndex, 2] = 'Ohio'
   .List[.NewIndex, 3] = '44122'
   .AddItem( 'Caversham' )
   .List[.NewIndex, 2] = 'England'
   .List[.NewIndex, 3] = 'RG4 8BX'
   .AddItem( 'Buffalo' )
   .List[.NewIndex, 2] = 'New York'
   .List[.NewIndex, 3] = '14228'
   .AddItem( 'Milwaukee' )
   .List[.NewIndex, 2] = 'Wisconsin'
   .List[.NewIndex, 3] = '43225'
   .AddItem( 'International Falls' )
   .List[.NewIndex, 2] = 'Minnesota'
   .List[.NewIndex, 3] = '42666'
  ENDWITH
 ENDPROC
ENDDEFINE

Vea también

AddItem (Método) | Clear (Método) | ListIndex (Propiedad) | ListItemID (Propiedad) | RowSourceType (Propiedad) | RemoveItem (Método) | Sorted (Propiedad)

Se aplica a: ComboBox (Control) | ListBox (Control)


AddObject (Método)

Agrega un objeto en un objeto Container en tiempo de ejecución.

Object.AddObject(cName, cClass [, cOLEClass] [, aInit1, aInit2 ...])

Parámetros

cName
Especifica el nombre empleado para hacer referencia al objeto nuevo.
cClass
Especifica la clase de objeto que se va a agregar.
cOLEClass
Especifica la clase OLE del objeto que se va a agregar.
Nota Si piensa distribuir aplicaciones en el entorno de tiempo de ejecución que agreguen controles ActiveX que necesiten información de claves de licencia (por ejemplo, los controles Microsoft Treeview y Listview), no es recomendable que utilice el método AddObject(.....cOLEClass). En su lugar, cree y guarde una subclase del control ActiveX en una biblioteca de clases VCX. A continuación, en tiempo de ejecución, podrá utilizar el método AddObject (o NewObject) para agregar esta clase OleControl que contiene el control.
aInit1, aInit2
Especifica los parámetros que se pasan al evento Init del nuevo objeto.

Observaciones

Al llamar al método AddObject se desencadena el evento Init del objeto que se agrega. Cuando se agrega un formulario a un conjunto de formularios, se produce el evento Load antes que el evento Init.

Nota Al utilizar AddObject para agregar un objeto a un contenedor, la propiedad Visible del objeto se establece en el valor falso (.F.), para permitirle definir las propiedades del objeto sin efectos visuales no deseados a medida que se modifique la apariencia del objeto.

Si utiliza el método AddObject( ) para agregar dinámicamente un control ActiveX a un formulario, es posible que la aplicación distribuida produzca un error si el control necesita ciertas claves de registro de licencia que no se encuentran disponibles en la máquina de destino. Muchos proveedores de controles ActiveX requieren tales claves de registro para manipular estos controles en tiempo de diseño, como se hace con el método AddObject( ). Para evitar este requisito de licencia, cree primero una subclase del control ActiveX en un archivo de biblioteca de clases (.vcx); a continuación, utilice AddObject( ) para agregar una instancia de la subclase, dinámicamente, en tiempo de ejecución. Es recomendable que consulte siempre al proveedor de cualquier control ActiveX que piense distribuir con la aplicación personalizada, puesto que puede haber otros archivos dependientes que necesite incluir.

Ejemplo

El ejemplo siguiente muestra cómo puede utilizar el método AddObject para agregar objetos o controles a un formulario. AddObject se utiliza para agregar un control Line y tres botones de comando al formulario.

La propiedad Visible se establece en el valor verdadero (.T.) para el control Line y los botones de comando. De forma predeterminada, los objetos y controles no son visibles cuando se agregan a un formulario.

frmMyForm = CREATEOBJECT('Form')  && Create a Form
frmMyForm.Closable = .F.  && Disable the Control menu box
frmMyForm.AddObject('shpLine','Line')  && Add a Line control to the form
frmMyForm.AddObject('cmdCmndBtn1','cmdMyCmndBtn1')  && Up Cmnd button
frmMyForm.AddObject('cmdCmndBtn2','cmdMyCmndBtn2')  && Down Cmnd button
frmMyForm.AddObject('cmdCmndBtn3','cmdMyCmndBtn3')  && Quit Cmnd button
frmMyForm.shpLine.Visible = .T.  && Make Line control visible
frmMyForm.shpLine.Top = 20  && Specify Line control row
frmMyForm.shpLine.Left = 125  && Specify Line control column
frmMyForm.cmdCmndBtn1.Visible =.T.  && Up Command button visible
frmMyForm.cmdCmndBtn2.Visible =.T.  && Down" Command button visible
frmMyForm.cmdCmndBtn3.Visible =.T.  && Quit Command button visible
frmMyForm.SHOW  && Display the form
READ EVENTS  && Start event processing
DEFINE CLASS cmdMyCmndBtn1 AS COMMANDBUTTON  && Create Command button
Caption = 'Slant \<Up'  && Caption on the Command button
Left = 50  && Command button column
Top = 100  && Command button row
Height = 25  && Command button height
PROCEDURE Click
ThisForm.shpLine.Visible = .F.  && Hide the Line control
ThisForm.shpLine.LineSlant ='/'  && Slant up
ThisForm.shpLine.Visible = .T.  && Show the Line control
ENDDEFINE
DEFINE CLASS cmdMyCmndBtn2 AS CommandButton  && Create Command button
Caption = 'Slant \<Down'  && Caption on the Command button
Left = 200  && Command button column
Top = 100  && Command button row
Height = 25  && Command button height
PROCEDURE Click
ThisForm.shpLine.Visible = .F.  && Hide the Line control
ThisForm.shpLine.LineSlant ='\'  && Slant down
ThisForm.shpLine.Visible = .T.  && Show the Line control
ENDDEFINE
DEFINE CLASS cmdMyCmndBtn3 AS CommandButton  && Create Command button
Caption = '\<Quit'  && Caption on the Command button
Cancel = .T.  && Default Cancel Command button (Esc)
Left = 125  && Command button column
Top = 150  && Command button row
Height = 25  && Command button height
PROCEDURE Click
CLEAR EVENTS  && Stop event processing, close Form
ENDDEFINE

Vea también

Init (Evento) | Load (Evento) | NewObject (Método) | RemoveObject (Método) | Visible (Propiedad)

Se aplica a: Column (Objeto) | CommandGroup (Control) | Container (Objeto) | Custom (Objeto) | DataEnvironment (Objeto) | Form (Objeto) | FormSet (Objeto) | Grid (Control) | OptionGroup (Control) | Page (Objeto) | PageFrame (Control) | _SCREEN | ToolBar (Objeto)


AddProperty (Método)

Agrega una nueva propiedad a un objeto.

Object.AddProperty(cNombrePropiedad [, eNuevoValor])

Valores devueltos

Lógico

Parámetros

cNombrePropiedad
Especifica el nombre de la nueva propiedad que se va a agregar al objeto.
eNuevoValor
Especifica el valor con que se establece la nueva propiedad. Si se omite eNewValue, el valor de la nueva propiedad no se cambia si la propiedad ya existe o se establece en el valor falso (.F.) para una propiedad nueva.

Observaciones

El método AddProperty( ) permite agregar una propiedad a un objeto en tiempo de ejecución. La nueva propiedad es agregada como una propiedad PUBLIC.

También puede crear matrices de propiedades para un objeto. Cada elemento en la matriz de propiedades se inicializa con eNuevoValor si este se incluye; en caso contrario, cada elemento de la matriz contendrá el valor Falso (.F.). El siguiente código muestra cómo se puede crear una matriz de propiedades para un objeto:

oMyForm = CREATEOBJECT('Form')
oMyForm.AddProperty('MyArray(2)', 1)  && Agrega una matriz como una propiedad
oMyForm.MyArray(2) = 'Dos'
CLEAR
? oMyForm.MyArray(1)  && Muestra 1
? oMyForm.MyArray(2)  && Muestra Dos

Si la propiedad con el nombre especificado no existe, será creada y devolverá un valor lógico Verdadero (.T.).

Si la propiedad ya existía con el nombre especificado, entonces AddProperty( ) devuelve lo siguiente:

  • Verdadero (.T.) si la nueva propiedad es una propiedad de matriz y la propiedad existente también es una propiedad de matriz. El tamaño de la matriz se cambia al de la nueva matriz. Si se especifica un valor con eNewValue, todos los elementos de la matriz se establecen con su valor. Si se omite eNuevoValor, todos los elementos de la matriz se establecen con falso (.F.).
  • Verdadero (.T.) si la nueva propiedad no es una propiedad de matriz y la propiedad existente es una propiedad de matriz. La propiedad sigue siendo una propiedad de matriz. Si se especifica un valor con eNuevoValor, todos los elementos de la matriz se establecen con su valor. Si se omite eNuevoValor, no se cambian los elementos de la matriz.
  • Verdadero (.T.) si la nueva propiedad no es una propiedad de matriz y la propiedad existente no es una propiedad de matriz o no es una propiedad nativa de Visual FoxPro de sólo lectura. Si se especifica un valor con eNuevoValor, la propiedad existente se establece con su valor. Si se omite eNuevoValor, no se cambia el valor de la propiedad existente.
  • Falso (.F.) si la nueva propiedad es una propiedad de matriz y la propiedad existente no es una propiedad de matriz. No se cambia la propiedad existente.
  • Se genera un error "La propiedad <NombrePropiedad> es de sólo lectura" si la propiedad existente es una propiedad nativa de Visual FoxPro de sólo lectura como la propiedad BaseClass.
  • Se genera un error "El nombre de propiedad es incorrecto" si el nombre de propiedad no es válido (el nombre de propiedad contiene un espacio u otro carácter no válido).

El método AddProperty( ) solo trabaja con algunos objetos nativos de Visual FoxPro. Puede utilizar la función ADDPROPERTY( ) para agregar una propiedad a cualquier objeto que trabaje con Visual FoxPro, como por ejemplo objetos COM o aquellos creados con la propiedad SCATTER...NAME. Para más información, vea ADDPROPERTY( ) (Función).

Vea también

DEFINE CLASS (Comando) | NewObject (Método) | SaveAs (Método) | SaveAsClass (Método)

Se aplica a: CheckBox (Control) | Collection (Clase) | Column (Objeto) | ComboBox (Control) | CommandButton (Control) | CommandGroup (Control) | Container (Objeto) | Control (Objeto) | Cursor (Objeto) | CursorAdapter (Clase) | Custom (Objeto) | DataEnvironment (Objeto) | EditBox (Control) | Exception (Clase) | Form (Objeto) | FormSet (Objeto) | Grid (Control) | Header (Objeto) | Image (Control) | Label (Control) | Line (Control) | ListBox (Control) | OLE Bound (Control) | OLE Container (Control) | OptionButton (Control) | OptionGroup (Control) | Page (Objeto) | PageFrame (Control) | ProjectHook (Objeto) | Relation (Objeto) | _SCREEN (Variable del sistema) | Separator (Objeto) | Session (Objeto) | Shape (Control)) | Spinner (Control) | TextBox (Control) | Timer (Control) | ToolBar (Objeto)


AddTableSchema (Método)

Agrega un nuevo objeto XMLTable a la colección Tables de XMLAdapter y los objetos XMLField necesarios, a la colección Fields de XMLTable, basado en el alias de tabla especificado.

Los siguientes parámetros deben convertirse a Unicode antes de pasarlos como parámetros a AddTableSchema:

  • cXMLName
  • cXMLNamespace
  • cXMLPrefix

Puede usar la función STRCONV( ) para cumplir con esta exigencia.

XMLAdapter.AddTableSchema( cAlias [, lElementBased [, cXMLName
[, cXMLNamespace [, cXMLPrefix [, lWrapMemoInCDATA [, lWrapCharacterInCDATA ]]]]]] )

Parámetros

cAlias
Especifica el alias de una tabla o cursor Visual FoxPro a utilizar como una plantilla de esquema.
lElementBased
Especifica el estilo de XML. El valor predeterminado de lElementBased es Verdadero (.T.).
cXMLName
Especifica el nombre a utilizar para la tabla en el XML y debe convertirse a Unicode antes de pasarlo como un parámetro. El valor predeterminado para el parámetro cXMLName es el valor del parámetro cAlias. La conversión a Unicode se realiza automáticamente.
cXMLNamespace
Especifica el XML Namespace a utilizar, el cual debe convertirse a Unicode antes de pasarlo como un parámetro. El valor predeterminado es una cadena vacía ("").
cXMLPrefix
Especifica el XML Prefix a utilizar, el cual debe convertirse a Unicode antes de pasarlo como un parámetro. El valor predeterminado es una cadena vacía ("").
lWrapMemoInCDATA
Especifica si ajustar campos Memo en secciones CDATA. El valor predeterminado se especifica por la propiedad WrapMemoInCDATA para el objeto XMLAdapter.
lWrapCharacterInCDATA
Especifica si ajustar campos Carácter en secciones CDATA. El valor predeterminado se especifica por la propiedad WrapCharInCDATA para el objeto XMLAdapter.

Observaciones

La configuración de las siguientes propiedades afecta cómo se ejecuta el método AddTableSchema:

  • DisableEncode
  • NoCpTrans
  • WrapCharInCDATA
  • WrapMemoInCDATA

Vea también

Métodos | XMLAdapter (Objeto: propiedades, métodos y eventos) | Tables (XMLAdapter) (Colección) | XMLField (Clase) | Fields (XMLTable) (Colección) | STRCONV( ) (Función) | Memo (Tipo de campo) | Carácter (Tipo de dato)

Se aplica a: XMLAdapter (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


AddToSCC (Método)

Agrega un archivo de un proyecto al control de código fuente.

Object.AddToSCC( )

Observaciones

Devuelve el valor verdadero (.T.) si el archivo se agrega correctamente al control de código fuente. Devuelve el valor falso (.F.) si el archivo no se pudo agregar al control de código fuente o si el proyecto no está bajo el control del código fuente.

Vea también

CheckIn (Método) | CheckOut (Método) | GetLatestVersion (Método) | RemoveFromSCC (Método) | UndoCheckOut (Método)

Se aplica a: File (Objeto)


ApplyDiffgram (Método)

Aplica un DiffGram a una tabla local Visual FoxPro.

ApplyDiffgram sólo es soportado por objetos XMLTable de la colección Tables de XMLAdapter. ApplyDiffgram ignora objetos XMLField cuando la propiedad Aliasde XMLField está vacía.

XMLTable.ApplyDiffgram( [ cAlias [, oCursorAdapter [, lPreserveChanges [, Reserved ]]]] )

Parámetros

cAlias
Especifica el alias de un cursor destino. El valor predeterminado de cAlias es la propiedad Alias de XMLTable, incluso cuando cAlias es una cadena vacía ("").
oCursorAdapter
Especifica un objeto CursorAdapter preexistente.

ApplyDiffgram asocia el cursor temporal con el búfer de la tabla, que contiene los cambios, al objeto especificado CursorAdapter. ApplyDiffgram también aplica cualquier actualización, tales como registros modificados, insertados o borrados, a la tabla base establecida para el objeto CursorAdapter o al cursor que coincide con la propiedad Alias del objeto XMLTable.

Si no suministra un valor para oCursorAdapter, ApplyDiffgram automáticamente controla la actualización de la tabla base.

Nota Puede actualizar el origen de datos remoto utilizando el método ApplyDiffgram si el CursorAdapter está configurado para tal propósito.
lPreserveChanges
Especifica que cuando suministre un objeto CursorAdapter personalizado y ApplyDiffgram falle, si mantener el cursor, con cambios, asociado al objeto CursorAdapter y mantener intacto cualquier cambio a las propiedades del CursorAdapter.

En la siguiente tabla se describen los valores para lPreserveChanges.

lPreserveChanges | Descripción
Verdadero (.T.) | Mantiene asociado el cursor con los cambios, al cursor adapter, y mantiene intactos los cambios a las propiedades del cursor adapter. (Predeterminado)
Falso (.F.) | Libera el cursor con los cambios y revierte cualquier cambio que se haya hecho a las propiedades del cursor adapter.
Reserved
Reservado para uso futuro. El valor predeterminado es 0.

Observaciones

Visual FoxPro comprueba la propiedad XMLField Keyfield cuando ejecute ApplyDiffgram.

Consejo Cuando utilice actualización automática, debe establecer las propiedades apropiadas XMLField Keyfield en la colección Fields, como Verdadero (.T.) para mejorar el rendimiento de la actualización.

Visual FoxPro cambia las propiedades para un CursorAdapter personalizado, en la siguiente forma:

  • Si la propiedad Tables está vacía, Visual FoxPro la establece como la tabla especificada por el parámetro cAlias.
  • Visual FoxPro establece SendUpdates a Verdadero (.T.).
  • Si la propiedad DataSource está vacía, Visual FoxPro la establece "Native".
  • Si la propiedad KeyFieldList está vacía, Visual FoxPro agrega capos clave sólo está especificado de esta forma. De otro modo, Visual FoxPro agrega todos los campos.
  • Si KeyFieldList se modifica, Visual FoxPro establece la propiedad WhereType a Campos Clave (DB_KEY o 1).
  • Si la propiedad UpdatableFieldList está vacía, Visual FoxPro agrega todos los campos.
  • Si la propiedad UpdateNameList está vacía, Visual FoxPro agrega todos los campos y utiliza la tabla especificada por el parámetro cAlias como la tabla base.

Después de aplicar el DiffGram, Visual FoxPro restablece los valores de todas las propiedades listadas, a su estado anterior.

Vea también

Métodos | XMLTable (Objeto: propiedades, métodos, eventos) | Tables (XMLAdapter) (Colección) | XMLField (Clase) | Alias (Propiedad) | CursorAdapter (Clase) | Fields (XMLTable) (Colección) | CursorAdapter (Objeto: propiedades, métodos y eventos)

Se aplica a: XMLTable (Clase)


Attach (Método)

Conecta un Documento XML Document Object Model (DOM) existente o elemento DOM, y opcionalmente, el esquema XML, al Objeto XMLAdapter.

Attach también configura la Propiedad XMLAdapter IXMLDOMElement. Adicionalmente, si el esquema XML es analizado, Visual FoxPro vuelve a llenar la colección de Tables con una nuevo conjunto de Objetos XMLTable y establece los valores apropiados a las siguientes Propiedades XMLAdapter:

  • XMLName
  • XMLNamespace
  • XMLPrefix
  • IsDiffgram
  • SOM
XMLAdapter.Attach( oDOM [, oSchema ] )

Parámetros

oDOM
Especifica un objeto Documento Microsoft XML Core Services (MSXML) 4.0 DOM ó un Objeto lXMLDOMElement existente..
oSchema
Especifica un objeto Documento MSXML 4.0 Schema Object Model (SOM), un Objeto DOM con un nodo de esquema como elemento base, o un Objeto IXMLDOMElement, que representa el esquema.

Si se especifica un valor para oSchema, Visual FoxPro ignora el valor de XMLAdapter XMLSchemaLocation y analiza el esquema. Sin embargo, XMLSchemaLocation determina si el esquema XML se analiza.

Observaciones

El método Attach facilita la carga de los resultados devueltos por un Servicio Web donde la configuración normal de datos retorna dos Nodos IXMLDOM con Item(0) como esquema (oSchema) y con Item(1) para los datos (oDom). Se pueden conectar ( attach) esto dos nodos en vez de llamar a LoadXML contra una cadena de caracteres.

Las siguientes configuraciones de Propiedad afectan como el método Attach es ejecutado.:

  • DisableEncode
  • MapN19_4ToCurrency
  • NoCpTrans
  • WrapCharInCDATA
  • WrapMemoInCDATA
  • XMLSchemaLocation

Vea también

Métodos | XMLAdapter (Objeto: propiedades, métodos y eventos) | IXMLDOMElement (Propiedad) | Tables (XMLAdapter) (Colección) | XMLField (Clase) | LoadXML (Método)

Se aplica a: XMLAdapter (Clase)


AutoFit (Método)

Se utiliza para controlar el ajuste automático del tamaño de las columnas. AutoFit reajusta el tamaño de todas las columnas visibles a nivel de la Cuadrícula o del BROWSE, y reajusta solo la columna afectada a nivel de Columna.

Objeto.AutoFit( )

Valores devueltos

Tipo de datos lógico. AutoFit devuelve Verdadero (.T.) si el ajuste de las columnas ha tenido éxito, y Falso (.F.) en caso contrario.

Observaciones

Configurar la propiedad AllowAutoColumnFit no afecta al ajuste realizado por AutoFit ni a nivel de Cuadrícula ni a nivel de Columna. Se puede ignorar AllowAutoColumnFit al usar AutoFit.

Para los objetos Column, AutoFit trabaja exclusivamente con controles TextBox. Cuando se reajusta el tamaño de una columna se desencadena su evento Resize.

Se puede evitar el reajuste automático de una columna particular cambiando el valor de la propiedad Resizable a Falso (.F.).

Las columnas ocultas de una cuadrícula que tienen su propiedad Visible establecida como Falso (.F.) y su propiedad Width en 0, no cambian de tamaño.

Vea también

Métodos | Ajuste automático de columnas a los datos | AllowAutoColumnFit (Propiedad) | Resizable (Propiedad)

Se aplica a: Grid (Control) | BROWSE...NAME (Comando) | Column (Objeto)


AutoOpen (Método)

Ejecuta el método CursorFill sin enviar parámetros. Cuando el objeto CursorAdapter está en el entorno de datos, este llama automáticamente al método AutoOpen desde el método OpenTables del entorno de datos.

CursorAdapter.AutoOpen()

Valores devueltos

Tipo de datos Lógico. AutoOpen devuelve Verdadero (.T.) si ha tenido éxito. En caso contrario, Visual FoxPro produce un error.

Observaciones

Se puede evitar el método AutoOpen usando el comando NODEFAULT y llamando explícitamente a CursorFill.

Vea también

Métodos | CursorAdapter (Objeto: propiedades, métodos y eventos) | CursorFill (Método) | AutoOpenTables (Propiedad) | NODEFAULT (Comando)

Se aplica a: CursorAdapter (Clase)


Box (Método)

Dibuja un rectángulo en un objeto Form.

Object.Box(nXCoord1, nYCoord1, nXCoord2, nYCoord2)

- O bien -

Object.Box(nXCoord2, nYCoord2)

Parámetros

nXCoord1, nYCoord1
Especifica las coordenadas del punto inicial del rectángulo. El método ScaleMode del formulario determina la unidad de medida empleada. Si omite estos argumentos, se utilizará el valor de CurrentX y CurrentY.
nXCoord2, nYCoord2
Especifica el punto final del rectángulo.

Observaciones

El ancho de las líneas dibujadas depende de la configuración de la propiedad DrawWidth. El modo en que se dibuja un rectángulo en el fondo depende de las configuraciones de las propiedades DrawMode y DrawStyle. Cuando se llama al método Box, las propiedades CurrentX y CurrentY se establecen como el punto final especificado por los dos últimos argumentos.

Vea también

CurrentX, CurrentY (Propiedades) | DrawMode (Propiedad) | DrawStyle (Propiedad) | DrawWidth (Propiedad) | ScaleMode (Propiedad)

Se aplica a: Form (Objeto) | _SCREEN


Build (Método)

Vuelve a generar un proyecto o crea un archivo de aplicación (.app), una biblioteca de vínculos dinámicos (.dll) o un archivo ejecutable (.exe) a partir de un proyecto.

Object.Build([cOutputName] [, nBuildAction] [, lRebuildAll] [, lShowErrors] [, lBuildNewGUIDs])

Parámetros

cOutputName
Especifica el nombre de la aplicación, biblioteca de vínculos dinámicos o archivo ejecutable que se crea.

Si cOutputName incluye una extensión de archivo y nBuildAction se omite, la extensión de archivo indicada en cOutputName determina el tipo de archivo compilado. Por ejemplo, si la extensión indicada en cOutputName es ".exe", se genera un archivo ejecutable.

nBuildAction
Especifica que se regenere el proyecto o se genere una aplicación, una biblioteca de vínculos dinámicos o un archivo ejecutable.

La tabla siguiente muestra los valores de nBuildAction con una descripción de cada uno.

nBuildAction | Constante FoxPro.H | Descripción
1 | BUILDACTION_REBUILD | (Valor predeterminado) Vuelve a generar el proyecto
2 | BUILDACTION_BUILDAPP | Crea un archivo .app
3 | BUILDACTION_BUILDEXE | Crea un archivo .exe
4 | BUILDACTION_BUILDDLL | Crea un archivo.dll
5 | BUILDACTION_BUILDMTDLL | Crea un archivo.dll multiproceso

Si cOutputName no incluye una extensión, se agrega la extensión apropiada.

lRebuildAll
Especifica si los archivos del proyecto se recompilan antes de crear un archivo .app, .dll o .exe. Si lRebuildAll es Verdadero (.T.), se recompila lo siguiente:
  • Archivos de programa
  • Archivos de formato
  • Código fuente en formularios, etiquetas, informes y bibliotecas de clases visuales.
  • Procedimientos almacenados en bases de datos

Si lRebuildAll es falso (.F.) o se omite, los archivos del proyecto no se vuelven a compilar antes de crear un archivo .app, .dll o .exe.

lShowErrors
Especifica si se muestran los errores de compilación en una ventana de edición al terminar la compilación. Si lShowErrors es Verdadero (.T.), los errores se muestran. Si lShowErrors es falso (.F.) o se omite, los errores de compilación no se muestran.
lBuildNewGUIDs
Especifica si se generan los nuevos GUID (identificadores exclusivos globales) del registro cuando se crea un archivo ejecutable o una biblioteca de vínculos dinámicos. Si lBuildNewGUIDs es verdadero (.T.), se generan los nuevos GUID. Si lBuildNewGUIDs es falso (.F.) o se omite, no se generan los nuevos GUID. lBuildNewGUIDs se pasa por alto si nBuildAction es menor que 3.

Observaciones

Se devuelve un valor Verdadero (.T.) si el proyecto se recompila correctamente o se crea un archivo .app, .dll o .exe sin errores; de lo contrario, se devuelve Falso (.F.).

Vea también

BUILD APP | BUILD DLL | BUILD EXE | BUILD PROJECT | CREATE PROJECT | MODIFY PROJECT | Refresh (Método)

Se aplica a: Project (Objeto)


ChangesToCursor (Método)

Crea un cursor con buffer de tabla y lo llena con valores provenientes del DiffGram asociado.

Nota ChangesToCursor solo se puede utilizar en objetos XMLTable en la colección Tables de XMLAdapter. ChangesToCursor ignora objetos XMLField cuando la propiedad Alias de XMLField está vacía.
XMLTable.ChangesToCursor( [ cAlias [, lIncludeUnchangedData [, Reserved ]]] )

Parámetros

cAlias
Especifica el nombre de alias del cursor que será creado. El valor de cAlias está predeterminado al de la propiedad Alias de XMLTable, incluso cuando cAlias es una cadena vacía ("").
lIncludeUnchangedData
Indica si se deben incluir datos sin modificar en el cursor creado. La siguiente tabla muestra los valores para lIncludeUnchangedData.
lIncludeUnchangedData | Descripción
Falso (.F.) | No incluye datos sin modificar en el cursor creado. (Predeterminado)
Verdadero (.T.) | Incluye datos sin modificar en el cursor creado.
Reserved
Reservado para uso futuro. El valor predeterminado es 0.

Observaciones

Cuando asigne campos binarios a datos tipo Carácter, Visual FoxPro llena los espacios en blanco restantes con caracteres 0x00 (CHR(0) o ceros) después de decodificar.

Vea también

Métodos | XMLTable (Objeto: propiedades, métodos, eventos) | Tables (XMLAdapter) (Colección) | Alias (Propiedad)

Se aplica a: XMLTable (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


CheckIn (Método)

Protege las modificaciones realizadas en un archivo de proyecto bajo control de código fuente.

Object.CheckIn( )

Observaciones

Se devuelve verdadero (.T.) si se protege correctamente el archivo. Se devuelve falso (.F.) si no se pudo proteger el archivo en el control de código fuente o si el proyecto no está bajo control de código fuente.

Vea también

AddToSCC (Método) | CheckOut (Método) | GetLatestVersion (Método) | RemoveFromSCC (Método) | UndoCheckOut (Método)

Se aplica a: File (Objeto)


CheckOut (Método)

Desprotege un archivo que está bajo control de código fuente y le permite hacer modificaciones en el archivo.

Object.CheckOut( )

Observaciones

Se devuelve verdadero (.T.) si se desprotege correctamente el archivo del control de código fuente. Se devuelve falso (.F.) si no se pudo desproteger el archivo o si el proyecto no está bajo control de código fuente.

Vea también

AddToSCC (Método) | CheckIn (Método) | GetLatestVersion (Método) | RemoveFromSCC (Método) | UndoCheckOut (Método)

Se aplica a: File (Objeto)


Circle (Método)

Dibuja un círculo o una elipse en un formulario.

Object.Circle (nRadius [, nXCoord, nYCoord [, nAspect]])

Parámetros

nRadius
Especifica el radio del círculo o de la elipse. La propiedad ScaleMode del formulario determina la unidad de medida empleada.
nXCoord, nYCoord
Especifica las coordenadas para el punto central del círculo o la elipse. La propiedad ScaleMode del formulario determina las unidades de medida empleadas.
nAspect
Especifica la proporción dimensional del círculo. El valor predeterminado es 1,0, que produce un círculo perfecto (no elíptico). Los valores superiores a 1,0 producen una elipse vertical; los valores inferiores a 1,0 producen una elipse horizontal.

Observaciones

Para controlar el ancho de la línea empleada para dibujar el círculo o la elipse, establezca la propiedad DrawWidth.

Para controlar el modo en que se dibuja el círculo en el fondo, establezca las propiedades DrawMode y DrawStyle.

Para rellenar un círculo, establezca las propiedades FillColor y FillStyle del formulario.

Cuando se invoca el método Circle, CurrentX y CurrentY se establecen en los argumentos de punto central, nXCoord, nYCoord.

Vea también

BackColor (Propiedad) | CurrentX, CurrentY (Propiedades) | DrawMode (Propiedad) | DrawStyle (Propiedad) | DrawWidth (Propiedad) | FillColor (Propiedad) | FillStyle (Propiedad) | ForeColor (Propiedad) | ScaleMode (Propiedad)

Se aplica a: Form (Objeto) | _SCREEN


Métodos del Examinador de clases

El Examinador de clases tiene asociados los siguientes métodos.

AddClass( )
Copia una clase de un archivo de biblioteca de clases (.vcx) a otro. Se utiliza después de las operaciones de arrastrar y soltar entre instancias del Examinador de clases y depende de la propiedad oSource. Si la clase especificada no existe, se crea una nueva.
AddFile( )
AddFile([cFileName][, lIgnoreRefresh])

Agrega un archivo de biblioteca de clases (.vcx) o formulario (.scx) a la lista del Examinador de clases. Si no se pasan parámetros, aparece un cuadro de diálogo Añadir archivo al utilizar el método GetFile( ) del examinador de clases. Si lIgnoreRefresh es Verdadero (.T.), no se refresca la lista del Examinador de clases. Si está agregando varios archivos, puede esperar a que todas las clases sean agregadas antes de refrescar la lista.

AddIn( )
AddIn(cName[, cProgram] [, cMethod] [, cFileFilter] [, cPlatform] [, cComment])

Instala o elimina el complemento especificado es la tabla de registro Browser.dbf.

Parameters

  • cNameEspecifica el nombre del complemento. No se distingue entre mayúsculas y minúsculas, aunque al aparecer en un menú figurará como se haya escrito.
  • cProgramEspecifica el nombre de un programa (.PRG), formulario (.scx), aplicación (.APP), archivo ejecutable (.EXE) o programa compilado (.FXP) que se va a ejecutar. Si no se indica la extensión, se supondrá que es .PRG. Si se indica el nombre de una biblioteca de clases (.vcx) específica y el nombre de una nueva clase, ésta se creará en la biblioteca.
    Nota Si el argumento es .NULL., se marca el complemento para su eliminación en Browser.dbf y se desactiva en el menú contextual del complemento.
  • cMethodEspecifica el nombre de un método que se utilizará como enlace de un evento. Si está vacío, el complemento aparecerá en el menú.
  • cFileFilterEspecifica una lista de bibliotecas de clases y formularios que activan el complemento. Si está vacío, el complemento estará disponible para todas las bibliotecas de clases (.vcx) y todos los formularios (.scx).
  • cPlatformEspecifica la plataforma en que está disponible el complemento. Si está vacío, el complemento estará disponible en todas las plataformas que admite Visual FoxPro.
  • cCommentEspecifica el texto almacenado en un campo memo de Browser.dbf.
AddInMenu( )
Expande el menú que muestra los complementos registrados.
AddInMethod( )
AddInMethod(cObjMethod)

Ejecuta cualquier complemento registrado para el método del objeto especificado.

Ejemplo: Para cambiar el comportamiento predeterminado del botón Ayuda del Examinador de clases, utilice el código siguiente:

_OBROWSER.AddInMethod("cmdHelp.click")
AutoRefresh( )
Determina si se actualizará la presentación después de comprobar si hay información de biblioteca de clases (.vcx) actualizada en la clase seleccionada en la lista de clases y comprobar también el número total de registros del archivo de biblioteca de clases (.vcx) que se está modificando. Este método se ejecuta cuando se activa el formulario del Examinador de clases.
BinToInt( )
BinToInt([cBinaryValue])

Devuelve el equivalente entero (integer) de una cadena que representa un valor binario. Por ejemplo, pasar a este método un cBinaryValue de "11001" devolverá 25.

CleanUpFile( )
Elimina registros del archivo de biblioteca de clases (.vcx) asociado a la clase seleccionada en la lista de clases.
ClearBrowser( )
Sólo uso interno.
ClearClass( )
ClearClass([lClearAll])

Limpia la cache de clase de la memoria con el comando CLEAR CLASS para una clase específica, o todas las clases mostradas, si lClearAll está establecida a Verdadero (.T.).

NewClass( )
Crea una subclase de la clase seleccionada en la lista de clases.
DeactivateMenu( )
Crea una subclase de la clase seleccionada en la lista de clases.
DisplayMenu( )
DisplayMenu(tnMenuMode)

Muestra el menú contextual a la localización actual del puntero del ratón. Si tnMenuMode es cero (0), el Examinador de clases muestra el formulario de menú contextual; si 1, el menú contextual de la lista de clases; si 2, el menú contextual de los miembros de la lista.

DoAddIn( )
DoAddIn([cAddInName])

Ejecuta el complemento especificado del registro actual o especificado de la tabla con el alias BROWSER.

FileMatch( )
FileMatch(cFileName, cFileList)

Compara el archivo especificado con la lista de archivos especificados para determinar si el archivo es uno de los asociados con el componente.

ExportClass( )
ExportClass([lShow] [, tcExportToFileName])

Genera y muestra la definición del código fuente o de la clase o archivo seleccionado de la lista de clases.

Parameters

  • lShowEspecifica si se muestra el código. Si el parámetro lShow es verdadero (.T.), el código aparecerá en la ventana del Examinador de clases.
  • tcExportToFileName Especifica el nombre del archivo que va a recibir el código.
FindClass( )
FindClass([cFind])

Busca clases de texto dentro de una clase.

FormAddObject( )
FormAddObject(oObject [, nXCoord] [, nYCoord] [, lActivateForm] [, lDesignMode][, lNoShow] [, lNoErrors] [, lBuilder] [, oForm])

Agrega una instancia de la clase, seleccionada de la lista de clases, a un formulario externo.

Parameters

  • oObject Especifica una referencia al contenedor destino. Los valores pueden ser: "command" para la ventana comandos, "screen" para el escritorio de Visual FoxPro, o "new". Puede implementar estas opciones con los siguientes comandos:
    _oBrowser.FormAddObject("command")
_oBrowser.FormAddObject("-screen")
_oBrowser.FormAddObject("new")
  • nXCoordEspecifica la posición horizontal del objeto en el contenedor. Si no se pasa ningún valor, se utilizará la posición actual del ratón.
  • nYCoordEspecifica la posición vertical del objeto en el contenedor. Si no se pasa ningún valor, se utilizará la posición actual del ratón.
  • lActivateFormSi es verdadero (.T.), el formulario de destino se activa cuando se le agrega el objeto. Si es falso (.F.), el Examinador de clases permanecerá activo.
  • lDesignModeSi es verdadero (.T.), la referencia es a un objeto que se encuentra actualmente en el Diseñador de formularios o el Diseñador de clases.
  • lNoShowSi es verdadero (.T.), la referencia es a un objeto que se encuentra actualmente en el Diseñador de formularios o en el Diseñador de clases.
  • lNoErrorsEspecifica si se pasan por alto los errores generados al crear una instancia. Si es falso (.F.), se muestran los errores en el Examinador de clases.
  • lBuilderEspecifica si se inicia un generador personalizado cuando se agregue el objeto a un contenedor.
  • oFormEspecifica el contenedor al que se agrega un objeto. oForm, un parámetro opcional, se utiliza principalmente para contener el objeto contenedor en modo de diseño.
FormatMethods( )
FormatMethods(cMethods)

Estructura el texto de los métodos generados en el despliegue del código de definición de clase.

FormatProperties( )
FormatProperties(cProperties [, lAddObjectMode])

Estructura el texto de las propiedades generadas en el despliegue del código fuente de definición de clase.

GetFile( )
GetFile([cFileExt])

Abre el cuadro de diálogo GetFile( ) del Examinador de clases. El método GetFile( ) es utilizado internamente por los botones Abrir o Agregar en el Examinador de clases. Siempre que el Examinador de clases pregunte por una biblioteca de clases (.vcx) o formulario (.scx), el método GetFile( ) es llamado internamente.

GetTimeStamp( )
GetTimeStamp([ntimestamp])

Devuelve el carácter equivalente de un valor marca de tiempo (timestamp). Si no se pasa ningún parámetro, devuelve una cadena de marca de tiempo del archivo actualmente seleccionado.

IndentText( )
IndentText(cCode)

Indenta un tabulador a un bloque de texto.

IntToBin( )
IntToBin([nInteger])

Devuelve una cadena que representa un valor binario que es equivalente a un valor entero. Por ejemplo, al pasar a este método un nInteger de 25 devolverá "11001".

ModifyClass( )
Abre la clase seleccionada en el Diseñador de clases.
MsgBox( )
MsgBox(cMessage [, nType] [, cTitle])

Muestra el cuadro de mensaje del Examinador de clases. Similar a la función MESSAGEBOX( ) de Visual FoxPro.

NewFile( )
NewFile([cFileName] [, lOpenFile])

Crea un nuevo archivo de biblioteca de clases (.vcx). Si no se pasan parámetros, se muestra el cuadro de diálogo Abrir. Si se pasan parámetros, se crea una clase nueva (.vcx) y se añade a la lista de clases en el Examinador de clases.

OpenFile( )
OpenFile([cFileName])

Abre una biblioteca de clases (.vcx) o formulario (.scx) existentes. Si no se proporciona un nombre de archivo aparece el cuadro de diálogo Abrir.

ProperBaseClass( )
ProperBaseClass(cBaseClass)

Devuelve el nombre de la clase base con las mayúsculas necesarias. Por ejemplo, "combobox" devolverá "ComboBox".

RedefineClass( )
RedefineClass([cAsClass] [, cClassLoc])

Cambia la clase padre de la clase seleccionada de la lista de clases.

RefreshButtons( )
Actualiza los botones de comando del Examinador de clases según el tipo de archivo.
RefreshClassIcon( )
Vuelve a cargar el icono de clase del archivo de icono.
RefreshClassList( )
RefreshClassList([cDefaultClass] [, lIgnoreTable])

Refresca la lista de clases.

RefreshClassListSubclass( )
Sólo para uso interno.
RefreshFileAttrib( )
Actualiza el estado de los atributos del archivo asociado a la clase seleccionada en la lista de clases.
RefreshCaption( )
Actualiza el título del Examinador de clases para un formulario.
RefreshDescriptions( )
Sólo uso interno. Actualiza las descripciones de clases y miembros.
RefreshMembers( )
RefreshMembers([tcDefaultMember])

Refresca la ficha Miembros para mostrar la información asociada con la clase seleccionada de la lista de clases y, si se proporciona, el miembro especificado.

RefreshParentClassBrowser( )
Actualiza la barra de herramientas del examinador de la clase primaria.
RefreshPrefRecNo( )
Actualiza el puntero al registro de preferencias de Browser.dbf para el archivo de biblioteca de clases (.vcx) o formulario (.scx) que se está modificando.
RefreshRecNo( )
Actualiza el puntero de registro activo de la tabla de biblioteca de clases (.vcx) o formulario (.scx) para el archivo de la clase seleccionada.
RemoveClass( )
RemoveClass([lConfirm])

Elimina la clase seleccionada en la lista de clases del archivo de biblioteca de clases (.vcx) asociado.

RenameClass( )
RenameClass([cToClass])

Cambia el nombre de la clase seleccionada en la lista de clases.

ResetDefaults( )
Restaura la configuración de presentación original. Se llama a este método cuando elige la opción Restaurar predeterminados en el menú contextual.
SavePreferences( )
Guarda las preferencias activas en la tabla de registro de Browser.dbf.
ScaleResize( )
Cambia el tamaño de los controles del formulario del Examinador de clases para adaptarlos al nuevo tamaño creado con el evento Resize( ).
SeekClass( )
SeekClass([cClass][, cClassLibrary])

Mueve el puntero de la lista de clases a una clase específica o índice en la lista de clases. Puede utilizar el valor numérico de la posición visual en la lista de clases.

SeekMember( )
SeekMember(tcMember)

Mueve el puntero de la lista de miembros a un miembro específico.

SeekParentClass( )
Muestra la clase primaria que corresponde a la clase seleccionada en la lista de clases.
SetBusyState( )
SetBusyState(lBusyState)

Establece la propiedad lBusyStatus a Verdadero (.T.) o Falso (.F.) basado en el parámetro recibido; establece además la forma del puntero del ratón a una fecha o reloj de arena.

SetFont( )
SetFont([cFontName][, nFontSize][, lFontBold][, lFontItalic])

Establece la fuente y su tamaño utilizado por el Examinador de clases para sus formularios, controles y cuadros de diálogo. Si no especifica un nombre o tamaño de fuente, SetFont( ) abre el cuadro de diálogo Fuente.

ShowMenu( )
ShowMenu(aMenu[, cOnSelection])

Muestra un menú basado en una matriz. Si un menú es una matriz unidimensional, este método muestra una lista en su menú. Si la matriz es bidimensional con un elemento y una acción, muestra los elementos del menú y cuando es seleccionado un elemento, ejecuta la acción asociada.

TrimExt( )
TrimExt(cFileName [, lPlatformType])

Trunca la extención del nombre del archivo.

TrimFile( )
TrimFile(cFileName [, lPlatformType])

Trunca el nombre del archivo y devuelve sólo el nombre del archivo y la ruta.

TrimPath( )
TrimPath(cFileName [, lTrimExt] [, lPlatformType])

Trunca la ruta del nombre.

UpdateReferences( )
UpdateReferences(tcOldClassLoc, tcOldClass, tcNewClassLoc, tcNewClass
[, tlAllInstances])

Utilizado para actualizar las referencias de clases (subclases y objetos miembros) al renombrar una clase y al mover una clase desde un examinador de clases a otro.

Parameters

  • tcOldClassLoc Especifica el contenido original del campo ClassLoc del archivo .vcx o .scx.
  • tcOldClass Especifica el contenido original del campo Class del archivo .vcx o .scx.
  • tcNewClassLoc Especifica el nuevo contenido del campo ClassLoc del archivo .vcx o .scx.
  • tcNewClass Especifica el nuevo contenido del campo Class del archivo .vcx o .scx.
  • tlAllInstances Si es verdadero (.T.), todos los archivos de todas las ventanas del Examinador de clases se actualizan. Si es falso (.F.), sólo se actualizan los archivos de la ventana Examinador de clases activa.
VersionCheck( )
VersionCheck([lShowErrorMsg])

Verifica el archivo de biblioteca de clases (.vcx) o formulario (.scx) abierto.

ViewProperty( )
ViewProperty(cProperty)

Muestra el valor de una propiedad especificada de la clase seleccionada.

WildcardMatch( )
WildcardMatch(cMatchExpList, cExpressionSearched)

Compara cadenas con caracteres comodín con los filtros especificados en el cuadro Tipo (Type).

Vea también

Examinar clases con el Examinador de clases | Botones del Examinador de clases | Métodos del Examinador de clases | Miembros objeto del Examinador de clases | Propiedades del Examinador de clases | Ventana Examinador de clases | Personalizar el Examinador de clases | Valores iniciales de las propiedades del Examinador de clases


CleanUp (Método)

Limpia una tabla del proyecto; para ello, quita los registros marcados para eliminación y empaqueta los campos memo.

Object.CleanUp(lRemoveObjectCode)

Parámetros

lRemoveObjectCode
Especifica si se quita el código de objeto almacenado en el campo OBJECT de la tabla del proyecto. Si lRemoveObjectCode es verdadero (.T.), se quita de la tabla el código del objeto. Si lRemoveObjectCode es falso (.F.) o se omite, no se quita el código del objeto.

El campo OBJECT contiene código de objeto para archivos de programa (.prg), menú (.mnx) y consulta (.qpr) del proyecto. Si se quita el código de objeto almacenado en el campo OBJECT de la tabla, la próxima vez que se genere el proyecto, se compila el código fuente y el código de objeto se vuelve a almacenar en el campo OBJECT.

Observaciones

Cada proyecto tiene una tabla correspondiente que contiene información del proyecto. Utilice el método CleanUp para reducir el tamaño de la tabla al quitar los registros marcados para su eliminación y al empaquetar los campos memo. Limpiar una tabla de proyecto reduce el tiempo que se tarda en volver a generar un proyecto grande o en crear un archivo de aplicación (.app), una biblioteca de vínculos dinámicos (.dll) o un archivo ejecutable (.exe) de un proyecto grande.

Vea también

BUILD APP | BUILD DLL | BUILD EXE | Build (Método) | BUILD PROJECT | CREATE PROJECT | MODIFY PROJECT

Se aplica a: Project (Objeto)


Clear (Método)

Borra el contenido de un control ComboBox o ListBox.

Object.Clear

Observaciones

El método Clear elimina todos los elementos de los controles ComboBox o ListBox; pero solo si la propiedad RowSourceType está establecida como 0 (Ninguno). Adicionalmente, establece en cero (0) la propiedad ListCount.

Vea también

AddItem (Método) | RemoveItem (Método) | RowSourceType (Propiedad)

Se aplica a: ComboBox | ListBox


ClearData (Método)

Borra todos los datos y formatos del objeto DataObject de la operación de arrastrar y soltar de OLE. Sólo está disponible en tiempo de ejecución.

oDataObject.ClearData

Observaciones

El método ClearData sólo se puede ejecutar en el evento OLEStartDrag; si llama al método ClearData desde los eventos OLEDragDrop u OLE DragOver, se generará un error.

Vea también

GetData (Método) | GetFormat (Método) | Técnica de arrastrar y soltar OLE | SetData (Método) | SetFormat (Método)

Se aplica a: DataObject (Objeto)


CloneObject (Método)

Duplica un objeto, incluidos todos los métodos, propiedades y eventos del mismo. Sólo está disponible en tiempo de ejecución.

Object.CloneObject(NewName)

Parámetros

NewName
Especifica el nombre del objeto nuevo o duplicado.

Vea también

SaveAs (Método) | SaveAsClass (Método)

Se aplica a: CheckBox (Control) | ComboBox (Control) | CommandButton (Control) | CommandGroup (Control) | Custom (Objeto) | EditBox (Control) | Grid (Control) | Image (Control) | Label (Control) | Line (Control) | ListBox (Control) | OLE Bound (Control) | OLE Container (Control) | OptionButton (Control) | OptionGroup (Control) | Page (Objeto) | PageFrame (Control) | Shape (Control) | Spinner (Control) | TextBox (Control) | Timer (Control) | ToolBar (Objeto)


Close (Método)

Cierra un proyecto y libera los objetos ProjectHook y Project del proyecto.

Object.Close( )

Observaciones

Cuando se ejecuta el método Close, se produce el evento ProjectHook.Destroy del proyecto. Después de que se produzca el evento ProjectHook.Destroy, se libera el objeto ProjectHook y, a continuación, se libera el objeto Project.

Vea también

CLOSE (Comandos) | Destroy (Evento) | ProjectHook (Objeto)

Se aplica a: Project (Objeto)


CloseTables (Método)

Hace que se cierren las tablas y las vistas asociadas con el entorno de datos.

DataEnvironment.CloseTables

Observaciones

Cierra las tablas y las vistas asociadas con objetos Cursor en el entorno de datos. Es posible volver a abrir las tablas y las vistas al llamar al método OpenTables.

Vea también

AfterCloseTables (Evento) | AutoCloseTables (Propiedad) | BeforeOpenTables (Evento) | OpenTables (Método)

Se aplica a: DataEnvironment


Cls (Método)

Borra gráficos y texto de un formulario.

Object.Cls

Observaciones

Cls borra texto y gráficos generados en tiempo de ejecución con instrucciones de gráficos e impresión. Los mapas de bits de fondo que se crean mediante la propiedad Picture y los controles situados en el formulario en tiempo de diseño no se ven afectados por el método Cls.

El método Cls restaura a 0 las propiedades CurrentX y CurrentY.

Vea también

Circle (Método) | CurrentX, CurrentY (Propiedades) | Line (Método) | Picture (Propiedad)

Se aplica a: Form (Objeto) | _SCREEN


CursorAttach (Método)

Asocia un cursor existente a la instancia actual de un objeto CursorAdapter.

CursorAdapter.CursorAttach( [ cAlias [, lInheritCursorProperties ] ] )

Parámetros

cAlias
Especifica el alias del cursor a asociar.

Cuando se especifica cAlias, CursorAttach llena la propiedad Alias del CursorAdapter con el alias del cursor o tabla especificada. Cuando cAlias no se especifica, CursorAttach intenta asociar al cursor o tabla, que deberá existir, especificado por el valor actual de la propiedad Alias del objeto CursorAdapter.

lInheritCursor
Especifica si se quiere conservar o desechar las propiedades del cursor o tabla asociado. La siguiente tabla muestra los valores posibles para lInheritCursorProperties.
lInheritCursorProperties | Descripción
Verdadero (.T.) | Las propiedades del cursor son heredadas por las correspondientes propiedades del objeto CursorAdapter.
False (.F.) o empty | Las propiedades del cursor no son copiadas a las correspondientes propiedades del objeto CursorAdapter.

Esta opción añade flexibilidad cuando se asocia un cursor generado por Paso a Través de SQL, Vistas Remotas, y otros.

Valores devueltos

Tipo de dato lógico. CursorAttach devuelve Verdadero (.T.) si el cursor se asocia correctamente y Falso (.F.) si la asociación falla.

Observaciones

Un cursor o tabla, solo puede tener una instancia de un objeto CursorAdapter asociado a el, al mismo tiempo.

Cuando Visual FoxPro asocia un cursor, no se puede modificar el cursor utilizando los comandos MODIFY STRUCTURE ni ALTER TABLE.

La llamada al método CursorAttach cierra el cursor actualmente asociado. Para conservar el cursor actualmente asociado, utilizar primero el método CursorDetach.

La llamada al método CursorAttach rellena la propiedad Alias de la instancia CursorAdapter con el alias del cursor o tabla asociada.

La llamada al método CursorAttach ajusta la propiedad BufferModeOverride a 3 o 5, dependiendo del valor de la propiedad BufferModeOverride del objeto CursorAdapter, si no está ya así. Si el valor de búfer ya está activado pero es menor que almacenamiento optimista de filas en búfer (3), Visual FoxPro lo asigna a este valor.

Visual FoxPro provoca un error en las siguientes circunstancias:

  • Si cAlias no se encuentra abierto.
  • Si CursorAttach intenta asociar un cursor que está ya asociado a otra instancia de un objeto CursorAdapter.

La propiedad Tables no debe hacer referencia a un cursor que se ha asociado a un objeto CursorAdapter a través del método CursorAttach.

Vea también

Métodos | CursorAdapter (Objeto: propiedades, métodos y eventos) | Alias (Propiedad) | ALTER TABLE - SQL (Comando) | MODIFY STRUCTURE (Comando) | CursorDetach (Método) | BufferModeOverride (Propiedad) | Actualizar datos remotos con paso a través de SQL

Se aplica a: CursorAdapter (Clase)


CursorDetach (Método)

Libera de la instancia actual de CursorAdapter el cursor asociado actualmente.

CursorAdapter.CursorDetach()

Valores devueltos

Dato tipo Lógico. CursorDetach devuelve Verdadero (.T.) si se consigue liberar el cursor y Falso (.F.) si no lo consigue.

Observaciones

Visual FoxPro conserva todas las configuraciones, como buffering, etc., disponible para un cursor normal, en el cursor liberado.

Visual FoxPro conserva todos los cambios no guardados. Por ejemplo, no necesita llamar la función TABLEUPDATE( ) antes de liberar el cursor.

Vea también

Métodos | CursorAdapter (Objeto: propiedades, métodos y eventos) | TABLEUPDATE( ) (Función) | BeforeCursorDetach (Evento) | AfterCursorDetach (Evento) | CursorAttach (Método)

Se aplica a: CursorAdapter (Clase)


CursorFill (Método)

Ejecuta el comando en la propiedad SelectCmd contra el origen de datos en la propiedad DataSource de CursorAdapter, crea un cursor, recupera datos y realiza cualquier conversión de datos que sea necesaria de acuerdo con las propiedades DataSourceType y CursorSchema de CursorAdapter.

CursorAdapter.CursorFill( [ lUseCursorSchema [, lNoData [, nOptions [, Source ] ] ] ] )

Parámetros

lUseCursorSchema
En la siguiente tabla se listan los valores para lUseCursorSchema.
lUseCursorSchema Descripción
Verdadero (.T.) Utiliza el esquema de la propiedad CursorSchema para crear el cursor.
Nota Visual FoxPro genera un mensaje de error cuando la propiedad CursorSchema requerida no existe o no es válida.
Falso (.F.) o vacío No utiliza el esquema de la propiedad CursorSchema para crear el cursor.

En su lugar, CursorFill crea el cursor utilizando los tipos de datos determinados normalmente por Visual FoxPro de acuerdo con la propiedad DataSourceType de CursorAdapter.
lNoData
En la siguiente tabla se listan los valores para lNoData.
lNoData | Descripción
Verdadero (.T.) Crea el cursor pero no lo llena con datos.

Cuando la propiedad DataSourceType de CursorAdapter es "ADO", y SelectCmd contiene parámetros, CursorFill intenta evaluar los parámetros en SelectCmd. Si CursorFill no puede evaluar los parámetros, utiliza valores nulos (.NULL.) para los valores de los parámetros.

Cuando la propiedad DataSourceType de CursorAdapter es "XML", CursorFill crea el cursor utilizando el esquema en la propiedad CursorSchema, independientemente del valor pasado a lUseCursorSchema. Si CursorSchema está vacía o no es válida, Visual FoxPro genera un error.
Falso (.F.) o vacío | Crea el cursor y lo llena con datos.

Si especifica lNoData para CursorFill, y SelectCmd es un comando SQL SELECT contra una vista parametrizada, Visual FoxPro continúa pidiendo que se entre el parámetro. Esta acción es equivalente a la siguiente instrucción:

SELECT * FROM "customers in specific country" WHERE 1=0
nOptions
Especifica valores numéricos o marcas para crear el cursor. El valor para nOptions también se utiliza para el método CursorRefresh.

En la siguiente tabla se listan los valores para nOptions dependiendo de la configuración de la propiedad DataSourceType de CursorAdapter.

DataSourceType | nOptions
"ADO" | Un entero que representa el tipo de Comando o los valores enumerados de Ejecución que quiere definir para el método Open del RecordSet ActiveX Data Object (ADO). El valor predeterminado es -1.
"XML" | Cualquier combinación de marcadores válidos para la función XMLTOCURSOR( ) excepto 8192, el cual se establece automáticamente cuando el parámetro lUseCursorSchema contiene un valor de Verdadero (.T.).
Source
Especifica una referencia a un comando ADO Command o un objeto RecordSet abierto.

El objeto ADO Command debe tener su propiedad ActiveConnection establecida al objeto ADO Connection apropiado que ya esté abierto. Cuando un objeto ADO Command se pasa a Source, Visual FoxPro establece la propiedad CommandText de ADO Command al valor de la propiedad SelectCmd de CursorAdapter. Visual FoxPro analiza cualquier parámetro en SelectCmd, crea y establece los valores de los parámetros en el objeto ADO Command. Entonces se ejecuta el método CursorFill de la siguiente manera:

CursorAdapter.DataSource.Open( Source,,,,Options )

En esta llamada, DataSource es el objeto ADO RecordSet en la propiedad DataSource de CursorAdapter y Source es el objeto ADO Command referenciado en este parámetro.

El objeto ADO RecordSet debe estar abierto cuando se pasa a Source, CursorFill se ejecuta contra el objeto ADO RecordSet y llena el cursor según el caso. En este caso, sólo la propiedad DataSourceType de CursorAdapter debe establecerse a "ADO". Las propiedades SelectCmd y DataSource de CursorAdapter no se utilizan.

Si no especifica un valor para Source, CursorFill se ejecuta de la siguiente forma:

CursorAdapter.DataSource.Open( CursorAdapter.SelectCmd,,,,Options )

En esta llamada, DataSource es el objeto ADO RecordSet en la propiedad DataSource de CursorAdapter. Sin embargo, el objeto ADO RecordSet ejecuta directamente la propiedad actual SelectCmd de CursorAdapter en lugar de utilizar un objeto ADO Command. El ADO RecordSet debe tener su propiedad ActiveConnection establecida un objeto ADO Connection válido.

Valores devueltos

Tipo de dato lógico. CursorFill devuelve Verdadero (.T.) si consiguió crear el cursor y Falso (.F.) si no lo consiguió.

Nota Si CursorFill devuelve Falso (.F.), se descarta el cursor. En este caso, los eventos BeforeCursorClose y AfterCursorClose no ocurren. Para recuperar la información de error cuando CursorFill devuelve Falso (.F.), debe llamar a la función AERROR( ) porque el comando ON ERROR no se ejecuta.

Observaciones

En la siguiente tabla se lista cómo se comporta CursorFill dependiendo del valor de la propiedad DataSourceType de CursorAdapter.

DataSourceType | Comportamiento de la propiedad SelectCmd
"Native" | CursorFill ejecuta SelectCmd, el cual debe contener un comando Visual FoxPro SQL SELECT válido.
"ADO" CursorFillejecuta SelectCmd llamando al método ADO RecordSet Open. Sin embargo debe establecer la propiedad DataSource de CursorAdapter a un objeto ADO RecordSet válido. Si SelectCmd contiene parámetros, debe especificar un objeto ADO Command válido en el parámetro Source de CursorFill.

Al cerrar manualmente el cursor, se cierra el objeto ADO RecordSet asociado. Sin embargo, esto no se aplica si el cursor se obtuvo utilizando el método CursorAttach.

CursorFill no establece la propiedad MaxRecords de ADO RecordSet al valor de la propiedad MaxRecords de CursorAdapter.
"ODBC" | CursorFill ejecuta SelectCmd utilizando el controlador de conexión de la propiedad DataSource del objeto CursorAdapter. Visual FoxPro devuelve el cursor utilizando SQL Pass-Through. El nombre del cursor corresponde al alias obtenido al llamar This.Alias.
"XML" Una de las siguientes:
  • SelectCmd es una expresión que se evalúa como un objeto XMLTable válido. CursorFill llama al método ToCursor de XMLTable, y se asocia el cursor resultante.
  • SelectCmd es una expresión, comando, o función que devuelve XML. CursorFill utiliza la función XMLTOCURSOR( ) para transformar el XML en un cursor. Para mas información, vea la siguiente lista de observaciones adicionales.

Adicionalmente, cuando DataSourceType se establece a "XML", y SelectCmd es una expresión, comando, o función que devuelve XML:

  • Los requisitos XML son los mismos que los establecidos para el primer parámetro de la función XMLTOCURSOR( ). Puede especificar estos requisitos pasando el valor apropiado nFlags de XMLTOCURSOR( ) al parámetro nOptions de CursorFill. Puede especificar marcadores adicionales para XMLTOCURSOR() o combinarlos como en XMLTOCURSOR().
  • CursorFill elige entre eExpression y cXMLFile de XMLTOCURSOR( ) basado en nOptions:
    • Si nOptions es 0, CursorFill procesa XMLSource como eExpression y prevé una variable de memoria que contenga en una cadena XML válida o una expresión que resulte en una cadena XML.
    • Si nOptions es 512, CursorFill procesa XMLSource como cXMLFile y prevé un literal de cadena con comillas ("") o una variable de memoria que contenga un nombre de archivo válido.
  • El parámetro cCursorName en XMLTOCURSOR( ) siempre es el valor actual de la propiedad Alias para el objeto CursorAdapter.
  • Si lUseCursorSchema es Verdadero (.T.), CursorFill automáticamente agrega el marcador 8192 para forzar la utilización del cursor existente para el XML.

Cuando Visual FoxPro llama a CursorFill, cierra el cursor asociado actualmente, si existe, y el área de trabajo que contiene el cursor creado mas recientemente se convierte en el área de trabajo activa.

Nota Si desea conservar el cursor asociado actualmente, llame al método CursorDetach antes de llamar a CursorFill.

Cuando Visual FoxPro asocia un cursor, no puede cambiar el cursor o tabla utilizando los comandos MODIFY STRUCTURE o SQL ALTER TABLE.

Vea también

Métodos | CursorAdapter (Objeto: propiedades, métodos y eventos)

Se aplica a: CursorAdapter (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


CursorRefresh (Método)

Actualiza un cursor con los datos actuales del origen de datos. CursorRefresh reejecuta el valor del parámetro SelectCmd del evento BeforeCursorRefresh con respecto a DataSourceType de CursorAdapter .

Nota Si el parámetro SelectCmd del evento BeforeCursorRefresh contiene parámetros, puede modificar el alcance de las filas que se devuelven a través de la consulta original cambiando los parámetros.
CursorAdapter.CursorRefresh()

Valores devueltos

Tipo de dato lógico. CursorRefresh devuelve Verdadero (.T.) si consigue llenar el cursor y Falso (.F.) si no consigue llenarlo.

Observaciones

CursorRefresh actualiza las siguientes propiedades para el cursor basado en ADO u ODBC con las correspondientes propiedades de CursorAdapter:

  • AllowSimultaneousFetch
  • CompareMemo
  • FetchAsNeeded
  • FetchMemo
  • FetchSize
  • MaxRecords
  • Prepared
  • UseMemoSize

Visual FoxPro genera un mensaje de error cuando el cursor contiene cambios que no se han guardado.

Si la propiedad DataSourceType de CursorAdapter es "ADO" cuando ejecute el método CursorFill de CursorAdapter, CursorRefresh se comporta de la siguiente forma:

  • El objeto CursorAdapter tiene un cursor asociado resultante de ejecutar SelectCmd utilizando CursorFill:
    • Establece la propiedad CommandText de ADO Command para el objeto ADO RecordSet ActiveCommand con el valor de SelectCmd utilizado para abrir el ADO RecordSet a menos que CommandText ya contenga este valor.
    • Actualiza los parámetros del objeto Command y reevalúa los valores de los parámetros.
    • Llama al método Requery de ADO RecordSet y le pasa el mismo valor para el parámetro nOptions utilizado por CursorFill para abrir el ADO RecordSet.
  • El objeto CursorAdapter tiene un cursor asociado resultante de pasar un ADO RecordSet que ya está abierto, al parámetro Source de CursorFill.
    • Llama al método Requery de ADO RecordSet y pasa el mismo valor para el parámetro nOptions utilizado por CursorFill.

Ejemplo

Ejemplo 1

El siguiente ejemplo ilustra cómo recuperar resultados utilizando ADO con un parámetro y utilizando CursorRefresh para actualizar datos. Las cadenas de conexión establecidas para SQL Server (localhost) y Visual FoxPro OLE DB Provider son las siguientes:

* .ConnectionString = 'provider=SQLOLEDB.1;data source=localhost;'+
* 'initial catalog=Northwind;trusted_connection=yes'
CLEAR
LOCAL loConn AS ADODB.CONNECTION, ;
loCommand AS ADODB.COMMAND, ;
loException AS EXCEPTION, ;
loCursor AS CURSORADAPTER, ;
country, ;
laErrors[1]
loConn = CREATEOBJECT('ADODB.Connection')
WITH loConn
.ConnectionString = 'provider=vfpoledb;data source=' + ;
HOME(2)+'northwind\Northwind.dbc'
TRY
.OPEN()
CATCH TO loException
MESSAGEBOX(loException.MESSAGE)
CANCEL
ENDTRY
ENDWITH
loCommand = CREATEOBJECT('ADODB.Command')
loCommand.ActiveConnection = loConn
loCursor = CREATEOBJECT('CursorAdapter')
WITH loCursor
.ALIAS          = 'Customers'
.DATASOURCETYPE = 'ADO'
.SELECTCMD      = ;
'select * from customers where country=?lcCountry'
lcCountry       = 'Brazil'
.DATASOURCE = CREATEOBJECT('ADODB.Recordset')
.DATASOURCE.ActiveConnection = loConn
llReturn = .CURSORFILL(.F., .F., 0, loCommand)
IF llReturn
BROWSE
lcCountry = 'Canada'
llReturn  = .CURSORREFRESH()
IF llReturn
BROWSE
ENDIF llReturn
ELSE
AERROR(laErrors)
MESSAGEBOX(laErrors[2])
ENDIF llReturn
ENDWITH

El siguiente ejemplo ilustra cómo utilizar CursorRefresh con un ADO Recordset ya abierto. Las cadenas de conexión para SQL Server (localhost) y Visual FoxPro OLE DB Provider son:

* .ConnectionString = 'provider=SQLOLEDB.1;data source=localhost;' + ;
* 'initial catalog=Northwind;trusted_connection=yes'
CLEAR
LOCAL loConn AS ADODB.CONNECTION, ;
loCommand AS ADODB.COMMAND, ;
loParam AS ADODB.PARAMETER, ;
loRs AS ADODB.Recordset,;
loException AS EXCEPTION, ;
loCursor AS CURSORADAPTER, ;
lcCountry, ;
laErrors[1]
loConn = CREATEOBJECT('ADODB.Connection')
WITH loConn
.ConnectionString = 'provider=vfpoledb;data source=' + ;
HOME(2)+'northwind\Northwind.dbc'
TRY
.OPEN()
CATCH TO loException
MESSAGEBOX(loException.MESSAGE)
CANCEL
ENDTRY
ENDWITH
loCommand = CREATEOBJECT('ADODB.Command')
loCommand.CommandText = ;
"SELECT * FROM customers WHERE Country = ?"
loParam = loCommand.CreateParameter("Country", 129, 1, 15, "")
loCommand.PARAMETERS.APPEND(loParam)
loCommand.PARAMETERS("Country") = "Brazil"
loCommand.ActiveConnection = loConn
loRs = loCommand.Execute()
loCursor = CREATEOBJECT('CursorAdapter')
WITH loCursor
.ALIAS          = 'Customers'
.DATASOURCETYPE = 'ADO'
llReturn = .CURSORFILL(.F., .F., 0, loRs)
IF llReturn
BROWSE
loRs.ActiveCommand.PARAMETERS("Country") = "Canada"
llReturn  = .CURSORREFRESH()
IF llReturn
BROWSE
ENDIF llReturn
ELSE
AERROR(laErrors)
MESSAGEBOX(laErrors[2])
ENDIF llReturn
ENDWITH

Vea también

Métodos | CursorAdapter (Objeto: propiedades, métodos y eventos) | BeforeCursorRefresh (Evento)

Se aplica a: CursorAdapter (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


DataToClip (Método)

Copia un conjunto de registros como texto al Portapapeles.

ApplicationObject.DataToClip([nWorkArea | cTableAlias] [, nRecords] [, nClipFormat])

Valores de la propiedad

nWorkArea
Especifica el número de área de trabajo de la tabla cuyos registros se copian al Portapapeles. Si omite cTableAlias y nWorkArea, los registros se copiarán al Portapapeles para la tabla abierta en el área de trabajo actual.
cTableAlias
Especifica el alias de la tabla cuyos registros se copian al Portapapeles.
nRecords
Especifica el número de registros copiados al Portapapeles. Si nRecords es mayor que el número de registros restantes en la tabla, se copiarán todos los registros restantes al Portapapeles. Si nRecords y nClipFormat se omiten, se copiarán al Portapapeles el registro actual y los registros restantes.
nClipFormat
Especifica como se delimitan los campos. Los valores para nClipFormat son:
nClipFormat | Descripción
1 | (Valor predeterminado) Campos delimitados con espacios
3 | Campos delimitados con tabuladores

Si se omite nClipFormat, los campos se delimitarán con espacios.

Observaciones

Los nombres de campo aparecen como la primera línea del texto copiado al Portapapeles, seguida de una línea para cada registro.

Vea también

Eval (Método) | SetVar (Método) | _CLIPTEXT (Variable del sistema)

Se aplica a: Application (Objeto) | _VFP (Variable del sistema)


DeleteColumn (Método)

Quita un objeto Column de un control cuadrícula.

Grid.DeleteColumn[(nIndex)]

Parámetros

nIndex
Especifica un número que hace referencia al orden de los objetos Column en un control cuadrícula. Si no se especifica nIndex, se eliminará el objeto Column activo del control cuadrícula.

Vea también

AddColumn (Método) | AddObject (Método) | RemoveObject (Método)

Se aplica a: Grid


Dock (Método)

Sitúa el objeto ToolBar a lo largo de un borde de la ventana principal de Visual FoxPro.

ToolBar.Dock(nLocation [, X, Y])

Parámetros

nLocation
Especifica dónde se acopla la barra de herramientas. Los valores posibles de nLocation son:
Valor | Constante | Descripción
–1 | TOOL_NOTDOCKED | Desacopla la barra de herramientas.
0 | TOOL_TOP | Sitúa la barra de herramientas en la parte superior de la ventana principal de Visual FoxPro.
1 | TOOL_LEFT | Sitúa la barra de herramientas a la izquierda de la ventana principal de Visual FoxPro.
2 | TOOL_RIGHT | Sitúa la barra de herramientas a la derecha de la ventana principal de Visual FoxPro.
3 | TOOL_BOTTOM | Sitúa la barra de herramientas en la parte inferior de la ventana principal de Visual FoxPro.
X, Y
Especifica las coordenadas horizontal y vertical de la posición acoplada de la barra de herramientas, respectivamente.

Observaciones

Las barras de herramientas se acoplan a lo largo de los bordes de la ventana principal. Cuando una barra de herramientas está acoplada, su barra de título está oculta y su borde pasa a ser una línea sencilla. La barra de herramientas también cambia su tamaño al de una sola fila de botones. La ventana cambia de tamaño de modo que la barra de herramientas no oscurezca la información de la pantalla. Por ejemplo, si la barra de herramientas está acoplada en la parte superior, la pantalla se moverá hacia abajo tanto como el alto de la barra de herramientas.

Utilice el método Move para desacoplar una barra de herramientas. Cuando utilice el método Move, las coordenadas especificadas deberán estar fuera del área de acoplamiento.

Vea también

AfterDock (Evento) | BeforeDock (Evento) | Docked (Propiedad) | Undock (Evento)

Se aplica a: ToolBar


DoCmd (Método)

Ejecuta un comando de Visual FoxPro para una instancia del servidor de automatización de aplicación de Visual FoxPro.

ApplicationObject.DoCmd(cCommand)

Valores de la propiedad

cCommand
Especifica el comando de Visual FoxPro que se va a ejecutar.

Observaciones

El resultado de la evaluación de cCommand tiene que ser un comando válido de Visual FoxPro.

Vea también

DO | Eval (Método) | SetVar (Método)

Se aplica a: Application (Objeto) | _VFP (Variable del sistema)


DoScroll (Método)

Desplaza el control cuadrícula para simular que un usuario hace clic en las barras de desplazamiento.

Grid.DoScroll(nDirection)

Parámetros

nDirection
Las configuraciones posibles de nDirection:
Comando de desplazamiento | Acción de desplazamiento
0 | Desplazamiento hacia arriba
1 | Desplazamiento hacia abajo
2 | Desplazamiento retroceso de página
3 | Desplazamiento avance de página
4 | Desplazamiento a la izquierda
5 | Desplazamiento a la derecha
6 | Desplazamiento página a la izquierda
7 | Desplazamiento página a la derecha

Observaciones

El evento Scrolled se desencadena después del método DoScroll.

Vea también

Scrolled (Evento)

Se aplica a: Grid


DoVerb (Método)

Ejecuta un verbo sobre el objeto especificado.

Object.DoVerb[(Verb)]

Parámetros

Verb
El verbo que se va a ejecutar sobre el objeto incluido en el control OLE Container. Si no se especifica ninguno, se ejecutará el verbo predeterminado. El valor de este argumento puede ser uno de los verbos estándar admitidos por todos los objetos o un índice de la matriz de propiedad ObjectVerbs. Cada objeto puede aceptar su propio conjunto de verbos.

Los valores siguientes representan verbos estándar aceptados por todos los objetos:

Valor | Acción
0 | La acción predeterminada para el objeto.
–1 | Activa el objeto para su modificación. Si la aplicación que creó el objeto admite la activación in situ, el objeto se activará en el control OLE Container.
–2 | Abre el objeto en una ventana independiente de aplicación. Si la aplicación que creó el objeto admite la activación in situ, el objeto se activará en su propia ventana.
–3 | Para los objetos incrustados, oculta la aplicación que creó el objeto.
–4 | Si el objeto admite la activación in situ, activa el objeto para dicho tipo de activación y muestra cualquier herramienta de interfaz de usuario. Si el objeto no admite la activación in situ, el objeto no se activará y se producirá un error.
–5 | Si el usuario lleva el enfoque al control OLE Container, crea una ventana para el objeto y prepara el mismo para su modificación. Se producirá un error si el objeto no admite la activación in situ con un único clic del ratón.
–6 | Se usa cuando se activa el objeto para su modificación con el fin de descartar todos los cambios que la aplicación del objeto puede deshacer.

Observaciones

Si establece la propiedad AutoActivate como 2 (Doble clic), el control OLE Container activará automáticamente el objeto actual cuando el usuario haga doble clic en el control.

Sugerencia Si bien puede usar el nombre del verbo (edit, open, play, etc.) para especificar el verbo que desea usar con DoVerb, es mucho más rápido usar el índice (0, 1, 2, etc.).

Ejemplo

El ejemplo siguiente agrega un control OLE Container a un formulario, y utiliza las propiedades OleClass y DocumentFile para especificar Microsoft Excel como el servidor de Automatización y una hoja de cálculo de Microsoft Excel como el archivo que se va a modificar.

La propiedad DocumentFile especifica una hoja de cálculo denominada Hoja1.xls en el directorio EXCEL de la unidad C. Este ejemplo no funcionará adecuadamente si el archivo y el directorio especificados en la propiedad DocumentFile no existen; quizás sea necesario modificar la propiedad DocumentFile para especificar un directorio y un archivo de hoja de cálculo existentes.

* El método DoVerb se usa para activar la hoja de cálculo para su modificación.

*frmMyForm = CREATEOBJECT('form')  && Create a form
*frmMyForm.Closable = .F.  && Disable the Control menu box
frmMyForm.AddObject('cmdCommand1','cmdMyCmdBtn')  && Add Command button
frmMyForm.AddObject("oleObject","oleExcelObject")  && Add OLE object
frmMyForm.cmdCommand1.Visible=.T.  && Display the "Quit" Command button
frmMyForm.oleObject.Visible=.T.  && Display the OLE control
frmMyForm.oleObject.Height = 50  && OLE control height
frmMyForm.Show  && Display the form
frmMyForm.oleObject.DoVerb(-1)  && -1 for Edit
READ EVENTS  && Start event processing
DEFINE CLASS oleExcelObject as OLEControl
OleClass ="Excel.Sheet"  && Server name
DocumentFile = "C:\EXCEL\BOOK1.XLS"  && This file must exist
ENDDEFINE
DEFINE CLASS cmdMyCmdBtn AS CommandButton  && Create Command button
Caption = '\<Quit'  && Caption on the Command button
Cancel = .T.  && Default Cancel Command button (Esc)
Left = 125  && Command button column
Top = 210  && Command button row
Height = 25  && Command button height
PROCEDURE Click
CLEAR EVENTS  && Stop event processing, close form
ENDDEFINE

Vea también

OLE Bound (Control) | OLE Container (Control)

Se aplica a: OLE Bound (Control) | OLE Container (Control)


Drag (Método)

Comienza, finaliza o cancela una operación de arrastre.

Control.Drag [(nAction)]

Parámetros

nAction
Indica la acción que se va a realizar. Si omite nAction, nAction se establecerá como 1.

Las valores posibles del método Drag son:

Valor | Descripción
0 | Cancela la operación de arrastre; restaura la posición original del control.
1 | (Valor predeterminado) Comienza a arrastrar el control.
2 | Termina el arrastre, es decir, coloca el control.

Observaciones

Generalmente, el procedimiento de evento MouseDown llama al método Drag para comenzar la operación.

Es necesario utilizar el método Drag para controlar el arrastre sólo cuando la propiedad DragMode del control se establece como 0 (Manual). Puede utilizar Drag en un control cuya propiedad DragMode está establecida como 1 (Automático), pero no se desencadenan los eventos MouseDown y MouseUp.

Si desea que cambie el puntero del ratón mientras se arrastra el control, utilice la propiedad DragIcon o la propiedad MousePointer para definir el puntero. La propiedad MousePointer sólo tiene efecto si no está configurada la propiedad DragIcon.

Vea también

DragDrop (Evento) | DragIcon (Propiedad) | DragMode (Propiedad) | MousePointer (Propiedad) | Move (Método)

Se aplica: CheckBox | ComboBox | CommandButton | CommandGroup | Container (Objeto) | Control (Objeto) | EditBox | Grid | Image | Label | Line | ListBox | OLE Bound (Control) | OLE Container (Control) | OptionButton | OptionGroup | Page | PageFrame | Shape | Spinner | TextBox


Draw (Método)

Vuelve a pintar un objeto Form.

Object.Draw

Vea también

Paint (Evento)

Se aplica: Form | _SCREEN


Eval (Método)

Evalúa una expresión y devuelve el resultado para una instancia del servidor de automatización de aplicación de Visual FoxPro.

ApplicationObject.Eval(cExpression)

Valores devueltos

Character, Numérico, Currency, Date o Logical.

Valores de la propiedad

cExpression
Especifica la expresión que se va a evaluar. cExpression puede ser una cadena de caracteres literales, o una expresión de Visual FoxPro válida, una variable, un elemento de una matriz, o un campo de cualquier tipo de datos, entrecomillado.

Observaciones

cExpression tiene que ser una expresión de caracteres de Visual FoxPro legal.

Vea también

DoCmd (Método) | SetVar (Método)

Se aplica a: Application (Objeto) | _VFP (Variable del sistema)


GetData (Método)

Recupera los datos del objeto DataObject de la operación de arrastrar y soltar de OLE. Sólo está disponible en tiempo de ejecución.

oDataObject.GetData(nFormat | cFormat [, @ArrayName])

Parámetros

nFormat | cFormat
Especifica el formato de los datos que se van a obtener. La tabla siguiente muestra los valores para cada formato de datos y una descripción de cada formato de datos. DataObject admite automáticamente los formatos siguientes (hay más formatos disponibles, pero requieren programación adicional para su uso). Para obtener más información acerca de los formatos de datos disponibles, vea la documentación de Visual C++® en Microsoft Developer Network.
Formato de datos* | nFormat | cFormat | Descripción
CF_TEXT | 1 | Formato de texto.
CF_OEMTEXT | 7 | Formato de texto que contiene caracteres del juego de caracteres OEM.
CF_UNICODETEXT | 13 | Formato de texto Unicode, disponible sólo en Windows NT 4.0 o posterior.
CF_FILES o CF_HDROP | 15 | Un identificador que identifica una lista de archivos, como un conjunto de archivos arrastrados desde el Explorador de Windows.
CF_LOCALE | 16 | Un controlador del identificador de configuración regional asociado al texto del Portapapeles.
CFSTR_OLEVARIANTARRAY "Matriz Variant OLE" Una matriz de Visual FoxPro. Se pueden transferir múltiples valores con este formato en una única operación de arrastrar y soltar.

Por ejemplo, este formato se puede usar para arrastrar un conjunto de elementos de un cuadro de lista a otro.
CFSTR_OLEVARIANT | "Variant OLE" | Un Variant de Visual FoxPro. Todos los tipos de datos de Visual FoxPro se representan como Variant. Este formato se puede usar para arrastrar y soltar datos de Visual FoxPro sin perder el tipo de datos.
CFSTR_VFPSOURCEOBJECT | "Objeto de origen de VFP" | Una referencia a un objeto de Visual FoxPro.

* Definido en FOXPRO.H.

@ArrayName
Especifica el nombre de la matriz en la que se almacenan los datos cuando pueden contener múltiples valores. Los únicos formatos de datos en los que los datos pueden contener múltiples valores son CF_FILES, CF_HDROP y CFSTR_OLEVARIANTARRAY. Por ejemplo, puede arrastrar un conjunto de archivos desde el Explorador de Windows a un cuadro de lista de Visual FoxPro. Use el método GetData del evento OLEDragDrop del cuadro de lista para colocar los nombres de los archivos en una matriz y, a continuación, use el método AddItem de un bucle FOR … ENDFOR para agregar el contenido de la matriz al cuadro de lista.

La matriz debe existir antes de que pueda especificar su nombre en el método GetData. Si la matriz existe y no es suficientemente grande para contener los datos, Visual FoxPro aumentará automáticamente el tamaño de la matriz. Si la matriz es mayor de lo necesario, Visual FoxPro reducirá su tamaño.

Observaciones

El valor devuelto por el método GetData está determinado por el formato de los datos especificados con nFormat o cFormat. Se devuelve Falso (.F.) si el DataObject no contiene datos en el formato especificado en nFormat o cFormat. Se devuelve Verdadero (.T.) cuando los datos están en formato de múltiples valores como CF_FILES, CF_HDROP o CFSTR_OLEVARIANTARRAY. Se devuelven los datos de DataObject cuando están en un formato de valor único como CF_TEXT, CFSTR_OLEVARIANT o CFSTR_VFPSOURCEOBJECT.

El evento OLESetData para un origen de arrastre se desencadena si el formato de datos que especifique con nFormat o cFormat existe, pero no hay datos en DataObject para ese formato. (El método SetFormat se puede usar para especificar un formato de datos antes de que se coloquen los datos correspondientes en el DataObject con el método SetData.)

Vea también

ClearData (Método) | GetFormat (Método) | Técnica de arrastrar y soltar OLE | OLESetData (Evento) | SetData (Método) | SetFormat (Método)

Se aplica a: DataObject (Objeto)


GetFormat (Método)

Determina si hay datos con el formato especificado disponibles en el objeto DataObject de la operación arrastrar y soltar de OLE. Sólo está disponible en tiempo de ejecución.

oDataObject.GetFormat(nFormat | cFormat)

Parámetros

nFormat | cFormat
Especifica el formato de los datos que se van a obtener. La tabla siguiente muestra algunos de los formatos con una descripción de cada formato. Para obtener más información acerca de los formatos de datos disponibles, vea la documentación de Visual C++ en Microsoft Developer Network. También puede crear su propio formato especificando una cadena de caracteres única para cFormat.
Formato de datos* | nFormat | cFormat | Descripción
CF_TEXT | 1 | Formato de texto.
CF_OEMTEXT | 7 | Formato de texto que contiene caracteres del juego de caracteres OEM.
CF_UNICODETEXT | 13 | Formato de texto Unicode, disponible sólo en Windows NT 4.0 o posterior.
CF_FILES o CF_HDROP | 15 | Un identificador que identifica una lista de archivos, como un conjunto de archivos arrastrados desde el Explorador de Windows.
CFSTR_OLEVARIANTARRAY "Matriz Variant OLE" Una matriz. Se pueden transferir múltiples valores con este formato en una única operación de arrastrar y soltar.

Por ejemplo, este formato se puede usar para arrastrar un conjunto de elementos de un cuadro de lista a otro.
CFSTR_OLEVARIANT | "Variant OLE" | Variant. Todos los tipos de datos de Visual FoxPro se representan como Variant. Este formato se puede usar para arrastrar y soltar datos de Visual FoxPro sin perder el tipo de datos.
CFSTR_VFPSOURCEOBJECT | "Objeto de origen de VFP" | Una referencia al objeto de origen de arrastre de Visual FoxPro.

* Definido en FOXPRO.H.

Observaciones

El método GetFormat devuelve verdadero (.T.) si el DataObject contiene datos con el formato que especifique con nFormat o cFormat; en caso contrario, devuelve falso (.F.).

Vea también

ClearData (Método) | GetData (Método) | Técnica de arrastrar y soltar OLE | SetData (Método) | SetFormat (Método)

Se aplica a: DataObject (Objeto)


GetKey (Método)

Retorna la tecla o índice de un elemento o una colección dependiendo del valor que se le pasa.

Collection.GetKey(eIndex)

Parámetros

eIndex
Especifica una expresión requerida que representa una posición de un elemento en una colección. Esta expresión puede ser de dos tipos:
  • Numérico. La expresión eIndex debe tener un valor desde 1 hasta el valor de la propiedad Count de la colección.
  • Cadena de caracteres. La expresión eIndex debe corresponder con la tecla que fue especificada cuando fue agregado a la colección.

Valores devueltos

La siguiente tabla lista los valores de retorno para GetKey.

Valor devuelto | Condición
Cadena de caracteres (key) | Cuando se pasa un valor del índice o entero.
Entero (index) | Cuando se pasa una tecla o cadena de caracteres
Cadena vacía ("") | Cuando se pasa un índice que no existe o si los elementos fueron agregados a una colección sin teclas.
0 | Cuando pasamos una tecla que no existe

Observaciones

  • Necesita agregar una instrucción RETURN al final del código fuente de GetKey para cualquier subclase que haya modificado. Por ejemplo:
    RETURN DODEFAULT( eIndex )

    Si no quiere devolver un valor, use el comando RETURN sin la función DODEFAULT().

  • La función GetKey(1) y EMPTY() checa el retorno de valor vacío como sigue:
    ? !EMPTY(Collection.GetKey(1))
  • Para derivar el índice o tecla desde un elemento en una colección dentro de un bucle FOR EACH, use un bucle FOR instanciado de un bucle FOR EACH.
  • Visual FoxPro genera un error si el tipo es incorrecto o no son pasados parámetros a GetKey.

Ejemplo

El siguiente ejemplo ilustra las siguientes tareas después de la creación de una colección y adición de elementos:

  • Revisa si los elementos tienen teclas.
  • Recupera y muestra la tecla para el segundo elemento.
CLEAR
LOCAL oItems AS Collection
oItems = NEWOBJECT("Collection")
oItems.Add("Daffodils", "flower2")
oItems.Add("Roses", "flower1", "flower2")
oItems.Add("Daisies", "flower3")
? !EMPTY(oItems.GetKey(1))
? oItems.GetKey(2)

Vea también

Collection (Objeto: propiedades, métodos y eventos) | Clase Collection | Propiedad Count| Comando RETURN | Función DODEFAULT( ) | Comando FOR EACH ... ENDFOR | Bucles FOR


GetLatestVersion (Método)

Obtiene la versión más reciente de un archivo de un proyecto que está bajo control de código fuente y copia una versión de sólo lectura en su unidad local.

Object.GetLatestVersion( )

Observaciones

El método GetLatestVersion no desprotege el archivo.

Se devuelve verdadero (.T.) si el control de código fuente puede obtener correctamente el archivo. Se devuelve falso (.F.) si el control de código fuente no puede obtener el archivo o el proyecto no está bajo control de código fuente.

Vea también

AddToSCC (Método) | CheckIn (Método) | CheckOut (Método) | RemoveFromSCC (Método) | UndoCheckOut (Método)

Se aplica a: File (Objeto)


GridHitTest (Método)

Devuelve como parámetros de resultados, los componentes de un control de tipo cuadrícula correspondientes a las coordenadas horizontal (X) y vertical (Y) especificadas.

Grid.GridHitTest(nXCoord_In, nYCoord_In
[, nWhere_Out [, nRelRow_Out [, nRelCol_Out [, nView_Out]]]])

Parámetros

nXCoord_In
Especifica la posición horizontal (X) en píxeles en el formulario que contiene la cuadrícula.
nYCoord_In
Especifica la posición vertical (Y) en píxeles en el formulario que contiene la cuadrícula.
nWhere_Out
Un parámetro de salida que contiene un valor correspondiente al componente de la cuadrícula en la posición especificada con nXCoord_In y nYCoord_In. La tabla siguiente muestra los valores para @nWhere_Out y el componente de cuadrícula correspondiente.
@nWhere_Out | Componente de cuadrícula
0 | Un componente de cuadrícula que no se puede determinar.
1 | Encabezado de columna.
2 | Entre encabezados de columna.
3 | Celda.
4 | Reservado.
5 | Barra de división.
6 | Marcador de eliminación de registro.
7 | Reservado
8 | Reservado.
9 | Reservado.
10 | Reservado.
11 | Cuadro de la esquina superior izquierda.
12 | Marcador de registro.
13 | Área de cambio de tamaño de encabezado de columna.
14 | Área de cambio de tamaño de fila.
15 | Reservado.
16 | Barra de desplazamiento horizontal.
17 | Barra de desplazamiento vertical.
nRelRow_Out
Un parámetro de salida que contiene la fila de cuadrícula relativa en un punto especificado.
nRelCol_Out
Un parámetro de salida que contiene la columna de cuadrícula relativa en el punto especificado.
nView_Out
Un parámetro de salida que contiene un valor correspondiente al panel de cuadrícula que contiene el punto especificado. Si la cuadrícula esta dividida en dos paneles, este parámetro contiene 0 si el punto especificado esta en el panel izquierdo y contiene 1 si el punto especificado esta en el panel derecho. Si la cuadrícula no esta dividida en paneles independientes, este parámetro contiene 1.

Observaciones

El método GridHitTest( ) devuelve Verdadero (.T.) si el punto especificado esta en la cuadrícula; en caso contrario, devuelve Falso (.F.).

El método GridHitTest( ) se puede utilizar durante los eventos de ratón o en eventos de destino de colocar OLE para determinar donde esta colocado el puntero del ratón en la cuadrícula. Los parámetros nRelRow_Out y nRelCol_Out se pueden pasar al método ActivateCell( ) para activar una celda específica de la cuadrícula.

Vea también

ActivateCell (Método) | ActiveColumn (Propiedad) | ActiveRow (Propiedad) | MCOL( ) | MROW( )

Se aplica a: Grid (Control)


Help (Método)

Abre la ventana Ayuda.

ApplicationObject.Help([cFileName] [, nContextID] [, cHelpTopic])

Parámetros

cFileName
Especifica el nombre del archivo de Ayuda que se va a abrir. Incluya una ruta de acceso con el nombre del archivo de Ayuda si el archivo de Ayuda no se encuentra en el directorio predeterminado.
nContextID
Especifica el tema de Ayuda que se va a mostrar, basado en el Id. de contexto del tema. nContextID es un número de contexto en la sección MAP del archivo de proyecto de ayuda.
cHelpTopic
Especifica el tema de Ayuda que se va a mostrar. Si se incluye solamente parte del título de un tema, Visual FoxPro abrirá la ventana Ayuda y mostrará el tema cuyo título sea más parecido.

Observaciones

Si no se incluye ninguno de los argumentos opcionales, se mostrará el tema principal de la Ayuda.

Vea también

HELP | SET HELP

Se aplica a: Application (Objeto) | _VFP (Variable del sistema)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Hide (Método)

Oculta un formulario, un conjunto de formularios o una barra de herramientas estableciendo la propiedad Visible en el valor falso (.F.).

Object.Hide

Observaciones

El usuario no puede tener acceso a los controles de un formulario oculto, aunque siguen estando disponibles y puede tenerse acceso a ellos mediante código. Aunque no son visibles, los controles contenidos en un formulario invisible conservan su propio valor de la propiedad Visible.

Cuando la propiedad Visible del conjunto de formularios está establecida con el valor falso (.F.), el usuario no puede ver los formularios que contiene. El usuario no puede tener acceso a los formularios de un conjunto de formularios oculto, aunque siguen estando disponibles y puede tenerse acceso a ellos mediante código. El método Hide para un conjunto de formularios no establece la propiedad Visible de sus formularios secundarios, por lo que, cuando un formulario se encuentra en un conjunto de formularios, se deben comprobar los valores de la propiedad Visible del formulario y del conjunto de formularios para determinar si el formulario está visible.

Después de ocultar un conjunto de formularios, Visual FoxPro activa el último objeto activo. Si no había objetos activos antes del conjunto de formularios, se activa la ventana principal de Visual FoxPro.

El hecho de llamar al método Hide para la variable del sistema _SCREEN no tiene ningún efecto.

Vea también

Activate (Evento) | Deactivate (Evento) | Enabled (Propiedad) | GotFocus (Evento) | Show (Método) | Visible (Propiedad)

Se aplica a: Form | FormSet | _SCREEN | ToolBar


IndexToItemID (Método)

Devuelve un índice para un Id. de un elemento dado.

 [nItemID =] Control.IndexToItemID(nIndex)

Parámetros

nItemID
Especifica un número de identificación único.
nIndex
Especifica un número que representa la posición que un elemento tiene en un control.

Observaciones

A cada elemento que se agrega a un cuadro combinado o un cuadro de lista se le asignan dos números de identificación:

  • El nItemID, un número de identificación único.
  • El nIndex, un entero correspondiente al orden en el que el control muestra los elementos: El primer elemento de la lista corresponde a nIndex = 1.

Inicialmente, cuando se agregan elementos al control, estos dos números son idénticos. Pero a medida que se ordenen, quiten y agreguen elementos, dejarán de ser idénticos.

Utilice el método IndexToItemID para devolver el número nItemID para un determinado elemento del control cuando conozca su número nIndex.

Vea también

AddItem (Método) | AddListItem (Método) | ItemIDToIndex (Método)

Se aplica a: ComboBox | ListBox


Item (Método) (Clase Collection)

Devuelve un objeto miembro específico de la colección por su posición numérica o la cadena clave.

El objeto miembro puede tener cualquier tipo válido que pueda ser asignado a una variable de memoria. Esto incluye tipos de datos simples, tales como cadenas, números, fechas, lógicos, o tipos más complejos tales como objetos de Visual FoxPro y Modelo de Objetos Componentes (COM). El método Item para los objetos colección es usualmente utilizado con el comando FOR EACH...ENDFOR para referenciar a los miembros de la colección.

Collection.Item( eIndex )

Parámetros

eIndex
Especifica una expresión requerida que representa la posición del elemento en la colección. Esa expresión puede ser de dos tipos:
  • Numérica. La expresión eIndex debe tener un valor desde 1 hasta el valor de la propiedad Count para la colección.
  • Cadena. La expresión eIndex debe corresponder a la cKey que fue especificado por el elemento cuando fue agregado a la colección.

Si eIndex no coincide con un miembro existente en la colección, ocurrirá un error.

Valor devuelto

Devuelve el elemento específico.

Observaciones

Si un tipo incorrecto es pasado para un parámetro específico, ocurrirá un error.

El método Item para los objetos collection devuelven un valor, que es el propio elemento. Por consiguiente, necesita agregar una instrucción RETURN al final del método Item en el código fuente para cualquier subclase que haya modificado:

RETURN DODEFAULT(eIndex)

Si no quiere devolver el elemento, utilice la instrucción RETURN sin la función DODEFAULT().

El método Item para los objetos collection es el método predeterminado para una colección. Sin embargo, las líneas siguientes de código son equivalentes:

? MyCollection(1)
? MyCollection.Item(1)
? MyCollection("myKey")

Ejemplo

El siguiente ejemplo ilustra esas tareas en tiempo de ejecución:

  • Crear formularios y una colección.
  • Agregar formularios a la colección.
  • Mostrar el nombre de cada formulario en la colección.
  • Mostrar el número de formularios en la colección.
  • Mostrar el nombre del primer elemento en la colección.
  • Mostrar el nombre del primer elemento en la colección utilizando el método Item para colecciones.
loForm1 = CREATEOBJECT("myForm1")
loForm2 = CREATEOBJECT("myForm2")
loCol = CREATEOBJECT("myCollection")
loCol.Add(loForm1)
loCol.Add(loForm2)
? loCol(1).Name
? loCol.Item(1).Name

Vea también

Collection (Objeto: propiedades, métodos y eventos) | Collection (Clase) | FOR EACH ... ENDFOR (Comando) | RETURN (Comando) | DODEFAULT( ) (Función)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


Item (Método) (File Object)

Devuelve una referencia de objeto a un determinado archivo, proyecto o servidor de una colección de archivos, proyectos o servidores.

Object.Item(nIndex)
nIndex
Un número que especifica un archivo, proyecto o servidor en una colección de archivos, proyectos o servidores. Se produce el error "La referencia al subíndice no es válida" si nIndex es mayor que el número de archivos, proyectos o servidores de una colección.

Observaciones

Utilice la propiedad Name con la propiedad Item para determinar el nombre del archivo, proyecto o servidor, y el directorio en el que esta contenido.

Vea también

Name (Propiedad)

Se aplica a: Files (Colección) | Projects (Colección) | Servers (Colección)


ItemIDToIndex (Método)

Devuelve el valor de nIndex, la posición de un elemento de una lista de un control.

 [nIndex =]Control.ItemIDToIndex(nItemID)

Parámetros

nItemID
El número de identificación único asociado a ese elemento.

Observaciones

A cada elemento que se agrega a un control ComboBox o ListBox se le asignan dos números de identificación:

  • El nItemID, un número de identificación único.
  • El nIndex, un entero correspondiente al orden en el que se muestran los elementos en el control. El primer elemento de la lista corresponde a nIndex = 1.

Inicialmente, cuando se agregan elementos al control, estos dos números son idénticos. Pero a medida que se ordenen, quiten y agreguen elementos, dejarán de ser idénticos.

Utilice el método IndexToItemID para recuperar el número nIndex para un determinado elemento de la lista del control cuando conozca su número nItemID.

Vea también

AddItem (Método) | AddListItem (Método) | IndexToItemID (Método) | ListItemID (Propiedad) | List (Propiedad) | ListCount (Propiedad)

Se aplica a: ComboBox | ListBox


Line (Método)

Dibuja una línea en un objeto Form.

Object.Line(nXCoord2, nYCoord2)

–O bien–

Object.Line(nXCoord1, nYCoord1, nXCoord2, nYCoord2)

Parámetros

nXCoord1, nYCoord1
Especifica las coordenadas del punto inicial de la línea. La propiedad ScaleMode del objeto Form especifica la unidad de medida.
nXCoord2, nYCoord2
Especifica las coordenadas del punto final de la línea.

Observaciones

El ancho de la línea dibujada depende del valor de la propiedad DrawWidth. El modo en que se dibuja una línea en el fondo depende del valor de las propiedades DrawMode y DrawStyle. Cuando se ejecuta el método Line, las propiedades CurrentX y CurrentY se establecen como nXCoord2, nYCoord2.

Vea también

CurrentX, CurrentY (Propiedades) | DrawMode (Propiedad) | DrawStyle (Propiedad) | DrawWidth (Propiedad) | ScaleMode (Propiedad)

Se aplica: Form | _SCREEN


Modify (Método)

Abre un archivo de un proyecto para su modificación en el editor o diseñador apropiado.

Object.Modify([cClassName])

Parámetros

cClassName
Especifica el nombre de la clase visual que se va a abrir para modificarla cuando Object es una biblioteca de clases visuales .vcx.

Observaciones

El método Modify devuelve verdadero (.T.) si se abre correctamente el archivo para modificarlo; en caso contrario devuelve falso (.F.).

El evento QueryModifyFile ocurre antes de que se abra el archivo. Si el evento QueryModifyFile devuelve falso (.F.), no se abre el archivo y el método Modify devuelve falso (.F.). Si el método QueryModifyFile devuelve verdadero (.T.), se abre el archivo y el método Modify devuelve verdadero (.T.).

Vea también

Add (Método) | Remove Method (Objeto File) | QueryModifyFile (Evento)

Se aplica a: File (Objeto)


Move (Método)

Mueve un objeto.

Object.Move (nLeft [, nTop [, nWidth [, nHeight]]])

Parámetros

nLeft
Especifica la coordenada horizontal del borde izquierdo del objeto. nLeft es un valor de precisión simple
nTop
Especifica la coordenada vertical del borde superior del objeto. nTop es un valor de precisión simple.
nWidth
Especifica el nuevo ancho del objeto. nWidth es un valor de precisión simple.
nHeight
Especifica la nueva altura del objeto. nHeight es un valor de precisión simple.

Observaciones

Sólo se necesita el argumento nLeft. Sin embargo, para incluir cualquier otro argumento, deberá incluir previamente todos los argumentos en la sintaxis. Por ejemplo, no es posible especificar nWidth sin especificar nLeft y nTop. Los argumentos posteriores que no se especifican permanecen inmutables.

El movimiento de un formulario en la pantalla o el movimiento de un control en un formulario siempre es relativo al origen (0,0), que es el ángulo superior izquierdo. Al mover controles en un contenedor, se utiliza el sistema de coordenadas del contenedor.

Vea también

Top (Propiedad) | Width (Propiedad)

Se aplica: CheckBox | ComboBox | CommandButton | CommandGroup | Container (Objeto) | Control (Objeto) | EditBox | Form | Grid | Image | Label | Line | ListBox | OLE Bound (Control) | OLE Container (Control) | OptionButton | OptionGroup | PageFrame | _SCREEN | Shape | Spinner | TextBox | ToolBar


MoveItem (Método)

Mueve un elemento a una nueva posición en un cuadro de lista.

ListBox.MoveItem(nItemIndex, nMoveBy)

Parámetros

nItemIndex
Especifica el índice actual para el elemento que desea mover.
nMoveBy
Indica cuántas posiciones puede ser movido el elemento. Un valor positivo indica un movimiento descendente. Un valor negativo indica un movimiento ascendente.

Observaciones

Llamar al método MoveItem provoca que se ejecute el evento OnMoveItem.

El evento OnMoveItem siempre se ejecuta una vez cuando es invocado el método MoveItem, sin embargo el movimiento de un elemento del cuadro de lista ocurre sólo si la propiedad RowSourceType del objeto grid está establecida en 0 (Ninguno) o 1 (Valor).

Vea también

Métodos | OnMoveItem (Evento) | RowSourceType (Propiedad) | MoverBars (Propiedad)

Se aplica a: ListBox (Control)


NewObject (Método)

Agrega una nueva clase u objeto a un objeto directamente desde una biblioteca de clases visuales .vcx o desde un programa.

Object.NEWOBJECT(cObjectName, cClassName [, cModule [, cInApplication
[, eParameter1, eParameter2, ...]]])
cObjectName
Especifica el nombre usado para hacer referencia a la clase o el objeto recién creado.
cClassName
Especifica la clase o el objeto al que se agrega la clase o el objeto recién creado.
cModule
Especifica una biblioteca de clases visuales .vcx o un programa de Visual FoxPro (.prg, .mpr, .app, .exe, etc.) que contiene la clase o el objeto especificado con cClassName. De forma predeterminada es una biblioteca de clases visuales .vcx; debe incluir una extensión si especifica un programa.
Nota Una biblioteca de clases puede tener un alias. Para especificar una clase o un objeto de una biblioteca de clases con un alias, incluya la biblioteca de clases seguida por un punto y el nombre del objeto.

Si se omite cModule, o si es la cadena vacía o el valor nulo, Visual FoxPro busca la clase o el objeto en el orden siguiente:

  • Clases de base de Visual FoxPro.
  • Clases definidas por el usuario en memoria en el orden en que se cargaron.
  • Clases del programa actual.
  • Bibliotecas de clases abiertas con SET CLASSLIB.
  • Clases de los archivos de procedimientos abiertos con SET PROCEDURE.
  • Clases de la cadena de ejecución del programa de Visual FoxPro.
  • El registro de OLE si SET OLEOBJECT está establecido en ON.
cInApplication
Especifica la aplicación de Visual FoxPro (.exe o .app) que contiene la biblioteca de clases visuales .vcx que especifique con cClassLibName. Debe incluir una extensión para la aplicación. Se pasa por alto CInApplication si se omite cModule o si CInApplication es la cadena vacía o el valor nulo.
eParameter1, eParameter2, ...
Especifica parámetros opcionales que se pasan al procedimiento de evento Init para la clase o el objeto.

Observaciones

El método NEWOBJECT permite agregar una nueva clase o un nuevo objeto a un objeto sin abrir un archivo de biblioteca de clases visuales .vcx o un archivo de procedimiento.

Vea también

AddObject (Método) | AddProperty (Método) | Diseñador de clases | CREATE CLASS | CREATE CLASSLIB | CREATEOBJECT( ) | DEFINE CLASS | NEWOBJECT( )

Se aplica a: Column | CommandGroup | Container (Objeto) | Custom | DataEnvironment | Form | FormSet | Grid | OptionGroup | Page | PageFrame | _SCREEN | ToolBar | Session (Objeto)


OLEDrag (Método)

Inicia una operación OLE de arrastrar y soltar.

PROCEDURE Object.OLEDrag(lDetectDrag)

Parámetros

lDetectDrag
Especifica cuándo se ejecuta el evento OLEStartDrag. Si lDetectDrag es Falso (.F.), se ejecuta inmediatamente el evento OLEStartDrag. Si lDetectDrag es Verdadero (.T.), se ejecuta el evento OLEStartDrag después de que el usuario haya presionado el botón del ratón durante un período suficiente de tiempo para indicar que se está produciendo una operación de arrastre, o cuando se mueva el ratón una distancia suficiente mientras se presiona el botón del ratón, lo que indica que se está produciendo una operación de arrastre.

Si no especifica un valor para lDetectDrag, se devuelve automáticamente verdadero (.T.).

Observaciones

OLEDrag es un método de origen de arrastre.

Vea también

Técnica de arrastrar y soltar OLE | OLEDragMode (Propiedad) | OLEStartDrag (Evento)

Se aplica: CheckBox | ComboBox | CommandButton | CommandGroup | Container (Objeto) | Control (Objeto) | EditBox | Form | Grid | Image | Label | Line | ListBox | OptionButton | OptionGroup | Page | PageFrame | Shape | Spinner | TextBox | ToolBar


OpenTables (Método)

Abre mediante programación las tablas y las vistas asociadas con el entorno de datos.

DataEnvironment.OpenTables

Parámetros

DataEnvironment
Especifica el entorno de datos asociado con el conjunto de formularios, el formulario o el informe.

Observaciones

El método OpenTables carga las tablas del entorno de datos cuando la propiedad AutoOpenTables del entorno de datos se establece en falso (.F.) o si se ha descargado el entorno de datos con el método CloseTables. El método OpenTables actúa como un evento, al que se llama automáticamente si autoOpenTables = .T..

Vea también

AfterCloseTables (Evento) | AutoOpenTables (Propiedad) | BeforeOpenTables (Evento) | CloseTables (Método)

Se aplica a: DataEnvironment


Point (Método)

Devuelve el color rojo-verde-azul (RGB) del punto especificado en un formulario.

Object.Point ([nXCoord, nYCoord])

Parámetros

nXCoord
Especifica la coordenada horizontal del punto, en las unidades especificadas en la propiedad ScaleMode del formulario.
nYCoord
Especifica la coordenada vertical del punto, en las unidades especificadas en la propiedad ScaleMode del formulario.

Observaciones

Si nXCoord o nYCoord están fuera del formulario, el método Point devolverá -1.

Vea también

Circle (Método) | Line (Método) | Print (Método) | PSet (Método)

Applies To: Form (Objeto) | _SCREEN (Variable del sistema)


Print (Método)

Imprime una cadena de caracteres en un formulario.

 [FormSet.] Object.Print [(cText)]

Parámetros

cText
Especifica la cadena de caracteres que se va a imprimir. Si omite cText, se imprimirá una línea en blanco.

cText se imprime en el formulario a partir de la posición especificada por las propiedades CurrentX y CurrentY. Cuando se incluye un retorno de carro, CurrentX se aumenta en el ancho especificado por cText (igual que el valor devuelto por TextWidth) y CurrentY permanece inalterada.

Cuando finaliza el método Print, las propiedades CurrentX y CurrentY se establecen en el punto inmediatamente posterior al último carácter impreso.

Nota Este método no se admite si BITMAP=OFF.

Vea también

CurrentX, CurrentY (Propiedades) | TextHeight (Método) | TextWidth (Método)

Se aplica a: Form | _SCREEN


PSet (Método)

Establece el color de primer plano en un punto de un formulario o en la ventana principal de Visual FoxPro.

 [FormSet.]Object.PSet([nXCoord, nYCoord])

Parámetros

nXCoord
Especifica la coordenada horizontal del punto que se va a establecer, en la unidad de medida especificada por la propiedad ScaleMode del formulario.
nYCoord
Especifica la coordenada vertical del punto que se va a establecer, en la unidad de medida especificada por la propiedad ScaleMode del formulario.

Observaciones

El tamaño del punto dibujado depende de la propiedad DrawWidth. Cuando se establece DrawWidth en 1, el método PSet establece un solo píxel con el color especificado. Cuando se establece DrawWidth en un valor mayor que 1, el punto se centra en las coordenadas especificadas. El modo de dibujar el punto dependerá del valor de las propiedades DrawMode y DrawStyle.

Cuando se llama al método PSet las propiedades CurrentX y CurrentY se establecen en el punto especificado por los argumentos.

Vea también

CurrentX, CurrentY (Propiedades) | DrawMode (Propiedad) | DrawStyle (Propiedad) | DrawWidth (Propiedad) | ForeColor (Propiedad)

Se aplica a: Form | _SCREEN


Quit (Método)

Finaliza una instancia de Visual FoxPro.

ApplicationObject.Quit( )

Observaciones

Recurra al método Quit( ) para devolver el control a la aplicación que creó la instancia de Visual FoxPro.

Vea también

QUIT

Se aplica a: Application (Objeto) | _VFP (Variable del sistema)


ReadExpression (Método)

Devuelve la expresión almacenada para un valor Property en la ventana Propiedades. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.ReadExpression(cPropertyName)

Parámetros

cPropertyName
Especifica el nombre de la propiedad de la que se devolverá la expresión.

Vea también

WriteExpression (Método)

Se aplica a: CheckBox | Collection (Clase) | Column | ComboBox | CommandButton | CommandGroup | Cursor | CursorAdapter (Clase) | Custom | DataEnvironment | EditBox | Exception (Clase) | Form | FormSet | Grid | Header | Image | Label | Line | ListBox | OLE Bound (Control) | OLE Container (Control) | OptionButton | OptionGroup | Page | PageFrame | ProjectHook (Objeto) | Relation | Session (Objeto) | Shape | Spinner | TextBox | Timer | ToolBar


ReadMethod (Método)

Devuelve el texto del método especificado. Disponible en tiempo de diseño.

Control.ReadMethod(cMethod)

Parámetros

cMethod
Especifica el nombre del método.

Vea también

ReadExpression (Método) | WriteExpression (Método) | WriteMethod (Método)

Se aplica a: CheckBox | Collection (Clase) | Column | ComboBox | CommandButton | CommandGroup | Cursor | CursorAdapter (Clase) | Custom | DataEnvironment | EditBox | Exception (Clase) | Form | FormSet | Grid | Header | Image | Label | Line | ListBox | OLE Bound (Control) | OLE Container (Control) | OptionButton | OptionGroup | Page | PageFrame | ProjectHook (Objeto) | Relation | Session (Objeto) | Shape | Spinner | TextBox | Timer | ToolBar


Refresh (Método)

Vuelve a dibujar un formulario o un control y actualiza todos los valores, o actualiza la presentación visual de un proyecto.

[Form.]Object.Refresh
-o-
Project.Refresh([lUpdateSCCStatus])

Parámetros

lUpdateSCCStatus
Tipo de dato lógico. El parámetro lUpdateSCCStatus especifica, para un proyecto, si se actualiza el estado del control de código fuente (SCC) para cada archivo bajo control de código fuente. Visual FoxPro pasa por alto lUpdateSCCStatus si no hay archivos en el proyecto bajo el control de código fuente (SCC).

La siguiente tabla muestra los valores para lUpdateSCCStatus.

lUpdateSCCStatus | Descripción
Verdadero (.T.) | Actualiza el estado de control de código para cada archivo en el proyecto bajo control de código.
Falso (.F.) o nada | No actualiza el estado de control de código.

Observaciones

Generalmente, la operación de dibujar un formulario o un control se controla automáticamente mientras no estén ocurriendo eventos. Utilice el método Refresh cuando desee actualizar un formulario o un control inmediatamente, forzar un redibujado completo de un formulario o control, o para actualizar el valor de un control.

Utilice Refresh para forzar una actualización completa de un formulario o control, así como para actualizar los valores de un control. El método Refresh es de mucha utilidad cuando se desea que un formulario se muestre mientras otro está cargándose o cuando desea actualizar el contenido de un control. Para actualizar el contenido de un cuadro combinado o de lista, utilice el método Requery.

Nota Cuando se actualiza un formulario, también se actualizan todos los controles del formulario. Cuando se actualiza un PageFrame, solamente se actualiza la página activa.

Cuando llame al método Refresh para un control Label, Visual FoxPro actualizará la propiedad Caption y redibujará la etiqueta.

Cuando llame al método Refresh para un control Shape, Visual FoxPro redibujará la forma.

Cuando llame al método Refresh para los proyectos, Visual FoxPro actualizará la presentación visual de un proyecto y de todos los cambios realizados en el mismo. Por ejemplo, después de agregar archivos a un proyecto por medio de programación con el método Add, puede ejecutar el método Refresh para mostrar los nuevos archivos agregados al proyecto.

El método Grid Refresh actualiza visualmente los registros de la cuadricula aún si la cuadricula no tiene el enfoque.

Vea también

Paint (Evento) | Requery (Método)

Se aplica a: CheckBox | Column | ComboBox | CommandButton | CommandGroup | Container (Objeto) | Control (Objeto) | EditBox | Form | FormSet | Grid | Header | Label | ListBox | OLE Bound (Control) | OLE Container (Control) | OptionButton | OptionGroup | Page | PageFrame | Project (Objeto) | _SCREEN | Shape | Spinner | TextBox | ToolBar


Release (Método)

Libera de la memoria un formulario o un conjunto de formularios.

Object.Release

Observaciones

El método Release es muy útil cuando se crea un formulario o un conjunto de formularios con el comando DO FORM y no hay variables que hagan referencia al formulario o al conjunto de formularios.

Puede usar la colección de formularios del objeto Screen para buscar el formulario o el conjunto de formularios, y llamar a su método Release.

Vea también

DO FORM

Se aplica a: Form | FormSet | _SCREEN | ToolBar


Remove (Método) (Clase Collection)

Se utiliza para eliminar un miembro de una colección.

El objeto miembro puede tener cualquier tipo válido que pueda ser asignado a una variable de memoria. Esto incluye tipos de datos simples, tales como cadenas, números, fechas, lógicos, o tipos más complejos tales como objetos de Visual FoxPro y objetos COM (Component Object Model).

Collection.Remove( eIndex )

Parámetros

eIndex
Especifica una expresión que representa la posición de un ítem en la colección. Esa expresión puede ser de dos tipos:
  • Numérica. La expresión eIndex debe tener un valor desde 1 hasta el valor de la propiedad Count para la colección. Si pasa como parámetro un valor de -1, Visual FoxPro elimina todos los ítems en la colección.
  • Cadena. La expresión eIndex debe corresponder a la cKey que fue especificada por el ítem cuando éste fue agregado a la colección.

Si eIndex no coincide con un miembro existente de la colección, ocurrirá un error.

Observaciones

  • Si un tipo incorrecto es pasado para un parámetro específico, ocurrirá un error.
  • Incluya el comando NODEFAULT en el método Remove para la colección y de esta forma prevenir eliminar un ítem particular de la colección.

Ejemplo

El siguiente ejemplo ilustra estas tareas en tiempo de ejecución:

  • Crear formularios y una colección.
  • Agregar formularios a la colección.
  • Mostrar el número de formularios en la colección.
  • Eliminar el primer formulario de la colección.
  • Mostrar el número actual de los formularios en la colección.
loForm1 = CREATEOBJECT("myForm1")
loForm2 = CREATEOBJECT("myForm2")
loCol = CREATEOBJECT("myCollection")
loCol.Add(loForm1)
loCol.Add(loForm2)
? loCol.Count
loCol.Remove(1)
? loCol.Count

Vea también

Collection (Objeto: propiedades, métodos y eventos) | Clase Collection | Comando NODEFAULT


Remove - Objeto File (Método)

Quita un archivo de su colección de archivos y del proyecto.

Objeto.Remove( )

Observaciones

El método Remove devuelve verdadero (.T.) si se quita correctamente el archivo del proyecto; de lo contrario, devuelve falso (.F.). Observe que no se muestra un mensaje de advertencia cuando se utiliza el método Remove para quitar archivos de un proyecto, incluso los archivos que estan bajo control del código fuente.

El evento QueryRemoveFile se produce antes de que se quite el archivo de su colección y del proyecto. Si el evento QueryRemoveFile devuelve falso (.F.), el archivo no se quitará de su colección y de su proyecto, y el método Remove devolverá falso (.F.). Si el método QueryRemoveFile devuelve verdadero (.T.), se quita el archivo de su colección y su proyecto, y el método Remove devuelve verdadero (.T.).

Vea también

Add - Objeto File (Método) | Modify (Método) | QueryRemoveFile (Evento)

Se aplica a: File (Objeto)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


RemoveFromSCC (Método)

Quita un archivo del proyecto del control del código fuente.

Object.RemoveFromSCC( )

Observaciones

El método RemoveFromSCC devuelve verdadero (.T.) si se quita correctamente el archivo bajo control del código fuente; de lo contrario devuelve falso (.F.).

Vea también

AddToSCC (Método) | CheckIn (Método) | CheckOut (Método) | GetLatestVersion (Método) | UndoCheckOut (Método)

Se aplica a: File (Objeto)


RemoveItem (Método)

Quita un elemento de un cuadro combinado o de lista.

Control.RemoveItem(nIndex)

Parámetros

nIndex
Especifica un valor entero correspondiente al orden en el que se muestran los elementos en el control. Para el primer elemento de un cuadro de lista o combinado, nIndex = 1.

Vea también

AddItem (Método) | Clear (Método) | RemoveListItem (Método)

Applies To: ComboBox (Control) | ListBox (Control)


RemoveListItem (Método)

Quita un elemento de un cuadro combinado o de lista.

Control.RemoveListItem(nItemId)

Parámetros

nItemId
Especifica un entero que representa el Id. único del elemento del control.

Vea también

AddItem (Método) | Clear (Método)

Applies To: ComboBox (Control) | ListBox (Control)


RemoveObject (Método)

Quita un objeto especificado desde un objeto contenedor en tiempo de ejecución.

Object.RemoveObject(cObjectName)

Parámetros

cObjectName
Especifica el nombre del objeto que se va a quitar. Si el objeto no existe, se produce un error.

Observaciones

Cuando se elimina un objeto, desaparece de la pantalla y no se puede volver a hacer referencia al mismo.

Vea también

AddObject (Método) | RemoveItem (Método) | RemoveListItem (Método)

Se aplica a: Column (Objeto) | CommandGroup (Control) | Container (Objeto) | Custom (Objeto) | DataEnvironment (Objeto) | Form (Objeto) | FormSet (Objeto) | Grid (Control) | OptionGroup (Control) | Page (Objeto) | PageFrame (Control) | _SCREEN (Variable del sistema) | ToolBar (Objeto)


Requery (Método)

Vuelve a consultar el origen de la fila al que está asociado el control ListBox o ComboBox.

Control.Requery

Observaciones

Utilice el método Requery para asegurarse de que un control contiene los datos actualizados. El método Requery requiere la propiedad RowSource y actualiza la lista con los nuevos valores.

Vea también

RowSource (Propiedad)

Se aplica a: ComboBox | ListBox


RequestData (Método)

Crea una matriz que contiene datos procedentes de una tabla abierta en una instancia de Visual FoxPro.

ApplicationObject.RequestData([nWorkArea | cTableAlias] [, nRecords])

Valores devueltos

Array

Valores de la propiedad

nWorkArea
Especifica el número del área de trabajo de la tabla de la que proceden los datos almacenados en la matriz. Si se omite cTableAlias y nWorkArea, los datos procedentes de la tabla abierta en el área actual de trabajo se almacenarán en la matriz.
cTableAlias
Especifica el alias de la tabla cuyos datos se almacenan en la matriz.
nRecords
Especifica el número de registros almacenados en la matriz, empezando por el registro actual. Si se omite nRecords y hay suficiente memoria disponible, se almacenarán en la matriz todos los registros, empezando por el registro actual.

Observaciones

Utilice el método RequestData para recuperar datos a partir de una instancia de Visual FoxPro.

Ejemplo

El siguiente ejemplo, ejecutado desde Visual FoxPro, crea una segunda instancia de Visual FoxPro. La tabla Customer se abre en la segunda instancia de Visual FoxPro.

Se crea una matriz con datos de la tabla Customer en la primera instancia de Visual FoxPro y se muestra el contenido de la matriz. La matriz contiene datos procedentes de los primeros 5 registros de la tabla Customer. Después, se cierra la segunda instancia de Visual FoxPro.

oNewInstance = CREATEOBJECT('VisualFoxPro.Application')
oNewInstance.DoCmd "USE (HOME(2) + 'Data\Customer')"
aCustomerArray = oNewInstance.RequestData('Customer',5)
DISPLAY MEMORY LIKE aCustomerArray
oNewInstance.DoCmd('QUIT')

Vea también

DataToClip (Método)

Se aplica a: Application (Objeto) | _VFP (Variable del sistema)


Reset (Método)

Restablece el control Timer, que empezará a contar desde 0.

Timer.Reset

Vea también

Interval (Propiedad) | Timer (Evento)

Se aplica a: Timer


ResetToDefault (Método)

Restaura una propiedad, un evento o un método a su configuración predeterminada de Visual FoxPro. Disponible en tiempo de diseño y en tiempo de ejecución.

 [Form.]Object.ResetToDefault(cPropertyName | cEventName | cMethodName)

Valores de la propiedad

cPropertyName
Especifica el nombre de la propiedad que se va a restablecer en la configuración predeterminada de Visual FoxPro.
cEventName
Especifica el nombre del evento que se va a restablecer. Se eliminarán todos los códigos definidos por el usuario en el evento.
cMethodName
Especifica el nombre del método que se va a restablecer. Se eliminarán todos los códigos definidos por el usuario en el método.

Observaciones

ResetToDefault devuelve una propiedad al valor de configuración que tenía cuando se creó por primera vez. Por ejemplo, si ha modificado la fuente de un botón de comando, si llama a este método para el título se restablecerá la fuente predeterminada (Arial).

ResetToDefault elimina todos los códigos definidos por el usuario de un evento o de un método en tiempo de diseño.

No produce ningún resultado en matrices miembro, ya que no hay ningún valor predeterminado en una clase.

ResetToDefault no se aplica a los métodos Access/Assign, ya que están más vinculados a su propiedad asociada y, por tanto, se tratan de forma diferente que los métodos normales.

Vea también

GETPEM( ) (Función)

Se aplica a: CheckBox | Collection (Clase) | Column | ComboBox | CommandButton | CommandGroup | Container (Objeto) | Control (Objeto) | Cursor | CursorAdapter (Clase) | Custom | DataEnvironment | EditBox | Exception (Clase) | Form | FormSet | Grid | Header | Image | Label | Line | ListBox | OLE Bound (Control) | OLE Container (Control) | OptionButton | OptionGroup | Page | PageFrame | ProjectHook (Objeto) | Relation | _SCREEN | Shape | Session (Objeto) | Spinner | TextBox | Timer | ToolBar


Run (Método)

Ejecuta o muestra una vista previa de un archivo de un proyecto.

Object.Run( )

Observaciones

El método Run devuelve verdadero (.T.) si el archivo se ejecuta o se muestra una vista previa; de lo contrario devuelve falso (.F.). El método Run permite ver etiquetas e informes.

El evento QueryRunFile se produce antes de ejecutar o mostrar el archivo. Si se especifica NODEFAULT en QueryRunFileEvent, no se ejecutará ni se mostrará el archivo y el método Run devolverá falso (.F.). En caso contrario, se ejecutará o se mostrará el archivo, y el método Run devolverá verdadero (.T.).

Incluya NODEFAULT en el evento QueryRunFile para evitar que se ejecute o se muestre una vista previa de un archivo.

Vea también

QueryAddFile (Evento) | QueryModifyFile (Evento) | QueryRunFile (Evento) | QueryRemoveFile (Evento) | NODEFAULT (Comando)

Se aplica a: File (Objeto)


SaveAs (Método)

Guarda un objeto como un archivo .scx.

Object.SaveAs(cFileName [, oObjectName])

Parámetros

cFileName
Especifica el archivo .scx en el que desea guardar el objeto.
oObjectName
Especifica una referencia a un objeto DataEnvironment.

Observaciones

Use el método SaveAs para crear un Form o un FormSet y guardarlo como un archivo .scx. El método SaveAs sólo está disponible durante una sesión interactiva de Visual FoxPro.

Cuando usa el método SaveAs, se almacenan también todas las propiedades, eventos y métodos asociados con el objeto. Observe que sólo se pueden guardar los objetos creados a partir de clases de base de Visual FoxPro. No se pueden guardar las clases definidas por el usuario. En DEFINE CLASS encontrará una lista de clases de base de Visual FoxPro.

Vea también

SaveAsClass (Método) | SET CLASSLIB

Se aplica a: DEFINE CLASS | Form | FormSet | _SCREEN


SaveAsClass (Método)

Guarda una instancia de un objeto como una definición de clase en una biblioteca de clases.

Object.SaveAsClass(ClassLibName, ClassName [, Description])

Parámetros

ClassLibName
Especifica el nombre del archivo .vcx en el que se almacena la definición de clase.
ClassName
Especifica el nombre asignado a la clase.
Description
Especifica la descripción opcional para la clase.

Observaciones

Cuando utiliza el método SaveAsClass, todas las propiedades, eventos y métodos asociados al objeto se almacenan como parte de la definición de clase.

Vea también

SaveAs (Método) | SET CLASSLIB

Se aplica a: CheckBox | Collection (Clase) | ComboBox | CommandButton | CommandGroup | Container (Objeto) | Control (Objeto) | Custom | EditBox | Exception (Clase) | Form | FormSet | Grid | Image | Label | Line | ListBox | OLE Bound (Control) | OLE Container (Control) | OptionButton | OptionGroup | PageFrame | ProjectHook (Objeto) | _SCREEN | Shape | Spinner | TextBox | Timer | ToolBar


SetAll (Método)

Asigna un valor de propiedad a todos o a cierta clase de controles en un objeto Container.

Container.SetAll(cProperty, Value [, cClass])

Parámetros

cProperty
Especifica la propiedad que se va a configurar.
Valor
Especifica el nuevo valor de propiedad. El tipo de datos Value depende de la propiedad que se esté configurando.
cClass
Especifica el nombre de la clase en la que se basa el objeto, no la clase de base de Visual FoxPro para el objeto.

Observaciones

Utilice el método SetAll para establecer una propiedad para todos o para cierta clase de controles en un contenedor. Por ejemplo, para establecer la propiedad BackColor en rojo para todos los objetos Column de un control cuadrícula, haga lo siguiente:

Form1.Grid1.SetAll("BackColor", RGB(255, 0, 0), "Column")

También puede establecer las propiedades de los objetos contenidos en otros objetos del contenedor. Para establecer en verde la propiedad ForeColor de los encabezados contenidos en cada objeto Column de un control cuadrícula, ejecute lo siguiente:

Form1.Grid1.SetAll("ForeColor", RGB(0, 255, 0), "Header")

Ejemplo

El ejemplo siguiente utiliza el método SetAll con la propiedad DynamicBackColor para especificar los colores de fondo para los registros de un control cuadrícula. Si el número de un registro mostrado en la cuadrícula es par, la propiedad DynamicBackColor del registro será blanca, de lo contrario DynamicBackColor será verde.

Se coloca un control cuadrícula en un formulario, se abre la tabla customer y su contenido se muestra en la cuadrícula. La propiedad Caption se utiliza para especificar otro título de encabezado (Id. de cliente) para el campo CUST_ID. Se incluye un botón de comando en el formulario para cerrarlo.

CLOSE ALL  && Close tables and databases
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer  IN 0  && Opens Customer table
frmMyForm = CREATEOBJECT('Form')  && Create a form
frmMyForm.Closable = .f.  && Disable the window pop-up menu
frmMyForm.AddObject('cmdCommand1','cmdMyCmdBtn')  && Add Command button
frmMyForm.AddObject('grdGrid1','Grid')  && Add Grid control
frmMyForm.grdGrid1.Left = 25  && Adjust Grid position
frmMyForm.grdGrid1.SetAll("DynamicBackColor", "IIF(MOD(RECNO( ), 2)=0, RGB(255,255,255), RGB(0,255,0))", "Column")  && Alternate white and green records
frmMyForm.grdGrid1.Visible = .T.  && Grid control visible
frmMyForm.cmdCommand1.Visible =.T.  && "Quit" Command button visible
frmMyForm.grdGrid1.Column1.Header1.Caption = 'Customer ID'
frmMyForm.SHOW  && Display the form
READ EVENTS  && Start event processing
DEFINE CLASS cmdMyCmdBtn AS CommandButton  && Create Command button
Caption = '\<Quit'  && Caption on the Command button
Cancel = .T.  && Default Cancel Command button (Esc)
Left = 125  && Command button column
Top = 210  && Command button row
Height = 25  && Command button height
PROCEDURE Click
CLEAR EVENTS  && Stop event processing, close form
CLOSE ALL  && Close table and database
ENDDEFINE

Vea también

SaveAs (Método) | SaveAsClass (Método)

Se aplica a: Column | CommandGroup | Container (Objeto) | Form | FormSet | Grid | OptionGroup | Page | PageFrame | _SCREEN | ToolBar


SetData (Método)

Incluye datos en el DataObject en una operación arrastrar y soltar de OLE. Sólo está disponible en tiempo de ejecución.

oDataObject.SetData(eData [, nFormat | cFormat])

Parámetros

eData
Especifica los datos incluidos en el DataObject. Si omite los argumentos opcionales nFormat y cFormat, Visual FoxPro coloca los datos en el DataObject, en los formatos CF_TEXT y CFSTR_OLEVARIANT. Si eData es una matriz, anteponga un signo @ al argumento eData. Se coloca una matriz en el DataObject con el formato CFSTR_OLEVARIANTARRAY. Se produce un error si eData es una referencia a un objeto o un campo general, o si la matriz contiene una referencia de objeto.
nFormat | cFormat
Especifica el formato de los datos incluidos en el DataObject. La tabla siguiente muestra una lista de valores correspondientes a algunos formatos de datos comunes, con una descripción de cada formato. También puede especificar un formato definido por el usuario con cFormat. En este caso, eData debe ser de tipo carácter o de tipo binario creado con CREATEBINARY( ).
Formato de datos* | nFormat | cFormat | Descripción
CF_TEXT | 1 | Formato de texto.
CF_OEMTEXT | 7 | Formato de texto que contiene caracteres del juego de caracteres OEM.
CF_UNICODETEXT | 13 | Formato de texto Unicode, sólo disponible en Windows NT 4.0 o en una versión posterior.
CF_FILES o CF_HDROP | 15 | Un controlador que identifica una lista de archivos, como un conjunto de archivos arrastrados desde el Explorador de Windows.
CFSTR_OLEVARIANTARRAY "Matriz Variant OLE" Una matriz. Se pueden transferir varios valores en una sola operación de arrastrar y soltar con este formato.

Por ejemplo, este formato se puede usar para arrastrar un conjunto de elementos de un cuadro de lista a otro.
CFSTR_OLEVARIANT | "Variant OLE" | Variant. Todos los tipos de datos de Visual FoxPro se representan como Variant. Este formato se puede usar para arrastrar y soltar datos de Visual FoxPro sin perder el tipo de datos.
CFSTR_VFPSOURCEOBJECT | "Objeto de origen de VFP" | Una referencia al objeto de origen de arrastre de Visual FoxPro.

* Definido en FOXPRO.H.

Observaciones

El método SetData sólo se puede ejecutar en los eventos OLEStartDrag y OLESetData.

Vea también

ClearData (Método) | CREATEBINARY( ) | GetData (Método) | GetFormat (Método) | Técnica de arrastrar y soltar OLE | OLEStartDrag (Evento) | SetFormat (Método)

Se aplica a: DataObject (Objeto)


SetFocus (Método)

Asigna el enfoque a un control.

Control.SetFocus

Observaciones

No puede asignar el enfoque a un control si las propiedades Enabled o Visible del control están establecidas como falso (.F.), o si su evento When devuelve falso (.F.). Si las propiedades Enabled o Visible han sido establecidas como falso (.F.), debe establecerlas primero como verdadero (.T.) antes de que el control pueda recibir el enfoque desde el método SetFocus.

Una vez que un control tiene el enfoque, todas las entradas de usuario se dirigen hacia ese control.

Vea también

Enabled (Propiedad) | GotFocus (Evento) | LostFocus (Evento) | Visible (Propiedad)

Se aplica a: CheckBox | Column | ComboBox | CommandButton | Container (Objeto) | Control (Objeto) | EditBox | Grid | ListBox | OLE Bound (Control) | OLE Container (Control) | OptionButton | Page (Objeto) | Spinner | TextBox


SetFormat (Método)

Incluye un formato de datos en el DataObject en una operación de arrastrar y soltar de OLE. Sólo está disponible en tiempo de ejecución.

oDataObject.SetFormat(nFormat | cFormat)

Parámetros

nFormat | cFormat
Especifica el formato de los datos incluidos en el DataObject. La tabla siguiente muestra una lista de valores correspondientes a algunos formatos de datos comunes, con una descripción de cada formato. También puede crear su propio formato especificando una cadena de caracteres única para cFormat.
Formato de datos* | nFormat | cFormat | Descripción
CF_TEXT | 1 | Formato de texto.
CF_OEMTEXT | 7 | Formato de texto que contiene caracteres del juego de caracteres OEM.
CF_UNICODETEXT | 13 | Formato de texto Unicode, sólo disponible en Windows NT 4.0 o en una versión posterior.
CF_FILES o CF_HDROP | 15 | Un controlador que identifica una lista de archivos, como un conjunto de archivos arrastrados desde el Explorador de Windows.
CFSTR_OLEVARIANTARRAY "Matriz Variant OLE" Una matriz. Se pueden transferir varios valores en una sola operación de arrastrar y soltar con este formato.

Por ejemplo, este formato se puede usar para arrastrar un conjunto de elementos de un cuadro de lista a otro.
CFSTR_OLEVARIANT | "Variant OLE" | Variant. Todos los tipos de datos de Visual FoxPro se representan como Variant. Este formato se puede usar para arrastrar y soltar datos de Visual FoxPro sin perder el tipo de datos.
CFSTR_VFPSOURCEOBJECT | "Objeto de origen de VFP" | Una referencia al objeto de origen de arrastre de Visual FoxPro.

* Definido en FOXPRO.H.

Observaciones

Se puede incluir un formato de datos en el DataObject antes de colocar los datos correspondientes en él. Si coloca un formato de datos en el DataObject sin los datos correspondientes y ejecuta el método GetData en el evento OLEDragDrop, se ejecutará el evento OLESetData para el origen de arrastrar y soltar. El origen de arrastre puede entonces colocar los datos en el DataObject con el método SetData en el evento OLESetData.

Se puede mejorar el rendimiento de las operaciones de arrastrar y soltar de OLE colocando sólo los formatos de datos en el DataObject cuando se coloca una gran cantidad de datos, cuando se utilizan formatos de datos que no son compatibles de forma nativa con Visual FoxPro o cuando se utiliza un gran número de formatos.

El método SetFormat sólo se puede ejecutar en los eventos OLEStartDrag y OLESetData.

Vea también

ClearData (Método) | GetData (Método) | GetFormat (Método) | Técnica de arrastrar y soltar OLE | OLEDragDrop (Evento) | OLESetData (Evento) | OLEStartDrag (Evento) | SetData (Método)

Se aplica a: DataObject (Objeto)


SetMain (Método)

Establece el archivo principal de un proyecto.

Object.SetMain([cFileName])

Parámetros

cFileName
Especifica un archivo en el proyecto para establecerlo como el archivo principal. El archivo principal puede ser un programa, o un formulario. Asegúrese de incluir la extensión del archivo en cFileName. Si se omite cFileName o es una cadena vacía, no se establece ningún archivo del proyecto como archivo principal.

Observaciones

El método SetMain devuelve verdadero (.T.) si el archivo que especifica se establece como archivo principal. Devuelve falso (.F.) si el archivo que especifica no está en el proyecto o si el archivo que especifica no es del tipo apropiado.

El archivo principal es un programa (archivo .prg) o un formulario (archivo .scx) que sirve como punto de inicio de ejecución de una aplicación compilada y desde donde se llama a los demás componentes de la aplicación. Generalmente, el archivo principal establece el entorno de funcionamiento de la aplicación, ejecuta aplicaciones con menús o formularios para mostrar la interfaz de la aplicación, y establece el ciclo de eventos de la aplicación con el comando READ EVENTS . Debe designar un archivo principal en el Administrador de proyectos antes de crear un archivo de aplicación (.app) o ejecutable (.exe) desde el proyecto.

Nota Al especificar un archivo como archivo principal de un proyecto, también establece la propiedad MainFile del proyecto.

Vea también

MainFile (Propiedad)

Se aplica a: Project (Objeto)


SetVar (Método)

Crea una variable y almacena un valor de la misma para una instancia del servidor de automatización de la aplicación de Visual FoxPro.

ApplicationObject.SetVar(cVariableName, eValue)

Valores de la propiedad

cVariableName
Especifica el nombre de la variable que se va a crear.
eValue
Especifica el valor almacenado para la variable. Si ya existía la variable especificada con cVariableName, se almacenará el nuevo valor para la variable.

Observaciones

Aunque se puede utilizar el método DoCmd para establecer una variable para un valor de carácter, se debe utilizar el método SetVar para establecer una variable para otros tipos de datos.

Vea también

DoCmd (Método) | Eval (Método) | STORE

Se aplica a: Application (Objeto) | _VFP (Variable del sistema)


SetViewPort (Método)

Establece los valores de las propiedades ViewPortLeft y ViewPortTop de un formulario.

Object.SetViewPort(nLeft, nTop)

Parámetros

nLeft
Especifica el valor de la propiedad ViewPortLeft para el formulario.
nTop
Especifica el valor de la propiedad ViewPortTop para el formulario.

Observaciones

El método SetViewPort devuelve verdadero (.T.) si las propiedades ViewPortLeft y ViewPortTop se han establecido satisfactoriamente; si no, devuelve el valor falso (.F.). El método SetViewPort se pasa por alto para los formularios que no contienen barras de desplazamiento.

La unidad de medida de las propiedades ViewPortLeft y ViewPortTop está determinada por el valor de la propiedad ScaleMode del formulario: píxeles (valor predeterminado) o fóxeles.

Vea también

ScaleMode (Propiedad) | ScrollBars (Propiedad) | ViewPortLeft (Propiedad) | ViewPortHeight (Propiedad) | ViewPortTop (Propiedad) | ViewPortWidth (Propiedad)

Se aplica a: Form


Show (Método)

Muestra un formulario y determina si es modal o no modal.

 [FormSet.]Object.Show([nStyle])

Parámetros

nStyle
Determina cómo se muestra el formulario. Los valores posibles son:
Valor | Descripción
1 | Modal. Ninguna entrada de usuario (teclado o ratón) puede ocurrir en cualquier otro formulario o en el menú hasta que el formulario modal se oculte o se libere. El programa debe ocultar o liberar el formulario modal (normalmente en respuesta a una acción de usuario) antes de que pueda producirse otra entrada de usuario. Aunque los demás formularios de la aplicación se desactivan cuando se muestra un formulario modal, no se desactivan otras aplicaciones.
2 | (Predeterminado) No modal. Código que ocurre después de ejecutar el método Show a medida que se encuentra.

Si omite nStyle, el formulario se muestra en el estilo especificado por la propiedad WindowType .

Observaciones

El método Show establece la propiedad Visible de un formulario o de un conjunto de formularios como verdadero (.T.) y convierte al formulario en el objeto activo. Si una propiedad Visible de un formulario ya está establecida como verdadero (.T.), el método Show lo convierte en el objeto activo.

Si se activa un conjunto de formularios, el último formulario activo del conjunto también se vuelve activo. Si no hay formularios activos, el formulario que se agregó a la primera definición de la clase FormSet se hace activo.

Los formularios contenidos en un conjunto de formularios conservan su valor de la propiedad Visible . Si una propiedad Visible de un formulario se establece como falso (.F.), el método Show para el conjunto de formularios no muestra el formulario.

Vea también

Activate (Evento) | Hide (Método) | Visible (Propiedad) | WindowType (Propiedad)

Se aplica a: Form | FormSet | _SCREEN | ToolBar


ShowWhatsThis (Método)

Muestra el tema de la Ayuda ¿Qué es esto? especificado para un objeto con la propiedad WhatsThisHelpID.

Object.ShowWhatsThis

Valores de la propiedad

Object
Especifica el objeto para el que se muestra el tema de la Ayuda ¿Qué es esto?.

Observaciones

El método ShowWhatsThis se activa automáticamente al presionar la tecla F1. Si la propiedad WhatsThisHelp está establecida en Verdadero (.T.), aparecerá el tema de la Ayuda ¿Qué es esto? acerca del objeto, especificado con la propiedad WhatsThisHelpID. Si la propiedad WhatsThisHelp está establecida en Falso (.F.), se mostrará el tema de Ayuda acerca del objeto especificado con la propiedad HelpContextID.

Vea también

WhatsThisButton (Propiedad) | WhatsThisMode (Método) | WhatsThisHelp (Propiedad) | WhatsThisHelpID (Propiedad)

Se aplica a: CheckBox | ComboBox | CommandButton | CommandGroup | Container (Objeto) | Control (Objeto) | EditBox | Form | Grid | Image | Label | Line | ListBox | OLE Bound (Control) | OLE Container (Control) | OptionButton | OptionGroup | Shape | Spinner | TextBox | Timer | ToolBar


TextHeight (Método)

Devuelve el alto de una cadena de texto tal y como se muestra en la fuente actual.

 [nHeight =] [Form.]TextHeight(cText)

Parámetros

nHeight
Devuelve un valor que especifica el alto de la cadena de texto.
cText
Especifica la cadena de carácteres para la cual se determina el alto del texto, en la unidad de medida especificada por la propiedad ScaleMode del Form.

Observaciones

El método TextHeight determina la cantidad de espacio vertical necesario para mostrar cTexto. El alto devuelto incluye el espacio inicial por encima y por debajo de la cadena de carácteres, de modo que pueda usar el alto devuelto para calcular y situar múltiples líneas de texto dentro del Form. Si cTexto contiene retornos de carro, el método TextHeight devuelve el alto acumulado de las líneas, que incluye el espacio inicial por encima y por debajo de cada línea.

Vea también

FontSize (Propiedad) | ScaleMode (Propiedad) | TextWidth (Método)

Se aplica a: Form | _SCREEN


TextWidth (Método)

Devuelve el ancho de una cadena de texto tal y como se muestra en la fuente actual.

 [nWidth =] [Form.]TextWidth(cText)

Parámetros

nWidth
Devuelve un valor que especifica el ancho de la cadena de texto.
cText
Especifica la cadena de carácteres para la cual se determina el ancho del texto.

Observaciones

El método TextWidth determina la cantidad de espacio horizontal necesario para mostrar cTexto.

Vea también

FontSize (Propiedad) | ScaleMode (Propiedad) | TextHeight (Método)

Se aplica a: Form | _SCREEN


UndoCheckOut (Método)

Descarta las modificaciones realizadas en un archivo y vuelve a ponerlo bajo el control del código fuente.

Object.UndoCheckOut( )

Observaciones

Devuelve el valor verdadero (.T.) si se descartan los cambios realizados en el archivo y se protege el archivo con el control del código fuente; de lo contrario, devuelve falso (.F.).

Vea también

AddToSCC (Método) | CheckIn (Método) | CheckOut (Método) | GetLatestVersion (Método) | RemoveFromSCC (Método)

Se aplica a: File (Objeto)


WhatsThisMode (Método)

Muestra el puntero del ratón con un signo de interrogación propio de la Ayuda ¿Qué es esto? y activa este modo de Ayuda.

 [Form.]Object.WhatsThisMode

Observaciones

Al invocar el método WhatsThisMode, el puntero del se transforma en una flecha con un signo de interrogación y se activa el modo de la Ayuda ¿Qué es esto?. Si hace clic en un objeto, se muestra el tema de Ayuda ¿Qué es esto? especificado por la propiedad WhatsThisHelpID del objeto. Si presiona ESC se deshabilitará el modo de Ayuda ¿Qué es esto? y el puntero del ratón se devolverá a su estado original.

Vea también

HelpContextID (Propiedad) | SET HELP | ShowWhatsThis (Método) | WhatsThisButton (Propiedad) | WhatsThisHelp (Propiedad) | WhatsThisHelpID (Propiedad)

Se aplica a: Form


WriteExpression (Método)

Escribe una expresión en una propiedad. Está disponible en tiempo de diseño y en tiempo de ejecución.

Object.WriteExpression[cPropertyName, cExpression]

Parámetros

cPropertyName
Especifica el nombre de la propiedad en la que se va a escribir la expresión.
cExpression
Especifica la cadena de caracteres que se escribe en la hoja de propiedades como una expresión.

Vea también

ReadExpression (Método)

Se aplica a: CheckBox | Collection (Clase) | Column | ComboBox | CommandButton | CommandGroup | Cursor | CursorAdapter (Clase) | Custom | DataEnvironment | EditBox | Exception (Clase) | Form | FormSet | Grid | Header | Image | Label | Line | ListBox | OLE Bound (Control) | OLE Container (Control) | OptionButton | OptionGroup | Page | PageFrame | ProjectHook (Objeto) | Relation | Session (Objeto) | Shape | Spinner | TextBox | Timer | ToolBar


WriteMethod (Método)

Escribe el texto especificado en el método especificado. Sólo está disponible en tiempo de diseño.

Control.WriteMethod(cMethodName, cMethodText [,lCreateMethod])

Parámetros

cMethodName
Especifica el nombre del método en el cual se va a escribir el texto especificado.
cMethodText
Especifica el texto que se va a escribir con los métodos especificados.
lCreateMethod
Especifica si se debe crear el método en caso de que no exista. Como este método sólo es útil en tiempo de diseño, debe guardar el formulario o la clase para que los cambios surtan efecto.

Vea también

ReadExpression (Método) | ReadMethod (Método) | WriteExpression (Método)

Se aplica a: CheckBox | Collection (Clase) | Column | ComboBox | CommandButton | CommandGroup | Custom | EditBox | Exception (Clase) | Form | FormSet | Grid | Header | Image | Label | Line | ListBox | OLE Bound (Control) | OLE Container (Control) | OptionButton | OptionGroup | Page | PageFrame | Shape | Spinner | TextBox | Timer | ToolBar


ZOrder (Método)

Coloca el formulario o control especificado en la parte inicial o final del orden z en su nivel gráfico. Coloca un control contenido en el objeto ToolBar al principio o al final de la matriz de controles que determina el orden en que aparecen los controles en la barra de herramientas.

 [Object.]ZOrder([nOrder])

Valores de la propiedad

nOrder
Especifica un entero que indica la posición relativa del objeto con respecto a otros objetos. Si omite nOrder, el valor es 0.
Valor | Descripción
0 | (Predeterminado) El objeto se coloca al principio del orden z.
1 | El objeto se coloca al final del orden z.

Observaciones

Hay dos niveles gráficos asociados con los objetos. El nivel en posterior es el espacio de dibujo, donde aparecen los resultados de los métodos gráficos y el nivel frontal es el nivel de los objetos. El contenido de un nivel oculta el contenido del nivel que está detrás. El método ZOrder organiza los objetos sólo dentro del nivel donde aparece el objeto.

Nota Para un objeto Page, el método ZOrder no afecta a la configuración de la propiedad PageOrder. ZOrder sólo determina el objeto Page que está en el nivel más superficial y activo.

Para obtener más información acerca de cómo utilizar los controles, vea Utilizar controles.

Vea también

AlwaysOnBottom (Propiedad) | AlwaysOnTop (Propiedad) | PageOrder (Propiedad)

Se aplica a: CheckBox | ComboBox | CommandButton | CommandGroup | Container (Objeto) | Control (Objeto) | EditBox | Form | Grid | Image | Label | Line | ListBox | OLE Bound (Control) | OLE Container (Control) | OptionButton | OptionGroup | Page | PageFrame | _SCREEN | Shape | Spinner | TextBox | ToolBar


Eventos

Para información de referencia sobre elementos de lenguaje solo compatibles con versiones anteriores, vea Elementos del lenguaje compatibles con versiones anteriores.

A

Activate (Evento)

AfterBuild (Evento)

AfterCloseTables (Evento)

AfterCursorAttach (Evento)

AfterCursorClose (Evento)

AfterCursorDetach (Evento)

AfterCursorFill (Evento)

AfterCursorRefresh (Evento)

AfterCursorUpdate (Evento)

AfterDelete (Evento)

AfterInsert (Evento)

AfterUpdate (Evento)

AfterDock (Evento)

AfterRowColChange (Evento)

B

BeforeCursorAttach (Evento)

BeforeCursorClose (Evento)

BeforeCursorDetach (Evento)

BeforeCursorFill (Evento)

BeforeCursorRefresh (Evento)

BeforeCursorUpdate (Evento)

BeforeDelete (Evento)

BeforeInsert (Evento)

BeforeDock (Evento)

BeforeOpenTables (Evento)

BeforeRowColChange (Evento)

BeforeUpdate (Evento)

C

Click (Evento)

D

DBC_Activate (Evento)

DBC_AfterAddTable (Evento)

DBC_AfterAppendProc (Evento)

DBC_AfterCloseTable (Evento)

DBC_AfterCopyProc (Evento)

DBC_AfterCreateConnection (Evento)

DBC_AfterCreateOffline (Evento)

DBC_AfterCreateTable (Evento)

DBC_AfterCreateView (Evento)

DBC_AfterDBGetProp (Evento)

DBC_AfterDBSetProp (Evento)

DBC_AfterDeleteConnection (Evento)

DBC_AfterDropOffline (Evento)

DBC_AfterDropTable (Evento)

DBC_AfterModifyConnection (Evento)

DBC_AfterModifyProc (Evento)

DBC_AfterModifyTable(Evento)

DBC_AfterModifyView(Evento)

DBC_AfterOpenTable (Evento)

DBC_AfterRemoveTable (Evento)

DBC_AfterRenameConnection(Evento)

DBC_AfterRenameTable(Evento)

DBC_AfterRenameView(Evento)

DBC_AfterValidateData(Evento)

DBC_BeforeAddTable(Evento)

DBC_BeforeAppendProc(Evento)

DBC_BeforeCloseTable (Evento)

DBC_BeforeCopyProc (Evento)

DBC_BeforeCreateConnection (Evento)

DBC_BeforeCreateOffline (Evento)

DBC_BeforeCreateTable (Evento)

DBC_BeforeCreateView (Evento)

DBC_BeforeDBGetProp (Evento)

DBC_BeforeDBSetProp (Evento)

DBC_BeforeDeleteConnection (Evento)

DBC_BeforeDropOffline (Evento)

DBC_BeforeDropTable (Evento)

DBC_BeforeModifyConnection (Evento)

DBC_BeforeModifyProc (Evento)

DBC_BeforeModifyTable (Evento)

DBC_BeforeModifyView (Evento)

DBC_BeforeOpenTable (Evento)

DBC_BeforeRemoveTable (Evento)

DBC_BeforeRenameConnection (Evento)

DBC_BeforeRenameTable (Evento)

DBC_BeforeRenameView (Evento)

DBC_BeforeValidateData (Evento)

DBC_CloseData (Evento)

DBC_Deactivate (Evento)

DBC_ModifyData (Evento)

DBC_OpenData (Evento)

DBC_PackData (Evento)

DblClick (Evento)

Deactivate (Evento)

Deleted (Evento)

Destroy (Evento)

DoCmd (Método)

DownClick (Evento)

DragDrop (Evento)

DragOver (Evento)

DropDown (Evento)

E

Error (Evento)

ErrorMessage (Evento)

F

G

GotFocus (Evento)

H

I

Init (Evento)

InteractiveChange (Evento)

J

K

KeyPress (Evento)

L

Load (Evento)

LostFocus (Evento)

M

Message (Evento)

MiddleClick (Evento)

MouseDown (Evento)

MouseEnter (Evento)

MouseLeave (Evento)

MouseMove (Evento)

MouseUp (Evento)

MouseWheel (Evento)

Moved (Evento)

N

O

OLECompleteDrag (Evento)

OLEDragOver (Evento)

OLEGiveFeedBack (Evento)

OLESetData (Evento)

OLEStartDrag (Evento)

OnMoveItem (Evento)

P

Paint (Evento)

ProgrammaticChange (Evento)

Q

QueryAddFile (Evento)

QueryModifyFile (Evento)

QueryNewFile (Evento)

QueryRemoveFile (Evento)

QueryRunFile (Evento)

QueryUnload (Evento)

R

RangeHigh (Evento)

RangeLow (Evento)

ReadActivate (Evento)

ReadDeactivate (Evento)

ReadShow (Evento)

ReadValid (Evento)

ReadWhen (Evento)

Resize (Evento)

RightClick (Evento)

S

Scrolled (Evento)

T

Timer (Evento)

U

UIEnable (Evento)

Undock (Evento)

Unload (Evento)

UpClick (Evento)

V

Valid (Evento)

W

When (Evento)

X

Y

Z

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico"..

© 1992 - 2003 Microsoft Corporation. Todos los derechos reservados.

Traducido al Español por el grupo de traductores de PortalFox.

Envíe un informe sobre errores en la traducción de este tema


Activate (Evento)

Se produce cuando un objeto Form, FormSet, Project, o Page se convierte en activo o cuando se muestra un objeto Toolbar.

PROCEDURE Object.Activate

Observaciones

Los desencadenadores de este evento dependen del tipo de objeto:

  • Un objeto Form se activa por una acción de usuario, como un clic en un formulario o un control, o cuando se llama al método Show para el objeto Form.
  • Un objeto FormSet se activa cuando un formulario del conjunto de formularios recibe el enfoque o cuando se llama al método Show para el conjunto de formularios.
  • Un objeto ProjectHook se activa por una acción del usuario, tal como hacer clic en la ventana de proyecto o por un comando tal como ACTIVATE WINDOW proyecto.
  • Un objeto Page se activa por una acción de usuario, como un clic en la ficha de la página o en un control que se encuentra en la página, o si la propiedad ActivePage del marco de página que la contiene se ha establecido con el número de la página.
  • Un objeto ToolBar se activa cuando se llama al método Show para el objeto ToolBar.

Si utiliza el método Show para un objeto FormSet, se mostrarán todos los formularios que tengan la propiedad Visible establecida en el valor verdadero (.T.). El evento Activate se desencadena en primer lugar para el conjunto de formularios, a continuación para el formulario y, por último, para la página.

Vea también

ActivePage (Propiedad) | Deactivate (Evento) | GotFocus (Evento) | LostFocus (Evento) | SetFocus (Método) | Show (Método) | Visible (Propiedad)

Se aplica a: _SCREEN (Variable del sistema) | Form (Objeto) | FormSet (Objeto) | ProjectHook (Objeto) | Page (Objeto) | ToolBar (Objeto)


AfterBuild (Evento)

Se produce después de que se vuelva a generar un proyecto o de que se cree en un proyecto un archivo de aplicación (.app), una biblioteca de vínculos dinámicos (.dll) o un archivo ejecutable (.exe).

PROCEDURE Object.AfterBuild LPARAMETERS nError

Parámetros

nError
El número de error de Visual FoxPro que se devuelve después de que el proyecto se ha vuelto a generar o después de que se haya creado un archivo .app, .dll o .exe. Si nError es 0, no se han producido errores cuando el proyecto se ha vuelto a generar o después de que se haya creado un archivo .app, .dll o .exe.

Vea también

BeforeBuild (Evento) | Build (Método) | BUILD PROJECT (Comando)

Se aplica a: ProjectHook (Objeto)


AfterCloseTables (Evento)

Se produce después de liberar las tablas o las vistas especificadas en el entorno de datos para un formulario, un conjunto de formularios o un informe.

PROCEDURE DataEnvironment.AfterCloseTables

Observaciones

Para un formulario o conjunto de formularios, el evento AfterCloseTables se produce después de que tenga lugar el evento Unload del formulario o conjunto de formularios y después de cerrar las tablas o las vistas que el entorno de datos había abierto.

Para un informe, el evento AfterCloseTables se produce después de cerrar las tablas o las vistas que el entorno de datos había abierto.

El evento AfterCloseTables se produce siempre que se llama al método CloseTables. El evento Destroy del entorno de datos y sus objetos asociados se producen después del evento AfterCloseTables.

Vea también

CloseTables (Método) | Destroy (Evento) | Unload (Evento)

Se aplica a: DataEnvironment (Objeto)


AfterCursorAttach (Evento)

Ocurre inmediatamente después de que un objeto CursorAdapter intenta asociar el cursor. Puede utilizar este evento para realizar tareas tales como personalizar cursores y cursor adapters como requiera y hacer validaciones.

PROCEDURE Object.AfterCursorAttach LPARAMETERS cAlias, lResult

Parámetros

cAlias
Especifica el alias del cursor o tabla asociada.
lResult
Especifica Verdadero (.T.) si consigue asociar el cursor o tabla y Falso (.F.) si no lo consigue.

Vea también

Métodos | CursorAdapter (Objeto: propiedades, métodos y eventos) | BeforeCursorAttach (Evento) | CursorAttach (Método)

Se aplica a: CursorAdapter (Clase)


AfterCursorClose (Evento)

Ocurre inmediatamente después de cerrar un cursor. Puede utilizar este evento para restablecer las propiedades de CursorAdapter, etc..

PROCEDURE Object.AfterCursorClose LPARAMETERS cAlias, lResult

Parámetros

cAlias
Especifica el alias del cursor o tabla que se cerró.
lResult
Especifica Verdadero (.T.) si se consigue cerrar el cursor o tabla y Falso (.F.) si no se logra cerrarlo.

Observaciones

Puede borrar o restablecer la propiedad Alias si desea quitar su valor anterior. Cuando se cierra un cursor asociado, Visual FoxPro marca el objeto CursorAdapter indicando que no tiene un cursor asociado pero no borra la propiedad Alias.

Vea también

Métodos | CursorAdapter (Objeto: propiedades, métodos y eventos) | Alias (Propiedad)

Se aplica a: CursorAdapter (Clase)


AfterCursorDetach (Evento)

Ocurre inmediatamente después de que un objeto CursorAdapter libera un cursor. Puede utilizar AfterCursorDetach para realizar tareas tales como restablecer las propiedades de un CursorAdapter y realizar operaciones en la tabla liberada.

PROCEDURE Object.AfterCursorAttach LPARAMETERS cAlias, lResult

Parámetros

cAlias
Especifica el alias de un cursor o tabla liberada.
lResult
Especifica Verdadero (.T.) si el método CursorDetach de CursorAdapter consigue liberar el cursor o tabla y Falso (.F.) si no lo consigue.

Vea también

Eventos | CursorAdapter (Objeto: propiedades, métodos y eventos) | BeforeCursorDetach (Evento) | CursorDetach (Método)

Se aplica a: CursorAdapter (Clase)


AfterCursorFill (Evento)

Ocurre inmediatamente después que un objeto CursorAdapter intenta crear un nuevo cursor.

PROCEDURE Object.AfterCursorFill LPARAMETERS lUseCursorSchema, lnoDataOnLoad, cSelectCmd, lResult

Parámetros

lUseCursorSchema
Especifica el valor para el parámetro lUseCursorSchema del método CursorFill.
lnoDataOnLoad
Especifica el valor para el parámetro lNoData del método CursorFill.
cSelectCmd
Especifica el mismo parámetro SelectCmd utilizado por el evento BeforeCursorFill.
lResult
Especifica el valor Verdadero (.T.) o Falso (.F.) devuelto por CursorFill.

Observaciones

Si alguno de los primeros tres parámetros se cambian en BeforeCursorFill, AfterCursorFill utiliza el valor modificado en lugar del valor actual en las propiedades, el cual no cambia.

Ejemplo

El siguiente ejemplo muestra el uso del evento AfterCursorFill para establecer el índice desde una propiedad programada:

PROCEDURE AfterCursorFill
LPARAMETERS lUseCursorSchema, noDataOnLoad, cSelectCmd, lResult
SELECT(this.Alias)
SET ORDER TO (this.IndexOrder)
ENDPROC

Vea también

Eventos | CursorAdapter (Objeto: propiedades, métodos y eventos) | CursorFill (Método) | SelectCmd (Propiedad) | AfterCursorFill (Evento) | BeforeCursorFill (Evento)

Se aplica a: CursorAdapter (Clase)


AfterCursorRefresh (Evento)

Ocurre después que un objeto CursorAdapter intenta refrescar.

PROCEDURE Object.AfterCursorRefresh LPARAMETERS cSelectCmd, lResult

Parámetros

cSelectCmd
Especifica el valor actual de SelectCmd como se estableció en el evento BeforeCursorFill. Por ejemplo, si el parámetro cSelectCmd se cambia en BeforeCursorFill, entonces se utiliza el valor modificado de SelectCmd. Sin embargo, el valor en la propiedad SelectCmd no cambia.
lResult
Especifica el valor Verdadero (.T.) o Falso (.F.) devuelto por el método CursorRefresh.

Vea también

Eventos | CursorAdapter (Objeto: propiedades, métodos y eventos) | SelectCmd (Propiedad) | BeforeCursorFill (Evento) | BeforeCursorRefresh (Evento) | CursorRefresh (Método)

Se aplica a: CursorAdapter (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


AfterCursorUpdate (Evento)

Ocurre inmediatamente después, que se hayan producido todos los eventos intermedios AfterUpdate, AfterDelete, o AfterInsert y antes que se termine de ejecutar la función TABLEUPDATE( ).

PROCEDURE Objeto.AfterCursorUpdate LPARAMETERS nFilas, lResultado, cMatrizErrores

Parámetros

nFilas
Especifica el valor del parámetro nFilas para la función TABLEUPDATE( ).
lResultado
Especifica el valor devuelto por la operación TABLEUPDATE( ).
cMatrizErrores
Contiene el valor del parámetro cMatrizErrores para la función TABLEUPDATE( ). Visual FoxPro completa esta matriz desde TABLEUPDATE( ) sólo bajo las circunstancias descriptas para cMatrizErrores en la función TABLEUPDATE( ).

Observaciones

AfterCursorUpdate ocurre una vez que se haya completado el proceso de actualización. Si se están actualizando múltiples registros, los eventos AfterUpdate, AfterInsert, y AfterDelete ocurren para cada registro actualizado.

Puede llamar la función AERROR() para recuperar errores recientes del origen de datos.

Vea también

Eventos | CursorAdapter (Objeto: propiedades, métodos y eventos) | BeforeCursorUpdate (Evento) | AfterDelete (Evento) | AfterInsert (Evento) | TABLEUPDATE( ) (Función) | AERROR( ) (Función)

Se aplica a: CursorAdapter (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


AfterDelete (Evento)

Ocurre inmediatamente después de borrar un registro.

Nota Si se utiliza actualización por lotes, es decir, la propiedad BatchUpdateCount de CursorAdapter es mayor que 1, AfterDelete no ocurre.
PROCEDURE Objeto.AfterDelete LPARAMETERS cEstado, lForzar, cComandoBorrar, lResultado

Parámetros

cEstado
Especifica el estado del campo del registro que esta siendo utilizado. Este mismo valor se obtiene llamando a la siguiente función:
GETFLDSTATE(-1)

Por ejemplo, este valor puede ser una cadena de caracteres que se compone de los valores de estado: borrado y editado, para todos los campos en la tabla o cursor. Si una tabla tiene cinco campos y sólo el primer campo ha sido editado, GETFLDSTATE() devuelve un valor de 121111. El número 1 en la primera posición indica que el estado borrado no ha cambiado.

lForzar
Especifica el valor del parámetro lForzar para la función TABLEUPDATE( ).
cComandoBorrar
Especifica el valor del parámetro cComandoBorrar del evento BeforeDelete.
lResultado
Especifica el valor devuelto por la ejecución de TABLEUPDATE( ) para este registro. Si lResultado es Verdadero (.T.), el estado de campo se borra para este registro. Si lResultado es Falso (.F.), el estado de campo no se borra para este registro. Puede cambiar el valor de lResultado para sobrescribir el resultado devuelto.

Observaciones

Puede llamar la función AERROR( ) para recuperar errores recientes del origen de datos.

Vea también

Eventos | CursorAdapter (Objeto: propiedades, métodos y eventos) | GETFLDSTATE( ) (Función) | TABLEUPDATE( ) (Función) | BeforeDelete (Evento) | AERROR( ) (Función)

Se aplica a: CursorAdapter (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


AfterDock (Evento)

Se produce después de acoplar un objeto ToolBar.

PROCEDURE ToolBar.AfterDock

Observaciones

El evento AfterDock se produce cuando el usuario acopla una Barra de herramientas o cuando se llama al método Dock.

Vea también

BeforeDock (Evento) | Dock (Método) | Undock (Evento)

Se aplica a: ToolBar (Objeto)


AfterInsert (Evento)

Ocurre inmediatamente después de insertar un registro.

Nota Si se utiliza actualización por lotes, es decir, la propiedad BatchUpdateCount de CursorAdapter es mayor que 1, AfterInsert no ocurre.
PROCEDURE Objeto.AfterInsert LPARAMETERS cEstado, lForzar, cComandoIsertar, lResultado

Parámetros

cEstado
Especifica el estado del campo del registro que esta siendo utilizado.
GETFLDSTATE(-1)

Por ejemplo, este valor puede ser una cadena de caracteres que se compone de los valores de estado: borrado y editado, para todos los campos en la tabla o cursor. Si una tabla tiene cinco campos y sólo el primer campo ha sido editado, GETFLDSTATE() devuelve un valor de 121111. El número 1 en la primera posición indica que el estado borrado no ha cambiado.

lForzar
Especifica el valor del parámetro lForzar de la función TABLEUPDATE( ).
cComandoInsertar
Especifica el valor del parámetro cComandoInsertar del evento BeforeInsert.
lResultado
Especifica el valor devuelto por la ejecución de TABLEUPDATE( ) para este registro. Si lResultado es Verdadero (.T.), el estado del campo se borra para este registro. Si lResultado es Falso (.F.), el estado del campo no se borra para este registro. Puede cambiar el valor de lResultado para sobrescribir el valor devuelto.

Observaciones

Puede llamar la función AERROR( ) para recuperar errores recientes del origen de datos.

Vea también

Eventos | CursorAdapter (Objeto: propiedades, métodos y eventos) | GETFLDSTATE( ) (Función) | TABLEUPDATE( ) (Función) | BeforeInsert (Evento) | AERROR( ) (Función)

Se aplica a: CursorAdapter (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


AfterRowColChange (Evento)

Se produce cuando el usuario se mueve a otra fila o columna en la cuadrícula, después de que la nueva celda obtenga el enfoque y después del evento When del objeto en la nueva fila o columna. El evento AfterRowColChange no se activa a menos que el evento When del objeto en la nueva fila o columna devuelva verdadero (.T.).

PROCEDURE Grid.AfterRowColChange LPARAMETERS nColIndex

Parámetros

nColIndex
Devuelve el índice de la fila o la columna recién seleccionada.

Observaciones

AfterRowColChange se activa interactivamente mediante el ratón, o el teclado, o por programa, por ejemplo, al llamar al método ActivateCell.

Utilice este evento para sincronizar las dos mitades de una cuadrícula cuando la propiedad SplitBar = .T.; para ello, agregue This.Refresh.

Puede consultar la propiedad RowColChange para este evento, y determinar el tipo de cambio que desencadena este evento.

Vea también

ActivateCell (Método) | BeforeRowColChange (Evento) | RowColChange (Propiedad) | When (Evento) | NODEFAULT (Comando)

Se aplica a: Grid (Control)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


AfterUpdate (Evento)

Ocurre inmediatamente después de realizar una operación de actualización para un registro.

Nota Si se utiliza una actualización por lotes, es decir, la propiedad BatchUpdateCount de CursorAdapter es mayor que 1, AfterUpdate no ocurre.
PROCEDURE Object.AfterUpdate LPARAMETERS cFldState, lForce, nUpdateType, UpdateInsertCmd, DeleteCmd, lResult

Parámetros

cFldState
Especifica el estado del campo del registro que esta siendo utilizado. Este mismo valor se obtiene llamando a la siguiente función:
GETFLDSTATE(-1)

Por ejemplo, este valor puede ser una cadena de caracteres que se compone de los valores de estado: borrado y editado, para todos los campos en la tabla o cursor. Si una tabla tiene cinco campos y sólo el primer campo ha sido editado, GETFLDSTATE() devuelve un valor de 121111. El número 1 en la primera posición indica que el estado borrado no ha cambiado.

lForce
Especifica el valor del parámetro lForce de la función TABLEUPDATE( ).
nUpdateType
Especifica el valor del parámetro nUpdateType del evento BeforeUpdate.
UpdateInsertCmd
Especifica el valor del parámetro UpdateInsertCmd del evento BeforeUpdate.
DeleteCmd
Especifica el valor del parámetro DeleteCmd del evento BeforeUpdate.
lResult
Especifica el valor devuelto al ejecutar TABLEUPDATE( ) para este registro.

En la siguiente tabla se describen los valores para lResult.

lResult | Descripción
Verdadero (.T.) | Borra el campo estado para el registro.
Falso (.F.) | No borra el campo estado para el registro.

Puede cambiar el valor de lResult para sobrescribir el resultado con el valor devuelto.

Observaciones

Puede llamar la función AERROR( ) para recuperar errores del origen de datos superiores.

Vea también

Eventos | CursorAdapter (Objeto: propiedades, métodos y eventos) | GETFLDSTATE( ) (Función) | TABLEUPDATE( ) (Función) | BeforeUpdate (Evento) | AERROR( ) (Función)

Se aplica a: CursorAdapter (Clase)


BeforeBuild (Evento)

Se produce antes de que se vuelva a generar un proyecto o de que se cree en un proyecto un archivo de aplicación (.app), una biblioteca de vínculos dinámicos (.dll) o un archivo ejecutable (.exe).

PROCEDURE Object.BeforeBuild LPARAMETERS cOutputName, nBuildAction, lRebuildAll, lShowErrors, lBuildNewGuids

Parámetros

cOutputName
Especifica el nombre de la aplicación, biblioteca de vínculos dinámicos o archivo ejecutable que se crea.

Si cOutputName incluye una extensión de archivo y nBuildAction se omite, la extensión de archivo indicada en cOutputName determina el tipo de archivo compilado. Por ejemplo, si la extensión indicada en cOutputName es ".exe", se genera un archivo ejecutable.

nBuildAction
Especifica que se regenere el proyecto o se genere una aplicación, una biblioteca de vínculos dinámicos o un archivo ejecutable.

La tabla siguiente muestra los valores de nBuildAction con una descripción de cada uno.

nBuildAction | Constante FoxPro.h | Descripción
1 | BUILDACTION_REBUILD | Recompila el proyecto
2 | BUILDACTION_BUILDAPP | Crea un archivo .app
3 | BUILDACTION_BUILDEXE | Crea un archivo .exe
4 | BUILDACTION_BUILDDLL | Crea un archivo.dll
5 | BUILDACTION_BUILDMTDLL | Crea un archivo .dll de múltiples subprocesos

nBuildAction tiene preferencia sobre la extensión de archivo especificada en cOutputName. Por ejemplo, se crea un archivo ejecutable si nBuildAction es 3 y cOutputName no especifica una extensión ".exe".

lRebuildAll
Especifica si los archivos del proyecto se recompilan antes de crear un archivo .app, .dll o .exe. Si lRebuildAll es verdadero (.T.), se recompila lo siguiente:
  • Archivos de programa
  • Archivos de formato
  • Código fuente en formularios, etiquetas, informes y bibliotecas de clases visuales.
  • Procedimientos almacenados en bases de datos

Si lRebuildAll es falso (.F.) o se omite, los archivos del proyecto no se recompilan antes de que se cree el archivo .app, .dll o .exe.

lShowErrors
Especifica si se muestran los errores de compilación en una ventana de edición al terminar la compilación. Si lShowErrors es verdadero (.T.), los errores se muestran. Si lShowErrors es falso (.F.) o se omite, los errores de compilación no se muestran.
lBuildNewGUIDs
Especifica si se generan los nuevos GUID (identificadores exclusivos globales) del registro cuando se crea un archivo ejecutable o una biblioteca de vínculos dinámicos. Si lBuildNewGUIDs es verdadero (.T.), se generan los nuevos GUID. Si lBuildNewGUIDs es falso (.F.) o se omite, no se generan los nuevos GUID. lBuildNewGUIDs se pasa por alto si nBuildAction es menor que 3.

Observaciones

Los parámetros mostrados arriba se pasan al evento BeforeBuild cuando ejecuta el método Build, cuando ejecuta los comandos BUILD APP, BUILD DLL, BUILD EXE o BUILD PROJECT, o cuando elige Aceptar en el cuadro de diálogo Opciones para generar. Los parámetros se pasan por referencia con la excepción del parámetro nBuildAction, que se pasa por valor. Puede cambiar los valores de estos parámetros en el evento BeforeBuild para modificar como se crea un proyecto o un archivo .app, .dll o .exe desde el proyecto.

Incluya NODEFAULT en el evento BeforeBuild para evitar que un proyecto se recompile o para evitar que se cree un archivo de aplicación (.app), una biblioteca de vínculos dinámicos (.dll) o un archivo ejecutable (.exe).

Vea también

AfterBuild (Evento) | Build (Método) | BUILD PROJECT (Comando) | NODEFAULT (Comando)

Se aplica a: ProjectHook (Objeto)


BeforeCursorAttach (Evento)

Ocurre inmediatamente antes de que un objeto CursorAdapter intente asociar un cursor. Puede utilizar éste para realizar cualquier operación necesaria antes de asociar el cursor o tabla, determinar un alias a asociar, etc.

PROCEDURE Object.BeforeCursorAttach LPARAMETERS cAlias

Parámetros

cAlias
Especifica el alias del cursor o tabla que será asociado.

Observaciones

Si el código en BeforeCursorAttach devuelve un valor de Falso (.F.), no se asocia el cursor.

Nota El objeto CursorAdapter respeta cualquier cambio que pueda haber hecho BeforeCursorAttach al parámetro cAlias.

Ejemplo

El siguiente ejemplo ilustra cómo abrir una vista local en BeforeCursorAttach para que pueda asociar la vista a un objeto CursorAdapter:

PROCEDURE BeforeCursorAttach
OPEN DATABASE HOME(2)+"tastrade\data\tastrade.dbc"
USE 'product listing'
ENDPROC

Entonces haga la siguiente llamada para asociar la vista:

CursorAttach('product listing', .T.)

Vea también

Eventos | CursorAdapter (Objeto: propiedades, métodos y eventos) | AfterCursorAttach (Evento) | CursorAttach (Método)

Se aplica a: CursorAdapter (Clase)


BeforeCursorClose (Evento)

Ocurre inmediatamente antes de cerrar un cursor. Puede usar este evento para realizar cualquier operación necesaria antes de cerrar un cursor o tabla, etcétera.

PROCEDURE Object.BeforeCursorClose LPARAMETERS cAlias

Parámetros

cAlias
Especifica el alias del cursor o tabla a cerrar.

Observaciones

Si el código en BeforeCursorClose devuelve un valor de Falso (.F.), el cursor no se cierra y Visual FoxPro genera un mensaje de error.

Vea también

Eventos | CursorAdapter (Objeto: propiedades, métodos y eventos) | AfterCursorClose (Evento)

Se aplica a: CursorAdapter (Clase)


BeforeCursorDetach (Evento)

Ocurre inmediatamente antes de que un objeto CursorAdapter libere un cursor. Puede utilizar este evento para realizar alguna operación necesaria antes de liberar el cursor o tabla.

PROCEDURE Object.BeforeCursorAttach LPARAMETERS cAlias

Parámetros

cAlias
Especifica el alias del cursor o tabla a ser liberado.

Observaciones

Si el código en BeforeCursorDetach devuelve un valor de Falso (.F.), el cursor no se libera y se ignora cualquier valor devuelto.

Vea también

Eventos | CursorAdapter (Objeto: propiedades, métodos y eventos) | AfterCursorDetach (Evento) | CursorDetach (Método)

Se aplica a: CursorAdapter (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


BeforeCursorFill (Evento)

Ocurre inmediatamente antes de que un objeto CursorAdapter intente asociar un nuevo cursor.

PROCEDURE Object.BeforeCursorFill LPARAMETERS lUseCursorSchema, lNoDataOnLoad, cSelectCmd

Parámetros

lUseCursorSchema
Especifica el valor del parámetro lUseCursorSchema del método CursorFill.
lNoDataOnLoad
Especifica el valor de la propiedad lNoData en CursorFill.
cSelectCmd
Especifica el valor actual de la propiedad SelectCmd. Puede cambiar el valor del parámetro cSelectCmd en este evento. Sin embargo, el valor en la propiedad SelectCmd no cambia. Si cambia el valor del parámetro cSelectCmd en este evento, Visual FoxPro utiliza el valor modificado de cSelectCmd.

Observaciones

Visual FoxPro almacena el valor modificado, el cual es utilizado por CursorFill. El método CursorRefresh utiliza el valor del parámetro SelectCmd, no el de la propiedad SelectCmd. Esto facilita la construcción rápida de consultas personalizadas. Por ejemplo, puede almacenar un comando básico SELECT – SQL en la propiedad SelectCmd y agregar una cláusula WHERE para el parámetro SelectCmd en este evento sin cambiar el valor base de la propiedad. El valor del parámetro SelectCmd se pasa al evento AfterCursorFill.

Si el código en BeforeCursorFill devuelve un valor de Falso (.F.), CursorFill no se ejecuta, y el cursor asociado actualmente permanece abierto. Sin embargo, si el código en BeforeCursorFill no devuelve falso, el cursor asociado actualmente se cierra, y se ejecuta CursorFill.

Los cambios hechos a este parámetro tienen prioridad sobre el valor original almacenado en la propiedad respectiva o el que se pasa a CursorFill.

Vea también

Eventos | CursorAdapter (Objeto: propiedades, métodos y eventos) | CursorFill (Método) | SelectCmd (Propiedad) | CursorRefresh (Método) | SelectCmd (Propiedad) | SELECT - SQL (Comando) | AfterCursorFill (Evento)

Se aplica a: CursorAdapter (Clase)


BeforeCursorRefresh (Evento)

Ocurre inmediatamente antes de que un objeto CursorAdapter intente refrescar.

PROCEDURE Object.BeforeCursorRefresh LPARAMETERS cSelectCmd

Parámetros

cSelectCmd
Especifica el valor actual de SelectCmd como se estableció en el evento BeforeCursorFill. Por ejemplo, si el parámetro cSelectCmd se modifica en BeforeCursorFill, entonces se utiliza el valor modificado SelectCmd. Sin embargo, el valor de la propiedad SelectCmd no cambia.

Observaciones

Si el código en BeforeCursorRefresh devuelve un valor de Falso (.F.), el objeto CursorAdapter no se refresca.

Vea también

Eventos | CursorAdapter (Objeto: propiedades, métodos y eventos) | SelectCmd (Propiedad) | BeforeCursorFill (Evento) | AfterCursorRefresh (Evento)

Se aplica a: CursorAdapter (Clase)


BeforeCursorUpdate (Evento)

Ocurre inmediatamente antes de que se ejecute la función TABLEUPDATE( ).

PROCEDURE Object.BeforeCursorUpdate LPARAMETERS nRows, lForce

Parámetros

nRows
Especifica la configuración del parámetro nRows de la función TABLEUPDATE( ).
lForce
Especifica el valor del parámetro lForce de la función TABLEUPDATE( ).

Observaciones:

BeforeCursorUpdate ocurre una vez al comienzo del proceso de actualización. Si se están actualizando múltiples filas, los eventos BeforeUpdate, BeforeInsert, y BeforeDelete ocurren apropiadamente para cada fila actualizada.

Si el código en BeforeCursorUpdate devuelve Falso (.F.), no ocurren las operaciones actualizar, insertar, o borrar.

Vea también

Eventos | CursorAdapter (Objeto: propiedades, métodos y eventos) | TABLEUPDATE( ) (Función) | BeforeUpdate (Evento) | BeforeInsert (Evento) | BeforeDelete (Evento) | AfterCursorUpdate (Evento)

Se aplica a: CursorAdapter (Clase)


BeforeDelete (Evento)

Ocurre inmediatamente antes de borrar un registro.

Nota Si se utiliza actualización por lotes, es decir, la propiedad BatchUpdateCount de CursorAdapter es mayor que 1, BeforeDelete no ocurre.
PROCEDURE Objeto.BeforeDelete LPARAMETERS cEstado, lForzar, cComandoBorrar

Parámetros

cEstado
Especifica el estado del campo del registro que siendo utilizado. Este es el mismo valor que se obtiene al llamar a la siguiente función:
GETFLDSTATE(-1)

Por ejemplo, este valor puede ser una cadena de caracteres que se compone de los valores de estado: borrado y editado, para todos los campos en la tabla o cursor. Si una tabla tiene cinco campos y sólo el primer campo ha sido editado, GETFLDSTATE() devuelve un valor de 121111. El número 1 en la primera posición indica que el estado borrado no ha cambiado.

lForzar
Especifica el valor del parámetro lForzar para la Función TABLEUPDATE( ).
cComandoBorrar
Especifica el valor de la Propiedad DeleteCmd. Visual FoxPro utiliza como comando de borrado el valor cComandoBorrar, que se puede cambiar en este Evento. Sin embargo, si se cambia el valor del parámetro cComandoBorrar, el valor de la Propiedad DeleteCmd no cambia.

Observaciones

Si el código de BeforeDelete devuelve Falso (.F.), la operación de Borrado no ocurre.

Vea también

Eventos | CursorAdapter (Objeto: propiedades, métodos y eventos) | Función GETFLDSTATE( ) | Función TABLEUPDATE( ) | DeleteCmd (Propiedad) | AfterDelete (Evento)

Se aplica en: CursorAdapter (Clase)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico".


BeforeDock (Evento)

Se produce antes de acoplar el objeto ToolBar.

PROCEDURE ToolBar.BeforeDock

LPARAMETERS nLocation

Parámetros

nLocation
Especifica donde se acoplará el control ToolBar. Los valores posibles de nLocation son:
Valor | Constante FOXPRO.H | Descripción
–1 | TOOL_NOTDOCKED | La barra de herramientas no se acoplará.
0 | TOOL_TOP | La barra de herramientas se acoplará en la parte superior de la ventana principal de Visual FoxPro.
1 | TOOL_LEFT | La barra de herramientas se acoplará en la parte izquierda de la ventana principal de Visual FoxPro.
2 | TOOL_RIGHT | La barra de herramientas se acoplará en la parte derecha de la ventana principal de Visual FoxPro.
3 | TOOL_BOTTOM | La barra de herramientas se acoplará en la parte inferior de la ventana principal de Visual FoxPro.

Observaciones

El evento BeforeDock se produce cuando se arrastra el control ToolBar a una región de acoplamiento o cuando se invoca el método Dock.

BeforeDock se desencadena antes de que se vuelva a dibujar ToolBar, para permitir que se modifique la apariencia de la barra de herramientas. Esto resulta útil si la barra de herramientas tiene un control, tal como un ComboBox, que se desee reemplazar por un control de proporciones diferentes, tal como un CommandButton, al acoplar la barra de herramientas.

Vea también

AfterDock (Evento) | Dock (Método) | Undock (Evento) | CommandButton (Control)

Se aplica a: ToolBar (Objeto)


BeforeInsert (Evento)

Ocurre inmediatamente antes de ejecutar un comando insert para un registro.

Nota Si se utiliza actualización por lotes, es decir, la propiedad BatchUpdateCount de CursorAdapter es mayor que 1, BeforeInsert no ocurre.
PROCEDURE Object.BeforeInsert LPARAMETERS cFldState, lForce, cInsertCmd

Parámetros

cFldState
Especifica el campo estado de la fila que se está procesando. Este mismo valor se obtiene llamando la siguiente función:
GETFLDSTATE(-1)

Por ejemplo, este valor puede ser una cadena de caracteres que consiste de los valores de estado: borrado y editado, para todos los campos en la tabla o cursor. Si una tabla tiene cinco campos y sólo el primer campo ha sido editado, GETFLDSTATE() devuelve un valor de 121111. El número 1 en la primera posición indica que el estado borrado no ha cambiado.

lForce
Especifica el valor del parámetro lForce de la función TABLEUPDATE( ).
cInsertCmd
Especifica el valor de la propiedad InsertCmd. Visual FoxPro utiliza el valor de cInsertCmd como el comando insert, el cual puede cambiar en este evento. Sin embargo, si modifica el valor del parámetro cInsertCmd, el valor de la propiedad InsertCmd no cambia.

Observaciones

Si el código en BeforeInsert devuelve Falso (.F.), la operación insertar no ocurre.

Vea también

Eventos | CursorAdapter (Objeto: propiedades, métodos y eventos) | GETFLDSTATE( ) (Función) | TABLEUPDATE( ) (Función) | InsertCmd (Propiedad) | AfterInsert (Evento)

Se aplica a: CursorAdapter (Clase)


BeforeOpenTables (Evento)

Se produce antes de que se abran las tablas o las vistas asociadas con el entorno de datos para un conjunto de formularios, un formulario o un informe.

PROCEDURE DataEnvironment.BeforeOpenTables

Observaciones

El evento BeforeOpenTables se produce antes que el evento Load de un formulario o conjunto de formularios.

Vea también

AfterCloseTables (Evento) | CloseTables (Método) | Load (Evento) | OpenTables (Método) | Unload (Evento)

Se aplica a: DataEnvironment (Objeto)


BeforeRowColChange (Evento)

Se produce antes de que el usuario cambie la fila o la columna activa. También ocurre antes que el evento Valid del objeto actual en la columna de la cuadrícula y cualquier regla de la base de datos. Utilice NODEFAULT para impedir que cambien la fila y columna activas de la cuadrícula.

PROCEDURE Grid.BeforeRowColChange LPARAMETERS nColIndex

Parámetros

nColIndex
Devuelve el índice de la columna activa antes que el control cambie de fila o columna.

Observaciones

BeforeRowColChange se activa al utilizar interactivamente el ratón o el teclado o mediante programación, por ejemplo, al llamar al método ActivateCell.

Puede consultar la propiedad RowColChange para este evento, y determinar el tipo de cambio que desencadena este evento.

Vea también

ActivateCell (Método) | AfterRowColChange (Evento) | DEFINE CLASS [NODEFAULT] | RowColChange (Propiedad) | Valid (Evento) | NODEFAULT (Comando)

Se aplica a: Grid (Control)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


BeforeUpdate (Evento)

Ocurre inmediatamente antes de ejecutar un comando update para un registro.

Nota Si se utiliza actualización por lotes, es decir, la propiedad BatchUpdateCount de CursorAdapter es mayor que 1, BeforeUpdate no ocurre.
PROCEDURE Object.BeforeUpdate LPARAMETERS cFldState, lForce, nUpdateType, cUpdateInsertCmd, cDeleteCmd

Parámetros

cFldState
Especifica el campo estado de la fila que se está procesando. Este mismo valor se obtiene llamando la siguiente función:
GETFLDSTATE(-1)

Por ejemplo, este valor puede ser una cadena de caracteres que consiste de los valores de estado: borrado y editado, para todos los campos en la tabla o cursor. Si una tabla tiene cinco campos y sólo el primer campo ha sido editado, GETFLDSTATE() devuelve un valor de 121111. El número 1 en la primera posición indica que el estado borrado no ha cambiado.

lForce
Especifica el valor del parámetro lForce de la función TABLEUPDATE( ).
nUpdateType
Especifica un valor numérico en la propiedad UpdateType del objeto CursorAdapter generado. En la siguiente tabla se listan los posibles valores para nUpdateType.
nUpdateType | Descripción
1 | Actualiza datos viejos con datos nuevos. (Predeterminado)
2 | Actualiza datos borrando los datos viejos e insertando lo datos nuevos.

Cambiar este valor modifica el comportamiento para el registro actual pero no cambia el valor de la propiedad. Necesita este valor sólo si está usando actualización automática.

cUpdateInsertCmd
Especifica el valor de propiedad adecuada UpdateCmd o InsertCmd. Visual FoxPro utiliza el valor de este parámetro como el comando update o insert, el cual puede cambiar en este evento. Sin embargo, si cambia el parámetro cUpdateInsertCmd, las propiedades UpdateCmd y InsertCmd cambian.
cDeleteCmd
Especifica que cDeleteCmd esté vacío si el parámetro nUpdateType se establece a 1. De otro modo, establece cDeleteCmd al valor de la propiedad DeleteCmd. Visual FoxPro utiliza el valor de cDeleteCmd como el comando delete, el cual puede cambiar en este evento. Sin embargo, si cambia el parámetro cDeleteCmd, el valor de la propiedad DeleteCmd no cambia.

Observaciones

Si el código en BeforeUpdate devuelve Falso (.F.), la operación actualizar no ocurre.

Vea también

Eventos | CursorAdapter (Objeto: propiedades, métodos y eventos) | GETFLDSTATE( ) (Función) | TABLEUPDATE( ) (Función) | UpdateType (Propiedad) | UpdateCmd (Propiedad) | InsertCmd (Propiedad) | DeleteCmd (Propiedad) | AfterUpdate (Evento)

Se aplica a: CursorAdapter (Clase)


Click (Evento)

Tiene lugar cuando se incluye un código en un programa que desencadena el evento, o cuando el usuario presiona y suelta el botón izquierdo del ratón mientras el puntero esta sobre un control, cambia el valor de ciertos controles o hace clic en un área en blanco de un formulario.

PROCEDURE Object.Click

Observaciones

El evento Click se produce cuando el usuario:

  • Hace clic con el botón primario del ratón en una casilla de verificación, un botón de comando, un cuadro combinado, un cuadro de lista o un botón de opción.
  • Presiona la BARRA ESPACIADORA cuando un botón de comando, un botón de opción o una casilla de verificación tiene el enfoque.
  • Presiona la tecla ENTRAR cuando un formulario tiene un botón de comando con la propiedad Default establecida en el valor verdadero (.T.).
  • Presiona la tecla de acceso de un control. Por ejemplo, si el título de un botón de comando es "\<Ir a", al presionar ALT+I se desencadena el evento Click.
  • Hace clic en un área en blanco de un formulario. Los eventos Click de un formulario no se producen cuando el puntero está sobre la barra de título, el icono de menú de la ventana o los bordes de la ventana.
  • Hace clic en el área de entrada de texto de un control numérico.
  • Hace clic en un control desactivado. El evento Click se produce en el contenedor en el que se encuentra el control desactivado.

El evento Click también se produce como resultado del código incluido que ejecuta el comando MOUSE.

Ejemplo

El ejemplo siguiente crea un control OptionGroup y coloca el control en un formulario. El control OptionGroup tiene tres botones y según el botón de opción en el que haga clic, aparecerá un círculo, una elipse o un cuadrado. La propiedad ButtonCount se utiliza para especificar el número de botones del control OptionGroup. Las propiedades Buttons y Caption sirven para especificar el texto que aparece junto a cada botón de opción.

El control Shape se utiliza para crear el círculo, la elipse y el cuadrado. El evento Click del control OptionGroup usa una estructura DO CASE ... ENDCASE y la propiedad Value para mostrar la forma adecuada al hacer clic en un botón de opción.

frmMyForm = CREATEOBJECT('Form')  && Create a Form
frmMyForm.Closable = .F.  && Disable the window pop-up menu
frmMyForm.AddObject('cmdCommand1','cmdMyCmndBtn')  && Add Command button
frmMyForm.AddObject('opgOptionGroup1','opgMyOptGrp') && Add Option Group
frmMyForm.AddObject('shpCircle1','shpMyCircle')  && Add Circle Shape
frmMyForm.AddObject('shpEllipse1','shpMyEllipse')  && Add Ellipse Shape
frmMyForm.AddObject('shpSquare','shpMySquare')  && Add Box Shape
frmMyForm.cmdCommand1.Visible =.T.  && "Quit" Command button visible
frmMyForm.opgOptionGroup1.Buttons(1).Caption = "\<Circle"
frmMyForm.opgOptionGroup1.Buttons(2).Caption = "\<Ellipse"
frmMyForm.opgOptionGroup1.Buttons(3).Caption = "\<Square"
frmMyForm.opgOptionGroup1.SetAll("Width", 100) && Set Option group width
frmMyForm.opgOptionGroup1.Visible = .T.  && Option Group visible
frmMyForm.opgOptionGroup1.Click  && Show the circle
frmMyForm.SHOW  && Display the form
READ EVENTS  && Start event processing
DEFINE CLASS opgMyOptGrp AS OptionGroup  && Create an Option Group
ButtonCount = 3  && Three Option buttons
Top = 10
Left = 10
Height = 75
Width = 100
PROCEDURE Click
ThisForm.shpCircle1.Visible = .F.  && Hide the circle
ThisForm.shpEllipse1.Visible = .F.  && Hide the ellipse
ThisForm.shpSquare.Visible = .F.  && Hide the square
DO CASE
CASE ThisForm.opgOptionGroup1.Value = 1
ThisForm.shpCircle1.Visible = .T. && Show the circle
CASE ThisForm.opgOptionGroup1.Value = 2
ThisForm.shpEllipse1.Visible = .T.  && Show the ellipse
CASE ThisForm.opgOptionGroup1.Value = 3
ThisForm.shpSquare.Visible = .T.  && Show the square
ENDCASE
ENDDEFINE
DEFINE CLASS cmdMyCmndBtn AS CommandButton  && Create Command button
Caption = '\<Quit'  && Caption on the Command button
Cancel = .T.  && Default Cancel Command button (Esc)
Left = 125  && Command button column
Top = 210  && Command button row
Height = 25  && Command button height
PROCEDURE Click
CLEAR EVENTS  && Stop event processing, close Form
ENDDEFINE
DEFINE CLASS shpMyCircle AS SHAPE  && Create a circle
Top = 10
Left = 200
Width = 100
Height = 100
Curvature = 99
BackColor = RGB(255,0,0)  && Red
ENDDEFINE
DEFINE CLASS shpMyEllipse AS SHAPE  && Create an ellipse
Top = 35
Left = 200
Width = 100
Height = 50
Curvature = 99
BackColor = RGB(0,128,0)  && Green
ENDDEFINE
DEFINE CLASS shpMySquare AS SHAPE  && Create a square
Top = 10
Left = 200
Width = 100
Height = 100
Curvature = 0
BackColor = RGB(0,0,255)  && Blue
ENDDEFINE

Vea también

DblClick (Evento) | MiddleClick (Evento) | MOUSE | MouseDown (Evento) | MouseUp (Evento) | MouseWheel (Evento) | Value (Propiedad)

Se aplica a: CheckBox (Control) | ComboBox (Control) | CommandButton (Control) | CommandGroup (Control) | Container (Objeto) | Control (Objeto) | EditBox (Control) | Form (Objeto) | Grid (Control) | Header (Objeto) | Image (Control) | Label (Control) | Line (Control) | ListBox (Control) | OptionButton (Control) | OptionGroup (Control) | Page (Objeto) | PageFrame (Control) | Shape (Control) | Spinner (Control) | TextBox (Control) | ToolBar (Objeto)


dbc_Activate (Evento)

Se produce cuando se activa una base de datos.

PROCEDURE dbc_Activate(cDatabaseName)

-O bien-

PROCEDURE dbc_Activate
LPARAMETERS cDatabaseName

Parámetros

cDatabaseName
Especifica el nombre de la base de datos que se va a activar.

Observaciones

Puede tener varias bases de datos abiertas al mismo tiempo, pero en cada momento sólo puede haber una activa. Una base de datos puede activarse bajo varias circunstancias. Para activar explícitamente una base de datos, utilice el comando SET DATABASE TO. Si hay varias bases de datos abiertas (con los eventos DBC activados), el método dbc_Activate sólo se ejecuta en la base de datos activa.

Si incluye eventos DBC en un archivo de programa, el código solo se aplicará a las bases de datos que especifiquen este archivo de programa como su archivo de eventos. En este caso, el código del método de los eventos DBC puede afectar a varias bases de datos al mismo tiempo. Cuando utilice eventos DBC de esta manera, utilice el parámetro cDatabaseName del código de evento para especificar que base de datos se esta activando. De este modo, es posible utilizar un bloque de código del método para determinar la base de datos activada, y a continuación, aplicar el código adecuado para la base de datos.

Devuelva Falso (.F.) desde este procedimiento para evitar la activación de la base de datos.

Visual FoxPro ignorará si devuelve Falso (.F.) desde este evento en tiempo de diseño.

Ejemplo

PROCEDURE dbc_Activate ;
(cDatabaseName)
? '     cDatabaseName  = ' + TRANSFORM(cDatabaseName) + ' - ' ;
+ TYPE('cDatabaseName ')+' /end/ '
ENDPROC

Vea también

dbc_Deactivate (Evento) | SET DATABASE (Comando) | dbc_CloseData (Evento) | dbc_ModifyData (Evento) | dbc_OpenData (Evento)


dbc_AfterAddRelation (Evento)

Se produce después de agregar correctamente una relación a la base de datos.

PROCEDURE dbc_AfterAddRelation(cRelationID, cTableName, cRelatedChild, cRelatedTable, cRelatedTag)

–O bien–

PROCEDURE dbc_AfterAddRelation
LPARAMETERS cRelationID, cTableName, cRelatedChild, cRelatedTable, cRelatedTag

Parámetros

cRelationID
Especifica el número de Id. de relación almacenado en la base de datos.
cTableName
Especifica el nombre de la tabla primaria.
cRelatedChild
Especifica el nombre de la columna vinculada en la tabla secundaria.
cRelatedTable
Especifica la tabla que contiene la columna vinculada.
cRelatedTag
Especifica la etiqueta de índice de la tabla primaria.

Observaciones

Puede utilizar el evento dbc_AfterAddRelation para comprobar cuáles son los valores adecuados para cRelationID y los demás parámetros en un procedimiento que haga un seguimiento o administre el acceso a la base de datos después de agregar una relación a la base de datos.

Vea también

Habilitar o deshabilitar eventos DBC | dbc_BeforeAddRelation (Evento)


dbc_AfterAddTable (Evento)

Se produce después de agregar una tabla a una base de datos activa.

PROCEDURE dbc_AfterAddTable(cTableName, cLongTableName)

-O bien-

PROCEDURE dbc_AfterAddTable
LPARAMETERS cTableName, cLongTableName

Parámetros

cTableName
Especifica el nombre de la tabla que se está agregando a la base de datos.
cLongTableName
Especifica el nombre largo de la tabla que se está agregando a la base de datos.

Observaciones

Puede agregar al evento dbc_AfterAddTable código de método que ejecute funciones tales como la actualización del diccionario de datos o el envío de correo electrónico al administrador de la base de datos.

Este evento no se produce cuando se crea una tabla en la base de datos.

Ejemplo

PROCEDURE dbc_AfterAddTable ;
(cTableName, ;
cLongTableName)
? '     cTableName     = ' + TRANSFORM(cTableName)     + ' - ' ;
+ TYPE('cTableName ')
? '     cLongTableName = ' + TRANSFORM(cLongTableName) + ' - ' ;
+ TYPE('cLongTableName ')+' /end/ '
ENDPROC

Vea también

Habilitar o deshabilitar eventos DBC | dbc_BeforeCreateTable (Evento) |dbc_BeforeAddTable (Evento)


dbc_AfterAppendProc (Evento)

Se produce después de completarse el comando APPEND PROCEDURE.

PROCEDURE dbc_AfterAppendProc(cFileName, nCodePage, lOverwrite)

–O bien–

PROCEDURE dbc_AfterAppendProc
LPARAMETERS cFileName, nCodePage, lOverwrite

Parámetros

cFileName
Especifica el nombre de un archivo de texto a partir del cual se anexaron los procedimientos almacenados.
nCodePage,
Especifica la página de códigos del archivo de texto a partir del que se anexaron los procedimientos almacenados. Visual FoxPro copia el contenido del archivo de texto y, a medida que lo hace, lo convierte automáticamente a la página de códigos especificada.
lOverWrite
Especifica si los procedimientos almacenados actualmente en la base de datos fueron sustituidos por los del archivo de texto. Si se omitió la palabra clave OVERWRITE en el comando APPEND PROCEDURE, los procedimientos actualmente almacenados en la base de datos se anexarán a los procedimientos almacenados existentes en el archivo de texto.

Observaciones

Se puede utilizar el evento dbc_AfterAppendProc para realizar el seguimiento del acceso a la base de datos después de anexar los procedimientos almacenados.

Ejemplo

* Reports to the screen Event name, where it is called from and ;
* the parameter passed.
PROCEDURE dbc_AfterAppendProc ;
(cFileName,;
nCodePage,;
lOverwrite)
? '>>   ' + PROGRAM()
?? ' in ' + SUBSTR(SYS(16),RAT('\',SYS(16))+1)
? '     Current DBC:      ' + SUBSTR(DBC(),RAT('\',DBC())+1)
? '     cFileName       = ' + TRANSFORM(cFileName)  + ' - ' ;
+ TYPE('cFileName')
? '     nCodePage       = ' + TRANSFORM(nCodePage)  + ' - ' ;
+ TYPE('nCodePage')
? '     lOverwrite      = ' + TRANSFORM(lOverwrite) + ' - ' ;
+ TYPE('lOverwrite')+' /end/ '
ENDPROC

Vea también

Habilitar o deshabilitar eventos DBC | dbc_BeforeAppendProc (Evento)


dbc_AfterCloseTable (Evento)

Se produce después de cerrar la tabla o la vista.

PROCEDURE dbc_AfterCloseTable(cTableName)

-O bien-

PROCEDURE dbc_AfterCloseTable
LPARAMETERS cTableName

Parámetros

cTableName
Especifica el nombre de la tabla o la vista que se va a cerrar.

Observaciones

Se puede utilizar el evento dbc_AfterCloseTable para realizar el seguimiento del acceso a la base de datos después de que se cierre una tabla en la base de datos actual.

Ejemplo

* Reports to the screen Event name, where it is called from and ;
* the parameter passed.
PROCEDURE dbc_AfterCloseTable ;
(cTableName)
? '>>   ' + PROGRAM()
?? ' in ' + SUBSTR(SYS(16),RAT('\',SYS(16))+1)
? '     cTableName = ' + TRANSFORM(cTableName) + ' - ' ;
+ TYPE('cTableName')+' /end/ '
ENDPROC

Vea también

Habilitar o deshabilitar eventos DBC | dbc_BeforeCloseTable (Evento)


dbc_AfterCopyProc (Evento)

Se produce después de completarse el comando COPY PROCEDURE.

PROCEDURE dbc_AfterCopyProc(cFileName, nCodePage, lAdditive)

–O bien–

PROCEDURE dbc_AfterCopyProc
LPARAMETERS cFileName, nCodePage, lAdditive

Parámetros

cFileName
Especifica el nombre del archivo de texto al que se copiaron los procedimientos almacenados.
nCodePage,
Especifica la página de códigos del archivo de programa al que se copian los procedimientos almacenados. Visual FoxPro copia el contenido de los procedimientos almacenados en la base de datos y, a medida que lo hace, lo convierte automáticamente a la página de códigos especificada.
lAdditive
Especifica si se incluyó la palabra clave ADDITIVE en el comando COPY PROCEDURE que desencadenó este evento. Si se omitió ADDITIVE , los procedimientos almacenados sustituyeron el contenido del archivo de programa.

Observaciones

Se puede utilizar el evento dbc_AfterCopyProc para realizar el seguimiento del acceso a la base de datos después de que termine un procedimiento de copia.

Ejemplo

* Reports to the screen Event name, where it is called from and ;
* the parameter passed.
PROCEDURE dbc_AfterCopyProc ;
(cFileName,;
nCodePage,;
lAdditive)
? '>>   ' + PROGRAM()
?? ' in ' + SUBSTR(SYS(16),RAT('\',SYS(16))+1)
? '     Current DBC:      ' + SUBSTR(DBC(),RAT('\',DBC())+1)
? '     cFileName       = ' + TRANSFORM(cFileName)  + ' - ' ;
+ TYPE('cFileName')
? '     nCodePage       = ' + TRANSFORM(nCodePage)  + ' - ' ;
+ TYPE('nCodePage')
? '     lAdditive      = ' + TRANSFORM(lAdditive) + ' - ' ;
+ TYPE('lAdditive')+' /end/ '
ENDPROC

Vea también

Habilitar o deshabilitar eventos DBC | dbc_BeforeCopyProc (Evento)


dbc_AfterCreateConnection (Evento)

Se produce después de crear una conexión.

PROCEDURE dbc_AfterCreateConnection
(cConnectionName, cDataSourceName, cUserID, cPassWord, cConnectionString)

-O bien-

PROCEDURE dbc_AfterCreateConnection
LPARAMETERS cConnectionName, cDataSourceName, cUserID, cPassWord,
 cConnectionString

Parámetros

cConnectionName
Especifica el nombre de la conexión que se creó.
cDataSourceName
Especifica el nombre del origen de datos ODBC.
cUserID
Especifica la identificación de usuario para el origen de datos ODBC.
cPassWord
Especifica la contraseña para el origen de datos ODBC.
cConnectionString
Especifica una cadena de conexión para el origen de datos ODBC. Puede utilizar la cadena de conexión en lugar de incluir explícitamente el origen de datos ODBC, la identificación del usuario y la contraseña.

Observaciones

Se puede utilizar el evento dbc_AfterCreateConnection para realizar el seguimiento de los intentos de acceso a la base de datos después de la creación de una conexión.

Ejemplo

* Reports to the screen Event name, where it is called from and ;
* the parameters passed.
PROCEDURE dbc_AfterCreateConnection ;
(cConnectionName, ;
cDataSourceName, ;
cUserID, ;
cPassword, ;
cConnectionString)
? '>>   ' + PROGRAM()
?? ' in ' + SUBSTR(SYS(16),RAT('\',SYS(16))+1)
? '     cConnectionName    = ' + TRANSFORM(cConnectionName)   + ' - ' ;
+ TYPE('cConnectionName ')
? '     cDataSourceName    = ' + TRANSFORM(cDataSourceName)   + ' - ' ;
+ TYPE('cDataSourceName ')
? '     cUserID            = ' + TRANSFORM(cUserID)           + ' - ' ;
+ TYPE('cUserID ')
? '     cPassword          = ' + TRANSFORM(cPassword)         + ' - ' ;
+ TYPE('cPassword ')
? '     cConnectionString  = ' + TRANSFORM(cConnectionString) + ' - ' ;
+ TYPE('cConnectionString ')+' /end/ '
ENDPROC

Vea también

Habilitar o deshabilitar eventos DBC | dbc_BeforeCreateConnection (Evento)


dbc_AfterCreateOffline (Evento)

Se produce después de haber finalizado CREATEOFFLINE( ).

PROCEDURE dbc_AfterCreateOffline(cViewName, cPath)

–O bien–

PROCEDURE dbc_AfterCreateOffline
LPARAMETERS cViewName, cPath

Parámetros

cViewName
Especifica el nombre de la vista existente que se va a poner fuera de línea.
cPath
Especifica el directorio en el que se ha puesto la vista fuera de línea.

Observaciones

Se puede utilizar el evento dbc_AfterCreateOffline para realizar el seguimiento del acceso a la base de datos después de la creación de una vista fuera de línea.

Ejemplo

* Reports to the screen Event name, where it is called from and ;
* the parameter passed.
PROCEDURE dbc_AfterCreateOffline ;
(cViewName,;
cPath)
? '>>   ' + PROGRAM()
?? ' in ' + SUBSTR(SYS(16),RAT('\',SYS(16))+1)
? '     cViewName =  ' + TRANSFORM(cViewName) + ' - ' ;
+ TYPE('cViewName')
? '     cPath     =  ' + TRANSFORM(cPath)     + ' - ' ;
+ TYPE('cPath') + ' /end/ '
ENDPROC

Vea también

Habilitar o deshabilitar eventos DBC | dbc_BeforeCreateOffline (Evento)


dbc_AfterCreateTable (Evento)

Se produce después de crear una tabla en la base de datos activa.

PROCEDURE dbc_AfterCreateTable(cTableName, cLongTableName)

-O bien-

PROCEDURE dbc_AfterCreateTable
LPARAMETERS cTableName, cLongTableName

Parámetros

cTableName
Especifica el nombre de la tabla que se creó.
cLongTableName
Especifica el nombre largo para la tabla que se creó.

Observaciones

Este evento no se produce cuando se crea una tabla libre.

Puede utilizar el evento dbc_AfterCreateTable para comprobar cuáles son los valores adecuados para cTableName o cLongTableName, utilizar estos parámetros en un procedimiento para realizar un seguimiento, o administrar el acceso a la base de datos después de crear una tabla en la base de datos.

Ejemplo

PROCEDURE dbc_AfterCreateTable ;
(cTableName, ;
cLongTableName)
? '     cTableName      = ' + TRANSFORM(cTableName)     + ' - ' ;
+ TYPE('cTableName ')
? '     cLongTableName  = ' + TRANSFORM(cLongTableName) + ' - ' ;
+ TYPE('cLongTableName ')+' /end/ '
ENDPROC

Vea también

Habilitar o deshabilitar eventos DBC | dbc_BeforeCreateTable (Evento)


dbc_AfterCreateView (Evento)

Se produce después de crear una vista SQL.

PROCEDURE dbc_AfterCreateView(cViewName, lRemote)

–O bien–

PROCEDURE dbc_AfterCreateView
LPARAMETERS cViewName, lRemote

Parámetros

cViewName
Especifica el nombre de la vista que se creó.
lRemote
Especifica si la vista es remota.

Observaciones

Se puede utilizar el evento dbc_AfterCreateView para realizar el seguimiento del acceso a la base de datos después de la creación de una vista.

Ejemplo

* Reports to the screen Event name, where it is called from and ;
* the parameter passed.
PROCEDURE dbc_AfterCreateView ;
(cViewName, ;
lRemote)
? '>>   ' + PROGRAM()
?? ' in ' + SUBSTR(SYS(16),RAT('\',SYS(16))+1)
? '     cViewName  = ' + TRANSFORM(cViewName) + ' - ' ;
+ TYPE('cViewName ')
? '     lRemote    = ' + TRANSFORM(lRemote)   + ' - ' ;
+ TYPE('lRemote')+' /end/ '
ENDPROC

Vea también

Habilitar o deshabilitar eventos DBC | dbc_BeforeCreateView (Evento)


dbc_AfterDBGetProp (Evento)

Se produce después de que se complete la función DBGetProp( ).

PROCEDURE dbc_AfterDBGetProp(cName, cType, cProperty)

–O bien–

PROCEDURE dbc_AfterDBGetProp
LPARAMETERS cName, cType, cProperty

Parámetros

cName
Especifica el valor del primer parámetro de la función DBGetProp(), el nombre de la base de datos, campo, conexión con nombre, tabla o vista para la que devuelve información DBGETPROP( ).
cType
Especifica el valor del segundo parámetro de la función DBGetProp(), el tipo de objeto del elemento nombrado en cName.
cProperty
Especifica el valor del tercer parámetro de la función DBGetProp(), la propiedad para la que DBGETPROP( ) devuelve información.

Para ver información detallada acerca de los valores válidos para cType y cProperty, consulte la Ayuda.

Observaciones

Se puede utilizar el evento dbc_AfterDBGetProp para realizar el seguimiento del acceso a la base de datos después de la ejecución de DBGetProp.

Ejemplo

* Reports to the screen Event name, where it is called from and ;
* the parameter passed.
PROCEDURE dbc_AfterDBGetProp ;
(cName,;
cType,;
cProperty)
? '>>   ' + PROGRAM()
?? ' in ' + SUBSTR(SYS(16),RAT('\',SYS(16))+1)
? '     Current DBC: ' + SUBSTR(DBC(),RAT('\',DBC())+1)
? '     cName     =  ' + TRANSFORM(cName)     + ' - ' + TYPE('cName')
? '     cType     =  ' + TRANSFORM(cType)     + ' - ' + TYPE('cType')
? '     cProperty =  ' + TRANSFORM(cProperty) + ' - ' + TYPE('cProperty')+' /end/ '
ENDPROC

Vea también

Habilitar o deshabilitar eventos DBC | dbc_BeforeDBGetProp (Evento) | DBGETPROP( )


dbc_AfterDBSetProp (Evento)

Se produce después de que se complete la función DBSetProp( ).

PROCEDURE dbc_AfterDBSetProp(cName, cType, cProperty, ePropertyValue)

–O bien–

PROCEDURE dbc_AfterDBSetProp
LPARAMETERS cName, cType, cProperty, ePropertyValue
cName
Especifica el valor del primer parámetro de la función DBSetProp( ), el nombre de la base de datos, campo, conexión con nombre, tabla o vista para la que DBSETPROP( ) modifica el valor.
cType
Especifica el valor del segundo parámetro de la función DBSetProp( ), el tipo de objeto del elemento nombrado en cName.
cProperty
Especifica el valor del tercer parámetro de la función DBSetProp( ), la propiedad para la que DBSETPROP( ) modifica el valor.
ePropertyValue
Especifica el valor del cuarto parámetro de la función DBSetProp( ), el valor que se asignará a la propiedad de cProperty.

Para ver información detallada acerca de los valores válidos para cType y cProperty, vea DBSETPROP( ) y DBGETPROP( ) en la Ayuda.

Observaciones

Se puede utilizar el evento dbc_AfterDBCSetProp para realizar el seguimiento del acceso a la base de datos después de la ejecución de DBGETPROP( ).

Algunos valores de propiedad se pueden modificar mediante DBSetProp( ) o mediante un diseñador. Por ejemplo, puede modificar la propiedad Comment para una tabla tanto mediante DBSetProp( ) como desde el diseñador de tablas. Puesto que DBSetProp( ) realiza modificaciones directamente en la base de datos, dbc_BeforeModifyTable o dbc_AfterModifyTable no recogerán las modificaciones efectuadas por DBSETPROP( ). Para interceptar las modificaciones que se podrían haber hecho de cualquiera de los modos, es necesario utilizar dbc_BeforeDBSetProp, dbc_BeforeDBSetProp, dbc_BeforeModifyTable y dbc_AfterModifyTable para comprobar cuáles son los cambios adecuados.

Ejemplo

* Reports to the screen Event name, where it is called from and ;
* the parameter passed.
PROCEDURE dbc_AfterDBSetProp ;
(cName,;
cType,;
cProperty,;
ePropertyValue)
? '>>   ' + PROGRAM()
?? ' in ' + SUBSTR(SYS(16),RAT('\',SYS(16))+1)
? '     Current DBC:     ' + SUBSTR(DBC(),RAT('\',DBC())+1)
? '     cName          = ' + TRANSFORM(cName)          + ' - ' + TYPE('cName')
? '     cType          = ' + TRANSFORM(cType)          + ' - ' + TYPE('cType')
? '     cProperty      = ' + TRANSFORM(cProperty)      + ' - ' + TYPE('cProperty')
? '     ePropertyValue = ' + TRANSFORM(ePropertyValue) + ' - ' + TYPE('ePropertyValue')+' /end/ '
ENDPROC

Vea también

Habilitar o deshabilitar eventos DBC | dbc_BeforeDBSetProp (Evento)


dbc_AfterDeleteConnection (Evento)

Se produce después de eliminar una conexión.

PROCEDURE dbc_AfterDeleteConnection(cConnectionName)

–O bien–

PROCEDURE dbc_AfterConnection
LPARAMETERS cConnectionName

Parámetros

cConnectionName
Especifica el nombre de la conexión que se está eliminando.

Observaciones

Se puede utilizar el evento dbc_AfterDeleteConnection para realizar el seguimiento del acceso a la base de datos después de que se elimine una conexión en la base de datos.

Ejemplo

* Reports to the screen Event name, where it is called from and ;
* the parameter passed.
PROCEDURE dbc_AfterDeleteConnection ;
cItemName)
? '>>   ' + PROGRAM()
?? ' in ' + SUBSTR(SYS(16),RAT('\',SYS(16))+1)
? '     cConnectionName    = ' + TRANSFORM(cConnectionName)        + ' - ' ;
+ TYPE('cConnectionName ')+' /end/ '
ENDPROC

Vea también

Habilitar o deshabilitar eventos DBC | dbc_BeforeDeleteConnection (Evento)


dbc_AfterDropOffline (Evento)

Se produce después de haber finalizado DROPOFFLINE( ).

PROCEDURE dbc_AfterDropOffline(cViewName, cPath)

–O bien–

PROCEDURE dbc_AfterDropOffline
LPARAMETERS cViewName, cPath

Parámetros

cViewName
Especifica el nombre de la vista fuera de línea que se puso otra vez en línea.
cPath
Especifica el directorio en el que se encuentra la vista fuera de línea.

Observaciones

Se puede utilizar el evento dbc_AfterDropOffline para realizar el seguimiento del acceso a la base de datos después de que una vista fuera de línea se vuelva a poner en línea.

Ejemplo

* Reports to the screen Event name, where it is called from and ;
* the parameter passed.
PROCEDURE dbc_AfterDropOffline ;
(cViewName,;
cPath)
? '>>   ' + PROGRAM()
?? ' in ' + SUBSTR(SYS(16),RAT('\',SYS(16))+1)
? '     cViewName = ' + TRANSFORM(cViewName) + ' - ' ;
+ TYPE('cViewName')
? '     cPath     = ' + TRANSFORM(cPath)     + ' - ' ;
+ TYPE('cPath')+' /end/ '
ENDPROC

Vea también

Habilitar o deshabilitar eventos DBC | dbc_BeforeDropOffline (Evento)


dbc_AfterDropRelation (Evento)

Se produce después de quitar correctamente una relación de una base de datos.

PROCEDURE dbc_AfterDropRelation(cRelationID, cTableName, cRelatedChild, cRelatedTable, cRelatedTag)

–O bien–

PROCEDURE dbc_AfterDropRelation
LPARAMETERS cRelationID, cTableName, cRelatedChild, cRelatedTable, cRelatedTag

Parámetros

cRelationID
Especifica el Id. de relación almacenado en la base de datos.
cTableName
Especifica el nombre de la tabla primaria.
cRelatedChild
Especifica el nombre de la columna vinculada en la tabla secundaria.
cRelatedTable
Especifica la tabla que contiene la columna vinculada.
cRelatedTag
Especifica la etiqueta de índice de la tabla primaria.

Observaciones

Puede utilizar el evento dbc_AfterDropRelation para comprobar cuáles son los valores adecuados para cRelationID y los demás parámetros en un procedimiento que haga un seguimiento o administre el acceso a la base de datos después de quitar una relación de la base de datos.

Devuelva .F. desde este procedimiento para evitar la eliminación de la relación.

Vea también

Habilitar o deshabilitar eventos DBC | dbc_BeforeDropRelation (Evento)


dbc_AfterDropTable (Evento)

Se produce después de quitar una tabla de la base de datos y eliminarla del disco por medio del comando DROP TABLE.

PROCEDURE dbc_AfterDropTable(cTableName, lRecycle)

-O bien-

PROCEDURE dbc_AfterDropTable
LPARAMETERS cTableName, lRecycle

Parámetros

cTableName
Especifica la tabla que se quitó de la base de datos actual y que se eliminó del disco.
lRecycle
Especifica si la tabla se colocó en la Papelera de reciclaje de Windows en lugar de eliminarla inmediatamente del disco.

Observaciones

Puede utilizar el evento dbc_AfterDropTable para comprobar cuál es el valor adecuado para cTableName y utilizar estos parámetros en un procedimiento para realizar un seguimiento o administrar el acceso a la base de datos, después de quitar la tabla de la base de datos y del disco.

Si elimina una tabla mediante DELETE FILE o por medio del sistema operativo, no se producirá ningún evento.

Ejemplo

* Reports to the screen the event name, where it is called from, and
* the parameter values passed to it.
PROCEDURE dbc_AfterDropTable ;
(cTableName, ;
lRecycle)
? '>>   ' + PROGRAM()
?? ' in ' + SUBSTR(SYS(16),RAT('\',SYS(16))+1)
? '     cTableName = ' + TRANSFORM(cTableName) + ' - ' ;
+ TYPE('cTableName ')
? '     lRecycle   = ' + TRANSFORM(lRecycle)   + ' - ' ;
+ TYPE('lRecycle')+' /end/ '
ENDPROC

Vea también

Habilitar o deshabilitar eventos DBC | dbc_BeforeDropTable (Evento)


dbc_AfterDropView (Evento)

Se produce después de quitar una definición de vista SQL de la base de datos actual.

PROCEDURE dbc_AfterDropView(cViewName)

–O bien–

PROCEDURE dbc_AfterDropView
LPARAMETERS cViewName

Parámetros

cViewName
Especifica el nombre de la vista eliminada de la base de datos actual.

Observaciones

DROP VIEW es casi idéntico a DELETE VIEW; DROP VIEW es la sintaxis estándar ANSI SQL para eliminar una vista SQL. Ambos comandos quitan una definición de vista de la base de datos activa, pero la sintaxis es ligeramente diferente.

Se puede utilizar el evento dbc_AfterDropView para realizar el seguimiento del acceso a la base de datos después de que se quite una definición de vista de la base de datos.

Ejemplo

* Reports to the screen Event name, where it is called from and ;
* the parameter passed.
PROCEDURE dbc_AfterDropView ;
(cViewName)
? '>>   ' + PROGRAM()
?? ' in ' + SUBSTR(SYS(16),RAT('\',SYS(16))+1)
? '     cViewName  = ' + TRANSFORM(cViewName) + ' - ' ;
+ TYPE('cViewName ')+' /end/ '
ENDPROC

Vea también

Habilitar o deshabilitar eventos DBC | dbc_BeforeDropView (Evento)


dbc_AfterModifyConnection (Evento)

Se produce después de modificar una conexión.

PROCEDURE dbc_AfterModifyConnection(cConnectionName, lChanged)

–O bien–

PROCEDURE dbc_AfterModifyConnection
LPARAMETERS cConnectionName, lChanged

Parámetros

cConnectionName
Especifica el nombre de la conexión modificada.
lChanged
Especifica si se guardó una modificación de la vista en el Diseñador de conexiones.

Observaciones

Se puede utilizar el evento dbc_AfterModifyView para realizar el seguimiento del acceso a la base de datos o controlarlo después de la modificación de las conexiones.

Vea también

Habilitar o deshabilitar eventos DBC | dbc_BeforeModifyConnection (Evento)


dbc_AfterModifyProc (Evento)

Se produce después de que se hayan realizado modificaciones y se haya cerrado el editor de procedimientos almacenados para la base de datos.

PROCEDURE dbc_AfterModifyProc( )

Observaciones

Se puede utilizar el evento dbc_AfterModifyProc para realizar el seguimiento del acceso a la base de datos después de la modificación del procedimiento almacenado.

Ejemplo

* Reports to the screen Event name, where it is called.
PROCEDURE dbc_AfterModifyProc
? '>>   ' + PROGRAM()
?? ' in ' + SUBSTR(SYS(16),RAT('\',SYS(16))+1)
? '     Current DBC:    ' + SUBSTR(DBC(),RAT('\',DBC())+1)+' /end/ '
ENDPROC

Vea también

Habilitar o deshabilitar eventos DBC | dbc_BeforeModifyProc (Evento)


dbc_AfterModifyTable (Evento)

Se produce después de modificar una tabla.

PROCEDURE dbc_AftermodifyTable(cTableName, lChanged)

–O bien–

PROCEDURE dbc_AfterModifyTable
LPARAMETERS cTableName, lChanged

Parámetros

cTableName
Especifica el nombre de la tabla modificada.
lChanged
Especifica si se guardó una modificación en el Diseñador de tablas.

Observaciones

Se puede utilizar el evento dbc_AfterModifyTable para realizar el seguimiento del acceso a la base de datos después de la modificación de las tablas.

Vea también

Habilitar o deshabilitar eventos DBC | dbc_BeforeModifyTable (Evento)


dbc_AfterModifyView (Evento)

Se produce después de la modificación de una vista.

PROCEDURE dbc_AfterModifyView(cViewName, lChanged)

–O bien–

PROCEDURE dbc_AfterModifyView
LPARAMETERS cViewName, lChanged

Parámetros

cViewName
Especifica el nombre de la vista modificada.
lChanged
Especifica si se guardó una modificación en el Diseñador de vistas.

Observaciones

Se puede utilizar el evento dbc_AfterModifyView para realizar el seguimiento de los cambios en la base de datos mientras se modifican las vistas.

Vea también

Habilitar o deshabilitar eventos DBC | dbc_BeforeModifyView (Evento)


dbc_AfterOpenTable (Evento)

Se produce después de abrir una tabla o una vista.

PROCEDURE dbc_AfterOpenTable(cTableName)

–O bien–

PROCEDURE dbc_AfterOpenTable
LPARAMETERS cTableName

Parámetros

cTableName
Especifica el nombre de la tabla o la vista que se abrió.

Observaciones

Se puede utilizar el evento dbc_AfterOpenTable para realizar el seguimiento del acceso a la base de datos después de que se abra una tabla en la base de datos.

Si, cuando se abre una vista, las tablas subyacentes no están abiertas, el evento se produce tanto para las tablas como para la vista.

Ejemplo

* Reports to the screen Event name, where it is called from and ;
* the parameter passed.
PROCEDURE dbc_AfterOpenTable ;
(cTableName)
? '>>   ' + PROGRAM()
?? ' in ' + SUBSTR(SYS(16),RAT('\',SYS(16))+1)
? '     cTableName = ' + TRANSFORM(cTableName) + ' - ' + TYPE('cTableName')+' /end/ '
ENDPROC

Vea también

Habilitar o deshabilitar eventos DBC | dbc_BeforeOpenTable (Evento)


dbc_AfterRemoveTable (Evento)

Se produce después de finalizar la eliminación de una tabla.

PROCEDURE dbc_AfterRemoveTable(cTableName, lDelete, lRecycle)

-O bien-

PROCEDURE dbc_AfterRemoveTable
LPARAMETERS cTableName, lDelete, lRecycle

Parámetros

cTableName
Especifica el nombre de la tabla que se quitó de la base de datos.
lDelete
Especifica si la tabla se eliminó en lugar de convertirse en una tabla libre.
lRecycle
Especifica si la tabla se colocó en la Papelera de reciclaje de Windows en lugar de eliminarla inmediatamente del disco. Algunos datos, tales como las propiedades de tabla disponibles sólo en las tablas contenidas en la base de datos, se pierden aunque la tabla sólo se recicle en lugar de quitarse y eliminarse.

Observaciones

Se puede utilizar el evento dbc_AfterRemoveTable para realizar el seguimiento del acceso a la base de datos después de que se elimine una tabla de la base de datos y del disco.

Ejemplo

* Reports to the screen Event name, where it is called from and ;
* the parameters passed.
PROCEDURE dbc_AfterRemoveTable ;
(cTableName, ;
lDelete, ;
lRecycle)
? '>>   ' + PROGRAM()
?? ' in ' + SUBSTR(SYS(16),RAT('\',SYS(16))+1)
? '     cTableName = ' + TRANSFORM(cTableName) + ' - ' ;
+ TYPE('cTableName ')
? '     lDelete    = ' + TRANSFORM(lDelete)    + ' - ' ;
+ TYPE('lDelete')
? '     lRecycle   = ' + TRANSFORM(lRecycle)   + ' - ' ;
+ TYPE('lRecycle')+' /end/ '
ENDPROC

Vea también

Habilitar o deshabilitar eventos DBC | dbc_BeforeRemoveTable (Evento)


dbc_AfterRenameConnection (Evento)

Se produce antes de cambiar el nombre de una conexión.

PROCEDURE dbc_AfterRenameConnection(cConnectionName, cNewName)

–O bien–

PROCEDURE dbc_AfterRenameConnection
LPARAMETERS cPreviousName, cNewName

Parámetros

cPreviousName
Especifica el nombre anterior de la conexión.
cNewName
Especifica el nuevo nombre de la conexión.

Observaciones

Se puede utilizar el evento dbc_AfterRenameConnection para realizar el seguimiento de los cambios en la base de datos mientras se cambia el nombre a las conexiones.

Devuelva .F. desde este procedimiento para evitar que cambie el nombre de la conexión.

Vea también

Habilitar o deshabilitar eventos DBC | dbc_BeforeRenameConnection (Evento)


dbc_AfterRenameTable (Evento)

Se produce antes de cambiar el nombre de una tabla.

PROCEDURE dbc_AfterRenameTable(cPreviousName, cNewName)

–O bien–

PROCEDURE dbc_AfterRenameTable
LPARAMETERS cPreviouName, cNewName

Parámetros

cPreviousName
Especifica el nombre actual de la tabla.
cNewName
Especifica el nuevo nombre de la tabla.

Observaciones

Se puede utilizar el evento dbc_AfterRenameTable para realizar el seguimiento de los cambios en la base de datos mientras se cambia el nombre a las tablas.

Ejemplo

PROCEDURE dbc_AfterRenameTable;
(cPreviousName, ;
cNewName)
? '>>   ' + PROGRAM()
?? 'in ' + SUBSTR(SYS(16),RAT('\',SYS(16))+1
? '     Current DBC:    ' + SUBSTR(DBC(),RAT('\',DBC())+1
? '     cPreviousName = ' + TRANSFORM(cPreviousName)    + ' – ' + TYPE('cPreviousName ')+' /end/ '
ENDPROC

Vea también

Habilitar o deshabilitar eventos DBC | dbc_BeforeRenameTable (Evento)


dbc_AfterRenameView (Evento)

Se produce antes de cambiar el nombre de una vista.

PROCEDURE dbc_AfterRenameView(cPreviousName, cNewName)

–O bien–

PROCEDURE dbc_AfterRenameView
LPARAMETERS cPreviousName, cNewName

Parámetros

cPreviousName
Especifica el nombre actual de la vista.
cNewName
Especifica el nuevo nombre de la vista.

Observaciones

Se puede utilizar el evento dbc_AfterRenameView para realizar el seguimiento de los cambios en la base de datos cuando se haya cambiado el nombre a las vistas.

Vea también

Habilitar o deshabilitar eventos DBC | dbc_BeforeRenameView (Evento)


dbc_AfterValidateData (Evento)

Se produce después de finalizar VALIDATE DATABASE.

PROCEDURE dbc_AfterValidateData
(lRecover, lNoConsole, lPrint, lFile [, cFilename])

–O bien–

PROCEDURE dbc_AfterValidateData
LPARAMETERS lRecover, lNoConsole, lPrint, lFile [, cFilename]

Parámetros

lRecover
Especifica si se incluyó la palabra clave RECOVER en el comando VALIDATE DATABASE que desencadenó este evento.
lNoConsole
Especifica si se incluyó la palabra clave NOCONSOLE en el comando VALIDATE DATABASE que desencadenó este evento.
lPrint
Especifica si se incluyó la palabra clave PRINT en el comando VALIDATE DATABASE que desencadenó este evento.
lFile
Especifica si se incluyó la cláusula TO FILE en el comando VALIDATE DATABASE que desencadenó este evento.
cFilename
Especifica el nombre del archivo de salida citado en la cláusula TO FILE del comando VALIDATE DATABASE. cFilename es opcional, pero si se omite y se utiliza la cláusula TO FILE de VALIDATE DATABASE, se recibe el error "Debe especificar parámetros adicionales". Si no utiliza TO FILE e incluye el parámetro cFilename, se pasará un valor .F.

Observaciones

Se puede utilizar el evento dbc_AfterValidateData para realizar el seguimiento del acceso a la base de datos después de la validación de los datos.

Ejemplo

* Reports to the screen Event name, where it is called from and ;
* the parameters passed.
PROCEDURE dbc_AfterValidateData ;
(lRecover, ;
lNoConsole, ;
lPrint, ;
lFile, ;
cFileName)
? '>>   ' + PROGRAM()
?? ' in ' + SUBSTR(SYS(16),RAT('\',SYS(16))+1)
? '     lRecover   = ' + TRANSFORM(lRecover)   + ' - ' ;
+ TYPE('lRecover')
? '     lNoConsole = ' + TRANSFORM(lNoConsole) + ' - ' ;
+ TYPE('lNoConsole')
? '     lPrint     = ' + TRANSFORM(lPrint)     + ' - ' ;
+ TYPE('lPrint')
? '     lFile      = ' + TRANSFORM(lFile)      + ' - ' ;
+ TYPE('lFile')
? '     cFileName  = ' + TRANSFORM(cFileName)  + ' - ' ;
+ TYPE('cFileName ')+' /end/ '
ENDPROC

Vea también

Habilitar o deshabilitar eventos DBC | dbc_BeforeValidateData (Evento)


dbc_BeforeAddRelation (Evento)

Se produce antes de agregar una relación a la base de datos.

PROCEDURE dbc_BeforeAddRelation(cRelationID, cTableName, cRelatedChild,
   cRelatedTable, cRelatedTag)

–O bien–

PROCEDURE dbc_BeforeAddRelation
LPARAMETERS cRelationID, cTableName, cRelatedChild, cRelatedTable,
   cRelatedTag

Parámetros

cRelationID
Especifica el número de Id. de relación almacenado en la base de datos.
cTableName
Especifica el nombre de la tabla primaria.
cRelatedChild
Especifica el nombre de la columna vinculada.
cRelatedTable
Especifica la tabla que contiene la columna vinculada.
cRelatedTag
Especifica la etiqueta de índice de la tabla primaria.

Observaciones

Puede utilizar el evento dbc_BeforeAddRelation para comprobar cuáles son los valores adecuados para los parámetros en un procedimiento que haga un seguimiento o administre el acceso a la base de datos antes de agregar una relación a la base de datos.

Devuelva .F. desde este procedimiento para evitar la que se agregue la relación.

Vea también

Habilitar o deshabilitar eventos DBC | dbc_AfterAddRelation (Evento)


dbc_BeforeAddTable (Evento)

Se produce antes de que se agregue una tabla libre existente a la base de datos activa.

Puede utilizar el evento dbc_BeforeAddTable para ejecutar código antes que la tabla sea añadida a la base de datos. Esto es útil para necesidades de programación tales como controlar si o bajo que condiciones se agrega una tabla a una base de datos o para registrar la adición de la tabla.

Nota Este evento no ocurre cuando se crea la tabla en la base de datos.
PROCEDURE dbc_BeforeAddTable(cTableName, cLongTableName)

-O bien-

PROCEDURE dbc_BeforeAddTable
LPARAMETERS [cTableName, cLongTableName]

Parámetros

cTableName,
Especifica el nombre de la tabla que se va a agregar.
cLongTableName
Especifica el nombre largo que se asignará a la tabla.

Observaciones

Para evitar que la tabla sea añadida a la base de datos, devuelva un valor o Falso (.F.) desde este procedimiento.

Ejemplo

PROCEDURE dbc_BeforeAddTable ;
(cTableName, ;
cLongTableName)
? '     cTableName     = ' + TRANSFORM(cTableName)     + ' - ' ;
+ TYPE('cTableName ')
? '     cLongTableName = ' + TRANSFORM(cLongTableName) + ' - ' ;
+ TYPE('cLongTableName ')
userID      = SUBSTR(SYS(0),AT('#',SYS(0))+2)
IF UPPER(userID) = 'MYALIAS'   && sólo un usuario puede agregar tablas.
RETURN .T.
ENDIF
RETURN .F.
ENDIF
ENDPROC

Vea también

Habilitar o deshabilitar eventos DBC | dbc_AfterAddTable | dbc_BeforeRemoveTable | dbc_AfterRemoveTable


dbc_BeforeAppendProc (Evento)

Se produce antes de que se complete un comando APPEND PROCEDURES.

PROCEDURE dbc_BeforeAppendProc(cFileName, nCodePage, lOverwrite)

–O bien–

PROCEDURE dbc_BeforeAppendProc
LPARAMETERS cFileName, nCodePage, lOverwrite

Parámetros

cFileName
Especifica el nombre de un archivo de texto a partir del cual se van a anexar los procedimientos almacenados.
nCodePage,
Especifica la página de códigos del archivo de texto a partir del que se van a anexar los procedimientos almacenados. Visual FoxPro copia el contenido del archivo de texto y, a medida que lo hace, lo convierte automáticamente a la página de códigos especificada.
lOverwrite
Especifica si se incluyó la palabra clave OVERWRITE en el comando APPEND PROCEDURE. Si se omitió OVERWRITE, los procedimientos actualmente almacenados en la base de datos se anexan a los procedimientos almacenados existentes; si no es así, reemplazan a los procedimientos almacenados existentes.

Observaciones

Se puede utilizar el evento dbc_BeforeAppendProc para realizar el seguimiento de los intentos de acceso a la base de datos antes de anexar los procedimientos almacenados.

Devuelva .F. desde este procedimiento para evitar que el contenido del archivo de texto se anexe a los procedimientos almacenados en la base de datos.

Ejemplo

* Reports to the screen Event name, where it is called from and ;
* the parameter passed.
PROCEDURE dbc_BeforeAppendProc ;
(cFileName,;
nCodePage,;
lOverwrite)
? '>>   ' + PROGRAM()
?? ' in ' + SUBSTR(SYS(16),RAT('\',SYS(16))+1)
? '     Current DBC:      ' + SUBSTR(DBC(),RAT('\',DBC())+1)
? '     cFileName       = ' + TRANSFORM(cFileName)  + ' - ' ;
+ TYPE('cFileName')
? '     nCodePage       = ' + TRANSFORM(nCodePage)  + ' - ' ;
+ TYPE('nCodePage')
? '     lOverwrite      = ' + TRANSFORM(lOverwrite) + ' - ' ;
+ TYPE('lOverwrite')+' /end/ '
ENDPROC

Vea también

Habilitar o deshabilitar eventos DBC | dbc_AfterAppendProc (Evento)


dbc_BeforeCloseTable (Evento)

Se produce antes de cerrar la tabla o la vista.

PROCEDURE dbc_BeforeCloseTable(cTableName)

-O bien-

PROCEDURE dbc_BeforeCloseTable
LPARAMETERS cTableName

Parámetros

cTableName
Especifica el nombre de la tabla o la vista que se va a cerrar.

Observaciones

Se puede utilizar el evento dbc_BeforeCloseTable para realizar el seguimiento del acceso a la base de datos antes de que se cierre una tabla en la base de datos actual.

Devuelva .F. desde este procedimiento para evitar el cierre de la tabla.

Ejemplo

* Reports to the screen Event name, where it is called from and ;
* the parameter passed.
PROCEDURE dbc_BeforeCloseTable ;
(cTableName)
? '>>   ' + PROGRAM()
?? ' in ' + SUBSTR(SYS(16),RAT('\',SYS(16))+1)
? '     cTableName = ' + TRANSFORM(cTableName) + ' - ' ;
+ TYPE('cTableName')+' /end/ '
ENDPROC

Vea también

Habilitar o deshabilitar eventos DBC | dbc_AfterCloseTable (Evento)


dbc_BeforeCopyProc (Evento)

Se produce antes de que se inicie el comando COPY PROCEDURE.

PROCEDURE dbc_BeforeCopyProc(cFileName, nCodePage, lAdditive)

–O bien–

PROCEDURE dbc_BeforeCopyProc
LPARAMETERS cFileName, nCodePage, lAdditive

Parámetros

cFileName
Especifica el nombre de un archivo de texto al que van a copiar los procedimientos almacenados.
nCodePage,
Especifica la página de códigos del archivo de texto al que se van a copiar los procedimientos almacenados. Visual FoxPro copia el contenido del archivo de texto y, a medida que lo hace, lo convierte automáticamente a la página de códigos especificada.
lAdditive
Especifica si se incluyó la palabra clave ADDITIVE en el comando COPY PROCEDURE que desencadenó este evento.

Observaciones

Se puede utilizar el evento dbc_BeforeCopyProc para realizar el seguimiento de los intentos de acceso a la base de datos antes de que se copien los procedimientos almacenados.

Devuelva .F. desde este procedimiento para evitar la copia de los procedimientos almacenados.

Ejemplo

* Reports to the screen Event name, where it is called from and ;
* the parameter passed.
PROCEDURE dbc_BeforeCopyProc ;
(cFileName,;
nCodePage,;
lAdditive)
? '>>   ' + PROGRAM()
?? ' in ' + SUBSTR(SYS(16),RAT('\',SYS(16))+1)
? '     Current DBC:      ' + SUBSTR(DBC(),RAT('\',DBC())+1)
? '     cFileName       = ' + TRANSFORM(cFileName)  + ' - ' + TYPE('cFileName')
? '     nCodePage       = ' + TRANSFORM(nCodePage)  + ' - ' + TYPE('nCodePage')
? '     lAdditive = ' + TRANSFORM(lAdditive) + ' - ' + TYPE('lAdditive')+' /end/ '
ENDPROC

Vea también

Habilitar o deshabilitar eventos DBC | dbc_AfterCopyProc (Evento)


dbc_BeforeCreateConnection (Evento)

Se produce antes de crear una nueva conexión.

PROCEDURE dbc_BeforeCreateConnection( )

Observaciones

Se puede agregar código al evento dbc_BeforeCreateConnection para realizar un seguimiento de los intentos de acceso a la base de datos antes de crear una conexión o para evitar la creación de una conexión.

Devuelva .F. desde este procedimiento para evitar la creación de la conexión.

Ejemplo

* Reports to the screen Event name and where it is called from.
PROCEDURE dbc_BeforeCreateConnection
? '>>   ' + PROGRAM()
?? ' in ' + SUBSTR(SYS(16),RAT('\',SYS(16))+1)
RETURN .F.    && Prevents user from creating a connection.
ENDPROC

Vea también

Habilitar o deshabilitar eventos DBC | dbc_AfterCreateConnection (Evento)


dbc_BeforeCreateOffline (Evento)

Se produce antes de llevar una vista fuera de línea.

PROCEDURE dbc_BeforeCreateOffline(cViewName, cPath)

-O bien-

PROCEDURE dbc_BeforeCreateOffline
LPARAMETERS cViewName, cPath

Parámetros

cViewName
Especifica el nombre de la vista que se va a poner fuera de línea.
cPath
Especifica el directorio en que se colocará la vista fuera de línea y el nombre de la vista fuera de línea.

Observaciones

Se puede utilizar el evento dbc_BeforeCreateOffline para comprobar cuáles son los valores adecuados para cViewName y cPath o utilizar estos parámetros en un procedimiento para realizar un seguimiento de los intentos de acceso a la base de datos antes de crear una vista fuera de línea.

Devuelva .F. desde este procedimiento para evitar que se ponga la vista fuera de línea.

Ejemplo

* Reports to the screen Event name, where it is called from and ;
* the parameter passed.
PROCEDURE dbc_BeforeCreateOffline ;
(cViewName,;
cPath)
? '>>   ' + PROGRAM()
?? ' in ' + SUBSTR(SYS(16),RAT('\',SYS(16))+1)
? '     cViewName =  ' + TRANSFORM(cViewName) + ' - ' ;
+ TYPE('cViewName')
? '     cPath     =  ' + TRANSFORM(cPath)     + ' - ' ;
+ TYPE('cPath')+' /end/ '
ENDPROC

Vea también

Habilitar o deshabilitar eventos DBC | dbc_AfterCreateOffline (Evento)


dbc_BeforeCreateTable (Evento)

Se produce antes de crear una tabla en la base de datos activa.

PROCEDURE dbc_BeforeCreateTable(cTableName, cLongTableNameT)

-O bien-

PROCEDURE dbc_BeforeCreateTable
LPARAMETERS cTableName, cLongTableName

Parámetros

cTableName
Especifica el nombre de la tabla que se va a crear.
cLongTableName
Especifica el nombre largo que se asignará a la tabla.

Observaciones

Este evento no se produce cuando se crea una tabla libre.

Se puede utilizar el evento dbc_BeforeCreateTable para comprobar los valores apropiados de cTableName o cLongTableName. Utilice estos parámetros en un procedimiento para hacer un seguimiento o administrar el acceso antes de crear una tabla en la base de datos.

Devuelva .F. desde este procedimiento para evitar la creación de la tabla.

Ejemplo

PROCEDURE dbc_BeforeCreateTable ;
(cTableName, ;
cLongTableName)
? '     cTableName     = ' + TRANSFORM(cTableName)     + ' - ' ;
+ TYPE('cTableName ')
? '     cLongTableName = ' + TRANSFORM(cLongTableName) + ' - ' ;
+ TYPE('cLongTableName ')+' /end/ '
ENDPROC

Vea también

Habilitar o deshabilitar eventos DBC | dbc_AfterCreateTable (Evento)


dbc_BeforeCreateView (Evento)

Se produce después de crear una vista SQL (cursor actualizable).

PROCEDURE dbc_BeforeCreateView(cViewName)

–O bien–

PROCEDURE dbc_BeforeCreateView
LPARAMETERS cViewName)

Parámetros

cViewName
Especifica el nombre de la vista que se va a crear.

Observaciones

Se puede utilizar el evento dbc_BeforeCreateView para realizar el seguimiento de los intentos de acceso a la base de datos antes de la creación de una vista.

Devuelva .F. desde este procedimiento para evitar la creación de la vista.

Ejemplo

* Reports to the screen Event name, where it is called from and ;
* the parameters passed.
PROCEDURE dbc_BeforeCreateView ;
(cViewName, ;
lRemote)
? '>>   ' + PROGRAM()
?? ' in ' + SUBSTR(SYS(16),RAT('\',SYS(16))+1)
? '     cViewName =  ' + TRANSFORM(cViewName) + ' - ' ;
+ TYPE('cViewName ')+' /end/ '
*RETURN .f.
ENDPROC

Vea también

Habilitar o deshabilitar eventos DBC | dbc_AfterCreateView (Evento)


dbc_BeforeDBGetProp (Evento)

Se produce antes de que se ejecute la función DBGetProp( ).

PROCEDURE dbc_BeforeDBGetProp(cName, cType, cProperty)

–O bien–

PROCEDURE dbc_BeforeDBGetProp
LPARAMETERS cName, cType, cProperty

Parámetros

cName
Especifica el valor del primer parámetro de la función DBGetProp( ), el nombre de la base de datos, campo, conexión con nombre, tabla o vista para la que devuelve información DBGETPROP( ).
cType
Especifica el valor del segundo parámetro de la función DBGetProp( ), el tipo de objeto del elemento nombrado en cName.
cProperty
Especifica el valor del tercer parámetro de la función DBGetProp( ), la propiedad para la que DBGETPROP( ) devuelve información.

Observaciones

Se puede utilizar el evento dbc_BeforeDBGetProp para realizar el seguimiento de los intentos de acceso a la base de datos antes de la ejecución de DBGetProp( ).

Devuelva .F. desde este procedimiento para evitar que se devuelva el valor de la propiedad a DBGetProp(). Esto provocará que la función DBGetProp() devuelva NULL.

Ejemplo

* Reports to the screen Event name, where it is called from and ;
* the parameter passed.
PROCEDURE dbc_BeforeDBGetProp ;
(cName,;
cType,;
cProperty)
? '>>   ' + PROGRAM()
?? ' in ' + SUBSTR(SYS(16),RAT('\',SYS(16))+1)
? '     Current DBC: ' + SUBSTR(DBC(),RAT('\',DBC())+1)
? '     cName     =  ' + TRANSFORM(cName)     + ' - ' + TYPE('cName')
? '     cType     =  ' + TRANSFORM(cType)     + ' - ' + TYPE('cType')
? '     cProperty =  ' + TRANSFORM(cProperty) + ' - ' + TYPE('cProperty')+' /end/ '
ENDPROC

Vea también

Habilitar o deshabilitar eventos DBC | dbc_AfterDBGetProp (Evento) | DBGETPROP( )


dbc_BeforeDBSetProp (Evento)

Se produce antes de ejecutar DBSetProp( ).

PROCEDURE dbc_BeforeDBSetProp(cName, cType, cProperty, ePropertyValue)

–O bien–

PROCEDURE dbc_BeforeDBSetProp
LPARAMETERS cName, cType, cProperty, ePropertyValue
cName
Especifica el valor del primer parámetro de la función DBSetProp( ), el nombre de la base de datos, campo, conexión con nombre, tabla o vista para la que DBSETPROP( ) modifica el valor.
cType
Especifica el valor del segundo parámetro de la función DBSetProp( ), el tipo de objeto del elemento nombrado en cName.
cProperty
Especifica el valor del tercer parámetro de la función DBSetProp( ), la propiedad para la que DBSETPROP( ) modifica el valor.
ePropertyValue
Especifica el valor del cuarto parámetro de la función DBSetProp( ), el valor que se asignará a la propiedad de cProperty.

Para ver información detallada acerca de los valores válidos para cType y cProperty, vea DBSETPROP( ) y DBGETPROP( ) en la Ayuda.

Observaciones

Se puede utilizar el evento dbc_BeforeDBSetProp para realizar el seguimiento de los intentos de acceso a la base de datos antes de la ejecución de DBSETPROP( ).

Devuelva .F. desde este procedimiento para evitar que se establezca el valor de la propiedad. Esto provocará que la función DBSetProp() devuelva .F.

Algunos valores de propiedad se pueden modificar mediante DBSetProp( ) o mediante un diseñador. Por ejemplo, puede modificar la propiedad Comment para una tabla tanto mediante DBSetProp( ) como desde el diseñador de tablas. Puesto que DBSetProp( ) realiza modificaciones directamente en la base de datos, dbc_BeforeModifyTable o dbc_AfterModifyTable no recogerán las modificaciones efectuadas por DBSETPROP( ). Para interceptar las modificaciones que se podrían haber hecho de cualquiera de los modos, es necesario utilizar dbc_BeforeDBSetProp, dbc_AfterDBSetProp, dbc_BeforeModifyTable y dbc_AfterModifyTable para comprobar cuáles son los cambios adecuados.

Ejemplo

* Reports to the screen Event name, where it is called from and ;
* the parameter passed.
PROCEDURE dbc_BeforeDBSetProp ;
(cName,;
cType,;
cProperty,;
ePropertyValue)
? '>>   ' + PROGRAM()
?? ' in ' + SUBSTR(SYS(16),RAT('\',SYS(16))+1)
? '     Current DBC:     ' + SUBSTR(DBC(),RAT('\',DBC())+1)
? '     cName          = ' + TRANSFORM(cName)          + ' - ' + TYPE('cName')
? '     cType          = ' + TRANSFORM(cType)          + ' - ' + TYPE('cType')
? '     cProperty      = ' + TRANSFORM(cProperty)      + ' - ' + TYPE('cProperty')
? '     ePropertyValue = ' + TRANSFORM(ePropertyValue) + ' - ' + TYPE('ePropertyValue')+' /end/ '
ENDPROC

Vea también

Habilitar o deshabilitar eventos DBC | dbc_AfterDBSetProp (Evento)


dbc_BeforeDeleteConnection (Evento)

Se produce antes de eliminar una conexión.

PROCEDURE dbc_BeforeDeleteConnection(cConnectionName)

–O bien–

PROCEDURE dbc_BeforeDeleteConnection
LPARAMETERS cConnectionName

Parámetros

cConnectionName
Especifica el nombre de la conexión.

Observaciones

Se puede utilizar el evento dbc_BeforeDeleteConnection para realizar el seguimiento de los intentos de acceso a la base de datos antes de la eliminación de las conexiones.

Devuelva .F. desde este procedimiento para evitar la eliminación de la conexión.

Vea también

Habilitar o deshabilitar eventos DBC | dbc_AfterDeleteConnection (Evento)


dbc_BeforeDropOffline (Evento)

Se produce inmediatamente antes de una función DROPOFFLINE( ), que vuelve a poner en línea una vista fuera de línea.

PROCEDURE dbc_BeforeDropOffline(cViewName, cPath)

–O bien–

PROCEDURE dbc_BeforeDropOffline
LPARAMETERS cViewName, cPath

Parámetros

cViewName
Especifica el nombre de la vista fuera de línea que se va a poner otra vez en línea.
cPath
Especifica el directorio en el que se encuentra la vista fuera de línea.

Devuelva .F. desde este procedimiento para evitar que la vista se vuelva a poner en línea.

Observaciones

Se puede utilizar el evento dbc_BeforeDropOffline para realizar el seguimiento de los intentos de acceso a la base de datos antes de que una vista fuera de línea se vuelva a poner en línea.

Ejemplo

* Reports to the screen Event name, where it is called from and ;
* the parameter passed.
PROCEDURE dbc_BeforeDropOffline ;
(cViewName,;
cPath)
? '>>   ' + PROGRAM()
?? ' in ' + SUBSTR(SYS(16),RAT('\',SYS(16))+1)
? '     cViewName =  ' + TRANSFORM(cViewName) + ' - ' ;
+ TYPE('cViewName')
? '     cPath     =  ' + TRANSFORM(cPath)     + ' - ' ;
+ TYPE('cPath')+' /end/ '
ENDPROC

Vea también

Habilitar o deshabilitar eventos DBC | dbc_AfterDropOffline (Evento)


dbc_BeforeDropRelation (Evento)

Se produce antes de eliminar una relación de la base de datos.

PROCEDURE dbc_BeforeDropRelation(cRelationID, cTableName, cRelatedChild,
   cRelatedTable, cRelatedTag)

–O bien–

PROCEDURE dbc_BeforeDropRelation
LPARAMETERS [cRelationID, cTableName, cRelationChild, cRelatedTable,
   cRelatedTag]

Parámetros

cRelationID
Especifica el Id. de relación almacenado en la base de datos.
cTableName
Especifica el nombre de la tabla primaria.
cRelatedChild
Especifica el nombre de la columna vinculada en la tabla secundaria.
cRelatedTable
Especifica la tabla secundaria que contiene la columna vinculada.
cRelatedTag
Especifica la etiqueta de índice de la tabla primaria.

Observaciones

Puede utilizar el evento dbc_BeforeDropRelation para comprobar cuáles son los valores adecuados para cRelationID y los demás parámetros en un procedimiento que haga un seguimiento o administre el acceso a la base de datos antes de quitar una relación de la base de datos.

Devuelva .F. desde este procedimiento para evitar la eliminación de la relación.

Vea también

Habilitar o deshabilitar eventos DBC | dbc_AfterDropRelation (Evento)


dbc_BeforeDropTable (Evento)

Se produce después de quitar la tabla especificada de la base de datos activa y eliminarla del disco con el comando DROP TABLE.

PROCEDURE dbc_BeforeDropTable(cTableName, lRecycle)

-O bien-

PROCEDURE dbc_BeforeDropTable
LPARAMETERS cTableName, lRecycle

Parámetros

cTableName
Especifica la tabla que se va a quitar de la base de datos actual y que se va a eliminar del disco.
lRecycle
Especifica si la tabla se va a colocar en la Papelera de reciclaje de Microsoft Windows en lugar de eliminarla inmediatamente del disco. Algunos datos, tales como las propiedades de tabla disponibles sólo en las tablas contenidas en la base de datos, se pierden aunque la tabla sólo se recicle en lugar de quitarse y eliminarse.

Observaciones

Puede utilizar el evento dbc_BeforeDropTable para comprobar cuál es el valor adecuado para cTableName y utilizar estos parámetros en un procedimiento para realizar un seguimiento o administrar el acceso a la base de datos, antes de quitar la tabla de la base de datos y del disco.

Si elimina una tabla mediante DELETE FILE o por medio del sistema operativo, no se producirá ningún evento.

Devuelva .F. desde este procedimiento para evitar la eliminación de la tabla.

Ejemplo

* Reports the name of the method, where it came from and what the
* parameter values were.
PROCEDURE dbc_BeforeDropTable ;
(cTableName, ;
lRecycle)
? '>>   ' + PROGRAM()
?? ' in ' + SUBSTR(SYS(16),RAT('\',SYS(16))+1)
? '     cTableName = ' + TRANSFORM(cTableName) + ' - ' ;
+ TYPE('cTableName ')
? '     lRecycle   = ' + TRANSFORM(lRecycle)   + ' - ' ;
+ TYPE('lRecycle')+' /end/ '
ENDPROC

Vea también

Habilitar o deshabilitar eventos DBC | dbc_AfterDropTable (Evento)


dbc_BeforeDropView (Evento)

Se produce antes de quitar una vista de la base de datos actual.

PROCEDURE dbc_BeforeDropView(cViewName)

–O bien–

PROCEDURE dbc_BeforeDropView
LPARAMETERS cViewName

Parámetros

cViewName
Especifica el nombre de la vista que se va a eliminar de la base de datos actual.

Observaciones

DROP VIEW es casi idéntico a DELETE VIEW; DROP VIEW es la sintaxis estándar ANSI SQL para eliminar una vista SQL. Ambos comandos quitan una definición de vista de la base de datos activa, pero la sintaxis es ligeramente diferente.

Se puede utilizar el evento dbc_BeforeDropView para realizar el seguimiento de los intentos de acceso a la base de datos antes de que se quite una vista de la base de datos.

Devuelva .F. desde este procedimiento para evitar la eliminación de la vista.

Ejemplo

* Reports to the screen Event name, where it is called from and ;
* the parameter passed.
PROCEDURE dbc_BeforeDropView ;
(cViewName)
? '>>   ' + PROGRAM()
?? ' in ' + SUBSTR(SYS(16),RAT('\',SYS(16))+1)
? '     cViewName =  ' + TRANSFORM(cViewName) + ' - ' ;
+ TYPE('cViewName ')+' /end/ '
ENDPROC

Vea también

Habilitar o deshabilitar eventos DBC | dbc_AfterDropView (Evento)


dbc_BeforeModifyConnection (Evento)

Se produce antes de modificar una conexión.

PROCEDURE dbc_BeforeModifyConnection(cConnectionName)

–O bien–

PROCEDURE dbc_BeforeModifyConnection
LPARAMETERS cConnectionName

Parámetros

cViewName
Especifica el nombre de la conexión modificada.

Observaciones

Se puede utilizar el evento dbc_BeforeModifyConnection para realizar el seguimiento de los intentos de acceso a la base de datos antes de la modificación de las conexiones.

Devuelva .F. desde este procedimiento para evitar la modificación de la conexión.

Vea también

Habilitar o deshabilitar eventos DBC | dbc_AfterModifyConnection (Evento)


dbc_BeforeModifyProc (Evento)

Se produce antes de que se modifiquen los procedimientos almacenados en la base de datos abierta.

PROCEDURE dbc_BeforeModifyProc( )

Observaciones

Se puede utilizar el evento dbc_BeforeModiProc para realizar el seguimiento de los intentos de acceso a la base de datos antes de la modificación de los procedimientos almacenados.

Devuelva .F. desde este procedimiento para evitar la modificación de los procedimientos almacenados.

Ejemplo

* Reports to the screen Event name, and where it is called from.
PROCEDURE dbc_BeforeModifyProc
? '>>   ' + PROGRAM()
?? ' in ' + SUBSTR(SYS(16),RAT('\',SYS(16))+1)
? DBC()
RETURN .F. && prevents modification of stored procedures.
ENDPROC

Vea también

Habilitar o deshabilitar eventos DBC | dbc_AfterModifyProc (Evento)


dbc_BeforeModifyTable (Evento)

Se produce antes de modificar una tabla.

PROCEDURE dbc_BeforeModifyTable(cTableName)

–O bien–

PROCEDURE dbc_BeforeModifyTable
LPARAMETERS cTableName

Parámetros

cTableName
Especifica el nombre de la tabla modificada.

Observaciones

Se puede utilizar el evento dbc_BeforeModifyTable para realizar el seguimiento de los intentos de acceso a la base de datos antes de la modificación de las tablas.

Devuelva .F. desde este procedimiento para evitar que se modifique la tabla.

Vea también

Habilitar o deshabilitar eventos DBC | dbc_AfterModifyTable (Evento)


dbc_BeforeModifyView (Evento)

Se produce antes de la modificación de una vista.

PROCEDURE dbc_BeforeModifyView(cViewName)

–O bien–

PROCEDURE dbc_BeforeModifyView
LPARAMETERS cViewName

Parámetros

cViewName
Especifica el nombre de la vista modificada.

Observaciones

Se puede utilizar el evento dbc_BeforeModifyView para realizar el seguimiento de los intentos de acceso a la base de datos antes de la modificación de las vistas.

Devuelva .F. desde este procedimiento para evitar la modificación de la vista.

Vea también

Habilitar o deshabilitar eventos DBC | dbc_AfterModifyView (Evento)


dbc_BeforeOpenTable (Evento)

Se produce antes de abrir una tabla o una vista contenida en la base de datos.

PROCEDURE dbc_BeforeOpenTable(cTableName)

-O bien-

PROCEDURE dbc_BeforeOpenTable
LPARAMETERS cTableName

Parámetros

cTableName
Especifica el nombre de la tabla o la vista que se va a abrir.

Observaciones

Se puede utilizar el código de método en el evento dbc_BeforeOpenTable para realizar el seguimiento de los intentos de acceso antes de que una tabla se abra en la base de datos. Este evento se produce siempre que se abre una tabla o una vista de la base de datos, ya sea de forma explícita mediante el comando USE o de forma implícita por medio de otros comandos, como por ejemplo SELECT.

Si, cuando se abre una vista, las tablas subyacentes no están abiertas, el evento se produce tanto para las tablas como para la vista.

Devuelva .F. desde este procedimiento para evitar que se abra la tabla.

Ejemplo

* Reports the method name, where it is called from and the
* value of the paramater cTableName.
PROCEDURE dbc_BeforeOpenTable ;
(cTableName)
? '>>   ' + PROGRAM()
?? ' in ' + SUBSTR(SYS(16),RAT('\',SYS(16))+1)
? '     cTableName = ' + TRANSFORM(cTableName) + ' - ' ;
+ TYPE('cTableName')+' /end/ '
ENDPROC

Vea también

Habilitar o deshabilitar eventos DBC | dbc_AfterOpenTable (Evento)


dbc_BeforeRemoveTable (Evento)

Se produce antes de quitar una tabla de la base de datos.

PROCEDURE dbc_BeforeRemoveTable(cTableName, lDelete, lRecycle)

-O bien-

PROCEDURE dbc_BeforeRemoveTable
LPARAMETERS cTableName, lDelete, lRecycle

Parámetros

cTableName
Especifica el nombre de la tabla que se va a quitar de la base de datos.
lDelete
Especifica si la tabla se elimina en lugar de convertirla en una tabla libre.
lRecycle
Especifica si la tabla se coloca en la Papelera de reciclaje de Windows en lugar de eliminarla inmediatamente del disco. Algunos datos, tales como las propiedades de tabla disponibles sólo en las tablas contenidas en la base de datos, se pierden aunque la tabla sólo se recicle en lugar de quitarse y eliminarse.

Observaciones

Se puede utilizar el evento dbc_BeforeRemoveTable para hacer un seguimiento o administrar el acceso a la base de datos, antes de quitar una tabla tanto de la base de datos como del disco.

Devuelva .F. desde este procedimiento para evitar que se quite la tabla.

Ejemplo

* Reports to the screen Event name, where it is called from and ;
* the parameter passed.
PROCEDURE dbc_BeforeRemoveTable ;
(cTableName, ;
lDelete, ;
lRecycle)
? '>>   ' + PROGRAM()
?? ' in ' + SUBSTR(SYS(16),RAT('\',SYS(16))+1)
? '     cTableName = ' + TRANSFORM(cTableName) + ' - ' ;
+ TYPE('cTableName ')
? '     lDelete    = ' + TRANSFORM(lDelete)    + ' - ' ;
+ TYPE('lDelete')
? '     lRecycle   = ' + TRANSFORM(lRecycle)   + ' - ' ;
+ TYPE('lRecycle')+' /end/ '
ENDPROC

Vea también

Habilitar o deshabilitar eventos DBC | dbc_AfterRemoveTable (Evento)


dbc_BeforeRenameConnection (Evento)

Se produce antes de cambiar el nombre de una conexión.

PROCEDURE dbc_BeforeRenameConnection(cPreviousName,cNewName)

–O bien–

PROCEDURE dbc_BeforeRenameConnection
LPARAMETERS cPreviousName, cNewName

Parámetros

cPreviousName
Especifica el nombre actual de la conexión.
cNewName
Especifica el nuevo nombre de la conexión.

Observaciones

Se puede utilizar el evento dbc_BeforeRenameConnection para realizar el seguimiento de los intentos de acceso a la base de datos antes de que se cambie el nombre de las conexiones.

Devuelva .F. desde este procedimiento para evitar que cambie el nombre de la conexión.

Ejemplo

* Reports to the screen Event name, where it is called from and ;
* the parameter passed.
PROCEDURE dbc_BeforeRenameConnection ;
(cPreviousName, cNewName)
? '>>   ' + PROGRAM()
?? ' in ' + SUBSTR(SYS(16),RAT('\',SYS(16))+1)
? '     cPreviousName = ' + TRANSFORM(cPreviousName)    + ' - ' ;
+ TYPE('cPreviousName ')
? '     cNewName      = ' + TRANSFORM(cNewName)         + ' - ' ;
+ TYPE('cNewName ')+' /end/ '
ENDPROC

Vea también

Habilitar o deshabilitar eventos DBC | dbc_AfterRenameConnection (Evento)


dbc_BeforeRenameTable (Evento)

Se produce antes de cambiar el nombre de una tabla.

PROCEDURE dbc_BeforeRenameTable(cPreviousName, cNewName)

–O bien–

PROCEDURE dbc_BeforeRenameTable
LPARAMETERS cPreviousName, cNewName

Parámetros

cPreviousName
Especifica el nombre actual de la tabla.
cNewName
Especifica el nuevo nombre de la tabla.

Observaciones

Puede utilizar el evento dbc_BeforeRenameTable para hacer un seguimiento de los intentos de acceso a la base de datos antes de que se cambie el nombre de una conexión o para evitar que se cambie el nombre de una tabla.

Devuelva .F. desde este procedimiento para evitar que se cambie el nombre de la tabla.

Ejemplo

PROCEDURE dbc_BeforeRenameTable;
(cPreviousName, ;
cNewName)
? '>>   ' + PROGRAM()
?? 'in ' + SUBSTR(SYS(16),RAT('\',SYS(16))+1
? '     Current DBC:    ' + SUBSTR(DBC(),RAT('\',DBC())+1
? '     cPreviousName = ' + TRANSFORM(cPreviousName)     + ' – ' +
TYPE('cPreviosName ')+' /end/ '
ENDPROC

Vea también

Habilitar o deshabilitar eventos DBC | dbc_AfterRenameTable (Evento)


dbc_BeforeRenameView (Evento)

Se produce antes de cambiar el nombre de una vista.

PROCEDURE dbc_BeforeRenameView(cPreviousName, cNewName)

–O bien–

PROCEDURE dbc_BeforeRenameView
LPARAMETERS cPreviousName, cNewName

Parámetros

cPreviousName
Especifica el nombre actual de la vista.
cNewName
Especifica el nuevo nombre de la vista.

Observaciones

Se puede utilizar el evento dbc_BeforeRenameView para realizar el seguimiento de los intentos de acceso a la base de datos antes de que se cambie el nombre de las vistas.

Devuelva .F. desde este procedimiento para evitar que cambie el nombre de la vista.

Vea también

Habilitar o deshabilitar eventos DBC | dbc_AfterRenameView (Evento)


dbc_BeforeValidateData (Evento)

Se produce inmediatamente antes de que se ejecute el comando VALIDATE DATABASE.

PROCEDURE dbc_BeforeValidateData
(lRecover, lNoConsole, lPrint, lFile [, cFilename])

–O bien–

PROCEDURE dbc_BeforeValidateData
LPARAMETERS lRecover, lNoConsole, lPrint, lFile [, cFilename]

Parámetros

lRecover
Especifica si se incluyó la palabra clave RECOVER en el comando VALIDATE DATABASE que desencadenó este evento.
lNoConsole
Especifica si se incluyó la palabra clave NOCONSOLE en el comando VALIDATE DATABASE que desencadenó este evento.
lPrint
Especifica si se incluyó la palabra clave PRINT en el comando VALIDATE DATABASE que desencadenó este evento.
lFile
Especifica si se incluyó la palabra clave FILE en el comando VALIDATE DATABASE que desencadenó este evento.
cFilename
Especifica el nombre del archivo de salida citado en la cláusula TO FILE del comando VALIDATE DATABASE. cFilename es opcional, pero si se omite y se utiliza la cláusula TO FILE de VALIDATE DATABASE, se recibe el error "Debe especificar parámetros adicionales". Si no utiliza TO FILE e incluye el parámetro cFilename, se pasará un valor .F.

Observaciones

Se puede utilizar el evento dbc_BeforeValidateData para realizar el seguimiento de los intentos de acceso a la base de datos antes de la validación de los datos.

Devuelva .F. desde este procedimiento para evitar que se valide la base de datos.

Ejemplo

* Reports to the screen Event name, where it is called from and ;
* the parameters passed.
PROCEDURE dbc_BeforeValidateData;
(lRecover, ;
lNoConsole, ;
lPrint, ;
lFile, ;
cFileName)
? '>>   ' + PROGRAM()
?? ' in ' + SUBSTR(SYS(16),RAT('\',SYS(16))+1)
? '     lRecover   = ' + TRANSFORM(lRecover)   + ' - ' ;
+ TYPE('lRecover')
? '     lNoConsole = ' + TRANSFORM(lNoConsole) + ' - ' ;
+ TYPE('lNoConsole')
? '     lPrint     = ' + TRANSFORM(lPrint)     + ' - ' ;
+ TYPE('lPrint')
? '     lFile      = ' + TRANSFORM(lFile)      + ' - ' ;
+ TYPE('lFile')
? '     cFileName  = ' + TRANSFORM(cFileName)  + ' - ' ;
+ TYPE('cFileName ')+' /end/ '
ENDPROC

Vea también

Habilitar o deshabilitar eventos DBC | dbc_AfterValidateData (Evento)


dbc_CloseData (Evento)

Se produce cuando se cierra una base de datos.

PROCEDURE dbc_CloseData(cDatabaseName, lAll)

-O bien-

PROCEDURE dbc_CloseData
LPARAMETERS cDatabaseName, lAll

Parámetros

cDatabaseName
Especifica el nombre de la base de datos de destino.
lAll
Especifica si se incluyó la palabra clave ALL en el comando CLOSE DATABASES. Si están activados los eventos DBC, este evento se produce siempre que se cierre una base de datos, independientemente de que se cerrara explícitamente con el comando CLOSE DATABASES.

Observaciones

Se puede utilizar el evento dbc_CloseData para comprobar los valores apropiados de cDatabaseName y lAll o utilizar estos parámetros en un procedimiento para realizar el seguimiento del acceso a la base de datos cuando ésta está a punto de cerrarse.

Cuando se cierran varias bases de datos a la vez, se desencadenan a su vez los métodos dbc_CloseData para cada una de las bases de datos. En consecuencia, si se ejecuta el comando CLOSE DATABASES ALL, se pueden producir varios eventos CloseData diferentes y ejecutarse varios métodos dbc_CloseData diferentes.

Devuelva .F. desde este procedimiento para evitar el cierre de la base de datos.

Ejemplo

PROCEDURE dbc_CloseData ;
(cDatabaseName,;
lAll)
? '     cDatabaseName = ' + TRANSFORM(cDatabaseName) + ' - ' ;
+ TYPE('cDatabaseName')
? '     lAll          = ' + TRANSFORM(lAll)          + ' - ' ;
+ TYPE('lAll')+' /end/ '
RETURN .F.     && This will prevent database closure.
ENDPROC

Vea también

Habilitar o deshabilitar eventos DBC | dbc_BeforeAddTable (Evento) | dbc_Activate (Evento)


dbc_Deactivate (Evento)

Se produce cuando una base de datos deja de estar activa.

PROCEDURE dbc_Deactivate(cDatabaseName)

-O bien-

PROCEDURE dbc_Deactivate
LPARAMETERS cDatabaseName

Parámetros

cDatabaseName
Especifica el nombre de la base de datos que se va a desactivar.

Observaciones

Puede tener varias bases de datos abiertas al mismo tiempo, pero en cada momento sólo puede haber una activa. Hay varias situaciones que pueden desactivar una base de datos. Para desactivar explícitamente una base de datos sin activar otra, utilice el comando SET DATABASE TO sin argumentos.

Si están abiertas varias bases de datos (con eventos DBC activados), cuando una se desactiva se ejecuta el método dbc_Deactivate de esa base de datos.

Si incluye eventos DBC en un archivo de programa, el código sólo se aplicará a las bases de datos que especifiquen este archivo de programa como su archivo de eventos. En el código de este programa, utilice el parámetro cDatabaseName para determinar qué base de datos invocó al evento. De este modo, es posible utilizar un bloque de código del método para determinar la base de datos desactivada y, a continuación, aplicar el código adecuado para la base de datos.

Devuelva .F. desde este procedimiento para evitar la desactivación de la base de datos. Dado que el cierre de una base de datos la desactiva implícitamente, esto evitará también que se cierre la base de datos.

Ejemplo

PROCEDURE dbc_Deactivate ;
(cDatabaseName)
? '     cDatabaseName = ' + TRANSFORM(cDatabaseName) + ' - ' ;
+ TYPE('cDatabaseName')+' /end/ '
ENDPROC

Vea también

dbc_Activate (Evento DBC) | SET DATABASE (Comando) | dbc_CloseData (Evento) | dbc_ModifyData (Evento) | dbc_OpenData (Evento)


dbc_ModifyData (Evento)

Se produce inmediatamente después de que se ejecute MODIFY DATABASE Utilícelo para evitar que se abra la ventana del diseñador de bases de datos.

PROCEDURE dbc_ModifyData(cDatabaseName, lNoWait, lNoEdit )

-O bien-

PROCEDURE dbc_ModifyData
LPARAMETERS [cDatabaseName, lNoWait, lNoEdit ]

Parámetros

CDatabaseName
Especifica el nombre de la base de datos que se está modificando.
lNoWait
Especifica si se incluyó la palabra clave NOWAIT en el comando MODIFY DATABASE , lo que provocaría que continuara la ejecución del programa después de abrir el Diseñador de bases de datos.
lNoEdit
Especifica si se incluyó la palabra clave NOEDIT en el comando MODIFY DATABASE o que impediría la modificación de la base de datos.

Observaciones

Se puede utilizar el evento dbc_ModifyData para realizar el seguimiento del acceso a la base de datos mientras ésta se está modificando. Devuelva .F. desde este procedimiento para evitar la modificación de la base de datos.

Ejemplo

PROCEDURE dbc_ModifyData ;
(CDatabaseName, ;
lNoWait, ;
lNoEdit)
? '     cDatabaseName = ' + cDatabaseName + ' - ' ;
+ TYPE('cDatabaseName ')
? '     lNoWait       = ' + TRANSFORM(lNoWait) + ' - ' ;
+ TYPE('lNoWait')
? '     lNoEdit       = ' + TRANSFORM(lNoEdit) + ' - ' ;
+ TYPE('lNoEdit')+' /end/ '
* Stop user from changing the database in the Designer.
IF lNoEdit
RETURN .T.
ELSE
RETURN .F.
ENDIF
ENDPROC

Vea también

MODIFY DATABASE | Habilitar o deshabilitar eventos DBC | Diseñador de bases de datos | Ver y modificar la arquitectura de la base de datos


dbc_OpenData (Evento)

Se produce cuando se abre una base de datos de forma explícita mediante el comando OPEN DATABASE o implícitamente por medio de otro comando, tal como MODIFY DATABASE o USE <Tabla> con una tabla contenida en una base de datos cerrada.

PROCEDURE dbc_OpenData (cDatabaseName, lExclusive, lNoUpdate, lValidate )

-O bien-

PROCEDURE dbc_OpenData
LPARAMETERS [cDatabaseName, lExclusive, lNoUpdate, lValidate ]

Parámetros

cDatabaseName
Especifica el nombre de la base de datos que se va a abrir.
lExclusive
Especifica si se va a abrir la base de datos en modo exclusivo.
lNoUpdate
Especifica si se incluyó la palabra clave NOUPDATE en el comando OPEN DATABASE, lo que significa que se va a abrir la base de datos en modo de sólo lectura.
lValidate
Especifica si se incluyó la palabra clave VALIDATE en el comando OPEN DATABASE, lo que provoca que se valide la base de datos en el momento de abrirla.

Observaciones

Se puede utilizar el evento dbc_OpenData para realizar el seguimiento de los intentos de acceso a la base de datos mientras esta se abre.

Cuando devuelve falso, este método evita que se abra la base de datos.

Ejemplo

PROCEDURE dbc_OpenData ;
(cDatabaseName, ;
lExclusive, ;
lNoUpdate, ;
lValidate)
? '     cDatabaseName = ' + TRANSFORM(cDatabaseName) + ' - ' ;
+ TYPE('cDatabaseName')
? '     lExclusive    = ' + TRANSFORM(lExclusive) + ' - ' ;
+ TYPE('lExclusive')
? '     lNoUpdate     = ' + TRANSFORM(lNoUpdate)  + ' - ' ;
+ TYPE('lNoUpdate')
? '     lValidate     = ' + TRANSFORM(lValidate)  + ' - ' ;
+ TYPE('lValidate'
ENDPROC

Vea también

Habilitar o deshabilitar eventos DBC | OPEN DATABASE (Comando) | MODIFY DATABASE (Comando)


dbc_PackData (Evento)

Se produce antes de que se ejecute el comando PACK DATABASE.

PROCEDURE dbc_PackData( )

Observaciones

Se puede utilizar el evento dbc_PackData para realizar el seguimiento del acceso a la base de datos antes de que se ejecute un PACK DATABASE.

Devuelva .F. desde este procedimiento para evitar el empaquetamiento de la base de datos. Obtendrá un error "Acceso al archivo denegado" al intentar empaquetar la base de datos si se devuelve .F.

Ejemplo

* Reports to the screen Event name, where it is called from and ;
* the parameter passed.
PROCEDURE dbc_PackData
? '  -  ' + PROGRAM()
??' in ' + SUBSTR(SYS(16),RAT('\',SYS(16))+1)
? '     Current DBC: ' + SUBSTR(DBC(),RAT('\',DBC())+1)+' /end/ '
ENDPROC

Vea también

Habilitar o deshabilitar eventos DBC | PACK DATABASE (Comando)


DblClick (Evento)

Se produce cuando el usuario presiona y suelta el botón primario del ratóndos veces en rápida sucesión.

PROCEDURE Object.DblClick

Observaciones

El evento DblClick también se produce cuando se selecciona un elemento de un cuadro de lista o de un cuadro combinado y se presiona ENTRAR.

Si DblClick no se produce en el límite temporal de doble clic del sistema, el objeto reconoce otro evento Click. Por tanto, cuando adjunte procedimientos para estos eventos relacionados, compruebe que sus acciones no entran en conflicto. Los controles que no reciben eventos DblClick pueden recibir dos clics sencillos en lugar de un doble clic.

Nota Para distinguir entre los botones primario, secundario y central del ratón, utilice los eventos MouseDown y MouseUp.

Vea también

Click (Evento) | MouseDown (Evento) | MouseUp (Evento)

Se aplica a: CheckBox (Control) | ComboBox (Control) | CommandGroup (Control) | Container (Objeto) | Control (Objeto) | EditBox (Control) | Form (Objeto) | Grid (Control) | Header (Objeto) | Image (Control) | Label (Control) | Line (Control) | ListBox (Control) | OptionButton (Control) | OptionGroup (Control) | Page (Objeto) | PageFrame (Control) | Shape (Control) | Spinner (Control) | TextBox (Control) | ToolBar (Objeto)


Deactivate (Evento)

Ocurre cuando un objeto contenedor, como un formulario, no se encuentra activo porque ninguno de los objetos contenidos tiene el foco.

PROCEDURE Object.Deactivate

Observaciones

Los eventos Activate y Deactivate ocurren sólo cuando mueve el foco dentro de una aplicación. Moviendo el foco hacia o desde un formulario en otra aplicación no se desencadena ningún evento. El evento Deactivate no ocurre cuando se descarga un formulario.

Cuando un objeto nuevo es activado, por programa o en forma interactiva, el evento Deactivate para el objeto previamente activo ocurre y el evento Activate ocurre para el nuevo objeto.

En objetos Form, hacer clic sobre el escritorio de Visual FoxPro provoca que el evento Deactivate del formulario ocurra y desactive el formulario activo del usuario. Esta mejora proporciona mejor integración con la función BINDEVENT( ) para activar y desactivar formularios.

En objetos ToolBar, Deactivate ocurre cuando la barra de herramientas está oculta utilizando el método Hide.

Para objetos ProjectHook, el evento Deactivate ocurre cuando hace clic fuera de la ventana de proyecto o al llamar al comando ACTIVATE WINDOW para una ventana diferente.

Vea también

Activate (Evento) | Hide (Método) | LostFocus (Evento) | Show (Método) | Visible (Propiedad) | BINDEVENT( ) (Función)

Se aplica a: Form | FormSet | Page | ProjectHook (Objeto) | ToolBar


Deleted (Evento)

Se produce cuando el usuario marca un registro para eliminación o cuando quita la marca de un registro marcado.

PROCEDURE Grid.Deleted LPARAMETERS nRecNo

Parámetros

nRecNo
Devuelve el número de registro de la fila que se elimina.

Vea también

DELETE | DeleteMark (Propiedad)

Se aplica a: Grid


Destroy (Evento)

Se produce cuando se libera una instancia de un objeto.

PROCEDURE Objeto.Destroy

Observaciones

El evento Destroy para un objeto contenedor se desencadena antes que el evento Destroy para cualquiera de sus objetos contenidos; el evento Destroy del contenedor puede hacer referencia a sus objetos contenidos antes de que se liberen.

Vea también

AddObject (Método) | CREATEOBJECT( ) | Init (Evento) | RELEASE | QueryUnload (Evento) | Unload (Evento) | Release (Método)

Se aplica a: CheckBox | Collection (Clase) | Column | ComboBox | CommandButton | Container (Objeto) | Control (Objeto) | Cursor | CursorAdapter (Clase) | Custom | DataEnvironment | EditBox | Exception (Clase) | Form | FormSet | Grid | Header | Image | Label | Line | ListBox | OLE Bound (Control) | OLE Container (Control) | OptionButton | Page | PageFrame | ProjectHook (Objeto) | Relation | Session (Objeto) | Shape | Spinner | TextBox | Timer | ToolBar

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


DownClick (Evento)

Se produce cuando se hace clic en la flecha hacia abajo de un control Spinner, una flecha desplegable de un control ComboBox o la flecha hacia abajo en la lista desplegable de un control ComboBox.

PROCEDURE Control.DownClick

Vea también

UpClick (Evento)

Se aplica a: ComboBox | Spinner


DragDrop (Evento)

Se produce cuando se completa una operación de arrastrar y soltar.

PROCEDURE Object.DragDrop

LPARAMETERS oSource, nXCoord, nYCoord

Parámetros

Es necesario incluir una instrucción LPARAMETERS o PARAMETERS en el procedimiento de evento y especificar un nombre para cada parámetro. Visual FoxPro transfiere al evento DragDrop parámetros en el orden siguiente:

oSource
Hace referencia al control que se arrastra. Es posible hacer referencia a propiedades y métodos del control con este parámetro.
nXCoord, nYCoord
Contiene la posición horizontal (nXCoord) y vertical (nYCoord) del puntero del ratón en el formulario cuando se colocan datos sobre un destino. Estas coordenadas se expresan en términos del sistema de coordenadas del formulario en la unidad de medida especificada por la propiedad ScaleMode del formulario.

Observaciones

Una operación de arrastrar y soltar se completa cuando se arrastra un control sobre otro control o un formulario y se suelta el botón del ratón, o cuando se llama al método Drag con su argumento nAction establecido como 2 (Colocar) para el control.

Utilice un evento DragDrop para controlar lo que ocurre cuando se completa una operación de arrastre. Por ejemplo, puede mover el control de código fuente a una nueva ubicación o copiar un archivo desde una ubicación a otra.

Nota En el evento DragDrop intervienen dos objetos, un control que se arrastra y un objeto de destino. El evento DragDrop se desencadena para el objeto de destino, no para el control que se arrastra. Utilice la propiedad DragMode y el método Drag para especificar como se inicia el arrastre. Una vez iniciado el arrastre, podrá controlar los eventos que preceden al evento DragDrop con un evento DragOver.

Vea también

Drag (Método) | DragIcon (Propiedad) | DragMode (Propiedad) | DragOver (Evento) | MouseDown (Evento) | MouseUp (Evento) | MouseMove (Evento)

Se aplica: CheckBox | ComboBox | CommandButton | CommandGroup | Container (Objeto) | Control (Objeto) | EditBox | Form | Grid | Image | Label | Line | ListBox | OLE Bound (Control) | OLE Container (Control) | OptionButton | OptionGroup | Page | PageFrame | Shape | Spinner | TextBox | ToolBar


DragOver (Evento)

Se produce cuando se arrastra un control sobre un objeto de destino.

PROCEDURE Object.DragOver

LPARAMETERS oSource, nXCoord, nYCoord, nState

Parámetros

Incluya una instrucción LPARAMETERS o PARAMETERS en el procedimiento de evento y especifique un nombre para cada parámetro. De lo contrario, se producirá un error. Visual FoxPro transfiere al evento DragOver parámetros en el orden siguiente:

oSource
Contiene una referencia al control que se arrastra. Es posible hacer referencia a propiedades y métodos del control con este parámetro.
nXCoord, nYCoord
Contiene la posición horizontal (nXCoord) y vertical (nYCoord) del puntero del ratón en el formulario cuando se arrastran datos sobre un destino para colocar. Estas coordenadas se expresan en términos del sistema de coordenadas del formulario en la unidad de medida especificada por la propiedad ScaleMode del formulario.
nState
Contiene un número que representa el estado de transición del control que se arrastra en relación con el objeto de destino:
Valor | Descripción
0 | Entrar. El control se arrastra dentro del alcance de un destino.
1 | Salir. El control se arrastra fuera del alcance de un destino.
2 | Sobre. El control se ha movido desde una posición del destino a otra.
Utilice nState para determinar acciones en puntos de transición clave. Por ejemplo, puede resaltar un posible destino en nState = 0 (Entrar) y restaurar la apariencia del objeto en nState = 1 (Salir).

Cuando un objeto recibe un evento DragOver con nState = 0 (Entrar):

  • Se desencadena un evento DragDrop si el control de código fuente se coloca en un objeto de destino.
  • Se desencadena otro evento DragOver con nState = 1 (Salir) si el control de código fuente no se coloca en un destino válido.

Observaciones

El objeto bajo el icono de arrastre es el objeto de destino y el que responde al evento DragOver. Puede utilizar este evento para supervisar cuando el puntero del ratón entra, sale o está directamente sobre un objeto de destino.

Utilice un evento DragOver para determinar que sucede después de iniciarse el arrastre y antes de que se coloque un control sobre un destino. Por ejemplo, puede comprobar un intervalo de destino válido resaltando el destino. Para ello, establezca la propiedad BackColor o ForeColor o muestre un puntero especial.

Vea también

Drag (Método) | DragDrop (Evento) | DragIcon (Propiedad) | DragMode (Propiedad) | MouseDown (Evento) | MouseUp (Evento) | MouseMove (Evento)

Se aplica: CheckBox | ComboBox | CommandButton | CommandGroup | Control (Objeto) | EditBox | Form | Grid | Image | Label | Line | ListBox | OLE Bound (Control) | OLE Container (Control) | OptionButton | OptionGroup | Page | PageFrame | Shape | Spinner | TextBox | ToolBar


DropDown (Evento)

Se produce cuando la parte de lista de un control ComboBox está a punto de colocarse después de hacer clic en la flecha de colocar.

PROCEDURE ComboBox.DropDown

Observaciones

Utilice un procedimiento de evento para realizar actualizaciones finales en la parte de lista de un ComboBox antes de que el usuario efectúe una selección. De este modo podrá agregar o eliminar elementos de la lista utilizando el método AddItem o RemoveItem. Esta flexibilidad resulta útil si desea que los controles interactúen en tiempo de ejecución. Por ejemplo, lo que desea que aparezca en la parte de lista de un ComboBox dependerá de lo que elija el usuario en un OptionGroup.

Vea también

AddItem (Método) | DownClick (Evento) | RemoveItem (Método)

Se aplica a: ComboBox


Error (Evento)

Se produce cuando hay un error en tiempo de ejecución en un método. El evento Error permite que un objeto maneje errores.

PROCEDURE Object.Error

LPARAMETERS nError, cMethod, nLine

Parámetros

nError
Contiene el número de error de Visual FoxPro.
cMethod
Contiene el nombre del método que ha ocasionado el error. Sin embargo, si un método llama a una función definida por el usuario y se produce un error en esa función cMethod contendrá el nombre de la función definida por el usuario, en lugar del nombre del método que ha llamado a la función.
nLine
Contiene el número de línea del método o la función definida por el usuario que ha ocasionado el error.

Observaciones

El evento Error elimina la rutina de ON ERROR y permite a cada objeto interceptar y manipular errores internamente.

Nota El evento Error ocurre sólo cuando el error sucede en el código. Adicionalmente, el evento Error no ocurre si el método Error no contiene código.

Cualquier error que ocurra en el evento Error de un objeto debe ser manejado por el objeto y no es escalable a una rutina ON ERROR o manejado por TRY...CATCH...FINALLY.

Nota El evento Error no ocurre si una rutina ON ERROR está en la pila de llamadas.

Vea también

ON ERROR (Comando) | TRY...CATCH...FINALLY (Comando)

Se aplica a: CheckBox | Clase Collection | Column | ComboBox | CommandButton | CommandGroup | Objeto Container | Objeto Control | Cursor | Clase CursorAdapter | Custom | DataEnvironment | EditBox | Clase Exception | Form | FormSet | Grid | Header | Image | Label | Line | ListBox | OLE Bound (Control) | Control OLE Container | OptionButton | OptionGroup | Page | PageFrame | Objeto ProjectHook | Relation | Objeto Session | Shape | Spinner | TextBox | Timer | ToolBar


ErrorMessage (Evento)

Se incluye por compatibilidad con FoxPro 2.x. Use Valid (Evento) en su lugar.


GotFocus (Evento)

Se produce cuando un objeto recibe el enfoque, bien mediante acciones del usuario o mediante código.

PROCEDURE Object.GotFocus

Observaciones

Utilice el evento GotFocus para especificar acciones que se producen cuando un objeto recibe el enfoque. Por ejemplo, adjuntando un evento GotFocus a cada control Form, puede orientar a un usuario mostrando breves instrucciones o mensajes en la barra de estado. También puede proporcionar indicaciones visuales activando, desactivando o mostrando otros controles que dependen del control que tiene el enfoque.

Un control recibe el enfoque mediante una acción del usuario, como un clic del ratón, o cuando en el código se llama al método SetFocus.

Nota Un objeto sólo puede recibir el enfoque si sus propiedades Enabled y Visible están establecidas como Verdadero (.T.). Si desea personalizar la interfaz de teclado para mover el enfoque, establezca el orden de tabulación o especifique las teclas de acceso de los controles de un formulario. El evento GotFocus se produce después del evento Activate del contenedor del control.

Vea también

Activate (Evento) | ActiveControl (Propiedad) | Click (Evento) | Deactivate (Evento) | Enabled (Propiedad) | LostFocus (Evento) | SetFocus (Método) | TabIndex (Propiedad) | TabStop (Propiedad) | Visible (Propiedad)

Se aplica a: CheckBox | ComboBox | CommandButton | Container (Objeto) | Control (Objeto) | EditBox | Form | ListBox | OLE Bound (Control) | OLE Container (Control) | OptionButton | Spinner | TextBox


Init (Evento)

Se produce cuando se crea un objeto.

PROCEDURE Object.Init [LPARAMETERS Param1, Param2,...]

Parámetros

Param1, Param2...
Los parámetros son opcionales, pero si se transfieren, deberá incluir una instrucción LPARAMETERS o PARAMETERS que enumere cada parámetro. De lo contrario, Visual FoxPro generará un error.

Observaciones

Para conjuntos de formularios (FormSets) y otros objetos contenedores, los eventos Init de todos los objetos contenidos se desencadenan antes que el evento Init del contenedor, por lo que es posible tener acceso a los objetos contenidos en el evento Init del contenedor. El evento Init de cada objeto contenido se produce en el orden en que se agregó al objeto contenedor.

Para impedir que se cree un control, devuelva falso (.F.) desde el evento Init. El evento Destroy no se desencadenará. Por ejemplo, el código siguiente devuelve falso (.F) si la tabla Invoice no está disponible:

PROCEDURE INIT
IF NOT FILE("INVOICE.DBF")
ERROR 'Initialization Failed: File not found'
RETURN .F.
ELSE
USE INVOICE IN 0 AGAIN
THIS.WorkArea = SELECT()
ENDIF
ENDPROC

Vea también

AddObject (Método) | CREATEOBJECT( ) | Load (Evento)

Se Aplica a: CheckBox | Collection (Clase) | Column | ComboBox | CommandButton | CommandGroup | Container (Objeto) | Control (Objeto) | Cursor | CursorAdapter (Clase) | Custom | DataEnvironment | EditBox | Exception (Clase) | Form | FormSet | Grid | Header | Image | Label | Line | ListBox | OLE Bound (Control) | OLE Container (Control) | OptionButton | OptionGroup | Page | PageFrame | ProjectHook (Objeto) | Relation | Session (Objeto) | Shape | Spinner | TextBox | Timer | ToolBar


InteractiveChange (Evento)

Se produce cuando el usuario cambia el valor de un control mediante el teclado o el ratón (ratón).

PROCEDURE Control.InteractiveChange

Observaciones

Este evento se produce cada vez que el valor del objeto cambia interactivamente. Por ejemplo, cuando un usuario escribe en un cuadro de texto, el evento InteractiveChange se desencadena después de cada pulsación de tecla.

Vea también

Click (Evento)

Se aplica: CheckBox | ComboBox | CommandGroup | EditBox | ListBox | OptionGroup | Spinner | TextBox


KeyPress (Evento)

Se produce cuando el usuario presiona y suelta una tecla. Puede utilizar el evento KeyPress para controlar las pulsaciones de tecla en un control. Puede comprobar inmediatamente estas pulsaciones para validar o controlar el formato en que fueron escritos. Utilice la propiedad KeyPreview para crear una rutina global de control de teclado.

PROCEDURE Object.KeyPress LPARAMETERS nKeyCode, nShiftAltCtrl

Parámetros

nKeyCode
Contiene un número que identifica la tecla presionada. Si desea consultar una lista de códigos para claves especiales y combinaciones de clave, vea INKEY( ).
nShiftAltCtrl
Establece un bit si se mantiene presionada una tecla modificadora mientras se presiona la tecla identificada en nKeyCode. La teclas modificadoras válidas son SHIFT, CTRL y ALT.

La siguiente tabla muestra las teclas modificadoras válidas nShiftAltCtrl.

nShiftAltCtrl | Tecla modificadora
1 | SHIFT
2 | CTRL
4 | ALT

Este parámetro es la suma de varios bits, donde los menos significativos corresponden a la tecla MAYÚSCULAS (bit 0), a la tecla CTRL (bit 1) y a la tecla ALT (bit 2). Estos bits corresponden a los valores 1, 2 y 4, respectivamente. Este parámetro indica el estado de estas teclas. Algunos, todos, o ninguno de los bits pueden cambiar, indicando que alguna, todas o ninguna de las teclas estan presionadas. Por ejemplo, si las teclas CTRL y ALT son presionadas, el valor de nShiftAltCtrl es 6.

Observaciones

El evento KeyPress no se produce para las combinaciones con la tecla ALT.

El objeto con el foco recibe el evento KeyPress.

Un formulario puede recibir el evento KeyPress en tres situaciones especiales:

  • El formulario no contiene controles o ninguno de sus controles está visible y activado.
  • La propiedad KeyPreview del formulario esta establecida en Verdadero (.T.). El formulario recibe primero el evento KeyPress y, a continuación, el control con el foco recibe el evento.
  • Si un control del formulario no puede procesar una pulsación. Por ejemplo, cuando se presiona Tabulador para mover el enfoque al siguiente control.

Si la propiedad AllowCellSelection para una cuadrícula (grid) está configurada a verdadero (.T.), Visual FoxPro ignora el evento Grid KeyPress y utiliza el evento asociado al control de la celda.

Vea también

INKEY( ) | KeyPreview (Propiedad)

Se aplica a: CheckBox | ComboBox | CommandButton | EditBox | Form | Grid | ListBox | OptionButton | Spinner | TextBox


Load (Evento)

Se produce antes de crear un objeto.

PROCEDURE Object.Load

Observaciones

El evento Load se produce en primer lugar para el FormSet y, a continuación, para los formularios en él contenidos. El evento Load se produce antes que los eventos Activate y GotFocus.

Para impedir que se cree un formulario, devuelva falso (.F.) desde el evento Load; el evento Destroy no se ejecutará.

Vea también

Activate (Evento) | GotFocus (Evento) | Unload (Evento)

Se aplica: Form | FormSet


LostFocus (Evento)

Se produce cuando un objeto pierde el enfoque.

PROCEDURE Object.LostFocus

Observaciones

La sincronización de este evento depende del tipo de objeto:

  • Un control pierde el enfoque por la acción del usuario, por ejemplo, cuando se hace una tabulación o un clic en otro control, o cambiando el enfoque en el código mediante el método SetFocus. Una Cuadrícula pierde el enfoque cuando un usuario presiona CTRL+TAB en Microsoft Windows o CONTROL+TAB en Macintosh para salir de la Cuadrícula.
  • Un Form sólo pierde el enfoque cuando no tiene controles, todos sus controles tienen la propiedad Enabled y Visible establecidas como Falso (.F.), u otro formulario obtiene el enfoque.

Para Form, el evento LostFocus se produce antes que el evento Deactivate.

Vea también

Deactivate (Evento) | Enabled (Propiedad) | GotFocus (Evento) | Visible (Propiedad)

Se aplica: CheckBox | ComboBox | CommandButton | Container (Objeto) | Control (Objeto) | EditBox | Form | ListBox | OLE Bound (Control) | OLE Container (Control) | OptionButton | Spinner | TextBox


Message (Evento)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar la propiedad StatusBarText.


MiddleClick (Evento)

Tiene lugar cuando el usuario hace clic en el botón medio del ratón (ratón) en un ratón con tres botones sobre un control.

PROCEDURE Control.MiddleClick

Vea también

Click (Evento) | DblClick (Evento) | DragDrop (Evento) | DragOver (Evento) | DropDown (Evento) | Enabled (Propiedad) | KeyPress (Evento) | MouseDown (Evento) | MouseMove (Evento) | MouseUp (Evento) | Scrolled (Evento) | Undock (Evento)

Se aplica a: CheckBox | ComboBox | CommandButton | CommandGroup | Container | Control | EditBox | Form | Grid | Header | Image | Label | Line | ListBox | OptionButton | OptionGroup | Page | PageFrame | Shape | Spinner | TextBox | ToolBar


MouseDown (Evento)

Se produce cuando el usuario presiona un botón del ratón.

PROCEDURE Object.MouseDown

LPARAMETERS nButton, nShift, nXCoord, nYCoord

Parámetros

Es necesario incluir una instrucción LPARAMETERS o PARAMETERS en el procedimiento de evento y especificar un nombre para cada parámetro. Visual FoxPro transfiere al evento MouseDown parámetros en el orden siguiente:

nButton
Contiene un número que especifica qué botón se presiona para desencadenar el evento: 1 (izquierdo), 2 (derecho) o 4 (central).
nShift
Contiene un número que especifica el estado de las teclas modificadoras cuando se hace clic con el ratón. Las teclas modificadoras válidas son MAYÚS, CTRL y ALT.

Los valores que se devuelven en nShift para las teclas modificadoras individuales se muestran en la siguiente tabla.

Valores de teclas modificadoras para nShift

Tecla de Windows | Valor
MAYÚS | 1
CTRL | 2
ALT | 4

Si se mantienen presionadas una o más teclas modificadoras mientras se hace clic con el ratón, el argumento nShift contiene la suma de los valores para las teclas modificadoras. Por ejemplo, si el usuario mantiene presionada la tecla CTRL mientras presiona el botón del ratón, el argumento nShift contiene 2. Pero si el usuario mantiene presionadas las teclas CTRL+ALT mientras presiona el botón del ratón, el argumento nShift contiene 6.

nXCoord, nYCoord
Contiene la posición horizontal (nXCoord) y vertical (nYCoord) actual del puntero del ratón en el formulario. Estas coordenadas siempre se expresan en términos del sistema especificado de coordenadas del Form y en la unidad de medida que establece el valor de la propiedad ScaleMode.

Observaciones

Se utiliza el procedimiento MouseDown para especificar acciones que se deben producir cuando se presiona un determinado botón del ratón. A diferencia de los eventos Click y DblClick, se puede utilizar el evento MouseDown para distinguir entre los botones izquierdo, derecho y central del ratón. También se puede escribir código para combinaciones de ratón y teclado que utilicen los modificadores de teclado.

Sugerencia Se puede utilizar un evento MouseMove para responder a un evento provocado al mover el ratón. El argumento nButton tiene un significado distinto según se trate de MouseDown y MouseUp, o de MouseMove. Para MouseDown o MouseUp, el argumento nButton indica exactamente un botón por evento; para MouseMove, indica el estado actual de todos los botones.

Ver también

Click (Evento) | DblClick (Evento) | MiddleClick (Evento) | MouseMove (Evento) | MousePointer (Propiedad) | MouseUp (Evento) | MouseWheel (Evento)

Se aplica a: CheckBox | ComboBox | CommandButton | CommandGroup | Container (Objeto) | Control (Objeto) | EditBox | Form | Grid | Header | Image | Label | Line | ListBox | OptionButton | OptionGroup | Page | PageFrame | Shape | Spinner | TextBox | ToolBar


MouseEnter (Evento)

Se produce cuando el puntero del ratón (ratón) pasa a estar sobre un control.

PROCEDURE Object.MouseEnter

 LPARAMETERS nButton, nShift, nXCoord, nYCoord

Parámetros

nButton
Contiene un número que especifica qué botón se presiona para desencadenar el evento: 1 (izquierdo), 2 (derecho) o 4 (central).
nShift
Contiene un número que especifica el estado de las teclas modificadoras cuando se hace clic con el ratón. Las teclas modificadoras válidas son MAYÚS, CTRL y ALT.

Los valores que se devuelven en nShift para las teclas modificadoras individuales se muestran en la siguiente tabla.

Valores de teclas modificadoras para nShift

Tecla de Windows | Valor
MAYÚS | 1
CTRL | 2
ALT | 4

Si se mantienen presionadas una o más teclas modificadoras mientras se hace clic con el ratón, el argumento nShift contiene la suma de los valores para las teclas modificadoras. Por ejemplo, si el usuario mantiene presionada la tecla CTRL mientras presiona el botón del ratón, el argumento nShift contiene 2. Pero si el usuario mantiene presionadas las teclas CTRL+ALT mientras presiona el botón del ratón, el argumento nShift contiene 6.

nXCoord, nYCoord
Contiene la posición horizontal (nXCoord) y vertical (nYCoord) actual del puntero del ratón en el formulario. Estas coordenadas siempre se expresan en términos del sistema especificado de coordenadas del Form y en la unidad de medida que establece el valor de la propiedad ScaleMode.

Observaciones

Puede utilizar este evento y el evento MouseLeave para crear comportamientos de RollOver y MouseOver, como los de DHTML.

Un control recibe un evento MouseEnter cuando el usuario mueve el puntero del ratón a un control desde una posición externa al control. Si los controles se solapan o se cruzan, el control de nivel superior en el orden z recibirá el evento.

Se pasa un evento MouseEnter a objetos de formularios o barras de herramientas. Los formularios y las barras de herramientas no recibirán este evento.

Vea también

MouseLeave (Evento) | Click (Evento) | DblClick (Evento) | MiddleClick (Evento) | MouseMove (Evento) | MousePointer (Propiedad) | MouseUp (Evento) | MouseWheel (Evento)

Se aplica a: CheckBox | OptionButton | OptionGroup | CommandButton | CommandGroup | ComboBox | ListBox | Grid | Header | Spinner | TextBox | EditBox | Label | Line | Container (Objeto) | Shape | Image | Page | PageFrame (Control)


MouseLeave (Evento)

Se produce cuando la posición del puntero del ratón (ratón) deja de estar sobre un control.

PROCEDURE Object.MouseLeave

 LPARAMETERS nButton, nShift, nXCoord, nYCoord

Parámetros

nButton
Contiene un número que especifica qué botón se presiona para desencadenar el evento: 1 (izquierdo), 2 (derecho) o 4 (central).
nShift
Contiene un número que especifica el estado de las teclas modificadoras cuando se hace clic con el ratón. Las teclas modificadoras válidas son MAYÚS, CTRL y ALT.

Los valores que se devuelven en nShift para las teclas modificadoras individuales se muestran en la siguiente tabla.

Valores de teclas modificadoras para nShift

Tecla de Windows | Valor
MAYÚS | 1
CTRL | 2
ALT | 4

Si se mantienen presionadas una o más teclas modificadoras mientras se hace clic con el ratón, el argumento nShift contiene la suma de los valores para las teclas modificadoras. Por ejemplo, si el usuario mantiene presionada la tecla CTRL mientras presiona el botón del ratón, el argumento nShift contiene 2. Pero si el usuario mantiene presionadas las teclas CTRL+ALT mientras presiona el botón del ratón, el argumento nShift contiene 6.

nXCoord, nYCoord
Contiene la posición horizontal (nXCoord) y vertical (nYCoord) actual del puntero del ratón en el formulario. Estas coordenadas siempre se expresan en términos del sistema especificado de coordenadas del Form y en la unidad de medida que establece el valor de la propiedad ScaleMode.

Observaciones

Puede utilizar este evento y el evento MouseEnter para crear comportamientos de RollOver y MouseOver, como los de DHTML.

Un control recibe un evento MouseLeave cuando el usuario mueve el puntero del ratón, que estaba sobre el control, de forma que deje de estar sobre el control. Si los controles se solapan o se cruzan, el control de nivel superior en el orden z recibirá el evento.

Se pasa un evento MouseLeave a objetos de formularios o barras de herramientas. Los formularios y las barras de herramientas no recibirán este evento.

Vea también

MouseEnter (Evento) | Click (Evento) | DblClick (Evento) | MiddleClick (Evento) | MouseMove (Evento) | MousePointer (Propiedad) | MouseUp (Evento) | MouseWheel (Evento)

Se aplica a: CheckBox | OptionButton | OptionGroup | CommandButton | CommandGroup | ComboBox | ListBox | Grid | Header | Spinner | TextBox | EditBox | Label | Line | Container (Objeto) | Shape | Image | Page | PageFrame (Control)


MouseMove (Evento)

Se produce cuando el usuario mueve el ratón sobre un objeto.

PROCEDURE Object.MouseMove

LPARAMETERS nButton, nShift, nXCoord, nYCoord

Parámetros

Hay que incluir una instrucción LPARAMETERS o PARAMETERS en el procedimiento de evento y especificar un nombre para cada parámetro. De lo contrario, se producirá un error. Visual FoxPro transfiere al evento MouseMove los parámetros en el orden siguiente:

nButton
Contiene un número que especifica qué botón del ratón se estaba presionando mientras se movía el ratón, como se describe en la siguiente tabla:

Valores de botón del mouse para nButton

Ventanas | Valor nButton
Botón izquierdo del ratón | 1
Botón derecho del ratón | 2
Botón medio del ratón | 4

Si se mantiene presionado más de un botón del ratón mientras se mueve el ratón, nButton contendrá la suma de los valores para los botones del ratón. Por ejemplo, si se presiona el botón derecho y el izquierdo del ratón, el valor de nButton será 3.

nShift
Contiene un número que especifica el estado de las teclas modificadoras cuando se mueve el ratón. En Visual FoxPro para Windows, las teclas modificadoras válidas son MAYÚS, CTRL y ALT.

Los valores que se devuelven en nShift para las teclas modificadoras individuales se muestran en la siguiente tabla.

Valores de teclas modificadoras para nShift

Tecla de Windows | Valor
MAYÚS | 1
CTRL | 2
ALT | 4

Si se mantienen presionadas una o más teclas modificadoras mientras se hace clic con el ratón, el argumento nShift contiene la suma de los valores para las teclas modificadoras. Por ejemplo, en Visual FoxPro para Windows, si el usuario mantiene presionada la tecla CTRL mientras presiona el botón del ratón, el argumento nShift contiene 2. Pero si el usuario mantiene presionadas las teclas CTRL+ALT a la vez que presiona el botón del ratón, el argumento nShift contiene 6.

nXCoord, nYCoord
Contiene la posición horizontal (nXCoord) y vertical (nYCoord) actual del puntero del ratón en el formulario. Estas coordenadas siempre se expresan en términos del sistema de coordenadas del formulario y en la unidad de medida establecida por el valor de la propiedad ScaleMode.

El evento MouseMove se desencadena continuamente cuando el puntero del ratón se mueve por los objetos.

Nota Es posible utilizar los eventos MouseDown y MouseUp para responder a los eventos ocasionados al presionar y soltar los botones del ratón. El parámetro nButton para MouseMove es distinto del parámetro nButton para MouseDown y MouseUp. Para MouseMove, el parámetro nButton indica el estado actual de todos los botones; un solo evento MouseMove puede indicar que se está presionando algunos, todos o ningún botón. Para MouseDown o MouseUp, el parámetro nButton indica exactamente un solo botón por evento. Se debe procurar no mover una ventana dentro de un procedimiento del evento MouseMove, ya que puede hacer que los eventos lleguen en cascada y se generen errores en tiempo de ejecución, tal como un desbordamiento de pila. Los eventos MouseMove se desencadenan cuando la ventana se mueve debajo del puntero. Se puede desencadenar un evento MouseMove incluso si el ratón está quieto.

Ver también

Click (Evento) | DblClick (Evento) | MiddleClick (Evento) | MousePointer (Propiedad) | MouseDown (Evento) | MouseUp (Evento) | MouseWheel (Evento)

Se aplica: CheckBox | Column | ComboBox | CommandButton | CommandGroup | Container (Objeto) | Control (Objeto) | EditBox | Form | Grid | Header | Image | Label | Line | ListBox | OptionButton | OptionGroup | Page | PageFrame | Shape | Spinner | TextBox | ToolBar


MouseUp (Evento)

Se produce cuando el usuario suelta un botón del ratón.

PROCEDURE Object.MouseUp

LPARAMETERS nButton, nShift, nXCoord, nYCoord

Parámetros

Es necesario incluir una instrucción LPARAMETERS o PARAMETERS en el procedimiento de evento y especificar un nombre para cada parámetro. De lo contrario, se producirá un error. Visual FoxPro transfiere al evento MouseUp los parámetros en el orden siguiente:

nButton
En Visual FoxPro para Windows, contiene un número que especifica qué botón se soltó y ocasionó el evento: 1 (izquierdo), 2 (derecho) y 4 (central).
nShift
Contiene un número que especifica el estado de las teclas modificadoras cuando se deja de presionar el ratón. En Visual FoxPro para Windows, las teclas modificadoras válidas son MAYÚS, CTRL y ALT.

Los valores que se devuelven en nShift para las teclas modificadoras individuales se muestran en la siguiente tabla.

Valores de teclas modificadoras para nShift

Tecla de Windows | Valor
MAYÚS | 1
CTRL | 2
ALT | 4

Si se mantiene presionada más de una tecla modificadora cuando se libera el ratón, el argumento nShift contendrá la suma de los valores para las teclas modificadoras. Por ejemplo, en Visual FoxPro para Windows, si el usuario mantiene presionada la tecla CTRL mientras suelta el botón del ratón, el argumento nShift contiene 2. Pero si el usuario mantiene presionadas las teclas CTRL+ALT a la vez que suelta el botón del ratón, el argumento nShift contiene 6.

nXCoord, nYCoord
Contiene la posición horizontal (nXCoord) y vertical (nYCoord) actual del puntero del ratón en el formulario. Estas coordenadas siempre se expresan en términos del sistema de coordenadas del formulario y en la unidad de medida especificada por la propiedad ScaleMode.

Observaciones

Es posible utilizar un procedimiento MouseUp para especificar acciones que se van a producir cuando se suelte un determinado botón del ratón. A diferencia de los eventos Click y DblClick, el evento MouseUp permite distinguir entre los botones izquierdo, derecho y central del ratón. También puede escribir código para combinaciones de ratón y teclado que utilicen los modificadores de teclado.

Se utiliza un procedimiento MouseMove para responder a un evento ocasionado por el movimiento del ratón.

Nota El argumento nButton de MouseDown y MouseUp difiere del argumento nButton utilizado para MouseMove. Para MouseDown o MouseUp, el argumento nButton indica exactamente un botón por evento; para MouseMove, indica el estado actual de todos los botones.

Ver también

Click (Evento) | DblClick (Evento) | MiddleClick (Evento) | MouseDown (Evento) | MouseMove (Evento) | MousePointer (Propiedad) | MouseWheel (Evento) | ScaleMode (Propiedad)

Se aplica: CheckBox | ComboBox | CommandButton | CommandGroup | Container (Objeto) | Control (Objeto) | EditBox | Form | Grid | Header | Image | Label | Line | ListBox | OptionButton | OptionGroup | Page | PageFrame | Shape | Spinner | TextBox | ToolBar


MouseWheel (Evento)

Tiene lugar cuando el usuario gira la rueda del ratón en un dispositivo ratón que tiene una rueda.

PROCEDURE Object.MouseWheel

LPARAMETERS nDirection, nShift, nXCoord, nYCoord

Parámetros

Es necesario incluir una instrucción LPARAMETERS o PARAMETERS en el procedimiento de evento y especificar un nombre para cada parámetro. De lo contrario, se producirá un error. Visual FoxPro transfiere al evento MouseWheel los parámetros en el orden siguiente:

nDirection
Contiene un número dependiente del dispositivo de ratón que indica la distancia que se gira la rueda del ratón. Un valor negativo indica que la rueda del ratón se ha girado hacia atrás; un valor positivo indica que la rueda del ratón se ha girado hacia adelante.
nShift
Contiene un número que especifica el estado de las teclas modificadoras cuando se gira la rueda del ratón. Las teclas modificadoras válidas son MAYÚS, CTRL y ALT.

Los valores que se devuelven en nShift para las teclas modificadoras individuales se muestran en la siguiente tabla.

Valor | Tecla
1 | MAYÚS
2 | CTRL
4 | ALT

Si se mantiene presionada más de una tecla modificadora mientras se gira la rueda del ratón, el argumento nShift contendrá la suma de los valores para las teclas modificadoras. Por ejemplo, si el usuario mantiene presionada la tecla CTRL a la vez que hace girar la rueda del ratón, el argumento nShift contendrá 2. Pero si el usuario mantiene presionadas las teclas CTRL+ALT mientras gira la rueda del ratón, el argumento nShift contendrá 6.

nXCoord, nYCoord
Contiene la posición horizontal (nXCoord) y vertical (nYCoord) actual del puntero del ratón en el formulario. Estas coordenadas siempre se expresan en términos del sistema de coordenadas del formulario y en la unidad de medida establecida por el valor de la propiedad ScaleMode.

Ver también

Click (Evento) | MiddleClick (Evento) | MousePointer (Propiedad) | MouseDown (Evento) | MouseUp (Evento)

Se aplica: CheckBox | Column | ComboBox | CommandButton | CommandGroup | Container (Objeto) | Control (Objeto) | EditBox | Form | Grid | Header | Image | Label | Line | ListBox | OptionButton | OptionGroup | Page | PageFrame | Shape | Spinner | TextBox | ToolBar


Moved (Evento)

Tiene lugar cuando se desplaza un objeto a una nueva posición o cuando se han modificado por programa los valores de las propiedades Top o Left de un objeto contenedor.

PROCEDURE Object.Moved

Observaciones

Se produce cuando se mueve un objeto a una nueva posición o cuando se han modificado los valores de las propiedades Top o Left en el código.

Vea también

ColumnOrder (Propiedad) | Left (Propiedad) | Top (Propiedad)

Se aplica a: Column | Container (Objeto) | Control (Objeto) | Form | Grid | OLE Bound (Control) | OLE Container (Control) | PageFrame | ToolBar


OLECompleteDrag (Evento)

Ocurre cuando se colocan los datos en el destino de colocación o cuando se cancela la operación OLE de arrastrar y soltar.

PROCEDURE Object.OLECompleteDrag LPARAMETERS nEffect

Valores de la propiedad

nEffect
Un valor que se pasa del evento OLEDragDrop, correspondiente a la acción realizada cuando se sueltan datos en el destino para colocar. La tabla siguiente muestra los valores de nEffect con una descripción de cada acción.
nEffect | Constante de Foxpro.h | Descripción
0 | DROPEFFECT_NONE | El destino para colocar no aceptó los datos o se canceló la operación soltar.
1 | DROPEFFECT_COPY | Los datos se copiaron del origen de arrastre al destino para colocar.
2 | DROPEFFECT_MOVE | Los datos se movieron del origen de arrastre al destino para colocar.
4 | DROPEFFECT_LINK | Los datos se vincularon del origen de arrastre al destino para colocar.

Observaciones

OLECompleteDrag es un evento de origen de arrastre y es el último evento que ocurre en una operación de arrastrar y soltar de OLE. Si incluye NODEFAULT evita que se elimine un texto al moverlo.

Este evento permite al origen de arrastre determinar la acción realizada en los datos en el destino para colocar. El destino para colocar puede establecer nEffect en su evento OLEDragDrop y el origen de arrastre puede realizar la acción apropiada según el valor de nEffect. Por ejemplo, si se movieron los datos al destino para colocar, el origen de arrastre debe quitar los datos.

Vea también

Técnica de arrastrar y soltar OLE | OLEDragDrop (Evento) | OLEDropMode (Propiedad) | NODEFAULT (Comando)

Se aplica: CheckBox | ComboBox | CommandButton | CommandGroup | Container (Objeto) | Control (Objeto) | EditBox | Form | Grid | Image | Label | Line | ListBox | OptionButton | OptionGroup | Page | PageFrame | Shape | Spinner | TextBox | ToolBar


OLEDragDrop (Evento)

Ocurre cuando se colocan datos en un destino de colocación y la propiedad OLEDropMode de este tiene el valor 1 – Activado.

PROCEDURE Object.OLEDragDrop LPARAMETERS oDataObject, nEffect, nButton, nShift,   nXCoord, nYCoord

Valores de la propiedad

oDataObject
Una referencia de objeto a un DataObject de arrastrar y soltar de OLE, utilizado con los métodos GetData y GetFormat para devolver datos y formatos de datos en el DataObject.
nEffect
Un valor pasado al evento OLECompleteDrag, que indica la acción realizada cuando se colocan datos en el destino para colocar. nEffect es inicialmente un valor que indica las operaciones arrastrar y soltar de OLE admitidas por el origen de arrastre. En el evento OLEDragDrop puede cambiar el valor de nEffect que se pasa al evento OLECompleteDrag. Si cambia el valor de nEffect, asegúrese de incluir NODEFAULT en el código de evento para evitar el comportamiento predeterminado. La tabla siguiente muestra los valores de nEffect que puede pasar al evento OLECompleteDrag con una descripción de cada acción.
nEffect | Constante de Foxpro.h | Descripción
0 | DROPEFFECT_NONE | El destino para colocar no aceptó los datos o se canceló la operación soltar.
1 | DROPEFFECT_COPY | Los datos se copiaron del origen de arrastre al destino para colocar.
2 | DROPEFFECT_MOVE | Los datos se movieron del origen de arrastre al destino para colocar.
4 | DROPEFFECT_LINK | Los datos se vincularon del origen de arrastre al destino para colocar.
nButton
Contiene un número que especifica que botón del ratón se ha liberado para soltar los datos en el destino: 1 (primario), 2 (secundario) o 4 (central).
nShift
Contiene un número que especifica el estado de las teclas modificadoras cuando se libera el botón del ratón para soltar los datos en el destino para colocar. Las teclas modificadoras válidas son MAYÚS, CTRL y ALT. Los valores que se devuelven en nShift para las teclas modificadoras individuales se muestran en la siguiente tabla.
nShift | Tecla modificadora
1 | MAYÚS
2 | CTRL
4 | ALT

Si se mantienen presionadas una o más teclas modificadoras mientras se hace clic con el ratón, el argumento nShift contiene la suma de los valores para las teclas modificadoras. Por ejemplo, si el usuario presiona CTRL mientras libera el botón del ratón, el argumento nShift contiene 2. Pero si presiona CTRL+ALT mientras libera el botón del ratón, el argumento nShift contiene 6.

nXCoord, nYCoord
Contiene la posición horizontal (nXCoord) y vertical (nYCoord) del puntero del ratón en el formulario cuando se libera el botón del ratón para colocar datos en el destino para colocar. Estas coordenadas se expresan en términos del sistema de coordenadas del formulario en la unidad de medida especificada por la propiedad ScaleMode del formulario.

Observaciones

OLEDragDrop es un evento del destino para colocar que sólo se produce cuando la propiedad OLEDropMode del control u objeto está establecida a 1 – Habilitado. Este evento no ocurre si la propiedad OLEDropMode está establecida a 0 – Deshabilitado o a 2 – Pasar al contenedor.

Si realiza su propio proceso de soltar en el evento OleDragDrop, incluya NODEFAULT para evitar que se produzca la operación colocar predeterminada. En este caso, debe establece el valor resultante de nEffect.

Vea también

Técnica de arrastrar y soltar OLE | OLECompleteDrag (Evento) | OLEDropMode (Propiedad) | NODEFAULT (Comando)

Se aplica: CheckBox | ComboBox | CommandButton | CommandGroup | Container (Objeto) | Control (Objeto) | EditBox | Form | Grid | Image | Label | Line | ListBox | OptionButton | OptionGroup | Page | PageFrame | ProjectHook (Objeto) | Shape | Spinner | TextBox | ToolBar


OLEDragOver (Evento)

Ocurre cuando se arrastran datos a un destino de colocación y la propiedad OLEDropMode de este tiene el valor 1 – Activado.

PROCEDURE Object.OLEDragOver LPARAMETERS oDataObject, nEffect, nButton, nShift,   nXCoord, nYCoord, nState

Valores de la propiedad

oDataObject
Una referencia de objeto a un DataObject de arrastrar y soltar de OLE, utilizado con los métodos GetData y GetFormat para devolver datos y formatos de datos en el DataObject.
nEffect
Un valor pasado al evento OLEGiveFeedback, que indica la acción realizada si los datos se sueltan en el destino para colocar. nEffect es inicialmente un valor que indica las operaciones arrastrar y soltar de OLE admitidas por el origen de arrastre. La tabla siguiente muestra los valores de nEffect con una descripción de cada acción.
nEffect | Constante de Foxpro.h | Descripción
0 | DROPEFFECT_NONE | El destino para colocar no acepta los datos o se ha cancelado la operación soltar.
1 | DROPEFFECT_COPY | Los datos se copian del origen de arrastre al destino para colocar.
2 | DROPEFFECT_MOVE | Se han movido datos del origen de arrastre al destino para colocar.
4 | DROPEFFECT_LINK | Se han vinculado datos del origen de arrastre al destino para colocar.
nButton
Contiene un número que especifica que botón del ratón está presionado cuando se arrastran datos sobre un destino para colocar: 1 (primario), 2 (secundario) o 4 (central).
nShift
Contiene un número que especifica el estado de las teclas modificadoras cuando se arrastran datos sobre un destino para colocar. Las teclas modificadoras válidas son MAYÚS, CTRL y ALT. Los valores que se devuelven en nShift para las teclas modificadoras individuales se muestran en la siguiente tabla.
nShift | Tecla modificadora
1 | MAYÚS
2 | CTRL
4 | ALT

Si se mantienen presionadas una o más teclas modificadoras mientras se hace clic con el ratón, el argumento nShift contiene la suma de los valores para las teclas modificadoras. Por ejemplo, si el usuario presiona CTRL mientras libera el botón del ratón, el argumento nShift contiene 2. Pero si el usuario presiona CTRL+ALT mientras libera el botón del ratón, el argumento nShift contiene 6.

nXCoord, nYCoord
Contiene la posición horizontal (nXCoord) y vertical (nYCoord) del puntero del ratón en el formulario cuando se arrastran datos sobre un destino para colocar. Estas coordenadas se expresan en términos del sistema de coordenadas del formulario en la unidad de medida especificada por la propiedad ScaleMode del formulario.
nState
Contiene un número que especifica la dirección en que se arrastran los datos (al control u objeto, dentro del control u objeto o fuera del control u objeto). Los valores de nState se muestran en la tabla siguiente.
nState | Descripción
0 | Se arrastran datos al control u objeto. Las propiedades OLEDropEffects y OLEDropHasData se pueden establecer cuando nState vale cero.
1 | Se arrastran datos fuera del control u objeto.
2 | Se arrastran datos dentro del control u objeto.

Observaciones

OLEDragOver es un evento de destino para colocar que sólo ocurre cuando la propiedad OLEDropMode para el control u objeto está establecida a 1 – Habilitado. Este evento no ocurre si la propiedad OLEDropMode está establecida a 0 – Deshabilitado o a 2 – Pasar al contenedor.

Observe que debe evitar crear estados de espera en el evento OLEDragOver con comandos y funciones como WAIT WINDOW y MESSAGEBOX( ).

Vea también

Técnica de arrastrar y soltar OLE | OLEGiveFeedback (Evento) | OLEDropEffects (Propiedad) | OLEDropHasData (Propiedad) | OLEDropMode (Propiedad)

Se aplica: CheckBox | ComboBox | CommandButton | CommandGroup | Container (Objeto) | Control (Objeto) | EditBox | Form | Grid | Image | Label | Line | ListBox | OptionButton | OptionGroup | Page | PageFrame | ProjectHook (Objeto) | Shape | Spinner | TextBox | ToolBar


OLEGiveFeedback (Evento)

Ocurre después de cada evento OLEDragOver. Permite arrastrar la fuente para especificar el tipo de operación OLE arrastrar y soltar, además de la retroalimentación visual.

PROCEDURE Object.OLEGiveFeedback LPARAMETERS nEffect, eMouseCursor

Valores de la propiedad

nEffect
Es la acción que se desarrolla cuando se deja un dato en el objetivo mediante la operación arrastrar y soltar. El valor de nEffect es determinado por el objetivo a soltar el evento OLEDragOver del mismo. La siguiente tabla muestra los valores para nEffect con la descripción de cada acción.
nEffect | Constante de Foxpro.h | Descripción
0 | DROPEFFECT_NONE | El destino para colocar no acepta los datos.
1 | DROPEFFECT_COPY | La operación soltar resulta en una copia.
2 | DROPEFFECT_MOVE | La operación soltar resulta en una operación mover.
4 | DROPEFFECT_LINK | La operación soltar resulta en un vínculo.
eMouseCursor
Especifica el puntero del ratón mostrado durante la operación arrastrar y soltar de OLE. eMouseCursor puede ser un valor de tipo carácter o numérico. eMouseCursor es un parámetro de salida y se establece a cero al iniciar el evento.

Si eMouseCursor es un valor de tipo carácter, se supone que el valor de tipo carácter es el nombre de un archivo de gráficos del tipo .ani, .cur o .ico. Si eMouseCursor es un valor de tipo numérico, el valor especifica el puntero del ratón mostrado. La tabla siguiente muestra los valores numéricos para eMouseCursor con una descripción de cada puntero del ratón.

eMouseCursor | Constante de Foxpro.h | Descripción
0 | MOUSE_DEFAULT | Forma determinada por el objeto. (Predeterminado)
1 | MOUSE_ARROW | Flecha.
2 | MOUSE_CROSSHAIR | Cross. Puntero cross-hair.
3 | MOUSE_IBEAM | Cursor en forma de I.
4 | MOUSE_ICON_POINTER | Icon. Pequeño cuadro blanco dentro de un cuadro negro.
5 | MOUSE_SIZE_POINTER | Size. Puntero de cuatro flechas que apuntan a Norte, Sur, Este y Oeste.
6 | MOUSE_SIZE_NE_SW | Size NE SW. Puntero doble flecha apuntando a Nor-Este y Sud-Oeste.
7 | MOUSE_SIZE_N_S | Size NS. Puntero doble flecha apuntando a norte y sur.
8 | MOUSE_SIZE_NW_SE | Size NW SE. Puntero doble flecha apuntando a Nor-Oeste y Sud-Este.
9 | MOUSE_W_E | Size WE. Puntero doble flecha apuntando a Este y Oeste.
10 | MOUSE_UP_ARROW | Flecha arriba.
11 | MOUSE_HOURGLASS | Reloj de arena.
12 | MOUSE_NO_DROP | Sin colocación.
13 | MOUSE_HIDE_POINTER | Puntero oculto.
14 | MOUSE_ARROW2 | Flecha.
15 | MOUSE_ARROW_HOURGLASS | Flecha y reloj de arena.
16 | MOUSE_ARROW_QUESTION | Flecha y marca de interrogación.

Observaciones

OLEGiveFeedback es un evento de arrastra la fuente que permite mostrar información al usuario. Puede cambiar la forma del cursor del ratón para indicar la operación que ocurre cuando el ratón es posicionado sobre fuente de arrastrar o en el objetivo a colocar en una operación arrastrar y soltar. El incluir NODEFAULT no tiene efecto alguno en el comportamiento de este método.

Tenga en cuenta que se pueden crear instancias de espera en el evento OLEGiveFeedback con comandos y funciones tales como WAIT WINDOW y MESSAGEBOX( ).

Vea también

Técnica de arrastrar y soltar OLE | OLEDragOver (Evento)| NODEFAULT (Comando)

Se aplica: CheckBox | ComboBox | CommandButton | CommandGroup | Container (Objeto) | Control (Objeto) | EditBox | Form | Grid | Image | Label | Line | ListBox | OptionButton | OptionGroup | Page | PageFrame | ProjectHook (Objeto) | Shape | Spinner | TextBox | ToolBar

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico"..

© 1992 - 2003 Microsoft Corporation. Todos los derechos reservados.

Traducido al Español por el grupo de traductores de PortalFox.

Envíe un informe sobre errores en la traducción de este tema

NOTA PARA EL REVISOR: He colocado la expresion 'arrastra y colocar' porque estaba traducida previamente asi, aunque a mi me gusta mas 'arrastrar y soltar', no se si esta bien o en el documento en la Version 7 estaba traducido de esa manera. Enrique


OLESetData (Evento)

Se produce en un origen de arrastre cuando un destino para colocar llama al método GetData.

PROCEDURE Object.OLESetData LPARAMETERS oDataObject, eFormat

Valores de la propiedad

oDataObject
Una referencia de objeto a un DataObject con arrastrar y soltar de OLE, utilizado con el método SetData para colocar datos en el DataObject.
eFormat
Un valor de tipo numérico o carácter que indica el formato de los datos que solicita el método GetData. El origen de arrastre utiliza este valor para determinar el formato de los datos que se van a colocar en el DataObject. Vea el GetData (Método) para obtener una tabla que muestra los valores de tipo numérico o carácter para cada formato de datos y una descripción de cada formato.

OLESetData es un evento de origen de arrastre. Si incluye NODEFAULT no tiene ningún efecto sobre el comportamiento de este método.

El evento OLESetData se produce cuando se desencadena el método GetData. En el evento OLESetData puede colocar datos en el DataObject en el formato especificado con el método SetData. Esta técnica se llama "presentación con retraso" y le permite colocar datos en el DataObject únicamente cuando se solicitan.

Vea también

GetData (Método) | Técnica de arrastrar y soltar OLE | OLESetData (Evento) | SetData (Método) | NODEFAULT (Comando)

Se aplica: CheckBox | ComboBox | CommandButton | CommandGroup | Container (Objeto) | Control (Objeto) | EditBox | Form | Grid | Image | Label | Line | ListBox | OptionButton | OptionGroup | Page | PageFrame | Shape | Spinner | TextBox | ToolBar


OLEStartDrag (Evento)

Ocurre cuando se llama al método OLEDrag.

PROCEDURE Object.OLEStartDrag LPARAMETERS oDataObject, nEffect

Valores de la propiedad

oDataObject
Una referencia de objeto a un DataObject de arrastrar y soltar OLE. Pude llamar a cualquier de los métodos de DataObject desde el evento OLEStartDrag.
nEffect
Las operaciones de arrastre de OLE admitidas por el origen de arrastre. La tabla siguiente muestra los valores de nEffect con una descripción de cada acción. nEffect es un parámetro de salida y se establece a 3 en el inicio del evento, por lo que debe proporcionar el valor para nEffect en este evento. Por ejemplo, para permitir sólo operaciones de copia, establezca nEffect a 1 (DROPEFFECT_COPY).
nEffect | Constante de Foxpro.h | Descripción
0 | DROPEFFECT_NONE | El origen de arrastre no admite ninguna operación de arrastre.
1 | DROPEFFECT_COPY | El origen de arrastre admite operaciones de copia.
2 | DROPEFFECT_MOVE | El origen de arrastre admite operaciones Mover (el valor predeterminado).
4 | DROPEFFECT_LINK | El origen de arrastre admite operaciones de vínculo.

Un origen de arrastre admite múltiples operaciones de arrastre al agregar múltiples valores para nEffect. Por ejemplo, si nEffect es 3, el origen de arrastre admite operaciones copiar y mover (3 = 1 (copiar) + 2 (mover)).

Observaciones

OLEStartDrag es un evento de origen de arrastre. Si incluye NODEFAULT no tiene ningún efecto sobre el comportamiento de este método.

Vea también

Técnica de arrastrar y soltar OLE | OLEDrag (Método) | OLEDragMode (Propiedad) | NODEFAULT (Comando)

Se aplica: CheckBox | ComboBox | CommandButton | CommandGroup | Container (Objeto) | Control (Objeto) | EditBox | Form | Grid | Image | Label | Line | ListBox | OptionButton | OptionGroup | Page | PageFrame | Shape | Spinner | TextBox | ToolBar


OnMoveItem (evento)

Ocurre cuando se selecciona y mueve un elemento hacia arriba o hacia abajo en un Cuadro de lista utilizando el ratón, teclado o programando con el método MoveItem.

PROCEDURE OnMoveItem LPARAMETERS nSource, nShift, nCurrentIndex, nMoveBy

Parámetros

nSource
Contiene un número que especifica cómo es activado el evento.
nSource | Descripción
0 | Teclado
1 | Botón izquierdo del ratón
2 | Botón derecho del ratón
4 | Botón central del ratón
8 | Activado por programa con el método MoveItem
nShift
Contiene un número que especifica cual de las teclas modificadoras SHIFT, CTRL y ALT fue presionada juntamente con el botón del ratón. La siguiente tabla muestra los valores de retorno de nShift para cada tecla individual.
nShift | Descripción
1 | SHIFT
2 | CTRL
4 | ALT

Si más de una tecla ha sido pulsada cuando el botón del ratón también está presionado, nShift contendrá la suma de los valores de las teclas presionadas. Ejemplo, si se presiona y mantiene CTRL mientras se está presionando un botón del ratón, nShift contendrá el valor de 2. Por consiguiente, si el usuario presiona y mantiene CTRL+ALT mientras presiona un botón del ratón, nShift contendrá el valor de 6.

nCurrentIndex
Contiene el índice actual de los elementos que están siendo movidos.
nMoveBy
Indica cuantas posiciones ha sido movido el elemento. Un valor positivo indica movimiento hacia abajo. Un número negativo indica movimiento hacia arriba.

El parámetro nMoveBy siembre valdrá 1 o -1 si el usuario está moviendo un elemento de la lista utilizando para ello el teclado. Habitualmente tiene un valor de 1 o -1 si el usuario esta moviendo un elemento de una lista utilizando el ratón. Sin embargo, nMoveBy indica la posición a la cual el elemento es movido si el usuario mueve con el ratón fuera de los límites del Cuadro de lista y luego regresa a una posición remota.

Observaciones

OnMoveItem ocurre después de seleccionar y mover un elemento presionando CTRL+UP ARROW, CTRL+DOWN ARROW o utilizando el ratón o cuando se llama al método MoveItem programáticamente. OnMoveItem ocurre después de cada movimiento subsiguiente pero antes que el Cuadro de lista muestre el movimiento del elemento. No obstante, OnMoveItem ocurre solamente una vez cuando es llamado por programa desde el método MoveItem.

Nota Se pueden mover los elementos del control ListBox solamente si la propiedad de la cuadrícula RecordSourceType está configurada en 0 (Nada) o 1 (Valor).

Para impedir que el movimiento ocurra y devuelva Falso (.F.) desde el código en el Evento OnMoveItem.

Vea también

Eventos | MoveItem (Metodo) | RecordSourceType (Propiedad) | MoverBars (Propiedad)

Se aplica a: Control ListBox


Paint (Evento)

Se produce cuando se vuelve a dibujar un formulario o una barra de herramientas.

PROCEDURE Object.Paint

Observaciones

Un formulario o una barra de herramientas se vuelve a dibujar cuando se expone parte o todo el formulario o la barra de herramientas, después de moverse o cambiarse de tamaño, o después de mover una ventana que estaba cubriendo el formulario o la barra de herramientas.

Si utiliza un método Refresh en un evento Resize se volverá a dibujar todo el objeto cada vez que un usuario cambie el tamaño del formulario o de la barra de herramientas.

Si utiliza un evento Paint para determinadas tareas, puede producirse un evento en cascada. En general, evite utilizar un evento Paint para lo siguiente:

  • Mover o cambiar el tamaño de un formulario o un control.
  • Cambiar variables que afecten al tamaño o la apariencia, como la propiedad BackColor de un objeto.
  • Llamar al método Refresh.
    Nota El evento Resize puede ser más adecuado para algunas de estas tareas.

Vea también

Circle (Método) | ClipControls (Propiedad) | Line (Método) | Print (Método) | PSet (Método) | Refresh (Método) | Resize (Evento)

Se aplica a: Form | ToolBar


ProgrammaticChange (Evento)

Se produce cuando se cambia el valor de un control en el código.

PROCEDURE Control.ProgrammaticChange

Observaciones

Si se establecen las propiedades Selected o SelectedID de un control Listbox, se desencadenará el evento Programmatic Change cuando se establezcan las propiedades ListItem o ListItemID.

Vea también

InteractiveChange (Evento) | Value (Propiedad)

Se aplica a: CheckBox | ComboBox | CommandGroup | EditBox | ListBox | OptionGroup | Spinner | TextBox


QueryAddFile (Evento)

Se produce justo antes de que se agregue un archivo a un proyecto.

PROCEDURE Object.QueryAddFile LPARAMETERS cFileName

Parámetros

cFileName
Contiene el nombre del archivo que va a agregar al proyecto. cFileName se pasa al evento QueryAddFile después de ejecutar el método Add, de seleccionar Agregar en el Administrador de proyectos o de seleccionar Agregar archivo en el menú Proyecto.

Observaciones

Incluya NODEFAULT en el evento QueryAddFile para impedir que se agregue un archivo al proyecto.

Vea también

Add (Método) | QueryModifyFile (Evento) | QueryRemoveFile (Evento) | QueryRunFile (Evento) | QueryNewFile (Evento) | NODEFAULT (Comando)

Se aplica a: ProjectHook (Objeto)


QueryModifyFile (Evento)

Se produce justo antes de que se modifique un archivo en un proyecto.

PROCEDURE Object.QueryModifyFile LPARAMETERS oFile, cClassName

Parámetros

oFile
Contiene una referencia de objeto al archivo que desea modificar. oFile se pasa al evento QueryModifyFile después de ejecutar el método Modify, de seleccionar Modificar en el Administrador de proyectos o de seleccionar Modificar archivo en el menú Proyecto.
cClassName
Contiene el nombre de la clase que se va a modificar si el archivo es una biblioteca de clases visuales .vcx.

Observaciones

Debe incluir NODEFAULT en el evento QueryModifyFile para evitar que se modifique un archivo en el proyecto.

Vea también

Modify (Método) | QueryAddFile (Evento) | QueryRemoveFile (Evento) | QueryRunFile (Evento) | QueryNewFile (Evento) | NODEFAULT (Comando)

Se aplica a: ProjectHook (Objeto)


QueryNewFile (Evento)

Se produce cuando se presiona el botón Nuevo en el Administrador de proyectos, justo antes de agregar un archivo a un proyecto.

PROCEDURE Object.QueryNewFile LPARAMETERS cFileType

Parámetros

cFileType
Especifica el tipo de archivo seleccionado en el Administrador de proyectos al presionar el botón Nuevo. Este valor coincide con el de la propiedad Type del objeto File.

El evento QueryNewFile también es compatible con los elementos del contenedor de base de datos (un caso especial) a través de los siguientes valores de cFileType.

Valor | Constante FoxPro.H | Tipo de archivo | Extensión
d | FILETYPE_DATABASE | Base de datos | .dbc
D | FILETYPE_FREETABLE | Tabla libre | .dbf
Q | FILETYPE_QUERY | Consulta | .qpr
K | FILETYPE_FORM | Formulario | .scx
R | FILETYPE_REPORT | Informe | .frx
B | FILETYPE_LABEL | Etiqueta | .lbx
V | FILETYPE_CLASSLIB | Biblioteca de clases visuales | .vcx
P | FILETYPE_PROGRAM | Programa | .prg
M | FILETYPE_MENU | Menú | .mnx
T | FILETYPE_TEXT | Archivo de texto | variable

La tabla siguiente describe los valores de cFileType para elementos específicos del contenedor DBC. Salvo por la tabla de DBC que agrega una tabla al proyecto, estos elementos sólo afectan al DBC.

Valor | Tipo de DBC | Extensión
p | Procedimiento almacenado
t | Tabla de DBC | .dbf
c | Conexión
r | Vista remota
l | Vista local

Observaciones

Cuando se agregan bibliotecas de Visual FoxPro (archivos .FLL) y aplicaciones (archivos .APP), no se llama al evento QueryNewFile.
Como este evento no agrega directamente archivos al proyecto, si desea agregar otros archivos cuando se llame a QueryNewFile, deberá hacerlo explícitamente por medio de programación, con el método Add de la colección Files de los objetos Project. Por ejemplo, podría hacer esto si desea que el evento QueryNewFile llame a un asistente que creó al agregar un archivo nuevo de un tipo específico.

Ejemplo

     _VFP.ActiveProject.Files.Add(mynewfile)

Vea también

File (Objeto) | Type | Project (Objeto) | QueryAddFile (Evento) | QueryModifyFile (Evento) | QueryRemoveFile (Evento) | QueryRunFile (Evento)


QueryRemoveFile (Evento)

Se produce justo antes de que se elimine un archivo de un proyecto.

PROCEDURE Object.QueryRemoveFile LPARAMETERS oFile, cClassName, lDeleteFile

Parámetros

oFile
Contiene una referencia de objeto al archivo que se va a quitar del proyecto. oFile se pasa al evento QueryRemoveFile después de ejecutar el método Remove, de seleccionar Quitar en el Administrador de proyectos o de seleccionar Quitar archivo en el menú Proyecto.
cClassName
Contiene el nombre de la clase que se va a quitar si el archivo es una biblioteca de clases visuales .vcx.
lDeleteFile
Contiene un valor lógico que indica si se va a eliminar del disco el archivo además del proyecto. lDeleteFile contiene falso (.F.) si se elige Remove (quitar del proyecto) en el cuadro de diálogo que se muestra al intentar quitar un archivo de un proyecto. lDeleteFile contiene verdadero (.T.) si se elige Delete (quitar del proyecto y eliminar del disco) en el cuadro de diálogo.

Observaciones

Debe incluir NODEFAULT en el evento QueryRemoveFile para evitar que se quite un archivo del proyecto.

Vea también

QueryAddFile (Evento) | QueryModifyFile (Evento) | QueryRunFile (Evento) | QueryNewFile (Evento) | Remove Method (Objeto File) | NODEFAULT (Comando)

Se aplica a: ProjectHook (Objeto)


QueryRunFile (Evento)

Se produce justo antes de que se ejecute un archivo, o de que se realice una vista previa de un informe o una etiqueta en un proyecto.

PROCEDURE Object.QueryRunFile LPARAMETERS oFile

Parámetros

oFile
Contiene una referencia de objeto al archivo que se va a ejecutar o del que se desea a obtener una vista previa. oFile se pasa al evento QueryRunFile después de ejecutar el método Run, de seleccionar Ejecutar o Vista previa en el Administrador de proyectos, o de seleccionar Ejecutar archivo o Vista previa de archivo en el menú Proyecto.

Observaciones

Debe incluir NODEFAULT en el evento QueryRunFile para evitar que se ejecute o se muestre una vista previa de un archivo.

Vea también

QueryAddFile (Evento) | QueryModifyFile (Evento) | QueryRemoveFile (Evento) | QueryNewFile (Evento) | Run (Método) | NODEFAULT (Comando)

Se aplica a: ProjectHook (Objeto)


QueryUnload (Evento)

Se produce antes de descargar un formulario.

PROCEDURE Form.QueryUnload

Observaciones

El evento QueryUnload se produce antes del evento Destroy. La propiedad ReleaseType se establece antes del evento QueryUnload que se está llamando.

El evento QueryUnload se produce cuando se ejecuta CLEAR WINDOWS, RELEASE WINDOWS o QUIT en el código, cuando el usuario hace doble clic en el icono de menú contextual de la ventana o cuando el usuario elige Cerrar en el menú contextual de la ventana de un formulario.

Nota El evento QueryUnload no se produce cuando se ejecuta el comando RELEASE para el formulario en el código, ni cuando se invoca el método Release del formulario.

Al ejecutar NODEFAULT en el procedimiento de evento QueryUnload se impide la descarga del formulario.

Vea también

CLEAR | ControlBox (Propiedad) | DEFINE CLASS | Destroy (Evento) | QUIT | RELEASE | Release (Método) | RELEASE WINDOWS | ReleaseType (Propiedad) | Unload (Evento) | Closable (Propiedad) | NODEFAULT (Comando)

Se aplica a: Form


RangeHigh (Evento)

En el caso de un cuadro de texto o de un control numérico, tiene lugar cuando el control pierde el enfoque. En el caso de un cuadro combinado o un cuadro de lista, tiene lugar cuando el control recibe el enfoque.

PROCEDURE Objeto.RangeHigh

Observaciones

Un evento RangeHigh puede devolver un valor numérico a Microsoft Visual FoxPro a través de una instrucción RETURN. En el caso de un control numérico o de un cuadro de texto con un valor numérico, si el valor devuelto a Visual FoxPro es menor que el valor escrito en el control, el enfoque permanecerá en el control. En el caso de un cuadro combinado o de lista, el valor devuelto a Visual FoxPro especifica qué elemento del control se selecciona inicialmente. Por ejemplo, si se devuelve 2 a Visual FoxPro, se seleccionará inicialmente el segundo elemento del control.

Vea también

KeyboardHighValue, KeyboardLowValue (Propiedades) | RangeLow (Evento) | RETURN | SpinnerHighValue, SpinnerLowValue (Propiedades)

Se aplica a: ComboBox | ListBox | Spinner | TextBox

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


RangeLow (Evento)

En el caso de un cuadro de texto o de un control numérico, tiene lugar cuando el control pierde el enfoque. En el caso de un cuadro combinado o un cuadro de lista, tiene lugar cuando el control recibe el enfoque.

PROCEDURE Objeto.RangeLow

Observaciones

Un evento RangeLow puede devolver un valor numérico a Visual FoxPro a través de una instrucción RETURN. En el caso de un control numérico o de un cuadro de texto con un valor numérico, si el valor devuelto a Visual FoxPro es mayor que el valor escrito en el control, el control mantendrá el enfoque. En el caso de un cuadro combinado o de lista, el valor devuelto a Visual FoxPro especifica qué elemento del control se selecciona inicialmente. Por ejemplo, si se devuelve 2 a Visual FoxPro, se seleccionará inicialmente el segundo elemento del control.

Vea también

KeyboardHighValue, KeyboardLowValue (Propiedades) | RangeHigh (Evento) | RETURN | SpinnerHighValue, SpinnerLowValue (Propiedades)

Se aplica a: ComboBox | ListBox | Spinner | TextBox

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


ReadActivate (Evento)

Se incluye por compatibilidad con versiones anteriores de READ. Utilice el Diseñador de formularios en lugar de READ.


ReadDeactivate (Evento)

Se incluye por compatibilidad con versiones anteriores de READ. Utilice el Diseñador de formularios en lugar de READ.


ReadShow (Evento)

Se incluye por compatibilidad con versiones anteriores de READ. Utilice el Diseñador de formularios en lugar de READ.


ReadValid (Evento)

Se incluye por compatibilidad con versiones anteriores de READ. Utilice el Diseñador de formularios en lugar de READ.


ReadWhen (Evento)

Se incluye por compatibilidad con versiones anteriores de READ. Utilice el Diseñador de formularios en lugar de READ.


Resize (Evento)

Ocurre cuando se cambia el tamaño de un objeto.

PROCEDURE Object.Resize

Observaciones

Resize se puede desencadenar interactivamente o por código estableciendo las propiedades Height y Width.

Para un objeto Column, se puede desencadenar Resize por código estableciendo la propiedad Width para la columna.

También puede desencadenar el evento Resize usando un enlace al evento. Para mayor información, vea Enlace de Eventos para objetos de Visual FoxPro y BINDEVENT( ) (Función).

Vea también

Height (Propiedad) | Paint (Evento) | Width (Propiedad) | BINDEVENT( ) (Función)

Se aplica a: _SCREEN (Variable del sistema) | Column | Container (Objeto) | Control (Objeto) | Form | Grid | OLE Bound (Control) | OLE Container (Control) | PageFrame | ToolBar


RightClick (Evento)

Ocurre cuando el usuario hace clic con el botón secundario del ratón en un control de Microsoft Windows.

PROCEDURE Control.RightClick

Vea también

Click (Evento) | DblClick (Evento) | DragDrop (Evento) | DragOver (Evento) | DropDown (Evento) | Enabled (Propiedad) | KeyPress (Evento) | MouseDown (Evento) | MouseMove (Evento) | MouseUp (Evento) | Scrolled (Evento) | Undock (Evento)

Se aplica a: CheckBox | ComboBox | CommandButton | CommandGroup | Container | Control | EditBox | Form | Grid | Header | Image | Label | Line | ListBox | OptionButton | OptionGroup | Page | PageFrame | Shape | Spinner | TextBox | ToolBar


Scrolled (Evento)

Ocurre en un control cuadrícula o en un formulario al hacer clic en las barras de desplazamiento horizontal o vertical, o al mover un cuadro de desplazamiento.

PROCEDURE Objeto.Scrolled
LPARAMETERS nDirección

Parámetros

nDirección
Especifica cómo se desplaza un usuario por el contenido de un control cuadrícula o un formulario. Los valores posibles son:
Valor | Desplazamiento utilizado por el usuario…
0 | Flecha arriba en la barra de desplazamiento vertical
1 | Flecha abajo en la barra de desplazamiento vertical
2 | Barra de desplazamiento vertical en el área sobre el cuadro de desplazamiento
3 | Barra de desplazamiento vertical en el área bajo el cuadro de desplazamiento
4 | Flecha izquierda en la barra de desplazamiento horizontal
5 | Flecha derecha en la barra de desplazamiento horizontal
6 | Barra de desplazamiento horizontal en el área a la izquierda del cuadro de desplazamiento
7 | Barra de desplazamiento horizontal en el área a la derecha del cuadro de desplazamiento

Observaciones

El evento Scrolled también se produce para una cuadrícula si llama al método DoScroll desde un programa. La propiedad Scrollbars determina si un formulario tiene barras de desplazamiento.

Evite crear estados de espera (por ejemplo, WAIT WINDOW) en el evento Scrolled porque se pueden producir problemas de dibujo al desplazarse por la cuadrícula o el formulario.

El evento Scrolled no se activa como consecuencia de pulsar las flechas del teclado.

Vea también

ActiveColumn (Propiedad) | ActiveRow (Propiedad) | DoScroll (Método) | RelativeColumn (Propiedad) | RelativeRow (Propiedad) | ScrollBars (Propiedad)

Se aplica a: Form | Grid

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Timer (Evento)

Ocurre cuando ha transcurrido el número de milisegundos especificado en la propiedad Interval.

PROCEDURE Timer.Timer

Vea también

Interval (Propiedad) | Reset (Método)

Se aplica a: Timer


UIEnable (Evento)

Tiene lugar para todos los objetos que se encuentran dentro de una página, siempre que se activa o desactiva la página.

PROCEDURE Object.UIEnable

LPARAMETERS lEnable

Parámetros

lEnable
Contiene un valor lógico que especifica si la página en la que está el objeto se va a activar o desactivar. Si lEnable es verdadero (.T.), la página en la que se encuentra el objeto se activará (se convertirá en la página activa). Si lEnable es falso (.F.), la página se desactivará (se convertirá en la página inactiva).

Observaciones

Use el evento UIEnable para especificar cualquier acción que desea que ocurra para un objeto o control cuando se active o desactive la página en la que se encuentra.

El evento UIEnable no se aplica a las páginas cuando se ha activado inicialmente el formulario. El evento UIEnable solo se aplica cuando se ha activado o desactivado una página de forma interactiva o mediante programación.

Vea también

Activate (Evento) | Deactivate (Evento)

Se aplica a: CheckBox | ComboBox | CommandButton | CommandGroup | Container (Objeto) | Control (Objeto) | EditBox | Grid | Image | Label | Line | ListBox | OLE Bound (Control) | OLE Container (Control) | OptionGroup | PageFrame | Shape | Spinner | TextBox


UnDock (Evento)

Ocurre cuando se arrastra la barra de herramientas desde su posición acoplada.

PROCEDURE ToolBar.Undock

Vea también

AfterDock (Evento) | BeforeDock (Evento) | Dock (Método)

Se aplica a: ToolBar


Unload (Evento)

Se produce cuando se libera una instancia de un objeto.

Unload es el último evento que tiene lugar antes de que se libere un conjunto de formularios o un formulario.

PROCEDURE Object.Unload

Observaciones

Unload tiene lugar después del evento Destroy y tras liberar todos los objetos contenidos. Además, Unload ocurre dependiendo del tipo de objeto:

  • Los objetos Form se liberan en el código cuando se libera la variable de objeto que hace referencia al formulario o cuando se libera su conjunto de formularios.
  • Los objetos FormSet se liberan en el código cuando se libera la variable de objeto que hace referencia al conjunto de formularios.

Si un objeto contenedor, como un conjunto de formularios, contiene objetos, el evento Unload para el objeto contenedor tendrá lugar tras el evento Unload para el objeto que contiene. Por ejemplo, un conjunto de formularios que contenga un formulario que contenga un control (un CommandButton) se libera en este orden:

  1. Evento Destroy del FormSet
  2. Evento Destroy del Form
  3. Evento Destroy del CommandButton
  4. Evento Unload del Form
  5. Evento Unload del FormSet

Para devolver un valor a la cláusula TO VarName en el comando DO FORM, utilice el comando RETURN en el evento Unload. Par mayor información, vea DO FORM (Comando).

Vea también

Destroy (Evento) | QueryUnload (Evento) | Destroy (Evento) | DO FORM (Comando) | RETURN (Comando)

Se aplica a: Form | FormSet


UpClick (Evento)

Tiene lugar cuando se hace clic en la flecha de desplazamiento hacia arriba de un control Spinner o de una lista desplegable de un control ComboBox.

PROCEDURE Control.UpClick

Vea también

DownClick (Evento)

Se aplica a: ComboBox | Spinner


Valid (Evento)

Ocurre antes de que un control pierda el enfoque.

PROCEDURE Control.Valid

Observaciones

Si el evento Valid devuelve Verdadero (.T.), el control pierde el enfoque; puede que el enfoque no pase a otro control. Si el evento Valid devuelve Falso (.F.), el control no pierde el enfoque.

El evento Valid también puede devolver un valor numérico. El hecho de devolver un valor numérico tiene uno de los tres efectos siguientes:

  • Si se devuelve 0, el control no perderá el enfoque.
  • Si se devuelve un valor positivo, el valor especificará el número de controles que avanzará el enfoque.
  • Si se devuelve un valor negativo, el valor especificará el número de controles que retrocederá el enfoque. Por ejemplo, si el evento Valid devuelve –1, el enfoque se colocará en el control anterior.

Vea también

LostFocus (Evento) | When (Evento)

Se aplica a: CheckBox | ComboBox | CommandButton | CommandGroup | EditBox | Grid | ListBox | OptionButton | OptionGroup | Spinner | TextBox


When (Evento)

Tiene lugar antes de que un control reciba el enfoque.

PROCEDURE Control.When

Observaciones

Si el evento When devuelve verdadero (.T.), el control recibe el enfoque. Si el evento When devuelve falso (.F.), el control no recibe el enfoque. El orden de los eventos cuando un control obtiene el enfoque es:

  1. Evento When
  2. Evento GotFocus

Para los controles ListBox, el evento When ocurre cada vez que un usuario mueve el enfoque entre los elementos de la lista al hacer clic en los elementos o al mover la selección con las teclas de dirección.

Nota El control cuadrícula no tiene un evento GotFocus y por lo tanto, sólo se activa el evento When.

En el caso del resto de los controles, el evento When ocurre cuando se intenta mover el enfoque al control.

Vea también

GotFocus (Evento) | Valid (Evento)

Se aplica a: CheckBox | ComboBox | CommandButton | CommandGroup | EditBox | Grid | ListBox | OptionButton | OptionGroup | Spinner | TextBox

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Funciones

Visual FoxPro contiene funciones en las siguientes categorías como así también funciones adicionales:

Funciones de caracteres
Lista de funciones que operan con datos del tipo carácter.
Funciones de conversión de datos
Lista de funciones para convertir datos de un tipo a otro.
Funciones de fecha y hora
Lista de funciones que generan y manipulan fechas y horas.
Funciones COM
Lista de comandos y funciones que hacen posible el acceso a objetos COM y servidores.
Funciones numéricas
Lista de funciones que operan y devuelven datos numéricos.
Funciones XML
Descripción de las funciones que permiten manipular datos entre Visual FoxPro y datos Extensible Markup Language (XML).
Comandos y funciones de Visual FoxPro compatibles con el proveedor OLE DB
Lista de comandos y funciones que puede utilizar en el proveedor OLE DB.
Comandos y funciones de Visual FoxPro no compatibles con el proveedor OLE DB
Lista de comandos y funciones no soportadas por el proveedor OLE DB.

Para información adicional sobre referencia de lenguaje compatible con versiones anteriores, vea Elementos del lenguaje compatibles con versiones anteriores.

A

ABS( ) (Función)

ACLASS( ) (Función)

ACOPY( ) (Función)

ACOS( ) (Función)

ADATABASES( ) (Función)

ADBOBJECTS( ) (Función)

ADDBS( ) (Función)

ADDPROPERTY( ) (Función)

ADEL( ) (Función)

ADIR( ) (Función)

ADLLS( ) (Función)

ADOCKSTATE( ) (Función)

AELEMENT( ) (Función)

AERROR( ) (Función)

AEVENTS( ) (Función)

AFIELDS( ) (Función)

AFONT( ) (Función)

AGETCLASS( ) (Función)

AGETFILEVERSION( ) (Función)

AINS( ) (Función)

AINSTANCE( ) (Función)

ALANGUAGE( ) (Función)

ALEN( ) (Función)

ALIAS( ) (Función)

ALINES( ) (Función)

ALLTRIM( ) (Función)

AMEMBERS( ) (Función)

AMOUSEOBJ( ) (Función)

ANETRESOURCES( ) (Función)

APRINTERS( ) (Función)

APROCINFO( ) (Función)

ASC( ) (Función)

ASCAN( ) (Función)

ASELOBJ( ) (Función)

ASESSIONS( ) (Función)

ASIN( ) (Función)

ASORT( ) (Función)

ASTACKINFO( ) (Función)

ASUBSCRIPT( ) (Función)

AT( ) (Función)

AT_C( ) (Función)

ATAGINFO( ) (Función)

ATAN( ) (Función)

ATC( ) (Función)

ATCC( ) (Función)

ATCLINE( ) (Función)

ATLINE( ) (Función)

ATN2( ) (Función)

AUSED( ) (Función)

AVCXCLASSES( ) (Función)

B

BAR( ) (Función)

BARCOUNT( ) (Función)

BARPROMPT( ) (Función)

BETWEEN( ) (Función)

BINDEVENT( ) (Función)

BINTOC( ) (Función)

BITAND( ) (Función)

BITCLEAR( ) (Función)

BITLSHIFT( ) (Función)

BITNOT( ) (Función)

BITOR( ) (Función)

BITRSHIFT( ) (Función)

BITSET( ) (Función)

BITTEST( ) (Función)

BITXOR( ) (Función)

BOF( ) (Función)

C

CANDIDATE( ) (Función)

CAPSLOCK( ) (Función)

CDOW( ) (Función)

CDX( ) (Función)

CEILING( ) (Función)

CHR( ) (Función)

CHRSAW( ) (Función)

CHRTRAN( ) (Función)

CHRTRANC( ) (Función)

CMONTH( ) (Función)

CNTBAR( ) (Función)

CNTPAD( ) (Función)

COL( ) (Función)

COM (Funciones)

COMARRAY( ) (Función)

COMCLASSINFO( ) (Función)

COMPOBJ( ) (Función)

COMPROP( ) (Función)

COMRETURNERROR( ) (Función)

COS( ) (Función)

CPCONVERT( ) (Función)

CPCURRENT( ) (Función)

CPDBF( ) (Función)

CREATEBINARY( ) (Función)

CREATEOBJECT( ) (Función)

CREATEOBJECTEX( ) (Función)

CREATEOFFLINE( ) (Función)

CTOBIN( ) (Función)

CTOD( ) (Función)

CTOT( ) (Función)

CURDIR( ) (Función)

CURSORGETPROP( ) (Función)

CURSORSETPROP( ) (Propiedad)

CURSORTOXML( ) (Función)

CURVAL( ) (Función)

D

DATE( ) (Función)

DATETIME( ) (Función)

DAY( ) (Función)

DBC( ) (Función)

DBF( ) (Función)

DBGETPROP( ) (Función)

DBSETPROP( ) (Función)

DBUSED( ) (Función)

DDE (Funciones)

DDEAbortTrans( ) (Función)

DDEAdvise( ) (Función)

DDEEnabled( ) (Función)

DDEExecute( ) (Función)

DDEInitiate( ) (Función)

DDELastError( ) (Función)

DDEPoke( ) (Función)

DDERequest( ) (Función)

DDESetOption( ) (Función)

DDESetService( ) (Función)

DDESetTopic( ) (Función)

DDETerminate( ) (Función)

DEFAULTEXT( ) (Función)

DELETED( ) (Función)

DESCENDING( ) (Función)

DIFFERENCE( ) (Función)

DIRECTORY( ) (Función)

DISKSPACE( ) (Función)

DisplayPath( ) (Función)

DMY( ) (Función)

DODEFAULT( ) (Función)

DOW( ) (Función)

DRIVETYPE( ) (Función)

DROPOFFLINE( ) (Función)

DTOC( ) (Función)

DTOR( ) (Función)

DTOS( ) (Función)

DTOT( ) (Función)

E

EDITSOURCE( ) (Función)

EMPTY( ) (Función)

EOF( ) (Función)

ERROR( ) (Función)

EVALUATE( ) (Función)

EventHandler( ) (Función)

EVL( ) (Función)

EXECSCRIPT( ) (Función)

EXP( ) (Función)

F

FCHSIZE( ) (Función)

FCLOSE( ) (Función)

FCOUNT( ) (Función)

FCREATE( ) (Función)

FDATE( ) (Función)

FEOF( ) (Función)

FERROR( ) (Función)

FFLUSH( ) (Función)

FGETS( ) (Función)

FIELD( ) (Función)

FILE( ) (Función)

FILETOSTR( ) (Función)

FILTER( ) (Función)

FKLABEL( ) (Función)

FKMAX( ) (Función)

FLDLIST( ) (Función)

FLOCK( ) (Función)

FLOOR( ) (Función)

FONTMETRIC( ) (Función)

FOPEN( ) (Función)

FOR( ) (Función)

FORCEEXT( ) (Función)

FORCEPATH( ) (Función)

FOUND( ) (Función)

FPUTS( ) (Función)

FREAD( ) (Función)

FSEEK( ) (Función)

FSIZE( ) (Función)

FTIME( ) (Función)

FULLPATH( ) (Función)

FUNCTION (Comando)

FV( ) (Función)

FWRITE( ) (Función)

G

GETBAR( ) (Función)

GETCOLOR( ) (Función)

GETCP( ) (Función)

GETDIR( ) (Función)

GETENV( ) (Función)

GETFILE( ) (Función)

GETFLDSTATE( ) (Función)

GETFONT( ) (Función)

GETINTERFACE( ) (Función)

GETNEXTMODIFIED( ) (Función)

GETOBJECT( ) (Función)

GETPAD( ) (Función)

GETPEM( ) (Función)

GETPICT( ) (Función)

GETPRINTER( ) (Función)

GETWORDCOUNT( ) (Función)

GETWORDNUM( ) (Función)

GETCURSORADAPTER( ) (Función)

GOMONTH( ) (Función)

H

HEADER( ) (Función)

HOME( ) (Función)

HOUR( ) (Función)

i

IDXCOLLATE( ) (Función)

IIF( ) (Función)

IMESTATUS( ) (Función)

INDBC( ) (Función)

INDEXSEEK( ) (Función)

INKEY( ) (Función)

INLIST( ) (Función)

InputBox( ) (Función)

INSMODE( ) (Función)

INT( ) (Función)

ISALPHA( ) (Función)

ISBLANK( ) (Función)

ISCOLOR( ) (Función)

ISDIGIT( ) (Función)

ISEXCLUSIVE( ) (Función)

ISFLOCKED( ) (Función)

ISLEADBYTE( ) (Función)

ISLOWER( ) (Función)

ISMOUSE( ) (Función)

ISNULL( ) (Función)

ISREADONLY( ) (Función)

ISRLOCKED( ) (Función)

ISUPPER( ) (Función)

J

JUSTDRIVE( ) (Función)

JUSTEXT( ) (Función)

JUSTFNAME( ) (Función)

JUSTPATH( ) (Función)

JUSTSTEM( ) (Función)

K

KEY( ) (Función)

KEYMATCH( ) (Función)

L

LASTKEY( ) (Función)

LEFT( ) (Función)

LEFTC( ) (Función)

LEN( ) (Función)

LENC( ) (Función)

LIKE( ) (Función)

LIKEC( ) (Función)

LINENO( ) (Función)

LOADPICTURE( ) (Función)

LOCFILE( ) (Función)

LOCK( ) (Función)

LOG( ) (Función)

LOG10( ) (Función)

LOOKUP( ) (Función)

LOWER( ) (Función)

LTRIM( ) (Función)

LUPDATE( ) (Función)

M

MAX( ) (Función)

MCOL( ) (Función)

MDOWN( ) (Función)

MDX( ) (Función)

MDY( ) (Función)

MEMLINES( ) (Función)

MEMORY( ) (Función)

MENU( ) (Función)

MESSAGE( ) (Función)

MESSAGEBOX( ) (Función)

MIN( ) (Función)

MINUTE( ) (Función)

MLINE( ) (Función)

MOD( ) (Función)

MONTH( ) (Función)

MRKBAR( ) (Función)

MRKPAD( ) (Función)

MROW( ) (Función)

MTON( ) (Función)

MWINDOW( ) (Función)

N

NDX( ) (Función)

NEWOBJECT( ) (Función)

NORMALIZE( ) (Función)

NTOM( ) (Función)

NUMLOCK( ) (Función)

NVL( ) (Función)

O

OBJNUM( ) (Función)

OBJTOCLIENT( ) (Función)

OBJVAR( ) (Función)

OCCURS( ) (Función)

OEMTOANSI( ) (Función)

OLDVAL( ) (Función)

ON( ) (Función)

ORDER( ) (Función)

OS( ) (Función)

P

PAD( ) (Función)

PADL( ) | PADR( ) | PADC( ) (Funciones)

PARAMETERS( ) (Función)

PAYMENT( ) (Función)

PCOL( ) (Función)

PCOUNT( ) (Función)

PEMSTATUS( ) (Función)

PI( ) (Función)

POPUP( ) (Función)

PRIMARY( ) (Función)

PRINTSTATUS( ) (Función)

PRMBAR( ) (Función)

PRMPAD( ) (Función)

PROGRAM( ) (Función)

PROMPT( ) (Función)

PROPER( ) (Función)

PROW( ) (Función)

PRTINFO( ) (Función)

PUTFILE( ) (Función)

PV( ) (Función)

Q

Quarter( ) (Función)

R

RAISEEVENT() (Función)

RAND( ) (Función)

RAT( ) (Función)

RATC( ) (Función)

RATLINE( ) (Función)

RDLEVEL( ) (Función)

READKEY( ) (Función)

RECCOUNT( ) (Función)

RECNO( ) (Función)

RECSIZE( ) (Función)

REFRESH( ) (Función)

RELATION( ) (Función)

REPLICATE( ) (Función)

REQUERY( ) (Función)

RGB( ) (Función)

RGBSCHEME( ) (Función)

RIGHT( ) (Función)

RIGHTC( ) (Función)

RLOCK( ) (Función)

ROUND( ) (Función)

ROW( ) (Función)

RTOD( ) (Función)

RTRIM( ) (Función)

S

SAVEPICTURE( ) (Función)

SCHEME( ) (Función)

SCOLS( ) (Función)

SEC( ) (Función)

SECONDS( ) (Función)

SEEK( ) (Función)

SELECT( ) (Función)

SET( ) (Función)

SETFLDSTATE( ) (Función)

SIGN( ) (Función)

SIN( ) (Función)

SKPBAR( ) (Función)

SKPPAD( ) (Función)

SOUNDEX( ) (Función)

SPACE( ) (Función)

SQLCANCEL( ) (Función)

SQLCOLUMNS( ) (Función)

SQLCOMMIT( ) (Función)

SQLCONNECT( ) (Función)

SQLDISCONNECT( ) (Función)

SQLEXEC( ) (Función)

SQLGETPROP( ) (Función)

SQLMORERESULTS( ) (Función)

SQLPREPARE( ) (Función)

SQLROLLBACK( ) (Función)

SQLSETPROP( ) (Función)

SQLSTRINGCONNECT( ) (Función)

SQLTABLES( ) (Función)

SQRT( ) (Función)

SROWS( ) (Función)

STR( ) (Función)

STRCONV( ) (Función)

STREXTRACT( ) (Función)

STRTOFILE( ) (Función)

STRTRAN( ) (Función)

STUFF( ) (Función)

STUFFC( ) (Función)

SUBSTR( ) (Función)

SUBSTRC( ) (Función)

SYS( ) - Introducción a las funciones

SYSMETRIC( ) (Función)

T

TABLEREVERT( ) (Función)

TABLEUPDATE( ) (Función)

TAG( ) (Función)

TAGCOUNT( ) (Función)

TAGNO( ) (Función)

TAN( ) (Función)

TARGET( ) (Función)

TEXTMERGE( ) (Función)

TIME( ) (Función)

TRANSFORM( ) (Función)

TRIM( ) (Función)

TTOC( ) (Función)

TTOD( ) (Función)

TXNLEVEL( ) (Función)

TXTWIDTH( ) (Función)

TYPE( ) (Función)

U

UNBINDEVENTS( ) (Función)

UNIQUE( ) (Función)

UPDATED( ) (Función)

UPPER( ) (Función)

USED( ) (Función)

V

VAL( ) (Función)

VARREAD( ) (Función)

VARTYPE( ) (Función)

VERSION( ) (Función)

W

WBORDER( ) (Función)

WCHILD( ) (Función)

WCOLS( ) (Función)

WDOCKABLE( ) (Función)

WEEK( ) (Función)

WEXIST( ) (Función)

WFONT( ) (Función)

WLAST( ) (Función)

WLCOL( ) (Función)

WLROW( ) (Función)

WMAXIMUM( ) (Función)

WMINIMUM( ) (Función)

WONTOP( ) (Función)

WOUTPUT( ) (Función)

WPARENT( ) (Función)

WREAD( ) (Función)

WROWS( ) (Función)

WTITLE( ) (Función)

WVISIBLE( ) (Función)

X

XMLTOCURSOR( ) (Función)

XMLUPDATEGRAM( ) (Función)

Y

YEAR( ) (Función)

Z

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico"..

© 1992 - 2003 Microsoft Corporation. Todos los derechos reservados.

Traducido al Español por el grupo de traductores de PortalFox.

Envíe un informe sobre errores en la traducción de este tema


Funciones de caracteres

Estas funciones operan sobre datos de tipo Carácter.

$ (Operador)

Función ALLTRIM( )

ASC( ) (Función)

AT( ) (Función)

AT_C( ) (Función)

ATC( ) (Función)

ATCC( ) (Función)

ATCLINE( ) (Función)

ATLINE( ) (Función)

BETWEEN( ) (Función)

CHR( ) (Función)

CHRTRAN( ) (Función)

CHRTRANC( ) (Función)

CPCONVERT( ) (Función)

CTOD( ) (Función)

DIFFERENCE( ) (Función)

DTOC( ) (Función)

EMPTY( ) (Función)

EVALUATE( ) (Función)

GETWORDCOUNT( ) (Función)

GETWORDNUM( ) (Función)

INLIST( ) (Función)

ISALPHA( ) (Función)

ISDIGIT( ) (Función)

ISLEADBYTE( ) (Función)

ISLOWER( ) (Función)

ISUPPER( ) (Función)

Función LEFT( )

LEFTC( ) (Función)

LEN( ) (Función)

LENC( ) (Función)

LIKE( ) (Función)

LIKEC( ) (Función)

LOWER( ) (Función)

Función LTRIM( )

MAX( ) (Función)

MIN( ) (Función)

NORMALIZE( ) (Función)

OCCURS( ) (Función)

PADL( ) | PADR( ) | PADC( )

Función PROPER( )

RAT( ) (Función)

RATC( ) (Función)

RATLINE( ) (Función)

REPLICATE( ) (Función)

Función RIGHT( )

RIGHTC( ) (Función)

Función RTRIM( )

SOUNDEX( ) (Función)

SPACE( ) (Función)

Función STR( )

STRCONV( ) (Función)

STRTOFILE( ) (Función)

STRTRAN( ) (Función)

STUFF( ) (Función)

STUFFC( ) (Función)

Función SUBSTR( )

SUBSTRC( ) (Función)

SYS(10) - Cadena de número de día juliano

SYS(15) - Traducción de caracteres

SYS(2007) - Valor de suma de comprobación

TEXTMERGE( ) (Función)

TRANSFORM( ) (Función)

TRIM( ) (Función)

TXTWIDTH( ) (Función)

TYPE( ) (Función)

UPPER( ) (Función)

VARTYPE( ) (Función)


Funciones de conversión de datos

Estas funciones convierten datos de un tipo de datos a otro.

CHR( ) (Función)

CTOD( ) (Función)

CURVAL( ) (Función)

CURSORToXML( ) (Función)

DTOC( )

MTON( ) (Función)

NTOM( ) (Función)

NVL( ) (Función)

STR( )

SYS(10) - Cadena de número de día juliano

SYS(15) - Traducción de caracteres

TEXTMERGE( ) (Función)

TRANSFORM( ) (Función)

TTOC( ) (Función)

TTOD( ) (Función)

VAL( ) (Función)

VARTYPE( ) (Función)


Funciones de fecha y hora

Estas funciones generan y manipulan datos de fecha y hora.

BETWEEN( ) (Función)

CDOW( ) (Función)

CMONTH( ) (Función)

CTOD( ) (Función)

CTOT( ) (Función)

DATE( ) (Función)

DATETIME( ) (Función)

DAY( ) (Función)

DMY( ) (Función)

DOW( ) (Función)

DTOC( ) (Función)

DTOS( ) (Función)

DTOT( ) (Función)

EMPTY( ) (Función)

FDATE( ) (Función)

FTIME( ) (Función)

GOMONTH( ) (Función)

HOUR( ) (Función)

INLIST( ) (Función)

MAX( ) (Función)

MDY( ) (Función)

MIN( ) (Función)

MINUTE( ) (Función)

MONTH( ) (Función)

QUARTER( ) (Función)

SEC( ) (Función)

SECONDS( ) (Función)

SET HOURS (Comando)

SET MARK TO (Comando)

SET SECONDS (Comando)

SYS(1) - Fecha juliana del sistema

SYS(2) - Segundos desde medianoche

SYS(10) - Cadena de número de día juliano

SYS(11) - Número de día juliano

TIME( ) (Función)

TTOC( ) (Función)

TTOD( ) (Función)

WEEK( ) (Función)

YEAR( ) (Función)


Funciones COM

Estas funciones hacen posible el acceso a objetos y servidores COM.

COMCLASSINFO( ) (Función)

COMARRAY( ) (Función)

COMRETURNERROR( ) (Función)

COMPROP( ) (Función)

CREATEOBJECT( ) (Función)

CREATEOBJECTEX( ) (Función)

GETOBJECT( ) (Función)

DEFINE CLASS (Comando)

GETINTERFACE( ) (Función)

EVENTHANDLER( ) (Función)


Funciones numéricas

Estas funciones operan sobre datos numéricos o devuelven este tipo de datos.

% (Operador)

ABS( ) (Función)

ACOS( ) (Función)

ASIN( ) (Función)

ATAN( ) (Función)

ATN2( ) (Función)

BETWEEN( ) (Función)

BITAND( ) (Función)

BITCLEAR( ) (Función)

BITLSHIFT( ) (Función)

BITNOT( ) (Función)

BITOR( ) (Función)

BITRSHIFT( ) (Función)

BITSET( ) (Función)

BITTEST( ) (Función)

BITXOR( ) (Función)

CALCULATE (Comando)

CEILING( ) (Función)

COS( ) (Función)

DTOR( ) (Función)

EMPTY( ) (Función)

EXP( ) (Función)

FLOOR( ) (Función)

FV( ) (Función)

INLIST( ) (Función)

INT( ) (Función)

LOG( ) (Función)

LOG10( ) (Función)

MAX( ) (Función)

MIN( ) (Función)

MOD( ) (Función)

PAYMENT( ) (Función)

PI( ) (Función)

PV( ) (Función)

RAND( ) (Función)

ROUND( ) (Función)

RTOD( ) (Función)

SET DECIMALS (Comando)

SIGN( ) (Función)

ASIN( ) (Función)

SQRT( ) (Función)

TAN( ) (Función)

VAL( ) (Función)


Funciones XML

Puede implementar con mayor facilidad el intercambio de datos a través de el formato XML usando funciones tales como XMLUPDATEGRAM( ), CURSORTOXML( ), y XMLTOCURSOR( ). Si importa datos XML usando XMLTOCURSOR( ) o exporta datos usando CURSORTOXML( ), sus documentos XML son válidos cuando estos tienen el formato correcto.

Note El requiere el parser MSXML para usar las funciones XML de Visual FoxPro.

Documentos con formato correcto

Cualquier documento XML producido por Visual FoxPro tiene un formato correcto, esto significa que incluye las reglas básicas de XML:

  • Cada documento XML debe tener un único elemento raíz (un elemento que abarca el documento completo).
  • Todas las etiquetas iniciales y finales coinciden. Las etiquetas XML distinguen entre mayúsculas y minúsculas.
  • Para cada tag inicial, un tag final correspondiente debe existir. Los elementos vacios pueden ser denotados por un tag de taquigrafía especial.
  • Los elementos no se superponen. Dicho de otra forma, las etiquetas iniciales y finales deben estar correctamente anidadas dentro de otros elementos.
  • Ciertos caracteres reservados son parte de la sintaxis XML y no son interpretados por si mismo si se usan como una porción de datos de un elemento. Necesita substituir con una secuencia de caracteres especiales, referidos como "entidad" en XML, estos son los siguientes:
    Carácter Tipo de datos Codificación de la entidad
    & ("y" comercial)
    < (corchete angular izquierdo)
    > (corchete angular derecho)
    " (quotation mark)
    ' (comillas sencillas)     		String
    String
    String
    String
    String     		Se reemplaza por &amp;
    Se reemplaza por &lt;
    Se reemplaza por &gt;
    Se reemplaza por &quot;
    Se reemplaza por &apos;

    For other data types, entity encoding follows these rules:

    Tipo de datos | Codificación de caracteres y entidades
    Date | Debe seguir el formato ISO 8601
    Números | La puntuación debe utilizar las reglas del inglés de EE.UU. Por ejemplo, debe utilizarse un punto como separador decimal. Los números pueden incluir exponentes.
    Boolean | False = 0, True = 1. (SQL XML returns 0 and1)
    BLOB | Utiliza la codificación MIME Base64

A continuación se muestra un ejemplo de documento XML con formato correcto:

<?xml version="1.0"?>
<Data>
<ORDER>
<CUSTOMER>Nancy Davolio</CUSTOMER>
<ITEM>Mom&apos;s Boston Crab Meat</ITEM>
<PRICE>$10.00</PRICE>
<QUANTITY>1 Bottle</QUANTITY>
</ORDER>
</Data>

donde:

<?xml version="1.0"?>
Especifica la declaración de que se trata de un documento XML y proporciona el número de versión. La declaración es opcional, pero se recomienda para cualquier documento XML.
<ORDER>
Especifica el elemento raíz, que abarca el documento completo.
<CUSTOMER> ... </CUSTOMER>
Especifica un conjunto de etiqueta inicial y etiqueta final que describe un elemento de datos, en este caso el nombre del cliente.
Nota Cada conjunto de etiquetas, como por ejemplo <CUSTOMER> ... </CUSTOMER>, tiene tanto etiqueta inicial como final, distingue entre mayúsculas y minúsculas y está correctamente anidado. Observe también la entidad &apos;, que se transformará en un apóstrofe (') cuando la aplicación receptora importe los datos. El apóstrofe tiene un propósito especial en un documento XML y puede interpretarse de forma incorrecta si se utiliza directamente en el texto. Los datos convertidos se mostrarán como Mom's Boston Crab Meat.

Puede utilizar espacios en blanco en todo el documento para mejorar la legibilidad.

Si especifica un esquema al exportar desde Visual FoxPro, se considera que los documentos XML exportados contienen código XML válido. Esto significa que, además de tener un formato correcto, los documentos se ajustan a un esquema definido.

Cuando se importa XML mediante XMLTOCURSOR( ), Visual FoxPro utiliza un esquema, externo o interno, para determinar la estructura de cursores o tablas. Cuando no se proporciona esquema, Visual FoxPro utiliza un método de "mejor aproximación" para interpretar los datos XML. Esto implica recorrer dos veces el código XML, una para determinar la estructura de los datos y otra para ejecutar realmente la conversión. Tenga en cuenta que el código XML, además de tener el formato correcto, en general debe ajustarse a un formato que se pueda interpretar como una tabla. El código XML con formato correcto que no pueda descomponerse fácilmente en un formato de tabla no se importará correctamente.

Esquemas

Los Esquemas describen la estructura de datos de un formato común para que los clientes, navegadores Web, y numerosos programas habilitados con XML Schemas puedan reconocerlo. La descripción define las reglas de un documento de datos XML, cuyos elementos pueden aparecer en combinación, y con atributos disponibles para cada elemento. Los esquemas proporcionan un modelo para un documento de datos XML, éstos definen la matriz de tags y texto dentro de todos los documentos haciendo referencia en el esquema. Visual FoxPro soporta XML Schema Definition (XSD), una infraestructura básica para describir el tipo y estructura de documentos XML

Al utilizar un esquema, es posible asegurarse de que cualquier documento XML que se utilice para importar o exportar datos contiene datos específicos y se ajusta a una estructura definida. También puede proporcionar el esquema a otros negocios y aplicaciones, para que puedan estructurar los datos que le proporcionen y, a su vez, le ofrezcan su esquema.

Visual FoxPro admite el formato de esquema W3C XSD. A continuación se muestra un ejemplo de esquema XSD resultado de la función CURSORTOXML( ):

<?xml version = "1.0" encoding="Windows-1252" standalone="yes"?>

<xsd:schema id="VFPSchema" targetNamespace="http://microsoft.com" xmlns="http://microsoft.com" xmlns:xsd="http://www.w3.org/2000/10/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" elementFormDefault="qualified">
<xsd:element name="atxm">
<xsd:complexType>
<xsd:all>
<xsd:element name="ikey" minOccurs="0" type="xsd:int"/>
<xsd:element name="nc00" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:decimal">
<xsd:precision value="10"/>
<xsd:scale value="4"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="mc03" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="2147483647"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="cc04" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="128"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="lc05" minOccurs="0" type="xsd:boolean"/>
<xsd:element name="fc06" minOccurs="0" type="xsd:double"/>
<xsd:element name="yc07" minOccurs="0" type="xsd:decimal"/>
<xsd:element name="ic08" minOccurs="0" type="xsd:int"/>
<xsd:element name="bc09" minOccurs="0" type="xsd:double"/>
<xsd:element name="dc10" minOccurs="0" type="xsd:date"/>
<xsd:element name="tc11" minOccurs="0" type="xsd:timeInstant"/>
<xsd:element name="ts12" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:binary">
<xsd:encoding value="base64"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:all>
</xsd:complexType>
</xsd:element>
<xsd:element name="VFPData" msdata:lsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element ref="atxm"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>

El esquema con formato XSD está basado en la Recomendación de la especificación del W3C con fecha 2 Mayo de 1991: "Primer, Structures, and Datatypes". Para detalles, vea http://www.w3.org/TR/2001/REC-xmlschema-0-20010502/ y documentos relacionados.

Actualmente, Visual FoxPro exporta XML en los siguientes formatos:

  • Basado en Elemento Cada campo en cursor o tabla es representado por un subelemento de un elemento de nivel superior.
    <?xml version="1.0" encoding="Windows-1252" standalone="yes" ?>

<!-- Note targetNamespace in root (VfpData) element. If set to default (""), xmlns attrib is not written -->
<VfpData xmlns="http://www.microsoft.com">
<alltypesxm>
<ikey>2</ikey>
<nc00>1.1111</nc00>
<mc03>H1111111111111111111</mc03>
<cc04>H111111111111111111</cc04>
<lc05>true</lc05>
<fc06>-1111000</fc06>
<yc07>-111111111.1111</yc07>
<ic08>-11111111</ic08>
<bc09>-111111111111.1</bc09>
<dc10>1999-03-02T08:00:00</dc10>
<tc11>1999-03-02T09:01:01</tc11>
<ts12>AAAAAAAAAr8=</ts12>
</alltypesxm>
</VfpData>
  • Basado en Atributos El cursor se identifica por la palabra clave "VFPData" y cada elemento del cursor o tabla es representado por un atributo del elemento VFPData.
    <?xml version="1.0" encoding="Windows-1252" ?>
<!-- Note targetNamespace in root element -->
<VFPData xmlns="http://www.microsoft.com">
<atxm_attr ikey="2" nc00="12345.1111"
mc03="H1111111111111111111" cc04="H111111111111111111" lc05="1"
fc06="-1111000.0000" yc07="-111111111.1111" ic08="-11111111"
bc09="-111111111111.100000" dc10="1999-03-02"
tc11="1999-03-02T01:01:01" ts12="AAAAAAAAAr0=" />
<atxm_attr ikey="3" nc00="2.1111" mc03="H2222222222222222222"
cc04="H222222222222222222" lc05="1" fc06="22220000.0000"
yc07="2222222222.2222" ic08="222222222"
bc09="222222222222.2200000"
tc11="2000-10-03T02:02:02" ts12="AAAAAAAAAr8=" />
</VFPData>
  • Raw Cada fila de un cursor o tabla es representado por un elemento XML con el identificador genérico "row", y cada valor de columna es trazado en un atributo del elemento row donde el nombre del atributo es igual al nombre de la columna. Este formato es identico al Basado en Atributos, excepto que "row" es el nombre del elemento de nivel superior.
    <?xml version="1.0"?>
<!-- Note no targetNamespace in root element -->
<VFPData>
<row CustomerID="CACTU" CompanyName="Cactus Comidas para llevar"
ContactName="Patricio Simpson" ContactTitle="Sales Agent"
Address="Cerrito 333" City="Buenos Aires" PostalCode="1010"
Country="Argentina" Phone="(1) 135-5555" Fax="(1) 135-4892"/>
</VFPData>

Asignación de tipos de datos

La tabla siguiente describe la asignación de datos de Visual FoxPro a tipos XSD.

Tipo Visual FoxPro | Tipo XSD | Comentarios
Caracter Cadena con restricción
<xsd:maxLength value="128"/>
Monetario | Decimal
Numérico Decimal con restricción
 <xsd:precision value="10"/>
<xsd:scale value="4"/>
 La precisión es el número de dígitos, excluido el punto decimal.
Flotante Decimal con restricción
<xsd:precision value="10"/>
<xsd:scale value="4"/>
Fecha | date
Fecha-Hora | timeInstant
Doble | double
Entero | int
Lógicas | boolean
Memo Cadena con restricción
<xsd:maxLength value="2147483647"/>
General | No se admite
Caracter (binario) Binario con restricción
<xsd:encoding value="base64"/>
Memo (binario) Binario con restricción
<xsd:encoding value="base64"/>

Vea también

CURSORTOXML( ) (Función) | XMLTOCURSOR( ) (Función) | XMLUpdateGram( ) (Función) | VFPXMLProgID (Propiedad)


$ (Operador)

Devuelve verdadero (.T.) si una expresión de caracteres está contenida dentro de otra expresión de caracteres; de lo contrario, devuelve falso (.F.).

cSearchFor $ cSearchIn

Valores devueltos

Lógico

Parámetros

cSearchFor
Especifica la expresión buscada en cSearchIn.
cSearchIn
Especifica la expresión en que se busca para comprobar si contiene cSearchFor.

Si en cSearchFor se encuentra cSearchIn, $ devolverá verdadero (.T.); de lo contrario, devolverá falso (.F.). cSearchFor y cSearchIn pueden ser variables o elementos de matriz de tipo carácter, campos de tipo carácter, literales de cadena de caracteres o campos memo de cualquier longitud.

Los campos memo pueden manipularse de la misma forma que las expresiones de caracteres, los campos de tablas, las variables o los elementos de matriz. Por ejemplo, si MEMO_FLD es un campo memo, lo siguiente será aceptable:

LIST FOR 'FOX' $ UPPER(memo_fld)

Observaciones

Si no se encuentra la expresión de caracteres, se devolverá falso (.F.). El operador $ distingue mayúsculas de minúsculas y no es optimizable mediante Rushmore.

Ejemplo

El ejemplo siguiente crea una tabla llamada memotest que contiene un campo memo. Se agregan tres registros a la tabla. Se utiliza LIST para mostrar los tres registros. El signo dólar ($) se usa para enumerar los registros que contienen la cadena "FOX". Después se eliminan los archivos creados para el ejemplo.

CLOSE DATABASES
CLEAR
CREATE TABLE memotest (Text C(3), Memo M)
INSERT INTO  memotest (Text, Memo) VALUES ('Fox', 'Fox')
INSERT INTO  memotest (Text, Memo) VALUES ('Cat', 'Cat')
INSERT INTO  memotest (Text, Memo) VALUES ('FOX', 'FOX')
LIST FIELDS  Memo, Text FOR 'FOX' $ UPPER(Memo)
USE
DELETE FILE memotest.dbf
DELETE FILE memotest.fpt

Vea también

% (Operador) | DELETE FILE (Comando) | CREATE TABLE - SQL (Comando) | Utilizar optimización de consultas Rushmore para acelerar el acceso de datos | AT( ) | Operadores | ATLINE( ) | RAT( ) | RATLINE( ) | OCCURS( ) | INLIST( ) (Función)


% (Operador)

Devuelve el resto que se obtiene de dividir una expresión numérica por otra expresión numérica.

nDividend % nDivisor

Parámetros

nDividend
Especifica el dividendo (la expresión numérica que se divide). El número de decimales de nDividend determina el número de decimales del resultado.
nDivisor
Especifica el divisor (la expresión numérica que divide al dividendo nDividend). Se devolverá un número positivo si nDivisor es positivo y un número negativo si nDivisor es negativo. nDivisor no puede ser cero.

Observaciones

El operador módulo % y MOD( ) devuelven el mismo resultado.

El operador módulo (%) es un operador aritmético. + (suma), - (resta), * (multiplicación), / (división) y ^ (exponenciación) son otros operadores aritméticos. Cuando estos operadores se combinan en una expresión numérica, % tiene la misma prioridad que * y /.

Si desea ver una descripción más detallada de los operadores y su orden de prioridad, consulte el tema Operadores.

Ejemplo

? 36 % 10         && Displays 6
? (4*9) % (90/9)      && Displays 6
? 25.250 % 5.0      && Displays 0.250
? IIF(YEAR(DATE( )) % 4 = 0, 'Summer Olympics this year';
, 'No Summer Olympics this year')

Vea también

MOD( ) (Función) | $ (Operador) | Operadores | Operadores para el tipo Numérico | Crear expresiones de tipo Numérico


:: (Operador de resolución de alcance)

Ejecuta un método de clase primaria desde un método de subclase.

cClassName::cMethod

Observaciones

El operador :: se utiliza para ejecutar un método de clase primaria desde un método de subclase. Cuando cree una subclase, los métodos de subclase se heredarán automáticamente de la clase primaria. El operador :: permite ejecutar el método de la clase primaria en el método de la subclase secundaria y realizar después otros procesos adicionales para el método de subclase. Las definiciones de subclase del ejemplo demuestran cómo se utiliza el operador :: para ejecutar el método de clase primaria en un método de subclase.

Para obtener más información acerca del operador de resolución de alcance ::, vea Programación orientada a objetos.

Ejemplo

El ejemplo siguiente crea un formulario y agrega dos botones de comando al formulario. Al hacer clic en los botones puede salir del formulario (el segundo botón, cmdAnotherButton, llama al procedimiento clic de cmdQuit). Esta acción es posible por la creación de subclases. El operador de resolución de alcance llama al código de la clase principal para el objeto subclase.

frmMyForm = CREATEOBJECT("Form")
frmMyForm.Width  = 450
frmMyForm.Height   = 100
frmMyForm.Caption  = "Scope Resolution Example"
frmMyForm.AutoCenter =.T.
frmMyForm.AddObject("cmdQuit","cmdQuitButton")
frmMyForm.AddObject("cmdAnother","cmdAnotherButton")
frmMyForm.SHOW       && Display the form
READ EVENTS        && Start event processing

El siguiente ejemplo define dos botones de comando. El primer botón se utilizará como subclase del segundo botón. La creación de la subclase se puede ver en las propiedades FontBold y ForeColor que se definen para cmdQuit, pero nunca se establece explícitamente para cmdAnotherButton. Definimos cmdAnotherButton como una subclase de cmdQuitButton. Como resultado, este botón heredará todos los atributos definidos para cmdQuitButton.

DEFINE CLASS cmdQuitButton AS CommandButton
Caption  = "\<Quit"   && Caption on command button
Left   = 175    && Left edge of button
Top    = 60     && Position for top of button
Height   = 25     && Button height
Visible  = .T.    && Show button on form
FontItalic = .T.    && Turn on italic text
ForeColor  = RGB(0,0,255) && Change button text color
PROCEDURE Click
WAIT WINDOW "Executing the CLICK procedure for cmdQuit." TIMEOUT 1
CLEAR EVENTS     && Stop event processing
ENDDEFINE
DEFINE CLASS cmdAnotherButton AS cmdQuitButton
Caption = "Click to quit"
Left  = 175
Top   = 30
Height  = 25
PROCEDURE Click
WAIT WINDOW "Click event for button: cmdAnotherButton" TIMEOUT 1
cmdQuitButton::Click
ENDDEFINE

Vea también

ADD CLASS (Comando) | CREATE CLASS (Comando) | CREATE CLASSLIB (Comando) | CREATEOBJECT( ) (Función) | DEFINE CLASS (Comando) | DODEFAULT( ) (Función) | GETOBJECT( ) (Función) | MODIFY CLASS (Comando) | RELEASE CLASSLIB (Comando) | SET CLASSLIB (Comando) | WITH ... ENDWITH (Comando)


ABS( ) (Función)

Devuelve el valor absoluto de la expresión numérica especificada.

ABS(nExpression)

Valores devueltos

Numérico

Parámetros

nExpression
Especifica la expresión numérica cuyo valor absoluto devuelve ABS( ).

Ejemplo

? ABS(-45)       && Displays 45
? ABS(10-30)     && Displays 20
? ABS(30-10)     && Displays 20
STORE 40 TO gnNumber1
STORE 2 TO gnNumber2
? ABS(gnNumber2-gnNumber1)     && Displays 38

Vea también

INT( ) (Función) | ROUND( ) (Función) | SIGN( ) (Función)


ACLASS( ) (Función)

Incluye los nombres de clase de un objeto y los nombres de clases anteriores en una matriz de variable.

ACLASS(ArrayName, oExpression)

Valores devueltos

Numérico

Parámetros

ArrayName
Especifica el nombre de la matriz en que se incluyen los nombres de clase. Si especifica el nombre de una matriz que no existe, Visual FoxPro la creará automáticamente. Si especifica el nombre de una matriz existente que no es suficientemente grande para dar cabida a todos los nombres primarios, Visual FoxPro aumentará automáticamente el tamaño de la matriz. Si la matriz es mayor de lo necesario, su tamaño se reducirá. Si especifica el nombre de una matriz bidimensional existente, sus dimensiones se cambiarán por las de una matriz unidimensional.
oExpression
Especifica un objeto cuyo nombre de clase y nombres de clases anteriores se incluyen en la matriz. oExpression puede ser cualquier expresión de objeto, como una referencia de objeto, una variable de objeto o un elemento de matriz de objeto.

Observaciones

ACLASS( ) crea una matriz unidimensional que contiene el nombre de clase del objeto especificado y los nombres de clases anteriores. El primer elemento de la matriz contiene el nombre de clase del objeto, el segundo elemento contiene el nombre de la clase primaria del objeto, el tercer elemento contiene el nombre de la clase predecesora (primaria de una primaria) del objeto, etc.

ACLASS( ) devuelve el número de nombres de clase de la matriz. ACLASS( ) devolverá 0 si no puede crear la matriz.

Ejemplo

El ejemplo siguiente crea dos clases personales llamadas FormChild y FormGrandChild a partir de la clase de base Form de Visual FoxPro. ACLASS( ) se utiliza para crear una matriz llamada gaNewArray que contiene los nombres de clase, que se muestran después.

CLEAR
frmMyForm = CREATEOBJECT("FormGrandChild")
FOR nCount = 1 TO ACLASS(gaNewarray, frmMyForm)    && Creates an array
? gaNewarray(nCount)  && Displays the names of the classes
ENDFOR
RELEASE frmMyForm
DEFINE CLASS FormChild AS FORM
ENDDEFINE
DEFINE CLASS FormGrandChild AS FormChild
ENDDEFINE

Vea también

ADD CLASS (Comando) | AMEMBERS( ) (Función) | CREATE CLASS (Comando) |CREATE CLASSLIB (Comando) | CREATEOBJECT( ) (Función) | DEFINE CLASS (Comando)


ACOPY( ) (Función)

Copia elementos de una matriz a otra.

ACOPY(SourceArrayName, DestinationArrayName
[, nFirstSourceElement [, nNumberElements [, nFirstDestElement ]]])

Valores devueltos

Numérico

Parámetros

SourceArrayName, DestinationArrayName
Especifica la matriz de origen SourceArrayName cuyos elementos se copian uno a uno a la matriz de destino DestinationArrayName. Los elementos de la matriz de origen sustituyen a los elementos de la matriz de destino.

Las matrices pueden ser unidimensionales o bidimensionales. Si la matriz de destino no existe, Visual FoxPro la creará automáticamente. En tal caso, el tamaño de la matriz de destino será el mismo que el de la matriz de origen. Si la matriz destino ya existe, se redimensiona al tamaño de la matriz origen.

Nota Puede hacer referencia a un elemento de una matriz bidimensional de variables de dos formas. La primera utiliza dos subíndices para especificar la posición de fila y columna del elemento de la matriz; la otra utiliza un número de elemento único. Esta función y otras que manipulan matrices bidimensionales precisan números de elemento único (aquí, nFirstSourceElement y nFirstDestElement). Utilice AELEMENT( ) para devolver el número de elemento apropiado para una matriz bidimensional a partir de sus subíndices de fila y columna.
nFirstSourceElement
Especifica el número del primer elemento de la matriz de origen que se va a copiar, inclusive (el elemento número nFirstSourceElement se incluye en la copia). Si no se incluye nFirstSourceElement, la operación de copia comenzará con el primer elemento de la matriz de origen.
nNumberElements
Especifica el número de elementos copiados de la matriz de origen. Si nNumberElements es –1, se copiarán todos los elementos de la matriz de origen a partir del elemento nFirstSourceElement.
nFirstDestElement
Especifica el primer elemento de la matriz de destino que se va a sustituir.

Observaciones

ACOPY( ) devuelve el número de elementos copiados a la matriz de destino.

Ejemplo

El ejemplo siguiente crea una matriz a partir de los registros seleccionados de la tabla customer y, a continuación, utiliza ACOPY( ) para crear una nueva matriz.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer     && Open customer table
SELECT DISTINCT company ;
FROM customer ;
ORDER BY company ;
WHERE country = 'Germany';
INTO ARRAY gaCompanies
= ACOPY(gaCompanies, gaCompaniesTemp)  && Make a copy of the array
CLEAR
DISPLAY MEMORY LIKE gaCompaniesTemp

Vea también

ADEL( ) (Función) | AELEMENT( ) (Función) | AINS( ) | ASCAN( ) (Función) | ASORT( ) (Función) | DIMENSION (Comando)


ACOS( ) (Función)

Devuelve el arco coseno de una expresión numérica especificada.

ACOS(nExpression)

Valores devueltos

Numérico

Parámetros

nExpression
Especifica la expresión numérica cuyo arco coseno devuelve ACOS( ). El valor de nExpression puede estar comprendido entre –1 y +1. El valor que devuelve ACOS( ) está comprendido entre 0 y pi (3,141592). El número de decimales que devuelve ACOS( ) está determinado por SET DECIMALS.

Utilice RTOD( ) para convertir radianes a grados.

Observaciones

El arco coseno se devuelve en radianes.

Ejemplo

CLEAR
? RTOD(ACOS(0))  && Displays 90.00
STORE -1 to gnArcAngle
? RTOD(ACOS(gnArcAngle))  && Displays 180.00
? RTOD(ACOS(SQRT(2)/2))  && Displays 45.00

Vea también

ASIN( ) (Función) | ATAN( ) (Función) | ATN2( ) (Función) | ACOS( ) (Función) | DTOR( ) (Función) | RTOD( ) (Función) | SET DECIMALS (Comando) | SIN( ) (Función) | TAN( ) (Función)


ADATABASES( ) (Función)

Incluye los nombres de todas las bases de datos abiertas, junto con sus rutas de acceso, en una matriz de variables.

ADATABASES(ArrayName)

Valores devueltos

Numérico

Parámetros

ArrayName
Especifica el nombre de la matriz. Si la matriz que especifica no existe, Visual FoxPro la creará automáticamente. Si la matriz existe, pero no es suficientemente grande para dar cabida a toda la información de la base de datos, Visual FoxPro aumentará automáticamente el tamaño de la matriz para proporcionar espacio para la información. Si la matriz es mayor de lo necesario, Visual FoxPro reducirá su tamaño. Si la matriz existe y ADATABASES( ) devuelve 0 porque no ha encontrado bases de datos abiertas, la matriz permanecerá inalterada. Si la matriz no existe y ADATABASES( ) devuelve 0, la matriz no se creará.

Observaciones

Los nombres de todas las bases de datos abiertas en la sesión de datos actual se introducen en una matriz.

ADATABASES( ) crea una matriz bidimensional. La primera columna de la matriz contiene los nombres de las bases de datos abiertas y la segunda columna contiene las rutas de acceso a dichas bases de datos.

ADATABASES( ) devuelve el número de nombres de bases de datos (filas) de la matriz. Si no hay ninguna base de datos abierta, ADATABASES( ) devolverá 0 y no creará ninguna matriz.

Ejemplo

El ejemplo siguiente abre la base de datos testdata y utiliza ADATABASES( ) para crear una matriz llamada gaDatabase que contiene los nombres de todas las bases de datos abiertas.

SET PATH TO (HOME(2) + 'data\')     && Sets path to database
OPEN DATABASE testdata && Opens the database
CLEAR
? ADATABASES(gaDatabase)     && Creates an array of open databases
DISPLAY MEMORY LIKE gadatabase  && Displays the contents of the array
CLOSE DATABASES

Vea también

CREATE DATABASE | DISPLAY DATABASE | LIST DATABASE | MODIFY DATABASE | OPEN DATABASE


ADBOBJECTS( ) (Función)

Sitúa los nombres de conexiones con nombre, relaciones, tablas o vistas SQL de la base de datos actual en una matriz.

ADBOBJECTS(ArrayName, cSetting)

Valores devueltos

Numérico

Parámetros

ArrayName
Especifica el nombre de la matriz en que se sitúan los nombres. Si la matriz que especifica no existe, Visual FoxPro la creará automáticamente. Si existe y no es suficientemente grande para dar cabida a todos los nombres, Visual FoxPro aumentará automáticamente el tamaño. Si la matriz es mayor de lo necesario, Visual FoxPro reducirá su tamaño. Si existe y ADBOBJECTS( ) devuelve 0 porque no encuentra ningún nombre, permanecerá sin cambios. Si la matriz no existe y ADBOBJECTS( ) devuelve 0, la matriz no se creará.

Cuando especifique CONNECTION, TABLE o VIEW para cSetting, se crea una matriz unidimensional. Cada fila de la matriz unidimensional contiene el nombre de una conexión, tabla o vista de la base de datos.

Cuando se especifica RELATION para cSetting, se crea una matriz bidimensional. Cada fila de la matriz bidimensional corresponde a una relación de la base de datos. La primera columna de una fila de matriz contiene el nombre de la tabla secundaria, y la columna secundaria de una fila de matriz contiene el nombre de la tabla principal. La tercera columna contiene el nombre de la etiqueta del índice para la tabla secundaria, y la cuarta columna contiene el nombre de la etiqueta del índice para la tabla principal.

La quinta columna de una fila de matriz contiene información de integridad referencial. Esta columna está vacía si la relación no tiene reglas de integridad referencial. Si la relación tiene reglas de integridad referencial, la columna contiene caracteres que corresponden al tipo de reglas de integridad referencial para actualizaciones, eliminaciones e inserciones.

El primer carácter indica el tipo de regla de actualización, el segundo carácter indica el tipo de regla de eliminación y el tercero indica el tipo de regla de inserción.

Los posibles valores para actualizaciones y eliminaciones son “C” para cascada, “R” para restringir e “I” para pasar por alto. Los valores posibles para inserciones son “R” para restringir e “I” para pasar por alto. Por ejemplo, si una relación tiene actualizaciones en cascada, eliminaciones restringidas y pasa por alto las reglas de integridad referencial de inserción, la columna contendrá “CRI”.

cSetting
Especifica los nombres que se sitúan en una matriz de variables. La tabla siguiente indica los valores para cSetting y los nombres correspondientes situados en la matriz:
cSetting | Nombres
CONNECTION | Nombres de conexión
RELATION | Relaciones de tabla
TABLE | Nombres de tabla
VIEW | Nombres de vista

La configuración de CONNECTION, RELATION, TABLE y VIEW no se puede abreviar.

Observaciones

Cuando se ejecuta ADBOBJECTS( ), debe haber una base de datos abierta y actual; de lo contrario, Visual FoxPro generará un mensaje de error.

Ejemplo

El ejemplo siguiente abre la base de datos testdata y utiliza ADBOBJECTS( ) para crear una matriz llamada gaTables que contiene los nombres de las tablas de la base de datos. Después se muestran los nombres de las tablas.

* Close any open databases
CLOSE DATABASES
* Clear desktop to prepare for displaying the array
CLEAR
* Open sample testdata database
OPEN DATABASE (HOME(2) + 'Data\testdata')
* Function call with cSetting for table names
=ADBOBJECTS(gaTables, "TABLE")
* Displays array gaTables created by ADBOBJECTS( ) function
DISPLAY MEMORY LIKE gaTables

Vea también

ADATABASES( ) | CREATE | CREATE CONNECTION | CREATE DATABASE | CREATE SQL VIEW | CREATE TABLE - SQL | DISPLAY DATABASE | INDBC( ) | LIST DATABASE | MODIFY DATABASE | SET DATABASE


ADDBS( ) (Función)

Agrega una barra invertida (si fuera necesario) a una expresión de ruta de acceso.

ADDBS(cPath)

Valores devueltos

Character

Parámetros

cPath
Especifica el nombre de la ruta de acceso a la que debe agregar la barra invertida.

Ejemplo

El siguiente código crea un formulario que permite ingresar la ruta a un directorio y convierte dicha entrada en un nombre de ruta plenamente cualificado usando la función ADDBS().

PUBLIC ofrmADDBS

ofrmADDBS=NEWOBJECT("frmADDBS")
ofrmADDBS.Show
RETURN

DEFINE CLASS frmADDBS AS form

Top = 0
Left = 0
Height = 200
Width = 353
Caption = "frmADDBS"
Name = "frmADDBS"

ADD OBJECT txtpath AS textbox WITH ;
Height = 23, ;
Left = 8, ;
TabIndex = 1, ;
Top = 24, ;
Width = 328, ;
Name = "txtPath"

ADD OBJECT label1 AS label WITH ;
AutoSize = .T., ;
Caption = "Ingrese una expresión de ruta de acceso:", ;
Height = 17, ;
Left = 8, ;
Top = 4, ;
Width = 135, ;
TabIndex = 4, ;
Name = "Label1"

ADD OBJECT cmdclose AS commandbutton WITH ;
Top = 166, ;
Left = 252, ;
Height = 27, ;
Width = 84, ;
Caption = "Close", ;
TabIndex = 3, ;
Name = "cmdClose"

ADD OBJECT txtaddbspath AS textbox WITH ;
Height = 23, ;
Left = 7, ;
ReadOnly = .T., ;
TabIndex = 5, ;
TabStop = .F., ;
Top = 121, ;
Width = 328, ;
Name = "txtADDBSPath"

ADD OBJECT label2 AS label WITH ;
AutoSize = .T., ;
Caption = "La misma expresión luego de ADDBS()", ;
Height = 17, ;
Left = 7, ;
Top = 101, ;
Width = 201, ;
TabIndex = 6, ;
Name = "Label2"

ADD OBJECT cmdapplyaddbs AS commandbutton WITH ;
Top = 60, ;
Left = 216, ;
Height = 27, ;
Width = 120, ;
Caption = "Apply ADDBS()", ;
TabIndex = 2, ;
Name = "cmdApplyADDBS"

PROCEDURE cmdclose.Click
THISFORM.Release()
ENDPROC

PROCEDURE cmdapplyaddbs.Click
THISFORM.txtADDBSPath.Value=ADDBS(ALLTRIM(THISFORM.txtPath.Value))
THISFORM.Refresh()
ENDPROC

ENDDEFINE

Vea también

DEFAULTEXT( ) | FILE( ) | FORCEEXT( ) | FORCEPATH( ) | JUSTDRIVE( ) | JUSTEXT( ) | JUSTFNAME( ) | JUSTPATH( ) | JUSTSTEM( )


ADDPROPERTY( ) (Función)

Añade una nueva propiedad a un objeto en tiempo de ejecución.

Se puede utilizar ADDPROPERTY( ) para añadir propiedades y sus valores en objetos de Visual FoxPro, incluyendo aquellos creados desde clases de Visual FoxPro, desde clases COM y desde el comando SCATTER...NAME.

ADDPROPERTY(oObjectName, cPropertyName, [, eNewValue ])

Parámetros

oObjectName
Especifica el nombre del objeto, al cual se añadirá la propiedad.

Si oObjectName no es un objeto válido, Visual FoxPro genera el correspondiente mensaje.

cPropertyName
Especifica el nombre de la nueva propiedad, que será añadida al objeto.

Si la propiedad especificada no existe, será creada y añadida al objeto.

eNewValue
Especifica el valor a asignar a la nueva propiedad.

Si se omite eNewValue y la propiedad existe, Visual FoxPro deja intacto el valor de la propiedad. Si se omite eNewValue y la propiedad es nueva, Visual FoxPro asigna a la nueva propiedad el valor de Falso (.F.).

Valores devueltos

Tipo de datos Lógico. La siguiente tabla describe los valores devueltos por ADDPROPERTY( ) y el comportamiento cuando se intenta añadir una propiedad que ya existe en el objeto.

Valor Devuelto Descripción
Verdadero (.T.) Cuando ADDPROPERTY( ) añade la propiedad con éxito.

Cuando la nueva propiedad es una matriz y la matriz ya existe, ADDPROPERTY( ) redimensiona la matriz al tamaño especificado en cPropertyName. Si se especifica un valor en eNewValue, los valores de todos los elementos de la matriz se igualan a este. Si se omite eNewValue, los valores de todos los elementos de la matriz se igualan a Falso (.F.).

Si la nueva propiedad no es una matriz; pero, la propiedad existente si lo es. La propiedad permanece como matriz con la misma dimensión. Si se especifica un valor en eNewValue, los valores de todos los elementos de la matriz igualan a este. Si se omite eNewValue, los valores de todos los elementos de la matriz se igualan a Falso (.F.).

Si la nueva propiedad no es una matriz y la propiedad existente no es, ni una matriz, ni una propiedad nativa de sólo lectura de Visual Foxpro. Si se especifica un valor en eNewValue, la propiedad existente se establece a ese valor. Si se omite eNewValue, el valor de la propiedad existente permanece inalterada.

Si la propiedad especificada es ya un miembro del objeto pero está marcada como Oculta o Protegida. Visual FoxPro provoca un error, "No se encuentra la propiedad name (Error 1734)", y el valor de la propiedad no se modifica.
Falso (.F.) Cuando ADDPROPERTY( ) no consigue añadir la propiedad.

Si la propiedad es una matriz y la propiedad existente no lo es. La propiedad existente permanece inalterada.

Observaciones

Se pueden crear propiedades del tipo matriz en un objeto. Cuando se hace esto, todos los elementos de la matriz se inicializan a eNewValue, si se ha especificado. En caso contrario, el valor de cada elemento de la matriz se ajusta a Falso (.F.). Para obtener más información acerca de la creación de matrices como propiedades de objetos, ver la sección de Ejemplos.

Visual FoxPro añade la nueva propiedad como Pública. No se puede especificar la propiedad como Protegida u Oculta.

Si la propiedad existe y es una propiedad nativa de Visual Foxpro de sólo lectura, como la propiedad BaseClass, Visual FoxPro provoca un error, "La propiedad name es de sólo lectura (Error 1743)".

Si el nombre de la propiedad no es válido, por ejemplo, porque contiene un espacio o bien otro carácter no admitido, Visual FoxPro provoca un error, "Nombre de propiedad incorrecto (Error 1470)".

Para instancias de objetos derivadas de clases nativas de Visual FoxPro, ADDPROPERTY( ) respeta la configuración de visibilidad del método AddProperty. Si AddProperty está marcado como Oculto o Protegido, ADDPROPERTY( ) no crea la propiedad y devuelve Falso (.F.). Si el método AddProperty está marcado como Público (valor predeterminado), ADDPROPERTY( ) crea la nueva propiedad y devuelve verdadero (.T.). Este comportamiento protege el diseño de la clase original.

Nota No se aplica a objetos COM creados con clases OLEPUBLIC de Visual FoxPro.

ADDPROPERTY( ) no funciona, utilizando el comando FOR EACH con referencias de objetos. Sin embargo, en su lugar es posible el método AddProperty.

Ejemplos

Ejemplo 1

El siguiente ejemplo, añade una nueva propiedad a un objeto creado con el comando SCATTER.

USE customers
SCATTER NAME oCust
ADDPROPERTY(oCust,"MyProperty")

Ejemplo 2

El siguiente ejemplo, crea una propiedad matriz en el objeto oMyForm y muestra su contenido, 1 y "Two".

oMyForm = CREATEOBJECT('Form')
ADDPROPERTY(oMyForm, 'MyArray(2)', 1)
oMyForm.MyArray(2) = "Two"
CLEAR
? oMyForm.MyArray(1)
? oMyForm.MyArray(2)

Vea también

Funciones | AddProperty (Método) | SCATTER (Comando) | REMOVEPROPERTY( ) (Función)


ADEL( ) (Función)

Elimina un elemento de una matriz de una dimensión, o una fila o columna de una matriz de dos dimensiones.

ADEL(ArrayName, nElementNumber [, 2])

Valores devueltos

Numérico

Parámetros

ArrayName
Especifica la matriz de la que se elimina el elemento, la fila o la columna.
nElementNumber
Especifica el número del elemento, fila o columna que se desea eliminar de la matriz. Si la matriz es multidimensional, nElementNumber especifica la fila. Debe incluir el argumento opcional 2 para eliminar una columna de la matriz.
Sugerencia Para obtener más información acerca de cómo puede hacer referencia a los elementos de una matriz, vea DIMENSION.
2
Elimina una columna de la matriz.

Observaciones

Al eliminar un elemento o una fila de una matriz, no cambia el tamaño de la matriz; en cambio, los elementos, las filas o las columnas finales se mueven hacia el inicio de la matriz y el último elemento, fila o columna de la matriz se establece como Falso (.F.). Si elimina una columna, los valores de los elementos de la columna eliminada se establecen como Falso (.F.), pero los elementos finales no se mueven.

Si el elemento, fila o columna se elimina satisfactoriamente, se devuelve el valor 1.

Ejemplo

El ejemplo siguiente crea y llena una matriz, y después busca un nombre de organización concreto que, si se encuentra, se quita de la matriz.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer     && Open customer table
SELECT company FROM customer ;
WHERE country = 'UK' ;
INTO ARRAY gaCompanies
gnCount = _TALLY
gcName = 'Seven Seas Imports'
CLEAR
DISPLAY MEMORY LIKE gaCompanies
gnPos = ASCAN(gaCompanies, gcName)   && Search for company
IF gnPos != 0
* Company found, remove it from the array
= ADEL(gaCompanies, gnPos)
gnCount = gnCount - 1
ENDIF
DISPLAY MEMORY LIKE gaCompanies

Vea también

ACOPY( ) | ADIR( ) | AELEMENT( ) | AFIELDS( ) | AINS( ) | ALEN( ) | ASCAN( ) | ASORT( ) | ASUBSCRIPT( ) | DIMENSION


ADIR( ) (Función)

Coloca información acerca de archivos en una matriz y, a continuación, devuelve el número de archivos.

ADIR(ArrayName [, cFileSkeleton [, cAttribute [, nFlag]]])

Valores devueltos

Numérico

Parámetros

ArrayName
Especifica el nombre de la matriz. Si la matriz incluida no existe, Visual FoxPro la creará automáticamente. Si la matriz existe y no es suficientemente grande para contener toda la información, Visual FoxPro aumentará automáticamente su tamaño para dar cabida a la información. Si la matriz es mayor de lo necesario, Visual FoxPro reducirá su tamaño. Si la matriz existe y ADIR( ) devuelve 0 porque no se han encontrado archivos coincidentes, la matriz permanecerá inalterada. Si la matriz no existe y ADIR( ) devuelve 0, la matriz no se creará.

La tabla siguiente describe el contenido de cada columna de la matriz y el tipo de datos de cada columna:

Columna | Contenido de la matriz | Tipo de datos
1 | Nombres de archivo | Character
2 | Tamaños de archivo | Numérico
3 | Fecha de última modificación | Fecha
4 | Hora de última modificación | Character
5 | Atributos de archivo | Character

La última columna de la matriz contiene los atributos de archivo de los archivos coincidentes. Cada atributo de archivo se expresa mediante una letra y un archivo puede tener más de un atributo. La tabla siguiente indica el atributo de archivo representado por cada letra:

Letra | Atributo
A | Archivo de lectura y escritura
H | Oculto
R | Sólo lectura
S | Sistema
D | Directorio
cFileSkeleton
Especifica una estructura de archivo de forma que pueda almacenar información acerca de los archivos con nombres o extensiones que coincidan con un criterio de búsqueda. Por ejemplo, el criterio puede ser todas las tablas, todos los archivos de texto, todos los archivos con nombres cuya primera letra sea A, etc. Estas búsquedas generales se realizan mediante comodines como * y ? en cFileSkeleton. Un signo de interrogación representa un único carácter y un asterisco representa un número cualquiera de caracteres. Puede utilizar un número cualquiera de comodines en cualquier posición de la estructura de archivo.

Puede especificar una unidad o directorio donde buscar archivos coincidentes. Si no se especifica una unidad y un directorio, Visual FoxPro coloca en la matriz información relativa a los archivos del directorio actual.

cAttribute
Especifica la inclusión de subdirectorios y archivos ocultos o de sistema

cAttribute puede contener cualquier combinación de D, H y S. La inclusión de D devuelve nombres de subdirectorios del directorio actual, además de los nombres de archivo que coincidan con la estructura de archivos especificada en cFileSkeleton. La inclusión de H devuelve información acerca de los archivos ocultos que coincidan con la estructura especificada en cFileSkeleton. La inclusión de S devuelve información acerca de los archivos del sistema que coincidan con la estructura especificada en cFileSkeleton.

Puede incluir una cadena vacía en cFileSkeleton para devolver únicamente los nombres de subdirectorios, los archivos ocultos o los archivos del sistema.

Puede incluir V en cAttribute para devolver el nombre de volumen de la unidad actual. Únicamente se devuelve el nombre de volumen a la matriz si se incluye V con D, H o S. El nombre de volumen se almacena en el primer elemento de la matriz y el resto de la matriz se trunca.

nFlag
Especifica si la pantalla proporciona nombres DOS o distinción real entre mayúsculas y minúsculas.
nFlag | Descripción
0 | (Predeterminado) La pantalla muestra el nombre completo del archivo en mayúsculas.
1 | La pantalla muestra los nombres con las mayúsculas y minúsculas originales.
2 | La pantalla sigue la convención de nomenclatura 8+3 de DOS

Observaciones

Para cada archivo, ADIR( ) coloca en la matriz el nombre de archivo, su tamaño, la fecha y la hora de la última modificación, y los atributos.

Ejemplo

El siguiente ejemplo utiliza ADIR( ) para crear una matriz que contiene información de base de datos. A continuación se muestran los nombres de las bases de datos.

CLOSE DATABASES
SET DEFAULT TO (HOME(2) + 'Data')
gnDbcnumber = ADIR(gaDatabase, '*.DBC')  && Create array
CLEAR
FOR nCount = 1 TO gnDbcnumber  && Loop for number of databases
? gaDatabase(nCount,1)  && Display database names
ENDFOR
SET PATH TO HOME( )  && Set path to Visual FoxPro directory

Vea también

ADEL( ) | AELEMENT( ) | AFIELDS( ) | AINS( ) | ALEN( ) | ANETRESOURCES( ) | ASCAN( ) | ASORT( ) | ASUBSCRIPT( ) | DIMENSION | DIR o DIRECTORY


ADLLS( ) (Función)

Devuelve una matriz que contiene los nombres de las funciones cargadas por las declaraciones de DLL (DECLARE DLL).

ADLLS(ArrayName)

Parámetros

Arrayname
Especifica el nombre de la matriz. Si la matriz que especifica no existe, Visual FoxPro la creará automáticamente. Si la matriz existe, pero no es suficientemente grande para dar cabida a toda la información de la base de datos, Visual FoxPro aumentará automáticamente el tamaño de la matriz para proporcionar espacio para la información. Si la matriz es mayor de lo necesario, Visual FoxPro reducirá su tamaño. Si no se declararon funciones DLL, la matriz no se crea ni se modifica una matriz existente.

Valor devuelto

Numérico

Observaciones

El valor numérico devuelto por la función ADLLS especifica el número de funciones DLL cargadas. Si no se proporciona ningún alias, el segundo elemento devuelve el mismo valor que el primero (el nombre de la función).

La matriz creada por la función ADLLS tiene el siguiente formato:

Columna | Información de campo | Tipo de datos
1 | Nombre de función | Character
2 | Alias de función | Character
3 | Nombre de biblioteca | Character

Para obtener información detallada acerca de cómo declarar funciones, vea DECLARE - DLL (Comando).

Vea también

Matrices | CLEAR (Comandos) | DISPLAY DLLS (Comando) | LIST DLLS (Comando) | DISPLAY STATUS (Comando)


ADOCKSTATE( ) (Función)

Recupera el estado de acople de cualquier barra de herramientas o ventana del Integrated Development Environment (IDE), que se pueda acoplar.

ADOCKSTATE( ArrayName [, 1 | 2 ] )

Parámetros

ArrayName
Especifica una matriz para llenar con el estado de acople de una ventana acoplable. La matriz contiene la siguiente información.
Elemento | Descripción
1 | Nombre de la ventana o barra de herramientas IDE
2 Estado de acople:

1 - Acoplado

0 - Desacoplado
3 | Posición de acople. Para valores, vea DOCK WINDOW (Comando).
4 | Ventana acoplada o nombre de la ventana a la cual está acoplada la ventana especificada si está en una ficha o enlace de anclado. Este elemento no se aplica a barras de herramientas.
1
Devuelve sólo ventanas IDE.
2
Devuelve sólo barras de herramientas.

Valores devueltos

Dato tipo Numérico. ADOCKSTATE( ) devuelve el número de filas llenadas o cero (0) si no encuentra ninguna.

Observaciones

La matriz llenada puede contener ambas barras de herramientas de sistema o definida por el usuario.

Para barras de herramientas o ventanas acopladas al escritorio de Visual FoxPro, el cuarto elemento de la matriz contiene el nombre del escritorio, el cual puede recuperar utilizando la propiedad _VFP.Caption.

Nota Si una barra de herramientas aparece entre el escritorio Visual FoxPro y una ventana acoplada a dicho escritorio, el cuarto elemento contiene el nombre de la barra de herramientas.

Si una ventan o barra de herramientas no está acoplada, el cuarto elemento contiene una cadena vacía.

El primer elemento en cada fila para una barra de herramientas definida por el usuario, contiene el valor de la propiedad Caption para esa barra de herramientas.

Para ventanas acopladas en fichas, la ventana más a la izquierda es la ventana ancla y contiene detalles acerca de cómo se acopla el contenedor. Visual FoxPro recorre las ventanas de izquierda a derecha.

Para ventanas acopladas como enlaces, la ventan superior izquierda en el contenedor de enlaces acoplados, contiene detalles acerca de cómo se acopla el contenedor completo. Las siguientes reglas determinan el orden de acoplado:

  • Visual FoxPro recorre el contenedor de enlaces acoplados empezando en la ventana superior más a la izquierda.
  • Visual FoxPro continúa recorriendo ventanas desde arriba hacia abajo seguido de izquierda a derecha. Un contenedor de enlaces acoplados podría consistir de múltiples contenedores interiores. Así, el orden de las ventanas en la matriz de ADOCKSTATE( ) podría aparecer diferente.
  • La posición contenida en el tercer elemento de la matriz es relativa a la ventana referenciada en el primer elemento de la matriz.
  • Visual FoxPro recorre primero todas las ventanas acopladas como enlaces y luego las ventanas acopadas como fichas. Esencialmente, Visual FoxPro hace dos pasadas a través del contenedor enlazado. La primer pasada es para ventanas acopladas como enlaces y la segunda es para ventanas acopladas como fichas. Visual FoxPro sólo incluye la ficha más a la izquierda en la primer pasada para enlaces.
  • Visual FoxPro recorre un contenedor de fichas acopladas de izquierda a derecha.

Si el tercer elemento de la matriz, se establece a -1 (no acoplado), el contenedor no está acoplado. Si el contenedor está acoplado al escritorio, el tercer elemento de la matriz contiene la posición en la cual el contenedor está acoplado al escritorio Visual FoxPro como se refiere en el cuarto elemento de la matriz.

Por ejemplo, el siguiente código crea una matriz, abre y acopla varias ventanas y produce una matriz como se muestra:

CLEAR ALL
PUBLIC aa
DIMENSION aa[1]
ACTIVATE WINDOW Command
ACTIVATE WINDOW Trace
ACTIVATE WINDOW Document
ACTIVATE WINDOW Properties
ACTIVATE WINDOW Watch
ACTIVATE WINDOW Locals
SET
DOCK WINDOW View POSITION -1
DOCK WINDOW Command POSITION -1
DOCK WINDOW Trace POSITION -1
DOCK WINDOW Document POSITION -1
DOCK WINDOW Properties POSITION -1
DOCK WINDOW Watch POSITION -1
DOCK WINDOW Command POSITION 1 WINDOW View
DOCK WINDOW Trace POSITION 1 WINDOW Command
DOCK WINDOW Document POSITION 3 WINDOW View
DOCK WINDOW Properties POSITION 3 WINDOW Trace
DOCK WINDOW Watch POSITION 4 WINDOW Command
DOCK WINDOW Locals POSITION 3 WINDOW Command
ADOCKSTATE(aa,1)

La matriz resultante aparece como sigue:

Archivo | Primer elemento | Segundo elemento | Tercer elemento | Cuarto elemento
1 | Trace | 1 | -1 |
2 | Properties | 1 | 3 | Trace
3 | Watch | 1 | 2 | Trace
4 | Locals | 1 | 3 | Watch
5 | View | 1 | 2 | Watch
6 | Document View | 1 | 3 | View
7 | Command | 1 | 4 | Watch

Visual FoxPro muestra información de acoplado para las ventanas del depurador. Si una ventana no está acoplada, Visual FoxPro muestra el nombre, estado de acoplado (0) y posición (-1). Si una ventana está acoplada, Visual FoxPro sólo muestra el nombre, estado de acoplado (1), posición y ventana ("Visual FoxPro Debugger").

Históricamente en versiones anteriores de Visual FoxPro, la ventana Sesión de Datos siempre se ha referido como la ventana Vista. Adicionalmente, el lenguaje usado para controlar esta ventana, tal como HIDE WINDOW, ACTIVATE WINDOW, WONTOP( ), también se refiere a esta ventana como la ventana Vista. Visual FoxPro continúa refiriéndose a la ventana Vista en la función ADOCKSTATE( ).

Ejemplo

El siguiente ejemplo muestra el resultado devuelto por ADOCKSTATE( ) cuando previamente no se ha acolado ninguna barra de herramientas o ventana, por ejemplo, después de borrar el los archivos de recursos FoxUser o cuando Visual FoxPro está recién instalado. Asegúrese que la ventana comandos esté abierta.

CLEAR
dockNum = ADOCKSTATE(dockState)
? dockNum       && Returns 2 because Standard toolbar also exists.
? dockState(1)  && Outputs "COMMAND".
? dockState(4)  && Outputs an empty string because the Command
&& window is not docked.
? dockState(5)  && Outputs "Standard".
? dockState(8)  && Outputs "Microsoft Visual FoxPro" because the
&& Standard toolbar is docked to the Microsoft
&& Visual FoxPro desktop.

El siguiente ejemplo muestra cómo utilizar el comando DOCK WINDOW para acoplar la ventana Comandos a la ventana escritorio de Visual FoxPro y utiliza ADOCKSTATE( ) para obtener el estado acoplado de la ventana Comandos. Primero, asegúrese que la ventana Comandos está abierta. Después de acoplar la ventana Comandos, puede ver que la barra de herramientas Estándar y la ventana Comandos están acopladas a la ventana escritorio de Visual FoxPro. La posición de las barras de herramientas o ventanas, en la matriz devuelta por ADOCKSTATE( ) puede variar dependiendo del orden en el cual fueron acopladas.

CLEAR
DOCK WINDOW Command POSITION 0
dockNum = ADOCKSTATE(dockState)
? dockNum       && Returns 2 because Standard toolbar also exists.
? dockState(1)  && Outputs "Standard".
? dockState(4)  && Outputs "Microsoft Visual FoxPro".
? dockState(5)  && Outputs "COMMAND".
? dockState(8)  && Outputs "Microsoft Visual FoxPro".

Vea también

Funciones | Caption (Propiedad) | DOCK WINDOW (Comando) | Docked (Propiedad) | Acoplar ventanas


AELEMENT( ) (Función)

Devuelve el número de un elemento de la matriz a partir de los subíndices del elemento.

AELEMENT(ArrayName, nRowSubscript [, nColumnSubscript])

Valores devueltos

Numérico

Parámetros

ArrayName
Especifica el nombre de la matriz cuyo número de elemento se desea devolver.
nRowSubscript
Especifica el subíndice de fila. Si la matriz es unidimensional, AELEMENT( ) devolverá nRowSubscript.

Si sólo incluye nRowSubscript y es mayor que el número de filas de la matriz, Visual FoxPro generará un mensaje de error.

nColumnSubscript
Especifica el subíndice de columna. Si la matriz es bidimensional, incluya nRowSubscript y nColumnSubscript.

Observaciones

Puede hacer referencia a un elemento de una matriz bidimensional de dos maneras. El primer método utiliza dos subíndices para especificar la posición de fila y columna del elemento en la matriz y el segundo método utiliza un número de elemento único. AELEMENT( ) devuelve el número de elemento cuando se facilitan los subíndices de fila y columna de un elemento.

Las funciones ADEL( ), ADIR( ), AFIELDS( ), AINS( ), ALEN( ), ASCAN( ), ASORT( ) y ASUBSCRIPT( ) de Visual FoxPro pueden manipular matrices de dos dimensiones y precisan que se haga referencia a los elementos por su número de elemento. AELEMENT( ) facilita la conversión de subíndices a un número de elemento para utilizarlo en estas funciones. Los subíndices correspondientes de fila y columna se pueden devolver a partir del número de elemento mediante ASUBSCRIPT( ).

El ejemplo siguiente ilustra la forma de crear una matriz con dos filas y tres columnas. DISPLAY MEMORY muestra el contenido de los elementos de la matriz, enumerados en orden del número de elemento.

DIMENSION gaMyArray(2,3)
DISPLAY MEMORY LIKE gaMyArray
gaMyArray   Pub  A
( 1, 1)   L  .F. (element number 1)
( 1, 2)   L  .F. (element number 2)
( 1, 3)   L  .F. (element number 3)
( 2, 1)   L  .F. (element number 4)
( 2, 2)   L  .F. (element number 5)
( 2, 3)   L  .F. (element number 6)

Se puede hacer referencia a un elemento mediante sus subíndices o su número de elemento. Los comandos STORE 'INVOICE' TO gaMyArray(2, 1) y STORE 'INVOICE' TO gaMyArray(4) almacenan la cadena de caracteres INVOICE en el mismo elemento de la matriz.

En las matrices de una dimensión, un número de elemento coincide con su subíndice de fila única. No es necesario utilizar AELEMENT( ) con las matrices de una dimensión.

Vea también

ADEL( ) | ADIR( ) | AFIELDS( ) | AINS( ) | ALEN( ) | ASCAN( ) | ASORT( ) | ASUBSCRIPT( ) | DIMENSION | DISPLAY MEMORY


AERROR( ) (Función)

Crea una matriz de variables con información relativa al error más reciente de Visual FoxPro, OLE u ODBC.

AERROR(ArrayName)

Valores devueltos

Numérico

Parámetros

ArrayName
Especifica el nombre de la matriz que creará AERROR( ).

Observaciones

AERROR( ) crea una matriz con siete columnas y devuelve el número de filas de la matriz. El tipo de error que se produce determina el número de filas de la matriz.

La siguiente tabla describe el contenido de cada elemento cuando ocurre un error de Visual FoxPro. Cuando se produce un error de Visual FoxPro, la matriz contiene una fila.

Número de elemento | Descripción
1 | Numérico. El número del error. Es idéntico al valor devuelto por ERROR( ).
2 | Character. El texto del mensaje de error. Es idéntico al valor devuelto por MESSAGE( ).
3 | El valor Null. No obstante, si el error tiene un parámetro de error adicional, contiene el texto de dicho parámetro. Es idéntico al valor devuelto por SYS(2018).
4 | El valor Null. No obstante, cuando corresponda, contiene el número del área de trabajo donde se produjo el error.
5 | El valor Null. No obstante, si ha fallado un desencadenante (error 1539), contiene uno de los siguientes valores numéricos: 1 - Error del desencadenante Insert. 2 – Error del desencadenante Update. 3 – Error del desencadenante Delete.
6 | El valor Null.
7 | El valor Null.

La tabla siguiente describe el contenido de cada elemento cuando se producen los errores número 1427 ó 1429. Cuando se producen estos errores OLE, la matriz contiene una fila.

Número de elemento | Descripción
1 | Numérico. Contiene 1427 ó 1429.
2 | Character. El texto del mensaje de error de Visual FoxPro.
3 | Character. El texto del mensaje de error de OLE.
4 | Character. El nombre de la aplicación (por ejemplo, Microsoft Excel).
5 | El valor nulo o carácter. Contiene el nombre del archivo de Ayuda de la aplicación, donde hay más información acerca del error; de lo contrario, contiene el valor nulo.
6 | El valor nulo o carácter. Contiene el Id. de contexto de la Ayuda para el tema de Ayuda si hay información disponible en la aplicación; de lo contrario, devuelve el valor nulo.
7 | Numérico. Un número de excepción de OLE 2.0.

La tabla siguiente describe el contenido de cada elemento cuando se produce un error ODBC número 1526. Cuando se produce un error ODBC, la matriz contiene dos o más filas, una por cada error ODBC.

Número de elemento | Descripción
1 | Numérico. Contiene 1526.
2 | Character. El texto del mensaje de error.
3 | Character. El texto del mensaje de error ODBC.
4 | Character. El estado SQL de ODBC actual.
5 | Numérico. El número de error desde el origen de datos ODBC.
6 | Numérico. El controlador de conexión ODBC.
7 | El valor Null.

Ejemplo

El ejemplo siguiente utiliza ON ERROR para especificar una rutina de tratamiento de errores denominada errhand. Se genera un error al ejecutar un comando mal escrito (BRWS). La rutina errhand utiliza AERROR( ) para crear una matriz que contiene información de error y se muestra esta información.

ON ERROR DO errhand     && errhand is the error handler procedure
BRWS  && Causes a syntax error
ON ERROR  && Restore system error handler
PROCEDURE errhand
= AERROR(aErrorArray)  && Data from most recent error
CLEAR
? 'The error provided the following information'  && Display message
FOR n = 1 TO 7  && Display all elements of the array
? aErrorArray(n)
ENDFOR

Vea también

COMRETURNERROR( ) | CREATE TRIGGER | ERROR | ERROR( ) | MESSAGE( ) | ON ERROR | SYS(2018) - Parámetro de mensaje de error | Mensajes de error ordenados alfabéticamente | Mensajes de error ordenados por número


AEVENTS() (Función)

Es posible utilizar la función AEVENTS() para obtener el número enlaces de evento (event bindings).

AEVENTS( ArrayName [, 0 | oEventObject ] )

Parámetros

ArrayName
Especifica el nombre de la matriz que contiene el resultado de AEVENTS().
0
Especifica que AEVENTS() devuelva una matriz de tres elementos que contienen una referencia de objeto al origen del evento actual, el nombre del evento disparado y cómo dicho evento fue disparado.
Columna | Descripción | Tipo
1 | Origen del evento | Referencia a objeto
2 | Evento | Cadena de caracteres
3 Tipo de evento o cómo el evento fue disparado. 0 - Sistema

1 - Función RAISEEVENT( )

2 - Llamada de método

El tercer elemento de la matriz indica cómo fue disparado el evento. Si el evento es una propiedad, este valor puede ser 1 ó 2. El valor es 2 si la propiedad está establecida o asignada.

oEventObject
Especifica una referencia a un objeto. Si se especifica una referencia a un objeto, AEVENTS() devuelve una matriz de cinco columnas que contiene los eventos activados y los métodos delegados para oEventObject. Cada fila en ArrayName representa un enlace. La siguiente tabla describe la información de cada una de estas cinco columnas.
Columna | Descripción | Tipo
1 .T. si el segundo elemento es el evento fuente

.F. si el segundo elemento es el identificador del evento

 Lógico
2 | Origen del evento si se pasa el identificador del evento a oEventObject; en caso contrario, identificador del evento si se pasa el origen del evento a oEventObject. | Referencia a objeto
3 | Evento | Cadena de caracteres
4 | Método delegado | Cadena de caracteres
5 | Indicadores para BINDEVENT() | Entero

Cuando se pasa oEventObject, el número de los enlaces devuelto por AEVENTS() debería ser igual al número de eventos desenlazados devuelto por la función UNBINDEVENTS() cuando se pasa sólo el parámetro oEventObject.

Valores devueltos

Tipo de dato numérico. AEVENTS() retorna el número de enlaces de evento, cada uno de los cuales aparece como una fila en ArrayName.

Observaciones

Si AEVENTS() retorna 0 y la matriz no existe, Visual FoxPro no la crea. Visual FoxPro cambia o modifica una matriz existente solamente si se devuelven resultados válidos. La matriz permanece sin cambios en las siguientes condiciones:

  • No existen eventos.
  • Se especifica un valor de 0 como el segundo parámetro y AEVENTS() no aparece dentro de un evento o oEventObject no tiene enlaces.

Ejemplo

El siguiente ejemplo muestra como usar AEVENTS( ) para obtener el número de enlaces de evento existentes. BINDEVENTS( ) mantiene el Examinador de clases posicionado sobre el lado derecho del escritorio de Visual FoxPro, independientemente de cómo se cambie el tamaño del escritorio. Para más información ver la Función BINDEVENT( ).

UNBINDEVENTS( ) desenlaza el evento Resize de la variable de sistema _SCREEN del objeto, oHandler. AEVENTS( ) devuelve el número de enlaces de evento antes de BINDEVENT( ) y después de UNBINDEVENTS( ) en una matriz denominada myArray:

PUBLIC oHandler
oHandler=NEWOBJECT("myhandler")
DO (_browser)
BINDEVENT(_SCREEN,"Resize",oHandler,"myresize")
AEVENTS(myArray,oHandler)
numRows=ALEN(myArray,1)
numCols=ALEN(myArray,2)
WAIT "Rows in array: " + TRANSFORM(numRows) WINDOW AT 20,20
WAIT "Cols in array: " + TRANSFORM(numCols) WINDOW AT 20,20
FOR count1 = 1 TO numRows
FOR count2 = 1 TO numCols
WAIT myArray[count1,count2] WINDOW AT 20,20
ENDFOR
ENDFOR
UNBINDEVENTS(_SCREEN,"Resize",oHandler,"myresize")
AEVENTS(myArray,oHandler)
numRows=ALEN(myArray,1)
numCols=ALEN(myArray,2)
WAIT "Rows in array: " + TRANSFORM(numRows) WINDOW AT 20,20
WAIT "Cols in array: " + TRANSFORM(numCols) WINDOW AT 20,20
FOR count1 = 1 TO numRows
FOR count2 = 1 TO numCols
WAIT myArray[count1,count2] WINDOW AT 20,20
ENDFOR
ENDFOR
DEFINE CLASS myhandler AS Session
PROCEDURE myresize
_obrowser.left = _SCREEN.Width - _obrowser.width
RETURN
ENDDEFINE

Vea también

Funciones | Enlace de Eventos para objetos de Visual FoxPro | BINDEVENT( ) (Función) | UNBINDEVENTS( ) (Función) | RAISEEVENT() (Función)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


AFIELDS( ) (Función)

Incluye en una matriz información acerca de la estructura de la tabla actual y devuelve el número de campos de la tabla.

AFIELDS( ArrayName [, nWorkArea | cTableAlias ] )

Parámetros

ArrayName
Especifica una matriz en la que se incluye información acerca de la estructura de la tabla. Si la matriz que incluye en AFIELDS( ) no existe, Visual FoxPro la creará automáticamente. Si la matriz existe y no es suficientemente grande para contener toda la información devuelta por AFIELDS( ), el tamaño de la matriz aumentará automáticamente para dar cabida a la información.

Si la matriz especificada no existe, Visual FoxPro automátimente la crea. Si la matriz existe y no es lo suficientemente grande para contener la información retornada por AFIELDS( ), el tamaño de la matriz es automáticamente incrementado para acomodar la información.

nWorkArea
Especifica el área de trabajo de la tabla cuya información de estructura se almacena en una matriz.
cTableAlias
Especifica el alias de la tabla cuya información de estructura se coloca en una matriz.

Si omite nWorkArea y cTableAlias, la información de la estructura se colocará en una matriz para la tabla en el área de trabajo seleccionada actualmente.

Valores de Retorno

Tipo de datos numérico. AFIELDS( ) retorna el número de campos en la tabla. La matriz contiene 18 columnas y tiene el mismo número de filas como campos en la tabla.

La tabla siguiente describe el contenido de cada columna de la primera fila de la matriz y el tipo de datos de la información almacenada en cada columna. Los valores de las propiedades específicas de tabla de las columnas 10 a 16 sólo aparecerán en la primera fila de la matriz. Se crea una fila para cada campo de la tabla.

Número de columna | Información de campo | Tipo de datos
1 | Field name | Caracter
2 | Field type: C = Character D = Date L = Logical M = Memo N = Numérico F = Float I = Integer B = Double Y = Currency T = DateTime G = General | Caracter
3 | Ancho del Campo | Numérico
4 | Posiciones decimales | Numérico
5 | Valores nulos permitidos | Lógicas
6 | Conversión de página de códigos no permitida | Lógicas
7 | Regla de validación del campo | Caracter
8 | Texto de validación del campo | Caracter
9 | Valor predeterminado del campo | Caracter
10 | Regla de validación de la tabla | Caracter
11 | Texto de validación de la tabla | Caracter
12 | Nombre largo de tabla | Caracter
13 | Expresión del desencadenante Insert | Caracter
14 | Expresión del desencadenante Update | Caracter
15 | Expresión del desencadenante Delete | Caracter
16 | Comentario de tabla | Character
17 | Siguiente valor para autoincremento | Numérico
18 | Incremento para Autoincremental | Numérico

Observaciones

Si los campos en la tabla usan autoincremento, el valor para Incremento (elemento 18) es mayor que 0.

Puede utilizar COPY STRUCTURE EXTENDED para incluir información similar en una tabla, en vez de incluirla en una matriz.

Ejemplo

El ejemplo siguiente crea una matriz denominada gaMyArray que contiene información acerca de los campos de la tabla Customer. Se muestran los nombres de los campos.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE Customer     && Abrir tabla Customer.
gnFieldcount = AFIELDS(gaMyArray)  && Crea la matriz.
CLEAR
FOR nCount = 1 TO gnFieldcount
? gaMyArray(nCount,1)  && Muestra los nombres de los campos
ENDFOR

El siguiente ejemplo hace uso de una función definida por el usuario llamada NextValue, ésta retorna el valor siguiente de un campo autoincremental, haciendo uso de la función AFIELDS().

CLOSE DATABASES ALL
CREATE CURSOR cTemp (iid int AUTOINC, dFecha d)
lnRecords = RAND(-1)*100
FOR lnCounter=1 TO lnRecords
INSERT INTO cTemp(dFecha) VALUES (DATE(2003,01,01)+(RAND()*365))
ENDFOR
?"Siguiente valor:"+STR(NextValue("cTemp","iid"))
Function NextValue
PARAMETERS tcAlias,tcField
LOCAL lnCounter &&Contador de propósito general
lnReturnValue = 0
FOR lnCounter=1 to AFIELDS(laFields,tcAlias)
IF UPPER(tcField)=laFields[lnCounter,1]
RETURN laFields[17]
ENDIF
ENDFOR
RETURN 0
ENDFU

Vea también

ADEL( ) | ADIR( ) | AELEMENT( ) | AINS( ) | ALEN( ) | ALTER TABLE - SQL | ASCAN( ) | ASORT( ) | ASUBSCRIPT( ) | Autoincremento de valores en campos de una tabla | COPY STRUCTURE EXTENDED | CREATE | CREATE TABLE | DIMENSION


AFONT( ) (Función)

Coloca en una matriz información acerca de las fuentes disponibles.

AFONT(ArrayName [, cFontName [, nFontSize | nFontCharSet [, nFlags ]]])

Valores devueltos

Dato tipo Lógico. Devuelve Verdadero (.T.) si consigue crear una matriz. De otro modo devuelve Falso (.F.).

Parámetros

ArrayName
Especifica la matriz de variables en que se colocan los nombres de las fuentes disponibles. Si la matriz no es suficientemente grande para contener todas las fuentes, Visual FoxPro aumentará automáticamente su tamaño. Si se especifica una matriz bidimensional existente, Visual FoxPro convertirá la matriz en una matriz unidimensional.
cFontName
Especifica una fuente para la que se coloca información en la matriz.

Si la fuente especificada sólo admite tamaños de fuente discretos (8 puntos, 10 puntos, etc.), los tamaños de fuente se almacenarán en la matriz y AFONT( ) devolverá Verdadero (.T.). Si la fuente especificada en cFontName es escalable (admite valores fraccionarios de tamaño de fuente), la matriz tendrá un solo elemento que contiene –1 y AFONT( ) devolverá Verdadero (.T.).

Si la fuente especificada no está disponible, no se creará la matriz y AFONT( ) devolverá Falso (.F.).

nFontSize
Especifica un tamaño de fuente para la fuente especificada en cFontName.

Si el tamaño de fuente nFontSize está disponible para la fuente especificada en cFontName, la matriz tendrá un único elemento que contiene Verdadero (.T.) y AFONT( ) devolverá Verdadero (.T.). Si el tamaño de fuente no está disponible para la fuente especificada, no se creará la matriz y AFONT( ) devolverá Falso (.F.).

nFontCharSet
Especifica un conjunto de caracteres para la fuente especificada en cFontName. Si el conjunto de caracteres especificado está disponible para la fuente especificada en cFontName, la matriz tendrá un
único elemento conteniendo el valor Verdadero (.T.) y AFONT( ) devuelve Verdadero (.T.). Si el conjunto de caracteres no está disponible para la fuente especificada, la matriz no se crea y AFONT( ) devuelve Falso (.T.).
nFlags
Puede especificar un valor nFlags de 1, el cual llena la matriz con el conjunto de caracteres disponible para una fuente especificada.

Observaciones

AFONT( ) inserta en una matriz los nombres de las fuentes disponibles. También puede utilizarse para determinar qué tamaños de fuente hay disponibles o si una fuente es escalable. Utilice GETFONT( ) para mostrar un cuadro de diálogo que contiene las fuentes, los tamaños de fuente y los estilos disponibles.

El parámetro nFlags controla si el tercer parámetro pasado se trata como el tamaño de fuente o conjunto de caracteres. Si no pasa un valor para nFlag o si nFlag es 0 (para el primer bit), entonces el tercer parámetro se trata como un valor de tamaño de fuente. Si nFlag es 1, entonces el tercer parámetro se trata como un conjunto de caracteres.

Si el tercer parámetro pasado es -1 y nFlag es 0 o no se pasa, la matriz se actualiza con todos los tamaños de fuente disponibles para la fuente especificada en cFontName para fuentes no proporcionales como MS Sans Serif y AFONT( ) devuelve Verdadero (.T.).

Nota Este comportamiento es nuevo en Visual FoxPro 8.0. En versiones anteriores, si especificaba cualquier valor negativo o positivo para tamaño de fuente para una fuente no proporcional, AFONT( ) devolvía Falso (.F.). Este nuevo comportamiento es equivalente a pasar sólo los primeros dos parámetros.

Adicionalmente, si el tercer parámetro pasado es 0 y nFlag es 0 o no se pasa para una fuente no proporcional, AFONT( ) devuelve Falso (.F.). Este comportamiento también es nuevo en Visual FoxPro 8.0. El comportamiento para fuentes proporcionales como TrueType u OpenType (Arial) no ha cambiado.

Si el tercer parámetro es -1 y nFlag es 1, la matriz se actualiza con todos los conjuntos de caracteres disponibles para la fuente especificada en cFontName.

Si sólo se pasa ArrayName en versiones anteriores a Visual FoxPro 8.0, la matriz se llenaba en AFONT( ) incluyendo fuentes extra que realmente no eran parte de una única familia de fuentes. Por ejemplo, la matriz podría haber incluido las siguientes fuentes Arial en versiones anteriores:

  • Arial
  • Arial Baltic
  • Arial Black
  • Arial CE
  • Arial CYR
  • Arial Greek
  • Arial Narrow
  • Arial Tur

Algunas de estas fuentes no están incluidas en un cuadro de diálogo estándar para seleccionar fuentes, como la función GETFONT( ). En la versión 8 de Visual FoxPro, la matriz en AFONT( ) excluye estas fuentes extra. Por ejemplo, la matriz sólo incluye las siguientes fuentes:

  • Arial
  • Arial Baltic
  • Arial Black

Ejemplo

El ejemplo siguiente utiliza AFONT( ) para crear una matriz que contiene los nombres de todas las fuentes disponibles. Se muestra el nombre de cada fuente con un ejemplo. Si hay más de 10 fuentes instaladas solamente se muestran las 10 primeras.

CLEAR
=AFONT(gaFontArray)  && Matriz que contiene nombres de fuente.
gnNumFonts = ALEN(gaFontArray)  && Número de fuentes
IF gnNumFonts > 10
   gnNumFonts = 10  && Muestra primeras 10 fuentes.
ENDIF
FOR nCount = 1 TO gnNumFonts
   ? ALLTRIM(gaFontArray(nCount))  && Muestra nombres de fuente.
?? '  This is an example of ' ;
+ ALLTRIM(gaFontArray(nCount)) FONT gaFontArray(nCount), 8
ENDFOR

Vea también

FONTMETRIC( ) | GETFONT( ) | TXTWIDTH( ) | SYSMETRIC( ) | WFONT( )


AGETCLASS( ) (Función)

Muestra bibliotecas de clases en el cuadro de diálogo Abrir y crea una matriz que contiene el nombre de la biblioteca de clases y la clase elegidas.

AGETCLASS(ArrayName [, cLibraryName [, cClassName [, cTitleText
[, cFileNameCaption [, cButtonCaption]]]]])

Parámetros

ArrayName
Especifica el nombre de la matriz en que se colocan los nombres de la biblioteca de clases y la clase. La tabla siguiente muestra el contenido de cada elemento de la matriz que se crea cuando selecciona una clase.
Elemento | Contenido
1 | Nombre de archivo de la biblioteca de clases elegida.
2 | Nombre de la clase elegida.
cLibraryName
Especifica el nombre de la biblioteca de clases seleccionada inicialmente cuando se muestra el cuadro de diálogo Abrir. cLibraryName puede ser una biblioteca de clases visuales (.vcx) o de programa (.prg).

El nombre de la biblioteca de clases que especifique se muestra en el cuadro de texto Nombre de archivo. Se produce un error si la biblioteca de clases que especificó no existe o si cLibraryName es una cadena vacia o un valor nulo.

cClassName
Especifica el nombre de la clase seleccionada inicialmente en la lista Nombre de clase cuando se muestra el cuadro de diálogo Abrir. Si la clase que especifica no existe, se selecciona la primera clase en la lista Nombre de clase. Se produce un error si omite cLibraryName o si cClassName es el valor nulo.
cTitleText
Especifica el texto que se muestra en la barra de título del cuadro de diálogo Abrir. De manera predeterminada, el texto que se muestra es "Abrir".
cFileNameCaption
Especifica el texto que se muestra junto al cuadro de texto Nombre de archivo. De manera predeterminada, el texto que se muestra es "Nombre de archivo:".
cButtonCaption
Especifica el texto para el botón Aceptar.

Valores retornados

Tipo de dato lógico. AGETCLASS( ) devuelve Verdadero (.T.), si selecciona una clase, y crea una matriz unidimensional conteniendo dos elementos. El primer elemento contiene el nombre de archivo de la biblioteca de clases seleccionada; el segundo elemento contiene el nombre de la clase seleccionada. AGETCLASS devuelve Falso (.F.) si sale del cuadro de dialogo Bibliote de Clase presionando ESC, seleccionando Cancel, o haciendo click en el boton Cerrar.

Observaciones

Si la matriz que especifica no existe, Visual FoxPro automaticamente creará una matriz.

Si la matriz no es lo suficientemente grande para almacenar los nombres de la biblioteca de clases y de la clase, Visual FoxPro automaticamente incrementará el tamaño de la matriz.

Si la matriz es más larga de lo necesario, Visual FoxPro truncará la matriz. Si la matriz existe, y AGETCLASS( ) devuelve Falso (.F.) porque el cuadro de dialogo Biblioteca de Clase fué cerrado por presionar ESC, seleccionar Cancelar, o haciendo click en el botón Cerrar, la matriz permanecerá sin cambios.

Si la matriz no existe, y AGETCLASS( ) devuelve falso (.F.), la matriz no se creará.

Visual FoxPro no soporta AGETCLASS( ) en bibliotecas en tiempo de ejecución.

Ejemplo

El ejemplo siguiente crea una matriz llamada aClassLib. Se cambia el directorio al subdirectorio Samples que contiene las bibliotecas de clases de ejemplo. AGETCLASS( ) se utiliza para mostrar un cuadro de diálogo con la biblioteca de clases Buttons y la clase VCR seleccionada. Si elige el botón Modificar, el nombre de la biblioteca de clases y la clase que elija se almacenan en la matriz. La clase se abre en el Diseñador de clases.

LOCAL aClassLib(2)  && Crea una matriz, inicializada en .F.

cCurrentDir = CURDIR( )  && Guarda el directorio actual.
CD HOME(2) + 'CLASSES'  && Cambia directorios.
AGETCLASS(aClassLib, 'BUTTONS.VCX', 'VCR', 'Modify Class', ;

'Class File:', 'Modify')  && Muestra el dialogo.
CD (cCurrentDir)  && Cambia al directorio previo.
IF TYPE('aClassLib(2)') = 'C'  && Clase seleccionada?

MODIFY CLASS (aClassLib(2)) OF (aClassLib(1))  && Abrir para modificar.
ENDIF

Vea también

ACLASS( ) (Función) | AMEMBERS( ) (Función) | AVCXCLASSES( ) (Función) | CREATE CLASS (Comando)


AGETFILEVERSION( ) (Función)

Crea una matriz que contiene información acerca de archivos con recursos de versión de Windows como los archivos .exe, .dll y .fll, o de servidores de automatización creados en Visual FoxPro.

AGETFILEVERSION(ArrayName, cFileName)

Valores devueltos

Numérico

Parámetros

ArrayName
Especifica el nombre de la matriz en la que se coloca la información del archivo. Si la matriz que especifica no existe, Visual FoxPro la creará automáticamente. Si la matriz existe y no es suficientemente grande para contener la información del archivo, Visual FoxPro aumenta automáticamente el tamaño de la matriz. Si la matriz es mayor de lo necesario, Visual FoxPro reducirá su tamaño.

La siguiente tabla muestra el contenido de cada elemento de la matriz.

Elemento | Contenido
1 | Comentarios
2 | Nombre de compañía
3 | Descripción de archivo
4 | Versión de archivo
5 | Nombre interno
6 | Copyright legal
7 | Marcas comerciales legales
8 | Nombre de archivo original
9 | Versión privada
10 | Nombre de producto
11 Versión de producto

El formato de este valor depende de la versión de Visual FoxPro. Para obtener información detallada, vea VERSION( ) (Función).
12 | Versión especial
13 | Autoregistro OLE (contiene "OLESelfRegister" si el archivo admite autoregistro; de lo contrario contiene la cadena vacía)
14 | Idioma (derivado del Código de traducción)
15 Código de traducción

Por ejemplo, puede usar el código siguiente para determinar el Id. de configuración regional para el archivo ejecutable de Visual FoxPro:

DIMENSION aFiles[1]

AGETFILEVERSION(aFiles,"VFP8.EXE")
? EVAL("0x"+LEFT(aFiles[15],4))
** Returns 1033 for US version
cFileName
Especifica el nombre y opcionalmente la ruta de acceso del archivo de destino.

Observaciones

AGETFILEVERSION( ) se suele utilizar para obtener información acerca de archivos con recursos de la versión de Windows, tales como archivos .exe, .dll y .fll, o servidores de automatización creados en Visual FoxPro. Debe especificar un valor para por lo menos un elemento del cuadro de diálogo Versión EXE para que un servidor de automatización de Visual FoxPro tenga recursos de la versión de Windows.

AGETFILEVERSION( ) devuelve el número de elementos contenidos en la matriz. Si el archivo que especifica no contiene recursos de la versión de Windows, se devuelve el valor cero y la matriz (si se creó) no sufre cambios.

El número mínimo de caracteres a los que se puede abreviar AGETFILEVERSION( ) es 5.

Vea también

ADIR( ) (Función) | DIR o DIRECTORY (Comando) | GETFILE( ) (Función)


AINS( ) (Función)

Inserta un elemento en una matriz de una dimensión, o una fila o columna en una matriz de dos dimensiones.

AINS(ArrayName, nElementNumber [, 2])

Valores devueltos

Numérico

Parámetros

ArrayName
Especifica el nombre de la matriz en que se inserta el elemento.
nElementNumber
Especifica el lugar de la matriz en que se inserta el nuevo elemento, la nueva fila o la nueva columna.

Para insertar un elemento en una matriz de una dimensión, incluya ArrayName y el elemento nElementNumber donde se produzca la inserción. El nuevo elemento se inserta justo antes del elemento nElementNumber. Para insertar una fila en una matriz de dos dimensiones, incluya ArrayName y el número de la fila nElementNumber donde se produzca la inserción. La nueva fila se insertará justo antes de la fila nElementNumber.

Si desea más información acerca de cómo puede hacer referencia a un elemento de una matriz por sus subíndices, vea DIMENSION.

2
Inserta una columna en una matriz de dos dimensiones. La nueva columna se insertará justo antes de la columna especificada con nElementNumber.

Observaciones

Al insertar un elemento, una fila o una columna en una matriz, no cambia el tamaño de la matriz. Los elementos, las filas o las columnas finales se desplazan hacia el final de la matriz y el último elemento, la última fila o la última columna queda fuera de la matriz. El elemento, la fila o la columna recién insertada se inicializa con el valor falso (.F.).

AINS( ) devuelve 1 si el elemento, la fila o la columna se inserta correctamente.

Ejemplo

El ejemplo siguiente crea y llena una matriz con nombres de empresas y, a continuación, busca en la matriz el nombre de una empresa determinada. Si no encuentra el nombre de la compañía, lo inserta en la matriz.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer     && Open customer table
SELECT company FROM customer ;
WHERE country = 'Germany' ;
INTO ARRAY gaCompanies
gnCount = _TALLY
gcName = 'Seven Seas Imports'
CLEAR
DISPLAY MEMORY LIKE gaCompanies
IF ASCAN(gaCompanies, gcName) = 0  && Search for company
*** Company not found-add it ***
DIMENSION gaCompanies[gnCount+1,1]
= AINS(gaCompanies, gnCount-1)
gaCompanies[gnCount-1] = gcName
ENDIF
DISPLAY MEMORY LIKE gaCompanies

Vea también

ACOPY( ) (Función) | ADEL( ) (Función) | ADIR( ) (Función) | AELEMENT( ) (Función) | AFIELDS( ) (Función) | ALEN( ) (Función) | ASCAN( ) (Función) | ASORT( ) (Función) | ASUBSCRIPT( ) (Función) | DIMENSION (Comando)


AINSTANCE( ) (Función)

Coloca todas las instancias de una clase en una matriz de variables y devuelve el número de instancias colocadas en la matriz.

AINSTANCE(ArrayName, cClassName)

Valores devueltos

Numérico

Parámetros

ArrayName
Especifica el nombre de la matriz en que se sitúan las instancias. Si la matriz que especifica no existe, Visual FoxPro la creará automáticamente. Si existe y no es suficientemente grande para dar cabida a todas las instancias, Visual FoxPro aumentará automáticamente su tamaño. Si la matriz es mayor de lo necesario, Visual FoxPro reducirá su tamaño. Si existe y AINSTANCE( ) devuelve 0 porque no encuentra ningún nombre, permanecerá sin cambios. Si la matriz no existe y AINSTANCE( ) devuelve 0, la matriz no se creará.

Solamente se incluyen en la matriz las instancias de clase asignadas a variables y elementos de matriz con CREATEOBJECT( ) o NEWOBJECT( ).

cClassName
Especifica un nombre de clase de base de Visual FoxPro o un nombre de clase definida por el usuario. La tabla siguiente indica las clases de base de Visual FoxPro que se pueden especificar para cClassName:
Nombres de clase de base
CheckBox | Line
Columna | ListBox
ComboBox | OLEControl
CommandButton | OLEBoundControl
CommandGroup | OptionButton
Contenedor | OptionGroup
Control | Página
Cursor | PageFrame
Custom | ProjectHook
DataEnvironment | Relation
EditBox | Separator
Formulario | Session
FormSet | Shape
Cuadrícula | Spinner
Header | TextBox
Hyperlink | Timer
Imagen | ToolBar

Ejemplo

En el ejemplo siguiente, CREATEOBJECT( ) se utiliza para crear dos instancias de la clase de base Form de Visual FoxPro. AINSTANCE( ) se utiliza para crear una matriz denominada gaMyArray que contiene las referencias a variables (goINSTANCE1 y goINSTANCE2) para cada instancia de formulario. A continuación, se muestra el contenido de la matriz.

CLEAR ALL
goINSTANCE1 = CREATEOBJECT('Form')
goINSTANCE2 = CREATEOBJECT('Form')
CLEAR
? AINSTANCE(gaMyArray, 'Form')  && Returns 2, two form instances
DISPLAY MEMORY LIKE gaMyArray  && Displays the references

Vea también

ADD CLASS (Comando) | AMEMBERS( ) (Función) | CREATE CLASS (Comando) | CREATE CLASSLIB (Comando) | CREATEOBJECT( ) (Función) | DEFINE CLASS (Comando)


ALANGUAGE( ) (Función)

Devuelve una matriz que contiene los nombres de todos los comandos, funciones o clases de base de Visual FoxPro.

ALANGUAGE(ArrayName, nType)

Parámetros

ArrayName
Especifica el nombre de la matriz que contendrá los elementos del lenguaje. Si la matriz no existe, Visual FoxPro la creará automáticamente. Si la matriz existe y no es suficientemente grande para contener todos los datos, Visual FoxPro aumentará automáticamente su tamaño para dar cabida a la información. Si la matriz es mayor de lo necesario, Visual FoxPro reducirá su tamaño.
nType
Especifica el tipo de elemento del lenguaje devuelto, de acuerdo con la lista siguiente:
Valor Descripción Tipo de matriz
1 Comandos Una dimensión:
Nombre de comando
2 Funciones
Dos dimensiones:
Nombre de función [M] nParamR [- nParamT]

El indicador matchFlag, M, especifica que debe
utilizarse el nombre de función completo en el código.
nParamR especifica el número de parámetros necesarios. nParamT especifica el número total de posibles parámetros.

3 Clases de base
Una dimensión:
Nombre de la clase de base
4 Eventos DBC
Una dimensión:
Nombre de evento DBC (el nombre que se muestra omite el prefijo "DBC_" del nombre de evento)

Observaciones

La función ALANGUAGE( ) devuelve una matriz con todos los comandos y funciones válidos de Visual FoxPro. Para devolver información del objeto, utilice la función AMEMBERS( ).

Ejemplos

Utilice la función ALANGUAGE( ) para el acceso a las funciones de Visual FoxPro, como en el código siguiente:

   ALANGUAGE(FuncArr,2)

La matriz resultante, FuncArr, contendrá los valores siguientes:

   JUSTSTEM, M1

JUSTSTEM( ) no se puede abreviar y requiere un parámetro.

   KEYMATCH, 1-4

KEYMATCH( ) puede abreviarse a cuatro caracteres y tiene un parámetro obligatorio y tres opcionales (total = 4).

   LASTKEY, 0

LASTKEY( ) puede abreviarse y no requiere parámetros.

Vea también

Uso de comandos y funciones | LASTKEY( ) (Función) | KEYMATCH( ) (Función) | JUSTSTEM( ) (Función)


ALEN( ) (Función)

Devuelve el número de elementos, filas o columnas de una matriz.

ALEN(ArrayName [, nArrayAttribute])

Valores devueltos

Numérico

Parámetros

ArrayName
Especifica el nombre de la matriz. Si incluye únicamente el nombre de la matriz, ALEN( ) devolverá el número de elementos de la matriz.
nArrayAttribute
Determina si ALEN( ) devuelve el número de elementos, filas o columnas de la matriz según los siguientes valores de nArrayAttribute:
0 | Especifica que se devuelve el número de elementos de la matriz. Omitir nArrayAttribute es idéntico a especificar 0.
1 | Especifica que se devuelve el número de filas de la matriz.
2 | Especifica que se devuelve el número de columnas de la matriz. Si la matriz es de una dimensión, ALEN( ) devolverá 0 (ninguna columna).

Ejemplo

El ejemplo siguiente utiliza AFONT( ) para crear una matriz que contiene los nombres de todas las fuentes disponibles. ALEN(°) se emplea para determinar el número de filas de la matriz. Se muestra el nombre de cada fuente con un ejemplo. Si hay más de 10 fuentes instaladas, solamente se muestran las 10 primeras.

CLEAR
=AFONT(gaFontArray)  && Array containing font names
gnNumFonts= ALEN(gaFontArray)  && Number of fonts
IF gnNumFonts > 10
gnNumFonts = 10  && Display first 10 fonts
ENDIF
FOR nCount = 1 TO gnNumFonts
? ALLTRIM(gaFontArray(nCount))  && Display font name
?? '  This is an example of ' ;
+ ALLTRIM(gaFontArray(nCount)) FONT gaFontArray(nCount), 8
ENDFOR

Vea también

ADEL( ) (Función) | ADIR( ) (Función) | AELEMENT( ) (Función) | AFIELDS( ) (Función) | AINS( ) (Función) | ASCAN( ) (Función) | ASORT( ) (Función) | ASUBSCRIPT( ) (Función) | DIMENSION (Comando) | STORE (Comando) | AFONT( ) (Función)


ALIAS( ) (Función)

Devuelve el alias de tabla del área de trabajo actual o de la especificada.

ALIAS([nWorkArea | cTableAlias])

Valores devueltos

Carácter(Character)

Parámetros

nWorkArea
Especifica el número de área de trabajo para el que ALIAS( ) devuelve el alias de tabla.
cTableAlias
Especifica el alias de tabla para el que ALIAS( ) devuelve el alias de tabla.

Si omite nWorkArea o cTableAlias, ALIAS( ) devolverá el alias de la tabla que esté abierta en el área de trabajo actual. Si no hay abierta una tabla en el área de trabajo actual o especificada, se devolverá una cadena vacía.

Ejemplo

El ejemplo siguiente abre la tabla customer y muestra su alias. La tabla customer se vuelve a abrir en otra área de trabajo, se le asigna un alias MyCustomer y se muestra este alias.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer     && Open customer table
CLEAR
? ALIAS( )  && Display the alias
SELECT 0
USE customer AGAIN ALIAS MyCustomer  && Different alias
? ALIAS( )  && Display the alias

Vea también

DBF( ) (Función) | SELECT( ) (Función) | Trabajar con alias de tablas | Alias (Propiedad)


ALINES( ) (Función)

Copia cada línea de una expresión de cadena de caracteres o un campo memo en una fila correspondiente de una matriz.

ALINES( ) proporciona una manera sencilla de analizar líneas de una expresión de caracteres o campo memo. A pesar de que también puede usar MLINES( ), ALINES( ) es más rápido y requiere menos programación. También, ALINES() no es afectado por el valor de SET MEMOWIDTH.

ALINES(ArrayName, cExpression [, lTrim] [cParseChar, ,… ,cParseChar])

Parámetros

ArrayName
Especifica el nombre de la matriz en que se copian las líneas de la expresión de caracteres o campo memo. Si la matriz que especifica no existe, Visual FoxPro la creará automáticamente. Si la matriz existe y no es suficientemente grande para contener todas las líneas del campo memo, Visual FoxPro aumenta automáticamente el tamaño de la matriz. Si la matriz es mayor de lo necesario, Visual FoxPro reducirá su tamaño.

cExpression
Especifica la expresión de caracteres o campo memo que contiene las líneas copiadas en la matriz. Toda la expresión de caracteres son sencibles a mayúsculas.

Si cExpression es una cadena vacia o un valor nulo, se crea una matriz con una sola línea conteniendo una cadena vacia. Puede usar expresiones de doble byte.

lTrim
Especifica que se eliminan los espacios en blanco anteriores y posteriores de las líneas copiadas en la matriz. Si lTrim es verdadero (.T.), se eliminan los espacios en blanco anteriores y posteriores de las líneas. Si lTrim es falso (.F.) o se omite, no se eliminan los espacios en blanco anteriores y posteriores.
cParseChar
Especifica uno o más caracteres que delimitan los elementos de cExpression que devuelve la función ALINES( ). El número máximo de cParseChar es 23. La longitud máxima de cada cadena es de 11 caracteres.

Un carácter de avance de línea (CHR(10)) o retorno de carro (CHR(13)) indica el final de una línea. El final de línea tambien puede ser denotado con la combinación de estos dos caracteres (CHR(10) + CHR(13) or CHR(13) + CHR(10)). El comportamiento por defecto para ALINES( ) consiste en pasar por alto CHR(13) y CHR(10) cuando especifica uno o mas valores para cParseChar, menos que se especifiquen también los caracteres de final de línea

Valores de Retorno

Numerico. ALINES( ) devuelve el número de líneas en la matriz, o identicamente, el número de lineas en la expresión de caracteres o campo memo.

Observaciones

La primera línea de la expresión de caracteres o campo memo se copia en la primera fila de la matriz, la segunda línea en la segunda fila y así sucesivamente.

Debe tener memoria suficiente para copiar las líneas de un campo memo grande a una matriz. Visual FoxPro genera un mensaje de error si no hay memoria suficiente.

Si desea ejecutar un análisis que no distinga entre mayúsculas o minúsculas, puede seguir uno de los siguientes ejemplos.

? ALINES(aMyArray,UPPER(employee.notes), "R.")
? ALINES(aMyArray,employee.notes, "R.", "r.")

Ejemplo

El programa siguiente abre la tabla Employee de la base de datos TestData. Se utiliza ALINES( ) para copiar las líneas del campo memo Notas a una matriz llamada aMyArray, y, a continuación, se muestra su contenido.

En este ejemplo, ALINES( ) devuelve 1 porque la descripción del empleado se escribió en el campo memo sin presionar ENTRAR después de cada frase.

CLOSE DATABASES
CLEAR
SET TALK OFF
OPEN DATABASE (HOME(2) + 'data\testdata')
USE employee  && Abre la tabla Employee
? ALINES(aMyarray,employee.notes,CHR(13))  && Displays 1
? ALINES(aMyarray,employee.notes,".")  && Displays 7
? ALINES(aMyarray,employee.notes,",")  && Displays 4
? ALINES(aMyarray,employee.notes," ")  && Displays 75
? ALINES(aMyarray,employee.notes,".", ",")  && Displays 10
? ALINES(aMyArray, employee.notes)  && Displays 1
? aMyArray(1)

Vea también

MEMLINES( ) (Función) | _MLINE (Variable del sistema) | SCATTER (Comando) | MLINE( ) (Función) | SET MEMOWIDTH (Comando) | ATCLINE( ) (Función | ATLINE( ) (Función) | COPY MEMO (Comando) | MODIFY MEMO (Comando)


ALLTRIM( ) (Función)

Elimina los espacios en blanco iniciales y finales de la expresión de caracteres especificada y devuelve la expresión recortada como una cadena de caracteres.

ALLTRIM(cExpression)

Valores devueltos

Character

Parámetros

cExpression
Especifica la expresión de caracteres de la que se eliminan los espacios en blanco iniciales y finales.

Observaciones

ALLTRIM( ) se puede utilizar para asegurar que los espacios en blanco se eliminan de los datos escritos por un usuario.

Ejemplo

El ejemplo siguiente utiliza AFONT( ) para crear una matriz que contiene los nombres de todas las fuentes disponibles. ALLTRIM( ) se utiliza para eliminar todos los espacios en blanco iniciales y finales de los nombres de fuente. Se muestra el nombre recortado de cada fuente, junto con un ejemplo de dicha fuente. Si hay más de 10 fuentes instaladas, solamente se muestran las 10 primeras.

CLEAR
=AFONT(gaFontArray)  && Array containing font names
gnNumFonts= ALEN(gaFontArray)  && Number of fonts
IF gnNumFonts > 10
gnNumFonts = 10  && Display first 10 fonts
ENDIF
FOR nCount = 1 TO gnNumFonts
? ALLTRIM(gaFontArray(nCount))  && Display font name
?? '  This is an example of ' ;
+ ALLTRIM(gaFontArray(nCount)) FONT gaFontArray(nCount), 8
ENDFOR

Vea también

LTRIM( ) | RTRIM( ) | TRIM( ) | AFONT( )


AMEMBERS( ) (Función)

Incluye los nombres de propiedades, procedimientos y objetos miembros para un objeto en una matriz de variables.

AMEMBERS(ArrayName, oObjectName | cClassName [, nArrayContentsID] [, cFlags])

Valores devueltos

Numérico

Parámetros

ArrayName
Especifica la matriz en que están situados los nombres de las propiedades miembro para oObjectName. Si especifica el nombre de una matriz inexistente, la matriz se crea automáticamente. Si la matriz no es suficientemente grande para contener todos los nombres, Visual FoxPro aumentará automáticamente su tamaño.
oObjectName
Especifica el objeto cuyas propiedades miembro están incluidas en la matriz de variables especificada con ArrayName. oObjectName puede ser cualquier expresión que dé como resultado un objeto, por ejemplo una referencia de objeto, una variable de objeto o un elemento de matriz de objeto.
cClassName
Especifica la clase de Visual FoxPro cuyas propiedades de miembro se colocan en la matriz de variables especificada en ArrayName.
nArrayContentsID 0 | 1 | 2 | 3
0 especifica que la matriz contiene una sola columna de nombres de propiedad. Omitir el parámetro nArrayContentsID es lo mismo que pasar un 0.

1 especifica que la matriz contiene los nombres de las propiedades del objeto o la clase, así como los métodos y objetos miembros. La matriz resultante es de dos dimensiones y la segunda columna especifica el tipo de miembro enumerado en la primera columna. Los valores posibles para la segunda columna son Property, Event, Method u Object.

2 especifica que la matriz contiene los nombres de los objetos miembros de un objeto nativo de Visual FoxPro especificado con oObjectName. La matriz resultante es de una dimensión.

Esta opción proporciona un método para determinar los nombres de los objetos incluidos en un contenedor, tales como todos los objetos Form de un conjunto de formularios o los controles de un formulario.

3 especifica que la matriz contiene información acerca de uno o más objetos. Puede pasar una referencia de objeto a un objeto nativo de Visual FoxPro o a un objeto COM.

Nota Un valor 3 para este parámetro no es soportado en aplicaciones .app o .exe.

La matriz que se devuelve al especificar este parámetro consta de cuatro columnas, como se describe en la tabla siguiente:

Columna | Descripción
1 | Nombre del evento o método
2 | Tipo de propiedad (por ejemplo, PROPERTYPUT, PROPERTYGET, PROPERTYPUTREF, METHOD)
3 | Firma de la función (parámetros y sus tipos, y el tipo devuelto por la función). Esta información es similar al texto de Información rápida que se proporciona en la expansión IntelliSense de un método.
4 | Cadena de ayuda

Si se omite nArrayContentsID, AMEMBERS( ) devuelve una matriz de propiedades de una columna.

cFlags
Especifica el filtrado que se aplica a la matriz devuelta por la función AMEMBERS( ). cFlags no funcionará cuando se pase a AMEMBERS( ) un objeto COM (el valor de ArrayContentsID es 3). Algunos indicadores son mutuamente exclusivos, así que, si utiliza más de un cFlag, utilícelos agrupados de la siguiente manera:
[P | H | G] [N | U] [C] [I | B] [R]

Las tablas siguientes describen los valores válidos para cFlags.

Valor | Indicadores de filtro
P | Propiedades, métodos o eventos protegidos
H | Propiedades, métodos o eventos ocultos
G | Propiedades, métodos o eventos públicos
N | Propiedades, métodos o eventos nativos (intrínsecos)
U | Propiedades, métodos o eventos definidos por el usuario (extrínsecos)
C | Propiedades modificadas (pero matriz de propiedades sin cambios)
I | Propiedades, métodos o eventos heredados
B | Propiedades, métodos o eventos base (mediante el método AddProperty)
R | Propiedades de sólo lectura

La configuración predeterminada para el filtrado, especificada mediante cFlags, es un OR lógico entre indicadores. Puede cambiar esto mediante los cFlags especiales "+".

Valor | Indicadores especiales
# | Agrega una nueva columna a la matriz de resultados con el valor cFlags correspondiente.
+ | Ejecuta un AND lógico entre indicadores de filtro.

Observaciones

AMEMBERS( ) devuelve el número de objetos, propiedades y procedimientos para el objeto, o cero (0) si no es posible crear la matriz. Si omite los parámetros opcionales 1, 2 y 3, se crea una matriz de una dimensión con las propiedades de oObjectName.

Puede pasar referencias de objetos COM a la función AMEMBERS( ) pero, cuando lo haga así, deberá pasar también un valor de 3 en el tercer parámetro (indicador), como en el ejemplo siguiente.

oExcel = CREATEOBJECT("excel.application")
= AMEMBERS(gaPropArray, oExcel, 3)

Ejemplo

El siguiente ejemplo utiliza CREATEOBJECT( ) para crear un objeto Form denominado goForm1. AMEMBERS( ) se emplea para crear una matriz denominada gaPropArray con las propiedades disponibles para el formulario y, a continuación, se muestran las propiedades.

CLEAR
goForm1 = CREATEOBJECT("Form")  && Crea un Formulario
= AMEMBERS(gaPropArray, goForm1, 1)  && Matriz que contiene las propiedades del Form
ularioDISPLAY MEMORY LIKE gaPropArray  && Muestra las propiedades del Formulario

Vea también

ADD CLASS | AINSTANCE( ) | CREATE CLASS | CREATE CLASSLIB | CREATEOBJECT( ) | DEFINE CLASS


AMOUSEOBJ( ) (Función)

Crea una matriz que contiene información acerca de la posición del puntero del ratón (ratón) y el objeto sobre el que está colocado el puntero.

AMOUSEOBJ(ArrayName [, 1])

Valores devueltos

Numérico

Parámetros

ArrayName
Especifica el nombre de la matriz que contiene la información del puntero del ratón. Si la matriz que especifica no existe, Visual FoxPro la creará automáticamente. Si la matriz existe y no es suficientemente grande para contener todas las líneas del campo memo, Visual FoxPro aumenta automáticamente el tamaño de la matriz. Si la matriz es mayor de lo necesario, Visual FoxPro reducirá su tamaño.

La matriz que se crea contiene cuatro filas. La siguiente tabla muestra el contenido de cada fila de la matriz:

Fila de
la matriz 		Descripción
1 | Contiene una referencia al objeto sobre el que está colocado el puntero del ratón cuando se ejecuta AMOUSEOBJ( ).
2 | Contiene una referencia de objeto al contenedor del objeto sobre el que está colocado el puntero del ratón cuando se ejecuta AMOUSEOBJ( ).
3 | Contiene la coordenada horizontal (X) en píxeles del puntero del ratón, relativa al contenedor del objeto sobre el que está colocado el puntero del ratón cuando se ejecuta AMOUSEOBJ( ).
4 | Contiene la coordenada vertical (Y) en píxeles del puntero del ratón, relativa al contenedor del objeto sobre el que está colocado el puntero del ratón cuando se ejecuta AMOUSEOBJ( ).

Observe que la primera y segunda filas de la matriz pueden contener los mismos valores si el ratón está colocado sobre un contenedor genérico, por ejemplo, un marco de página.

[, 1]
Este parámetro opcional especifica que la información del puntero del ratón contenida en la matriz hace referencia al formulario actual (THISFORM). Si se incluye esta opción, la segunda fila de la matriz siempre contiene una referencia de objeto al formulario actual, y la tercera y cuarta filas contienen las coordenadas del puntero del ratón relativas al formulario actual.

Observaciones

También puede utilizar AMOUSEOBJ( ) para determinar dónde está colocado el puntero del ratón en tiempo de diseño. La siguiente tabla muestra el elemento en tiempo de diseño y los valores contenidos en cada fila de la matriz:

Elemento en tiempo de diseño | Contenido de la matriz
Diseñadores de formularios y clases | Fila 1 – Referencia de objeto al control.Fila 2 – Referencia de objeto al formulario.Fila 3 – Coordenada horizontal (X) del puntero del ratón relativa al formulario.Fila 4 – Coordenada vertical (Y) del puntero del ratón relativa al formulario.
Administrador de proyectos | Fila 1 – Referencia de objeto al proyecto.Fila 2 – Referencia de objeto al proyecto.Fila 3 – Cero.Fila 4 – Cero.
Escritorio de Visual FoxPro | Fila 1 – Referencia de objeto al escritorio.Fila 2 – Referencia de objeto al escritorio.Fila 3 – Coordenada horizontal (X) del puntero del ratón relativa al escritorio.Fila 4 – Coordenada vertical (Y) del puntero del ratón relativa al escritorio.

AMOUSEOBJ( ) devuelve 4 (el número de filas de la matriz) si el puntero del ratón está colocado sobre una de las áreas mencionadas arriba. Si el puntero del ratón está colocado sobre un área que no figure arriba, AMOUSEOBJ( ) devuelve cero y si la matriz que especifica ya existe, permanece sin cambios. Si la matriz que especifica no existe, no se crea.

Vea también

MCOL( ) | MROW( ) | SYS(1270) - Ubicación de objetos | ASELOBJ( ) (Función)


ANETRESOURCES( ) (Función)

Coloca los nombres de los recursos compartidos de red e impresoras en una matriz y después devuelve el número de recursos.

ANETRESOURCES(ArrayName, cNetworkName, nResourceType)

Valores devueltos

Numérico

Parámetros

ArrayName
Especifica el nombre de la matriz que contiene la información acerca de los recursos compartidos de la red o impresoras. Si la matriz que especifica no existe, Visual FoxPro la creará automáticamente. Si la matriz existe y no es suficientemente grande para contener toda la información, Visual FoxPro aumentará automáticamente su tamaño para dar cabida a la información. Si la matriz es mayor de lo necesario, Visual FoxPro reducirá su tamaño.

Si la matriz existe y ANETRESOURCES( ) devuelve 0 debido a que no se han encontrado recursos compartidos de la red o impresoras, la matriz no sufre cambios. Si la matriz no existe y ANETRESOURCES( ) devuelve 0, la matriz no se crea.

cNetworkName
Especifica el nombre de red o dominio del que se devuelve la información de recurso compartido o de impresora. El nombre de red debe tener el formato "\\NetworkName". No necesita estar conectado a la red que especifique y especificar una red no le conecta a ella. Si especifica un nombre de dominio, el resultado de ANETRESOURCES( ) será una matriz con los miembros o recursos procedentes del dominio.
nResourceType
Especifica el tipo de recurso de red del que se devuelve la información. Los nombres de los recursos compartidos en la red se devuelven si nResourceType da como resultado 1. Los nombres de las impresoras de la red se devuelven si nResourceType da como resultado 2. Un valor de 0 devuelve el nombre de cualquier recurso.

Observaciones

ANETRESOURCES( ) devuelve el número de recursos compartidos o impresoras encontradas (es idéntico al número de filas de la matriz). ANETRESOURCES( ) devuelve cero si no hay recursos compartidos o impresoras para el tipo de red que haya especificado, o si la red que especificó no existe.

Nota Antes de Windows 2000, la longitud para los nombres de recursos compartidos fueron limitados a doce (12) caracteres. Si ejecuta ANETRESOURCES( ) en un PC que utiliza sistema operativo anterior a Windows 2000, ANETRESOURCES( ) no devolverá ningún recurso compartido desde los PCs que utilicen Windows 2000 o posterior que tengan nombres de recursos compartidos mayores que 12 caracteres de longitud.

Si desea obtener información detallada, consulte las funciones API de Win32 WNetOpenEnum y WNetEnumResource.

Vea también

ADIR( ) | APRINTERS( ) | GETPRINTER( )


ANSITOOEM( ) (Función)

Se incluye por compatibilidad con versiones anteriores. Utilice GETCP( ) en su lugar.


APRINTERS( ) (Función)

Incluye en una matriz de variables los nombres de las impresoras instaladas actualmente en el Administrador de impresión de Windows.

APRINTERS(ArrayName)

Valores devueltos

Numérico

Parámetros

ArrayName
Especifica el nombre de la matriz que contiene los nombres de las impresoras instaladas, junto con sus puertos. Si la matriz incluida no existe, Visual FoxPro la creará automáticamente. Si la matriz existe y no es suficientemente grande para contener toda la información de impresoras, Visual FoxPro aumentará automáticamente el tamaño de la misma para dar cabida a toda la información. Si la matriz es mayor de lo necesario, Visual FoxPro reducirá su tamaño. Si la matriz existe y APRINTERS(°) devuelve 0 porque no hay ninguna impresora instalada, la matriz permanecerá inalterada. Si la matriz no existe y APRINTERS(°) devuelve 0, la matriz no se creará.

Observaciones

APRINTERS( ) crea una matriz de dos dimensiones. La primera columna contiene los nombres de las impresoras instaladas actualmente, mientras que la segunda columna contiene los puertos a los que están conectadas estas impresoras.

APRINTERS( ) devuelve el número de impresoras instaladas. Si no hay ninguna impresora instalada, devolverá 0.

Visual FoxPro obtiene de Windows los nombres de las impresoras instaladas y sus puertos. Sin embargo, Visual FoxPro no comprueba si las impresoras están conectadas realmente al equipo.

Ejemplo

El ejemplo siguiente utiliza APRINTERS( ) para crear una matriz llamada gaPrinters que contiene los nombres y puertos de impresoras instaladas. A continuación se muestran las impresoras y sus puertos. Si no hay ninguna impresora instalada, aparece un mensaje.

IF APRINTERS(gaPrinters) > 0  && If there are installed printer drivers
CLEAR  && Clear the main Visual FoxPro window
DISPLAY MEMORY LIKE gaPrinters && Display the printers and ports
ELSE  && Otherwise, no printer are installed
WAIT WINDOW 'No printers installed.'
ENDIF

Vea también

GETPRINTER( ) | PRINTSTATUS( ) | PRTINFO( ) | SET PRINTER


APROCINFO( ) (Función)

Crea una matriz que contiene los elementos del lenguaje Visual FoxPro que contiene un archivo de programa

APROCINFO(ArrayName, cFileName [, nType])

Valor Retornado

Devuelve la cantidad de filas añadidas a la matriz.

Parámetros

ArrayName
Especifica el nombre de la matriz que va a crear.
cFileName
Especifica el nombre de archivo del programa recorrido por esta función.
nType
Especifica el tipo de información devuelta en cArrayName. La tabla siguiente especifica valores nType válidos y describe la información devuelta por cada valor nType.
nType Descripción Detalles de la matriz
0 (predeterminado) Llena la matriz con toda la información del documento. Columna1 – contenido de la vista de documento

Columna2 – línea

Columna3 – tipo

Columna4 – sangría

La sangría es utilizada con las directivas del preprocesador para mostrar los niveles anidados de instrucciones tipo #IF .
1 Llena la matriz únicamente con las definiciones de clase del documento. Columna1 – nombre de clase

Columna2 – línea

Columna3 – clase primaria

Columna4 - es OLEpublic
2 Llena la matriz sólo con información de procedimientos de clase (excluye la definición de clase). Columna1 – contenido de la vista de documento

Columna2 – línea
3 Llena la matriz con #define y otras directivas de preprocesador del documento. Columna1 – contenido de la vista de documento

Columna2 – línea

Columna3 – tipo

La tabla siguiente describe los valores de "type" devueltos en la Columna3 para los valores de nType de 0 y 3.

nType | Descripción
Define | Directiva de procesador #DEFINE
Directiva | Otras directivas de preprocesador, tales como #IF
Clase | Línea de definición de clase
Procedimiento | Procedimiento, método o evento

Observaciones

Visual FoxPro crea automáticamente la matriz especificada, si no existe ya. Visual FoxPro incrementa o recorta automáticamente el tamaño de la matriz, para acomodarse a la información devuelta. Esta función sólo admite archivos de programa (PRG).

Vea también

Transferencia de datos y matrices | Matrices | Manipulación de matrices | # DEFINE ... #UNDEF (Directiva del preprocesador) | #IF ... #ENDIF (Directiva del preprocesador) | Modificar una definición de clase | Ventana Vista del documento


ASC( ) (Función)

Devuelve el código ANSI del carácter situado más a la izquierda en una expresión de carácteres.

ASC(cExpression)

Valores devueltos

Numérico (Numérico)

Parámetros

cExpression
Especifica la expresión de carácteres que contiene el carácter cuyo valor ANSI devuelve ASC(°). ASC( ) pasa por alto los carácteres que aparezcan después del primer carácter de cExpression.

Observaciones

ASC( ) devuelve la posición del carácter en la tabla de carácteres de la página de códigos actual. Cada carácter tiene un valor ANSI único entre 0 y 255.

Ejemplo

El siguiente ejemplo muestra los caracteres A a J y utiliza ASC(°) para mostrar sus valores ANSI correspondientes.

STORE 'ABCDEFGHIJ' TO gcANSI  && 10 characters
CLEAR
FOR nCOUNT = 1 TO 10
? SUBSTR(gcANSI, nCount,1)  && Display a character
?? ASC(SUBSTR(gcANSI, nCount)) && Display ANSI value
ENDFOR

Vea también

CHR( ) | SET ANSI (Comando) | ANSITOOEM( ) | OEMTOANSI( )


ASCAN( ) (Función)

Busca en una matriz un elemento que contenga los mismos datos y el mismo tipo de datos que una expresión.

ASCAN(ArrayName, eExpression [, nStartElement [, nElementsSearched [, nSearchColumn [, nFlags ]]]])

Valores devueltos

Numérico

Parámetros

ArrayName
Especifica el nombre de la matriz en la que se va a buscar.
eExpression
Especifica la expresión general que se va a buscar.
nStartElement
Especifica el número de elemento en el que empieza la búsqueda. El número de elemento que especifique se incluirá en la búsqueda. Si omite nStartElement, se buscará en toda la matriz de forma predeterminada.
nElementsSearched
Especifica el número de elementos que se van a buscar. Si omite nStartElement y nElementsSearched, la búsqueda empezará por el primer elemento y continuará hasta el último elemento de la matriz si no se especifica nSearchColumn.
Nota Puede hacer referencia de dos formas a un elemento de una matriz bidimensional de variables. El primer método utiliza dos subíndices para especificar la posición de fila y columna del elemento de la matriz; el otro método utiliza un número de elemento. Esta función y otras que manipulan matrices de dos dimensiones requieren números de elemento (nStartElement y nElementsSearched). Utilice AELEMENT( ) para devolver el número de elemento a partir de los subíndices de fila y columna de una matriz de dos dimensiones.
nSearchColumn
Especifica la columna de matriz para la búsqueda. A menudo resulta útil en matrices creadas por funciones tales como AFIELDS( ).

Puede utilizar 0 o un número negativo para nSearchColumn, para imponer una búsqueda en toda la matriz. Si utiliza un valor mayor de 0 para nSearchColumn, ASCAN( ) trata la columna especificada como una matriz de una dimensión y utiliza cada fila de datos como elemento de la búsqueda. Por ejemplo, el siguiente código busca sólo en los elementos 3º y 4º de la columna (en lugar de hacerlo en toda la matriz).

? ASCAN(abc,"M",3,2,2)

Visual FoxPro genera un error si nSearchColumn es un número mayor que el número de columnas disponibles.

nFlags
Especifica criterios de búsqueda adicionales para aplicarlos a la función de búsqueda. Las búsquedas predeterminadas distinguen entre mayúsculas y minúsculas.

El número que se especifica en nFlags proporciona un valor de bit que determina si se distingue entre mayúsculas o minúsculas o la configuración de exactitud de una búsqueda, de acuerdo con la tabla siguiente:

NFlag | Bit | Descripción
0 | 0000 | Comportamiento existente en Visual FoxPro 6 o anterior
1 | 0001 | No distingue entre mayúsculas y minúsculas
2 | 0010 | Comportamiento actual existente en la versión anterior de Visual FoxPro
3 | 0011 | No distingue entre mayúsculas y minúsculas
4 | 0100 | Exactitud desactivada
5 | 0101 | No distingue entre mayúsculas y minúsculas; exactitud desactivada
6 | 0110 | Exactitud activada
7 | 0111 | No distingue entre mayúsculas y minúsculas; exactitud activada
8 | 1000 | Devolver número de fila
9 | 1001 | No distingue entre mayúsculas y minúsculas; devolver número de fila
10 | 1010 | Devolver número de fila
11 | 1011 | No distingue entre mayúsculas y minúsculas; devolver número de fila
12 | 1100 | Devolver número de fila; exactitud desactivada
13 | 1101 | No distingue entre mayúsculas y minúsculas; devolver número de fila; exactitud desactivada
14 | 1110 | Devolver número de fila; exactitud activada
15 | 1111 | No distingue entre mayúsculas y minúsculas; devolver número de fila; exactitud activada

Los valores de bit son los siguientes:

Bit | Descripción
0 | Bit para distinguir entre mayúsculas y minúsculas
1 | Bit para exactitud activada (sólo es efectivo si se establece el bit 2)
2 | Bit para suplantar la configuración de exactitud del sistema
3 | Devolver el número de fila si es una matriz de dos dimensiones

nFlags se aplica sólo a la función ASCAN( ) y no afecta a las configuraciones de SET EXACT.

Observaciones

Si se encuentra alguna coincidencia, ASCAN( ) devolverá el número del elemento que contiene la expresión. Si no se encuentra ninguna coincidencia, devolverá 0.

Los criterios para la coincidencia correcta de los datos de caracteres están determinados por la configuración en el sistema de SET EXACT, si no está establecido nFlag con el bit 2. Si SET EXACT está establecido en ON, el elemento deberá coincidir con la expresión de búsqueda carácter a carácter y tener la misma longitud. Si SET EXACT está establecido en OFF y el elemento y la expresión de búsqueda coinciden hasta el final de la expresión, la coincidencia será válida. Si desea obtener más información sobre los criterios de coincidencia de las cadenas de caracteres, vea la tabla de comparación de cadenas en el tema SET EXACT.

En Visual FoxPro 6, los parámetros nStartElement y nElementsSearched son opcionales. nStartElement debe ser > 0, mientras que nElementsSearched puede ser cualquier valor. Para acomodar el nuevo parámetro nSearchColumn, deberá pasar por alto estos parámetros; para ello, deberá pasarles un valor de –1.

Los parámetros nStartElement y nElementsSearched adquieren un significado especial si el valor de nSearchColumn es mayor de 0. En Visual FoxPro 6, siempre hacían referencia a la matriz completa. A partir de Visual FoxPro 7, si se pasa un valor positivo de nSearchColumn los valores de nStartElement y nElementsSearched hacen referencia a la matriz única monodimensional representada por nSearchColumn. Por ejemplo, el siguiente código buscaría sólo en el tercer y el cuarto elementos de la columna 2, no en la matriz completa:

? ASCAN(abc,"M",3,2,2)

Ejemplo

El ejemplo siguiente crea y llena una matriz con nombres de empresas, a continuación utiliza ASCAN( ) para buscar el nombre de una empresa determinada. Si encuentra el nombre de la empresa, lo elimina de la matriz.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer     && Open customer table
SELECT company FROM customer ;
WHERE country = 'UK' ;
INTO ARRAY gaCompanies
gnCount = _TALLY
gcName = 'Seven Seas Imports'
CLEAR
DISPLAY MEMORY LIKE gaCompanies*
gnPos = ASCAN(gaCompanies, gcName) && Search for company
IF gnPos != 0
*** Company found, remove it from the array ***
= ADEL(gaCompanies, gnPos)
gnCount = gnCount - 1
ENDIF
DISPLAY MEMORY LIKE gaCompanies

Vea también

ACOPY( ) | ADEL( ) | ADIR( ) | AELEMENT( ) | AFIELDS( ) | AINS( ) | ASORT( ) | ASUBSCRIPT( ) | DIMENSION | SET EXACT


ASELOBJ( ) (Función)

Incluye en una matriz de variables las referencias de objetos a los controles seleccionados actualmente en el Diseñador de Formularios, Diseñador de Clases, o ventana de edición de código. Cuando se ejecuta ASELOBJ( ) en una ventana de edición de código, la matriz también incluye elementos para nombres de archivos de formularios (.scx), bibliotecas de clases visuales (.vcx), y #INCLUDE . Puede usar ASELOBJ( ) para crear generadores de controles.

ASELOBJ( ArrayName, [ 1 | 2 | 3 ] )

Parámetros

ArrayName
Especifica el nombre de la matriz que desea usar
1
Crea una matriz de un elemento con una referencia de objeto al contenedor para el control seleccionado actualmente.

Por ejemplo, si el control seleccionado es un control numérico de un formulario, la matriz contendrá un elemento con el valor "FORM". Incluya 1 al ejecutar ASELOBJ( ) desde la ventana Comandos.

Nota Cuando se selecciona un marco de página, ASELOBJ( ) devuelve el nombre de la página actual.
2
Especifica que Visual FoxPro crea una matriz de un elemento con una referencia al objeto DataEnvironment para el formulario. El objeto DataEnvironment permite determinar las propiedades del entorno de datos para el formulario.
3
Crea una matriz de tres elementos conteniendo información acerca de la ventana de edición de código actualmente activa: una referencia de objeto para el contenidor, la ruta completa y nombre de archivo de el .scx o .vcx., y la ruta completa y nombre de archivo del #INCLUDE , si se encontrara disponible.

Si no hay ninguna ventana de edición de código activa, la función ASELOBJ( ) usa información de la mas diseñador de Formularios o Clases utilizado recientemente. Este es un comportamiento similar al uso de ASELOBJ(,1) excepto de que la matriz contiene elemento adicionales. Esto también incluye cuando se usa ASELOBJ(,3) en una Ventana de Comandos, debido a que no hay ninguna venta de edición de código activa.

La siiguiente tabla muestra el orden en que estos elementos aparecen.

Elemento de la Matriz | Descripción
1 | Referencia al objeto contenedor.
2 | Ruta completa y nombre de archivo .scx o .vcx.
3 Ruta completa y nombre de archivo #INCLUDE , si está disponible.
Nota Si no hay archivo #INCLUDE disponible, el tercer elemento contiene una cadena vacia.

Valores de Retorno

Numérico. ASELOBJ( ) devuelve 1 si se ejecutó satisfactoriamente, de lo contrario devolverá 0.

Observaciones

Si no hay ningún control seleccionado y el argumento opcional 1 se omite, ASELOBJ( ) devolverá 0 y no se creará la matriz.ASELOBJ( ) no reconoce al formulario como el control seleccionado si no hay controles en el formulario. Si actualmente no hay ningún control seleccionado y se incluye el argumento opcional 1, ASELOBJ( ) devolverá 1

Si la matriz no existe, Visual FoxPro la creará automáticamente.

Si la matriz existe pero no es lo suficientemente grande para contener toda la información, Visual FoxPro incrementará automáticamente el tamaño de la matriz para acomodar la información. Si es mas grande de lo necesario, Visual FoxPro reducirá su tamaño.

Si la matriz existe, y ASELOBJ( ) devuelve 0 debido a que no hay controles seleccionados, entonces la matriz se quedará sin cambios. Si la matriz no existe y ASELOBJ( ) devuelve 0, no se creará la matriz. .

Ejemplo

Antes de ejecutar el ejemplo siguiente, abra un nuevo formulario en el Diseñador de formularios y agregue uno o varios controles con propiedades Caption, tales como Label o CommandButton, al formulario. Seleccione varios de estos controles y, después, ejecute el ejemplo. ASELOBJ( ) muestra los nombres de los controles seleccionados y, a continuación, cambia sus títulos.

gnobjects = ASELOBJ(gaSelected)     && Create array of control names
IF gnobjects > 0  && 0 indicates no controls selected
CLEAR
DISPLAY MEMORY LIKE gaSelected     && Displays selected controls
FOR nCnt = 1 TO gnobjects
? gaSelected(nCnt).Caption + ' => New Caption ' ;
+ LTRIM(STR(nCnt))  && Display old and new caption
gaSelected(nCnt).Caption = 'New Caption ' ;
+ ALLTRIM(STR(nCnt))  && Assign new caption
NEXT
ENDIF

Vea también

CREATE FORM | DataEnvironment (Objeto) | Diseñador de formularios | _ObjectReference( ) (Rutina de biblioteca API) | AMOUSEOBJ( ) (Función)


ASESSIONS( ) (Función)

Crea una matriz con los Id. de sesión de datos existentes.

ASESSIONS(ArrayName)

Valores devueltos

Numérico. Devuelve el número de sesiones de datos.

Parámetros

ArrayName
Especifica la matriz que contiene los Id. de sesión de datos.

Observaciones

Si no existe la matriz, Visual FoxPro la crea y la llena automáticamente. Visual FoxPro cambia automáticamente el tamaño de la matriz para acomodar las sesiones actuales de datos.

Vea también

Manipulación de matrices | Comandos que tienen como alcance una sesión de datos | Utilizar sesiones de datos


ASIN( ) (Función)

Devuelve en radianes el arco seno de una expresión numérica.

ASIN(nExpression)

Valores devueltos

Numérico

Parámetros

nExpression
Especifica la expresión numérica cuyo arco seno devuelve ASIN( ). El valor de nExpression puede oscilar entre +1 y –1, y el valor que ASIN( ) devuelve puede ir desde –pi/2 hasta +pi/2 ( –1,57079 hasta 1,57079). El número de decimales que se presentan en el resultado puede especificarse mediante SET DECIMALS.

Observaciones

Utilice RTOD( ) para convertir radianes a grados.

Ejemplo

CLEAR
? RTOD(ASIN(0))  && Returns 0.00
STORE 1 to gnArcAngle
? RTOD(ASIN(gnArcAngle))  && Returns 90.00
? RTOD(ASIN(SQRT(2)/2))  && Returns 45.00

Vea también

RTOD( ) | SET DECIMALS | SIN( ) | Crear expresiones de tipo Numérico


ASORT( ) (Función)

Ordena los elementos de una matriz en sentido ascendente o descendente.

ASORT(ArrayName [, nStartElement [, nNumberSorted [, nSortOrder [, nFlags]]])

Valores devueltos

Numérico

Parámetros

ArrayName
Especifica el nombre de la matriz que va a ordenar.
nStartElement
Especifica el elemento inicial de la ordenación. Si omite nStartElement, de forma predeterminada la matriz se ordenará a partir de su primer elemento. Si la matriz es de una dimensión, la ordenación incluirá nStartElement. Si la matriz es de dos dimensiones, el elemento inicial nStartElement determinará tanto la fila donde comienza el orden como la columna que determina el sentido en que se ordenan las filas.
Nota Puede hacer referencia de dos formas a un elemento de una matriz de dos dimensiones. El primer método utiliza dos subíndices para especificar la posición de fila y columna del elemento de la matriz; el otro método utiliza un número de elemento. Esta función y otras que manipulan matrices de dos dimensiones requieren números de elemento (en ASORT( ) las expresiones numéricas nStartElement y nNumberSorted). Puede utilizar AELEMENT( ) para devolver el número de elemento correspondiente a los subíndices de fila y columna de una matriz de dos dimensiones.

El ejemplo siguiente muestra que el elemento inicial nStartElement determina cómo se ordenan las filas en una matriz de dos dimensiones. Se crea una pequeña matriz denominada gaArray y se ordena dos veces. La primera ordenación comienza por el primer elemento de gaArray y las filas se ordenan según los valores contenidos en la primera columna de la matriz. La segunda ordenación comienza por el cuarto elemento de gaArray y las filas se ordenan según los valores contenidos en la segunda columna.

La primera vez se ordena a partir de la primera fila. La segunda ordenación comienza por la segunda fila. Puede utilizar DISPLAY MEMORY para mostrar el contenido de la matriz; en estos ejemplos se utilizan tablas para mostrar gráficamente el resultado del orden.

Estos comandos crean la matriz denominada gaArray:

DIMENSION gaArray(3,2)
gaArray(1) = 'G'
gaArray(2) = 'A'
gaArray(3) = 'C'
gaArray(4) = 'Z'
gaArray(5) = 'B'
gaArray(6) = 'N'

gaArray tiene la apariencia siguiente:

Columna 1 | Columna 2
Fila 1 | G | A
Fila 2 | C | Z
Fila 3 | B | N

Luego se ordena la matriz con ASORT( ) a partir del primer elemento (1,1) de la matriz. Los elementos de la primera columna se ordenan en sentido ascendente al reorganizar las filas de la matriz.

=ASORT(gaArray,1)

Observe el nuevo orden de las filas:

Columna 1 | Columna 2
Fila 1 | B | N
Fila 2 | C | Z
Fila 3 | G | A

Luego se ordena la matriz a partir del cuarto elemento (2,2) de la matriz. Los elementos de la segunda columna se ordenan al reorganizar las filas de la matriz.

=ASORT(gaArray,4)

Observe la diferencia en el orden de las filas:

Columna 1 | Columna 2
Fila 1 | B | N
Fila 2 | G | A
Fila 3 | C | Z
nNumberSorted
Especifica el número de elementos que se ordenan en una matriz de una dimensión o el número de filas que se ordenan en una matriz de dos dimensiones. Por ejemplo, si la matriz es de una dimensión y nStartElement es 2, que indica que la ordenación comenzará por el segundo elemento de la matriz, y nNumberSorted es 3, que indica que el orden debe incluir tres elementos, se ordenarán los elementos segundo, tercero y cuarto de la matriz. Si nNumberSorted es –1 o se omite, se ordenarán todos los elementos de la matriz, desde el elemento inicial nStartElement hasta el último elemento.

Si la matriz es de dos dimensiones, nNumberSorted designará el número de filas que se van a ordenar, a partir de la fila que contiene el elemento inicial nStartElement. Por ejemplo, si nStartElement es 2 y nNumberSorted es 3, se ordenarán la fila que contiene el segundo elemento de la matriz y las dos filas siguientes. Si nNumberSorted es –1 o se omite, se ordenarán todas las filas de la matriz, desde la fila que contiene nStartElement hasta la última fila de la matriz.

nSortOrder
Especifica el sentido de ordenación (ascendente o descendente) para los elementos de la matriz. De forma predeterminada, los elementos de la matriz se ordenan en sentido ascendente. Si nSortOrder es 0 o se omite, los elementos de la matriz se ordenarán en sentido ascendente. Si nSortOrder es cualquier valor positivo, los elementos de la matriz se ordenarán en sentido descendente.
nFlags
Especifica criterios de búsqueda que distinguen entre mayúsculas y minúsculas para aplicarlos a la función de orden. Los valores válidos son 0 (el predeterminado) y 1. ASORT( ) utiliza la secuencia de orden actual (vea SET COLLATE) para determinar el sentido del orden. Ciertas secuencias de orden (como "GENERAL") no distinguen entre mayúsculas y minúsculas; si se especifica nFlags = 0 no se ordena distinguiendo entre mayúsculas y minúsculas.

El parámetro nFlags sólo es útil cuando la secuencia de orden actual distingue entre mayúsculas y minúsculas (como "MACHINE") y se desea ordenar sin distinguir entre mayúsculas y minúsculas.

El número que se especifica en nFlags proporciona un valor de bit que determinar si el orden distingue entre mayúsculas y minúsculas, de acuerdo con la tabla siguiente:

nFlag | Bit | Descripción
0 | 000 | Distingue mayúsculas de minúsculas
1 | 001 | No distingue mayúsculas de minúsculas
Nota Si especifica nFlags, puede omitir los demás parámetros; para ello, páselos como -1.

Observaciones

Todos los elementos incluidos en la ordenación deben ser del mismo tipo de datos. Las matrices de una dimensión se ordenan por elementos, mientras que las matrices de dos dimensiones se ordenan por filas. Cuando se ordena una matriz de dos dimensiones, el orden de las filas de la matriz se cambia para que los elementos de una columna de la matriz estén en orden ascendente o descendente.

Si el orden se ha realizado satisfactoriamente, se devolverá 1; de lo contrario se devolverá –1.

Ejemplo

El ejemplo siguiente copia el campo contact de la tabla customer a una matriz denominada gaContact. Se muestran los primeros 20 contactos de la matriz, se ordena la matriz y se vuelven a mostrar los contactos ordenados.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE Customer  && Open customer table
COUNT TO gnCount  && Number of contacts
DIMENSION gaContact(gnCount,1)  && Create a contact array
COPY TO ARRAY gaContact FIELD contact     && Fill the array
CLEAR
? 'Contact names:'
?
FOR nCount = 1 TO 20
? gaContact(nCount)  && Display first 20 contacts
ENDFOR
= ASORT(gaContact)     && Sort the array
?
? 'Sorted Contact names:'
?
FOR nCount = 1 TO 20
? gaContact(nCount)  && Display first 20 contacts, sorted
ENDFOR

Vea también

ACOPY( ) | ADEL( ) | ADIR( ) | AELEMENT( ) | AFIELDS( ) | AINS( ) | ALEN( ) | ASCAN( )


ASTACKINFO( ) (Función)

Crea una matriz y la llena con la información acerca del estado actual de la pila de llamadas.

AStackInfo(ArrayName)

Parámetros

ArrayName
Especifica el nombre de la matriz que contendrá la información relativa al objeto examinado. La tabla siguiente describe la información devuelta por la función ASTACKINFO( ):
Elemento de matriz | Descripción
1 | Nivel de pila de llamadas
2 | Nombre de archivo del programa actual
3 | Nombre de módulo o de objeto
4 | Nombre de archivo de origen del módulo u objeto
5 | Número de línea en el archivo de origen del objeto
6 | Contenido de la línea de origen

Valor devuelto

Numérico

Observaciones

ASTACKINFO( ) llena una matriz con información acerca de la pila de llamadas completa. Combina la funcionalidad de SYS(16) y Program( ), al tiempo que agrega compatibilidad con números de línea en cada nivel de la pila de llamadas. El valor devuelto es el número de niveles de programa o de filas de la matriz devuelta.

ASTACKINFO( ) sólo llena el sexto elemento de la matriz si está disponible el contenido de la línea de origen; de lo contrario, lo deja en blanco.

ASTACKINFO( ) proporciona, en los elementos segundo y cuarto respectivamente, el nombre del archivo actual, y si el archivo está enlazado en un APP o en otro archivo separado, la ruta de acceso completa del programa de enlace.

El cuarto elemento contiene la información original del archivo de origen. Para los objetos, esta información es la misma que devuelve SYS(16), incluso cuando se encuentran enlazados dentro de aplicaciones.

Nota Para los archivos PRG, puede ser difícil reunir esta información. En este caso, simplemente se muestra el segundo elemento, de forma parecida a lo que hace en la actualidad SYS(16).

Ejemplo

Un formulario sin modo enlazado en un archivo APP (myAppl.app) con un botón procedente de la clase buttons.vcx (también en el APP). El programador ejecuta myAppl.app en Visual FoxPro para mostrar el formulario (el formulario permanece abierto, porque no se trata de Visual FoxPro en el entorno de tiempo de ejecución). Cuando el usuario hace clic en el botón para ejecutar el informe, este llama a un formulario de consulta (que existe fuera de myAppl.app) por medio de su evento BeforeOpenTables.

Este formulario de consulta (getcusts.scx), que reside en el interior de myAppl.app, emite una llamada a ASTACKINFO( ) (a continuación, muestra la matriz resultante como en el ejemplo siguiente).

ASTACKINFO(myarray)
DISPLAY MEMO LIKE myarray
myArray
(1,1)   1                                    && Stack level = 1
(1,2)   c:\vfp\myAppl.app                        && Current program
(1,3) frmRerport.PrintReport.Click         && Object
(1,4) c:\vfp\myclasses\buttons.vct         && Object source file name
(1,5) 42                              && Line number in the source
(1,6) THISFORM.DoReport()                  && in the source
(2,1)   2                                    && Stack level = 2
(2,2) c:\vfp\myAppl.app
(2,3) frmRerport.DoReport
(2,4) c:\vfp\forms\frmRerport.sct         && Module source file name
(2,5) 31
(2,6) DO RunListReport                     && in the source
(3,1)   3                                    && Stack level = 3
(3,2) c:\vfp\myAppl.app
(3,3)
(3,4) c:\vfp\programs\runlisterport.prg   && Module source file name
(3,5) 12
(3,6) REPORT FORM myreport1.frx            && in the source
(4,1)   4                                    && Stack level = 4
(4,2) c:\vfp\reports\myreport1.frt
(4,3) myreport1.DataEnvironment.BeforeOpenTables
(4,4) c:\vfp\reports\myreport1.frt          && Module source file name
(4,5) 31
(4,6) DO FORM getcusts                     && in the source
(5,1)   5                                    && Stack level = 5
(5,2) c:\vfp\myAppl.app
(5,3) getcusts.init
(5,4) c:\vfp\forms\getcusts.sct            && Module source file name
(5,5) 2
(5,6) ASTACKINFO(myarray)                  && in the source

Vea también

Matrices | Objetos | Ventana Pila de llamadas | LINENO( ) | PROGRAM( )


ASUBSCRIPT( ) (Función)

Devuelve el subíndice de fila o columna de un elemento a partir del número de elemento.

ASUBSCRIPT(ArrayName, nElementNumber, nSubscript)

Valores devueltos

Numérico

Parámetros

ArrayName
Especifica el nombre de la matriz.
nElementNumber
Especifica el número de elemento.
nSubscript
Determina si se devuelve el subíndice de fila o el de columna.

Si la matriz es de una dimensión, incluya el número de elemento en nElementNumber y 1 en nSubscript. ASUBSCRIPT( ) devolverá nElementNumber.

Si la matriz es de dos dimensiones, deberá incluir el número de elemento nElementNumber y un valor de 1 ó 2 en nSubscript. Si especifica 1 en nSubscript, se devolverá el subíndice de fila del elemento; si especifica 2, se devolverá el subíndice de columna.

Para obtener más información sobre cómo puede hacer referencia a los elementos de una matriz, vea DIMENSION.

Observaciones

Puede hacerse referencia de dos formas a los elementos de las matrices bidimensionales de variables. El primer método utiliza dos subíndices para especificar la posición de fila y columna del elemento de la matriz. El segundo método utiliza un número de elemento. Utilice ASUBSCRIPT( ) para obtener el subíndice de fila o columna de un elemento a partir del número de elemento.

El ejemplo siguiente crea una matriz con dos filas y tres columnas. DISPLAY MEMORY muestra el contenido de los elementos de la matriz, enumerados en orden del número de elemento.

DIMENSION gaMyArray(2,3)
DISPLAY MEMORY LIKE gaMyArray
GAMYARRAY  Pub  A
( 1, 1)   L  .F. (element number 1)
( 1, 2)   L  .F. (element number 2)
( 1, 3)   L  .F. (element number 3)
( 2, 1)   L  .F. (element number 4)
( 2, 2)   L  .F. (element number 5)
( 2, 3)   L  .F. (element number 6)

Estos dos comandos almacenan la cadena de caracteres INVOICE en el mismo elemento de la matriz:

STORE 'INVOICE' TO gaMyArray(2, 1)
STORE 'INVOICE' TO gaMyArray(4)

En las matrices de una dimensión, un número de elemento es igual que su subíndice de fila única. No es necesario utilizar ASUBSCRIPT( ) con las matrices de una dimensión.

Vea también

ADEL( ) | ADIR( ) | AELEMENT( ) | AFIELDS( ) | AINS( ) | ALEN( ) | ASCAN( ) | ASORT( ) | DIMENSION | DISPLAY MEMORY


AT( ) (Función)

Devuelve la posición numérica inicial de la primera aparición de una expresión de caracteres o de un campo memo en otra expresión de caracteres o campo memo; se cuenta desde el carácter situado más a la izquierda.

AT(cSearchExpression, cExpressionSearched [, nOccurrence])

Valores devueltos

Numérico

Parámetros

cSearchExpression
Especifica la expresión de caracteres que AT( ) busca en cExpressionSearched.
cExpressionSearched
Especifica la expresión de caracteres en que se busca la expresión indicada por cSearchExpression.

Tanto cSearchExpression como cExpressionSearched pueden ser campos memo de cualquier tamaño.

nOccurrence
Especifica qué aparición (primera, segunda, tercera, etc.) de cSearchExpression se busca en cExpressionSearched. De forma predeterminada, AT( ) busca la primera aparición de cSearchExpression (nOccurrence = 1). Si incluye nOccurrence, podrá buscar otras apariciones adicionales de cSearchExpression en cExpressionSearched. AT( ) devolverá 0 si nOccurrence es mayor que el número de veces que cSearchExpression aparece en cExpressionSearched.

Observaciones

AT( ) busca en la segunda expresión de caracteres la primera aparición de la primera expresión de caracteres. Luego devuelve un valor entero que indica la posición del primer carácter de la expresión de caracteres encontrada. Si la expresión de caracteres no se encuentra, AT( ) devolverá 0.

La búsqueda realizada por AT( ) distingue mayúsculas de minúsculas. Para realizar una búsqueda que no distinga entre ambas, utilice ATC( ).

Ejemplo

STORE 'Now is the time for all good men' TO gcString
STORE 'is the' TO gcFindString
CLEAR
? AT(gcFindString,gcString)  && Displays 5
STORE 'IS' TO gcFindString
? AT(gcFindString,gcString)  && Displays 0, case-sensitive

Vea también

AT_C( ) | ATC( ) | ATCLINE( ) | ATLINE( ) | LEFT( ) | RAT( ) | RATLINE( ) | RIGHT( ) | SUBSTR( ) | ATCC( ) | LEFTC( ) | RIGHTC( ) | SUBSTRC( ) | $ (Operador) | OCCURS( ) | INLIST( )


AT_C( ) (Función)

Devuelve la posición numérica inicial de la primera aparición de una expresión de caracteres o de un campo memo en otra expresión de caracteres o campo memo; se cuenta desde el carácter situado más a la izquierda.

AT_C(cSearchExpression, cExpressionSearched [, nOccurrence])

Valores devueltos

Numérico

Parámetros

cSearchExpression
Especifica la expresión de caracteres que AT_C( ) intenta encontrar en cExpressionSearched.
cExpressionSearched
Especifica la expresión de caracteres en que se busca la expresión indicada por cSearchExpression.

Tanto cSearchExpression como cExpressionSearched pueden ser campos memo de cualquier tamaño.

nOccurrence
Especifica qué aparición (primera, segunda, tercera, etc.) de cSearchExpression se busca en cExpressionSearched. De forma predeterminada, AT_C( ) busca la primera aparición de cSearchExpression (nOccurrence = 1). Si incluye nOccurrence, podrá buscar otras apariciones adicionales de cSearchExpression en cExpressionSearched. AT_C( ) devuelve 0 si nOccurrence es mayor que el número de veces que aparece cSearchExpression en cExpressionSearched.

Observaciones

AT_C( ) examina la segunda expresión de caracteres en busca de la primera aparición de la primera expresión de caracteres. Luego devuelve un valor entero que indica la posición del primer carácter de la expresión de caracteres encontrada. Si no se encuentra la expresión de caracteres, AT_C( ) devuelve 0.

AT_C( ) se diseñó para expresiones que contengan caracteres de dos bytes. Si la expresión contiene sólo caracteres de un byte, AT_C( ) equivale a AT( ).

En la búsqueda que realiza AT_C( ) se distingue entre mayúsculas y minúsculas. Para realizar una búsqueda que no distinga entre mayúsculas y minúsculas, utilice ATCC( ).

Esta función es útil para manipular juegos de caracteres de dos bytes para idiomas como Hiragana y Katakana.

Vea también

ATCC( ) | AT( ) | ATC( ) | ATCLINE( ) | ATLINE( ) | LEFT( ) | RAT( ) | RATLINE( ) | RIGHT( ) | SUBSTR( ) | ATCC( ) | LEFTC( ) | RIGHTC( ) | SUBSTRC( ) | $ (Operador) | OCCURS( ) | INLIST( )


ATAGINFO( ) (Función)

Crea una matriz que contiene información acerca de los nombres, número y tipos de índices y expresiones clave.

ATagInfo(ArrayName [,cCDXName [, nWorkArea | cTableAlias]])

Parámetros

ArrayName
Especifica el nombre de la matriz que va a crear. Si la matriz no existe, Visual FoxPro crea una.
cCDXName
Especifica el nombre del archivo de índice compuesto para el que ATAGINFO( ) devuelve información. Si se especifica una cadena vacía ("") para cCDXName, ATAGINFO( ) devuelve el número de etiquetas de todos los archivos .cdx e .idx abiertos para la tabla seleccionada.
nWorkArea
Opcional. Especifica el área de trabajo que contiene la tabla para la que ATAGINFO( ) devuelve información.
cTableAlias
Opcional. Especifica el alias de la tabla para la que ATAGINFO( ) devuelve información. Si se omite cTableAlias y nWorkArea, la función utiliza la tabla del área de trabajo actual.

Valor devuelto

Numérico

Observaciones

AtagInfo( ) devuelve el número de etiquetas de archivo de índice compuesto .cdx y de archivos de índice de entrada única .idx; además, crea una matriz que contiene el nombre de etiqueta, el tipo de etiqueta (principal/candidata/única/normal), la expresión clave, el filtro y el orden.

Columna | Contenido | Tipo de datos
1 | Nombre de etiqueta (nombre de .idx, si está abierto) | Carácter
2 | Tipo de etiqueta (principal, candidata, única o normal) | Carácter
3 | Expresión clave | Carácter
4 | Filtro | Carácter
5 | Orden (ascendente o descendente) | Carácter
6 | Secuencia de ordenación | Carácter

Vea también

DESCENDING( ) | TAG( ) (Función) | TAGCOUNT( ) (Función) | TAGNO( ) (Función) | Tag (Propiedad)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


ATAN( ) (Función)

Devuelve el arco tangente en radianes de una expresión numérica.

ATAN(nExpression)

Valores devueltos

Numérico

Parámetros

nExpression
Especifica una expresión numérica cuyo arco tangente devuelve ATAN( ). nExpression puede ser cualquier valor. El valor devuelto por ATAN( ) puede oscilar entre –pi/2 y +pi/2 (–1,57079 y 1,57079). El número de decimales que se muestran del valor devuelto por ATAN( ) está determinado por SET DECIMALS.

Observaciones

Utilice RTOD( ) para convertir radianes a grados.

Ejemplo

CLEAR
? ATAN(0)  && Displays 0.00
STORE PI( )/2 to gnAngle
? ATAN(gnAngle)  && Displays 1.00
? ATAN(PI( )/2)  && Displays 1.00
? ATAN(DTOR(90))  && Displays 1.00

Vea también

ATN2( ) | RTOD( ) | SET DECIMALS | TAN( ) | Crear expresiones de tipo Numérico


ATC( ) (Función)

Devuelve la posición numérica inicial de la primera aparición de una expresión de caracteres o un campo memo en otra expresión de caracteres o campo memo, sin distinguir entre mayúsculas y minúsculas en dichas dos expresiones.

ATC(cSearchExpression, cExpressionSearched [, nOccurrence])

Valores devueltos

Numérico

Parámetros

cSearchExpression
Especifica la expresión de caracteres que ATC( ) busca en cExpressionSearched.
cExpressionSearched
Especifica la expresión de caracteres en que se busca la expresión indicada por cSearchExpression.

Tanto cSearchExpression como cExpressionSearched pueden ser campos memo de cualquier tamaño.

nOccurrence
Especifica qué aparición (primera, segunda, tercera, etc.) de cSearchExpression se busca en cExpressionSearched. De forma predeterminada, ATC( ) busca la primera aparición de cSearchExpression (nOccurrence = 1). Si incluye nOccurrence, podrá buscar otras apariciones adicionales de cSearchExpression en cExpressionSearched.

Observaciones

ATC( ) busca en la segunda expresión de caracteres la aparición de la primera expresión de caracteres, sin importar si las letras son mayúsculas o minúsculas en ninguna de las expresiones. Utilice AT( ) para realizar una búsqueda que sí distinga mayúsculas y minúsculas.

ATC( ) devuelve un valor entero correspondiente a la posición en que se encuentra el primer carácter de la expresión de caracteres. Si no se encuentra la expresión de caracteres, se devolverá 0.

Ejemplo

STORE 'Now is the time for all good men ... ' TO gcString
STORE 'IS THE' TO gcFindString
CLEAR
? ATC(gcFindString, gcString)  && Displays 5
STORE 'is' TO gcFindString
? ATC(gcFindString, gcString)  && Displays 5
? ATC('now',gcString)  && Displays 1

Vea también

AT( ) | AT_C( ) | ATCC( ) | ATCLINE( ) | ATLINE( ) | LEFT( ) | RAT( ) | RATLINE( ) | RIGHT( ) | SUBSTR( ) | LEFTC( ) | RIGHTC( ) | SUBSTRC( )


ATCC( ) (Función)

Devuelve la posición numérica inicial de la primera aparición de una expresión de caracteres o un campo memo en otra expresión de caracteres o campo memo, sin distinguir entre mayúsculas y minúsculas en dichas dos expresiones.

ATCC(cSearchExpression, cExpressionSearched [, nOccurrence])

Valores devueltos

Numérico

Parámetros

cSearchExpression
Especifica la expresión de caracteres que ATCC( ) intentará encontrar en cExpressionSearched.
cExpressionSearched
Especifica la expresión de caracteres en que se busca la expresión indicada por cSearchExpression.

Tanto cSearchExpression como cExpressionSearched pueden ser campos memo de cualquier tamaño.

nOccurrence
Especifica qué aparición (primera, segunda, tercera, etc.) de cSearchExpression se busca en cExpressionSearched. De forma predeterminada, ATCC( ) buscará la primera aparición de cSearchExpression (nOccurrence = 1). Si incluye nOccurrence, podrá buscar otras apariciones adicionales de cSearchExpression en cExpressionSearched.

Observaciones

ATCC( ) está diseñada para expresiones que contienen caracteres de dos bytes. Si la expresión sólo contiene caracteres de un byte, ATCC( ) equivaldrá a ATC( ).

ATCC( ) examina la segunda expresión de caracteres en busca de la aparición de la primera expresión de caracteres, sin fijarse en si los caracteres están en mayúsculas o en minúsculas en las expresiones. Utilice AT_C( ) para realizar una búsqueda en la que se distinga entre mayúsculas y minúsculas.

ATCC( ) devuelve un entero que corresponde a la posición en que se ha encontrado el primer carácter de la expresión de caracteres. Si no se encuentra la expresión de caracteres, ATCC( ) devolverá 0.

Esta función es útil para manipular juegos de caracteres de dos bytes para idiomas como Hiragana y Katakana.

Vea también

AT( ) | AT_C( ) | ATC( ) | ATCLINE( ) | ATLINE( ) | LEFT( ) | RAT( ) | RATLINE( ) | RIGHT( ) | SUBSTR( ) | LEFTC( ) | RIGHTC( ) | SUBSTRC( )


ATCLINE( ) (Función)

Devuelve el número de línea de la primera aparición de una expresión de caracteres o campo memo en otra expresión de caracteres o campo memo, sin importar que los caracteres estén en mayúsculas o en minúsculas.

ATCLINE(cSearchExpression, cExpressionSearched)

Valores devueltos

Numérico

Parámetros

cSearchExpression
Especifica la expresión de caracteres que ATCLINE( ) busca en cExpressionSearched.
cExpressionSearched
Especifica la expresión de caracteres en que se busca la expresión indicada por cSearchExpression.

Tanto cSearchExpression como cExpressionSearched pueden ser campos memo de cualquier tamaño. Utilice MLINE( ) para devolver la línea que contiene la expresión de caracteres coincidente.

Sugerencia ATCLINE( ) ofrece una forma cómoda de buscar en campos memo.

Observaciones

Si la búsqueda se realiza con éxito, ATCLINE( ) devolverá el número de la línea que contiene la primera expresión de caracteres. Si la búsqueda no se realiza con éxito, ATCLINE( ) devolverá 0.

El número de línea que devolverá ATCLINE( ) viene determinado por el valor de SET MEMOWIDTH, aunque cExpressionSearched no sea un campo memo. Para obtener más información, vea SET MEMOWIDTH.

Utilice ATLINE( ) para realizar una búsqueda en la que se distinga entre mayúsculas y minúsculas.

Ejemplo

El ejemplo 1 encuentra la primera vez que aparece una cadena de caracteres en un campo memo y muestra el nombre y apellidos del empleado, y la línea del campo memo que contiene la cadena de caracteres.

El ejemplo 2 muestra cómo afecta el ancho de memo a ATCLINE( ).

* Example 1
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE employee  && Open employee table
CLEAR
STORE 'JAPANESE' TO gcFindString  && Case insensitive
LOCATE FOR ATCLINE(gcFindString, notes) != 0
? First_Name
?? Last_Name
? MLINE(notes, ATCLINE(gcFindString, notes))
* Example 2
STORE '1234567890ABCDEFGHIJ' TO gcString
SET MEMOWIDTH TO 20
? ATCLINE('AB', gcString)  && Displays 1
SET MEMOWIDTH TO 10
? ATCLINE('AB', gcString)  && Displays 2

Vea también

AT( ) | AT_C( ) | ATC( ) | ATCC( ) (Función) | ATLINE( ) | LEFT( ) | RAT( ) | RATLINE( ) | RIGHT( ) | SUBSTR( ) | LEFTC( ) | RIGHTC( ) | SUBSTRC( ) | MLINE( ) | SET MEMOWIDTH


ATLINE( ) (Función)

Devuelve el número de línea de la primera aparición de una expresión de caracteres o campo memo dentro de otra expresión de caracteres o campo memo, a partir de la primera línea.

ATLINE(cSearchExpression, cExpressionSearched)

Valores devueltos

Numérico

Parámetros

cSearchExpression
Especifica la expresión de caracteres que Microsoft Visual FoxPro busca en cExpressionSearched.
cExpressionSearched
Especifica la expresión de caracteres en que se busca la expresión indicada por cSearchExpression.

Tanto cSearchExpression como cExpressionSearched pueden ser campos memo de cualquier tamaño.

Utilice MLINE( ) para devolver como una cadena de caracteres la línea que contiene la expresión de caracteres coincidente.

Sugerencia ATLINE( ) ofrece una forma muy útil de buscar en los campos memo.

Observaciones

ATLINE( ) busca en la segunda expresión de caracteres la aparición de la primera expresión de caracteres. Al examinar las expresiones, ATLINE( ) tiene en cuenta si los caracteres están en mayúsculas o en minúsculas. Utilice ATCLINE( ) para realizar una búsqueda que no distinga mayúsculas y minúsculas.

Si la búsqueda se realiza con éxito, ATLINE( ) devolverá el número de la línea donde se produce la coincidencia. Si la búsqueda no se realiza con éxito, ATLINE( ) devolverá 0.

El número de línea que devuelve ATLINE( ) está determinado por el valor de SET MEMOWIDTH, aunque cExpressionSearched no sea un campo memo. Para obtener más información, vea SET MEMOWIDTH.

Ejemplo

El ejemplo 1 encuentra la primera vez que aparece una cadena de caracteres en un campo memo y muestra el nombre y apellidos del empleado, y la línea del campo memo que contiene la cadena de caracteres.

El ejemplo 2 muestra cómo afecta el ancho de memo a ATLINE( ).

* Example 1
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE employee  && Open employee table
CLEAR
STORE 'Japanese' TO gcFindString  && Case sensitive
LOCATE FOR ATLINE(gcFindString, notes) != 0
? First_Name
?? Last_Name
? MLINE(notes, ATLINE(gcFindString, notes))
* Example 2
STORE '1234567890ABCDEFGHIJ' TO gcString
SET MEMOWIDTH TO 20
? ATLINE('AB', gcString)  && Displays 1
SET MEMOWIDTH TO 10
? ATLINE('AB', gcString)  && Displays 2

Vea también

AT( ) | AT_C( ) | ATC( ) | ATCC( ) (Función) | ATCLINE( ) (Función) | LEFT( ) | RAT( ) | RATLINE( ) | RIGHT( ) | SUBSTR( ) | LEFTC( ) | RIGHTC( ) | SUBSTRC( ) | MLINE( ) | SET MEMOWIDTH | $ (Operador) | OCCURS( ) | INLIST( )


ATN2( ) (Función)

Devuelve el arco tangente en los cuatro cuadrantes de los valores especificados.

ATN2(nYCoordinate, nXCoordinate)

Valores devueltos

Numérico

Parámetros

nYCoordinate
Especifica la coordenada y.
nXCoordinate
Especifica la coordenada x.

Observaciones

ATN2( ) devuelve el ángulo (en radianes) existente entre la línea y = 0 y la línea que conecta las coordenadas especificadas y el origen (0, 0) del sistema de coordenadas.

ATN2( ) devuelve un valor entre – pi/2 y +pi/2.

El valor devuelto por ATN2( ) puede convertirse a grados mediante RTOD( ). El número de decimales que se muestran con el resultado puede especificarse con SET DECIMALS.

Ejemplo

CLEAR
? PI( )  && Displays 3.14
? ATN2(0,-1)  && Displays 3.14
STORE COS(PI( )) TO gnXCoord
STORE SIN(PI( )) TO gnYCoord
? ATN2(gnYCoord,gnXCoord)  && Displays 3.14
? ATN2(gnYCoord,gnXCoord)/PI( )  && Displays 1.00

Vea también

ATAN( ) | DTOR( ) | RTOD( ) | SET DECIMALS | TAN( )


AUSED( ) (Función)

Incluye en una matriz de variables los alias de tabla y las áreas de trabajo para una sesión de datos.

AUSED(ArrayName [, nDataSessionNumber])

Valores devueltos

Numérico

Parámetros

ArrayName
Especifica el nombre de la matriz que contiene los alias de tabla y las áreas de trabajo para una sesión de datos. Si la matriz especificada no existe, Microsoft Visual FoxPro la creará automáticamente. Si la matriz existe y no es suficientemente grande para contener todos los alias de tabla y las áreas de trabajo, Visual FoxPro aumentará automáticamente su tamaño. Si la matriz es mayor de lo necesario, Visual FoxPro reducirá su tamaño. Si la matriz existe y AUSED( ) devuelve 0 porque no hay ninguna tabla abierta en la sesión de datos, la matriz permanecerá inalterada. Si la matriz no existe y AUSED( ) devuelve 0, no se creará la matriz.
nDataSessionNumber
Especifica el número de sesión de datos cuyos alias de tabla y áreas de trabajo devuelve AUSED( ). Si omite nDataSessionNumber, AUSED( ) devolverá información acerca de la sesión de datos actual. Utilice SET DATASESSIONpara especificar la sesión de datos actual.

Observaciones

AUSED( )devuelve el número de filas de la matriz, que es igual al número de tablas abiertas en la sesión de datos.

AUSED( ) crea una matriz de dos dimensiones y coloca los alias de las tablas abiertas para la sesión de datos en la primera columna de la matriz. La segunda columna de la matriz contiene los números de área de trabajo correspondientes a las tablas.

Los alias de las tablas son colocadas en la matriz en el orden inverso en que fueron abiertas. Por ejemplo, el primer elemento contiene el alias de tabla de la ultima tabla abierta, y el último elemento de la matriz contiene el alias de tabla de la primera tabla abierta. Este orden es útil cuando se usa la función TABLEUPDATE( ) sobre vistas que contienen vistas. Por ejemplo:

FOR  x = 1 TO AUSED(atbl,1)
TABLEUPDATE(0,.T.,x)
NEXT

Ejemplo

En el ejemplo siguiente se utiliza AUSED( ) para crear una matriz llamada gaInuse que contiene los alias de tabla y las áreas de trabajo para las tablas abiertas en la sesión actual. Se muestra el número de tablas abiertas para la sesión actual y, a continuación, se muestran los alias de tabla y las áreas de trabajo.

OPEN DATABASE (HOME(2) + 'Data\testdata') EXCLUSIVE
USE Customer IN 0
CLEAR
? AUSED(gaInuse)
DISPLAY MEMORY LIKE gaInuse
CLOSE DATABASES

Vea también

ALIAS( ) | SET DATASESSION | USE | Trabajar con alias de tablas


AVCXCLASSES( ) (Función)

Coloca la información acerca de las clases de una biblioteca de clases en una matriz.

AVCXCLASSES(ArrayName, cLibraryName)

Valores devueltos

Numérico

Parámetros

ArrayName
Especifica el nombre de la matriz en que se coloca la información acerca de la clase. Si la matriz que especifica no existe, Visual FoxPro la creará automáticamente. Si la matriz existe y no es suficientemente grande para contener los nombres de las clases y las clases de base, Visual FoxPro aumentará automáticamente su tamaño. Si la matriz es mayor de lo necesario, Visual FoxPro reducirá su tamaño.

La matriz contiene una fila por cada clase de la biblioteca de clases, y cada fila contiene 11 columnas con información acerca de la clase. La siguiente tabla muestra la información acerca de la clase de cada columna.

Columna | Información de clase | Nombre del campo .VCX
1 | Nombre de la clase. | OBJNAME
2 | Clase de base de la clase. | BASECLASS
3 | Nombre de la clase primaria de la clase. | CLASS
4 | Ruta de acceso relativa y nombre de archivo de la biblioteca de la clase primaria. | CLASSLOC
5 | Ruta de acceso relativa y nombre de archivo de un mapa de bits para un icono personalizado de una clase. | RESERVED4
6 | Ruta de acceso relativa y nombre de archivo de un icono de clase personalizado del Administrador de proyectos o del Examinador de clases. | RESERVED5
7 | ScaleMode de la clase, píxeles o fóxeles. | RESERVED6
8 | Descripción de la clase. | RESERVED7
9 | Ruta de acceso relativa y nombre del archivo #INCLUDE para la clase. | RESERVED8
10 | Información para la clase definida por el usuario. | USER
11 | Valor lógico verdadero (.T.) si la clase es OLEPUBLIC; de lo contrario, valor lógico falso (.F.). | RESERVED2
cLibraryName
Especifica el nombre de la biblioteca de clase para la que AVCXCLASSES( ) coloca información en la matriz especificada en ArrayName. cLibraryName puede contener una ruta de acceso de la biblioteca de clases. Se produce un error si no existe la biblioteca de clases que especifique.

Observaciones

AVCXCLASSES( ) devuelve el número de filas de la matriz (el número de clases de la biblioteca de clases).

Ejemplo

El ejemplo siguiente utiliza AVCXCLASSES( ) para crear y llenar una matriz llamada aClasses con los nombres y las clases de base de la biblioteca de clases Buttons. DISPLAY MEMORY muestra el contenido de la matriz en la ventana principal de Visual FoxPro.

ACTIVATE SCREEN
CLEAR
? AVCXCLASSES(aClasses, '\VFP\SAMPLES\CLASSES\BUTTONS.VCX')
*** Displays 5
FOR nColCount = 1 TO ALEN(aClasses,2) && Loop through columns
? aClasses(1, nColCount) && Each column of the 1st class
NEXT
*** Displays the following:
*
* cmdCancel
* commandbutton
* cmdok
* buttons.vcx
* cancel.bmp
* cancel.bmp
* Pixels
* Release Form or Form Set
*
*
* .F.

Vea también

ACLASS( ) | AGETCLASS( ) | AMEMBERS( ) | CREATE CLASS


BAR( ) (Función)

Devuelve el número del elemento elegido más recientemente de un menú definido mediante DEFINE POPUP o de un elemento elegido en un menú de Visual FoxPro.

BAR( )

Valores devueltos

Numérico

Observaciones

Cada elemento de un menú tiene asignado un número mediante DEFINE BAR. Cuando se elige un elemento en un menú, BAR( ) devuelve el número asignado a dicho elemento. Un programa puede bifurcarse a otras rutinas según el valor devuelto por BAR( ).

BAR( ) devuelve 0 si no hay ningún menú activo o si el usuario presiona ESC para salir del menú.

Ejemplo

El ejemplo siguiente utiliza BAR( ) para transferir a un procedimiento el número de un elemento de menú. La barra de menús del sistema actual se guarda en memoria mediante SET SYSMENU SAVE y, después, se eliminan todos los títulos de menús del sistema mediante SET SYSMENU TO.

Se crean dos títulos de menú con DEFINE PAD y se utiliza DEFINE POPUP para crear un menú para cada título de menú. DEFINE BAR se utiliza para crear elementos en cada menú. Cuando elija un título de menú, ON PAD utilizará ACTIVATE POPUP para activar el menú correspondiente.

Cuando elija un elemento de un menú, ON SELECTION POPUP utilizará BAR( ) y POPUP( ) para transferir el número del elemento y el título del menú al procedimiento elec. El procedimiento choice muestra el número del elemento elegido y el nombre del menú que contiene el elemento; además, se restaura el menú de sistema original de Visual FoxPro con SET SYSMENU TO DEFAULT.

*** Name this program BAR_EXAM.PRG ***
CLEAR
SET SYSMENU SAVE
SET SYSMENU TO
DEFINE PAD padConv OF _MSYSMENU ;
PROMPT '\<Conversions' COLOR SCHEME 3 ;
KEY ALT+C, ''
DEFINE PAD padCard OF _MSYSMENU ;
PROMPT 'Card \<Info' COLOR SCHEME 3 ;
KEY ALT+I, ''
ON PAD padConv OF _MSYSMENU ACTIVATE POPUP popConv
ON PAD padCard OF _MSYSMENU ACTIVATE POPUP popCard
DEFINE POPUP popConv MARGIN RELATIVE COLOR SCHEME 4
DEFINE BAR 1 OF popConv PROMPT 'Ar\<ea' KEY CTRL+E, '^E'
DEFINE BAR 2 OF popConv PROMPT '\<Length' ;
KEY CTRL+L, '^L'
DEFINE BAR 3 OF popConv PROMPT 'Ma\<ss' ;
KEY CTRL+S, '^S'
DEFINE BAR 4 OF popConv PROMPT 'Spee\<d' ;
KEY CTRL+D, '^D'
DEFINE BAR 5 OF popConv PROMPT '\<Temperature' ;
KEY CTRL+T, '^T'
DEFINE BAR 6 OF popConv PROMPT 'T\<ime' ;
KEY CTRL+I, '^I'
DEFINE BAR 7 OF popConv PROMPT 'Volu\<me' ;
KEY CTRL+M, '^M'
*** Here is where the POPCONV menu uses the BAR( ) function
*** to pass a bar number to the procedure called choice below.
ON SELECTION POPUP popConv;
DO choice IN bar_exam WITH BAR( ), POPUP( )
DEFINE POPUP popCard MARGIN RELATIVE COLOR SCHEME 4
DEFINE BAR 1 OF popCard PROMPT '\<View Charges' ;
KEY ALT+V, ''
DEFINE BAR 2 OF popCard PROMPT 'View \<Payments' ;
KEY ALT+P, ''
DEFINE BAR 3 OF popCard PROMPT 'Vie\<w Users' ;
KEY ALT+W, ''
DEFINE BAR 4 OF popCard PROMPT '\-'
DEFINE BAR 5 OF popCard PROMPT '\<Charges ';
KEY ALT+C
DEFINE BAR 6 OF popCard PROMPT '\-'
DEFINE BAR 7 OF popCard PROMPT 'E\<xit ';
KEY ALT+X
*** Here is where the POPCARD menu uses the BAR( ) function
*** to pass a bar number to the procedure called choice below.
ON SELECTION POPUP popCard;
DO choice IN bar_exam WITH BAR( ), POPUP( )
*** The procedure choice uses the gnBar parameter
*** to contain the value passed by the BAR( ) function.
PROCEDURE choice
PARAMETERS gnBar, gcPopup
WAIT WINDOW 'You chose bar #' + LTRIM(STR(gnBar)) + ;
' from popup ' + gcPopup NOWAIT
SET SYSMENU TO DEFAULT

Vea también

ACTIVATE POPUP | CNTBAR( ) | DEFINE BAR | DEFINE POPUP | GETBAR( ) | MRKBAR( ) | ON BAR | ON SELECTION BAR | PRMBAR( )


BARCOUNT( ) (Función)

Se incluye por compatibilidad con dBASE.


BARPROMPT( ) (Función)

Se incluye por compatibilidad con dBASE.


BETWEEN( ) (Función)

Determina si el valor de una expresión queda dentro de los valores de otras dos expresiones del mismo tipo de datos.

BETWEEN(eTestValue, eLowValue, eHighValue)

Valores devueltos

Logical o valor nulo

Parámetros

eTestValue
Especifica la expresión cuyo valor comprueba BETWEEN( ). Si el valor de eTestValue es mayor o igual que el valor de eLowerValue, y menor o igual que el valor de eHighValue, BETWEEN( ) devolverá verdadero (.T.). De lo contrario, BETWEEN( ) devolverá falso (.F.). BETWEEN( ) devuelve el valor nulo si eLowValue o eHighValue son el valor nulo.
eLowValue
Especifica el valor inferior del intervalo que evalúa BETWEEN( ).
eHighValue
Especifica el valor superior del intervalo que evalúa BETWEEN( ).

Observaciones

BETWEEN( ) devuelve el valor verdadero (.T.) si el valor de una expresión de tipo Carácter, Date, DateTime, Numérico, Float, Integer, Double o Currency está dentro de los valores de otras dos expresiones del mismo tipo de datos. Si el valor de la expresión no queda dentro de los valores de las otras dos expresiones, BETWEEN( ) devolverá falso (.F.). BETWEEN( ) devuelve el valor nulo si eLowValue o eHighValue son el valor nulo.

Ejemplo

El ejemplo siguiente explora la tabla orders para buscar todos los registros cuyos valores del campo order_amt estén comprendidos entre 950 y 1000, ambos inclusive, y muestra los campos cust_id y order_amt.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE orders  && Open order table
CLEAR
SCAN FOR BETWEEN(order_amt,950,1000)
? cust_id, order_amt
ENDSCAN

Vea también

MAX( ) | MIN( ) | SET TRBETWEEN (Comando)


BINDEVENT( ) (Función)

Puede usar BINDEVENT( ) para enlazar eventos, propiedades o métodos de objetos nativos de Visual FoxPro a otros objetos de Visual FoxPro. Para enlazar eventos de objetos COM (Component Object Model), use la función EVENTHANDLER( ).

Nota La propiedad ActivePage no está soportada cuando usa BINDEVENT( ).
BINDEVENT(oFuenteDelEvento, cEvento, oManejadorDeEventos, cDelegado [, nBanderas])

Parámetros

oFuenteDelEvento
Especifica la fuente del evento, quién debe ser un objeto válido de Visual FoxPro.
cEvento
Especifica el nombre del evento, método o propiedad que quiere enlazar.
oManejadorDeEventos
Especifica el objeto, quién debe ser un objeto válido de Visual FoxPro para manejar el evento.
cDelegado
Especifica el método o "delegado", que maneja el evento para oManejadorDeEventos.

El método delegado tiene los mismos parámetros que el evento indicado en cEvento. Puede llamar a la función AEVENTS( ) para devolver una referencia a un objeto del origen del evento. Si el método delegado no tiene suficientes parámetros para manejar aquellos pasados por el evento, Visual FoxPro genera un error.

nBanderas
Especifica una bandera (bit) aditiva la cuál puede indicarse para la operación de enlace de eventos.
nBanderas | Bits | Descripción
0 | 00 | Llamar código delegado antes del código del evento. (Predeterminado)
01 | Llamar código del evento antes de código delegado.
2 | 10 | No desencadena al evento (llama al código delegado) cuando ocurra una llamada simple al método.
31 | 11 | Llamar código del evento antes de código delegado. No desencadena al evento (llama al código delegado) cuando ocurra una llamada simple al método.

1Si usa un valor de nBanderas de 1, el valor devuelto por una llamada de un método al evento no es la del evento, sino la del último delegado invocado. El evento es llamado antes que cualquiera de los delegados, por lo que el valor devuelto por el delegado es el último valor remanente en la pila (stack). Por ello, se recomienda que el método delegado contenga el mismo valor de retorno que el evento mismo. En Visual FoxPro, un procedimiento que no tiene una instrucción RETURN explícitamente devuelve un valor implícito de Verdadero (.T.). Este es un problema sólo si el evento fue disparado por la llamada al método y no envía un uso interactivo o llamada a RAISEEVENT( ).

La siguiente tabla muestra si el evento es disparado cuando el Bit 1 está 'off' o 'on'.

Event type | OFF (Predeterminado) | ON
Interactivo | SI | SI
Programático | SI | NO
RAISEEVENT( ) | SI | SI

Valores devueltos

Tipo de dato Numérico. BINDEVENT( ) devuelve el número de enlaces para el evento del objeto.

Observaciones

Puede enlazar a cualquier evento de objeto de Visual FoxPro, propiedad o método válido, incluyendo los métodos Access y Assign. Sin embargo, los eventos y métodos delegados deben ser públicos, no miembros de la clase marcados como 'protegido' u ' Oculto'.

No puede enlazar a un evento con parámetros pasados por referencia. Aunque la llamada a BINDEVENT( ) tenga éxito, el disparar el evento, por ejemplo usando RAISEEVENT( ), falla.

Cuando enlaza a una propiedad, debe enlazarse directamente y no al método Assign. Si enlaza directamente al método Assign, sepa que los métodos Access y Assign están marcados como Protected y no son visibles excepto dentro de la clase.

Nota Si enlaza a una propiedad que tiene un método Assign, el método delegado se puede disparar dos veces. La primera vez es cuando se hace la asignación de la propiedad. La segunda vez es cuando se le cambia el valor a la propiedad, dentro del método Assign, al valor del parámetro que se le pasa. El método delegado debe tener en cuenta esta posibilidad.

Las reglas normales de herencia están vigentes. Si el método delegado no contiene código, Visual FoxPro viaja a través de la jerarquía padre.

Cuando un evento ocurre o si es llamado como un método, un controlador de eventos es llamado. Llamando al evento como método desencadena el evento a menos que especifique un valor nBanderas de 2 o 3.

Predeterminadamente, Visual FoxPro llama al método delegado antes del evento. Sin embargo, puede modificar ese comportamiento usando nBanderas.

Si especifica una propiedad como el evento a enlazar, Visual FoxPro enlaza esa propiedad a un método Assign implícito. Cuando cambia el valor de la propiedad, Visual FoxPro desencadena un evento.

Si se le pasa un parámetro inválido, Visual FoxPro genera el error, "Valor, tipo o cuenta de función inválida." Sin embargo, si ocurre un problema durante la operación de enlace, Visual FoxPro no genera un error. Puede capturar el valor de retorno de BINDEVENT( ) para ver el número de enlaces.

Ciertos eventos de control como GotFocus, LostFocus, InteractiveChange y ProgrammaticChange no trabajan si el segundo bit del parámetro nBanderas está activado, por ejemplo nBanderas en 2. Estos eventos son tratados como llamadas a métodos internamente por Visual FoxPro, aunque son considerados eventos. Este mismo comportamiento aplica al método Refresh de un objeto en una forma el cuál es llamado en el método Refresh del formulario. Ciertos eventos como When y Valid requieren código en el evento para que esto ocurra.

BINDEVENT( ) no soporta la propiedad Value directamente, porque esta es manejada por Visual FoxPro de manera especial. Deben usarse los eventos InteractiveChange y ProgrammaticChange en su lugar.

Si el evento original contiene un comando NODEFAULT, Visual FoxPro aún procesa el evento porque es posible que el método delegado sea llamado antes del evento. NODEFAULT aplica sólo a eventos nativos de Visual FoxPro.

Si hace una llamada a BINDEVENT( ) exactamente duplicada, Visual FoxPro ignora la llamada pero retorna igualmente el número de enlaces del evento del objeto. Si cambia el valor de nBanderas, puede llamar a BINDEVENT( ) para reenlazar al evento.

Ejemplo

El siguiente ejemplo muestra como puede mantener el 'Examinador de Clases' posicionado a la derecha de la ventana principal de Visual FoxPro, sin importar como se cambie el tamaño de la ventana. BINDEVENT( ) asocia el evento Resize de la variable de sistema _SCREEN o la ventana principal de Visual FoxPro, con oManejador quién usa miresize como su delegado. El código para miresize corre cuando se desencadena el evento Resize.

PUBLIC oManejador
oManejador=("miManejador")
DO (_browser)
BINDEVENT(_SCREEN,"Resize",oManejador,"miresize")
DEFINE CLASS miManejador AS Session
PROCEDURE miresize
IF ISNULL(_obrowser) THEN
UNBINDEVENT(THIS)
ELSE
_obrowser.left = _SCREEN.Width - _obrowser.width
ENDIF
RETURN
ENDDEFINE

Vea también

Funciones | Enlace de Eventos para objetos de Visual FoxPro | UNBINDEVENTS( ) (Función) | RAISEEVENT( ) (Función) | AEVENTS( ) (Función)


BINTOC( ) (Función)

Convierte un valor entero a una representación del mismo en caracteres binarios.

BINTOC(nExpression [, nSize])

Valores devueltos

Character

Parámetros

nExpression
Especifica el valor entero que hay que convertir.
nSize
Especifica la longitud en caracteres de la cadena de caracteres devuelta.

nSize también determina el valor que puede especificar para nExpression. La tabla siguiente presenta los valores permitidos para nSize y el intervalo de valores correspondiente para nExpression:

nSize | Intervalo de nExpression
1 | -128 a 127
2 | -32.768 a 32.767
4 (predeterminado) | -2.147.483.648 a 2.147.483.647

Si se omite nSize, BINTOC( ) devuelve una cadena de caracteres formada por cuatro caracteres.

Observaciones

BINTOC( ) se puede utilizar para reducir el tamaño de índices para campos numéricos que contienen datos de tipo Integer. Por ejemplo, un campo numérico llamado iPartCode contiene un valor entero que varía entre 1 y 127 que corresponde a un código de clasificación de partes. BINTOC( ) permite convertir el valor del campo numérico en una representación de caracteres. Por ejemplo, el siguiente comando crea un índice con una clave de índice de un carácter:

INDEX ON BINTOC(nPartCode,1) TAG PartCode

Vea también

CTOBIN( ) (Función) | CREATEBINARY( ) (Función) | Tipo de campo Entero


BITAND( ) (Función)

Devuelve el resultado de una operación AND a nivel de bits realizada sobre dos o más valores numéricos.

BITAND(nExpression1, nExpression2, … nExpression26)

Valores devueltos

Numérico

Parámetros

nExpression1, nExpression2,... nExpression26
Especifica los valores numéricos sobre los que se realiza la operación AND a nivel de bits. Si los valores de los parámetros nExpression no son enteros, se convertirán a enteros antes de que se realice la operación AND a nivel de bit. Puede pasar 26 parámetros como máximo.

Observaciones

BITAND( ) compara cada bit de nExpressionN con el bit correspondiente de nExpressionN+1. Si los dos bits son igual a 1, el bit resultante correspondiente tendrá el valor 1; de lo contrario, el valor 0.

La tabla siguiente muestra el resultado de una operación AND a nivel de bit sobre los bits correspondientes de nExpressionN y nExpressionN+1:

Bit nExpressionN | Bit nExpressionN+1 | Bit resultante
0 | 0 | 0
0 | 1 | 0
1 | 1 | 1
1 | 0 | 0

Ejemplo

x = 3  && 0011 binary
y = 6  && 0110 binary
? BITAND(x,y) && Returns 2, 0010 binary

Vea también

BITCLEAR( ) | BITLSHIFT( ) | BITNOT( ) | BITOR( ) | BITRSHIFT( ) | BITSET( ) | BITTEST( ) | BITXOR( )


BITCLEAR( ) (Función)

Borra un bit especificado (establece el bit como 0) en un valor numérico y devuelve el valor resultante.

BITCLEAR(nExpression1, nExpression2)

Valores devueltos

Numérico

Parámetros

nExpression1
Especifica el valor numérico en el que se desactiva un bit. Si nExpression1 no es un entero, se convertirá en entero antes de que se establezca su bit.
nExpression2
Especifica la posición de bit de nExpression1 que se desactiva. nExpression2 puede ir de 0 a 31; 0 es el bit más a la derecha.

Ejemplo

x = 7  && 0111 binary
y = 1  && 2nd bit position (0 = 1st bit position)
? BITCLEAR(x,y) && Returns 5, 0101 binary

Vea también

BITAND( ) | BITLSHIFT( ) | BITNOT( ) | BITOR( ) | BITRSHIFT( ) | BITSET( ) | BITTEST( ) | BITXOR( )


BITLSHIFT( ) (Función)

Devuelve el resultado de desplazar un número específico de posiciones hacia la izquierda los bits de un valor numérico.

BITLSHIFT(nExpression1, nExpression2)

Valores devueltos

Numérico

Parámetros

nExpression1
Especifica el valor numérico cuyos bits se desplazan a la izquierda. Si nExpression1 no es un entero, se convertirá en un entero antes de desplazar sus bits.
nExpression2
Especifica el número de posiciones de bit que se van a desplazar. Si nExpression2 no es un entero, se convertirá en un entero.

Ejemplo

x = 5  && 0101 binary
y = 1  && Shift bits 1 position left
? BITLSHIFT(x,y) && Returns 10, 1010 binary

Vea también

BITAND( ) | BITCLEAR( ) | BITNOT( ) | BITOR( ) | BITRSHIFT( ) | BITSET( ) | BITTEST( ) | BITXOR( )


BITNOT( ) (Función)

Devuelve el resultado de una operación NOT a nivel de bit realizada sobre un valor numérico.

BITNOT(nExpression)

Valores devueltos

Numérico

Parámetros

nExpression
Especifica el valor numérico en que se lleva a cabo la operación NOT a nivel de bit. Si nExpression no es un entero, se convertirá en un entero antes de que se desplacen sus bits.

Observaciones

BITNOT( ) devuelve el complemento a nivel de bit de nExpression. El valor numérico devuelto por BITNOT( ) se obtiene a partir del indicado por nExpression, sustituyendo cada 0 por 1 y cada 1 por 0.

La tabla siguiente muestra el resultado de una operación NOT a nivel de bit sobre nExpression:

Bit de nExpression | Bit resultante
0 | 1
1 | 0

Ejemplo

x = 5  && 0101 binary
? BITNOT(x) && Returns -6

Vea también

BITAND( ) | BITCLEAR( ) | BITLSHIFT( ) | BITOR( ) | BITRSHIFT( ) | BITSET( ) | BITTEST( ) | BITXOR( )


BITOR( ) (Función)

Devuelve el resultado de una operación OR inclusiva a nivel de bit realizada sobre dos valores numéricos.

BITOR(nExpression1, nExpression2, …, nExpressionN )

Valores devueltos

Numérico

Parámetros

nExpression1, nExpression2, nExpressionN
Especifica los valores numéricos en los que se lleva a cabo la operación OR inclusiva a nivel de bit. Si nExpression1 y nExpression2 no son enteros, se convertirán en enteros antes de que se realice la operación OR inclusiva a nivel de bit.
Nota Puede pasar 26 parámetros como máximo.

Observaciones

BITAND( ) compara cada bit de nExpressionN con el bit correspondiente de nExpressionN+1. Si los dos bits son igual a 1, el bit resultante correspondiente tendrá el valor 1; de lo contrario, el valor 0.

La tabla siguiente muestra el resultado de una operación OR inclusiva sobre los correspondientes bits de nExpressionN y nExpressionN+1:

Bit nExpressionN | Bit nExpressionN+1 | Bit resultante
0 | 0 | 0
0 | 1 | 1
1 | 0 | 1
1 | 1 | 1

Ejemplo

x = 5  && 0101 binary
y = 6  && 0110 binary
? BITOR(x,y) && Returns 7, 0111 binary

Vea también

BITAND( ) | BITCLEAR( ) | BITLSHIFT( ) | BITNOT( ) | BITRSHIFT( ) | BITSET( ) | BITTEST( ) | BITXOR( )


BITRSHIFT( ) (Función)

Devuelve el resultado de desplazar un número específico de posiciones hacia la derecha los bits de un valor numérico.

BITRSHIFT(nExpression1, nExpression2)

Valores devueltos

Numérico

Parámetros

nExpression1
Especifica el valor numérico cuyos bits se desplazan hacia la derecha. Si nExpression1 no es un entero, se convertirá en un entero antes de desplazar sus bits.
nExpression2
Especifica el número de posiciones de bit que se van a desplazar. Si nExpression2 no es un entero, se convertirá en un entero.

Ejemplo

x = 5  && 0101 binary
y = 1  && Shift bits 1 position right
? BITRSHIFT(x,y) && Returns 2, 0010 binary

Vea también

BITAND( ) | BITCLEAR( ) | BITLSHIFT( ) | BITNOT( ) | BITOR( ) | BITSET( ) | BITTEST( ) | BITXOR( )


BITSET( ) (Función)

Establece como 1 el bit de un valor numérico y devuelve el valor resultante.

BITSET(nExpression1, nExpression2)

Valores devueltos

Numérico

Parámetros

nExpression1
Especifica el valor numérico en el que se establece un bit. Si nExpression1 no es un entero, se convertirá en entero antes de que se establezca su bit.
nExpression2
Especifica la posición de bit de nExpression1 que se establece como 1. nExpression2 puede ir de 0 a 31; 0 es el bit más a la derecha.

Ejemplo

x = 5  && 0101 binary
y = 1  && 2nd bit position (0 = 1st bit position)
? BITSET(x,y) && Returns 7, 0111 binary

Vea también

BITAND( ) | BITCLEAR( ) | BITLSHIFT( ) | BITNOT( ) | BITOR( ) | BITRSHIFT( ) | BITTEST( ) | BITXOR( )


BITTEST( ) (Función)

Devuelve Verdadero (.T.) si un bit especificado de un valor numérico se establece en 1; de lo contrario, devuelve Falso (.F.).

BITTEST(nExpression1, nExpression2)

Valores devueltos

Logical

Parámetros

nExpression1
Especifica el valor numérico en el que se comprueba un bit. Si nExpression1 no es un entero, se convertirá en un entero antes de comprobar su bit.
nExpression2
Especifica la posición de bit de nExpression1 que se comprueba. nExpression2 puede ir de 0 a 31; 0 es el bit situado más a la derecha.

Ejemplo

El ejemplo siguiente usa BITTEST( ) para determinar si una serie de enteros son pares. Si un entero es par, la función IsEven devuelve Verdadero (.T.); de lo contrario, devuelve Falso (.F.).

CLEAR
? '2 even? '
?? IsEven(2)  && Even, .T. returned
? '3 even? '
?? IsEven(3)  && Not even, .F. returned
? '0 even? '
?? IsEven(0)  && Even, .T. returned
? '-13 even? '
?? IsEven(-13)  && Not even, .F. returned
Function IsEven
PARAMETER nInteger
RETURN NOT BITTEST(nInteger, 0)

Vea también

BITAND( ) | BITCLEAR( ) | BITLSHIFT( ) | BITNOT( ) | BITOR( ) | BITRSHIFT( ) | BITSET( ) | BITXOR( )


BITXOR( ) (Función)

Devuelve el resultado de una operación OR exclusiva a nivel de bit realizada sobre dos valores numéricos.

BITXOR(nExpression1, nExpression2, …, nExpressionN )

Valores devueltos

Numérico

Parámetros

nExpression1, nExpression2, nExpressionN
Especifica los valores numéricos sobre los que se lleva a cabo la operación OR exclusiva a nivel de bit. Si nExpression1 y nExpression2 no son enteros, se convertirán en enteros antes de que se realice la operación OR exclusiva a nivel de bit.
Nota Puede pasar 26 parámetros como máximo.

Observaciones

BITAND( ) compara cada bit de nExpressionN con el bit correspondiente de nExpressionN+1. Si los dos bits son igual a 1, el bit resultante correspondiente tendrá el valor 1; de lo contrario, el valor 0.

La tabla siguiente muestra el resultado de una operación OR exclusiva sobre los correspondientes bits de nExpressionN y nExpressionN+1:

Bit nExpressionN | Bit nExpressionN+1 | Bit de resultado
0 | 0 | 0
0 | 1 | 1
1 | 0 | 1
1 | 1 | 0

Ejemplo

x = 5  && 0101 binary
y = 6  && 0110 binary
? BITXOR(x,y) && Returns 3, 0011 binary

Vea también

BITAND( ) | BITCLEAR( ) | BITLSHIFT( ) | BITNOT( ) | BITOR( ) | BITRSHIFT( ) | BITSET( ) | BITTEST( )


BOF( ) (Función)

Determina si el puntero de registro está situado al principio de una tabla.

BOF([nWorkArea | cTableAlias])

Valores devueltos

Lógico

Parámetros

nWorkArea
Especifica el número del área de trabajo para una tabla abierta en otra área de trabajo.
cTableAlias
Especifica el alias para una tabla abierta en otra área de trabajo.

Si la tabla cuya condición de principio de archivo desea probar está abierta en un área de trabajo distinta de la seleccionada actualmente, utilice estos argumentos opcionales para especificar el número del área de trabajo o el alias para la tabla. Si no hay ninguna tabla abierta en el área de trabajo especificada, BOF( ) devolverá Falso (.F.).

Observaciones

Utilice BOF( ) para probar la condición de principio de archivo de una tabla. BOF( ) devuelve Verdadero (.T.) si ha intentado mover el puntero de registro a una posición anterior al primer registro de la tabla.

Ejemplo

El ejemplo siguiente abre la tabla customer y muestra el nombre de la organización página a página, a partir del último registro de la tabla. La lista continúa hasta que se llegue al principio del archivo o hasta que se elija Cancelar.

CLOSE DATABASES
CLEAR
OPEN DATABASE (HOME() + "samples\data\testdata")
USE customer
GO BOTTOM
local recCtr, btnValue
recCtr = 0
btnValue = 1
DO WHILE btnValue = 1 AND NOT BOF()
? "Company : " + company
recCtr = recCtr + 1
if (recCtr % 20) = 0 then
btnValue =MESSAGEBOX ("Click OK to continue, Cancel to quit.",33)
clear
endif
Skip -1    && Move up one record
ENDDO
=MESSAGEBOX("Listing complete.",48)

Vea también

EOF( ) | FEOF( ) (Función) | _FEOF( ) (Rutina de biblioteca API)


CANDIDATE( ) (Función)

Devuelve verdadero (.T.) si una etiqueta de índice es una etiqueta de índice candidato; de lo contrario, devuelve falso (.F.).

CANDIDATE([nIndexNumber] [, nWorkArea | cTableAlias])

Valores devueltos

Lógico

Parámetros

nIndexNumber
Especifica el número de la etiqueta de índice para la que CANDIDATE( ) devuelve el estado de candidato. CANDIDATE( ) devuelve el estado de candidato en el orden siguiente a medida que nIndexNumber aumenta en 1 el número total de etiquetas de índice estructural compuesto y compuesto independiente:
  1. En primer lugar se devuelve el estado candidato de cada etiqueta del índice estructural compuesto (si hay alguno). Se devuelve el estado candidato de las etiquetas en el orden en que se han creado en el índice estructural.
  2. En último lugar se devuelve el estado candidato de cada etiqueta de cualquier índice estructural compuesto independiente que esté abierto. Se devuelve el estado candidato de las etiquetas en el orden en que se han creado en los índices compuestos independientes.

Si omite nIndexNumber, CANDIDATE( ) comprueba si la etiqueta de índice principal de control es una etiqueta de índice candidato. Si no hay una etiqueta de índice principal de control, CANDIDATE( ) devuelve falso (.F.).

nWorkArea
Especifica el área de trabajo de la etiqueta de índice especificada con nIndexNumber.
cTableAlias
Especifica el área de trabajo de la etiqueta de índice especificada con nIndexNumber.

Si omite nWorkArea y cTableAlias, CANDIDATE( ) comprueba si la etiqueta de índice del área de trabajo seleccionada actualmente es una etiqueta de índice candidato.

Observaciones

Una etiqueta de índice candidato es una etiqueta de índice que puede convertirse en la etiqueta de índice principal porque no contiene valores nulos o duplicados.

Ejemplo

El ejemplo siguiente abre la tabla customer de la base de datos testdata. FOR ... ENDFOR para crear un bucle en el cual se comprueba el estado de candidato de cada etiqueta de índice del índice estructural customer. El nombre de cada etiqueta de índice estructural se muestra con su estado de candidato.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer     && Open customer table
FOR nCount = 1 TO 254
IF !EMPTY(TAG(nCount))  && Checks for tags in the index
? TAG(nCount)  && Display tag name
? CANDIDATE(nCount)  && Display candidate status
ELSE
EXIT  && Exit the loop when no more tags are found
ENDIF
ENDFOR

Vea también

ALTER TABLE - SQL | CREATE TABLE - SQL | INDEX | PRIMARY( )


CAPSLOCK( ) (Función)

Devuelve el modo actual de la tecla BLOQ MAYÚS, o activa o desactiva la tecla BLOQ MAYÚS.

CAPSLOCK([lExpression])

Valores devueltos

Logical

Parámetros

lExpression
Se puede incluir para activar o desactivar la tecla BLOQ MAYÚS. CAPSLOCK(.T.) activa BLOQ MAYÚS y CAPSLOCK(.F.) la desactiva. Se devuelve un valor lógico correspondiente a la configuración de BLOQ MAYÚS antes de ejecutar CAPSLOCK(.T.) o CAPSLOCK(.F.).

Observaciones

Al ejecutar CAPSLOCK( ) sin argumentos, devuelve verdadero (.T.) si BLOQ MAYÚS está activada o devuelve falso (.F.) si BLOQ MAYÚS está desactivada.

Ejemplo

El código siguiente almacena el estado de CAPSLOCK( ) en una variable del sistema. El comando = ejecuta la función CAPSLOCK(°) para activar BLOQ MAYÚS. Luego, el comando = ejecuta la función CAPSLOCK( ) para restablecer BLOQ MAYÚS a su estado anterior.

glOldLock = CAPSLOCK( )     && Save original setting
= CAPSLOCK(.T.)     && Turn CAPS LOCK on
*** Perform any number of statements ***
= CAPSLOCK(glOldLock)  && Return to original setting
*** or, toggle CapsLock to the opposite value and back ***
= CAPSLOCK(!CAPSLOCK( ))
WAIT WINDOW
= CAPSLOCK(!CAPSLOCK( ))
WAIT WINDOW
= CAPSLOCK(glOldLock)  && Return to original setting

Vea también

INSMODE( ) | NUMLOCK( ) | = (Comando)


CDOW( ) (Función)

Devuelve el día de la semana de una expresión determinada de tipo Date o DateTime.

CDOW(dExpression | tExpression)

Valores devueltos

Character

Parámetros

dExpression
Especifica la fecha para la que CDOW( ) devuelve el día.
tExpression
Especifica la expresión de tipo DateTime para la que CDOW( ) devuelve el día.

Observaciones

CDOW( ) devuelve el nombre del día de la semana como una cadena en el formato de nombre apropiado.

Ejemplo

STORE {^1998-02-16} TO gdDate
CLEAR
? CDOW(gdDate)  && Displays Monday

Vea también

DAY( ) | DOW( ) | SET FDOW | SET FWEEK | SYS( ) - Introducción a las funciones | DATETIME( )


CDX( ) (Función)

Devuelve el nombre del archivo de índice compuesto (.cdx) abierto que tiene el número de posición de índice especificado.

CDX(nIndexNumber [, nWorkArea | cTableAlias])

Valores devueltos

Character

Parámetros

nIndexNumber
Lo siguiente se aplica a una tabla con un índice compuesto estructural y uno o más índices compuestos:
nIndexNumber | Descripción
1 | Devuelve el nombre del archivo de índice estructural (que es siempre el mismo que el nombre de la tabla).
2 | Devolverá el nombre del primer archivo de índice compuesto especificado en la cláusula INDEX del comando USE, o en SET INDEX.
3 | Devolverá el nombre del segundo archivo de índice compuesto, si lo hay, y así sucesivamente.
Mayor que el número de archivos .cdx abiertos. | Devolverá la cadena vacía.

Lo siguiente se aplica a una tabla sin un índice compuesto estructural y uno o más índices compuestos:

nIndexNumber | Descripción
1 | Devolverá el nombre del primer archivo de índice compuesto especificado en la cláusula INDEX del comando USE, o en SET INDEX.
2 | Devolverá el nombre del segundo archivo de índice compuesto, si lo hay, y así sucesivamente.
Mayor que el número de archivos .cdx abiertos. | Devolverá la cadena vacía.
nWorkArea
Especifica el número del área de trabajo de una tabla para la que desea devolver mediante CDX( ) los nombres de archivo de índice compuesto que están abiertos.
cTableAlias
Especifica el alias de la tabla para la que desea devolver mediante CDX( ) los nombres de archivo de índice compuesto que están abiertos.

Si omite nWorkArea y cTableAlias, se devolverán los nombres de los archivos de índice compuesto para la tabla del área de trabajo seleccionada actualmente.

Observaciones

La función CDX( ) es idéntica a la función MDX( ).

Un índice .cdx (compuesto) consiste en un archivo físico que contiene muchas etiquetas de índice. Cada etiqueta de índice es una referencia de orden de índice para la tabla asociada.

Hay dos tipos de archivos .cdx: índice compuesto estándar e índice estructural. Un índice compuesto estándar (.cdx) puede tener un nombre distinto de su tabla asociada y puede residir en otro directorio distinto que su tabla. Una tabla puede tener múltiples archivos de índice compuesto. Un índice compuesto se abre con la cláusula INDEX del comando USE o con SET INDEX.

Un archivo .cdx estructural debe tener el mismo nombre que su tabla asociada y debe residir en el mismo directorio. Una tabla sólo puede tener un archivo de índice estructural. Los archivos .cdx estructurales se abren y se actualizan automáticamente cuando se abre la tabla asociada con USE.

Cualquier archivo .idx (índice compatible con Microsoft FoxBASE+ y FoxPro 1.0) especificado en USE o en SET INDEX se pasa por alto en la función CDX( ).

Utilice TAG( ) para devolver nombres de etiquetas individuales contenidas en un archivo .cdx y utilice NDX( ) para devolver el nombre de los archivos .idx abiertos.

Cuando SET FULLPATH está establecido en ON, CDX( ) devuelve la ruta de acceso y el nombre del .cdx. Cuando SET FULLPATH está establecido en OFF, CDX( ) devuelve la unidad y el nombre del archivo .cdx.

Ejemplo

El ejemplo siguiente abre la tabla customer de la base de datos testdata. FOR ... ENDFOR se utiliza para crear un bucle en el que se muestra el nombre de cada índice estructural.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer     && Open customer table
CLEAR
FOR nCount = 1 TO 254
IF !EMPTY(TAG(nCount))  && Checks for tags in the index
? CDX(nCount)     && Display structural index names
ELSE
EXIT  && Exit the loop when no more tags are found
ENDIF
ENDFOR

Vea también

INDEX | MDX( ) | NDX( ) | SET FULLPATH | SET INDEX | SYS(14) - Expresión de índice | SYS(21) - Número de índice de control | SYS(22) - Nombre de índice o etiqueta de control | SYS(2021) - Expresión de índice filtrado | TAG( ) | USE


CEILING( ) (Función)

Devuelve el entero más próximo que sea mayor o igual que la expresión numérica especificada.

CEILING(nExpression)

Valores devueltos

Numérico

Parámetros

nExpression
Especifica el número cuyo próximo entero mayor devuelve CEILING( ).

Observaciones

CEILING redondea un número con parte fraccional hasta el próximo entero mayor.

Ejemplo

STORE 10.1 TO num1
STORE -10.9 TO num2
? CEILING(num1)  && Displays 11
? CEILING(num2)  && Displays -10
? CEILING(10.0)  && Displays 10
? CEILING(-10.0) && Displays -10

Vea también

FLOOR( ) | ROUND( ) | Crear expresiones de tipo Numérico | Tipo de campo Entero


CHR( ) (Función)

Devuelve el carácter asociado al código ANSI numérico especificado.

CHR(nANSICode)

Valores devueltos

Carácter

Parámetros

nANSICode
Especifica un número entre 0 y 255 cuyo carácter ANSI equivalente devuelve CHR( ).

Utilice ASC( ) para devolver el valor ANSI de un carácter especificado.

Observaciones

CHR( ) devuelve un único carácter correspondiente a la posición numérica del carácter en la tabla de caracteres de la página de códigos actual. CHR( ) puede utilizarse para enviar códigos de control a una impresora.

Ejemplo

El ejemplo siguiente muestra los números 65 a 75 y utiliza CHR( ) para mostrar los caracteres correspondientes, comprendidos entre A y K.

CLEAR
FOR nCOUNT = 65 TO 75
? nCount && Display numeric value
?? ' ' + CHR(nCount) && Display character
ENDFOR

Vea también

ASC( ) | INKEY( ) | SET ANSI (Comando)


CHRSAW( ) (Función)

Determina si un carácter está presente o no en el búfer de teclado.

CHRSAW([nSeconds])

Valores devueltos

Lógico

Parámetros

nSeconds
Especifica el tiempo, en segundos, que CHRSAW( ) espera antes de comprobar el búfer de teclado. Si omite nSeconds, el búfer de teclado se comprobará inmediatamente.

La inclusión de nSeconds permite utilizar CHRSAW( ) en diversas actividades cronometradas. Por ejemplo, el programa puede cerrar una aplicación si no se ha presionado ninguna tecla después de transcurrir un cierto número de segundos.

Observaciones

CHRSAW( ) devuelve Verdadero (.T.) si hay un carácter en el búfer de teclado y devuelve Falso (.F.) si no lo hay. CHRSAW( ) no afecta al contenido del búfer de teclado.

Ejemplo

En el ejemplo siguiente, el sistema muestra una ventana que contiene campos de entrada creados con comandos @ ... GET y espera 5 segundos a la entrada de teclado. Si no se presiona ninguna tecla durante este tiempo, CHRSAW( ) devolverá falso (.F.) y el programa terminará.

SET TALK OFF
DEFINE WINDOW wEnter FROM 7,10 to 13,70 PANEL
ACTIVATE WINDOW wEnter
@ 1,3 SAY 'Customer: '   GET gcCustomer  DEFAULT SPACE(40)
@ 3,3 SAY 'Address:  '   GET gcAddress  DEFAULT SPACE(40)
WAIT WINDOW 'Waiting for input' NOWAIT
IF NOT CHRSAW(5)
DEACTIVATE WINDOW wEnter
CLEAR GETS
ELSE
READ
DEACTIVATE WINDOW wEnter
ENDIF
RELEASE WINDOW wEnter
WAIT
CLEAR

Vea también

INKEY( ) | KEYBOARD | READKEY( )


CHRTRAN( ) (Función)

Cada carácter de una expresión de carácteres que coincida con un carácter de una segunda expresión de carácteres se reemplaza con el carácter correspondiente de una tercera expresión de caracteres.

CHRTRAN(cSearchedExpression, cSearchExpression, cReplacementExpression)

Valores devueltos

Carácter

Parámetros

cSearchedExpression
Especifica la expresión donde CHRTRAN( ) reemplaza caráacteres.
cSearchExpression
Especifica la expresión que contiene los carácteres buscados por CHRTRAN( ) en cSearchedExpression.
cReplacementExpression
Especifica la expresión que contiene los carácteres de reemplazo.

Si se encuentra en cSearchedExpression un carácter de cSearchExpression, el carácter de cSearchedExpression se sustituirá por el carácter de cReplacementExpression que esté en la misma posición en cReplacementExpression que el carácter correspondiente en cSearchExpression.

Si cReplacementExpression tiene menos caráacteres que cSearchExpression, los caracteres adicionales de cSearchExpression se eliminan de cSearchedExpression. Si cReplacementExpression tiene más carácteres que cSearchExpression, los carácteres adicionales de cReplacementExpression se pasarán por alto.

Observaciones

CHRTRAN( ) convierte la expresión de carácteres cSearchedExpression mediante las expresiones de conversión cSearchExpression y cReplacementExpression y devuelve la cadena de carácteres resultante.

Ejemplo

? CHRTRAN('ABCDEF', 'ACE', 'XYZ')  && Displays XBYDZF
? CHRTRAN('ABCD', 'ABC', 'YZ')  && Displays YZD
? CHRTRAN('ABCDEF', 'ACE', 'XYZQRST')  && Displays XBYDZF

Vea también

CHRTRANC( ) | SYS(15) - Traducción de caracteres | Crear expresiones de tipo Carácter | STRTRAN( )


CHRTRANC( ) (Función)

Cada carácter de una expresión de carácteres que coincida con un carácter de una segunda expresión de carácteres se reemplaza con el carácter correspondiente de una tercera expresión de carácteres.

CHRTRANC(cSearched, cSearchFor, cReplacement)

Valores devueltos

Carácter

Parámetros

cSearched
Especifica la expresión en la que CHRTRANC( ) reemplaza carácteres.
cSearchFor
Especifica la expresión que contiene los carácteres que CHRTRANC( ) busca en cSearched.
cReplacement
Especifica la expresión que contiene los carácteres de reemplazo.

Si un carácter de cSearchFor se encuentra en cSearched, se reemplazará el carácter de cSearched por un carácter de cReplacement que esté en la misma posición en cReplacement que el carácter correspondiente en cSearchFor.

Si cReplacement tiene menos carácteres que cSearchFor, se eliminarán los carácteres adicionales de cSearchFor en cSearched. Si cReplacement tiene más carácteres que cSearchFor, se pasarán por alto los carácteres adicionales de cReplacement.

Observaciones

CHRTRANC( ) está diseñado para facilitar el trabajo con expresiones que contienen caracteres de dos bytes. Utilice CHRTRANC( ) para reemplazar carácteres de un byte por carácteres de dos bytes o viceversa. Si las expresiones contienen sólo caráacteres de un byte, CHRTRANC( ) es equivalente a CHRTRAN( ) .

Esta función es útil para manipular juegos de carácteres de dos bytes para idiomas como Hiragana y Katakana.

Vea también

CHRTRAN( ) | STRCONV( ) | Crear expresiones de tipo Carácter


CMONTH( ) (Función)

Devuelve el nombre del mes a partir de una fecha dada o de una expresión de tipo DateTime.

CMONTH(dExpression | tExpression)

Valores devueltos

Carácter

Parámetros

dExpression
Especifica la expresión de fecha a partir de la cual CMONTH( ) devuelve el nombre del mes.
tExpression
Especifica la expresión DateTime a partir de la cual CMONTH( ) devuelve el nombre del mes.

Observaciones

CMONTH( ) devuelve el nombre del mes como una cadena en el formato de nombre apropiado.

Ejemplo

? CMONTH(DATE( ))
STORE {^1998-02-16} TO gdDueDate
? 'Your payment was due in ', CMONTH(gdDueDate)
STORE gdDueDate+60 TO gdFinalDate
? 'You must pay by ', CMONTH(gdFinalDate)

Vea también

DMY( ) | MDY( ) | MONTH( ) | DATETIME( )


CNTBAR( ) (Función)

Devuelve el número de elementos de un menú definido por el usuario o del menú de sistema de Visual FoxPro.

CNTBAR(cMenuName)

Valores devueltos

Numérico

Parámetros

cMenuName
Especifica el nombre del menú cuyo número de elementos devuelve CNTBAR( ). Para ver una lista de los nombres de menú de sistema de Visual FoxPro, vea el tema Nombres de menús del sistema.

Observaciones

Si un menú definido por el usuario se crea con la opción PROMPT de DEFINE POPUP, Visual FoxPro evaluará el número de elementos de menú cuando se ejecute ACTIVATE POPUP. Para un menú de este tipo, CNTBAR( ) devuelve un valor significativo únicamente después que se haya activado el menú. Sin embargo, si los elementos del menú se crean mediante DEFINE BAR, CNTBAR( ) podrá determinar el número de elementos de menú antes de que el usuario ejecute ACTIVATE POPUP.

Ejemplo

En el siguiente programa de ejemplo, CNTBAR.PRG agrega un título de menú al menú del sistema. El menú llamado popEnv se crea con cuatro elementos de menú. El programa coloca un carácter de marca en cada elemento cuando el elemento se selecciona. CNTBAR( ) se utiliza dentro de un bucle para mostrar inicialmente marcas junto a los elementos de menú apropiados.

*** You must name this program CNTBAR.PRG ***
CLEAR
SET TALK OFF
DEFINE PAD padEnv OF _MSYSMENU PROMPT 'E\<nvironment';
KEY ALT+R, 'ALT+R'
ON PAD padEnv OF _MSYSMENU ACTIVATE POPUP popEnv
DEFINE POPUP popEnv MARGIN RELATIVE COLOR SCHEME 4
DEFINE BAR 1 OF popEnv PROMPT '\<Status Bar'
DEFINE BAR 2 OF popEnv PROMPT '\<Clock'
DEFINE BAR 3 OF popEnv PROMPT '\<Extended Video'
DEFINE BAR 4 OF popEnv PROMPT 'St\<icky'
ON SELECTION POPUP popEnv DO enviropop IN cntbar.prg
FOR i = 1 TO CNTBAR('popEnv')
DO CASE
CASE PRMBAR('popEnv', i) = 'Status Bar'
IF _WINDOWS or _MAC
SET MARK OF BAR i OF popEnv TO SET('STATUS BAR') = 'ON'
ELSE
SET MARK OF BAR i OF popEnv TO SET('STATUS') = 'ON'
ENDIF
CASE PRMBAR('popEnv', i) = 'Clock'
SET MARK OF BAR i OF popEnv TO  SET('CLOCK') = 'ON'
CASE PRMBAR('popEnv', i) = 'Extended Video'
SET MARK OF BAR i OF popEnv TO  SROW( ) > 25
CASE PRMBAR('popEnv', i) = 'Sticky'
SET MARK OF BAR i OF popEnv TO  SET('STICKY') = 'ON'
ENDCASE
ENDFOR
PROCEDURE enviropop
DO CASE
CASE PROMPT() = 'Status'
IF mrkbar('popEnv', BAR( ))
DO CASE
CASE _WINDOWS OR _MAC
SET STATUS BAR OFF
CASE _DOS
SET STATUS OFF
OTHERWISE
ENDCASE
SET MARK OF BAR BAR( ) OF popEnv TO .F.
ELSE
DO CASE
CASE _WINDOWS OR _MAC
SET STATUS BAR ON
CASE _DOS
SET STATUS ON
OTHERWISE
ENDCASE
SET MARK OF BAR BAR( ) OF popEnv TO .T.
ENDIF
CASE PROMPT( ) = 'Clock'
IF mrkbar('popEnv', BAR( ))
SET CLOCK OFF
SET MARK OF BAR BAR( ) OF popEnv TO .F.
ELSE
DO CASE
CASE _WINDOWS OR _MAC
SET STATUS BAR ON
SET CLOCK STATUS
CASE _DOS
SET CLOCK ON
OTHERWISE
ENDCASE
SET MARK OF BAR BAR( ) OF popEnv TO .T.
ENDIF
CASE PROMPT( ) = 'Extended Video'
IF MRKBAR('popEnv', BAR( ))
SET DISPLAY TO VGA25
SET MARK OF BAR BAR( ) OF popEnv TO .F.
ELSE
SET DISPLAY TO VGA50
SET MARK OF BAR BAR( ) OF popEnv TO .T.
ENDIF
CASE PROMPT( ) = 'Sticky'
IF MRKBAR('popEnv', BAR( ))
DO CASE
CASE _WINDOWS OR _MAC
WAIT WINDOW 'STICKY is always on in this Visual FoxPro version'
CASE _DOS
SET STICKY OFF
OTHERWISE
ENDCASE
SET MARK OF BAR BAR( ) OF popEnv TO .F.
ELSE
DO CASE
CASE _WINDOWS OR _MAC
WAIT WINDOW 'STICKY is always ON in Visual FoxPro'
CASE _DOS
SET STICKY ON
OTHERWISE
ENDCASE
SET MARK OF BAR BAR( ) OF popEnv TO .T.
ENDIF
ENDCASE

Vea también

ACTIVATE POPUP | CNTPAD( ) | CREATE MENU | DEFINE BAR | DEFINE POPUP | GETBAR( ) | MRKBAR( ) | ON BAR | ON SELECTION BAR | PRMBAR( )


CNTPAD( ) (Función)

Devuelve el número de títulos de menú de una barra de menús definida por el usuario o de la barra de menús del sistema de Visual FoxPro.

CNTPAD(cMenuBarName)

Valores devueltos

Numérico

Parámetros

cMenuBarName
Especifica el nombre de barra de menú cuyo número de títulos de menú devuelve CNTPAD( ).

Ejemplo

El comando siguiente utiliza CNTPAD( ) para mostrar el número de títulos de menú de la barra de menús del sistema de Visual FoxPro.

? CNTPAD('_MSYSMENU')

Vea también

ACTIVATE MENU | CNTBAR( ) | CREATE MENU | DEFINE PAD | DEFINE MENU | GETPAD( ) | MRKPAD( ) | ON PAD | ON SELECTION PAD | PRMPAD( )


COL( ) (Función)

Se incluye por compatibilidad con versiones anteriores. Utilice las propiedades CurrentX y CurrentY.


COMARRAY( ) (Función)

Especifica cómo se transfieren las matrices a los objetos COM.

COMARRAY(oObject [, nNewValue])

Valores devueltos

Numérico

Parámetros

oObject
Una referencia de objeto al objeto COM.
nNewValue
Especifica cómo se pasa una matriz al objeto COM especificado con oObject. La tabla siguiente muestra la configuración para nNewValue y cómo se pasa la matriz al objeto COM.
nNewValue | Descripción
0 | El índice de la matriz parte de 0 y la matriz se pasa por valor.
1 (Predeterminado) | El índice de la matriz parte de 1 y la matriz se pasa por valor. Es compatible con versiones anteriores de Visual FoxPro.
10 | El índice de la matriz parte de 0 y la matriz se pasa por referencia.
11 | El índice de la matriz parte de 1 y la matriz se pasa por referencia.
100 | La matriz tiene un tamaño fijo que no se puede cambiar.
1000 | Matrices tipo Byte no son convertidas a cadenas.

Ejecute COMARRAY( ) sin el argumento nNewValue para obtener el valor actual.

Observaciones

Las versiones anteriores de Visual FoxPro sólo pueden pasar matrices a objetos COM por valor. Además, se supone que el índice de la matriz pasada al objeto COM parte de 1, lo que se significa que el primer elemento, fila y columna de la matriz se indica con 1.

Sin embargo, algunos objetos COM requieren que las matrices se pasen por referencia o que el índice de la matriz pasada parta de cero (el primer elemento, fila y columna se indica con 0), o las dos cosas. COMARRAY( ) permite especificar cómo se pasa la matriz al objeto COM y supone que sabe cómo se debe pasar la matriz al objeto COM.

Tenga en cuenta que COMARRAY( ) sólo se utiliza cuando se pasan matrices a objetos COM con la sintaxis siguiente:

oComObject.Method(@MyArray)

Cuando una matriz de bytes es usada para comunicarse con un servidor COM, Visual FoxPro transforma la matriz de bytes en una cadena. El valor nValue 1000 agregado retiene el tipo apropiado de matriz y no transforma el resultado en una cadena.

Si un cliente pasa una matriz de bytes por referencia a un servidor COM de Visual FoxPro, el servidor COM de Visual FoxPro COM también debe establecer el nValue adicional a 1000. Esto puede ser hecho poniendo la siguiente llamada en el evento Init del Servidor COM de Visual FoxPro:

COMARRAY(THIS,1000)

Si se omite el símbolo @, sólo se pasará al objeto COM el primer elemento de la matriz y COMARRAY() no tendrá ningún efecto.

El valor aditivo nValue de 100, tal como se utiliza en el ejemplo siguiente, permite impedir que se cambie el tamaño de una matriz (para ejecutar este ejemplo, genere primero la definición de clase en una DLL con el nombre "t1.dll"). Es recomendable comprobar los posibles errores después de llamar el servidor, por si el servidor intenta cambiar las dimensiones de la matriz.

LOCAL loSvr, laTest
loSvr = NEWOBJECT("t1.arrayhandler")
DIMENSION laTest[10]
laTest=3
? COMARRAY(loSvr,11 + 100)
* El servidor COM devolverá un error en la siguiente línea de código
* porque matrices pasadas a loSvr no pueden ser redimensionadas.
loSvr.RedimensionArray(@laTest,4)
? ALEN(laTest)
DEFINE CLASS ARRAYHANDLER AS CUSTOM OLEPUBLIC
PROCEDURE RedimensionArray(aArray, nRows)
DIME aArray[nRows]
ENDPROC
ENDDEFINE

Vea también

COMCLASSINFO( ) | CREATEOBJECT( ) | GETOBJECT( )


COMCLASSINFO( ) (Función)

Devuelve información de registro acerca de un objeto COM como un servidor de automatización de Visual FoxPro.

COMCLASSINFO(oObject [, nInfoType])

Valores devueltos

Character

Parámetros

oObject
Una referencia de objeto a un objeto COM u OLE.
nInfoType
Especifica el tipo de información que se debe devolver. La tabla siguiente muestra los valores de nInfoType y la información devuelta.
nInfoType | Información devuelta
1 (Predeterminado) | Identificador del objeto para programación (ProgID).Un ProgID es una entrada de registro que se puede asociar con un CLSID.
2 | VersionIndependentProgID del objeto. El VersionIndependentProgID asocia un ProgID con un CLSID. Se utiliza para determinar la versión más reciente de una aplicación de objeto, hace referencia a la clase de la aplicación y no cambia de una versión a otra.
3 | El nombre descriptivo del objeto.
4 | El identificador de clase del objeto (CLSID). Un CLSID es un identificador único global que identifica un objeto de clase COM.
5 Tipo de objeto que se pasa:
Valor de retorno Descripción
1 Objeto Visual FoxPro
2 Control ActiveX
3 Componente COM
4 Objeto OLEBound (campo General)

Observaciones

COMCLASSINFO( ) devuelve una cadena vacía si no hay información de registro disponible para el objeto que especifique. Los servidores de automatización de Visual FoxPro son objetos COM, tanto archivos ejecutables como bibliotecas de vínculos dinámicos que puede crear en el Administrador de proyectos.

Si crea una instancia de un control ActiveX mediante CREATEOBJECT( ), como en el código siguiente, nInfoType devolverá 3 (Componente COM) en lugar de 2.

X=CREATEOBJECT("mscomctlib.treectrl.2")

Para devolver 2 (control ActiveX) deberá utilizar el objeto como tal, como en el código siguiente:

ox.addobject("oc","olecontrol","mscomctlib.treectrl.2")

Vea también

COMARRAY( ) | CREATE PROJECT | CREATEOBJECT( ) | GETOBJECT( )


COMPOBJ( ) (Función)

Compara las propiedades de dos objetos y devuelve verdadero (.T.) si sus propiedades y los valores de sus propiedades son idénticos.

COMPOBJ(oExpression1, oExpression2)

Parámetros

oExpression1, oExpression2
Especifica los objetos que se van a comparar. oExpression1 y oExpression2 pueden ser cualquier expresión que dé como resultado objetos, como referencias a objeto, variables de objeto y elementos de matriz de objetos.

Valores devueltos

Logical

Observaciones

COMPOBJ( ) devuelve falso (.F.) si un objeto tiene una propiedad que no tiene el otro objeto o si los objetos tienen propiedades idénticas pero son distintos los valores de una o más propiedades.

Ejemplo

En el siguiente ejemplo se crean dos controles ListBox denominados lstMyList1 y lstMyList2 y un control ComboBox llamado cmbMyCombo. Se muestra la propiedad Name de cada ListBox.

COMPOBJ( ) se emplea para comparar las propiedades del primer ListBox con las propiedades del ComboBox. Puesto que muchas de las propiedades son diferentes, se muestra .F. A continuación se utiliza COMPOBJ( ) para comparar las propiedades del primer ListBox con las propiedades del segundo ListBox. Dado que las propiedades Name son diferentes, se muestra .F. El segundo ListBox, lstMyList2, se reemplaza con el primer ListBox, lstMyList1 y se utiliza COMPOBJ( ) para comparar las propiedades. Ya que sus propiedades son idénticas, se muestra .T.

lstMyList1 = CREATEOBJ('ListBox')  && Creates a ListBox
lstMyList2 = CREATEOBJ('ListBox')  && Creates a second ListBox
cmbMyCombo = CREATEOBJ('ComboBox')  && Creates a ComboBox
lstMyList1.Name = 'list1'
lstMyList2.Name = 'list2'
CLEAR
? lstMyList1.Name  && Displays List1 Name property
? lstMyList2.Name  && Displays List2 Name property
? COMPOBJ(lstMyList1, cmbMyCombo)     && Displays .F.
? COMPOBJ(lstMyList1, lstMyList2)     && Displays .F., different Names
lstMyList2.Name = lstMyList1.Name
? COMPOBJ(lstMyList1, lstMyList2)     && Displays .T., same properties

Vea también

CREATEOBJECT( ) | DEFINE CLASS | GETOBJECT( ) | SET CLASSLIB


COMPROP( ) (Función)

Establece o devuelve la configuración de comportamiento de una propiedad de objeto COM.

COMPROP(oCOMObject, cProperty [, eValue])

Parámetros

oComObject
Especifica una referencia a un objeto COMt. cProperty no diferencia mayúsculas / minúsculas.

Puede utilizar el nombre completo de un objeto COM. Si no proporciona eValue, COMPROP( ) devuelve el valor de cProperty.

cProperty
Especifica el nombre de la propiedad COM que se va a establecer. Vea en la tabla siguiente los valores posibles de cProperty:
cProperty | Descripción
UTF8 | Determina si las cadenas UNICODE devueltas de un objeto COM se convierten a ANSI. La conversión se realiza de forma predeterminada.
PUTREF | Determina si la asignación de objeto inicial es PROPERTY_PUT (valor predeterminado) o PUTREF.
eValue
Especifica el valor que se aplicará a cProperty. La siguiente tabla muestra los valores para eValue.
eValue | Descripción
0 | Aplica el comportamiento predeterminado
1 | Aplica el comportamiento descrito en la tabla para cProperty. Por ejemplo, establecer eValue como 1 para UTF8 evita que se muestren caracteres multibyte como las comillas. Establecer eValue como 1 para PUTREF hace que Visual FoxPro intente asignar primero el objeto PUTREF y sólo si esto falla intenta asignar el el objeto PROPERTY_PUT. La asignación de objetos a propiedades de algún control ActiveX u objeto COM requiere PUTREF y Visual FoxPro tiene como predeterminado PROPERTY_PUT.

Valores devueltos

COMPROP( ) devuelve el valor de cProperty.

Ejemplos

El ejemplo siguiente devuelve datos desde métodos de un conjunto de registros ADO en formato UNICODE, en lugar de permitir la conversión a ANSI:

LOCAL oConn AS adodb.Connection, oRS AS adodb.Recordset
LOCAL lcStr AS STRING
oConn=CREATEOBJECT("ADODB.Connection")
oConn.Open("DSN=Nwind;")  && DSN para SQL Server
oRS=oConn.Execute("select * from customers")
COMPROP(oRS,'UTF8',1)
DO WHILE NOT oRS.Eof
lcStr = oRS.Fields(4).Value
oRS.MoveNext
ENDDO
oRS.Close()
oRS.ActiveConnection=NULL
oRS=NULL
oConn.Close()
oConn=NULL

En el ejemplo siguiente, se indica a un control ActiveX que utilice PUTREF en lugar de PROPERTY_PUT:

=COMPROP(oForm.OLECONTROL1, 'PUTREF',1)

Vea también

DBGETPROP( ) (Función) | COMARRAY( ) (Función)


COMRETURNERROR( ) (Función)

Llena la estructura de excepción COM con información que los clientes de Automatización pueden utilizar para determinar el origen de los errores de Automatización.

COMRETURNERROR(cExceptionSource, cExceptionText)

Parámetros

cExceptionSource
Especifica el texto para el origen de la excepción.
cExceptionText
Especifica el texto para la descripción de la excepción.

Observaciones

COMRETURNERROR( ) permite a los servidores de Automatización de Visual FoxPro llenar la estructura de excepción COM de forma que los clientes de Automatización puedan determinar la causa de un error en el servidor de Automatización.

Cuando se ejecuta COMRETURNERROR( ), se coloca el texto especificado en la estructura de excepción COM, se anula la ejecución del método actual y se devuelve el control al cliente. El servidor de Automatización permanece en la memoria y permite que el cliente llame a otros de sus métodos.

Los clientes de Visual FoxPro pueden usar AERROR( ) para ver el texto colocado en la estructura de excepción COM.

Nota (Para usuarios avanzados) COMReturnErrorInfo completa una estructura de información de excepción COM. Esto se utiliza sólo para IDispatch (llamadas de enlace en tiempo de ejecución). Si se llama al servidor mediante enlace en tiempo de compilación y el cliente pasa una estructura de excepción COM al servidor, no hay ningún mecanismo que devuelva la información del error, a menos que el cliente utilice QueryInterface en la interfaz ISupportsErrorInfo.

Vea también

AERROR( ) | ON ERROR | COMCLASSINFO( ) | Crear servidores de Automatización | GETINTERFACE( ) | Mensajes de error ordenados alfabéticamente | Mensajes de error ordenados por número


COS( ) (Función)

Devuelve el coseno de una expresión numérica.

COS(nExpression)

Valores devueltos

Numérico (Numérico)

Parámetros

nExpression
Especifica la expresión numérica cuyo coseno devuelve COS( ). nExpression puede ser cualquier valor.

Observaciones

COS( ) devuelve el coseno de nExpression en radianes. Utilice DTOR( ) para convertir un ángulo de grados a radianes. El número de posiciones decimales que devuelve COS( ) se puede especificar mediante SET DECIMALS. El valor devuelto por COS( ) varía entre –1 y 1.

Ejemplo

CLEAR
? COS(0)  && Displays 1.00
? COS(PI( ))  && Displays -1.00
? COS(DTOR(180))  && Displays -1.00
STORE PI( ) * 3 TO gnAngle
? COS(gnAngle)  && Displays -1.00

Vea también

ACOS( ) (Función) | DTOR( ) (Función) | RTOD( ) (Función) | SET DECIMALS (Comando) | SIN( ) (Función)


CPCONVERT( ) (Función)

Convierte campos memo o de caracteres, o expresiones de caracteres, a otra página de códigos.

CPCONVERT(nCurrentCodePage, nNewCodePage, cExpression)

Parámetros

nCurrentCodePage
Especifica la página de códigos utilizada actualmente para codificar cExpression.
nNewCodePage
Especifica la página de códigos a la que se va a convertir cExpression.
cExpression
Especifica la expresión de caracteres que se desea convertir.

Observaciones

Observe que CPCONVERT( ) no es necesaria para el funcionamiento normal multiplataforma de este producto. Se utiliza estrictamente para tener acceso a las características de conversión subyacentes de Visual FoxPro.

Por ejemplo, si la variable gcCharExpr contiene un carácter que se muestra como ä en Macintosh (en la página de códigos 10000), CPCONVERT( ) devolverá un carácter que se muestra como ä en Microsoft Windows (página de códigos 1252):

CPCONVERT(10000, 1252, gcCharExpr)

Para Información adicional sobre páginas de códigos y soporte internacional en Visual FoxPro, ver Páginas de códigos compatibles con Visual FoxPro y Desarrollar aplicaciones internacionales.

Vea también

CPCURRENT( ) (Función) | CPDBF( ) (Función) | MODIFY COMMAND (Comando) | MODIFY FILE Comando | SET NOCPTRANS (Comando)


CPCURRENT( ) (Función)

Devuelve la configuración de página de códigos (si la hay) del archivo de configuración de Visual FoxPro o devuelve la página de códigos del sistema operativo actual.

CPCURRENT([1 | 2])

Observaciones

CPCURRENT( ) devuelve uno de los valores siguientes:

  • En Visual FoxPro, la página de códigos del sistema operativo actual si el elemento CODEPAGE no está incluido en su archivo de configuración. En las versiones anteriores de FoxPro, se devuelve 0 si el elemento de configuración CODEPAGE no está incluido en su archivo de configuración.
  • El número de página de códigos especificado en el elemento de configuración CODEPAGE. Por ejemplo, CPCURRENT( ) devolverá 852 si el archivo de configuración incluye la siguiente línea:
    CODEPAGE = 852
  • La página de códigos del sistema operativo actual si ha incluido la siguiente línea en el archivo de configuración:
    CODEPAGE = AUTO

En Visual FoxPro, CPCURRENT(1) devuelve la página de códigos del sistema operativo actual, independientemente del valor de CODEPAGE en su configuración.

CPCURRENT(2) siempre devuelve la página de códigos subyacente del sistema operativo, sin tener en cuenta el valor de CODEPAGE en la configuración. Por ejemplo, si está ejecutando Windows, CPCURRENT(2) devolverá la página de códigos de MS-DOS.

Para obtener más información acerca de las páginas de códigos y el soporte internacional de Visual FoxPro, vea Páginas de códigos compatibles con Visual FoxPro y Desarrollar aplicaciones internacionales.

Vea también

CPCONVERT( ) | CPDBF( ) | MODIFY COMMAND | MODIFY FILE | SET NOCPTRANS


CPDBF( ) (Función)

Devuelve la página de códigos con la que se ha marcado una tabla abierta.

CPDBF([nWorkArea | cTableAlias])

Parámetros

nWorkArea
Especifica el número del área de trabajo.
cTableAlias
Especifica el alias de la tabla.

Incluya nWorkArea o cTableAlias para especificar una tabla abierta en un área de trabajo distinta de la actual. CPDBF( ) devuelve 0 si no hay ninguna tabla abierta en el área de trabajo especificada. Si ninguna tabla contiene el alias especificado con cTableAlias, Visual FoxPro generará un mensaje de error.

Observaciones

DISPLAY STRUCTURE también muestra la página de códigos con la que se ha marcado una tabla abierta.

Para obtener información adicional acerca de las páginas de códigos y el soporte internacional de Visual FoxPro, vea Páginas de códigos compatibles con Visual FoxPro y Desarrollar aplicaciones internacionales.

Vea también

CPCONVERT( ) (Función) | CPCURRENT( ) (Función) | MODIFY COMMAND (Comando) | MODIFY FILE (Comando) | SET NOCPTRANS (Comando)


CREATEBINARY( ) (Función)

Convierte datos de tipo Carácter creados en Visual FoxPro en una cadena de caracteres tipo binario que se puede pasar a un control ActiveX o a un objeto de automatización.

CREATEBINARY(cExpression)

Valores devueltos

Character

Parámetros

cExpression
Especifica la expresión de caracteres para la que se devolverá una cadena de caracteres de tipo binario.

Observaciones

Las cadenas de caracteres de Visual FoxPro pueden contener datos binarios. Sin embargo, un control ActiveX o una cadena de caracteres de objeto de automatización (datos del tipo OLE VT_BSTR) no puede contener datos binarios. Un control ActiveX o un objeto de automatización pasa datos binarios a aplicaciones tales como Visual FoxPro en forma de una matriz de datos del tipo VT_UI1.

Visual FoxPro convierte automáticamente los datos binarios pasados desde un control ActiveX o un objeto de automatización con formato de matriz de datos del tipo VT_UI1 en una cadena de caracteres de Visual FoxPro. Visual FoxPro marca internamente esta cadena de caracteres como datos binarios pasados desde un control ActiveX o un objeto de automatización. Cuando la cadena de caracteres se vuelve a pasar a un control ActiveX o a un objeto de automatización, Visual FoxPro convertirá automáticamente la cadena de caracteres en una matriz de datos de tipo VT_UI1 previstos por el control ActiveX o el objeto de automatización.

Utilice CREATEBINARY( ) para convertir datos de tipo Carácter creados en Visual FoxPro en una cadena de caracteres de tipo binario que puede pasar a un control ActiveX o a un objeto de automatización. El número mínimo de caracteres al que se puede reducir CREATEBINARY( ) es 7.

Si desea obtener más información acerca de los controles ActiveX y los objetos de automatización, vea Agregar OLE.

Vea también

OLE Bound (Control) | OLE Container (Control) | Introducción a los controles ActiveX


CREATEOBJECT( ) (Función)

Crea un objeto a partir de una definición de clase o una aplicación preparada para Automatización.

CREATEOBJECT(ClassName [, eParameter1, eParameter2, ...])

Valores devueltos

Object

Parámetros

ClassName
Especifica la clase o el objeto OLE a partir del cual se crea el nuevo objeto. Visual FoxPro busca la clase o el objeto OLE en el orden siguiente:
  1. Clases de base de Visual FoxPro.
  2. Clases del programa actual.
  3. Clases de las bibliotecas de clases .vcx abiertas con SET CLASSLIB.
  4. Clases de los archivos de procedimientos abiertos con SET PROCEDURE.
  5. Clases de la cadena de ejecución del programa de Visual FoxPro.
  6. El registro de OLE si SET OLEOBJECT está establecido en ON.

Los objetos OLE se crean con la sintaxis siguiente para ClassName:

ApplicationName.Class

Por ejemplo, para crear una hoja de cálculo de Microsoft Excel (que admite la Automatización), puede utilizar la sintaxis siguiente:

x = CREATEOBJECT('Excel.Sheet')

Cuando se ejecuta este código, se inicia Microsoft Excel (si no está en funcionamiento) y se crea una hoja de cálculo nueva.

Una biblioteca de clases puede tener un alias. Para especificar un objeto en una biblioteca de clases con un alias, incluya el alias de la biblioteca de clases seguido de un punto y el nombre del objeto.

Observe que ClassName no puede ser la clase de base del control OLE Container de Visual FoxPro.

eParameter1, eParameter2, ...
Estos parámetros opcionales sirven para transferir valores al procedimiento de evento Init de la clase. El evento Init se ejecuta después que CREATEOBJECT( ) y permite inicializar el objeto.

Observaciones

Utilice CREATEOBJECT( ) para crear un objeto a partir de una definición de clase o una aplicación que admita Automatización y asigne al objeto una referencia a una variable de sistema o un elemento de matriz.

Antes de crear un objeto a partir de una clase definida por el usuario, ésta deberá crearse previamente con DEFINE CLASS o deberá estar disponible en una biblioteca de clases visuales .vcx abierta con SET CLASSLIB.

Utilice = o STORE para asignar al objeto una referencia a una variable de sistema o un elemento de matriz. Si se libera un objeto asignado a una variable de sistema o un elemento de matriz, la variable de sistema o el elemento de matriz contendrá el valor nulo. Utilice RELEASE para quitar de la memoria la variable de sistema o el elemento de matriz.

Ejemplo

El ejemplo siguiente usa DEFINE CLASS y CREATEOBJECT( ) para crear dos clases personalizadas llamadas FormChild y FormGrandChild a partir de la clase de base Form de Visual FoxPro. ACLASS( ) se utiliza para crear una matriz llamada gaNewArray que contiene los nombres de clase, que se muestran después.

CLEAR
* Verify current class library setting
cCurClassLib=SET("CLASSLIB")
IF LEN(ALLTRIM(cCurClassLib))=0
cCurClassLib="None"
ENDIF
WAIT WINDOW "Current class library is: " + cCurClassLib + CHR(13);
+ "Press any key to continue..."
frmMyForm = CREATEOBJECT("FormGrandChild")
* Create an array
FOR nCount = 1 TO ACLASS(gaNewarray, frmMyForm)
? gaNewarray(nCount)  && Display the names of the classes
ENDFOR
RELEASE frmMyForm
* Create FormChild from FORM baseclass
DEFINE CLASS FormChild AS FORM
ENDDEFINE
* Create FormGrandChild from user-defined FormChild class
DEFINE CLASS FormGrandChild AS FormChild
ENDDEFINE

Vea también

_BROWSER | COMCLASSINFO( ) | CREATEOBJECTEX( ) | DEFINE CLASS | GETOBJECT( ) | NEWOBJECT( ) | RELEASE | SET CLASSLIB | SET OLEOBJECT


CREATEOBJECTEX( ) (Función)

Crea una instancia de un objeto COM registrado (por ejemplo, de un servidor de automatización de Visual FoxPro) en un equipo remoto.

CREATEOBJECTEX(cCLSID | cPROGID, cComputerName [, cIID])

Valores devueltos

Objeto

Parámetros

cCLSID | cPROGID
Especifica el CLSID (Id. de clase) o PROGID (Id. de programa) del objeto COM cuya instancia se va a crear. Si incluye un CLSID, el objeto COM se debe registrar en el servidor remoto que especifique con cComputerName. Si incluye un PROGID, el objeto COM se debe registrar en el equipo local y en el equipo remoto que especifique con cComputerName. Si intenta utilizar un PROGID sin registrar primero el servidor en el equipo local, se generará el error OLE 0x800401f3, "Cadena de clase no válida".

Para los servidores de Automatización de Visual FoxPro creados en el equipo local, puede utilizar las propiedades de objeto CLSID y PROGID para determinar los valores locales de CLSID y PROGID.

cComputerName
Especifica el equipo remoto en que se crea la instancia del objeto COM.

Si cComputerName es la cadena vacía, se crea una instancia del objeto COM en el equipo local o en un equipo redirigido, tal como especifique el registro. Utilice Clireg32.exe o Racmgr32.exe para redirigir el equipo local a otro equipo a través del registro.

cComputerName admite nombres UNC (Convención universal de nombres) como "\\myserver" y "myserver", y nombres DNS (Sistema de nombres de dominio).

cIID
Especifica el valor GUID de Id. de interfaz de cCLSID | cPROGID cuando se crea una instancia de enlace en tiempo de compilación de la clase. Si pasa una cadena vacía como cIID, Visual FoxPro intentará el acceso a la interfaz predeterminada (IID) de cCLSID | cPROGID.

Ejemplo

      x = CREATEOBJECTEX("excel.application","",;
"{000208D5-0000-0000-C000-000000000046}")
Nota Lo siguiente es una llamada de función válida para un objeto de aplicación Excel. Devolverá la interfaz predeterminada de la aplicación excel .
      x = CREATEOBJECTEX("excel.application","","")

Observaciones

CREATEOBJECTEX( ) devuelve una referencia al objeto COM si la instancia de éste se crea correctamente. CREATEOBJECTEX( ) no se puede utilizar para crear instancias de clases de Visual FoxPro como formularios; para esto, debe utilizar en su lugar CREATEOBJECT( ). Observe que sólo puede abreviar CREATEOBJECTEX( ) a un mínimo de 13 caracteres para diferenciar esta función de la función CREATEOBJECT( ).

Cuando se llama a ciertas clases COM con CREATEOBJECT( ), devuelven "Interfaz incompatible", dado que no admiten una interfaz IDispatch. Si utiliza el parámetro cIID podrá tener acceso a estas clases en sus aplicaciones.

Si pasa una cadena vacía ("") como cIID, Visual FoxPro intentará obtener la interfaz predeterminada (IID) del CLSID o PROGID especificado.

Puesto que admite el enlace en tiempo de compilación por medio de cIID, CREATEOBJECTEX( ) puede mejorar el rendimiento, al evitar gran parte de la sobrecarga de las llamadas IDispatch.

CREATEOBJECTEX( ) admite la creación de nuevos objetos de enlace en tiempo de compilación. No obstante, también es posible pasar al componente de Visual FoxPro un objeto al que se desee llamar mediante enlace en tiempo de compilación. Puede utilizar la compatibilidad de GETINTERFACE( ) para objetos COM existentes.

Si desea obtener información adicional acerca del uso de Visual FoxPro para crear servidores de Automatización, vea Agregar OLE.

Vea también

CLSID (Propiedad) | CREATEOBJECT( ) (Función) | ProgID (Propiedad) | Server (Objeto) | GETINTERFACE( ) (Función)


CREATEOFFLINE( ) (Función)

Pone una vista ya existente fuera de línea.

CREATEOFFLINE(ViewName [, cPath])

Valores devueltos

Logical

Parámetros

ViewName
Especifica el nombre de la vista existente que se va a poner fuera de línea. Es necesario que esté abierta la base de datos que contiene la vista existente antes de poner la vista fuera de línea.
cPath
Especifica el directorio en que se colocará la vista fuera de línea y el nombre de la vista fuera de línea.

Observaciones

CREATEOFFLINE( ) devuelve un valor Logical verdadero (.T.) si la vista existente se ha llevado fuera de línea correctamente; de lo contrario, devuelve falso (.F.).

Una vista fuera de línea se abre con USE. Una vez abierta una vista fuera de línea, puede anexar o modificar registros en la vista fuera de línea. Sin embargo, no puede utilizar los comandos CREATE TRIGGER, INSERT, PACK o ZAP en una vista fuera de línea. Después de realizar cambios en la vista fuera de línea, puede actualizar los datos en el servidor con sus cambios si abre la vista fuera de línea con USE e incluye la cláusula ONLINE.

No puede actualizar el contenido de una vista fuera de línea con datos del servidor hasta que se haya abierto la vista fuera de línea con USE y con la cláusula ONLINE.

Utilice DROPOFFLINE( ) para volver a ver en pantalla la vista fuera de línea.

Vea también

DROPOFFLINE( ) | USE | CREATE TRIGGER | INSERT | PACK | ZAP


CTOBIN( ) (Función)

Convierte una representación de caracteres binarios en un valor entero.

CTOBIN(cExpression)

Valores devueltos

Numérico

Parámetros

cExpression
Especifica la representación de caracteres binarios que se va a convertir.

Observaciones

Utilice CTOBIN( ) para volver a convertir una representación de caracteres binarios creada con BINTOC( ) en un valor entero.

Vea también

BINTOC( ) (Función) | CREATEBINARY( ) (Función) | Crear índices pequeños utilizando BINTOC( ) (Ejemplo)


CTOD( ) (Función)

Convierte una expresión de caracteres en una expresión de fecha.

CTOD(cExpression)

Parámetros

cExpression
Especifica una expresión de caracteres.

Valores devueltos

Tipo Date. CTOD( ) devuelve un valor tipo Fecha.

Observaciones

Nota CTOD( ) puede crear valores ambiguos de fecha y generar un error de compilación cuando SET STRICTDATE está establecido en 2. Utilice la función DATE( ) en su lugar para crear valores no ambiguos de fecha.

Ejemplo

El siguiente ejemplo usa CTOD( ) para convertir datos tipo Carácter a Fecha y luego realiza algunas acciones simples de relación entre fechas.

SET CENTURY ON               && Shows the century value.

cDate="01/01/2003"

?CTOD(cDate)               && Returns 01/01/2003 as Date.

?GOMONTH(CTOD(cDate),12)   && Returns 01/01/2004.

?CTOD(cDate)+100            && Returns 04/11/2003.

Vea también

DATE( ) | SET STRICTDATE | TTOD( )


CTOT( ) (Función)

Devuelve un valor DateTime a partir de una expresión de caracteres.

CTOT(cCharacterExpression)

Parámetros

cCharacterExpression
Especifica la expresión de caracteres a partir de la cual se devuelve un valor DateTime.

Valores devueltos

Dato tipo DateTime. CTOT( ) devuelve un valor DateTime a partir de una expresión de caracteres.

Observaciones

Nota CTOT( ) puede crear valores ambiguos de Date y generar un error de compilación cuando SET STRICTDATE está establecido en 2. Utilice DATETIME( ) en su lugar para crear valores no ambiguos de Date.

Visual FoxPro admite los tipos de datos nativos de SQL Datetime y Smalldatetime, que se devuelven en formato de 24 horas en SQL XML.

Nota La función CTOT( ) no se aplica a los 19 modos diferentes en los que la función T-SQL Convert( ) devuelve los valores Datetime y Smalldatetime.

Para convertir formatos de fecha de Access, SQL Server, Visual Studio .NET y XML, debe establecer la configuración apropiada para SET DATE, para interpretar cadenas DateTime correctamente. Sin embargo, si una letra mayúscula T está en la cadena de fecha XML, Visual FoxPro sobrescribe la configuración de fecha actual por una llamada interna a SET DATE YMD y restaura la configuración de fecha actual cuando salga de CTOT( ).

Nota CTOT( ) convierte las fechas con los límites de precisión del tipo de dato DateTime de Visual FoxPro. Por lo tanto, se puede perder precisión cuando utilice CTOT( ) con ciertos formatos. El tipo de datos DateTime no admite milisegundos o zonas horarias.

CTOT( ) respeta la configuración del comando SET CENTURY. Para más información, consulte comando SET CENTURY.

Ejemplos

Los siguientes ejemplos muestran como CTOT( ) controla valores DateTime de diferentes orígenes. En todos los ejemplos, CTOT( ) convierte los valores DateTime correctamente sin necesidad de llamar SET DATE YMD.

  • Access 2000 XML (formato de fecha)
    * 2000-10-24T13:30:00 (formato 24-horas exportado desde Access,
* si el original estaba en formato 12- o 24-horas)
? CTOT("2000-10-24T13:30:00")
  • SQL Server 2000 XML (formato de fecha)
    ? CTOT("2000-10-24T20:47:58.170")   && datetime (formato 24-horas)
? CTOT("2000-10-24T21:11:00")         && Small DT (formato 24-horas)
? CTOT("2000-10-03T02:02:02")
  • Visual Studio .NET XML
    ? CTOT("2002-10-05T04:04:04.0000000-07:00")
  • Simple Object Access Protocol (SOAP)
    ? CTOT("2001-09-14T07:00:00Z")

Vea también

DATETIME( ) | SET STRICTDATE


CURDIR( ) (Función)

Devuelve el directorio actual.

CURDIR([cExpression])

Valores devueltos

Character

Parámetros

cExpression
Especifica la unidad o el volumen para el cual CURDIR( ) devuelve el directorio actual. Si omite cExpression, se asumirá la unidad o el volumen predeterminados actuales. Devuelve una cadena vacía si la unidad o el volumen especificado en cExpression no existen. Observe que este argumento sólo se incluye para compatibilidad con versiones anteriores de Visual FoxPro y FoxPro que se ejecutan bajo Windows 3.1 o MS-DOS.

Observaciones

CURDIR( ) devuelve en forma de cadena de caracteres el directorio MS-DOS actual de una unidad especificada.

Ejemplo

El ejemplo siguiente almacena el directorio actual en una variable, establece como predeterminado el directorio desde el que se inició Visual FoxPro, muestra el nuevo directorio, vuelve a poner como predeterminado el directorio original y muestra el directorio original.

CLEAR
? 'Current directory: ', CURDIR( )
gcOldDir = SET('DEFAULT') + SYS(2003)
SET DEFAULT TO (HOME( ))
? 'Visual FoxPro directory: ', CURDIR( )
SET DEFAULT TO (gcOldDir)
? 'Current directory: ', CURDIR( )

Vea también

FULLPATH( ) | HOME( ) | SYS(2003) - Directorio actual


CURSORGETPROP( ) (Función)

Devuelve la configuración actual de propiedad de una tabla o un cursor de Visual FoxPro.

Utilice CURSORSETPROP( ) para establecer una propiedad específica para una tabla o un cursor de Visual FoxPro. Vea CURSORSETPROP( ) para obtener información adicional acerca de cada una de las propiedades y sus configuraciones.

CURSORGETPROP(cProperty [, nWorkArea | cTableAlias])

Parámetros

cProperty
Especifica la propiedad cuya configuración se va a devolver.

La tabla siguiente incluye una lista de propiedades cuya configuración puede devolverse, el tipo de datos del valor que devuelve y una descripción del valor que devuelve.

cProperty | Tipo | Descripción
ADORecordset | O | Contiene una referencia al objeto ActiveX Data Object (ADO) Recordset asociado con el cursor. No es válido para cursores que no estén basandos en ADO Recordsets. Sólo lectura.
AllowSimultaneousFetch L Aplica cuando se usa en vistas remotas, conexiones compartidas, y cursores creados usando ODBC.

AllowSimultaneousFetch contiene Verdadero (.T.) cuando cursores similarmente configurados como compartidos están permitidos para traer filas simultaneamente.

De otro modo, cuando el traer registro simultaneamente no está permitido AllowSimultaneousFetch contiene Falso (.F.) .
AutoIncError L Contiene Verdadero (.T.) cuando se ha generado un error al intentar insertar o actualizar un valor de un campo que usa incremento automático

Contiene Falso (.F.) cuando no se ha generado un mensaje de error al intentar insertar o actualizar un valor de un campo que usa incremento automático.

Aplica a cursores y sesiones.

Lectura y escritura
BatchUpdateCount* N El número de instrucciones de actualización enviadas al origen de datos para tablas almacenadas en búfer. 1 es el valor predeterminado. Ajustar este valor puede aumentar considerablemente el rendimiento.

Lectura y escritura.
Buffering N 1 – (Valor predeterminado) El almacenamiento de filas y tablas en búfer está desactivado.

2 – El almacenamiento pesimista de filas en búfer está activado.

3 – El almacenamiento optimista de filas en búfer está activado.

4 – El almacenamiento pesimista de tablas en búfer está activado.

5 – El almacenamiento optimista de tablas en búfer está activado.

Lectura y escritura.
CompareMemo L Contiene verdadero (.T.) (valor predeterminado) si los campos memo (del tipo Memo, General, o Picture) están incluidos en la cláusula WHERE para actualizaciones; de lo contrario, contiene falso (.F.). Sólo para vistas.

Lectura y escritura.
ConnectHandle N El controlador de conexión. Esta propiedad sólo será válida cuando el origen de datos contenga una tabla remota.

Sólo lectura.
ConnectName C La conexión con nombre empleada cuando se crea el cursor. Esta propiedad sólo será válida cuando el origen de datos contenga una tabla remota.

Sólo lectura.
Database | C | El nombre de la base de datos donde se encuentra la tabla o la vista. Si se trata de una tabla libre, contiene la cadena vacía.
FetchAsNeeded L Contiene verdadero (.T.) si los datos se buscan cuando sea necesario; de lo contrario, contiene falso (.F.) (valor predeterminado). Sólo para vistas.
Nota FetchAsNeeded no aplica cuando está no está habilitado el tomar filas progresivamente (FetchSize es -1).

Lectura y escritura
FetchMemo* L Contiene verdadero (.T.) si se toman los campos memo con los resultados de la vista; de lo contrario, contiene falso (.F.) (valor predeterminado).

Lectura y escritura.
FetchSize* N

El número de filas tomadas progresivamente del conjunto de resultados de la tabla remota. 100 filas es el valor predeterminado. Si se ajusta FetchSize como -1, se recupera el conjunto completo de resultados (limitado por el valor de MaxRecords).

Nota Tomar las filas progresivamente retiene la conexión mientras todos los registros son tomados. Use codificación preventiva si el valor de ShareConnection es verdadero (.T.).

Lectura y escritura.
KeyFieldList C Lista delimitada por comas de los campos principales para el cursor.

Lectura y escritura.
MaxRecords* N El número máximo de filas tomadas cuando se devuelven los conjuntos de resultados. El valor predeterminado es – 1 (se devuelven todas las filas). Un valor de 0 especifica que se ejecuta la vista pero que no se toman resultados.

Lectura y escritura.
ParameterList C Lista delimitadas por punto y coma (;) conteniendo los parámetros y tipo de parámetro. Para uso sólo en vistas.

Lectura y escritura.
Prepared L

Contiene verdadero (.T.) si las instrucciones SQL están preparadas para llamadas a funciones REQUERY( ) subsiguientes; de lo contrario, contiene falso (.F.) (valor predeterminado). REQUERY( ) sirve para recuperar los datos para una vista SQL. Vea SQLPREPARE( ) fpara obtener información adicional acerca de la preparación de instrucciones SQL. Sólo para vistas.

Lectura y escritura.
SendUpdates L Contiene verdadero (.T.) si se envía una consulta de actualización SQL para actualizar tablas remotas; de lo contrario, contiene falso (.F.) (el valor predeterminado).

Lectura y escritura.
SourceName C Contiene el nombre largo para una vista o tabla SQL de una base de datos, o la ruta de acceso del archivo y el nombre de tabla para una tabla libre.

Sólo lectura.
SourceType N 1 – Especifica que el origen de datos es una vista SQL local.

101 (1 + 100) - Cursor creado por el método CursorFill.

201 (1 + 200) - Cursor agregado a un objeto CursorAdapter usando el método CursorAttach.

2 – Especifica que el origen de datos es una vista SQL remota.

102 (2 + 100) - Cursor creado por el método CursorFill.

202 (2 + 200) - Cursor agregado a un objeto CursorAdapter usando el método CursorAttach.

3 – Especifica que el origen de datos es una tabla.

103 (3 + 100) - Cursor creado por el método CursorFill.

203 (3 + 200) - Cursor agregado a un objeto CursorAdapter usando el método CursorAttach.

4 - Especifica que el origen de datos está basado en un ADO Recordset y agregado a un objeto CursorAdapter.

104 (4 + 100) - Cursor creado por el método CursorFill.

204 (4 + 200) - Cursor agregado a un objeto CursorAdapter usando el método CursorAttach.

Sólo lectura.
SQL C La instrucción SQL ejecutada cuando se crea el cursor.

Sólo lectura.
Tablas C Lista delimitada por comas de los nombres de las tablas remotas.

Lectura y escritura.
UpdatableFieldList C Lista delimitada por comas de campos en la vista. Esta lista puede incluir campos de tablas locales y remotas.

Lectura y escritura.
UpdateNameList C Lista delimitada por comas de nombres de campos remotos y los nombres de campos locales asignados al cursor. Utilice esta opción para especificar nombres válidos de Visual FoxPro para campos del cursor que tengan nombres no válidos para Visual FoxPro.

Lectura y escritura.
UpdateType N 1 – Especifica que los datos antiguos se actualizan con los datos nuevos (predeterminado).

2 – Especifica que para actualizar los datos, se eliminan los datos antiguos y se insertan los nuevos.

Lectura y escritura.
UseMemoSize* N El tamaño mínimo (en bytes) para el que se devuelven columnas de resultado en campos memo. Por ejemplo, si el ancho de un resultado de columna es mayor que el valor de UseMemoSize, dicho resultado se almacena en un campo memo. UseMemoSize puede variar de 1 a 255; el valor predeterminado es 255.

Lectura y escritura.
WhereType N La cláusula WHERE empleada para actualizar tablas. WhereType puede asumir los valores siguientes:

1 o DB_KEY (de FOXPRO.H). La cláusula WHERE usada para actualizar tablas remotas sólo consta de campos principales especificados con la propiedad KeyFieldList.

2 o DB_KEYANDUPDATABLE (de FOXPRO.H). La cláusula WHERE usada para actualizar tablas remotas consta de los campos principales especificados con la propiedad KeyFieldList y cualquier campo actualizable.

3 o DB_KEYANDMODIFIED (de FOXPRO.H) (valor predeterminado). La cláusula WHERE empleada para actualizar tablas remotas consta de los campos principales especificados con la propiedad KeyFieldList y cualquier otro campo modificado.

4 o DB_KEYANDTIMESTAMPLa cláusula WHERE usada para actualizar tablas remotas consta de los campos principales especificados con la propiedad KeyFieldList y una comparación de las marcas de hora.

Lectura y escritura.

* TEl valor devuelto por esta propiedad sólo es significativo para vistas remotas; si obtiene esta propiedad para vistas locales, la función CURSORGETPROP( ) devolverá el valor predeterminado.

La tabla siguiente incluye una lista de propiedades cuya configuración puede devolverse, el tipo de datos del valor que devuelve y una descripción del valor que devuelve.

nWorkArea
Especifica el área de trabajo de la tabla o el cursor desde el que se devuelve la configuración de la propiedad. Si especifica 0 para nWorkArea, CURSORGETPROP( ) devuelve el valor de entorno.
cTableAlias
Especifica el alias de la tabla o el cursor desde los que se devuelve la configuración de la propiedad.

Valores de Retorno

Tipos de datos Caracter, Numérico o Lógico.

Observaciones

La configuración actual de la propiedad se devuelve para la tabla o el cursor abierto en el área de trabajo seleccionada actualmente si se ejecuta CURSORGETPROP( ) sin los argumentos opcionales cTableAlias o nWorkArea.

Ejemplo

Cuando se abre un cursor, el valor por defecto para la propiedad AutoIncError es leido desde el valor por defecto de la sesión, el cual es la configuración de la sesión de datos predeterminada. El siguiente ejemplo muestra cómo puede recuperar el valor predeterminado de AutoIncError, al especificar 0 (sesión predeterminada) como el último parámetro:

CURSORGETPROP("AutoIncError", 0)

La sesión predeterminada es usado cuando se abre una nueva sesión de datos privada o cursor. El siguiente ejemplo muestra como puede recuperar la configuración AutoIncError para el cursor o tabla, al usar nWorkArea o cTableAlias como último parámetro:

CURSORGETPROP("AutoIncError", nWorkArea | cTableAlias)

El ejemplo siguiente abre la tabla "Customer" de la base de datos "Testdata". Se usa CURSORGETPROP( )para mostrar el modo de almacenamiento en búfer para la tabla y el nombre de la base de datos donde está contenida la tabla.

CLOSE DATABASES
CLEAR
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer     && Open customer table
? CURSORGETPROP("Buffering") && Displays buffering mode
? CURSORGETPROP("Database")  && Displays database name

Vea también

CURSORSETPROP( ) | SQLGETPROP( ) | SQLSETPROP( )


CURSORSETPROP( ) (Propiedad)

Especifica la configuración de propiedad para una tabla o un cursor de Visual FoxPro.

CURSORSETPROP( cProperty [, eExpression] [, cTableAlias | nWorkArea ] )

Parámetros

cProperty
Especifica la propiedad de la tabla o el cursor que se va a establecer. Observe que Buffering es la única propiedad que puede especificar para una tabla de Visual FoxPro.
eExpression
Especifica el valor de la propiedad que especifica con cProperty. Si omite eExpression, se establece el valor predeterminado de la propiedad.

La tabla siguiente muestra las propiedades que pueden especificarse para cProperty y una descripción de los valores que puede adoptar eExpression.

Propiedad | Configuración de eExpression
AllowSimultaneousFetch Aplica cuando se usan vistas remotas, conexión compartida y cursores creados usando ODBC.

.T. - Permite que cursores similarmente configurados y que comparten una mismo conexión pueden traer registros simultáneamente.

.F. - No permite que cursores similarmente configurados y que comparten una mismo conexión pueden traer registros simultáneamente.
AutoIncError .T. - Generar un mensaje de error cuando al intentar insertar o actualizaar un campo que usa incremento automático.

.F. - No generar un mensaje de error, pero tampoco usar el valor especificado cuando se intenta insertar o actualizar el valor de un campo que usa incremento automático.

Aplica para cursores y sesiones.
BatchUpdateCount* | El número de instrucciones de actualización enviadas al origen de datos para tablas almacenadas en búfer. 1 es el valor predeterminado. Ajustar este valor puede aumentar considerablemente el rendimiento.
Buffering 1 – Sets row and table buffering off. Record locking and data writing are identical to earlier FoxPro versions. (Default)

2 – Activa el almacenamiento pesimista de filas en búfer.

3 – Activa el almacenamiento optimista de filas en búfer.

4 – Activa el almacenamiento pesimista de tablas en búfer.

5 – Sets optimistic table buffering on. SET MULTILOCKS must be ON for all Buffering modes except 1 (off).
CompareMemo .T. - Los campos memo (de tipo Memo, General o Picture) se incluyen en la cláusula WHERE para actualizaciones.

.F. – Los campos Memo no se incluyen en la cláusula WHERE para actualizaciones.
FetchAsNeeded .T. – Se buscan los registros necesarios.

.F. – Para las vistas remotas, el número de registros que se buscan está determinado por la propiedad MaxRecord. Para vistas locales, se buscarán todos los registros.

Nota FetchAsNeeded no aplica cuando no se recuperan filas progresivamente (FetchSize es -1).
FetchMemo* .T. – Se buscan los campos memo con los resultados de vista.

.F. – No se buscan los campos memo con los resultados de vista.
FetchSize* Número de filas tomadas progresivamente del conjunto de resultados de tablas remotas. El valor predeterminado es 100 filas. Si se establece FetchSize en –1, se recupera el conjunto completo de resultados (limitado por la configuración de MaxRecords).
Nota Tomar las filas progresivamente retiene la conexión mientras todos los registros son tomados. Use codificación preventiva si el valor de ShareConnection es verdadero (.T.).
KeyFieldList | Lista, delimitada por comas, de campos principales para el cursor.No tiene valor predeterminado. Es necesario incluir una lista de nombres de campos para que funcionen las actualizaciones.
MaxRecords* | El número máximo de filas tomadas cuando se devuelven los conjuntos de resultados. El valor predeterminado es – 1 (se devuelven todas las filas). Un valor de 0 especifica que se ejecuta la vista pero que no se toman resultados.
ParameterList | Especifica una lista delimitada por punto y coma (;) de los parámetros y tipos de datos de los parámetros de una vista. Únicamente para vistas.
Prepared .T. - Preparar la instrucción SQL para llamadas siguientes de la función REQUERY( ).

.F. - No preparar la instrucción SQL para llamdas siguientes de la función REQUERY( ). (Default).

REQUERY( ) sirve para recuperar los datos para una vista SQL. Vea SQLPREPARE( ) (Función) para obtener información adicional acerca de la preparación de instrucciones SQL.
SendUpdates .T. – Especifica que se envíe una consulta de actualización SQL para actualizar las tablas cuando se realice una actualización por medio de la vista.

.F. – Especifica que no se envíe una consulta de actualización SQL para actualizar tablas.
Tables | Lista delimitada por comas de los nombres de tablas remotas.No tiene valor predeterminado. Es necesario incluir una lista de nombres de tablas para que funcionen las actualizaciones.
UpdatableFieldList | Lista delimitada por comas de campos en la vista. Esta lista puede incluir campos de tablas locales y remotas. Es necesario incluir una lista de campos para que funcionen las actualizaciones.
UpdateNameList | Lista delimitada por comas de nombres de campos remotos y nombres de campos locales asignados al cursor. Utilice esta opción para especificar nombres válidos de Visual FoxPro para campos del cursor que tengan nombres no válidos para Visual FoxPro.
UpdateType 1 – Especifica que los datos antiguos se actualizan con los datos nuevos (predeterminado).

2 – Especifica que para actualizar los datos, se eliminan los datos antiguos y se insertan los nuevos.
UseMemoSize* | Especifica el tamaño mínimo (en bytes) para el que se devuelven las columnas de resultados en campos memo. Por ejemplo, si el ancho de un resultado de columna es mayor que el valor de UseMemoSize, dicho resultado se almacena en un campo memo. UseMemoSize puede variar de 1 a 255; el valor predeterminado es 255.
WhereType La cláusula WHERE empleada para actualizar tablas remotas. WhereType puede asumir los valores siguientes:

1 o DB_KEY (de FOXPRO.H). La cláusula WHERE usada para actualizar tablas remotas sólo consta de campos principales especificados con la propiedad KeyFieldList.

2 o DB_KEYANDUPDATABLE (de FOXPRO.H). La cláusula WHERE usada para actualizar tablas remotas consta de los campos principales especificados con la propiedad KeyFieldList y cualquier campo actualizable.

3 o DB_KEYANDMODIFIED (de FOXPRO.H) (valor predeterminado). La cláusula WHERE empleada para actualizar tablas remotas consta de los campos principales especificados con la propiedad KeyFieldList y cualquier otro campo modificado.

4 o DB_KEYANDTIMESTAMP (de FOXPRO.H). La cláusula WHERE usada para actualizar tablas remotas consta de los campos principales especificados con la propiedad KeyFieldList y una comparación de las marcas de hora.

* Esta propiedad se utiliza principalmente para vistas remotas; el hecho de establecerla no tiene ningún efecto sobre las vistas locales. Sin embargo, puede establecer previamente esta propiedad para vistas locales que vayan a aumentar de tamaño.

cTableAlias
Especifica el alias de la tabla o el cursor para los que se establece la propiedad.
nWorkArea
Especifica el área de trabajo de la tabla o el cursor para los que se establece la propiedad. Si especifica 0 para nWorkArea, CURSORSETPROP( ) establece el valor de entorno utilizado para todas las tablas o cursores subsiguientes.
Nota El almacenamiento en búfer no se aplica a las tablas abiertas implícitamente, por ejemplo mediante los comandos SQL INSERT/UPDATE/DELETE.

Return Values

Tipo de datos Lógico. CURSORSETPROP( )devuelve verdadero (.T.) si Visual FoxPro establece correctamente la propiedad que usted especifica. Visual FoxPro genera un error si no puede establecerse la propiedad especificada.

Observaciones

La configuración de la propiedad Buffering de CURSORSETPROP( ) determina cómo realiza Visual FoxPro el bloqueo de registros y el almacenamiento de actualizaciones en búfer. Si desea obtener información adicional acerca del bloqueo de registros y el almacenamiento en búfer de actualización, vea Almacenar datos en búfer .

La configuración de la propiedad WhereType CURSORSETPROP( ) determina cómo se realizan las actualizaciones de tablas remotas. Si desea obtener información adicional acerca de la actualización de tablas remotas, vea Desarrollar bases de datos.

CURSORSETPROP( )puede utilizarse para no aplicar la propiedad FetchSize SQLSETPROP( ) para un cursor. Esta propiedad se hereda del controlador de conexión del cursor de forma predeterminada

Utilice CURSORGETPROP( ) para devolver la configuración actual de la propiedad para una tabla o un cursor de Visual FoxPro creado para un tabla.

La configuración de la propiedad se especifica para la tabla o el cursor abierto en el área de trabajo seleccionada actualmente si se ejecuta CURSORSETPROP( ) sin los argumentos opcionales cTableAlias or nWorkArea.

Ejemplo

Cuando se abre un cursor, el valor por defecto para la propiedad AutoIncError es leido desde el valor por defecto de la sesión, el cual es la configuración de la sesión de datos predeterminada. El siguiente ejemplo muestra cómo puede establecer el valor predeterminado de AutoIncError, al especificar 0 (sesión predeterminada) como el último parámetro:

CURSORSETPROP("AutoIncError", .T., 0)

La sesión predeterminada es usado cuando se abre una nueva sesión de datos privada o cursor. El siguiente ejemplo muestra como puede recuperar la configuración AutoIncError para el cursor o tabla, al usar cTableAlias or nWorkArea como último parámetro:

CURSORSETPROP("AutoIncError", .F. , cTableAlias | nWorkArea )

El ejemplo siguiente muestra cómo puede activar el almacenamiento optimista de tablas en búfer con CURSORSETPROP( ). MULTILOCKS se establece en ON, un requisito para el almacenamiento de tablas en búfer. Se abre la tabla "Customer" de la base de datos "testdata" database is opened, y se usa CURSORSETPROP( ) para establecer el modo de almacenamiento optimista de tablas en búfer (5). Aparecerá un cuadro de mensaje para mostrar el resultado de la operación.

CLOSE DATABASES
CLEAR
SET MULTILOCKS ON
OPEN DATABASE (HOME(2) + 'data\testdata')
USE Customer     && Abrir tabla  Customer.
* Establecer el modo de búfer y guardar el resultado.
lSuccess=CURSORSETPROP("Buffering", 5, "customer")
IF lSuccess = .T.
=MESSAGEBOX("Operation successful!",0,"Operation Status")
ELSE
=MESSAGEBOX("Operation NOT successful!",0,"Operation Status")
ENDIF

Vea también

CURSORGETPROP( ) | SET MULTILOCKS | SQLGETPROP( ) | SQLSETPROP( )


CURSORTOXML( ) (Función)

Convierte un cursor Visual FoxPro en texto XML.

CURSORTOXML(nWorkArea | cTableAlias, cOutput [, nOutputFormat
 [, nFlags [, nRecords [, cSchemaName [, cSchemaLocation [, cNameSpace ]]]]]])

Parámetros

nWorkArea
Especifica el área de trabajo de la tabla a partir de la cual se crea la cadena XML. Si se especifica 0 o nada, Visual FoxPro utiliza el área de trabajo actual.
cTableAlias
Especifica el alias de la tabla a partir de la cual se crea la cadena XML.
cOutput

La ruta y el nombre del archivo o el nombre de la variable de memoria a los que se envían los resultados

Si nFlagsnFlags se establece para el resultado de la variable de memoria (el valor predeterminado), se devuelve el XML a la variable de memoria. Si la variable de memoria no existe, se creará.

Si nFlags se establece para el resultado del archivo (512), y el archivo no existe, éste se creará. Si el archivo ya existe, se sobrescribirá. Se respeta la configuración de SAFETY.

nOutputFormat
Especifica el formato de los resultados de la cadena XML, según la tabla siguiente:
nOuputFormat | Descripción
1 – ELEMENTOS | XML centrado en elementos (valor predeterminado)
2 – ATRIBUTOS | XML centrado en atributos
3 – EN BRUTO | Genérico, XML centrado en atributos
nFlags
Especifica el tipo de esquema XML que se produce según la tabla siguiente:
nFlags | Bit | Descripción del resultado
0 0000 XML con formato UTF-8 (valor predeterminado)

Esta configuración crea una variable de memoria is no existe y devolverá la cadena XML a esa variable de memoria.

La Declaración XML no contiene el atributo Encoding= atributo, esto significa que no hay atributos de codificación .
1 | 0001 | XML sin formato (cadena continua)
2 | 0010 | Se escriben elementos vacíos, con elementos de apertura y de cierre (por ejemplo, <cc04><cc04/>).
4 | 0100 | Conserva los espacios en blanco de los campos.
8 | 1000 | Ajusta campos Memo en secciones CDATA.
16 10000 Codificación de resultados. Los resultados se configuran según el código de página actual.

Para asegurar la traducción exacta de caracteres, la página de códigos de Visual FoxPro debe coincidir con la página de códigos de el cursor. Puede lograr esto configurando los campos carácter y memo del cursor como NOCPTRAN (character binary/memo binary).

Al configurar este valor con tablas usando cualquier código de página, el atributo de codificación en el XML se establece a cadena vacía (""). Utilice la función STRTRAN( ) para cambiar el atributo de codificación. por ejemplo, para el código de página 936, proporcione lo siguiente a la cadena XML resultante:

strxml=STRTRAN(strxml, 'encoding=""', 'encoding="gb2312"'
32 | 100000 | Codificación de resultados
512 1000000000 cOutputes un nombre de archivo. El valor predeterminado de nFlag, 0, 0, crea una variable de memoria.

Si un archivo no existe, es creado. Si archivo ya existe, es sobrescrito. Se respeta la configuración de SAFETY .
4096 1000000000000 Deshabilita la codificación base64.

CURSORTOXML( ) exporta los campos Memo (Binary) como xsd:base64binary a menos de que use nFlags establecido a 4096. En Visual FoxPro, la codificación base64 tiene significado únicamente para datos binarios.

Cuando la codificación de resultados predeterminada se establece en la Página de códigos del cursor o de la tabla, el atributo de codificación se escribe de acuerdo con la tabla siguiente.

Nota Los indicadores de codificación se establecen mediante la combinación de los bits 4 y 5 (0010000).
Indicador de codificación | Bits 4 y 5 | Descripción
+0 | 00 | Windows 1252 (predeterminado)
+16 | 01 | El atributo de codificación de los resultados se establece en la página de códigos del cursor.
+32 | 10 | El atributo de codificación de los resultados se establece en UTF-8, sin conversión de caracteres.
+48 | 11 | El atributo de codificación de los resultados se establece en UTF-8; los caracteres de doble byte se traducen a UTF-8.

La tabla siguiente muestra una lista de páginas de código comunes compatibles con Windows.

Página de códigos | Plataforma | Atributo de codificación en la declaración XML | Comentarios
437 | MS-DOS, U.S. | ibm437
850 | MS-DOS, Internacional | ibm850
865 | MS-DOS, Nórdico | Cadena vacía ("")
866 | MS-DOS, Ruso | cp866
932 | Windows, Japonés | shift-jis
936 | Chino Tradicional | gb2312
949 Windows, Coreano iso-2022-kr –o bien–

ks_c_5601-1987
950 | Windows, Chino (Taiwanés) | big5
1250 | Windows, Europa Oriental | Windows-1250 | tenga en cuenta mayúsculas y minúsculas
1251 | Windows, Ruso | Windows-1251
1252 | Windows, U.S., Europa Occidental | Windows-1252
1253 | Windows, Griego | Windows-1253
1254 | Windows, Turco | Windows-1254
1255 | Windows, Hebreo | Windows-1255
1256 | Windows, Arábigo | Windows-1256
Nota Cuando se utiliza una codificación basada en páginas de códigos (juegos de caracteres tradicionales de byte único o doble byte de Visual FoxPro), tales como Windows-1252 (código de página 1252) o Big5 (código de página 950), no es necesaria ninguna otra traducción de caracteres para una presentación correcta en Internet Explorer.
Sin embargo, para hacer al XML mas compatible con aquellos navegadores Web que pueden interpretar UTF-8, puede, opcionalmente configurar el tributo a UTF-8 en vez de Windows-1252. El conjunto de resultados puede ser traducidos a caracteres UTF-8 únicamente cuando se establece nFlags a 48 para especificar el atributo de codificación como UTF-8 y traducir los datos al formato UTF-8. Esto es requerido únicamente cuando los datos contienen caracteres de doble byte. Sin embargo, no tiene que utilizar caracteres de traducción, por ejemplo, si su salida es únicamente para caracteres en latín (byte sencillo).
nRecords
Especifica el número de registros que se convertirán en resultados XML.

Si nRecords es 0 (la opción predeterminada), en los resultados se incluyen todos los registros. Si nRecords es mayor que el número de registros que quedan en la tabla, se incluyen todos los registros restantes.

cSchemaName
Especifica el nombre y la ubicación de la información de esquema para los datos de cFileName.

La siguiente tabla lista los valores para cSchemaName.

cSchemaName | Descripción
"" Especifica que no se producirá ningún esquema.
"1" | Especifica que se producirá un esquema en línea.
<cSchemaName> | Especifica el nombre y la ruta del archivo externo que contendrá el esquema (que tiene como alcance el elemento raíz del XML).

Si se deja en blanco o no se proporciona cSchemaLocation y cSchemaName contiene un nombre de archivo, el contenido de cSchemaName se escribe a los atributos xsi:schemaLocation o xsi:noNamespaceSchemaLocation dentro de XML.

En el código siguiente, Visual FoxPro genera un archivo XML genérico myxmlfile.xml desde el archivo labels.dbf en el alias "Labels" y el archivo de esquema mySchema en el mismo directorio.

CURSORTOXML("LABELS", "myXMLFile.xml", 1, 512, 0,  "mySchema.xsd")

Si se especifica "", en lugar de "mySchema.xsd", no se produce ningún esquema; si se especifica "1", como en el ejemplo siguiente, se produce un esquema en línea:

CURSORTOXML("LABELS", "myXMLFile.xml", 1, 512, 0, "1")

Si cSchemaName incluye un URI, el esquema es escrito a al directorio actual y debe ser actualizado a el Server que será utilizado por el navegador o analizado. Los esquemas externos siempre son escritos en el mismo lugar que archivo XML.

cSchemaLocation
Especifica una ubicación opcional donde la aplicación que lee los datos XML debería buscar el archivo de esquema. Utilice este parámetro únicamente cuando este desplegando su esquema en una ubicación diferente a la ubicación de los datos XML.

El contenido de cSchemaLocation se escribe en el atributo xsi:schemaLocation o xsi:noNamespaceSchemaLocation de los datos XML producidos. El parámetro cschemaLocation puede ser una dirección http u otra URL. Deberá copiar el archivo de esquema en la ubicación que especificó en cSchemaLocation.

Por ejemplo:

   CURSORTOXML("LABELS", "myXMLFile.xml", 1, 512, 0, ;
"mySchema.xsd", "http://www.microsoft.com/mySchema.xsd")

producirá datos XML que contienen el atributo siguiente:

   xsi:noNamespaceSchemaLocation=" http://www.microsoft.com/mySchema.xsd"

Si cSchemaLocation está en blanco, especificar cSchemaName hará que se escriban los mismos atributos en los datos XML. Esto le permite señalar a un esquema existente sin recrear el esquema cada vez que se llama a CURSORTOXML( ).

cNamespace
Especifica el nombre de espacio del XML o esquema a ser producidor, tiene un valor de cadena vacia ("") como predeterminado.

Especificar un valor para cNameSpace, el atributo targetNamespace se establece en el mismo valor y se agrega al esquema el atributo elementFormDefault="qualified" agregado al esquema.

Si no se especifica el parámetro cNamespace y el esquema es externo, en el esquema no se escribe ninguna declaración de espacio de nombres. Si no se especifica ningún parámetro cNamespace y el esquema está en línea, el valor de targetNamespace en el esquema se establece en "", la cadena vacía ("").

Valores que Retorna

Tipo de datos numérico. CURSORTOXML( ) devuelve el número de bytes escrito a el archivo o variable de memoria.

Observaciones

El resultado de CURSORTOXML( ) se adhiere al orden de índice del cursor, SET FIELDS TO, y a las configuraciones de filtro actuales. Esta función no conserva la ubicación del cursor. Después de la llamada, el puntero del registro del cursor informa de EOF si todos los registros se incluyeron ya en los resultados o apuntará al último registro de los resultados de XML si no se incluyeron aún todos los registros.

El XML resultante de la función CURSORTOXML( ) contiene la misma escala que la tabla exportada, en el caso de que la tabla contenga tipos de datos Doble. Por ejemplo, si es creada una columna de tipo doble con una escala de 6 usando el siguiente código:

CREATE TABLE test (col1 b(6))

El XML resultante contiene seis dígitos a la derecha del punto decimal.

Cuando utiliza la función CURSORTOXML( ) para exportar una tabla o cursor a XML, el nodo raíz siempre será llamado "VFPData", a pesar del formato de salida.

Únicamente para tipos de datos Fecha, puede exportar datos "VACÍOS" utilizando CURSORTOXML( ). Sin embargo, el esquema de validación XML podría fallar debido a que "VACÍO" no es válido para estos tipos en el esquema XML Schema Definition (XSD). Esto es un tema únicamente para cuando se requiera el esquema, y el XML resultante se valide con un analizador que pueda interpretar esquemas XML. Como una solución temporal, necesitaría cambiar los datos a una representación no vacía ejecutando la instrucción SELECT apropiada y utilizar CURSORTOXML( ) con el cursor creado. Por ejemplo, puede cambiar una Fecha o Fecha-Hora vacía con nulos (.NULL.):

SELECT orderid, EVL(shippeddate,.NULL.) as ShippedDate FROM orders

También puede cambiar la Fecha o Fecha-Hora a una representación apropiada de "vacío":

SELECT orderid, IIF(EMPTY(shippeddate),{^1899-12-30 00:00:00},tc11);

as ShippedDate FROM orders
as ShippedDate FROM ordersmight need to change the data to a nonempty representation by calling the appropriate SELECT statemulting XML is validated against an XML parser that can interpret XSD schemas. As a workaround, you XML Schema Definition (XSD) schema. This is an issue only if schema is required, and the respos en esquemaembargo, el esquema de validación XML podría fallar debido a que "VACIO" no es válido para estos tiÚnicamente para tipos de datos Fecha, puede exportar datos "VACIOS" utilizando CURSORTOXML( ). Sin :might need to change the data to a nonempty representation by calling the appropriate SELECT statemulting XML is validated against an XML parser that can interpret XSD schemas. As a workaround, you pos en XML Schema Definition (XSD) schema. This is an issue only if schema is required, and the resembargo, el esquema de validación XML podría fallar debido a que "VACIO" no es válido para estos tiÚnicamente para tipos de datos Fecha, puede exportar datos "VACIOS" utilizando CURSORTOXML( ). Sin the data to a nonempty representation by calling the appropriate SELECT statement and use CURSORTOXed against an XML parser that can interpret XSD schemas. As a workaround, you might need to change inition (XSD) schema. This is an issue only if schema is required, and the resulting XML is validatthe XML schema validation might fail because "EMPTY" is not valid for these types in XML Schema DefL podría fallar debido a que "VACIO" no es válido para estos tipos en However, , puede exportar datos "VACIOS" utilizando CURSORTOXML( ). Sin embargo, el esquema de validación XMÚnicamente para tipos de datos Fecha:.NULL.:Únicamente para tipos de datos Fechange the empty Date or DateTime values to .NULL.: For example, you can chaÚnicamente para tipos de datos FechaÚnicamente para tipos de datos Fechaan change the empty Date or DateTime values to .NULL.: CURSORTOXML( ) on the created cursor. For example, you cjecutando la instrucción SELECT apropiada y utilizar g the appropriate SELECT statement and use CURSORTOXML( ) on the created cursor. For example, you c

Vea también

Funciones XML | XMLUpdateGram( ) (Función) | XMLTOCURSOR( ) (Función)


CURVAL( ) (Función)

Devuelve valores de campo directamente desde disco para una tabla o un origen de datos remoto.

CURVAL(cExpression [, cTableAlias | nWorkArea])

Valores devueltos

Carácter, Monetario, Fecha, DateTime, Doble, Flotante, Lógico, Numérico o Memo

Parámetros

cExpression
Especifica una expresión cuyo valor devuelve CURVAL( ) a partir de una tabla o un origen de datos remoto. cExpression suele ser un campo o una expresión que contiene un conjunto de campos de la tabla o del origen de datos remoto.
cTableAlias
Especifica, para una tabla o un origen de datos remoto, el alias de la tabla desde la cual se devuelve el valor del campo almacenado en disco.
nWorkArea
Especifica, para una tabla o un origen de datos remoto, el área de trabajo de la tabla desde la cual se devuelve el valor del campo almacenado en disco.

Observaciones

Los valores de campo que devuelven CURVAL( ) y OLDVAL( ) pueden compararse para determinar si otro usuario de la red ha cambiado los valores de campo mientras se modificaban los campos. CURVAL( ) y OLDVAL( ) sólo pueden devolver valores distintos cuando está activo el almacenamiento optimista de filas o tablas en búfer. El almacenamiento optimista de filas o tablas en búfer se activa con CURSORSETPROP( ).

Nota Si está trabajando con una vista en un entorno de varios usuarios, es posible que los valores devueltos por CURVAL( ) no estén actualizados a no ser que haya llamado antes a la función REFRESH( ). Los datos devueltos por una vista se almacenan en búfer y la función CURVAL( ) lee valores desde el búfer. De todas formas, si hay otros usuarios que han modificado datos en las tablas subyacentes para la vista, los datos almacenados en búfer no se actualizarán hasta que se llame a la función REFRESH( ).

CURVAL( ) devuelve valores de campo para el registro actual y el tipo de datos del valor devuelto se determina por la expresión especificada con cExpression.

Se devuelve el valor para la tabla o el cursor abierto en el área de trabajo seleccionada actualmente si se ejecuta CURVAL( ) sin los argumentos opcionales cTableAlias o nWorkArea.

Ejemplo

Este ejemplo crea una tabla libre llamada mytable y se inserta un valor “One” en el campo cDigit. Se activa el almacenamiento optimista de tablas en búfer con SET MULTILOCKS ON y CURSORSETPROP( ).

Después se inserta un valor "Two" en el campo cDigit, y se usan CURVAL( ) y OLDVAL( ) para mostrar los valores originales de cDigit. TABLEUPDATE( ) se utiliza para grabar los cambios a la tabla, y CURVAL( ) y OLDVAL( ) se usan para mostrar los nuevos valores de cDigit. Debido a que se trata de un ejemplo para un solo usuario, CURVAL( ) y OLDVAL( ) devuelven valores idénticos.

CLOSE DATABASES
CLEAR
CREATE TABLE mytable FREE (cDigit C(10))
* Store original value
INSERT INTO mytable (cDigit) VALUES ("One")
SET MULTILOCKS ON        && Allow optimistic table buffering
= CURSORSETPROP("Buffering",5)   && Optimistic table buffering on
REPLACE cDigit WITH "Two"    && New value
? "Current value: " + CURVAL("cDigit", "mytable")
? "Old value: " + OLDVAL("cDigit", "mytable")
= TABLEUPDATE(.T.)       && Commit changes made to table
? "Table changes committed"
? "New current value: " + CURVAL("cDigit", "mytable")
? "New old value: " + OLDVAL("cDigit", "mytable")

Vea también

GETFLDSTATE( ) | OLDVAL( ) | TABLEREVERT( ) | TABLEUPDATE( ) | CURSORSETPROP( )


DATE( ) (Función)

Devuelve la fecha actual del sistema, que está controlada por el sistema operativo, o crea un valor Date compatible con el milenio.

DATE([nYear, nMonth, nDay])

Valores devueltos

Date

Parámetros

nYear
Especifica el año devuelto en el valor Date compatible con el milenio. nYear puede tener un valor entre 100 y 9999.
nMonth
Especifica el mes devuelto en el valor Date compatible con el milenio. nMonth puede tener un valor entre 1 y 12.
nDay
Especifica el día devuelto en el valor Date compatible con el milenio. nDay puede ser un valor entre 1 y 31.

Observaciones

DATE( ) devuelve la actual fecha del sistema si se ejecuta sin argumentos opcionales. Incluya los argumentos opcionales para devolver un valor de fecha compatible con el año 2000 en el formato establecido en la ficha Regional del cuadro de diálogo cuadro de diálogo Opciones. Los parámetros ausentes se sustituyen con el valor actual del sistema.

Ningún comando o función de Microsoft Visual FoxPro puede cambiar directamente la fecha del sistema.

Ejemplo

El ejemplo siguiente muestra la fecha actual del sistema con y sin el siglo, y después, muestra una fecha preparada para el milenio.

CLEAR
SET CENTURY OFF
? DATE( )  && Displays today's date without the century
SET CENTURY ON
? DATE( )  && Displays today's date with the century
? DATE(1998, 02, 16)  && Displays a year 2000-compliant Date value

Vea también

CTOD( ) | DATETIME( ) | DTOC( ) | SET CENTURY | SET DATE | SET MARK TO | SYS( ) - Introducción a las funciones


DATETIME( ) (Función)

Devuelve la fecha y la hora actuales como un valor DateTime o crea un valor DateTime compatible con el milenio.

DATETIME([nYear, nMonth, nDay [, nHours [, nMinutes [, nSeconds]]]])

Valores devueltos

DateTime

Parámetros

nYear
Especifica el año devuelto en un valor DateTime compatible con el milenio. nYear puede tener un valor entre 100 y 9999.
nMonth
Especifica el mes devuelto en un valor DateTime compatible con el milenio. nMonth puede tener un valor entre 1 y 12.
nDay
Especifica el día devuelto en un valor DateTime compatible con el milenio. nDay puede tener un valor entre 1 y 31.
nHours
Especifica las horas devueltas en un valor DateTime compatible con el milenio. nHours puede tener un valor entre 0 (medianoche) y 23 (11 p.m.). Toma el valor predeterminado 0 si se omite.
nMinutes
Especifica los minutos devueltos en un valor DateTime compatible con el milenio. nMinutes puede tener un valor entre 0 y 59. Toma el valor predeterminado 0 si se omite.
nSeconds
Especifica los segundos devueltos en un valor DateTime compatible con el milenio. nSeconds puede tomar un valor entre 0 y 59. Toma el valor predeterminado 0 si se omite.

Observaciones

DATETIME( ) devuelve la fecha actual del sistema si se ejecuta sin ningún argumento opcional. Los parámetros opcionales de fecha ausentes se sustituyen por los valores actuales del sistema. Un parámetro de hora ausente se sustituye por 12:00:00.

Incluya los argumentos opcionales para devolver un valor DateTime compatible con el año 2000 en el formato especificado en la ficha Regional del cuadro de diálogo cuadro de diálogo Opciones.

Ejemplo

Este primer ejemplo almacena el valor DateTime para el Año Nuevo en una variable llamada tNewyear y almacena el valor actual de DateTime en una variable llamada tToday. Se muestra el número de segundos que hay entre el valor actual de DateTime y el Año Nuevo.

El segundo ejemplo usa DATETIME( ) para crear un valor DateTime compatible con el milenio.

tNewyear = DATETIME(YEAR(DATE( ) ) + 1, 1, 1)  && Next New Year
tToday = DATETIME( )
nSecondstonewyear = tNewyear - tToday
CLEAR
? "There are " + ALLTRIM (STR(nSecondstonewyear)) ;
+ " seconds to the next New Year."
CLEAR
SET CENTURY ON
SET DATE TO AMERICAN
? DATETIME(1998, 02, 16, 12, 34, 56) && Displays 02/16/1998 12:34:56 PM

Vea también

CTOT( ) | DATE( ) | DTOT( ) | HOUR( ) | SEC( ) | SECONDS( ) | SET SECONDS | SET SYSFORMATS | TIME( ) | TTOC( ) | TTOD( )


DAY( ) (Función)

Devuelve el número del día del mes correspondiente a una expresión de Date o de DateTime dada.

DAY(dExpression | tExpression)

Valores devueltos

Numérico

Parámetros

dExpression
Especifica una fecha a partir de la cual DAY( ) devuelve un día del mes. dExpression puede ser un literal de fecha, una variable de tipo Date, un elemento de matriz o un campo de fecha.
tExpression
Especifica una fecha u hora a partir de la cual DAY( ) devuelve un día del mes.dExpression puede ser un literal de fecha, una variable de tipo Date, un elemento de matriz o un campo de fecha.

Observaciones

DAY( ) devuelve un número entre 1 y 31.

Ejemplo

STORE {^1998-03-05} TO gdBDate
CLEAR
? CDOW(gdBDate)  && Displays Thursday
? DAY(gdBDate) && Displays 5
? 'That date is ', CMONTH(gdBDate), STR(DAY(gdBDate),2)

Vea también

CDOW( ) | DOW( ) | SET FDOW | SET FWEEK | SYS( ) - Introducción a las funciones


DBC( ) (Función)

Devuelve el nombre y la ruta de acceso de la base de datos actual.

DBC( )

Valores devueltos

Carácter

Observaciones

DBC( ) devuelve la cadena vacía si no hay ninguna base de datos activa.

Utilice SET DATABASE para especificar la base de datos actual.

Ejemplo

El ejemplo siguiente abre la base de datos testdata y utiliza DBC( ) para mostrar información acerca de la base de datos.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')  && Opens the DBC.
CLEAR
? DBC( )  && Displays the path and name of the database

Vea también

ADD TABLE | CLOSE DATABASES | CREATE DATABASE | DISPLAY TABLES | OPEN DATABASE | REMOVE TABLE | SET DATABASE


DBF( ) (Función)

Devuelve el nombre de una tabla abierta en un área de trabajo especificada o a partir de un alias de tabla.

DBF([cTableAlias | nWorkArea])

Valores devueltos

Character

Parámetros

cTableAlias
Especifica el alias de la tabla.
nWorkArea
Especifica el número del área de trabajo.

Si omite cTableAlias y nWorkArea, DBF( ) devolverá el nombre de la tabla abierta en el área de trabajo actual. DBF( ) devolverá una cadena vacía si no hay ninguna tabla abierta en el área de trabajo especificada. Si ninguna tabla contiene el alias especificado con cTableAlias, Visual FoxPro generará un mensaje de error.

Para obtener información acerca de la creación de un alias para una tabla, vea USE.

Observaciones

Cuando SET FULLPATH está establecido en ON, DBF( ) devuelve la ruta de acceso a la tabla y el nombre de la tabla. Cuando SET FULLPATH está establecido en OFF, DBF( ) devuelve la unidad en que reside la tabla y el nombre de la tabla.

Ejemplo

El ejemplo siguiente devuelve el nombre de una tabla a partir de su área de trabajo y su alias, y devuelve la cadena vacía una vez cerradas todas las tablas.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer IN 2 ALIAS mycust
CLEAR
? DBF(2)  && Displays customer.dbf with its path
? DBF('mycust')  && Displays customer.dbf with its path
CLOSE DATABASES
? DBF( )      && Displays the empty string

Vea también

CDX( ) | FIELD( ) | NDX( ) | SET FULLPATH | USE


DBGETPROP( ) (Función)

Devuelve una propiedad para la base de datos actual, o para campos, conexiones con nombre, tablas o vistas de la base de datos actual.

DBGETPROP(cName, cType, cProperty)

Parámetros

cName
Especifica el nombre de la base de datos actualmente abierta o el campo, conexión con nombre o vista de la base de datos actualmente abierta para los cuales DBGETPROP( ) devuelve información.

Para devolver información acerca de un campo de una tabla o una vista, escriba delante del nombre del campo el nombre de la tabla o la vista que contiene el campo. Por ejemplo, para devolver información acerca del campo custid de la tabla customer, especifique lo siguiente para cName:

customer.custid
cType
Especifica si cName es la base de datos actual, o un campo, una conexión con nombre, una tabla o una vista de la base de datos actual. La tabla siguiente indica los valores que se pueden especificar para cType:
cType | Descripción
CONNECTION | cName es una conexión con nombre de la base de datos actual.
DATABASE | cName es la base de datos actual.
FIELD | cName es un campo de la base de datos actual.
TABLE | cName es una tabla de la base de datos actual.
VIEW | cName es una vista de la base de datos actual.
cProperty
Especifica el nombre de la propiedad para la cual DBGETPROP( ) devuelve información.

Las tablas siguientes indican los valores que pueden especificarse para cProperty, los tipos de valores devueltos y las descripciones de cada propiedad. Cada descripción incluye los privilegios de lectura y escritura para cada propiedad. Si una propiedad es de sólo lectura, su valor no podrá cambiarse con DBSETPROP( ). Para obtener información adicional acerca de cómo puede cambiar valores de propiedad, vea DBSETPROP( ).

Propiedades de conexión

cProperty Tipo Descripción
Asynchronous L Modo de conexión. (Valor predeterminado) Falso (.F.) especifica una conexión síncrona. Verdadero (.T.) especifica una conexión asíncrona.
Lectura y escritura.
BatchMode L Modo de procesamiento por lotes. (Valor predeterminado) Verdadero (.T.) especifica que la conexión funciona en modo de lotes.
Lectura y escritura.
Comments C El texto del comentario de conexión.
Lectura y escritura.
ConnectString C La cadena de conexión de inicio de sesión.
Lectura y escritura.
ConnectTimeout N El intervalo de espera de conexión en segundos. El valor predeterminado es 0 (espera indefinidamente).
Lectura y escritura.
Database C El nombre de la base de datos del servidor especificada con la cláusula DATABASE en el comando CREATE CONNECTION o en el Diseñador de conexiones.
Lectura y escritura.
DataSource C El nombre del origen de datos definido en el archivo Odbc.ini.
Lectura y escritura.
DispLogin N Contiene un valor Numérico que determina cuándo se muestra el cuadro de diálogo de inicio de sesión ODBC. DispLogin puede adoptar los valores siguientes:

1 o DB_PROMPTCOMPLETE (de Foxpro.h).1 es el valor predeterminado.

2 o DB_PROMPTALWAYS (de Foxpro.h).

3 o DB_PROMPTNEVER (de Foxpro.h).

Si se especifica 1 o DB_PROMPTCOMPLETE, Microsoft Visual FoxPro sólo muestra el cuadro de diálogo de inicio de sesión ODBC si falta alguna información necesaria.

Si se especifica 2 o DB_PROMPTALWAYS, se mostrará siempre el cuadro de diálogo de inicio de sesión de ODBC, que permite cambiar las opciones antes de conectar.

Si se especifica 3 o DB_PROMPTNEVER, no se mostrará el cuadro de diálogo de inicio de sesión de ODBC y Visual FoxPro generará un error si no está disponible la información de inicio de sesión necesaria.
Lectura y escritura.
DispWarnings L Contiene un valor lógico que determina si se muestran los avisos no interceptables procedentes de la tabla remota, ODBC o Visual FoxPro. (Valor predeterminado) Verdadero (.T.) especifica que se muestren los errores no interceptables.
Lectura y escritura.
IdleTimeout N El intervalo de espera de inactividad en segundos. Las conexiones activas se desactivan después del intervalo de tiempo especificado. El valor predeterminado es 0 (espera indefinidamente).
Lectura y escritura.
PacketSize N El tamaño del paquete de red usado por la conexión. Ajustar este valor puede mejorar el rendimiento. El valor predeterminado es 4096 bytes (4K).
Lectura y escritura
PassWord C La contraseña de conexión.
Lectura y escritura.
QueryTimeout N El intervalo de espera de consulta en segundos. El valor predeterminado es 0 (espera indefinidamente).
Lectura y escritura.
Transactions N Contiene un valor numérico que determina cómo administra la conexión las transacciones en la tabla remota. Las transacciones pueden adoptar los valores siguientes:

1 o DB_TRANSAUTO (de Foxpro.h).1 es el valor predeterminado. El procesamiento de transacciones para la tabla remota se controla automáticamente.

2 o DB_TRANSMANUAL (de Foxpro.h). El proceso de transacciones se controla automáticamente mediante SQLCOMMIT( ) y SQLROLLBACK( ).

Lectura y escritura.
UserId C La identificación del usuario.
Lectura y escritura.
WaitTime N El período de tiempo en milisegundos que transcurre antes de que Visual FoxPro compruebe si se ha terminado de ejecutar la instrucción SQL. El valor predeterminado es 100 milisegundos.
Lectura y escritura.

Propiedades de la base de datos

cProperty | Tipo | Descripción
Comment C El texto del comentario de la base de datos.
Lectura y escritura.
DBCEventFileName | C | Ruta relativa y nombre de archivo de programa externo que contiene código de Eventos DBC.
DBCEvents L Estado de habilitado de Eventos DBS..
Establecer a verdadero (.T.) para habilitrar.
Version N El número de versión de la base de datos.
Sólo lectura.

Propiedades de campo para tablas

cProperty Tipo Descripción
Caption C Si un signo (=) precede al valor de esta propiedad, Visual FoxPro la evalúa como una expresión. De otro modo, se trata como una cadena literal.
Lectura y escritura.
Comment C El texto del comentario del campo.
Lectura y escritura.
DefaultValue C El valor predeterminado del campo.
Sólo lectura.
DisplayClass C Nombre de la clase utilizada para la asignación o mapeo de campos.
Lectura y escritura.
DisplayClassLibrary C Ruta de acceso a la biblioteca de clases especificada con la propiedad DisplayClass.
Lectura y escritura.
Format C El formato de presentación del campo. Vea la propiedad Format para obtener una lista de los valores de formato.
Lectura y escritura.
InputMask C El formato de entrada del campo. Vea la propiedad InputMask para obtener una lista de los valores de máscara de entrada.
Lectura y escritura.
RuleExpression C La expresión de la regla del campo.
Sólo lectura.
RuleText C El texto de error de la regla del campo.
Sólo lectura.

Propiedades de campo para vistas

cProperty Tipo Descripción
Caption C El título del campo.
Lectura y escritura.
Comment C El texto del comentario del campo.
Lectura y escritura.
DataType C El tipo de datos para un campo de una vista. Inicialmente se establece como el tipo de datos para el campo en el origen de datos.

Para especificar otro tipo de datos distinto para un campo con DBSETPROP( ), use la sintaxis para crear campos en CREATE TABLE - SQL.

Por ejemplo, para cambiar el tipo de datos de un campo entero llamado iCost en una tabla llamada Mytable a un tipo numérico con un ancho de 4 y 2 decimales, utilice

DBSETPROP('mytable.icost', 'field', ; 'DataType', 'N(4,2)')

También puede incluir la cláusula NOCPTRANS para impedir la conversión de campos de caracteres y memo a otra página de códigos diferente.

Lectura y escritura para vistas remotas.
DisplayClass C Nombre de la clase utilizada para la equivalencia de campos.
Lectura y escritura.
DisplayClassLibrary C Ruta para la biblioteca de clases especificada con la propiedad DisplayClass.
Lectura y escritura.
DefaultValue C El valor predeterminado del campo.
Lectura y escritura.
KeyField L Contiene verdadero (.T.) si se especifica el campo en una expresión de clave de índice; de lo contrario, contiene falso (.F.).
Lectura y escritura.
RuleExpression C La expresión de la regla del campo.
Lectura y escritura.
RuleText C El texto de error de la regla del campo.
Lectura y escritura.
Updatable L Contiene verdadero (.T.) si el campo puede actualizarse; de lo contrario, contiene falso (.F.).
Lectura y escritura.
UpdateName C El nombre del campo utilizado cuando los datos del campo se actualizan en la tabla remota. De forma predeterminada, el nombre del campo de la tabla remota.
Lectura y escritura.

Propiedades de tabla

cProperty Tipo Descripción
Comment C El texto del comentario de la tabla.
Lectura y escritura.
DeleteTrigger C La expresión del desencadenante Eliminar.
Sólo lectura.
InsertTrigger C La expresión del desencadenante Insertar.
Sólo lectura.
Path C La ruta de acceso a la tabla.
Sólo lectura.
PrimaryKey C El nombre de etiqueta de la clave principal.
Sólo lectura.
RuleExpression C La expresión de la regla de la fila.
Sólo lectura.
RuleText C El texto de error de la regla de la fila.
Sólo lectura.
UpdateTrigger C La expresión del desencadenante Actualizar.
Sólo lectura.

Propiedades de vista

cProperty | Tipo | Descripción
AllowSimultaneousFetch L Se aplica cuanto utiliza vistas remotas, una conexión compartida y para cursores creados usando ODBC.

AllowSimultaneousFetch contiene Verdadero (.T.) cuando cursores configurados del mismo modo, comparten la conexión y permiten leer registros simultáneamente.

De otro modo, AllowSimultaneousFetch contiene Falso (.F.) cuando la lectura simultánea de registros no está permitida.
BatchUpdateCount N El número de instrucciones de actualización enviadas al apoyo para vistas. 1 es el valor predeterminado. Ajustar este valor puede aumentar considerablemente el rendimiento.
Lectura y escritura.
Comment C El texto del comentario de la vista.
Lectura y escritura.
CompareMemo L Contiene verdadero (.T.) (valor predeterminado) si los campos memo (del tipo Memo, General, o Picture) están incluidos en la cláusula WHERE para actualizaciones; de lo contrario, contiene falso (.F.).
Lectura y escritura.
ConnectName C La conexión con nombre empleada cuando la vista está abierta.
Sólo lectura.
FetchAsNeeded L Contiene verdadero (.T.) si los datos se buscan cuando sea necesario, como cuando el puntero de registro se mueve a un registro que no se está buscando.

Si contiene falso (.F.), los datos adicionales se buscan durante el tiempo inactivo.(valor predeterminado).

Nota FetchAsNeeded no se aplica cuando está deshabilitada la lectura progresiva (FetchSize es -1).

Lectura y escritura.

FetchMemo L Contiene verdadero (.T.) (el valor predeterminado) si los campos generales se toman con los resultados de vista; de lo contrario, contiene falso (.F.).
Lectura y escritura.
FetchSize N El número de registros tomados al mismo tiempo de las tablas remotas (cuando están activadas las tomas progresivas). El valor predeterminado es 100 registros. Si se establece FetchSize en –1, se recupera el conjunto completo de resultados limitado por la configuración de MaxRecords.

Nota La lectura progresiva mantiene la conexión hasta que se recuperan todos los registros. Tenga cuidado al codificar con FetchSize si ShareConnection es Verdadero (.T.).

Lectura y escritura.

MaxRecords N El número máximo de filas tomadas cuando se devuelven los conjuntos de resultados. El valor predeterminado es – 1 (se devuelven todas las filas). Un valor de 0 especifica que se ejecuta la vista pero que no se toman resultados.
Lectura y escritura.
Offline | L | Contiene verdadero (.T.) si se trata de una vista fuera de línea. Sólo lectura.
ParameterList C Los parámetros de la cláusula WHERE. El formato para los parámetros es ''ParameterName1, 'Type1'; ParameterName2, 'Type2'; ...'' donde Type es uno de los caracteres siguientes, que especifica el tipo de parámetro:

C - Character
D - Date
T - DateTime
N - Numérico
F - Floating
B - Double
I - Integer
Y - Currency
L - Logical

Por ejemplo, ''MyParam1, 'C' '' especifica un único parámetro de tipo Carácter llamado MyParam1.

Para obtener más información acerca de cómo crear vistas parametrizadas, vea Crear vistas.
Lectura y escritura.
Prepared L Contiene verdadero (.T.) si las instrucciones SQL están preparadas para las llamadas de función REQUERY( ) subsiguientes. REQUERY( ) sirve para recuperar los datos para una vista SQL. Vea SQLPREPARE( ) para obtener información adicional acerca de la preparación de instrucciones SQL.El valor predeterminado es Falso (.F.).
Lectura y escritura.
RuleExpression C La expresión de la regla de la fila.
Lectura y escritura.
RuleText C La expresión del texto de la regla que se muestra cuando se produce un error al modificar datos en una ventana Examinar o Editar.
Lectura y escritura.
SendUpdates L Contiene verdadero (.T.) si se envía una consulta actualizada SQL para actualizar tablas remotas; de lo contrario, contiene falso (.F.) (el valor predeterminado).
Lectura y escritura.
ShareConnection L Contiene verdadero (.T.) si la vista puede compartir su controlador de conexión con otras conexiones; de lo contrario, contiene falso (.F.).
Lectura y escritura.
SourceType N El origen de la vista. SourceType puede adoptar los valores siguientes:

1. La vista utiliza tablas locales.

2. La vista utiliza tablas remotas.
Sólo lectura.
SQL C La instrucción SQL que se ejecuta cuando se abre la vista.
Sólo lectura.
Tablas C Una lista delimitada por comas de los nombres de las tablas.
Lectura y escritura.
UpdateType N El tipo de actualización. Los valores válidos son:

1 o DB_UPDATE (de Foxpro.h). Los datos antiguos se actualizan con los datos nuevos (valor predeterminado).

2 o DB_DELETEINSERT (de Foxpro.h). Los datos antiguos se eliminan y se insertan los nuevos.
Lectura y escritura.
UseMemoSize N El tamaño mínimo (en bytes) para el que se devuelven columnas de resultado en campos memo. Por ejemplo, si el ancho de un resultado de columna es mayor que el valor de UseMemoSize, dicho resultado se almacena en un campo memo. UseMemoSize puede variar de 1 a 255; el valor predeterminado es 255.
Lectura y escritura.
WhereType N La cláusula WHERE empleada para actualizar tablas remotas. WhereType puede asumir los valores siguientes:

1 o DB_KEY (de Foxpro.h). La cláusula WHERE usada para actualizar tablas remotas sólo consta de campos principales especificados con la propiedad KeyFieldList.

2 o DB_KEYANDUPDATABLE (de Foxpro.h). La cláusula WHERE usada para actualizar tablas remotas consta de los campos principales especificados con la propiedad KeyFieldList y cualquier campo actualizable.

3 o DB_KEYANDMODIFIED (de Foxpro.h) (valor predeterminado). La cláusula WHERE empleada para actualizar tablas remotas consta de los campos principales especificados con la propiedad KeyFieldList y cualquier otro campo modificado.

4 o DB_KEYANDTIMESTAMP (de Foxpro.h). La cláusula WHERE usada para actualizar tablas remotas consta de los campos principales especificados con la propiedad KeyFieldList y una comparación de las marcas de hora.

Si desea obtener más información acerca de la propiedad WhereType, vea Crear vistas.

Lectura y escritura.

Valores devueltos

Character, Numérico o Logical. DBGETPROP( ) devuelve el valor para la propiedad especificada.

Observaciones

Es necesario abrir una base de datos para poder obtener sus propiedades o las de sus conexiones, tablas, vistas o campos. No es necesario ejecutar el comando USE para abrir una tabla o vista antes de obtener sus propiedades.

Para obtener más detalles acerca de las propiedades que puede obtener para conexiones, bases de datos, campos, tablas y vistas, consulte los temas que figuran en la siguiente tabla.

Para obtener detalles acerca de | Consulte este tema | En esta sección
Propiedades de la base de datos | Ver y configurar propiedades de bases de datos | Trabajar con tablas
Conexiones | Acceder a datos remotos | Crear vistas
Vistas |  | Crear vistas
Desencadenantes | Uso de desencadenadores | Trabajar con tablas
Títulos | Controlar la presentación de un campo | Trabajar con tablas
Valores predeterminados | Crear valores predeterminados de campo | Trabajar con tablas
 | Crear valores predeterminados para campos de vista | Crear vistas
Comentarios | "Agregar observaciones a los campos" en Elegir tipos de datos | Trabajar con tablas
 | Ver y configurar propiedades de bases de datos | Desarrollar bases de datos
Clave principal | Controlar los valores duplicados | Trabajar con tablas
Reglas | Exigir reglas de empresa | Trabajar con tablas
 | Establecer o modificar reglas de campo o de tabla | Trabajar con tablas
 | Crear reglas en campos y filas de vistas | Crear vistas

Ejemplo

En el siguiente ejemplo se muestra el nombre del campo de la clave principal para la tabla customer. Después se muestran los observaciones para el campo cust_id en la tabla customer. Si no hay ningún comentario para el campo, aparecerá un mensaje que indica que no hay ningún comentario de campo. Para agregar observaciones, vea el ejemplo de DBSETPROP( ).

CLOSE DATABASES
CLEAR
OPEN DATABASE (HOME(2) + 'Data\testdata')
* Displays the primary key field
cResults = DBGETPROP("customer", "Table", "PrimaryKey")
=MESSAGEBOX(cResults)   && Displays    'cust_id'
* Displays comments for the field 'cust_id'
cResults = DBGETPROP("customer.cust_id", "Field", "Comment")
IF LEN(ALLTRIM(cResults)) = 0
=MESSAGEBOX("No Comment for this field." + CHR(13) + ;
CHR (13) + "Use DBSETPROP( ) to add comments.")
ELSE
=MESSAGEBOX("Cust_id field comments: " + cRESULTS)
ENDIF

Vea también

ADD TABLE | CREATE CONNECTION | CREATE DATABASE | CREATE SQL VIEW | CURSORGETPROP( ) | CURSORSETPROP( ) | DBSETPROP( ) | DISPLAY DATABASE | LIST DATABASE | RENAME CONNECTION | SQLCOMMIT( ) | SQLROLLBACK( )


DBSETPROP( ) (Función)

Establece una propiedad para la base de datos actual o para campos, conexiones con nombre, tablas o vistas de la base de datos actual.

DBSETPROP(cName, cType, cProperty, ePropertyValue)

Parámetros

cName
Especifica el nombre de la base de datos actualmente abierta o el campo, conexión con nombre o vista de la base de datos actualmente abierta para los cuales DBGETPROP( ) devuelve información.

Para establecer una propiedad para un campo de una tabla o una vista, escriba el nombre del campo con el nombre de la tabla o la vista que contiene el campo. Por ejemplo, para establecer una propiedad para el campo custid en la tabla customer, especifique la línea siguiente para cName:

customer.custid
cType
Especifica si cName es la base de datos actual o un campo, una conexión con nombre, una tabla o una vista de la base de datos actual.

La tabla siguiente indica los valores que se pueden especificar para cType:

cType | Descripción
CONNECTION | cName es una conexión con nombre de la base de datos actual.
DATABASE | cName es la base de datos actual.
FIELD | cName es un campo de la base de datos actual.
TABLE | cName es una tabla de la base de datos actual.
VIEW | cName es una vista de la base de datos actual.
cProperty
SEspecifica el nombre de la propiedad que se va a establecer. Si una propiedad es de sólo lectura, su valor no podrá cambiarse con DBSETPROP( ). Si intenta establecer una propiedad que es de sólo lectura, Visual FoxPro genera un mensaje de error.

Para obtener información adicional acerca de las propiedades que puede especificar con cProperty, incluidos sus tipos de datos, vea DBGETPROP( ).

ePropertyValue
Especifica el valor en el que se establece cProperty. ePropertyValue debe utilizar el mismo tipo de datos que la propiedad.
Caution FoxPro no comprueba que el valor que especifica es válido para la propiedad. De esta forma, es posible establecer una propiedad como un valor no válido con DBSETPROP( ). Por ejemplo, DBSETPROP( ) puede emplearse para establecer una expresión de regla de campo en una expresión que no es válida para el campo y Visual FoxPro no genera un error. Para evitar errores al establecer la propiedad Tables de una vista, inserte antes de ePropertyValue la designación de la base de datos, con la siguiente sintaxis:
         <databaseName>!ePropertyValue

Valores Devueltos

Tipo de datos Logico. DBSETPROP( ) devuelve Verdadero (.T.) si Visual FoxPro establece correctamente la propiedad especificada.Visual FoxPro genera un error si no puede establecerse la propiedad especificada.

Observaciones

Utilice DBGETPROP( ) (Función) para determinar los valores actuales de la propiedad. Para obtener más detalles acerca de las propiedades que puede obtener para conexiones, bases de datos, campos, tablas y vistas, consulte los temas que figuran en la siguiente tabla.

Para obtener detalles acerca de | Consulte este tema | En esta sección
Propiedades de la base de datos | Ver y configurar propiedades de bases de datos | Desarrollar bases de datos
Conexiones | Acceder a datos remotos | Crear vistas
Vistas |  | Crear vistas
Desencadenadores | Uso de desencadenadores | Trabajar con tablas
Títulos | Controlar la presentación de un campo | Trabajar con tablas
Valores predeterminados | Crear valores predeterminados de campo | Trabajar con tablas
 | Crear valores predeterminados para campos de vista | Crear vistas
Comentarios | "Agregar observaciones a los campos" en Elegir tipos de datos | Trabajar con tablas
 | Ver y configurar propiedades de bases de datos | Desarrollar bases de datos
Clave principal | Controlar los valores duplicados | Trabajar con tablas
Reglas | Exigir reglas de empresa | Trabajar con tablas
 | Establecer o modificar reglas de campo o de tabla | Trabajar con tablas
 | Crear reglas en campos y filas de vistas | Crear vistas

Ejemplo

El ejemplo siguiente utiliza DBSETPROP( ) para especificar un comentario para el campo cust_id de la tabla customer table. DBGETPROP( ) se emplea para mostrar el comentario.

CLOSE DATABASES
CLEAR
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer     && Open customer table
= DBSETPROP("customer.cust_id", "Field", "Comment", ;
"Property has been set by DBSETPROP.")  && Nuevo comentario de campo
cRESULTS = DBGETPROP("customer.cust_id", "Field", "Comment")
WAIT WINDOW "Cust_id field comments: "+ cRESULTS  && Muestra el contenido

Vea también

ADD TABLE | CREATE DATABASE | CURSORGETPROP( ) | CURSORSETPROP( ) | DBGETPROP( ) | DISPLAY DATABASE | LIST DATABASE | OPEN DATABASE | SQLCOMMIT( ) | SQLROLLBACK( )


DBUSED( ) (Función)

Devuelve verdadero (.T.) si esta abierta la base de datos especificada.

DBUSED(cDatabaseName)

Valores devueltos

Lógico

Parámetros

cDatabaseName
Especifica el nombre de la base de datos para la cual DBUSED( ) devuelve un valor lógico que indica si la base de datos esta o no abierta.

Observaciones

DBUSED( ) devuelve Verdadero (.T.) si la base de datos especificada esta abierta; de lo contrario, devuelve Falso (.F.).

Ejemplo

El ejemplo siguiente abre la base de datos TESTDATA, y luego, utiliza DBUSED( ) para determinar si TESTDATA y una base de datos llamada TEST están abiertas.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
CLEAR
? 'Testdata database open? '
?? DBUSED('testdata')     && Displays .T.
? 'Test database open? '
?? DBUSED('test')     && Displays .F.

Vea también

CLOSE DATABASES | CREATE DATABASE | OPEN DATABASE


DDE (Funciones)

Intercambian datos entre Visual FoxPro y otras aplicaciones basadas en Microsoft Windows.

Observaciones

Visual FoxPro puede actuar como servidor o como cliente para enviar y recibir datos desde otras aplicaciones basadas en Microsoft Windows.

Las aplicaciones que admiten DDE (intercambio dinámico de datos) utilizan las siguientes convenciones de nombres.

Nombre | Descripción
Nombre del servicio | Un nombre al que responde el servidor cuando un cliente intenta tener acceso al servidor. Un servidor puede admitir muchos nombres de servicio.
Nombre del tema | Un nombre que especifica un conjunto lógico de datos. Para aplicaciones basadas en archivos, los nombres de tema son normalmente nombres de archivo. En otras aplicaciones, los nombres de tema son específicos de la aplicación. Para tener acceso al servidor, el cliente debe especificar un nombre de tema además del nombre de servicio del servidor.
Nombre de elemento | Un nombre que especifica una unidad de datos que el servidor puede transferir al cliente que pide los datos.

Para pedir datos de otra aplicación, cree un programa de Visual FoxPro que establezca Visual FoxPro como cliente. A continuación se ofrece una breve orientación acerca de la creación de un programa sencillo de Visual FoxPro que pide datos de otra aplicación:

  • Establezca un vínculo con la aplicación de servidor mediante DDEInitiate( ).
  • Si el vínculo se establece con éxito, utilice DDERequest( ) para pedir datos de la aplicación de servidor. DDERequest( ) puede ejecutarse de forma repetitiva para pedir datos adicionales.
  • Una vez recibidos los datos, ejecute DDETerminate( ) para terminar el vínculo con la aplicación de servidor y liberar recursos del sistema.

Las funciones anteriores establecen un vínculo frío. Un vínculo frío se produce cuando el cliente inicia todas las comunicaciones entre las aplicaciones. Para ver una descripción de otros tipos de vínculos, vea DDEAdvise( ).

A continuación se ofrece una breve orientación para un programa que establece Visual FoxPro como servidor:

  • Utilice DDESetService( ) para crear un servicio y especificar el tipo de servicio.
  • Utilice DDESetTopic( ) para crear un tema de servicio y especificar el procedimiento que se ejecutará cuando se especifique el tema en una petición de cliente.
  • Cree el procedimiento especificado en DDESetTopic( ) para aceptar los parámetros transferidos al procedimiento.
  • Dentro del procedimiento, procese la petición, y si corresponde, devuelva los datos pedidos al cliente.

Observe que estas funciones DDE se diferencian de las convenciones de las funciones previas de Visual FoxPro en los aspectos siguientes:

  • Los cuatro primeros caracteres de estas funciones no son únicos.
  • Los nombres de función exceden de diez caracteres y no pueden abreviarse.
    Función DDE | Descripción
    DDEAbortTrans( ) | Termina una transacción DDE asíncrona.
    DDEAdvise( ) | Crea un vínculo de notificación o un vínculo automático utilizado en DDE.
    DDEEnabled( ) | Activa o desactiva el proceso DDE o devuelve el estado del proceso DDE.
    DDEExecute( ) | Mediante DDE, envía un comando a otra aplicación.
    DDEInitiate( ) | Establece un canal DDE entre Visual FoxPro y otras aplicaciones basadas en Microsoft Windows.
    DDELastError( ) | Devuelve un número de error para la última función DDE.
    DDEPoke( ) | Envía datos entre las aplicaciones cliente y servidor en una conversación DDE.
    DDERequest( ) | Pide datos a la aplicación de servidor en una conversación dinámica DDE.
    DDESetOption( ) | Cambia o devuelve la configuración DDE.
    DDESetService( ) | Crea, libera o modifica los nombres de servicio y la configuración de Visual FoxPro.
    DDESetTopic( ) | En una conversación DDE, crea o libera un nombre de tema de un nombre de servicio.
    DDETerminate( ) | Cierra un canal DDE establecido mediante DDEInitiate( ).

Vea también

DDEAbortTrans( ) | DDEAdvise( ) | DDEEnabled( ) | DDEExecute( ) | DDEInitiate( ) | DDELastError( ) | DDEPoke( ) | DDERequest( ) | DDESetOption( ) | DDESetService( ) | DDESetTopic( ) | DDETerminate( )


DDEAbortTrans( ) (Función)

Termina una transacción asíncrona de intercambio dinámico de datos (DDE).

DDEAbortTrans(nTransactionNumber)

Valores devueltos

Lógico

Parámetros

nTransactionNumber
Especifica el número de transacción devuelto por DDEExecute( ), DDEPoke( ) o DDERequest( ) al enviar la transacción a la aplicación de servidor.

Observaciones

Una transacción asíncrona permite que la ejecución del programa de Visual FoxPro continúe sin esperar a que la aplicación de servidor responda a una petición de datos.

DDEExecute( ), DDEPoke( ) y DDERequest( ) esperan durante el período especificado por DDESetOption( ) para que una aplicación de servidor responda, a menos que especifique una función definida por el usuario (FDU) que se ejecutará cuando responda la aplicación de servidor. Al especificar una FDU que se ejecutará en estas funciones se crea una transacción asíncrona.

Si se llama a DDEAbortTrans( ) antes de que el servidor haya procesado la petición, no se llamará a la FDU para la transacción.

DDEAbortTrans( ) devolverá Verdadero (.T.) si la transacción asíncrona terminó correctamente y devolverá Falso (.F.) si la transacción asíncrona no pudo terminarse. Utilice DDELastError( ) para determinar porque no ha podido terminarse la transacción.

Vea también

DDEExecute( ) | DDELastError( ) | DDEPoke( ) | DDERequest( )


DDEAdvise( ) (Función)

Crea un vínculo de notificación o un vínculo automático que se utiliza en el intercambio dinámico de datos (DDE).

DDEAdvise(nChannelNumber, cItemName, cUDFName, nLinkType)

Valores devueltos

Lógico

Parámetros

nChannelNumber
Especifica el número de canal.
cItemName
Especifica el nombre del elemento. Por ejemplo, Microsoft Excel utiliza la notación de fila y columna para hacer referencia a las celdas de una hoja de cálculo. El nombre de elemento R1C1 designa la celda de la primera fila y la primera columna de la hoja de cálculo.
cUDFName
Especifica la función definida por el usuario (FDU) que se ejecuta cuando se establece un vínculo de notificación o un vínculo automático, y se modifica el elemento cItemName. Cuando se ejecuta la FDU, se transfieren los seis parámetros siguientes, en el orden que se indica a continuación:
Parámetro | Contenido
Channel Number | Número de canal de la aplicación de servidor.
Action | ADVISE o TERMINATE.
Item | Nombre del elemento; por ejemplo, R1C1 para una celda de una hoja de cálculo de Microsoft Excel.
Data | Nuevos datos (vínculo automático) o la cadena vacía (vínculo de notificación).
Format | Formato de datos; por ejemplo, CF_TEXT.
Advise Status | Tipo de vínculo (0 = manual, 1 = notificación, 2 = automático).

La FDU debería tener seis parámetros en su instrucción LPARAMETER o PARAMETER para aceptar los valores transferidos desde la aplicación de servidor. Si se establece un vínculo de notificación, se ejecutará la FDU y se transferirá la cadena vacía en el parámetro Data. Puede ejecutar DDERequest( ) posteriormente para recuperar los datos. Si se establece un vínculo automático, la FDU se ejecutará y los datos se transferirán en el parámetro Data.

El parámetro Action contiene ADVISE cuando el servidor está actualizando el vínculo. Se llama a la FDU y el parámetro Action contendrá TERMINATE cuando el cliente o el servidor cierre el vínculo.

Se pasa por alto cualquier valor devuelto por la FDU.

nLinkType
Especifica el tipo de vínculo de la forma siguiente:
nLinkType | Tipo de vínculo
0 | Manual
1 | Notificación
2 | Automático

Puede desactivar la notificación desde la aplicación de servidor al especificar 0 en nLinkType. Si cambia el elemento, la FDU no se ejecutará.

Observaciones

DDEAdvise( ) se utiliza para crear un vínculo de notificación o un vínculo automático con un nombre de elemento en una aplicación de servidor. Cuando se crea un vínculo de notificación con DDEAdvise( ), la aplicación de servidor notifica a Visual FoxPro la modificación del nombre del elemento. Si se crea un vínculo automático, la aplicación de servidor notifica a Visual FoxPro la modificación del nombre del elemento y pasa los nuevos datos a Visual FoxPro.

Antes de que pueda crear un vínculo, debe establecer un canal con la aplicación de servidor mediante DDEInitiate( ).

También puede utilizar DDEAdvise( ) para desactivar la notificación desde el servidor.

DDEAdvise( ) devuelve el valor verdadero (.T.) si se ejecuta correctamente; de lo contrario, devuelve falso (.F.).

Ejemplo

El ejemplo siguiente muestra cómo puede establecer un canal DDE con una hoja de cálculo de Microsoft Excel llamada Sheet1. Se utiliza DDEAdvise( ) para establecer dos vínculos con datos de dos celdas (R1C1 y R1C2) de la hoja de cálculo. La función definida por el usuario NEWDATA se ejecuta cuando cambian los datos de una de estas celdas. Esta función comprueba los parámetros item y advise para determinar qué elemento cambió y qué tipo de vínculo se ha establecido.

PUBLIC mchannum
mchannum = DDEInitiate('Excel', 'Sheet1')
IF mchannum != -1
= DDEAdvise(mchannum, 'R1C1', 'newdata', 1)     && Notify link
= DDEAdvise(mchannum, 'R1C2', 'newdata', 2)     && Automatic link
WAIT WINDOW 'Enter data in first two cells in Excel.'
ENDIF
PROCEDURE newdata
PARAMETERS channel, action, item, data, format, advise
IF action = 'ADVISE'
DO CASE
CASE item = 'R1C1'   && Notify link
newvalue = DDERequest(channel, item)
? 'R1C1 notify link: ' + newvalue
CASE item = 'R1C2'   && Automatic link
newvalue = data
? 'R1C2 automatic link: ' + newvalue
ENDCASE
ELSE
IF action != "TERMINATE"
= DDETerminate(mchannum)
ENDIF
ENDIF

Vea también

DDEInitiate( ) | DDELastError( ) | DDESetOption( ) | DDETerminate( )


DDEEnabled( ) (Función)

Activa o desactiva el proceso de intercambio dinámico de datos (DDE) o devuelve el estado del proceso DDE.

DDEEnabled([lExpression1 | nChannelNumber [, lExpression2]])

Valores devueltos

Lógico

Parámetros

lExpression1
Especifique verdadero (.T.) o falso (.F.) para activar o desactivar globalmente el proceso DDE. Si el proceso DDE se activa o desactiva correctamente, DDEEnabled( ) devolverá verdadero (.T.); de lo contrario devolverá falso (.F.).
nChannelNumber
Especifica el número del canal cuyo estado de proceso DDE devuelve DDEEnabled( ). DDEEnabled( ) devuelve verdadero (.T.) si el proceso DDE está activado para el canal especificado y devuelve falso (.F.) si el proceso DDE está desactivado.
lExpression2
Para activar el proceso DDE para un canal específico, incluya el número de canal (nChannelNumber) y especifique verdadero (.T.) en lExpression2. Para desactivar el proceso DDE de un canal específico, incluya el número de canal (nChannelNumber) y especifique falso (.F.) en lExpression2.

Observaciones

Mediante DDEEnabled( ), puede activar o desactivar el proceso de forma global. También puede activar o desactivar el proceso DDE para canales específicos.

DDEEnabled( ) puede utilizarse para proteger código esencial o desactivar vínculos durante breves períodos de tiempo. Cuando el proceso DDE está desactivado, las peticiones del cliente se pondrán en cola hasta que se active el proceso DDE.

Si se ejecuta DDEEnabled( ) sin ninguno de sus argumentos opcionales, se devolverá el estado global del proceso DDE. Si el proceso DDE se ha activado globalmente, DDEEnabled( ) devolverá verdadero (.T.); de lo contrario, devolverá falso (.F.).

Vea también

DDEAbortTrans( ) | DDEAdvise( ) | DDEExecute( ) | DDEInitiate( ) | DDELastError( ) | DDEPoke( ) | DDERequest( ) | DDESetOption( ) | DDESetService( ) | DDESetTopic( ) | DDETerminate( )


DDEExecute( ) (Función)

Mediante el intercambio dinámico de datos (DDE), puede enviar un comando a otra aplicación.

DDEExecute(nChannelNumber, cCommand [, cUDFName])

Valores devueltos

Lógico

Parámetros

nChannelNumber
Especifica el número de canal.
cCommand
Especifica el comando que desea enviar a la otra aplicación. El formato del comando está determinado por la aplicación a la que lo está enviando. Consulte la sintaxis correcta en la documentación de la aplicación.
cUDFName
Permite solicitudes de ejecución asíncrona de comandos. Si omite cUDFName, la aplicación cliente esperará durante el tiempo especificado en DDESetOption( ). Si especifica una FDU mediante cUDFName, la ejecución del programa cliente continuará inmediatamente después de que se haga la petición de ejecución del comando.

Cuando la aplicación de servidor termine la ejecución del comando, se ejecutará la FDU especificada mediante cUDFName. Se transfieren a la FDU seis parámetros en el orden mostrado en la tabla siguiente.

Parámetro | Contenido
Channel Number | Número de canal de la aplicación de servidor.
Action | XACTCOMPLETE (ejecución correcta).XACTFAIL (ejecución del comando incorrecta).
Item | Nombre del elemento; por ejemplo, R1C1 para una celda de una hoja de cálculo de Microsoft Excel.
Data | Los nuevos datos (REQUEST) o los datos transferidos (POKE o EXECUTED).
Format | Formato de datos; por ejemplo, CF_TEXT.
Transaction Number | El número de transacción devuelto por DDEExecute( ).

Utilice DDEAbortTrans( ) para cancelar una transacción incompleta. Si la transacción falla, podrá utilizar DDELastError( ) para determinar por que ha fallado.

Cuando incluya cUDFName, DDEExecute( ) no devolverá un valor lógico. En su lugar, se devolverá un número de transacción; si se produce un error, se devolverá –1.

Observaciones

El comando enviado con DDEExecute( ) debe ser comprensible para la aplicación. Antes de que pueda ejecutar el comando, debe establecer un canal con la aplicación de servidor mediante DDEInitiate( ).

Por ejemplo, Microsoft Excel tiene un juego completo de comandos de macro, incluidos los comandos DDE que permiten pedir datos de Visual FoxPro desde Microsoft Excel. Si establece un canal con Microsoft Excel, podrá utilizar DDEExecute( ) para enviar comandos de macro a Microsoft Excel desde Visual FoxPro.

Si la aplicación receptora logra ejecutar el comando, DDEExecute( ) devolverá verdadero (.T.). Si la aplicación receptora no logra ejecutar el comando o si el número de canal que incluye no es válido, DDEExecute( ) devolverá falso (.F.). Si se incluye la FDU asíncrona opcional cUDFName, se devolverá un número de transacción. Si se produce un error, DDEExecute( ) devolverá –1.

Ejemplo

El ejemplo siguiente utiliza DDEInitiate( ) para establecer un canal DDE entre Visual FoxPro y la hoja de cálculo Sheet1 de Microsoft Excel. DDEExecute( ) se utiliza para ejecutar un comando de Microsoft Excel que maximiza la ventana de Microsoft Excel.

gnChanNum = DDEInitiate('Excel', 'Sheet1')
IF gnChanNum != -1
glExecute = DDEExecute(gnChanNum, '[App.Maximize]')
IF glExecute != .F.
WAIT WINDOW 'EXCEL window has been zoomed out.'
ENDIF
= DDETerminate(gnChanNum)   && Cierra el canal
ENDIF

Vea también

DDEAbortTrans( ) | DDEInitiate( ) | DDELastError( ) | DDESetOption( ) | DDETerminate( )


DDEInitiate( ) (Función)

Establece un canal de intercambio dinámico de datos (DDE) entre Visual FoxPro y otra aplicación basada en Microsoft Windows.

DDEInitiate(cServiceName, cTopicName)

Valores devueltos

Numérico

Parámetros

cServiceName
Especifica el nombre de servicio de la aplicación de servidor, que en la mayoría de los casos, es el nombre del archivo ejecutable sin su extensión. El nombre de servicio predeterminado para Visual FoxPro es Visual FoxPro. Si va a establecer un canal con Microsoft Excel, cServiceName será Excel.
cTopicName
Especifica el nombre de tema. El tema es específico de la aplicación y debe ser comprensible para la aplicación. Por ejemplo, un tema suministrado por la mayoría de servidores DDE es el tema System. Consulte en la documentación de la aplicación los nombres de servicio y de tema proporcionados por la aplicación.

Observaciones

DDEInitiate( ) establece un canal DDE entre Visual FoxPro y la aplicación de servidor DDE. Una vez que el canal se ha establecido, Visual FoxPro puede pedir datos del servidor al hacer referencia al canal en las funciones DDE subsiguientes. Visual FoxPro actúa como el cliente, ya que pide datos de la aplicación de servidor a través del canal.

Si logra establecerse el canal, DDEInitiate( ) devolverá el número de canal. Los canales tienen números positivos y el número de canales que puede establecer está limitado únicamente por los recursos del sistema.

DDEInitiate( ) devolverá –1 si no puede establecerse el canal. Si la aplicación de servidor no está abierta, Visual FoxPro le preguntará si desea abrirla. Si elige “Sí”, Visual FoxPro intentará abrir la aplicación. (Puede utilizar DDELastError( ) para determinar por qué no puede establecerse un canal.)

Para evitar que se le pregunte si desea abrir la aplicación, establezca la opción SAFETY de DDESetOption( ). También puede utilizar RUN con la opción /N para iniciar la aplicación.

Un canal puede cerrarse mediante DDETerminate( ).

Ejemplo

El ejemplo siguiente usa DDEInitiate( ) para establecer un canal DDE entre Visual FoxPro y una hoja de cálculo de Microsoft Excel llamada Sheet1. 'Excel' es el nombre de servicio y 'Sheet1' es el nombre de tema. El número de canal se almacena en la variable de memoria mchannum para su uso en posteriores funciones DDE.

mchannum = DDEInitiate('Excel', 'Sheet1')
IF mchannum != -1
* Process client actions
= DDETerminate(mchannum)  && Close the channel
ENDIF

Vea también

DDEAdvise( ) | DDEEnabled( ) | DDEExecute( ) | DDELastError( ) | DDEPoke( ) | DDERequest( ) | DDESetOption( ) | DDETerminate( ) | RUN | !


DDELastError( ) (Función)

Devuelve el número de error de la última función de intercambio dinámico de datos (DDE).

DDELastError( )

Valores devueltos

Numérico

Observaciones

Puede utilizar DDELastError( ) para ayudar a determinar la causa de un error cuando una función DDE no se ejecuta satisfactoriamente.

DDELastError( ) devolverá 0 si la última función DDE se ejecuta correctamente. Devolverá un valor distinto de cero si la última función DDE fracasa. La tabla siguiente muestra los números de errores y sus descripciones.

Número de error | Descripción
1 | Servicio ocupado
2 | Tema ocupado
3 | Canal ocupado
4 | No hay tal servicio
5 | No hay tal tema
6 | Canal defectuoso
7 | Memoria insuficiente
8 | Tiempo de espera de acuse de recibo
9 | Tiempo de espera de petición
10 | No DDEInitiate( )
11 | El cliente intentó una transacción del servidor
12 | Tiempo de espera de ejecución
13 | Parámetro erróneo
14 | Poca memoria
15 | Error de memoria
16 | Error en la conexión
17 | Error en la petición
18 | Tiempo de espera de escritura en memoria
19 | No puede mostrar el mensaje
20 | Transacciones sincrónicas múltiples
21 | Servidor inactivo
22 | Error interno DDE
23 | Tiempo de espera de aviso
24 | Identificador de transacción no válido
25 | Desconocido

Vea también

DDEAbortTrans( ) | DDEAdvise( ) | DDEEnabled( ) | DDEExecute( ) | DDEInitiate( ) | DDEPoke( ) | DDERequest( ) | DDESetOption( ) | DDESetService( ) | DDESetTopic( ) | DDETerminate( )


DDEPoke( ) (Función)

Envía datos entre las aplicaciones cliente y servidor en una conversación de intercambio dinámico de datos (DDE).

DDEPoke(nChannelNumber, cItemName, cDataSent
[, cDataFormat [, cUDFName]])

Valores devueltos

Lógico

Parámetros

nChannelNumber
Especifica el número de canal de la aplicación a la que se enviarán los datos. Si el número de canal es un canal servidor, DDEPoke( ) enviará los datos como respuesta a una petición de un vínculo de notificación o automático establecido previamente.
cItemName
Especifica el nombre de elemento al que se enviarán los datos. El nombre de elemento es específico de la aplicación y debe ser comprensible para la aplicación. Por ejemplo, Microsoft Excel admite R1C1 como nombre de elemento válido que hace referencia a la primera celda de una hoja de cálculo.
cDataSent
Especifica los datos enviados al nombre de elemento especificado con cItemName.
cDataFormat
Especifica el formato utilizado para enviar los datos. El formato predeterminado es CF_TEXT. En este formato, los campos se delimitan mediante tabulaciones y los registros se delimitan mediante un retorno de carro y un avance de línea.
cUDFName
Permite la transferencia asíncrona de datos. Si se omite cUDFName, el cliente esperará el período especificado mediante DDESetOption( ). Si especifica el nombre de una FDU mediante cUDFName, la ejecución del programa cliente continuará inmediatamente después de que se haga la petición.

Cuando los datos están disponibles en la aplicación de servidor, la FDU especificada mediante cUDFName se ejecuta. Se transfieren a la FDU seis parámetros en este orden:

Parámetro | Contenido
Channel Number | Número de canal de la aplicación de servidor.
Action | XACTCOMPLETE (transacción correcta).XACTFAIL (transacción incorrecta).
Item | Nombre del elemento; por ejemplo, R1C1 para una celda de una hoja de cálculo de Microsoft Excel.
Data | Los nuevos datos (REQUEST) o los datos transferidos (POKE o EXECUTED).
Format | Formato de datos; por ejemplo, CF_TEXT.
Transaction Number | El número de transacción devuelto por DDEPoke( ).

Utilice DDEAbortTrans( ) para cancelar una transacción incompleta. Si la transacción falla, podrá utilizar DDELastError( ) para determinar por qué ha fallado.

Cuando incluya cUDFName, DDEPoke( ) devolverá un número de transacción si lo logra o –1 si se produce un error.

Observaciones

DDEPoke( ) envía datos como una cadena de caracteres al nombre del elemento en la aplicación especificada por el número de canal.

Si logran enviarse los datos, DDEPoke( ) devolverá verdadero (.T.). Si no pueden enviarse los datos DDEPoke( ) devolverá falso (.F.). Si se incluye la FDU asíncrona cUDFName, DDEPoke( ) devolverá un número de transacción; si se produce un error, devolverá –1.

Vea también

DDEAbortTrans( ) | DDEInitiate( ) | DDELastError( ) | DDESetOption( ) | DDETerminate( )


DDERequest( ) (Función)

Pide datos desde una aplicación de servidor en una conversación de intercambio dinámico de datos (DDE).

DDERequest(nChannelNumber, cItemName [, cDataFormat [, cUDFName]])

Valores devueltos

Carácter

Parámetros

nChannelNumber
Especifica el número de canal de la aplicación de servidor.
cItemName
Especifica el nombre del elemento. El nombre de elemento es específico de la aplicación y debe ser comprensible para la aplicación. Por ejemplo, Microsoft Excel utiliza la notación de fila y columna para hacer referencia a las celdas de una hoja de cálculo. El nombre de elemento R1C1 designa la celda de la primera fila y la primera columna de la hoja de cálculo.
cDataFormat
Especifica un formato para los datos pedidos. El formato predeterminado es CF_TEXT. En este formato, los campos están delimitados con tabulaciones y los registros están delimitados con un retorno de carro y un avance de línea.
cUDFName
Permite la transferencia asíncrona de datos. Si omite cUDFName, Visual FoxPro esperará datos del servidor durante el período especificado mediante DDESetOption( ). Si especifica el nombre de una FDU mediante cUDFName, Visual FoxPro continuará la ejecución del programa cliente inmediatamente después de que se haga la petición.

Cuando los datos están disponibles en la aplicación de servidor, la FDU especificada mediante cUDFName se ejecuta. Se transfieren a la FDU seis parámetros en este orden:

Parámetro | Contenido
Channel Number | Número de canal de la aplicación de servidor.
Action | XACTCOMPLETE (transacción correcta).XACTFAIL (transacción incorrecta).
Item | Nombre del elemento; por ejemplo, R1C1 para una celda de una hoja de cálculo de Microsoft Excel.
Data | Los nuevos datos (REQUEST) o los datos transferidos (POKE o EXECUTED).
Format | Formato de datos; por ejemplo, CF_TEXT.
Transaction Number | El número de transacción devuelto por DDERequest( ).

Utilice DDEAbortTrans( ) para cancelar una transacción incompleta. Si la transacción falla, podrá utilizar DDELastError( ) para determinar por qué ha fallado.

Cuando incluya cUDFName, DDERequest( ) devolverá un número de transacción igual o mayor que 0 si se logra o –1 si se produce un error.

Observaciones

Antes de que pueda pedir datos mediante DDERequest( ), debe establecer un canal con la aplicación de servidor mediante DDEInitiate( ).

Si la petición de datos tiene éxito, DDERequest( ) devolverá los datos en una cadena de caracteres. Si la petición falla, DDERequest( ) devolverá una cadena vacía y DDELastError( ) devolverá un valor distinto de cero. Si incluye la FDU asíncrona cUDFName, DDERequest( ) devolverá un número de transacción si tiene éxito o –1 si se produce un error.

Ejemplo

El ejemplo siguiente usa DDEInitiate( ) para establecer un canal DDE entre Visual FoxPro y una hoja de cálculo de Microsoft Excel llamada Sheet1. 'Excel' es el nombre de servicio y 'Sheet1' es el nombre de tema. El número de canal se almacena en la variable de memoria mchannum para su uso en posteriores funciones DDE.

DDERequest( ) solicita el nombre de elemento R1C1, los datos de la primera fila y columna de la hoja de cálculo Sheet1.

mchannum = DDEInitiate('Excel', 'Sheet1')
IF mchannum != -1
mrequest = DDERequest(mchannum, 'R1C1')
IF !EMPTY(mrequest) AND DDELastError( ) = 0      && Successful
WAIT WINDOW 'R1C1 contents: ' + mrequest
ENDIF
= DDETerminate(mchannum)            && Close the channel
ENDIF

Vea también

DDEAbortTrans( ) | DDEInitiate( ) | DDELastError( ) | DDESetOption( ) | DDETerminate( )


DDESetOption( ) (Función)

Cambia o devuelve la configuración de intercambio dinámico de datos (DDE).

DDESetOption(cOption [, nTimeoutValue | lExpression])

Valores devueltos

Lógico o Numérico

Parámetros

cOption
Especifica las opciones de configuración.
cOption | Valor | Valor predeterminado | Descripción
TIMEOUT | nTimeoutValue (número de milisegundos) | 2000 | El número de milisegundos que esperan las funciones DDE a que responda la aplicación de servidor; devuelve el actual valor de TIMEOUT si se omite nTimeoutValue.
SAFETY | lExpression(verdadero (.T.) o falso (.F.)) | .T. | Especifica si se mostrará un cuadro de diálogo cuando utilice DDEInitiate( ) para establecer un canal con una aplicación de servidor y la aplicación no responda; devuelve la configuración actual de SAFETY si se omite lExpression.
nTimeoutValue
Especifica el valor de tiempo de espera.
lExpression
Activa o desactiva la presentación del cuadro de diálogo.

Observaciones

Utilice DDESetOption( ) para cambiar o devolver la configuración de DDE. Dispone de dos opciones: TIMEOUT y SAFETY.

Vea también

DDEAdvise( ) | DDEEnabled( ) | DDEExecute( ) | DDEInitiate( ) | DDEPoke( ) | DDERequest( ) | DDESetService( ) | DDETerminate( )


DDESetService( ) (Función)

Crea, libera o modifica nombres de servicio y configuraciones de DDE.

DDESetService(cServiceName, cOption [, cDataFormat | lExpression])

Valores devueltos

Lógico

Parámetros

cServiceName
Especifica el nombre de servicio que desea crear, liberar o modificar, o del que hay que devolver información.
cOption
Para crear, liberar o modificar un nombre de servicio o para devolver información acerca de un nombre de servicio. La tabla siguiente muestra las opciones que puede especificar con cOption, los valores predeterminados de las opciones y una descripción de cada opción.
Opción | Valor predeterminado | Descripción
DEFINE – Crea un nuevo nombre de servicio.
RELEASE – Libera un nombre de servicio existente.
ADVISE | .F. | Activa o desactiva la notificación al cliente de cambios en los nombres de elementos.
EXECUTE | .F. | Activa o desactiva la ejecución de comandos.
POKE | .F. | Activa o desactiva las consultas del cliente al servicio.
REQUEST | .T. | Activa o desactiva las peticiones al nombre de servicio.
FORMATS | CF_TEXT | Especifica los formatos de datos válidos.
DEFINE
Crea un nuevo nombre de servicio. Por ejemplo, el comando siguiente crea el nombre de servicio myservice:
glNewService = DDESetService('myservice', 'DEFINE')
RELEASE
Libera un nombre de servicio existente para liberar recursos del sistema. Cuando se libera un nombre de servicio, también se liberan todos los nombres de tema del servicio.

El comando siguiente libera el nombre de servicio creado en el ejemplo anterior:

glRelease = DDESetService('myservice', 'RELEASE')

Para liberar el servicio predeterminado de Visual FoxPro, ejecute este comando:

glRelFox = DDESetService('FoxPro', 'RELEASE')
ADVISE
Especifica si un cliente recibe una notificación cuando cambian los datos de un nombre de elemento o especifica la devolución del estado de notificación actual para un nombre de servicio. Consulte DDEAdvise( ) para ver información adicional acerca del envío de notificaciones a los clientes.

Para permitir la notificación al cliente, especifique verdadero (.T.) para lExpression. Si especifica falso (.F.), lExpression desactivará la notificación al cliente.

Para devolver el estado de notificación del cliente actual para el nombre de servicio, omita lExpression. DDESetService( ) devolverá verdadero (.T.) si está activada la notificación al cliente para el nombre de servicio; devolverá falso (.F.) si está desactivada la notificación al cliente.

EXECUTE
Permite activar o desactivar las peticiones de ejecución de comandos a un nombre de servicio o determinar el estado de ejecución actual para un nombre de servicio.

Para permitir que las peticiones de cliente ejecuten un comando, especifique verdadero (.T.) para lExpression. Si especifica falso (.F.) para lExpression se desactivarán las peticiones de cliente para que se ejecute un comando. .F. es el valor predeterminado.

Para devolver el estado actual de ejecución de comandos para el nombre de servicio, omita lExpression. DDESetService( ) devolverá verdadero (.T.) si están activadas las peticiones de ejecución de comandos del cliente para el nombre de servicio; de lo contrario, devolverá falso (.F.).

Los comandos siguientes activan las peticiones de ejecución de comandos y desactivan las peticiones de datos de las aplicaciones cliente para el nombre de servicio myservice. Después se muestra el estado actual de ejecución de comandos para myservice:

glExecute = DDESetService('myservice', 'EXECUTE', .T.)
glRequest = DDESetService('myservice', 'REQUEST', .F.)
? DDESetService('myservice', 'EXECUTE')
POKE
Permite activar o desactivar las peticiones de escritura en el nombre de servicio. También puede determinar el estado actual de escritura para un nombre de servicio. Consulte DDEPoke( ) para obtener información adicional acerca de la función de escritura en los datos de un servidor o de un cliente.

Para activar las peticiones de escritura de un cliente, especifique verdadero (.T.) para lExpression. Si especifica falso (.F.) para lExpression, se desactivarán las peticiones de escritura del cliente. .F. es el valor predeterminado.

Para devolver el estado de escritura actual del nombre de servicio, omita lExpression. DDESetService( ) devolverá verdadero (.T.) si las peticiones de escritura están activadas para un nombre de servicio; devolverá falso (.F.) si las peticiones de escritura están desactivadas.

REQUEST
Utilice REQUEST para activar o desactivar las peticiones del cliente para un nombre de servicio o para devolver el estado actual de petición del nombre de servicio.

Para activar las peticiones del cliente al nombre de servicio, especifique verdadero (.T.) para lExpression. Si especifica falso (.F.), se desactivarán las peticiones del cliente al nombre del servicio. El valor predeterminado es verdadero .T.

Para devolver el estado actual de petición de un nombre de servicio, omita lExpression. DDESetService( ) devolverá verdadero (.T.) si están activadas las peticiones del cliente para el nombre de servicio; devolverá falso (.F.) si las peticiones de cliente están desactivadas.

Los comandos siguientes desactivan las peticiones de las aplicaciones cliente al nombre de servicio myservice y muestran el estado actual de petición para myservice:

glRequest = DDESetService('myservice', 'REQUEST', .F.)
? DDESetService('myservice', 'REQUEST')
FORMATS [cDataFormat]
Especifica los formatos de datos que admite el nombre del servicio. Las peticiones que realice el servidor para formatos no especificados con cDataFormat se rechazarán. Al especificar formatos de datos, incluya una lista de los formatos admitidos separados por comas. Por ejemplo:
=DDESetService('myservice', 'FORMATS', 'CF_TEXT, CF_SYLK')

Si omite cDataFormat, únicamente se admitirá el formato CF_TEXT.

lExpression
Especifica el estado de las opciones REQUEST, EXECUTE, POKE, o ADVISE. Especifique verdadero (.T.) para lExpression si desea activar la opción o falso (.F.) si desea desactivarla.>

Observaciones

Visual FoxPro puede actuar como servidor de intercambio dinámico de datos (DDE) para enviar datos a aplicaciones cliente basadas en Microsoft Windows. DDESetService( ) se utiliza para crear, liberar o modificar nombres de servicio y configuraciones de Visual FoxPro. Cada nombre de servicio puede tener una serie de nombres de tema creados mediante DDESetTopic( ). Las aplicaciones cliente piden datos de los nombres de tema DDE.

DDESetService( ) devuelve verdadero (.T.) si el nombre de servicio logra crearse, liberarse o modificarse. Si el nombre de servicio no se puede crear, liberar o modificar DDESetService( ) devolverá falso (.F.).

DDESetService( ) puede utilizarse también para devolver información acerca de un nombre de servicio. Visual FoxPro tiene el nombre de servicio predeterminado Visual FoxPro. El nombre de servicio Visual FoxPro tiene un nombre de tema llamado System. La tabla siguiente muestra todos los nombres de elemento que admite el tema System.

Nombre de elemento | Elemento
Topics | Lista de los nombres de temas disponibles
Formats | Lista de formatos admitidos
Status | Busy (ocupado) o Ready (preparado)
SysItems | Lista de nombres de elementos

Puede utilizar DDESetTopic( ) para modificar el nombre de servicio Visual FoxPro o para liberarlo. Para obtener información acerca de la manipulación de nombres de servicio Visual FoxPro, vea las opciones de DDESetTopic( ).

Vea también

DDEEnabled( ) | DDELastError( ) | DDEPoke( ) | DDESetTopic( )


DDESetTopic( ) (Función)

En una conversación de intercambio dinámico de datos (DDE), crea o libera un nombre de tema de un nombre de servicio.

DDESetTopic(cServiceName, cTopicName [, cUDFName])

Valores devueltos

Lógico

Parámetros

cServiceName
Especifica el nombre de servicio. Pueden crearse nombres de servicio adicionales mediante DDESetService( ).
cTopicName
Especifica el nombre de tema que se va a crear o liberar. Si incluye cUDFName, DDESetTopic( ) creará el nombre de tema cTopicName. Si omite cUDFName, se liberará el nombre de tema cTopicName. Si cTopicName es una cadena vacía, la FDU especificada con cUDFName se ejecutará para cualquier nombre de tema que no se declare explícitamente.
cUDFName
Especifica el nombre de la función definida por el usuario que se ejecutará cuando una aplicación cliente realice una petición al nombre del tema. Si omite cUDFName, el nombre de tema cTopicName se liberará del nombre de servicio.

Cuando se ejecuta la FDU, se transfieren los seis parámetros siguientes, en el orden que se indica a continuación:

Parámetro | Contenido
Channel Number | Número de canal del cliente.
Action | ADVISE, EXECUTE, INITIATE, POKE, REQUEST, o TERMINATE.
Item | Nombre del elemento; por ejemplo, R1C1 para una celda de una hoja de cálculo de Microsoft Excel.
Data | Datos del cliente.
Formato | Formato de datos; por ejemplo, CF_TEXT.
Advise Status | Tipo de vínculo (0 = manual, 2 = notificación o automático).

Los valores de los parámetros Item, Data y Advise Status dependen del parámetro Action. La tabla siguiente muestra los valores del parámetro Action y los valores contenidos en los parámetros Item, Data y Advise Status. Un guión (–) indica que el valor del parámetro es la cadena nula.

Valor de Action Valor de Item Valor de Data Advise Status
INITIATE – Nombre del tema –
TERMINATE – – –
POKE Nombre de elemento Nuevos datos –
REQUEST Nombre de elemento – –
EXECUTE – Nuevo comando –
ADVISE Nombre de elemento – Tipo de vínculo

Si la función definida por el usuario logra controlar la petición del cliente, deberá devolver verdadero (.T.). Si no es posible controlar la petición o surge un error, la función definida por el usuario deberá devolver falso (.F.). Si se devuelve falso (.F.) cuando el valor del parámetro Action es INITIATE, se rechazará la petición de nombre de tema del cliente. Si se devuelve falso (.F.) cuando el valor es POKE, REQUEST o EXECUTE, se pasará por alto la petición. Si se devuelve falso (.F.) cuando el valor es ADVISE, se rechazará la petición del cliente para un vínculo de notificación o automático.

Observaciones

Después de crear un nombre de tema, cualquier petición de cliente realizada para ese nombre de tema hará que Visual FoxPro ejecute la función definida por el usuario especificada mediante cUDFName. A esta función se le transfiere un conjunto de parámetros cuyos valores están determinados por la petición del cliente. El valor de retorno de la función definida por el usuario se transfiere al cliente mediante DDEPoke( ). El valor de retorno es un valor lógico que indica si el nombre del tema puede proporcionar el servicio solicitado por el cliente.

DDESetTopic( ) devolverá verdadero (.T.) si logra crear o liberar el nombre de tema. Devolverá falso (.F.) si el nombre de tema no puede crearse o liberarse. Utilice DDELastError( ) para determinar la causa por la que no se puede crear o liberar un nombre de tema.

Ejemplo

El ejemplo siguiente crea un servidor básico de ejemplo llamado myserver que permite la ejecución de comandos de Visual FoxPro desde una aplicación cliente. La aplicación cliente hace peticiones a myserver a través del tema DO y se utiliza la sustitución de macros para ejecutar el comando del cliente.

*** Establecea a Visual FoxPro como un servidor DDE ***
= DDESetService('myserver', 'DEFINE')
= DDESetService('myserver', 'EXECUTE', .T.)
= DDESetTopic('myserver', 'DO', 'DOTOPIC')
WAIT WINDOW 'Server portion service setup ... ' NOWAIT
*** Usa Visual FoxPro como un cliente DDE ***
gnChannel = DDEInitiate('myserver','DO')
=DDEExecute(gnChannel, 'WAIT WINDOW "Command Executed ... "')
=DDETerminate(gnChannel)
PROCEDURE dotopic
PARAMETERS gnChannel, gcAction, gcItem, gData, gcFormat, gnAdvise
glResult = .F.
*** Es necesario devolver .T. desde una   ***
*** acción INITIATE o no se hace la conexión ***
IF gcAction = 'INITIATE'
glResult = .T.
ENDIF
IF gcAction = 'EXECUTE'
&gData
glResult = .T.
ENDIF
IF gcAction = 'TERMINATE'
WAIT WINDOW 'Goodbye ... ' NOWAIT
glResult = .T.
ENDIF
RETURN glResult

Después de ejecutar este programa de ejemplo, habrá instalado el servicio Visual FoxPro, al que pueden tener acceso otras aplicaciones. Si tiene Microsoft Excel, podrá ejecutar la macro siguiente:

gnMyChan = INITIATE("myserver","DO")
=EXECUTE(MyChan,"WAIT WINDOW 'Hi, this is EXCEL speaking'")
=RETURN( )

Vea también

DDEEnabled( ) | DDELastError( ) | DDEPoke( ) | DDESetService( )


DDETerminate( ) (Función)

Cierra un canal de intercambio dinámico de datos (DDE) establecido mediante DDEInitiate( ).

DDETerminate(nChannelNumber | cServiceName)

Valores devueltos

Lógico

Parámetros

nChannelNumber
Especifica el número de canal que se va a cerrar.
cServiceName
Especifica el nombre de servicio que se va a cerrar.

Observaciones

Si el canal logra cerrarse exitósamente, DDETerminate( ) devolverá Verdadero (.T.). Si el canal no puede cerrarse, DDETerminate( ) devolverá Falso (.F.).

Asegúrese de cerrar los canales en cuanto deje de necesitarlos para conservar recursos del sistema.

Todos los canales se cierran automáticamente si sale de Visual FoxPro al elegir la opción Salir del menú Archivo o al ejecutar QUIT en la ventana Comandos o desde dentro de un programa.

Vea también

DDEAbortTrans( ) | DDEAdvise( ) | DDEExecute( ) | DDEInitiate( ) | DDELastError( ) | DDEPoke( ) | DDERequest( ) | DDESetOption( )


DEFAULTEXT( ) (Función)

Devuelve un nombre de archivo con una nueva extensión si no la tuviera.

DEFAULTEXT(cFileName, cDefault)

Valores devueltos

Carácter (Character)

Parámetros

cFileName
Especifica el nombre de archivo (con o sin la ruta y la extensión) que se va a devolver.
cDefault
Especifica la extensión predeterminada sin punto.

Vea también

ADDBS( ) | FILE( ) | FORCEEXT( ) | FORCEPATH( ) | JUSTDRIVE( ) | JUSTEXT( ) | JUSTFNAME( ) | JUSTPATH( ) | JUSTSTEM( )


DELETED( ) (Función)

Devuelve un valor lógico que indica si el registro actual está marcado para su eliminación.

DELETED([cTableAlias | nWorkArea])

Valores devueltos

Logical

Parámetros

cTableAlias | nWorkArea
Puede comprobar el estado del registro actual de una tabla abierta en otra área de trabajo si especifica el número de área de trabajo con nWorkArea o el alias de la tabla con cTableAlias. Si una tabla no está abierta en el área de trabajo que especifique, DELETED( ) devolverá falso.

Si omite cTableAlias y nWorkArea, el estado de eliminado que se devuelve es el del registro actual del área de trabajo actual.

Observaciones

Si el registro está marcado para eliminación, DELETED( ) devolverá el valor verdadero (.T.); de lo contrario, DELETED( ) devolverá el valor falso (.F.).

Los registros pueden marcarse para su eliminación con DELETE y DELETE - SQL, y puede quitarse la marca con RECALL.

Las consultas que comprueban el estado de eliminado de los registros pueden optimizarse mediante la Optimización Rushmore de Consultas si la tabla esta indexada sobre DELETED( ).

Para obtener más información acerca del uso de Rushmore para optimizar consultas, vea SET OPTIMIZE y Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.

Ejemplo

El ejemplo siguiente abre la tabla customer de la base de datos testdata. DELETE – SQL se utiliza para marcar todos los registros donde el campo country contenga USA para su eliminación. Se utiliza DELETED( ) para mostrar todos los registros marcados para eliminar. Se utiliza RECALL ALL para quitar las marcas de todos los registros marcados para eliminar.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer  && Opens Customer table
DELETE FROM customer WHERE country = 'USA'  && Mark for deletion
CLEAR
LIST FIELDS company, country FOR DELETED( ) && List marked records
RECALL ALL  && Unmark all records marked for deletion

Vea también

DELETE | DELETE - SQL | PACK | RECALL | SET DELETED

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


DESCENDING( ) (Función)

Devuelve un valor lógico que indica si una etiqueta de índice se creó con la palabra clave DESCENDING o si la palabra clave DESCENDING se incluyó en USE, SET INDEX o SET ORDER.

DESCENDING([CDXFileName[, nIndexNumber [, nWorkArea | cTableAlias]]])

Valores devueltos

Logical

Parámetros

CDXFileName
Puede especificar el nombre de un archivo de índice compuesto con CDXFileName. El archivo de índice compuesto que especifique puede ser el archivo de índice compuesto estructural abierto automáticamente con la tabla o un archivo de índice compuesto independiente.
nIndexNumber
Especifica la etiqueta de índice o el archivo de índice que comprueba DESCENDING( ). nIndexNumber normalmente es un entero que comienza en 1 y va aumentando en 1 para devolver valores adicionales para cada etiqueta de índice.

Si nIndexNumber es 1, devolverá un valor para el archivo de índice maestro .idx de una sola entrada o para la etiqueta de índice maestro (si hay alguna).

A medida que nIndexNumber aumenta, se devuelven valores para cada etiqueta del índice compuesto estructural (si hay alguna). Los valores para las etiquetas se devuelven en el orden en que se crearon dentro del índice compuesto estructural.

Una vez que se devuelven los valores para todas las etiquetas del índice compuesto estructural, se devuelven valores para cada etiqueta de cualquier índice compuesto independiente que esté abierto. Los valores se devuelven de las etiquetas en el orden en que se crearon en los índices compuestos independientes.

Devuelve la cadena vacía en el caso de que nIndexNumber sea mayor que el número total de archivos .idx de una sola entrada abiertos más las etiquetas de índice compuesto estructural y compuesto independiente.

nWorkArea | cTableAlias
Devuelve valores para archivos de índice o etiquetas abiertos en un área de trabajo distinta de la actual. nWorkArea especifica el número de área de trabajo y cTableAlias especifica el alias de la tabla.

Si ninguna tabla tiene el alias especificado, Visual FoxPro mostrará un mensaje de error.

Observaciones

Puede ordenar los registros de una tabla en sentido descendente de dos formas:

  • Puede incluir la palabra clave DESCENDING en el comando INDEX para crear una etiqueta de índice de orden descendente en un .cdx compuesto.
  • Puede incluir la palabra clave DESCENDING en USE, SET INDEX o SET ORDER para especificar un orden descendente para la etiqueta de índice maestro o para el archivo de índice maestro (.idx) de una sola entrada.

DESCENDING( ) puede determinar si una etiqueta de índice se creó en orden descendente. DESCENDING( ) devuelve verdadero (.T.) si la etiqueta de índice especificada se creó con la palabra clave DESCENDING.

DESCENDING( ) también puede determinar si la etiqueta o el archivo de índice maestro está en orden descendente. DESCENDING( ) devuelve verdadero (.T.) si se incluyó la palabra clave DESCENDING en USE, SET INDEX o SET ORDER para la etiqueta de índice maestro o para un archivo de índice (.idx) de una sola entrada que especifique.

Si no incluye ninguno de los argumentos opcionales, DESCENDING( ) devolverá un valor para la etiqueta o el archivo de índice maestro. Si no incluye ninguno de los argumentos opcionales y no hay ninguna etiqueta ni ningún archivo .idx maestro activos (por ejemplo, si ha ejecutado SET ORDER TO para colocar la tabla en el orden físico de los registros), DESCENDING( ) devolverá falso (.F.).

Ejemplo

El ejemplo siguiente abre la tabla customer de la base de datos testdata. Se usa FOR ... ENDFOR para crear un bucle en el que se comprueba el estado descendente de cada etiqueta de índice del índice estructural customer. Se muestra el nombre de cada etiqueta de índice estructural con su estado descendente.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE Customer     && Open customer table
CLEAR
FOR nCount = 1 TO 254
IF !EMPTY(TAG(nCount))  && Checks for tags in the index
? TAG(nCount) + ' Descending? ' && Display tag name
?? DESCENDING(nCount)  && Display descending status
ELSE
EXIT  && Exit the loop when no more tags are found
ENDIF
ENDFOR

Vea también

INDEX | SET INDEX | SET ORDER | USE


DIFFERENCE( ) (Función)

Devuelve un entero, de 0 a 4, que representa la diferencia fonética relativa entre dos expresiones de caracteres.

DIFFERENCE(cExpression1, cExpression2)

Valores devueltos

Numérico

Parámetros

cExpression1, cExpression2
Especifica las expresiones de caracteres comparadas por DIFFERENCE( ).

Observaciones

DIFFERENCE( ) es útil al buscar en tablas cuando no se conoce la forma exacta de escribir una entrada.

Cuanto más similar sea la ortografía de las dos expresiones, mayor será el número que devuelve DIFFERENCE( ). Si las expresiones de caracteres se escriben de forma muy similar, DIFFERENCE( ) devolverá 4. Si las dos expresiones de caracteres tienen poco en común fonéticamente, DIFFERENCE( ) devolverá 0.

Ejemplo

STORE 'Smith' TO gcName1
STORE 'Smythe'  TO gcName2
STORE 'Smittie' TO gcName3
STORE '' TO gcName4
CLEAR
? DIFFERENCE(gcName1, gcName2)  && Displays 4
? DIFFERENCE(gcName1, gcName3)  && Displays 4
? DIFFERENCE(gcName1, gcName4)  && Displays 1

Vea también

SOUNDEX( )


DIRECTORY( ) (Función)

Ubica un directorio especificado.

DIRECTORY(cDirectoryName [, nFlags])

Parámetros

cDirectoryName
Especifica el nombre del directorio que se va a ubicar. Si no incluye una ruta de acceso absoluta para el directorio que especifique, Visual FoxPro buscará el directorio relacionado con el directorio predeterminado de Visual FoxPro.
nFlags
Especifica el tipo de valor devuelto por DIRECTORY( ) cuando el directorio existe pero podría estar marcado con el atributo Hidden o System. La siguiente tabla muestra los valores para nFlags.
nFlags | Descripción
0 | DIRECTORY( ) devuelve Falso (.F.) si el directorio existe pero está marcado con el atributo Hidden o System. (Predeterminado)
1 | DIRECTORY( ) devuelve Verdadero (.T.) si el directorio existe, independientemente de sus atributos. Establecer nFlags a 1 le permite verificar archivos ocultos o de sistema.

Valores devueltos

Dato tipo Lógico. DIRECTORY( ) devuelve Verdadero (.T.) si el directorio especificado se encuentra en el disco; de otro modo devuelve Falso (.F.).

Observaciones

El directorio predeterminado de Visual FoxPro se especifica con SET DEFAULT.

Puede utilizar la función ADIR( ) para determinar atributos específicos para el directorio.

Puede usar los comandos CD y CHDIR para cambiar a directorios ocultos.

Vea también

Funciones | SET DEFAULT | ADIR( ) (Función) | CD | CHDIR (Comando) | FILE( ) | GETDIR( ) | GETFILE( ) |


DISKSPACE( ) (Función)

Devuelve el número de bytes disponibles en la unidad de disco predeterminada.

DISKSPACE([cVolumeName [, nType]])

Valores devueltos

Numérico

Parámetros

cVolumeName
Especifica el nombre de la unidad de disco o del volumen cuyo espacio disponible se va a devolver. Si se omite cVolumeName, se devolverá el espacio disponible de la unidad de disco o del volumen predeterminados.
nType
Especifica el tipo de espacio de disco que se debe recuperar, de acuerdo con la tabla siguiente.
Valor | Descripción
1 | Espacio total del volumen.
2 | (Valor predeterminado) Espacio libre total del volumen.
3 | Espacio libre total disponible para el usuario asociado con el subproceso que hace la llamada.

Observaciones

Esta función es útil para determinar si hay espacio suficiente para hacer copia de seguridad de archivos o para ejecutar comandos tales como SORT que requieren espacio de disco adicional para los archivos de trabajo temporales.

La unidad de disco o el volumen predeterminados se especifican con SET DEFAULT.

DISKSPACE( ) devuelve -1 si se produce un error en la lectura de la unidad de disco o del volumen. En algunas redes, el valor devuelto por DISKSPACE( ) puede no ser exacto para las unidades de redes grandes.

Ejemplo

El ejemplo siguiente utiliza DISKSPACE( ) para determinar si hay suficiente espacio en disco disponible para ordenar.

*** Check DISKSPACE before sort ***
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer  && Opens Customer table
*** Get size of table header ***
gnTableHead = HEADER( )
*** Calculate size of table ***
gnFileSize = gnTableHead + (RECSIZE( ) * RECCOUNT( ) + 1)
IF DISKSPACE( ) > (gnFileSize * 3)
WAIT WINDOW 'Sufficient diskspace to sort.'
ELSE
WAIT WINDOW 'Insufficient diskspace. Sort cannot be done.'
ENDIF

Vea también

HEADER( ) | RECSIZE( ) | SET DEFAULT


DisplayPath( ) (Función)

Recorta expresiones largas de ruta de acceso a la longitud especificada para la presentación.

DisplayPath(cFilename, nMaxLength)

Devuelve

Carácter. DisplayPath( ) devuelve una cadena y muestra la ruta con el modelo apropiado de mayúsculas/minúsculas.

Parámetros

cFileName
Especifica el nombre del archivo al final de la ruta de destino. Si no se especifica ninguna ruta, Visual FoxPro utiliza el valor de CURDIR( ).
Nota Esta función no comprueba la validez de cFileName y devuelve la expresión de ruta recortada aunque no existe tal archivo.
nMaxLength
Especifica la longitud máxima del resultado recortado. nMaxLength debe ser mayor o igual a 10.

Observaciones

DisplayPath( ) devuelve una cadena sólo para propósitos de presentación; no podrá utilizar su resultado para hacer referencia a un archivo. La cadena resultante será igual o menor que nMaxLength. El resultado no rompe los nombres de directorio. Si la inclusión de un nombre de directorio sobrepasa nMaxLength, el resultado son unos puntos suspensivos (…). Si el nombre de archivo supera nMaxLength, el resultado es el nombre de archivo más la extensión.

Vea también

JUSTPATH( ) (Función) | ADIR( ) (Función)


DMY( ) (Función)

Devuelve una expresión de caracteres con el formato día-mes-año (por ejemplo, 31 de mayo de 1998) a partir de una expresión de tipo Date o DateTime. El nombre del mes no se abrevia.

DMY(dExpression | tExpression)

Valores devueltos

Character

Parámetros

dExpression
Especifica la expresión Date a partir de la cual DMY( ) devuelve una cadena de caracteres con el formato día-mes-año.
tExpression
Especifica la expresión DateTime a partir de la cual DMY( ) devuelve una cadena de caracteres con el formato día-mes-año.

Observaciones

Si SET CENTURY está establecido en OFF, DMY( ) devolverá una cadena de caracteres en formato dd-mes-aa (por ejemplo, 16 febrero 98). Si SET CENTURY está establecido en ON, el formato será dd-mes-aaaa (por ejemplo, 16 febrero 1998).

Ejemplo

CLEAR
SET CENTURY OFF
? DMY(DATE( ))
SET CENTURY ON
? DMY(DATE( ))

Vea también

MDY( ) | SET CENTURY | SET DATE

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


DODEFAULT( ) (Función)

Ejecuta, desde dentro de una subclase, el evento o método de clase primaria del mismo nombre.

Por ejemplo, si coloca DODEFAULT( ) en el evento Click de una subclase, Visual FoxPro ejecuta el evento Click de la clase primaria. El operador de resolución de alcance (::), a diferencia de DODEFAULT( ), ejecuta un evento o método de una clase primaria con un nombre diferente.

Nota Puede colocar DODEFAULT( ) sólo dentro de un evento o método.
DODEFAULT( [ eParameter1 [, eParameter2] ...] )

Parámetros

eParameter1 [, eParameter2] ...
Especifica parámetros que se pasan al evento o método de clase primaria.

Valores devueltos

Carácter, Numérico, Monetario, Fecha, DateTime, Lógico o Memo

Observaciones

El valor que devuelve DODEFAULT( ) está determinado por el valor devuelto del evento o del método.

En versiones anteriores a Visual FoxPro 8.0, no podía llamar a DODEFAULT( ) en un método que no existiera en la clase primaria sin que Visual FoxPro generara un error, "Propiedad nombre no se encuentra (Error 1734)", devolviendo Verdadero (.T.), e ignorando DODEFAULT( ) y cualquier parámetro pasado. Sin embargo, Visual FoxPro ahora ignora esto y no genera un error, pero puede ocurrir el siguiente resultado:

  • Visual FoxPro ignora cualquier parámetro que se haya pasado ya que no se ejecuta ningún código.
  • Visual FoxPro siempre devuelve Verdadero (.T.), el cual es el comportamiento predeterminado para cualquier procedimiento sin una instrucción RETURN explícita.

Este comportamiento afecta los siguientes escenarios:

  • Métodos personalizados que se definen en una clase. Por ejemplo, la línea, x.Test(), generaba un error antes de Visual FoxPro 8.0 pero después no lo hace más:
    CLEAR
x=CREATEOBJECT("s1")
x.ReadMethod("Init")
x.Test()

DEFINE CLASS s1 AS Session
PROCEDURE Test
DODEFAULT()
ENDPROC
PROCEDURE ReadMethod(cMethod)
DODEFAULT(cMethod)
ENDPROC
PROCEDURE Error(nError, cMethod, nLine)
? "Error:", nError, cMethod, nLine
ENDPROC
ENDDEFINE
  • Los métodos nativos que están marcados con la palabra reservada HIDDEN en la clase primaria. Por ejemplo:
    CLEAR
x=CREATEOBJECT("s2")
x.Test()

DEFINE CLASS s2 AS s1
PROCEDURE Test
THIS.ReadMethod("Init")
ENDPROC
PROCEDURE ReadMethod(cMethod)
DODEFAULT(cMethod)
ENDPROC
ENDDEFINE

DEFINE CLASS s1 AS Session
HIDDEN PROCEDURE ReadMethod(cMethod)
DODEFAULT(cMethod)
ENDPROC
PROCEDURE Error(nError, cMethod, nLine)
? "Error:", nError, cMethod, nLine
ENDPROC
ENDDEFINE

Desde Visual FoxPro 7.0, llamar a métodos nativos en una clase base que contiene DODEFAULT( ) no causa un error. Por ejemplo:

CLEAR
x=CREATEOBJECT("s1")
x.ReadMethod("Init")

DEFINE CLASS s1 AS Session
PROCEDURE ReadMethod(cMethod)
DODEFAULT(cMethod)
ENDPROC
PROCEDURE Error(nError, cMethod, nLine)
? "Error:", nError, cMethod, nLine
ENDPROC
ENDDEFINE

Vea también

:: Operador de resolución de alcance | ParentClass (Propiedad)


DOW( ) (Función)

Devuelve el número del día de la semana a partir de una expresión Date o DateTime dada.

DOW(dExpression | tExpression [, nFirstDayOfWeek])

Valores devueltos

Numérico

Parámetros

dExpression
Especifica la expresión Date a partir de la cual DOW( ) devuelve el número del día.
tExpression
Especifica la expresión DateTime a partir de la cual DOW( ) devuelve el número de día.
nFirstDayOfWeek
Especifica el primer día de la semana. nFirstDayOfWeek puede ser uno de los valores siguientes.
nFirstDayOfWeek | Descripción
0 | DOW( ) usa el día que está seleccionado actualmente en el cuadro de lista "La semana comienza en", que aparece en la ficha Regional del cuadro de diálogo Opciones.
1 | Domingo. Es el valor predeterminado cuando se omite nFirstDayOfWeek y es el primer día de la semana usado en versiones anteriores de FoxPro.
2 | Lunes
3 | Martes
4 | Miércoles
5 | Jueves
6 | Viernes
7 | Sábado

Ejemplo

STORE DATE( ) TO gdDayNum
CLEAR
? DOW(gdDayNum)
? CDOW(gdDayNum)

Vea también

CDOW( ) | DAY( ) | SET FDOW | SET FWEEK | SYS( ) - Introducción a las funciones | WEEK( )


DRIVETYPE( ) (Función)

Devuelve el tipo de la unidad especificada.

DRIVETYPE(cDrive)

Valores devueltos

Numérico

Parámetros

cDrive
Designa la unidad. Los dos puntos de nombres de unidad (por ejemplo, "C:") son opcionales.

Observaciones

La tabla siguiente explica el número que devuelve DRIVETYPE( ) y la correspondiente descripción del tipo de unidad.

Número | Tipo de unidad
1 | Sin tipo
2 | Disquete
3 | Disco duro
4 | Disco extraíble o unidad de red
5 | CD-ROM
6 | Disco RAM1

1 Como hay muchos tipos de discos RAM, puede obtener resultados incoherentes.

Vea también

SYS(5) - Unidad predeterminada | JUSTDRIVE( ) (Función)


DROPOFFLINE( ) (Función)

Descarta todos los cambios realizados a una vista fuera de línea y sitúa la vista de nuevo en pantalla.

DROPOFFLINE(cViewName)

Valores devueltos

Logical

Parámetros

cViewName
Especifica el nombre de la vista fuera de línea que se va a poner otra vez en pantalla.

Observaciones

DROPOFFLINE( ) devuelve un verdadero (.T.) de tipo Logical si se ha conseguido que la vista fuera de línea vuelva en línea; en caso contrario devolverá falso (.F.).

Vea también

CREATEOFFLINE( ) | DROP VIEW | USE


DTOC( ) (Función)

Devuelve una fecha de tipo Carácter a partir de una expresión de tipo Date o DateTime.

DTOC(dExpression | tExpression [, 1])

Valores devueltos

Character

Parámetros

dExpression
Especifica una variable, un elemento de matriz o un campo de tipo Date para los que DTOC( ) devuelve una fecha de tipo Carácter.
tExpression
Especifica una variable, un elemento de matriz o un campo de tipo DateTime para los cuales DTOC( ) devuelve una fecha de tipo Carácter.
1
Devuelve la fecha en un formato adecuado para la indización. Esto es particularmente útil para mantener los registros de la tabla en secuencia cronológica.

Por ejemplo, para ordenar los registros de la tabla por orden de entrada, podrá utilizar este comando:

INDEX ON DTOC(gdInvDate, 1) + gnInvTime TAG TimeindxINDEX ON DTOC(gdInvDate, 1) + gnInvTime TAG Timeindx

gdInvDate y gnInvTime son los campos que contienen la fecha y la hora en que se escribieron los datos en el registro.

Observaciones

DTOC( ) devuelve una cadena de caracteres correspondiente a la expresión de Date o de DateTime. El formato de fecha viene determinado por SET CENTURY y SET DATE.

Ejemplo

SET STRICTDATE TO 1
STORE CTOD('10/31/98') TO gdThisDate
CLEAR
? DTOC(gdThisDate)
STORE DTOC({^1998-10-31}+90) TO gcExpireDate
? 'Your 90-day warranty expires ', gcExpireDate
? DTOC({^1998-10-31},1)

Vea también

CTOD( ) | SET CENTURY | SET DATE | SYS( ) - Introducción a las funciones | TTOC( )


DTOR( ) (Función)

Convierte grados en radianes.

DTOR(nExpression)

Valores devueltos

Numérico

Parámetros

nExpression
Especifica la expresión numérica cuyo valor se desea convertir en radianes. Un ángulo expresado en formato grados:minutos:segundos se debe convertir a su equivalente decimal.

Observaciones

DTOR( ) convierte el valor de una expresión numérica dada en grados en su valor equivalente en radianes. DTOR( ) es útil para trabajar con las funciones trigonométricas de Visual FoxPro: ACOS( ), ASIN( ), COS( ), SIN( ), TAN( ).

Utilice RTOD( ) para convertir radianes a grados.

Ejemplo

CLEAR
? DTOR(0)  && Displays 0.00
? DTOR(45) && Displays 0.79
? DTOR(90) && Displays 1.57
? DTOR(180)  && Displays 3.14
? COS(DTOR(90))  && Displays 0.00

Vea también

ACOS( ) | ASIN( ) | COS( ) | RTOD( ) | SIN( ) | TAN( )


DTOS( ) (Función)

Devuelve una cadena de caracteres de fecha con el formato AAAAMMDD a partir de una expresión de Date o de DateTime especificada.

DTOS(dExpression | tExpression)

Valores devueltos

Character

Parámetros

dExpression
Especifica la expresión de Date que DTOS( ) convierte a una cadena de caracteres de ocho dígitos.
tExpression
Especifica la expresión de DateTime que DTOS( ) convierte a una cadena de caracteres de ocho dígitos.

Observaciones

Esta función es útil para indexar tablas por un campo de Date o de DateTime. Es equivalente a DTOC( ) cuando se incluye su argumento opcional 1.

La cadena de caracteres devuelta por DTOS( ) no se ve afectada por SET DATE o SET CENTURY.

Ejemplo

CLEAR
? DTOS(DATE( ))

Vea también

DATE( ) | DATETIME( ) | CTOD( ) | DTOC( )


DTOT( ) (Función)

Devuelve un valor de DateTime a partir de una expresión de Date.

DTOT(dDateExpression)

Valores devueltos

DateTime

Parámetros

dDateExpression
Especifica la expresión de Date a partir de la cual se devuelve un valor de DateTime.

Observaciones

El formato del valor DateTime que DTOT( ) devuelve depende del valor actual de SET DATE y SET MARK. Si no se suministra un siglo, se adopta el siglo XX.

DTOT( ) agrega una hora predeterminada de medianoche (12:00:00 a.m.) a la fecha para producir un valor válido de DateTime.

Ejemplo

? DTOT({^1998-02-16}) && Displays 02/16/1998 12:00:00am

Vea también

CTOT( ) | DATE( ) | SEC( ) | SECONDS( ) | SET SECONDS | TIME( )


EDITSOURCE( ) (Función)

Abre el editor de Visual FoxPro y, opcionalmente, coloca el cursor.

EditSource(cShortCutID | [ cFilename [, nLineNo] [, cClassName] [, cMethodName|cProcName]])

Parámetros

cShortCutID
Especifica el Id. de acceso directo válido
cFileName
Especifica el nombre del archivo que se va a abrir. Si el archivo está ya abierto, Visual FoxPro lo activa.
nLineNo
Especifica la línea en la que se sitúa el cursor. Si utiliza 0, el cursor se situará en la última posición guardada en el archivo de recursos. Si proporciona un valor no válido o inexistente para nlineno, el cursor se situará al principio del archivo actual. Un valor negativo de nlineno genera un error.
cClassName
Especifica el nombre de la clase o entorno de datos que se va a modificar. Si abre un archivo de clase (.vcx) sin nombrar una clase, se abrirá el Diseñador de clases en lugar del editor.
cMethodName
Especifica el nombre del método que se va a modificar. Utilice un método con referencia de objeto válida con el formato cObject.nMethodName.
cProcName
Especifica el nombre del procedimiento que se va a modificar en un archivo de tipo de clase (.vcx, .scx, .frx, .lbx).

Valores devueltos

Logical. Devuelve verdadero (.T.) si el archivo de destino se abre correctamente; de lo contrario, devuelve códigos de error de acuerdo con la tabla siguiente:

Valor | Descripción
0 | Apertura correcta del archivo.
132, 705 | Archivo en uso. No se puede abrir.
200 | El archivo no se abrió debido a una referencia de objeto no válida. Compruebe la presencia de cMethodName en el objeto al que hace referencia el parámetro cClassName.
901, 925 | El archivo se abrió, pero hay una referencia de objeto no válida en cMethodName. Compruebe la referencia del parámetro cMethodName. Utilice una referencia tal como MyForm.MyList.CLICK. Los formularios y las clases devuelven 925; los informes devuelven 901.

Observaciones

Puede pasar cShortCutID sin ninguna información adicional y dejar el editor abierto en esta ubicación. cShortCutID es el valor de Id. único para un registro de acceso directo almacenado en la tabla del sistema de Foxtask (_VFP.FoxTask). La aplicación Lista de tareas utiliza esta tabla para asegurarse de que puede obtener la posición de la última línea del acceso directo. Visual FoxPro mantiene, internamente, información sobre al acceso directo actual; sin embargo, sólo escribe actualizaciones de la posición en Foxtask cuando se guarda un archivo.

La extensión de archivo determina qué editor de Visual FoxPro se abre, de acuerdo con la tabla siguiente:

Extensión | Editor | Configuraciones predeterminadas
PRG | Editor de texto | MODIFY COMMAND
MPR | Editor de texto | MODIFY COMMAND
QPR | Editor de texto | MODIFY COMMAND
TXT | Editor de texto | MODIFY FILE
SCX | Miniprograma | MODIFY FORM
VCX | Miniprograma | MODIFY CLASS
FRX | Miniprograma | MODIFY REPORT
LBX | Miniprograma | MODIFY LABEL
MNX | Miniprograma de menú | MODIFY MENU
DBC | Procedimientos almacenados | MODIFY PROCEDURE
<otra> | Editor de texto | MODIFY FILE

Los archivos de programa (.prg), base de datos (procedimientos almacenados .dbc) y texto admiten sólo el parámetro nLineNo.

Los archivos de menú (.mnx) se abren como archivos de texto sin referencia a objetos ni números de línea.

Vea también

MODIFY (Comando)


EMPTY( ) (Función)

Determina si una expresión está vacía o no.

EMPTY(eExpression)

Valores devueltos

Logical

Parámetros

eExpression
Especifica la expresión evaluada por EMPTY( ).

La expresión que incluya puede ser una expresión de caracteres, numérica, de fecha o lógica, o el nombre de un campo memo o general de una tabla abierta. EMPTY( ) devuelve verdadero (.T.) cuando las expresiones de los tipos de datos siguientes contienen los datos indicados:

Tipo de expresión | Se evalúa como
Character | La cadena vacía, espacios en blanco, tabulaciones, retornos de carro o avances de línea o cualquier combinación de éstos.
Numérico | 0
Currency | 0
Float | 0
Integer | 0
Double | 0
Date | Vacío (p.e., CTOD(''))
DateTime | Vacío (p.e., CTOD(''))
Logical | Falso (.F.)
Memo | Vacío (sin contenido)
General | Vacío (sin objeto OLE)
Picture | Vacío (sin imagen)

EMPTY( ) no puede utilizarse para determinar si una referencia de objeto de variable está vacía. Por ejemplo, una variable puede contener una referencia de objeto para un formulario. Si el formulario se cierra haciendo clic en Cerrar desde el menú contextual del formulario o con CLEAR WINDOWS, la variable contendrá el valor nulo.

El programa de ejemplo siguiente muestra cómo usar TYPE( ) y ISNULL( ) para determinar si una referencia de objeto de variable es válida.

goMyForm = CREATEOBJECT('Form')
WAIT WINDOW IIF(TYPE('goMyForm') = 'O' AND !ISNULL(goMyForm), ;
'goMyForm has valid object reference',;
'goMyForm does not have valid object reference')

Observaciones

EMPTY( ) devuelve verdadero (.T.) si la expresión eExpression está vacía. Si la expresión no está vacía, EMPTY(°) devolverá falso (.F.).

Ejemplo

El ejemplo siguiente abre la tabla customer de la base de datos testdata. FOR ... Se usa FOR ... ENDFOR para crear un bucle en el cual se usa EMPTY( ) para determinar si TAG( ) devuelve la cadena vacía. El nombre de cada etiqueta de índice estructural se muestra con su estado de candidato.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer     && Open customer table
FOR nCount = 1 TO 254
IF !EMPTY(TAG(nCount))  && Checks for empty string
? TAG(nCount)  && Display tag name
? CANDIDATE(nCount)  && Display candidate status
ELSE
EXIT  && Exit the loop when no more tags are found
ENDIF
ENDFOR

Vea también

LEN( ) | TYPE( ) (Función) | ISNULL( ) (Función)


EOF( ) (Función)

Determina si el puntero de registro está situado o no más allá del último registro de la tabla actual o especificada.

EOF([nWorkArea | cTableAlias])

Valores devueltos

Logical

Parámetros

nWorkArea
Especifica el número de área de trabajo de la tabla.
cTableAlias
Especifica el alias de la tabla.

EOF( ) devuelve falso (.F.) si no está abierta una tabla en un área de trabajo que especifique.

Si no especifica un alias de área de trabajo, se probará la condición de final de archivo en la tabla abierta en el área de trabajo seleccionada.

Observaciones

EOF( ) devuelve verdadero (.T.) si el puntero de registro alcanza el final del archivo de tabla (EOF). El final de la tabla se alcanza cuando el puntero del registro transfiere el último registro de la tabla. Por ejemplo, cuando se ejecuta FIND, LOCATE o SEEK sin éxito, Visual FoxPro mueve el puntero de registro hasta después del último registro, y EOF( ) devuelve verdadero (.T.). EOF( ) devuelve falso (.F.) si el puntero del registro no está al final de la tabla.

Ejemplo

El ejemplo siguiente abre la tabla customer y enumera el nombre de la empresa página a página hasta llegar al final del archivo o hasta que elija Cancelar.

CLOSE DATABASES
CLEAR
OPEN DATABASE (HOME() + "samples\data\testdata")
USE customer
GO TOP
local recCtr, btnValue
recCtr = 0
btnValue = 1
DO WHILE btnValue = 1 AND NOT EOF()
? "Company : " + company
recCtr = recCtr + 1
if (recCtr % 20) = 0 then
btnValue =MESSAGEBOX ("Click OK to continue, ;
Cancel to quit.",33)
clear
endif
Skip 1    && Move down one record
ENDDO
=MESSAGEBOX("Listing complete.",48)

Vea también

BOF( ) | GO | GOTO | SKIP


ERROR( ) (Función)

Devuelve el número del error que desencadenó una rutina ON ERROR.

ERROR( )

Valores devueltos

Numérico (Numérico)

Observaciones

ERROR( ) devuelve el número del error más reciente. Debe estar activo ON ERROR para que ERROR( ) devuelva un valor distinto de 0.

Cuando se intercepta un error durante la ejecución de un programa, puede identificarse el tipo de error con ERROR( ) en una rutina ON ERROR. El mensaje de error correspondiente puede devolverse con MESSAGE( ).

El valor que devuelve la función ERROR( ) se restaura con RETURN o RETRY.

Ejemplo

El ejemplo siguiente muestra una rutina sencilla de tratamiento de errores que muestra un mensaje cuando se produce un error.

CLEAR
ON ERROR DO errhand WITH ERROR( ), MESSAGE( )
*** The next line generates an error - there is no BRWSE command
BRWSE
ON ERROR
RETURN
*** Error handler ***
PROCEDURE errhand
PARAMETER errnum,message
? Message
? 'Error number: '+ ALLTRIM(STR(Errnum))
RETURN

Vea también

AERROR( ) (Función) | ERROR | MESSAGE( ) | Mensajes de error ordenados alfabéticamente | Mensajes de error ordenados por número | ON ERROR | RETRY | RETURN


EVALUATE( ) (Función)

Evalúa una expresión de caracteres y devuelve el resultado.

EVALUATE(cExpression)

Valores devueltos

Carácter, Numérico, Monetario, Fecha, DateTime, Lógico o Memo

Parámetros

cExpression
Especifica la expresión a evaluar. cExpression puede ser una cadena de caracteres literales, o una expresión válida de Visual FoxPro, una variable, un elemento de matriz o un campo de cualquier tipo de datos, incluidos entre comillas. cExpression no puede ser mayor de 255 caracteres.

Siempre que sea posible, utilice EVALUATE( ) o una expresión de nombre para reemplazar la sustitución de macro utilizando &. EVALUATE y las expresiones de nombre se ejecutan más rápido que las sustituciones de macro.

Observaciones

EVALUATE( ) es similar a TYPE( ) pero devuelve el resultado de una expresión en lugar del tipo de expresión. Una expresión que contiene EVALUATE( ) no puede optimizarse mediante Rushmore.

Si se incluye la función EVALUATE( ) en la cláusula WHERE de una consulta SQL, podrían devolverse datos incorrectos.

Ejemplo

El siguiente ejemplo usa la función EVALUATE() para evaluar una expresión matemática almacenada en un variable tipo carácter.

cMathFunc="INT(4.33)"
nResult=EVALUATE(cMathFunc)
?nResult

Vea también

TYPE( ) | _Evaluate( ) (Rutina de biblioteca API) | Utilizar optimización de consultas Rushmore para acelerar el acceso de datos


EVL( ) (Función)

Devuelve un valor no vacío dadas dos expresiones.

Puede utilizar la función EVL( ) para devolver un valor substituto apropiado en lugar de un valor vacío, como Falso (.F.) o cero (0), dadas dos expresiones. Puede utilizar esta funcionalidad para quitar valores vacíos de cálculos u operaciones donde los valores vacíos no están soportados o no son relevantes.

Nota El valor Lógico de Visual FoxPro, Falso (.F.) y el valor Numérico cero (0) se evalúan como vacíos.
EVL( eExpression1, eExpression2 )

Parámetros

eExpression1, eExpression2
Especifica dos expresiones. eExpression1 y eExpression2 que pueden ser cualquier tipo de datos menos los siguientes:
  • Campos General: Si eExpression1 o eExpression2 representan un campo General, EVL( ) devuelve el error "Operación es invalida para un campo General. (Error 1912)"
  • Referencias a objetos

Valores devueltos

Carácter, Fecha, DateTime, Numérico, Moneda, Lógico, Referencias a objetos. EVL( ) devuelve eExpression1 si esta no se evalúa como un valor vacío; en cualquier otro caso, devuelve eExpresssion2.

Ejemplo

Los siguientes ejemplos crean las variables de memoria glEmptyDate, la cual contiene un valor Fecha vacío y glEmptyNum, la cual contiene el valor Numérico 0.

Cuando ejecute EVL( ) con glEmptyDate, EVL( ) devuelve una cadena vacía ("") al evaluar glEmptyDate y una cadena vacía, y "Ninguno" al evaluar glEmptyDate y "Ninguno".

STORE {  /  /  } TO glEmptyDate
? EVL(glEmptyDate,"")
? EVL(glEmptyDate, "Ninguno")

Cuando ejecute EVL( ) con glEmptyNum, EVL( ) devuelve una cadena vacía al evaluar glEmptyNum y una cadena vacía, y "Vacío" al evaluar glEmptyNum y "Vacío".

STORE 0 TO glEmptyNum
? EVL(glEmptyNum,"")
? EVL(glEmptyNum, "Vacío")

Vea también

Funciones | EMPTY( ) (Función)


EventHandler( ) (Función)

Vincula un evento de servidor COM a métodos de interfaz implementados en un objeto de Visual FoxPro.

Para más información acerca de enlazar eventos desde objetos nativos Visual FoxPro, vea Enlace de Eventos para objetos de Visual FoxPro.

EVENTHANDLER(oCOMObject, oVFPObject [, lUnbind])

Parámetros

oCOMObject
Especifica la referencia del objeto al objeto cuyos eventos deben vincularse. oCOMObject debe ser un objeto COM válido.
oVFPObject
Especifica la referencia del objeto al objeto de Visual FoxPro que contiene los métodos definidos por el usuario, que se corresponde con los eventos de objeto COM correspondientes. La clase debe implementar la interfaz de eventos para el objeto COM particular que se pasa en el primer parámetro. Por ejemplo, debe implementar la interfaz RecordsetEvents para vincular un objeto de conjunto de registros ADO.
lUnbind
Visual FoxPro libera automáticamente el objeto COM cuando sale del alcance. Al pasar este parámetro, con un valor de Verdadero (.T.), puede liberar el evento mientras ambos objetos permanecen en el alcance.

Valores devueltos

Dato tipo Lógico. EVENTHANDLER( ) devuelve Verdadero (.T.) si se ejecuta exitosamente, de lo contrario devuelve Falso (.F.).

Observaciones

Puede vincular un solo objeto COM a varios objetos de Visual FoxPro o bien puede vincular varios objetos COM al mismo objeto de Visual FoxPro.

El control de eventos se desvincula automáticamente cuando se libera el objeto COM o de Visual FoxPro. Puede llamar explícitamente a la función EventHandler( ) y pasar el parámetro lUnbind para desvincular objetos sin liberar referencias de objetos.

Ejemplo

LOCAL oEvents
LOCAL oRS AS adodb.recordset
LOCAL oConn AS adodb.Connection
oEvents = NEWOBJECT("myclass")
oConn = NEWOBJECT("adodb.connection")
oConn.Provider="MSDASQL"
* Make sure to set the SourceDB property
* below to your TESTDATA location.
oConn.ConnectionString="DSN=Visual FoxPro Database;" + ;
"SourceType=DBC; SourceDB=D:\VFP\DATA\TESTDATA.DBC"
oConn.Open
oRS = oConn.Execute("select * from customer")
? EVENTHANDLER(oRS, oEvents)
?
? PADR(oRS.Fields(0).Value,20)
? EVENTHANDLER (oRS, oEvents, .T.)
oRS.MoveNext
? PADR(oRS.Fields(0).Value,20)
oRS.MoveNext
CLEAR all
RETURN
DEFINE CLASS myclass AS session
IMPLEMENTS RecordsetEvents IN "adodb.recordset"
PROCEDURE Recordsetevents_WillChangeField(cFields AS Number @, Fields AS VARIANT @, adStatus AS VARIANT @, pRecordset AS VARIANT @) AS VARIANT
? " "+program() + ' ' + TRANSFORM(DATETIME())
PROCEDURE Recordsetevents_FieldChangeComplete(cFields AS Number @, Fields AS VARIANT @, pError AS VARIANT @, adStatus AS VARIANT @, pRecordset AS VARIANT @) AS VARIANT
? " "+program() + ' ' + TRANSFORM(DATETIME())
PROCEDURE Recordsetevents_WillChangeRecord(adReason AS VARIANT @, cRecords AS Number @, adStatus AS VARIANT @, pRecordset AS VARIANT @) AS VARIANT
? " "+program() + ' ' + TRANSFORM(DATETIME())
PROCEDURE Recordsetevents_RecordChangeComplete(adReason AS VARIANT @, cRecords AS Number @, pError AS VARIANT @, adStatus AS VARIANT @, pRecordset AS VARIANT @) AS VARIANT
? " "+program() + ' ' + TRANSFORM(DATETIME())
PROCEDURE Recordsetevents_WillChangeRecordset(adReason AS VARIANT @, adStatus AS VARIANT @, pRecordset AS VARIANT @) AS VARIANT
? " "+program() + ' ' + TRANSFORM(DATETIME())
?adreason,adstatus,precordset.recordcount
PROCEDURE Recordsetevents_RecordsetChangeComplete(adReason AS VARIANT @, pError AS VARIANT @, adStatus AS VARIANT @, pRecordset AS VARIANT @) AS VARIANT
? " "+program() + ' ' + TRANSFORM(DATETIME())
PROCEDURE Recordsetevents_WillMove(adReason AS VARIANT @, adStatus AS VARIANT @, pRecordset AS VARIANT @) AS VARIANT
? " "+program() + ' ' + TRANSFORM(DATETIME())
PROCEDURE Recordsetevents_MoveComplete(adReason AS VARIANT @, pError AS VARIANT @, adStatus AS VARIANT @, pRecordset AS VARIANT @) AS VARIANT
? " "+program() + ' ' + TRANSFORM(DATETIME())
PROCEDURE Recordsetevents_EndOfRecordset(fMoreData AS LOGICAL @, adStatus AS VARIANT @, pRecordset AS VARIANT @) AS VARIANT
? " "+program() + ' ' + TRANSFORM(DATETIME())
PROCEDURE Recordsetevents_FetchProgress(Progress AS Number @, MaxProgress AS Number @, adStatus AS VARIANT @, pRecordset AS VARIANT @) AS VARIANT
? " "+program() + ' ' + TRANSFORM(DATETIME())
PROCEDURE Recordsetevents_FetchComplete(pError AS VARIANT @, adStatus AS VARIANT @, pRecordset AS VARIANT @) AS VARIANT
? " "+program() + ' ' + TRANSFORM(DATETIME())
ENDDEFINE

Vea también

DEFINE CLASS (Comando)


EXECSCRIPT( ) (Función)

Permite ejecutar múltiples líneas de código de variables, tablas y otro texto en tiempo de ejecución.

ExecScript(cExpression [, eParameter1, eParameter2, ...])

Parámetros

cExpression
Representa el texto, una variable, cadena de tipo o memo que se ejecutará como código.
eParameter1, eParameter2, ...
Opcional. Especifica parámetros pasado a una secuencia de comandos que tiene una declaración de parámetros en la primera línea.

Valores devueltos

El valor devuelto es el valor que devuelve la secuencia de comandos en cExpression. Si la secuencia de comandos no devuelve ningún valor, Visual FoxPro devuelve verdadero (.T.).

Observaciones

ExecScript( ), a diferencia de la expansión de macro, ofrece el mismo resultado que seleccionar varias líneas de código de la ventana de comandos en la ventana de comandos y después presionar la tecla ENTRAR.

Ejemplo

Este ejemplo crea un formulario y muestra el valor de la propiedad AutoCenter en el nuevo objeto Form object. Note la utilización de CHR(13), necesario para separar dos líneas de código.

?EXECSCRIPT("oForm=CREATEOBJECT('Form')"+CHR(13)+"?oForm.AutoCenter")

Vea también

COMPILE (Comando) | Controlar errores en tiempo de ejecución | ON ERROR (Comando)


EXP( ) (Función)

Devuelve el valor de ex donde x es una expresión numérica especificada.

EXP(nExpression)

Valores devueltos

Numérico

Parámetros

nExpression
Especifica el exponente, x, en la expresión exponencial ex

Observaciones

El valor de e, la base de los logaritmos naturales, es aproximadamente 2,71828. El número de lugares decimales devueltos por EXP( ) se especifica con SET DECIMALS.

Ejemplo

? EXP(0)  && Displays 1.00
? EXP(1)  && Displays 2.72

Vea también

LOG( ) | SET DECIMALS | LOG( ) (Función)


FCHSIZE( ) (Función)

Cambia el tamaño de un archivo abierto con una función de archivo de bajo nivel.

FCHSIZE(nFileHandle, nNewFileSize)

Valores devueltos

Numérico

Parámetros

nFileHandle
Especifica el controlador del archivo cuyo tamaño desea cambiar. El controlador de archivo lo devuelve FOPEN( ) al abrir el archivo o FCREATE( ) al crear el archivo. Si abre un archivo con FOPEN( ), deberá volver a abrirlo con privilegios de escritura o de lectura y escritura para poder cambiar su tamaño.
nNewFileSize
Especifica el nuevo tamaño del archivo, en bytes. Si nNewFileSize es menor que el tamaño original del archivo, se truncará el archivo. Si nNewFileSize es mayor que el tamaño original del archivo, se aumentará el tamaño del archivo.

Observaciones

Utilice FCHSIZE( ) para aumentar el tamaño del archivo o truncar el archivo a partir de un byte especificado.

Cuando se aumenta el tamaño de un archivo, Microsoft Visual FoxPro asigna sectores para el archivo en la unidad en la que está abierto el archivo. Como FCHSIZE( ) no inicializa el espacio del archivo nuevo, el espacio podrá contener los datos antiguos. Asegúrese de administrar el espacio del archivo nuevo.

Devuelve el tamaño final del archivo en bytes. Visual FoxPro devuelve –1 si FCHSIZE( ) no es capaz de cambiar el tamaño del archivo si, por ejemplo, se ha especificado un control de archivo no válido, debido a que no hay espacio de disco suficiente o a que el archivo es de sólo lectura.

Sugerencia Esta función puede utilizarse para truncar un archivo a longitud 0.

Vea también

FCLOSE( ) | FCREATE( ) | FEOF( ) | FFLUSH( ) | FGETS( ) | FOPEN( ) | FPUTS( ) | FREAD( ) | FSEEK( ) | FWRITE( )


FCLOSE( ) (Función)

Guarda en disco y cierra un archivo o puerto de comunicación abierto con una función de archivo de bajo nivel.

FCLOSE(nFileHandle)

Valores devueltos

Logical

Parámetros

nFileHandle
Especifica el controlador del archivo de bajo nivel que desea cerrar. El controlador numérico de archivo se devuelve al crear el archivo con FCREATE( ) o al abrirlo con FOPEN( ).

Observaciones

Si el archivo se cierra correctamente, FCLOSE( ) devuelve Verdadero (.T.) y libera el controlador de archivo. Si no se puede cerrar el archivo, FCLOSE( ) devuelve Falso (.F.).

CLOSE ALL cierra también los archivos de bajo nivel.

Ver también

CLOSE ALL | FCHSIZE( ) | FCREATE( ) | FEOF( ) | FFLUSH( ) | FGETS( ) | FOPEN( ) | FPUTS( ) | FREAD( ) | FSEEK( ) | FWRITE( )


FCOUNT( ) (Función)

Devuelve el número de campos de una tabla.

FCOUNT([nWorkArea | cTableAlias])

Valores devueltos

Numérico

Parámetros

nWorkArea
Especifica el área de trabajo de la tabla cuyo número de campos devuelve FCOUNT( ).

FCOUNT( ) devuelve 0 si no hay una tabla abierta en el área de trabajo que especifique.

cTableAlias
Especifica el alias de la tabla cuyo número de campos devuelve FCOUNT( ).

Visual FoxPro genera un mensaje de error si especifica un alias de tabla que no existe.

Observaciones

Si omite los argumentos opcionales, FCOUNT( ) devuelve el número de campos de la tabla abierta en el área de trabajo seleccionada en este momento.

Ejemplo

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer  && Opens Customer table
SELECT 0
USE employee  && Opens employee table
CLEAR
? FCOUNT('CUSTOMER')     && Displays 13, # of fields in Customer
? FCOUNT('EMPLOYEE')  && Displays 22, # of fields in Employee

Vea también

DBF( ) | FIELD( ) | FSIZE( )


FCREATE( ) (Función)

Crea y abre un archivo de bajo nivel.

FCREATE(cFileName [, nFileAttribute])

Valores devueltos

Numérico

Parámetros

cFileName
Especifica el nombre del archivo que se va a crear. Se puede incluir una designación de unidad y una ruta de acceso junto con el nombre de archivo. Si no se incluye un designador de unidad o una ruta de acceso, el archivo se creará en el directorio predeterminado.
Nota Visual FoxPro no reconocerá correctamente un nombre de ruta de acceso si un nombre de disco o de directorio contiene un signo de exclamación (!).
nFileAttribute
Especifica los atributos del archivo creado. La siguiente tabla enumera los atributos de archivo que se pueden especificar.
nFileAttribute | Atributos de archivo
0 | (Predeterminado) Lectura y escritura
1 | Sólo lectura
2 | Oculto
3 | Sólo lectura/Oculto
4 | Sistema
5 | Sólo lectura/Sistema
6 | Sistema/Oculto
7 | Sólo lectura/Oculto/Sistema

Observar que un archivo creado con un valor de nFileAttribute distinto de 0 no se puede escribir con FPUTS( ) o FWRITE( ) hasta que se cierre y se vuelva a abrir el archivo.

Es posible utilizar DISPLAY STATUS o LIST STATUS para mostrar o imprimir información sobre los archivos creados y abiertos con FCREATE( ). DISPLAY STATUS y LIST STATUS dan la información siguiente sobre cada archivo abierto o creado con una función de archivo de bajo nivel:

  • La unidad, directorio y nombre de archivo
  • El número de controlador de archivo
  • La posición del puntero del archivo
  • Los atributos de lectura y escritura

Observaciones

Si ya existe un archivo con el mismo nombre que especifique, se sobrescribirá sin avisar.

FCREATE( ) asigna un número de controlador al archivo, que puede utilizarse para identificarlo en otras funciones de archivo de bajo nivel de Visual FoxPro. FCREATE( ) devuelve el número controlador cuando se crea el archivo o -1 si no se puede crear.

Sugerencia Es conveniente asignar el número de control de archivo a una variable de memoria para poder utilizarlo en otras funciones de archivos de bajo nivel.

No es posible abrir un puerto de comunicaciones con FCREATE( ). Utilizar, en cambio, FOPEN( ) para abrir un puerto de comunicaciones.

Ejemplo

IF FILE('errors.txt')  && Existe el archivo?
gnErrFile = FOPEN('errors.txt',12)     && Si existe abrirlo
&& lectura-escritura
ELSE
gnErrFile = FCREATE('errors.txt')            && Si no crearlo
ENDIF
IF gnErrFile < 0     && Comprobar error al abrir archivo
WAIT 'Cannot open or create output file' WINDOW NOWAIT
ELSE  && If no error, write to file
=FWRITE(gnErrFile , 'Escribir aquí información de Error')
ENDIF
=FCLOSE(gnErrFile )     && Cerrar archivo
IF gnErrFile > 0
MODIFY FILE errors.txt NOWAIT  && Abrir archivo en ventana edición
ENDIF

Ver también

CLOSE ALL | FCHSIZE( ) | FCREATE( ) | FEOF( ) | FFLUSH( ) | FGETS( ) | FOPEN( ) | FPUTS( ) | FREAD( ) | FSEEK( ) | FWRITE( )


FDATE( ) (Función)

Devuelve la última modificación DATE o DATETIME de un archivo.

FDATE(cFileName [, nType])

Valores devueltos

Date

Parámetros

cFileName
Especifica el nombre del archivo cuya última fecha de modificación devuelve FDATE( ). cFileName puede incluir una ruta de acceso con el nombre del archivo. Si no se incluye una ruta de acceso con el nombre de archivo, Visual FoxPro busca el archivo en el directorio predeterminado y en los directorios especificados con SET PATH.
nType
Especifica que FDATE( ) devuelva la última modificación de fecha o fecha y hora del archivo especificado con cFileName. Si nType es 0, se devuelve la última modificación de fecha. Incluir 0 es lo mismo que omitir nType. Si nType es 1, se devuelve la última modificación de fecha y hora.

Observaciones

El sistema operativo asigna al archivo el valor de fecha o de fecha y hora que devuelve FDATE( ).

Utilice LUPDATE( ) para determinar la última fecha de modificación de una tabla abierta.

Ejemplo

El ejemplo siguiente usa FDATE( ) para mostrar la última modificación de fecha y hora de Foxuser.dbf, el archivo de recursos de Visual FoxPro.

? FDATE('FOXUSER.DBF', 1)  && Displays the last modification DateTime

Vea también

FTIME( ) | LUPDATE( ) | DATE( ) (Función)


FEOF( ) (Función)

Determina si el puntero de archivo se encuentra o no al final de un archivo.

FEOF(nFileHandle)

Valores devueltos

Logical

Parámetros

nFileHandle
Especifica el número del controlador de archivo del archivo para comprobar la condición de fin de archivo. FEOF( ) siempre devolverá verdadero (.T.) si especifica un número de controlador de archivo de un puerto de comunicaciones abierto con FOPEN( ).

Observaciones

Esta función de archivo de bajo nivel devuelve verdadero (.T.) si el puntero de archivo está situado al final de un archivo abierto con una función de archivo de bajo nivel. FEOF( ) devuelve falso (.F.) si el puntero del archivo no está al final del archivo.

Ejemplo

*** Open the file test.txt ***
gnFileHandle = FOPEN('test.txt')
*** Move the file pointer to BOF ***
gnPosition = FSEEK(gnFileHandle, 0)
*** If file pointer is at BOF and EOF, the file is empty ***
*** Otherwise the file must have something in it ***
IF FEOF(gnFileHandle)
WAIT WINDOW 'This file is empty!' NOWAIT
ELSE
WAIT WINDOW 'This file has something in it!' NOWAIT
ENDIF
= FCLOSE(gnFileHandle)

Ver también

FCHSIZE( ) | FCLOSE( ) | FCREATE( ) | FGETS( ) | FOPEN( ) | FPUTS( ) | FREAD( ) | FSEEK( ) | FWRITE( )


FERROR() (Función)

Devuelve un número correspondiente al error de función de archivo de bajo nivel más reciente.

FERROR( )

Valores devueltos

Numérico (Numérico)

Observaciones

FERROR( ) devuelve 0 si una función de archivo de bajo nivel se ejecuta correctamente. Si la función no termina con éxito se devuelve un valor positivo. La tabla siguiente muestra cada número de error devuelto por FERROR( ) y la causa del error.

Número de error | Causa del error
2 | Archivo no encontrado
4 | Demasiados archivos abiertos (no hay controladores de archivo)
5 | Acceso denegado
6 | Controlador de archivo no válido
8 | Memoria insuficiente
25 | Error de búsqueda (no puede buscar antes del comienzo de un archivo)
29 | Disco lleno
31 | Error al abrir archivo

Vea también

FCHSIZE( ) | FCLOSE( ) | FCREATE( ) | FEOF( ) | FFLUSH( ) | FGETS( ) | FOPEN( ) | FPUTS( ) | FREAD( ) | FSEEK( ) | FWRITE( )


FFLUSH( ) (Función)

Vacía en disco un archivo abierto con una función de bajo nivel.

FFLUSH(nFileHandle)

Valores devueltos

Lógico

Parámetros

nFileHandle
Especifica el controlador del archivo que se va a vaciar en disco.

Observaciones

FFLUSH( ) libera también la memoria utilizada por el búfer del archivo.

FLUSH es distinto de la función FFLUSH( ). FLUSH no actúa con archivos de bajo nivel sino con tablas e índices

Ejemplo

El ejemplo siguiente abre y escribe un archivo llamado INPUT.DAT. Después de escribir las dos primeras cadenas, el programa vacía los búferes para asegurarse de que las cadenas se escriben en disco. Luego escribe las dos cadenas siguientes, vacía los búferes otra vez y cierra el archivo.

IF FILE('input.dat')
gnTestFile = FOPEN('input.dat',2)
ELSE
gnTestFile = FCREATE('input.dat')
ENDIF
gnIOBytes = FWRITE(gnTestFile,'Test output')
gnIOBytes = FWRITE(gnTestFile,' for low-level file I/O')
glFlushOk = FFLUSH(gnTestFile)
gnIOBytes = FWRITE(gnTestFile,'Test output2')
gnIOBytes = FWRITE(gnTestFile,' for low-level file I/O')
glFlushOk = FFLUSH(gnTestFile)
glCloseOk = FCLOSE(gnTestFile)
MODIFY FILE input.dat NOWAIT NOEDIT

Vea también

FCHSIZE( ) | FCLOSE( ) | FCREATE( ) | FEOF( ) | FGETS( ) | FOPEN( ) | FPUTS( ) | FREAD( ) | FSEEK( ) | FWRITE( )


FGETS( ) (Función)

Devuelve un conjunto de bytes desde un archivo o un puerto de comunicaciones abierto con una función de archivo de bajo nivel hasta encontrar un retorno de carro.

FGETS(nFileHandle [, nBytes])

Valores devueltos

Carácter

Parámetros

nFileHandle
Especifica el controlador numérico del archivo o el puerto de comunicación desde el que FGETS( ) devuelve datos.
nBytes
Especifica el número de bytes devueltos por FGETS( ). FGETS( ) devuelve nBytes a menos que encuentre primero un retorno de carro. FGETS( ) devuelve datos entre la posición inicial del puntero del archivo y el retorno de carro si se encuentra un retorno de carro dentro de los nBytes bytes.

FGETS( ) devuelve un máximo de 8192 bytes. Si se omite nBytes, FGETS( ) devuelve de forma predeterminada 254 bytes.

Observaciones

Se puede leer un archivo línea a línea ejecutando varias funciones FGETS( ).

FGETS( ) devuelve un conjunto de bytes como una cadena de caracteres. Se devuelven los datos encontrados a partir de la posición actual del puntero del archivo y hasta que se encuentra un retorno de carro. El puntero de archivo se coloca entonces en el byte inmediatamente siguiente al retorno de carro. El retorno de carro no se devuelve como parte de la cadena y los saltos de línea se descartan.

Ejemplo

*** TEST.TXT debe existir ***
STORE FOPEN('test.txt') TO gnFileHandle    && Abrir el archivo
STORE FSEEK(gnFileHandle, 0, 2) TO gnEnd   && Mover puntero a EOF
STORE FSEEK(gnFileHandle, 0) TO gnTop      && Mover puntero a BOF
IF gnEnd <= 0  && Está vacío el archivo?
WAIT WINDOW 'Este archivo está vacío!' NOWAIT
ELSE  && If not
gcString = FGETS(gnFileHandle, gnEnd)  && Almacena contenido
? gcString
ENDIF
= FCLOSE(gnFileHandle)  && Cierra el archivo

Ver también

FCHSIZE( ) | FCLOSE( ) | FCREATE( ) | FEOF( ) | FFLUSH( ) | FILETOSTR( ) | FOPEN( ) | FPUTS( ) | FREAD( ) | FSEEK( ) | FWRITE( )


FIELD( ) (Función)

Devuelve el nombre de un campo, al que se hace referencia por su número, en una tabla.

FIELD(nFieldNumber | cFieldName [, nWorkArea | cTableAlias [, nFlags]])

Parámetros

nFieldNumber
Especifica el número de campo. Si nFieldNumber es 1, se devuelve el nombre del primer campo de la tabla, si nFieldNumber es 2, se devuelve el nombre del segundo campo, y así sucesivamente. Si nFieldNumber es mayor que el número de campos, se devuelve la cadena vacía. Los nombres de campo se devuelven en mayúsculas.
cFieldName
Especifica el nombre de un campo. Esto se usa principalmente para recuperar el título del campo actual como aparece almacenado en el contenedor base de datos (DBC) cuando se utiliza con el parámetro nFlags.

Si el título del campo es una expresión (=), la expresión se evalúa. De otro modo, se devuelve la cadena actual. Si la expresión no se puede evaluar en tiempo de ejecución, se activa un error, y se devuelve el nombre del campo actual.

nWorkArea
Especifica el área de trabajo de la tabla cuyos nombres de campo devuelve FIELD( ).

FIELD( ) devuelve la cadena vacía si no hay ninguna tabla abierta en el área de trabajo especificada.

cTableAlias
Especifica el alias de la tabla cuyos nombres de campo devuelve FIELD( ).

Visual FoxPro genera un mensaje de error si especifica un alias de tabla que no existe.

nFlags
Especifica si se devuelve el nombre del campo actual o el título del mismo.
nFlags | Descripción del valor
0 Devuelve al nombre del campo actual.

FIELD( ) conserva las MAY/min en el nombre devuelto, siempre que esté almacenado una DBC.
1 | Devuelve el título del campo. Si el títulos del campo es una expresión, devuelve el valor evaluado.

Valores devueltos

Dato tipo Carácter. Si se omiten los argumentos opcionales, FIELD( ) devuelve los nombres de los campos en la tabla abierta en el área de trabajo seleccionada actualmente.

Observaciones

Se puede usar la función SELECT( ) para determinar el área de trabajo actual para nWorkArea y la función ALIAS( ) para determinar el alias de la tabla en el área de trabajo actual para cTableAlias. Para más información, ver SELECT( ) (Función) y ALIAS( ) (Función).

Ejemplo

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer  && Abre la tabla Customer
CLEAR
FOR gnCount = 1 TO FCOUNT( )  && Bucle para el número de campos
? FIELD(gnCount)  && Muestra cada campo
NEXT
?
? 'Número de campos: ' + ALLTRIM(STR(gnCount -1))

Ver también

DISPLAY STRUCTURE | FCOUNT( ) | FSIZE( )


FILE( ) (Función)

Ubica el archivo especificado.

FILE(cFileName [, nFlags])

Parámetros

cFileName
Especifica el nombre del archivo que desea encontrar. cFileName debe incluir la extensión del archivo. Se puede incluir una ruta con el nombre de archivo a buscar para un archivo que está en un directorio o disco diferente a los actuales.

Visual FoxPro busca el archivo en el directorio predeterminado. Si el archivo no puede encontrarse en el directorio predeterminado, se buscará en la ruta de acceso de Visual FoxPro establecida con SET PATH..

nFlags
Especifica el tipo de valor devuelto por FILE( ) cuando el archivo existe pero está marcado con el atributo Hidden o System. La siguiente tabla muestra los valores paranFlags.
nFlags | Descripción
0 | FILE( ) devuelve Falso (.F.) si el archivo existe pero está marcado con el atributo Hidden o System. (Predeterminado)
1 | FILE( ) devuelve Verdadero (.T.) si el archivo existe, independientemente de sus atributos. Establecer nFlags a 1 permite verificar archivos ocultos o de sistema.

Valores devueltos

Dato tipo Lógico. FILE( ) devuelve Verdadero (.T.) si el archivo especificado se encuentra en el disco; de otro modo, devuelve Falso (.F.).

Observaciones

Se puede utilizar la función ADIR( ) para recuperar atributos específicos del archivo.

Se puede usar los comandos CD y CHDIR para cambiar a directorios ocultos.

Ejemplo

El siguiente ejemplo muestra un mensaje indicando si el archivo de recursos de Visual FoxPro existe en el directorio de inicio.

SET PATH TO HOME( )
CLEAR
IF FILE('foxuser.dbf')
WAIT WINDOW 'El archivo de recursos de Visual FoxPro existe'
ELSE
WAIT WINDOW 'El archivo de recursos de Visual FoxPro no existe'
ENDIF

Ver también

Funciones | ADIR( ) (Función) | CD | CHDIR (Comando) | FULLPATH( ) | GETFILE( ) | LOCFILE( )


FILETOSTR( ) (Función)

Devuelve el contenido de un archivo como una cadena de caracteres.

FILETOSTR(cFileName)

Valores devueltos

Carácter (Character)

Parámetros

cFileName
Especifica el nombre del archivo cuyo contenido se devuelve como una cadena de carácteres. Si el archivo se encuentra en un directorio diferente del directorio predeterminado actual, incluya una ruta de acceso con el nombre de archivo.

Observaciones

Observe que la cadena de carácteres que FILETOSTR( ) devuelve puede ser de gran tamaño. La cantidad de memoria o de espacio de disco disponible determina si puede almacenar la cadena de caracteres en una variable de memoria, un elemento de matriz o un campo memo. Además, en Visual FoxPro los campos de caracteres están limitados a 254 carácteres. Consulte Capacidades del sistema de Visual FoxPro para obtener más información sobre las limitaciones de los datos de tipo Carácter.

Ejemplo

El siguiente código carga REDIST.TXT en una cadena de caracteres, luego cuenta la cantidad de módulos de combinación mencionados en el texto. REDIST.TXT ships con Microsoft Visual FoxPro y lista, which Visual FoxPro files, pueden ser distribuidos con sus aplicaciones.

CD HOME()
cRedist=FILETOSTR("REDIST.TXT")
?OCCURS(".MSM",cRedist)

Vea también

FGETS( ) | FREAD( ) | STRTOFILE( ) | Capacidades del sistema de Visual FoxPro


FILTER( ) (Función)

Devuelve la expresión de filtro especificada en SET FILTER para la tabla.

FILTER([nWorkArea | cTableAlias])

Valores devueltos

Carácter (Character)

Parámetros

nWorkArea
Especifica el área de trabajo de la tabla cuya expresión de filtro devuelve FILTER( ).

FILTER( ) devuelve la cadena vacía si no hay ninguna tabla abierta en el área de trabajo especificada.

cTableAlias
Especifica el alias de la tabla cuya expresión de filtro devuelve FILTER( ).

Visual FoxPro genera un mensaje de error si especifica un alias de tabla que no existe.

Observaciones

Si omite los argumentos opcionales, FILTER( ) devuelve la expresión de filtro para la tabla abierta en el área de trabajo seleccionada en este momento. Para obtener más información acerca de la creación de un filtro, vea SET FILTER.

Ejemplo

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer  && Opens Customer table
SET TALK ON
SET FILTER TO SUBSTR(cust_id,1) = 'B'
CLEAR
? FILTER( )  && Display filter expression
STORE FILTER('customer') TO gcOldFilter    && Save filter expression
SET FILTER TO country = 'USA'
? FILTER( )  && Display filter expression
SET FILTER TO &gcOldFilter    && Restore filter expression
? FILTER( )  && Display filter expression
LIST FIELDS cust_id, contact  && Demonstrate filter condition

Vea también

SET FILTER | Filter (Propiedad)


FKLABEL( ) (Función)

Devuelve el nombre de la tecla de función (F1, F2, F3,...) desde su número de tecla de función correspondiente.

FKLABEL(nFunctionKeyNumber)

Valores devueltos

Character

Parámetros

nFunctionKeyNumber
Especifica el número de tecla de función. El valor de nFunctionKeyNumber deberá ser de 0 al número de teclas de función, menos 1. FKLABEL( ) devuelve la cadena nula si nFunctionKeyNumber es mayor que el número de teclas de función menos 1. El número de teclas de función puede determinarse con FKMAX( ).

Observaciones

Las teclas de función pueden programarse con SET FUNCTION.

El valor devuelto por FKLABEL( ) se ve afectado por SET COMPATIBLE. Cuando COMPATIBLE tiene el valor FOXPLUS (el valor predeterminado), FKLABEL( ) devuelve las teclas de funciones. Cuando COMPATIBLE está establecida en DB4, FKLABEL( ) devuelve las teclas de función y las combinaciones de teclas de función (F1, CTRL+F1, MAYÚS+F1, F2, CTRL+F2, MAYÚS+F2...).

Ejemplo

CLEAR
SET COMPATIBLE OFF
? 'COMPATIBLE OFF'
?
FOR nCount = 1 TO FKMAX( )  && Loop for # of function keys
? FKLABEL(nCount)  && Display programmable function keys
ENDFOR
SET COMPATIBLE ON
?
? 'COMPATIBLE ON'
?
FOR nCount = 1 TO FKMAX( )  && Loop for # of function keys
? FKLABEL(nCount)  && Display programmable function keys
ENDFOR

Vea también

FKMAX( ) | SET COMPATIBLE | SET FUNCTION


FKMAX( ) (Función)

Devuelve el número de teclas de función programables o combinaciones de teclas de función del teclado.

FKMAX( )

Valores devueltos

Numérico

Observaciones

El valor devuelto por FKMAX( ) se ve afectado por SET COMPATIBLE. Cuando SET COMPATIBLE tiene el valor FOXPLUS (el valor predeterminado), FKMAX( ) devuelve el número de teclas de función. Cuando SET COMPATIBLE es DB4, FKMAX( ) devuelve el número de teclas de función y combinaciones de teclas de función (F1, CTRL+F1, MAYÚS+F1, F2, CTRL+F2, MAYÚS+F2...).

Ejemplo

CLEAR
SET COMPATIBLE OFF
? 'COMPATIBLE OFF'
?
FOR nCount = 1 TO FKMAX( )  && Loop for # of function keys
? FKLABEL(nCount)  && Display programmable function keys
ENDFOR
SET COMPATIBLE ON
?
? 'COMPATIBLE ON'
?
FOR nCount = 1 TO FKMAX( )  && Loop for # of function keys
? FKLABEL(nCount)  && Display programmable function keys
ENDFOR

Vea también

FKLABEL( ) | SET COMPATIBLE | SET FUNCTION


FLDLIST( ) (Función)

Se incluye por compatibilidad con dBASE.


FLOCK( ) (Función)

Intenta bloquear la tabla actual o especificada.

FLOCK([nWorkArea | cTableAlias])

Valores devueltos

Lógico

Parámetros

nWorkArea
Especifica el área de trabajo de la tabla que FLOCK( ) intenta bloquear.

FLOCK( ) devuelve falso (.F.) si no hay ninguna tabla abierta en el área de trabajo especificada.

cTableAlias
Especifica el alias de la tabla que FLOCK( ) intenta bloquear.

Visual FoxPro genera un mensaje de error si especifica un alias de tabla que no existe.

Observaciones

FLOCK( ) devolverá verdadero (.T.) si logra bloquear la tabla y devolverá falso (.F.) si la tabla o algún registro de la tabla ya están bloqueados por otro usuario.

Si omite los argumentos opcionales, FLOCK( ) intenta bloquear la tabla abierta en el área de trabajo seleccionada actualmente.

Nota Si FLOCK( ) falla al bloquear una tabla, devolverá falso (.F.) y no generará un error. Por tanto, no puede utilizar FLOCK( ) para activar una rutina ON ERROR.

Cuando se bloquea una tabla, la tabla estará disponible tanto para lectura como para escritura para el usuario que ha efectuado el bloqueo. Los otros usuarios de la red tendrán acceso de sólo lectura sobre la tabla. Para obtener información acerca de cómo bloquear una tabla y evitar el acceso de otros usuarios, vea SET EXCLUSIVE y USE.

Una tabla permanece bloqueada hasta que sea desbloqueada por el usuario que efectuó el bloqueo. La tabla puede desbloquearse al ejecutar UNLOCK, al cerrar la tabla o al salir de Visual FoxPro. Las tablas pueden cerrarse con USE, CLEAR ALL o CLOSE DATABASES.

De forma predeterminada, FLOCK( ) intenta bloquear una tabla una vez. Utilice SET REPROCESS para reintentar bloquear automáticamente una tabla cuando falle el primer intento. SET REPROCESS determina el número de intentos de bloqueo o el periodo de tiempo durante el que se intentará efectuar el bloqueo, si fracasa el intento de bloqueo inicial. Para obtener más información, vea SET REPROCESS.

Puede establecer relaciones entre dos o más tablas con SET RELATION. Al efectuar un bloqueo sobre una tabla que está relacionada con una o más tablas no se efectuará un bloqueo de archivo sobre las tablas relacionadas. Debe activar y quitar explícitamente los bloqueos de las tablas relacionadas.

Para obtener información adicional acerca del bloqueo de registros y archivos, y el uso compartido de tablas en una red, vea Programar para acceso compartido.

Ejemplo

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE products  && Opens products table
SET REPROCESS TO 3 SECONDS
SELECT * FROM products INTO TABLE newprods
IF FLOCK( )
*** New product initialization ***
REPLACE ALL in_stock  WITH 0.00
REPLACE ALL on_order WITH 0.00
WAIT 'Initialization Complete' WINDOW NOWAIT
ELSE
*** File is locked, warn user ***
WAIT WINDOW 'Unable to open products file; try again later!' NOWAIT
ENDIF
BROWSE FIELDS in_stock, on_order && Displays newprods table
USE
ERASE newprods.dbf

Vea también

LOCK( ) | RLOCK( ) | SET REPROCESS | SET RELATION | UNLOCK | USE | SET EXCLUSIVE | ISFLOCKED( ) (Función) | ISRLOCKED( ) (Función)


FLOOR( ) (Función)

Devuelve el entero más próximo que sea menor o igual que la expresión numérica especificada.

FLOOR(nExpression)

Valores devueltos

Numérico

Parámetros

nExpression
Especifica la expresión numérica para la cual FLOOR( ) devuelve el entero más próximo que sea menor o igual que la expresión numérica.

Ejemplo

STORE  10.9 TO gnNumber1
STORE -10.1 TO gnNumber2
CLEAR
? FLOOR(gnNumber1)  && Displays 10
? FLOOR(gnNumber2)  && Displays -11
? FLOOR(10.0)  && Displays 10
? FLOOR(-10.0)  && Displays -10

Vea también

CEILING( ) | INT( ) | ROUND( )


FONTMETRIC( ) (Función)

Devuelve los atributos de fuente de las fuentes instaladas actualmente en el sistema operativo.

FONTMETRIC(nAttribute [, cFontName, nFontSize [, cFontStyle]])

Valores devueltos

Numérico

Parámetros

nAttribute
Determina el atributo de fuente devuelto por FONTMETRIC( ). Si omite cFontName, nFontSize y cFontStyle, FONTMETRIC( ) devolverá un atributo para la fuente actual de la ventana de resultado activa.

La tabla siguiente muestra los valores de nAttribute y los atributos de fuente correspondientes devueltos.

nAttribute | Atributo
1 | Altura del carácter en píxeles
2 | Elevación del carácter (unidades sobre la línea base) en píxeles
3 | Caída del carácter (unidades bajo la línea base) en píxeles
4 | Interlineado (separación entre líneas) en píxeles
5 | Interlineado extra en píxeles
6 | Ancho promedio del carácter en píxeles
7 | Ancho máximo del carácter en píxeles
8 | Peso de la fuente
9 | Cursiva (0 = no, distinto de cero = sí)
10 | Subrayado (0 = no, distinto de cero = sí)
11 | Tachado (0 = no, distinto de cero = sí)
12 | Primer carácter definido en la fuente
13 | Último carácter definido en la fuente
14 | Carácter predeterminado (sustituido por los caracteres que no estén en la fuente)
15 | Carácter para dividir palabras
16 | Densidad y familia
17 | Juego de caracteres
18 | Saliente (ancho extra agregado)
19 | Aspecto horizontal para dispositivo de fuente
20 | Aspecto vertical para dispositivo de fuente

Para obtener más información sobre los valores numéricos devueltos por FONTMETRIC( ), consulte la función TEXTMETRIC en la Referencia del programador de Microsoft Windows.

cFontName
Especifica el nombre de una fuente instalada.
nFontSize
Especifica el tamaño del punto de la fuente especificada con cFontName.
cFontStyle
Especifica un código de estilo de fuente para la fuente especificada con cFontName. Si se omite cFontStyle, FONTMETRIC( ) devolverá el atributo para el estilo de fuente Normal.

cFontStyle puede ser un carácter o una combinación de caracteres mostrada en la tabla de estilo de fuente siguiente. Por ejemplo, la combinación BI indica el estilo de fuente Cursiva Negrita.

Carácter | Estilo de la fuente
B | Negrita
I | Cursiva
N | Normal
O | Contorno
Q | Opaco
S | Sombra
– Tachado
T | Transparente
U | Subrayado

Observaciones

FONTMETRIC( ) devuelve atributos de fuente para la fuente actual en la ventana de resultado activa. Se puede utilizar WFONT( ) para determinar la fuente de la ventana actual.

Vea también

AFONT( ) | Introducción a las fuentes | GETFONT( ) | SYSMETRIC( ) | TXTWIDTH( ) | WFONT( )


FOPEN( ) (Función)

Abre un archivo o puerto de comunicaciones para utilizarlo con funciones de archivo de bajo nivel.

FOPEN(cFileName [, nAttribute])

Valores devueltos

Numérico

Parámetros

cFileName
Especifica el nombre del archivo que se va a abrir. cFileName puede incluir una ruta para archivos abiertos en directorios o unidades que no estén en la ruta de búsqueda actual de Microsoft Visual FoxPro. Si no se incluye la ruta, Visual FoxPro buscará el archivo en las siguientes ubicaciones:
  • El directorio predeterminado
  • La ruta de acceso establecida con SET PATH
    Nota Visual FoxPro no reconocerá correctamente un nombre de ruta de acceso si el nombre del disco o del directorio contiene un signo de admiración (!).
nAttribute
Especifica privilegios de lectura/escritura o el esquema de almacenamiento en búfer para el archivo que abra. La tabla siguiente lista cada número que puede incluir en nAttribute, y los privilegios de lectura/escritura del archivo y el esquema de almacenamiento en búfer que establece.
nAttribute | Privilegios de lectura-escritura | Con búfer/Sin búfer
0 | (Default) Read-only | Con búfer
1 | Sólo escritura | Con búfer
2 | Lectura y escritura | Con búfer
10 | Sólo lectura | Sin búfer
11 | Sólo escritura | Sin búfer
12 | Lectura y escritura | Sin búfer

Si no se incluye nAttribute o si nAttribute se evalúa a 0, el archivo se abrirá como sólo lectura y con búfer.

Nota Visual FoxPro no reconocerá correctamente un nombre de ruta de acceso si el nombre del disco o del directorio contiene un signo de admiración (!).

Observaciones

Si FOPEN( ) abre correctamente el archivo, devolverá el número del identificador de archivo. Si no se puede abrir el archivo, FOPEN( ) devolverá –1.

Sugerencia Asignar el número de controlador de archivo a una variable de memoria, permitirá tener acceso al archivo o puerto de comunicaciones a traves de esta variable de memoria en otras funciones de archivo de bajo nivel.

DISPLAY STATUS y LIST STATUS permiten mostrar o enviar a una impresora la siguiente información acerca de los archivos abiertos con FOPEN( ).

  • La unidad, el directorio y el nombre del archivo
  • El número de controlador de archivo
  • La posición del puntero del archivo
  • Los atributos de lectura-escritura

Ejemplo

IF FILE('errors.txt')  && Existe el archivo?
gnErrFile = FOPEN('errors.txt',12)  && Si, abrirlo lectura-escritura
ELSE
gnErrFile = FCREATE('errors.txt')  && No, crearlo
ENDIF
IF gnErrFile < 0  && Comprobar error al abrir el archivo
WAIT 'No se puede abrir o crear el archivo' WINDOW NOWAIT
ELSE  && If no error, write to file
=FWRITE(gnErrFile, 'Escribir aquí información de Error')
ENDIF
=FCLOSE(gnErrFile)  && Cerrar archivo
MODIFY FILE errors.txt NOWAIT  && Abrir archivo en ventana edición

Ver también

CLOSE ALL | FCHSIZE( ) | FCLOSE( ) | FCREATE( ) | FEOF( ) | FFLUSH( ) | FGETS( ) | FPUTS( ) | FREAD( ) | FSEEK( ) | FWRITE( )


FOR( ) (Función)

Devuelve la expresión de filtro de índice, en mayúsculas, de un archivo de índice de una sola entrada (.idx) abierto o de una etiqueta de índice.

FOR([nIndexNumber [, nWorkArea | cTableAlias]])

Valores devueltos

Carácter

Parámetros

Si no incluye ninguno de los argumentos opcionales, FOR( ) devuelve la expresión de filtro de índice para archivo índice maestro o etiqueta de índice. Si el archivo índice maestro o etiqueta de índice no está en uso (por ejemplo si utilizó SET ORDER TO para ordenar los registros de la tabla en forma física), FOR( ) devuelve una cadena vacía.

nIndexNumber
Especifica el archivo índice o etiqueta de la cual la expresión de índice es devuelta. FOR( ) devuelve las expresiones de filtro en el siguiente orden de acuerdo a como nIndexNumber aumenta de 1 al número total de archivos de una sola entrada abiertos y de etiquetas de índice compuesto estructural y compuesto independientes:
  1. Primero devuelve las expresiones de filtro de archivos de índice de una sola entrada (si hay alguno abierto). El orden en que se incluyen los archivos de índice de una sola entrada en USE o SET INDEX determina el orden en que se devuelven las expresiones de filtro.
  2. A continuación se devuelven las expresiones de filtro para cada etiqueta del índice compuesto estructural (si lo hay). Las expresiones de filtro de las etiquetas se devuelven en el orden en que se crearon dichas etiquetas en el índice estructural.
  3. Por último se devuelven las expresiones de filtro para cada etiqueta de cualquier índice compuesto independiente. Las expresiones de filtro de las etiquetas se devuelven en el orden de creación de las etiquetas en los índices compuestos independientes.

    Se devuelve la cadena vacía si un índice o una etiqueta de índice se crearon sin la cláusula FOR, o si nIndexNumber es mayor que el número total de archivos de índice de una sola entrada abiertos más las etiquetas de índice compuesto independiente y compuesto estructural.

nWorkArea
Especifica el área de trabajo de la tabla sobre la que FOR( ) devuelve las expresiones de filtro de índice.

FOR( ) devuelve una cadena vacía si la tabla no está abierta en el área de trabajo especificada.

cTableAlias
Especifica el alias de la tabla sobre la que FOR( ) devuelve las expresiones de filtro de índice.

Visual FoxPro genera un mensaje de error si especifica un alias de tabla que no existe.

Observaciones

Es posible crear índices filtrados en Visual FoxPro. Si incluye la cláusula opcional FOR lExpression en INDEX, el archivo de índice actúa como filtro en la tabla. Solamente están disponibles para su visualización y acceso los registros que coincidan con la expresión de filtro lExpression. Las claves de índice se crean en el archivo de índice solamente para los registros que coincidan con la expresión de filtro.

Los comandos USE y SET INDEX, admiten una lista de nombres de archivos índices que permiten abrir múltiples índices para una tabla. Cualquier combinación de nombres archivos de una sola entrada, nombres de archivo de índice compuesto estructural, o nombres de archivo de índice compuesto independiente, puede ser incluida en la lista de nombre de archivos índices. FOR( ) es similar a SYS(2021) y se proporciona para compatibilidad con dBASE IV.

Vea también

INDEX (Comando)


FORCEEXT( ) (Función)

Devuelve una cadena con la extensión de archivo anterior reemplazada por una nueva extensión.

FORCEEXT(cFileName, cExtension)

Valores devueltos

Character

Parámetros

cFileName
Especifica el nombre de archivo (con o sin una ruta o extensión), que recibirá una extensión nueva.
cExtension
Especifica la nueva extensión (sin el punto) de cFileName.

Vea también

ADDBS( ) | DEFAULTEXT( ) | FILE( ) | FORCEPATH( ) | JUSTDRIVE( ) | JUSTEXT( ) | JUSTFNAME( ) | JUSTPATH( ) | JUSTSTEM( )


FORCEPATH( ) (Función)

Devuelve un nombre de archivo con una nueva ruta de acceso en lugar de la ruta anterior.

FORCEPATH(cFileName, cPath)

Valores devueltos

Character

Parámetros

cFileName
Especifica el nombre de archivo (con o sin ruta o extensión), que recibirá una ruta nueva.
cPath
Especifica la nueva ruta de cFileName.

Vea también

ADDBS( ) | DEFAULTEXT( ) | FILE( ) | FORCEEXT( ) | JUSTDRIVE( ) | JUSTEXT( ) | JUSTFNAME( ) | JUSTPATH( ) | JUSTSTEM( )


FOUND( ) (Función)

Devuelve verdadero (.T.) si CONTINUE, FIND, INDEXSEEK( ), LOCATE o SEEK tienen éxito.

FOUND([nWorkArea | cTableAlias])

Valores devueltos

Lógico

Parámetros

nWorkArea
Especifica el área de trabajo de la tabla sobre la cual FOUND( ) devuelve el valor indicando si ha tenido éxito el último comando CONTINUE, FIND, INDEXSEEK( ), LOCATE o SEEK.

FOUND( ) devuelve falso (.F.) si la tabla no esta abierta en el área de trabajo especificada.

cTableAlias
Especifica el alias de la tabla sobre la cual FOUND( ) devuelve el valor indicando si ha tenido éxito el último comando CONTINUE, FIND, INDEXSEEK( ), LOCATE, o SEEK.

Visual FoxPro genera un mensaje de error si especifica un alias de tabla que no existe.

Observaciones

FOUND( ) devuelve un valor lógico que indica si el comando mas recientemente ejecutado CONTINUE, FIND, INDEXSEEK( ), LOCATE o SEEK ha tenido éxito, o si el puntero de registro se ha movido en la tabla relacionada. FOUND( ) devuelve verdadero (.T.) si la busqueda se ha realizado con éxito; en caso contrario FOUND( ) devuelve falso (.F.).

Si se omiten los argumentos opcionales, FOUND( ) devuelve un valor indicando el éxito del último comando CONTINUE, FIND, INDEXSEEK( ), LOCATE o SEEK para la tabla abierta en el área de trabajo actual.

Sugerencia Esta función es útil para determinar si una tabla secundaria tiene un registro que coincide con el registro primario.

Ejemplos

En el ejemplo siguiente se cuentan todos los clientes de Alemania (Germany).

SET TALK OFF
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer  && Opens Customer table
STORE 0 TO gnCount
LOCATE FOR UPPER(country) = 'GERMANY'
DO WHILE FOUND( )
gnCount = gnCount + 1
CONTINUE
ENDDO
WAIT WINDOW 'Total customers from Germany: ' ;
+ LTRIM(STR(gnCount)) NOWAIT

Vea también

CONTINUE | EOF( ) | FIND | INDEXSEEK( ) | LOCATE | SEEK


FPUTS( ) (Función)

Escribe una cadena de caracteres, retorno de carro y avance de línea en un archivo o en un puerto de comunicaciones abierto con una función de archivo de bajo nivel.

FPUTS(nFileHandle, cExpression [, nCharactersWritten])

Valores devueltos

Numérico

Parámetros

nFileHandle
Especifica el numero de controlador del archivo o puerto de comunicaciones al que FPUTS( ) escribe datos.
cExpression
Especifica la expresión alfanumérica que escribe FPUTS( ) en el archivo o puerto.
nCharactersWritten
Especifica el número de caracteres de cExpression que se deben escribir en el archivo o puerto.

FPUTS( ) escribirá toda la expresión de caracteres cExpression en el archivo en caso de que se omita nCharactersWritten. Si se incluye nCharactersWritten, escribirá en el archivo el número de caracteres indicado en nCharactersWritten. Si nCharactersWritten es menor que el número de caracteres de cExpression, solamente se escriben en el archivo los caracteres especificados en nCharactersWritten. Si nCharactersWritten es igual o mayor que el número de caracteres en cExpression se escribe cExpression completa en el archivo.

Observaciones

FPUTS( ) devuelve el número de bytes escritos en el archivo o puerto. Se devuelve 0 si FPUTS( ) no puede escribir por alguna razón en el archivo o en el puerto.

Ver también

FCHSIZE( ) | FCLOSE( ) | FCREATE( ) | FEOF( ) | FFLUSH( ) | FGETS( ) | FOPEN( ) | FREAD( ) | FSEEK( ) | FWRITE( )


FREAD( ) (Función)

Devuelve el número de bytes especificado desde un archivo abierto con una función de bajo nivel.

FREAD(nFileHandle, nBytes)

Parámetros

nFileHandle
Especifica el número de controlador de archivo para el archivo desde el cual FREAD( ) devuelve datos. Se puede obtener nFileHandle a partir del valor devuelto por instrucciones FOPEN( ) o FCREATE( ) correctamente ejecutadas.
nBytes
Especifica el número de bytes que devuelve FREAD( ) con un límite de 65,535 bytes. FREAD( ) devuelve datos a partir de la posición actual del puntero de archivo y continúa hasta que devuelve nBytes bytes o hasta que encuentra el final del archivo, lo que ocurra primero.

Valores devueltos

Dato tipo Carácter

Ejemplo

El ejemplo siguiente usa FREAD( ) para mostrar el contenido de un archivo. Si el archivo está vacío, se muestra un mensaje. Antes de utilizar este ejemplo, se debe crear un archivo de texto llamado Test.txt.

Local gnFileHandle,nSize,cString
gnFileHandle = FOPEN("test.txt")

* Busca el final de archivo para determinar el número de bytes.
nSize =  FSEEK(gnFileHandle, 0, 2)     && Mueve el puntero a EOF
IF nSize <= 0

* Si el archivo está vacío, muestra un mensaje de error.
WAIT WINDOW "This file is empty!" NOWAIT
ELSE

* Si el archivo no está vació, almacena su contenido en memoria
* y muestra el texto en la ventana principal de Visual FoxPro.
= FSEEK(gnFileHandle, 0, 0)      && Mueve el puntero a BOF
cString = FREAD(gnFileHandle, nSize)
? cString
ENDIF
= FCLOSE(gnFileHandle)         && Cierra el archivo

Ver también

FCHSIZE( ) | FCLOSE( ) | FCREATE( ) | FEOF( ) | FFLUSH( ) | FGETS( ) | FILETOSTR( ) | FOPEN( ) | FPUTS( ) | FSEEK( ) | FWRITE( )


FSEEK( ) (Función)

Mueve el puntero de archivo en un archivo abierto con una función de archivo de bajo nivel.

FSEEK(nFileHandle, nBytesMoved [, nRelativePosition])

Valores devueltos

Numérico

Parámetros

nFileHandle
Especifica el controlador del archivo dentro del cual FSEEK( ) mueve el puntero de archivo. FCREATE( ) o FOPEN( ) devuelven un número de controlador de archivo en el momento de crear o abrir el archivo.
nBytesMoved
Especifica el número de bytes en los que se desea mover el puntero de archivo. Si el valor de nBytesMoved es positivo, se mueve el puntero de archivo hacia el final del archivo. En cambio, si es negativo, se mueve el puntero de archivo hacia el principio del archivo.
nRelativePosition
Mueve el puntero del archivo hasta una posición relativa del archivo. De forma predeterminada, el puntero de archivo se moverá respecto del principio del archivo. Puede mover de forma alternativa el puntero del archivo respecto del principio o el final del archivo al incluir nRelativePosition. La tabla siguiente muestra cada valor de nRelativePosition y cómo hace que se mueva el puntero.
nRelativePosition | Mueve el puntero de archivo con respecto a
0 | (Predeterminado) El principio del archivo.
1 | La posición actual del puntero de archivo.
2 | El final del archivo.

Observaciones

Después de mover el puntero de archivo, FSEEK( ) devuelve el número de bytes que dista el puntero de archivo del principio del archivo. El puntero de archivo puede moverse también con FREAD( ) y FWRITE( ).

Ejemplo

La siguiente función definida por el usuario utiliza FSEEK( ) para devolver el tamaño de un archivo. Si no pasa parámetros a FDU, devolverá –2. Si el archivo no puede encontrarse, FDU devolverá –1.

FUNCTION fsize2
PARAMETERS gcFileName  && File to be checked
PRIVATE pnHandle,pnSize
IF PARAMETERS( ) = 0
RETURN -2  && Return -2 if no parameter passed
ELSE
IF !FILE(gcFileName)
RETURN -1  && Return -1 if file does not exist
ENDIF
ENDIF
pnHandle = FOPEN(gcFileName)   && Open file
pnSize = FSEEK(pnHandle,0,2)   && Determine file size, assign to pnSize
=FCLOSE(pnHandle)  && Close file
RETURN pnSize  && Return value

Vea también

FCHSIZE( ) | FCLOSE( ) | FCREATE( ) | FEOF( ) | FFLUSH( ) | FGETS( ) | FOPEN( ) | FPUTS( ) | FREAD( ) | FWRITE( )


FSIZE( ) (Función)

Devuelve el tamaño, en bytes, de un campo o archivo especificado.

FSIZE(cFieldName [, nWorkArea | cTableAlias] | cFileName)

Valores devueltos

Numérico

Parámetros

cFieldName
Especifica el nombre del campo.
nWorkArea
Especifica el área de trabajo de la tabla cuyo tamaño de campo devuelve FSIZE( ).

FSIZE( ) devuelve 0 si no hay ninguna tabla abierta en el área de trabajo especificada.

cTableAlias
Especifica el alias de la tabla para la cual FSIZE( ) devuelve un tamaño de campo.

Visual FoxPro genera un mensaje de error si especifica un alias de tabla que no existe.

cFileName
Especifica un archivo para el que FSIZE( ) devuelve el tamaño en bytes.

Observaciones

La configuración actual de SET COMPATIBLE determina si FSIZE( ) devuelve el tamaño de un campo o un archivo. Si SET COMPATIBLE está establecido en OFF o FOXPLUS (el valor predeterminado), FSIZE( ) devuelve el tamaño de un campo. Si SET COMPATIBLE está establecido en ON o DB4, FSIZE( ) devuelve el tamaño de un archivo.

La siguiente tabla muestra el tamaño predeterminado (en bytes) de cada tipo de campo.

Tipo de campo | Tamaño predeterminado de campo (en bytes)
Currency | 8
Fecha | 8
DateTime | 8
Double | 8
Integer | 4
Lógicas | 1
Memo | 4
General | 4

El tamaño de un campo puede mostrarse con DISPLAY STRUCTURE y LIST STRUCTURE.

Si omite los argumentos opcionales nWorkArea y cTableAlias, FSIZE( ) devuelve el tamaño de campo para un campo del área de trabajo y de la tabla actuales.

Ejemplo

El ejemplo siguiente usa FSIZE( ) para devolver el tamaño de dos campos de la tabla customer.

SET COMPATIBLE OFF
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer  && Open Customer table
CLEAR
? FSIZE('contact')  && Displays 30
? FSIZE('cust_id')  && Displays 6

Vea también

DISPLAY STRUCTURE | FCOUNT( ) | LIST


FTIME( ) (Función)

Devuelve la hora de la última modificación de un archivo.

FTIME(cFileName)

Valores devueltos

Carácter

Parámetros

cFileName
Especifica el nombre del archivo cuya última hora de modificación devuelve FTIME( ). cFileName puede incluir una ruta de acceso con el nombre del archivo. Si no se incluye una ruta de acceso con el nombre de archivo, Visual FoxPro busca el archivo en el directorio predeterminado y en los directorios especificados con SET PATH.

Observaciones

La hora que devuelve FTIME( ) es la que el sistema operativo asigna al archivo.

Ejemplo

El ejemplo siguiente usa FTIME( ) para mostrar la hora de la última modificación realizada en FOXUSER.DBF, el archivo de recursos de Visual FoxPro.

? FTIME('FOXUSER.DBF')  && Displays the last modification time

Vea también

FDATE( ) | LUPDATE( ) | SET PATH (Comando)


FULLPATH( ) (Función)

Devuelve la ruta de acceso a un archivo especificado o la ruta relativa de otro archivo.

FULLPATH(cFileName1 [, nMSDOSPath | cFileName2])

Valores devueltos

Character

Parámetros

cFileName1
Especifica el archivo buscado por Visual FoxPro. Asegúrese de incluir la extensión del nombre de archivo.

Si el archivo se encuentra en la ruta de acceso Visual FoxPro, devolverá la ruta con el nombre del archivo. La ruta de acceso Visual FoxPro puede establecerse con SET PATH.

nMSDOSPath
Especifica que se busca la ruta de acceso MS-DOS en lugar de la ruta de acceso Visual FoxPro. nMSDOSPath puede tener cualquier valor numérico. Si el archivo no se puede localizar en la ruta de acceso MS-DOS, se devuelve una ruta de acceso y el nombre de archivo como si este archivo se hubiera encontrado en el directorio predeterminado actual.
cFileName2
Especifica un segundo nombre de archivo que se va a buscar. Asegúrese de incluir la extensión del nombre de archivo. FULLPATH( ) devuelve la ruta de acceso del primer archivo relativo al segundo archivo.

Vea también

DBF( ) | FILE( ) | LOCFILE( ) | SYS(2014) - Ruta de acceso mínima


FV( ) (Función)

Devuelve el valor futuro de una inversión.

FV(nPayment, nInterestRate, nPeriods)

Valores devueltos

Numérico

Parámetros

nPayment
Especifica el pago periódico constante (que puede ser negativo o positivo).
nInterestRate
Especifica el tipo de interés periódico. Si el tipo de interés es anual pero los pagos son mensuales, divida el tipo de interés anual entre 12.
nPeriods
Especifica el número de periodos durante los que se harán pagos. FV( ) asume que los pagos periódicos se harán al final de cada periodo.

Observaciones

FV( ) calcula el valor futuro de una serie de pagos constantes periódicos que devengan interés compuesto fijo. El valor futuro es el total de todos los pagos más los intereses.

Ejemplo

STORE 500 TO gnPayment  && Monthly payment
STORE .075/12 TO gnInterest     && 7.5% annual interest rate
STORE 48 TO gnPeriods  && Four years (48 months)
CLEAR
? FV(gnPayment, gnInterest, gnPeriods)    && Displays 27887.93

Vea también

CALCULATE | PV( ) | STORE (Comando)


FWRITE( ) (Función)

Escribe una cadena de caracteres en un archivo abierto con una función de archivo de bajo nivel.

FWRITE(nFileHandle, cExpression [, nCharactersWritten])

Valores devueltos

Numérico

Parámetros

nFileHandle
FWRITE( ) escribe en el archivo o el puerto de comunicación especificado por el número de controlador de archivo.
cExpression
FWRITE( ) escribe la expresión de tipo Carácter en el archivo o el puerto especificado con nFileHandle.
nCharactersWritten
FWRITE( ) escribe la expresión de tipo Carácter completa en el archivo o en el puerto de comunicación a menos que se incluya nCharactersWritten. Cuando se incluye nCharactersWritten, se escriben nCharactersWritten caracteres en el archivo o puerto. Si nCharactersWritten es menor que el número de caracteres de cExpression, solamente se escriben en el archivo los caracteres especificados en nCharactersWritten. Si nCharactersWritten es igual o mayor que el número de caracteres de cExpression, se escribirán todos los caracteres de cExpression.

Observaciones

A diferencia de FPUTS( ), FWRITE( ) no agrega un retorno de carro y un salto de línea al final de la cadena de caracteres.

FWRITE( ) devuelve el número de bytes escritos en el archivo o puerto de comunicación. Si FWRITE( ) no puede escribir en el archivo o puerto por alguna razón, se devolverá 0.

Vea también

FCHSIZE( ) | FCLOSE( ) | FCREATE( ) | FEOF( ) | FFLUSH( ) | FGETS( ) | FOPEN( ) | FPUTS( ) | FREAD( ) | FSEEK( ) | STRTOFILE( )


GETBAR( ) (Función)

Devuelve el número de un elemento de un menú definido con DEFINE POPUP o el menú de sistema de Visual FoxPro.

GETBAR(MenuItemName, nMenuPosition)

Valores devueltos

Numérico

Parámetros

MenuItemName
Especifica el elemento de menú.
nMenuPosition
Especifica una posición en el menú. nMenuPosition puede variar entre 1 y el número de elementos del menú. 1 corresponde al primer elemento del menú, 2 al segundo elemento y así sucesivamente.

Observaciones

Utilice GETBAR( ) para determinar qué elemento ocupa una determinada posición en un menú. Esta función es útil cuando se agregan, eliminan o reorganizan los elementos de un menú. Utilice DEFINE BAR para agregar un elemento a un menú o RELEASE BAR para eliminar un elemento. La posición de los elementos de un menú puede cambiar si se incluye MOVER cuando se crea el menú con DEFINE POPUP.

Ejemplo

El ejemplo siguiente crea un menú llamado popDemo. Se incluye la palabra clave MOVER, por lo tanto, los elementos del menú pueden reorganizarse. Para obtener información acerca de cómo reorganizar los elementos de menú, vea la descripción de la cláusula MOVER en DEFINE POPUP.

El menú se activa y se utilizan una serie de funciones GETBAR( ) en PRMBAR( ) para devolver los títulos de cada elemento. Después de reorganizar los elementos, presione CTRL+Z para mostrar el nuevo orden de los elementos.

CLEAR
ON KEY LABEL CTRL+Z DO showorder
WAIT WINDOW "Press CTRL+Z to refresh." NOWAIT
DEFINE POPUP popDemo MOVER FROM 2,2
DEFINE BAR 1 OF popDemo PROMPT 'One'
DEFINE BAR 2 OF popDemo PROMPT 'Two'
DEFINE BAR 3 OF popDemo PROMPT 'Three'
DEFINE BAR 4 OF popDemo PROMPT 'Four'
DO showorder
ACTIVATE POPUP popDemo
PROCEDURE showorder
CLEAR
@ 3,12 SAY  '1 ' + PRMBAR('popDemo', GETBAR('popDemo',1))
@ 4,12 SAY  '2 ' + PRMBAR('popDemo', GETBAR('popDemo',2))
@ 5,12 SAY  '3 ' + PRMBAR('popDemo', GETBAR('popDemo',3))
@ 6,12 SAY  '4 ' + PRMBAR('popDemo', GETBAR('popDemo',4))
RETURN

Vea también

DEFINE BAR | DEFINE POPUP | RELEASE BAR


GETCOLOR( ) (Función)

Muestra el cuadro de diálogo Color y devuelve el número del color elegido.

GETCOLOR([nDefaultColorNumber])

Valores devueltos

Numérico

Parámetros

nDefaultColorNumber
Especifica el color que se selecciona inicialmente cuando aparece el cuadro de diálogo Color. Si nDefaultColorNumber no corresponde a un color del cuadro de diálogo Color, se selecciona el primer color del cuadro de diálogo Color. Si omite nDefaultColorNumber, se selecciona el negro.

Observaciones

GETCOLOR( ) devuelve – 1 si sale del cuadro de diálogo Color presionando ESC, eligiendo el botón Cancelar o eligiendo Cerrar en el menú Control.

Ejemplo

El ejemplo siguiente muestra el cuadro de diálogo Color de Windows con el color rojo seleccionado. Al salir del cuadro de diálogo se muestra un número correspondiente al color elegido.

CLEAR
? GETCOLOR(255)

Vea también

GETPICT( ) | RGB( ) | GETCP( ) (Función)


GETCP( ) (Función)

Solicita una página de códigos mostrando el cuadro de diálogo Página de códigos y a continuación devuelve el número de la página de códigos elegida.

GETCP([nCodePage] [, cText] [, cDialogTitle])

Valores devueltos

Numérico

Parámetros

nCodePage
Especifica el número de la página de códigos que se selecciona inicialmente cuando aparece el cuadro de diálogo Página de códigos. Si nCodePage es 0 o si omite nCodePage, no se selecciona ninguna página de códigos cuando aparece el cuadro de diálogo Página de códigos.
cText
Especifica el rótulo que aparece en el cuadro de diálogo Página de códigos. Si omite cText, Visual FoxPro muestra el rótulo siguiente: "Seleccione una página de códigos para compartir datos entre plataformas."
cDialogTitle
Especifica el título que aparece en la barra de título del cuadro de diálogo Página de códigos. Si omite cDialogTitle, aparecerá el título "Página de códigos".

Observaciones

GETCP( ) devuelve 0 si sale del cuadro de diálogo Página de códigos presionando la tecla ESC, eligiendo el botón Cancelar o eligiendo Cerrar en el menú Control.

Las páginas de códigos que aparecen en el cuadro de diálogo Páginas de códigos están determinadas por FOXPRO.INT, el archivo de soporte para la página de códigos Internacional de Visual FoxPro.

GETCP( ) puede incluirse en comandos como MODIFY COMMAND, APPEND FROM y COPY TO que admiten la cláusula AS nCodePage. En este caso aparecerá el cuadro de diálogo Página de códigos, que permite especificar la página de códigos del archivo abierto, agregado o creado. Puesto que no existe ninguna página de códigos cuyo número es 0, deberá interceptar el valor 0 por si acaso el usuario elige ESC, el botón Cancelar o Cerrar en el menú Control.

Ejemplo

En el siguiente ejemplo, se muestra el cuadro de diálogo Página de códigos con la página de códigos 1252 (Windows ANSI) seleccionada. Aparece "Seleccione una página de códigos" como título del cuadro de diálogo Página de códigos y "Selección de página de códigos" en la barra de título del cuadro de diálogo Página de códigos.

? GETCP(1252, "Select a Code Page", "Code Page Selection")

Vea también

APPEND FROM | COPY TO | EXPORT | IMPORT | MODIFY COMMAND | MODIFY FILE | MODIFY QUERY


GETCURSORADAPTER( ) (Función)

Devuelve una referencia de objeto a un objeto CursorAdapter en tiempo de ejecución referenciado al nombre del cursor.

GETCURSORADAPTER( [ cAlias ] )

Parámetros

cAlias
Especifica el alias del cursor. Si no es suministrado un alias, Visual FoxPro utiliza el alias del cursor en el área de trabajo actual.

Valores devueltos

Una referencia de objeto a un objeto CursorAdapter.

Vea también

CursorAdapter (Objeto: propiedades, métodos y eventos)

Se aplica a: CursorAdapter (Clase)


GETDIR( ) (Función)

Muestra el cuadro de diálogo Seleccionar directorio, en el que puede elegir un directorio.

GETDIR([cDirectory [, cText [, cCaption [, nFlags [, lRootOnly]]]]])

Valores devueltos

Carácter

Parámetros

cDirectory
Especifica el directorio que aparece inicialmente en el cuadro de diálogo Seleccionar directorio. Cuando no se especifica cDirectory el cuadro de diálogo Seleccionar directorio se abrirá mostrando el directorio predeterminado de Visual FoxPro.
cText
Especifica el texto para la lista de directorios o de carpetas en el cuadro de diálogo.
cCaption
Especifica el título que se va a mostrar en la barra de título del cuadro de diálogo. El valor predeterminado de Windows es "Seleccionar directorio".
nFlags
Especifique las opciones del cuadro de diálogo. El parámetro nFlags puede no tener ningún valor o incluir una combinación aditiva de valores. En la tabla siguiente se describen algunos de los indicadores más comunes. Para obtener más información, vea la descripción de SHBrowseForFolder en MSDN.
nFlag | Valor | Descripción
1 | BIF_RETURNONLYFSDIRS | Devuelve únicamente directorios del sistema de archivos (ubicaciones físicas). Si un usuario selecciona carpetas que no forman parte del sistema de archivos, se atenúa el botón Aceptar.
2 | BIF_DONTGOBELOWDOMAIN | No incluye carpetas de red bajo el nivel de dominio del control de vista de árbol (por ejemplo Mi PC y Mi red).
8 | BIF_RETURNFSANCESTORS | Sólo devuelve antecesores del sistema de archivos. Si un usuario selecciona otra cosa que no sea un antecesor del sistema de archivos, se atenuará el botón Aceptar.
16 | BIF_EDITBOX | El cuadro de diálogo Examinar incluye un control de edición en el que el usuario puede escribir el nombre de un elemento. Está disponible en Windows 98 y en las versiones posteriores, o en Internet Explorer 4.0 y en las versiones posteriores (suponiendo que la opción de integración de shell está activada). Requiere la versión 4.71 de shell32.dll.
32 | BIF_VALIDATE | Valida el contenido de cuadro de edición. Si se usa el cuadro de edición, es necesario validar el contenido especificado por el usuario. Si el usuario escribe un nombre no válido en el cuadro de edición, el botón Cancelar se hace la única selección disponible. Este marcador se ignora si BIF_EDITBOX no está especificado.
64 | BIF_NEWDIALOGSTYLE | Se utiliza la nueva interfaz de usuario. Si se establece este indicador, se proporciona al usuario un cuadro de diálogo más grande y de tamaño ajustable. Algunas características adicionales son: capacidad de arrastrar y colocar dentro del cuadro de diálogo, reordenar, menús contextuales, carpetas nuevas, comando eliminar y otros comandos del menú contextual. Es compatible con Windows 2000 y con las versiones posteriores. Requiere la versión 5.00 de shell32.dll.
16384 | BIF_BROWSEINCLUDEFILES | El cuadro de diálogo Examinar mostrará archivos además de carpetas. Está disponible en Windows 98 y en las versiones posteriores, o en Internet Explorer 4.0 y en las versiones posteriores (suponiendo que la opción de integración de shell está activada). Requiere la versión 4.71 de shell32.dll.
lRootOnly
Especifica que sólo debe mostrarse cDirectory y sus subcarpetas. Este parámetro evita la exploración más allá de la carpeta raíz. Si no especifica cDirectory, se utilizará el directorio predeterminado (el valor de SET DEFAULT).

Observaciones

GETDIR( ) devuelve como una cadena de caracteres el nombre del directorio que elija.

Si no elige ningún directorio (si elige Cancelar, presiona ESC, o elige Cerrar en la ventana menú, GETDIR( ) devolverá la cadena vacía.

Empezando en la versión de Visual FoxPro 7, GETDIR( ) admite dos cuadros de diálogo diferentes. Si proporciona menos de tres parámetros, GETDIR( ) devolverá el cuadro de diálogo de las versiones anteriores. Si proporciona más de dos parámetros, Visual FoxPro utilizará la rutina SHBrowseForFolder de la API Win32 para proporcionar el cuadro de diálogo.

Vea también

DIRECTORY | DIRECTORY( ) | GETEXPR | GETFILE( )


GETENV( ) (Función)

Devuelve el contenido de la variable de entorno MS-DOS especificada.

GETENV(cVariableName)

Valores devueltos

Character

Parámetros

cVariableName
Especifica el nombre de la variable de entorno MS-DOS. Se devolverá la cadena vacía si la variable de entorno MS-DOS especificada no existe.

Puede encontrar el directorio Windows con la variable de entorno WINDIR, que Windows establece al iniciarse.

Observaciones

Siempre están disponibles dos variables de entorno COMSPEC y PATH. Puede crear sus propias variables de entorno con el comando SET del MS-DOS.

Consulte su manual de MS-DOS para obtener información adicional sobre la creación de variables de entorno.

Ejemplo

CLEAR
? GETENV('PATH')  && Displays the MS-DOS path

Vea también

DISKSPACE( ) | OS( ) | VERSION( )


GETFILE( ) (Función)

Muestra el cuadro de diálogo Abrir y devuelve el nombre del archivo que elija.

GETFILE([cFileExtensions] [, cText] [, cOpenButtonCaption] [, nButtonType] [, cTitleBarCaption])

Valores devueltos

Carácter

Parámetros

cFileExtensions
Especifica las extensiones de los archivos mostrados en la lista desplegable cuando el elemento de menú Todos los archivos no se ha elegido. El parámetro cFileExtensions no puede exceder 254 caracteres de longitud. Si se pasa un valor como un literal, es necesario escribirlo entre comillas. No incluya un punto (.) delante de las extensiones de archivo.

cFileExtensions puede asumir diversas formas:

  • Si cFileExtensions contiene una única extensión (por ejemplo, .prg), solamente se mostrarán los archivos con esa extensión.
  • Si cFileExtensions es la cadena vacía, se mostrarán todos los archivos del directorio actual.
  • cFileExtensions puede contener también caracteres comodín (* y ?) de MS-DOS. Se mostrarán todos los archivos cuyas extensiones cumplan los criterios del comodín. Por ejemplo, si cFileExtensions es "?X?", se mostrarán todos los archivos que tengan la extensión .fxt, .exe y .txt.
  • En Visual FoxPro, cFileExtensions puede contener una descripción de archivo seguida de una extensión de archivo o de una lista de extensiones de archivo separadas por comas. La descripción del archivo aparece en el cuadro de lista Archivos de tipo. Utilice dos puntos (:) para separar la descripción del archivo de la extensión del archivo o de la lista de extensiones de archivo. Separe con un punto y coma (;) múltiples descripciones de archivo y sus extensiones de archivo.

    Por ejemplo, si cFileExtensions es "Texto:TXT" la descripción de archivo "Texto" aparecerá en el cuadro de lista Archivos de tipo y se mostrarán todos los archivos con la extensión .txt.

    Si cFileExtensions es "Tablas:DBF; Archivos:TXT,BAK" las descripciones de archivo "Tablas" y "Archivos" aparecerán en el cuadro de lista Archivos de tipo. Cuando se elige "Tablas" en el cuadro de lista Archivos de tipo, se mostrarán todos los archivos de extensión .dbf. Cuando se elija "Archivos" del cuadro de lista Archivos de tipo, se mostrarán todos los archivos con la extensión .txt y .bak.

  • Si cFileExtensions contiene sólo un punto y coma (";"), se mostrarán todos los archivos sin extensión.
cText
Especifica el texto para la lista de directorios en el cuadro de diálogo Abrir.
cOpenButtonCaption
Especifica un título para el botón Aceptar.
nButtonType
Especifica el número y el tipo de botones que aparecen en el cuadro de diálogo Abrir. Los botones siguientes aparecen en el cuadro de diálogo cuando nButtonType es 0, 1 ó 2:
nButtonType | Botones
0 (o si se omite) | OKCancel
1 | OKNewCancel
2 | OKNoneCancel

Se devolverá "Sin título" con la ruta de acceso especificada en el cuadro de diálogo Abrir si nButtonType es 1 y el usuario elige el botón Nuevo. Se devolverá la cadena vacía si nButtonType es 2 y el usuario elige el botón Ninguno.

cTitleBarCaption
Especifica el título de la barra de títulos.

Observaciones

GETFILE( ) devuelve la cadena vacía si sale del cuadro de diálogo Abrir presionando ESC, eligiendo Cancelar o eligiendo Cerrar en el menú Control.

Ejemplo

CLOSE DATABASES
SELECT 0

gcTable=GETFILE('DBF', 'Browse or Create a .DBF:',
'Browse', 1, 'Browse or Create')
DO CASE
CASE 'Untitled' $ gcTable
CREATE (gcTable)
CASE EMPTY(gcTable)
RETURN
OTHERWISE
USE (gcTable)
BROWSE
ENDCASE

Vea también

FULLPATH( ) | GETEXPR | GETPICT( ) | LOCFILE( ) | PUTFILE( )


GETFLDSTATE( ) (Función)

Devuelve un valor numérico indicando si se ha editado o anexado un campo de una tabla o un cursor, si se ha anexado un registro o si ha cambiado el estado eliminado del registro actual.

GETFLDSTATE(cFieldName | nFieldNumber [, cTableAlias | nWorkArea])

Valores devueltos

Numérico, Carácter o .NULL.

Parámetros

cFieldName | nFieldNumber
Especifica el nombre del campo o el número del campo para el que se devuelve el estado de edición. El número de campo nFieldNumber corresponde a la posición del campo en la tabla o estructura del cursor. DISPLAY STRUCTURE o FIELD( ) pueden emplearse para determinar el número de un campo.

Puede especificar –1 como nFieldNumber para devolver una cadena de caracteres que conste de valores de estado de edición y eliminación para todos los campos de la tabla o el cursor. Por ejemplo, si una tabla tiene cinco campos y sólo se ha editado el primer campo, GETFLDSTATE( ) devuelve lo siguiente:

121111

El 1 de la primera posición indica que no ha cambiado el estado de eliminación.

También puede incluir 0 como nFieldNumber para determinar si ha cambiado el estado de eliminación del registro actual desde que se abrió la tabla o el cursor.

Nota GETFLDSTATE( ) sólo determina si ha cambiado el estado de eliminación del registro actual. Por ejemplo, si marca un registro para eliminarlo, y posteriormente, lo desmarca, GETFLDSTATE( ) indica que ha cambiado el estado de eliminación aunque el estado de eliminación del registro ha vuelto a su estado original. Utilice DELETED( ) para determinar el estado de eliminación actual de un registro.
cTableAlias
Especifica el alias de la tabla o el cursor para el que se devuelve el estado de edición de campo o eliminación de registro.
nWorkArea
Especifica el área de trabajo de la tabla o el cursor para el que se devuelve el estado de edición de campo o eliminación de registro.

Si no especifica un alias o un área de trabajo GETFLDSTATE( ) devuelve un valor para un campo de la tabla o el cursor seleccionado actualmente.

Observaciones

La tabla siguiente muestra los valores de los caracteres devueltos y el estado de edición o eliminación correspondiente.

Valor devuelto | Estado de edición o eliminación
1 | No se ha editado el campo o no ha cambiado el estado de eliminación.
2 | Se ha editado el campo o ha cambiado el estado de eliminación.
3 | No se ha editado el campo de un registro anexado o no ha cambiado el estado de eliminación del registro anexado.
4 | Se ha editado el campo de un registro anexado o ha cambiado el estado de eliminación para el registro anexado.
.NULL. | En EOF( )

El almacenamiento de filas o tablas en búfer debe activarse en primer lugar con CURSORSETPROP( ) para que GETFLDSTATE( ) funcione en tablas locales.

Se devuelve el estado de edición o eliminación para la tabla o el cursor abierto en el área de trabajo seleccionada actualmente si se ejecuta GETFLDSTATE( ) sin los argumentos opcionales cTableAlias o nWorkArea.

Cualquier cambio en el campo causará que GETFLDSTATE() devuelva un valor mostrando qué se ha modificado en el campo, si el cambio es explícito o implícito. Un ejemplo de una modificación explícita podría ser incluir el campo en un comando REPLACE o INSERT INTO. Una modificación implícita ocurre en campo que tiene un valor predeterminado cuando un comando se ejecuta para agregar un nuevo registro.

Ejemplo 1

El ejemplo siguiente muestra cómo puede usar GETFLDSTATE( ) para determinar si el contenido de un campo ha cambiado. MULTILOCKS se establece en ON, un requisito para el almacenamiento de tablas en búfer. Se abre la tabla customer de la base de datos testdata y se usa CURSORSETPROP( ) para establecer el modo de almacenamiento optimista de tablas en búfer (5).

Se ejecuta GETFLDSTATE( ) para mostrar un valor (1) correspondiente al estado no modificado del campo cust_id antes de modificarlo. Se modifica el campo cust_id con REPLACE, y se vuelve a ejecutar GETFLDSTATE( ) para mostrar un valor (2) correspondiente al estado modificado del campo cust_id. TABLEREVERT( ) se usa para devolver la tabla a su estado original y vuelve a usarse GETFLDSTATE( ) para mostrar un valor (1) correspondiente al estado original del campo cust_id.

CLOSE DATABASES
CLEAR
SET MULTILOCKS ON         && Permitir el buffering de la tabla
OPEN DATABASE (HOME(2) + 'data\testdata')
USE Customer              && Abre la tabla customer
=CURSORSETPROP("Buffering",5,"customer")  && Habilita buffering
&& de la tabla
* Obtiene estado de cust_id y muestra el estado del campo Original.
nState=GETFLDSTATE("cust_id")

DO DisplayState WITH nState("Original")
* Cambia el contenido del campo y muestra el estado
REPLACE cust_id    WITH "***"
nState=GETFLDSTATE("cust_id")

DO DisplayState WITH nState("After Replace")
* Descarta los cambios en la tabla y muestra el estado
= TABLEREVERT(.T.)        && Descarta todos los cambios en la tabla
nState=GETFLDSTATE("cust_id")

DO DisplayState WITH nState("After Revert")
PROCEDURE DisplayState

PARAMETER nState,cOperation
DO CASE
CASE nState=1

=MESSAGEBOX("Field has not been modified",0,cOperation)
OTHERWISE

=MESSAGEBOX("Field has been modified",0,cOperation)
ENDCASE

Ejemplo 2

El siguiente ejemplo muestra la diferencia en el comportamiento entre campos con y sin valores predeterminados.

SET MULTILOCKS ON
CREATE DATABASE example
CREATE TABLE customer (cust_id C(6),state C(2) DEFAULT "FL")
CLOSE TABLES
USE customer
=CURSORSETPROP("Buffering",5,"customer")

APPEND BLANK
?GETFLDSTATE("cust_id")  && Devuelve 3, campo en un registro agregado
                         && no se ha modificado.

?GETFLDSTATE("state")    && Devuelve 4, campo en un registro agregado
                         && se ha modificado.

Vea también

CURVAL( ) | DELETED( ) | FIELD( ) | OLDVAL( ) | CURSORSETPROP( ) | SETFLDSTATE( )


GETFONT( ) (Función)

Muestra el cuadro de diálogo Fuentes y devuelve el nombre de la fuente que elija.

GETFONT(cFontName [, nFontSize [, cFontStyle [, nFontCharSet])

Valores devueltos

Carácter

Parámetros

cFontName
Especifica el nombre de la fuente seleccionada inicialmente en el cuadro de diálogo Fuente. Si la fuente que especifica no está instalada, se seleccionará inicialmente la fuente predeterminada.
nFontSize
Especifica el tamaño de fuente seleccionada inicialmente en el cuadro de diálogo Fuente. Si no se admite el tamaño de fuente que especifique, se selecciona inicialmente el tamaño de fuente predeterminado. El tamaño de fuente predeterminado es 10 puntos si nFontSize es menor o igual que cero o si omite nFontSize.
cFontStyle
Especifica el estilo de fuente seleccionado inicialmente en el cuadro de diálogo Fuente. Si no se admite el estilo de fuente que especifique, se selecciona inicialmente el estilo de fuente predeterminado. cFontStyle es uno o dos caracteres que especifican el estilo de fuente. La tabla siguiente muestra los caracteres que puede especificar para cFontStyle y el estilo correspondiente.
Carácter | Estilo de la fuente
B | Negrita
I | Cursiva
BI | Negrita cursiva
nFontCharSet
Especifica el valor del alfabeto. En la tabla siguiente se describen algunos valores disponibles para nFontCharSet.
nFontCharSet | Alfabeto
1 | Occidental
2 | Símbolos
77 | Mac
128 | Japonés
161 | Griego
162 | Turco
163 | Vietnamita
177 | Hebreo
178 | Árabe
186 | Báltico
204 | Cirílico
238 | Europa Central
255 | OEM/DOS

Observaciones

GETFONT( ) devuelve el nombre, tamaño y estilo de la fuente que elija. Su elección se devolverá como una cadena de caracteres con el nombre, tamaño y estilo de la fuente separados por comas. Si pasa el valor de nFontCharSet, se incluirá en la cadena devuelta la secuencia de comandos de la fuente seleccionada.

GETFONT( ) devuelve la cadena vacía si sale del cuadro de diálogo Fuente eligiendo Cancelar, eligiendo Cerrar en el menú Control o bien presionando ESC.

Si omite una de las opciones de GETFONT( ) (cFontName, nFontSize, o cFontStyle), incluya una coma como un espacio vacío para la opción omitida. Por ejemplo, el siguiente comando omite las opciones cFontName y nFontSize e inicializa la selección con el estilo de fuente - negrita (Bold) en el diálogo Fuente:

cMyFont = GETFONT("Arial",12,'B')
Nota Los comandos y funciones de Visual FoxPro pueden abreviarse a cuatro caracteres. En el caso de GETFONT( ) y GETFILE( ), que comienzan por las mismas cuatro letras, tendrá prioridad GETFILE( ). Si usa GETF( ) se mostrará el cuadro de diálogo Abrir.

Vea también

FONTMETRIC( ) | SYSMETRIC( ) | TXTWIDTH( ) | WFONT( )


GETINTERFACE( ) (Función)

Proporciona acceso a las propiedades, los métodos y los eventos de objetos COM mediante enlace en tiempo de compilación.

GETINTERFACE(oObject [, cIID | cInterface[, cTypelib | cProgID]])

Devuelve

Referencia de la interfaz de objetos COM

Parámetros

oObject
Especifica el objeto COM de destino.
cIID
Especifica el GUID de la interfaz de destino de oObject. cIID puede ser una interfaz tal como "IContextState" o un GUID, tal como "{94631BEC-EE81-479A-AE64-A6CFC37B4799}". Si es "IDispatch", GetInterface() devuelve una referencia IDispatch (de enlace en tiempo de ejecución) para el objeto. Si no se especifica cIID, GetInterface() devuelve la interfaz de tiempo de compilación para el objeto.
cInterface
Especifica el nombre de la interfaz.
cTypelib
Especifica el nombre de la biblioteca de tipos de la clase oObject.
cProgID
Especifica el nombre del programa que se debe utilizar para realizar búsquedas en la biblioteca de tipos.

Observaciones

GetInterface( ) sólo puede aplicarse a objetos COM. Si utiliza objetos nativos de Visual FoxPro, GetInterface( ) generará un error. GetInterface( ) devuelve una referencia a objeto en tiempo de compilación.

Cuando una DLL es creada en una plataforma Windows 9x (Windows95, Windows98 y Windows ME), Visual FoxPro no incluye el tipo de biblioteca dentro de la DLL. Al utilizar GETINTERFACE( ) y referirse a una DLL creada en una de estas plataformas, debe utilizar el nombre del tipo de biblioteca (Type Library) en lugar del nombre de la DLL como se muestra en sl siguiente código:

oX = GETINTERFACE(x, "Imyclass", "myclass1.TLB")

Puede utilizar l siguiente código para una DLLcreada en Windows XP, Windows 2000 o Windows NT:

oX = GETINTERFACE(x, "Imyclass", "myclass1.DLL")

Ejemplo

El siguiente miniprograma es un ejemplo de un método que se puede utilizar en un servidor COM de Visual FoxPro para controlar las transacciones de una aplicación COM+. Este ejemplo requiere, para recibir llamadas de un cliente, que el servidor COM que contenga el código se agregue a una aplicación COM+.

LOCAL oMTX, oContext, oContextState
LOCAL lTxnState, lGetTxnState, lDone, lGetDone
lGetDone = .F.     && initialize setting
lGetTxnState = 0  && initialize setting
oMTX = CREATEOBJECT("MTXAS.APPSERVER.1")
oContext = oMTX.GetObjectContext()
oContextState = GetInterface(oContext,"IContextState")
* Handle activation setting (Doneness)
* Values: .T. - Deactivate, .F. - Leave activated
lDone = .T.
oContextState.SetDeactivateOnReturn(lDone)
oContextState.GetDeactivateOnReturn(@lGetDone)
* Handle transaction setting (Consistency)
* Values: 0 - commit, 1 - abort
lTxnState = 1
oContextState.SetMyTransactionVote(lTxnState)
oContextState.GetMyTransactionVote(@lGetTxnState)

Vea también

CREATEOBJECTEX( ) | Enlace en tiempo de compilación (vtable) y en tiempo de ejecución (IDispatch) | GETOBJECT( ) | SYS(2333) - Soporte de interfaz dual de ActiveX | Ver información de bibliotecas de tipos


GETNEXTMODIFIED( ) (Función)

Devuelve el número de registro del siguiente registro modificado en un cursor o tabla almacenada en búfer

GETNEXTMODIFIED(nRecordNumber [, cTableAlias | nWorkArea] [, lNoFire])

Valores devueltos

Numérico

Parámetros

nRecordNumber
Especifica el número de registro después del cual GETNEXTMODIFIED( ) busca el siguiente registro modificado. Especifique 0 como nRecordNumber para determinar el primer registro de la tabla o el cursor que se ha modificado.
cTableAlias
Especifica el alias de la tabla o el cursor para el que GETNEXTMODIFIED( ) devuelve el número del siguiente registro modificado.
nWorkArea
Especifica el área de trabajo de la tabla o el cursor para el que GETNEXTMODIFIED( ) devuelve el número del siguiente registro modificado.

Si no especifica un alias o un área de trabajo, GETNEXTMODIFIED( ) devuelve el número de registro del siguiente registro modificado en la tabla o el cursor seleccionado actualmente.

lNoFire
Especifica que se suprime el desencadenamiento de las reglas.

Observaciones

GETNEXTMODIFIED( ) devuelve 0 si no hay registros modificados después del registro especificado. A causa de esto, si sólo modifica un registro, para comprobar su modificación primero deberá utilizar el comando GO TOP para colocar el cursor antes del registro modificado. Un registro se considera modificado si cambia de alguna forma el contenido de alguno de sus campos (aunque se restaure el contenido original del campo) o si cambia el estado de eliminación del registro.

GETNEXTMODIFIED( ) sólo puede funcionar en tablas y cursores para los que esté activado el almacenamiento de tablas en búfer. El almacenamiento de tablas en búfer se activa con CURSORSETPROP( ).

Como los desencadenantes no se ven afectados por GETNEXTMODIFIED( ), lNoFire sólo suprime las reglas de campos y registros, y el error "Se infringe la unicidad del Id. de índice". lNoFire evita que se vacíen los datos temporales, como los almacenados en controles, al cursor subyacente.

Ejemplo

El ejemplo siguiente muestra como puede usar GETNEXTMODIFIED( ) para determinar que registros de una tabla han cambiado. MULTILOCKS se establece en ON, un requisito para el almacenamiento de tablas en búfer. Se abre la tabla customer de la base de datos testdata y se usa CURSORSETPROP( ) para establecer el modo de almacenamiento optimista de tablas en búfer (5).

Se ejecuta SKIP para mover el puntero de registro al segundo registro y se modifica el campo cust_id con REPLACE. Se usa GETNEXTMODIFIED(0) para mostrar el número de registro del siguiente registro modificado (2, el segundo registro), empezando por el principio de la tabla. Se usa TABLEREVERT( ) para devolver la tabla a su estado original y vuelve a usarse GETNEXTMODIFIED(0) para mostrar el número del siguiente registro modificado (0, que indica que no se ha modificado ningún registro).

CLOSE DATABASES
CLEAR
OPEN DATABASE SYS (HOME(2) + 'data\testdata')
SET MULTILOCKS ON  && Permitir buffering de la tabla
USE Customer       && Abre la tabla customer
=CURSORSETPROP("Buffering", 5, "customer")  && Habilita buffering
&& de la tabla
SKIP  && Mueve el puntero de registro al segundo registro
* Cambia el contenido del campo
REPLACE cust_id WITH "***"
* Llama la función MESSAGEBOX con el resultado de GETNEXTMODIFIED
=MESSAGEBOX("Registro " + ALLTRIM(STR(GETNEXTMODIFIED(0))) + ;
" ha cambiado.",0,"Resultados")
* Revierte la tabla y muestra los resultados con MESSAGEBOX
=TABLEREVERT(.T.)  && Descarta todos los cambios en la tabla
nChange=GETNEXTMODIFIED(0)
IF nChange=0
=MESSAGEBOX("Registro(s) se han revertido.",0,"Resultados")
ELSE
=MESSAGEBOX("Registro " + ALLTRIM(STR(GETNEXTMODIFIED(0))) + ;
" ha cambiado.",0,"Resultados")
ENDIF

Vea también

CURSORSETPROP( ) | CURVAL( ) | GETFLDSTATE( ) | OLDVAL( )


GETOBJECT( ) (Función)

Activa un objeto de Automatización y crea una referencia al mismo.

GETOBJECT(cFileName | Moniker [, cClassName])

Devuelve

Una referencia al objeto.

Parámetros

cFileName
Especifica la ruta de acceso completa y el nombre del archivo que se va a activar. No es necesario especificar la aplicación, porque las bibliotecas de vínculos dinámicos OLE determinan la aplicación que se va a iniciar basándose en el nombre de archivo que usted les proporciona.

Por ejemplo, el código siguiente lanza Microsoft Excel, abre un archivo llamado BUDGET.XLS, y crea una referencia a través de una variable de objeto llamada MBUDVAR:

MBUDVAR = GETOBJECT('C:\EXCEL\WORK\BUDGET.XLS')
Moniker
El identificador de un objeto COM que implementa la interfaz IMoniker. Un moniker puede ser de uno de los tipos siguientes: archivo, elemento, compuesto genérico, anti-, puntero y dirección URL. Para ver detalles acerca de los monikers COM, busque "IMoniker" en Microsoft Developer Network.
cClassName
Especifica el nombre de clase del objeto que se va a recuperar. Algunas aplicaciones pueden almacenar más de un tipo de objeto en el mismo archivo, lo que permite utilizar el nombre de clase para especificar el objeto que se va a activar. Por ejemplo, si una aplicación de procesamiento de textos almacena sus documentos, definiciones de macro y objetos de barra de herramientas en el mismo archivo, puede crear una referencia al archivo de documento con el comando siguiente:
MDOCFILE = GETOBJECT('C:\WRDPROC\MYDOC.DOC','WrdProc.Document')

Con algunas aplicaciones servidoras, cada vez que ejecuta GETOBJECT( ), se inicia una instancia adicional de la aplicación, usando memoria adicional. Si la aplicación ya está en ejecución, puede impedir que se inicien otras instancias de la aplicación si omite FileName e incluye ClassName, como en este ejemplo:

oleApp = GETOBJECT(, "Excel.Application")

Observaciones

Utilice GETOBJECT( ) para activar un objeto de Automatización a partir de un archivo y asignar una referencia al objeto a través de una variable de memoria o un elemento de matriz.

Si especifica un nombre de archivo o de clase no válido, se mostrará un error de OLE, y la función GETOBJECT( ) devolverá una cadena vacía.

Ejemplo

Por ejemplo, en una red que tenga implementados los servicios de Active Directory, puede consultar la red para obtener información acerca de un usuario concreto.

   *  Reemplaza "DomainName" con el nombre do dominio,
*  y "UserLoginID" con el login ID del usuario
*  que se está registrando.
oUser = GetObject("WinNT://DomainName/UserLoginID,user")
? oUser.FullName

Vea también

COMCLASSINFO( ) | CREATEOBJECT( ) | DEFINE CLASS | SET OLEOBJECT | GETINTERFACE( )


GETPAD( ) (Función)

Devuelve el título de menú correspondiente a una determinada posición en la barra de menús.

GETPAD(cMenuBarName, nMenuBarPosition)

Valores devueltos

Character

Parámetros

cMenuBarName
Especifica el nombre de la barra de menús.
nMenuBarPosition
Especifica una posición en la barra de menús. nMenuPosition puede variar desde 1 (el título situado más a la izquierda en la barra de menús) hasta el número de títulos de menú de la barra de menús.

Observaciones

Los títulos de menús pueden agregarse, eliminarse o reorganizarse. Utilice DEFINE PAD para agregar un título a una barra de menús o RELEASE PAD para eliminar un título.

Ejemplo

El programa siguiente utiliza GETPAD( ) para comprobar si el menú Edición está en la barra de menús del sistema de Visual FoxPro. Si lo está, GETPAD( ) devolverá el nombre del menú. (Para restaurar la barra de menú Edición a su estado predeterminado, use el comando SET SYSMENU TO DEFAULT.)

FOR gnCount = 1 TO CNTPAD('_msysmenu')      && Number of pads
IF PRMPAD('_msysmenu', GETPAD('_msysmenu', gnCount)) = 'Edit'
RELEASE PAD (GETPAD('_msysmenu', gnCount)) OF _msysmenu
EXIT
ENDIF
ENDFOR

Vea también

DEFINE MENU | DEFINE PAD | RELEASE PAD


GETPEM( ) (Función)

Devuelve el valor actual para un código de programa o de propiedad para un evento o un método en tiempo de diseño.

GETPEM(oObjectName | cClassName, cProperty | cEvent | cMethod)

Valores devueltos

Character, Currency, Date, DateTime, Numérico, o Logical

Parámetros

oObjectName
Especifica el objeto para el que se devuelve un código de programa de método o de valor, o un valor de propiedad. oObjectName puede ser cualquier expresión que evalúe como un objeto, una referencia del objeto, una variable de memoria, un elemento de una matriz de objetos, etc.
cClassName
Especifica la clase para la que se devuelve un valor de propiedad o un código de programa de evento o de método.
cProperty
Especifica la propiedad cuyo valor se devuelve.
cEvent
Especifica el evento cuyo código de programa se devuelve.
cMethod
Especifica el método cuyo código de programa se devuelve.

Observaciones

En Visual FoxPro 6.0 y posteriores, sólo se permite utilizar GETPEM( ) para devolver código de un método durante una sesión interactiva de Visual FoxPro. Sin embargo, puede obtener código de método de un objeto mediante la propiedad Class del objeto, como en el ejemplo siguiente:

LOCAL oObject, lcCode
oObject = NEWOBJECT("_form", HOME()+"ffc\_base.vcx")
lcCode = GETPEM(oObject.class, "Release")

Vea también

CREATE FORM | PEMSTATUS( ) | SYS(1269) - Información de propiedad | SYS(1270) - Ubicación de objetos | SYS(1271) - Archivo .SCX del objeto | SYS(1272) - Jerarquía de objetos


GETPICT( ) (Función)

Muestra el cuadro de diálogo Abrir imagen y devuelve el nombre del archivo de imagen que ha elegido.

Nota Puede tener una vista previa de las imágenes en Windows 2000 y posteriores haciendo clic en el menú Ver y luego en Vistas en miniatura. Visual FoxPro utiliza las Vistas en miniatura como la configuración predeterminada para proporcionar vista previa de las imágenes. Por lo tanto, el cuadro de diálogo Abrir imagen no incluye un marco para mostrar una imagen. La casilla de verificación Vista previa aparece en el cuadro de diálogo Abrir imagen sólo cuando ejecuta Visual FoxPro en un sistema operativo anterior a Windows 2000.
GETPICT([cFileExtensions] [, cFileNameCaption] [, cOpenButtonCaption])

Valores devueltos

Carácter. Devuelve el nombre del archivo de imagen que elija.

Parámetros

cFileExtensions
Especifica las extensiones de los archivos de imagen que se muestran en la lista desplegable cuando no se elige el elemento de menú Todos los archivos.

cFileExtensions puede tomar los siguientes formatos:

  • Si cFileExtensions contiene una única extensión (por ejemplo, bmp), sólo se mostrarán los archivos que tengan dicha extensión.
  • cFileExtensions puede contener también caracteres comodín (* y ?) de MS-DOS. Se mostrarán todos los archivos cuyas extensiones cumplan los criterios del comodín. Por ejemplo, si cFileExtensions es ?X?, se mostrarán todos los archivos cuyas extensiones sean .fxp, .exe y .txt.
  • Si cFileExtensions contiene una cadena vacía (""), se mostrarán todos los archivos (por ejemplo, archivos con las extensiones .bmp y .dib).
cFileNameCaption
Especifica el título mostrado encima del cuadro de texto "Nombre de archivo". cFileNameCaption reemplaza al "Nombre de archivo" que aparece cuando se omite cFileNameCaption.
cOpenButtonCaption
Especifica un título para el botón Aceptar.

Observaciones

La función GETPICT( ) devuelve una cadena vacía si se presiona ESC para salir del cuadro de diálogo Abrir imagen, se elige el botón Cancelar o se hace clic en el botón Cerrar. El cuadro de diálogo Abrir que se muestra cuando se ejecuta GETPICT( ) en la ventana Comandos permite buscar rápidamente todos los archivos gráficos compatibles con Visual FoxPro. En versiones anteriores a Visual FoxPro 8.0, active la casilla de verificación Vista previa para mostrar el archivo gráfico seleccionado actualmente.

Visual FoxPro admite los siguientes tipos de archivos gráficos.

Formato gráfico | Extensión de archivo
Animated Cursor | .ani
Mapa de bits | .bmp
Cursor | .cur
Device Independent Bitmap | .dib
Exchangeable Image File | .exif
Graphics Interchange Format | .gif, .gfa
Joint Photographic Electronic Group, JPEG File Interchange Format | .jpg, .jpeg, .jpe, .jfif
Icon | .ico
Portable Networks Graphics | .png
Tag Image File Format | .tif, .tiff
Windows Enhanced Metafile | .emf
Nota En Visual FoxPro se pueden usar los archivos de cursores, cursores animados e iconos como archivos gráficos. Por ejemplo, puede especificar un cursor animado para la propiedad Picture del control Imagen (sin embargo, el control Imagen muestra la representación estática del cursor).

Utilice el comando CLEAR RESOURCES para borrar todos los archivos gráficos almacenados en caché, incluidos los archivos de tipo .gif y .jpg.

Vea también

GETFILE( ) | GETEXPR | LOCFILE( ) | PUTFILE( )


GETPRINTER( ) (Función)

Muestra el cuadro de diálogo Imprimir y devuelve el nombre de la impresora que seleccione.

GETPRINTER( )

Valores devueltos

Carácter (Character)

Observaciones

GETPRINTER( ) devuelve la cadena vacía si sale del cuadro de diálogo Imprimir presionando la tecla ESC, eligiendo el botón Cancelar o eligiendo Cerrar en el menú Control.

La presentación en el cuadro de diálogo Imprimir puede variar entre las distintas versiones de Windows. Para impresoras locales en todas las versiones de Windows y para impresoras de red en Windows 98, la presentación consta del nombre de la impresora. Para impresoras de red, Windows NT 4.0 o posterior muestra la ruta de la red.

Ejemplo

CLEAR
cPrinter = GETPRINTER( ) && Displays the Windows Printer Dialog
*** Displays the name of the printer chosen ***
WAIT WINDOW IIF(EMPTY(cPrinter), 'No printer chosen', cPrinter)

Vea también

APRINTERS( ) | SET PRINTER | SYS(102) - Configuración de PRINTER | SYS(1037) - Cuadro de diálogo Configurar página


GETWORDCOUNT( ) (Función)

Cuenta el número de palabras de una cadena.

GetWordCount(cString[, cDelimiters])

Parámetros

cString
Especifica la cadena de la que se va contar el número de palabras.
cDelimiters
Opcional. Especifica el carácter que se utiliza para delimitar grupos de caracteres en cString. Los delimitadores predeterminados son: espacio, tabulador, retorno de carro y avance de línea. Observe que GetWordCount( ) utiliza cada uno de los caracteres en cDelimiters como delimitadores individuales, no para toda la cadena como un único delimitador.

Valor devuelto

Numérico

Observaciones

GetWordCount( ) supone de manera predeterminada que las palabras están delimitadas por espacios o tabulaciones. Si especifica otro carácter como delimitador, esta función ignorará los espacios y las tabulaciones, y sólo utilizará el carácter especificado.

Si utiliza "AAA aaa, BBB bbb, CCC ccc." como cadena de destino para GetWordCount( ), puede obtener todos los resultados siguientes.

cString = "AAA aaa, BBB bbb, CCC ccc."
? GetWordCount(cString)         && 6 - grupos carácter, delimitados por " "
? GetWordCount(cString, ",")    && 3 - grupos carácter, delimitados por ","
? GetWordCount(cString, ".")    && 1 - grupos carácter, delimitados por "."

Vea también

GETWORDNUM( ) (Función)


GETWORDNUM( ) (Función)

Devuelve la palabra especificada de una cadena.

GETWORDNUM(cString, nIndex[, cDelimiters])

Parámetros

cString
Especifica la cadena que hay que evaluar.
nIndex
Especifica la posición del índice de la palabra que se va a devolver. Por ejemplo, si nIndex es 3, GetWordNum( ) devuelve la tercera palabra (si cString contiene tres o más palabras).
cDelimiters
Opcional. Especifica uno o más caracteres especiales que se utilizan para separar las palabras de cString. Los delimitadores predeterminados son espacio, tabulación, retorno de carro y avance de línea. Observe que GetWordNum( ) utiliza cada uno de los caracteres en cDelimiters como delimitadores individuales, no como único delimitador de toda la cadena.

Valor devuelto

Carácter

Observaciones

Devuelve la palabra existente en la posición especificada por nIndex en la cadena de destino, cString. Si cString contiene menos de nIndex palabras, GetWordNum( ) devolverá una cadena vacía.

Vea también

GETWORDCOUNT( ) (Función)


GOMONTH() (Función)

Devuelve la fecha que es un número especificado de meses antes o después de una expresión de fecha o de DateTime determinada.

GOMONTH(dExpression | tExpression, nNumberOfMonths)

Valores devueltos

Fecha

Parámetros

dExpression
Especifica una expresión de fecha para la cual GOMONTH( ) devuelve la fecha.
tExpression
Especifica una expresión de DateTime para la cual GOMONTH( ) devuelve la fecha.
nNumberOfMonths
Especifica el número de meses a partir de la expresión de fecha o de DateTime. Si nNumberOfMonths es positivo, GOMONTH( ) devolverá una fecha que es nNumberOfMonths meses después de la expresión. Si nNumberOfMonths es negativo, GOMONTH( ) devolverá una fecha que es nNumberOfMonths meses anterior a la expresión.

Observaciones

GOMONTH( ) no admite fechas anteriores a 1752.

Ejemplo

SET CENTURY ON
STORE GOMONTH({^1998-02-16}, 5) TO gdDeadLine
CLEAR
? gdDeadLine  && Muestra 07/16/1998
? GOMONTH({^1998-12-31}, 2)  && Muestra 02/28/1999
? GOMONTH({^1998-12-31}, -2)  && Muestra 10/31/1998

Vea también

CMONTH( ) | BuildDateTime (Propiedad) | DATETIME( ) (Función)


HEADER( ) (Función)

Devuelve el número de bytes del encabezado del archivo de tabla actual o el especificado.

HEADER([nWorkArea | cTableAlias])

Valores devueltos

Numérico

Parámetros

nWorkArea | cTableAlias
Devuelve el tamaño del encabezado de una tabla abierta en otra área de trabajo. nWorkArea especifica el número del área de trabajo y cTableAlias especifica el alias de la tabla. Si omite el área de trabajo y su alias, HEADER( ) devolverá el tamaño del encabezado de la tabla abierta en el área de trabajo actual.

HEADER( ) devuelve 0 si no hay abierta una tabla en el área que especifique. Si una tabla no tiene el alias que especifique, Microsoft Visual FoxPro mostrará un mensaje de error.

Observaciones

El encabezado de una tabla contiene información sobre la propia tabla, como los nombres y tamaños de los campos y la existencia de un archivo memo o un índice estructural.

Vea también

FSIZE( ) | RECSIZE( ) | HeaderHeight (Propiedad) | Trabajar con alias de tablas


HOME( ) (Función)

Devuelve el nombre de los directorios de Visual FoxPro y Visual Studio.

HOME([nLocation])

Parámetros

nLocation
Especifica que HOME( ) devuelve el nombre de un directorio específico de Visual FoxPro o de Visual Studio. Observe que omitir nLocation equivale a HOME(0).

La tabla siguiente muestra los valores para nLocation y el directorio devuelto por HOME( ). Los directorios mostrados a continuación asumen que ha seleccionado el directorio de instalación predeterminado al instalar Visual FoxPro o Visual Studio.

nLocation | Directorio
0 u omitido | El directorio de inicio de Visual FoxPro.
1 | El directorio raíz de la instalación de Visual FoxPro.
2 | El directorio que contiene los ejemplos de Visual FoxPro. Este directorio es idéntico al directorio de ejemplos de la variable de sistema _SAMPLES.
3 | El directorio Common de Visual Studio.
4 | El directorio Graphics de Visual FoxPro.
5 | El directorio Samples de MSDN.
6 | El directorio Tools de Visual Studio.
7 | El directorio de datos de aplicación del usuario de Visual FoxPro.
8 | El subdirectorio Proyectos de Visual FoxPro en el directorio Mis Documentos Visual FoxPro del usuario. Este directorios es la ubicación predeterminada para nuevos proyectos y archivos creados por Visual FoxPro.

Valores devueltos

Dato tipo Carácter. HOME( ) devuelve el nombre de directorios específicos de Visual FoxPro y Visual Studio.

Ejemplo

CLEAR
? 'Visual FoxPro directorio de inicio:          ', HOME( ) ? 'Visual FoxPro directorio de instalación:     ', HOME(1) ? 'Visual FoxPro directorio samples:            ', HOME(2) ? 'Visual Studio directorio common:             ', HOME(3) ? 'Visual FoxPro directorio graphics:           ', HOME(4) ? 'MSDN directorio samples:                     ', HOME(5) ? 'Visual Studio directorio tools:              ', HOME(6) ? 'Visual FoxPro directorio datos app usuario:  ', HOME(7) ? 'Visual FoxPro directorio documentos usuario: ', HOME(8)

Vea también

_SAMPLES (Variable del sistema) | SYS( ) - Introducción a las funciones | SYS(2004) - Directorio de inicio de Visual FoxPro


HOUR( ) (Función)

Devuelve la hora de una expresión DateTime.

HOUR(tExpression)

Parámetros

tExpression
Especifica una expresión DateTime a partir de la cual HOUR( ) devuelve la hora.

Valores devueltos

Numérico

Observaciones

HOUR( ) devuelve un valor numérico basado en un formato de 24 horas y no se ve afectado por el valor actual de SET HOURS. Por ejemplo, si SET HOURS es 12 o 24, el comando siguiente devuelve 13:

? HOUR({^1998-02-16 1:00p})

Ejemplo

El ejemplo siguiente muestra la parte de hora de la hora actual y la parte de hora de una hora especificada.

CLEAR
? HOUR(DATETIME( ))
? HOUR({^1998-02-16 10:42a})  && Displays 10

Vea también

CTOT( ) | DATE( ) | DATETIME( ) | DTOT( ) | MINUTE( ) | SEC( ) | SECONDS( ) | SET SECONDS | TIME( )


ID( ) (Función) - Información de equipo de red

ID( ) devuelve información acerca del equipo de red cuando se utiliza Visual FoxPro en un entorno de red. La misma funcionalidad está disponible usando SYS(0).

ID( )

Valores devueltos

Carácter

Observaciones

La información del PC debe asignarse primero por el software de red el cual debe estar cargado.

Si la información del PC no ha sido asignada o el software de la red no ha sido cargado, ID( ) devuelve una cadena de caracteres que consiste de 15 espacios, un signo número (#) seguido por otro espacio después 0. Consulte su documentación de red para información adicional sobre como definir la información de la máquina.

ID( ) devuelve 1 cuando utilice Visual FoxPro en un entorno sin red.

Cuando el equipo está conectado a una red, ID( ) devuelve el nombre del equipo, un espacio, un signo número (#) seguido por otro espacio y luego el id del usuario actual (o el contexto de seguridad en el cual se está ejecutando Visual FoxPro). Por ejemplo:

? ID( )

devuelve el siguiente formato:

MACHINEID # userid

Vea también

SYS(0) | IDXCOLLATE( ) (Función)


IDXCOLLATE( ) (Función)

Devuelve la secuencia de ordenación para un índice o una etiqueta de índice.

IDXCOLLATE([cCDXFileName,] nIndexNumber [, nWorkArea | cTableAlias])

Valores devueltos

Carácter

Parámetros

cCDXFileName
Especifica el nombre del archivo de índice compuesto. El archivo de índice compuesto que se especifique puede ser el archivo de índice compuesto estructural abierto automáticamente con la tabla o un archivo de índice compuesto independiente.
nIndexNumber
Especifica el índice o la etiqueta de índice cuya secuencia de ordenación devuelve IDXCOLLATE( ). IDXCOLLATE( ) devuelve la secuencia de ordenación para los índices y las etiquetas de índice en el orden indicado a continuación a medida que nIndexNumber aumenta desde 1 hasta el número total de archivos de índice abiertos y de etiquetas de índice:
  1. Primero se devuelven las secuencias de ordenación para archivos de índice .idx de una sola entrada (si hay alguno abierto). El orden en el que se incluyen los archivos de índice de una sola entrada en USE o SET INDEX determina la forma en que se devuelven las secuencias de ordenación.
  2. A continuación se devuelven las secuencias de ordenación para las etiquetas del índice compuesto estructural (si existe alguna). Las secuencias de ordenación para las etiquetas se devuelven en el orden de creación de dichas etiquetas en el índice compuesto estructural.
  3. Por último se devuelven las secuencias de ordenación para las etiquetas de cualquier índice compuesto independiente que haya abierto. Las secuencias de ordenación para las etiquetas se devuelven en el orden de creación de dichas etiquetas en los índices compuestos independientes.

Se devuelve la cadena vacía en caso de que nIndexNumber sea mayor que el número total de archivos .idx de una sola entrada abiertos más el número de etiquetas de índice compuesto estructural y compuesto independiente.

nWorkArea
Especifica el área de trabajo de la tabla cuyas secuencias de ordenación de archivo de índice y de etiqueta de índice devuelve IDXCOLLATE( ).

IDXCOLLATE( ) devuelve la cadena vacía si no hay ninguna tabla abierta en el área de trabajo especificada.

cTableAlias
Especifica el alias de la tabla cuyas secuencias de ordenación de archivo de índice y de etiqueta de índice devuelve IDXCOLLATE( ).

Visual FoxPro genera un mensaje de error si especifica un alias de tabla que no existe.

Observaciones

IDXCOLLATE( ) se puede utilizar para devolver la secuencia de ordenación para cada etiqueta de archivos de índice compuesto de múltiples entradas, lo que permite eliminar por completo un archivo de índice y volver a generarlo correctamente, utilizando una serie de comandos SET COLLATE e INDEX.

Observese que IDXCOLLATE( ) no es necesario para el funcionamiento correcto de REINDEX, puesto que la información de la secuencia de ordenación está presente en los índices y las etiquetas de índice existentes.

Para obtener información adicional acerca de la compatibilidad con versiones internacionales de Visual FoxPro, ver Desarrollar aplicaciones internacionales.

Ejemplo

El ejemplo siguiente abre la tabla customer de la base de datos testdata. FOR ... ENDFOR se utiliza para crear un bucle en el que se muestra la secuencia de ordenación de cada etiqueta de índice del índice estructural customer mediante IDXCOLLATE( ). El nombre de cada etiqueta de índice estructural se muestra con su secuencia de ordenación.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')

USE Customer     && Abre la tabla Customer.
CLEAR
FOR nCount = 1 TO 254

IF !EMPTY(TAG(nCount))  && Comprueba etiquetas en el índice.
? TAG(nCount) + ' '     && Muestra nombre de etiqueta.
?? IDXCOLLATE(nCount)   && Muestra secuencia de ordenación.
ELSE

EXIT  && Sale del bucle cuando no encuentra mas etiquetas.
ENDIF
ENDFOR

Ver también

SET COLLATE | Desarrollar aplicaciones internacionales | INDEX (Comando) | CREATE TABLE - SQL (Comando) | CREATE CURSOR - SQL (Comando) | ALTER TABLE - SQL (Comando) | INDEX (Comando)


IIF( ) (Función)

Devuelve uno de los dos valores dependiendo del valor de una expresión lógica.

IIF(lExpression, eExpression1, eExpression2)

Valores devueltos

Carácter, Numérico, Moneda, Fecha o DateTime

Parámetros

lExpression
Especifica la expresión lógica evaluada por IIF( ).
eExpression1, eExpression2
If lExpression se evalúa con el valor verdadero (.T.), eExpression1 es devuelta y eExpression2 no es evaluada. Si lExpression es evaluada a Falso (.F.) o nulo (.NULL.), eExpression2 es devuelta y eExpression1 no es evaluada.

Observaciones

Esta función, conocida también como IF inmediato, evalúa una expresión lógica y devuelve a continuación una de las dos expresiones. Si la expresión lógica se evalúa con el valor verdadero (.T.), IIF( ) devolverá la primera expresión. Si la expresión lógica se evalúa con el valor falso (.F.) o nulo (.NULL.), IIF( ) devolverá la segunda expresión.

Nota Esta función puede utilizarse en lugar de IF ... ENDIF para expresiones condicionales simples y es especialmente útil en expresiones de etiquetas e informes que especifican condicionalmente el contenido de campos. La función IIF( ) se ejecuta, además, considerablemente más rápido que su equivalente IF ... ENDIF.

Ejemplo

Este ejemplo utiliza IIF( ) para comprobar si el campo notes en la tabla employee esta vacío. Si está vacío, se mostrará "No hay descripción"; de lo contrario, se mostrará el contenido del campo memo.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE employee  && Open Employee table
CLEAR
SCAN
? IIF(EMPTY(notes), 'No notes', notes)    && Empty memo field?
ENDSCAN

Vea también

IF ... ENDIF | #IF ... #ENDIF (Directiva del preprocesador) | Instrucciones IF


IMESTATUS( ) (Función)

Activa o desactiva la ventana IME (Editor de método Input, Input Method Editor) o devuelve el estado actual de IME.

IMESTATUS([nExpression])

Valores devueltos

Numérico (Numérico)

Parámetros

nExpression
Activa o desactiva la ventana IME. En la siguiente tabla figuran los valores para nExpression y el estado correspondiente de la ventana IME.
nExpression | Acción de ventana IME
0 | Desactiva la ventana IME.
1 | Activa la ventana IME.

Si se omite nExpression, IMESTATUS( ) devuelve el estado actual de IME. En la siguiente tabla figuran los valores devueltos para el estado de IME. Utilice VERSION(3) para determinar la configuración regional actual.

En la siguiente tabla figuran los valores devueltos para el estado de IME en la configuración regional de Japón.

Valor devuelto | Estado IME
0 | No está instalado ningún IME.
1 | IME activado.
2 | IME desactivado.
3 | IME inhabilitado.
4 | Modo Hiragana (dos bytes).
5 | Modo Katakana (dos bytes).
6 | Modo Katakana (un byte).
7 | Modo alfanumérico (dos bytes).
8 | Modo alfanumérico (un byte).

En la siguiente tabla figuran los valores devueltos para el estado de IME en la configuración regional de Corea.

Valor devuelto | Estado IME
0 | No está instalado ningún IME.
1 | Modo Hangul (un byte).
2 | Modo Inglés (un byte).
11 | Modo Inglés (dos bytes).
15 | Modo Hangul (dos bytes).
23 | Modo de conversión Hanja (Hangul + modo un byte).
31 | Modo de conversión Hanja (Hangul + modo dos bytes).

Observaciones

Para obtener más información, vea Desarrollar aplicaciones internacionales.

Esta función es útil para manipular juegos de caracteres de dos bytes para idiomas como Hiragana y Katakana.

Vea también

Escribir datos internacionales | SET BROWSEIME | IMEMode (Propiedad) | ISLEADBYTE( ) (Función) | STRCONV( ) (Función)


INDBC( ) (Función)

Devuelve verdadero (.T.) si el objeto especificado de base de datos esta en la base de datos actual; de lo contrario devuelve falso (.F.).

INDBC(cDatabaseObjectName, cType)

Valores devueltos

Lógico

Parámetros

cDatabaseObjectName
Especifica el nombre de una conexión con nombre, un campo, un índice, una tabla o una vista SQL para la que INDBC( ) devuelve un valor lógico que indica si el objeto está o no en la base de datos actual.
cType
Especifica el tipo de objeto de la base de datos de cDatabaseObjectName. La tabla siguiente indica los valores de cType y el tipo de objeto correspondiente de la base de datos.
cType | Tipo de objeto de la base de datos
CONNECTION | Conexión con nombre
FIELD | Campo
INDEX | Indice
TABLE | Tabla
VIEW | Vista SQL

Los valores CONNECTION, FIELD, INDEX, TABLE y VIEW no se pueden abreviar.

Observaciones

Es necesario que haya una base de datos abierta y actual cuando se ejecuta INDBC( ) de lo contrario, Visual FoxPro generara un mensaje de error.

Ejemplo

En el ejemplo siguiente se crea una base de datos temporal llamada mydbc y se agrega a la misma una tabla temporal llamada mytable. Se utiliza INDBC( ) para determinar si la nueva tabla se encuentra en la base de datos. Luego se cierran y borran la tabla y la base de datos.

CLOSE DATABASES
CREATE DATABASE mydbc  && Creates a new database
CREATE TABLE mytable (field1 C(10)) && Automatically added to database
? 'MyTable in the database? '
?? INDBC('mytable', 'TABLE')  && Returns .T.
CLOSE DATABASES
DELETE DATABASE mydbc DELETETABLES

Vea también

ADBOBJECTS( ) | CREATE DATABASE | DELETE DATABASE | OPEN DATABASE | SET DATABASE


INDEXSEEK( ) (Función)

Sin mover el puntero de los registros, busca en una tabla indexada la primera ocurrencia de un registro cuya clave de índice coincida con una expresión especificada.

INDEXSEEK(eExpression [, lMovePointer [, nWorkArea | cTableAlias
[, nIndexNumber | cIDXIndexFileName | cTagName]]])

Valores devueltos

Lógico

Parámetros

eExpression
Especifica la expresión de la clave de índice sobre la que desea realizar una búsqueda con INDEXSEEK( ).
lMovePointer
Especifica si el puntero de registro se desplazará al registro coincidente. Si lMovePointer es verdadero (.T.) y existe un registro coincidente, el puntero de registro se moverá al registro coincidente. Si lMovePointer es verdadero (.T.) y no existe ningún registro coincidente, el puntero de registro no se moverá. Si lMovePointer es falso (.F.) o se omite, el puntero de registro no se moverá incluso si existe un registro coincidente.
nWorkArea
Especifica el número de área de trabajo de la tabla en la que se buscará la clave de índice.
cTableAlias
Especifica el alias de la tabla en la que se realizará la búsqueda. Si omite nWorkArea y cTableAlias, se realizará una búsqueda en la tabla del área de trabajo actualmente seleccionada.
nIndexNumber
Especifica el número del archivo de índice o la etiqueta utilizada para buscar la clave de índice. nIndexNumber se refiere a los archivos de índice tal y como aparecen en USE o SET INDEX. Los archivos .IDX abiertos están numerados primero en el orden en que aparecen en USE o SET INDEX. Las etiquetas en el archivo estructural .CDX (si existe) son entonces numeradas en el orden en el que son creados. Finalmente, las etiquetas de cualquier archivo independiente .CDX abierto se numeran en el orden en el que se crean. Para más información sobre la numeración indexada, consulte SET ORDER.
cIDXIndexFileName
Especifica un archivo .idx que se utiliza para buscar la clave de índice.
cTagName
Especifica la etiqueta de un archivo .CDX que se utiliza para buscar la clave de índice. El nombre de etiqueta puede pertenecer a un archivo .CDX estructural o a cualquier archivo .CDX independiente abierto.
Nota El archivo .IDX tiene prioridad si existen un archivo .IDX y nombres de etiqueta duplicados.

Observaciones

INDEXSEEK( ) devuelve verdadero (.T.) si se encuentra una coincidencia; de lo contrario devuelve falso (.F.). Se puede utilizar INDEXSEEK( ) sólo con una tabla que tenga un orden de índices establecido, y sólo se puede buscar una clave de índice. La coincidencia debe ser exacta a menos que SET EXACT esté en OFF.

INDEXSEEK( ) proporciona una manera rápida de buscar registros sin mover el puntero de registro. Porque las reglas y desencadenadores no se ejecutan, ya que el puntero de registro no se desplaza. Si INDEXSEEK( ) devuelve verdadero (.T.) indicando que se ha encontrado un registro coincidente, puede ejecutar INDEXSEEK( ) de nuevo con el segundo parámetro lMovePointer establecido a verdadero (.T.) para desplazarse al registro coincidente.

INDEXSEEK( ) Devolverá Falso, cuando trata de buscar un valor en el registro más recientemente creado (creado con INSERT INTO ó APPEND BLANK) hasta que el puntero del registro sea movido. Puede ejecutar un comando GO BOTTOM para causar INDEXSEEK( ) y encontrar el registro creado recientemente.

Vea también

INDEX | KEYMATCH( ) | LOCATE | SEEK | SEEK( )


INKEY( ) (Función)

Devuelve el número correspondiente a la primera tecla presionada o el primer clic del ratón (ratón) que haya en el búfer de teclado.

INKEY([nSeconds] [, cHideCursor])

Valores devueltos

Numérico

Parámetros

nSeconds
Especifica durante cuantos segundos esperará una pulsación INKEY( ). Si nSeconds no se incluye, INKEY( ) devuelve inmediatamente un valor de una pulsación de tecla. INKEY( ) esperará una pulsación indefinidamente si nSeconds es 0.
cHideCursor
Muestra u oculta el cursor, o comprueba si se ha hecho clic con el ratón. Para mostrar el cursor, incluya S en cHideCursor. Para ocultar el cursor, incluya H en cHideCursor. Si se incluye S y H, a la vez, en cHideCursor, tendrá prioridad el último carácter de cHideCursor.

De forma predeterminada, INKEY( ) no detecta un clic del ratón. Para detectar un clic del ratón (ratón), incluya M en cHideCursor. Si se incluye M en cHideCursor, INKEY( ) devolverá el valor 151 para un clic del ratón. Consulte el segundo ejemplo de la tabla siguiente para ver la forma de comprobar un doble clic.

Para comprobar un clic del ratón y mostrar el cursor, incluya M y S a la vez. Para comprobar un clic del ratón y ocultar el cursor, incluya H y M a la vez.

Cuando se asigna una macro de teclado a una tecla o a una combinación de teclas, puede incluir E en cHideCursor para expandir la macro de teclado. Cuando se incluye E, INKEY( ) devuelve un valor correspondiente a la primera pulsación de tecla asignada a la macro de teclado. Puede devolver valores sucesivos para cada pulsación de tecla de una macro de teclado de forma repetitiva ejecutando INKEY( ) con E incluida. Si E no se incluye, INKEY( ) devuelve el valor de la tecla o combinación de teclas que desencadena la macro de teclado.

Cualquier carácter que no sea H, M, S y E en cHideCursor se pasará por alto.

La siguiente tabla muestra los valores que devuelve la función INKEY( ) para las teclas en solitario y en combinación con las teclas MAYÚS, CTRL y ALT. Un guión (—) indica que la combinación de teclas no devolverá ningún valor.

Tecla | Sola | MAYÚS | CTRL | ALT
F1 | 28 | 84 | 94 | 104
F2 | –1 | 85 | 95 | 105
F3 | –2 | 86 | 96 | 106
F4 | –3 | 87 | 97 | 107
F5 | –4 | 88 | 98 | 108
F6 | –5 | 89 | 99 | 109
F7 | –6 | 90 | 100 | 110
F8 | –7 | 91 | 101 | 111
F9 | –8 | 92 | 102 | 112
F10 | –9 | 93 | 103 | 113
F11 | 133 | 135 | 137 | 139
F12 | 134 | 136 | 138 | 140
1 49 33 – 120
2 50 64 – 121
3 51 35 – 122
4 52 36 – 123
5 53 37 – 124
6 54 94 – 125
7 55 38 – 126
8 56 42 – 127
9 57 40 – 128
0 48 41 – 19
a | 97 | 65 | 1 | 30
b | 98 | 66 | 2 | 48
c | 99 | 67 | 3 | 46
d | 100 | 68 | 4 | 32
e | 101 | 69 | 5 | 18
f | 102 | 70 | 6 | 33
g | 103 | 71 | 7 | 34
h | 104 | 72 | 127 | 35
I | 105 | 73 | 9 | 23
j | 106 | 74 | 10 | 36
k | 107 | 75 | 11 | 37
l | 108 | 76 | 12 | 38
m | 109 | 77 | 13 | 50
n | 110 | 78 | 14 | 49
o | 111 | 79 | 15 | 24
p | 112 | 80 | 16 | 25
q | 113 | 81 | 17 | 16
r | 114 | 82 | 18 | 19
s | 115 | 83 | 19 | 31
t | 116 | 84 | 20 | 20
u | 117 | 85 | 21 | 22
v | 118 | 86 | 22 | 47
w | 119 | 87 | 23 | 17
x | 120 | 88 | 24 | 45
y | 121 | 89 | 25 | 21
z | 122 | 90 | 26 | 44
INS | 22 | 22 | 146 | 162
INICIO | 1 | 55 | 29 | 151
DEL | 7 | 7 | 147 | 163
FIN | 6 | 49 | 23 | 159
RE PÁG | 18 | 57 | 31 | 153
AV PÁG | 3 | 51 | 30 | 161
FLECHA ARRIBA | 5 | 56 | 141 | 152
FLECHA ABAJO | 24 | 50 | 145 | 160
FLECHA DERECHA | 4 | 54 | 2 | 157
FLECHA IZQUIERDA | 19 | 52 | 26 | 155
ESC | 27 | –/27 | –*/27 | –*/1
ENTER | 13 | 13 | 10 | –/166
BACKSPACE | 127 | 127 | 127 | 14
TAB 9 15 148/* *
SPACEBAR | 32 | 32 | 32/– | 57

* Pulsación reservada por Windows.

Observaciones

INKEY( ) devuelve 0 si no se ha presionado ninguna tecla. Si hay varias teclas en el búfer de teclado, INKEY( ) devuelve el valor de la primera tecla introducida en el búfer.

Vea también

_DBLCLICK | KEYBOARD | KeyPress (Evento) | LASTKEY( ) | ON KEY | READKEY( ) | SET TYPEAHEAD


INLIST( ) (Función)

Determina si una expresión coincide con otra perteneciente a un conjunto de expresiones.

INLIST(eExpression1, eExpression2 [, eExpression3 ...])

Valores devueltos

Logical o valor nulo

Parámetros

eExpression1
Especifica la expresión que INLIST( ) busca en el conjunto de expresiones.
eExpression2 [, eExpression3 ...]
Especifica el conjunto de expresiones dónde debe buscar. Es necesario incluir como mínimo una expresión (eExpression2) y se admiten un máximo de 24 (eExpression2, eExpression3, etc.).

Todas las expresiones de la lista deben ser del mismo tipo de datos.

Observaciones

INLIST( ) devuelve verdadero (.T.) si encuentra la expresión en el conjunto de expresiones. De lo contrario, INLIST( ) devolverá falso (.F.). Se devuelve el valor nulo si eExpression1 es el valor nulo. También se devuelve el valor nulo si eExpression1 no es el valor nulo, eExpression1 no coincide con otra expresión y al menos una de las otras expresiones es el valor nulo.

Ejemplo

En este ejemplo, INLIST( ) determina el trimestre del año del mes actual. El mes actual se almacena en la variable gcMonth. Cada instrucción CASE utiliza INLIST( ) para determinar si el contenido de gcMonth puede encontrarse en una lista de nombres de mes. El nombre del trimestre que se devuelve se almacena en la variable gcReporTitle.

SET TALK ON
STORE CMONTH(DATE( )) TO gcMonth
DO CASE
CASE INLIST(gcMonth,'January','February','March')
STORE 'First Quarter' TO gcReporTitle
CASE INLIST(gcMonth,'April','May','June')
STORE 'Second Quarter' TO gcReporTitle
CASE INLIST(gcMonth,'July','August','September')
STORE 'Third Quarter' TO gcReporTitle
OTHERWISE
STORE 'Fourth Quarter' TO gcReporTitle
ENDCASE
WAIT WINDOW gcReporTitle

Vea también

BETWEEN( ) | Instrucciones CASE | DO CASE ... ENDCASE (Comando) | AT( ) | ATLINE( ) | RAT( ) | RATLINE( ) | $ (Operador) | OCCURS( )


INPUTBOX( ) (Función)

Muestra un cuadro de diálogo modal utilizado por una vista parametrizada para la entrada de una sola cadena.

INPUTBOX(cInputPrompt [, cDialogCaption [, cDefaultValue [, nTimeout [,cTimeoutValue]]]])

Parámetros

cInputPrompt
Especifica el mensaje mostrado sobre el cuadro de entrada de texto.
cDialogCaption
Especifica el texto que se va a mostrar en la barra de título del cuadro de diálogo.
cDefaultValue
Especifica el valor predeterminado que se va a mostrar en el cuadro de entrada de texto.
nTimeout
Especifica un valor de tiempo de espera en 1/1000 segundos.
cTimeoutValue
Especifica el valor devuelto si termina el tiempo de espera.

Observaciones

El cuadro de diálogo muestra un cuadro de edición y botones Aceptar y Cancelar. El botón Aceptar siempre devuelve el contenido del cuadro de texto. El botón Cancelar siempre devuelve una cadena vacía. Si termina el tiempo de espera siempre devolverá el texto especificado en cTimeoutValue o una cadena vacía si cTimeoutValue no fue pasado.

Ejemplo

Y = "Nothing at all"
Y = INPUTBOX("TypeHere","Input ",Y,5000)
&& Muestra el cuadro de diálogo por 5 segundos,
&& luego muestra algo escrito o "Nothing at all"

Vea también

Entrada y salida | INPUT (Comando) | MESSAGEBOX (Función)


INSMODE( ) (Función)

Devuelve el modo actual de la tecla Insertar, o activa o desactiva el modo insertar.

INSMODE([lExpression])

Valores devueltos

Logical

Parámetros

lExpression
Activa o desactiva el modo insertar. INSMODE(.T.) activa el modo insertar, e INSMODE(.F.) lo desactiva. Devuelve un valor lógico correspondiente al ajuste del modo insertar antes de ejecutar INSMODE(.T.) o INSMODE(.F.).

Observaciones

Si omite el argumento opcional y el modo insertar está activo (los caracteres se insertan delante del cursor), INSMODE( ) devuelve verdadero (.T.). Si el modo insertar está desactivado (los caracteres se sobrescriben en el punto de inserción), INSMODE( ) devuelve falso (.F.).

Ejemplo

El primer ejemplo siguiente utiliza INSMODE( ) para activar el modo insertar y luego alterna el modo al estado opuesto.

SET TALK ON
=INSMODE(.T.)  && Set insert mode on
? INSMODE( )
= INSMODE(!INSMODE( ))  && Toggle insert mode to opposite state
? INSMODE( )

Vea también

CAPSLOCK( ) | NUMLOCK( ) | SET TALK (Comando)


INT( ) (Función)

Evalúa una expresión numérica y devuelve la parte entera de dicha expresión.

INT(nExpression)

Valores devueltos

Numérico

Parámetros

nExpression
Especifica la expresión numérica cuya parte entera devuelve INT( ).

Ejemplo

CLEAR
? INT(12.5)  && Displays 12
? INT(6.25 * 2)  && Displays 12
? INT(-12.5)  && Displays -12
STORE -12.5 TO gnNumber
? INT(gnNumber)  && Displays -12

Vea también

CEILING( ) | FLOOR( ) | ROUND( )


ISALPHA( ) (Función)

Determina si el carácter más a la izquierda de una expresión de caracteres es alfabético.

ISALPHA(cExpression)

Valores devueltos

Logical

Parámetros

cExpression
Especifica la expresión de caracteres evaluada por ISALPHA( ). Los caracteres que aparezcan después del primer carácter de cExpression se pasan por alto.

Observaciones

ISALPHA( ) devuelve verdadero (.T.) si el carácter situado más a la izquierda de la expresión de caracteres especificada es alfabético. Si no lo es, ISALPHA( ) devuelve falso (.F.).

Ejemplo

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE Customer     && Open customer table
CLEAR
DISPLAY contact
? ISALPHA(contact)  && Displays .T.
DISPLAY maxordamt
? ISALPHA(cust_id)  && Displays .F.

Vea también

ISLOWER( ) | ISUPPER( ) | LOWER( ) | UPPER( )


ISBLANK( ) (Función)

Determina si una expresión está en blanco.

ISBLANK(eExpression)

Valores devueltos

Logical

Parámetros

eExpression
Especifica la expresión evaluada por ISBLANK( ). eExpression puede ser un campo de una tabla, una variable o elemento de matriz, o una expresión.

Para un campo, ISBLANK( ) devuelve verdadero (.T.) si contiene los siguientes valores.

Tipo | Contenido
Character | Una cadena vacía, espacios o ningún valor (registro en blanco recién anexado o borrado con BLANK)
Numérico | Ningún valor (registro en blanco recién anexado o borrado con BLANK)
Flotante | Ningún valor (registro en blanco recién anexado o borrado con BLANK)
Fecha | Fecha en blanco ({ / / }) o ningún valor (registro en blanco recién anexado o borrado con BLANK)
DateTime | Fecha y hora en blanco ({ / / : : }) o ningún valor (registro en blanco recién anexado o borrado con BLANK)
Lógicas | Ningún valor (registro en blanco recién anexado o borrado con BLANK)
Memo | Vacío (sin contenido memo)
General | Vacío (sin objeto OLE)
Imagen | Vacío (sin imagen)

Observaciones

ISBLANK( ) devuelve verdadero (.T.) si la expresión eExpression está en blanco; de lo contrario, ISBLANK( ) devuelve falso (.F.).

APPEND BLANK y BLANK se usan para crear un registro en blanco. BLANK también se puede usar para borrar datos de los campos de un registro. ISBLANK( ) puede determinar si un campo está en blanco.

Fíjese en que las expresiones del tipo Currency, Integer y Double nunca están en blanco y que ISBLANK( ) siempre devuelve falso (.F.) para estos tipos de datos.

ISBLANK( ) es distinto de EMPTY( ) e ISNULL( ). Por ejemplo, EMPTY( ) devuelve verdadero (.T.) si una expresión de caracteres contiene cualquier combinación de valores nulos, espacios, tabulaciones, retornos de carro o avances de línea; ISBLANK( ) devuelve verdadero (.T.) si una expresión de caracteres contiene solamente la cadena vacía o espacios.

Ejemplo

En el ejemplo siguiente se crea una tabla llamada mytable y se anexa un registro en blanco. ISBLANK( ) devuelve verdadero (.T.) porque myfield está en blanco. Se coloca un valor en myfield e ISBLANK( ) devuelve falso (.F.) porque myfield ya no está en blanco.

CREATE TABLE mytable FREE (myfield C(20))
APPEND BLANK  && Add new blank record
CLEAR
? ISBLANK(myfield)  && Displays .T.
REPLACE myfield WITH 'John Smith'  && Insert a value in the field
? ISBLANK(myfield)  && Displays .F.

Vea también

APPEND | BLANK | EMPTY( ) | ISNULL( ) | LEN( )


ISCOLOR( ) (Función)

Determina si su PC puede mostrar color.

ISCOLOR( )

Valores devueltos

Lógico (Logical)

Observaciones

ISCOLOR( ) devuelve verdadero (.T.) si su PC tiene capacidad para mostrar color (si está usando un monitor en color o no). Si su PC no proporciona soporte para color, ISCOLOR( ) devuelve falso (.F.).

Vea también

SET DISPLAY | SYS(2006) - Tarjeta gráfica actual


ISDIGIT( ) (Función)

Determina si el carácter de la izquierda de la expresión de caracteres especificada es un dígito (0 a 9).

ISDIGIT(cExpression)

Valores devueltos

Logical

Parámetros

cExpression
Especifica la expresión de caracteres comprobada por ISDIGIT( ). Los caracteres que aparezcan después del primer carácter de cExpression se pasan por alto.

Observaciones

ISDIGIT( ) devuelve verdadero (.T.) si el carácter más a la izquierda de la expresión de caracteres especificada es un dígito (0 a 9); de lo contrario, ISDIGIT( ) devuelve falso (.F.).

Ejemplo

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE orders  && Open Orders table
CLEAR
DISPLAY cust_id
? ISDIGIT(cust_id)  && Displays .F.
DISPLAY order_dsc
? ISDIGIT(ALLTRIM(STR(order_dsc)))  && Displays .T.

Vea también

ISALPHA( ) | CLEAR (Comandos) | Funciones de caracteres | USE


ISEXCLUSIVE( ) (Función)

Devuelve verdadero (.T.) si una tabla está abierta para uso exclusivo; de lo contrario, devuelve falso (.F.).

ISEXCLUSIVE([cTableAlias | nWorkArea | cDatabaseName [, nType]])

Valores devueltos

Logical

Parámetros

cTableAlias
Especifica el alias de la tabla para la que se devuelve el estado de uso exclusivo. Visual FoxPro genera un mensaje de error si especifica un alias de tabla que no existe.
nWorkArea
Especifica el área de trabajo de la tabla para la que se devuelve el estado de uso exclusivo. ISEXCLUSIVE( ) devuelve falso (.F.) si no hay abierta una tabla en el área de trabajo que especifique.
cDatabaseName
Especifica el nombre de la base de datos para la que se devuelve el estado de uso exclusivo.
nType
Especifica si se devolverá el estado de uso exclusivo para una tabla o para una base de datos. En la siguiente tabla se enumeran los valores para nType y el estado devuelto correspondiente.
nType | Estado exclusivo devuelto
1 | Tabla
2 | Base de datos

Para determinar el estado exclusivo para una base de datos, es necesario incluir nType con un valor de 2.

Observaciones

ISEXCLUSIVE( ) devuelve un valor para la tabla abierta en el área de trabajo seleccionada actualmente si omite los argumentos opcionales cTableAlias, nWorkArea o cDatabaseName.

Una tabla se abre para uso exclusivo al incluir la palabra clave EXCLUSIVE en USE, o al establecer SET EXCLUSIVE como ON antes de abrir la tabla.

Para abrir una base de datos para uso exclusivo, incluya la palabra clave EXCLUSIVE en OPEN DATABASE.

Ejemplo

En el ejemplo siguiente, la función ISEXCLUSIVE( ) comprueba que la tabla se ha abierto para uso exclusivo. La tabla no se vuelve a indexar porque la tabla que hay en el área de trabajo actual no se ha abierto para uso exclusivo.

cExclusive = SET('EXCLUSIVE')
SET EXCLUSIVE OFF
SET PATH TO (HOME(2) + 'data\')
OPEN DATA testdata  && Opens the test databsase
USE customer     && Not opened exclusively
USE employee IN 0 EXCLUSIVE    && Opened exclusively in another work area
IF ISEXCLUSIVE( )
REINDEX  && Can only be done if table opened exclusively
ELSE
WAIT WINDOW 'The table has to be exclusively opened'
ENDIF
SET EXCLUSIVE &cExclusive

Vea también

OPEN DATABASE | SET EXCLUSIVE | USE


ISFLOCKED( ) (Función)

Devuelve el estado de bloqueo de la tabla.

ISFLOCKED([nWorkArea | cTableAlias])

Valores devueltos

Lógico (Logical)

Parámetros

nWorkArea
Especifica el número de área de trabajo para la tabla cuyo estado de bloqueo se devuelve. Si omite cTableAlias y nWorkArea, se devolverá el estado de bloqueo para la tabla abierta en el área de trabajo en uso.
cTableAlias
Especifica el alias de la tabla para la que se devuelve el estado de bloqueo. Si especifica un alias de una tabla que no está abierta, se generará el mensaje de error "No se encuentra el alias".

Observaciones

ISFLOCKED( ) devuelve un valor lógico verdadero (.T.) si la tabla está bloqueada; de lo contrario, devolverá un valor lógico falso (.F.). ISFLOCKED( ) es similar a SYS(2011), pero devuelve un valor lógico que no necesita localización en el caso de aplicaciones internacionales.

Nota ISFLOCKED() solamente devuelve Verdadero (.T.) en la estación de trabajo que tiene el archivo bloqueado.

Vea también

FLOCK( ) | ISRLOCKED( ) | LOCK( ) | RLOCK( ) | SYS(2011) - Estado actual de bloqueo


ISLEADBYTE( ) (Función)

Devuelve verdadero (.T.) si el primer byte de una expresión de caracteres es el byte inicial de un carácter de dos bytes.

ISLEADBYTE(cExpression)

Valores devueltos

Logical

Parámetros

cExpression
Especifica la expresión de caracteres que ISLEADBYTE( ) evalúa. Se ignorarán todos los bytes después del primero en el primer carácter de cExpression.

Observaciones

ISLEADBYTE( ) devuelve verdadero (.T.) si el primer byte del primer carácter de una expresión de caracteres es el byte inicial en un carácter de dos bytes. Si ISLEADBYTE( ) devuelve falso (.F.) se debe a que se está examinando un carácter de un solo byte.

Esta función es útil para manipular juegos de caracteres de dos bytes para idiomas como Hiragana y Katakana.

Vea también

ISALPHA( ) (Función) | ISDIGIT( ) (Función) | ISLOWER( ) (Función) | ISUPPER( ) (Función)


ISLOWER( ) (Función)

Determina si el carácter más a la izquierda de la expresión de caracteres especificada es una letra minúscula.

ISLOWER(cExpression)

Valores devueltos

Logical

Parámetros

cExpression
Especifica la expresión de caracteres comprobada por ISLOWER( ). ISLOWER( ) pasa por alto los caracteres situados tras el primer carácter de cExpression.

Observaciones

ISLOWER( ) devuelve verdadero (.T.) si el carácter más a la izquierda de la expresión de caracteres especificada es una letra minúscula; de lo contrario, ISLOWER( ) devuelve falso (.F.).

Ejemplo

CLEAR
? ISLOWER('redmond')  && Displays .T.
? ISLOWER('Redmond')  && Displays .F.

Vea también

ISALPHA( ) | ISUPPER( ) | LOWER( ) | UPPER( )


ISMOUSE( ) (Función)

Devuelve verdadero (.T.) si está presente el hardware del ratón (ratón).

ISMOUSE( )

Observaciones

ISMOUSE( ) devuelve verdadero (.T.) si está presente el hardware del ratón; de lo contrario, devuelve falso (.F.).

Ejemplo

El ejemplo siguiente muestra un valor verdadero (.T.) si está presente el hardware de ratón; de lo contrario muestra falso (.F.).

CLEAR
? 'Mouse hardware present? '
?? ISMOUSE( )

Vea también

MCOL( ) | MDOWN( ) | MROW( ) | SYSMETRIC( )


ISNULL( ) (Función)

Devuelve verdadero (.T.) si una expresión da como resultado un valor nulo; de lo contrario, ISNULL( ) devuelve falso (.F.).

ISNULL(eExpression)

Valores devueltos

Logical

Parámetros

eExpression
Especifica la expresión que se va a evaluar.

Observaciones

Utilice ISNULL( ) para determinar si el contenido de un campo, una variable de memoria o un elemento de matriz contiene un valor nulo, o si una expresión da como resultado un valor nulo.

Ejemplo

En el ejemplo siguiente se usa ISNULL( ) para comprobar si hay un valor nulo.

STORE .NULL. TO mNullvalue  && Store a null value to a memory variable
CLEAR
? mNullvalue  && Display the value of the memory variable
? ISNULL(mNullvalue)  && Returns .T., indicating a null value
? TYPE('mNullvalue')     && Returns L, indicating a logical value
? (mNullvalue = .NULL.)  && Returns .NULL., bad test for null values

Vea también

NVL( ) | SET NULL | Tratamiento de valores NULL


ISREADONLY( ) (Función)

Determina si una tabla o una base de datos está abierta en modo de sólo lectura.

ISREADONLY([nWorkArea | cTableAlias])

Valores devueltos

Logical

Parámetros

nWorkArea | cTableAlias
Devuelve el estado de sólo lectura de una tabla abierta en otra área de trabajo. nWorkArea especifica el número del área de trabajo y cTableAlias especifica el alias de la tabla o del área de trabajo. ISREADONLY( ) devuelve falso (.F.) si no hay ninguna tabla abierta en el área de trabajo especificada.

Si no especifica un número de área de trabajo o un alias de tabla o de área de trabajo, la función ISREADONLY( ) devuelve el estado de sólo lectura de la tabla abierta en el área de trabajo actual.

ISREADONLY(0) devuelve el estado de la base de datos actual. Si no hay ninguna base de datos abierta, ISREADONLY(0) devolverá un error.

Observaciones

ISREADONLY( ) devuelve verdadero (.T.) si una tabla está abierta en modo de sólo lectura; de lo contrario, ISREADONLY( ) devuelve falso (.F.).

Para abrir una tabla en modo de sólo lectura, puede incluir la opción NOUPDATE al abrir la tabla con USE, activar la casilla de verificación Sólo lectura al abrir la tabla mediante el cuadro de diálogo Abrir o puede asignar a la tabla los atributos de sólo lectura de MS-DOS.

No puede pasar una alias de base de datos no actual a la función ISREADONLY( ). Para asegurarse de que hay una base de datos presente, puede utilizar código como el siguiente:

!EMPTY(DBC())

Los cursores creados con el comando SELECT de SQL siempre son de sólo lectura.

Ejemplo

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer    NOUPDATE  && Open customer table read-only
CLEAR
? ISREADONLY('customer')  && Returns .T.

Vea también

USE | ReadOnly (Propiedad) | SELECT - SQL (Comando)


ISRLOCKED( ) (Función)

Devuelve el estado de bloqueo del registro.

ISRLOCKED([nRecordNumber, [nWorkArea | cTableAlias]])

Valores devueltos

Lógico

Parámetros

nRecordNumber
Especifica el número del registro del que se devuelve el estado del bloqueo. Si se omite nRecordNumber, se devolverá el estado de bloqueo para el registro actual.
nWorkArea
Especifica el número del área de trabajo para la que se devuelve el estado de bloqueo de registro. Si omite cTableAlias y nWorkArea, se devolverá el estado de bloqueo de registro para la tabla abierta en el área de trabajo actual.
cTableAlias
Especifica el alias de la tabla para la cual se devuelve el estado de bloqueo de registro.

Observaciones

ISRLOCKED( ) devuelve un valor lógico Verdadero (.T.) si el registro está bloqueado; de lo contrario devuelve un valor lógico Falso (.F.).

Nota ISRLOCKED() solamente devuelve Verdadero (.T.) en la estación de trabajo que tiene el archivo bloqueado.

Vea también

FLOCK( ) | ISFLOCKED( ) | LOCK( ) | RLOCK( ) | SYS(2011) - Estado actual de bloqueo


ISUPPER( ) (Función)

Determina si el primer carácter de una expresión de caracteres es alfabético y está en mayúsculas.

ISUPPER(cExpression)

Valores devueltos

Logical

Parámetros

cExpression
Especifica la expresión de caracteres evaluada por ISUPPER( ). Los caracteres que aparezcan después del primer carácter de cExpression se pasan por alto.

Observaciones

ISUPPER( ) devuelve verdadero (.T.) si el primer carácter de una expresión de caracteres es alfabético y está en mayúsculas; de lo contrario, ISUPPER( ) devuelve falso (.F.).

Ejemplo

? ISUPPER('Redmond')  && Displays .T.
? ISUPPER('redmond')  && Displays .F.

Vea también

ISALPHA( ) | ISLOWER( ) | LOWER( ) | UPPER( )


JUSTDRIVE( ) (Función)

Devuelve la letra de unidad de una ruta de acceso completa.

JUSTDRIVE(cPath)

Valores devueltos

Character

Parámetros

cPath
Especifica el nombre completo de ruta de acceso del que sólo quiere la unidad.

Vea también

ADDBS( ) | DEFAULTEXT( ) | FILE( ) | FORCEEXT( ) | FORCEPATH( ) | JUSTEXT( ) | JUSTFNAME( ) | JUSTPATH( ) | JUSTSTEM( )


JUSTEXT( ) (Función)

Devuelve la extensión de tres letras de una ruta de acceso completa.

JUSTEXT(cPath)

Valores devueltos

Carácter (Character)

Parámetros

cPath
Especifica el nombre, que puede incluir la ruta de acceso completa, del archivo del que sólo quiere la extensión. La longitud máxima de la cadena pasada en cPath es 259 bytes.

Vea también

ADDBS( ) | DEFAULTEXT( ) | FILE( ) | FORCEEXT( ) | FORCEPATH( ) | JUSTDRIVE( ) | JUSTFNAME( ) | JUSTPATH( ) | JUSTSTEM( )


JUSTFNAME( ) (Función)

Devuelve la parte del nombre de archivo de una ruta de acceso completa.

JUSTFNAME(cFileName)

Valores devueltos

Carácter (Character)

Parámetros

cFileName
Especifica el nombre, que puede incluir la ruta de acceso completa, del archivo del que sólo se quiere el nombre de archivo. La longitud máxima de la cadena pasada en cFileName es 259 bytes.

Vea también

ADDBS( ) | DEFAULTEXT( ) | FILE( ) | FORCEEXT( ) | FORCEPATH( ) | JUSTDRIVE( ) | JUSTEXT( ) | JUSTPATH( ) | JUSTSTEM( )


JUSTPATH( ) (Función)

Devuelve la parte de ruta de acceso de una ruta completa.

JUSTPATH(cFileName)

Valores devueltos

Carácter (Character)

Parámetros

cFileName
Especifica el nombre completo (incluida la ruta de acceso) del archivo del que sólo quiere la ruta de acceso. La longitud máxima de la cadena pasada en cFileName es 259 bytes.

Vea también

ADDBS( ) | DEFAULTEXT( ) | FILE( ) | FORCEEXT( ) | FORCEPATH( ) | JUSTDRIVE( ) | JUSTEXT( ) | JUSTFNAME( ) | JUSTSTEM( )


JUSTSTEM( ) (Función)

Devuelve el nombre (el nombre del archivo sin la extensión) de una ruta de acceso completa y un nombre de archivo.

JUSTSTEM(cFileName)

Valores devueltos

Carácter (Character)

Parámetros

cFileName
Especifica el nombre (incluida la ruta de acceso) del archivo del que sólo quiere el nombre. La longitud máxima de la cadena pasada en cFileName es 259 bytes.

Vea también

ADDBS( ) | DEFAULTEXT( ) | FILE( ) | FORCEEXT( ) | FORCEPATH( ) | JUSTDRIVE( ) | JUSTEXT( ) | JUSTFNAME( ) | JUSTPATH( )


KEY( ) (Función)

Devuelve la expresión de clave de índice para una etiqueta o un archivo de índice.

KEY([CDXFileName,] nIndexNumber [, nWorkArea | cTableAlias])

Valores devueltos

Carácter (Character)

Parámetros

CDXFileName
Especifica el nombre de un archivo de índice compuesto. KEY( ) devuelve las expresiones de clave de índice de la etiqueta de índice del archivo .CDX. El archivo de índice compuesto que especifique puede ser el archivo de índice compuesto estructural que se abre automáticamente con la tabla o un archivo de índice compuesto independiente.
nIndexNumber
Especifica la expresión clave de índice que se va a devolver.

USE y SET INDEX admiten ambos una lista de archivos de índice que permite abrir varios índices para una tabla. En la lista de archivo de índice puede incluirse cualquier combinación de archivos de índice .IDX de entrada única, archivos de índice compuesto estructural o archivos de índice compuesto independiente.

La expresión numérica nIndexNumber especifica la expresión de índice que se va a devolver desde los archivos de índice abiertos. KEY( ) devuelve expresiones de índice desde los archivos de índice abiertos en el orden siguiente a medida que nIndexNumber aumenta de 1 al número total de archivos .IDX de una sola entrada abiertos, más las etiquetas de índice compuesto estructural y compuesto independiente:

  1. Primero se devuelven las expresiones de índice de archivos de índice .IDX de una sola entrada (si hay alguno abierto). El orden en que se incluyen estos archivos en USE o SET INDEX determina cómo se devolverán las expresiones de índice.
  2. A continuación, se devuelven las expresiones de índice para cada etiqueta del índice compuesto estructural (si hay alguno presente). Las expresiones de índice de las etiquetas se devuelven en el orden en que se crearon las etiquetas en el archivo de índice compuesto estructural.
  3. Por último, se devuelven las expresiones de índice para cada etiqueta de los índices compuestos independientes que haya abiertos. Las expresiones de índice de las etiquetas se devuelven en el orden en que se crearon las etiquetas en los índices compuestos independientes.

Se devuelve la cadena vacía en caso de que nIndexNumber sea mayor que el número total de archivos .idx de una sola entrada abiertos más el número de etiquetas de índice compuesto estructural y compuesto independiente.

nWorkArea
Especifica el número de área de trabajo de la tabla cuyas expresiones de clave de índice desea devolver mediante KEY( ).

Si no hay ninguna tabla abierta en el área de trabajo especificada, KEY( ) devolverá la cadena vacía.

cTableAlias
Especifica el alias de la tabla cuyas expresiones de clave de índice desea devolver mediante KEY( ).

Si ninguna tabla tiene el alias especificado, Microsoft Visual FoxPro mostrará un mensaje de error.

Si omite nWorkArea y cTableAlias, se devolverán las expresiones de clave de índice para la tabla abierta en el área de trabajo actual.

Observaciones

Se especifica una expresión de clave de índice en el momento de crear una etiqueta de índice o un archivo de índice con INDEX. La expresión de clave de índice determina cómo se muestra y se tiene acceso a una tabla cuando se abre el archivo de índice como la etiqueta o el archivo de índice de control maestro.

Para obtener más información acerca de como crear etiquetas de índice, archivos de índice y expresiones de clave de índice, vea INDEX.

Ejemplo

El ejemplo siguiente abre la tabla customer de la base de datos testdata. Se usa FOR ... ENDFOR para crear un bucle en el que se usa KEY( ) para mostrar la expresión de índice de cada etiqueta del índice estructural customer. Se muestra el nombre de cada etiqueta de índice estructural con su expresión de índice.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE Customer     && Open customer table
CLEAR
FOR nCount = 1 TO 254
IF !EMPTY(TAG(nCount))  && Checks for tags in the index
? TAG(nCount) + ' '  && Display tag name
?? KEY(nCount)  && Display index expression
ELSE
EXIT  && Exit the loop when no more tags are found
ENDIF
ENDFOR

Vea también

DESCENDING( ) | INDEX | REINDEX | SET INDEX | SYS(14) - Expresión de índice | USE


KEYMATCH( ) (Función)

Busca una clave de índice en una etiqueta o un archivo de índice.

KEYMATCH(eIndexKey [, nIndexNumber [, nWorkArea | cTableAlias]])

Valores devueltos

Logical

Parámetros

eIndexKey
Especifica la clave de índice buscada por KEYMATCH( ). Las claves de índice de un archivo o una etiqueta de índice están determinadas por la expresión de índice. Una expresión de índice se especifica cuando se crea un archivo o una etiqueta de índice mediante INDEX. KEY( ) y SYS(14) se utilizan para devolver las expresiones de índice para archivos de índice y etiquetas de índice. Para obtener más información acerca de cómo crear archivos de índice, expresiones de índice y claves de índice, vea INDEX.

Si no incluye ninguno de los parámetros opcionales, KEYMATCH( ) buscará la clave de índice especificada en el archivo o la etiqueta de índice maestro. Si no hay ninguna etiqueta ni archivo de índice maestro activos (por ejemplo, si ha ejecutado SET ORDER TO sin ningún parámetro para colocar la tabla en el orden natural de los registros), Visual FoxPro generará un mensaje de error.

nIndexNumber
Especifica el archivo de índice o la etiqueta de índice que se va a buscar. nIndexNumber es normalmente un entero que comienza en 1 y aumenta de uno en uno para buscar etiquetas de índice adicionales.

Si nIndexNumber es 1, se buscará en el archivo de índice maestro .IDX de una sola entrada o en la etiqueta de índice maestro (si hay alguno presente).

A medida que nIndexNumber aumenta, se buscan las etiquetas posteriores del índice compuesto estructural (si hay alguno presente). Las etiquetas se buscan en el mismo orden en que se crearon dentro del índice compuesto estructural.

Cuando nIndexNumber continúa aumentando y ha terminado de buscar todas las etiquetas del índice compuesto estructural, buscará las etiquetas de cualquier índice compuesto independiente que esté abierto. Las etiquetas se buscan en el mismo orden en que se crearon en los índices compuestos independientes.

Se genera un mensaje de error si nIndexNumber es mayor que el número total de archivos .IDX de una sola entrada abiertos más las etiquetas de índice compuesto estructural y compuesto independiente.

nWorkArea | cTableAlias
Busca archivos o etiquetas de índice abiertos en otra área de trabajo. nWorkArea especifica el número del área de trabajo y cTableAlias especifica el alias de la tabla. Si omite el área de trabajo y el alias, KEYMATCH( ) buscará archivos o etiquetas de índice abiertos para la tabla en el área de trabajo actual.

Si ninguna tabla tiene el alias especificado, Visual FoxPro mostrará un mensaje de error.

Observaciones

KEYMATCH( ) busca en una etiqueta o en un archivo de índice una clave de índice específica y devuelve verdadero (.T.) si encuentra dicha clave de índice; de lo contrario, KEYMATCH( ) devolverá falso (.F.). KEYMATCH( ) se puede usar para impedir la duplicación de claves de índice.

KEYMATCH( ) devuelve el puntero de registro al registro donde estaba originalmente antes de ejecutar KEYMATCH( ).

Vea también

INDEX | INDEXSEEK( ) | KEY( ) | SET INDEX | SYS(14) | USE


LASTKEY( ) (Función)

Devuelve un número entero correspondiente a la última tecla presionada.

LASTKEY( )

Valores devueltos

Numérico

Observaciones

Los valores devueltos por LASTKEY( ) son los mismos que devuelve INKEY( ). Vea INKEY( ) para obtener una lista de las teclas y sus valores devueltos.

LASTKEY( ) se actualiza cuando el usuario se desplaza entre los controles.

Vea también

CHRSAW( ) | INKEY( ) | READKEY( )

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


LEFT( ) (Función)

Devuelve un número especificado de carácteres de una expresión de carácteres, a partir del carácter situado más a la izquierda.

LEFT(cExpression, nExpression)

Valores devueltos

Character

Parámetros

cExpression
Especifica la expresión de carácteres de la cual LEFT( ) devuelve los caracteres.
nExpression
Especifica el número de caracteres devueltos desde la expresión de caracteres. Si nExpression es mayor que la longitud de cExpression, se devolverá toda la expresión. Devuelve la cadena vacía si nExpression es negativa o si es 0.

LEFT( ) es idéntica a SUBSTR( ) con una posición inicial de 1.

Ejemplo

CLEAR
? LEFT('Redmond, WA', 4)  && Displays Redm

Vea también

AT( ) | AT_C( ) | ATC( ) | ATCC( ) | ATCLINE( ) | ATLINE( ) | LTRIM( ) | RAT( ) | RATLINE( ) | RIGHT( ) | RTRIM( ) | SUBSTR( ) | LEFTC( ) | RIGHTC( ) | SUBSTRC( )


LEFTC( ) (Función)

Devuelve un número especificado de caracteres de una expresión de carácteres, a partir del carácter situado más a la izquierda.

LEFTC(cExpression, nExpression)

Valores devueltos

Carácter

Parámetros

cExpression
Especifica la expresión de carácteres a partir de la cual LEFTC( ) devuelve carácteres.
nExpression
Especifica el número de carácteres devueltos desde la expresión de carácteres. Si nExpression es mayor que la longitud de cExpression, se devolverá toda la expresión. Devuelve la cadena vacía si nExpression es negativa o si es 0.

Observaciones

LEFTC( ) se ha diseñado para expresiones que contengan carácteres de dos bytes. Si la expresión sólo contiene carácteres de un byte, LEFTC( ) será equivalente a LEFT( ).

LEFTC( ) devuelve un número específico de caáacteres a partir de una expresión de carácteres que contiene cualquier combinación de carácteres de un byte y de dos bytes.

LEFTC( ) es idéntica a SUBSTRC( ) con una posición de inicial de 1.

Esta función es útil para manipular juegos de carácteres de dos bytes para idiomas como Hiragana y Katakana.

Vea también

AT( ) | AT_C( ) | ATC( ) | ATCC( ) | ATCLINE( ) | ATLINE( ) | LEFT( ) | LTRIM( ) | RAT( ) | RATLINE( ) | RIGHT( ) | RTRIM( ) | SUBSTR( ) | RIGHTC( ) | SUBSTRC( )


LEN( ) (Función)

Devuelve el número de carácteres de una expresión de caracteres.

LEN(cExpression)

Valores devueltos

Numérico

Parámetros

cExpression
Especifica la expresión de carácteres cuyo número de carácteres devuelve LEN( ).

Observaciones

Utilice LEN( ) para determinar la longitud de una expresión de carácteres.

Ejemplo

El ejemplo siguiente abre la tabla customer de la base de datos testdata. Se usa LEN( ) para mostrar
los anchos de los campos cust_id y contact.
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE Customer     && Open customer table
CLEAR
? 'Width of contact field: '
?? LEN(contact)
? 'Width of cust_id field: '
?? LEN(cust_id)

Vea también

FSIZE( ) | TXTWIDTH( ) | LENC( ) (Función)


LENC( ) (Función)

Devuelve el número de carácteres de una expresión de carácteres o de un campo memo.

LENC(cExpression)

Valores devueltos

Numérico

Parámetros

cExpression
Especifica la expresión de caráacteres cuyo número de carácteres devuelve LENC( ).

Observaciones

LENC( ) se ha diseñado para expresiones que contengan carácteres de dos bytes. Si la expresión sólo contiene carácteres de un byte, LENC( ) será equivalente a LEN( ).

LENC( ) devuelve un número específico de carácteres a partir de una expresión de carácteres o de un campo memo que contiene cualquier combinación de carácteres de un byte y de doble byte.

Esta función es útil para manipular juegos de carácteres de dos bytes para idiomas como Hiragana y Katakana.

Vea también

LEN( ) | Creación de aplicaciones con juegos de caracteres codificados en dos bytes | FSIZE( ) | TXTWIDTH( )


LIKE( ) (Función)

Determina si una expresión de caracteres coincide con otra expresión de caracteres.

LIKE(cExpression1, cExpression2)

Valores devueltos

Lógico

Parámetros

cExpression1
Especifica la expresión de caracteres que LIKE( ) compara con cExpression2. cExpression1 puede contener caracteres comodín, tales como * y ?. El signo de interrogación (?) coincide con cualquier carácter único de cExpression2 y el asterisco (*) coincide con cualquier número de caracteres. Puede mezclar y combinar cualquier número de caracteres comodín que desee en cExpression1.
cExpression2
Especifica la expresión de caracteres que LIKE( ) compara con cExpression1. cExpression2 debe coincidir con cExpression1 letra por letra para que LIKE( ) devuelva verdadero (.T.).

Observaciones

LIKE( ) devuelve verdadero (.T.) si cExpression1 coincide con cExpression2; de lo contrario, devuelve falso (.F.).

SET COMPATIBLE determina la forma en que LIKE( ) evalúa cExpression1 y cExpression2. Si SET COMPATIBLE está establecido en ON o DB4, se eliminarán todos los espacios en blanco finales de cExpression1 y cExpression2 antes de compararlos. Si SET COMPATIBLE está establecido en OFF o FOXPLUS, en la comparación se usarán todos los espacios en blanco finales de cExpression1 y cExpression2.

Ejemplo

En el ejemplo siguiente se muestran todos los nombres de productos de la tabla products cuyas dos primeras letras sean "Ch".

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE products  && Abre la tabla Products
CLEAR
? 'Todos los nombres de productos que empiezan con Ch:'
?
SCAN FOR LIKE('Ch*', prod_name)
? prod_name
ENDSCAN
USE

Vea también

$ | AT( ) | ATC( ) | OCCURS( ) | RAT( ) | SET COMPATIBLE | LIKEC( )


LIKEC( ) (Función)

Determina si una expresión de caracteres concuerda con otra expresión de caracteres.

LIKEC(cExpression1, cExpression2)

Valores devueltos

Lógico

Parámetros

cExpression1
Especifica la expresión de caracteres que LIKEC( ) compara con cExpression2. cExpression1 puede contener comodines tales como * y ?. Un signo de interrogación (?) concuerda con cualquier carácter en cExpression2 y un asterisco (*) concuerda con cualquier número de caracteres. Puede mezclar y combinar el número de comodines que desee en cExpression1.
cExpression2
Especifica la expresión de caracteres que LIKEC( ) compara con cExpression1. cExpression2 tiene que concordar con cExpression1 carácter a carácter para que LIKE( ) devuelva verdadero (.T.).

Observaciones

LIKEC( ) se ha diseñado para expresiones que contienen caracteres de doble byte. Si la expresión sólo contiene caracteres de un byte, LIKEC( ) es equivalente a LIKE( ).

LIKEC( ) determina si una expresión de caracteres concuerda con otra expresión de caracteres. LIKEC( ) devuelve verdadero (.T.) si cExpression1 concuerda con cExpression2; de lo contrario, devolverá falso (.F.).

SET COMPATIBLE determina cómo LIKEC( ) compara espacios en blanco en cExpression1 y en cExpression2. Si SET COMPATIBLE está establecido en ON o DB4, se eliminarán todos los espacios en blanco finales de cExpression1 y cExpression2 antes de compararlas. Si SET COMPATIBLE está establecido en OFF o FOXPLUS, en la comparación se utilizarán todos los espacios en blanco finales de cExpression1 y cExpression2.

Esta función es útil para manipular juegos de caracteres de dos bytes para idiomas como Hiragana y Katakana.

Vea también

AT_C( ) | ATCC( ) | LIKE( ) | RATC( )


LINENO( ) (Función)

Devuelve el número de la línea que se está ejecutando en un programa con respecto al primer número de línea del programa principal.

LINENO([1])

Valores devueltos

Numérico

Parámetros

1
Devuelve el número de línea con respecto a la primera línea del programa o procedimiento actual. Si omite el argumento 1, se devolverá el número de línea relativo a la primera línea del programa principal.

Observaciones

Las líneas de programa se cuentan a partir del principio del programa. Las líneas de comentario, líneas de continuación y líneas en blanco se incluyen en el recuento del número de línea. Si un programa se suspende durante la ejecución, LINENO( ) devolverá el número de la línea del programa donde se ha suspendido la ejecución. LINENO( ) devuelve 0 si se cancela un programa.

De forma predeterminada, los números de línea se devuelven con respecto al principio del programa principal. Si se llama a un procedimiento, la numeración de líneas continuará con respecto al principio del programa que realiza la llamada.

LINENO( ) es útil para depurar programas. Puede establecer un punto de interrupción para detener la ejecución del programa en un número de línea determinado abriendo al ventana Puntos de interrupción, establecer el Tipo como 'Punto de interrupción cuando la expresión es verdadera' y agregar LINENO( ) = nExpression en el cuadro de texto Expresión.

Ejemplo

El ejemplo siguiente forma parte de una rutina sencilla de tratamiento de errores.

ON ERROR DO bug_proc WITH LINENO( )
BRWS  && Causa un error
ON ERROR
*** Controlador de error Bug_Proc ***
PROCEDURE bug_proc
PARAMETERS gnBadLine
WAIT WINDOW 'Ocurrió un error en la línea: ' + ALLTRIM(STR(gnBadLine))
RETURN

Vea también

ERROR( ) | MESSAGE( ) | PROGRAM( ) | SYS(16) - Nombre de archivo del programa en ejecución | Mensajes de error ordenados alfabéticamente | Mensajes de error ordenados por número


LOADPICTURE( ) (Función)

Crea una referencia de objeto para un archivo de mapa de bits, de icono o metarchivo de Windows.

LOADPICTURE([cFileName])

Valores devueltos

Object

Parámetros

cFileName
Especifica el archivo de mapa de bits,(.bmp), de icono (.ico) o el metarchivo de Windows (.wmf) para el que se crea una referencia de objeto. Si se omite cFileName, se devolverá la imagen nula. Puede incluir GETPICT( ) como cFileName para mostrar en pantalla el cuadro de diálogo Abrir, en el que podrá elegir un archivo de mapa de bits (.bmp).

Observaciones

Hay muchas representaciones de controles ActiveX que requieren una referencia de objeto para su configuración. Por ejemplo, el control ActiveX Outline acepta la propiedad PictureOpen que requiere una referencia de objeto para su configuración.

Vea también

GETPICT( ) | SAVEPICTURE( ) | Picture (Propiedad)


LOCFILE( ) (Función)

Busca un archivo en disco y devuelve el nombre del archivo con su ruta de acceso.

LOCFILE(cFileName [, cFileExtensions] [, cFileNameCaption])

Valores devueltos

Carácter

Parámetros

cFileName
Especifica el nombre del archivo que se va a buscar. Si cFileName sólo incluye un nombre de archivo, LOCFILE( ) buscará primero en el directorio predeterminado de Microsoft Visual FoxPro. Si el archivo no está en el directorio predeterminado, buscará en la ruta de acceso de Visual FoxPro. Utilice SET PATH para especificar la ruta de Visual FoxPro.

Si cFileName incluye una ruta de acceso y un nombre de archivo, se buscará en el directorio indicado. Si no puede encontrarse el archivo en el directorio indicado, LOCFILE( ) buscará en el directorio predeterminado de Visual FoxPro y luego en la ruta de acceso de Visual FoxPro.

Si se encuentra el archivo, LOCFILE( ) devolverá el nombre y la ruta del archivo.

cFileExtensions
Especifica las extensiones del archivo que se va a buscar. Si el nombre de archivo que especifica con cFileName no incluye ninguna extensión, Visual FoxPro aplicará las extensiones indicadas en cFileExtensions al nombre de archivo y buscará otra vez el archivo.

cFileExtensions también especifica las extensiones del nombre de los archivos mostrados en el cuadro de diálogo Abrir cuando no se encuentra el archivo especificado.

cFileExtensions puede asumir diversas formas:

  • Si cFileExtensions contiene una única extensión (por ejemplo .PRG), únicamente se mostrarán los archivos con esa extensión.
  • cFileExtensions puede contener también caracteres comodín (* y ?) de MS-DOS. Se mostrarán todos los archivos cuyas extensiones cumplan los criterios del comodín. Por ejemplo, si cFileExtensions es ?X?, se mostrarán todos los archivos con la extensión .fxp, .exe o .txt.
  • En Visual FoxPro para Windows, cFileExtensions puede contener una descripción de archivo seguida de una extensión de archivo o de una lista de extensiones de archivo separadas por comas. La descripción del archivo aparece en el cuadro de lista Archivos de tipo. Utilice dos puntos (:) para separar la descripción del archivo de la extensión del archivo o de la lista de extensiones de archivo. Separe con un punto y coma (;) múltiples descripciones de archivo y sus extensiones de archivo.

    Por ejemplo, si cFileExtensions es "Texto:TXT" la descripción de archivo "Texto" aparecerá en el cuadro de lista Archivos de tipo y se mostrarán todos los archivos con la extensión .txt.

    Si cFileExtensions es "Tablas:DBF; Archivos:TXT,BAK" las descripciones de archivo "Tablas" y "Archivos" aparecerán en el cuadro de lista Archivos de tipo. Cuando se elige "Tablas" en el cuadro de lista Archivos de tipo, se mostrarán todos los archivos de extensión .dbf. Cuando se elija "Archivos" del cuadro de lista Archivos de tipo, se mostrarán todos los archivos con la extensión .txt y .bak.

cFileNameCaption
Especifica el texto que desea utilizar para preguntar al usuario. El texto aparecerá a la derecha del cuadro de texto en la que escribió el nombre del archivo. Si lo omite, se mostrará "Nombre de archivo: ".

Si desea consultar una lista de las extensiones de archivo de Visual FoxPro y los correspondientes tipos de archivo, vea el tema en pantalla Extensiones de archivo y tipos de archivo.

Observaciones

El cuadro de diálogo Abrir aparece si no se encuentra el archivo en el directorio predeterminado, en la ruta de acceso de Visual FoxPro ni en una ubicación especificada. Este cuadro de diálogo Abrir puede utilizarse para localizar el archivo. Cuando se elige un archivo en el cuadro de diálogo Abrir, se devuelve el nombre del archivo junto con su ruta de acceso.

Si sale del cuadro de diálogo Abrir eligiendo “Cancelar”, presionando ESC o eligiendo Cerrar en el menú Control, Visual FoxPro generará un mensaje de error y LOCFILE( ) no devolverá ningún valor.

Vea también

FILE( ) | GETFILE( ) | GETPICT( ) | PUTFILE( ) | SET PATH


LOCK( ) (Función)

Intenta bloquear uno o varios registros de una tabla.

LOCK([nWorkArea | cTableAlias]|[cRecordNumberList, nWorkArea | cTableAlias])

Valores devueltos

Lógico

Parámetros

nWorkArea | cTableAlias
ntenta bloquear el registro activo de una tabla abierta en un área de trabajo específica. nWorkArea especifica el número del área de trabajo y cTableAlias especifica el alias de la tabla. Si no especifica ningún área de trabajo ni alias de tabla, LOCK( ) intentará bloquear el registro activo de la tabla del área de trabajo actual.
cRecordNumberList
Especifica una lista de uno o varios números de registro que es necesario incluir para intentar bloquear múltiples registros. SET MULTILOCKS debe estar ON y se deben incluir el área de trabajo o el alias de la tabla en la que se está intentando introducir múltiples bloqueos de registros.

LOCK( ) intenta bloquear todos los registros especificados. Los números de registro especificados mediante cRecordNumberList se separan por comas. Por ejemplo, para intentar bloquear los cuatro primeros registros de una tabla, cRecordNumberList debe contener 1,2,3,4.

También puede bloquear varios registros moviendo el puntero de registro al registro que quiere bloquear, ejecutando LOCK( ) o RLOCK( ) y repitiendo luego estos pasos para cada registro adicional.

En Visual FoxPro, puede especificar 0 como número de registro. Al especificar 0, el sistema le permite intentar bloquear el encabezado de la tabla.

Nota Debe mantener bloqueado el encabezado de la tabla el menor tiempo posible, ya que los demás usuarios no pueden agregar registros a la tabla cuando el encabezado está bloqueado.

Libere el bloqueo del encabezado de la tabla con UNLOCK RECORD 0, UNLOCK o UNLOCK ALL.

Si todos los registros especificados en cRecordNumbers se bloquean con éxito, LOCK( ) devolverá verdadero (.T.). Si alguno de los registros especificados con cRecordNumbers no se puede bloquear, LOCK( ) devolverá falso (.F.) y ninguno de los registros se bloqueará. No obstante, los bloqueos existentes en los registros permanecerán. El bloqueo de múltiples registros es un proceso aditivo. Agregar bloqueos de registros adicionales no libera los bloqueos de otros registros.

El número máximo de registros que pueden estar bloqueados en cada área de trabajo es aproximadamente 8.000. Siempre es más rápido bloquear toda la tabla en lugar de varios registros, aunque sean pocos.

Observaciones

La función LOCK( ) es idéntica a RLOCK( ).

Si los bloqueos se sitúan correctamente, LOCK( ) devolverá verdadero (.T.). Los registros bloqueados están disponibles tanto para acceso de lectura como de escritura para el usuario que efectúa los bloqueos; estarán disponibles únicamente con acceso de lectura para todos los demás usuarios de la red.

La ejecución de LOCK( ) no garantiza que se vayan a efectuar con éxito el bloqueo o los bloqueos de registros. No puede efectuarse un bloqueo de registro sobre un registro que ya esté bloqueado por otro usuario o en una tabla bloqueada por otro usuario. Si el bloqueo o los bloqueos de registro no logran efectuarse por alguna razón, LOCK( ) devolverá el valor falso (.F.).

De forma predeterminada, LOCK( ) sólo intenta una vez el bloqueo de un registro. Utilice SET REPROCESS para reintentar automáticamente un bloqueo de registro si el primer intento no tiene éxito. SET REPROCESS determina el número de intentos de bloqueo o durante cuánto tiempo se intentará bloquear cuando fracase el intento inicial. Para obtener más información, vea SET REPROCESS.

SET MULTILOCKS determina si puede bloquear varios registros de una tabla. Si SET MULTILOCKS está OFF (valor predeterminado), sólo podrá bloquear un registro de una tabla. Cuando SET MULTILOCKS está ON, podrá bloquear múltiples registros de una tabla. Para obtener más información, vea SET MULTILOCKS.

Desbloqueo de registros Un registro de una tabla sólo puede desbloquearlo el usuario que efectuó el bloqueo. Puede liberar bloqueos de registro ejecutando UNLOCK, cerrando la tabla o saliendo de Visual FoxPro.

UNLOCK puede utilizarse para liberar bloqueos de registro del área de trabajo actual, un área de trabajo concreta o todas las áreas de trabajo. Para obtener más información, vea UNLOCK.

Alternando MULTILOCKS de ON a OFF o de OFF a ON se realiza UNLOCK ALL de forma implícita: se liberan todos los bloqueos de registro de todas las áreas de trabajo.

Las tablas pueden cerrarse con USE, CLEAR ALL o CLOSE DATABASES.

Para obtener más información acerca del bloqueo de registros y archivos, así como del uso compartido de tablas en una red, vea Programar para acceso compartido.

Ejemplo

El ejemplo siguiente bloquea y desbloquea los cuatro primeros registros de las tablas customer y employee.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
SET REPROCESS TO 3 AUTOMATIC
STORE '1,2,3,4' TO gcRecList
gcOldExc = SET('EXCLUSIVE')
SET EXCLUSIVE OFF
SELECT 0
USE employee  && Open Employee table
SELECT 0
USE customer  && Open Customer table
? LOCK('1,2,3,4', 'customer')  && Lock 1st 4 records in customer
? RLOCK(gcRecList, 'employee')  && Lock 1st 4 records in employee
UNLOCK IN customer
UNLOCK IN employee
SET EXCLUSIVE &gcOldExc

Vea también

CLEAR | CLOSE | FLOCK( ) | RLOCK( ) | SET MULTILOCKS | SET REPROCESS | UNLOCK | USE | ISFLOCKED( ) (Función) | ISRLOCKED( ) (Función)


LOG( ) (Función)

Devuelve el logaritmo natural (base e) de la expresión numérica especificada.

LOG(nExpression)

Valores devueltos

Numérico

Parámetros

nExpression
Especifica la expresión numérica para la cual LOG( ) devuelve el valor de x en la ecuación ex = nExpression. nExpression debe ser mayor que 0.

Observaciones

La base del logaritmo natural es la constante e. El número de lugares decimales del resultado se especifica mediante SET DECIMALS.

Ejemplo

CLEAR
? LOG(1)  && Displays 0.00
STORE EXP(2) TO gneSquare
? LOG(gneSquare)  && Displays 2.00

Vea también

EXP( ) | LOG10( ) | SET DECIMALS


LOG10( ) (Función)

Devuelve el logaritmo común (base 10) de la expresión numérica especificada.

LOG10(nExpression)

Valores devueltos

Numérico

Parámetros

nExpression
Especifica la expresión numérica para la cual LOG10( ) devuelve el valor de x en la ecuación 10x = nExpression. nExpression debe ser mayor que 0.

Observaciones

La base del logaritmo común es 10. El número de lugares decimales que tendrá el resultado se especifica mediante SET DECIMALS.

Ejemplo

CLEAR
? LOG10(10)  && Displays 1.00
STORE 100 TO gnBaseTen
? LOG10(gnBaseTen)  && Displays 2.00
? LOG10(gnBaseTen^2)  && Displays 4.00

Vea también

EXP( ) | LOG( ) | SET DECIMALS


LOOKUP() (Función)

Busca en una tabla el primer registro que tiene un campo coincidente con la expresión especificada.

LOOKUP(ReturnField, eSearchExpression, SearchedField [, cTagName])

Valores devueltos

Carácter, Numérico, Concurrencia, Florante, Integro, Doble, Fecha, DateTime o Lógico

Parámetros

ReturnField
Especifica el campo cuyo contenido devuelve LOOKUP( ) cuando la búsqueda finaliza con éxito. Si la búsqueda fracasa, LOOKUP( ) devolverá una cadena de caracteres vacía de la misma longitud y el mismo tipo que ReturnField.
eSearchExpression
Especifica la expresión de búsqueda. La expresión de búsqueda suele ser el contenido de un campo de la tabla, o puede corresponder a la expresión de índice del índice o de la etiqueta de índice compuesto que esté activo.
SearchedField
Especifica el campo que se va a buscar. Si la tabla no tiene un índice activo, LOOKUP( ) realizará una búsqueda secuencial en el campo especificado mediante SearchedField.

Si hay abierto un archivo de índice o una etiqueta de índice cuya expresión de clave de índice es el campo de búsqueda especificado, LOOKUP( ) utilizará el archivo de índice o la etiqueta de índice para realizar una búsqueda más rápida.

cTagName
Especifica el nombre de una etiqueta de índice compuesto para que LOOKUP( ) lo utilice en la búsqueda. Las búsquedas de índice compuesto son las que LOOKUP( ) realiza de forma más rápida.

Observaciones

Si la búsqueda tiene éxito, LOOKUP( ) moverá el puntero de registro al registro coincidente y devolverá el contenido de un campo especificado del registro.

Si no se encuentra la expresión de búsqueda, LOOKUP( ) devolverá una cadena de caracteres en blanco de la misma longitud y tipo de datos que ReturnField. El puntero de registro se sitúa al final del archivo.

Si se utiliza LOOKUP( ) para buscar en una tabla primaria, se moverán los punteros de registro de todas las tablas a los registros relacionados.

Esta función no puede optimizarse con Rushmore Query Optimization.

Ejemplo

En el ejemplo siguiente, LOOKUP( ) utiliza la etiqueta de índice company para buscar la primera vez que aparezca la cadena "Ernst Handel". Si la búsqueda acaba con éxito, LOOKUP( ) devolverá el contenido del campo contact y @ ... SAY mostrará el valor de retorno.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer ORDER company  && Open Customer table
CLEAR
@ 2,2 SAY LOOKUP(contact, 'Ernst Handel', company, 'company')

Vea también

FIND | INDEX | LOCATE | SEEK | SEEK( )


LOWER( ) (Función)

Devuelve en letras minúsculas una expresión de caracteres especificada.

LOWER(cExpression)

Valores devueltos

Character

Parámetros

cExpression
Especifica la expresión de caracteres convertida por LOWER( ).

Observaciones

LOWER( ) convierte todas las letras mayúsculas (A – Z) de la expresión a letras minúsculas (a – z). Todos los demás caracteres de la expresión permanecen sin cambios.

Ejemplo

STORE 'FOX' TO gcName
CLEAR
? LOWER(gcName)  && Displays fox

Vea también

ISALPHA( ) | ISLOWER( ) | ISUPPER( ) | PROPER( ) | UPPER( )


LTRIM( ) (Función)

Devuelve la expresión de caracteres especificada después de eliminar los espacios en blanco iniciales.

LTRIM(cExpression)

Valores devueltos

Character

Parámetros

cExpression
Especifica la expresión de caracteres en la cual LRTRIM( ) elimina los espacios en blanco iniciales.

Observaciones

Esta función es especialmente útil para eliminar los espacios en blanco iniciales que se insertan cuando se utiliza STR( ) para convertir un valor numérico en una cadena de caracteres.

Ejemplo

STORE 'Redmond' TO gcCity
STORE '   Washington' TO gcState
CLEAR
? gcCity, gcState  && Displays Redmond   Washington
? gcCity, LTRIM(gcState)  && Displays Redmond Washington

Vea también

ALLTRIM( ) | LEFT( ) | RIGHT( ) | RTRIM( ) | SUBSTR( ) | TRIM( )


LUPDATE( ) (Función)

Devuelve la fecha en que se actualizó una tabla por última vez.

LUPDATE([nWorkArea | cTableAlias])

Valores devueltos

Date

Parámetros

nWorkArea | cTableAlias
Devuelve la última actualización realizada en una tabla abierta en otra área de trabajo. nWorkArea especifica el número de área de trabajo y cTableAlias especifica el alias de la tabla. LUPDATE( ) devuelve la fecha de la última actualización de la tabla en el área de trabajo seleccionada actualmente, en caso de que omita nWorkArea y cTableAlias.

Si no está abierta ninguna tabla en el área de trabajo especificada, LUPDATE( ) devolverá una fecha en blanco. Si ninguna tabla tiene el alias especificado, Visual FoxPro mostrará un mensaje de error.

Observaciones

Esta función es útil para procedimientos de actualización.

LUPDATE( ) consulta a Windows para determinar la fecha en que una tabla se actualizó por última vez. Sin embargo, los dos últimos dígitos del año en que se almacenó la tabla se almacenan en el encabezado de la tabla.

Ejemplo

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer  && Open Customer table
CLEAR
? LUPDATE( )  && Displays date of last update

Vea también

DIR | FDATE( ) | FTIME( )


MAX( ) (Función)

Evalúa un conjunto de expresiones y devuelve la expresión con el valor máximo.

MAX(eExpression1, eExpression2 [, eExpression3 ...])

Valores devueltos

Carácter, Numérico, Concurencia, Doble, Flotante,Fecha o DateTime

Parámetros

eExpression1, eExpression2 [, eExpression3 ...]
Especifique las expresiones de las que desea que MAX( )devuelva la expresión con el valor más elevado. Todas las expresiones deben ser del mismo tipo de datos.

Ejemplo

>El siguiente ejemplo utiliza APPEND BLANK para crear una tabla con 10 registros que contienen valores aleatorios y, a continuación, emplea MIN( ) y MAX( ) para mostrar los valores máximo y mínimo de la tabla.

CLOSE DATABASES
CREATE TABLE Random (cValue N(3))
FOR nItem = 1 TO 10  && Append 10 records,
APPEND BLANK
REPLACE cValue WITH 1 + 100 * RAND( )  && Insert random values
ENDFOR
CLEAR
LIST  && Display the values
gnMaximum = 1  && Initialize minimum value
gnMinimum = 100  && Initialize maximum value
SCAN
gnMinimum = MIN(gnMinimum, cValue)
gnMaximum = MAX(gnMaximum, cValue)
ENDSCAN
? 'The minimum value is: ', gnMinimum  && Display minimum value
? 'The maximum value is: ', gnMaximum  && Display maximum value

Vea también

CALCULATE | MIN( ) | SELECT - SQL


MCOL( ) (Función)

Devuelve la posición de columna del puntero del ratón (ratón) en la ventana principal de Visual FoxPro o en una ventana definida por el usuario.

MCOL([cWindowName [, nScaleMode]])

Parámetros

cWindowName
Especifica el nombre de la ventana de la que MCOL( ) devuelve la posición de columna del puntero del ratón.
nScaleMode
Especifica la unidad de medida para el valor que devuelve MCOL( ). Los valores para nScaleMode son:
nScaleMode | Descripción
0 | (Valor predeterminado) Fóxeles. Un fóxel equivale al alto y ancho medio de un carácter basado en la fuente actual del formulario que contiene un objeto.
3 | Píxeles. Un píxel es el elemento más pequeño que se puede mostrar en una pantalla o en una impresora. Los píxeles dependen de la pantalla.

Valores devueltos

Numérico. MCOL( ) devuelve la columna de la posición del puntero del ratón en la ventana principal de Visual FoxPro o la ventana definida por el usuario.

Si omite cWindowName y no hay una ventana activa definida por el usuario, MCOL( ) devuelve la columna de la posición del puntero del ratón en la ventana principal de Visual FoxPro. Si omite cWindowName y hay una ventana activa definida por el usuario, MCOL( ) devuelve la columna de la posición del puntero del ratón en la ventana definida por el usuario. MCOL( ) devuelve –1 si el puntero del ratón está posicionado fuera de la ventana definida por el usuario o si no hay cargado un controlador de ratón y no hay una ventana de salida.

Observaciones

Utilizar la función MCOL( ) sin un argumento opcional podría afectar el comportamiento del código en formularios cuando la propiedad Form AllowOutput se establece a Falso (.F.). Por ejemplo, la colocación de un menú desplegable que se define en el evento RightClick podría no mostrarse en la ubicación correspondiente si utiliza la función MCOL( ) para determinar dónde se muestra el menú.

Vea también

AMOUSEOBJ( ) | COL( ) | GridHitTest (Método) | INKEY( ) | ISMOUSE( ) | MROW( ) | ROW( ) | WCOLS( ) | WROWS( )


MDOWN( ) (Función)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar los eventos Click, MouseDown, MouseUp y RightClick.


MDX( ) (Función)

Devuelve el nombre del archivo de índice compuesto .cdx abierto que tiene el número de posición de índice especificado.

MDX(nIndexNumber [, nWorkArea | cTableAlias])

Valores devueltos

Character

Parámetros

nIndexNumber
Especifica el nombre de archivo de índice compuesto que se va a devolver. Si la tabla tiene un archivo de índice compuesto estructural y nIndexNumber es 1, se devolverá el nombre del archivo de índice compuesto estructural (que es siempre el mismo que el nombre de la tabla). Si nIndexNumber es 2, se devuelve el nombre del primer archivo de índice compuesto estructural especificado con USE o SET INDEX. Si nIndexNumber es 3, se devolverá el nombre del segundo archivo de índice compuesto, y así sucesivamente. Si nIndexNumber es mayor que el número de archivos de índice compuesto abiertos, se devolverá la cadena nula.

Si la tabla no tiene un archivo de índice compuesto estructural y nIndexNumber es 1, se devolverá el nombre del primer archivo de índice compuesto estructural especificado con USE o SET INDEX. Si el valor de nIndexNumber es 2, se devuelve el nombre del segundo archivo de índice compuesto, etc. Si nIndexNumber es mayor que el número de archivos de índice compuesto abiertos, se devolverá la cadena nula.

nWorkArea
Especifica el número del área de trabajo para los archivos de índice compuesto abiertos en áreas de trabajo distintas de la actual. Si omite este argumento opcional, se devuelven los nombres de los archivos de índice compuesto para el área de trabajo actual.
cTableAlias
Especifica el alias de tabla para archivos de índice compuesto abiertos en áreas de trabajo distintas de la actual. Si omite este argumento opcional, se devuelven los nombres de los archivos de índice compuesto para el área de trabajo actual.

Observaciones

MDX( ) es idéntica a CDX( ).

Los archivos de índice pueden abrirse para una tabla con la cláusula INDEX del comando USE o con SET INDEX. Un archivo de índice compuesto estructural se abre automáticamente con su tabla. MDX( ) pasa por alto los archivos de índice .IDX especificados con USE o con SET INDEX.

Puede utilizarse TAG( ) para devolver los nombres de las etiquetas de un archivo de índice compuesto; NDX( ) puede utilizarse para devolver el nombre de un archivo de índice .idx abierto.

En Visual FoxPro para Windows, cuando SET FULLPATH está establecido en ON, MDX( ) devuelve la ruta de acceso del archivo .cdx con el nombre de archivo .cdx. Cuando SET FULLPATH está establecido en OFF, MDX( ) devuelve la unidad en la que reside el archivo .cdx con el nombre de archivo .cdx.

Vea también

CDX( ) | INDEX | NDX( ) | SET INDEX | SET FULLPATH | SYS(14) - Expresión de índice | TAG( ) | USE


MDY( ) (Función)

Devuelve la expresión de tipo Date o DateTime especificada en formato mes-día-año con el nombre completo del mes.

MDY(dExpression | tExpression)

Valores devueltos

Character

Parámetros

dExpression
Especifica la expresión de tipo Date que se va a devolver en formato mes-día-año.
tExpression
Especifica la expresión de tipo DateTime que se va a devolver en formato mes-día-año.

Observaciones

Si SET CENTURY está establecido en OFF, la expresión alfanumérica resultante tendrá el formato Mes DD, AA. Si CENTURY está establecido en SET ON, el formato será Mes DD, AAAA.

Ejemplo

El ejemplo siguiente crea una función definida por el usuario que devuelve una fecha con el día de la semana correspondiente.

SET CENTURY OFF
CLEAR
? Longdate({^1998-02-16})  && Displays Monday, February 16, 98
SET CENTURY ON
? Longdate({^1998-02-16})  && Displays Monday, February 16, 1998
*** LongDate ***
FUNCTION longdate
PARAMETERS gdDate
RETURN CDOW(gdDate) + ', ' + MDY(gdDate)

Vea también

DMY( ) | SET CENTURY | SET DATE


MEMLINES( ) (Función)

Devuelve el número de líneas de un campo memo.

MEMLINES(MemoFieldName)

Valores devueltos

Numérico

Parámetros

MemoFieldName
Es el nombre de un campo memo. Si el campo memo está en una tabla que no está abierta en el área de trabajo actual, incluya delante del nombre del campo memo el alias de la tabla y un punto.

Observaciones

El número de líneas de un campo memo está determinado por el valor actual de SET MEMOWIDTH.

Ejemplo

El ejemplo siguiente examina tres registros de la tabla employee y utiliza MEMLINES( ) para determinar si hay datos en el campo memo notes y cuándo deben producirse los saltos de página. Aparecen los datos de last name para el registro, junto con notes (si hay datos en el campo memo) o un mensaje que indica que no hay notes para ese registro.

CLOSE DATABASES
CLEAR
SET TALK OFF
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE employee  && Open Employee table
SET MEMOWIDTH TO 65
gnLine = 1
GOTO 2
SCAN NEXT 3
gnMemoSize = MEMLINES(notes)
IF gnMemoSize = 0
STORE .T. TO glNoMemo
STORE 1 TO gnMemoSize
ELSE
STORE .F. TO glNoMemo
ENDIF
IF gnLine + gnMemoSize > 65
EJECT
gnLine = 1
ENDIF
@ gnLine,2 SAY 'Last Name: '+ last_name
gnLine = gnLine +1
@ gnLine ,2 SAY 'Notes: '
?? IIF(glNoMemo, 'No notes ',notes)
gnLine = gnLine + gnMemoSize + 2
IF gnLine > 24
gnLine = 1
CLEAR
ENDIF
ENDSCAN

Vea también

_MLINE | ALINES( ) | ATCLINE( ) | ATLINE( ) | COPY MEMO | MLINE( ) | MODIFY MEMO | SCATTER | SET MEMOWIDTH


MEMORY( ) (Función)

Devuelve la cantidad de memoria disponible para ejecutar un programa externo.

MEMORY( )

Valores devueltos

Numérico

Observaciones

En Visual FoxPro, MEMORY( ) devuelve siempre 640.

MEMORY( ) es similar a SYS(12), con dos excepciones:

  • MEMORY( ) devuelve la cantidad de memoria en kilobytes; SYS(12) devuelve la cantidad de memoria en bytes.
  • MEMORY( ) devuelve una expresión numérica. SYS(12) devuelve un valor como una cadena de caracteres.

Vea también

SYS(12) - Memoria disponible en bytes | SYS(1001) - Memoria de Visual FoxPro


MENU( ) (Función)

Devuelve el nombre de la barra de menús activa como una cadena de caracteres en mayúsculas.

MENU( )

Valores devueltos

Carácter

Observaciones

MENU( ) devuelve la cadena nula si no está activo ningún menú. Utilice el Diseñador de menús para crear un menú y activarlo.

Ejemplo

El siguiente ejemplo utiliza MENU( ) para pasar el nombre de una barra de menú a un procedimiento. La barra de menú del sistema actual se guarda en memoria con SET SYSMENU SAVE, y todos los títulos de menú del sistema se eliminan con SET SYSMENU TO.

Varios títulos de menú del sistema son creados con DEFINE PAD. Cuando elige un título de menú, MENU( ) pasa el nombre de la barra de menú del sistema de Microsoft Visual FoxPro, _MSYSMENU, al procedimiento choice. El procedimiento choice muestra el nombre del título de menú que ha elegido y el nombre de la barra de menú del sistema. Si elige el título de menú Salir, se restaurará el menú del sistema de Visual FoxPro original.

*** Save this program as MENUEXAM.PRG in the default VFP directory.***
CLEAR
SET SYSMENU SAVE
SET SYSMENU TO
DEFINE PAD padSys OF _MSYSMENU PROMPT '\<System' COLOR SCHEME 3 ;
KEY ALT+S, ''
DEFINE PAD padEdit OF _MSYSMENU PROMPT '\<Edit' COLOR SCHEME 3 ;
KEY ALT+E, ''
DEFINE PAD padRecord OF _MSYSMENU PROMPT '\<Record' COLOR SCHEME 3 ;
KEY ALT+R, ''
DEFINE PAD padWindow OF _MSYSMENU PROMPT '\<Window' COLOR SCHEME 3 ;
KEY ALT+W, ''
DEFINE PAD padReport OF _MSYSMENU PROMPT 'Re\<ports' COLOR SCHEME 3 KEY ALT+P, ''
DEFINE PAD padExit OF _MSYSMENU PROMPT 'E\<xit' COLOR SCHEME 3 ;
KEY ALT+X, ''
ON SELECTION MENU _MSYSMENU ;
DO choice IN menuexam WITH PAD(), MENU()
PROCEDURE choice
PARAMETER gcPad, gcMenu
WAIT WINDOW 'You chose ' + gcPad + ;
' from menu ' + gcMenu NOWAIT
IF gcPad = 'PADEXIT'
SET SYSMENU TO DEFAULT
ENDIF

Vea también

ACTIVATE MENU | CREATE MENU | DEFINE MENU


MESSAGE( ) (Función)

Devuelve la cadena con el mensaje de error actual o el contenido de la línea de programa que causó el error.

MESSAGE([1])

Valores devueltos

Carácter

Parámetros

1
Si se utiliza MESSAGE( ) en una rutina creada con ON ERROR, puede incluir el argumento opcional 1 para devolver el código fuente del programa que causó el error. Si el código fuente del programa no está disponible, MESSAGE(1) devolverá uno de los valores siguientes:
  • La línea completa del programa si la línea se sustituye por una macro.
  • Un comando si la línea contiene un comando sin ninguna cláusula adicional.
  • Un comando seguido de tres puntos (...) si la línea contiene un comando y cláusulas adicionales.

Observaciones

A diferencia de ERROR( ), MESSAGE( ) no se restaura con RETURN o RETRY.

Ejemplo

El siguiente ejemplo muestra el resultado de MESSAGE( ) y MESSAGE(1).

ON ERROR DO Errhand
*** La siguiente línea debe generar un error ***
USE Nodatabase
ON ERROR     && Restaura el controlador de error del sistema
PROCEDURE Errhand
? 'Línea de código con error: ' + MESSAGE(1)
? 'Número de error: ' + STR(ERROR( ))
? 'Mensaje de error: ' + MESSAGE( )

Vea también

ERROR (Comando) | ERROR( ) | ON ERROR | AERROR( ) (Función) | Mensajes de error ordenados alfabéticamente | Mensajes de error ordenados por número


MESSAGEBOX( ) (Función)

Muestra un cuadro de diálogo definido por el usuario.

MESSAGEBOX(eMessageText [, nDialogBoxType ][, cTitleBarText][, nTimeout])

Parámetros

eMessageText
Especifica el texto que aparece en el cuadro de diálogo. Utilice un retorno de carro (CHR(13)) en eMessageText para mover una parte del mensaje a la línea siguiente del cuadro de diálogo. El alto y el ancho del cuadro de diálogo aumentan lo que sea necesario para que quepa cMessageText.

Puede utilizar cualquier función o tipo de datos válido de Visual FoxPro en vez de eMessageText. Si la función que utiliza produce un valor que no sea un carácter, Visual FoxPro utilizará automáticamente TRANSFORM( ) para proporcionar el carácter equivalente. En el siguiente ejemplo, se devuelve una fecha tipo carácter y se pasa a MESSAGEBOX( ):

MESSAGEBOX(DATE())

Para mover una parte del mensaje a la línea siguiente en el cuadro de diálogo, use un retorno de carro, CHR(13), en eMessageText. La altura y ancho del cuadro de diálogo se incrementa como sea necesario para contener cMessageText.

nDialogBoxType
Especifica los botones y los iconos que aparecen en el cuadro de diálogo, el botón elegido inicialmente cuando se muestra y el comportamiento del mismo.

En las tablas siguientes, los valores 0 a 5 del botón del cuadro de diálogo especifican los botones que aparecen en el mismo. Los valores de icono 16, 32, 48 y 64 especifican el icono que aparece en el cuadro de diálogo. Los valores predeterminados 0, 256 y 512 especifican qué botón del cuadro de diálogo es el botón predeterminado. El botón predeterminado se selecciona cuando aparece el cuadro de diálogo. Omitir nDialogBoxType es idéntico a especificar un valor de 0 para nDialogBoxType.

Valor | Botones del cuadro de diálogo
0 | Sólo botón Aceptar.
1 | Botones Aceptar y Cancelar.
2 | Botones Anular, Reintentar e Ignorar.
3 | Botones Sí, No y Cancelar.
4 | Botones Sí y No.
5 | Botones Reintentar y Cancelar.
Valor | Icono
16 | Punto.
32 | Signo de interrogación.
48 | Signo de exclamación.
64 | Icono de información (i).
Valor | Botón predeterminado
0 | Primer botón.
256 | Segundo botón.
512 | Tercer botón.

nDialogBoxType puede ser la suma de hasta tres valores, uno de cada una de las tablas anteriores. Por ejemplo, si nDialogBoxType es 290 (2+32+256), el cuadro de diálogo especificado tendrá las siguientes características:

  • Botones Anular, Reintentar e Ignorar.
  • El cuadro de mensaje muestra el icono del signo de interrogación.
  • El segundo botón, Reintentar, es el botón predeterminado.

Hay disponible información adicional acerca de las constantes en el archivo FoxPro.h, que se encuentra en el directorio de inicio de Visual FoxPro. El uso de constantes definidas tales como MB_ABORTRETRYIGNORE + MB_ICONQUESTION + MB_DEFBUTTON2 puede ser más legible que 2 + 32 + 256.

cTitleBarText
Especifica el texto que aparece en la barra de título del cuadro de diálogo. Si omite cTitleBarText, en la barra de título aparecerá el título "Microsoft Visual FoxPro".
nTimeout
Especifica el número de milisegundos que Visual FoxPro mostrará cMessageText sin ninguna entrada desde el teclado o el ratón antes de borrar cMessageText. Es posible especificar cualquier tiempo de espera válido. Un valor menor de 1 no agotará el tiempo de espera hasta que se produzca la entrada del usuario (igual que si no se utiliza el parámetro nTimeout).

Valores devueltos

Dato tipo Numérico. MESSAGEBOX( ) devuelve un valor que indica cuál botón se eligió en el cuadro de diálogo. La siguiente tabla muestra los valores devueltos por MESSAGEBOX( ) para cada botón.

Valor devuelto | Botón
1 | Aceptar
2 | Cancelar
3 | Anular
4 | Reintentar
5 | Ignorar
6 | Si
7 | No

En el cuadro de diálogo con un botón Cancelar, al presionar ESC para salir del cuadro de diálogo devuelve el valor (2) como si hubiera elegido Cancelar.

MESSAGEBOX( ) devuelve un valor de -1 cuando se agota el tiempo de espera.

Observaciones

La abreviatura para MESSAGEBOX( ) es MESSAGEB( ).

La función MESSAGEBOX( ) utiliza parámetros inteligentes donde el tipo de parámetro dicta que parámetro se está utilizando. El primer parámetro es requerido y siempre es cMessageText; sin embargo, el segundo parámetro, opcional, puede ser nDialogBoxType si el tipo es numérico o cTitleBarText si el tipo es de caracteres. Siempre se asume el parámetro nTimeout para el segundo parámetro numérico opcional que se pasa. Algunos ejemplos válidos son:

   MESSAGEBOX("HELLO","MyTitle",36,1)
MESSAGEBOX("HELLO",36,"MyTitle",1)
MESSAGEBOX("HELLO",36,1)
MESSAGEBOX("HELLO",36,1,"MyTitle")

Ejemplo

El siguiente ejemplo muestra un cuadro de diálogo definido por el usuario. Como título del cuadro de diálogo definido por el usuario, se muestra el mensaje "Registro no encontrado. Desea buscar de nuevo?", y en la barra de título se muestra "Mi aplicación".

El cuadro de diálogo definido por el usuario contiene los botones Si y No, y el icono del signo de interrogación; el segundo botón (No) es la selección predeterminada. Cuando elija uno de los botones, la selección se mostrará en pantalla.

cMessageTitle = 'Mi Aplicación'
cMessageText = 'Registro no encontrado. Desea buscar de nuevo?'
nDialogType = 4 + 32 + 256
*  4 = Botones Si y No
*  32 = Icono Interrogación
*  256 = Segundo botón como predeterminado
nAnswer = MESSAGEBOX(cMessageText, nDialogType, cMessageTitle)
DO CASE
CASE nAnswer = 6
WAIT WINDOW 'Eligió Si'
CASE nAnswer = 7
WAIT WINDOW 'Eligió No'
ENDCASE

Vea también

WAIT | DO CASE ... ENDCASE (Comando) | InputBox( ) (Función) | TRANSFORM( ) (Función)


MIN( ) (Función)

Evalúa un conjunto de expresiones y devuelve la expresión que tenga el valor mínimo.

MIN(eExpression1, eExpression2 [, eExpression3 ...])

Valores devueltos

Carácter, Numérico, Monetario, Doble, Flotante, Fecha o DateTime

Parámetros

eExpression1, eExpression2 [, eExpression3 ...]
Especifican el conjunto de expresiones a partir del cual desea que MIN( ) devuelva la expresión cuyo valor es menor. Todas las expresiones deben ser del mismo tipo.

Ejemplo

El siguiente ejemplo utiliza APPEND BLANK para crear una tabla con 10 registros que contienen valores aleatorios y, a continuación, emplea MIN( ) y MAX( ) para mostrar los valores máximo y mínimo de la tabla.

CLOSE DATABASES
CREATE TABLE Random (cValue N(3))
FOR nItem = 1 TO 10  && Append 10 records,
APPEND BLANK
REPLACE cValue WITH 1 + 100 * RAND( )  && Insert random values
ENDFOR
CLEAR
LIST  && Display the values
gnMaximum = 1  && Initialize minimum value
gnMinimum = 100  && Initialize maximum value
SCAN
gnMinimum = MIN(gnMinimum, cValue)
gnMaximum = MAX(gnMaximum, cValue)
ENDSCAN
? 'The minimum value is: ', gnMinimum  && Display minimum value
? 'The maximum value is: ', gnMaximum  && Display maximum value

Vea también

CALCULATE | MAX( )

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


MINUTE( ) (Función)

Devuelve los minutos de una expresión DateTime.

MINUTE(tExpression)

Valores devueltos

Numérico

Parámetros

tExpression
Especifica la expresión DateTime a partir de la cual se devuelve la parte de minutos.

Ejemplo

El siguiente ejemplo muestra la parte de minutos de la hora actual y la parte de minutos de una hora específica.

CLEAR
? MINUTE(DATETIME( ))
? MINUTE({^1998-02-16 10:42a})  && Displays 42

Vea también

CTOT( ) | DATE( ) | DATETIME( ) | DTOT( ) | HOUR( ) | SEC( ) | SECONDS( ) | SET SECONDS | TIME( )


MLINE( ) (Función)

Devuelve una línea específica de un campo memo como una cadena de caracteres.

MLINE(MemoFieldName, nLineNumber [, nNumberOfCharacters])

Valores devueltos

Carácter

Parámetros

MemoFieldName
Especifica el nombre del campo memo desde el cual MLINE( ) devuelve una línea. Si el campo memo está en una tabla abierta en un área de trabajo no activa, incluya delante del nombre del campo memo un punto y el alias de la tabla.
nLineNumber
Especifica el número de la línea del campo memo que se debe devolver. Devuelve una cadena vacía si nLineNumber es negativo, 0, o mayor que el número de líneas del campo memo.
nNumberOfCharacters
Especifica el número de caracteres, contado desde el principio del campo memo del que MLINE( ) devuelve la línea especificada.

La variable del sistema _MLINE se suele utilizar para nNumberOfCharacters. _MLINE se ajusta automáticamente cada vez que se llama a MLINE( ).

En procedimientos recursivos que devuelven líneas a partir de campos memo grandes, puede mejorar el rendimiento si incluye _MLINE en nNumberOfCharacters.

Observaciones

MLINE( ) elimina todos los espacios finales desde la línea especificada con nLineNumber.

La longitud y el número de líneas de un campo memo están determinados por el valor actual de SET MEMOWIDTH (la longitud de línea predeterminada es 50 caracteres). Si encuentra un retorno de carro, no devolverá ningún carácter adicional. El ajuste actual de _WRAP determina la forma en que se visualiza la línea del campo memo.

Cuando se busca una cadena alfanumérica en un campo memo, puede utilizar ATLINE( ) o ATCLINE( ) para devolver el número de la línea en la que se encuentra la cadena alfanumérica. Utilice este número de línea en MLINE( ) para devolver el contenido de la línea del campo memo.

Ejemplo

En el ejemplo siguiente, se utilizan dos métodos para devolver líneas de un campo memo. Dos bucles utilizan MLINE( ) para devolver líneas de un campo memo. Observe la mejora de rendimiento en el segundo bucle cuando se utiliza la variable del sistema _MLINE( ) en MLINE( ).

CLEAR
SET TALK OFF
SET MEMOWIDTH TO 50
CLOSE DATABASES
CREATE TABLE tmemo (name c(10), notes m)
APPEND BLANK                  && Add a record
WAIT WINDOW 'Llenar el campo memo toma varios segundos' NOWAIT
*** Llena el campo memo ***
FOR gnOuterLoop = 1 TO 5         && bucle 5 veces
FOR gnAlphabet = 65 TO 75   && letras A hasta H
REPLACE notes WITH REPLICATE(CHR(gnAlphabet), 10) ;
+ CHR(13) ADDITIVE
NEXT
NEXT
*** Muestra todas las líneas del campo memo ***
STORE MEMLINES(notes) TO gnNumLines   && Número de líneas en campo memo
STORE SECONDS( ) TO gnBegin      && Empieza el tiempo
FOR gnCount = 1 TO gnNumLines   && Bucle para # de líneas en campo memo
? MLINE(notes, gnCount)      && Muestra cada línea
NEXT
? STR(SECONDS( ) - gnBegin, 4, 2) + ' segundos'   && Tiempo total
*** El método preferido usar _MLINE en MLINE( ) ***
*** Muestra todas las líneas del campo memo ***
WAIT 'Presione una tecla para ver el método preferido' WINDOW
CLEAR
STORE 0 TO _MLINE             && Restaura _MLINE a cero
STORE SECONDS( ) TO gnBegin      && Empieza el tiempo
FOR count = 1 TO gnNumLines      && Bucle para # de líneas en campo memo
? MLINE(notes, 1, _MLINE)      && Muestra cada línea
NEXT
? STR(SECONDS( ) - gnBegin, 4, 2) + ' segundos'   && Tiempo total
SET TALK ON
CLOSE DATABASES
ERASE tmemo.dbf
ERASE tmemo.fpt

Vea también

ALINES( ) | ATCLINE( ) | ATLINE( ) | COPY MEMO | MEMLINES( ) | _MLINE | MODIFY MEMO | SET MEMOWIDTH | _WRAP


MOD( ) (Función)

Divide una expresión numérica por otra expresión numérica y devuelve el resto.

MOD(nDividend, nDivisor)

Valores devueltos

Numérico

Parámetros

nDividend
Especifica el dividendo. El número de lugares decimales en nDividend determina el número de lugares decimales en el resultado.
nDivisor
Especifica el divisor. Si nDivisor es positivo, se devolverá un número positivo, si nDivisor es negativo se devolverá un número negativo.

Observaciones

La función de módulo MOD( ) y el operador % devuelven resultados idénticos.

Ejemplo

CLEAR
? MOD(36,10)  && Displays 6
? MOD((4*9), (90/9))  && Displays 6
? MOD(25.250,5.0)  && Displays 0.250
? IIF(MOD(YEAR(DATE( )), 4) = 0, 'Summer Olympics this year';
, 'No Summer Olympics this year')

Vea también

% (Operador)


MONTH( ) (Función)

Devuelve el número de mes de una expresión determinada de tipo Date o DateTime.

MONTH(dExpression | tExpression)

Valores devueltos

Numérico

Parámetros

dExpression
Especifica la expresión Date de la que se quiere que MONTH( ) devuelva el número de mes..
tExpression
Especifica la expresión DateTime de la que se quiere que MONTH( ) devuelva el número de mes.

Observaciones

MONTH( ) devuelve un número de 1 a 12. Enero es el mes 1, y diciembre es el mes 12.

Ejemplo

CLEAR
? DATE( )  && Displays today's date
? MONTH(DATE( ))  && Displays the month number
STORE {^1998-05-03} TO gdBuy
STORE MONTH(gdBuy + 31) TO gdMonth
? gdMonth  && Displays 6

Vea también

CMONTH( ) | DAY( ) | QUARTER( ) | YEAR( )


MRKBAR( ) (Función)

Determina si un elemento de un menú definido por el usuario o del sistema de Microsoft Visual FoxPro está marcado.

MRKBAR(cMenuName, nMenuItemNumber | cSystemMenuItemName)

Valores devueltos

Logical

Parámetros

cMenuName
Especifica el nombre del menú que contiene el elemento de menú. El menú puede ser un menú del sistema de Visual FoxPro (como _MFILE, MEDIT o _MDATA).
nMenuItemNumber
Especifica el número de un elemento de menú en un menú definido por el usuario. El número de un elemento de menú se especifica cuando se crea el elemento de menú con DEFINE BAR.
cSystemMenuItemName
Especifique el nombre de un elemento de menú del sistema de Visual FoxPro. Por ejemplo, el siguiente comando muestra un valor lógico que especifica si el elemento Nuevo del menú Archivo está marcado.
? MRKBAR('_MFILE', _MFI_NEW)

Observaciones

Utilice SET MARK OF para marcar o quitar la marca de un elemento de menú.

Si el elemento de menú especificado está marcado, MRKBAR( ) devolverá verdadero (.T.); de lo contrario, MRKBAR( ) devolverá falso (.F.).

Si desea analizar un ejemplo del uso de MRKBAR( ), vea CNTBAR( ).

Vea también

MRKPAD( ) | SET MARK OF | SET MARK TO


MRKPAD( ) (Función)

Determina si un título de menú de una barra de menús definida por el usuario o la barra de menús del sistema de Visual FoxPro está marcada.

MRKPAD(cMenuBarName, cMenuTitleName)

Valores devueltos

Logical

Parámetros

cMenuBarName
Especifica el nombre de la barra de menús que contiene el título de menú.
cMenuTitleName
Especifica el nombre del título de menú.

Observaciones

Utilice SET MARK OF para marcar o quitar la marca de un título de menú.

Si el título de menú especificado está marcado, MRKPAD( ) devolverá verdadero (.T.); de lo contrario, MRKPAD( ) devolverá falso (.F.).

Ejemplo

El siguiente ejemplo de programa, llamado MARKPAD.PRG, utiliza MRKPAD( ) para alternar el carácter de marca de un título de menú cuando lo elige.

Primero se guarda en memoria la barra de menús del sistema actual con SET SYSMENU SAVE y se eliminan todos los títulos de menú del sistema con SET SYSMENU TO.

Con DEFINE PAD se crean varios títulos de menú del sistema. Cuando elige un elemento de menú, se ejecuta el procedimiento choice. choice muestra el nombre del elemento de menú que elige y el nombre de la barra de menú. SET MARK OF se utiliza con MRKPAD( ) para mostrar u ocultar el carácter de marca del elemento de menú. Si elige el título de menú Exit, se restaurará el menú del sistema de Visual FoxPro original.

*** Name this program MARKPAD.PRG ***
CLEAR
SET SYSMENU SAVE
SET SYSMENU TO
SET MARK OF MENU _MSYSMENU TO CHR(4)
PUBLIC glMarkPad
glMarkPad = .T.
DEFINE PAD padSys OF _MSYSMENU PROMPT '\<System'  COLOR SCHEME 3 ;
KEY ALT+S, ''
DEFINE PAD padEdit OF _MSYSMENU PROMPT '\<Edit'  COLOR SCHEME 3 ;
KEY ALT+E, ''
DEFINE PAD padRecord OF _MSYSMENU PROMPT '\<Record'  COLOR SCHEME 3 ;
KEY ALT+R, ''
DEFINE PAD padWindow OF _MSYSMENU PROMPT '\<Window'  COLOR SCHEME 3 KEY ALT+W, ''
DEFINE PAD padReport OF _MSYSMENU PROMPT 'Re\<ports' COLOR SCHEME 3 ;
KEY ALT+P, ''
DEFINE PAD padExit OF _MSYSMENU PROMPT 'E\<xit'  COLOR SCHEME 3 ;
KEY ALT+X, ''
ON SELECTION MENU _MSYSMENU ;
DO choice IN markpad WITH PAD( ), MENU( )
PROCEDURE choice
PARAMETER gcPad, gcMenu
WAIT WINDOW 'You chose ' + gcPad + ;
' from menu ' + gcMenu NOWAIT
SET MARK OF PAD (gcPad) OF _MSYSMENU TO ;
! MRKPAD('_MSYSMENU', gcPad)
glMarkPad= ! glMarkPad
IF gcPad = 'PADEXIT'
SET SYSMENU TO DEFAULT
ENDIF

Vea también

MRKBAR( ) | SET MARK OF


MROW( ) (Función)

Devuelve la posición de fila del puntero del ratón en la ventana principal de Visual FoxPro o en una ventana definida por el usuario.

MROW([cWindowName [, nScaleMode]])

Valores devueltos

Numérico

Parámetros

cWindowName
Especifica el nombre de una ventana de la que MROW( ) devuelve la posición de fila del puntero del ratón.
nScaleMode
Especifica la unidad de medida para el valor que devuelve MROW( ). Los valores para nScaleMode son:
nScaleMode | Descripción
0 | (Valor predeterminado) Fóxeles. Un fóxel equivale al alto y ancho medio de un carácter basado en la fuente actual del formulario que contiene un objeto. Los fóxeles sirven para desarrollar aplicaciones de varias plataformas para plataformas gráficas y basadas en caracteres.
3 | Píxeles. Un píxel es el elemento más pequeño que se puede mostrar en una pantalla o en una impresora. Los píxeles dependen de la pantalla.

Observaciones

MROW( ) devuelve la posición de fila en la ventana principal de Visual FoxPro donde está situado el puntero del ratón si no hay activa ninguna ventana definida por el usuario y omite el argumento opcional.

MROW( ) devuelve las coordenadas de la fila del puntero del ratón en relación con la ventana activa definida por el usuario, si la hay, y omite el argumento opcional. MROW( ) devuelve un valor de –1 si el puntero del ratón está situado fuera de la ventana definida por el usuario o si no está cargado un controlador de ratón y no hay ventana de salida.

Utilizar la función MROW( ) sin un argumento opcional puede afectar el comportamiento del código en formularios con la propiedad AllowOutput establecida a Falso (.F.). Por ejemplo, la colocación de un menú contextual definida en el evento RightClick, puede no mostrarse en la ubicación correspondiente, si usa la función MROW( ) para determinar dónde mostrar el menú.

Vea también

AMOUSEOBJ( ) | COL( ) | GridHitTest (Método) | ISMOUSE( ) | MCOL( ) | ROW( ) | WCOLS( ) | WROWS( )


MTON( ) (Función)

Devuelve un valor Numérico de una expresión Currency.

MTON(mExpression)

Valores devueltos

Numérico

Parámetros

mExpression
Especifica la expresión Currency cuyo valor devuelve MTON( ). mExpression debe evaluarse como un valor de tipo Currency válido. De lo contrario, Visual FoxPro genera un error.

Los valores de tipo Currency se crean al situar el prefijo de signo dólar ($) inmediatamente antes de un valor Numérico.

Observaciones

MTON( ) devuelve un valor Numérico con cuatro decimales.

Ejemplo

El ejemplo siguiente crea una variable de tipo Currency llamada gyMoney. TYPE( ) muestra Y, lo que indica que la variable es de tipo Currency. Se usa MTON( ) para convertir la variable a un tipo Numérico y TYPE( ) muestra ahora N para indicar que la variable es de tipo Numérico después de la conversión.

STORE $24.95 TO gyMoney  && Creates a currency type memory variable
CLEAR
? "gyMoney is type: "
?? TYPE('gyMoney')  && Displays Y, currency type value
gyMoney = MTON(gyMoney)     &&  Converts gyMoney to a numeric value
? "gyMoney is now type: "
?? TYPE('gyMoney')  && Displays N, numeric type value

Vea también

NTOM( ) | TYPE( ) (Función)


MWINDOW( ) (Función)

Devuelve el nombre de la ventana sobre la que se encuentra el puntero del ratón.

MWINDOW([cWindowName])

Valores devueltos

Character, Logical

Parámetros

cWindowName
Especifica un nombre de ventana. Si el puntero del ratón está situado sobre la ventana especificada, MWINDOW( ) devolverá verdadero (.T.); de lo contrario, MWINDOW( ) devolverá falso(.F.).

Observaciones

Si omite el nombre de la ventana opcional, MWINDOW( ) devuelve el nombre de la ventana sobre la que está situado el puntero del ratón, o la cadena nula si el puntero del ratón está situado sobre la ventana principal de Visual FoxPro, sobre el escritorio de Macintosh o sobre otra ventana que no forme parte de Visual FoxPro.

Vea también

MCOL( ) | MDOWN( ) | MROW( ) | WONTOP( ) | WOUTPUT( )


NDX( ) (Función)

Devuelve el nombre de un archivo de índice .IDX abierto en la tabla especificada.

NDX(nIndexNumber [, nWorkArea | cTableAlias])

Valores devueltos

Character

Parámetros

nIndexNumber
Especifica el nombre del archivo .idx que debe devolver. Tanto USE como SET INDEX admiten una lista de archivos de índice que permite abrir archivos .idx para una tabla. El nombre del archivo de índice devuelto por esta función está determinado por el orden de los nombres de los archivos en la lista de archivos de índice. Por ejemplo, si el valor de nIndexNumber es 1, NDX( ) devolverá el nombre del primer archivo de índice de la lista de archivos de índice; si el valor de nIndexNumber es 2, NDX( ) devolverá el nombre del segundo archivo de índice .idx, etc. NDX( ) pasa por alto los nombres de archivos de índice compuesto (.cdx) de la lista de archivos de índice.

NDX( ) devolverá la cadena nula si nIndexNumber es mayor que el número de archivos de índice .idx de la lista de archivos de índice.

nWorkArea
Especifica el número del área de trabajo de los archivos .idx abiertos en un área de trabajo distinta de la actual. NDX( ) devuelve la cadena nula si no hay ninguna tabla abierta en el área de trabajo que especifique. Si omite nWorkArea, NDX( ) devuelve los nombres de los archivos .idx abiertos con la tabla en el área de trabajo actual.
cTableAlias
Especifica el alias de tabla para los archivos .idx abiertos en un área de trabajo distinta de la actual. Si ninguna tabla tiene el alias que se ha incluido, FoxPro genera un mensaje de error. Si omite cTableAlias, NDX( ) devuelve los nombres de los archivos .idx abiertos con la tabla en el área de trabajo actual.

Observaciones

Las funciones CDX( ) y MDX( ) pueden utilizarse para devolver los nombres de los archivos de índice compuestos .cdx que estén abiertos.

En Visual FoxPro para Windows, cuando SET FULLPATH está ON, NDX( ) devuelve la ruta al archivo .idx con el nombre del archivo .idx. Cuando SET FULLPATH está OFF, NDX( ) devuelve la unidad en la que reside el archivo .idx con el nombre del archivo .idx.

Vea también

CDX( ) | INDEX | MDX( ) | SET FULLPATH | SET INDEX | SYS(14) - Expresión de índice | TAG( ) | USE


NEWOBJECT( ) (Función)

Crea una nueva clase u objeto directamente desde una biblioteca de clases visuales .vcx o desde un archivo de programa (.prg) sin abrir el archivo.

NEWOBJECT(cClassName [, cModule [, cInApplication
[, eParameter1, eParameter2, ...]]])

Parámetros

cClassName
Especifica la clase o el objeto a partir del cual se creará la nueva clase.
cModule
Especifica una biblioteca de clases visuales .vcx o un programa de Visual FoxPro (.prg, .mpr, .app, .exe, etc.) que contiene la clase o el objeto especificado con cClassName. De forma predeterminada es una biblioteca de clases visuales .vcx; debe incluir una extensión si especifica un programa.
Nota Una biblioteca de clases puede tener un alias. Para especificar una clase o un objeto de una biblioteca de clases con un alias, incluya la biblioteca de clases seguida por un punto y el nombre del objeto.

Si se omite cModule, o si es la cadena vacía o el valor nulo, Visual FoxPro busca la clase o el objeto en el orden siguiente:

  • Clases de base de Visual FoxPro.
  • Clases del programa actual.
  • Bibliotecas de clases abiertas con SET CLASSLIB.
  • Clases de los archivos de procedimientos abiertos con SET PROCEDURE.
  • Clases de la cadena de ejecución del programa de Visual FoxPro.
  • El registro de OLE si SET OLEOBJECT está establecido en ON.
cInApplication
Especifica la aplicación de Visual FoxPro (.exe o .app) que contiene la biblioteca de clases visuales .vcx que especifique con cModule. Debe incluir una extensión para la aplicación. Se ignora CInApplication si se omite cModule o si CInApplication es la cadena vacía o el valor nulo.

Si desea utilizar el parámetro cInApplication, debe especificar el nombre de un archivo .vcx para cModule. No puede pasar el nombre de un archivo .prg o un programa compilado (.fxp).

eParameter1, eParameter2, ...
Especifica parámetros opcionales que se pasan al procedimiento de evento Init para la clase o el objeto.

Valores devueltos

Objeto

Observaciones

Para asignar a una variable o elemento de matriz la referencia de objeto devuelta por NEWOBJECT( ), utilice el signo igual (=) o el comando STORE. Si se libera un objeto asignado a una variable o elemento de matriz, la variable o elemento de matriz contendrá el valor null. Para quitar la variable o elemento de matriz de la memoria, use el comando RELEASE.

Para NEWOBJECT( ), Visual FoxPro realiza un SET CLASSLIB o SET PROCEDURE interno para el segundo o tercer parámetro utilizando la cláusula ADDITIVE donde los parámetros se usan primero para determinar el orden de búsqueda. Si estos parámetros ya existen en la lista SET CLASSLIB o SET PROCEDURE, Visual FoxPro reorganiza el orden en la lista para que ellos estén primero. Visual FoxPro luego ubica todas las clases, crea el objeto, y llama los eventos Init. Finalmente, Visual FoxPro restaura la lista original SET CLASSLIB o SET PROCEDURE si la instalación no cambia la lista.

Los objetos OLE se crean con la siguiente sintaxis para cClassName:

ApplicationName.Class

Por ejemplo, para crear una hoja Microsoft Excel, la cual admite Automatización, utilice la siguiente sintaxis:

oExcelSheet = NEWOBJECT('Excel.Sheet')

Vea también

Diseñador de clases | CREATE CLASS | CREATE CLASSLIB | CREATEOBJECT( ) | DEFINE CLASS | NewObject (Método)


NORMALIZE( ) (Función)

Convierte una expresión de caracteres, proporcionada por un usuario, en un formato que se puede comparar con los valores de retorno de la función de Visual FoxPro.

NORMALIZE(cExpression)

Valores devueltos

Character

Parámetros

cExpression
Especifica la expresión de caracteres que se va a normalizar.

Observaciones

NORMALIZE( ) devuelve una cadena de caracteres a partir de la expresión de caracteres cExpression con los siguientes cambios:

  • La expresión de caracteres se convierte a mayúsculas. No obstante, las cadenas intercaladas no se modifican. Un ejemplo de cadena intercalada es "Hola" en la expresión de caracteres "LEFT('Hola',1)".
  • Las palabras clave abreviadas de FoxPro en la expresión de caracteres se expanden a su longitud completa.
  • Los operadores -> que separan alias de los nombres de campo se convierten en puntos.
  • Se comprueba la sintaxis de cualquier comando o función de Visual FoxPro incluida en la expresión de caracteres, aunque la expresión en sí no se evalúa. Si la sintaxis es incorrecta, Visual FoxPro genera un error de sintaxis. NORMALIZE( ) no comprueba la existencia de campos, tablas, variables de memoria, funciones definidas por el usuario u otras referencias de la expresión.

Por ejemplo, un usuario puede introducir en el Generador de expresiones una expresión de índice como la siguiente:

UPPE(cust->lname) + UPPE(cust->fname)

Aunque se trata de una expresión de clave de índice válida de Visual FoxPro, es difícil compararla con los valores de retorno de una función de Visual FoxPro como KEY( ). NORMALIZE( ) devuelve la siguiente cadena de caracteres para la expresión anterior:

UPPER(CUST.LNAME) + UPPER(CUST.FNAME)

Esto se puede comparar fácilmente con el valor devuelto por una función como KEY( ), lo que le permite, en este ejemplo, determinar si ya existe un índice o una etiqueta de índice con la expresión de índice proporcionada por el usuario.

Vea también

EVALUATE( ) | ISUPPER( ) | PROPER( ) | UPPER( )


NTOM( ) (Función)

Devuelve un valor de Currency con cuatro cifras decimales a partir de una expresión numérica.

NTOM(nExpression)

Valores devueltos

Currency

Parámetros

nExpression
Especifica una expresión numérica cuyo valor Currency devuelve NTOM( ). Si nExpression tiene más de cuatro cifras decimales, se redondea hasta cuatro decimales. Si nExpression tiene menos de cuatro cifras decimales, se rellena con ceros hasta crear las cuatro.

Ejemplo

El ejemplo siguiente crea una variable de tipo numérico llamada gnNumeric. TYPE( ) muestra N, lo que indica que la variable es de tipo numérico. Se usa NTOM( ) para convertir la variable al tipo Currency y TYPE( ) muestra ahora Y, que indica que la variable es de tipo Currency después de la conversión.

STORE 24.95 TO gnNumeric  && Creates a numeric type memory variable
CLEAR
? "gnNumeric is type: "
?? TYPE('gnNumeric')  && Displays N, numeric type value
gnNumeric= NTOM(gnNumeric)     &&  Converts gnNumeric to a currency value
? "gnNumeric is now type: "
?? TYPE('gnNumeric')  && Displays Y, currency type value

Vea también

MTON( ) | TYPE( ) (Función)


NUMLOCK( ) (Función)

Devuelve el modo actual de la tecla BLOQ NUM, o activa o desactiva la tecla BLOQ NUM.

NUMLOCK([lExpression])

Valores devueltos

Logical

Parámetros

lExpression
Para activar o desactivar la tecla BLOQ NUM. Si el valor de lExpression es verdadero (.T.), la tecla BLOQ NUM está activada; si el valor de lExpression es falso (.F.), la tecla BLOQ NUM está desactivada. NUMLOCK( ) devuelve un valor lógico correspondiente al ajuste de la tecla BLOQ NUM antes de ejecutar NUMLOCK(.T.) o NUMLOCK(.F.).

Observaciones

NUMLOCK( ) devuelve verdadero (.T.) si la tecla BLOQ NUM está activada (al presionar una tecla del teclado numérico se escribe un número), o falso (.F.) si BLOQ NUM está desactivada (al presionar una tecla del teclado numérico se moverá el cursor).

Ejemplo

En el ejemplo siguiente se utiliza el signo igual (=) para ejecutar NUMLOCK( ) sin un valor de retorno.

gcOldLock = NUMLOCK( )  && Save original setting
WAIT WINDOW 'Press a key to turn Num Lock on'
= NUMLOCK(.T.)  && Turn Num Lock on
WAIT WINDOW 'Press a key to turn Num Lock off'
= NUMLOCK(!NUMLOCK( ))  && Toggle Num Lock to the opposite value
WAIT WINDOW 'Press a key to restore original Num Lock setting'
= NUMLOCK(gcOldLock)     && Return to original setting

Vea también

CAPSLOCK( ) | INSMODE( )


NVL( ) (Función)

Devuelve un valor no nulo a partir de dos expresiones.

NVL(eExpression1, eExpression2)

Valores devueltos

Character, Date, DateTime, Numérico, Currency, Logical o valor nulo

Parámetros

eExpression1, eExpression2
NVL( ) devuelve eExpression2 si eExpression1 se evalúa como un valor nulo. NVL( ) devuelve eExpression1 si eExpression1 no es un valor nulo. eExpression1 y eExpression2 pueden ser cualquier tipo de datos. NVL( ) devuelve .NULL. si tanto eExpression1 como eExpression2 se evalúan como el valor nulo.

Observaciones

Utilice NVL( ) para eliminar valores nulos de cálculos u operaciones que no admitan valores nulos o en las que no sean relevantes.

Ejemplo

El ejemplo siguiente crea una variable de memoria llamada glMyNull que contiene el valor nulo. NVL( ) se usa para devolver un valor no nulo de glMyNull y otra expresión.

STORE .NULL. TO glMyNull  && A memory variable containing the null value
CLEAR
? NVL(.T., glMyNull)  && Displays .T.
? NVL(glMyNull, glMyNull)  && Displays .NULL.

Vea también

ISNULL( ) | SET NULL


OBJNUM( ) (Función)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar la propiedad TabIndex para los controles.


OBJTOCLIENT( ) (Función)

Devuelve la posición o las dimensiones de un control u objeto en relación con su formulario.

OBJTOCLIENT(ObjectName, nPosition)

Valores devueltos

Numérico

Parámetros

ObjectName
Especifica el nombre del control u objeto cuya posición en el formulario se devuelve.
nPosition
Especifica la posición o las dimensiones en el formulario de un control u objeto a devolver. La siguiente tabla enumera los valores para nPosition y la posición y dimensión correspondiente que se devuelve.
nPosition | Posición o dimensión
1 | Primero
2 | Izquierda
3 | Ancho
4 | Alto

Observaciones

OBJTOCLIENT( ) devuelve la posición o las dimensiones de un control u objeto en relación con el área cliente del formulario en el que reside. Por ejemplo, el control u objeto puede estar situado en una página dentro de un marco de página y el marco de página está incluido, a su vez, en un formulario. Las propiedades Top, Left, Width y Height devuelven la posición o las dimensiones de un control u objeto en relación con la página donde está incluido. No obstante, puede utilizar OBJTOCLIENT( ) para determinar la posición o las dimensiones de un control u objeto en relación con el formulario donde está incluida la página.

OBJTOCLIENT( ) devuelve un valor en píxeles.

Ejemplo

El ejemplo siguiente utiliza OBJTOCLIENT( ) para mostrar las posiciones y dimensiones de dos casillas de verificación en relación con el formulario donde están. Las propiedades Top, Left, Width y Height también se utilizan para mostrar las posiciones y dimensiones de las dos casillas de verificación en relación con el marco de página donde están situadas.

Se colocan un botón de comando y un marco de página en un formulario. La propiedad PageCount se utiliza para especificar el número de páginas del marco de página. La propiedad Tabs se define con el valor verdadero (.T.) para especificar que el marco de página tiene tabuladores para cada página. Las casillas de verificación se colocan en posiciones diferentes para cada página.

Al hacer clic en una casilla de verificación, se ejecuta el procedimiento Click para esa casilla. Si está activada se usan las propiedades Top, Left, Width y Height para mostrar sus posiciones y dimensiones en relación con el marco de página y OBJTOCLIENT( ) sirve para mostrar las posiciones y dimensiones de la casilla de verificación en relación con el formulario. Si la casilla no está seleccionada, se borra la ventana principal de Microsoft Visual FoxPro.

CLEAR
STORE _DBLCLICK TO gnDblClick  && Guarda el valor doble-clic
STORE 0.05 TO _DBLCLICK  && Hace que doble-clic sea improbable
frmMyForm = CREATEOBJECT('Form')  && Crea un formulario
frmMyForm.Closable = .f.  && Deshabilita el menú de botones
&& de la ventana
frmMyForm.Move(150,10)  && Mueve el formulario
frmMyForm.AddObject('cmbCommand1','cmdMyCmdBtn')  && Agrega un botón
frmMyForm.AddObject('pgfPageFrame1','pgfMyPageFrame')  && Agregha PageFrame
frmMyForm.pgfPageFrame1.Page1.AddObject('chkCheckBox1','chkMyCheckBox1')
frmMyForm.pgfPageFrame1.Page2.AddObject('chkCheckBox2','chkMyCheckBox2')
frmMyForm.cmbCommand1.Visible =.T.  && "Quit" Command button visible
frmMyForm.pgfPageFrame1.Visible =.T.  && PageFrame visible
frmMyForm.pgfPageFrame1.Page1.chkCheckBox1.Visible =.T.
frmMyForm.pgfPageFrame1.Page2.chkCheckBox2.Visible =.T.
frmMyForm.SHOW  && Muesta el formulario
READ EVENTS  && Inicia el proceso de eventos
DEFINE CLASS cmdMyCmdBtn AS CommandButton  && Crea un Command button
Caption = '\<Quit'  && Título del Command button
Cancel = .T.  && Command button Cancelar predeterminado (Esc)
Left = 125  && Command button columna
Top = 210  && Command button fila
Height = 25  && Command button altura
PROCEDURE Click
CLEAR EVENTS  && Detiene el proceso de eventos, cierra formulario
CLEAR  && Borra contenido de ventana principal Visual FoxPro
STORE gnDblClick TO _DBLCLICK  && Restaura el valor doble-clic
ENDDEFINE
DEFINE CLASS pgfMyPageFrame AS PageFrame  && Crea PageFrame
Left = 10  && PageFrame  columna
Top = 10  && PageFrame  fila
Height = 175  && PageFrame  altura
Width = 350  && PageFrame  ancho
PageCount = 2  && 2 Páginas en PageFrame
Tabs = .T.  && Fichas visibles
ENDDEFINE
DEFINE CLASS chkMyCheckBox1 AS CheckBox  && Crea primer Check Box
Top = 0
Width = 200
Caption = 'Mostrar posición'
PROCEDURE Click
DO CASE
CASE ThisForm.pgfPageFrame1.Page1.chkCheckBox1.Value = 0
ACTIVATE SCREEN
CLEAR
CASE ThisForm.pgfPageFrame1.Page1.chkCheckBox1.Value = 1
ACTIVATE SCREEN
CLEAR
? 'Posición relativa'
? 'a PageFrame:'
?
? 'Top: '
?? ALLTRIM(STR;
(ThisForm.pgfPageFrame1.Page1.chkCheckBox1.Top))
? 'Left: '
?? ALLTRIM(STR;
(ThisForm.pgfPageFrame1.Page1.chkCheckBox1.Left))
? 'Width: '
?? ALLTRIM(STR;
(ThisForm.pgfPageFrame1.Page1.chkCheckBox1.Width))
? 'Height: '
?? ALLTRIM(STR;
(ThisForm.pgfPageFrame1.Page1.chkCheckBox1.Height))
?
? 'Positions relative'
? 'to Form:'
?
? 'Top: '
?? ALLTRIM(STR(OBJTOCLIENT;
(ThisForm.pgfPageFrame1.Page1.chkCheckBox1,1)))
? 'Left: '
?? ALLTRIM(STR(OBJTOCLIENT;
(ThisForm.pgfPageFrame1.Page1.chkCheckBox1,2)))
? 'Width: '
?? ALLTRIM(STR(OBJTOCLIENT;
(ThisForm.pgfPageFrame1.Page1.chkCheckBox1,3)))
? 'Height: '
?? ALLTRIM(STR(OBJTOCLIENT(ThisForm.pgfPageFrame1.Page1.chkCheckBox1,4)))
ENDCASE
ENDDEFINE
DEFINE CLASS chkMyCheckBox2 AS CheckBox  && Crea segundo Check Box
Top = 30
Left = 175
Width = 200
Caption = 'Mostrar posición'
PROCEDURE CLICK
DO CASE
CASE ThisForm.pgfPageFrame1.Page2.chkCheckBox2.Value = 0
ACTIVATE SCREEN
CLEAR
CASE ThisForm.pgfPageFrame1.Page2.chkCheckBox2.Value = 1
ACTIVATE SCREEN
CLEAR
? 'Positions relative'
? 'to PageFrame:'
?
? 'Top: '
?? ALLTRIM(STR(ThisForm.pgfPageFrame1.Page2.chkCheckBox2.Top))
? 'Left: '
?? ALLTRIM(STR;
(ThisForm.pgfPageFrame1.Page2.chkCheckBox2.Left))
? 'Width: '
?? ALLTRIM(STR;
(ThisForm.pgfPageFrame1.Page2.chkCheckBox2.Width))
? 'Height: '
?? ALLTRIM(STR;
(ThisForm.pgfPageFrame1.Page2.chkCheckBox2.Height))
?
? 'Posición relativa'
? 'a Formulario:'
?
? 'Top: '
?? ALLTRIM(STR(OBJTOCLIENT;
(ThisForm.pgfPageFrame1.Page2.chkCheckBox2,1)))
? 'Left: '
?? ALLTRIM(STR(OBJTOCLIENT;
(ThisForm.pgfPageFrame1.Page2.chkCheckBox2,2)))
? 'Width: '
?? ALLTRIM(STR(OBJTOCLIENT;
(ThisForm.pgfPageFrame1.Page2.chkCheckBox2,3)))
? 'Height: '
?? ALLTRIM(STR(OBJTOCLIENT;
(ThisForm.pgfPageFrame1.Page2.chkCheckBox2,4)))
ENDCASE
ENDDEFINE

Vea también

Height (Propiedad) | Left (Propiedad) | Top (Propiedad) | Width (Propiedad)


OBJVAR( ) (Función)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar la propiedad Name para los controles.


OCCURS( ) (Función)

Devuelve el número de veces que ocurre una expresión dentro de otra expresión de caracteres.

OCCURS(cSearchExpression, cExpressionSearched)

Valores devueltos

Numérico

Parámetros

cSearchExpression
Especifica una expresión de caracteres que OCCURS( ) busca en cExpressionSearched.
cExpressionSearched
Especifica la expresión de caracteres donde OCCURS( ) busca cSearchExpression.

Observaciones

OCCURS( ) devuelve 0 (cero) si cSearchExpression no es encontrado en cExpressionSearched.

Ejemplo

STORE 'abracadabra' TO gcstring
CLEAR
? OCCURS('a', gcstring)  && Displays 5
? OCCURS('b', gcstring)  && Displays 2
? OCCURS('c', gcstring)  && Displays 1
? OCCURS('e', gcstring)  && Displays 0

Vea también

$ (Operador) | AT( ) | ATLINE( ) | RAT( ) | RATLINE( ) | INLIST( )


OEMTOANSI( ) (Función)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar la función GETCP( ).


OLDVAL( ) (Función)

Devuelve los valores originales para campos que se han modificado pero no se han actualizado.

OLDVAL(cExpression [, cTableAlias | nWorkArea])

Valores devueltos

Carácter, Moneda, Fecha, DateTime, Doble, Flotante, Entero, Lógico, Numérico o Memo

Parámetros

cExpression
Especifica una expresión cuyo valor original devuelve OLDVAL( ) a partir de una tabla o un origen de datos remoto. cExpression suele ser un campo o una expresión que consta de una serie de campos de la tabla o el origen de datos remoto.
cTableAlias
Especifica el alias de la tabla o el cursor desde el que se devuelven los valores originales del campo.
nWorkArea
Especifica el área de trabajo de la tabla o el cursor del que se devuelven los valores originales del campo.

Observaciones

OLDVAL( ) devuelve valores originales de campo para registros de una tabla o un cursor de Visual FoxPro en el que se ha activado el almacenamiento de filas o tablas en búfer mediante CURSORSETPROP( ).

Si una tabla de una base de datos o un cursor tiene reglas de validación, OLDVAL( ) no necesita que se active el almacenamiento de filas o tablas en búfer para devolver valores originales de campo.

Si el puntero del registro se mueve a otro registro cuando está activado el almacenamiento de filas en búfer, o si se ejecuta TABLEUPDATE( ) para grabar cambios en el registro, o hay alguna otra acción que produce una actualización, como la terminación de una transacción, los campos se actualizarán y los valores originales del campo dejarán de estar disponibles.

El tipo de datos del valor que devuelve OLDVAL( ) esta determinado por la expresión que especifique con cExpression.

Los valores originales del campo son devueltos por la tabla o el cursor abierto en el área de trabajo actualmente seleccionado si OLDVAL( ) esta sin los argumentos opcionales cTableAlias o nWorkArea.

Ejemplo

El ejemplo siguiente muestra como puede usar OLDVAL( ) para devolver el valor original para un campo en una tabla almacenada en búfer. Se crea una tabla llamada employees y se usa INSERT – SQL para insertar el valor “Smith” en el campo cLastName.

MULTILOCKS se establece en ON, un requisito para el almacenamiento de tablas en búfer. Se usa CURSORSETPROP( ) para establecer el modo de almacenamiento optimista de tablas en búfer (5).

Se muestra el valor original del campo cLastName (Smith) y entonces el campo cLastName es modificado con REPLACE. El nuevo valor del campo cLastName (Jones) es mostrado. El original valor del campo cLastName (Smith) es mostrado con OLDVAL( ). TABLEUPDATE( ) es entonces usado para confirmar los cambios realizados a la tabla. El valor actualizado del campo cLastName (Jones) es entonces mostrado.

CLOSE DATABASES
CLEAR
* Crea una nueva tabla y agrega un registro en blanco
CREATE TABLE employee (cLastName C(10))
APPEND BLANK
* Inserta un valor inicial
INSERT INTO employee (cLastName) VALUES ("Smith")
* Activa y establece tabla buffering
SET MULTILOCKS ON  && Allow table buffering
=CURSORSETPROP("Buffering", 5, "employee" )  && Enable table buffering
* Muestra Valor Inicial
=MESSAGEBOX("Original cLastName value: "+ cLastName, 0, "Results")
* Cambia el valor del registro y muestra el resultado
REPLACE cLastName WITH "Jones"
=MESSAGEBOX("Modified cLastName value: "+ cLastName, 0, "Results")
* Almacena el antiguo valor a la variable cTemp y muestra el resultado
cTemp=OLDVAL("cLastName", "employee")
=MESSAGEBOX("Original cLastName value: "+ cTemp, 0, "Results")
* Actualiza la tabla y muestra el valor final
=TABLEUPDATE(.T.)
=MESSAGEBOX("Final cLastName value: "+ cLastName, 0, "Results")
* cierre y elimina el archivo de la tabla
USE
DELETE FILE employee.dbf

Vea también

CURVAL( ) | GETFLDSTATE( ) | TABLEREVERT( ) | TABLEUPDATE( ) | CURSORSETPROP( )


ON( ) (Función)

Devuelve el comando asignado a cada uno de los siguientes comandos de control de eventos: ON ERROR, ON ESCAPE, ON KEY LABEL u ON PAGE.

ON(cONCommand [, KeyLabelName])

Valores devueltos

Carácter

Parámetros

cONCommand
Especifica uno de los comandos de control de eventos. A continuación se indican los comandos y las expresiones de caracteres correspondientes que se usan con ON( ):
Comando | cONCommand
ON ERROR | ERROR
ON ESCAPE | ESCAPE
ON KEY LABEL | KEY
ON PAGE | PAGE

Por ejemplo, para devolver el comando asignado actualmente a ON ERROR, se utiliza el comando siguiente:

? ON('ERROR')
KeyLabelName
Se utiliza en ON KEY LABEL para especificar la tecla o combinación de teclas a las que se ha asignado el comando. Especificar KEY en cONCommand, y el nombre de la etiqueta de la tecla o combinación de teclas en KeyLabelName. Para consultar una lista completa de nombres de etiqueta de tecla, ver ON KEY LABEL.

Por ejemplo, para devolver el comando asignado actualmente a la tecla de función F7 con ON KEY LABEL, utilizar:

? ON('KEY', 'F7')

Observaciones

Cuando se produce un evento interceptado por alguno de los comandos de control de eventos, se ejecuta el comando asignado por el comando de control de eventos. ON( ) devuelve el comando que ha asignado como comando de control de eventos. ON( ) devuelve una cadena vacía si un comando no está asignado actualmente al comando de control de eventos que especifique.

Ejemplo

El ejemplo siguiente utiliza ON( ) para mostrar la configuración de ON ERROR y ON KEY LABEL.

ON ERROR DO errorhand
ON KEY LABEL CTRL+F2 WAIT WINDOW 'Presinó ^F2'
ON KEY LABEL ALT+Z DISPLAY MEMORY
CLEAR
? ON('ERROR')  && Muestra: DO errorhand
? ON('KEY', 'CTRL+F2')  && Muestra: WAIT WINDOW 'Presionó ^F2'
? ON('KEY', 'ALT+Z')  && Muestra: DISPLAY MEMORY
ON ERROR
ON KEY LABEL CTRL+F2
ON KEY LABEL ALT+Z

Ver también

INKEY( ) | LASTKEY( ) | ON ERROR | ON ESCAPE | ON KEY | ON KEY LABEL | ON PAGE | ON READERROR | READKEY( )


ORDER( ) (Función)

Devuelve el nombre del archivo o etiqueta de índice de control para la tabla actual o especificada.

ORDER([nWorkArea | cTableAlias [, nPath]])

Valores devueltos

Character

Parámetros

nWorkArea
Especifica el área de trabajo de una tabla cuyo nombre de archivo de índice de control o cuyo nombre de etiqueta de control devuelve ORDER( ).
cTableAlias
Especifica un alias de tabla cuyo nombre de archivo de índice de control o cuyo nombre de etiqueta de control devuelve ORDER( ).
nPath
Especifica que se devuelven la unidad y el directorio junto con el nombre de archivo de índice de una sola entrada o compuesto. La expresión numérica nPath puede tener cualquier valor.

Observaciones

Una tabla puede tener varios archivos de índices abiertos simultáneamente. Sin embargo, sólo un archivo de índice de entrada única (el archivo de índice de control) o una etiqueta de un archivo de índice compuesto (la etiqueta de control) controlan el orden en que se muestra la tabla o se tiene acceso a ella. Ciertos comandos, como SEEK, usan el archivo de índice de control o la etiqueta de control para buscar registros. Esta función devuelve el nombre del archivo de índice de control o la etiqueta de control.

USE y SET INDEX aceptan ambos más de un índice, con una lista de archivos de índice. En esta lista de archivos de índice es posible designar un archivo de índice de control o una etiqueta de control. También es posible usar SET ORDER para designar un índice de control o una etiqueta de control.

De forma predeterminada, ORDER( ) devuelve el nombre del archivo de índice de control o el nombre de la etiqueta de control para el área de trabajo activa. ORDER( ) devuelve la cadena vacía si no se ha establecido ningún orden (se ejecuta SET ORDER TO o no hay ningún archivo o etiqueta de índice de control).

Ejemplo

El siguiente ejemplo muestra archivos y etiquetas de índice.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer ORDER cust_id && Opens Customer table
? ORDER( )  && Displays CUST_ID
? ORDER('customer', 1)  && Displays CUSTOMER.CDX

Vea también

INDEX | SET INDEX | SET ORDER | USE


OS( ) (Función)

Devuelve el nombre y el número de versión del sistema operativo bajo el que está funcionando Microsoft Visual FoxPro.

OS([nValue])

Valores devueltos

Carácter

Parámetros

nValue
Especifica el elemento que se va a devolver, de la manera indicada en la tabla siguiente.

Valores de nValue

Valor | Descripción
1 | Especifica que se devolverá el nombre y el número de versión del sistema operativo.
2 | Especifica que se devolverá una cadena de caracteres que indica si el sistema operativo es compatible con DBCS (juegos de caracteres de doble byte). Si el sistema admite DBCS, OS devolverá la cadena de caracteres "DBCS"; en caso contrario, devolverá la cadena vacía.
3 | Identifica el número de versión principal del sistema operativo. Por ejemplo, en el caso de Windows 2000, el número de versión principal es 5.
4 | Identifica el número de versión secundaria del sistema operativo. Por ejemplo, en el caso de Windows 2000, el número de versión secundaria es 0.
5 | Identifica el número de revisión del sistema operativo.
6 | Identifica la plataforma del sistema operativo.
7 | Contiene una cadena, como "Service Pack 3", que indica el Service Pack más reciente instalado en el sistema. Si no se instaló ningún Service Pack, la cadena estará vacía.
8 | Identifica el número de versión principal del último Service Pack instalado en el sistema. Por ejemplo, para el Service Pack 3, el número de versión principal es 3. Si no se instaló ningún Service Pack, el valor será cero.
9 | Identifica el número de versión secundaria del último Service Pack instalado en el sistema. Por ejemplo, para el Service Pack 3, el número de versión secundaria es 0.
10 | Un conjunto de indicadores de bits que identifican los conjuntos de productos disponibles en el sistema. En la tabla siguiente, consulte los valores de los indicadores de bits de los conjuntos de productos.
11 | Ofrece información adicional acerca del sistema. Consulte los valores posibles en la tabla Valores de tipo de producto que se muestra más abajo.

Indicadores de bits de los conjuntos de productos:

Valor | Significado
1 | Microsoft Small Business Server está instalado.
2 | Windows 2000 Advanced Server o Windows Server 2003, Enterprise Edition, está instalado.
4 | Los componentes de Microsoft BackOffice están instalados.
16 | Terminal Services está instalado.
32 | Microsoft Small Business Server está instalado con la licencia de cliente restrictiva en vigor.
64 | Windows Embedded NT está instalado.
128 | Windows 2000 or Windows Server 2003, Datacenter Edition, está instalado.
256 | Terminal Services está instalado.
512 | Windows XP Home Edition está instalado.
1024 | Windows Server 2003 Web Edition, está instalado.

Valores de tipo de producto:

Valor | Significado
1 | Está ejecutando Windows NT 4.0 Workstation, Windows 2000 Professional, Windows XP Home Edition, o Windows XP Professional.
2 | Controlador de dominio de Windows
3 | Windows 2000 Server

Observaciones

Si omite el argumento opcional, esta función devolverá el nombre y el número de versión del sistema operativo subyacente.

Algunos valores de nValue no se aplican a determinados sistemas operativos. En estos casos, la función OS( ) devuelve "0" o "", una cadena vacía.

Ejemplo

? OS( )
? OS(1)
? OS(2)

Vea también

DISKSPACE( ) | GETENV( ) | VERSION( )


PAD( ) (Función)

Devuelve como una cadena de caracteres en mayúsculas el título de menú elegido más recientemente en una barra de menús o devuelve un valor lógico que indica si el titulo del menú está definido para una barra de menús activa.

PAD([cMenuTitle [, cMenuBarName]])

Valores devueltos

Carácter o Lógico

Parámetros

cMenuTitle
Especifica el nombre de un título del menú en una barra de menús. Incluya este argumento para probar si el título del menú está definido para una barra de menús activa. Si el título del menú está definido, devuelve el valor verdadero (.T.); en caso contrario, devuelve el valor falso (.F.).
cMenuBarName
Especifica el nombre de la barra de menús que contiene el título del menú cMenuTitle. Si se omite cMenuBarName, se supone que el título del menú esta en la barra de menús activa.

Observaciones

Para devolver el título del menú, debe definirse y activarse una barra de menús para PAD( ). Las barras de menús se crean y se activan con DEFINE MENU y ACTIVATE MENU.

También puede utilizar PAD( ) con la barra de menús del sistema de Visual FoxPro.

PAD( ) (ejecutado sin ninguno de sus argumentos opcionales) devolverá una cadena vacía si no hay ninguna barra de menús definida y activa, o si ejecuta PAD( ) desde la ventana Comandos.

Ejemplo

En este ejemplo se utiliza PAD( ) para transferir un título del menú a un procedimiento.

La barra de menús del actual sistema de Visual FoxPro se guarda en memoria con SET SYSMENU SAVE y todos los títulos de sistema se quitan con SET SYSMENU TO.

Con DEFINE PAD se crean varios títulos de menú del sistema. Cuando se elige un título de menú, PAD( ) se usa para transferir el título del menú al procedimiento llamado choice. Choice muestra el título del menú elegido y el nombre de la barra de menús. Si elige el título de menú Salir, se recupera el menú de sistema original de Visual FoxPro.

*** Name this program PADEXAM.PRG ***
CLEAR
SET SYSMENU SAVE
SET SYSMENU TO
DEFINE PAD padSys OF _MSYSMENU PROMPT '\<System' COLOR SCHEME 3 ;
KEY ALT+S, ''
DEFINE PAD padEdit OF _MSYSMENU PROMPT '\<Edit' COLOR SCHEME 3 ;
KEY ALT+E, ''
DEFINE PAD padRecord OF _MSYSMENU PROMPT '\<Record' COLOR SCHEME 3 ;
KEY ALT+R, ''
DEFINE PAD padWindow OF _MSYSMENU PROMPT '\<Window' COLOR SCHEME 3 ;
KEY ALT+W, ''
DEFINE PAD padReport OF _MSYSMENU PROMPT 'Re\<ports' COLOR SCHEME 3 KEY ALT+P, ''
DEFINE PAD padExit OF _MSYSMENU PROMPT 'E\<xit' COLOR SCHEME 3 ;
KEY ALT+X, ''
ON SELECTION MENU _MSYSMENU ;
DO choice IN padexam WITH PAD( ), MENU( )
PROCEDURE choice
PARAMETERS gcPad, gcMenu
WAIT WINDOW 'You chose ' + gcPad + ;
' from menu ' + gcMenu NOWAIT
IF gcPad = 'PADEXIT'
SET SYSMENU TO DEFAULT
ENDIF

Vea también

ACTIVATE MENU | BAR( ) | DEFINE PAD | DEFINE MENU | MENU( ) | ON PAD | ON SELECTION PAD | PROMPT( )


PADL( ) | PADR( ) | PADC( ) (Funciones)

Devuelve una cadena a partir de una expresión, rellenándola por la izquierda, la derecha o por ambos lados hasta la longitud especificada.

PADL(eExpression, nResultSize [, cPadCharacter])

O bien:

PADR(eExpression, nResultSize [, cPadCharacter])

O bien:

PADC(eExpression, nResultSize [, cPadCharacter])

Valores devueltos

Character

Parámetros

eExpression
Especifica la expresión que se va a rellenar. Puede ser una expresión de cualquier tipo, excepto una expresión lógica o de moneda, o un campo general o de imagen.
nResultSize
Especifica el número total de caracteres que tendrá la expresión después de rellenarla.
cPadCharacter
Especifica el valor que se va a utilizar para rellenar. Este valor se repite todas las veces necesarias para rellenar la expresión con el número especificado de caracteres.

Si se omite cPadCharacter, se utilizan espacios (ASC(32)) para rellenar.

Observaciones

PADL( ) inserta los caracteres de relleno a la izquierda, PADR( ) los inserta a la derecha y PADC( ) los inserta a ambos lados.

Ejemplo

STORE 'TITLE' TO gcString
CLEAR
? PADL(gcString, 40, '=')
? PADR(gcString, 40, '=')
? PADC(gcString, 40, '=')

Vea también

ALLTRIM( ) | LEFT( ) | LTRIM( ) | RIGHT( ) | STUFF( ) | TRIM( )


PARAMETERS( ) (Función)

Devuelve el número de parámetros transferidos al procedimiento, al programa o a la función definida por el usuario que se haya llamado más recientemente.

PARAMETERS( )

Valores devueltos

Numérico

Observaciones

PARAMETERS( ) es útil para determinar cuántos parámetros se pasan a un procedimiento, programa o función definida por el usuario.

Nota Tenga en cuenta que el valor devuelto por PARAMETERS( ) se restablece cada vez que se llama a un programa, un procedimiento o una función definida por el usuario, o se ejecuta ON KEY LABEL. A diferencia de PARAMETERS( ), la función PCOUNT( ) no se restablece, por lo que es preferible usar PCOUNT( ) en la mayoría de las situaciones de programación.

Ejemplos

El ejemplo 1 llama a un procedimiento y muestra en una ventana de espera el número de parámetros pasados.

El ejemplo 2 usa un procedimiento para mostrar el promedio de 4 valores.

* Example 1
DO testpar WITH 1,2,3
PROCEDURE testpar
PARAMETERS gn1,gn2,gn3
gcMessage = 'PARAMETERS( ) ='+ALLTRIM(STR(PARAMETERS( )))
WAIT WINDOW (gcMessage)
RETURN
* Example 2
SET TALK OFF
gnVal1 = 10
gnVal2 = 20
gnVal3 = 30
gnVal4 = 15
gnMin = getavg(gnVal1, gnVal2, gnVal3, gnVal4)
? 'Average value is '
?? gnMin
* This user-defined function permits up to 9 parameters to be passed.
* It uses the PARAMETERS( ) function to determine how many
* were passed and returns the average value.
FUNCTION getavg
PARAMETERS gnPara1,gnPara2,gnPara3,gnPara4,gnPara5, ;
gnPara6,gnPara7,gnPara8,gnPara9
IF PARAMETERS( ) = 0
RETURN 0
ENDIF
gnResult = 0
FOR gnCount = 1 to PARAMETERS( )
gcCompare = 'gnPara' +(STR(gnCount,1))
gnResult = gnResult + EVAL(gcCompare)
ENDFOR
gnResult = gnResult / (gnCount - 1)
RETURN gnResult

Vea también

DO | FUNCTION | LPARAMETERS | LOCAL | PARAMETERS | PCOUNT( ) (Función) | PRIVATE | PROCEDURE | PUBLIC | SET UDFPARMS


PAYMENT( ) (Función)

Devuelve el importe de cada pago periódico de un préstamo a interés fijo.

PAYMENT(nPrincipal, nInterestRate, nPayments)

Valores devueltos

Numérico

Parámetros

nPrincipal
Especifica el principal inicial del préstamo.
nInterestRate
Especifica el tipo de interés fijo por periodo. Si en el préstamo se hacen los pagos mensualmente pero el tipo de interés es anual, divida el tipo de interés anual entre 12.
nPayments
Especifica el número total de pagos que se realizarán en el préstamo.

Observaciones

PAYMENT( ) supone un tipo de interés periódico constante y que los pagos se hacen al final de cada periodo.

Ejemplo

STORE 100000 to gnPrincipal     && $100,000 Valor del prestamo
STORE .105/12 TO gnInterest  && 10.5% Tasa de interes anual
STORE (20*12) TO gnPayments     && 20 Años de pagos mensuales
CLEAR
? PAYMENT(gnPrincipal, gnInterest, gnPayments)  && Muestra 998.38

Vea también

CALCULATE (Comando) | FV( ) (Función) | PV( ) (Función)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


PCOL( ) (Función)

Devuelve la posición de columna actual del resultado impreso.

PCOL( )

Valores devueltos

Numérico

Observaciones

El valor devuelto por PCOL( ) se refiere al valor de configuración actual del margen izquierdo de la impresora. El margen izquierdo puede ajustarse con SET MARGIN o almacenando un valor en la variable de memoria del sistema _PLOFFSET.

PCOL( ) es especialmente útil para el direccionamiento relativo del texto impreso.

Puede utilizar el operador $ en lugar de PCOL( ).

Ejemplo

CLEAR
@ PROW( ), PCOL( )+12 SAY 'Contact person'
@ PROW( ), $+12 SAY 'Contact person'

Vea también

COL( ) (Función) | ROW( ) (Función) | PROW( ) (Función)


PCOUNT( ) (Función)

Devuelve el número de parámetros pasados al programa, procedimiento o función definida por el usuario actualmente en uso.

PCOUNT( )

Valores devueltos

Numérico

Observaciones

PCOUNT( ) es muy útil para determinar cuantos parámetros se pasan al programa, procedimiento o función definida por el usuario actualmente en uso.

Ejemplos

El ejemplo 1 llama a un procedimiento y muestra en una ventana de espera el número de parámetros pasados.

El ejemplo 2 usa un procedimiento para mostrar el promedio de 4 valores.

Ejemplo 1

DO testpar WITH 1,2,3
PROCEDURE testpar
PARAMETERS gn1,gn2,gn3
gcMessage = 'PCOUNT( ) ='+ALLTRIM(STR(PCOUNT( )))
WAIT WINDOW (gcMessage)
RETURN

Ejemplo 2

SET TALK OFF
gnVal1 = 10
gnVal2 = 20
gnVal3 = 30
gnVal4 = 15
gnMin = getavg(gnVal1, gnVal2, gnVal3, gnVal4)
? 'Average value is '
?? gnMin
* This user-defined function permits up to 9 parameters to be passed.
* It uses the PCOUNT( ) function to determine how many
* were passed and returns the average value.
FUNCTION getavg
PARAMETERS gnPara1,gnPara2,gnPara3,gnPara4,gnPara5, ;
gnPara6,gnPara7,gnPara8,gnPara9
IF PCOUNT( ) = 0
RETURN 0
ENDIF
gnResult = 0
FOR gnCount = 1 to PARAMETERS( )
gcCompare = 'gnPara' +(STR(gnCount,1))
gnResult = gnResult + EVAL(gcCompare)
ENDFOR
gnResult = gnResult / (gnCount - 1)
RETURN gnResult

Vea también

DO (Comando) | FUNCTION (Comando) | LPARAMETERS (Comando) | LOCAL (Comando) | PARAMETERS (Comando) | PARAMETERS( ) (Función) | PRIVATE (Comando) | PROCEDURE (Comando) | PUBLIC (Comando) | SET UDFPARMS (Comando)


PEMSTATUS( ) (Función)

Devuelve un atributo para una propiedad, evento, método u objeto.

PEMSTATUS(oObjectName | cClassName, cProperty | cEvent | cMethod
| cObject, nAttribute)

Valores devueltos

Character o Logical

Parámetros

oObjectName
Especifica el objeto para el que se devuelve un atributo de propiedad, de evento, de método o de objeto. oObjectName puede ser cualquier expresión que evalúe a un objeto, por ejemplo, una referencia de objeto, una variable de memoria de objeto o un elemento de matriz de objeto. Si oObjectName es un objeto contenedor, como un formulario, puede determinar los atributos para los objetos contenidos en él.
cClassName
Especifica la clase para la que se devuelve un atributo de propiedad, evento o método.
cProperty
Especifica la propiedad para la que se devuelve un atributo.
cEvent
Especifica el evento para el que se devuelve un atributo.
cMethod
Especifica el método para el que se devuelve un atributo.
cObject
Especifica el objeto para el que se devuelve un atributo. Por ejemplo, puede utilizar el método AddObject para agregar un objeto a un objeto contenedor y utilizar después PEMSTATUS( ) para devolver información acerca del objeto agregado al objeto contenedor.
nAttribute
Un valor numérico que especifica qué atributo de propiedad, de evento o de método se devuelve.

En la siguiente tabla se muestran los valores para nAttribute y el correspondiente atributo de propiedad, de evento o de método.

nAttribute | Atributo de propiedad, de evento o de método
0 | Modificado (sólo para propiedades). Se devuelve un valor lógico verdadero (.T.) si se ha modificado el valor de propiedad original o predeterminado; de lo contrario, se devolverá un valor lógico falso (.F.).
1 | Sólo lectura (únicamente para propiedades). Se devuelve un valor lógico verdadero (.T.) si la propiedad es de sólo lectura; de lo contrario, se devolverá un valor lógico falso (.F.).
2 | Protegido. Se devuelve un valor lógico verdadero (.T.) si la propiedad, el evento o el método están protegidos; de lo contrario, se devuelve un valor lógico falso (.F.).
3 | Tipo. Se devuelve una cadena de caracteres que indica si cProperty, cEvent, cMethod o cObject es una propiedad, un evento, un método o un objeto. Se devolverá Property, Event, Method u Object.
4 | Definido por el usuario. Se devuelve un valor lógico verdadero (.T.) si la propiedad, el evento o el método han sido definidos por el usuario; de lo contrario, se devolverá un valor lógico falso (.F.).
5 | Propiedad, evento, método u objeto definidos. Se devuelve un valor lógico verdadero (.T.) si la propiedad, el evento, el método o el objeto existen para oObjectName o cClassName; de lo contrario, se devolverá un valor lógico falso (.F.).
6 | Propiedad, evento, método u objeto heredados. Se devuelve un valor lógico verdadero (.T.) si la propiedad, evento, método u objeto para oObjectName o cClassName se hereda de otro objeto o clase; de lo contrario, se devolverá un valor lógico falso (.F.).

Observaciones

Si se pasa la matriz, PEMSTATUS( ) no detecta los cambios en una matriz de elementos específica.

Vea también

CREATE FORM | GETPEM( ) | SYS(1269) - Información de propiedad | SYS(1270) - Ubicación de objetos | SYS(1271) - Archivo .SCX del objeto | SYS(1272) - Jerarquía de objetos


PI( ) (Función)

Devuelve la constante numérica pi.

PI( )

Valores devueltos

Numérico

Observaciones

La constante numérica pi (3,141592) es la razón entre la circunferencia de un círculo y su diámetro.

El número de lugares decimales mostrados en el valor devuelto por PI( ) está determinado por SET DECIMALS.

Ejemplo

CLEAR
? PI( ) && Displays 3.14
STORE 2.30 TO gnRadius
STORE PI( ) * gnRadius^2 TO gnArea
? gnArea  && Displays 16.6190

Vea también

SET DECIMALS (Comando) | STORE (Comando) | Circle (Método)


POPUP( ) (Función)

Devuelve el nombre del menú activo en forma de cadena o un valor lógico que indica si se ha definido un menú.

POPUP([cMenuName])

Valores devueltos

Character o Logical

Parámetros

cMenuName
Devuelve un valor lógico que indica si se ha definido cMenuName. POPUP( ) devuelve verdadero (.T.) si se ha definido el menú especificado; de lo contrario, POPUP( ) devuelve falso (.F.).

Observaciones

POPUP( ) devuelve el nombre del menú activo en forma de cadena de caracteres si omite el argumento opcional cMenuName. Un menú debe estar definido y activo para que POPUP( ) pueda devolver su nombre. Los menús se definen y se activan con DEFINE POPUP y ACTIVATE POPUP. El menú puede ser también un menú del sistema de Visual FoxPro. Si un menú no está definido y activo, o si ejecuta POPUP( ) desde la ventana Comandos, POPUP( ) devolverá una cadena nula.

Vea también

ACTIVATE POPUP | BAR( ) | DEFINE BAR | DEFINE POPUP | ON SELECTION POPUP


PRIMARY( ) (Función)

Devuelve verdadero (.T.) si una etiqueta de índice es una etiqueta de índice principal; de lo contrario, devuelve falso (.F.).

PRIMARY([nIndexNumber] [, nWorkArea | cTableAlias])

Valores devueltos

Logical

Parámetros

nIndexNumber
Especifica el número de la etiqueta de índice para la que PRIMARY( ) devuelve el estado principal. PRIMARY( ) devuelve el estado principal en el orden siguiente a medida que nNúmeroÍndice aumenta desde 1 hasta el número total de etiquetas de índices estructurales compuestos y compuestos independientes.
  1. En primer lugar se devuelve el estado principal de cada etiqueta del índice estructural compuesto (si hay uno presente). El estado principal de las etiquetas se devuelve en el orden en que se han creado las etiquetas en el índice estructural.
  2. A continuación, se devuelve el estado principal de cada etiqueta de los índices compuestos abiertos e independientes. El estado principal de las etiquetas se devuelve en el orden en que se han creado las etiquetas en los índices compuestos independientes.

    Si omite nNúmeroÍndice, PRIMARY( ) comprobará si la etiqueta de índice principal de control es una etiqueta de índice principal. Si no hay una etiqueta de índice principal de control, PRIMARY( ) devolverá falso(.F.).

nWorkArea
Especifica el área de trabajo de la etiqueta de índice especificada con nIndexNumber.
cTableAlias
Especifica el área de trabajo de la etiqueta de índice especificada con nIndexNumber.

Si omite nWorkArea y cTableAlias, PRIMARY( ) comprobará si la etiqueta de índice del área de trabajo seleccionada actualmente es una etiqueta de índice principal.

Ejemplo

El ejemplo siguiente abre la tabla customer de la base de datos. FOR ... ENDFOR para crear un bucle en el que se comprueba el estado principal de cada etiqueta de índice en el índice estructural customer. Se muestra el nombre de cada etiqueta de índice estructural con su estado principal.

CLOSE DATABASES
SET PATH TO (HOME(2) + 'Data\')   && Sets path to database
OPEN DATABASE testdata  && Open testdata database
USE Customer     && Open customer table
FOR nCount = 1 TO 254
IF !EMPTY(TAG(nCount))  && Checks for tags in the index
? TAG(nCount)  && Display tag name
? PRIMARY(nCount)     && Display primary status
ELSE
EXIT  && Exit the loop when no more tags are found
ENDIF
ENDFOR

Vea también

ALTER TABLE - SQL | CANDIDATE( ) | CREATE TABLE - SQL | INDEX


PRINTSTATUS( ) (Función)

Devuelve verdadero (.T.) si la impresora o el dispositivo de impresión está en línea; de lo contrario, devuelve falso (.F.).

PRINTSTATUS( )

Valores devueltos

Logical

Observaciones

PRINTSTATUS( ) es similar a SYS(13), excepto que SYS(13) devuelve READY u OFFLINE en lugar de verdadero (.T.) o falso. (.F.).

En Visual FoxPro y en FoxPro para Windows, PRINTSTATUS( ) devuelve verdadero (.T.) si la impresora está conectada a través del Panel de control de Windows.

Ejemplo

? PRINTSTATUS( )
*** Program Example ***
STORE PRINTSTATUS( ) TO glReady
IF NOT glReady
WAIT 'Make sure printer is attached and turned on!' WINDOW
ELSE
WAIT 'Printer is ready!' WINDOW
ENDIF

Vea también

SET DEVICE | SET PRINTER | SYS(13) - Estado de la impresora | PRINTJOB ... ENDPRINTJOB (Comando)


PRMBAR( ) (Función)

Devuelve el texto de un elemento de menú.

PRMBAR(cMenuName, nMenuItemNumber)

Valores devueltos

Character

Parámetros

cMenuName
Especifica el nombre del menú.
nMenuItemNumber
Especifica el número del elemento de menú cuyo texto devuelve PRMBAR( ). Por ejemplo, si nMenuItemNumber es 1 se devolverá el texto del primer elemento de menú, si nMenuItemNumber es 2 se devolverá el texto del segundo elemento de menú y así sucesivamente. La expresión debe tener el valor mínimo de 1 y su valor máximo no debe superar el número de elementos incluidos en el menú.

Observaciones

Los menús se crean con DEFINE POP, que crea el menú, y DEFINE BAR, que crea los elementos del menú. PRMBAR( ) funciona también con el menú del sistema de Visual FoxPro. PRMBAR( ) devuelve el texto que aparece en el elemento de menú. No es necesario que el menú esté activo.

Si se creó un elemento de menú con la barra inversa y el carácter menor que (\<) para crear una tecla de acceso, o se creó con una barra inversa (\) para desactivar el elemento de menú, PRMBAR( ) sólo devolverá el texto del elemento de menú, no los caracteres especiales. PRMBAR( ) devuelve una cadena vacía cuando un elemento de menú es un separador creado con la barra inversa y un guión (\-).

Vea también

CNTBAR( ) | GETBAR( ) | DEFINE BAR | DEFINE POPUP | MRKBAR( ) | PRMPAD( )


PRMPAD( ) (Función)

Devuelve el texto de un título de menú.

PRMPAD(MenuBarName, MenuTitleName)

Valores devueltos

Character

Parámetros

MenuBarName
Especifica el nombre de la barra de menús que contiene el título del menú.
MenuTitleName
Especifica el título de menú.

Observaciones

Las barras de menús se crean con DEFINE MENU, que crea la barra de menús, y con DEFINE PAD, que crea los títulos de menú. PRMPAD( ) funciona también con el menú del sistema de Visual FoxPro. Una barra de menús no tiene que estar activa para que PRMPAD( ) devuelva el texto de un título de menú.

Si un título de menú se creó con la barra inversa y el carácter menor que (\<) para crear una tecla de acceso, o con una barra inversa (\) para desactivar el título del menú, PRMPAD( ) devuelve solamente el texto del título del menú, sin incluir ninguno de los caracteres especiales.

Ejemplo

En el ejemplo siguiente se crea una barra de menús llamada mnuExample con tres títulos de menú. Los designadores de la opción desactivada y la tecla de acceso no se devolverán de los títulos llamados titleTwo y titleThree. Se activa el menú para mostrar los títulos y se borra de la pantalla y de la memoria cuando se elige un título.

CLEAR
SET TALK OFF
STORE 'mnuExample' TO gcPopName
DEFINE MENU mnuExample BAR AT LINE 1
DEFINE PAD titleOne OF mnuExample PROMPT 'This will be returned'
DEFINE PAD titleTwo OF mnuExample PROMPT '\<As will this'
DEFINE PAD titleThree OF mnuExample PROMPT '\And this, too'
=messagebox( PRMPAD('mnuExample', 'titleOne') )
=messagebox( PRMPAD('mnuExample', 'titleTwo') )
=messagebox( PRMPAD(gcPopName, 'titleThree') )
ACTIVATE MENU mnuExample
DEACTIVATE MENU mnuExample
RELEASE MENU mnuExample

Vea también

CNTBAR( ) | GETBAR( ) | DEFINE BAR | DEFINE POPUP | MRKPAD( ) | PRMBAR( )


PROGRAM( ) (Función)

Devuelve el nombre del programa que se está ejecutando actualmente, el nivel del programa actual o el nombre del programa que se estaba ejecutando cuando se produjo un error.

PROGRAM([nLevel])

Valores devueltos

Carácter

Parámetros

nLevel
Especifica en cuántos niveles de programa anteriores se debe buscar el nombre del programa. Este parámetro puede estar comprendido entre 0 y el nivel de anidamiento del programa. Un programa puede ejecutar otro programa, que a su vez puede ejecutar otro programa y así sucesivamente. Los programas pueden anidarse hasta 128 niveles.

Si especifica 0 ó 1 para nLevel, PROGRAM( ) devolverá el nombre del programa maestro (el programa de nivel más alto). Si nLevel excede la profundidad de anidamiento del programa, PROGRAM( ) devolverá una cadena vacía.

Si especifica – 1 para nLevel, PROGRAM( ) devuelve como valor numérico el nivel del programa actual. PROGRAM(-1) siempre devuelve cero cuando se ejecuta desde la ventana Comandos.

Observaciones

PROGRAM( ) ayuda al programa en la recuperación de errores. Es similar a SYS(16).

Si se utiliza sin ningún argumento, PROGRAM( ) devuelve el nombre del programa que se está ejecutando actualmente.

Ejemplo

ON ERROR DO errhand WITH PROGRAM( )
*** The next line should generate an error ***
USE nodatabase
ON ERROR     && Returns to system default error-handling routine
PROCEDURE errhand
PARAMETERS gcProgram
WAIT 'An error occurred in the program ' + gcProgram WINDOW

Vea también

DO | LINENO( ) | MESSAGE( ) | SYS(16) - Nombre de archivo del programa en ejecución | ASTACKINFO( )


PROMPT( ) (Función)

Devuelve el texto para un título de menú elegido en una barra de menús o para un elemento de menú elegido en un menú.

PROMPT( )

Valores devueltos

Carácter

Observaciones

PROMPT( ) devuelve el texto del último título del menú elegido en una barra de menús o el último elemento de menú elegido en un menú. La barra de menús o el menú pueden estar definidos por el usuario o pueden ser una barra de menús o un menú de Visual FoxPro. Si una barra de menús o un menú no están activos, o si presiona ESC para salir de una barra de menús o de un menú, PROMPT( ) devolverá una cadena vacía.

Una barra de menús se crea con DEFINE MENU y cada título de menú de la barra de menús se crea con DEFINE PAD. Un menú se crea con DEFINE POPUP y los elementos del menú, con DEFINE BAR.

MENU( ) y POPUP( ) pueden utilizarse para devolver el nombre de la barra de menús o del menú de los que se ha elegido el título o el elemento de menú.

Vea también

BAR( ) | DEFINE BAR | DEFINE MENU | DEFINE PAD | DEFINE POPUP | POPUP( ) | PRMBAR( )


PROPER( ) (Función)

Devuelve, a partir de una expresión de tipo Carácter, una cadena con el modelo apropiado de mayúsculas/minúsculas para nombres propios.

PROPER(cExpression)

Valores devueltos

Carácter

Parámetros

cExpression
Especifica la expresión de tipo carácter de la que PROPER( ) devuelve una cadena de caracteres con el modelo apropiado de mayúsculas / minúsculas.

Ejemplo

STORE 'Visual FoxPro' TO gcExpr1
CLEAR
? PROPER(gcExpr1)  && Displays "Visual Foxpro"
STORE 'VISUAL FOXPRO' TO gcExpr2
? PROPER(gcExpr2)  && Displays "Visual Foxpro"

Vea también

LOWER( ) | UPPER( ) | Crear expresiones de tipo Carácter


PROW( ) (Función)

Devuelve la posición actual de la fila del cabezal de la impresora.

PROW( )

Valores devueltos

Numérico

Observaciones

Si ejecuta EJECT, Visual FoxPro restablecerá PROW( ) en cero.

PROW( ) es especialmente útil para el direccionamiento relativo de texto impreso.

Ejemplo

En el ejemplo siguiente, los dos comandos anteriores devuelven el mismo resultado. Puede utilizar el operador $ en lugar de PCOL( ). Tanto $ como PCOL( ) devuelven la posición de la columna actual de la impresora.

@ PROW( ), PCOL( ) + 12 SAY 'Contact person'
@ PROW( ), $+12 SAY 'Contact person'

Vea también

@ ... SAY | COL( ) | PCOL( ) | ROW( )


PRTINFO( ) (Función)

Devuelve la configuración actual de la impresora especificada.

PRTINFO(nPrinterSetting [, cPrinterName])

Parámetros

nPrinterSetting
Especifica la configuración de impresora de Visual FoxPro que se devuelve. La siguiente tabla muestra las descripciones de los tipos de configuración devueltos.
nPrinterSetting | FOXPRO.H | Configuración devuelta
1 | PRT_ORIENTATION | Orientación del papel
2 | PRT_PAPERSIZE | Tamaño de papel
3 | PRT_PAPERLENGTH | Longitud de papel. Incrementos de 0.1 mm
4 | PRT_PAPERWIDTH | Ancho de papel. Incrementos de 0.1 mm
5 | PRT_SCALE | Factor de escala para la salida de impresora
6 | PRT_COPIES | Número de copias a imprimir
7 | PRT_DEFASOURCE | Fuente de papel predeterminada
8 | PRT_PRINTQUAL | Un valor positivo que indica la resolución horizontal en puntos por pulgada (DPI) o un valor negativo que indica la calidad de impresión.
9 | PRT_COLOR | Un valor que indica si se imprime en color o blanco y negro
10 | PRT_DUPLEX | Modo doble cara
11 | PRT_YRESOLUTION | Resolución vertical en puntos por pulgada (DPI). Si no está disponible, devuelve un valor de -1.
12 | PRT_TTOPTION | Un valor que indica cómo se imprimen las fuentes TrueType®
13 | PRT_COLLATE | Un valor que indica si la salida está intercalada
cPrinterName
Especifica el nombre de la impresora para la cual se devuelve la información. Si se omite cPrinterName, se devuelve la información para la impresora predeterminada.

Valores devueltos

Tipo de dato Numérico. En las siguientes tablas se muestran los valores devueltos cuando se especifica un valor para nPrinterSetting.

Si nPrinterSetting es 1, PRTINFO( ) devuelve la orientación del papel:

Valor devuelto | Orientación del papel
–1 | Información no disponible
0 | Vertical
1 | Horizontal

Si nPrinterSetting es 2, PRTINFO( ) devuelve el tamaño de papel:

Valor devuelto | Tamaño de papel
–1 o un valor no listado abajo | Información no disponible. Utilice nPrinterSetting = 3 y nPrinterSetting = 4 para determinar el tamaño del papel.
1 | Carta, 216 x 279 mm
2 | Carta pequeña, 216 x 279 mm
3 | Tabloide, 279 x 432 mm
4 | Doble carta, 432 x 279 mm
5 | Oficio, 216 x 356 mm
6 | Estamento, 140 x 216 mm
7 | Ejecutivo, 195 x 254 mm
8 | A3, 297 x 420 mm
9 | A4, 210 x 297 mm
10 | A4 pequeño 210 x 297 mm
11 | A5, 148 x 210 mm
12 | B4, 250 x 354 mm
13 | B5, 182 x 257 mm
14 | Folio, 8 ½ x 13 in
15 | Cuarto, 215 x 275 mm
16 | 254 x 344 mm
17 | 279 x 431 mm
18 | Nota, 216 x 279 mm
19 | Sobre nº 9, 98 x 223 mm
20 | Sobre nº 10, 105 x 241 mm
21 | Sobre nº 11, 114 x 264 mm
22 | Sobre nº 12, 124 x 279 mm
23 | Sobre nº 14, 127 x 292 mm
24 | Hoja tamaño C
25 | Hoja tamaño D
26 | Hoja tamaño E
27 | Sobre DL, 110 x 220 mm
28 | Sobre C5, 162 x 229 mm
29 | Sobre C3, 324 x 458 mm
30 | Sobre C4, 229 x 324 mm
31 | Sobre C6, 114 x 162 mm
32 | Sobre C65, 114 x 229 mm
33 | Sobre B4, 250 x 353 mm
34 | Sobre B5, 176 x 250 mm
35 | Sobre B6, 176 x 125 mm
36 | Sobre, 110 x 230 mm
37 | Sobre monarca, 67 x 483 mm
38 | Sobre 6 ¾, 48 x 165 mm
39 | Continuo USA estándar, 310 x 280 mm
40 | Continuo alemán estándar, 216 x 305 mm
41 | Continuo alemán oficio, 216 x 330 mm

Si nPrinterSetting es 7, PRTINFO( ) devuelve la fuente de papel:

Valor devuelto | Fuente de papel
1 | Bandeja superior
2 | Bandeja inferior
3 | Bandeja central
4 | Alimentación manual
5 | Bandeja para sobres
6 | Sobre con alimentación manual
7 | Selección automática
8 | Alimentación por tracción
9 | Formato pequeño
10 | Formato grande
11 | Gran capacidad
14 | Cassette
15 | Bandeja predeterminada (selección automática)

Si nPrinterSetting es 8 y PRTINFO( ) devuelve un valor negativo, el valor indica la calidad de impresión:

Valor devuelto | Calidad de impresión
–1 | Borrador
–2 | Bajo
–3 | Medio
–4 | Alto

Si nPrinterSetting es 9, PRTINFO( ) devuelve un valor que indica si se imprime en color o monocromo:

Valor devuelto | Color de salida
1 | Monocromo
2 | Color

Si nPrinterSetting es 10, PRTINFO( ) devuelve el modo de doble cara:

Valor devuelto | Modo doble cara
1 | Una cara
2 | Vertical doble cara
3 | Horizontal doble cara

Si nPrinterSetting es 12, PRTINFO( ) devuelve el valor que indica como se imprimen las fuentes TrueType®:

Valor devuelto | Imprimir fuentes TrueType® como
1 | Como gráficos de mapas de bits
2 | Se transfieren como fuentes de software
3 | Sustituyen las fuentes de dispositivo

Si nPrinterSetting es 13, PRTINFO( ) devuelve un valor que indica si se intercala el resultado:

Valor devuelto | Intercalado
0 | No intercalar
1 | Intercalado

Observaciones

La configuración de impresora de Visual FoxPro se define en el cuadro de diálogo Configurar página. Elija Configurar página en el menú Archivo para mostrar el cuadro de diálogo Configurar página de Visual FoxPro.

Vea también

GETPRINTER( ) | PRINTSTATUS( ) | SET DEVICE | SET PRINTER | SYS(13) - Estado de la impresora | SYS(1037) - Cuadro de diálogo Configurar página


PUTFILE( ) (Función)

Llama al cuadro de diálogo Guardar como y devuelve el nombre de archivo que especifique.

PUTFILE([cCustomText] [, cFileName] [, cFileExtensions])

Valores devueltos

Carácter

Parámetros

cCustomText
Especifica el texto personalizado que se muestra en el cuadro de diálogo Guardar como.
cFileName
Especifica el nombre de archivo predeterminado que aparece en el cuadro de texto.
cFileExtensions
Especifica extensiones de nombres de archivo. Sólo los nombres de archivo con la extensión especificada aparecerán en la lista de desplazamiento del cuadro de diálogo Guardar como cuando se desactive la casilla de verificación Todos los archivos. La primera extensión en cFileExtensions se anexará automáticamente al nombre de archivo introducido si no se ha incluido ninguna extensión con el nombre de archivo. El parámetro cFileExtensions no puede exceder 254 de longitud. Si desea consultar una lista de las extensiones de archivo de Visual FoxPro y los correspondientes tipos de creador, vea el tema en pantalla Tipos y extensiones de archivos.

La expresión de caracteres cFileExtensions puede tener una de las formas siguientes:

  • cFileExtensions puede contener una sola extensión, por ejemplo PRG, y solamente se mostrarán los nombres con esa extensión.
  • cFileExtensions puede contener una lista de extensiones de nombre de archivo separadas por signos de punto y coma. Por ejemplo, si incluye PRG;FXP Visual FoxPro mostrará todos los nombres de archivo con las extensiones .prg y .fxp.
  • Si los nombres de archivo tienen el mismo nombre raíz pero extensiones diferentes (por ejemplo, Customer.prg y Customer.fxp), Visual FoxPro únicamente mostrará el nombre de archivo con la primera extensión que aparezca en cFileExtensions.
  • cFileExtensions puede contener una lista de extensiones de nombres de archivo separadas por barras verticales (por ejemplo PRG|FXP). En este caso, Visual FoxPro mostrará todos los nombres de archivo con las extensiones indicadas, incluso si los archivos tienen el mismo nombre raíz.
  • Si cFileExtensions contiene solamente un punto y coma (;), Visual FoxPro mostrará todos los nombres de archivo que no tengan extensión.
  • Si cFileExtensions es una cadena vacía, Visual FoxPro mostrará los nombres de todos los archivos del directorio o carpeta actual.
  • Si cFileExtensions contiene caracteres comodín de MS-DOS (como ? y *), Visual FoxPro mostrará todos los nombres de archivo con extensiones que cumplan los criterios del comodín. Por ejemplo, si cFileExtensions es ?X?, se mostrarán todos los nombres de archivo con las extensiones .fxp,.exe, .txt, etc.

Observaciones

Utilice PUTFILE( ) para elegir un nombre de archivo existente o especificar un nombre de archivo nuevo. PUTFILE( ) devuelve el nombre de archivo con su ruta de acceso. Si no se introduce un nombre de archivo, PUTFILE( ) devuelve el nombre de archivo predeterminado (especificado por cFileName) y la extensión (especificada por cFileExtensions). Si elige Cancelar o presiona ESC, PUTFILE( ) devuelve una cadena vacía. Puede utilizar el nombre de archivo que devuelve PUTFILE( ) para nombrar un archivo y guardarlo en el disco.

Ejemplo

Este ejemplo crea un archivo de datos delimitado a partir de una tabla existente elegida por el usuario. GETFILE( ) se utiliza para buscar y abrir una tabla, y PUTFILE( ) se utiliza para devolver el nombre del archivo de destino.

gcTableName = GETFILE('DBF', 'Abrir tabla:')
USE (gcTableName)
gcDelimName = ALIAS( ) + '.DLM'
gcDelimFile = PUTFILE('Archivo delimitado:', gcDelimName, 'DLM')
IF EMPTY(gcDelimFile)  && Presionó Esc
CANCEL
ENDIF
COPY TO (gcDelimFile) DELIMITED   && Crea archivo delimitado
MODIFY FILE (gcDelimFile) NOEDIT

Vea también

FILE( ) | GETEXPR | GETFILE( ) | GETPICT( ) | LOCFILE( )


PV( ) (Función)

Devuelve el valor actual de una inversión.

PV(nPayment, nInterestRate, nTotalPayments)

Valores devueltos

Numérico

Parámetros

nPayment
Especifica el importe del pago periódico. nPayment se puede evaluar como un número negativo o positivo. PV( ) da por supuesto que los pagos se realizan al final de cada periodo.
nInterestRate
Especifica el tipo de interés periódico. Si el tipo de interés de una inversión es anual y los pagos se realizan mensualmente, divida el tipo de interés anual entre 12.
nTotalPayments
Especifica el número total de pagos.

Observaciones

PV( ) calcula el valor actual de una inversión basándose en una serie de pagos periódicos iguales, con un tipo de interés periódico constante.

Ejemplo

STORE 500 to gnPayment  && Periodic payments made monthly
STORE .075/12 TO gnInterest     && 7.5% annual interest rate
STORE 48 TO gnPeriods  && Four years (48 months)
CLEAR
? PV(gnPayment, gnInterest, gnPeriods)  && Displays 20679.19

Vea también

CALCULATE | FV( ) | PAYMENT( )


QUARTER( ) Function

Devuelve el trimestre del año en el que se produce una expresión de tipo Fecha o Datetime.

QUARTER(dExpression | tExpression [, nMonth])

Parámetros

dExpression
Especifica la expresión Fecha a la que se va a aplicar QUARTER( ) para obtener un valor.
tExpression
Especifica la expresión DateTime a la que se va a aplicar QUARTER( ) para obtener un valor.
nMonth
Especifica un mes inicial opcional para el trimestre que se examina. Puede utilizar este parámetro para especificar los trimestres del año fiscal en lugar de los del año natural.

Valor devuelto

Tipo de dato numérico. QUARTER( ) devuelve el trimestre del año en el que ocurre el dato y los valores pueden ser 0, 1, 2, 3, ó 4.

Nota QUARTER( ) devuelve 0 si se pasa en valor vacío en Fecha o DateTime, por ejemplo, QUARTER({//}).

Vea también

CMONTH( ) | DATE( ) | DATETIME( ) | DAY( ) | MONTH( ) | YEAR( )


RAISEEVENT() (Función)

Se puede usar RAISEEVENT() para lanzar, o disparar un evento desde un método personal. Aunque RAISEEVENT() se aplica principalmente a métodos personales, se puede usar para lanzar eventos nativos y otros métodos..

RAISEEVENT( oEventSource, cEvent [, eParm1...] )

Parámetros

oEventSource
Especifica el Origen del Evento, que debe ser un objeto válido de Visual FoxPro.
cEvent
Especifica el nombre, método o propiedad del Evento que se quiere lanzar.
eParm1...
Especifica uno o varios parámetros a pasar, si el método posee parámetros.

Valores devueltos

Dato tipo Lógico. RAISEEVENT() siempre devuelve Verdadero (.T.).

Observaciones

Visual FoxPro no lanza automáticamente eventos para métodos personales asociados a objetos usando BINDEVENT( ) si los métodos son llamados directamente. Por ejemplo, el siguiente código no lanza un Evento:

oForm.GetMyData(cData)

En cambio para lanzar un Evento para un método personal, se debe realizar la siguiente llamada:

RAISEEVENT( oForm, "GetMyData", cData )

Se puede cambiar también esto usando BINDEVENT( ) con el parámetro nFlags ajustado a 2 o 3.

El Evento que se quiere lanzar debe ser Public, no Hidden o Protected.

Si se usa RAISEEVENT() con una Propiedad, Visual FoxPro configura la propiedad con su propio valor. El siguiente ejemplo configura la Propiedad Caption para _SCREEN con el valor actual de Caption:

RAISEEVENT( _SCREEN, "Caption" )

Lanzar un Evento falla si se enlaza a un Evento, por ejemplo, usando BINDEVENT( ), que tiene parámetros pasados por referencia.

Visual FoxPro descarta llamadas recursivas RAISEEVENT() hacia un Evento desde dentro del mismo Evento lanzado.

Ejemplo

Activar un Formulario o utilizar Form1.Show lanza el Evento Activate del Formulario. Sin embargo, llamar a un Evento Activate directamente usando una llamada como Form1.Activate no desencadena el Evento Activate. El siguiente ejemplo muestra como se puede usar RAISEEVENT( ) para desencadenar el Evento Activate:

RAISEEVENT( Form1, "Activate" )

Ver también

Funciones | Enlace de Eventos para objetos de Visual FoxPro | BINDEVENT( ) (Función) | UNBINDEVENTS( ) (Función) | Función AEVENTS( )

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


RAND( ) (Función)

Devuelve un número aleatorio entre 0 y 1.

RAND([nSeedValue])

Valores devueltos

Numérico

Parámetros

nSeedValue
Especifica el valor Seed que determina la secuencia de valores que devuelve RAND( ).

RAND( ) devuelve la misma secuencia de números aleatorios si utiliza el mismo valor Seed para nSeedValue la primera vez que ejecuta la función RAND( ), seguida de llamadas posteriores a la función RAND( ) sin nSeedValue.

Si nSeedValue es negativo la primera vez que ejecuta RAND( ), se usará un valor Seed a partir del reloj del sistema. Para obtener la serie más aleatoria de números, utilice inicialmente RAND( ) con un argumento negativo y después, ejecute RAND( ) sin ningún argumento.

Si omite nSeedValue, RAND( ) utilizará de forma predeterminada el valor Seed 100.001.

Ejemplo

El ejemplo siguiente usa RAND( ) para crear una tabla con 10 registros que contienen valores aleatorios y después, usa MIN( ) y MAX( ) para mostrar los valores máximo y mínimo de la tabla.

En el segundo ejemplo, a continuación, se muestra un número aleatorio que se encuentra entre dos valores, 1 y 10.

CLOSE DATABASES
CREATE TABLE Random (cValue N(3))
FOR nItem = 1 TO 10  && Append 10 records,
APPEND BLANK
REPLACE cValue WITH 1 + 100 * RAND( )  && Insert random values
ENDFOR
CLEAR
LIST  && Display the values
gnMaximum = 1  && Initialize minimum value
gnMinimum = 100  && Initialize maximum value
SCAN
gnMinimum = MIN(gnMinimum, cValue)
gnMaximum = MAX(gnMaximum, cValue)
ENDSCAN
? 'The minimum value is: ', gnMinimum  && Display minimum value
? 'The maximum value is: ', gnMaximum  && Display maximum value
CLEAR
gnLower = 1
gnUpper = 10
? INT((gnUpper - gnLower + 1) * RAND( ) + gnLower)

Vea también

EXP( ) | PI( ) | MIN( ) | MAX( )


RAT( ) (Función)

Devuelve la posición numérica de la última aparición (más a la derecha) de una cadena de caracteres dentro de otra cadena de caracteres.

RAT(cSearchExpression, cExpressionSearched [, nOccurrence])

Valores devueltos

Numérico

Parámetros

cSearchExpression
Especifica la expresión de caracteres que RAT( ) busca en cExpressionSearched. La expresión de caracteres puede hacer referencia a un campo memo de cualquier tamaño.
cExpressionSearched
Especifica la expresión de caracteres en la que busca RAT( ). La expresión de caracteres puede hacer referencia a un campo memo de cualquier tamaño.
nOccurrence
Especifica qué aparición, de derecha a izquierda, de cSearchExpression busca RAT( ) en cExpressionSearched. De forma predeterminada, RAT( ) busca la última vez que aparece cSearchExpression (nOccurrence = 1). Si nOccurrence es 2, RAT( ) buscará la penúltima aparición y así sucesivamente.

Observaciones

RAT( ), que es la función inversa de AT( ), busca en la expresión de caracteres cExpressionSearched, de derecha a izquierda, la última aparición de la cadena especificada en cSearchExpression.

RAT( ) devuelve un entero que indica la posición del primer carácter de cSearchExpression en cExpressionSearched. RAT( ) devuelve 0 si no se encuentra cSearchExpression en cExpressionSearched, o si nOccurrence es mayor que el número de veces que cSearchExpression aparece en cExpressionSearched.

La búsqueda realizada por RAT( ) distingue entre mayúsculas y minúsculas.

Ejemplo

STORE 'abracadabra' TO string
STORE 'a' TO find_str
CLEAR
? RAT(find_str,string)  && Displays 11
? RAT(find_str,string,3)  && Displays 6

Vea también

AT( ) | AT_C( ) | ATC( ) | ATCLINE( ) | ATLINE( ) | LEFT( ) | RATLINE( ) | RIGHT( ) | SUBSTR( ) | ATCC( ) | LEFTC( ) | RIGHTC( ) | SUBSTRC( ) | $ (Operador) | OCCURS( ) | INLIST( )


RATC( ) (Función)

Devuelve la posición numérica de la última aparición de una expresión de caracteres o de un campo memo dentro de otra expresión de caracteres o campo memo.

RATC(cSearchExpression, cExpressionSearched [, nOccurrence])

Valores devueltos

Numérico

Parámetros

cSearchExpression
Especifica la expresión de caracteres que RATC( ) busca en cExpressionSearched.
cExpressionSearched
Especifica la expresión de caracteres que RATC( ) examina. Las expresiones de caracteres cSearchExpression y cExpressionSearched pueden ser campos memo de cualquier tamaño.
nOccurrence
Especifica qué aparición, desde la derecha hacia la izquierda, de cSearchExpression buscará RATC( ) en cExpressionSearched. De forma predeterminada, RATC( ) buscará la última aparición de cSearchExpression (nOccurrence es igual a 1). Si nOccurrence es 2, RATC( ) buscará la penúltima aparición y así sucesivamente.

Observaciones

RATC( ) está diseñado para expresiones que contengan caracteres de dos bytes. Si la expresión sólo contiene caracteres de un byte, RATC( ) será equivalente a RAT( ).

RATC( ) devuelve la posición numérica de la última aparición de una expresión de caracteres o campo memo, dentro de otra expresión de caracteres o campo memo. Las expresiones de caracteres o campos memo pueden contener cualquier combinación de caracteres de uno y dos bytes.

RATC( ) es la función opuesta a AT_C( ): busca de derecha a izquierda.

RATC( ) devuelve un número entero que indica la posición del primer carácter de cSearchExpression en cExpressionSearched. RATC( ) devuelve 0 si no se encuentra cSearchExpression en cExpressionSearched o si nOccurrence es mayor que el número de veces que aparece cSearchExpression en cExpressionSearched.

La búsqueda realizada por RATC( ) distingue entre mayúsculas y minúsculas.

Esta función es útil para manipular juegos de caracteres de dos bytes para idiomas como Hiragana y Katakana.

Vea también

AT_C( ) | LEFTC( ) | RAT( ) | RIGHTC( ) | SUBSTRC( )


RATLINE( ) (Función)

Devuelve el número de línea de la última aparición de una expresión de caracteres dentro de otra expresión de caracteres o un campo memo, contando a partir de la última línea.

RATLINE(cSearchExpression, cExpressionSearched)

Valores devueltos

Numérico

Parámetros

cSearchExpression
Especifica la expresión de caracteres que RATLINE( ) busca en cExpressionSearched.
cExpressionSearched
Especifica la expresión de caracteres en la que busca RATLINE( ). Las expresiones de caracteres cSearchExpression y cExpressionSearched pueden ser campos memo de cualquier tamaño.

Utilice MLINE( ) para devolver la línea que contiene cSearchExpression.

Sugerencia RATLINE( ) es una forma cómoda de realizar búsquedas en campos memo.

Observaciones

RATLINE( ), que es la función inversa de ATLINE( ), busca en una expresión de caracteres cExpressionSearched, a partir del último carácter de la misma, la aparición de cSearchExpression.

Si la búsqueda tiene éxito, RATLINE( ) devuelve el número de línea en la que se produce la coincidencia. Si la búsqueda fracasa, RATLINE( ) devuelve 0.

La búsqueda realizada por RATLINE( ) distingue entre mayúsculas y minúsculas.

Precaución El número de línea devuelto por RATLINE( ) está determinado por el valor de SET MEMOWIDTH, aunque cExpressionSearched no sea un campo memo. Para obtener más información, vea SET MEMOWIDTH.

Ejemplo

En el ejemplo siguiente, RATLINE( ) devuelve el número de la última línea del campo memo notes que contenga la palabra “graduated”. MLINE( ) utiliza este valor para devolver el contenido de la línea.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE employee  && Opens Employee table
STORE 'graduated' TO gcString
STORE MLINE(notes, RATLINE(gcString, notes)) TO gnFileLine
? gnFileLine

Vea también

AT( ) | AT_C( ) | ATC( ) | ATCLINE( ) | ATLINE( ) | LEFT( ) | RAT( ) | RIGHT( ) | SUBSTR( ) | ATCC( ) | LEFTC( ) | MLINE( ) | RIGHTC( ) | SUBSTRC( ) | $ (Operador) | OCCURS( ) | INLIST( )


RDLEVEL( ) (Función)

Se incluye por compatibilidad con versiones anteriores. Utilice el Diseñador de formularios en lugar de READ.


READKEY( ) (Función)

Se incluye por compatibilidad con versiones anteriores de READ. Utilice el Diseñador de formularios en lugar de READ.


RECCOUNT( ) (Función)

Devuelve el número de registros de la tabla actual o especificada.

RECCOUNT([nWorkArea | cTableAlias])

Valores devueltos

Numérico

Parámetros

nWorkArea
Especifica el número del área de trabajo para una tabla abierta en otra área de trabajo.

Si no hay ninguna tabla abierta en el área de trabajo especificada, RECCOUNT( ) devolverá cero.

cTableAlias
Especifica el alias para una tabla abierta en otra área de trabajo.

Observaciones

El valor devuelto por RECCOUNT( ) no se ve afectado por SET DELETED y SET FILTER.

RECCOUNT( ) sin los argumentos opcionales nWorkArea o cTableAlias devuelve el número de registros de la tabla del área de trabajo seleccionada actualmente.

Ejemplo

En el ejemplo siguiente, Microsoft Visual FoxPro compara el espacio de disco disponible con la cantidad necesaria para ordenar customer.

*** Check DISKSPACE before a SORT ***
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer  && Opens Customer table
*** Get size of table header ***
gnTableHead = HEADER( )
*** Calculate size of table ***
gnFileSize = gnTableHead + (RECSIZE( ) * RECCOUNT( ) + 1)
IF DISKSPACE( ) > (gnFileSize * 3)
WAIT WINDOW 'Sufficient diskspace to sort.'
ELSE
WAIT WINDOW 'Insufficient diskspace. Sort cannot be done.'
ENDIF

Vea también

RECNO( ) | RECSIZE( ) | SET DELETED | SET FILTER


RECNO( ) (Función)

Devuelve el número del registro actual de la tabla actual o la especificada.

RECNO([nWorkArea | cTableAlias])

Valores devueltos

Numérico

Parámetros

nWorkArea
Especifica el número del área de trabajo para una tabla abierta en otra área de trabajo. Si no está abierta ninguna tabla en el área de trabajo que especifica, RECNO( ) devolverá cero.
cTableAlias
Especifica el alias para una tabla abierta en otra área de trabajo.

Observaciones

El registro actual es el registro en el cual se encuentra el puntero de registro.

RECNO( ) devuelve números negativos para registros anexados en un búfer de tablas.

RECNO( ) devuelve un valor que es el número de registros de la tabla más uno si el puntero de registro se encuentra mas allá del último registro de la misma. RECNO( ) devuelve 1 si el puntero de registro se encuentra antes del primer registro de la tabla. Si la tabla no tiene registros, EOF( ) siempre devolverá verdadero (.T.).

Ejecutar RECNO( ) sin los argumentos opcionales nWorkArea o cTableAlias devuelve el número de registro actual de la tabla situada en el área de trabajo seleccionada actualmente.

Si ha ejecutado SEEK sin éxito en una tabla indizada, puede especificar 0 para que nWorkArea utilice la lógica de “búsqueda cercana” para devolver el número del registro más similar. RECNO(0) devuelve 0 si no puede encontrarse ninguna coincidencia. Visual FoxPro generará un mensaje de error si ejecuta GO RECNO(0) y no se encuentra ninguna coincidencia.

Ejemplo

El ejemplo siguiente busca en la tabla customer un nombre de organización y, si no lo encuentra, usa RECNO(0) para devolver el nombre de organización más similar.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer  && Opens Customer table
SET ORDER TO company
SEEK 'Ernst'
IF FOUND( )
DISPLAY company, contact
ELSE
GOTO RECNO(0)
CLEAR
? 'Closest matching company is ' + company
? 'Record number: ' + ALLTRIM(STR(RECNO( )))
ENDIF

Vea también

GO|GOTO | RECCOUNT( ) | RECSIZE( ) | SEEK | SKIP


RECSIZE( ) (Función)

Devuelve el tamaño (ancho) del registro de una tabla.

RECSIZE([nWorkArea | cTableAlias])

Valores devueltos

Numérico

Parámetros

nWorkArea
Especifica el número del área de trabajo para una tabla abierta en otra área de trabajo. RECSIZE( ) devuelve cero si no hay ninguna tabla abierta en el área de trabajo especificada.
cTableAlias
Especifica el alias para una tabla abierta en otra área de trabajo.

Observaciones

RECSIZE( ) ejecutado sin los argumentos opcionales nWorkArea o cTableAlias devuelve el tamaño de registro de la tabla del área de trabajo seleccionada actualmente.

Ejemplo

En el ejemplo siguiente, Microsoft Visual FoxPro compara el espacio de disco disponible con la cantidad necesaria para ordenar customer.

*** Check DISKSPACE before a SORT ***
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer  && Opens Customer table
*** Get size of table header ***
gnTableHead = HEADER( )
*** Calculate size of table ***
gnFileSize = gnTableHead + (RECSIZE( ) * RECCOUNT( ) + 1)
IF DISKSPACE( ) > (gnFileSize * 3)
WAIT WINDOW 'Sufficient diskspace to sort.'
ELSE
WAIT WINDOW 'Insufficient diskspace. Sort cannot be done.'
ENDIF

Vea también

RECCOUNT( ) | FSIZE( ) | HEADER( )


REFRESH( ) (Función)

Actualiza los datos de una vista SQL actualizable.

REFRESH([nRecords [, nRecordOffset]] [, cTableAlias | nWorkArea])

Valores devueltos

Numérico

Parámetros

nRecords
Especifica el número de registros que se van a actualizar. Si nRecords es 1 o se omite nRecords, sólo se actualizará el registro actual. Si nRecords es 0, no se actualizará ningún registro.
nRecordOffset
Especifica el número de registros antes del registro actual en el que comienza la actualización. Por ejemplo, si el registro actual es el 10 y nRecordOffset es 4, la actualización comenzará con el registro 6. Si nRecordOffset es 0 o si omite nRecordOffset, sólo se actualizará el registro actual.
cTableAlias
Especifica el alias de la vista SQL remota en la que se actualizan los registros.
nWorkArea
Especifica el área de trabajo de la tabla o el cursor en el que se actualizan los registros. Si omite nWorkArea y cTableAlias, los registros se actualizarán en la vista SQL remota del área de trabajo seleccionada actualmente.

Observaciones

REFRESH( ) devuelve el número de registros que se van a actualizar.

Los registros se actualizan con datos de las tablas a partir de las cuales se crea la vista SQL. Los registros se actualizan en la vista SQL abierta en el área de trabajo seleccionada actualmente.

REFRESH( ) no puede actualizar registros bloqueados o almacenados en búfer, y los registros deben tener claves principales únicas. Si un registro de una tabla no tiene un valor de clave principal, el registro correspondiente de la vista SQL se marcará para eliminación.

Sugerencia Una Llamada a la Función REFRESH( ) puede tener consecuencias significativas en el rendimiento, pues la función vuelve a ejecutar la consulta en la que está basada la vista. Por lo tanto, recurra a esta función sólo cuando sea necesario.

Vea también

Crear Vistas SQL | CURSORGETPROP( ) | CURSORSETPROP( )


RELATION( ) (Función)

Devuelve una expresión relacional especificada de una tabla abierta en un área de trabajo determinada.

RELATION(nRelationNumber [, nWorkArea | cTableAlias])

Valores devueltos

Carácter

Parámetros

nRelationNumber
Especifica que relación se devuelve. Por ejemplo, si nRelationNumber es 3, RELATION( ) devolverá la expresión relacional de la tercera relación creada.
nWorkArea
Especifica el área de trabajo de una tabla abierta en otra área de trabajo distinta. Si no está abierta ninguna tabla en el área de trabajo que especifique, RELATION( ) devuelve una cadena vacía.
cTableAlias
Especifica el alias para una tabla abierta en otra área de trabajo.

Observaciones

RELATION( ) devuelve de manera predeterminada expresiones relacionales para la tabla del área de trabajo seleccionada actualmente. Si no existe ninguna relación, devuelve una cadena vacía. Para obtener información adicional acerca de cómo crear relaciones entre tablas, vea SET RELATION.

DISPLAY STATUS y LIST STATUS muestran expresiones relacionales. Ejecute MODIFY DATABASE para mostrar el Diseñador de bases de datos, lo que le permite ver y modificar relaciones entre las tablas de la base de datos abierta actualmente. Ejecute SET para mostrar la ventana Sesión de datos, que le permite ver y modificar relaciones entre tablas libres.

Ejemplo

En el ejemplo siguiente, se abren las tablas y se establecen los órdenes, luego se muestran las relaciones mediante RELATION( ).

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer IN 0 ORDER cust_id  && Opens Customer table
USE employee IN 0 ORDER emp_id  && Opens Customer table
USE orders IN  0 ORDER order_id  && Opens Customer table
SELECT orders
SET RELATION TO emp_id INTO employee
SET RELATION TO cust_id INTO customer ADDITIVE
? RELATION(1)  && Displays CUST_ID
? RELATION(2)  && Displays EMP_ID
? RELATION(3)  && Displays empty string

Vea también

DISPLAY STATUS | MODIFY DATABASE | LIST STATUS | SET | SET RELATION | SET RELATION OFF | TARGET( )


REMOVEPROPERTY( ) (Función)

Libera una propiedad de un objeto en tiempo de ejecución.

REMOVEPROPERTY(oObjectName, cPropertyName)

Parámetros

oObjectName
Especifica el nombre del objeto del que se desea liberar la propiedad.
cPropertyName
Especifica el nombre de la propiedad existente, que se desea liberar del objeto. Sólo se puede especificar un nombre de propiedad, no un nombre de evento o método.

Valores devueltos

Tipo de dato Lógico. REMOVEPROPERTY( ) devuelve Verdadero (.T.) si la propiedad ha sido liberada exitosamente; en caso contrario, devuelve Falso (.F.).

Observaciones

Se puede utilizar REMOVEPROPERTY( ) para liberar propiedades; pero no métodos o eventos. Puede utilizar REMOVEPROPERTY( ) con las instancias de objeto creadas desde clases de Visual FoxPro, clases COM, comando SCATTER...NAME, _VFP y _SCREEN.

Las propiedades tienen que tener visibilidad pública, no ocultas o protegidas y haber sido añadidas a una instancia de un objeto, típicamente con la función ADDPROPERTY( ), el método AddProperty o el comando SCATTER...NAME, para que puedan ser liberadas utilizando REMOVEPROPERTY( ).

No puede eliminar una propiedad si pertenece a la definición de clases utilizada para crear la instancia del objeto.

La función REMOVEPROPERTY( ) no libera propiedades que son elementos específicos de matrices. Para liberar una matriz, proporcionar sólo el nombre de la misma.

Ejemplo 1

El siguiente ejemplo añade una nueva propiedad a un objeto creado con el comando SCATTER y lo libera.

USE customers
SCATTER NAME oCust
ADDPROPERTY(oCust,"MyProperty")
REMOVEPROPERTY(oCust,"MyProperty")

Ejemplo 2

El siguiente ejemplo crea una propiedad con una matriz para el objeto, oMyForm, muestra su contenido, 1 y "Two", y luego la libera.

oMyForm = CREATEOBJECT('Form')
ADDPROPERTY(oMyForm, 'MyArray(2)', 1)
oMyForm.MyArray(2) = "Two"
CLEAR
? oMyForm.MyArray(1)
? oMyForm.MyArray(2)
REMOVEPROPERTY(oMyForm, 'MyArray')
RELEASE oMyForm
CLEAR

Vea también

Funciones | ADDPROPERTY( ) (Función)| AddProperty (Método)


REPLICATE( ) (Función)

Devuelve una cadena de caracteres que contiene una expresión de caracteres especificada que se repite un determinado número de veces.

REPLICATE(cExpression, nTimes)

Valores devueltos

Character

Parámetros

cExpression
Especifica la expresión de caracteres que se replica.
nTimes
Especifica el número de veces que se replica la expresión de caracteres.

Observaciones

En Visual FoxPro, la longitud máxima de la cadena de caracteres resultante está limitada por la cantidad de memoria disponible.

Ejemplo

CLEAR
? REPLICATE('HELLO ',4) && Displays HELLO HELLO HELLO HELLO

Vea también

SPACE( ) | Crear expresiones de tipo Carácter CLEAR (Comandos)


REQUERY( ) (Función)

Vuelve a recuperar datos para una vista SQL.

REQUERY([nWorkArea | cTableAlias])

Parámetros

nWorkArea
Especifica el área de trabajo en la que se abre la vista SQL.
cTableAlias
Especifica el alias de la vista SQL remota. Si omite nWorkArea y cTableAlias, se recuperarán los datos de la vista SQL abierta en el área de trabajo seleccionada actualmente.

Valores devueltos

Numérico

Observaciones

REQUERY( ) devuelve 1 si se recuperan los datos; de lo contrario, devuelve 0.

REQUERY( ) se usa generalmente para actualizar una vista SQL cuando han cambiado los datos del origen de datos.

Vea también

CREATE SQL VIEW | SELECT - SQL | USE | CREATE QUERY (Comando)


RGB( ) (Función)

Devuelve un único valor de color a partir de un conjunto de componentes de color rojo, verde y azul.

RGB(nRedValue, nGreenValue, nBlueValue)

Parámetros

nRedValue
Especifica la intensidad del componente de color rojo. nRedValue puede ir de 0 a 255. 0 es la intensidad mínima de color; 255 es la intensidad máxima.
nGreenValue
Especifica la intensidad del componente de color verde. nGreenValue puede ir de 0 a 255.
nBlueValue
Especifica la intensidad del componente de color azul. nBlueValue puede ir de 0 a 255.

Observaciones

El valor devuelto por RGB( ) puede emplearse para establecer propiedades de color como BackColor y ForeColor.

Ejemplo

El ejemplo siguiente usa RGB( ) para cambiar a azul el color de fondo de un Form.

goMyForm = CREATEOBJECT('FORM')  && Create a form
goMyForm.Show  && Display the form
WAIT WINDOW 'Press a key to change the form color'
goMyForm.BackColor=RGB(0,0,255)  && Change the form background color
WAIT WINDOW 'Press a key to release the form'
RELEASE goMyForm  && Release the form from memory

Vea también

GETCOLOR( ) | RGBSCHEME( ) | BackColor, ForeColor (Propiedades)


RGBSCHEME( ) (Función)

Devuelve un par de colores RGB o una lista de pares de colores RGB desde un esquema de colores especificado.

RGBSCHEME(nColorSchemeNumber [, nColorPairPosition])

Valores devueltos

Carácter (Character)

Parámetros

nColorSchemeNumber
Especifica el número del esquema de colores para el que desea una lista completa de los colores RGB. RGBSCHEME( ) devuelve 10 pares de colores RGB.
nColorPairPosition
Devuelve un solo par de colores RGB de un esquema de colores. nColorPairPosition especifica la posición del par de colores RGB en el esquema de colores. Por ejemplo, si nColorPairPosition es 4, se devuelve el cuarto par de colores RGB.

Observaciones

Use SCHEME( ) para devolver un par de colores tradicional o una lista de pares de colores de un esquema de colores. Los pares de colores RGB utilizan valores numéricos para especificar los colores. Los pares de colores tradicionales utilizan letras para especificar los colores.

Ejemplo

El ejemplo siguiente muestra el tercer par de colores RGB a partir del esquema de colores número 4.

CLEAR
? RGBSCHEME(4,3)

Vea también

RGB( ) | SCHEME( )


RIGHT( ) (Función)

Devuelve el número especificado de caracteres del extremo derecho de una cadena de caracteres.

RIGHT(cExpression, nCharacters)

Valores devueltos

Character

Parámetros

cExpression
Especifica la expresión de caracteres de la que se devuelven los caracteres del extremo derecho.
nCharacters
Especifica el número de caracteres devueltos desde la expresión de caracteres. RIGHT( ) devuelve toda la expresión de caracteres si nCharacters es mayor que la longitud de cExpression. RIGHT( ) devuelve una cadena vacía si nCharacters es negativo o 0.

Observaciones

Los caracteres se devuelven comenzando por el último carácter de la derecha y continuando durante el número de caracteres especificado.

Ejemplo

CLEAR
? RIGHT('Redmond, WA', 2)  && Displays WA

Vea también

AT( ) | AT_C( ) | ATC( ) | ATCC( ) | ATCLINE( ) | ATLINE( ) | LEFT( ) | LEFTC( ) (Función) | LTRIM( ) | RAT( ) | RATLINE( ) | RTRIM( ) | SUBSTR( ) | RIGHTC( ) | SUBSTRC( ) | TRIM( )


RIGHTC( ) (Función)

Devuelve el número especificado de caracteres del extremo derecho de una cadena de caracteres.

RIGHTC(cExpression, nCharacters)

Valores devueltos

Character

Parámetros

cExpression
Especifica la expresión de caracteres de la que se devuelven los caracteres del extremo derecho.
nCharacters
Especifica el número de caracteres devueltos desde la expresión de caracteres. RIGHTC( ) devuelve toda la expresión de caracteres si nCharacters supera la longitud de cExpression. RIGHTC( ) devuelve una cadena vacía si nCharacters es negativo o 0.

Observaciones

RIGHTC( ) se diseñó para expresiones que contienen caracteres de dos bytes. Si la expresión sólo contiene caracteres de un byte, RIGHTC( ) es equivalente a RIGHT( ).

Los caracteres se devuelven empezando por el último carácter de la derecha y continuando durante nCharacters.

Esta función es útil para manipular juegos de caracteres de dos bytes para idiomas como Hiragana y Katakana.

Vea también

AT( ) | AT_C( ) | ATC( ) | ATCC( ) | ATCLINE( ) | ATLINE( ) | LEFT( ) | LEFTC( ) (Función) | RAT( ) | RATLINE( ) | SUBSTR( ) | RIGHT( ) | SUBSTRC( )


RLOCK( ) (Función)

Intenta bloquear uno o varios registros de una tabla.

RLOCK([nWorkArea | cTableAlias] | [cRecordNumberList, nWorkArea
| cTableAlias])

Valores devueltos

Lógico (Logical)

Parámetros

nWorkArea | cTableAlias
Especifica el número del área de trabajo o el alias de tabla para una tabla abierta en otra área de trabajo. Si no especifica un área de trabajo o alias, RLOCK( ) intentará bloquear el registro actual de la tabla del área de trabajo actualmente seleccionada.
cRecordNumberList
Especifica que RLOCK( ) intenta bloquear varios registros. La expresión de carácteres cRecordNumberList especifica uno o varios números de registro, separados por comas, que RLOCK( ) intenta bloquear. Por ejemplo, para intentar bloqueos de registro en los primeros 4 registros de la tabla, cRecordNumberList contendrá 1, 2, 3, 4.

Para bloquear varios registros, es necesario activar SET MULTILOCKS e incluir el número del área de trabajo (nWorkArea) o el alias (cTableAlias) de la tabla en la que intenta bloquear los registros.

También puede bloquear varios registros moviendo el puntero de registro al registro que desea bloquear, ejecutando RLOCK( ) o LOCK( ) y repitiendo luego este proceso para otros registros.

En Visual FoxPro, puede especificar 0 como número de registro. Al especificar 0, el sistema le permite intentar bloquear el encabezado de la tabla.

Precaución Debe mantener bloqueado el encabezado de la tabla el menor tiempo posible, ya que los demás usuarios no pueden agregar registros a la tabla cuando el encabezado está bloqueado.

Libere el bloqueo del encabezado de la tabla con UNLOCK RECORD 0, UNLOCK o UNLOCK ALL.

Si todos los registros especificados en cRecordNumberList logran bloquearse, RLOCK( ) devolverá verdadero (.T.). Si uno o más de los registros especificados en cRecordNumberList no puede bloquearse, RLOCK( ) devuelve falso (.F.) y no se bloqueará ningún registro. En cualquier caso, los bloqueos de registro existentes permanecerán en vigor. El bloqueo de varios registros es un proceso aditivo: si coloca bloqueos de registro adicionales no liberará los bloqueos de registro existentes.

Desde una perspectiva de rendimiento, es siempre más rápido bloquear la tabla completa que bloquear un número de registros, aunque sea pequeño.

Observaciones

RLOCK( ) es idéntico a LOCK( ).

Si se logra establecer el bloqueo o los bloqueos, RLOCK( ) devuelve verdadero (.T.). Los registros bloqueados están disponibles para acceso tanto de lectura como de escritura para el usuario que efectuó los bloqueos, y para acceso de sólo lectura para todos los demás usuarios de la red.

La ejecución de RLOCK( ) no garantiza que consigan efectuarse los bloqueos que se intenten. No podrá efectuar un bloqueo de un registro o una tabla que ya estén bloqueados por otro usuario. Si no pueden efectuarse los bloqueos por alguna razón, RLOCK( ) devolverá falso (.F.).

De forma predeterminada, RLOCK( ) intenta bloquear el registro una vez. Utilice SET REPROCESS para reintentar automáticamente un bloqueo de registro si el primer intento no tiene éxito. SET REPROCESS controla el número de intentos de bloqueo o el tiempo durante el cual se seguirá intentando el bloqueo si fracasa el primer intento. Para obtener más información acerca de SET REPROCESS y el bloqueo de tablas, vea SET REPROCESS.

SET MULTILOCKS determina si puede bloquear varios registros de una tabla. Si MULTILOCKS está en OFF (el valor predeterminado), únicamente puede bloquear un registro de una tabla. Si MULTILOCKS está ON, puede bloquear varios registros de una tabla. Para obtener más información, vea SET MULTILOCKS.

Sólo puede desbloquear un registro de una tabla el usuario que lo bloqueó. Los bloqueos de registro pueden liberarse ejecutando UNLOCK, cerrando la tabla o saliendo de Visual FoxPro.

UNLOCK puede utilizarse para liberar los bloqueos de registro del área de trabajo actual, de un área de trabajo concreta o de todas las áreas de trabajo. Para obtener más información, vea UNLOCK.

Si cambia SET MULTILOCKS de ON a OFF o de OFF a ON, ejecutará implícitamente UNLOCK ALL. Se liberarán todos los bloqueos de registros en todas las áreas de trabajo.

Las tablas pueden cerrase con USE, CLEAR ALL o CLOSE DATABASES.

Para obtener más información acerca del bloqueo de registros y archivos, así como del uso compartido de tablas en una red, vea Programar para acceso compartido.

Ejemplo

El ejemplo siguiente bloquea y desbloquea los cuatro primeros registros de las tablas customer y employee.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
SET REPROCESS TO 3 AUTOMATIC
STORE '1,2,3,4' TO gcRecList
gcOldExc = SET('EXCLUSIVE')
SET EXCLUSIVE OFF
SELECT 0
USE employee  && Open Employee table
SELECT 0
USE customer  && Open Customer table
? LOCK('1,2,3,4', 'customer')  && Lock 1st 4 records in customer
? RLOCK(gcRecList, 'employee')  && Lock 1st 4 records in employee
UNLOCK IN customer
UNLOCK IN employee
SET EXCLUSIVE &gcOldExc

Vea también

CLEAR | CLOSE | FLOCK( ) | LOCK( ) | SET MULTILOCKS | SET RELATION | SET REPROCESS | UNLOCK | USE | ISFLOCKED( ) (Función) | ISRLOCKED( ) (Función)


ROUND( ) (Función)

Devuelve una expresión numérica redondeada a un número especificado de cifras decimales.

ROUND(nExpression, nDecimalPlaces)

Valores devueltos

Numérico (Numérico)

Parámetros

nExpression
Especifica la expresión numérica cuyo valor desea redondear.
nDecimalPlaces
Especifica el número de cifras decimales a los que se redondea nExpression.

Si nDecimalPlaces es negativo, ROUND( ) devuelve un número entero que contiene nDecimalPlaces ceros a la izquierda del separador decimal. Por ejemplo, si nDecimalPlaces es –2, la primera y la segunda cifra a la izquierda del separador decimal del valor serán cero.

Observaciones

El valor devuelto por ROUND( ) tiene el mismo número de lugares decimales que nDecimalPlaces. ROUND( ) pasa por alto el número de cifras decimales especificado por SET DECIMALS.

Ejemplo

SET DECIMALS TO 4
SET FIXED ON     && Fix decimal display
CLEAR
? ROUND(1234.1962, 3) && Displays 1234.1960
? ROUND(1234.1962, 2) && Displays 1234.2000
? ROUND(1234.1962, 0) && Displays 1234.0000
? ROUND(1234.1962, -1)  && Displays 1230.0000
? ROUND(1234.1962, -2)  && Displays 1200.0000
? ROUND(1234.1962, -3)  && Displays 1000.0000
SET FIXED OFF  && Restore start up defaults
SET DECIMALS TO 2

Vea también

CEILING( ) | FLOOR( ) | INT( ) | SET DECIMALS | SET FIXED (Comando)


ROW( ) (Función)

Se incluye por compatibilidad con versiones anteriores. Use la propiedad CurrentY.


RTOD( ) (Función)

Convierte radianes en grados.

Puede utilizar RTOD( ) cuando trabaje con las funciones trigonométricas de Visual FoxPro COS( ), SIN( ) y TAN( ).

RTOD(nExpression)

Parámetros

nExpression
Especifica la expresión numérica que representa los radianes que RTOD( ) convierte en grados.

Valores devueltos

RTOD( ) convierte el valor (en radianes) de una expresión numérica a su valor equivalente en grados.

Observaciones

Utilice la función DTOR( ) para convertir grados en radianes.

Ejemplo

CLEAR
? RTOD(ACOS(0))  && Muestra 90.00
STORE -1 to gnArcAngle
? RTOD(ACOS(gnArcAngle))  && Muestra 180.00
? RTOD(ACOS(SQRT(2)/2)) && Muestra 45.00

Vea también

COS( ) (Función) | DTOR( ) (Función) | SIN( ) (Función) | TAN( ) (Función)


RTRIM( ) (Función)

Devuelve la expresión de caráacteres especificada con todos los espacios en blanco finales recortados.

RTRIM(cExpression)

Valores devueltos

Carácter (Character)

Parámetros

cExpression
Especifica la expresión de carácteres de la cual se deben recortar los espacios en blanco finales.

Observaciones

RTRIM( ) puede utilizarse para asegurarse de que se quitan los espacios en blanco de los datos introducidos por un usuario. La función RTRIM( ) es idéntica a TRIM( ).

Ejemplo

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer  && Opens Customer table
CLEAR
? 'The contact for '+ RTRIM(company) + ' is ' + contact

Vea también

ALLTRIM( ) (Función) | LTRIM( ) (Función) | TRIM( ) (Función)


SAVEPICTURE( ) (Función)

Crea un archivo de mapa de bits (.bmp) a partir de una referencia de un objeto Picture.

SAVEPICTURE(oObjectReference, cFileName)

Valores devueltos

Lógico

Parámetros

oObjectReference
Especifica una referencia de un objeto Picture a partir del cual SAVEPICTURE( ) crea un archivo de mapa de bits.
cFileName
Especifica el nombre del archivo de mapa de bits creado por SAVEPICTURE( ). Si cFileName incluye una ruta de acceso, se creará el archivo en el directorio especificado en la ruta. Si ya existe un archivo con el mismo nombre, se sobrescribirá sin previo aviso, aunque SET SAFETY esté en ON.

Observaciones

Generalmente, las referencias de objetos Picture se crean con LOADPICTURE( ). Sin embargo, algunas propiedades (como la propiedad PictureOpen para el control de esquema OLE) utilizan una referencia a un objeto Picture predeterminado que puede servir para crear un archivo de mapa de bits.

Vea también

LOADPICTURE( ) | SET SAFETY (Comando) | _ObjectReference( ) (Rutina de biblioteca API)


SCHEME( ) (Función)

Devuelve un par de colores o una lista de pares de colores de un esquema de colores especificado.

SCHEME(nSchemeNumber [, nColorPairNumber])

Valores devueltos

Caráct3er (Character)

Parámetros

nSchemeNumber
Especifica el número del esquema de colores del que desea obtener la lista de pares de colores completa. SCHEME( ) devolverá diez pares de colores.
nColorPairNumber
Especifica la posición de un par de colores en el esquema de colores y SCHEME( ) sólo devolverá este par de colores. Por ejemplo, si nColorPairNumber es 4, SCHEME( ) devolverá el cuarto par de colores del esquema de colores.

Ejemplo

El siguiente ejemplo devuelve el tercer par de colores del esquema de colores número 4:

? SCHEME(4,3)

Vea también

ColorScheme (Propiedad) | GETCOLOR( ) (Función)


SCOLS( ) Función

Devuelve el número de columnas disponibles en la ventana principal de Microsoft Visual FoxPro.

SCOLS( )

Valores devueltos

Numérico

Observaciones

El valor que devuelve SCOLS( ) depende del modo de presentación actual. Los modos de presentación se pueden modificar con SET DISPLAY.

Vea también

COL( ) | ROW( ) | SET DISPLAY | SROWS( ) | WCOLS( ) | WROWS( )


SEC( ) (Función)

Devuelve los segundos de una expresión DateTime.

SEC(tExpression)

Valores devueltos

Numérico

Parámetros

tExpression
Especifica la expresión DateTime de la que SEC( ) devuelve los segundos. Si tExpression sólo contiene una fecha y no una hora, Visual FoxPro agregará la hora predeterminada de medianoche (12:00:00 A.M.) a tExpression.

Ejemplo

El ejemplo siguiente muestra la parte de segundos de la hora actual y de una hora determinada.

CLEAR
? SEC(DATETIME( ))
? SEC({^1998-08-21 10:42:16am})  && Displays 16

Vea también

DATETIME( ) | HOUR( ) | MINUTE( ) | SET SECONDS


SECONDS( ) (Función)

Devuelve el número de segundos que han transcurrido desde la medianoche.

SECONDS( )

Valores devueltos

Numérico

Observaciones

SECONDS( ) devuelve un valor numérico en formato decimal, con una resolución de 1 milisegundo. Si ejecuta Windows NT 4.0 o una versión posterior, la resolución será de 10 milisegundos.

Ejemplo

CLEAR
? SECONDS( )
? SECONDS( )/(60 * 60)

Vea también

SYS(2) - Segundos desde medianoche | TIME( ) | Seconds (Propiedad)


SEEK( ) (Función)

Busca en una tabla indizada la primera aparición de un registro cuya clave de índice coincida con una expresión especificada. SEEK( ) devuelve un valor lógico que indica si la búsqueda ha tenido éxito.

SEEK(eExpression [, nWorkArea | cTableAlias
[, nIndexNumber | cIDXIndexFileName | cTagName]])

Valores devueltos

Logical

Parámetros

eExpression
Especifica la expresión clave de índice que desea que busque SEEK( ).
nWorkArea
Especifica el número de área de trabajo de la tabla en la que se buscará la clave de índice.
cTableAlias
Especifica el alias de la tabla en la que se realizará la búsqueda.

Si omite nWorkArea y cTableAlias, se realizará una búsqueda en la tabla del área de trabajo actualmente seleccionada.

nIndexNumber
Especifica el número del archivo de índice o la etiqueta utilizada para buscar la clave de índice. nIndexNumber se refiere a los archivos de índice tal y como aparecen en USE o SET INDEX. Los archivos .idx abiertos se numeran primero en el orden en que aparecen en USE o SET INDEX. Las etiquetas en el archivo estructural .cdx (si existe) son entonces numeradas en el orden en el que han sido creadas. Finalmente, las etiquetas de cualquier archivo independiente .cdx abierto se numeran en el orden en el que han sido creadas. Para más información sobre la numeración indizada, consulte SET ORDER.
cIDXIndexFileName
Especifica un archivo .idx que se utiliza para buscar la clave de índice.
cTagName
Especifica la etiqueta de un archivo .CDX que se utiliza para buscar la clave de índice. El nombre de etiqueta puede pertenecer a un archivo .cdx estructural o a cualquier archivo .cdx independiente abierto.
Nota El archivo .idx tiene prioridad si existen nombres de etiqueta y un archivo .idx duplicado.

Observaciones

Puede utilizar SEEK( ) en una tabla que tenga un orden de índice establecido; si no hay un orden de índice establecido, establezca el índice controlador con el tercer parámetro, nIndexNumber, cIDXIndexFileName o cTagName. La coincidencia debe ser exacta a menos que SET EXACT esté en OFF (desactivado).

Si se encuentra una coincidencia, SEEK( ) devolverá verdadero (.T.) y el puntero de registro se moverá al registro coincidente. Si no se encuentra ninguna coincidencia, SEEK( ) devolverá falso (.F.) y el puntero de registro se desplazará hasta el final del archivo. Ejecutar SEEK( ) equivale a ejecutar SEEK y FOUND( ) sucesivamente.

Si omite los argumentos nIndexNumber, IDXIndexFileName y cTagName, SEEK( ) utiliza el índice o la etiqueta de índice de control principal para buscar la clave de índice.

Ejemplo

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer ORDER cust_id  && Opens Customer table
? SEEK('CHOPS')  && Returns .T., record found

Vea también

EOF( ) | FOUND( ) | INDEXSEEK( ) | LOCATE | SEEK | SET ORDER


SELECT( ) (Función)

Devuelve el número del área de trabajo seleccionada actualmente o del área de trabajo no utilizada con el número más alto.

SELECT([ 0 | 1 | cTableAlias ])

Valores devueltos

Numérico

Parámetros

0
Especifica que SELECT( ) devolverá el número del área de trabajo actual.
1
Especifica que SELECT( ) devolverá el número del área de trabajo no utilizada con el número más alto.
cTableAlias
Especifica el alias de la tabla cuya área de trabajo devuelve SELECT( ).

Observaciones

SELECT( ) devuelve el número del área de trabajo actual si SET COMPATIBLE está desactivado. Si SET COMPATIBLE está activado, SELECT( ) devolverá el número del área de trabajo no utilizada con el número más alto.

Un área de trabajo puede seleccionarse (activarse) con SELECT.

Ejemplo

CLOSE DATABASES
SET COMPATIBLE ON
OPEN DATABASE (HOME(2) + 'data\testdata')
SELECT 0  && Unused work area
USE customer  && Opens Customer table
SELECT 0  && Unused work area
USE orders  && Opens Orders table
CLEAR
? SELECT( )  && Returns 3, lowest available work area

Vea también

ALIAS( ) | SELECT | SET COMPATIBLE


SET( ) (Función)

Devuelve el estado de varios comandos SET.

SET(cSETCommand [, 1 | cExpression | 2 | 3 | 4])

Parámetros

cSETCommand
Una expresión de caracteres que especifica el comando SET para el que desea devolver información. El valor actual del comando especificado se devuelve como una cadena de caracteres o números.
1 | cExpression | 2 | 3 | 4
Especifica que se devuelva información adicional acerca de un comando SET. 1 y cExpression son idénticos; cExpression puede ser cualquier expresión que se evalúa a un valor de tipo Carácter.
Note La inclusión de un argumento no devuelve información adicional para todos los comandos SET; sólo para aquellos que se muestran con 1, 2 ó 3 en la tabla siguiente.
Comando SET | Valor devuelto
ALTERNATE | ON u OFF
ALTERNATE, 1 | FileName
BELL, 1 | cWAVFileName
CARRY | ON or OFF
CENTURY | ON u OFF
CENTURY, 1 | nCentury
CENTURY, 2 | ROLLOVER nYear
CENTURY, 3 | Configuración del calendario regional del sistema
CLOCK | ON u OFF
CLOCK, 1 | nRow y nColumn
COMPATIBLE | ON u OFF
COMPATIBLE, 1 | PROMPT o NOPROMPT
COVERAGE, 1 | FileName
CURRENCY | LEFT o RIGHT
CURRENCY, 1 | cCurrencySymbol
DATE | AMERICAN, ANSI, BRITISH/FRENCH, GERMAN, ITALIAN, JAPAN, USA, MDY, DMY o YMD
DATE, 1 | Ordenación de fechas:0 – MDY1 – DMY2 – YMD
DELIMITERS | ON u OFF
DELIMITERS, 1 | cDelimiters
EVENTTRACKING | ON u OFF
EVENTTRACKING, 1 | FileName
FIELDS | ON u OFF
FIELDS, 1 | FieldName1, FieldName2, ...
FIELDS, 2 | LOCAL o GLOBAL
HELP | ON u OFF
HELP, 1 | cFileName
HELP, 2 | cCollectionURL
HELP, 3 | SYSTEM
KEY | eExpression2, eExpression3
KEY, 1 | eExpression2
KEY, 2 | eExpression3
MESSAGE | nRow
MESSAGE, 1 | cMessageText
MOUSE | ON u OFF
MOUSE, 1 | nSensitivity
NOTIFY | ON u OFF
NOTIFY, 1 | ON u OFF
PRINTER | ON u OFF
PRINTER, 1 | FileName o PortName
PRINTER, 2 | Nombre de la impresora predeterminada de Windows
PRINTER, 3 | Nombre de la impresora predeterminada de Visual FoxPro (se especifica en el cuadro de diálogo Imprimir o Configurar impresión de Visual FoxPro)
REFRESH | nSeconds1
REFRESH, 1 | nseconds2
REPROCESS | Configuración de la sesión actual
REPROCESS, 1 | Configuración de la sesión del sistema
RESOURCE | ON u OFF
RESOURCE, 1 | FileName
TALK | ON u OFF
TALK, 1 | WINDOW, NOWINDOW o WindowName
TEXTMERGE | ON u OFF
TEXTMERGE, 1 | cLeftDelimiter y cRightDelimiter
TEXTMERGE, 2 | cFileName
TEXTMERGE, 3 | SHOW/NOSHOW
TEXTMERGE, 4 | Evalúa la llamada de TEXT ... ENDTEXT y devuelve el nivel de anidamiento de TEXTMERGE.
TOPIC | cHelpTopicName | lExpression
TOPIC, 1 | NContextID

Valores devueltos

Dato tipo Carácter o Numérico. SET( ) devuelve el valor de un comando SET.

Observaciones

SET( ) reconoce la abreviatura de cuatro caracteres de todas las palabras clave SET de Visual FoxPro (con la excepción de HELPFILTER, que se puede abreviar con cinco caracteres). Por ejemplo, se puede usar STAT y PRIN para SET STATUS y SET PRINTER, respectivamente.

La función SET( ) es idéntica a SYS(2001).

SET("CENTURY", 3) pasa el valor de calendario 2 (Gregoriano (EE.UU.)) en una llamada a la API GetCalendarInfo( ) de Windows.

Ver también

DISPLAY STATUS | LIST | SET | SYS(2001) - Estado de comandos SET ...


SETFLDSTATE( ) (Función)

Asigna un valor de estado de campo o de eliminación a un campo o a un registro de una tabla o un cursor.

SETFLDSTATE(cFieldName | nFieldNumber, nFieldState [, cTableAlias
| nWorkArea])

Valores devueltos

Lógico

Parámetros

cFieldName | nFieldNumber
Especifica el nombre o el número del campo al que se asigna el estado de edición o eliminación. El número de campo nFieldNumber corresponde a la posición del campo en la tabla o estructura del cursor. DISPLAY STRUCTURE o FIELD( ) pueden emplearse para determinar el número de un campo.

Para establecer el estado de eliminación para el registro, incluya 0 como número de campo.

nFieldState
Especifica un valor para el estado de campo o de eliminación. La tabla siguiente muestra el valor de estado de campo o de eliminación y el estado de edición o eliminación correspondiente:
nFieldState | Estado de edición o eliminación
1 | No se ha editado el campo o no ha cambiado el estado de eliminación.
2 | Se ha editado el campo o ha cambiado el estado de eliminación.
3 | No se ha editado el campo de un registro anexado o no ha cambiado el estado de eliminación del registro anexado.
4 | Se ha editado el campo de un registro anexado o ha cambiado el estado de eliminación para el registro anexado.
cTableAlias
Especifica el alias del cursor o la tabla local en los que se ha asignado el estado de edición o eliminación.
nWorkArea
Especifica el área de trabajo del cursor o la tabla local en los que se ha asignado el estado de edición o eliminación. El valor de estado del campo o eliminación se asigna para la tabla o el cursor abiertos en el área de trabajo seleccionada actualmente si SETFLDSTATE( ) se ejecuta sin los argumentos opcionales cTableAlias o nWorkArea.

Observaciones

Visual FoxPro utiliza valores de estado de campo para determinar qué campos se actualizan en tablas o cursores. SETFLDSTATE( ) permite controlar qué campos intenta actualizar Visual FoxPro, independientemente de los campos que se hayan editado en el cursor o la tabla.

Ejemplo

El ejemplo siguiente muestra cómo puede utilizar SETFLDSTATE( ) para cambiar el estado del campo. MULTILOCKS se establece en ON, un requisito para el almacenamiento de tablas en búfer. Se abre la tabla customer de la base de datos testdata y se utiliza CURSORSETPROP( ) para establecer el modo de almacenamiento optimista de tablas en búfer (5).

Se ejecuta GETFLDSTATE( ) para mostrar un valor (1) correspondiente al estado no modificado del campo cust_id antes de modificarlo. Se modifica el campo cust_id con REPLACE y se vuelve a ejecutar GETFLDSTATE( ) para mostrar un valor (2) correspondiente al estado modificado del campo cust_id.

SETFLDSTATE( ) se utiliza para volver a cambiar el estado del campo cust_id a 1 (no modificado). GETFLDSTATE( ) vuelve a ejecutarse y muestra 1, que corresponde al estado del campo cust_id asignado por SETFLDSTATE( ). Se utiliza TABLEREVERT( ) para devolver la tabla a su estado original.

CLOSE DATABASES
SET MULTILOCKS ON  && Debe ser ON para buffering de la tabla
SET PATH TO (HOME(2) + 'Data\')     && Establece ruta para base de datos
OPEN DATABASE testdata  && Abre base de datos testdata
USE Customer     && Abre tabla customer
= CURSORSETPROP('Buffering', 5, 'customer')  && Habilita buffering de
&& de la tabla
CLEAR
? GETFLDSTATE('cust_id')  && Muestra 1, no modificado
REPLACE cust_id    WITH '***'  && Cambia el contenido del campo
? GETFLDSTATE('cust_id')  && Devuelve 2, campo modificado
= SETFLDSTATE('cust_id', 1)  && Cambia el estado del campo
? GETFLDSTATE('cust_id')  && Muestra 1, no modificado
= TABLEREVERT(.T.)  && Descarta todos los cambios en la tabla

Vea también

DELETED( ) | DISPLAY STRUCTURE | FIELD( ) | GETFLDSTATE( )


SIGN( ) (Función)

Devuelve el valor numérico 1, –1 ó 0 si la expresión numérica especificada da como resultado un valor positivo, negativo o 0, respectivamente.

SIGN(nExpression)

Valores devueltos

Numérico

Parámetros

nExpression
Especifica la expresión numérica que evalúa SIGN( ). SIGN( ) devuelve 1 si nExpression da como resultado un número positivo, –1 si nExpression da como resultado un número negativo y 0 si nExpression da como resultado 0.

Ejemplo

STORE 10 TO gnNum1
STORE -10 TO gnNum2
STORE 0 TO gnZero
CLEAR
? SIGN(gnNum1)  && Displays 1
? SIGN(gnNum2)  && Displays -1
? SIGN(gnZero)  && Displays 0

Vea también

ABS( ) | COS( ) | SIN( )


SIN( ) (Función)

Devuelve el seno de un ángulo.

SIN(nExpression)

Valores devueltos

Numérico

Parámetros

nExpression
Especifica el ángulo cuyo seno devuelve SIN( ). nExpression puede asumir cualquier valor y el valor devuelto por SIN( ) varía entre –1 y 1.
Nota nExpression se especifica en radianes. Utilice DTOR( ) para convertir un ángulo de grados a radianes. El número de lugares decimales mostrados por SIN( ) puede especificarse con SET DECIMALS.

Ejemplo

CLEAR
? SIN(0)  && Displays 0.00
? SIN(PI( )/2)  && Displays 1.00
? SIN(DTOR(90))  && Displays 1.00

Vea también

ACOS( ) | COS( ) | DTOR( ) | RTOD( ) | SET DECIMALS


SKPBAR( ) (Función)

Determina si un elemento de menú está activado o desactivado con SET SKIP OF.

SKPBAR(cMenuName, MenuItemNumber)

Valores devueltos

Logical

Parámetros

cMenuName
Especifica el nombre del menú que contiene el elemento.
MenuItemNumber
Especifica el número del elemento de menú cuyo estado (activado o desactivado) devuelve SKPBAR( ). El número del elemento de menú se asigna cuando se crea el elemento de menú con DEFINE BAR.

Observaciones

SKPBAR( ) devuelve verdadero (.T.) si el elemento de menú está desactivado, y falso (.F.) si el elemento de menú está activado.

Vea también

DEFINE BAR | SET SKIP OF | SKPPAD( )


SKPPAD( ) (Función)

Determina si un título de menú está activado o desactivado con SET SKIP OF.

SKPPAD(cMenuBarName, cMenuTitleName)

Valores devueltos

Logical

Parámetros

cMenuBarName
Especifica el nombre de la barra de menú que contiene el título de menú.
cMenuTitleName
Especifica el nombre del título de menú cuyo estado (activado o desactivado) devuelve SKPPAD( ).

Observaciones

SKPPAD( ) devuelve verdadero (.T.) si el título de menú está desactivado, y falso (.F.) si el título de menú está activado.

Vea también

DEFINE BAR | SET SKIP OF | SKPBAR( )


SOUNDEX( ) (Función)

Devuelve la representación fonética de la expresión de caracteres especificada.

SOUNDEX(cExpression)

Valores devueltos

Character

Parámetros

cExpression
Especifica la expresión de caracteres que va a evaluar SOUNDEX( ).

Observaciones

SOUNDEX( ) devuelve una cadena de cuatro caracteres. Al comparar los resultados que devuelve SOUNDEX( ) de dos expresiones de caracteres, puede determinar si las dos expresiones son similares fonéticamente, es decir, suenan de forma parecida. Esto puede ser útil al buscar registros duplicados en una tabla.

SOUNDEX( ) no distingue entre mayúsculas y minúsculas y generalmente descarta las vocales.

Ejemplo

CLEAR
? SOUNDEX('Smith') = SOUNDEX('Smyth')  && Displays .T.
? SOUNDEX('Computer')  && Displays C513

Vea también

DIFFERENCE( ) | Reproductor de sonido | Crear expresiones de tipo Carácter


SPACE( ) (Función)

Devuelve una cadena de caracteres compuesta por un número especificado de espacios.

SPACE(nSpaces)

Valores devueltos

Character

Parámetros

nSpaces
Especifica el número de espacios que devolverá SPACE( ). El valor máximo de nSpaces está limitado únicamente por la memoria en Microsoft Visual FoxPro.

Vea también

PADC( ) | PADL( ) | PADR( ) | REPLICATE( )


SQLCANCEL( ) (Función)

Solicita la cancelación de una instrucción SQL que se está ejecutando.

SQLCANCEL( ) cancela la ejecución de SQLCOLUMNS( ), SQLEXEC( ), SQLMORERESULTS( ), y SQLTABLES( ) en modo asíncrono. Utilice la función SQLSETPROP( ) para establecer el modo asíncrono

SQLCANCEL(nStatementHandle)

Parámetros

nStatementHandle
Especifica el identificador de conexión activo cuya instrucción SQL se va a cancelar.

Valores Devueltos

Numérico. SQLCANCEL( ) devuelve 1 si la instrucción SQL se cancela satisfactoriamente, – 1 si hay un error de nivel de conexión y – 2 si hay un error de nivel de entorno.

Ejemplo

En el ejemplo siguiente se supone que SQLCONNECT( ) se ejecuta correctamente y su valor devuelto se almacena en una variable de memoria llamada gnHandle.

SQLEXEC( )se usa para enviar una instrucción SQL al origen de datos y devolver el resultado a un cursor. SQLCANCEL( ) se ejecuta para detener la consulta.

= SQLSETPROP(gnHandle, 'asynchronous', .T.)   && para detener SQLEXEC( )
= SQLEXEC(gnHandle, 'SELECT * FROM authors')
= SQLCANCEL(gnHandle)   && declaración Select errónea, cancelar

Vea también

AERROR( ) (Función) | SQLCOLUMNS( ) (Función) | SQLEXEC( ) (Función) | SQLMORERESULTS( ) (Función) | SQLSETPROP( ) (Función) | SQLTABLES( ) (Función)


SQLCOLUMNS( ) (Función)

Almacena una lista de nombres de columnas e información acerca de cada columna para la tabla de origen de datos especificada en un cursor de Visual FoxPro.

SQLCOLUMNS(nStatementHandle, cTableName
[, "FOXPRO" | "NATIVE"] [, cCursorName])

Parámetros

nStatementHandle
Identificador de conexión activo.
cTableName
Especifica el nombre de la tabla desde la que se devuelven los nombres de las columnas. TableName puede contener los caracteres comodín ? y *. El signo de interrogación (?) representa a cualquier carácter individual y el asterisco (*) representa un número cualquiera de caracteres.
FOXPRO | NATIVE
Especifica el formato de la información de las columnas del conjunto de resultados. No olvide escribir FOXPRO o NATIVE entre comillas. La opción de formato NATIVE almacena información de columnas con el mismo formato que el origen de datos. La opción de formato FOXPRO almacena la información de columnas con el mismo formato utilizado para la tabla o el cursor de Visual FoxPro que se crearía si se importara la tabla de origen de datos a Visual FoxPro. Si omite FOXPRO o NATIVE, la opción de formato predeterminada será FOXPRO.

La tabla siguiente muestra las columnas del conjunto de resultados para el formato FOXPRO.

Nombre de columna | Descripción
Field_name | Nombre de columna
Field_type | Tipo de datos de la columna
Field_len | Longitud de la columna
Field_dec | Número de cifras decimales

La tabla siguiente muestra las columnas en el conjunto de resultados para el formato NATIVE. Según el origen de datos, en el formato NATIVE se pueden incluir columnas adicionales que no aparecen en la tabla siguiente en el conjunto de resultados.

Nombre de columna | Descripción
Table_qualifier | Identificador del calificador de la tabla
Table_owner | Identificador del propietario de la tabla
Table_name | Identificador de la tabla
Column_name | Identificador de la columna
Data_type | Tipo de datos de la columna
Type_name | Nombre del tipo de datos de la columna
Precision | Precisión de la columna
Length | Tamaño de la transferencia de datos
Scale | Escala de la columna
Radix | Base para el tipo numérico
Nullable | Admite valores NULL
Observaciones | Descripción de la columna

If the table you specify with cTableName does not exist and the format is set to NATIVE, SQLCOLUMNS( ) returns true (.T.) and creates an empty table or cursor. If the table you specify with cTableName does not exist and the format is set to FOXPRO, SQLCOLUMNS( ) returns false (.F.).

cCursorName
Specifies the name of the Visual FoxPro cursor for the result set. If you do not include a cursor name, Visual FoxPro uses the default name SQLRESULT.

Valores Devueltos

Numérico or Logical. SQLCOLUMNS( )devuelve 1 si el cursor se crea correctamente, 0 si SQLCOLUMNS( )aún está ejecutándose, – 1 si se produce un error de nivel de conexión y – 2 si se produce un error de nivel de entorno.

Remarks

SQLCOLUMNS( ) es una de las cuatro funciones que pueden ejecutarse en modo síncrono o asíncrono. La configuración Asíncrona de SQLSETPROP( ) determina si estas funciones se ejecutan en modo síncrono o asíncrono. En modo asíncrono, deberá llamar a SQLCOLUMNS( ) repetidamente hasta que se devuelva un valor distinto de falso (.F.) (sigue ejecutándose).

Ejemplo

TEn el ejemplo siguiente se supone que SQLCONNECT( ) ise ejecuta correctamente y su valor devuelto se almacena en una variable de memoria llamada gnHandle. SQLCOLUMNS( ) se usa para crear un cursor llamado MyCursor contiene información acerca de las columnas de la tabla authors.

= SQLCOLUMNS(gnHandle, 'authors', 'FOXPRO', 'MyCursor')

Vea también

AERROR( ) | SQLGETPROP( ) | SQLSETPROP( ) | SQLTABLES( )


SQLCOMMIT( ) (Función)

Confirma una transacción.

SQLCOMMIT(nStatementHandle)

Parámetros

nStatementHandle
Especifica el identificador de conexión al origen de datos devuelto por SQLCONNECT( ).

Valores Devueltos

Numérico. SQLCOMMIT( ) devuelve 1 si se confirma la transacción; en caso contrario, devuelve -1. Si SQLCOMMIT( ) devuelve -1, puede utilizar AERROR( )para determinar por qué no puede confirmarse la transacción

Observaciones

Si están vigentes las transacciones manuales (la propiedad SQLSETPROP( ) Transactions está establecida como Manual), puede enviar varias actualizaciones a tablas remotas y confirmar todas las actualizaciones con SQLCOMMIT( ).

Las actualizaciones pueden anularse con SQLROLLBACK( ).

Ejemplo

En el ejemplo siguiente se supone que SQLCONNECT( ) se ejecuta correctamente y su valor devuelto se almacena en una variable de memoria llamada gnHandle. SQLSETPROP( )usa para establecer la propiedad Transactions en 2 (Manual), lo que le permite usar SQLCOMMIT( ) y SQLROLLBACK( ).

La tabla authors se modifica con SQLEXEC( ), y los cambios a la tabla se confirman con SQLCOMMIT( ).

= SQLSETPROP(gnHandle, 'Transactions', 2)  && Manual transactions
= SQLEXEC(gnHandle, "INSERT INTO authors (au_id, au_lname);
VALUES ('aupoe', 'Poe')")  && Modificar la tabla authors
IF SQLCOMMIT(gnHandle)> 0  && Intenta confirmar los cambios
Messagebox("Datos actualizados")
ELSE
IF AERROR(laError)> 0
Messagebox("Se ha producido un error: "+laError[2])
ENDIF
ENDIF

Vea también

AERROR( ) | BEGIN TRANSACTION | END TRANSACTION | SQLCONNECT( ) | SQLROLLBACK( ) | SQLSETPROP( )


SQLCONNECT( ) (Función)

Establece una conexión con un origen de datos.

SQLCONNECT([nStatementHandle])

-o-

SQLCONNECT([cConnectionName | cDataSourceName [, cUserID [, cPassword ]][, lShared]])

Parámetro

nStatementHandle
Especifica un nuevo controlador de instrucciones a ser creado bajo una conexión compartida representada por nStatementHandle. El nuevo controlador de instrucciones utiliza la configuración provista por nStatementHandle en lugar de utilizar los valores por defecto.
Nota No puede crear un nuevo controlador de instrucciones si no fuera compartido. Visual FoxPro genera un error si intenta crear un nuevo controlador de instrucciones contra una conexión no compartida.

Tambien puede usar SQLCONNECT( ) para obtener un nuevo controlador de instrucciones en una conexión compartida que fue abierta usando la función SQLSTRINGCONNECT( ).

cConnectionName
Especifica una conexión con nombre creada con CREATE CONNECTION.

Cuando utiliza CREATE CONNECTION o el Diseñador de Conexión para crear una conexión con nombre, puede configurar la conexión especificando un Data Source Name, user ID, y password. Cuando se utiliza una conexión con nombre en SQLCONNECT( ) con cConnectionName, puede utilizar valores diferentes a aquellos utilizados en la conexión con nombre utilizando los parámetros opcionales cUserID y cPassword. Los valores pasados son tuilizados en lugar de el user ID y password de la conexión con nombre especificada en cConnectionName.

Por ejemplo, suponga que ha creado una conexión con nombre llamada myNamedConnection utilizando CREATE CONNECTION o el Diseñador de Conexiones y ha especificado los valores myUserID y myPassword para la conexión con nombre. Con SQLCONNECT( ), puede especificar myNamedConnection como cConnectionName y entonces especificar myAltUserID y myAltPassword como un userID y password alternativos, como se muestra en el siguiente codigo:

SQLCONNECT("myNamedConnection", "myAltUserID", "myAltPassword")

Sin embargo, si crea una conexión con nombre usando una cadena de conexión por medio de CREATE CONNECTION o el Diseñador de Conexiones, utiliza las conexiones con nombre en SQLCONNECT( ), e intenta pasar un parámetros adicionales de user ID y password a la función SQLCONNECT( ), Visual FoxPro generará un mensaje apropiado.

Cuando se crea una nueva conexión compartida , el parámetro cConnectionName se refiere a una conexión con nombre del actual contenedor de base de datos (DBC).

Cuando se crea un nuevo controlador de instrucciones basado en una conexión compartida existente, el parámetro cConnectionName se refiere a una conexión previa abierta en modo compartido.

Si usa el parámetro cConnectionName sin el parámetro lShared o con el parámetro lShared como Falso (.F.), siempre se creará una nueva conexión que no es compartida.

Cuando se utiliza cConnectionName, si lShared es Verdadero (.T.) y la conexión con nombre ya se encuentra abierta como modo compartido, el nombre de usuario y password provisto debe coincidir con el previamente usado. De otro modo, Visual FoxPro genera el mensaje apropiado.

cDataSourceName
Especifica el nombre de un origen de datos tal como se define en el archivo Odbc.ini.

Puede escoger un originen de datos desde Seleccionar conexión u origen de datos , el cual aparece cuando llama a la función SQLCONNECT( ) sin ningún argumento adicional, o con sólo el parámetro lShared.

cUserID
Especifica un identificador de usuario para iniciar la sesión en el origen de datos.
cPassword
Especifica la contraseña para el origen de datos.
lShared
Especifica si se crea o no una conexión compartida.
lShared | Descripción
Falso (.F.) | SQLCONNECT( ) no crea una conexión compartida (predeterminado).
Verdadero (.T.) | SQLCONNECT( ) crea una conexión compartida.

Valores devueltos

Tipo de datos numético. SQLCONNECT( ) devuelve un identificador numérico positivo distinto de cero si consigue conectarse con el origen de datos. SQLCONNECT( ) devuelve – 2 si no puede establecerse la conexión. Puede utilizar la función AERROR() si necesita mas datos sobre el error de conexión.

Sugerencia Almacene este identificador en una variable de memoria y utilice la variable en llamadas de función posteriores en las que se necesite un identificador de conexión.

Observaciones

Las funciones SQLCONNECT( ) y SQLSTRINGCONNECT( ) devuelven un valor numérico como el controlador de estatutos , en vez de un controlador de conexión. No puede obtener un controlador de conexión directamente. Aún puede establecer y obtener las propiedades de conexión usando las funciones SQLSETPROP( ) y SQLGETPROP( ) pasando el controlador de estatutos de la conexión y la cadena "Shared", como argumentos . Todas las funciones SQL utilizan el controlador de estatutos en vez de un controlador de conexión.

Si usa la instrucción SQLCONNECT(cConnectionName, .T.), y ya está abierta una conexión compartida con el mismo nombre, entonce las configuraciones para aquellas conexión que no cambian a las configuraciones almacenadas para la conexión en el contenedor de base de datos (DBC). Sin embargo, el nuevo controlador de instrucciones usará las configuraciones de instrucciones de el DBC.

Nota El cuadro de diálogo de inicio de sesión del Open Database Connectivity (ODBC) debe estar desactivado para admitir el paso de SQL con Microsoft Transaction Server. Utilice SQLSETPROP(nStatementHandle, 'DispLogin', 3) para desactivar el cuadro de diálogo de inicio de sesión ODBC, donde cStatementHandle es el controlador de instrucciones devuelto por SQLCONNECT( ). cuadro de diálogo de inicio de sesión ODBC también se puede desactivar en el Diseñador de conexiones.

Ejemplo

Ejemplo 1

El ejemplo siguiente supone que hay un origen de datos ODBC disponible llamado MyFoxSQLNT y que el Id. de usuario para el origen de datos es "sa". Se ejecuta SQLCONNECT( ) y el valor devuelto se almacena en una variable llamada gnConnHandle.

Si se conecta correctamente al origen de datos, SQLCONNECT( ) devuelve un número positivo, aparece un cuadro de diálogo y se usa SQLDISCONNECT( ) para desconectarse del origen de datos.

Si no puede conectarse al origen de datos, SQLCONNECT( ) devuelve un número negativo y aparece un mensaje..

STORE SQLCONNECT('MyFoxSQLNT', 'myUserID', 'myPassword') TO gnConnHandle
IF gnConnHandle <= 0
IF AERROR(laError) > 0
MESSAGEBOX('No fue posible establecer conexión:'+laError[2], 16, 'SQL Connect Error')
ENDIF
ELSE
   = MESSAGEBOX('Conexión realizada', 48, 'SQL Connect Message')
   = SQLDISCONNECT(gnHandle)
ENDIF

Ejemplo 2

Cada uno de los siguientes ejemplos crea una crea una nueva conexión compartida. El cuadro de diálogo "Seleccionar conexión u origen de datos" aparece,y SQLCONNECT( ) crea la conexión resultante como compartida.

SQLCONNECT(.T.)
SQLCONNECT( myConnectionName, .T. )
SQLCONNECT( myDataSourceName, myUserID, myPassword, .T. )

Ejemplo 3

Cada uno de los siguientes ejemplos crea un nuevo controlador de instrucciones basado en una conexión compartida existente.

SQLCONNECT( nStatementHandleValue )
SQLCONNECT( myConnectionName, .T. )

Vea también

AERROR( ) | CREATE CONNECTION | SQLDISCONNECT( ) | SQLGETPROP( ) | SQLEXEC( ) | SQLSETPROP( ) | SQLSTRINGCONNECT( )


SQLDISCONNECT( ) (Función)

Termina una conexión con un origen de datos.

SQLDISCONNECT(nStatementHandle)

Parámetros

nStatementHandle
Especifica un controlador de instrucciones devuelto por SQLCONNECT( ). Si desea terminar todas las conexiones activas, especifique 0 para nStatementHandle.

Valores devueltos

Numérico. SQLDISCONNECT( ) devuelve 1 si se termina la conexión, – 1 si hay un error de nivel de conexión y – 2 si hay un error de nivel de entorno.

Observaciones

Si al intentar realizar la desconexión se produce un error, puede utilizar la función AERROR() para obtener una descripción mas precisa del error de desconexión.

SQLDISCONNECT( ) ) termina una conexión con un origen de datos. Debe proporcionar el controlador de instrucciones que devolvió SQLCONNECT( ) cuando estableció la conexión.

Nota Si ejecuta SQLDISCONNECT( ) en una secuencia de funciones asíncrona o durante una transacción, SQLDISCONNECT( ) generará un error.

Ejemplo

El ejemplo siguiente supone que hay un origen de datos ODBC disponible llamado MyFoxSQLNT. SQLCONNECT( ) es ejecutado, y este devuelve su valor almacenandolo en una variable llamada gnHandle.

Si se conecta correctamente al origen de datos, SQLCONNECT( ) devuelve un número positivo, aparece un cuadro de diálogo y se usa SQLDISCONNECT( ) para desconectarse del origen de datos.

Si no puede conectarse al origen de datos, SQLCONNECT( ) devuelve un número negativo y aparece un mensaje.

STORE SQLCONNECT('MyFoxSQLNT', '<userid>', '<password>') TO gnHandle
IF gnHandle <= 0
IF AERROR(laError) > 0
MESSAGEBOX('No fue posible establecer conexión:'+laError[2], 16, 'SQL Connect Error')
ENDIF
ELSE
= MESSAGEBOX('Conexión Realizada', 48, 'SQL Connect Message)
= SQLDISCONNECT(gnHandle)
ENDIF

Vea también

AERROR( ) | SQLCONNECT( ) | SQLSTRINGCONNECT( )


SQLEXEC( ) (Función)

Envía una instrucción SQL al origen de datos, donde se procesa la instrucción.

SQLEXEC(nStatementHandle, [cSQLCommand, [cCursorName]])

Parámetros

nStatementHandle
Especifica el controlador de instrucciones del origen de datos devuelto por SQLCONNECT( ).
cSQLCommand
Especifica la instrucción SQL transferida al origen de datos.

La instrucción SQL puede contener una cláusula WHERE parametrizada, como los que crea en una vista parametrizada. YTodos los parámetros de la cláusula WHERE deben definirse antes de ejecutar SQLEXEC( ). Por ejemplo, si los parámetros son variables, éstas deberán crearse e inicializarse antes de ejecutar SQLEXEC( ). Para obtener información adicional acerca de cómo crear vistas parametrizadas, vea Crear vistas.

Puede incluir expresiones en la instrucción SQL statement. Visual FoxPro evalúa todas las expresiones en la instrucción SQL que pasa antes de enviarla a el origne de datos. Visual FoxPro puede evaluar nombres de variables de memoria, llamadas a funciones, y expresiones encerradas en paréntesis como valores de parámetros parameter values.

cCursorName
Especifica el nombre del cursor de Visual FoxPro al que se envía el conjunto de resultados. Si no incluye un nombre de cursor, Visual FoxPro utilizará el nombre predeterminado SQLRESULT.

Para varios conjuntos de resultados, se obtienen nuevos nombres de cursor agregando un número incrementado al nombre del primer cursor.

Valores devueltos

Tipo de datos numérico. SQLEXEC( ) devuelve el número de conjuntos de resultados si hay más de uno. SQLEXEC( ) devuelve 0 mientras continúa ejecutándose y devuelve 1 cuando termina de ejecutarse. SQLEXEC( ) devuelve – 1 si se produce un error de nivel de conexión.

Observaciones

Si la instrucción que desea pasar en algo grande, revise que esta no exceda la longitud máxima para una cadena literal en Visual FoxPro, la cual es de 255 caracteres. Cadenas mas grandes causarán el error "El comando contiene una frase o palabra no reconocida". Sin embargo, puede pasar cadenas SQL largas si lo separa en varias cadenas literales concatenadas. Por ejemplo:

lnRetVal = SQLEXEC(lnHandle, "SELECT <lista larga de campos> " + ;
"FROM <varias tablas> " + ;
"WHERE <filtro de expresiones complejas>")

Si se utiliza SQLEXEC( ) para ejecutar una instrucción SQL preparada con SQLPREPARE( ), sólo se necesitará el argumento nStatementHandle del controlador de instrucciones. Deberá omitir los argumentos cSQLCommand y CursorName.

Si la instrucción SQL genera un conjunto de resultados, SQLEXEC( ) sel conjunto de resultados en el cursor especificado de Visual FoxPro. Si la instrucción SQL genera dos o más conjuntos de resultados y SQLSETPROP( ) se establece en 1 (modo por lotes), puede asignar un nombre a cada conjunto de resultados estableciendo la opción SQLSETPROP( ) BatchMode en 0 y cambiando el nombre del cursor cada vez que llame a SQLMORERESULTS( ).

SQLEXEC( ) es una de las cuatro funciones que puede ejecutar en modo síncrono o asíncrono. La configuración Asíncrona de SQLSETPROP( ) determina si estas funciones se ejecutan en modo síncrono o asíncrono. En modo asíncrono, debe llamar a SQLEXEC( ) repetidamente hasta que devuelva un valor distinto de 0 (sigue ejecutándose).

Ejemplo

Ejemplo 1

En el ejemplo siguiente se supone que SQLCONNECT( ) se ejecuta correctamente y su valor devuelto se almacena en una variable de memoria llamada gnHandle. SQLEXEC( ) se usa para ejecutar una consulta que devuelve toda la información de la tabla authors en un cursor llamado MyCursor.

SQLSETPROP(gnHandle, 'asynchronous', .F.)
SQLEXEC(gnHandle, 'SELECT * FROM authors', 'MyCursor')

Example 2

En el ejemplo siguiente se supone que SQLCONNECT( ) se ejecuta correctamente y su valor devuelto se almacena en una variable de memoria llamada gnHandle. SQLEXEC( ) evalúa variables y expresiones en las instrucciones SQL antes de mandarlas a el origen de datos.

STORE "MOD(5,2)" to myVar
SQLEXEC(gnHandle, "SELECT * FROM testtable WHERE ikey = ?myVar")
SQLEXEC(handle, "select * from testtable where ikey = ?myVar")
SQLEXEC(handle, "select * from testtable where ikey = ?MOD(5,2)")
STORE 1 TO myVar1
STORE 2 TO myVar2
SQLEXEC(handle, "select * from testtable where ikey = ?(myVar1 + myVar2)")

Vea también

AERROR( ) | SQLCANCEL( ) | SQLCONNECT( ) | SQLGETPROP( ) | SQLMORERESULTS( ) | SQLPREPARE( ) | SQLSETPROP( ) | SQLSTRINGCONNECT( )


SQLGETPROP( ) (Función)

Devuelve la configuración actual o predeterminada para una conexión activa.

SQLGETPROP(nStatementHandle, cSetting)

Parámetros

nStatementHandle
Especifica el controlador de instrucciones del origen de datos devuelto por SQLCONNECT( ). Si especifica 0 para nStatementHandle, SQLGETPROP( ) devuelve la configuración del entorno.
cSetting
Especifica la configuración. Vea SQLSETPROP( ) para obtener una lista de los valores que puede especificar.

Valores devueltos

Caracter, Numérico, o Lógico. SQLGETPROP( ) devuelve la configuración actual o predeterminada para una conexión activa. SQLGETPROP( ) devuelve – 1 Si se produce un error de nivel de conexión . Si se produce un error de nivel de entorno, devuelve – 2.

Ejemplo

En el siguiente ejemplo se utiliza SQLCONNECT( ) para mostrar el Cuadro de diálogo Seleccionar conexión u origen de datos. Elija un origen de datos y en el ejemplo se mostrarán los resultados utilizando SQLGETPROP( ) con el cSetting para DataSource.

CLOSE ALL
CLEAR ALL
CLEAR
nHandle=SQLCONNECT()
IF nHandle > 0
cSource= SQLGETPROP(nHandle, "datasource")
=MESSAGEBOX("Data Source Actual = "+cSource,0,"Connection Results")
ELSE
=MESSAGEBOX("Connection Error = " + ;
ALLTRIM(STR(nHandle)),0,"Connection Results")
ENDIF
=SQLDISCONNECT(nHandle)

Vea también

AERROR( ) | SQLCONNECT( ) | SQLSETPROP( )


SQLMORERESULTS( ) (Función)

Copia otro conjunto de resultados a un cursor de Visual FoxPro si hay más conjuntos de resultados disponibles.

SQLMORERESULTS(nStatementHandle)

Parámetros

nStatementHandle
Especifica el controlador de instrucciones de el origen de datos devuelto por SQLCONNECT( ).

Valores devueltos

Numérico. SQLMORERESULTS( ) , SQLMORERESULTS( ) debería llamarse después de cada llamada con éxito a SQLEXEC( ) hasta que SQLMORERESULTS( ) devuelva 2 (no se encuentran más datos). La configuración de la opción de modo por lotes SQLSETPROP( ) determina si SQLEXEC( ) ejecuta una instrucción SQL en modo por lotes o no por lotes.

SQLMORERESULTS( ) devuelve – 1 si se produce un error de nivel de conexión y – 2, si se produce un error de nivel de entorno.

Observaciones

SQLMORERESULTS( )determina si hay más conjuntos de resultados disponibles en una instrucción SQL ejecutada con SQLEXEC( ) en modo no por lotes. Si hay más conjuntos de resultados disponibles, se copiarán a un cursor de Visual FoxPro, un conjunto cada vez.

SQLMORERESULTS( ) es una de las cuatro funciones que se pueden ejecutar en modo síncrono o asíncrono. La configuración asíncrona de SQLSETPROP( ) determina si estas funciones se ejecutan en modo síncrono o asíncrono. En modo asíncrono, deberá llamar a SQLMORERESULTS( ) repetidamente mientras devuelva un valor distinto de 0 (sigue ejecutándose).

Ejemplo

En el ejemplo siguiente se supone que SQLCONNECT( ) se ejecuta correctamente y su valor devuelto se almacena en una variable de memoria llamada gnHandle. SQLSETPROP( ) se usa para establecer la propiedad BatchMode en el valor falso (.F.) de forma que se puedan recuperar los conjuntos de resultados individuales.

SQLMORERESULTS( ) se ejecuta por segunda vez para crear dos cursores que contienen los resultados de la consulta SQLEXEC( ). SET se utiliza para mostrar la ventana Vista y los cursores creados por SQLEXEC( ).

= SQLSETPROP(gnHandle, 'BatchMode', .F.)  && Conjunto de resultados Individual
= SQLEXEC(gnHandle, 'SELECT * FROM authors;
SELECT * FROM titles')
= SQLMORERES(gnHandle)  && Primer conjunto de resultados
= SQLMORERES(gnHandle)  && Segundo cojunto de resultados

Vea también

AERROR( ) | SQLCANCEL( ) | SQLCONNECT( ) | SQLEXEC( ) | SQLGETPROP( ) | SQLSETPROP( )


SQLPREPARE( ) (Función)

Prepara una instrucción SQL para su ejecución remota mediante SQLEXEC( ).

SQLPREPARE(nStatementHandle, cSQLCommand, [cCursorName])

Parámetros

nStatementHandle
Especifica el controlador de instrucciones del origen de datos devuelto por SQLCONNECT( ).
cSQLCommand
Especifica la instrucción SQL transferida al origen de datos.

La instrucción SQL puede contener una cláusula WHERE parametrizada, que crea una vista parametrizada. Es necesario que estén definidos todos los parámetros de la cláusula WHERE antes de ejecutar SQLPREPARE( ). Por ejemplo, si los parámetros son variables, será necesario crearlas e inicializarlas antes de ejecutar SQLPREPARE( ).

Para obtener información adicional acerca de cómo crear vistas parametrizadas, vea Crear vistas.

cCursorName
Especifica el nombre del cursor de Visual FoxPro al que se envía el conjunto de resultados. Si no incluye un nombre de cursor, Visual FoxPro utilizará el nombre predeterminado SQLRESULT.

Para varios conjuntos de resultados, se obtienen nuevos nombres de cursor agregando al nombre del primer cursor un número incrementado.

Valores devueltos

Numérico

Observaciones

SQLPREPARE( ) senvía la instrucción SQL al origen de datos, donde se compila para lograr una ejecución más rápida. Una vez compilada la instrucción SQL, puede ejecutarse con SQLEXEC( ). Si se utiliza SQLEXEC( ) para ejecutar una instrucción SQL preparada con SQLPREPARE( ), sólo se necesitará el controlador de instrucciones en SQLEXEC( ).

Ejemplo

gcAuthor = 'Smith'
= SQLPREPARE(gnHandle, 'SELECT * FROM authors;   WHERE au_lname = ?gcAuthor')
= SQLEXEC(gnHandle)
...
gcAuthor = 'Jones'
= SQLEXEC(gnHandle)

Vea también

SQLCONNECT( ) | SQLEXEC( ) | Crear vistas


SQLROLLBACK( ) (Función)

Cancela los cambios realizados durante la transacción actual.

SQLROLLBACK(nStatementHandle)

Parámetros

nStatementHandle
Especifica el controlador de instrucciones del origen de datos devuelto por SQLCONNECT( ).

Valores devueltos

Numérico. SQLROLLBACK( ) devuelve 1 si la transacción se deshace; en caso contrario, devuelve -1. Si SQLROLLBACK( )devuelve -1, puede utilizar AERROR( ) para determinar porqué no fue posible deshacer la transacción.

Observaciones

Si están vigentes las transacciones manuales (la propiedad de la transacción SQLSETPROP( ) está establecida como Manual), puede enviar varias actualizaciones a tablas remotas. Las actualizaciones se pueden deshacer con SQLROLLBACK( ).

Las actualizaciones se pueden confirmar con SQLCOMMIT( ).

Ejemplo

En el ejemplo siguiente se supone que SQLCONNECT( )se ejecuta correctamente y su valor devuelto se almacena en una variable de memoria llamada gnHandle. SQLSETPROP( )se utiliza para establecer la propiedad Transactions a 2 (Manual), lo que le permite usar SQLCOMMIT( ) y SQLROLLBACK( ).

La tabla authors se modifica con SQLEXEC( ) y los cambios realizados a la tabla se cancelan con SQLROLLBACK( ).

= SQLSETPROP(gnHandle, 'Transactions', 2)  && manual
= SQLEXEC(gnHandle, "INSERT INTO authors (au_id, au_lname);
VALUES ('aupoe', 'Poe')")
= SQLROLLBACK(gnHandle)

Vea también

AERROR( ) | SQLCOMMIT( ) | SQLCONNECT( ) | SQLSETPROP( )


SQLSETPROP( ) (Función)

Specifies settings for an active connection. You can use SQLSETPROP( ) to specify settings at the connection level. To specify Visual FoxPro default settings at the environment level, include 0 as the statement handle.

SQLSETPROP(nStatementHandle, cSetting [, eExpression])

Parámetros

nStatementHandle
Especifica el controlador de instrucciones del origen de datos devuelto por SQLCONNECT( ).
cSetting
Especifica la configuración. La tabla siguiente muestra los valores de cSetting.
Valor | Descripción
Asynchronous Especifica si los conjuntos de resultados se devuelven en modo síncrono (falso (.F.), el valor predeterminado) o en modo asíncrono (verdadero (.T.)).
Lectura y escritura.
BatchMode Especifica si SQLEXEC( ) devuelve los conjuntos de resultados de una vez (verdadero (.T.), el valor predeterminado) o individualmente con SQLMORERESULTS( ) (falso (.F.)).
Lectura y escritura.
ConnectBusy Contiene verdadero (.T.) si una conexión compartida está ocupada; de lo contrario, contiene falso (.F.).
Sólo lectura.
ConnectString La cadena de conexión de inicio de sesión.
Sólo lectura.
ConnectTimeOut Especifica el tiempo de espera (en segundos) antes de devolver un error de tiempo de espera de conexión. Si especifica 0 (el valor predeterminado), la espera es indefinida y no se devuelve un error de tiempo de espera. ConnectTimeOut puede estar entre 0 y 600. El valor predeterminado es 15.
Lectura y escritura.
DataSource El nombre del origen de datos definido en el archivo ODBC.INI.
Lectura y escritura.
DispLogin Contiene un valor Numérico que determina cuándo se muestra el cuadro de diálogo de inicio de sesión ODBC. DispLogin puede adoptar los valores siguientes:

1 o DB_PROMPTCOMPLETE (de FOXPRO.H). El valor predeterminado es 1.

2 o DB_PROMPTALWAYS (de FOXPRO.H).

3 o DB_PROMPTNEVER (de FOXPRO.H).

Si se especifica 1 o DB_PROMPTCOMPLETE, Visual FoxPro sólo mostrará el cuadro de diálogo de inicio de sesión ODBC si falta información necesaria.

Si se especifica 2 o DB_PROMPTALWAYS, siempre se muestra el cuadro de diálogo de inicio de sesión de ODBC, que permite cambiar las opciones antes de conectar.

Si se especifica 3 o DB_PROMPTNEVER, no se mostrará el cuadro de diálogo de inicio de sesión ODBC y Visual FoxPro generará un error si no está disponible la información de inicio de sesión.
Lectura y escritura.
DispWarnings Especifica si se muestran (verdadero (.T.)) o no se muestran (falso (.F.)) mensajes de error. El valor predeterminado es que los mensajes de error no se muestran.
Lectura y escritura.
IdleTimeout El intervalo de espera de inactividad en segundos. Las conexiones activas se desactivan después del intervalo de tiempo especificado. El valor predeterminado es 0 (espera indefinidamente).
Lectura y escritura.
ODBChdbc El controlador interno de conexión ODBC que pueden emplear los archivos externos de biblioteca (archivos FLL) para llamar a ODBC.
Sólo lectura.
ODBChstmt El controlador interno de instrucción ODBC que pueden emplear los archivos externos de biblioteca (archivos FLL) para llamar a ODBC.
Sólo lectura.
PacketSize El tamaño del paquete de red usado por la conexión. Ajustar este valor puede mejorar el rendimiento. El valor predeterminado es 4096 bytes (4K).
Lectura y escritura
Password La contraseña de conexión.
Sólo lectura.
QueryTimeOut Especifica el tiempo de espera (en segundos) antes de devolver un error general de tiempo de espera. Si especifica 0 (predeterminado), la espera es indefinida y no se devuelve un error de tiempo de espera. QueryTimeOut puede estar entre 0 y 600.
Lectura y escritura.
Shared Specifies whether the underlying connection is a shared connection (True (.T.)), or not (False (.F.)).

Read-only.
Transactions Contiene un valor numérico que determina cómo administra la conexión las transacciones en la tabla remota. Las transacciones pueden adoptar los valores siguientes:

1 o DB_TRANSAUTO (de FOXPRO.H). El valor predeterminado es 1. El proceso de transacciones para la tabla remota se administra automáticamente.

2 o DB_TRANSMANUAL (de FOXPRO.H). El proceso de transacciones se controla automáticamente mediante SQLCOMMIT( ) y SQLROLLBACK( ).
Lectura y escritura.
UserId | La identificación del usuario. Sólo lectura.
WaitTime La cantidad de tiempo, en milisegundos, que transcurre antes de que Visual FoxPro compruebe si la instrucción SQL ha terminado de ejecutarse. El valor predeterminado es 100 milisegundos.
Lectura y escritura.
eExpression
Especifica el valor para el valor designado con cSetting. Si se omite eExpression, se restaurará el valor predeterminado.

Valores devueltos

Tipo de datos Numérico. SQLSETPROP( ) devuelve 1 si es correcta; de lo contrario, devolverá – 1 si se produce un error de nivel de conexión o – 2 si se produce un error de nivel de entorno.

Observaciones

Utilice SQLGETPROP( ) para devolver el valor actual para una configuración especificada.

Nota El cuadro de diálogo de inicio de sesión del Open Database Connectivity (ODBC) debe estar desactivado para admitir el paso de SQL con Microsoft Transaction Server. Utilice SQLSETPROP(cStatementHandle, 'DispLogin', 3), para desactivar el cuadro de diálogo de inicio de sesión ODBC, donde cStatementHandle es el controlador de instrucciones devuelto por SQLCONNECT( ). de diálogo de inicio de sesión ODBC también se puede desactivar en el Diseñador de conexiones.

La opción ConnectTimeout sólo puede establecerse en el nivel de Visual FoxPro y no tiene equivalente en el nivel de conexión. Puede establecer las opciones restantes en el nivel de conexión o de Visual FoxPro. Cada opción establecida en el nivel de Visual FoxPro sirve como valor predeterminado para conexiones posteriores.

Ejemplo

El siguiente ejemplo muestras cómo la función SQLSETPROP( ) es usada para establecer el Tamaño de Paquetes para la conexión actual. SQLCONNECT( ) muestras el cuadro de diálogo "Seleccionar conexión u origen de datos" para que escoja una conexión, y se prueba la conexión. El Tamaño de Paquetes se establece; se prueba la configuración y se muestran los resultados.

CLOSE ALL
CLEAR ALL
CLEAR
nHandle=SQLCONNECT()
IF nHandle > 0
   nSet=SQLSETPROP(nHandle, "PacketSize", 2048 )
   IF nSet > 0
=MESSAGEBOX("PacketSize fué establecido a 2048",0,"Connection Results")
ELSE
=MESSAGEBOX("Error configurando PacketSize",0,"Connection Results")
ENDIF
=SQLDISCONNECT(nHandle)
ELSE
=MESSAGEBOX("Sin Conexión",0,"Connection Results")
ENDIF

Vea también

AERROR( ) | SQLGETPROP( ) | Diseñador de conexiones


SQLSTRINGCONNECT( ) (Función)

Establece una conexión con un origen de datos a través de una cadena de conexión.

SQLSTRINGCONNECT([lShared] | [cConnectString [, lShared]])

Parámetros

lShared
Especifica si se crea una conexión compartida.
lShared | Descripción
Falso (.F.) | SQLSTRINGCONNECT( ) no crea una conexión compartida (predeterminado)
Verdadero (.T.) | SQLSTRINGCONNECT( ) crea una conexión compartida.
cConnectString
Especifica la cadena de origen de datos que necesitan algunos controladores ODBC. Visual FoxPro pasa la cadena de conexión al controlador ODBC. Para obtener más información acerca de las cadenas de conexión a un origen de datos, consulte la documentación del controlador ODBC. .

También puede escoger un origen de datos desde el cuadro de diálogo Seleccionar conexión u origen de datos, el cuál aparece cuando ejecuta SQLSTRINGCONNECT( ) sin el parámetro cConnectString.

Valores devueltos

Numérico. SQLSTRINGCONNECT( )devuelve un identificador numérico positivo distinto de cero si conecta con el origen de datos. SQLSTRINGCONNECT( ) devuelve –1 si no puede hacer la conexión.

Sugerencia Almacene este identificador en una variable de memoria y utilice la variable en llamadas de función posteriores en las que se necesite un identificador de conexión.

Observaciones

Las funciones SQLCONNECT( ) y SQLSTRINGCONNECT( ) devuelven un valor numérico como el controlador de instrucciones en vez de un indicador de conexión. No puede obtener un indicador de conexión directamente. Aun puede establecer y obtener las propiedades de las conexiones utilizando las funciones SQLSETPROP( ) y SQLGETPROP( ) pasando el controlador de instrucciones para la conexión y la cadena "Shared", como argumento. Todas las demás funciones SQL usan un controlador de instrucciones en vez de un indicador de conexión.

SQLSTRINGCONNECT( ) siempre crea una nueva conexión cuando esta se conecta satisfactoriamente. Sin embargo, al establecer el parámetro lShared se determina si mas adelante se puede compartir la conexión. Si especifica una conexión como compartida al establecer lShared a Verdadero (.T.), entonces puede compartir la conexión mas adelante usando SQLCONNECT( ) y pasando el valor numérico de el controlador de instrucciones como el primer parámetro . Para mayor información, vea SQLCONNECT( ) (Función).

Puede usar SQLCONNECT( ) para obtener un nuevo controlador de instrucciones con una conexión compartida que fue abierta usando la función SQLSTRINGCONNECT( ).

Ejemplo

Ejemplo 1

En el ejemplo siguiente se supone que hay un origen de datos ODBC disponible llamado MyFoxSQLNT. SQLSTRINGCONNECT( ) devuelve un valor numérico el cual es almacenado en una variable llamada gnHandle.

Si se conecta correctamente con el origen de datos, SQLSTRINGCONNECT( ) devuelve un número positivo, se muestra un cuadro de diálogo y se usa SQLDISCONNECT( ) para desconectarse del origen de datos.

Si no puede conectarse con el origen de datos, SQLSTRINGCONNECT( ) devuelve un número negativo y se muestra un mensaje.

STORE SQLSTRINGCONNECT('dsn=MyFoxSQLNT;uid=myUserID;pwd=myPassword')
TO gnConnHandle
IF gnConnHandle < 0
IF AERROR(laError) > 0
MESSAGEBOX('No fue posible establecer conexión', 16, 'SQL Connect Error')
ENDIF
ELSE
= MESSAGEBOX('Conexión realizada', 48, 'SQL Connect Message')

= SQLDISCONNECT(gnHandle)
ENDIF

Ejemplo 2

El siguiente ejemplo muestra cómo puede usar la función SQLSTRINGCONNECT( ) sin un Data Source Name (DSN).

lcDSNLess="driver = SQL Server;server=<servername>;uid=<userid>;pwd=<password>"

–O bien–

lcDSNLess="driver = {SQL Server};server=<servername>;uid=<userid>;pwd=<password>"

–O bien–

lcDSNLess="DRIVER = {SQL Server};" ;

+ "SERVER=<servername>;" ;

+ "UID=<userid>;" ;

+ "PWD=<password>;" ;
+ "DATABASE=PUBS;" ;

+ "WSID=<machine name or userid>;" ;
+ "APP=MicroX(R) Sample App"

lnConnHandle=SQLSTRINGCONNECT(m.lcDSNLess)

Ejemplo 3

Cada uno de los siguientes ejemplos crea una nueva conexión compartida. En la primera instrucción, aparece el cuadro de diálogo Seleccionar conexión u origen de datos y SQLSTRINGCONNECT( ) crea la conexión resultante como compartida.

SQLSTRINGCONNECT(.T.)

SQLSTRINGCONNECT('myConnectionString', .T.)

Vea también

AERROR( ) | SQLCONNECT( ) | SQLDISCONNECT( )


SQLTABLES( ) (Función)

Almacena los nombres de tablas de un origen de datos en un cursor de Visual FoxPro.

SQLTABLES(nStatementHandle [, cTableTypes] [, cCursorName])

Parámetros

nStatementHandle
Especifica el controlador de instrucciones del origen de datos devuelto por SQLCONNECT( ).
cTableTypes
Especifica uno o más tipos de tablas. Los tipos de tablas válidos son 'TABLE', 'VIEW', 'SYSTEM TABLE' o cualquier identificador de tipo tabla específico para un origen de datos válido. cTableTypes debe escribirse en mayúsculas. Si incluye una lista de tipos de tablas, separe los tipos con comas.

Si omite cTableTypes o si cTableTypes es una cadena vacía, se seleccionarán todos los nombres de tablas del origen de datos.

El tipo de tabla que especifique debe estar limitado por comillas simples. El ejemplo siguiente muestra cómo se especifican los tipos de tablas 'VIEW' y 'SYSTEM TABLE' como un literal de cadena.

? SQLTABLES(handle, "'VIEW', 'SYSTEM TABLE'", "mydbresult")
cCursorName
Especifica el nombre del cursor de Visual FoxPro al que se envía el conjunto de resultados. Si no incluye un nombre de cursor, Visual FoxPro utilizará el nombre predeterminado SQLRESULT.

La tabla siguiente muestra las columnas del cursor.

Nombre de columna | Descripción
TABLE_QUALIFIER | Identificador del calificador de la tabla
TABLE_OWNER | Identificador del propietario de la tabla
TABLE_NAME | El nombre de la tabla tal como aparece en el diccionario de datos
TABLE_TYPE | El tipo de la tabla tal como aparece en el diccionario de datos
REMARKS | Una descripción de la tabla

Return Values

Numérico. SQLTABLES( ) devuelve 1 si se crea el cursor, 0 si sigue ejecutándose SQLTABLES( ), – 1 si se produce un error de nivel de conexión y – 2 si se produce un error de nivel de entorno.

Remarks

SQLTABLES( ) es una de las cuatro funciones que se pueden ejecutar en modo síncrono o asíncrono. El valor Asíncrona de SQLSETPROP( ) determina si estas funciones se ejecutan en modo síncrono o asíncrono. En modo asíncrono, deberá llamar a SQLTABLES( ) repetidamente hasta que devuelva un valor distinto de falso (.F.), lo que significa que la función sigue ejecutándose.

Ejemplo

El siguiente ejemplo asume que está disponible un origen de datos ODBC llamado MyFoxSQLNT . SQLCONNECT( ) es ejecutado, y devuelve un valor que es almacenado en una variable llamada gnHandle.

Si no puede conectarse al origen de datos, SQLCONNECT( ) devuelve un número negativo y aparece un mensaje.

Si es posible conectar con el origen de datos, SQLCONNECT( ) devuelve un número positivo y se muestra un cuadro de diálogo. Se utiliza SQLTABLES( ) para crear un cursor denominado mycursor que contiene información acerca de las tablas del origen de datos. LIST se utiliza para mostrar información acerca de las tablas.

STORE SQLCONNECT('MyFoxSQLNT', '<userid>', '<password>') TO gnConnHandle
IF gnConnHandle < 0
IF AERROR(laError) > 0
MESSAGEBOX('No fue posible establecer conexión: '+laError[2], 16, 'SQL Connect Error')
ENDIF
ELSE
= MESSAGEBOX('Connection made', 48, 'SQL Connect Message')
IF SQLTABLES(gnHandle, 'TABLE', 'mycursor') = 1
SELECT mycursor
LIST
= SQLDisconnect(gnHandle)
ELSE
IF AERROR(laError) > 0
MESSAGEBOX('Error al obtener tablas:"+laError[2],16,'SQL Tablas Error')
ENDIF
ENDIF
ENDIF

Vea también

AERROR( ) | SQLCOLUMNS( ) | SQLCONNECT( ) | SQLGETPROP( ) | SQLSETPROP( )


SQRT( ) (Función)

Devuelve la raíz cuadrada de la expresión numérica especificada.

SQRT(nExpression)

Valores devueltos

Numérico

Parámetros

nExpression
Especifica la expresión numérica que se va a evaluar con SQRT( ). nExpression no puede ser un número negativo.

Observaciones

El número de lugares decimales del valor devuelto por SQRT( ) es el mayor valor de lugares decimales actual y el número de lugares decimales contenidos en nExpression. La configuración actual de lugares decimales se especifica con SET DECIMALS.

Ejemplo

CLEAR
? SQRT(4)  && Displays 2.00
? SQRT(2*SQRT(2))  && Displays 1.68

Vea también

SET DECIMALS | COS( ) (Función) | SIN( ) (Función)


SROWS( ) (Función)

Devuelve el número de filas disponibles en la ventana principal de Visual FoxPro.

SROWS( )

Valores devueltos

Numérico

Observaciones

En Visual FoxPro para Windows, el valor devuelto por SROWS( ) depende del modo de presentación actual. El modo de presentación puede cambiarse con SET DISPLAY.

Ejemplo

CLEAR
? SROWS( )

Vea también

COL( ) | ROW( ) | SCOLS( ) | SET DISPLAY | WCOLS( ) | WROWS( )


STR( ) (Función)

Devuelve el carácter equivalente a una expresión numérica especificada.

STR(nExpression [, nLength [, nDecimalPlaces]])

Valores devueltos

Character

Parámetros

nExpression
Especifica la expresión numérica evaluada por STR( ).
nLength
Especifica la longitud de la cadena de caracteres devuelta por STR( ). La longitud incluye un carácter para la coma decimal y otro por cada dígito a la derecha de la coma decimal.

STR( ) llena la cadena de caracteres con espacios al principio si especifica una longitud mayor que el número de dígitos a la izquierda de la coma decimal. STR( ) devuelve una cadena de asteriscos, que indica desbordamiento numérico, si especifica una longitud inferior al número de dígitos a la izquierda de la coma decimal.

Si nExpression es de tipo Numérico o Float, STR( ) devuelve un valor en notación científica si nLength es menor que el número de dígitos de nExpression. Si nExpression es un entero, STR( ) devuelve una cadena de asteriscos, que indica desbordamiento numérico, si nLength es menor que el número de dígitos de nExpression.

Si no se incluye nLength, la longitud de la cadena de caracteres cambia de forma predeterminada a 10 caracteres.

nDecimalPlaces
Especifica el número de lugares decimales de la cadena de caracteres devuelta por STR( ). Debe incluir nLength para especificar el número de lugares decimales.

Si se especifican menos caracteres decimales de los que contiene nExpression, El valor devuelto se redondeará.

Si no se incluye nDecimalPlaces, el valor predeterminado para lugares decimales es cero.

Vea también

VAL( ) | Crear expresiones de tipo Numérico | STRCONV( ) (Función)


STRCONV( ) (Función)

Interconvierte las expresiones de caracteres de un byte, dos bytes, UNICODE y las representaciones específicas de configuraciones regionales.

STRCONV(cExpression, nConversionSetting [, nLocaleID])

Parámetros

cExpression
Especifica la expresión de caracteres que convierte STRCONV( ).
nConversionSetting
Especifica el tipo de conversión. En la siguiente tabla se muestran los valores de nConversionSetting y el tipo de conversión realizada.
nConversionSetting | Conversion
1 | Convierte caracteres de un byte en caracteres cExpression de dos bytes.
2 | Convierte los caracteres de dos bytes en cExpression en caracteres de un byte.
3 | Convierte los caracteres Katakana de dos bytes de cExpression en caracteres Hiragana de dos bytes.
4 | Convierte los caracteres Hiragana de dos bytes de cExpression en caracteres Katakana de dos bytes.
5 | Convierte los caracteres de dos bytes en UNICODE (caracteres anchos).
6 | Convierte los caracteres UNICODE (anchos) en caracteres de dos bytes.
7 | Convierte cExpression en minúsculas específicas de la configuración regional.
8 | Convierte cExpression en mayúsculas específicas de la configuración regional.
9 | Convierte los caracteres de dos bytes de cExpression a UTF-8
10 | Convierte caracteres Unicode de cExpression a UTF-8
11 | Convierte caracteres UTF-8 de cExpression a caracteres de dos bytes.
12 | Convierte caracteres UTF-8 de cExpression a caracteres UNICODE.
13 | Convierte caracteres de un byte en cExpression a binario base64 codificado.
14 | Convierte caracteres de un byte en cExpression a binario base64 decodificado.
15 | Convierte caracteres de un byte en cExpression a hexBinario codificado.
16 | Convierte caracteres de un byte en cExpression a hexBinario decodificado.
nLocaleID
Especifica el Id. local que se utilizará para la conversión. Si nLocaleID no es válido o no es compatible con el equipo, se generará el error "Id. local no válido". Si se omite nLocaleID, se utilizará de forma predeterminada el Id. local del sistema.
nLocaleID Idioma
1029
Checo
1031
Alemán
1033
Inglés (predeterminado)
1034
Español
1036
Francés
1040
Italiano
1045
Polaco
1046
Portuguese (Brazil)
2070
Portuguese (Portugal)

Valores regresados

Dato de tipo Carácter. STRCONV( ) regresa la expresión de caracteres convertida.

Observaciones

Visual FoxPro descarta los caracteres inválidos o de longitud incorrecta de las cadenas codificadas en base64 y hexBinario.

Esta función es útil para manipular juegos de caracteres de dos bytes para idiomas como Hiragana y Katakana.

Vea también

CHRTRANC( ) | IMESTATUS( ) | ISLEADBYTE( )


STREXTRACT( ) (Función)

Recupera una cadena existente entre dos delimitadores.

STREXTRACT(cSearchExpression, cBeginDelim [, cEndDelim [, nOccurrence
[, nFlag]]]])

Parámetros

cSearchExpression
Especifica la cadena que hay que buscar.
cBeginDelim
Especifica el carácter que delimita el principio de cSearchExpression.
cEndDelim
Especifica el carácter que delimita el final de cSearchExpression.
nOccurrence
Especifica la instancia de cBeginDelim en cSearchExpression en la que se inicia la extracción.
nFlag
Especifica el tipo de controles que se colocan en la búsqueda. El número especificado en nFlags proporciona un valor de bits que determina ciertas opciones de la manera indicada en la tabla siguiente:
Bit Descripción
1
No se distingue entre mayúsculas y minúsculas en la búsqueda
2
No es necesario un delimitador final. Especifica que una búsqueda que no encuentra ninguna instancia de cEndDelim devolverá el contenido de cSearchExpression desde la ubicación cBeginDelim.

Devuelve

Carácter

Observaciones

De manera predeterminada, la búsqueda de los delimitadores distingue entre mayúsculas y minúsculas (no hay ningún valor de nFlag).

Si cBeginDelim es una cadena vacía, se realiza la búsqueda desde el principio de cSearchExpression hasta la primera instancia de cEndDelim. Si cEndDelim es una cadena vacía, STREXTRACT( ) devuelve una cadena desde la instancia nOccurrence de cBeginDelim hasta el final de cSearchExpression.

Ejemplo

clear
USE customer && any table
?cursortoxml(0,"x",1,0,2)   && Produce variable "x" that has XML of  first 2 records of table
?x         && show the XML
xmlproc(x,0)      && Parse the XML
PROCEDURE xmlproc(x as String, nLev as Integer)   as void
LOCAL cTagName, cContents, mterm
do while .t.
cTagName = STREXTRACT(x,"<",">")
IF LEN(cTagName) = 0   && no tag found
??' ',x   && print out raw string as contents
exit
endif
IF RIGHT(cTagName,1) = '/'   && like "<region/>"
cTagName = LEFT(cTagName, LEN(cTagName)-1)
cContents=""
mterm = "<"+cTagName+"/>"   && "<region/>"
else
mterm = "</"+cTagName+">"   && "</region>"
cContents = STREXTRACT(x,"<"+cTagName+">", mterm,1,2)
endif
?REPLICATE("  ",nLev),nLev+1,PADR(cTagName,20)
xmlproc(cContents, nLev+1)
x = STREXTRACT(x, mterm)   && get the rest of the xml
enddo

Vea también

STRTRAN( ) (Función) | RAT( ) (Función) | RATC( ) (Función) | SUBSTR( ) (Función) | SUBSTRC( ) (Función) | LIKEC( ) (Función)


STRTOFILE( ) (Función)

Escribe el contenido de una cadena de caracteres en un archivo.

STRTOFILE(cExpression, cFileName [, lAdditive | nFlag])

Valor devuelto

Numérico; el número de bytes escritos en el archivo.

Parámetros

cExpression
Especifica la cadena de caracteres que se escribe en el archivo. cExpression puede ser una cadena literal de caracteres, una expresión que da como resultado una cadena de caracteres o una variable, elemento de matriz o campo de tipo Carácter.
cFileName
Especifica el nombre del archivo en el que se escribe la cadena de caracteres. Incluya una ruta de acceso con el nombre de archivo si el archivo está en un directorio distinto del directorio predeterminado actual. Si el archivo que especifica no existe, Visual FoxPro lo creará automáticamente.
lAdditive (por compatibilidad con las versiones anteriores)
Especifica si se anexa la cadena de caracteres al final del archivo. Si lAdditive es verdadero (.T.), la cadena de caracteres se anexa al final del archivo.

Si lAdditive es falso (.F.) (el valor predeterminado), el archivo se sobrescribe con la cadena de caracteres. Se le pregunta si desea sobrescribir un archivo existente si SET SAFETY está establecido en ON. Si SET SAFETY está establecido en OFF, el archivo se sobrescribe sin avisar.

nFlag
A partir de Visual FoxPro 7, puede utilizar el parámetro nFlag en lugar de lAdditive; esto le permitirá escribir el byte de marcas de orden Unicode y UTF-8. En la tabla siguiente se describen los valores válidos de nFlag.
nFlag | Bit | Descripción
0 (predeterminado) | 0000 | Se sobrescribe el archivo con la cadena de caracteres (antes lAdditive=.f.)
1 | 0001 | Se anexa la cadena al final del archivo (antes lAdditive=.t.).
2 | 0010 | Se escribe una marca de orden de bytes (BOM) Unicode FF FE al principio del archivo. Se supone que cExpression tiene formato UNICODE y por lo tanto, no hay que realizar una conversión. Se sobrescribe el archivo.
4 | 0100 | Se escribe una marca de orden de bytes (BOM) UTF-8 EF BB BF al principio del archivo. Se supone que cExpression tiene formato UTF-8 y por lo tanto, no hay que realizar una conversión. Se sobrescribe el archivo.

Observaciones

Los valores 3 y 5 del parámetro nFlag no son válidos. No puede intentar escribir una marca de orden de bytes nueva si el bit 1 de nFlag, Additive, está establecido.

A diferencia de lo que ocurría en las versiones anteriores de Visual FoxPro, ahora STRTOFILE( ) abre un archivo en modo Compartido (no en modo Exclusivo). Esto resulta útil cuando varios servidores intentan escribir simultáneamente en el mismo archivo. Debido a este cambio, es posible que no tenga que comprobar si STRTOFILE( ) devuelve 0 (no se puede abrir un archivo).

Vea también

FILETOSTR( ) | FWRITE( ) | SET SAFETY

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


STRTRAN( ) (Función)

Busca en una expresión de caracteres o en un campo memo las apariciones de una segunda expresión de caracteres o campo memo, y luego reemplaza cada aparición con una tercera expresión de caracteres o campo memo.

STRTRAN(cSearched, cExpressionSought [, cReplacement] [, nStartOccurrence] [, nNumberOfOccurrences] [, nFlags])

Valores devueltos

Carácter

Parámetros

cSearched
Especifica la expresión de caracteres en la que hay que buscar. El valor de cSearched puede ser un campo memo.
cExpressionSought
Especifica la expresión de caracteres que se busca en cSearched. La búsqueda distingue entre mayúsculas y minúsculas. El valor de cExpressionSought puede ser un campo memo.
cReplacement
Especifica la expresión de caracteres que sustituye cada aparición de cSearchFor en cSearched. Si se omite cReplacement, las instancias de cExpressionSought se reemplazarán por una cadena vacía.
nStartOccurrence
Especifica la instancia de cExpressionSought que se reemplazará en primer lugar. Por ejemplo, si el valor de nStartOccurrence es 4, se empezará a reemplazar a partir de la cuarta instancia de cExpressionSought en cSearched; las tres primeras instancias de cExpressionSought permanecerán sin cambios. La instancia en la que se empieza a reemplazar será de manera predeterminada la primera instancia de cExpressionSought (si se omite nStartOccurrence).
nNumberOfOccurrences
Especifica el número de instancias de cExpressionSought que hay que reemplazar. Si omite nNumberOfOccurrences, se reemplazarán todas las instancias cExpressionSought (empezando por la especificada con nStartOccurrence).
nFlags
Especifica si en la búsqueda se distingue entre mayúsculas y minúsculas, de acuerdo con los siguientes valores:
Valor de nFlag | Descripción
0 (predeterminado) | La búsqueda distingue entre mayúsculas y minúsculas, se reemplaza por la expresión exacta de cReplacement. Esta es la manera de proceder en versiones de Visual FoxPro anteriores a la 7.
1 | La búsqueda no distingue entre mayúsculas y minúsculas, se reemplaza por la expresión exacta de cReplacement .
2 | La búsqueda distingue entre mayúsculas y minúsculas, se reemplaza por la expresión de cReplacement en formato mayúsculas o minúsculas según el texto encontrado.
3 | La búsqueda no distingue entre mayúsculas y minúscula, se reemplaza por la expresión de cReplacement en mayúsculas o minúsculas según el texto encontrado. En este caso cReplacement, solo será reemplazado si la cadena encontrada esta toda en mayúsculas, minúsculas o en el caso de ser un título (propiedad).

También puede especificar el comportamiento predeterminado transfiriendo –1 como el valor de nFlags.

Observaciones

También puede especificar dónde comienza la sustitución y cuántas sustituciones se harán. STRTRAN( ) devuelve la cadena de caracteres resultante. Especifique –1 en los parámetros opcionales que desee omitir si sólo tiene que especificar el valor de nFlags.

Ejemplo

STORE 'abracadabra' TO gcString
? STRTRAN(gcString, 'a', 'z')  && Displays zbrzczdzbrz
? STRTRAN(gcString, 'a', 'q', 2, 3)  && Displays abrqcqdqbra

Vea también

CHRTRAN( ) | CHRTRANC( ) | STUFF( ) | Crear expresiones de tipo Carácter STUFFC( ) (Función)


STUFF( ) (Función)

Devuelve una cadena de caracteres creada al sustituir un número específico de caracteres de una expresión de caracteres por otra.

STUFF(cExpression, nStartReplacement, nCharactersReplaced, cReplacement)

Valores devueltos

Character

Parámetros

cExpression
Especifica la expresión de caracteres en la que se producirá la sustitución.
nStartReplacement
Especifica la posición en cExpression donde comenzará la sustitución.
nCharactersReplaced
Especifica el número de caracteres que se reemplazarán. Si nCharactersReplaced es 0, la cadena de sustitución cReplacement se insertará en cExpression.
cReplacement
Especifica la expresión de caracteres de sustitución. Si cReplacement es una cadena vacía, se eliminará de cExpression el número de caracteres especificado en nCharactersReplaced.

Ejemplo

STORE 'abcdefghijklm' TO gcString1
STORE '12345' TO gcString2
CLEAR
? STUFF(gcString1, 4, 0, gcString2)     && insert
? STUFF(gcString1, 4, 3, gcString2)     && replace
? STUFF(gcString1, 4, 6, '')     && delete
? STUFF(gcString1, 4, 1, gcString2)     && replace and insert
? STUFF(gcString1, 4, 4, gcString2)     && replace and delete
? STUFF(gcString1, 4, LEN(gcString1), gcString2)   && replace, delete rest

Vea también

LEFT( ) | PADC( ) | PADL( ) | PADR( ) | RIGHT( ) | STRTRAN( ) | SUBSTR( )


STUFFC( ) (Función)

Devuelve una cadena de caracteres creada al sustituir un número específico de caracteres de una expresión de caracteres por otra.

STUFFC(cExpression, nStartReplacement, nCharactersReplaced, cReplacement)

Valores devueltos

Character

Parámetros

cExpression
Especifica la expresión de caracteres en la que se producirá la sustitución.
nStartReplacement
Especifica la posición del carácter en cExpression en la cual se realizará la sustitución.
nCharactersReplaced
Especifica el número de caracteres que se reemplazarán. Si nCharactersReplaced es 0, se insertará toda la cadena de sustitución cReplacement en cExpression.
cReplacement
Especifica la expresión de caracteres de sustitución. Si cReplacement es una cadena vacía, se eliminará de cExpression el número de caracteres especificado en nCharactersReplaced.

Observaciones

STUFFC( ) se ha diseñado para expresiones que contengan caracteres de dos bytes. Si la expresión sólo contiene caracteres de un byte, STUFFC( ) será equivalente a STUFF( ).

STUFFC( ) devuelve una cadena de caracteres creada por medio de la sustitución de un número determinado de caracteres en una expresión de caracteres, por otra expresión de caracteres. Las expresiones de caracteres pueden estar formadas por cualquier combinación de caracteres de un byte y de dos bytes.

Esta función es útil para manipular juegos de caracteres de dos bytes para idiomas como Hiragana y Katakana.

Vea también

LEFTC( ) | RIGHTC( ) | STUFF( ) | SUBSTRC( )


SUBSTR( ) (Función)

Devuelve un número de caracteres específico de una expresión de caracteres o un campo memo.

SUBSTR(cExpression, nStartPosition [, nCharactersReturned])

Valores devueltos

Carácter

Parámetros

cExpression
Especifica la expresión de caracteres o el campo memo desde los que se devuelve la cadena de caracteres.
nStartPosition
Especifica la posición en la expresión de caracteres o en la cExpression del campo memo desde la que se devuelve la cadena de caracteres. El primer carácter de cExpression es la posición 1.

Si la posición especificada es mayor que el número de caracteres de cExpression, se devolverá una cadena vacía.

nCharactersReturned
Especifica el número de caracteres que se devuelve de cExpression. Si se omite nCharactersReturned, los caracteres se devolverán hasta llegar al final de la expresión de caracteres.

Observaciones

SUBSTR( ) devuelve una cadena de caracteres de una expresión de tipo Carácter o de un campo memo, a partir de la posición especificada en la expresión Character o el campo memo, y hasta el número especificado de caracteres.

Cuando utilice SUBSTR( ) con campos memo en un comando SELECT – SQL, incluya la función PADR( ) en SUBSTR( ) de modo que los campos memo vacíos o de longitud variable produzcan resultados coherentes cuando se conviertan a cadenas de caracteres.

SUBSTR( ) no devolverá ningún valor para un campo memo si se ejecuta en la ventana Depuración. Para devolver un valor en la ventana Depuración, incluya el nombre del campo memo en ALLTRIM( ) e incluya ALLTRIM( ) en SUBSTR( ).

Ejemplo

STORE 'abcdefghijklm' TO mystring
CLEAR
? SUBSTR(mystring, 1, 5)  && Muestra abcde
? SUBSTR(mystring, 6)  && Muestra fghijklm

Vea también

AT( ) | AT_C( ) | ATC( ) | ATCC( ) | ATCLINE( ) | ATLINE( ) | LEFT( ) | PADR( ) | RAT( ) | RATLINE( ) | RIGHT( ) | LEFTC( ) | RIGHTC( ) | SUBSTRC( ) | STRTRAN( ) | STUFF( )

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


SUBSTRC( ) (Función)

Devuelve un número de caracteres específico de una expresión de caracteres o un campo memo.

SUBSTRC(cExpression, nStartPosition [, nCharactersReturned])

Valores devueltos

Character

Parámetros

cExpression
Especifica la expresión de caracteres o el campo memo desde los que se devuelve la cadena de caracteres.
nStartPosition
Especifica la posición en la expresión de caracteres o en la cExpression del campo memo desde la que se devuelve la cadena de caracteres. El primer carácter de cExpression es la posición 1.

Si TALK está establecido en ON y nStartPosition es mayor que el número de caracteres de cExpression, Visual FoxPro genera un mensaje de error. Si TALK está establecido en OFF, se devolverá una cadena vacía.

nCharactersReturned
Especifica el número de caracteres que se devuelve de cExpression. Si se omite nCharactersReturned, los caracteres se devolverán hasta llegar al final de la expresión de caracteres.

Observaciones

SUBSTRC( ) se ha diseñado para expresiones que contengan caracteres de dos bytes. Si la expresión contiene sólo caracteres de un byte, SUBSTRC( ) es igual a SUBSTR( ).

SUBSTRC( ) devuelve una cadena de caracteres a partir de la expresión de caracteres o del campo memo especificados. La expresión de caracteres o el campo memo pueden contener cualquier combinación de caracteres de uno y de dos bytes.

SUBSTRC( ) no devolverá un valor para un campo memo si se ejecuta en la ventana Depuración. Si desea que se devuelva un valor en la ventana Depuración, coloque el nombre del campo memo en ALLTRIM( ) y coloque ALLTRIM( ) en SUBSTRC( ).

Esta función es útil para manipular juegos de caracteres de dos bytes para idiomas como Hiragana y Katakana.

Vea también

AT( ) | AT_C( ) | ATC( ) | ATCC( ) | ATCLINE( ) | ATLINE( ) | LEFT( ) | RAT( ) | RATLINE( ) | RIGHT( ) | LEFTC( ) | RIGHTC( ) | SUBSTR( ) | STRTRAN( ) | STUFFC( )


SYS( ) Introducción a las funciones

Devuelve información del sistema de Microsoft Visual FoxPro.

SYS( )

Valores devueltos

Carácter

Observaciones

Las funciones SYS( ) de Visual FoxPro devuelven valores de carácter que contienen información útil del sistema.

Para obtener Ayuda para una función SYS( )

  • Resalte la función SYS( ) en la ventana Comandos o en un programa, y presione la tecla F1.

La tabla siguiente muestra lo que devuelve cada función SYS( ).

Función | Información devuelta
SYS(0) | Número de equipo de red
SYS(1) | Fecha juliana
SYS(2) | Segundos desde la medianoche
SYS(3) | Nombre legal de archivo
SYS(5) | Unidad predeterminada
SYS(6) | Dispositivo de impresora actual
SYS(7) | Archivo de formato actual
SYS(9) | Número de serie de Visual FoxPro
SYS(10) | Cadena de número de día juliano
SYS(11) | Número de día juliano
SYS(12) | Memoria disponible en bytes
SYS(13) | Estado de la impresora
SYS(14) | Expresión de índice
SYS(15) | Traducción de caracteres
SYS(16) | Nombre de archivo del programa en ejecución
SYS(17) | Procesador en uso
SYS(18) | Control actual
SYS(20) | Transf. texto Alemán
SYS(21) | Número de índice de control
SYS(22) | Nombre de índice o etiqueta de control
SYS(23) | Uso de memoria EMS de Visual FoxPro
SYS(24) | Límite de memoria EMS
SYS(100) | Ajuste de CONSOLE Incluído para compatibilidad con versiones anteriores. En su lugar utilice SET("CONSOLE").
SYS(101) | Ajuste de DEVICE Incluído para compatibilidad con versiones anteriores. En su lugar utilice SET("DEVICE").
SYS(102) | Ajuste de PRINTER Incluído para compatibilidad con versiones anteriores. En su lugar utilice SET("PRINTER").
SYS(103) | Ajuste de TALK Incluído para compatibilidad con versiones anteriores. En su lugar utilice SET("TALK").
SYS(602) | Configuración de mapa de bits
SYS(1001) | Memoria de Visual FoxPro
SYS(1011) | Número de identificadores de memoria
SYS(1016) | Uso de la memoria de objetos de usuario
SYS(1023) | Activar el modo de diagnóstico de Ayuda
SYS(1024) | Desactivar el modo de diagnóstico de Ayuda
SYS(1037) | Cuadro de diálogo Configurar página
SYS(1104) | Purgar la memoria almacenada en caché
SYS(1269) | Información de propiedad
SYS(1270) | Ubicación del objeto
SYS(1271) | Archivo .SCX del objeto
SYS(1272) | Jerarquía del objeto
SYS(1500) | Activar un elemento de menú
SYS(2000) | Coincidencia con comodín de nombre de archivo
SYS(2001) | Estado de comandos SET
SYS(2002) | Activar o desactivar cursor
SYS(2003) | Directorio actual
SYS(2004) | Directorio de inicio de Visual FoxPro
SYS(2005) | Archivo de recursos actual
SYS(2006) | Tarjeta gráfica actual
SYS(2007) | Valor de suma de comprobación
SYS(2010) | Configuración del archivo CONFIG.SYS
SYS(2011) | Estado actual de bloqueo
SYS(2012) | Tamaño de bloque de campos memo
SYS(2013) | Cadena de nombre de menú del sistema
SYS(2014) | Ruta de acceso mínima
SYS(2015) | Nombre único de procedimiento
SYS(2016) | Nombre SHOW GETS WINDOW
SYS(2017) | Valor de suma de comprobación basado en el registro actual en el área de trabajo actual
SYS(2018) | Parámetro de mensaje de error
SYS(2019) | Nombre y posición del archivo de configuración
SYS(2020) | Tamaño predeterminado del disco
SYS(2021) | Expresión filtrada de índice
SYS(2022) | Tamaño de clúster de disco (bloque)
SYS(2023) | Unidad de archivos temporales
SYS(2029) | Tipo de tabla
SYS(2030) | Depurar
SYS(2040) | Detectar estado de informe
SYS(2060) | Manipulación de la configuración del evento Mouse wheel
SYS(2300) | Agregar o quitar página de códigos
SYS(2333) | Compatibilidad con interfaz dual ActiveX
SYS(2334) | Modo de invocación del servidor de automatización
SYS(2335) | Modo de servidor desatendido.
SYS(2336) | Soporte de sección fundamental
SYS(2339) | Llamar a CoFreeUnusedLibraries al liberar un objeto COM
SYS(2340) | Soporte de servicio NT
SYS(2410) | Manejo de tipo de error
SYS(2450) | Orden de búsqueda de la ruta de una aplicación
SYS(2600) | Devolver puntero en forma de cadena
SYS(2700) | Activar temas en Windows XP
SYS(2800) | Soporte de accesibilidad
SYS(2801) | Soporte de seguimiento de eventos
SYS(3004) | Devolver Id. de configuración regional
SYS(3005) | Establecer Id. de configuración regional
SYS(3006) | Establecer los Id. de idioma y de configuración regional
SYS(3050) | Establecer el tamaño de memoria de búfer
SYS(3051) | Establecer el intervalo de intento de bloqueo
SYS(3052) | Pasar por alto el bloqueo SET REPROCESS
SYS(3053) | Identificador de entorno ODBC
SYS(3054) | Nivel de optimización Rushmore
SYS(3055) | Complejidad de las cláusulas FOR y WHERE
SYS(3056) | Leer valores del registro
SYS(3095) | Puntero Idispatch
SYS(3096) | Referencia de objeto Idispatch
SYS(3097) | Agregar referencia a objeto
SYS(3098) | Liberar referencia de objeto
SYS(3099) | Modo de compatibilidad para SQL Data Engine

Vea también

Ventana Comandos | SET (Comando) | SET SYSFORMATS (Comando) | SET SYSMENU (Comando)


SYS(0) - Información de equipo de red

SYS(0) devuelve información acerca del equipo de red cuando se utiliza Visual FoxPro en un entorno de red. La misma funcionalidad está disponible al utilizar ID( ).

SYS(0)

Valores devueltos

Character

Observaciones

El software de red debe asignar primero la información de equipo y se debe cargar el shell de la red.

Si no se ha asignado información del equipo o no se ha cargado el shell de la red, SYS(0) devolverá una cadena de caracteres con 15 espacios, un signo (#) seguido de otro espacio y un 0. Para obtener más información acerca de cómo definir la información del equipo consulte la documentación de la red.

SYS(0) devuelve 1 cuando se utiliza Visual FoxPro en un entorno independiente.

Cuando la PC está conectada a la red, SYS(0) devuelve el nombre del equipo, un espacio, un signo numérico (#) seguido por otro espacio, y luego el identificador del usuario actual (o el contexto de seguridad en el que Visual FoxPro se está ejecutando). Por ejemplo:

? SYS(0)

Regresa el siguiente formato:

MACHINEID # userid

Vea también

SYS( ) - Introducción a las funciones | ID( ) - Información de equipo de red | Considerar problemas de hardware, memoria y red


SYS(1) - Fecha juliana del sistema

Devuelve la fecha actual del sistema como una cadena de caracteres del número de día juliano.

SYS(1)

Valores devueltos

Character

Observaciones

El valor devuelto por SYS(1) es valido en las versiones para EE.UU. de Visual FoxPro, para cualquier fecha del sistema posterior al 14 de septiembre de 1752 y anterior al 31 de diciembre de 9999.

Ejemplo

? SYS(1)
? SYS(10,VAL(SYS(1)))

Vea también

CDOW( ) | CTOD( ) | DATE( ) | DATETIME( ) | DAY( ) | DOW( ) | DTOC( ) | SYS( ) - Introducción a las funciones | SYS(10) - Cadena de número de día juliano | SYS(11) - Número de día juliano


SYS(2) - Segundos desde medianoche

Devuelve el número de segundos transcurridos desde la medianoche.

SYS(2)

Valores devueltos

Character

Ejemplo

? TIME( )
? SYS(2)

Vea también

DATETIME( ) | SECONDS( ) | SYS( ) - Introducción a las funciones | TIME( )


SYS(3) - Nombre legal de archivo

Devuelve un nombre de archivo legal que puede utilizarse para crear archivos temporales.

SYS(3)

Valores devueltos

Carácter

Observaciones

SYS(3) puede devolver un nombre no único cuando se ejecuta sucesivamente en un PC rápido. Utilice SUBSTR(SYS(2015), 3) para crear un nombre de archivo único y válido, de ocho caracteres.

Nota Evite utilizar esta cadena en CREATE TABLE, CREATE CURSOR, SELECT INTO CUROSR y en otros comandos similares. Si se utiliza esta cadena, se generará un error, ya que un cursor o un nombre de alias válido de FoxPro no puede empezar por un número. Si ha utilizado SUBSTR(SYS(2015), 3) para crear una tabla o un nombre de cursor únicos sin agregar explícitamente como prefijo un carácter de subrayado (_) o un carácter alfabético, puede corregir el código de las maneras siguientes:
En una plataforma que admite nombres de archivo largos
Utilice SYS(2015), ya que siempre empezará por un carácter de subrayado.
En plataformas y redes que sólo admiten la convención de nomenclatura 8+3 de DOS
Modifique la expresión de asignación de nombres para que agregue explícitamente un carácter de subrayado como prefijo, como en el siguiente ejemplo:
   "_"+SUBSTR(SYS(2015), 4)

Vea también

FILE( ) | SYS( ) - Introducción a las funciones | SYS(2015) - Nombre único de procedimiento

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


SYS(5) - Unidad predeterminada

Devuelve la unidad predeterminada actual de Visual FoxPro.

SYS(5)

Valores devueltos

Character

Observaciones

Esta función devuelve la unidad predeterminada actual de Visual FoxPro. Utilice SET DEFAULT para especificar una unidad predeterminada.

Ejemplo

IF _DOS OR _WINDOWS
SET DEFAULT TO C:
ENDIF
? SYS(5)

Vea también

DRIVETYPE( ) | SET DEFAULT | SYS( ) - Introducción a las funciones


SYS(6) - Dispositivo actual de impresora

Devuelve el dispositivo de impresión actual.

SYS(6)

Valores devueltos

Character

Observaciones

Esta función devuelve la configuración actual de SET PRINTER TO.

Ejemplo

? SYS(6)
SET PRINTER TO output.txt
? SYS(6)

Vea también

SET PRINTER | SYS( ) - Introducción a las funciones | GETPRINTER( ) (Función)


SYS(7) - Archivo de formato actual

Devuelve el nombre del archivo de formato actual.

SYS(7 [, nWorkArea])

Valores devueltos

Character

Parámetros

nWorkArea
Especifica el número del área de trabajo cuyo nombre de archivo de formato devuelve SYS(7). El nombre del archivo de formato para el área de trabajo actual es el que se devuelve cuando se omite nWorkArea.

Observaciones

Un archivo de formato se abre con SET FORMAT. Si no hay ningún archivo de formato abierto para el área de trabajo especificada, se devuelve la cadena vacía.

Vea también

SET FORMAT | SYS( ) - Introducción a las funciones | SET SYSFORMATS (Comando)


SYS(9) - Número de serie de Visual FoxPro

Devuelve su número de serie de Visual FoxPro.

SYS(9)

Valores devueltos

Character

Vea también

SYS( ) - Introducción a las funciones | VERSION( ) | Personalizar el entorno de Visual FoxPro


SYS(10) - Cadena de número de día juliano

Convierte un número de día juliano en una cadena de caracteres.

SYS(10, nJulianDayNumber)

Valores devueltos

Character

Observaciones

SYS(10) devuelve una fecha de tipo Carácter a partir de un número de día del calendario juliano nJulianDayNumber.

Ejemplo

? SYS(1)
? SYS(10,VAL(SYS(1)))

Vea también

CDOW( ) | CTOD( ) | DATE( ) | DATETIME( ) | DAY( ) | DOW( ) | DTOC( ) | SYS( ) - Introducción a las funciones | SYS(1) - Fecha juliana del sistema | SYS(11) - Número de día juliano


SYS(11) - Número de día juliano

Convierte una expresión de fecha o una cadena de caracteres con formato de fecha en un número de día juliano.

SYS(11, dExpression | tExpression | cExpression)

Valores devueltos

Character

Observaciones

SYS(11) devuelve un número de día juliano a partir de una expresión de fecha dExpression, una expresión de fecha y hora tExpression o una expresión de tipo Carácter cExpression en un formato de fecha. El número de día se devuelve como una cadena de caracteres.

Ejemplo

? SYS(11, {^1998-06-06})
? SYS(11,'06/06/1998')

Vea también

CDOW( ) | CTOD( ) | DATE( ) | DATETIME( ) | DAY( ) | DOW( ) | DTOC( ) | SYS( ) - Introducción a las funciones | SYS(10) - Cadena de número de día juliano


SYS(12) - Memoria disponible en bytes

Devuelve la cantidad de memoria por debajo de los 640 KB que está disponible para ejecutar un programa externo.

SYS(12)

Valores devueltos

Character

Observaciones

En Visual FoxPro, SYS(12) devuelve siempre 655.360.

SYS(12) es similar a MEMORY( ) con dos excepciones:

  • SYS(12) devuelve la cantidad de memoria disponible en bytes. MEMORY( ) devuelve la memoria disponible en kilobytes.
  • SYS(12) devuelve una cadena de caracteres. MEMORY( ) devuelve un valor numérico.

Vea también

MEMORY( ) | RUN | ! | SYS( ) - Introducción a las funciones | SYS(23) - Uso de memoria EMS de Visual FoxPro | SYS(24) - Límite de memoria EMS | SYS(1001) - Memoria de Visual FoxPro | SYS(1016) - Uso de memoria de objeto de usuario


SYS(13) - Estado de la impresora

Incluido por compatibilidad con versiones anteriores. Devuelve el estado de la impresora.

SYS(13)

Valores devueltos

Carácter

Observaciones

Se devuelve OFFLINE si la impresora no está preparada. Se devuelve READY si la impresora ya está preparada.

Si la impresora está conectada a un puerto COM, SYS(13) devuelve READY en caso de que la impresora devuelva "Lista para enviar datos" o "Conjunto de datos preparado".

Si la impresora está conectada a un puerto paralelo, SYS(13) devolverá OFFLINE si la impresora devuelve los mensajes "Sin papel", "Error de E/S", "Retraso", "Impresora ocupada" o "Impresora no seleccionada".

Ejemplo

IF SYS(13) = 'OFFLINE'
WAIT WINDOW 'Impresora fuera de linea'
ENDIF

Vea también

PRINTSTATUS( ) | SET PRINTER | SYS( ) - Introducción a las funciones


SYS(14) - Expresión de índice

Devuelve la expresión de índice de un archivo de índice .IDX de una sola entrada que esté abierto o las expresiones de las etiquetas en los archivos de índice compuesto .CDX.

SYS(14, nIndexNumber [, nWorkArea | cTableAlias])

Valores devueltos

Character

Parámetros

nIndexNumber
Especifica la expresión de índice que se va a devolver desde los archivos o etiquetas de índice abiertos. SYS(14) devuelve expresiones de índice desde los archivos y etiquetas de índice abiertos en el orden indicado a continuación a medida que nIndexNumber aumenta desde 1 al número total de archivos de una sola entrada abiertos, y de etiquetas de índice compuesto estructural y compuesto independiente:
  1. Primero se devuelven las expresiones de índice de los archivos de índice de entrada única (si hay alguno abierto). El orden en que están incluidos los archivos de índice de entrada única en USE o SET INDEX determina el orden en que se devuelven las expresiones de índice.
  2. A continuación, se devuelven las expresiones de índice para cada etiqueta del índice compuesto estructural (si hay alguno presente). Las expresiones de índice se devuelven de las etiquetas en el orden en que se crearon las etiquetas en el índice estructural.
  3. Por último, se devuelven las expresiones de índice para cada etiqueta de los índices compuestos independientes que haya abiertos. Las expresiones de índice se devuelven de las etiquetas en el orden en que se crearon las etiquetas en los índices compuestos independientes.

La cadena vacía se devuelve si nIndexNumber es mayor que el número total de archivos de una sola entrada abiertos y de etiquetas de índice compuesto estructural y compuesto independiente.

nWorkArea | cTableAlias
Especifica un número o un alias de área de trabajo. Si omite nWorkArea y nTableAlias, las expresiones de índice se devuelven desde los archivos de índice abiertos en el área de trabajo actual. Si no hay ninguna tabla que tenga el alias especificado, Visual FoxPro genera un mensaje de error.

Observaciones

Una expresión de índice se especifica cuando se crea un archivo o una etiqueta de índice con INDEX. La expresión de índice determina cómo se mostrará y se tendrá acceso a una tabla cuando se utiliza un archivo o una etiqueta de índice para ordenar la tabla.

Para obtener más información acerca de las expresiones de índice y la creación de archivos y etiquetas de índice, vea INDEX. SYS(14) es similar a la función KEY( ).

USE y SET INDEX aceptan una lista de nombres de archivos de índice que le permite abrir archivos de índice para una tabla. En la lista de archivos de índice puede incluir cualquier combinación de nombres de archivos de índice de entrada única, compuestos estructurales o compuestos independientes.

Vea también

CDX( ) | KEY( ) | INDEX | MDX( ) | NDX( ) | REINDEX | SET INDEX | SET ORDER | SYS( ) - Introducción a las funciones | TAG( )


SYS(15) - Traducción de caracteres

Se incluye por compatibilidad con versiones anteriores. Utilice SET COLLATE en su lugar.

SYS(15, cTranslationExpression, cTranslated)

Valores devueltos

Carácter

Parámetros

cTranslationExpression
Especifica la expresión de carácteres que utiliza SYS(15) para traducir cTranslated.
cTranslated
Especifica la expresión de carácteres que se va a traducir. SYS(15) utiliza el primer carácter de cTranslated y determina el valor ASCII del carácter. Se devuelve el carácter de cTranslationExpression que está en la misma posición que el valor ASCII. Este proceso se repite para cada carácter adicional de cTranslated. Si un carácter de cTranslated no tiene un carácter correspondiente en cTranslationExpression, no se traducirá.

Observaciones

Visual FoxPro incluye un archivo de variable de memoria, denominado EUROPEAN.MEM, que contiene carácteres de traducción de ejemplo. En FoxPro para MS-DOS y en Visual FoxPro, EUROPEAN.MEM se encuentra en el directorio HOME( ). En FoxPro para Macintosh, EUROPEAN.MEM se encuentra en la carpeta Goodies:Misc.

En EUROPEAN.MEM hay una variable de memoria de tipo Carácter denominada EUROPEAN, que puede utilizar con SYS(15) en FoxPro para MS-DOS. Se proporciona otra variable de memoria de tipo Carácter, EUROANSI, para utilizarla con SYS(15) en Visual FoxPro y en FoxPro para Macintosh. Estas variables de memoria se pueden utilizar con SYS(15) para traducir carácteres acentuados a los caracteres correspondientes sin los acentos.

Como ejemplo, se puede utilizar el siguiente comando en FoxPro para MS-DOS para indexar una tabla en un campo que contenga carácteres acentuados, conservando el orden alfabético normal:

INDEX ON SYS(15, european, field) TO european

Vea también

SYS( ) - Introducción a las funciones | SET COLLATE


SYS(16) - Nombre de archivo del programa en ejecución

Devuelve el nombre de archivo del programa que se está ejecutando. Puede utilizar SYS(16) para recuperar errores.

SYS(16 [, nProgramLevel])

Parámetros

nProgramLevel
Indica de cuántos niveles anteriores se ha cargado el nombre del programa. Este argumento puede valer entre 1 y la profundidad de anidación de los programas.

Si nProgramLevel es 0 ó 1, SYS(16) devuelve el nombre del programa principal (el programa que se ejecutó primero). Si se omite nProgramLevel, se devolverá el nombre del programa que se esté ejecutando actualmente. Si nProgramLevel es mayor que la profundidad de anidación del programa, se devolverá la cadena vacía.

Valores devueltos

Carácter

Observaciones

SYS(16) es similar a PROGRAM( ) excepto que SYS(16) devuelve la ruta de acceso con el nombre del programa. Cuando el programa en ejecución forma parte de una aplicación (.app), SYS(16) devuelve únicamente el nombre del programa; no se devuelve la ruta de acceso con el nombre del programa. SYS(16) devuelve el nombre del ejecutable si es llamado desde un archivo ejecutable (.exe); mientras PROGRAM( ) devuelve solamente el nombre del programa. Si se está ejecutando un procedimiento o una función, SYS(16) devolverá también el nombre del archivo que contiene el procedimiento o la función después del nombre de éstos.

Ejemplo

Puede devolverse el anidamiento del programa con el pequeño programa de ejemplo siguiente:

STORE 1 TO gnX
DO WHILE LEN(SYS(16,gnX)) != 0
? SYS(16,gnX)
STORE gnX+1 TO gnX
ENDDO

Vea también

LINENO( ) | ON ERROR | PROGRAM( ) | SYS( ) - Introducción a las funciones


SYS(17) - Procesador en uso

Devuelve la unidad central de procesamiento (CPU) que se está utilizando.

SYS(17)

Valores devueltos

Carácter (Character)

Observaciones

Esta función devuelve el tipo de la unidad central de procesamiento que está utilizando.

Ejemplo

? 'Processor in use: ', SYS(17)

Vea también

SYS( ) - Introducción a las funciones | SET DEVICE | SYS(100) - Configuración de CONSOLE


SYS(18) - Control actual

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar la propiedad ActiveControl.


SYS(20) - Transformar texto alemán

Se incluye por compatibilidad con versiones anteriores. Utilice SET COLLATE en su lugar.


SYS(21) - Número de índice de control

Devuelve, como una cadena de caracteres, el número de posición de índice de la etiqueta de índice compuesto .CDX maestro de control o del archivo de índice .IDX para el área de trabajo seleccionada actualmente.

SYS(21)

Valores devueltos

Character

Observaciones

El número de posición de índice está determinado por el orden en que se especifican los archivos de índice .idx y las etiquetas de índice compuesto .cdx en USE y SET INDEX.

Puede utilizar SET INDEX, SET ORDER y USE para especificar qué archivo de índice .idx o qué etiqueta de índice compuesto .cdx es el archivo o etiqueta de índice de control maestro. Para obtener más información acerca de la especificación de una etiqueta o un índice de control maestro, vea SET INDEX, SET ORDER y USE.

Se devuelve "0" si no hay ninguna etiqueta de índice compuesto .cdx o ningún archivo de índice .idx maestro de control (por ejemplo, SET ORDER TO se ejecuta para presentar y tener acceso a la tabla en el orden natural de los registros).

Vea también

CDX( ) | KEY( ) | INDEX | MDX( ) | NDX( ) | REINDEX | SET INDEX | SET ORDER | SYS( ) - Introducción a las funciones | SYS(22) - Nombre de índice o etiqueta de control | TAG( ) | USE


SYS(22) - Nombre de índice o etiqueta de control

Devuelve el nombre de la etiqueta de índice compuesto .CDX o del archivo de índice .IDX maestro de control para una tabla.

SYS(22 [, nWorkArea])

Valores devueltos

Character

Observaciones

Puede utilizar SET INDEX, SET ORDER y USE para especificar qué archivo de índice .idx o qué etiqueta de índice compuesto .cdx es el archivo o etiqueta de índice de control maestro. Para obtener más información acerca de la especificación de una etiqueta o un índice de control maestro, vea SET INDEX, SET ORDER y USE.

Se devuelve la cadena vacía si no hay ninguna etiqueta de índice compuesto .CDX o ningún archivo de índice .IDX maestro de control (por ejemplo, SET ORDER TO se ejecuta para presentar y tener acceso a la tabla en el orden natural de los registros).

nWorkArea
Especifica el número de área de trabajo de la tabla para la cual SYS(22) devuelve el nombre de la etiqueta de índice compuesto .cdx o del archivo de índice .idx maestro de control.

Vea también

CDX( ) | KEY( ) | INDEX | MDX( ) | NDX( ) | REINDEX | SET INDEX | SET ORDER | SYS( ) - Introducción a las funciones | SYS(21) - Número de índice de control | TAG( )


SYS(23) - Uso de memoria EMS de Visual FoxPro

Incluido por compatibilidad con versiones anteriores.

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


SYS(24) - Límite de memoria EMS

Incluido por compatibilidad con versiones anteriores.


SYS(602) - Configuración de mapa de bits

Devuelve la configuración actual del mapa de bits incluida en el archivo de configuración actual y activa o desactiva bitmaps fuera de pantalla en tiempo de ejecución.

SYS(602 [, 0 | 1 ])

Parámetros

0
Desactiva los mapas de bits fuera de pantalla en tiempo de ejecución.
1
Activa los mapas de bits fuera de pantalla en tiempo de ejecución

Valores devueltos

Tipo de dato Carácter. La siguiente tabla lista las posibles configuraciones que SYS(602) puede devolver.

Valor devuelto | Configuración
0 | Los mapas de bits fuera de pantalla son desactivados.
1 | Los mapas de bits fuera de pantalla son activados. (Predeterminado)

Observaciones

Puede utilizar un mapa de bits fuera de pantalla para guardar una imagen del escritorio actual y formularios para que pueda presentarlos si otro elemento, como una ventana, es arrastrado encima de ellos. Sin embargo, los mapas de bits fuera de pantalla utilizan mucha memoria, así que usted puede mejorar el rendimiento en las aplicaciones del Terminal Server desactivando estos mapas de bits utilizando SYS(602).

Sin embargo, esté consciente que conmutar mapas de bits fuera de pantalla puede afectar su aplicación. Por ejemplo, los controles del formulario pueden parecer normales, sin embargo, escribir directamente a un formulario utilizando un método como Line exige que los mapas de bits fuera de pantalla estén activados.

Si quiere determinar si una aplicación está corriendo en un Terminal Server, utilice OS(10).

Vea también

SYS( ) - Introducción a las funciones | OS( ) (Función) | Términos especiales para archivos de configuración


SYS(1001) - Memoria de Visual FoxPro

Devuelve la cantidad total de memoria disponible para el administrador de memoria de Visual FoxPro.

SYS(1001)

Valores devueltos

Character

Observaciones

En Visual FoxPro, SYS(1001) devuelve el tamaño de memoria virtual, que es aproximadamente cuatro veces la cantidad de memoria física.

Vea también

SYS( ) - Introducción a las funciones | SYS(12) - Memoria disponible en bytes | SYS(23) - Uso de memoria EMS de Visual FoxPro | SYS(24) - Límite de memoria EMS | SYS(1016) - Uso de memoria de objeto de usuario


SYS(1011) - Número de identificadores de memoria

Devuelve el número de identificadores de memoria en uso.

SYS(1011)

Valores devueltos

Numérico

Observaciones

Puede utilizar SYS(1011) para comprobar el uso de la memoria al ejecutar una prueba repetidas veces. Un aumento de los valores sólo entre las dos primeras ejecuciones podría indicar un almacenamiento en caché. Un aumento de los valores después de este punto podría indicar un problema.

Vea también

SYS( ) - Introducción a las funciones | SYS(12) - Memoria disponible en bytes | SYS(1016) - Uso de memoria de objeto de usuario


SYS(1016) - Uso de memoria de objeto de usuario

Devuelve la cantidad de memoria utilizada por los objetos que usted define.

SYS(1016)

Valores devueltos

Character

Observaciones

Entre los objetos definidos por el usuario se incluyen: ventanas definidas por el usuario, barras de menús, menús, variables, matrices, tablas abiertas, archivos abiertos con funciones de archivo de bajo nivel, etc.

Vea también

SYS( ) - Introducción a las funciones | SYS(12) - Memoria disponible en bytes | SYS(23) - Uso de memoria EMS de Visual FoxPro | SYS(24) - Límite de memoria EMS | SYS(1001) - Memoria de Visual FoxPro


SYS(1023) - Activar modo de diagnóstico de Ayuda

Activa el modo de diagnóstico de Ayuda, que le permite interceptar el HelpContextID que se transfiere al sistema de Ayuda de Visual FoxPro.

SYS(1023)

Valores devueltos

Character

Observaciones

SYS(1023) es útil para depurar un sistema personalizado de Ayuda para su aplicación. SYS(1023) devuelve la cadena vacía.

Cuando se activa el modo de diagnóstico de Ayuda con SYS(1023), aparece un cuadro de diálogo siempre que se presiona F1 o se ejecuta HELP. El cuadro de diálogo muestra el HelpContextID que se pasa al sistema de Ayuda de Visual FoxPro y se le da la opción de pasar el HelpContextID al sistema de Ayuda de Visual FoxPro.

Si responde afirmativamente, HelpContextID se transferirá al sistema de Ayuda de Visual FoxPro y se mostrará el tema de Ayuda correspondiente (si está disponible). Si responde negativamente, HelpContextID no se transferirá y no se mostrará el tema de Ayuda correspondiente.

Utilice SYS(1024) para desactivar el modo de diagnóstico de Ayuda y restaurar el procesamiento predeterminado del sistema de Ayuda de Visual FoxPro.

Vea también

HELP | HelpContextID (Propiedad) | SET HELP | SYS(1024) - Desactivar modo de diagnóstico de Ayuda


SYS(1024) - Desactivar modo de diagnóstico de Ayuda

Desactiva el modo de diagnóstico de Ayuda activado con SYS(1023).

SYS(1024)

Valores devueltos

Character

Observaciones

Utilice SYS(1024) para desactivar el modo de diagnóstico de Ayuda activado con SYS(1023) y restaurar el procesamiento predeterminado del sistema de Ayuda de Visual FoxPro. SYS(1023) se usa para depurar un sistema de Ayuda personalizado para su aplicación.

SYS(1024) devuelve la cadena vacía.

Vea también

HELP | HelpContextID (Propiedad) | SET HELP | SYS(1023) - Activar modo de diagnóstico de Ayuda


SYS(1037) - Cuadro de diálogo Configurar página

Muestra el cuadro de diálogo Configurar página

SYS(1037)

Valores devueltos

Carácter

Observaciones

SYS(1037) muestra el cuadro de diálogo Configurar página, que le permite realizar ajustes en la configuración de impresión, como el tamaño y la orientación del papel. Los valores que puede ajustar en este cuadro de diálogo dependen de la impresora que tenga instalada.

SYS(1037) siempre devuelve una cadena vacía.

Vea también

GETPRINTER( ) | PRINTSTATUS( ) | SET DEVICE | SET PRINTER | Cuadro de diálogo Configurar página


SYS(1104) - Purgar caché de memoria

Purga la memoria almacenada en caché por programas y datos, además limpia actualiza búferes de tablas abiertas.

SYS(1104)

Valores devueltos

Numérico. Devuelve 0 si se ejecuta correctamente.

Observaciones

Puede mejorar el rendimiento llamando a SYS(1104) después de ejecutar comandos que utilizan de forma intensiva los búferes de memoria. Esta función también limpia los búferes internos para tablas abiertas, forzando que las tablas se actualicen, lo cual es útil con tablas grandes y en entorno multiusuario.

Nota El uso de SYS(1104) disminuye el rendimiento en aplicaciones que tienen un gran número de tablas abiertas almacenadas en búfer.

Vea también

CLEAR (Comando) | RELEASE (Comando) | CLOSE (Comando) | FLUSH (Comando) | SET REFRESH


SYS(1270) - Ubicación de objetos

Devuelve una referencia para un objeto en el punto especificado.

SYS(1270 [, nXCoord, nYCoord])

Valores devueltos

Object, Logical

Parámetros

nXCoord
Especifica la coordenada horizontal, en píxeles, en el escritorio de Windows.
nYCoord
Especifica la coordenada vertical, en píxeles, en el escritorio de Windows.

Observaciones

Si omite las coordenadas nXCoord y nYCoord, se devuelve una referencia al objeto que está bajo la posición actual del ratón. Si incluye las coordenadas nXCoord y nYCoord, se devuelve una referencia al objeto en esa ubicación.

Se devuelve falso (.F.) si ningún objeto está bajo el puntero del ratón ni en las coordenadas especificadas con nXCoord y nYCoord.

Vea también

AMOUSEOBJ( ) | CREATE FORM | GETPEM( ) | PEMSTATUS( ) | SYS(1269) - Información de propiedad | SYS(1271) - Archivo .SCX del objeto | SYS(1272) - Jerarquía de objetos | ASELOBJ( ) (Función)


SYS(1271) - Archivo .SCX del objeto

Devuelve el nombre del archivo .SCX o .VCX en el que se almacena la instancia del objeto especificado.

SYS(1271, oObjectName)

Valores devueltos

Character, Logical

Parámetros

oObjectName
Especifica el nombre del objeto para el que se devuelve el archivo .scx.

Observaciones

SYS(1271) devuelve el nombre del archivo .scx en el que se almacena la instancia del objeto especificado.

SYS(1271) devuelve un valor lógico falso (.F.) si el objeto no se puede localizar en un archivo .scx (por ejemplo, si el objeto se ha creado en la ventana Comandos).

Vea también

CREATE FORM | GETPEM( ) | PEMSTATUS( ) | SYS(1269) - Información de propiedad | SYS(1270) - Ubicación de objetos | SYS(1272) - Jerarquía de objetos


SYS(1272) - Jerarquía de objetos

Devuelve la jerarquía de objetos para un objeto especificado. No está disponible en tiempo de diseño.

SYS(1272, oObjectName)

Valores devueltos

Character

Parámetros

oObjectName
Especifica el nombre del objeto para el que se devuelve la jerarquía.

Vea también

CREATE FORM | GETPEM( ) | PEMSTATUS( ) | SYS(1269) - Información de propiedad | SYS(1270) - Ubicación de objetos | SYS(1271) - Archivo .SCX del objeto


SYS(1500) - Activar un elemento de menú del sistema

Activa un elemento de menú del sistema de Visual FoxPro.

SYS(1500, cSystemItemName, cMenuName)

Valores devueltos

Character

Parámetros

cSystemItemName
Especifica el nombre del elemento de menú del sistema de Visual FoxPro que hay que activar.
cMenuName
Especifica el nombre del menú del sistema o submenú de Visual FoxPro que contiene el elemento de menú.

Observaciones

Vea Nombres de menús del sistema para obtener una lista de los nombres de menús y elementos de menú de Visual FoxPro. También puede usar SYS(2013) - Cadena de nombre de menú del sistema para mostrar una lista de los nombres de menús y elementos de menú de Visual FoxPro.

Los elementos de menú definidos por el usuario y los menús del sistema desactivados no se pueden activar con SYS(1500).

SYS(1500) devuelve la cadena vacía.

Ejemplo

El siguiente ejemplo usa SYS(1500) para pegar un comando en un archivo de programa.

_CLIPTEXT = "MESSAGEBOX('TEST')"  && Command to paste
MODIFY COMMAND myprog NOWAIT  && Open a program file
SYS(1500, '_MED_PASTE', '_MEDIT')  && Paste menu item

Vea también

SYS(2013) - Cadena de nombre de menú del sistema | Nombres de menús del sistema | MODIFY COMMAND (Comando) | _CLIPTEXT (Variable del sistema)


SYS(2000) - Coincidencia comodín de nombre de archivo

Devuelve el nombre del primer archivo en orden alfabético (por nombre de archivo y extensión) que coincide con la máscara del nombre de archivo.

SYS(2000, Máscara [, 1])

Valores devueltos

Carácter

Parámetros

Máscara
Especifica la máscara del nombre de archivo. La máscara del archivo puede contener los caracteres comodín ? y *.
1
Devuelve el nombre del siguiente archivo coincidente.

Observaciones

La cadena vacía se devuelve si no se encuentra ningún archivo coincidente.

Ejemplo

? SYS(2000,'FOX.*')
? SYS(2000,'FOX.*',1)

Vea también

LOCFILE( ) | SYS( ) - Introducción a las funciones

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


SYS(2001) - Estado de comandos SET ...

Devuelve el estado actual de los comandos SET especificados.

SYS(2001, cSETCommand [, 1 | 2])

Valores devueltos

Carácter

Parámetros

cSETCommand
Especifica el comando SET cuyo estado devuelve SYS(2001).
1 | 2
Algunos comandos SET tienen dos o más configuraciones (por ejemplo, SET PRINTER ON, SET PRINTER OFF y SET PRINTER TO NombreArchivo. Utilice SYS(2001) sin 1 ni 2 para devolver la configuración del conmutador ON u OFF. Utilice SYS(2001) con 1 ó 2 para devolver las configuraciones adicionales. Vea SET( ) para obtener una lista de comandos SET para los que se devuelve información adicional al incluir 1 ó 2.

Observaciones

SYS(2001) es idéntica a SET( ).

Ejemplo

? SYS(2001,'PRINTER')
? SYS(2001,'PRINTER',1)

Vea también

SET( ) | SYS( ) - Introducción a las funciones | SET PRINTER | SET

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


SYS(2002) - Activar o desactivar el punto de inserción

Activa o desactiva el punto de inserción.

SYS(2002 [, 1])

Valores devueltos

None

Observaciones

SYS(2002) desactiva el punto de inserción. SYS(2002, 1) activa el punto de inserción. Para obtener más información acerca de cómo activar y desactivar el punto de inserción, vea SET CURSOR.

Vea también

INKEY( ) | SET CURSOR | SYS( ) - Introducción a las funciones


SYS(2003) - Directorio actual

Devuelve el nombre del directorio actual de la unidad o volumen predeterminados.

SYS(2003)

Valores devueltos

Character

Observaciones

Puede utilizar SYS(5) para determinar la unidad actual.

Vea también

SYS( ) - Introducción a las funciones | No se puede cambiar el nombre del directorio actual (Error 1253) | SYS(5) - Unidad predeterminada


SYS(2004) - Directorio de inicio de Visual FoxPro

Devuelve el nombre del directorio desde el que se inició Visual FoxPro.

SYS(2004)

Valores devueltos

Carácter (Character)

Observaciones

SYS(2004) devuelve la ubicación del archivo Vfp7r.dll o Vfp7t.dll en una aplicación de Visual FoxPro en tiempo de ejecución.

Ejemplo

? 'Visual FoxPro launch directory: ', SYS(2004)

Vea también

HOME( ) | SET PATH | SYS( ) - Introducción a las funciones


SYS(2005) - Archivo actual de recursos

Devuelve el nombre del archivo actual de recursos de Visual FoxPro.

SYS(2005)

Valores devueltos

Carácter (Character)

Observaciones

El archivo de recursos de Visual FoxPro es una tabla de Visual FoxPro que contiene información acerca de los recursos del sistema y definidos por el usuario, como macros de teclado, preferencias, ubicación y dimensiones de ventanas del sistema, entradas de agenda, etc.

El archivo de recursos de Visual FoxPro predeterminado es Foxuser.dbf. Utilice SET RESOURCE para especificar otro archivo de recursos para Visual FoxPro.

Ejemplo

? 'Current resource file: ', SYS(2005)

Vea también

SET RESOURCE | SYS( ) - Introducción a las funciones


SYS(2006) - Tarjeta gráfica actual

Devuelve el tipo de tarjeta gráfica y de monitor que está usando.

SYS(2006)

Valores devueltos

Character

Ejemplo

? 'Current graphics card/monitor: ', SYS(2006)

Vea también

ISCOLOR( ) | SET DISPLAY | SYS( ) - Introducción a las funciones


SYS(2007) - Valor de suma de comprobación

Devuelve el valor de suma de comprobación de una expresión de caracteres. Puede utilizar checksum para comprobar la validez de datos o para comparar dos expresiones de caracteres. También puede generar un valor de suma de comprobación mayor que 16 bits para cadenas largas.

SYS(2017) ofrece funcionalidad complementaria generando valores de suma de comprobación basados en el registro actual del área de trabajo seleccionada. Para más información, vea SYS(2017) - Checksum (suma de comprobación) del registro.

SYS(2007, cExpression, [, nSeed, [, nFlags]])

Parámetros

cExpression
Especifica la expresión de caracteres cuyo valor de comprobación devuelve SYS(2007).
nSeed
Especifica un valor numérico 0 como semilla usado para calcular la suma de comprobación, se incluye por compatibilidad. Pasando un valor de -1 para nSeed utiliza el valor predefinido de 0. Para cálculos CRC32, Visual FoxPro ignora nSeed.
nFlags
Establece un bit adicional para generar la suma de comprobación.

Las versiones de Visual FoxPro anteriores a la 8.0 utilizaban un algoritmo CRC16 de 16-bit para calcular el valor de la suma de comprobación de cadenas. Visual FoxPro ahora incluye la rutina CRC32 para calcular valores largos de 32-bit. Puede controlar la configuración de este algoritmo estableciendo el valor del primer bit en el parámetro nFlags.

La siguiente tabla muestra el valor del bit que puede establecer para producir uno de los valores para nFlags.

Valor | Bit | Descripción
1 | 001 | Calcula el valor de suma de comprobación usando el algoritmo CRC32.

La siguiente tabla muestra los posibles valores para nFlags, producidos al establecer el bit adicional.

nFlags | Descripción
0 | Calcula la suma de comprobación basado en el parámetro cExpression utilizando el algoritmo CRC16. (Predeterminado)
1 | Calcula la suma de comprobación basado en el parámetro cExpression utilizando el algoritmo CRC32.

Por ejemplo, si desea usar el algoritmo CRC32 para calcular la suma de comprobación basado en cExpression, debe especificar un valor de 1 para nFlags. Para utilizar el algoritmo CRC16, establezca un valor 0 para nFlags.

Valores devueltos

Dato tipo Carácter

Vea también

SET RESOURCE | SYS( ) - Introducción a las funciones | Crear expresiones de tipo Carácter


SYS(2010) - Configuración del archivo CONFIG.SYS

Devuelve la configuración de archivos de CONFIG.SYS.

SYS(2010)

Valores devueltos

Character

Observaciones

En FoxPro para MS-DOS, SYS(2010) devuelve, en forma de una cadena de caracteres, los archivos establecidos en su archivo de configuración CONFIG.SYS.

En Visual FoxPro, SYS(2010) devuelve siempre 255.

La mayoría de los archivos CONFIG.SYS contienen una línea que especifica el número máximo de archivos que pueden abrirse a la vez bajo MS-DOS. Esta línea contiene habitualmente FILES=NNN, donde NNN es un número. SYS(2010) devuelve ese número.

Un archivo de configuración Config.sys no tiene que tener necesariamente una configuración de archivos; es más, no es necesario tener un archivo Config.sys. SYS(2010) devolverá la configuración de archivos de MS-DOS predeterminada en cada caso.

El número devuelto por SYS(2010) no es el número de archivos que puede abrir en Visual FoxPro y FoxPro para Windows y FoxPro para MS-DOS. MS-DOS abre archivos para su propio uso. Visual FoxPro y FoxPro para Windows también abren archivos para su propio uso interno y el número de estos archivos abiertos puede variar a lo largo de una sesión de FoxPro. La configuración de archivos del archivo Config.sys debe ser algo mayor que el número de archivos que desee abrir en Visual FoxPro.

Si desea obtener más información acerca del archivo de configuración Config.sys, consulte el manual de MS-DOS.

Vea también

SYS( ) - Introducción a las funciones | SYS(2019) - Nombre y ubicación del archivo de configuración | Utilizar un archivo de configuración


SYS(2011) - Estado actual de bloqueo

Devuelve el estado de bloqueo del registro o de la tabla del área de trabajo activa.

SYS(2011)

Valores devueltos

Carácter

Observaciones

A diferencia de las funciones FLOCK( ), LOCK( ) y RLOCK( ), SYS(2011) no intenta bloquear la tabla o el registro.

La cadena de caracteres devuelta por SYS(2011) es idéntica al mensaje que se muestra en la barra de estado (Exclusivo, Registro desbloqueado, Registro bloqueado, etc.).

SYS(2011) devuelve Exclusivo únicamente en la estación de trabajo que abrió la tabla de forma exclusiva y Registro bloqueado únicamente en la estación de trabajo que aplicó el bloqueo del registro.

Vea también

FLOCK( ) | LOCK( ) | RLOCK( ) | SYS( ) - Introducción a las funciones | ISFLOCKED( ) (Función) | ISRLOCKED( ) (Función)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


SYS(2012) - Tamaño de bloque de campo memo

Devuelve el tamaño de bloque del campo memo de una tabla.

SYS(2012 [, nWorkArea | cTableAlias])

Valores devueltos

Character

Parámetros

nWorkArea | cTableAlias
Especifica el número de área de trabajo o el alias de la tabla cuyo tamaño de bloque del campo memo se devuelve. nWorkArea especifica un número de área de trabajo y cTableAlias especifica un alias de tabla. Si no especifica ninguna área de trabajo ni alias, SYS(2012) devuelve el tamaño de bloque del campo memo para la tabla abierta en el área de trabajo actualmente seleccionada.

SYS(2012) devuelve 0 si una tabla no está abierta en el área de trabajo especificada o la tabla no tiene un campo memo.

Observaciones

Para obtener más información acerca de la especificación del tamaño de bloque del campo memo para una tabla, vea SET BLOCKSIZE.

Vea también

SET BLOCKSIZE | Tipo de campo Memo | Rutinas de entrada y resultado de campos memo


SYS(2013) - Cadena de nombre de menús del sistema

Devuelve una cadena de caracteres delimitada por espacios que contiene los nombres internos del sistema de menús de Visual FoxPro.

SYS(2013)

Valores devueltos

Character

Observaciones

SYS(2013) facilita el uso de la barra de menús y de los menús del sistema de Visual FoxPro. La cadena de caracteres devuelta contiene el nombre de la barra de menús del sistema, los títulos de menú y el nombre de cada elemento de los menús.

SYS(2013) devuelve los nombres de los títulos y los elementos de menú para cada plataforma de FoxPro. En Nombres de menús del sistema encontrará una lista de títulos y elementos de menús de Visual FoxPro.

Vea también

DEFINE BAR | DEFINE MENU | DEFINE POPUP | SYS( ) - Introducción a las funciones | SYS(1500) - Activar un elemento de menú del sistema | Nombres de menús del sistema


SYS(2014) - Ruta de acceso mínima

Devuelve la ruta de acceso mínima relativa al directorio actual o especificado para un archivo especificado.

SYS(2014, cFileName [, Path])

Valores devueltos

Character

Parámetros

cFileName
Especifica el nombre del archivo para el cual SYS(2014) devuelve la ruta de acceso mínima. Si omite Path, SYS(2014) devolverá la ruta de acceso mínima entre el archivo y el directorio actual. Puede cambiar el directorio actual con SET DEFAULT.
Path
Especifica un directorio para el cual SYS(2014) devuelve la ruta de acceso mínima entre el directorio especificado y el archivo especificado con cFileName.

Observaciones

SYS(2014) puede usarse con FULLPATH( ) para hacer que las aplicaciones sean portátiles. Es decir, cuando se indique la ubicación del archivo actual y la de otros archivos usados por el programa, FULLPATH( ) y SYS(2014) obtendrán las rutas de acceso adecuadas para estos archivos. Una vez determinadas las rutas de acceso de los archivos, el programa podrá tener acceso a ellos.

Vea también

FULLPATH( ) | SET DEFAULT | SET PATH | SYS( ) - Introducción a las funciones


SYS(2015) - Nombre único de procedimiento

Devuelve un nombre único de procedimiento, de 10 caracteres, que empieza por un signo de subrayado y va seguido de una combinación de letras y números.

SYS(2015)

Valores devueltos

Character

Observaciones

SYS(2015) puede usarse para crear nombres únicos de procedimientos o de funciones.

El nombre que devuelve SYS(2015) se crea a partir de la fecha y la hora del sistema. Llamar a SYS(2015) más de una vez durante el mismo intervalo de milisegundos devolverá una cadena de caracteres única.

Vea también

SYS( ) - Introducción a las funciones | SYS(3) - Nombre legal de archivo | SYS(1) - Fecha juliana del sistema


SYS(2016) - Nombre SHOW GETS WINDOW

Se incluye por compatibilidad con versiones anteriores. Utilice el método Refresh en lugar de SHOW GETS.


SYS(2017) - Checksum (suma de comprobación) del registro

Devuelve el valor de una suma de chequeo (checksum) basandose en el registro actual del area de trabajo actual. Use un checksum para verificar la validez de un dato. También se pueden generar valores checksum mayores de 16 bits para cadenas largas.

SYS(2017) ofrece funcionalidad complementaria a SYS(2007) - Valor del Checksum.

SYS(2017, cExpresión [, nSemilla [, nBanderas]])

Parámetros

cExpresión
Especifica una lista delimitada por comas, con o sin espacios, que contiene uno o mas campos para excluirlos del cálculo del checksum. La longitud maxima de la cadena para el campo esta limitada a 256 caracteres.

Si cExpresión esta vacía, Visual FoxPro no excluirá campos a excepción de los campos Memo y General.

nSemilla
Especifica un valor semilla numérico en 0 que es utilizado para calcular el checksum, incluido por compatibilidad con versiones anteriores. Al pasar un valor -1 para nSemilla se usa el valor por omision 0. En cálculos CRC32, Visual FoxPro ignora nSemilla.
nBanderas
Especifica un valor de bit adicional para generar el checksum.

Versiones anteriores a Visual Foxpro 8.0 usaban un algoritmo de 16 bits CRC16 para calcular el valor checksum de una cadena. Visual FoxPro incluye ahora la rutina CRC32 para calcular valores mayores de 32 bit. Puede controlar la configuración de este algoritmo por medio del valor del primer bit del parámetro nBanderas.

La siguiente tabla muestra una lista de los valores de bits que se pueden añadir para producir un valor para nBanderas.

Valor | Bits | Descripción
1 | 001 | Calcula el valor checksum usando el algoritmo de checksum CRC32.
2 | 010 | Incluye los campos Memo fields en el cálculo del checksum.

Utilice el segundo bit de nBanderas para incluir los campos Memo en el cálculo CRC. Visual FoxPro incluye en el cálculo todos los campos Memo exceptuando aquellos especificados en cExpresión.

La siguiente tabla muestra una lista de los posibles valores para nBanderas.

nBanderas | Descripción
0 | Calcula checksum basandose en el parámetro de cExpresión utilizando el algoritmo de checksum CRC16. (Por Omisión)
1 | Calcula checksum basandose en el parámetro de cExpresión utilizando el algoritmo checksum CRC32.
2 | Calcula checksum basandose en el contenido del registro actual incluyendo campos Memo y utilizando CRC16.
3 | Calcula checksum basandose en el contenido del registro actual incluyendo campos Memo y utilizando CRC32.

Valor Devuelto

Tipo de dato Caracter. SYS(2017) devuelve un valor de checksum.

Comentarios

  • Visual FoxPro genera el checksum basandose en el registro actual en el area de trabajo actual y pasando el valor del byte de una cadena a la rutina CRC32.
  • Visual FoxPro devuelve un valor de "0" si no está abierto un cursor en el area de trabajo actual o si el puntero del registro no es válido, por ejemplo, si apunta a un registro fantasma.
  • Cuando se crea una expresión de cadena desde un registro, Visual FoxPro elimina los espacios en blanco y devuelve la expresión como una cadena de caracteres, similar a la funciónALLTRIM( ).
  • Cuando se calcula el valor del checksum desde el registro actual, Visual FoxPro omite los campos Memo y General.
  • Usualmente, Visual FoxPro utiliza todos los campos excluidos especificados en cExpresión para almacenar el valor de checksum y no los incluye en el calculo. Visual FoxPro no realiza controles en el tipo de datos de estos campos. Si cExpresión contiene un campo no válido, Visual FoxPro lo omite.
  • Visual FoxPro calcula el checksum desde todos los campos excepto los campos Memo, General, y aquellos especificados en cExpresión. Determine los campos a usar y el orden de estos, utilizando la función FIELD( ). Si se especifica un valor para SET FIELDS, el checksum se calcula basandose en la lista actual especificada por SET FIELDS la cual podría incluir campos calculados.

    Campos calculados son campos temporales que existen en el cursor actual basandose en una expresión, pero no estan definidos en la estructura de la tabla actual. Por ejemplo, el campo LOCATION es un campo calculado:

    Use Customer
SET FIELDS TO LOCATION = ALLTRIM(city) + ',' + state

Vea También

SYS( ) - Introducción a las funciones | SYS(2007) - Valor de suma de comprobación | SET FIELDS (Comando) | FIELD( ) (Función) | SET RESOURCE | Crear expresiones de tipo Carácter

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


SYS(2018) - Parámetro de mensaje de error

Devuelve el parámetro para el mensaje de error más reciente.

SYS(2018)

Valores devueltos

Character

Observaciones

Algunos mensajes de error devuelven información adicional acerca de la causa del error. Por ejemplo, si hace referencia a una variable que no existe, el nombre de la variable se incluirá en el mensaje de error. SYS(2018) devuelve esta información adicional, denominada parámetro del mensaje de error. Los nombres de las variables y los archivos son tipos comunes de parámetros de mensajes de error.

Suponga que intenta ejecutar un programa llamado REPORTS, pero el programa no existe. El texto del mensaje de error mostrado sería:

File REPORTS does not exist.

REPORTS es el parámetro del mensaje de error y lo devuelve SYS(2018):

? SYS(2018)

Vea también

ERROR( ) | MESSAGE( ) | ON ERROR | SYS( ) - Introducción a las funciones


SYS(2019) - Nombre y ubicación del archivo de configuración

Devuelve el nombre y la ubicación del archivo de configuración de Visual FoxPro.

SYS(2019)

Valores devueltos

Carácter

Observaciones

El archivo de configuración de Visual FoxPro se llama Config.fpw y no se instála de forma predeterminada. Puede crear su propio archivo de configuración Config.fpw con MODIFY FILE.

Si no se encuentra un archivo de configuración, SYS(2019) devuelve una cadena vacía.

El archivo de configuración de Visual FoxPro suele estar ubicado en el directorio en el que se inicia Visual FoxPro, pero puede estar en cualquier otro sitio. Visual FoxPro buscará primero en el directorio de inicio. Si no se encuentra el archivo de configuración en el directorio de inicio, se buscará en la ruta de acceso de MS-DOS. Hay dos formas de indicar a Visual FoxPro dónde está ubicado el archivo de configuración y su nombre:

  • Puede crear una variable de entorno de MS-DOS llamada FOXPROWCFG con el comando SET de MS-DOS y almacenar en ella la ubicación y el nombre del archivo de configuración. En FoxPro para MS-DOS, la variable de entorno de MS-DOS se llama FOXPROCFG.
  • También puede usar el modificador -C al iniciar Visual FoxPro para designar un archivo de configuración. Incluya la ubicación y el nombre del archivo de configuración inmediatamente a continuación de -C.

Para obtener más información acerca del archivo de configuración de Visual FoxPro, vea Personalizar el Entorno de Visual FoxPro.

Vea también

MODIFY FILE | SYS( ) - Introducción a las funciones | Personalizar el Entorno de Visual FoxPro


SYS(2020) - Tamaño predeterminado de disco

Devuelve el tamaño total, en bytes, del disco predeterminado.

SYS(2020)

Valores devueltos

Character

Observaciones

El disco predeterminado puede especificarse con SET DEFAULT.

Vea también

DISKSPACE( ) | SET DEFAULT | SYS( ) - Introducción a las funciones


SYS(2021) - Expresión de índice filtrado

Devuelve la expresión de filtro para un archivo abierto de índice de entrada simple (.idx) o las expresiones de filtro para las etiquetas de archivos de índice compuesto (.cdx).

SYS(2021, nIndexNumber [, nWorkArea | cTableAlias])

Valores devueltos

Character

Parámetros

nIndexNumber
La expresión numérica nIndexNumber especifica qué expresión de filtro se va a devolver desde los archivos de índice abiertos. SYS(2021) devuelve expresiones de filtro desde los archivos de índice abiertos en el orden siguiente, a medida que nIndexNumber aumenta desde 1 hasta alcanzar el número total de archivos de entrada simple abiertos .idx y de etiquetas de índice compuesto estructural e independiente:
  1. Primero se devuelven las expresiones de filtro de los archivos .idx de entrada simple (si hay alguno abierto). El orden en que los archivos .idx de entrada simple se incluyen en USE o SET INDEX determina el orden en que se devolverán las expresiones de filtro.
  2. A continuación se devuelven las expresiones de filtro para cada etiqueta del archivo .cdx estructural (si hay alguno presente). Las expresiones de filtro se devuelven a partir de las etiquetas en el orden en que éstas se crearon en el índice estructural.
  3. Por último, se devuelven las expresiones de filtro para cada etiqueta de cualquier archivo .cdx independiente abierto. Las expresiones de filtro se devuelven a partir de las etiquetas en el orden en que éstas se crearon en los índices compuestos independientes.

Si nIndexNumber es mayor que el número total de archivos de entrada simple abiertos .idx y que las etiquetas de archivos estructurales e independientes .cdx, se devuelve la cadena vacía.

nWorkArea
Especifica el número del área de trabajo para una tabla abierta en otra área de trabajo.
cTableAlias
Especifica un alias para una tabla abierta en otra área de trabajo. Si una tabla no tiene el alias especificado, Visual FoxPro mostrará un mensaje de error.

Observaciones

Es posible crear índices filtrados en Visual FoxPro. Si incluye la cláusula opcional FOR en INDEX, el archivo de índice actuará como filtro para la tabla. Sólo estarán disponibles para su presentación y acceso los registros que coincidan con la expresión de filtro lExpression de la cláusula FOR. Las claves de índice se crean en el archivo de índice sólo para los registros que coinciden con la expresión de filtro.

Si se crea un índice o una etiqueta de índice sin la cláusula FOR, se devolverá una cadena vacía.

USE y SET INDEX admiten el uso de una lista de nombres de archivos de índice que permita abrir archivos de índice para una tabla. En la lista de nombres de archivos de índice puede incluirse cualquier combinación de nombres de archivos .idx de entrada simple, archivos .cdx estructurales y archivos .idx independientes.

SYS(2021) devuelve las expresiones de filtro a partir de los archivos de índice abiertos en el área de trabajo actual, a menos que incluya un alias o un área de trabajo determinados.

Vea también

CDX( ) | KEY( ) | INDEX | MDX( ) | NDX( ) | REINDEX | SET INDEX | SET ORDER | SYS( ) - Introducción a las funciones | TAG( )


SYS(2022) - Tamaño del clúster del disco

Devuelve el tamaño de clúster (bloque), en bytes, de un disco especificado.

SYS(2022 [, cDiskName])

Valores devueltos

Character

Parámetros

cDiskName
Especifica una letra de unidad (A, B, C, ...) para un disco distinto del disco actual predeterminado.

Vea también

SET DEFAULT | SYS( ) - Introducción a las funciones | SYS(2020) - Tamaño predeterminado de disco


SYS(2023) - Ruta de acceso temporal

Devuelve la unidad y el directorio en los que Visual FoxPro almacena sus archivos temporales.

SYS(2023)

Valores devueltos

Character

Observaciones

Puede especificar la unidad y el directorio en los que se almacenan los archivos temporales si incluye el elemento especial de configuración TMPFILES en el archivo de configuración de Visual FoxPro.

Para obtener más información acerca del elemento de configuración especial TMPFILES, vea Personalizar el entorno de Visual FoxPro.

Vea también

SYS( ) - Introducción a las funciones | Personalizar el entorno de Visual FoxPro | SYS(2019) - Nombre y ubicación del archivo de configuración


SYS(2029) - Tipo de tabla

Devuelve un valor correspondiente al tipo de tabla.

SYS(2029 [, nWorkArea | cTableAlias])

Valores devueltos

Character

Parámetros

nWorkArea
Especifica el área de trabajo en la que se abre la tabla.
cTableAlias
Especifica el alias de la tabla. Si omite nWorkArea y cTableAlias, SYS(2029) devolverá un valor para la tabla abierta en el área de trabajo seleccionada actualmente.

Observaciones

La tabla siguiente indica los valores devueltos por SYS(2029) y el tipo de tabla correspondiente.

Valor devuelto | Tipo de tabla
0 | No hay tabla abierta
3 | Versiones anteriores de FoxPro, FoxBASE+, dBASE III PLUS y dBASE IV sin campos memo
48 | Visual FoxPro con o sin campo memo
67 | Tabla SQL de dBASE IV sin campos memo
99 | Tabla SQL System de dBASE IV con un campo memo
131 | Tabla de FoxBASE+ y dBASE III PLUS con un campo memo
139 | Tabla de dBASE IV con un campo memo
203 | Tabla SQL de dBASE IV con un campo memo
245 | Versiones anteriores de FoxPro con un campo memo

Ejemplo

El ejemplo siguiente abre la tabla customer de la base de datos testdata.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE Customer     && Open customer table
CLEAR
DO CASE
CASE SYS(2029) = '3'
? 'Previous versions of FoxPro'
CASE SYS(2029) = '48'
? 'Visual FoxPro Table'
CASE SYS(2029) = '67'
? 'dBASE IV SQL table, no memo fields'
CASE SYS(2029) = '99'
? 'dBASE IV SQL System table with a memo field'
CASE SYS(2029) = '131'
? 'FoxBASE+ table with a memo field'
CASE SYS(2029) = '139'
? 'dBASE IV table with a memo field'
CASE SYS(2029) = '203'
? 'dBASE IV SQL table with a memo field'
CASE SYS(2029) = '245'
? 'Previous versions of FoxPro with a memo field'
ENDCASE

Vea también

ALTER TABLE - SQL | CREATE | CREATE TABLE - SQL | USE


SYS(2030) - Depurar

Habilita o deshabilita las características de depuración en el código de usuario del componente del sistema.

SYS(2030[, 0 | 1])

Parámetros

0
Deshabilita las características de depuración.
1
Habilita las características de depuración que permiten depurar el código de componente del sistema.

Devuelve

Numérico. Valor de la configuración actual.

Observaciones

A partir de Visual FoxPro 7, siempre que el código de usuario ejecute un componente del sistema como _GENMENU o _BROWSER, se deshabilitan directamente determinadas características de depuración (análisis, dohistory, puntos de interrupción y la depuración paso a paso). SYS(2030, 1) permite ejecutar el depurador en este tipo de código de usuario, deshabilitando este nuevo comportamiento predeterminado y volviendo a habilitarlo después de depurar, ejecutando SYS(2030, 0).

Vea también

Depurador | SET ASSERTS | SET STEP


SYS(2040) - Detectar el estado de un informe

Detecta si un informe se está imprimiendo o está en modo de vista previa.

SYS(2040)

Valores devueltos

Tipo Caracter. Devuelve el estado actual del informe como sigue.

Valor | Descripción
0 | No hay ningún informe activo.
1 | El informe está en modo de Vista Previa.
2 | El informe está siendo enviado como salida (como una impresión o archivo).

Observaciones

La función SYS(2040) es útil cuando desea controlar el contenido en un informe dependiendo de cómo esta siendo visualizado. Por ejemplo, puede imprimir un mensaje como "Confidencial" o "Clasificado" pero no lo visualiza cuando un informe está en modo de vista previa.

Ejemplo

El siguiente ejemplo muestra como la función SYS(2040) puede ser usada para suprimir la variable de sistema _PAGETOTAL cuando un informe esta en modo de vista previa.

"Pagina: " + TRANS(_PAGENO) + ;
IIF( SYS(2040) = "1", "", " de " + TRANS(_PAGETOTAL))

Vea también

SYS( ) - Introducción a las funciones | REPORT (Comando)


SYS(2060) - Evento MouseWheel

Activa o desactiva la acumulación de eventos MouseWheel en la cola de eventos.

SYS(2060 [, 0 | 1])

Valores devueltos

Tipo de dato Caracter. Devuelve el valor actual de SYS(2060).

Parámetros

0
Activa la combinación de eventos MouseWheel en la cola de eventos. (Predeterminado)
1
Inactiva la combinación de eventos MouseWheel en la cola de eventos.

Observaciones

Cuando SYS(2060) está establecida a 0, el evento MouseWheel es añadido a la cola de eventos antes de añadir un evento nuevo. Esto crea un desplazamiento suave en PCs más lentos.

Vea también

SYS( ) - Introducción a las funciones | MouseWheel (Evento)


SYS(2300) - Agregar o quitar página de códigos

Agrega o quita una página de códigos de la lista de Compatibilidad con el idioma nacional (National Language Support, NLS).

SYS(2300, nCodePage [, nAction])

Valores devueltos

Numérico. 1 si nCodePage está en la lista; 0 si nCodePage no está en la lista.

Parámetros

nCodePage
Especifica el valor entero de la página de códigos.
nAction
Especifica la acción que se debe realizar en la página de códigos especificada. 0 quita la página de códigos; 1 agrega la página de códigos.

Observaciones

Cuando se incluye una página de códigos en la lista de páginas de códigos admitidas por Visual FoxPro, se utilizan las rutinas de NLS para indización, comparaciones de cadenas, secuencia de ordenación, etc. Con determinadas secuencias de intercalación (por ejemplo, las correspondientes a Ruso, Checo o Húngaro), las comparaciones de cadenas podrían producir valores inesperados, en función de la página de códigos establecida. Para asegurarse de que estas operaciones se realizan correctamente, puede utilizar SYS(2300) en las aplicaciones para determinar si está establecida la página de códigos correcta.

Si crea índices después de utilizar SYS(2300) para habilitar la compatibilidad con NLS para una página de códigos específica, observará un comportamiento extraño en las versiones anteriores de Visual FoxPro, que no ofrecen compatibilidad con NLS para esa página de códigos. Asegúrese de que todo el acceso a datos de Visual FoxPro se realiza desde clientes que tengan SYS(2300) configurada de forma similar.

La lista de NLS incluye 874, 932, 936, 949, 950, 1255 y 1256. Para obtener más información, vea Páginas de códigos compatibles con Visual FoxPro.

Ejemplo

La página de códigos 1250 no se incluye de manera predeterminada en la lista de NLS. Por tanto, algunas comparaciones de cadenas devolverán valores inesperados. Para ver esto, siga los pasos siguientes:

  1. Habilite la compatibilidad con la página de códigos 1250, no incluida en la lista de NLS, agregando la siguiente línea al archivo config.fpw:
    CODEPAGE = 1250
  2. Reinicie Visual FoxPro.
  3. Ejecute las siguientes líneas de código en un archivo de programa:
    SET COLLATE TO 'HUNGARY'  && Requires CODEPAGE = 1250 in config file
CLEAR
? UPPER("B")=LOWER("B"), LOWER("B")=UPPER("B")
? UPPER("F")=LOWER("F"), LOWER("F")=UPPER("F")
? UPPER("H")=LOWER("H"), LOWER("H")=UPPER("H")
=SYS(2300,1250,1)  && Add code page 1250 to NLS list
? UPPER("B")=LOWER("B"), LOWER("B")=UPPER("B")
? UPPER("F")=LOWER("F"), LOWER("F")=UPPER("F")
? UPPER("H")=LOWER("H"), LOWER("H")=UPPER("H")
=SYS(2300,1250,0)  && Restore default setting for code page 1250
RETURN

Con la configuración predeterminada, LOWER("B")=UPPER("B"), LOWER("F")=UPPER("F") y LOWER("H")=UPPER("H") devuelve .T..

Después de habilitar la compatibilidad con NLS para la página de códigos 1250, LOWER("B")=UPPER("B"), LOWER("F")=UPPER("F") y LOWER("H")=UPPER("H") devuelven .F..

Vea también

CPCURRENT( ) (Función) | CPCONVERT( ) (Función) | CPDBF( ) (Función) | SET COLLATE (Comando) | SET CPDIALOG (Comando)


SYS(2333) - Soporte de interfaz dual de ActiveX

Activa o desactiva el soporte (obligatorio VTABLE) para la interfaz dual de ActiveX.

SYS(2333 [, 0 | 1 | 2])

Valores devueltos

Character

Parámetros

0
Desactiva la compatibilidad con la interfaz dual de ActiveX. Si se omite 0 ó 1, se desactivará la compatibilidad con la interfaz dual de ActiveX. El valor predeterminado de inicio para Visual FoxPro 6.0 y versiones posteriores es 0.
1
Activa la compatibilidad con la interfaz dual de ActiveX. El valor predeterminado de inicio para Visual FoxPro 5.0 es 1.
2
Devuelve el valor actual de SYS(2333) (0 ó 1).

Observaciones

La interfaz dual de control de ActiveX (enlace VTABLE) es una optimización aceptada en Visual FoxPro. Si un control de ActiveX no utiliza la interfaz dual, puede desactivar la optimización mientras utilice dicho control.

Si un control de ActiveX no funciona correctamente al crear una instancia del control, ejecute SYS(2333) o SYS(2333, 0) antes de que se cree una instancia del control para desactivar la compatibilidad con la interfaz dual en el control. Una vez se haya creado una instancia del control, ejecute SYS(2333, 1) para activar la compatibilidad con interfaz dual de ActiveX para todos los controles de los que se cree una instancia a partir de ese momento.

Vea también

Introducción a los controles ActiveX | OLE Container (Control) | Enlace en tiempo de compilación (vtable) y en tiempo de ejecución (IDispatch)


SYS(2334) - Modo de invocación de servidor de Automatización

Devuelve un valor que indica cómo se ha invocado un método de un servidor de automatización de Visual FoxPro.

SYS(2334)

Valores devueltos

Character

Observaciones

La siguiente tabla presenta los valores que devuelve SYS(2334) para los servidores de automatización:

Valor devuelto | Método de invocación
0 | Desconocido (por ejemplo, se invoca desde el método INIT, que no es ni VTable ni IDispatch)
1 | Método OLEPUBLIC invocado a través del enlace Vtable
2 | Idispatch

SYS(2334) también es cero cuando se ejecuta desde un archivo ejecutable (.exe) independiente. Use la propiedad StartMode para determinar cómo se inició una instancia de Visual FoxPro.

Vea también

StartMode (Propiedad) | SYS( ) - Introducción a las funciones | Notas sobre programación de servidores de automatización


SYS(2335) - Modo de servidor desatendido

Activa o desactiva los estados modales en los servidores de automatización .exe distribuibles de Visual FoxPro.

SYS(2335 [, 0 | 1])

Valores devueltos

Character

Parámetros

0
Activa el modo desatendido. Cuando está activado el modo desatendido, se genera un error de Visual FoxPro cada vez que se produce un estado modal. El servidor de automatización .exe puede interceptar estos errores con una rutina ON ERROR.
1
(Predeterminado) Desactiva el modo desatendido. Pueden producirse estados modales, que requieren la intervención del usuario. El modo desatendido se desactiva al iniciar.

Observaciones

Use SYS(2335) para habilitar o deshabilitar estados modales en servidores de automatización .exe de Visual FoxPro. Los servidores de automatización se crean con el Administrador de proyectos. Para obtener más información acerca de cómo utilizar Visual FoxPro para crear servidores de automatización .exe, vea Agregar OLE.

Los estados modales se producen cuando se muestran cuadros de diálogo o mensajes de error que requieren intervención de un usuario para salir del diálogo o el mensaje de error, y continuar con la ejecución del programa. Los estados modales pueden ser estados no deseados en los servidores .exe que se distribuyen de forma remota, posiblemente sin intervención de un usuario. Se detiene la ejecución del programa y será necesario intervenir para que el programa continúe ejecutándose.

En la siguiente tabla se muestran algunos ejemplos típicos de estados modales que pueden producirse en un servidor .exe.

Estado modal | Ejemplos
Comando WAIT o función MESSAGEBOX( ) | Puede producirse en código de programa.
Errores de Visual FoxPro, como "Acceso denegado al archivo" o "Se excedió el nivel permitido de anidamiento de DO" | Puede producirse en código de programa.
Cuadros de diálogo Abrir | Puede producirse cuando no es posible ubicar los archivos incluidos en una instrucción SQL.
Cuadro de diálogo de inicio de sesión de conexión SQL | Puede producirse después de que una conexión no se pueda establecer.

Se debe ejecutar SYS(2335 ,0) cuanto antes en el código de programa del servidor de automatización desatendido, porque un estado modal puede ocurrir en cualquier momento después de que comience la ejecución del programa.

Tenga en cuenta que SYS(2335) sólo se aplica a servidores de automatización .exe para los que el valor de la propiedad StartMode es igual a dos. El modo desatendido siempre está habilitado para servidores de automatización .dll en proceso (para los que el valor de la propiedad StartMode es igual a tres).

Al ejecutar SYS(2335) sin argumentos en una aplicación en el entorno de tiempo de ejecución, la función devuelve su valor actual.

Vea también

ON ERROR | StartMode (Propiedad) | SYS( ) - Introducción a las funciones | Agregar OLE


SYS(2336) - Soporte de sección fundamental

Controla las entradas y salidas en una sección crítica de los servidores MTDLL.

SYS(2336 [, nAction])

Parámetros

nAction
Especifica la acción que realizará la función SYS(2336), según la tabla siguiente.
nAction | Descripción
(ninguna) Valor predeterminado | Devuelve el número de referencias actual
1 | Llama a EnterCriticalSection
2 | Llama a LeaveCriticalSection
3 | Llama a LeaveCriticalSection tantas veces como sea necesario para reducir el número de referencias a cero, liberando así la sección crítica.

Observaciones

SYS(2336) tiene acceso a las llamadas a la API de Windows EnterCriticalSection y LeaveCriticalSection. En la referencia del SDK de la plataforma de MSDN Library encontrará detalles acerca de estas funciones, en http://msdn.microsoft.com/library (en inglés).

Vea también

SYS(3095) | Acceso a las API | BUILD MTDLL (Comando)


SYS(2339) - Llamar a CoFreeUnusedLibraries al liberar un objeto COM

Establece o especifica sí Visual FoxPro llama a la función CoFreeUnusedLibraries del sistema operativo cuando se libera un objeto COM.

SYS(2339 [, 0 | 1 ])

Parámetros

0
Especifica que no se llama a CoFreeUnusedLibraries (valor predeterminado).
1
Especifica que se llama a CoFreeUnusedLibraries.

Valor devuelto

Carácter

Observaciones

Si tiene problemas liberando un servidor COM aún cuando todas las referencias estén liberadas, podría necesitar cambiar esta configuración. También puede usar Declare-DLL para llamar a CoFreeUnusedLIbraries directamente.

Vea también

Biblioteca de tiempo de ejecución VFP8R.DLL | Biblioteca de tiempo de ejecución VFP8T.DLL | BUILD MTDLL (Comando)


SYS(2340) - Soporte de servicio NT

Deshabilita o habilita la compatibilidad con servicios de Windows NT.

SYS(2340 [,0 | 1 ])

Parámetros

0
Deshabilita la compatibilidad con servicios de Windows NT (valor predeterminado).
1
Habilita la compatibilidad con servicios de Windows NT.

Valor devuelto

Character

Observaciones

Esta función intercepta los mensajes de cierre de sesión de Windows (WM_QUERYENDSESSION y WM_ENDSESSION) enviados a Visual FoxPro y especifica si se mantiene la ejecución de las instancias de servidor COM de Visual FoxPro o, por el contrario, se cierran. Una aplicación de Visual FoxPro finalizará cuando el usuario actual cierre la sesión de Windows. Si la aplicación es un servicio de Windows, dicho servicio finalizará. Si se habilita la compatibilidad con los servicios de NT, las aplicaciones de Visual FoxPro podrán seguir ejecutándose aunque el usuario actual cierre la sesión de Windows.

Vea también

SYS( ) - Introducción a las funciones


SYS(2410) - Controlador de errores

Devuelve el tipo de controlador de errores para un error. Se puede utilizar SYS(2410) en su código TRY...CATCH...FINALLY para determinar el curso de una acción, por ejemplo, al utilizar una estructura DO CASE dependiendo del tipo de manejador que controla la excepción.

SYS(2410)

Valores devueltos

Tipo de dato Caracter. La siguiente tabla lista los posibles valores retornados por SYS(2410).

Valor | Descripción
0 | Controlador de sistema
1 | TRY...CATCH...FINALLY
2 | Evento Error
3 | Comando ON ERROR

Observaciones

Si una estructura TRY...CATCH...FINALLY no contiene ninguna instrucción CATCH o una instrucción CATCH en la cual WHEN lExpression se evalúa como Verdadera (.T.), SYS(2410) puede devolver erróneamente un valor incorrecto.

Ver también

SYS( ) - Introducción a las funciones | DO CASE ... ENDCASE (Comando) | Exception (Clase) | TRY...CATCH...FINALLY (Comando) | Control estructurado de errores


SYS(2450) - Orden de búsqueda de la ruta de la aplicación

Especifica cómo una aplicación busca los datos y recursos, tales como funciones, procedimientos, archivos ejecutables, etc.

Puede utilizar SYS(2450) para especificar que Visual FoxPro busque un procedimiento específico o función definida por el usuario (UDF) dentro de la aplicación antes de que lo haga siguiendo las ubicaciones definidas con SET DEFAULT y SET PATH. Establecer SYS(2450) puede ayudar a mejorar el rendimiento de las aplicaciones que se ejecutan en una red LAN o WAN.

SYS(2450 [, 0 | 1 ])

Parámetros

0
Busca a través de las rutas y ubicaciones predeterminadas antes de buscar en la aplicación. (Predeterminado)
1
Busca un procedimiento específico o función definida por el usuario (UDF) dentro de la aplicación antes de hacerlo en las rutas y ubicaciones predeterminadas.

Valores devueltos

Tipo de datos carácter. SYS(2450) sin parámetros devuelve un valor de "0" o "1" especificando si Visual FoxPro busca a través de las rutas y ubicaciones predeterminadas antes que en la aplicación o si busca primero dentro de la aplicación.

Observaciones

Puede utilizar SET PROCEDURE para asegurarse que el archivo es encontrado antes que tenga lugar la búsqueda por rutas. Sin embargo, tiene que llamar SET PROCEDURE para cada archivo.

Vea también

SET DEFAULT (Comando) | SET PATH (Comando) | SET PROCEDURE (Comando) | SYS( ) - Introducción a las funciones | DO (Comando)


SYS(2600) - Devolver puntero en forma de cadena

Interpreta un entero como un puntero a la memoria y devuelve el contenido de la memoria en forma de cadena o escribe datos nuevos en esa ubicación de memoria.

SYS(2600, dwAddress, nLength [, cNewString])

Parámetros

dwAddress
Especifica el puntero a una dirección de memoria. Este valor se interpreta como un entero.
nLength
Especifica el número de bytes que se debe leer desde dwAddress.
cNewString
Especifica un valor que se debe devolver a dwAddress.

Observaciones

Esta función es sólo para programadores avanzados.

Ejemplos

El código siguiente devuelve la cadena cRes, que contiene nLen bytes a partir de nAddress:

   cRes = SYS(2600, nAddress, nLen)

El código siguiente devuelve la cadena cRes y también coloca nLen bytes de cSrc en nAddress:

   cRes = SYS(2600, nAddress, nLen, cSrc)

Vea también

SYS( ) - Introducción a las funciones


SYS(2700) - Activar Temas de Windows XP

Activar o Desactivar por completo el soporte de los Temas Visuales de Windows XP.

SYS(2700 [, nValor ])

Parámetros

nValor
Tipo de dato numérico. La siguiente tabla lista los valores posibles para nValor.
nValor | Estableciendo
0 | Desactiva el soporte de los Temas Visuales.
1 | Activa el soporte de los Temas Visuales. (Defecto)

Valores devueltos

Tipo de Dato numérico. SYS(2700) sin argumentos devuelve un valor de cero (0) si el Tema Visual no está activado.Si se está ejecutando una versión antigua del Sistema Operativo Windows que no soporta los Temas Visuales. SYS(2700) devolverá el valor de Uno (1) si el tema está activado.

Observaciones

La forma de comportarse al ser llamada la función SYS(2700) sin ningún argumento; será la de devolver una configuración diferente de la actual variable del sistema _SCREEN el cual siempre devuelve el estado de los Temas Visuales del PC. Por consiguiente si utiliza SYS(2700,1) para cambiar los Temas Visuales en Visual FoxPro y desactiva los Temas Visuales utilizando "Propiedades de la Pantalla" desde el Panel de Control de Windows, SYS(2700) devolverá el valor de Cero (0) mientras que _SCREEN.Themes todavía estará devolviendo Verdadero (.T.).

Cuando se cambia el Soporte para Temas Visuales usando la función SYS(2700), Visual FoxPro no podrá refrescar la interfaz del usuario de forma automática. Sin embargo, cuando los Temas Visuales están activados, ciertos efectos como aquellos que ocurren cuando mueve el ratón sobre los objetos (MouseOver) seguirán funcionando. Por lo tanto, es recomendado que configure el Soporte de Temas Visuales al comienzo de una aplicación o sea antes que muestre por completo la interfaz del usuario.

Nota Si se cambia el soporte de los Temas Visuales mientras un formulario está ejecutándose, puede llamar al Método Refresh del formulario para redibujar todos los controles.

Vea también

SYS( ) - Introducción a las funciones| _SCREEN (Variable del sistema) | Refresh (Método) | Propiedades de los Temas visuales

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


SYS(2800) - Soporte de accesibilidad

Deshabilita o habilita la compatibilidad con Microsoft Active Accessibility y establece determinadas opciones para hacer un seguimiento del foco del control seleccionado actualmente en un formulario de Visual FoxPro.

SYS(2800 [,nFlag] )

Parámetros

nFlag
Deshabilita la compatibilidad con la accesibilidad o habilita varias características de funcionalidad de la forma indicada en la tabla siguiente.
Nota Se puede utilizar varios indicadores a la vez.
nFlags | Descripción
0 | Deshabilita Active Accessibility (AA).
1 | Habilita WM_GETOBJECT.
2 | Habilita NotifyWinEvent.
4 | Determinados métodos de IAccessible, como accDoDefaultAction o accSelect, enviarán un mensaje para procesar la solicitud del cliente y devolvérsela inmediatamente. Si este indicador está establecido, Visual FoxPro no volverá a los clientes de accesibilidad hasta que se haya completado la acción.
16 | Habilita ACCNAME. Devuelve la propiedad Name del objeto, en vez de la propiedad Caption. Se utiliza para pruebas.
32 | Se incluye por compatibilidad solamente.

El valor predeterminado de nFlag es 3, que es la suma de "Enables WM_GETOBJECT" (2) + "Enables NotifyWinEvent" (3).

Para obtener más información acerca de WM_GETOBJECT, NotifyWinEvent y accDoDefaultAction, vea el tema Accesibilidad de la sección de Servicios de la interfaz de usuario del SDK de la plataforma, incluido en MSDN Online Library.

Valor devuelto

Carácter

Observaciones

SYS(2800) devuelve un valor numérico con una cadena de caracteres para la configuración actual de Active Accessibility.

Si utiliza esta función al diseñar una aplicación para que sea compatible con los requisitos del logotipo de Windows, podrá comprobar las distintas características de accesibilidad, como Microsoft Magnifier.

Esta función sólo será eficaz para controles nativos de Visual FoxPro. Los controles ActiveX de otros fabricantes pueden hacer o no un seguimiento del foco con las características de accesibilidad habilitadas. Póngase en contacto con el proveedor del control para solicitar información acerca del comportamiento de un control determinado con las características de accesibilidad habilitadas.

Vea también

SYS( ) - Introducción a las funciones


SYS(2801) - Soporte de seguimiento de eventos

Amplía el seguimiento de eventos del ratón y el teclado.

SYS(2801 [, 1 | 2 | 3 ] )

Parámetros

1
Sólo se registran eventos de objetos de Visual FoxPro.
2
Sólo se registran eventos del ratón y del teclado de Windows.
3
Se registran los eventos de Visual FoxPro y de Windows.

Observaciones

Puede utilizar SYS(2801) para especificar los eventos de usuario de los que desea hacer un seguimiento cuando se ejecute el código. Puede configurar el seguimiento de eventos en el depurador de Visual FoxPro o utilizar el comando SET EVENTTRACKING.

Vea también

SET EVENTLIST (Comando) | SYS(2800) | Seguimiento de secuencias de eventos

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


SYS(3004) - Devolver Id. de configuración regional

Devuelve el Id. de configuración regional, utilizado por automatización y controles ActiveX.

SYS(3004)

Valores devueltos

Character

Observaciones

SYS(3004) devuelve el Id. de configuración regional (LCID) actual de Visual FoxPro, que está determinado por el Id. de idioma (LangID) y el Id. de orden de Visual FoxPro.

El Id. de configuración regional determina el idioma en el que intercambian información la automatización OLE y los controles OLE. El Id. de configuración regional predeterminado de Visual FoxPro es 1033, inglés.

Por ejemplo, suponga que tiene instalada la versión alemana de Microsoft Excel 5.0, que acepta comandos en inglés y en alemán. En este caso, el ejemplo siguiente le permite iniciar y cerrar la versión alemana de Microsoft Excel 5.0:

oleExcel1 = CREATEOBJECT('Excel.Application')  && Starts Excel
? SYS(3005, 1033)  && English Locale ID
oleExcel1.Quit  && Closes Excel with English command
oleExcel2 = CREATEOBJECT('Excel.Application')  && Starts Excel
? SYS(3005, 1031)  && German Locale ID
oleExcel2.Beenden  && Closes Excel with German command

Para obtener una lista de las Id. de configuración regional de Visual FoxPro, vea SYS(3005) - Establecer Id. de configuración regional. Para obtener información adicional acerca de la configuración regional, el id. de idioma y el orden, consulte la documentación del Kit de desarrollo de software para Microsoft Windows.

Vea también

DefOLELCID (Propiedad) | OLELCID (Propiedad) | SYS(3005) - Establecer Id. de configuración regional | SYS(3006) - Establecer los Id. de idioma y de configuración regional


SYS(3005) - Establecer Id. de configuración regional

Establece el Id. de configuración regional utilizado por la automatización y los controles ActiveX.

SYS(3005, nLocaleID)

Valores devueltos

Character

Parámetros

nLocaleID
Especifica el Id. de configuración regional. La lista siguiente contiene los Id. de configuración regional aceptados en Visual FoxPro:
nLocaleID | Idioma
1029 | Checo
1031 | Alemán
1033 | Inglés (predeterminado)
1034 | Español
1036 | Francés
1040 | Italiano
1045 | Polaco
1046 | Portugués (Brasileño)
2070 | Portugués (Portugal)

Observaciones

SYS(3005) establece el Id. de configuración regional (LCID, Local Configuration Id.). El Id. de configuración regional determina el idioma en el que intercambian información la automatización OLE y los controles OLE. El Id. de configuración regional predeterminado de Visual FoxPro es 1033, inglés.

Nota El método recomendado para establecer un Id. de configuración regional de un formulario o de la ventana principal de Visual FoxPro es utilizar la propiedad DefOLELCID. El lenguaje de comandos de automatización sólo se verá afectado por el Id. de configuración regional (LocaleID) global, establecido con SYS(3005). Las propiedades DefOLELCID y OLELCID sólo afectarán al idioma de la interfaz del usuario, cuya presentación está controlada por ActiveX, pero no afectará al idioma de los comandos de automatización.

Por ejemplo, suponga que tiene instalada la versión alemana de Microsoft Excel 5.0, que acepta comandos en inglés y en alemán. En este caso, el ejemplo siguiente le permite iniciar y cerrar la versión alemana de Microsoft Excel 5.0:

oleExcel1 = CREATEOBJECT('Excel.Application')  && Starts Excel
? SYS(3005, 1033)  && English Locale ID
oleExcel.Quit  && Closes Excel with English command
oleExcel2 = CREATEOBJECT('Excel.Application')  && Starts Excel
? SYS(3005, 1031)  && German Locale ID
oleExcel.Beenden  && Closes Excel with German command

Para obtener más información acerca del Id. de configuración regional, consulte la documentación del Kit de desarrollo de software para Microsoft Windows.

Vea también

DefOLELCID (Propiedad) | OLELCID (Propiedad) | SYS(3004) - Devolver Id. de configuración regional | SYS(3006) - Establecer los Id. de idioma y de configuración regional


SYS(3006) - Establecer los Id. de idioma y de configuración regional

Establece el Id. de idioma y el Id. de configuración regional.

SYS(3006, nLanguageID)

Valores devueltos

Character

Parámetros

nLanguageID
Especifica el Id. de idioma.

Observaciones

SYS(3006) establece el Id. de idioma (LangID) de Visual FoxPro y a continuación, establece el Id. de configuración regional (LCID) basado en el Id. de idioma y en el valor actual del Id. de orden.

Nota El método recomendado para establecer un Id. de configuración regional de un formulario o de la ventana principal de Visual FoxPro es utilizar la propiedad DefOLELCID.

Para obtener más información acerca de los Id. de idioma, de configuración regional y de orden, consulte la documentación del Kit de desarrollo de software para Microsoft Windows.

Vea también

DefOLELCID (Propiedad) | OLELCID (Propiedad) | SYS(3004) - Devolver Id. de configuración regional | SYS(3005) - Establecer Id. de configuración regional


SYS(3050) - Establecer tamaño de memoria de búfer

Establece el tamaño de la memoria de búfer de primer plano o de fondo.

SYS(3050, nType, [nBuffMemSize])

Valores devueltos

Character

Parámetros

nType
Especifica el búfer. En la tabla siguiente se muestran los valores para nType y el búfer correspondiente:
nType | Búfer
1 | Primer plano
2 | Segundo plano
nBuffMemSize
Especifica el tamaño máximo de la memoria de búfer, en bytes. Si especifica para nBuffMemSize un valor menor de 256 Kbytes, Visual FoxPro establecerá el tamaño de la memoria de búfer como 256 Kbytes.

Si desea que el tamaño de la memoria de búfer vuelva a ser el valor inicial de Visual FoxPro especifique 0 en nBuffMemSize. El valor de inicio depende de la cantidad de memoria existente en su PC. Si omite nBuffMemSize, SYS(3050) devolverá el tamaño de búfer especificado con nType.

Observaciones

SYS(3050) le permite optimizar el rendimiento de Visual FoxPro al ajustar la cantidad de memoria que Visual FoxPro asigna para los búferes de primer plano y de fondo. El búfer de memoria de primer plano es la memoria disponible para Visual FoxPro cuando está funcionando en primer plano como la aplicación activa. El búfer de memoria de fondo es la memoria disponible para Visual FoxPro cuando está funcionando en segundo plano y otra aplicación está ejecutándose en primer plano.

SYS(3050) devuelve un valor numérico como una cadena de caracteres que indica la cantidad máxima de memoria que Visual FoxPro asigna para los búferes de primer o de segundo plano.

Vea también

SYS(1001) - Memoria de Visual FoxPro | DISPLAY MEMORY (Comando) | MEMORY( ) (Función) | Administrar la memoria


SYS(3051) - Establecer intervalo de reintento de bloqueo

Especifica el tiempo, en milisegundos, que Visual FoxPro espera antes de intentar bloquear un registro, una tabla, un campo memo o un archivo de índice después de intentar sin éxito un bloqueo.

SYS(3051, [nWaitMilliseconds])

Valores devueltos

Character

Parámetros

nWaitMilliseconds
Especifica el tiempo de espera en milisegundos; puede ser un valor entre 100 y 1000 milisegundos.

Si desea que el intervalo de intento de bloqueo vuelva a ser el valor inicial de Visual FoxPro (333 milisegundos) especifique 0 en nWaitMilliseconds. Si omite nWaitMilliseconds, SYS(3051) devolverá el intervalo actual de intento de bloqueo.

Observaciones

SYS(3051) devuelve un valor numérico como una cadena de caracteres que indica el intervalo de tiempo de intento de bloqueo.

Vea también

SET REPROCESS | SYS(3052) - Anular bloqueo de SET REPROCESS | Bloquear datos


SYS(3052) - Anular bloqueo de SET REPROCESS

Especifica si Visual FoxPro usa o no la configuración de SET REPROCESS al intentar bloquear un archivo memo o de índice.

SYS(3052, nFileType, [lHonorReprocess])

Valores devueltos

Character

Parámetros

nFileType
Especifica el tipo de archivo. La tabla siguiente muestra los valores para nType y el correspondiente tipo de archivo:
nFileType | Tipo de archivo
1 | Índice
2 | Memo
lHonorReprocess
Especifica si Visual FoxPro utiliza o no la configuración de SET REPROCESS para los intentos de bloqueo de archivos memo y de índice sin éxito.

Especifique verdadero (.T.) si desea utilizar la configuración de SET REPROCESS cuando Visual FoxPro intenta bloquear los archivos especificados con nFileType. Especifique falso (.F.), el valor predeterminado, para anular la configuración de SET REPROCESS cuando Visual FoxPro intenta bloquear los archivos especificados con nFileType. Cuando se establece como falso, Visual FoxPro espera indefinidamente los bloqueos en los archivos especificados; es el mismo comportamiento de bloqueo que en las versiones anteriores de FoxPro.

Si omite lHonorReprocess, SYS(3052) devolverá la configuración actual para el tipo de archivo especificado con nFileType.

Observaciones

SYS(3052) ofrece un control adicional sobre el bloqueo de archivos en Visual FoxPro. Es mejor establecer lHonorReprocess como verdadero (.T.), con el fin de reducir el riesgo de contención de bloqueo de archivos si su aplicación utiliza procesamiento de transacciones.

SYS(3052) devuelve un valor numérico de 0 (correspondiente a falso (.F.)) ó 1 (correspondiente a verdadero (.T.)), como una cadena de caracteres. Si se incluye lHonorReprocess en SYS(3052), el valor devuelto será idéntico al valor lógico especificado para lHonorReprocess. Si omite lHonorReprocess, el valor devuelto será la configuración actual para el tipo de archivo especificado con nFileType.

Vea también

SET REPROCESS | SYS(3051) - Establecer intervalo de reintento de bloqueo | Bloquear datos


SYS(3053) - Controlador de entorno ODBC

Devuelve el identificador de entorno ODBC.

SYS(3053)

Valores devueltos

Character

Observaciones

Si ODBC no está cargado, SYS(3053) lo carga y devuelve el identificador de entorno ODBC.

El identificador de entorno devuelto por SYS(3053) ofrece acceso a ODBC a través de llamadas de API ODBC. El acceso a la API ODBC está disponible en Visual FoxPro a través de DECLARE - DLL y rutinas de biblioteca API externas de Visual FoxPro.

Sólo se debe utilizar un identificador de entorno ODBC cada vez. Los programas de Visual FoxPro que utilicen llamadas ODBC deben utilizar SYS(3053) para obtener el identificador de entorno ODBC en lugar de reasignar y liberar el identificador de entorno ODBC a través de llamadas a la API de ODBC.

Tenga cuidado cuando manipule un identificador de entorno ODBC. Para obtener más información acerca de la API ODBC, consulte la documentación del Microsoft ODBC SDK.

Vea también

DECLARE - DLL | SET LIBRARY | Ejecutar extensiones ODBC de SQL | Leer valores del registro de ODBC (Ejemplo)


SYS(3054) - Nivel de optimización Rushmore

Activa o desactiva la presentación de los niveles de optimización Rushmore para consultas.

SYS(3054 [, 0 | 1 | 11 | 2 | 12] [, cMEMVAR])

Valores devueltos

Carácter

Parámetros

0
(Predeterminado) Desactiva la presentación de los niveles de optimización Rushmore.
1
Activa la presentación de los niveles de optimización Rushmore de filtros.
11
Activa la presentación de los niveles de optimización Rushmore de combinaciones.
2
Incluye una instrucción SQL mostrando los niveles de optimización de filtros Rushmore.
12
Incluye una instrucción SQL mostrando los niveles de optimización de combinación Rushmore.
cMEMVAR
Especifica una variable de memoria PUBLIC o LOCAL, declarada o sin declarar, en la que se almacenará la información de ShowPlan. Si no declaró cMEMVAR, Visual FoxPro la creará como una variable PRIVATE.

Observaciones

SYS(3054) devuelve a la ventana activa o a una variable de memoria el nivel de optimización Rushmore actual en forma de cadena de caracteres.

El resultado de ShowPlan muestra el alias de tabla como referencia al nombre de tabla.

Utilice SYS(3054) para mejorar el rendimiento de las consultas, determinando el alcance de optimización de la consulta con la tecnología Rushmore.

Ejecute SYS(3054, 1) para mostrar el nivel de optimización Rushmore de filtros después de ejecutar una consulta. El nivel de optimización de filtros aparecerá en la ventana activa.

En la siguiente tabla se muestran los tres niveles de optimización Rushmore:

Nivel de optimización | Descripción
Ninguna | La consulta no se pudo optimizar con la tecnología Rushmore.
Parcial | Se pudieron optimizar algunas expresiones de la consulta con la tecnología Rushmore. Se indican las etiquetas de índice utilizadas para la optimización Rushmore.
Total | Se optimizó toda la consulta con la tecnología Rushmore. Se indican las etiquetas de índice utilizadas para la optimización Rushmore.

Si SYS(3054,1) indica que no se pudo optimizar una consulta, parcial o totalmente, es posible modificar la consulta para aprovechar las ventajas de la optimización Rushmore.

Ejecute SYS(3054, 11) para mostrar el nivel de optimización Rushmore de combinaciones después de ejecutar una consulta. El nivel de optimización se muestra en la ventana activa.

Ejecute SYS(3054, 0) para detener la presentación del nivel de optimización Rushmore después de ejecutar una consulta.

Para obtener más información acerca de la tecnología Rushmore y la optimización de consultas, vea Utilizar optimización de consultas Rushmore para acelerar el acceso de datos.

Ejemplo

El código siguiente muestra el nivel de optimización Rushmore existente después de realizar una consulta:

LOCAL cmemvar
=SYS(3054,11,"cmemvar")
SELECT * FROM HOME()+"labels.dbf"
? cmemvar

Vea también

PUBLIC (Comando) | LOCAL (Comando) | PRIVATE (Comando) | SELECT - SQL (Comando) | Utilizar optimización de consultas Rushmore para acelerar el acceso de datos


SYS(3055) - Complejidad de las cláusulas FOR y WHERE

Establece el nivel de complejidad de las cláusulas FOR y WHERE en los comandos y las funciones que admiten dichas cláusulas.

SYS(3055 [, nComplexity])

Valores devueltos

Carácter

Parámetros

nComplexity
Especifica el nivel de complejidad. El intervalo válido para nComplexity es de 320 a 2040. El valor predeterminado es 320. Si especifica un valor impar, se redondeará al próximo valor entero par más pequeño.

Observaciones

Si recibe el error Espacio de pila insuficiente (Error 1308) o SQL: la instrucción es demasiado larga (Error 1812), puede aumentar la complejidad de las cláusulas FOR y WHEN para intentar evitar que se produzca el error.

Por ejemplo, al llamar a la función TABLEUPDATE( ) para una tabla o vista local que no utilice campos clave, se genera una cláusula WHERE larga para buscar la fila de actualización. El número de campos predeterminado que admite una cláusula WHERE es 40. Si obtiene el error 1812 - SQL: la instrucción es demasiado larga, debe utilizar un campo clave para la actualización o bien, aumentar la complejidad de la cláusula WHERE con SYS(3055). Si usa SYS(3055), aumente su valor a 8 veces el número de campos en la tabla:

= SYS(3055, 8 * MIN(40, FCOUNT( )))

Si se ejecuta SYS(3055) sin el argumento nComplexity, la función devuelve su valor actual.

Las cláusulas FOR o WHERE admiten los comandos y las funciones siguientes:

APPEND FROM | APPEND FROM ARRAY | AVERAGE
BLANK | BROWSE | CALCULATE
CHANGE | COPY TO ARRAY | COPY TO
COUNT | DEFINE PAD | DELETE
DELETE - SQL | DISPLAY | EXPORT
FOR( ) | INDEX | LABEL
LIST | LOCATE | RECALL
REPLACE | REPLACE FROM ARRAY | REPORT
SCAN ... ENDSCAN | SELECT - SQL | SORT
SUM | TABLEUPDATE( ) | UPDATE - SQL

Vea también

TABLEUPDATE( ) | SYS( ) - Introducción a las funciones | Espacio de pila insuficiente (Error 1308) | SQL: la instrucción es demasiado larga (Error 1812)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


SYS(3056) - Leer valores del registro

Hace que Visual FoxPro vuelva a leer su configuración y la actualice con la configuración del Registro del sistema.

SYS(3056 [,1])

Valores devueltos

Carácter

Parámetros

1
Incluya la opción 1 para actualizar sólo a partir de los valores del registro, con la excepción de los comandos SET y las ubicaciones de archivos.

Observaciones

Devuelve la cadena vacía.

Visual FoxPro almacena la configuración del cuadro de diálogo Opciones en el Registro de Windows. También puede almacenar valores de configuración adicionales de Visual FoxPro en un archivo de texto, llamado normalmente Config.fpw. Cuando se inicia Visual FoxPro, se configura al leer estos valores del registro y su archivo de configuración (si hay alguno).

Los valores que especifica el cuadro de diálogo Opciones se escriben al registro cuando elige Establecer como predeterminado. Algunos valores, como los de Colorear la sintaxis, se almacenan en el registro pero no tienen comandos SET correspondientes. Otros valores tienen comandos SET correspondientes (como SET BELL, SET CLOCK, etc.) que afectan al entorno de Visual FoxPro. Los valores establecidos en la ficha Archivos del cuadro de diálogo Opciones también se almacenan en el registro y se tiene acceso a algunos de ellos a través de variables del sistema como _COVERAGE y _SAMPLES.

Ejecutar SYS(3056) actualiza la información de los valores del registro y los comandos SET correspondientes, los valores del registro de la ficha Archivos del cuadro de diálogo Opciones y el archivo de configuración de Visual FoxPro (si hay uno). SYS(3056) lee primero la información del registro y, a continuación, el archivo de configuración.

Ejecutar SYS(3056,1) actualiza la información de los valores del registro de Visual FoxPro que no tienen sus correspondientes comandos SET. Los comandos SET, los valores del registro de la ficha Archivos y la información del archivo de configuración no se actualizan si se incluye el argumento 1.

Observe que los valores del registro también se pueden cambiar directamente a través de la API de Windows. Vea la sección API de Windows del Solution.app, ubicado en el directorio …\Samples\Solution de Visual FoxPro, para ver un ejemplo de cómo puede utilizar la API de Windows para modificar los valores del registro.

Vea también

SET (Comando) | Cuadro de diálogo Opciones | Leer y escribir valores del registro de Visual FoxPro (Ejemplo) | Cambiar parámetros de configuración en el registro de Windows

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


SYS(3095) - Puntero IDispatch

Devuelve un puntero IDispatch saliente para un objeto COM.

SYS(3095, oObject)

Parámetros

oObject
Representa una referencia a un objeto COM, como _VFP o Excel.Application.

Valor devuelto

Numérico

Observaciones

Este puntero se proporciona para programadores expertos que necesitan una referencia a un objeto para utilizarla en las rutinas de la API.

Vea también

Enlace en tiempo de compilación (vtable) y en tiempo de ejecución (IDispatch) | Rutinas externas de biblioteca API ordenadas alfabéticamente | Rutinas externas de biblioteca API ordenadas por categoría | DECLARE - DLL (Comando)


SYS(3096) - Referencia de objeto IDispatch

Devuelve una referencia a un objeto COM de Visual FoxPro para un puntero IDispatch.

SYS(3096, nPointer)

Parámetros

nPointer
Representa un puntero a un objeto COM, como _VFP o Excel.Application.

Valor devuelto

Objeto

Observaciones

Este puntero se proporciona para programadores expertos que necesitan que determinar una referencia a un objeto para utilizarla en las rutinas de la API. No se modifica el número de referencias al objeto COM.

Vea también

Enlace en tiempo de compilación (vtable) y en tiempo de ejecución (IDispatch) | Rutinas externas de biblioteca API ordenadas alfabéticamente | Rutinas externas de biblioteca API ordenadas por categoría | DECLARE - DLL (Comando) | SYS(3097) - Agregar referencia a objeto | SYS(3098) - Liberar referencia de objeto


SYS(3097) - Agregar referencia a objeto

Realiza una llamada IDispatch AddRef en un objeto COM.

SYS(3097, oObject)

Devuelve

Numérico. Devuelve el valor actual de Refcount después de agregar una nueva referencia de objeto.

Parámetros

oObject
Referencia de objeto a un objeto COM.
Nota Esta función se proporciona para programadores avanzados. Un número no válido de referencias a objetos COM puede producir problemas como liberaciones incorrectas de objetos o llamadas a objetos que ya no existen.

Vea también

SYS(3098) | DECLARE - DLL (Comando)


SYS(3098) - Liberar referencia de objeto

Realiza una llamada IDispatch Release en un objeto COM.

SYS(3098, oObject)

Devuelve

Numérico. Devuelve el valor actual de Refcount después de liberar una referencia a un objeto.

Parámetros

oObject
Referencia de objeto a un objeto COM.
Nota Esta función se proporciona para programadores avanzados. Un número no válido de referencias a objetos COM puede producir problemas como liberaciones incorrectas de objetos o llamadas a objetos que ya no existen.

Vea también

SYS(3097) | DECLARE - DLL (Comando)


SYS(3099) - Modo de Compatibilidad del Motor de Datos SQL

Habilita la compatibilidad del motor de datos SQL con Visual FoxPro 7.0 o Visual FoxPro 8.0.

SYS(3099 [, 70 | 80 ])

Parámetros

70
Indica a Visual FoxPro que interprete los comandos SQL SELECT como lo hacía en versiones anteriores a Visual FoxPro 8.0
80
Indica a Visual FoxPro que interprete los comandos SQL SELECT con el comportamiento estándar en Visual FoxPro 8.0. Para más información, vea SET ENGINEBEHAVIOR (Comando). (Predeterminado)

Observaciones

El comportamiento de Visual FoxPro 7.0 para los comandos SQL SELECT puede ser restaurado con SYS(3099, 70).

Vea también

SYS( ) - Introducción a las funciones | SELECT - SQL (Comando) | SET ENGINEBEHAVIOR (Comando) | Términos especiales para archivos de configuración

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


SYSMETRIC( ) (Función)

Devuelve el tamaño de los elementos de pantalla del sistema operativo.

SYSMETRIC(nScreenElement)

Valores devueltos

Numérico

Parámetros

nScreenElement
Especifica un elemento de pantalla. La tabla siguiente muestra los valores para nScreenElement y el elemento de pantalla correspondiente:
nScreenElement | Elemento de pantalla
1 | Ancho de la pantalla
2 | Alto de la pantalla
3 | Ancho del marco de la ventana ajustable
4 | Alto del marco de la ventana ajustable
5 | Ancho de las flechas de desplazamiento en la barra de desplazamiento vertical
6 | Alto de las flechas de desplazamiento en la barra de desplazamiento vertical
7 | Ancho de las flechas de desplazamiento en la barra de desplazamiento horizontal
8 | Alto de las flechas de desplazamiento en la barra de desplazamiento horizontal
9 | Alto del título de la ventana
10 | Ancho del marco de ventana no ajustable
11 | Alto del marco de ventana no ajustable
12 | Ancho del marco de ventana DOUBLE o PANEL
13 | Alto del marco de ventana DOUBLE o PANEL
14 | Ancho del cuadro de la barra de desplazamiento horizontal en las ventanas de edición de texto
15 | Alto del cuadro de la barra de desplazamiento vertical en las ventanas de edición de texto
16 | Ancho del icono de ventana minimizada
17 | Alto del icono de ventana minimizada
18 | Ancho máximo del punto de inserción
19 | Alto máximo del punto de inserción
20 | Alto de la barra de menú de línea sencilla
21 | Ancho de ventana maximizada
22 | Alto de ventana maximizada
23 | Alto de la ventana Kanji
24 | Ancho mínimo de ventana ajustable
25 | Alto mínimo de ventana ajustable
26 | Ancho mínimo de ventana
27 | Alto mínimo de ventana
28 | Ancho de los controles de la ventana
29 | Alto de los controles de la ventana
30 | 1 si hay hardware de ratón; de lo contrario, 0
31 | 1 en la versión de depuración de Microsoft Windows; 0 en los demás casos
32 | 1 si están intercambiados los botones del ratón; de lo contrario, 0
33 | Ancho de un botón en un título o barra de título de una ventana de medio título
34 | Alto de un área de título de una ventana de medio título

Observaciones

SYSMETRIC( ) devuelve el tamaño de los elementos de pantalla. Los elementos de pantalla incluyen menús, ventanas, controles de ventana y el punto de inserción. Los valores se devuelven en píxeles, a menos que se indique lo contrario, y pueden variar para distintas pantallas, controladores de pantalla y hardware de vídeo. Para obtener más información acerca de los elementos mostrados en pantalla, consulte la función GetSystemMetrics incluida en la biblioteca MSDN, en la dirección URL http://msdn.microsoft.com/library (en inglés).

SYSMETRIC( ) le permite determinar el tamaño de los menús, las ventanas y los controles de ventana creados en Visual FoxPro. Las ventanas y los menús creados con DEFINE WINDOW y DEFINE MENU utilizan los mismos tamaños para los elementos de la pantalla que las ventanas y menús del sistema operativo.

Vea también

FONTMETRIC( ) | GETFONT( ) | TXTWIDTH( ) | WFONT( )


TABLEREVERT( ) (Función)

Descarta los cambios realizados en una fila, en una tabla almacenada en búfer o en un cursor, y restaura los datos de OLDVAL( ) para cursores remotos y los valores del disco actual para tablas y cursores locales.

Nota En una red, los datos actualmente en el disco pueden diferir de los datos que se mostraron cuando el cursor fué abierto o creado. Otros usuarios en la red pudieron haber cambiado los datos despues de que la tabla fué abierta o de que el cursor fué creado.
TABLEREVERT( [lAllRows [, cTableAlias | nWorkArea] ] )

Parámetros

lAllRows
Determina si se descartan los cambios realizados en la tabla o el cursor. La siguiente tabla describe los valores para lAllRows.
lAllRows | Descripción
False (.F.) | Si está activado el almacenamiento de tablas en búfer, únicamente los cambios hechos al registro actual son descartados (predeterminado)
True (.T.) | Si está activado el almancenamiento de tablas en búfer, se descartarán los cambios realizados en todos los registros de la tabla o el cursor.

El valor predeterminado para lAllRows es falso (.F.).

Si el almacenamiento de filas en búfer está activado, Visual FoxPro ignorará lAllRows, y se descartarán los cambios realizados en el registro actual de la tabla o el cursor.

cTableAlias
Especifica el alias de la tabla o el cursor en el que se descartan los cambios.
nWorkArea
Especifica el área de trabajo de la tabla o el cursor en el que se descartan los cambios.

Return Values

Numérico. TABLEREVERT( ) devuelve el número de registros para los que se han descartado los cambios.

Remarks

TABLEREVERT( ) no puede descartar los cambios realizados en una tabla o un cursor en el que no se ha activado el almacenamiento de tablas en búfer. Si ejecuta TABLEREVERT( ) y no está activado el almacenamiento de filas y tablas en búfer, Visual FoxPro generará un mensaje de error. Utilice CURSORSETPROP( ) para activar o desactivar el almacenamiento de filas y tablas en búfer.

Los cambios en la tabla o el cursor abierto en el área de trabajo seleccionada actualmente se descartarán si se ejecuta TABLEREVERT( ) sin los argumentos opcionales cTableAlias o nWorkArea.

TABLEREVERT( ) no vuelve a colocar el puntero de registro en su posición original.

TABLEREVERT( ) operates on CursorAdapter objects in the same way as other buffered cursors.

Ejemplo

El ejemplo siguiente muestra cómo puede usar TABLEREVERT( ) para descartar los cambios realizados a una tabla en búfer. MULTILOCKS se establece en ON, un requisito para el almacenamiento de tablas en búfer. Se abre la tabla customer de la base de datos testdata y se usa CURSORSETPROP( ) para establecer el modo de almacenamiento optimista de tablas en búfer (5).

Se muestra el valor del campo cust_id y se modifica el campo cust_id con REPLACE. A continuación, se muestra el nuevo valor del campo cust_id. Se utiliza TABLEREVERT( ) para devolver la tabla a su estado original (se podría utilizar TABLEUPDATE( ) en su lugar para confirmar los cambios). Por último, se muestra el valor invertido del campo cust_id.

CLOSE DATABASES
SET MULTILOCKS ON  && Must be on for table buffering
SET PATH TO (HOME(2) + 'data\')     && Configura las ruta a la base de datos
OPEN DATABASE testdata  && Abre la base de datos testdata
USE Customer     && Abre la tabla customer
= CURSORSETPROP('Buffering', 5, 'customer')  && Habilita el búfer de tabla
CLEAR
? 'Valor original de cust_id : '
?? cust_id  && Muestra el valor actual de cust_id
REPLACE cust_id    WITH '***'  && Cambia el contenido del campo
? 'Nuevo valor de cust_id : '
?? cust_id  && Muestra el nuevo valor de cust_id
= TABLEREVERT(.T.)  && Descarta todos los cambios en la tabla
? 'Valor revertido de cust_id value: '
?? cust_id  && Muestra el valor revertido de cust_id

Vea también

CURSORSETPROP( ) | CURVAL( ) | OLDVAL( ) | TABLEUPDATE( )


TABLEUPDATE( ) (Función)

Confirma los cambios realizados en una fila o una tabla almacenada en búfer, en un cursor o cursor adapter.

TABLEUPDATE( [nRows [, lForce]] [, cTableAlias | nWorkArea] [, cErrorArray] )

Parámetros

nRows
Especifica qué modificaciones se confirman de las realizadas en la tabla o en el cursor.
Nota Visual FoxPro habilita almacenamiento en búfer optimista en filas en forma predeterminada para aquellos cursores asociados con un obejeto CursorAdapter.

La siguiente tabla describe el valor para nRows.

nRows Descripciósn
0 Si está activado el almacenamiento de tablas o filas en búfer, confirma únicamente los cambios hechos en la fila actual de el cursor (valor predeterminado).

Cuando se trabaja con objetos CursorAdapter , Visual FoxPro ejecuta el comando apropiado en las propiedades InsertCmd, UpdateCmd, o DeleteCmd únicamente para la fila actual.
1 Si está activado el almacenamiento de tablas en búfer, se confirmarán en la tabla o en el cursor todas las modificaciones realizadas en los registros.

Si está activado el almacenamiento de filas en búfer, sólo se confirmarán las modificaciones realizadas en el registro actual de la tabla o cursor.

Cuando se trabaja con objeto CursorAdapter, Visual FoxPro ejecuta el comando apropiado en las propiedadesInsertCmd, UpdateCmd, y DeleteCmd para cada una de las filas afectadas.
2 Los cambios realizados en la tabla o en el cursor se confirmarán como en el caso en que nRows = 1.

Sin embargo, no se producirá un error cuando no se pueda confirmar un cambio y Visual FoxPro continuará procesando el resto de los registros en la tabla o en el cursor. Si se incluye cErrorArray , cuando se produzca un error se creará una matriz con información acerca del mismo.

Para compatibilidad con versiones anteriores en aplicaciones de Visual FoxPro, el parámetro nRows también acepta Falso (.F.) y Verdadero (.T.) en lugar de 0 y 1 respectivamente.

Cuando especifica 0 o 1 para nRows, el puntero de registro se mantiene en el registro donde los cambios pudieron no ser confirmados. Para determinar por qué los cambios no pudieron ser confirmados, utilice la función AERROR( ).

Cuando trabaje con objetos CursorAdapter y especifique 1 o 2 para nRows, todos los cambios hechos a el cursor en los siguientes eventos del CursorAdapter deben ser confirmados durante la misma llamada a TABLEUPDATE( ) a menos de que ocurra un error:

  • BeforeInsert
  • AfterInsert
  • BeforeDelete
  • AfterDelete
  • BeforeUpdate
  • AfterUpdate

Visual FoxPro pasa el valor de nRows a el evento CursorAdapter BeforeCursorUpdate.

lForce
Determina si se sobrescriben los cambios realizados en la tabla o el cursor por otro usuario de una red.

La siguiente tabla describe los valores para lForce.

lForce | Descripción
Falso (.F.) confirmará los cambios en la tabla o el cursor, desde el primer registro hasta el final de la tabla o el cursor. (Predeterminado)

Si se encuentra un registro modificado por otro usuario de la red, Visual FoxPro generará un error. Cuando Visual FoxPro genera el error, puede obtenerlo a través de una rutina ON ERROR y ON ERROR routine can issue

TABLEUPDATE( ) con lForce establecido a Verdadero (.T.) puede utilizarse para confirmar cambios hechos a el registro . Alternativamente, si una transacción está en progreso, la rutina ON ERROR puede manejar el error y utilizar el comando ROLLBACK para revertir la tabla o cursor hacia su estado original.
Verdadero (.T.) | se sobrescribirán los cambios realizados en la tabla o el cursor por otro usuario de una red. La clausula WHERE utiliza únicamente los campos clave.

Cuando se trabaja con objetos CursorAdapter , Visual FoxPro pasa los valores de of lForce a los siguientes eventos de la clase CursorAdapter:

El valor predeterminado de lForce es falso (.F.).

  • BeforeCursorUpdate
  • BeforeInsert
  • BeforeUpdate
  • BeforeDelete
  • AfterInsert
  • AfterUpdate
  • AfterDelete
cTableAlias
Especifica el alias de la tabla o el cursor en el que se confirman los cambios. Si incluye un alias de una tabla o de un cursor, debe incluir el argumento lForce.
nWorkArea
Especifica el área de trabajo de la tabla o el cursor en la que se confirman los cambios. Si incluye un área de trabajo, debe incluir el argumento lForce.
cErrorArray
Especifica el nombre de una matriz creada cuando nRows = 2 es 2 y no se pueden confirmar los cambios en un registro. La matriz contiene una única columna en la que se encuentran los números de registro de los registros cuyos cambios no se pudieron confirmar. Si incluye el nombre de una matriz, debe incluir el alias de una tabla o de un cursor cTableAlias o bien, el número de un área de trabajo nWorkArea.
Note Si se produce un error distinto de un error de confirmación simple mientras se actualizan registros, el primer elemento de cErrorArray contendrá el valor –1; a continuación, puede usar AERROR( ) para determinar por qué no se pudieron confirmar los cambios.

Visual FoxPro pasa el valor de cErrorArray, si existe,a la clase CursorAdapter en su evento AfterCursorUpdate.

Valores devueltos

Lógico. TABLEUPDATE( ) devuelve verdadero (.T.) si se confirman los cambios realizados en todos los registros; de lo contrario, TABLEUPDATE( )devuelve falso (.F.). .

Observaciones

TABLEUPDATE( ) no puede confirmar cambios realizados en una tabla o un cursor en los que no esté activado el almacenamiento de filas o tablas en búfer. Si ejecuta TABLEUPDATE( ) ) y no está activado el almacenamiento de filas o tablas en búfer, Visual FoxPro genera un mensaje de error. Sin embargo TABLEUPDATE( ) puede seguir confirmando cambios en una tabla o un cursor que tenga reglas de validación. Utilice CURSORSETPROP( ) para activar o desactivar el almacenamiento de filas y tablas en búfer.

Los cambios se confirmarán en la tabla o el cursor abierto en el área de trabajo seleccionada actualmente si se ejecuta TABLEUPDATE( )sin los argumentos opcionales cTableAlias o nWorkArea.

Si utiliza búferes de tablas y se actualizan varios registros, TABLEUPDATE( ) mueve el puntero del registro al último registro actualizado.

Nota Llamar a TABLEUPDATE( ) para una tabla o vista local que no use campos clave genera una cláusula WHERE larga para buscar la fila actualizada. La cláusula WHERE admite 40 campos de forma predeterminada. Si obtiene el error SQL: la instrucción es demasiado larga (Error 1812), debe usar un campo clave para actualizar o aumentar la complejidad de la cláusula WHERE con SYS(3055). Si usa SYS(3055), aumente su valor a 8 veces el número de campos en la tabla:
SYS(3055, 8 * MIN(40, FCOUNT( ))

Interacción con Objetos CursorAdapter Los siguientes comportamientos aplican cuando se trabaja con objetos CursorAdapter:

  • TABLEUPDATE( ) opera únicamente con el cursor asociado con el objeto CursorAdapter.
  • TABLEUPDATE( ) ejecuta comandos de acuerdo con el tipo de fuente de datos asociados y estos se almacenan en las propiedades del objeto CursorAdapter InsertCmd, UpdateCmd, o DeleteCmd y se aplican contra el cursor fila por fila según sea apropiado.
  • TABLEUPDATE( ) pasa el valor de GETFLDSTATE(1) a los siguientes evento de la clase CursorAdapter para cada uno de las filas afectadas:
    • BeforeInsert
    • BeforeUpdate
    • BeforeDelete

    Para mayor información acerca de GETFLDSTATE( ), vea GETFLDSTATE( ) (Función).

  • La terminación satisfactoria de TABLEUPDATE( ) reajusta los estados de los campos de acuerdo al comportamiento usual de TABLEUPDATE( ).
  • Cuando el búfer de tabla está activado, puede alejarse del registro actual en los siguientes eventos del CursorAdapter:
    • BeforeInsert
    • AfterInsert
    • BeforeUpdate
    • AfterUpdate
    • BeforeDelete
    • AfterDelete

    Tambien puede modificar datos en el cursor. Esta funcionalidad soporta escenarios tales como obtener valores autoincrementales de una tabla base e insertarlos en el cursor. Cuando este escenario ocurre, el objeto CursorAdapter debería automáticmanete regresar a el registro que tuvieron cambios por confirmar despues de que el evento ha ocurrido y confirmado los cambios.

Ejemplo

El ejemplo siguiente muestra cómo puede utilizar TABLEUPDATE( )para confirmar los cambios realizados a una tabla en búfer. Se crea una tabla llamada employeesy se usa INSERT - SQL para insertar el valor "Smith" en el campo cLastName.

MULTILOCKS se establece en ON, un requisito para el almacenamiento de tablas en búfer. Se usa CURSORSETPROP( ) para establecer el modo de almacenamiento optimista de tablas en búfer (5).

Se muestra el valor original del campo cLastName field (Smith) y se modifica el campo cLastName con REPLACE. Se muestra el nuevo valor del campo cLastName field (Jones). Después se utiliza TABLEUPDATE( ) para confirmar los cambios realizados a la tabla (se podría utilizar TABLEREVERT( ) último se muestra el valor actualizado del campo cLastName (Jones)..

CLOSE DATABASES
CREATE TABLE employee (cLastName C(10))
SET MULTILOCKS ON  && Must turn on for table buffering.
= CURSORSETPROP('Buffering', 5, 'employee' )  && Enable table buffering.
INSERT INTO employee (cLastName) VALUES ('Smith')
CLEAR
? 'Original cLastName value: '
?? cLastName  && Displays current cLastName value (Smith).
REPLACE cLastName WITH 'Jones'
? 'New cLastName value: '
?? cLastName  && Displays new cLastName value (Jones).
= TABLEUPDATE(.T.)  && Commits changes.
? 'Updated cLastName value: '
?? cLastName  && Displays current cLastName value (Jones).

Vea también

Funciones | CURSORSETPROP( ) | CURVAL( ) | OLDVAL( ) | TABLEREVERT( ) | Cursor (Objeto)


TAG( ) (Función)

Devuelve un nombre de etiqueta desde un archivo de índice compuesto de múltiples entradas .CDX abierto, o bien, el nombre de un archivo de índice de una sola entrada .IDX abierto.

TAG([CDXFileName[, nTagNumber[, nWorkArea | cTableAlias]]])

Valores devueltos

Carácter

Parámetros

CDXFileName
Especifica el nombre del archivo de índice .cdx compuesto de múltiples entradas desde el cual TAG( ) devuelve un nombre de etiqueta.
nTagNumber
Especifica un número correspondiente al orden en el que se creó la etiqueta en el archivo de índice compuesto. Por ejemplo, si nTagNumber es 1, TAG( ) devuelve el nombre de la primera etiqueta creada en el archivo de índice compuesto. Si nTagNumber es 2, TAG( ) devuelve el nombre de la segunda etiqueta creada y así sucesivamente. TAG( ) devolverá la cadena vacía cuando nTagNumber exceda el número de nombres de etiqueta.

Si omite CDXFileName, TAG( ) devuelve nombres de etiquetas de archivos de índice compuesto y nombre de archivo de índice de entrada única en un orden específico, de la siguiente forma.

  • Se devuelven los nombres de los archivos de índice de entrada única según su orden en la cláusula INDEX de USE o SET INDEX.
  • Se devuelven los nombres de las etiquetas del archivo de índice compuesto estructural (si hay uno para la tabla).
  • Se devuelven los nombres de etiqueta de otros archivos de índice compuesto abiertos, otra vez en el orden de creación de las etiquetas en los archivos de índice compuesto y en el orden en que se especifican los archivos de índice compuesto en la cláusula INDEX de USE o SET INDEX.
nWorkArea | cTableAlias
Devuelve nombres de etiquetas y nombres de archivos de índice desde archivos abiertos en otra área de trabajo. El parámetro nWorkArea especifica un número de área de trabajo y cTableAlias especifica un alias de tabla. De forma predeterminada, se devuelven los nombres de etiquetas y los nombres de archivos de índice desde los archivos del área de trabajo activa.

Observaciones

Las etiquetas son entradas de índice de archivos de índice .cdx compuestos de múltiples entradas creados con INDEX.

Nota Los archivos de índice .cdx compuesto de múltiples entradas y los archivos de índice .idx de una sola entrada se pueden abrir para una tabla con la cláusula INDEX en USE o con SET INDEX. Con esta tabla se abre automáticamente un archivo de índice .cdx compuesto estructural.

Ejemplo

El ejemplo siguiente abre la tabla customer de la base de datos testdata. FOR ... ENDFOR para crear un bucle en el que CDX( ) se utiliza para mostrar el nombre de cada índice estructural.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE Customer     && Open customer table
CLEAR
FOR nCount = 1 TO 254
IF !EMPTY(TAG(nCount))  && Checks for tags in the index
? CDX(nCount)     && Display .CDX names
ELSE
EXIT  && Exit the loop when no more tags are found
ENDIF
ENDFOR

Vea también

CDX( ) | DESCENDING( ) | INDEX | MDX( ) | NDX( ) | SET INDEX | SYS(14) - Expresión de índice | USE (Comando) | ATAGINFO( ) (Función)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


TAGCOUNT( ) (Función)

Devuelve el número de etiquetas de archivos de índice .cdx compuestos de múltiples entradas y de archivos de índice .idx de una sola entrada abiertos.

TAGCOUNT([CDXFileName [, nWorkArea | cTableAlias]])

Valores devueltos

Numérico

Parámetros

CDXFileName
Especifica el nombre de un archivo de índice compuesto para el que TAGCOUNT( ) devuelve el número de etiquetas. Si no existe CDXFileName para la tabla del área actual, deberá especificar los valores de nWorkarea o cTableAlias en el que exista.

Si omite CDXFileName, TAGCOUNT( ) devuelve el número de etiquetas de todos los archivos de índice compuesto .cdx y abre archivos de índice de una sola entrada .idx en el área de trabajo o el alias seleccionado actualmente.

nWorkarea
Especifica el área de trabajo de la tabla para la que TAGCOUNT( ) devuelve el número de etiquetas para el archivo de índice .cdx compuesto.
cTableAlias
Especifica el alias de la tabla para la que TAGCOUNT( ) devuelve el número de etiquetas para el archivo de índice compuesto .cdx.

Observaciones

Se incluye por compatibilidad con dBASE.

Vea también

INDEX (Comando) | TAGNO( ) (Función)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


TAGNO( ) (Función)

Devuelve la posición del índice para las etiquetas de archivos de índice compuestos .cdx y los archivos de índice de una sola entrada .idx abiertos.

TAGNO([IndexName [, CDXFileName [, nExpression | cExpression]]])

Valores devueltos

Numérico

Parámetros

IndexName
Especifica el nombre de una etiqueta de archivo de índice .cdx compuesto o de un archivo de índice de una sola entrada .idx abierto, para el que TAGNO( ) devuelve la posición del índice.
CDXFileName
Especifica el nombre de un archivo de índice compuesto .cdx que contiene el nombre de la etiqueta especificada con IndexName.
nExpression
Especifica el área de trabajo de la tabla para la que TAGNO( ) devuelve la posición del índice para etiquetas de archivos de índice .cdx compuestos y archivos de índice .idx de una sola entrada.
cExpression
Especifica el alias de la tabla para la que TAGNO( ) devuelve la posición del índice para etiquetas de archivos de índice .cdx compuestos y archivos de índice .idx de una sola entrada.

Observaciones

TAGNO( ) devuelve 0 si no se ha establecido ningún índice principal (la tabla está en el orden numérico natural de registros) y se han omitido los parámetros opcionales.

Se incluye por compatibilidad con dBASE.

Vea también

INDEX (Comando) | TAGCOUNT( ) (Función)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


TAN( ) (Función)

Esta función trigonométrica devuelve la tangente de un ángulo.

TAN(nExpression)

Valores devueltos

Numérico

Parámetros

nExpression
Especifica el ángulo en radianes para el que TAN( ) devuelve la tangente. Para convertir un ángulo de grados a radianes, utilice DTOR( ). El número de lugares decimales que devolverá TAN( ) puede especificarse con SET DECIMALS.

Ejemplo

CLEAR
? TAN(0)  && Displays 0.00
? TAN(PI( )/4)  && Displays 1.00
? TAN(PI( )*3/4)  && Displays -1.00

Vea también

COS( ) | DTOR( ) | RTOD( ) | SET DECIMALS | SIN( )


TARGET( ) (Función)

Esta función devuelve el alias de la tabla de destino de una relación, tal y como se especifica en la cláusula INTO de SET RELATION.

TARGET(nRelationshipNumber [, nWorkArea | cTableAlias])

Valores devueltos

Character

Parámetros

nRelationshipNumber
Especifica el número de una relación. Incluya un número entre 1 y el número de relaciones del área de trabajo especificada. Se devolverán los alias de las tablas de destino (sin un orden específico) hasta que el valor de nRelationshipNumber sea mayor que el número de relaciones. Cuando nRelationshipNumber sea mayor que el número de relaciones, se devolverá la cadena vacía.
nWorkArea | cTableAlias
Devuelve el alias de la tabla de destino en otra área de trabajo. El parámetro nWorkArea especifica un número de área de trabajo y cTableAlias especifica el alias de una tabla. De forma predeterminada, se devuelve el alias de la tabla de destino del área de trabajo activa en caso de que no se especifique ningún alias ni área de trabajo.

Ejemplo

En este ejemplo se establece una relación por el campo order_id desde orders hasta customer. La función TARGET( ) se utiliza entonces para devolver el alias de la tabla de destino.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE orders IN 0 ORDER order_id
USE customer IN 0 ORDER cust_id
SELECT orders
SET RELATION TO cust_id INTO customer
? TARGET(1)  && Displays customer
? TARGET(2)  && Empty string

Vea también

RELATION( ) | SET RELATION | SELECT


TEXTMERGE( ) (Función)

Proporciona una evaluación de una expresión formada por caracteres.

TEXTMERGE(cExpression [, lRecursive [, cLeftDelim [, cRightDelim]]])

Parámetros

cExpression
Especifica la expresión de cadena que se va a evaluar.
lRecursive
Especifica si se deben recorrer de forma repetida todos los niveles de delimitadores de cExpression, evaluando la expresión hasta que no quede ningún delimitador de texto.
cLeftDelim
Especifica el delimitador izquierdo que se debe utilizar para buscar en la combinación de texto.cLeftDelim está limitado a dos caracteres.
cRightDelim
Especifica el delimitador derecho que se debe utilizar para buscar en la combinación de texto. cRightDelim está limitado a dos caracteres.

Valores devueltos

Cadena de caracteres. Representa el valor de cExpression, el texto combinado.

Observaciones

Los parámetros cLeftDelim y cRightDelim tienen temporalmente mayor prioridad que los valores de SET TEXTMERGE DELIMITERS.

La función TEXTMERGE( ) responde al valor actual de SET TEXTMERGE SHOW | NOSHOW.

Ejemplo

En el siguiente ejemplo se crea una cadena de texto, y a continuación, se muestra el resultado de aplicar TEXTMERGE a esa expresión.

SET TEXTMERGE OFF
TEXT to myvar noshow &&textm
this is a test   <<datetime()>>
<<program(-1)>>
<<myvar>>
textmerge(myvar) (this line is literal)
<<doit(myvar)>>   (cause recursion
END of orig text
endtext
?myvar
?"Now starting textmerge"
?textmerge(myvar)
PROCEDURE doit(myvar)
*  r=i   && cause an error
if program(-1) > 3
return "THEEND*********"
endif
return textmerge(myvar)

Vea también

SET DELIMITERS (Comando) | SET TEXTMERGE (Comando) | SET TEXTMERGE DELIMITERS (Comando) | Crear expresiones de tipo Carácter | TEXT ... ENDTEXT


TIME( ) (Función)

Devuelve la hora actual del sistema en formato de 24 horas, en una cadena de 8 caracteres (HH:MM:SS).

TIME([nExpression])

Valores devueltos

Character

Parámetros

nExpression
La hora devuelta incluirá las centésimas de segundo si se incluye nExpression. La expresión numérica nExpression puede ser cualquier valor. No obstante, la resolución máxima real es de aproximadamente 1/18 de segundo. Utilice SECONDS( ) para obtener mayor resolución.

Vea también

CTOT( ) | DATE( ) | DATETIME( ) | DTOT( ) | HOUR( ) | SEC( ) | SECONDS( ) | SET SECONDS | SYS(2) - Segundos desde medianoche


TRANSFORM( ) (Función)

Devuelve una cadena de carácteres de una expresión en un formato determinado por un código.

Nota Usando TRANSFORM( ) con un número negativo grande que contiene un decimal puede producir una sobrecarga numerica (numeric overflow) cuando ese número es pasado dentro de una variable de memoria. Deberá usar la función STR( ) con tales números.

Sintaxis:

TRANSFORM(eExpresión, [cCódigosFormato])

Parámetros

eExpresión
Especifica la expresión de tipo carácter, concurencia, Fecha, Objeto, o Númerico que se desea dar formato.
cCódigosFormato
Especifica uno o más códigos de formato que determinan como se da formato a la expresión. En la siguiente tabla se muestran los códigos de formato disponibles.
Códigos de Formato | Descripción
@B | Alinea a la izquierda los datos numéricos en la zona de presentación.
@C | CR se anexa a los valores positivos de moneda o numéricos para indicar un crédito.
@D | Los valores Date y DateTime se convierten al formato SET DATE actual.
@E | Los valores Date y DateTime se convierten al formato de fecha BRITISH.
@L | Llena los campos númericos con ceros.
@R La transformación utiliza una máscara de formato. Los carácteres de la máscara no se almacenan en el valor transformado. Utilícelo sólo con datos numéricos o alfanuméricos. La máscara puede incluir los siguientes caracteres:

9 o #Representa un carácter o un número.

!Convierte en mayúsculas las letras minúsculas.

Note VisualFoxPro no mostrará la máscara de carácteres especifíicados que exceda la longitud de carácteres de la cadena pasada.
@T | Se eliminan los espacios en blanco de los valores de tipo Carácter.
@X | DB se anexan valores numéricos o de moneda negativos para indicar un débito.
@Z | Si es 0, valores numéricos o de moneda se convierten en espacios.
@( Encierra entre paréntesis los valores numéricos o de moneda negativos.
@^ Convierte valores numéricos o de moneda en valores científicos.
@0 | Convierte valores numéricos o de moneda en sus equivalencias hexadecimales. El valor numérico o de moneda tiene que ser positivo y menor que 4.294.967.296.
@! Convierte los datos de caracteres en mayúsculas.
@$ Agrega el símbolo de moneda actual especificado mediante SET CURRENCY a los valores de moneda y numéricos. De forma predeterminada, el símbolo se colocará justo antes o justo después del valor. De todas formas, tanto el símbolo de moneda y su colocación (especificados mediante SET CURRENCY), como el carácter de separación (especificado mediante SET SEPARATOR) y el carácter decimal (especificado mediante SET POINT) pueden ser cambiados.
X | Especifica el ancho de los valores de caracteres. Por ejemplo, si cCódigosFormato es ‘XX’, se devuelven 2 caracteres.
Y | Convierte los valores lógicos verdadero (.T.) y falso (.F.) en Y y en N, respectivamente.
! Convierte los carácteres que están en minúsculas en carácteres en mayúsculas en la posicion correspondiente.
. Especifica la posición del separador de decimales en los valores numéricos y de moneda.
, Separa los dígitos que están a la izquierda del separador de decimales en los valores de moneda y numéricos.
9 Especifica el ancho de los valores numéricos.

Por ejemplo, si cCodigosFormato es '999.99', los caracteres numéricos son formateados con tres carácteres a la izquierda del punto decimal, y dos carácteres a la derecha.

Nota Cuando se especifica cCodigosFormato para valores numéricos, el código del formato debe tener al menos el tamaño de el valor que se quiere mostrar.

El siguiente ejemplo muestra los resultados cuando el código es incorrecto, menor que, e igual al tamaño del valor que se quiere mostrar.

CREATE CURSOR myCursor (col1 n(5,2))
INSERT INTO myCursor VALUES (-555.5)
* Sin Codigo de Formato y devuelve **.**
? TRANSFORM(myCursor.col1 )
* Un codigo de formato menor que el valor devuelve ***.**
? TRANSFORM(myCursor.col1,'999.99' )
* Un codigo de formato del mismo tamaño que el valor devuelve -556.00
? TRANSFORM(myCursor.col1,'9999.99' )

Cuando el valor de la expresion es más largo que el ancho de el campo numérico, Visual FoxPro realiza los siguientes pasos para forzar a que el valor quepa:

  • Trunca las posiciones decimales y redondea la porción decimal restante del campo.
  • Si el valor no cabe, almacena el contenido del campo usando notación científica.
  • Si el valor todavia no cabe, reemplaza el contenido del campo con asteriscos.

Si se omite cCodigosFormato, Visual FoxPro realiza una transformación por default en eExpresión. La siguiente tabla describe las transformaciones realizadas para cada tipo de datos que eExpression puede asumir.

Tipo de Dato | Descripción de la Transformación
Character | No se realiza ninguna transformación.
Currency | La transformación está determinada por los valores especificados en la ficha Regional del cuadro de diálogo Opciones.
Date | Se realiza una transformación DTOC( ) en la fecha.
DateTime | Se realiza una transformación TTOC( ) en la fecha y hora.
General | Devuelve "Gen" si el campo general contiene un objeto; devuelve "gen" si el campo general no contiene un objeto.
Logical | Los valores lógicos verdadero (.T.) y falso (.F.) se transforman en las cadenas de caracteres ".T." y ".F." respectivamente.
Memo | No se realiza ninguna transformación.
Numérico (incluye los tipos de datos Double, Float o Integer)

Se quitan los ceros a la izquierda de la parte decimal de un valor numérico.

Si el valor numérico es un número entero, no se incluye un punto decimal en el valor transformado (por ejemplo, 4,0 se convierte en 4).

Si el valor numérico es menor que 1 pero mayor que -1, se incluye un cero antes del signo decimal (por ejemplo, ,4 se transforma en 0,4).
Object | Devuelve la cadena de carácteres "(Objeto)".

Valores Devueltos

Tipo de datos Carácter. TRANSFORM( ) devuelve una cadena de carácteres de una expresión en un formato determinado por un código de formato.

Ejemplo

STORE 12.34 TO gnPrice
CLEAR
? TRANSFORM(gnPrice, '$$$$.99')  && Muestra $12.34
? TRANSFORM(_SCREEN) && Muestra (Objeto)

Vea también

DTOC( ) | TTOC( ) | InputMask (Propiedad)


TRIM( ) (Función)

Devuelve la expresión de caracteres especificada después de eliminar todos los espacios en blanco finales.

TRIM(cExpression)

Valores devueltos

Character

Parámetros

cExpression
Especifica la expresión de caracteres de la que TRIM( ) elimina todos los espacios en blanco finales.

Observaciones

TRIM( ) es idéntica a RTRIM( ).

Ejemplo

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer  && Opens Customer table
CLEAR
? 'The contact for '+ TRIM(company) + ' is ' + contact

Vea también

ALLTRIM( ) | LTRIM( ) | RTRIM( )


TTOC( ) (Función)

Convierte una expresión DateTime en un valor de tipo Carácter del formato especificado.

TTOC(tExpression [, 1 | 2])

Valores devueltos

Character

Parámetros

tExpression
Especifica una expresión en formato DateTime de la que TTOC( ) devuelve un valor de tipo Carácter. Si tExpression sólo contiene una hora, Visual FoxPro agrega a tExpression la fecha predeterminada 30/12/1899. Si tExpression sólo contiene una fecha, Visual FoxPro agregará la hora predeterminada de medianoche (12:00:00 a.m.) a tExpression.
1
Especifica que TTOC( ) devuelve un cadena Character con un formato adecuado para la creación de índices. La cadena de caracteres tiene un formato aaaa:mm:dd:hh:mm:ss de 14 caracteres que no se ve afectado por la configuración actual de SET CENTURY o SET SECONDS.
2
Especifica que TTOC( ) devuelva una cadena Character consistente sólo en el periodo de tiempo de la expresión DateTime. Los valores establecidos para SET SECONDS y para SET DATE especifican si se incluye la cantidad de segundos en la cadena de caracteres. Tenga en cuenta que, si SET DATE está establecido en LONG o en SHORT, el formato de la cadena de caracteres se determinará por el formato establecido para la hora en el Panel de control.

Ejemplo

El ejemplo siguiente crea una variable de tipo DateTime llamada gtDtime. TYPE( ) muestra T, lo que indica que la variable es de tipo DateTime. TTOC( ) se usa para convertir la variable a un tipo Carácter y TYPE( ) muestra ahora C para indicar que la variable es de tipo Carácter después de la conversión.

STORE DATETIME( ) TO gtDtime  && Creates a Datetime type memory variable
CLEAR
? "gtDtime is type: "
?? TYPE('gtDtime')  && Displays T, Datetime type value
gtDtime = TTOC(gtDtime)     &&  Converts gtDtime to a character value
? "gtDtime is now type: "
?? TYPE('gtDtime')  && Displays C, character type value

Vea también

DATE( ) | DATETIME( ) | HOUR( ) | MINUTE( ) | SEC( ) | SECONDS( ) | SET CENTURY | SET DATE SET SECONDS | TIME( ) | TTOD( )


TTOD( ) (Función)

Devuelve un valor de tipo Date a partir de una expresión de DateTime.

TTOD(tExpression)

Valores devueltos

Date

Parámetros

tExpression
Especifica una expresión de fecha y hora a partir de la cual TTOD( ) devuelve un valor Date. tExpression debe evaluarse como una fecha y hora válidas. Si tExpression sólo contiene una hora, Visual FoxPro agrega la fecha predeterminada de 30/12/1899 a tExpression y devuelve esta fecha predeterminada.

Ejemplo

El ejemplo siguiente crea una variable de tipo DateTime llamada gtDtime. TYPE( ) muestra T, lo que indica que la variable es de tipo DateTime. TTOD( ) se utiliza para convertir la variable a un tipo Date y TYPE( ) muestra ahora D para indicar que la variable es de tipo Date después de la conversión.

STORE DATETIME( ) TO gtDtime  && Creates a Datetime type memory variable
CLEAR
? "gtDtime is type: "
?? TYPE('gtDtime')  && Displays T, Datetime type value
gtDtime = TTOD(gtDtime)     &&  Converts gtDtime to a date value
? "gtDtime is now type: "
?? TYPE('gtDtime')  && Displays D, character type value

Vea también

DATE( ) | DATETIME( ) | HOUR( ) | MINUTE( ) | SEC( ) | SECONDS( ) | SET CENTURY | SET SECONDS | TIME( ) | TTOC( )


TXNLEVEL( ) (Función)

Devuelve un valor numérico que indica el nivel de transacción actual.

TXNLEVEL( )

Valores devueltos

Numérico

Observaciones

Utilice BEGIN TRANSACTION para crear una transacción. Las transacciones se anidan al ejecutar BEGIN TRANSACTION mientras hay otra transacción en curso. Las transacciones pueden anidarse de esta forma en un máximo de cinco niveles. Utilice TXNLEVEL( ) para determinar el nivel de transacción actual.

TXNLEVEL( ) devuelve un valor de 0 a 5. TXNLEVEL( ) devuelve 0 si no hay ninguna transacción en curso.

Ejemplo

En el ejemplo siguiente se abre la tabla customer de la base de datos testdata. Se ejecuta BEGIN TRANSACTION para iniciar una transacción y se usa TXNLEVEL( ) para mostrar el nivel de la transacción TRANSACTION (1). BEGIN TRANSACTION vuelve a utilizarse para iniciar una transacción anidada y TXNLEVEL( ) muestra 2 para el nivel actual de transacción.

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE Customer     && Open customer table
CLEAR
BEGIN TRANSACTION
tLevel = ALLTRIM(STR(TXNLEVEL()))
=MESSAGEBOX("Current Transaction: " + tLevel, 0, "Trasaction Level")
BEGIN TRANSACTION
tLevel = ALLTRIM(STR(TXNLEVEL()))
=MESSAGEBOX("Current Transaction: " + tLevel, 0, ;
"Trasaction Level")
END TRANSACTION
END TRANSACTION

Vea también

BEGIN TRANSACTION | END TRANSACTION | ROLLBACK


TXTWIDTH( ) (Función)

Devuelve la longitud de una expresión de caracteres con respecto al ancho promedio de carácter de una fuente.

TXTWIDTH(cExpression [, cFontName, nFontSize [, cFontStyle]])

Valores devueltos

Numérico

Parámetros

cExpression
Especifica una expresión de tipo Carácter cuya longitud devuelve TXTWIDTH( ). Si sólo incluye cExpression, se devuelve la longitud de la expresión de tipo Carácter para la fuente actual de la ventana principal de Visual FoxPro o de la ventana de resultados activa. Una fuente no proporcional siempre devuelve un valor igual que el número de caracteres de cExpression.

Incluya los argumentos opcionales cFontName, nFontSize y cFontStyle para determinar la longitud de una expresión de caracteres con una fuente, un tamaño de fuente o un estilo de fuente específicos.

cFontName
Especifica el nombre de la fuente. Incluya cFontName para devolver la longitud de una expresión de caracteres con una fuente específica.
nFontSize
Especifica el número que corresponde al tamaño en puntos de la fuente. Incluya nFontSize para devolver la longitud de una expresión de caracteres con un tamaño de fuente concreto.
cFontStyle
Especifica un estilo especial de fuente para la expresión de caracteres. cFontStyle es un código de estilo de fuente especificado por un carácter o un conjunto de caracteres. Se utilizará el estilo de fuente Normal si no se incluye cFontStyle. Estos son los caracteres para cada estilo de fuente:
Character | Estilo de la fuente
B | Negrita
I | Cursiva
N | Normal
O | Contorno
Q | Opaco
S | Sombra
- Tachado
T | Transparente
U | Subrayado

Puede incluir más de un carácter para especificar una combinación de estilos de fuente. Por ejemplo, BI especifica un estilo de fuente negrita y cursiva.

El comando siguiente muestra un mensaje con la fuente Courier normal de 24 puntos, centrado horizontalmente en la ventana principal de Visual FoxPro.

@ 25,(WCOLS( )-TXTWIDTH('Hello!','Courier ',24)* ;
FONTMETRIC(6,'Courier ',24)/FONTMETRIC(6))/2  ;
SAY 'Hello!' FONT 'Courier ',24

Observaciones

TXTWIDTH( ) devuelve el número de caracteres que ocupa una expresión de caracteres cExpression, basado en el ancho promedio de carácter de una fuente especificada (el ancho promedio de carácter de una fuente se llama fóxel). Utilice FONTMETRIC(6) para determinar el ancho promedio de carácter de una fuente.

Si no incluye una fuente en TXTWIDTH( ), el valor que devuelve TXTWIDTH( ) está determinado por la fuente actual de la ventana principal de Visual FoxPro, si el resultado se dirige a la ventana principal de Visual FoxPro cuando se ejecuta TXTWIDTH( ). Si el resultado se está dirigiendo a una ventana definida por el usuario, el valor devuelto está determinado por la fuente actual de dicha ventana.

Vea también

FONTMETRIC( ) | GETFONT( ) | LEN( ) | SYSMETRIC( ) | WFONT( )


TYPE( ) (Función)

Evalúa una expresión de carácteres y devuelve el tipo de datos de su contenido.

TYPE(cExpression)

Valores devueltos

Carácter

Parámetros

cExpression
Especifica la expresión que se va a evaluar, que puede ser una variable, un campo, un campo de memoria o cualquier otra expresión. La expresión se debe transferir como una cadena de carácteres; escriba entre comillas los nombres de las variables de memoria, los campos, etc. Si no escribe la expresión entre comillas, la función TYPE( ) evaluará el contenido de la cadena. Si no se puede evaluar el contenido como una expresión válida de FoxPro, TYPE() devuelve "U" (expresión no definida).

Observaciones

La tabla siguiente presenta los caracteres que devuelve TYPE( ) y sus tipos de datos correspondientes:

Tipo de datos | Carácter devuelto
Carácter | C
Numérico (también Float, Double e Integer) | N
Currency | Y
Fecha | D
DateTime | T
Lógico | L
Memo | M
Objeto | O
General | G
Screen (creado con SAVE SCREEN) | S
Tipo de expresión no definido | U

Si pasa un orden como un parámetro a TYPE( ), entonces el tipo de datos retomados corresponde al primer elemento en el orden. Si desea comprobar el tipo de datos por un elemento específico del orden, entonces debe especificar ese elemento en el parametro. Por ejemplo:

? TYPE("myarray[3]")

Puede utilizar además la función TYPE( ) para comprobar si una variable de memoria es un orden. Por ejemplo:

? TYPE("myarray[1]")#"U"

Ejemplo

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer  && Opens Customer table
nTest = 1.01
cTest = "String"
CLEAR
? TYPE('customer.contact')  && Displays C
? TYPE('(12 * 3) + 4')  && Displays N
? TYPE('DATE( )')  && Displays D
? TYPE('.F. OR .T.')  && Displays L
? TYPE('ANSWER=42')  && Displays U
? TYPE('$19.99')  && Displays Y
? TYPE('nTest')  && Displays N
? TYPE('cTest')  && Displays C

Vea también

EVALUATE( ) | SAVE SCREEN | VARTYPE( )


Función UNBINDEVENTS()

Se puede usar UNBINDEVENTS() para desvincular o desconectar, un evento que fue originalmente vinculado a un objeto Visual FoxPro usando BINDEVENT(). Para desconectar eventos desde objetos COM, use la función EVENTHANDLER().

UNBINDEVENTS( oEventSource, cEvent, oEventHandler, cDelegate )

-o-

UNBINDEVENTS( oEventObject )

La siguiente tabla describe las formas en las que se puede usar UNBINDEVENTS().

sintaxis Acción
UNBINDEVENTS( oEventSource, cEvent, oEventHandler, cDelegate )
 Desvincula un evento especifico de un controlador de eventos.
UNBINDEVENTS( oEventObject )
 Desvincula todos los eventos asociados con este objeto. Esto incluye eventos que fueron vinculados al mismo como un origen de evento y a sus métodos delegados que sirven como manejadores de eventos.

Parámetros

oEventSource
Indica el origen del evento, el cual deberá ser un objeto Visual FoxPro válido.
oEventObject
Indica una referencia a objeto, la cual puede ser usada como origen de evento o controlador de evento.
cEvent
Indica el nombre del evento o propiedad que se desea desvincular.
oEventHandler
Indica el objeto que está manejando el evento.
cDelegate
Indica el método de oEventHandler que maneja el evento.

Valores de retorno

Retorna un valor de tipo Numérico. UNBINDEVENTS() devuelve el número total de eventos que fueron desvinculados si se completo satisfactoriamente la desvinculación. UNBINDEVENTS() retorna 0 (cero) si no existían eventos para desvincular. Visual FoxPro generará un error si la función UNBINDEVENTS() falla al intentar desvincular eventos que están disponibles para su desvinculación.

Comentarios

Si esta ocurriendo un evento, y UNBINDEVENTS() o el método delegado para manejar un evento es llamado; primero se completa la ejecución del evento y de su métodos delegado antes que UNBINDEVENTS() desvincule el evento.

Se puede usar la función AEVENTS() para recuperar información acerca de todos los eventos y métodos delegados conectados a un objeto en particular.

Ejemplo

El ejemplo siguiente, muestra como deshacer una llamada a BINDEVENTS( ) que mantiene al Visor de Clases posicionado a la derecha de la pantalla de Visual FoxPro, independientemente de los cambios de tamaño del mismo. UNBINDEVENTS( ) desvincula el evento Resize (de la variable de sistema _SCREEN), del objeto, oHandler:

PUBLIC oHandler
oHandler=NEWOBJECT("myhandler")
DO (_browser)
BINDEVENT(_SCREEN,"Resize",oHandler,"myresize")
UNBINDEVENTS(_SCREEN,"Resize",oHandler,"myresize")
DEFINE CLASS myhandler AS Session
PROCEDURE myresize
_obrowser.left = _SCREEN.Width - _obrowser.width
RETURN
ENDDEFINE

See Also

Funciones | Enlace de Eventos para objetos de Visual FoxPro | Función BINDEVENT( ) | Función EVENTHANDLER( ) | Función RAISEEVENT() | Función AEVENTS( )


UNIQUE( ) (Función)

Se incluye por compatibilidad con dBASE.


UPDATED( ) (Función)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar los eventos InteractiveChange y ProgrammaticChange.


UPPER( ) (Función)

Devuelve la expresión de caracteres especificada en mayúsculas.

UPPER(cExpression)

Valores devueltos

Carácter

Parámetros

cExpression
Especifica la expresión de caracteres que UPPER( ) convierte a mayúsculas.

Observaciones

Todas las letras minúsculas (a – z) de la expresión de caracteres se convierten en mayúsculas (A – Z) en la cadena devuelta. Esto también es verdadero para los caracteres ASCII altos (high-ASCII), incluso si la fuente actual no muestra las letras minúsculas acentuadas.

Ejemplo

CLEAR
? UPPER('abcdefgh')  && Displays ABCDEFGH

Vea también

ISLOWER( ) | ISUPPER( ) | LOWER( )

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


USED( ) (Función)

Determina si hay una tabla abierta en un área de trabajo específica.

USED([nWorkArea | cTableAlias])

Valores devueltos

Logical

Parámetros

nWorkArea | cTableAlias
Especifica el área de trabajo o el alias de la tabla. USED( ) devuelve un valor lógico verdadero (.T.) si está abierta una tabla en el área de trabajo especificada en nWorkArea; de lo contrario, devuelve un valor lógico falso (.F.). USED( ) devuelve un valor lógico verdadero (.T.) si se está usando el alias especificado en cTableAlias; de lo contrario, devuelve el valor falso (.F.)

Si omite nWorkArea y cTableAlias, USED( ) devuelve un valor lógico verdadero (.T.) si está abierta una tabla en el área de trabajo seleccionada actualmente; de lo contrario, devuelve falso (.F.).

Observaciones

USED( ) puede determinar si se está usando un alias o si hay una tabla abierta en un área de trabajo específica.

Ejemplo

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
SELECT A
USE customer  && Opens Customer table
SELECT B
USE orders  && Opens Orders table
SELECT C
USE employee  && Opens Employee table
? USED('A')  && Displays .T.
? USED('B')  && Displays .T.
? USED(4)  && Displays .F.

Vea también

ALIAS( ) | SELECT( ) | AUSED( )


VAL( ) (Función)

Devuelve un valor numérico a partir de una expresión de caracteres compuesta por números. Puede usar VAL( ) para convertir cadenas de caracteres devueltas por las funciones SYS( ) de Visual FoxPro en valores numéricos.

VAL(cExpression)

Parámetros

cExpression
Especifica una expresión de caracteres compuesta por un máximo de 16 números. Si en cExpression se incluyen más de 16 números, se redondeará.

Si el primer carácter de cExpression es un signo de dolar ($), VAL( ) devuelve un valor moneda. En todas las demás situaciones VAL( ) devuelve un valor numérico.

Valores devueltos

Dato del tipo Numérico o Moneda. VAL( ) devuelve los números de la expresión de caracteres de izquierda a derecha hasta que encuentra un carácter no numérico. Se pasan por alto los espacios en blanco iniciales.VAL( ) devuelve 0 si el primer carácter de la expresión de caracteres no es un número, un signo de dolar ($), un signo más (+) o un signo menos (-).

Ejemplo

CLEAR
STORE '12' TO A
STORE '13' TO B
? VAL(A) + VAL(B)  && Displays 25.00
STORE '1.25E3' TO C
? 2 * VAL(C)  && Displays 2500.00

Vea también

SET DECIMALS | STR( ) | SYS( ) - Introducción a las funciones


VARREAD( ) (Función)

Se incluye por compatibilidad con versiones anteriores de Visual FoxPro. Utilice las propiedades ControlSource o Name en su lugar.


VARTYPE( ) (Función)

Devuelve el tipo de datos de una expresión.

VARTYPE(eExpression [, lNullDataType])

Valores devueltos

Character

Parámetros

eExpression
Especifica la expresión para la que se devuelve el tipo de datos. VARTYPE( ) devuelve un carácter único que indica el tipo de datos de la expresión. La siguiente tabla presenta la lista de caracteres que devuelve VARTYPE( ) para cada tipo de datos:
Carácter devuelto | Tipo de datos
C | Character o Memo
N | Numérico, Integer, Float o Double
Y | Currency
L | Lógicas
O | Objeto
G | General
D | Fecha
T | DateTime
X | Null
U | Desconocido
Nota Si eExpression es una matriz, se evalúa el primer elemento de la misma.
lNullDataType
Especifica si VARTYPE( ) devuelve el tipo de datos cuando eExpression contiene el valor NULL. Si lNullDataType es verdadero (.T.), VARTYPE( ) devuelve el tipo de datos de eExpression. Si lNullDataType es falso (.F.) o se omite, VARTYPE( ) devuelve 'X', que indica que eExpression contiene el valor NULL.

Observaciones

VARTYPE( ) es similar a la función TYPE( ), pero VARTYPE( ) es más rápida y no requiere que se incluya entre comillas la expresión para la que se devuelve el tipo de datos.
VARTYPE( ) devuelve "U" si especifica una variable que no existe.

Vea también

EVALUATE( ) | TYPE( ) | Tipos de datos


VERSION( ) (Función)

Devuelve información de la versión de Visual FoxPro que está utilizando.

VERSION(nExpression)

Valores devueltos

Caracter, Numérico

Parámetros

nExpression
Especifica que VERSION( ) devuelve información adicional acerca de Visual FoxPro. Si omite nExpression, VERSION( ) devuelve el número de versión de Visual FoxPro.

En la siguiente tabla se indican los valores para nExpression y la información adicional de Visual FoxPro que devuelve.

nExpression | Información adicional de Visual FoxPro devuelta
1 | Fecha y número de serie de Visual FoxPro.
2 | Tipo de versión de Visual FoxPro: 0 - Versión de tiempo de ejecución, 1 - Versión estándar (versiones anteriores), 2 – Edición profesional (versiones anteriores)
3 Idioma al que se ha traducido Visual FoxPro. Los siguientes valores, en formato de dos caracteres, indican el idioma al que está localizado Visual FoxPro:
00 - Inglés
07 - Ruso
33 - Francés
34 - Español
39 - Italiano
42 - Checo
48 - Polaco
49 - Alemán
55 - Portugués
82 - Coreano
86 - Chino simplificado
88 - Chino tradicional
4 El número de versión de Visual FoxPro aparece en formato estándar (en versiones anteriores a Visual FoxPro 8), fácilmente analizable. El formato estándar es "MM.mm.0000.YDDD", donde MM es el número de versión principal, mm es el número de revisión secundaria incremental, 0000 es un marcador fijo e YDDD es la fecha de cuatro dígitos del producto, correspondiente al día en que se creó la versión.

La fecha del producto, YDDD, se calcula con la fórmula siguiente: 8365 + número de días transcurridos desde el principio de 1999. Por ejemplo, 8397 corresponde al 1 de febrero de 1999.

Tenga en cuenta que el formato para Visual FoxPro 8 es "MM.mm.0000.NNDD" donde MM es el número de versión principal, mm es el número de revisión secundaria incremental, 0000 es un marcador fijo, NN es el número de meses después de Diciembre de 2000, y DD es el número de día de la fecha en que la versión fué creada.
5 | La versión de lanzamiento de Visual FoxPro en formato Mmm, donde M es el número de versión principal y mm es el número de revisión secundaria incremental. Por ejemplo, VERSION(5) devuelve 800 en Visual FoxPro 8.

Observaciones

Utilice VERSION( ) para ejecutar condicionalmente partes de código específicas de la versión.

VERSION( ), VERSION(1), VERSION(3) y VERSION(4) devuelven cadenas de caracteres; VERSION(2) y VERSION(5) devuelven valores numéricos.

Ejemplo

CLEAR
? VERSION( )
? VERSION(1)
? VERSION(2)
? VERSION(3)
? VERSION(4)
? VERSION(5)

Vea también

GETCP( ) | GETENV( ) | OS( ) | AGETFILEVERSION


WBORDER( ) (Función)

Determina si la ventana activa o la especificada tienen borde o no.

WBORDER([WindowName])

Valores devueltos

Logical

Parámetros

WindowName
Especifica el nombre de la ventana para la cual WBORDER( ) devuelve un valor lógico.

Si se omite el nombre de la ventana, WBORDER( ) devuelve un valor lógico para la ventana de resultados actual.

Observaciones

WBORDER( ) devuelve verdadero (.T.) si la ventana especificada tiene borde; de lo contrario, WBORDER( ) devuelve falso (.F.). De forma predeterminada, las ventanas tienen borde. Incluya la cláusula NONE en DEFINE WINDOW para crear una ventana sin borde.

Vea también

ACTIVATE WINDOW | DEFINE WINDOW | SET BORDER


WCHILD( ) (Función)

Devuelve el número de ventanas secundarias de una ventana primaria o los nombres de las ventanas secundarias en el orden en el que están apiladas en la ventana primaria.

WCHILD([WindowName] [nChildWindow])

Valores devueltos

Character o Numérico

Parámetros

WindowName
Especifica una ventana distinta de la ventana de resultado activa cuyo número de ventanas secundarias devuelve WCHILD( ). Si solamente incluye un nombre de ventana sin la expresión numérica nChildWindow, devolverá el número de ventanas secundarias de la ventana especificada.

Si incluye las dos expresiones, WindowName y nChildWindow, WCHILD( ) devolverá los nombres de las ventanas secundarias de la ventana especificada. Si incluye tanto WindowName como nChildWindow, separe WindowName de nChildWindow con una coma.

También puede incluir la cadena vacía en WindowName para especificar la ventana principal de Visual FoxPro.

nChildWindow
Especifica una expresión numérica incluida para devolver los nombres de las ventanas secundarias de la ventana de resultados activa en caso de que se omita WindowName.

La expresión numérica nChildWindow puede ser 0 o cualquier valor positivo. Si nChildWindow es 0, se devolverá el nombre de la ventana secundaria de la parte inferior de la pila de ventanas secundarias de la ventana de resultados actual.

Si nChildWindow es un número positivo, WCHILD( ) devuelve el nombre de la siguiente ventana secundaria de la pila de ventanas. Si ejecuta WCHILD( ) otra vez con un número positivo, se devolverá el nombre de la siguiente ventana secundaria de la pila y así sucesivamente. Se devolverá la cadena vacía si se invoca WCHILD( ) más veces que el número de ventanas secundarias de la ventana primaria. Para obtener más información acerca de las pilas de ventanas, vea ACTIVATE WINDOW.

Nota En Visual FoxPro para Windows, si la ventana principal de Visual FoxPro está activa, todas las ventanas son secundarias de esta ventana principal de Visual FoxPro. En Visual FoxPro, las barras de herramientas que no estén acopladas en el borde de la ventana principal de Visual FoxPro son secundarias de dicha ventana. Al ejecutar un conjunto de funciones WCHILD( ) con números positivos, se devuelven los nombres de las ventanas y barras de herramientas activas.

Si incluye tanto WindowName como nChildWindow, separe WindowName de nChildWindow con una coma.

Observaciones

Puede crear una ventana (la ventana primaria) y colocar dentro otras ventanas (las ventanas secundarias). Al incluir la cláusula IN o IN WINDOW en DEFINE WINDOW se creará una ventana secundaria dentro de una ventana primaria. Una ventana secundaria creada y activada dentro de una ventana primaria no puede trasladarse fuera de la ventana primaria. Si se mueve la ventana primaria, la ventana secundaria se moverá con ella.

Si ejecuta WCHILD( ) sin ningún argumento, se devolverá el número de ventanas secundarias de la ventana de resultados actual.

Vea también

ACTIVATE WINDOW | DEFINE WINDOW | WPARENT( )


WCOLS( ) (Función)

Devuelve el número de columnas de la ventana activa o de la ventana especificada.

WCOLS([WindowName])

Valores devueltos

Numérico

Parámetros

WindowName
Especifica la ventana para la que WCOLS() devuelve la cantidad de columnas. En Visual FoxPro, también puede especificar el nombre de una barra de herramientas. Si no especifica ninguna ventana, se devuelve el número de columnas de la ventana de resultado activa. Si no hay ninguna ventana activa, WCOLS( ) devuelve el número de columnas de la ventana principal de Visual FoxPro.

Puede especificar el nombre de una ventana del sistema (la ventana Comandos, la ventana Sesión de datos, una ventana Examinar, etc.) en WCOLS( ) si la ventana del sistema se ha activado y está visible u oculta. En Visual FoxPro, puede especificar el nombre de una barra de herramientas (Estándar, Paleta de colores, etc.) con WCOLS( ) si dicha barra de herramientas se ha activado y está visible u oculta. Si especifica el nombre de una ventana de sistema o de una barra de herramientas que no se ha activado, Visual FoxPro genera un mensaje de error. La ventana Depuración es una excepción. Una vez abierta la ventana Depuración, su nombre se puede incluir con WCOLS( ) si está visible, oculta o cerrada.

También puede incluir la cadena vacía como el nombre de ventana para devolver el número de columnas de la ventana principal de Visual FoxPro.

Puede utilizar la cadena vacía para especificar la ventana principal de Visual FoxPro en funciones que devuelven ubicaciones o tamaños de ventanas, como WLCOL( ), WLROW( ) y WROWS( ).

Observaciones

En Visual FoxPro, el valor devuelto por WCOLS( ) depende de la fuente especificada para la ventana. Muchas fuentes se pueden mostrar en gran variedad de tamaños y algunas tienen un espacio proporcional. Una columna corresponde al ancho medio de una letra en la fuente actual. Para obtener más información, vea Introducción a las fuentes.

Ejemplo

En el ejemplo siguiente se centra un mensaje de resultado corto en la última fila de una ventana de tamaño desconocido.

CLEAR
DO SendMesg WITH 'Message', WCOLS( ), WROWS( ) –1
*** SendMesg ***
PROCEDURE SendMesg
PARAMETERS gcMsg, gnCol, gnRow
STORE (gnCol – LEN(gcMsg))/2 TO gnCol
@ gnRow, gnCol SAY gcMsg
RETURN

Vea también

SCOLS( ) | SROWS( ) | WLCOL( ) | WLROW( ) | WROWS( ) | Introducción a las fuentes

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


WDOCKABLE( ) (Función)

Indica el estado de acoplamiento de la ventana especificada.

WDOCKABLE(cWindowName [, lEnable])

Parámetros

cWindowName
Especifica el nombre de la ventana que se va a evaluar.
lEnable
Indica si la ventana especificada con el parámetro cWindowName tiene deshabilitado (.F.) o habilitado (.T.) el acoplamiento. Si la ventana especificada no admite el acoplamiento, se omitirá el estado de acoplamiento habilitado (.T.). con el parámetro lEnable.

Valores devueltos

Lógico. Devuelve el estado actual de acoplamiento para la ventana especificada.

Observaciones

La función WDOCKABLE( ) devuelve siempre verdadero (.F.) para ventanas que no se pueden acoplar. Utilice la función WDOCKABLE( ) en las ventanas de Visual FoxPro que admitan el acoplamiento. Para ver una lista de las ventanas acoplables de Visual FoxPro, vea Acoplar ventanas.

Vea también

Ventanas


WEEK( ) (Función)

Devuelve un número que representa la semana del año a partir de una expresión de tipo Date o DateTime.

WEEK(dExpression | tExpression [, nFirstWeek] [, nFirstDayOfWeek])

Valores devueltos

Numérico

Parámetros

dExpression | tExpression
Especifica la expresión Date o DateTime para la cual WEEK( ) devuelve la semana del año.

Si omite los argumentos opcionales nFirstWeek y nFirstDayOfWeek, WEEK( ) utilizará el domingo como primer día de la semana.

nFirstWeek
Especifica los requisitos para la primera semana del año. nFirstWeek puede tener uno de los valores siguientes.
nFirstWeek | Descripción
0 | WEEK( ) devuelve la semana seleccionada actualmente en el cuadro de lista Primera semana del año de la ficha Regional del cuadro de diálogo Opciones.
1 | La primera semana contiene 1 de enero. Éste es el valor predeterminado cuando se omite nFirstWeek.
2 | La mitad más grande (cuatro días) de la primera semana está en el año actual.
3 | La primera semana tiene siete días.
nFirstDayOfWeek
Especifica el primer día de la semana. nFirstDayOfWeek puede tener uno de los valores siguientes.
nFirstDayOfWeek | Descripción
0 | WEEK( ) devuelve el día seleccionado actualmente en el cuadro de lista La semana empieza en, de la ficha Regional del cuadro de diálogo Opciones.
1 | Domingo. Éste es el valor predeterminado cuando se omite nFirstDayOfWeek y es el primer día de la semana utilizado en versiones anteriores de FoxPro.
2 | Lunes
3 | Martes
4 | Miércoles
5 | Jueves
6 | Viernes
7 | Sábado

Observaciones

WEEK( ) devuelve un número del 1 al 53 que representa la semana del año. Por ejemplo, WEEK( ) devuelve 1 para la primera semana del año, 2 para la segunda semana del año, y así sucesivamente. Observe que una semana puede dividirse en dos años: la primera semana del año puede estar tanto en el año actual como en el anterior.

Ejemplo

En el ejemplo siguiente se muestra la semana del año correspondiente a la fecha de hoy y para una fecha específica.

CLEAR
? WEEK(DATE( ))
? WEEK({^1998-02-16})  && Displays 8

Vea también

CDOW( ) | DAY( ) | DOW( ) | SET FDOW | SET FWEEK | SYS( ) - Introducción a las funciones


WEXIST( ) (Función)

Determina si existe la ventana definida por el usuario especificada.

WEXIST(WindowName)

Valores devueltos

Lógico

Parámetros

WindowName
Especifica el nombre de la ventana definida por el usuario.

También puede especificar el nombre de una ventana del sistema de Visual FoxPro (la ventana Comandos, la ventana Sesión de datos, una ventana Examinar, etc.) y en Visual FoxPro, el nombre de una barra de herramientas. WEXIST( ) devuelve verdadero (.T.) si la ventana del sistema o la barra de herramientas especificada está visible u oculta. WEXIST( ) devuelve falso (.F.) si la ventana del sistema o la barra de herramientas especificada está cerrada.

Las ventanas Comando y Depuración son dos excepciones. Si incluye el nombre de la ventana Comandos en WEXIST( ), siempre se devuelve el valor verdadero. Si la ventana Depuración se ha abierto, WEXIST( ) devuelve verdadero, incluso si la ventana Depuración está cerrada.

Observaciones

WEXIST( ) devuelve Verdadero (.T.) si la ventana definida por el usuario especificada se ha creado con DEFINE WINDOW; de lo contrario, WEXIST( ) devuelve Falso (.F.). No es necesario que la ventana esté activa o visible para que WEXIST( ) devuelva Verdadero (.T.), pero sí debe existir.

Ejemplo

DEFINE WINDOW wScreen1 FROM 10,10 TO 20,69
DEFINE WINDOW wScreen2 FROM 1,0 TO 19,79
CLEAR
? WEXIST('wScreen1')  && Displays .T.
STORE 'wScreen2' TO gcWinName
? WEXIST('win_name')  && Displays .F.
? WEXIST(gcWinName)  && Displays .T.
RELEASE WINDOWS wScreen1, wScreen2

Vea también

ACTIVATE WINDOW | DEFINE WINDOW | WONTOP( ) | WOUTPUT( ) | WVISIBLE( )

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


WFONT( ) (Función)

Devuelve el nombre, el tamaño o el estilo de la fuente actual de una ventana en Visual FoxPro para Windows.

WFONT(nFontAttribute [, WindowName])

Valores devueltos

Character y Numérico

Parámetros

nFontAttribute
Especifica el atributo de fuente que desea que se devuelva.

Si nFontAttribute es 1, WFONT( ) devolverá el nombre de la fuente actual para la ventana activa o la especificada.

Si nFontAttribute es 2, WFONT( ) devolverá el tamaño de la fuente.

Si nFontAttribute es 3, WFONT( ) devolverá un código que identifica el estilo de fuente.

El código de estilo de fuente es un carácter o un conjunto de caracteres que corresponden al estilo de fuente actual. Por ejemplo, si el estilo de fuente actual es Negrita Cursiva, WFONT(3) devolverá BI.

En la siguiente tabla se muestran los códigos de cada estilo de fuente:

Character | Estilo de la fuente
B | Negrita
I | Cursiva
N | Normal
O | Contorno
Q | Opaco
S | Sombra
– Tachado
T | Transparente
U | Subrayado
WindowName
Especifica el nombre de la ventana cuya fuente, tamaño de fuente o estilo de fuente actuales desea determinar. En Visual FoxPro, también puede incluir el nombre de una barra de herramientas. Incluya la cadena vacía para devolver la fuente, el tamaño de fuente o el estilo de fuente actuales de la ventana principal de Visual FoxPro.

WindowName puede ser el nombre de una ventana definida por el usuario y creada con DEFINE WINDOW, o una ventana de edición de texto o memo.

También puede incluir el nombre de una ventana del sistema (Sesión de datos, Seguimiento, Depuración, etc.). WFONT( ) puede devolver atributos de fuente únicamente para una ventana del sistema que se haya abierto y esté actualmente visible u oculta. Si la ventana del sistema especificada está cerrada, Visual FoxPro genera un mensaje de error.

Si se omite WindowName, WFONT( ) devuelve la fuente, el tamaño de fuente o el estilo de fuente actuales de la ventana de resultados activa.

Ejemplo

En el ejemplo siguiente se crea una ventana definida por el usuario llamada wFontChar. La ventana se activa y se muestran las características de su fuente en la ventana. Después se muestran las características de la fuente de la ventana principal de Visual FoxPro.

CLEAR
DEFINE WINDOW wFontChar ;
FROM 1,1 TO 3,35 ;
FONT 'MS SANS SERIF',8 ;
STYLE 'BI'  && Define window with font and style
ACTIVATE WINDOW wFontChar
? WFONT(1), WFONT(2), WFONT(3)  && wFontChar window
ACTIVATE SCREEN
?
?
?
? 'Font characteristics for the window wFontChar'
?
?
? WFONT(1,''), WFONT(2,''), WFONT(3,'')  && Main Visual FoxPro window
?
? 'Font characteristics for the main Visual FoxPro window'
WAIT WINDOW
RELEASE WINDOW wFontChar
CLEAR

Vea también

FONTMETRIC( ) | GETFONT( ) | SYSMETRIC( ) | TXTWIDTH( )


WLAST( ) (Función)

Devuelve el nombre de la ventana que estaba activa antes que la ventana actual o determina si la ventana especificada estaba activa o no antes que la ventana actual.

WLAST([WindowName])

Valores devueltos

Character o Logical

Parámetros

WindowName
Especifica una ventana evaluada por WLAST( ). En Visual FoxPro, también puede especificar el nombre de una barra de herramientas. WLAST( ) devuelve verdadero (.T.) si la ventana especificada estaba activa antes que la ventana actual; de lo contrario, devuelve falso (.F.). También devuelve falso (.F.) si la ventana especificada no existe.

Si omite WindowName, se devolverá el nombre de la ventana que estaba activa antes que la ventana actual.

Observaciones

WLAST( ) devuelve la cadena vacía si la ventana que estaba activa antes que la ventana actual es la ventana Depuración, Seguimiento o Comando. La ejecución del programa no se ve afectada por poner estas ventanas delante cuando está depurando un programa que utiliza WLAST( ).

Vea también

ACTIVATE WINDOW | DEFINE WINDOW | WEXIST( ) | WONTOP( ) | WOUTPUT( ) | WVISIBLE( )


WLCOL( ) (Función)

Devuelve la coordenada de columna de la esquina superior izquierda de la ventana actual o la ventana especificada.

WLCOL([WindowName])

Valores devueltos

Numérico

Parámetros

WindowName
Especifica la ventana cuya coordenada de columna devuelve WLCOL( ). En Visual FoxPro, también puede especificar el nombre de una barra de herramientas. Si omite WindowName, WLCOLS( ) devuelve la coordenada de columna de la ventana de resultados activa. También puede utilizar la cadena vacía de WindowName para especificar la ventana principal de Visual FoxPro.

En Visual FoxPro, si no hay ninguna ventana activa, WLCOLS( ) devuelve la coordenada de columna de la ventana principal de Visual FoxPro en relación con el escritorio de Windows.

Si se ha abierto una ventana del sistema (la ventana Comandos, la ventana Sesión de datos, una ventana Examinar, etc.) y está visible u oculta (su nombre aparece en el menú Ventana), puede incluir este nombre en WLCOL( ). Si especifica el nombre de una ventana del sistema cerrada, Visual FoxPro genera un mensaje de error. La ventana Depuración es una excepción. Cuando se ha abierto la ventana Depuración, se puede incluir su nombre en WLCOL( ), esté visible, oculta o cerrada.

Observaciones

El valor devuelto por WLCOL( ) depende del modo de vídeo actual y se refiere a la ventana principal de Visual FoxPro. El modo de presentación puede cambiarse con SET DISPLAY.

Las ventanas se pueden colocar fuera de la ventana principal de Visual FoxPro. Si la ventana especificada está a la izquierda de la ventana principal de Visual FoxPro, WCOL( ) devuelve un valor negativo. Si el borde izquierdo de la ventana está a la derecha de la ventana principal de Visual FoxPro, WCOL( ) devolverá un valor positivo mayor que el ancho de la ventana principal de Visual FoxPro.

Vea también

SET DISPLAY | WCOLS( ) | WLROW( ) | WROWS( )


WLROW( ) (Función)

Devuelve la coordenada de fila de la esquina superior izquierda de la ventana activa o la ventana especificada.

WLROW([WindowName])

Valores devueltos

Numérico

Parámetros

WindowName
Especifica la ventana cuya coordenada de fila devuelve WLROW( ). En Visual FoxPro, también puede especificar el nombre de una barra de herramientas. Si omite WindowName, WLROW( ) devuelve la coordenada de fila de la ventana de resultados activa. También puede utilizar la cadena vacía de WindowName para especificar la ventana principal de Visual FoxPro.

En Visual FoxPro, si no hay ninguna ventana activa, WLROW( ) devuelve la coordenada de fila de la ventana principal de Visual FoxPro en relación al escritorio de Windows.

Si se ha abierto una ventana del sistema (Comandos, Sesión de datos, Examinar, etc.) y está visible u oculta (su nombre aparece en el menú Ventana), puede incluir este nombre en WLROW( ). Si especifica el nombre de una ventana del sistema cerrada, Visual FoxPro genera un mensaje de error. La ventana Depuración es una excepción. Cuando se ha abierto la ventana Depuración, se puede incluir su nombre en WLROW( ), esté visible, oculta o cerrada.

Observaciones

El valor devuelto por WLROW( ) depende del modo de vídeo actual y la coordenada de fila se refiere a la ventana principal de Visual FoxPro. El modo de presentación puede cambiarse con SET DISPLAY.

Las ventanas se pueden colocar fuera de la ventana principal de Visual FoxPro. Si la parte superior de la ventana está más arriba que la ventana principal de Visual FoxPro, WLROW( ) devuelve un valor negativo. Si la parte superior de la ventana está por debajo de la parte inferior de la ventana principal de Visual FoxPro, WLROW( ) devolverá un valor positivo mayor que el alto de la ventana principal de Visual FoxPro.

Vea también

SET DISPLAY | WCOLS( ) | WLCOL( ) | WROWS( )


WMAXIMUM( ) (Función)

Determina si la ventana activa o especificada está o no maximizada.

WMAXIMUM([WindowName])

Parámetros

WindowName
Especifica el nombre de la ventana evaluada por WMAXIMUM( ). Puede especificar el nombre de una ventana del sistema de Visual FoxPro (Comandos, Sesión de datos, Examinar, etc.).

Si omite WindowName, WMAXIMUM( ) devuelve un valor lógico para la ventana activa. También puede utilizar la cadena vacía de WindowName para especificar la ventana principal de Visual FoxPro.

Observaciones

Se puede aumentar el tamaño de las ventanas hasta que llenen la ventana en que se encuentran. En Visual FoxPro para Windows, la ventana que contiene a las demás, de forma predeterminada, es la ventana principal.

Una ventana definida por el usuario creada con DEFINE WINDOW puede maximizarse únicamente si se ha incluido la palabra clave ZOOM en su definición.

WMAXIMUM( ) devuelve verdadero (.T.) si la ventana actual o especificada está maximizada; de lo contrario WMAXIMUM( ) devuelve falso (.F.). En Visual FoxPro, puede incluir el nombre de una barra de herramientas. No obstante, WMAXIMUM( ) siempre devuelve falso (.F.) para las barras de herramientas, porque éstas no se pueden maximizar.

Vea también

DEFINE WINDOW | WMINIMUM( ) | ZOOM WINDOW


WMINIMUM( ) (Función)

Determina si la ventana activa o especificada está minimizada o no.

WMINIMUM([WindowName])

Valores devueltos

Logical

Parámetros

WindowName
Especifica el nombre de la ventana evaluada por WMINIMUM( ). Puede especificar el nombre de una ventana del sistema de Visual FoxPro (Comandos, Sesión de datos, Examinar, etc.).

Si omite WindowName, WMINIMUM( ) devuelve un valor lógico para la ventana activa. También puede incluir la cadena vacía en WindowName para especificar la ventana principal de Visual FoxPro.

Observaciones

En Visual FoxPro para Windows, las ventanas se pueden reducir a un icono.

Una ventana definida por el usuario creada con DEFINE WINDOW puede minimizarse únicamente si se ha incluido la palabra clave MINIMIZE en su definición.

WMINIMUM( ) devuelve verdadero (.T.) si la ventana actual o especificada está minimizada; de lo contrario, devuelve falso (.F.). En Visual FoxPro, puede incluir el nombre de una barra de herramientas. No obstante, WMINIMUM( ) siempre devuelve falso (.F.) para una barra de herramientas porque éstas no se pueden minimizar.

Vea también

DEFINE WINDOW | WMAXIMUM( ) | ZOOM WINDOW


WONTOP( ) (Función)

Determina si la ventana especificada o activa está o no delante de todas las demás ventanas.

WONTOP([WindowName])

Valores devueltos

Carácter o Lógico

Parámetros

WindowName
Especifica el nombre de la ventana evaluada por WONTOP( ). Puede especificar el nombre de una ventana definida por el usuario creada con DEFINE WINDOW o de una ventana del sistema (Comandos, Sesión de datos, Examinar, etc.). Si omite WindowName, WONTOP( ) devuelve el nombre de la ventana en primer plano o activa. También puede incluir la cadena vacía en WindowName para especificar la ventana principal de Visual FoxPro.

Si la ventana Depuración, Seguimiento o Comandos está activa y no especifica un nombre de ventana, WONTOP( ) devolverá el nombre de la última ventana que ha estado en primer plano. Si está depurando un programa que utiliza WONTOP( ), la ejecución del programa no se verá afectada al poner delante estas ventanas.

Observaciones

WONTOP( ) devuelve verdadero (.T.) si la ventana especificada está en primer plano. Si la ventana no está en primer plano o no existe, devuelve falso (.F.).

Históricamente, en versiones anteriores de Visual FoxPro, se ha hecho referencia a la ventana Sesión de Datos como la ventana Examinar. Adicionalmente, el lenguaje utilizado para el control de esta ventana, tales como HIDE WINDOW, ACTIVATE WINDOW, WONTOP( ), también refieren a esta ventana y a la ventana Examinar. Visual FoxPro continúa refiriéndose a la ventana Examinar con la función WONTOP( ) .

Ejemplo

En el siguiente ejemplo se utiliza WONTOP( ) para mostrar el nombre de la ventana activa. Antes de ejecutar este programa, abra algunas ventanas (Examinar, Sesión de datos, etc.) y después, ejecute el ejemplo.

IF NOT EMPTY(WONTOP( ))
WAIT WINDOW 'Frontmost window: ' + WONTOP( )
ELSE
WAIT WINDOW 'No windows are open'
ENDIF

Vea también

ACTIVATE WINDOW | DEFINE WINDOW | WEXIST( ) | WOUTPUT( ) | WVISIBLE( )

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


WOUTPUT( ) (Función)

Determina si el resultado se está dirigiendo o no a la ventana actual o especificada.

WOUTPUT([WindowName])

Valores devueltos

Character y Logical

Parámetros

WindowName
Especifica la ventana cuyo resultado evalúa WOUTPUT( ). El resultado no se puede dirigir a una ventana del sistema ni a una barra de herramientas. Si omite WindowName, WOUTPUT( ) devuelve el nombre de la ventana a la que se dirige actualmente el resultado. También puede incluir la cadena vacía en WindowName para especificar la ventana principal de Visual FoxPro.

WOUTPUT( ) devuelve la cadena vacía si el resultado se dirige a la ventana principal de Visual FoxPro.

Observaciones

WOUTPUT( ) devuelve verdadero (.T.) si la ventana definida por el usuario especificada es la ventana de resultado actual. WOUTPUT( ) devuelve falso (.F.) si la ventana especificada no existe o es una ventana del sistema. La ventana de resultados actual es la última ventana definida por el usuario y activada con ACTIVATE WINDOW.

Ejemplo

En el ejemplo siguiente se crea y se activa una ventana. WOUTPUT( ) se utiliza para mostrar el nombre de esta ventana de resultado activa. La ventana se cierra y se quita de la memoria. Si hay otra ventana activa, se muestra su nombre. Si no hay ninguna otra ventana activa, se muestra un mensaje que indica que el resultado se dirige a la ventana principal de Visual FoxPro.

DEFINE WINDOW wOutput1 FROM 2,2 TO 12,32 TITLE 'Output Window'
ACTIVATE WINDOW wOutput1
WAIT WINDOW 'wOutput1 window: ' + WOUTPUT( )
RELEASE WINDOW wOutput1
IF EMPTY(WOUTPUT( ))
WAIT WINDOW 'Output being directed to the main Visual FoxPro window'
ELSE
WAIT WINDOW 'Output window: ' + WOUTPUT( )
ENDIF

Vea también

ACTIVATE WINDOW | DEFINE WINDOW | WEXIST( ) | WONTOP( ) | WVISIBLE( )


WPARENT( ) (Función)

Devuelve el nombre de la ventana primaria de la ventana activa o especificada.

WPARENT([WindowName])

Valores devueltos

Character

Parámetros

WindowName
Especifica la ventana para la que WPARENT( ) devuelve el nombre de la ventana primaria. WPARENT( ) devuelve una cadena vacía si la ventana especificada no tiene una ventana primaria. Si omite WindowName, WPARENT( ) devolverá el nombre de la ventana primaria de la ventana de resultados activa. WPARENT( ) devuelve una cadena vacía si la ventana de resultados activa no tiene ninguna ventana primaria.

Observaciones

Puede utilizar DEFINE WINDOW para crear una ventana y colocarla en una ventana primaria. La ventana secundaria se integra con su ventana primaria. Por ejemplo, una ventana secundaria definida y activada dentro de una ventana primaria no puede desplazarse fuera de la ventana primaria. Si se mueve la ventana primaria, la ventana secundaria se moverá con ella.

Ejemplo

En el ejemplo siguiente se define una ventana primaria y una ventana secundaria. Después, se utiliza WPARENT( ) para identificar la ventana primaria.

CLEAR ALL
CLEAR
DEFINE WINDOW wParent ;
FROM 1,1 TO 20,20 ;
TITLE 'wParent'     && Parent window
ACTIVATE WINDOW wParent
DEFINE WINDOW wChild ;
FROM 1,1 TO 10,10 ;
TITLE 'wChild' ;
IN WINDOW wParent  && Child window
ACTIVATE WINDOW wChild
WAIT WINDOW 'The parent window is ' + WPARENT( )
RELEASE WINDOW wParent, wChild

Vea también

ACTIVATE WINDOW | DEFINE WINDOW | WCHILD( )


WREAD( ) (Función)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar el Diseñador de formularios.


WROWS( ) (Función)

Devuelve el número de filas en una ventana activa o especificada.

WROWS([WindowName])

Valores devueltos

Numérico

Parámetros

WindowName
Especifica la ventana cuyo número de filas devuelve WROWS( ). En Visual FoxPro, también puede especificar el nombre de una barra de herramientas.

En Visual FoxPro, el valor devuelto por WROWS( ) depende de la fuente especificada para la ventana. La mayoría de las fuentes puede mostrarse en una amplia variedad de tamaños, algunas con espacio proporcional. Una fila corresponde al alto de la fuente actual. Para obtener más información, vea Introducción a las fuentes.

Puede especificar el nombre de una ventana del sistema (la ventana Comandos, la ventana Sesión de datos o una ventana Examina, etc.) en WROWS( ) si la ventana del sistema se ha abierto y está visible u oculta. Si especifica el nombre de una ventana del sistema cerrada, FoxPro genera un mensaje de error. La ventana Depuración es una excepción. Cuando la ventana Depuración está abierta, se puede incluir su nombre en WROWS( ), esté visible, oculta o cerrada.

También puede incluir la cadena vacía en WindowName para devolver el número de filas en la ventana principal de Visual FoxPro.

La cadena vacía puede utilizarse para especificar la ventana principal de Visual FoxPro en funciones que devuelven posiciones o tamaños de ventana, como WLCOL( ), WLROW( ) y WCOLS( ).

Observaciones

Si no especifica ningún nombre de ventana, se devolverá el número de filas de la ventana de resultado activa. Si no hay ninguna ventana activa, se devolverá el número de filas de la ventana principal de Visual FoxPro.

Vea también

SCOLS( ) | SROWS( ) | WCOLS( ) | WLCOL( ) | WLROW( ) | Introducción a las fuentes


WTITLE( ) (Función)

Devuelve el título asignado a la ventana activa o especificada.

WTITLE([WindowName])

Valores devueltos

Character

Parámetros

WindowName
Especifica una ventana cuyo título devuelve WTITLE( ). Si incluye el nombre de una ventana definida por el usuario creada con DEFINE WINDOW, se devuelve el título asignado a la ventana con la cláusula TITLE.

Al ejecutar BROWSE WINDOW para abrir una ventana Examinar en una ventana definida por el usuario, WTITLE( ) devuelve el título de la ventana definida por el usuario si la ventana Examinar no tiene título. WTITLE( ) devuelve el título de la ventana Examinar siempre que esta ventana tenga un título.

También puede utilizar la cadena vacía de WindowName para especificar la ventana principal de Visual FoxPro.

Observaciones

WTITLE( ) puede utilizarse para devolver el título de una ventana, que aparece en el borde superior de la ventana. Si omite WindowName, se devolverá el título de la ventana activa. WTITLE( ) devolverá la cadena vacía si la ventana Depuración, Seguimiento o Comando están activas, o si el resultado se está dirigiendo a la ventana principal de Visual FoxPro.

Nombres y títulos de ventanas Se asignan nombres a las ventanas definidas por el usuario, a las ventanas del sistema, a las barras de herramientas (en Visual FoxPro) y a las ventanas Examinar de la forma siguiente:

A las ventanas definidas por el usuario se les asignan nombres cuando se crean con DEFINE WINDOW. Hay una distinción entre los nombres y los títulos de las ventanas definidas por el usuario. De forma predeterminada, las ventanas definidas por el usuario no tienen títulos. Si se incluye la cláusula TITLE al crear la ventana, aparecerá el título especificado en el borde superior de la ventana, pero no será el nombre de la ventana.

De forma predeterminada, cada ventana del sistema, que es parte de la interfaz de Visual FoxPro, obtiene su nombre del título de la ventana. Ejemplos de ventanas del sistema son la ventana Comandos, la ventana Sesión de datos y la ventana Seguimiento. En Visual FoxPro, cada barra de herramientas recibe su nombre a partir del título de la barra de herramientas.

Las ventanas de programa y edición, así como las ventanas del Diseñador de etiquetas y de informes obtienen sus nombres a partir del nombre del archivo que se está creando o modificando.

La ventana Examinar obtiene su nombre a partir del título de la ventana. El nombre y el título de la ventana Examinar se asignan de una de estas tres formas: por la asignación del título predeterminado del alias de la tabla, del título de la ventana (si lo tiene) o del título Examinar (si lo tiene).

De forma predeterminada, el nombre de la ventana Examinar es el alias de la tabla.

Para especificar los nombres de una ventana del sistema y de una barra de herramientas en comandos y funciones, escriba entre comillas el nombre completo de la misma. Por ejemplo, para ocultar la barra de herramientas Controles de informe en Visual FoxPro, ejecute el comando siguiente:

HIDE WINDOW "Report Controls"

Notas adicionales acerca de los nombres de ventanas Si no sabe con seguridad el nombre asignado a una ventana, recurra al menú Ventana. Todos los nombres de ventanas se muestran en la parte inferior del menú Ventana.

Si ejecuta BROWSE WINDOW WindowName, existirán dos nombres de ventanas. La ventana Examinar es una ventana distinta y toma los atributos de la ventana definida por el usuario especificada. Si una ventana está activa al ejecutar BROWSE y no incluye la cláusula WINDOW, la ventana Examinar tomará los atributos de la ventana activa. Puede anular este comportamiento si incluye NORMAL en BROWSE.

Puede incluir nombres de ventanas que contengan espacios en blanco en comandos y funciones que acepten nombres de ventanas, como MOVE WINDOW, DEACTIVATE WINDOW y WONTOP( ) si especifica la parte del nombre de la ventana que comienza por el primer carácter que no sea un espacio en blanco y termina en el último carácter que no sea un espacio en blanco.

Por ejemplo, una ventana Examinar con el nombre Entrada de facturas puede moverse con este comando:

MOVE WINDOW invoice BY 1,1

Los nombres de las ventanas definidas por el usuario no pueden contener espacios en blanco, pero los nombres de las ventanas Examinar y del sistema sí pueden contenerlos.

Vea también

ACTIVATE WINDOW | DEFINE WINDOW | WEXIST( ) | WLAST( ) | WONTOP( ) | WOUTPUT( ) | WREAD( )


WVISIBLE( ) (Función)

Determina si la ventana especificada se ha activado y no está oculta.

WVISIBLE(WindowName)

Valores devueltos

Lógico

Parámetros

WindowName
Especifica el nombre de ventana que evalúa WVISIBLE( ). En Visual FoxPro, también puede especificar el nombre de una barra de herramientas. También puede incluir la cadena vacía en WindowName para especificar la ventana principal de Visual FoxPro.

Observaciones

WVISIBLE( ) devuelve verdadero (.T.) si la ventana especificada está visible o activa y no está oculta. Las ventanas se muestran y se activan con SHOW WINDOW y ACTIVATE WINDOW.

WVISIBLE( ) devuelve falso (.F.) si la ventana no se ha activado, si se ha ocultado con HIDE WINDOW, si se ha desactivado con DEACTIVATE WINDOW o si no existe.

Ejemplo

El siguiente ejemplo activa la ventana Sesión de Datos (representada con el nombre View). Utilizando la función WVISIBLE(), imprime en la pantalla el estado visible de la ventana. Se utiliza luego Deactivate window para cerrar la ventana Sesión de datos, y por último, la función WVISIBLE() es utilizada nuevamente para imprimir el estado visible de la ventana.

ACTIVATE WINDOW View
? WVISIBLE( "View" ) && return .T.
DEACTIVATE WINDOW View
? WVISIBLE( "View" ) && return .F.

Vea también

ACTIVATE WINDOW | DEFINE WINDOW | WEXIST( ) | WONTOP( ) | WOUTPUT( )

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


XMLTOCURSOR( ) (Función)

Convierte texto XML en un cursor o tabla de Visual FoxPro.

XMLTOCURSOR(XMLSource eExpression | cXMLFile [, cCursorName [, nFlags ]])

Parámetros

eExpression
Especifica el texto XML o una expresión que producen datos XML válidos. Este parámetro puede ser una variable de memoria de Visual FoxPro, el contenido de un campo memo o el valor devuelto por una solicitud HTTP. También puede especificar el valor devuelto por una llamada a un método SOAP, XML de XMLDOM o una secuencia ADO. XMLCURSOR( ) genera un error si no se encuentra XMLSource o si el análisis de eExpression no produce datos XML válidos.
cXMLFile
Especifica el nombre y opcionalmente, ruta de un archivo físico XML que reside en el equipo local o tiene acceso a través de la red. Si no se especifica una ruta, Visual FoxPro busca el archivo XML en la ruta de FoxPro.
cCursorName
Especifica el nombre del cursor que contendrá el resultado. Si no se especifica o pasa una cadena vacía ("") para cCursorName, Visual FoxPro devuelve el resultado a XMLRESULT. El cursor se crea en el área de trabajo actual, a menos que ya se esté utilizando. En este caso, el cursor se escribe en un área de trabajo que no se esté utilizando.

Cuando nFlags se establece como 8192 y si cCursorName contiene datos, Visual FoxPro agrega a la tabla o cursor existente los datos que se están importando desde el archivo XML. La tabla o cursor debe estar abierto o en uso. Si cCursorName es una cadena vacía (""), Visual FoxPro importa XML en la tabla o cursor que esté abierto en el área de trabajo actual.

nFlags
Especifica cómo se controla XMLSource eExpression en XMLTOCURSOR( ) de acuerdo con la tabla siguiente:
nFlags | Bit | Descripción
0 | 0000 | Trata el parámetro uno como una cadena que contiene datos XML. (Predeterminado)
4 | 0100 | Conserva los espacios en blanco de los datos. Reemplaza el atributo xml:space de los datos XML.
512 | 01000000000 | Especifica que el parámetro uno (XMLSource eExpression o cXMLFile) es una cadena que contiene el nombre y la ruta de un archivo de datos XML.
1024 10000000000 NOCPTRANS: se crearán campos de tipo Carácter y Memo en el cursor resultante con la opción NOCPTRANS, y el texto o los valores xml de los elementos entrantes se insertarán en el campo de tipo Carácter o Memo, byte a byte y sin conversión.

Cuando se usa con el marcador (flag) 1024, XMLTOCURSOR( ) devuelve una cadena rellena con espacios igual a la cadena actual, es decir, una cadena con dos veces la longitud.
2048 100000000000 Se utiliza cuando el esquema importado tiene una esquema XML Schema Definition (XSD) que contiene tipos de dato decimales con restricciones, o aspectos como totalDigits="19" y fractionDigits="4".

Los valores de los tipos de datos XSD se equivalen al tipo de dato Monetario de Visual FoxPro en el cursor resultante.
4096 1000000000000 Deshabilita la decodificación base64.

En Visual FoxPro, la codificación base64 está pensada para codificar sólo datos binarios.

8192 1100000000 Especifica que cCursorName es el nombre o alias de una tabla o cursor existente e importar los datos desde el archivo XML especificado, en una tabla existente o cursor predefinido.

Si cCursorName contiene datos, los datos importados desde el archivo XML se agregan a los datos existentes. Si cCursorName es una cadena vacía (""), los datos del archivo XML se importan en la tabla o cursor del área de trabajo actual.

Establecer nFlags a 8192 puede ser útil cuando no está disponible un esquema XML o no es práctico para usarlo.

Cuando utilice el marcador 8192, debe tener en cuenta lo siguiente:

  • Debe asegurarse que el esquema de tabla coincide apropiadamente con los elementos XML de entrada. Visual FoxPro impone los tipos de datos en cCursorName descritos en la sección Coincidencia de tipos de datos pero no hace ninguna otra suposición acerca de tipos de datos. Al intentar importar valores incompatibles se genera un mensaje correspondiente.
  • Si el XML contiene o referencia un esquema y los tipos de datos en el esquema están en conflicto con los tipos de datos del cursor o tabla, se utilizan los tipos de datos del cursor o tabla.
  • Los nombres de elementos en el archivo XML se equivalen a los nombres de columna en cCursorName. Además, Visual FoxPro sólo importa datos desde los nombres de elementos en el archivo XML que coincidan con los nombres de columna en cCusorName.
  • El cursor o tabla puede tener menos columnas que las del archivo XML. pero debe tener al menos una columna coincidente. El cursor o tabla puede tener columnas adicionales que no correspondan a un elemento en el archivo XML.
  • Si la tabla contiene campos autoincrementales, XMLTOCURSOR( ) falla si AUTOINCERROR está establecido como ON. Establecer AUTOINCERROR como OFF o desactivar el autoincremento en la tabla de destino utilizando CURSORSETPROP( ) permite que XMLTOCURSOR( ) se pueda ejecutar. El campo o campos autoincrmentales de la tabla de destino se incrementan de acuerdo con los valores especificados y los valores en la tabla origen no se copian.

Valores devueltos

Dato tipo Numérico. XMLTOCURSOR( ) devuelve el número de registros creados.

Observaciones

Visual FoxPro interpreta archivos XML con o sin esquema. Si no se proporciona ningún esquema, Visual FoxPro hace dos pasadas por los datos XML. La estructura se determina durante la primera pasada; durante la segunda, se ejecuta la conversión. Visual FoxPro utiliza el esquema externo o interno para determinar la estructura del cursor o la tabla antes de hacer una pasada única por los datos XML.

XMLTOCURSOR( ) procesa en forma diferente los datos de una variable o cadena que los de un archivo. Cuando se convierte XML a un cursor, el método utilizado para pasar XML a la función afecta como se controlan los caracteres de doble byte (DBCS) en el XML. Los caracteres DBCS se interpretan correctamente cuando utilice un archivo para XMLSource. Si necesita usar una variable de memoria o cadena, puede imponer la interpretación para DBCS utilizando el siguiente código en XMLTOCURSOR( ):

STRCONV(string,11)

como se muestra en el siguiente ejemplo:

CLEAR
CLOSE DATABASES ALL
USE HOME()+'samples\data\customer'
CURSORTOXML('customer','lcXML',1,48,5,"","","")
* XMLTOCURSOR() inserta caracteres incorrectos en cursor resultante.
XMLTOCURSOR(lcXML,"curCustomerList",4)
* Use STRCONV() en XMLTOCURSOR() para convertir correctamente datos DBCS.
XMLTOCURSOR(STRCONV(lcXML,11),"curCustomerList",4)
BROWSE
RETURN

XMLTOCURSOR( ) no realiza una conversión automática de cadenas XML, por ejemplo, desde ANSI a UTF-8. Esto puede ocurrir cuando lee una cadena XML desde un archivo. Puede usar la función STRCONV( ) para realizar la conversión. El siguiente ejemplo demuestra el error del analizador cuando Visual FoxPro encuentra el primer carácter ASCII.

CLOSE DATABASE ALL
USE HOME(2)+"\data\customer"
CURSORTOXML("customer","lcXML",1,32)
STRTOFILE(lcXML,"customer.xml")
XMLTOCURSOR("customer.xml","curCustomer",512)
RETURN

Puede evitar el error del analizador generado al convertir la cadena a UTF-8, cuando se escribe el XML o cuando se escribe al archivo. El siguiente ejemplo convierte la cadena a UTF-8 a medida que se escribe en el archivo utilizando la función STRCONV( ) con la función STRTOFILE( ):

CLOSE DATABASE ALL
USE HOME(2)+"\data\customer"
CURSORTOXML("customer","lcXML",1,32)
STRTOFILE(STRCONV(lcXML,9),"customer.xml")
XMLTOCURSOR("customer.xml","curCustomer",512)
RETURN

En el anterior ejemplo, el usuario puede utilizar un valor de 48 para el parámetro nFlag en la función STRCONV( ), para crear el XML codificado como UTF-8. Sin embargo, esto no trabaja para XML proporcionado por un origen externo o con XML que no es generado con la función CURSORTOXML( ).

Cuando se llama a XMLTOCURSOR( ) en modo agregar, Visual FoxPro agrega una fila vacía si ningún elemento XML coincide con alguna columna de la tabla o cursor.

XMLTOCURSOR( ) genera un error de sintaxis para una longitud de registro mayor que aproximadamente 160 columnas. El número exacto de columnas que causa un error depende de la longitud de los nombres de columna.

Un XML que tiene un esquema XSD externo o incrustado, como el generado por Visual Studio .NET DataSets podría contener elementos no admitidos por Visual FoxPro, los cuales se ignoran. Por ejemplo, algunos de estos elementos podrían ser:

  • nombre xs:unique
  • xs:annotation
  • Proceso de instrucciones y atributos adicionales como los siguientes:
    • Soporte para prefijo de esquema, como msdata:Prefix, que define el alcance de un grupo de elementos
    • Soporte para prefijo de XML, como el atributo vfpx, que cubre el prefijo para elementos raíz
    • atributo msprop y otros atributos que usen este mismo nombre de espacio
    • Otros atributos msdata que referencian elementos no admitidos por Visual FoxPro, como msdata:Locale o msdata:Comment

Equivalencia de tipos de datos XSD y Visual FoxPro

La siguiente tabla muestra como controla Visual FoxPro los tipos de datos XSD en XMLTOCURSOR( ).

XSD data type | Visual FoxPro data type
xsd:binaryBase64 | Memo (Binary)
xsd:boolean | Logical
xsd:date | Date
xsd:dateTime | DateTime
xsd:decimal | Numérico
xsd:double | Double
xsd:int | Integer
xsd:string | Character
xsd:string (more than 254 characters in length) | Memo

Coincidencia de tipos de datos

La siguiente tabla describe las restricciones en la coincidencia de tipos de datos cuando se establece nFlags a 8192.

Tipo de dato Visual FoxPro | Comportamiento
Character, Character (Binary), Memo, Memo (Binary) | Acepta cualquier dato. Los datos que excedan al longitud de caracteres de una columna, se recortan.
Currency | Acepta datos numéricos dentro de un intervalo aceptado del tipo Currency. Los números fuera de este intervalo se recortan.
Date | Acepta valores XML en formato fecha y dateTime. Visual FoxPro convierte los formatos fecha y dateTime de XML al correspondiente fecha de Visual FoxPro. Visual FoxPro sólo conserva la porción M/D/Y del valor fecha o dateTime de XML.
DateTime | Acepta valores de fecha y dateTime de XML. Visual FoxPro convierte los formatos fecha y dateTime de XML al correspondiente fecha de Visual FoxPro. La precisión más allá de la admitida por Visual FoxPro se ignora.
Double | Acepta datos numéricos dentro del intervalo aceptado del tipo Double. Los números fuera de este intervalo se recortan.
Integer | Acepta datos enteros dentro del intervalo aceptado por el tipo Integer. Los números fuera de este intervalo se recortan.
Logical | Acepta los valores True, .T., 1, False, .F. y 0.
Numérico, Float | Acepta datos numéricos con o sin decimales. Los números por fuera del intervalo aceptado para estos tipos, se recortan de acuerdo con las reglas de Visual FoxPro o se reemplazan con el indicador de desbordamiento numérico ("*************").

Condiciones de desbordamiento numérico XMLTOCURSOR( ) importa datos XML que contienen condiciones de desbordamiento numérico de Visual FoxPro, por ejemplo, *****.** en lugar de un valor numérico o entero. Si se proporciona un esquema, Visual FoxPro crea el tipo de dato correcto en el cursor resultante pero cambia el desbordamiento de caracteres asterisco (*) a valores 0.0 o 0. Por lo tanto, el analizador XML utilizado por XMLTOCURSOR( ) no produce error como resultado de valores de caracteres almacenados en un elemento tipo decimal.

Vea también

XML Funciones | CURSORTOXML( ) (Función) | XML UPDATEGRAM( ) (Función)


XMLUPDATEGRAM( ) (Función)

Copia los cambios hechos en una tabla o cursor con búfer en un XML UpdateGram y devuelve una cadena de caracteres que contiene el UpdateGram. Para utilizar XMLUPDATEGRAM( ), debe utilizar SET MULTILOCKS ON y establecer el búfer de tablas.

Un XML UpdateGram representa las condiciones de antes/después de la porción modificada de una tabla o cursor de Visual FoxPro. A través de procesos adicionales puede usar el Updategram para confirmar estos cambios a los datos representados por el documento XML UpdateGram.

SQL Server y Visual Studio .NET soportan el formato DiffGram para actualizar XML. SQL XML requiere un esquema de mapeo para soportar este formato. Por lo tanto, XMLUPDATEGRAM( ) no soporta este formato.

XMLUPDATEGRAM( [ cAliasList [, nFlags [, cSchemaLocation]]])

Parámetros

cAliasList
Especifica una lista separada por comas de las tablas o cursores abiertos, listando tanto su nombre o número de área trabajo en cualquier combinación, para incluirlos en el XML UpdateGram. Si no especifica un valor o especifica una cadena vacia ("") para cAliasList, Visual FoxPro utiliza todas las tablas y cursores abiertos que contengan cambios no confirmados en la sesión de datos actual.
nFlags
Especifica cómo devolver el archivo formateado. La siguiente tabla muestra las banderas aditivas para nFlags.
nFlag | Bit | Descripción del resultado
0 | 0000 | Utiliza XML formateado como UTF-8 (Predeterminado)
1 | 0001 | Use unformatted, for example, continuous string XML.
2 | 0010 | Se escriben elementos vacíos, con elementos de apertura y de cierre (por ejemplo, <cc04><cc04/>).
4 | 0100 | Conserva los espacios en blanco de los campos.
8 | 1000 | Ajusta campos Memo en secciones CDATA.
16 | 10000 | Codificación de resultados
32 | 100000 | Codificación de resultados
Nota Cuando la codificación de resultados es UTF-8 (la predeterminada), la Declaración XML no contiene el atributo Encoding= (ningún atributo de codificación = UTF-8)..

Cuando la codificación de resultados predeterminada se establece en la Página de códigos del cursor o de la tabla, el atributo de codificación se escribe de acuerdo con la tabla siguiente.

Nota Los indicadores de codificación se establecen mediante la combinación de los bits 4 y 5 (0010000)..
Indicador de codificación | Bits 4 y 5 | Descripción
+0 | 00 | Windows 1252 (predeterminado)
+16 | 01 | El atributo de codificación de los resultados se establece en la página de códigos del cursor.
+32 | 10 | El atributo de codificación de los resultados se establece en UTF-8, sin conversión de caracteres.
+48 | 11 | El atributo de codificación de los resultados se establece en UTF-8; los caracteres de doble byte se traducen a UTF-8..
cSchemaLocation
Especifica una ubicación opcional donde la aplicación que lee los datos XML debería buscar el archivo de esquema.
Nota Debe proporcionar un esquema de mapeo.

Por ejemplo, suponga que pasa el esquema llamado mySchema.xsd a el parámetro cSchemaLocation, el UpdateGram creado contiene un atributo de esquema de mapeo que aparece como el siguiente XML:

<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">

<updg:sync mapping-schema="mySchema.xsd" >

<updg:before>

Valores devueltos

Caracter. XMLUPDATEGRAM( ) devuelve una cadena de caracteres conteniendo el XML UpdateGram.

Observaciones

Antes de ejecutar XMLUPDATEGRAM( ), debe especificar la lista de campos clave utilizando la función CURSORSETPROP( ) con la cláusula KeyFieldList contra los cursores y tablas existentes. Si no especifica los campos clave, las representaciones before y after contendrán todos los campos en la tabla . Si especifica uno o más campos clave, solo aquellos campos aparecerán en la sección before. Para evitar posibles errores generados por XMLUPDATEGRAM( ) sobre las tablas conteniendo campos Memo o General , utilice la función CURSORSETPROP( ).

Para incluir datos memo en el XML UpdateGram, configure la propiedad KeyFieldList utilizando la función CURSORSETPROP( ) como se muestra en el siguiente ejemplo:

SET MULTILOCKS ON

CREATE CURSOR Test (mField M, cField C(10))

APPEND BLANK

CUSORSETPROP("Buffering",5)

CUSORSETPROP("keyfieldlist",'cfield')

Value = REPLICATE('x ',500)

REPLACE mField WITH mValue, cField WITH "Test"

? XMLUPDATEGRAM()

RETURN

Debe usar un esquema explícito así como la referencia en el XML UpdateGram para escribir datos memo en SQL Server.

A diferencia de la función CURSORTOXML( ), XMLUPDATEGRAM( ) ignora la configuración de SET FIELDS y lee directamente desde el cursor subyacente. Si desea cambiar la estructura de la tabla antes de llamar a XMLUPDATEGRAM( ), debe copiar los datos a un nuevo cursor . Por ejemplo, para cambiar un campo numérico a un campo monetario, puede usar una instrucción SELECT - SQL para crear un nuevo cursor, entonces utilizar ese cursor con XMLUPDATEGRAM( ) como se muestra en el siguiente ejemplo:

* Make Total_Price a currency field.

SELECT OrderID, CustID, NTOM(Total_Price) as Total_Price;

FROM Orders INTO CURSOR New_Orders READWRITE

CURSORSETPROP("Buffering", 5, "New_Orders")      && Activa el búfer.

REPLACE Total_Price WITH (Total_Price * 1.083)   && Agrega el impuesto de la venta.

cXMLUpdg = XMLUPDATEGRAM("New_Orders")      && Crea el XML UpdateGram.

Vea también

CURSORTOXML( ) (Function) | XMLTOCURSOR( ) (Función) | CURSORSETPROP( ) (Función)


YEAR( ) (Función)

Devuelve el año a partir de la expresión de fecha, o fecha y hora especificada.

YEAR(dExpression | tExpression)

Valores devueltos

Numérico

Parámetros

dExpression
Especifica una expresión de fecha a partir de la cual YEAR( ) devuelve el año. dExpression puede ser una función que devuelve una fecha, o una variable de memoria, un elemento de matriz o un campo de tipo Date. También puede ser una cadena de fecha literal, por ejemplo: {^1998-06-06}.
tExpression
Especifica una expresión de tipo DateTime a partir de la cual YEAR( ) devuelve el año.

Observaciones

YEAR( ) siempre devuelve el año con el siglo. La configuración de CENTURY (ON u OFF) no afecta al valor devuelto.

Ejemplo

CLEAR
? YEAR(DATE( ))

Vea también

DATE( ) | DATETIME( ) | DOW( ) | SET CENTURY


Operadores

Los operadores permiten manipular datos del mismo tipo. En la siguiente sección, los operadores de Visual FoxPro se agrupan según los siguientes tipos de datos y funciones:

  • Operadores para el tipo Carácter
  • Operadores para tipos Fecha y DateTime
  • Operadores para el tipo Lógico
  • Operadores relacionales
  • Operadores para el tipo Númerico

Vea también

Referencia del lenguaje


Operadores para el tipo Carácter

Puede agrupar y comparar datos de caracteres con los operadores para caracteres +, -, y $. En la siguiente tabla se muestran los operadores de expresión de caracteres en orden de prioridad.

Operadores para el tipo Carácter

Operador Acción Código
+
 Concatenación. Combina dos cadenas, una cadena y un campo, o una cadena y una variable.
? 'Good ' + 'morning'

-
 Concatenación. Quita los espacios finales del elemento anterior al operador y luego combina dos elementos.
? customer.first - customer.last

$
 Comparación. Busca una expresión de caracteres dentro de otra.
? 'father' $ 'grandfather'
? 'Main' $ customer.address

Vea también

$ (Operador) | Tipo de datos Carácter | Crear expresiones de tipo Carácter | Operadores

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Operadores para los tipos Fecha y DateTime

Los siguientes operadores se aplican a fechas y horas.

Operadores para los tipos Fecha y DateTime

Operador Acción Código
+
 Suma
tNuevoTime = tTime1 + nSegundos
dNuevaFecha = dFecha1 + nDias

-
 Resta
nSegundos = tTime1 - tTime2
tNuevoTime = tTime1 - nSegundos
dNuevaFecha = dFecha1 - nDias

Vea también

Tipo de datos Fecha | Tipo de datos DateTime | Funciones de fecha y hora | Operadores

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Operadores para el tipo Logical

Los operadores para el tipo Lóico funcionan con todos los tipos de datos y devuelven un valor lógico. En la siguiente tabla se muestran los operadores para el tipo Logical en orden de preferencia.

Operadores para el tipo Logical

Operador Acción Código
( )
 Grupos de expresiones
cVar AND (cVar2 AND cVAR3)

NOT, !
 Lógico negativo
IF NOT cVarA = cVarB
IF ! nVar1 = nVar2

AND
 AND lógico
lVar0 AND lVar9

OR
 OR lógico inclusivo
lVarX OR lVarY
Nota El operador no igual ( # ) puede ser utilizado para ejecutar la comparación XOR (así como lVarX # lVarY).

Vea también

BITAND( ) (Función) | BITNOT( ) (Función) | BITOR( ) (Función) | BITXOR( ) (Función) | Operadores relacionales | Operadores


Operadores para el tipo Numérico

Los operadores para el tipo Numérico trabajan con todos los valores del tipo Numérico. En la siguiente tabla se muestran los operadores para el tipo Numérico en orden de prioridad.

Operadores para el tipo Numérico

Operador Acción Código
( )
 Subexpresiones de grupo
(4-3) * (12/nVar2)

**, ^
 Potenciación
? 3 ** 2
? 3 ^ 2

*, /
 Multiplicación y división
? 2 * 7
? 14 / 7

%
 Módulo (resto)
? 15 % 4

+, -
 Suma y resta
? 4 + 15

Vea también

% (Operador) | Tipo de datos Monetario (Currency) | Tipo de campo Doble | Tipo de campo Flotante | Tipo de datos Numérico | Operadores

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Operadores relacionales

Los operadores relacionales funcionan con todos los tipos de datos y devuelven un valor Lógico. En la siguiente tabla se muestran los operadores relacionales.

Operadores relacionales

Operador Acción Código
<
 Menor que
? 23 < 54

>
 Mayor que
? 1 > 2
=
 Igual que
? cVar1 = cVar

<>, #, !=
 Distinto de
? .T. <> .F.

<=
 Menor o igual que
? {^1998/02/16} <= {^1998/02/16}

>=
 Mayor o igual que
? 32 >= nHisAge

==
 Comparación de cadenas de caracteres
? status == "Open"

Se puede usar el operador == para realizar una comparación exacta de cadenas de caracteres. Al comparar dos expresiones de caracteres con el operador ==, las expresiones a ambos lados de dicho operador se consideran iguales si contienen exactamente los mismos carácteres, incluidos los espacios en blanco. La configuración de SET EXACT se pasa por alto al comparar cadenas de caráacteres con el operador ==. Vea SET EXACT si desea obtener más información acerca del uso del operador == para comparar cadenas de carácteres.

También puede usar el operador igual que (=) para determinar si dos referencias a objetos hacen referencia al mismo objeto. En el siguiente ejemplo se muestra un uso sencillo:

CLEAR ALL
X = CREATEOBJECT('Form')
Y = CREATEOBJECT('Form')
? X = Y  && Displays false (.F.)
Z = X
? X = Z  && Displays true (.T.)

Vea también

Operadores para el tipo Lógico | CREATEOBJECT( ) (Función) | SET EXACT (Comando) | Operadores


Directivas de preprocesador

# DEFINE ... #UNDEF (Directiva del preprocesador)

#IF ... #ENDIF (Directiva del preprocesador)

#IFDEF | #IFNDEF ... #ENDIF (Directiva del preprocesador)

#INCLUDE (Directiva del preprocesador)

#INSERT (Directiva del preprocesador)

#NAME (Directiva del preprocesador)

Directivas del preprocesador de trayecto

Para más información sobre la compatibilidad con versiones anteriores - sólo referencias del lenguaje, vea Elementos del lenguaje compatible con versiones anteriores.


#DEFINE ... #UNDEF (Directiva de Preprocesador)

Crea y libera constantes de tiempo de compilación.

Las directivas de preprocesador #DEFINE y #UNDEF se utilizan para crear constantes de tiempo de compilación en los programas. Al crear constantes con #DEFINE en lugar de utilizar variables, puede reducir el consumo de memoria, aumentar el rendimiento y simplificar los programas.

Para crear una constante con #DEFINE, especifique el nombre de la constante con NombreDeConstante y su valor con eExpresión. Cuando se compila el programa, se realiza la sustitución de texto y la expresión de valor constante se sustituye por el nombre de la constante cada vez que aparece en el programa. Puede detener la sustitución de la constante si ejecuta #UNDEF.

#DEFINE NombreDeConstante eExpresión... #UNDEF NombreDeConstante

Parámetros

NombreDeConstante
Especifica un nombre de constante de tiempo de compilación. El nombre de la constante debe ser un nombre válido de Microsoft Visual FoxPro que empiece con una letra o un signo de subrayado y contenga hasta 254 letras, dígitos o signos de subrayado. Para mejorar la legibilidad del programa y simplificar la depuración, escriba en mayúsculas los nombres de constantes y utilice una convención estándar para asignarles nombres.
Precaución No utilice palabras clave de Visual FoxPro como nombres de constantes.

Para detener la substitución de texto para una constante creada con #DEFINE, ejecute #UNDEF NombreDeConstante.

eExpresión
Especifica el valor de la constante en tiempo de compilación. eExpresión puede ser un nombre o una expresión que se evalúe como un valor de tipo Carácter, Numérico, Monetario, Fecha, DateTime o Lógico.
Precaución No utilice variables del sistema en eExpresión. Las variables del sistema no se evalúan hasta el tiempo de ejecución.

Observaciones

La sustitución se realiza solamente en las líneas de programa que hay a continuación de la instrucción #DEFINE que crea la constante y que preceden a la instrucción #UNDEF para esa constante. La constante está disponible solamente para el programa que crea la constante.

Si usted pone #DEFINE en un procedimiento, evento o método de un formulario, la constante de tiempo de compilación #DEFINE solo estará disponible dentro del procedimiento, evento o método. Para hacer las constantes de tiempo de compilación #DEFINE disponible para todos los procedimientos, eventos y métodos en un formulario, elija el item Incluir Archivo del menú Formulario y especifique el archivo de encabezado que contenga las constantes de tiempo de compilación #DEFINE.

Nota Las constantes de tiempo de compilación no son reconocidas cuando se encuentran entre comillas.

Solo se puede redefinir una #DEFINE solo si no cambia su valor. Si cambia la #DEFINE a un valor diferente, Visual FoxPro generará un error.

Ejemplo

El programa siguiente crea una constante en tiempo de compilación llamada MAXITEMS. Esta constante se utiliza en un bucle FOR ... NEXT para mostrar los números de 1 a 10.

#DEFINE MAXITEMS 10
CLEAR
FOR gnCount = 1 TO MAXITEMS
? gnCount
NEXT

Vea también

COMPILE (Comando) | #IF ... #ENDIF (Directiva de preprocesador) | #IFDEF | #IFNDEF ... #ENDIF (Directiva de preprocesador)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


#IF ... #ENDIF (Directiva del preprocesador)

Incluye condicionalmente código fuente en tiempo de compilación.

#IF nExpression1 | lExpression1
Commands
[#ELIF nExpression2 | #ELIF lExpression2
Commands... #ELIF nExpressionN | #ELIF lExpressionN
Commands] [#ELSE Commands] #ENDIF

Parámetros

#IF nExpression1 | lExpression1Commands
nExpression1 especifica la expresión numérica que se evalúa.
  • Si la expresión es distinta de cero, los comandos escritos inmediatamente después que #IF se incluyen en el código compilado. Se abandona la estructura #IF ... #ENDIF y se compila la primera línea de comandos posterior a #ENDIF.
  • Si la expresión es 0, los comandos incluidos inmediatamente después que #IF no se incluyen en el código compilado. Se evalúan todas las directivas incluidas después de #ELIF.

lExpression1 especifica la expresión lógica que se evalúa.

  • Si la expresión es verdadera (.T.), los comandos escritos inmediatamente después que #IF se incluyen en el código compilado. Se abandona la estructura #IF ... #ENDIF y se compila la primera línea de comandos posterior a #ENDIF.
  • Si la expresión es falsa (.F.), los comandos escritos inmediatamente después que #IF no se incluyen en el código compilado. Se evalúan todas las directivas incluidas después de #ELIF.
    Nota No especifique variables para nExpression1 o lExpression1. Las variables del sistema no se evalúan hasta el tiempo de ejecución.
#ELIF nExpression2 | #ELIF lExpression2Commands
...
#ELIF nExpressionN | #ELIF lExpressionNCommands
Si nExpression1 es 0 o lExpression1 es falsa (.F.), se evaluarán las directivas #ELIF. Se evaluará la primera expresión #ELIF nExpression2 o lExpression2, si existe. Si nExpression2 es distinta de cero o lExpression2 toma el valor verdadero (.T.), se incluirán en el código compilado las instrucciones siguientes a #ELIF. Se abandona la estructura #IF ... #ENDIF y se compila la primera línea de comandos posterior a #ENDIF.

Si nExpression2 es 0 o lExpression2 es falsa (.F.), no se incluirán en el código compilado las instrucciones que haya a continuación de #ELIF. Se evaluará la siguiente directiva #ELIF.

#ELSE Commands
Si no se incluyen directivas #ELIF o las que se incluyen tienen el valor 0 o falso (.F.), la presencia o ausencia de #ELSE determina si se incluirán algunas instrucciones adicionales en el código compilado:
  • Si se incluye #ELSE las instrucciones que sigan a #ELSE se incluirán en el código compilado.
  • Si no se incluye #ELSE, las instrucciones de programa escritas entre #IF y #ENDIF no se incluirán en el código compilado. Se saldrá de la estructura #IF ... #ENDIF y la compilación continuará con la primera línea de programa a continuación de #ENDIF.
#ENDIF
Indica el final de la instrucción #IF.

Observaciones

#IF ... #ENDIF puede mejorar la legibilidad del código fuente, reducir el tamaño del programa compilado y mejorar el rendimiento en algunos casos.

Cuando se compila la estructura #IF ... #ENDIF, se evalúan las sucesivas expresiones lógicas o numéricas. Los resultados de la evaluación determinan qué conjunto de comandos de Visual FoxPro (si corresponde) se incluirán en el código compilado.

Ejemplo

En el ejemplo siguiente, la estructura #IF ... # ENDIF determina qué versión de Visual FoxPro compila el programa y, luego, muestra el mensaje apropiado.

#If SYS(3004) = "1033"
? "Locale ID is English"
#Elif SYS(3004) = "1034"
? "Locale ID is Spanish"
#Elif SYS(3004) = "1031"
? "Locale ID is German"
#Elif SYS(3004) = "1036"
? "Locale ID is French"
#Endif

Vea también

COMPILE (Comando) | #DEFINE ... #UNDEF (Directiva del preprocesador) | #IFDEF | #IFNDEF ... #ENDIF (Directiva del preprocesador)


#IFDEF | #IFNDEF ... #ENDIF (Directiva del preprocesador)

Incluye condicionalmente un conjunto de instrucciones en tiempo de compilación si se ha definido una constante en tiempo de compilación.

#IFDEF | #IFNDEF ConstantName
Commands
[#ELSE Commands] #ENDIF

Parámetros

#IFDEF
Especifica que se incluye un conjunto de instrucciones en tiempo de compilación si se ha definido ConstantName.

Los elementos siguientes describen la forma en que se incluye un conjunto de instrucciones, en tiempo de compilación, al incluir #IFDEF:

  • Si se define ConstantName, el conjunto de instrucciones incluidas detrás de #IFDEF y delante de #ELSE o de #ENDIF (lo que ocurra primero) se incluye en tiempo de compilación.
  • Si ConstantName no está definido y se incluye #ELSE, el conjunto de instrucciones incluido detrás de #ELSE y delante de #ENDIF se incluye en tiempo de compilación.
  • Si ConstantName no está definido y #ELSE no se incluye, no se incluirá ninguna de las instrucciones incluidas en la estructura #IFDEF ... #ENDIF en tiempo de compilación.
#IFNDEF
Especifica que se incluye un conjunto de instrucciones en tiempo de compilación cuando no se ha definido ConstantName.

Los elementos siguientes describen la forma en que se incluye un conjunto de instrucciones, en tiempo de compilación, al incluir #IFNDEF:

  • Si ConstantName no está definido, el conjunto de instrucciones situadas detrás de #IFNDEF y delante de #ELSE o #ENDIF (lo que ocurra primero) se incluye en tiempo de compilación.
  • Si ConstantName está definido y se incluye #ELSE, el conjunto de instrucciones situadas detrás de #ELSE y delante de #ENDIF se incluye en tiempo de compilación.
  • Si ConstantName está definido y #ELSE no se incluye, no se incluirán las instrucciones de la estructura #IFNDEF ... #ENDIF en tiempo de compilación.
ConstantName
Especifica la constante de tiempo de compilación cuya existencia determina si un conjunto de instrucciones se incluye en tiempo de compilación. Las constantes en tiempo de compilación se definen con #DEFINE.
Commands
Especifica el conjunto de instrucciones que se incluirán en tiempo de compilación.

Observaciones

Puede anidar una estructura #IFDEF | #IFNDEF ... #ENDIF en otra estructura #IFDEF | #IFNDEF ... #ENDIF.

Tiene la posibilidad de incluir observaciones en la misma línea detrás de #IFDEF, #IFNDEF, #ELSE y #ENDIF. Estos observaciones se pasarán por alto durante la compilación y la ejecución del programa.

Ejemplo

El ejemplo siguiente crea una constante de tiempo de compilación llamada MYDEFINE. #IFDEF ... #ENDIF muestra un mensaje si se ha definido la constante de tiempo de compilación.

#DEFINE MYDEFINE 1
#IFDEF MYDEFINE
WAIT WINDOW "MYDEFINE exists"
#ELSE
WAIT WINDOW "MYDEFINE does not exist"
#ENDIF

Vea también

COMPILE (Comando) | #DEFINE ... #UNDEF (Directiva del preprocesador) | #IF ... #ENDIF (Directiva del preprocesador) | #INCLUDE (Directiva del preprocesador)


#INCLUDE (Directiva del preprocesador)

Indica al preprocesador de Visual FoxPro que trate el contenido de un determinado archivo de encabezado como si apareciera en un programa de Visual FoxPro.

#INCLUDE FileName

Parámetros

FileName
Especifica el nombre del archivo de encabezado que se combina en el programa durante la compilación.

Puede incluir una ruta de acceso con el nombre de archivo de encabezado. Cuando incluye una ruta de acceso con el nombre de archivo de encabezado, Visual FoxPro sólo busca el archivo de encabezado en la ubicación especificada.

Si no incluye una ruta de acceso con el nombre de archivo de encabezado, Visual FoxPro busca el archivo en el directorio predeterminado de Visual FoxPro y, a continuación, en la ruta de acceso de Visual FoxPro. La ruta de acceso de Visual FoxPro se especifica con SET PATH.

Observaciones

Es posible crear archivos de encabezado que contengan directivas del preprocesador y, a continuación, utilizar #INCLUDE para combinar el contenido del archivo de encabezado en un programa cuando se compila. El contenido del archivo de encabezado se inserta en el programa durante la compilación en el punto en que aparezca #INCLUDE.

En un archivo de encabezado sólo se reconocen las directivas del preprocesador #DEFINE ... #UNDEF, #IF ... #ENDIF, e #INCLUDE. Se ignoran los observaciones y los comandos de Visual FoxPro que se incluyan en un archivo de encabezado.

Un programa puede contener cualquier número de directivas #INCLUDE. Estas directivas pueden aparecer en cualquier punto del programa. Las directivas #INCLUDE también pueden aparecer en archivos de encabezado, lo que permite anidar directivas #INCLUDE.

Los archivos de encabezado suelen tener la extensión .h, aunque pueden tener cualquier extensión. Se incluye un archivo de encabezado de Visual FoxPro, Foxpro.h. Contiene muchas de las constantes descritas a través de esta documentación.

Ejemplo

En el ejemplo siguiente, se utilizan dos archivos, Const.h, un archivo de encabezado, y Myprog.prg, un archivo de programa. El archivo de encabezado contiene varias directivas #DEFINE que crean constantes de tiempo de compilación. El archivo de programa utiliza #INCLUDE para combinar el archivo de encabezado Const.h durante la compilación, con lo que pone a disposición del programa las constantes de tiempo de compilación del archivo de encabezado.

*** Header file CONST.H ***
#DEFINE ERROR_NODISK     1
#DEFINE ERROR_DISKFULL  2
#DEFINE ERROR_UNKNOWN  3
*** Program file MYPROG.PRG ***
#INCLUDE CONST.H
FUNCTION chkerror
PARAMETER errcode
DO CASE
CASE errcode = ERROR_NODISK
?"Error - No Disk"
CASE errcode = ERROR_DISKFULL
?"Error - Disk Full"
CASE errcode = ERROR_UNKNOWN
?"Unknown Error"
ENDCASE
RETURN

Vea también

#DEFINE ... #UNDEF (Directiva del preprocesador) | #IF ... #ENDIF (Directiva del preprocesador) | #IFDEF |#IF ... #ENDIF (Directiva del preprocesador) | #INCLUDE (Directiva del preprocesador)


#INSERT (Directiva del preprocesador)

Inserta texto de un archivo de texto en un archivo de menús generado.

#INSERT FileName

Parámetros

FileName
Especifica el nombre del archivo de encabezado que se combina en el programa durante la generación del menú.

Observaciones

La directiva #INSERT generadora de menús inserta el contenido de FileName en el código generado para un menú.

Utilice #INSERT para incluir un archivo en un programa generado de menú. Por ejemplo, utilice #INSERT para insertar instrucciones #DEFINE ... #UNDEF procedentes de un archivo al principio de un programa generado de menú.

Esta directiva puede aparecer en cualquier procedimiento; no es necesario que esté en un procedimiento en particular, como el miniprograma de código de configuración. Además, esta directiva puede aparecer en cualquier punto de un procedimiento.

FileName debe ser un archivo de texto. El generador busca el archivo en el directorio actual, en el directorio y los subdirectorios de FoxPro y a lo largo de la ruta de acceso de MS-DOS. Si no se encuentra el archivo, el generador de menús inserta observaciones en el código para indicar que el archivo no se encuentra y continúa con el proceso de generación.

Vea también

#DEFINE ... #UNDEF (Directiva del preprocesador) | #IF ... #ENDIF (Directiva del preprocesador) | #IFDEF | #IFNDEF ... #ENDIF (Directiva del preprocesador)


#NAME (Directiva del preprocesador)

Esta pantalla y directiva del generador de menú nombra los miniprogramas creados por claúsulas, tales como SHOW, WHEN y VALID, como si el miniprograma es producido al nivel de objeto o de RED.

#NAME SnippetName

Parámetros

SnippetName
Este es el nombre que se asigna al miniprograma. SnippetName debe cumplir las reglas de nomenclatura de procedimientos y funciones.

Observaciones

La directiva #NAME debe aparecer al principio del miniprograma, antes de cualquier instrucción de código. Las líneas en blanco o los observaciones pueden preceder a la directiva #NAME.

Nota Visual FoxPro no comprueba la existencia de nombres duplicados.

Vea también

#DEFINE ... #UNDEF (Directiva del preprocesador) | #IF ... #ENDIF (Directiva del preprocesador) | #IFDEF | #IFNDEF ... #ENDIF (Directiva del preprocesador)


Directivas del preprocesador de trayecto

Las siguientes instrucciones #DEFINE dan soporte a esta mejora del Analizador de trayecto.

*COV_LOCS.H

Se agregaron cuatro instrucciones #DEFINE en la sección que controla los mensajes de espera de ventana y barra de estado:

#DEFINE COV_LOADING_STACKINFO_LOC "Loading log for StackLevel analysis"
#DEFINE COV_GENERATING_STACKXML_LOC "Generating StackLevel XML..."
#DEFINE COV_WRITING_STACKXML_LOC "Writing StackLevel XML to disk"
#DEFINE COV_WRITING_TRANSFORM_LOC "Writing transformed file to disk"

Se agregaron cuatro instrucciones #DEFINE a la sección de textos de acceso directo:

#DEFINE COV_SC_STACKLEVEL_LOC "\<Generate StackLevel XML"
#DEFINE COV_SC_VIEW_STACKLEVEL_LOC "View Stac\<klevel XML"
#DEFINE COV_SC_STACK_TRANSFORM_LOC "\<Transform StackLevel XML"
#DEFINE COV_SC_STACKLEVEL_EXTENDED_LOC "E\<xtended StackLevel XML"

Se agregaron siete instrucciones #DEFINE a la sección que controla los títulos de los cuadros de diálogo GETFILE/PUTFILE, los filtros, etc.:

#DEFINE COV_SETSTACKXML_TITLE_LOC "Please specify location to save Coverage StackLevel XML for"
#DEFINE COV_XMLFILES_LOC "XML Files"
#DEFINE COV_XSLFILES_LOC "XSL Transforms"
#DEFINE COV_HTMFILES_LOC "HTML Files"
#DEFINE COV_SAVEDSTACKXML_AS_LOC "Your coverage stack analysis is saved as"
#DEFINE COV_SETTRANSFORMEDXML_TITLE_LOC "Please specify location to save transformed file for"
#DEFINE COV_GETXSLTFILE_TITLE_LOC "Please specify an XSL Transformation file"

Se agregaron tres instrucciones #DEFINE a la sección que controla los textos y título de los cuadros de diálogo de las opciones:

#DEFINE COV_OPT_STACK_LOC "StackLevel XML analysis"
#DEFINE COV_OPT_STACK_EXTENDED_LOC "\<Generate extended StackLevel XML tree"
#DEFINE COV_OPT_STACK_XSLT_LOC "XSL \<Transform..."

COV_TUNE.H

Hay nuevas configuraciones ajustables (y observaciones asociados) que admiten la nueva función:

Dos configuraciones se utilizan para la creación de nombres de etiqueta:

* the first two represent element node prefixes
#DEFINE COV_STACKROOT "VFPCallStackLog"
#DEFINE COV_STACK_ONEVENT_TAG event

* son similares a COV_SKIPFILEDBF_SUFFIX y COV_TARGETDBF_SUFFIX

*the next items are used to help identify the XML and HTM files written to
* disk as being generated from this particular process.
#DEFINE COV_STACKXML_SUFFIX "_STACK"
#DEFINE COV_STACKXMLEXT_SUFFIX "_STACKX"
#DEFINE COV_TRANSFORM_SUFFIX "_XSL"

La siguiente es una opción de rendimiento que, al igual que COV_TOPSPEED, raramente resulta necesaria.

* the next item indicates whether lines are loaded from the Coverage
* source workfile .dbf file or are gathered directly by from the original
* text log. Coverage Profiler has a very slight speed advantage but will
* not include ON ... events, since those lines are ignored by the
* Coverage source and target workfiles (there is no code
* to mark or profile for these lines).
#DEFINE COV_LOAD_STACK_FROM_DBF .F.

Esta definición proporciona una expresión para las etiquetas del código XML derivado de los elementos disponibles en el registro de origen.

* the variables in the next item have the same meaning as the columns
* of the same name in the Coverage source workfile .dbf file
* -- equivalents for these items are read in from the source text log
* when COV_LOAD_STACK_FROM_DBF is .F., and this expression stays the same.
* You can change it as long as you ensure that the result will  be empty
* only for ON ... events.
* Load a log into COVERAGE.APP,
* SET DATASESSION TO _oCoverage.DataSessionID, and refer to the
* source workfile (by default, its alias is FromLog) for some indication
* on the possible contents of these columns.
#DEFINE COV_STACKEXPR ALLTR(IIF(INLIST(FileType,".fxp",".mpx",".qpx",".spx"), ;
IIF(EMPTY(ObjClass), ;
IF(NOT EMPTY(Executing),ALLTR(Executing),""),;
IIF(LEFT(Executing,1)=".",ALLTR(ObjClass),"")+ALLTR(Executing)), ;
ALLTR(Executing)))

Vea también

Aplicación Analizador de trayecto


Variables de memoria del sistema

Para información de referencia sobre elementos de lenguaje sólo compatibles con versiones anteriores, vea Elementos del lenguaje compatibles con versiones anteriores.

_ALIGNMENT

A

_ASCIICOLS

_ASCIIROWS

B

_BEAUTIFY

_BROWSER

_BUILDER

C

_CALCMEM

_CALCVALUE

_CLIPTEXT

_CODESENSE

_CONVERTER

_COVERAGE

D

_DBLCLICK

_DIARYDATE

_DOS

E

F

_FOXCODE

_FOXREF

_FOXTASK

G

_GALLERY

_GENHTML

_GENMENU

_GETEXPR

H

I

_INCSEEK

_INCLUDE

J

K

L

M

_MAC

_MLINE

N

O

_OBJECTBROWSER

P

_PAGENO

_PAGETOTAL

_PRETEXT

Q

R

S

_SAMPLES

_SCCTEXT

_SCREEN

_SHELL

_SPELLCHK

_STARTUP

T

_TASKLIST

_TALLY

_TEXT

_THROTTLE

_TOOLBOX

_TRIGGERLEVEL

U

_UNIX

V

_VFP

W

_WINDOWS

_WIZARD

X

Y

Z

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico"..

© 1992 - 2003 Microsoft Corporation. Todos los derechos reservados.

Traducido al Español por el grupo de traductores de PortalFox.

Envíe un informe sobre errores en la traducción de este tema


Introducción a las variables del sistema

Las variables del sistema son variables integradas que Visual FoxPro crea y mantiene automáticamente. Son PUBLIC de forma predeterminada, pero puede declararlas PRIVATE.

Nota La funcionalidad de muchas variables del sistema se ha reemplazado por nuevas funciones de Visual FoxPro. Para obtener más detalles, consulte la descripción de cada variable del sistema.

La siguiente tabla indica los cinco tipos de variables del sistema de Visual FoxPro y la forma en que se designan en las expresiones.

Tipo de variable | Descripción | Expresión
C | Character | cExpresión
D | Fecha | dExpresión
línea | Lógicas | lExpresión
N | Numérico | nExpresión
O | Objeto | oExpresión

La siguiente tabla incluye todas las variables del sistema, sus tipos y sus valores predeterminados.

Variable | Tipo | Valor predeterminado
_ALIGNMENT | C | LEFT
_ASCIICOLS | N | 80
_ASCIIROWS | N | 63
_ASSIST | C | Cadena vacía
_BEAUTIFY | C | Cadena vacía
_BOX | L | .T.
_BROWSER | C | Browser.app
_BUILDER | C | Builder.app
_CALCMEM | N | 0,0
_CALCVALUE | N | 0,0
_CLIPTEXT | C | Cadena vacía
_CONVERTER | C | Cadena vacía
_COVERAGE | C | Coverage.app
_CUROBJ | N | -1
_DBLCLICK | N | 0,5
_DIARYDATE | D | Fecha actual
_DOS | L | Verdadero (.T.) en FoxPro para MS-DOS
_FOXDOC | C | Cadena vacía
_FOXREF | C | FoxRef.app
_GALLERY | C | Gallery.app
_GENGRAPH | C | Cadena vacía
_GENHTML | C | Genhtml.prg
_GENMENU | C | Genmenu.prg
_GENPD | C | Cadena vacía
_GENSCRN | C | Genscrn.prg
_GENXTAB | C | Cadena vacía
_GETEXPR | C | Cadena vacía
_INCLUDE | C | Cadena vacía
_INCSEEK | N | .5
_INDENT | N | 0
_LMARGIN | N | 0
_MAC | L | Verdadero (.T.) en Visual FoxPro para Macintosh
_MLINE | N | 0
_PADVANCE | C | FORMFEED
_PAGENO | N | 1
_PAGETOTAL | N | 0
_PBPAGE | N | 1
_PCOLNO | N | Columna actual
_PCOPIES | N | 1
_PDRIVER | C | Cadena vacía
_PDSETUP | C | Cadena vacía
_PECODE | C | Cadena vacía
_PEJECT | C | NONE
_PEPAGE | N | 32767
_PLENGTH | N | 66
_PLINENO | N | 0
_PLOFFSET | N | 0
_PPITCH | C | DEFAULT
_PQUALITY | L | .F.
_PRETEXT | C | Cadena vacía
_PSCODE | C | Cadena vacía
_PSPACING | N | 1
_PWAIT | L | .F.
_RMARGIN | N | 80
_SAMPLES | C | HOME() + "SAMPLES"
_SCCTEXT | C | Scctext.prg
_SCREEN | O | FORM
_SHELL | C | Cadena vacía
_SPELLCHK | C | SPELLCHK.APP
_STARTUP | C | Cadena vacía
_TABS | C | Cadena vacía
_TALLY | N | 0
_TASKPANE | C | Taskpane.app
_TEXT | C | –1
_THROTTLE | N | 0
_TOOLBOX | C | Toolbox.app
_TRANSPORT | C | Cadena vacía
_TRIGGERLEVEL | N | 0
_UNIX | L | Verdadero (.T.) en FoxPro para UNIX
_VFP | O | Aplicación de Microsoft Visual FoxPro 7.0
_WINDOWS | L | Verdadero (.T.) en Visual FoxPro para Windows
_WIZARD | C | Wizard.app
_WRAP | L | .F.

Vea también

PUBLIC (Comando) | PRIVATE (Comando) | STORE (Comando)


_ASCIICOLS (Variable del sistema)

Especifica el número de columnas de un archivo de texto creado con REPORT ... TO FILE ASCII.

_ASCIICOLS = nExpression

Parámetros

nExpression
Especifica el número de columnas del archivo de texto. El valor predeterminado es 80.

Observaciones

Incluya la cláusula TO FILE ASCII en REPORT para crear un archivo de texto.

Vea también

_ASCIIROWS | CREATE REPORT | MODIFY REPORT | REPORT | Variables del sistema | Introducción a las variables del sistema


_ASCIIROWS (Variable del sistema)

Especifica el número de filas de un archivo de texto creado con REPORT ... TO FILE ASCII.

_ASCIIROWS = nExpression

Parámetros

nExpression
Especifica el número de filas del archivo de texto. El valor predeterminado es 63.

Observaciones

Incluya la cláusula TO FILE ASCII en REPORT para crear un archivo de texto.

Vea también

_ASCIICOLS | CREATE REPORT | MODIFY REPORT | REPORT | Variables del sistema | Introducción a las variables del sistema


_BEAUTIFY (Variable del sistema)

Especifica la aplicación de mejora de la apariencia visual para los programas de Visual FoxPro. La aplicación se ejecuta al elegir el comando Presentación en el menú Herramientas.

_BEAUTIFY = cProgramName

Parámetros

cProgramName
Especifica una aplicación de mejora de la apariencia visual. Si su aplicación de mejora de la apariencia visual no está en el directorio predeterminado, incluya la ruta de acceso con el nombre de la aplicación.

También puede especificar una aplicación de mejora de la apariencia visual en su archivo de configuración si incluye una línea con la sintaxis:

_BEAUTIFY = cProgramName

Observe que su aplicación de mejora de la apariencia visual debe aceptar un solo parámetro, el nombre del programa que va a tratar. Su aplicación de mejora de apariencia visual puede modificar el programa, escribir los cambios en un archivo temporal y devolver el nombre del archivo temporal a Visual FoxPro. Visual FoxPro lee el archivo temporal en la sesión de modificación con el nombre del programa Visual FoxPro original y borra el archivo temporal.

Observaciones

El comando Presentación aparece en el menú Herramientas cuando se abre un programa o un archivo de texto en una ventana de edición.

Vea también

Asistente para documentación | Cuadro de diálogo Opciones de presentación


_BROWSER (Variable del sistema)

Contiene el nombre de la aplicación examinadora de clases.

_BROWSER = cProgramName

Parámetros

cProgramName
Especifica una aplicación examinadora de clases. _BROWSER contiene Browser.app si ha instalado la aplicación examinadora de clases.

Si el examinador de clases está en otro directorio distinto del directorio predeterminado actual de Visual FoxPro, incluya una ruta de acceso con el nombre de dicha aplicación.

Si el examinador de clases está en una carpeta distinta de la predeterminada, incluya una ruta de acceso con el nombre del examinador de clases

También puede especificar una aplicación examinadora de clases en el archivo de configuración de Visual FoxPro si incluye una línea con esta sintaxis:

_BROWSER = cProgramName

Puede especificar otra aplicación examinadora de clases diferente si almacena el nuevo nombre de aplicación en _BROWSER desde la ventana Comandos o en un programa.

Observaciones

Browser.app muestra las relaciones entre clases de una biblioteca de clases visuales (.vcx) y se instala de forma predeterminada en el directorio donde instaló Visual FoxPro.

Puede ejecutar el examinador de clases si ejecuta el comando siguiente:

DO (_BROWSER)

Al ejecutar este comando se muestra el cuadro de diálogo Abrir del examinador de clases, que permite seleccionar la biblioteca de clases que se va a abrir. Para ejecutar más de una instancia simultánea del examinador de clases puede elegir el elemento de menú del examinador de clases en el menú Herramientas o ejecutar el comando de nuevo.

También puede ejecutar el examinador de clases para una determinada biblioteca de clases visuales o una referencia de objeto, y puede incluir opcionalmente el nombre de una clase seleccionada inicialmente. Por ejemplo, el comando siguiente inicia el examinador de clases, abre la biblioteca de clases visuales Buttons y selecciona la clase VCR:

DO (_BROWSER) WITH HOME(2) + 'CLASSES\BUTTONS.VCX', 'VCR'

Para obtener más información acerca del examinador de clases, vea el tema Administrar clases con el Examinador de clases.

Vea también

CREATE CLASS | CREATE CLASSLIB | CREATE FORM | CREATEOBJECT( ) | DEFINE CLASS | Introducción a las variables del sistema


_BUILDER (Variable del sistema)

Contiene el nombre de la aplicación generadora de Visual FoxPro.

_BUILDER = cProgramName

Parámetros

cProgramName
Especifica una aplicación generadora. Si su aplicación generadora está en un directorio distinto del directorio predeterminado actual de Visual FoxPro, incluya la ruta de acceso junto con el nombre de la aplicación.

Observaciones

La variable del sistema _BUILDER contiene el nombre de la aplicación que Visual FoxPro utiliza cuando usted elige un generador en el Generador de formularios. De forma predeterminada, _BUILDER contiene BUILDER.APP, que se instala en el directorio de Visual FoxPro. Puede especificar otro nombre distinto para la aplicación generadora.

Vea también

Introducción a las variables del sistema | Agregar controles de Visual FoxPro a un formulario | Diseñador de formularios


_CALCMEM (Variable del sistema)

Contiene el valor numérico que Microsoft Visual FoxPro almacena en la memoria de la Calculadora.

_CALCMEM = nCalculatorValue

Parámetros

nCalulatorValue
Especifica el valor numérico que _CALCMEM almacena en la memoria.

Observaciones

Puede guardar el resultado de un cálculo en la memoria de la Calculadora y devolver el resultado a un programa o puede incluir un valor específico en la memoria de la Calculadora antes de utilizarla.

Para inicializar la memoria de la Calculadora, almacene un valor numérico en _CALCMEM con STORE o con el operador de asignación =. Cuando utilice la Calculadora, su memoria contendrá el valor especificado.

Ejemplo

En el siguiente ejemplo de programa se almacena la constante numérica 1234 en _CALCMEM. Después, el programa mostrará la Calculadora y llenará el teclado con la letra R. Al pulsar la tecla R se mostrará el valor almacenado en la memoria de la Calculadora.

STORE 1234 TO _CALCMEM
ACTIVATE WINDOW calculator
CLEAR TYPEAHEAD
KEYBOARD CHR(82)

Vea también

ACTIVATE WINDOW | _CALCVALUE | STORE | CALCULATE (Comando)


_CALCVALUE (Variable del sistema)

Contiene el valor numérico que muestra la Calculadora.

_CALCVALUE = nCalculatorDisplayValue

Parámetros

nCalculatorDisplayValue
Especifica el valor numérico que muestra la Calculadora.

Observaciones

Puede devolver a un programa el resultado de un cálculo o incluir un valor específico en la pantalla de la Calculadora antes de utilizarla.

Para inicializar la pantalla de la Calculadora, almacene un valor numérico en _CALCVALUE con STORE o con el operador de asignación =. Cuando utilice la Calculadora, mostrará el valor especificado

Ejemplo

En el siguiente ejemplo, se almacena el valor numérico 1234 en _CALCVALUE. A continuación, la Calculadora muestra el valor 1234.

STORE 1234 TO _CALCVALUE
ACTIVATE WINDOW calculator

Vea también

ACTIVATE WINDOW | _CALCMEM | STORE | CALCULATE (Comando) | Mostrar valores calculados en una columna (Ejemplo)


_CLIPTEXT (Variable del sistema)

Almacena el contenido del Portapapeles.

_CLIPTEXT = cExpression

Parámetros

cExpression
Especifica la expresión de caracteres que se va a almacenar en el Portapapeles.

Observaciones

Puede copiar al Portapapeles una expresión de caracteres cExpression con STORE o con el operador de asignación =.

Ejemplo

Estos ejemplos colocarán nombres de rutas largas en el portapapeles.

_cliptext=_vfp.ServerName

or

_cliptext=getfile()

Vea también

PRIVATE | PUBLIC | STORE | Rutinas para la manipulación del editor de textos y el Portapapeles | = | DataToClip (Método)


_Codesense (Variable del sistema)

Contiene el nombre de la aplicación que proporciona funcionalidad IntelliSense.

_Codesense = [cFilename]

Parámetros

cFilename
Nombre de la aplicación de Visual FoxPro que proporciona funcionalidad IntelliSense, tal como información acerca de herramientas en las ventanas del editor y el editor de código, miembros de lista, etc.

Observaciones

La aplicación _Codesense mejora también la funcionalidad IntelliSense para las funciones y comandos nativos. De forma predeterminada, _Codesense contiene FoxCode.app, que se encuentra instalada en la carpeta de aplicación de usuario de Windows o en la ubicación HOME( ). Puede especificar otro cFilename distinto para la aplicación _Codesense.

Vea también

_FOXCODE (Variable del sistema) | ToolTipText (Propiedad) | Personalizar IntelliSense mediante FoxCode | Ventana Administrador de IntelliSense de Visual FoxPro


_CONVERTER (Variable del sistema)

Contiene el nombre de la aplicación de conversión de Microsoft Visual FoxPro.

_CONVERTER = cProgramName

Parámetros

cProgramName
Especifica una aplicación de conversión. Si la aplicación de conversión está en un directorio distinto del directorio predeterminado de Visual FoxPro, incluya una ruta de acceso con el nombre de la aplicación.

También puede especificar una aplicación de conversión en el archivo de configuración de Visual FoxPro si incluye una línea con esta sintaxis:

_CONVERTER = cProgramName

Observaciones

La variable de memoria del sistema _CONVERTER contiene el nombre de la aplicación que utiliza Visual FoxPro cuando intenta abrir una pantalla, un informe o un proyecto creado en una versión anterior de FoxPro. De forma predeterminada, _CONVERTER contiene Convert.app, instalado en el directorio de Visual FoxPro. Puede especificar un nombre distinto para la aplicación de conversión.

Vea también

Introducción a las variables del sistema | Cuadro de diálogo Convertidor de Visual FoxPro | Especificar el archivo de configuración que se va a utilizar


_COVERAGE (Variable del sistema)

Contiene el nombre de la aplicación de Visual FoxPro que crea el trayecto del Depurador y el resultado del Analizador de trayecto.

_COVERAGE = cProgramName

Parámetros

cProgramName
Especifica una aplicación de resultado de trayecto. Si su resultado de trayecto está en un directorio distinto del directorio predeterminado de Visual FoxPro actual, incluya una ruta de acceso con el nombre de la aplicación.

También puede especificar una aplicación de resultado de trayecto en su archivo de configuración de Visual FoxPro si incluye una línea con esta sintaxis:

_COVERAGE = cProgramName

Observaciones

De forma predeterminada, _COVERAGE contiene Coverage.app, instalado en su directorio de Visual FoxPro. Puede especificar un nombre distinto para la aplicación de resultado de trayecto.

Vea también

SET COVERAGE (Comando) | SET EVENTTRACKING (Comando) | Modificar el Analizador de trayecto | Aplicación Analizador de trayecto


_DBLCLICK (Variable del sistema)

Especifica el intervalo de tiempo permitido entre dobles o triples clic del ratón.

_DBLCLICK = nTicks

Parámetros

nTicks
Especifica el intervalo de tiempo en segundos. Los intervalos se miden en “tics” de reloj, que son alrededor de 1/18 de segundo. Si almacena un valor entero o decimal en _DBLCLICK, es posible que Visual FoxPro lo almacene como un valor ligeramente distinto debido a que redondea los tics.

Al iniciar Visual FoxPro, la configuración de doble clic en la ventana Propiedades del ratón del Panel de control determina el valor predeterminado de _DBLCLick. _DBLCLICK puede variar de 0,05 a 5,5 segundos (1 a 100 tics). _DBLCLICK, se aplica sólo a la velocidad de doble clic y no al período de captura de tecla de búsqueda incremental, como sucedía en versiones anteriores a la versión 7 de Visual FoxPro.

Observaciones

La configuración de _DBLCLICK reemplaza la especificada en el Panel de control del ratón de Windows.

_DBLCLICK contiene un valor numérico que determina el intervalo de tiempo utilizado por Visual FoxPro para comprobar dobles o triples clic del ratón. _DBLCLICK es el intervalo de tiempo admitido entre dos clic del ratón. Por ejemplo, si _DBLCLICK se ha ajustado como 0,5 segundos, dispone de medio segundo para hacer clic dos veces para un doble clic y de 1 segundo para hacer clic tres veces para un triple clic.

Cuanto mayor sea el valor de _DBLCLICK, más tiempo puede esperar entre el primer y el segundo clic para que Visual FoxPro interprete ambos clic como un doble clic. Si _DBLCLICK está definido con un valor muy reducido, es posible que incluso dobles (o triples) clic se interpreten como dos (o tres) clic sencillos.

Vea también

INKEY( ) | DblClick (Evento) | MouseUp (Evento) | MouseDown (Evento) | Click (Evento) | _INCSEEK (Variable del sistema)


_DIARYDATE (Variable del sistema)

Contiene la fecha actual del Calendario/Agenda.

_DIARYDATE = dExpression

Parámetros

dExpression
Especifica la fecha para el Calendario/Agenda.

Observaciones

Con _DIARYDATE, puede mostrar el Calendario/Agenda con una fecha concreta seleccionada o bien puede devolver la fecha seleccionada en el Calendario/Agenda.

De forma predeterminada, la fecha actual es la almacenada en _DIARYDATE. Cuando abre el Calendario/Agenda, se muestra seleccionada la fecha actual. Puede almacenar otra fecha distinta en _DIARYDATE de forma que el Calendario/Agenda se abra con esta nueva fecha seleccionada.

Seleccionar una nueva fecha cuando el Calendario/Agenda está abierto hace que se almacene esta nueva fecha en _DIARYDATE. Al cerrar el Calendario/Agenda, _DIARYDATE contiene la última fecha seleccionada.

Ejemplo

En el siguiente ejemplo de programa, el Calendario/Agenda se abre con la fecha 28 de marzo de 2001 seleccionada y el valor de _DIARYDATE aparece debajo. A continuación se almacena 4 de julio de 1776 en DIARYDATE y vuelve a mostrarse _DIARYDATE. Por último, el programa utiliza la función DATE( ) para seleccionar la fecha actual y presenta _DIARYDATE.

SET CENTURY ON
STORE {^2001-03-28} TO _DIARYDATE
=MESSAGEBOX(DTOC(_DIARYDATE),64)
ACTIVATE WINDOW calendar
=MESSAGEBOX("Change date to July 4, 1776",48))
STORE {^1776-07-04} TO _DIARYDATE
=MESSAGEBOX(DTOC(_DIARYDATE),64)
=MESSAGEBOX("Change date to today's date",48)
STORE DATE( ) TO _DIARYDATE
=MESSAGEBOX(DTOC(_DIARYDATE),64)
RELEASE WINDOW calendar

Vea también

STORE | Agregar calendario enlazado a datos (Ejemplo) | SET CENTURY (Comando) | ACTIVATE WINDOW (Comando)


_DOS (Variable del sistema)

Se incluye por compatibilidad con versiones anteriores. Siempre devuelve Falso (.F.) en Visual FoxPro.

Vea también

_MAC | _UNIX | VERSION( ) | _WINDOWS


_FoxCode (Variable del sistema)

Contiene el nombre de la tabla FOXCODE utilizada para Visual FoxPro IntelliSense.

_FoxCode [= cDBFFileName]

Parámetros

cDBFFileName
Especifica el nombre del archivo que va a utilizar IntelliSense en los editores y en la ventana Comandos.

Observaciones

De manera predeterminada, el archivo recibe el nombre FOXCODE.DBF y se almacena en la carpeta de aplicación de usuario de Windows o en la ubicación HOME( ).

La tabla de sistema FOXCODE se abre, al igual que el archivo de recursos FOXUSER, cuando se inicia Visual FoxPro. Puede utilizar la siguiente línea de código para tener acceso a la información de FoxCode.dbf.

USE (_foxcode) AGAIN SHARED

Esta configuración se omite en tiempo de ejecución.

Vea también

_Codesense (Variable del sistema) | FoxCode (Referencia de objeto) | Personalizar IntelliSense mediante FoxCode | Introducción a IntelliSense | Uso de IntelliSense en Visual FoxPro | HOME( ) (Función)


_FOXREF (Variable del sistema)

Contiene el nombre de la aplicación que proporciona la herramienta Referencias de código.

_FOXREF = cFoxRefApplication

Parámetros

cFoxRefApplication
Especifica el nombre del programa de Visual FoxPro utilizado como el controlador que busca las Referencias de código.

Observaciones

De forma predeterminada, la variable de sistema _FOXREF apunta al siguiente archivo:

HOME( ) + "FoxRef.app"

Puede modificar esta configuración en la ficha Localización de ficheros en el Cuadro de diálogo Opciones.

Puede llamar a esta aplicación directamente como sigue:

DO (_FOXREF) WITH ParameterList

ParameterList especifica los parámetros a pasar al programa o procedimiento. Los parámetros listados en ParameterList pueden ser expresiones, variables de memoria, literales, campos o funciones definidas por el usuario. De forma predeterminada, se pasan a los programas y procedimientos por referencia. Puede pasar un parámetro por valor colocándolo entre paréntesis.

Vea también

Variables del sistema | DO (Comando) | Ficha Archivos, cuadro de diálogo Opciones | Cuadro de diálogo Buscar referencia | Ventana Referencia de código | Ver definiciones de código


_FoxTask (Variable del sistema)

Especifica el nombre de la tabla FOXTASK en la que se basa el Administrador de tareas de Visual FoxPro.

_FoxTask [= cDBFFileName]

Parámetros

cDBFFileName
Especifica el nombre del archivo que debe utilizar el editor de Visual FoxPro y el Administrador de lista de tareas para almacenar accesos directos a la lista de tareas.

Observaciones

De manera predeterminada, el archivo recibe el nombre foxtask.dbf y se almacena en la carpeta de aplicación de usuario de Windows o en la ubicación HOME( ). En la tabla siguiente se describe la estructura foxtask.dbf

Nombre de campo | Tipo | Ancho | Descripción
UNIQUEID | C | 10 | Especifica el Id. único de Visual FoxPro
TIMESTAMP | N | 10 | Especifica la marca de hora de Visual FoxPro
FILENAME | M | 4 | Especifica el nombre de archivo
CLASS | M | 4 | Especifica el nombre de clase (.vcx, .scx)
METHOD | M | 4 | Nombre de método (.vcx, .scx)
LINE | N | 6 | Especifica el número de línea
CONTENTS | M | 4 | Especifica el contenido de la línea
TYPE | C | 1 | "S", para acceso directo; los otros pueden ser tipos definidos por el usuario
DUEDATE | D | 8 | Fecha de entrega definida por el usuario
PRIORITY | N | 1 | Especifica una configuración de prioridad definida por el usuario para el elemento 0 = baja 1 = media 2 = alta
STATUS | N | 1 | Estado de una tarea 0 = no completada 1 = completada

Puede especificar un nombre diferente para la tabla de la lista de tareas mediante la propiedad FoxTask, como en el siguiente ejemplo:

Ejemplo

_FOXTASK = MyTasks.dbf

Vea también

_TASKLIST (Variable del sistema)


_GALLERY (Variable del sistema)

Especifica el programa que se ejecuta cuando elige Galería de componentes en el menú Herramientas.

_GALLERY = ProgramName

Parámetros

ProgramName
Especifica un programa. Si su programa está un directorio que no sea el directorio predeterminado actual, incluye una ruta con el nombre del programa.

Observaciones

_GALLERY contiene GALLERY.APP de forma predeterminada.

Vea también

Introducción a la Galería de componentes| Introducción a la Galería de componentes | Variables del sistema | Introducción a las variables del sistema


_GENHTML (Variable del sistema)

Especifica un programa de generación de código HTML (Lenguaje de marcado de hipertexto).

_GENHTML = ProgramName

Parámetros

ProgramName
Especifica un programa que genera código HTML. Si su programa de generación de código HTML está en un directorio diferente al directorio predeterminado actual, incluya una ruta con el nombre de programa.

Observaciones

_GENHTML contiene Genhtml.prg de forma predeterminada. Genhtml.prg se ejecutará cuando elija Guardar como HTML en el menú Archivo. Se crea un archivo de texto que contiene una versión en lenguaje de marcado de hipertexto del formulario, menú, informe o etiqueta. La opción Guardar como HTML sólo está disponible cuando están activos los Diseñadores de formularios, menús o informes y se ha guardado el formulario, menú o informe, o cuando se abre una ventana Examinar.

Vea también

CREATE FORM | CREATE MENU | CREATE REPORT | USE | Variables del sistema | Introducción a las variables del sistema


_GENMENU (Variable del sistema)

Especifica un programa de generación de menús.

_GENMENU = ProgramName

Parámetros

ProgramName
Especifica un programa que las versiones anteriores utilizaban para generar código de menú a partir de una tabla de definición de menú .mnx. Si su programa está un directorio que no sea el directorio predeterminado actual, incluye una ruta con el nombre del programa.

Observaciones

_GENMENU contiene Genmenu.prg de forma predeterminada. Una directiva (#IMAGEPATHS) controla si todas las rutas son generadas por imágenes de menú (menu images).

Vea también

CREATE MENU | _GENSCRN | Variables del sistema | Introducción a las variables del sistema


_GETEXPR (Variable del sistema)

Especifica el programa que se ejecuta cuando ejecuta el comando GETEXPR o llama al cuadro de diálogo del Generador de expresiones desde Visual FoxPro.

_GETEXPR = ProgramName

Parámetros

ProgramName
Especifica un programa que se ejecuta cuando ejecuta el comando GETEXPR o llama al cuadro de diálogo del Generador de expresiones desde Visual FoxPro. Si su programa está un directorio que no sea el directorio predeterminado actual, incluye una ruta con el nombre del programa.

Observaciones

_GETEXPR contiene la cadena vacía predeterminada; la cadena vacía indica que se muestra el cuadro de diálogo del Generador de expresiones cuando se ejecuta el comando GETEXPR o cuando llama al cuadro de diálogo del Generador de expresiones desde Visual FoxPro.

Puede crear su propio programa Generador de expresiones que se ejecute cuando se ejecute el comando GETEXPR o cuando llame al cuadro de diálogo del Generador de expresiones desde Visual FoxPro. Su programa Generador de expresiones debe contener una instrucción LPARAMETERS o PARAMETERS como primera línea ejecutable del programa para aceptar cuatro parámetros que Visual FoxPro pasa al programa. A continuación se muestran los parámetros en el orden en que se pasan:

Parámetro | Descripción
cExpressionType | Especifica el tipo de expresión.
cErrorMessageText | Especifica el mensaje de error mostrado si la expresión no es válida.
cDefaultExpression | Especifica la expresión predeterminada inicial en el Generador de expresiones.
cCaptionText | Especifica el título que aparece en el Generador de expresiones.

Por ejemplo, la siguiente podría ser la primera línea ejecutable de su programa Generador de expresiones:

LPARAMETERS cExpressionType, cErrorMessageText, ;   cDefaultExpression, cCaptionText

Si su programa Generador de expresiones se ejecuta cuando se llama al cuadro de diálogo del Generador de expresiones desde Visual FoxPro, los tres primeros parámetros contienen la cadena vacía y el cuarto parámetro contiene cCaptionText, el título que aparece en el Generador de expresiones.

Observe que el Generador de expresiones de Visual FoxPro es un cuadro de diálogo modal. Su programa Generador de expresiones debe establecer sus propiedades de formulario a los valores siguientes para crear un cuadro de diálogo modal:

Propiedad de formulario | Valor de propiedad
AlwaysOnTop | Verdadero (.T.)
Desktop | Verdadero (.T.)
WindowType | 1 – Modal

Vea también

GETEXPR | LPARAMETERS (Comando) | PARAMETERS (Comando) | Variables del sistema | Introducción a las variables del sistema


_INCLUDE (Variable del sistema)

Especifica un archivo de encabezado predeterminado incluido en las clases, formularios o conjuntos de formularios definidos por el usuario.

_INCLUDE = HeaderFileName

Parámetros

HeaderFileName
Especifica un archivo de cabecera predeterminado de constantes predefinidas de tiempo de compilación que se incluye automáticamente con las clases definidas por el usuario, los formularios y los conjuntos de formularios. Si su archivo de encabezado está en un directorio diferente al directorio predeterminado actual, incluya una ruta con el nombre del archivo de encabezado. Contiene la cadena vacía de forma predeterminada.

Observaciones

También puede especificar el archivo de encabezado predeterminado con el elemento Archivo de inclusión predeterminado de la ficha Localización de archivos del cuadro de diálogo Opciones.

Vea también

CREATE CLASS | CREATE FORM | Ficha Archivos, cuadro de diálogo Opciones | #INCLUDE | Variables del sistema | Introducción a las variables del sistema


_INCSEEK (Variable del sistema)

Especifica el intervalo de tiempo abierto para pulsaciones en una búsqueda incremental como la que se realiza dentro de los controles Listbox o ComboBox.

_INCSEEK = nTicks

Parameters

nTicks
Especifica el intervalo de tiempo en segundos. Los intervalos se miden en “tics” de reloj, que son alrededor de 1/18 de segundo. Si almacena un valor entero o decimal en _INCSEEK, Visual FoxPro podría almacenarlo como un valor ligeramente diferente por redondeo de “tics”. El valor de _INCSEEK puede variar de 0,05 a 5,5 segundos (1 a 100 “tics”).

Observaciones

En las versiones anteriores de Visual FoxPro, también se utilizaba el valor de _DBLCLICK para determinar el intervalo de búsqueda incremental. El valor predeterminado para _INCSEEK es 0.50.

Vea también

_DBLCLICK | Variables del sistema | Introducción a las variables del sistema

Se aplica a: IncrementalSearch (Propiedad)


_MAC (Variable del sistema)

Contiene verdadero (.T.) si el usuario está utilizando FoxPro para Macintosh o Microsoft Visual FoxPro para Macintosh.

_MAC = lExpression

Observaciones

_MAC contiene falso (.F.) para cualquier otra versión de la plataforma de FoxPro (Visual FoxPro para Windows, FoxPro para Windows, FoxPro para MS-DOS o FoxPro para UNIX).

El valor que contiene _MAC no puede modificarse con STORE o =.

Vea también

_DOS | _UNIX | VERSION( ) | _WINDOWS


_MLINE (Variable del sistema)

Contiene el desplazamiento del campo memo para la función MLINE( ).

_MLINE = nNumberOfCharacters

Parámetros

nNumberOfCharacters
Especifica el desplazamiento del campo memo. Para obtener más información acerca del uso de _MLINE y ver un ejemplo de su uso, vea MLINE( ).

Observaciones

MLINE( ) devuelve una línea de texto desde un campo memo. MLINE( ) almacena la ubicación de desplazamiento del campo memo en la variable del sistema. Utilice _MLINE como segundo argumento numérico en la función MLINE( ) para aumentar el rendimiento de MLINE( ).

El valor inicial predeterminado para _MLINE es 0. Asegúrese de restablecer _MLINE a 0 antes de volver a utilizar _MLINE con la función MLINE( ).

Vea también

ALINES( ) | MEMLINES( ) | MLINE( ) | SET MEMOWIDTH


_ObjectBrowser (Variable del sistema)

Contiene el nombre de la aplicación examinador de objetos.

_ObjectBrowser = cObjectBrowserApplication

Parámetros

cObjectBrowserApplication
Especifica el nombre del programa de Visual FoxPro que permite ver bibliotecas de tipos COM.

Observaciones

De manera predeterminada, _ObjectBrowser contiene objectbrowser.app, que se encuentra en la carpeta de aplicación de usuario de Windows o en la ubicación HOME( ). Puede especificar un nombre diferente para la aplicación examinadora de objetos.

Vea también

Variables del sistema | Introducción a las variables del sistema | Examinador de objetos | Utilizar el Examinador de objetos


_PAGENO (Variable del sistema)

Contiene el número de página actual.

_PAGENO = nCurrentPageNumber

Parámetros

nCurrentPageNumber
Especifica un valor numérico desde 1 hasta 32.767 para el número de página actual. _PAGENO, _PBPAGE y _PEPAGE funcionan en armonía. Si se establece (o incrementa) _PAGENO de forma que quede fuera del intervalo de _PBPAGE a _PEPAGE, no se imprimirá ninguna página.

Observaciones

_PAGENO contiene un valor numérico que determina el número de página actual. El valor inicial predeterminado es 1. _PAGENO le permite imprimir números de página en salida secuencial de carácteres sin definir, inicializar ni incrementar una variable para este fin.

Vea también

ON PAGE | _PBPAGE | _PEPAGE | _PLENGTH | _PLINENO | _PAGETOTAL (Variable del sistema)


_PAGETOTAL (Variable del sistema)

Contiene el número total de páginas en un informe.

Puede utilizar _PAGETOTAL para establecer la numeración "Página X de Y" en los informes. _PAGETOTAL está permitida en tiempo de diseño y tiempo de ejecución de Visual FoxPro y en todas las operaciones de informes, incluyendo REPORT FORM...TO FILE...ASCII y con argumentos opcionales tales como RANGE.

_PAGETOTAL [ = nValue ]

Parámetros

nValue
Especifica un número positivo que representa el total de números de páginas en el informe.

Observaciones

Puede establecer _PAGETOTAL en cualquier momento. Visual FoxPro evalúa y actualiza _PAGETOTAL sólo cuando ocurre una operación con informes, como REPORT FORM. Al inicio del informe, Visual FoxPro inicializa _PAGETOTAL en cero (0), sin tener en cuenta si _PAGETOTAL es utilizada en el informe.

Si incluye _PAGETOTAL en cualquier lugar del informe FoxPro, Visual FoxPro efectúa dos pases a través del informe. El primer pase no es visible ni impreso y calcula la variable _PAGETOTAL. Durante el primer pase _PAGETOTAL es fijado a -1.

Por razones de rendimiento, puede suprimir los dos pases al informe, al no utilizar _PAGETOTAL en la presentación preliminar utilizando una expresión como la siguiente:

TRANS(_PAGENO) + IIF(SYS(2040)="1", "", " OF " + TRANS(_PAGETOTAL))

Si no incluye una referencia a _PAGETOTAL en el informe, Visual FoxPro configura el valor de _PAGETOTAL al total de números de páginas al final de la impresión y realiza solo un pase a través del informe.

Puede forzar el segundo pase a través del informe utilizando una expresión como la siguiente:

IIF( _PAGETOTAL = 0, "","" )

Para que ocurra un segundo pase, Visual FoxPro tiene que evaluar _PAGETOTAL. Inicializar otro pase permite operaciones adicionales utilizando variables del informe como notificando % del total del número de páginas.

El valor de _PAGETOTAL debe ser igual al valor de _PAGENO al final de la impresión del informe, sin tener en cuenta si el informe incluye _PAGETOTAL.

Ejemplo

El siguiente ejemplo ilustra cómo incluir numeración "Página X de Y" en su informe al utilizar la variable del sistema _PAGETOTAL y añadiendo la siguiente expresión en el cuadro de texto del informe:

"Página " + TRANS(_PAGENO) + " de " + TRANS( _PAGETOTAL)

Vea también

Variables del sistema | Introducción a las variables del sistema | _PAGENO (Variable del sistema)


_PRETEXT (Variable del sistema)

Especifica una expresión de caracteres que se incluye delante de las líneas de combinación de texto.

_PRETEXT = cExpression

Observaciones

Utilizado con SET TEXTMERGE se combina texto en un programa. Puede enviar líneas de texto, el contenido de variables, y el resultado de expresiones y funciones a la pantalla, a una ventana, a una impresora, a un archivo de texto o a un archivo de nivel inferior.

Si almacena una expresión de tipo Carácter en _PRETEXT, esta expresión se agregará al principio de la línea de texto resultante. Para facilitar la inserción de sangrías en el programa, puede almacenar en _PRETEXT uno o varios tabuladores.

Vea también

\ | \\ | SET TEXTMERGE | _TEXT


_SAMPLES (Variable del sistema)

Contiene la ruta del directorio en el que se instalan los ejemplos de Microsoft Visual FoxPro.

_SAMPLES = cPath

Parámetros

cPath
Especifica la ruta completa al directorio que contiene los ejemplos de Visual FoxPro.

Observaciones

_SAMPLES contiene la ruta del directorio que contiene los ejemplos de Visual FoxPro. Este camino normalmente es el subdirectorio \Samples en su directorio raíz de Visual FoxPro, el que se puede determinar con la función HOME() .Si no instala los ejemplos de Visual FoxPro, _SAMPLES se mantendrá apuntando al subdirectorio \Samples debido a que es la loclización predeterminada para instalar los ejemplos.

La ruta que contiene _SAMPLES se lee desde la clave del registro de MSDN del Registro de Windows. Si la clave del registro no existe (por ejemplo, si no ha instalado los ejemplos), _SAMPLES contiene la cadena vacía.

También puede especificar una ruta al directorio de ejemplos con el elemento Directorio Samples de la ficha Archivos del cuadro de diálogo Opciones. Si usa el cuadro de diálogo Opciones para especificar una ruta al directorio de ejemplos, _SAMPLES contiene la ruta que especifique. Si elige Establecer como predeterminada, se guarda la ruta para sesiones futuras de Visual FoxPro.

HOME(2) devuelve la ruta contenida en _SAMPLES.

Vea también

HOME( ) | Archivos


_SCCTEXT (Variable del sistema)

Especifica un programa de conversión de Visual FoxPro que controla la conversión de archivos binarios de Visual FoxPro a sus equivalentes en texto y viceversa.

_SCCTEXT = cProgramName

Parámetros

cProgramName
Especifica un programa de conversión de control de código fuente. Si su programa de conversión de control de código fuente está en un directorio distinto del directorio predeterminado actual, incluya una ruta con el nombre del programa.

También puede especificar un programa de conversión de control de código fuente en su archivo de configuración, incluyendo una línea con esta sintaxis:

_SCCTEXT = cProgramName

Observaciones

De forma predeterminada, _SCCTEXT contiene Scctext.prg, un programa de conversión de Visual FoxPro que controla la conversión de archivos binarios de Visual FoxPro a sus equivalentes de texto y viceversa. Dichos archivos de texto sirven de base para comparar y combinar versiones de archivos binarios de Visual FoxPro a través de una aplicación de control de código fuente.

Vea también

Ficha Proyecto, cuadro de diálogo Opciones | Funciones de conversión de datos | CREATEBINARY( ) (Función)


_SCREEN (Variable del sistema)

Especifica propiedades y métodos para la ventana principal de Visual FoxPro.

_SCREEN.PropertyName [= eValue]

–O bien–

_SCREEN.MethodName

Parámetros

PropertyName
Especifica una propiedad para la ventana principal de Visual FoxPro.
eValue
Especifica un valor para la propiedad.
MethodName
Especifica el método que se va a ejecutar para la ventana principal de Visual FoxPro.

Observaciones

_SCREEN permite manipular la ventana principal de Visual FoxPro como un objeto. No se puede crear procedimientos de evento para _SCREEN. _SCREEN es una variable del sistema de tipo objeto.

A partir de Visual FoxPro 7, las propiedades Top, Height, Left, Width y hWnd de _Screen sólo son aplicables al área de cliente de Visual FoxPro (el área en que se puede mostrar texto). En las versiones anteriores, las propiedades Top y Left hacen referencia a toda la ventana de la aplicación de Visual FoxPro. CLEAR WINDOWS y RELEASE WINDOWS también establecen el valor de ReleaseType en 1. Si se cierra el sistema operativo Windows, se establecerá el valor de ReleaseType en 2.

Nota El valor devuelto por _SCREEN.ReleaseType puede diferir del valor devuelto por otros formularios, ya que es el valor correspondiente a la ventana principal de Visual FoxPro.

Vea también

_SCREEN (Variable del sistema: propiedades, métodos y eventos) | MODIFY WINDOW | Form (Objeto)


_SCREEN (Variable del sistema: propiedades, métodos y eventos)

Propiedades

ActiveControl | ActiveForm | AlwaysOnBottom
AlwaysOnTop | Application | AutoCenter
BackColor | BaseClass | BorderStyle
BufferMode | Caption | Class
ClassLibrary | ClipControls | Closable
Comment | ControlBox | ControlCount
Controls | CurrentX | CurrentY
DataSession | DataSessionID | DefOLELCID (Propiedad)
Desktop | DrawMode | DrawStyle
DrawWidth | Enabled | FillColor
FillStyle | FontBold | FontCharSet
FontItalic | FontName | FontOutline
FontShadow | FontSize | FontStrikeThru
FontUnderline | Forecolor | FormCount
Forms | HalfHeightCaption | Height
HelpContextID | HWnd | Icon
KeyPreview | Left | LockScreen
MaxButton | MaxHeight | MaxLeft
MaxTop | MaxWidth | MDIForm
MinButton | MinHeight | MinWidth
MousePointer | Movable | Name
Objects | ParentClass | Picture
ReleaseType | RightToLeft | ScaleMode
ShowTips | TabIndex | TabStop
Tag | Top | Visible
Width | WindowState | WindowType

Métodos

AddObject | AddProperty | Box
Circle | Cls | Draw
Hide | Line | Move
Point | Print | Pset
Refresh | Release | RemoveObject
SaveAs | SaveAsClass | SetAll
Show | TextHeight | TextWidth
ZOrder |  |

Eventos

Activate | Click | DblClick
Deactivate | Destroy | DragDrop
DragOver | Error | GotFocus
Init | KeyPress | Load
LostFocus | MiddleClick (Evento) | MouseDown
MouseMove | MouseUp | MouseWheel
Moved | OLECompleteDrag | OLEDragDrop
OLEDragOver | OLEGiveFeedBack | OLESetData
OLEStartDrag | Paint | QueryUnload
Resize | RightClick | Scrolled
Unload |  |

Observaciones

A partir de Visual FoxPro 8 SP1 se ha desactivado la opción de crear subclases de la variable de entorno _SCREEN. Por lo tanto, ya no es posible hacer Hooks hacia los métodos de _SCREEN (se producirá un Error 1925 - Nombre de miembro desconocido) como se ejemplificaba en la ayuda de las versiones anteriores de Visual FoxPro. Para realizar la tarea ahora puede utilizar la función BINDEVENT() como se muestra en el ejemplo siguiente:

Ejemplo 1

**** Enlazar los eventos de _SCREEN hacia objetos personalizados  *************
PUBLIC oSH
oSH= CREATEOBJECT("ScreenHook")
BINDEVENT(_SCREEN,"Resize",oSH,"Resize")
BINDEVENT(_SCREEN,"Moved",oSH,"Moved")
BINDEVENT(_SCREEN,"RightClick",oSH,"RightClick")
DEFINE CLASS ScreenHook AS Custom
PROCEDURE RESIZE()
*
* Código para manipular la pantalla de VFP que esta siendo cambiada de tamaño
*
WAIT WINDOW NOWAIT TRANSFORM(THIS.WIDTH)+" "+TRANSFORM(THIS.HEIGHT)
ENDPROC
PROCEDURE moved()
*
* Codigo para manipular la pantalla principal de VFP cuando está siendo cambiada
* de tamaño
WAIT WINDOW "Movido"
ENDPROC
PROCEDURE RIGHTCLICK
*
* Codigo para hacer un menú de "atajo" en la pantalla principal VFP
* al utilizar el botón derecho del ratón
* DO ..\menus\testmenu.mpr
WAIT WINDOW "Ejecutando Botón Derecho"
ENDPROC
ENDDEFINE

Ejemplo 2

En el siguiente ejemplo se muestra la utilización de _SCREEN para personalizar la ventana principal de Visual FoxPro.

* Local variables to store current settings
Local oldScreenLeft
Local oldScreenTop
Local oldScreenHeight
Local oldScreenWidth
Local oldScreenColor
WITH _Screen
oldScreenLeft=.Left       && Save current position and size
oldScreenTop=.Top
oldScreenHeight=.Height
oldScreenWidth=.Width
oldScreenColor = .Backcolor
.LockScreen=.T.       && Disable screen redraw
.BackColor=rgb(192,192,192)   && Change the background to grey
.BorderStyle=2        && Change the border to double
.Closable=.F.         && Remove window control buttons
.ControlBox=.F.
.MaxButton=.F.
.MinButton=.T.
.Movable=.T.
.Height=285
.Width=550
.Caption="Custom Screen"    && Set a caption
.LockScreen=.F.       && Enable screen redraw
ENDWITH
=MESSAGEBOX("Return to normal  ",48,WTITLE())
With _Screen
.Left = oldScreenLeft     && Reset original
.Top = oldScreenTop       && position and size
.Height = oldScreenHeight
.Width  = oldScreenWidth
.BackColor=oldScreenColor     && Change background to white
.LockScreen=.T.       && Disable screen redraw
.BorderStyle=3        && Change border to sizeable
.Closable=.T.         && Reset window control buttons
.ControlBox=.T.
.MaxButton=.T.
.MinButton=.T.
.Movable=.T.
.Caption="Microsoft Visual FoxPro"  && Reset the caption
.LockScreen=.F.       && Enable screen redraw
Endwith

Vea también

_SCREEN (Variable del sistema) | MODIFY WINDOW | Form (Objeto)


_SHELL (Variable del sistema)

Especifica un intérprete de comandos de programa.

_SHELL = cCommand

Observaciones

La variable de memoria del sistema _SHELL se utiliza para impedir el acceso a la ventana Comandos mientras un programa se está ejecutando en Visual FoxPro. El comando DO con el nombre de un programa para ejecutar se suele almacenar en _SHELL.

También puede especificar un comando para ejecutarlo cuando se inicie Visual FoxPro si incluye el elemento de configuración SHELL en el archivo de configuración de Visual FoxPro.

El siguiente ejemplo muestra un uso típico de _SHELL.

  1. Un programa de inicio denominado Mystart.prg se usa para iniciar otro programa denominado Myapp.prg. Mystart.prg almacena el comando necesario para ejecutar Myapp.prg en _SHELL. Esto inicia Myapp.prg. Antes de que Visual FoxPro muestre la ventana Comandos, _SHELL se comprueba en busca de un comando. Si _SHELL contiene un comando, se ejecuta y Visual FoxPro almacena en _SHELL la cadena vacía.
  2. Una vez ejecutado el código de inicialización de Myapp.prg, el comando para iniciar Myapp.prg se vuelve a almacenar en _SHELL. Visual FoxPro no ejecuta el comando ni almacena la cadena vacía en _SHELL, y se impide el acceso a la ventana Comandos. (El acceso a la ventana Comandos no es posible cuando _SHELL contiene cualquier valor distinto de la cadena vacía).
  3. Antes de que Myapp.prg termine de ejecutarse, almacena la cadena vacía en _SHELL para restaurar el acceso a la ventana Comandos.
    *** MYSTART.PRG ***
...
_SHELL = "DO MYAPP.PRG"
*** MYAPP.PRG ***
*** Initialization Code ***
...
*** Initialization Code successfully completed? ***
_SHELL = "DO MYAPP.PRG" && Prevents access to Command window
...
*** Clean up Code ***
_SHELL = ""

Vea también

DO (Comando) | RUN | ! | _STARTUP (Variable del sistema)


_SPELLCHK (Variable del sistema)

Especifica un corrector ortográfico para el editor de texto de Visual FoxPro.

_SPELLCHK = ProgramName

Parámetros

ProgramName
Especifica un corrector ortográfico. Si su corrector ortográfico está en un directorio distinto del directorio predeterminado actual, incluya la ruta de acceso junto con el nombre del programa.

También puede especificar un corrector ortográfico en el archivo de configuración de Visual FoxPro. Incluya la línea:

_SPELLCHK = ProgramName

Observaciones

De manera predeterminada, _SPELLCHK no tiene un programa asignado. Para utilizar un programa de corrección ortográfica, indique el nombre del programa y su ruta en _SPELLCHK. Cuando especifique un programa en el código o en la ficha Archivos del submenú Opciones del menú Herramientas, podrá tener acceso al comando DO como se muestra en el ejemplo siguiente:

DO Spellchk

Vea también

MODIFY COMMAND | MODIFY FILE | MODIFY MEMO


_STARTUP (Variable del sistema)

Especifica el nombre de la aplicación que se ejecuta al iniciar Visual FoxPro.

_STARTUP = ProgramName

Parámetros

ProgramName
Especifica la aplicación que se ejecuta al iniciar Visual FoxPro. Debe incluir _STARTUP en su archivo de configuración de Visual FoxPro.

Asimismo, puede especificar el comando o programa que se ejecutará cuando se inicie Visual FoxPro, incluyendo una de las líneas siguientes en el archivo de configuración:

COMMAND = cVisualFoxProCommand

O bien:

COMMAND = DO ProgramName

Una aplicación de inicio especificada con _STARTUP se ejecuta siempre antes que un comando o un programa especificado con COMMAND en el archivo de configuración.

Observaciones

También puede especificar una aplicación de inicio en la ficha Ubicación de archivos del cuadro de diálogo Opciones.

Vea también

DO (Comando) | Cuadro de diálogo Opciones


_TALLY (Variable del sistema)

Contiene el número de registros procesados por el comando de tabla ejecutado más recientemente.

_TALLY = nRegistros

Parámetros

nRegistros
Contiene un valor numérico que indica el número de registros procesados por el último comando ejecutado de tabla.

Observaciones

Determinados comandos de procesamiento de tabla devuelven información acerca de su estado ("conversación") mientras se ejecutan. Cuando este tipo de comandos terminan de ejecutarse, muestran el número de registros que han procesado (si SET TALK está establecido en ON) y almacenan este número en la variable del sistema _TALLY.

Los siguientes comandos devuelven información de estado:

APPEND FROM | AVERAGE
CALCULATE | COPY TO
COUNT | DELETE
DELETE - SQL | INDEX
INSERT - SQL (Usado con SELECT) | PACK
REINDEX | REPLACE
REQUERY | SELECT - SQL
SORT | SUM
TOTAL | UPDATE
UPDATE - SQL |

Cuando se inicia Visual FoxPro, _TALLY está establecida en 0. Al ejecutar uno de los comandos anteriores, se sustituye el valor de _TALLY por el número de registros procesados por el comando.

Ejemplo

En el siguiente ejemplo se utiliza SELECT para devolver el número de clientes en EE.UU. El resultado se almacena automáticamente en _TALLY. Por último, se muestra el valor de _TALLY.

SELECT * FROM customer ;
WHERE country = 'USA' ;
INTO CURSOR temp
? _TALLY

Vea también

SET ODOMETER (Comando) | SET TALK (Comando) | SELECT (Comando)


_TASKLIST (Variable del sistema)

Esta variable del sistema contiene el nombre del programa administrador de la lista de tareas.

_TASKLIST = cTasklistApplication

Parámetros

cTasklistApplication
Nombre del programa de Visual FoxPro que administra la información de la lista de tareas. Este programa permite administrar la lista de marcadores persistentes (accesos directos a la Lista de tareas) para un documento abierto, así como agregar o eliminar elementos de la lista de tareas.

Los elementos de la lista de tareas son registros de foxtask.dbf que contienen información de marca de hora, nombre de archivo, clase, método, número de línea y contenido de línea.

Observaciones

De forma predeterminada, _TASKLIST contiene la aplicación tasklist.app instalada en la carpeta de aplicaciones de usuario de Windows o en la ubicación HOME( ). Puede especificar un nombre diferente para la aplicación de administración de la lista de tareas.

La diferencia principal entre los marcadores persistentes (accesos directos) y los marcadores es que los accesos directos están disponibles en las distintas sesiones de edición.

Vea también

Usar el Administrador de lista de tareas | _FoxTask (Variable del sistema) | Variables del sistema | Introducción a las variables del sistema


_TASKPANE (Variable del sistema)

Contiene la ruta y el nombre del archivo para el Administrador del Panel de tareas.

_TASKPANE = cPath

Parámetros

cPath
Especifica la ruta completa y el nombre del archivo para el Administrador del Panel de tareas.

Observaciones

_TASKPANE especifica la ruta y el nombre del archivo para el Administrador del Panel de tareas. La ruta es usualmente el directorio raíz de Visual FoxPro y el nombre es usualmente Taskpane.app.

Puede especificar una ruta y nombre de archivo para _TASKPANE en la ficha Localización de archivos en el Cuadro de diálogos Opciones. Para más información, vea Archivos y Cuadro de diálogo Opciones.

Vea también

Variables del sistema | Introducción a las variables del sistema | Administrador del Panel de tareas


_TEXT (Variable del sistema)

Dirige el resultado de los comandos de combinación de texto \ | \\ y TEXT ... ENDTEXT a un archivo de nivel inferior.

_TEXT = nFileHandle

Parámetros

nFileHandle
Especifica un valor numérico que determina el archivo de nivel inferior al que se dirige el resultado.

Observaciones

\ | \\ y TEXT ... ENDTEXT facilitan la combinación de texto con el contenido de tablas, variables de memoria y con los resultados de funciones y expresiones. El resultado generado por estos comandos de combinación de texto se puede dirigir a la pantalla, a una ventana o a un archivo de nivel inferior. La variable del sistema _TEXT le permite dirigir el resultado de combinar texto desde estos comandos a un archivo de nivel inferior.

Para enviar el resultado desde los comandos de combinación de texto \, \\ y TEXT ... ENDTEXT a un archivo de nivel inferior, incluya la cláusula TO NombreArchivo en SET TEXTMERGE. El controlador de archivo de NombreArchivo se almacena en _TEXT. Si se había almacenado previamente el controlador de archivo de otro archivo de nivel inferior en _TEXT, este archivo de nivel inferior se cierra.

FCREATE( ) crea y abre archivos de nivel inferior y FOPEN( ) abre archivos existentes. Estas funciones devuelven un controlador de archivo positivo si el archivo se ha logrado crear o abrir sin problemas. Al almacenar este controlador de archivo en _TEXT se dirige el resultado posterior desde los comandos de combinación de texto \, \\ y TEXT ... ENDTEXT al archivo. Utilice STORE o = para almacenar un controlador de archivo en _TEXT. Es necesario abrir un archivo de nivel inferior con privilegios de escritura con el fin de que acepte el resultado procedente de los comandos de combinación de texto.

Puede cerrar archivos de nivel inferior con FCLOSE( ) o con CLOSE ALL. También puede utilizar SET TEXTMERGE TO sin ningún nombre de archivo para cerrar el archivo de nivel inferior cuyo controlador está almacenado en _TEXT.

El valor predeterminado inicial de _TEXT es –1. Si desea dirigir el resultado de la combinación de texto a un archivo cuyo controlador de archivo está almacenado en _TEXT, puede desconectar el envío del resultado a dicho archivo sin necesidad de cerrarlo al almacenar –1 en _TEXT. Si almacena distintos controladores de archivo y –1 en _TEXT, puede dirigir el resultado de combinar texto a archivos alternativos.

Ejemplo

El siguiente programa muestra la forma de dirigir el resultado de la combinación de texto a otros archivos:

SET TALK OFF
SET TEXTMERGE ON NOSHOW      && Enable text merge, no output to screen
SET TEXTMERGE DELIMITERS TO   && Default text merge delimiters <<,>>
SET TEXTMERGE TO date.txt   && Create and send output to date.txt
STORE _TEXT TO gcDateHandle   && Save date.txt's file handle
STORE -1 TO _TEXT         && Output off to date.txt; keep it open
SET TEXTMERGE TO time.txt   && Create and send output to time.txt
STORE _TEXT TO gcTimeHandle   && Save time.txt's file handle
*** Send the following text to time.txt ***
\The time is:
STORE gcDateHandle TO _TEXT    && Now direct output to date.txt
*** Send the following text to date.txt ***
\Today's date is:
STORE gcTimeHandle TO _TEXT   && Now direct output to time.txt
*** Output the time on the same line ***
\\ <<TIME( )>>
STORE gcDateHandle TO _TEXT   && Now direct output to date.txt
*** Output the date on the same line ***
\\ <<DATE( )>>
CLOSE ALL  && Close all files
TYPE date.txt  && See what's in this file...
WAIT WINDOW  && Pause
TYPE time.txt  && ...and what's in this file
ERASE date.txt
ERASE time.txt

Vea también

\ | \\ | FOPEN( ) | FCLOSE( ) | FCREATE( ) | _PRETEXT | SET TEXTMERGE | SET TEXTMERGE DELIMITERS | Variables del sistema | Introducción a las variables del sistema


_THROTTLE (Variable del sistema)

Especifica la velocidad de ejecución de los programas cuando la ventana Seguimiento está abierta.

_THROTTLE = nSeconds

Parámetros

nSeconds
Especifica el retraso, en segundos, entre la ejecución de cada línea de programa. El valor predeterminado inicial es 0, sin ninguna pausa entre la ejecución de las líneas de programa. nSegundos puede variar entre 0 y 5,5 segundos. Por ejemplo, si nSegundos es 0,5 segundos, se produce un retardo de 1/2 segundo entre la ejecución de las líneas de programa.

Observaciones

La ventana Seguimiento, una de las herramientas de depuración disponibles en Visual FoxPro, muestra el código fuente de un programa a medida que se ejecuta dicho programa. La ventana Seguimiento resalta cada línea en el programa a medida que se está ejecutando. El valor numérico de _THROTTLE determina el retardo entre la ejecución de cada línea del programa cuando la ventana Seguimiento está abierta.

Nota La opción Seguimiento entre puntos de interrupción del menú Programa de la ventana Seguimiento debe estar activada para que se produzca el retardo.

Vea también

SET DEBUG | SET STEP | Ventana Seguimiento


_TOOLBOX (Variable del sistema)

Contiene la ruta y el nombre del archivo de la Caja de herramientas de Visual FoxPro. _TOOLBOX especifica la ruta y el nombre del archivo de la Caja de herramientas de Visual FoxPro. Esta ruta está usualmente en la carpeta raíz de Visual FoxPro y el nombre del archivo es usualmente Toolbox.app.

_TOOLBOX = cPath

Parámetros

cPath
Especifica la ruta completa y el nombre del archivo de la Caja de herramientas de Visual FoxPro.

Observaciones

Puede especificar la ruta completa y el nombre del archivo de _TOOLBOX en la ficha Localización de Archivos en el Cuadro de diálogo Opciones. Para más información, vea Ficha Archivos, cuadro de diálogo Opciones.

Vea también

Variables del sistema | Introducción a Variables del sistema | Caja de herramientas


_TRIGGERLEVEL (Variable del sistema)

Contiene un valor numérico de sólo lectura que indica el nivel de anidamiento del procedimiento del desencadenante actual.

_TRIGGERLEVEL = nExpression

Parámetros

nExpression
Contiene el nivel de anidamiento del procedimiento del desencadenante actual. _TRIGGERLEVEL contiene 1 cuando se está ejecutando el procedimiento de desencadenante inicial. Si un procedimiento de desencadenante activa otro procedimiento de desencadenante, _TRIGGERLEVEL se incrementará en 1. _TRIGGERLEVEL contiene 0 si un procedimiento de desencadenante no se está ejecutando.

Observaciones

Utilice CREATE TRIGGER para crear un desencadenante Delete, Insert o Update para una tabla. Puede utilizar APPEND PROCEDURES y MODIFY PROCEDURES para crear procedimientos almacenados que se ejecutan cuando se produce un desencadenante Delete, Insert o Update.

_TRIGGERLEVEL contiene un valor numérico que es de sólo lectura. Si usa STORE o = para asignar un valor a _TRIGGERLEVEL, el valor se pasará por alto.

Vea también

APPEND PROCEDURES | CREATE TRIGGER | MODIFY PROCEDURE


_UNIX (Variable del sistema)

Contiene verdadero (.T.) si utiliza FoxPro para UNIX

_UNIX = lExpression

Observaciones

La variable del sistema _UNIX contiene verdadero (.T.) si está utilizando FoxPro para UNIX. _UNIX contiene falso (.F.) si utiliza otra versión de plataforma distinta de FoxPro o visual FoxPro.

El valor contenido en _UNIX no se puede modificar con STORE ni con =.

Vea también

_DOS | _MAC | VERSION( ) | _WINDOWS


_VFP (Variable del sistema)

Hace referencia al objeto Application para la instancia actual de Visual FoxPro.

_VFP.PropertyName[ = eValue]

–O bien–

_VFP.Method

Parámetros

PropertyName
Especifica una propiedad para el objeto Application.
eValue
Especifica un valor para la propiedad.
Método
Especifica el método que se ejecutará para el objeto Application.

Observaciones

_VFP proporciona acceso a las colecciones Objects y Projects.

A partir de Visual FoxPro 7, las propiedades Top, Height, Left, Width y hWnd de _VFP sólo se aplican a las propiedades de la ventana principal de Visual FoxPro. En las versiones anteriores de Visual FoxPro, las propiedades Height y Width hacían referencia a las de la zona de cliente de Visual FoxPro (zona en la que se puede mostrar texto). Ahora, las propiedades Top, Height, Left y Width de _SCREEN son las del área de cliente de Visual FoxPro.

Vea también

_VFP (Variable del sistema: propiedades, métodos y eventos) | Application (Objeto) | CREATEOBJECT( ) | _SCREEN (Variable del sistema: propiedades, métodos y eventos) | Variables del sistema | Introducción a las variables del sistema

Se aplica a: Projects (Colección)


_VFP (Variable del sistema: propiedades, métodos y eventos)

Propiedades

ActiveForm | ActiveProject | Application
AutoYield | Caption | Count
DefaultFilePath | EditorOptions | Forms
FullName | Height | HWND
LanguageOptions | Left | Name
Objects (Colección) | OLERequestPendingTimeout | OLEServerBusyRaiseError
OleServerBusyTimeout | Parent | ProcessID
Projects (Colección) | ServerName | StartMode
StatusBar | ThreadID | Top
Version | VFPXMLProgID | Visible
Width |  |

Métodos

DataToClip | DoCmd | Eval
Help | Item | Quit
RequestData | SetVar |

Vea también

_VFP (Variable del sistema) | Application (Objeto) | CREATEOBJECT() (Función) | Objects (Colección) | Projects (Colección)


_WINDOWS (Variable del sistema)

Contiene verdadero (.T.) si utiliza Visual FoxPro para Windows.

_WINDOWS = lExpression

Observaciones

_WINDOWS contiene falso (.F.) si utiliza una versión de plataforma distinta de FoxPro o de Visual FoxPro.

El valor contenido en _WINDOWS no se puede modificar con STORE ni con =.

Vea también

_DOS | _MAC | _UNIX | VERSION( )


_WIZARD (Variable del sistema)

Contiene el nombre de la aplicación Asistente de Visual FoxPro.

_WIZARD = cProgramName

Parámetros

cProgramName
Especifica una aplicación de asistente. Si su aplicación de asistente está en una carpeta distinta de la predeterminada de Visual FoxPro, incluya una ruta de acceso con el nombre de la aplicación.

También puede especificar una aplicación de asistente en el archivo de configuración de Visual FoxPro si incluye una línea con la sintaxis siguiente:

_WIZARD = cProgramName

Observaciones

La variable del sistema _WIZARD contiene el nombre de la aplicación que utiliza Visual FoxPro cuando se ejecuta un asistente. De forma predeterminada, _WIZARD contiene Wizard.app, que está instalada en su directorio de Visual FoxPro. Puede especificar un nombre diferente para la aplicación de asistente.

Vea también

Introducción a las variables del sistema | Introducción a los asistentes


Creación de bibliotecas API

Esta sección incluye temas acerca de las rutinas de biblioteca API, los eventos del sistema y los códigos de tecla.

En esta sección

Rutinas externas de biblioteca API ordenadas alfabéticamente
Contiene una lista alfabética de las Rutinas de la biblioteca API.
Rutinas externas de biblioteca API ordenadas por categoría
Contiene una lista por categorias de las Rutinas de la biblioteca API.
Eventos de Visual FoxPro (creación de bibliotecas API)
Lista cada evento de Microsoft Visual FoxPro junto con el trazado de los eventos de los registros y una descripción de cuando ocurren los eventos.
Códigos de teclas de Visual FoxPro (creación de bibliotecas API)
Muestra información de las teclas del teclado y de cómo las interpreta Visual FoxPro dependiendo de la tecla con que se las combina.

Secciones relacionadas

Acceso a la API de Visual FoxPro
Explica cómo puede escribir su propio control Microsoft ActiveX o una DLL especifica en Visual FoxPr (archivo .fll). Mediante el llamado de funciones API de las APIs disponibles en Visual FoxPro, puede crear controles o bibliotecas que se integran y optimizan para su uso en Visual FoxPro
Ampliar Visual FoxPro con bibliotecas externas
Explica cómo puede agregar controles ActiveX (.ocx files) a sus aplicaciones en forma sencilla, ofreciendo nuevos objetos para utilizar en los formularios, para subclasificar y dirigir la forma de trabajar con controles nativos de Visual FoxPro.
Referencia
Inluye temas sobre herramientas de productividad, asi como de controles, objetos, propiedades, métodos, eventos, instrucciones, funciones y constantes disponibles.
Desarrollar aplicaciones Visual FoxPro
Incluye conceptos informativos acerca de cómo desarrollar aplicaciones Visual FoxPro, instrucciones para la creación de bases de datos y de la interfaz de usuario, asi como de otras tareas necesarias para crear aplicaciones Visual FoxPro.
Programar en Visual FoxPro
Explica cómo aprovechar la potencialidad de Visual FoxPro por medio de la creación de aplicaciones. El entender las técnicas de la programación orientada a objetos y el modelo de manejo de objetos le ayudaran a mejorar su productividad al programar.


Rutinas de biblioteca API ordenadas alfabéticamente

A

_ActivateHandler( )

_ActivateIdle( )

_ActivateMenu( )

_ALen( )

_Alloca( )

_AllocHand( )

_AllocMemo( )

B

_BreakPoint( )

C

_CountItems( )

D

_DBAppend( )

_DBLock( )

_DBRead( )

_DBRecCount( )

_DBRecNo( )

_DBReplace( )

_DBRewind( )

_DBSeek( )

_DBSkip( )

_DBStatus( )

_DBUnlock( )

_DBUnwind( )

_DBWrite( )

_DeActivateHandler( )

_DeActivateIdle( )

_DeActivateMenu( )

_DefaultProcess( )

_Dialog( )

_DisposeItem( )

_DisposeMenu( )

E

_EdActive( )

_EdCloseFile( )

_EdCopy( )

_EdCut( )

_EdDelete( )

_EdGetChar( )

_EdGetEnv( )

_EdGetLineNum( )

_EdGetLinePos( )

_EdGetPos( )

_EdGetStr( )

_EdIndent( )

_EdInsert( )

_EdLastError( )

_EdOpenFile( )

_EdPaste( )

_EdPosInView( )

_EdRedo( )

_EdRevert( )

_EdSave( )

_EdScrollToPos( )

_EdScrollToSel( )

_EdSelect( )

_EdSendKey( )

_EdSetEnv( )

_EdSetPos( )

_EdSkipLines( )

_EdUndo( )

_EdUndoOn( )

_Error( )

_ErrorInfo( )

_Evaluate( )

_Execute( )

F

_FCHSize( )

_FClose( )

_FCopy( )

_FCreate( )

_FEOF( )

_FError( )

_FFlush( )

_FGets( )

_FindMemo( )

_FindVar( )

_FindWindow( )

_FindWindowP( )

_FOpen( )

_FPuts( )

_FRead( )

_FreeHand( )

_FreeObject( )

_FSeek( )

_FWrite( )

G

_GetAPIHandle( )

_GetHandSize( )

_GetItemCmdKey( )

_GetItemId( )

_GetItemSubMenu( )

_GetItemText( )

_GetNewItemId( )

_GetNewMenuId( )

_GetNextEvent( )

_GetObjectProperty( )

_GlobalToLocal( )

_GlobalToLocalP( )

H

_HandToPtr( )

_HLock( )

_HUnLock( )

I

_InKey( )

J

K

L

_Load( )

M

_MemAvail( )

_MemCmp( )

_MemFill( )

_MemMove( )

_MemoChan( )

_MemoSize( )

_MenuId( )

_MenuInteract( )

_MousePos( )

_MousePosP( )

N

_NameTableIndex( )

_NewItem( )

_NewMenu( )

_NewVar( )

O

_ObjectCmp( )

_ObjectReference( )

_ObjectRelease( )

_OnSelection( )

P

_PutChr( )

_PutStr( )

_PutValue( )

Q

R

_Release( )

_RetChar( )

_RetCurrency( )

_RetDateStr( )

_RetDateTimeStr( )

_RetFloat( )

_RetInt( )

_RetLogical( )

_RetVal( )

S

_SetHandSize( )

_SetItemCmdKey( )

_SetItemSubMenu( )

_SetItemText( )

_SetMenuPoint( )

_SetMenuPointP( )

_SetObjectProperty( )

_Store( )

_StrCmp( )

_StrCpy( )

_StrLen( )

T

U

_UserError( )

V

W

_WAttr( )

_WBottom( )

_WBottomP( )

_WClear( )

_WClearRect( )

_WClearRectP( )

_WClose( )

_WFindTitle( )

_WGetCursor( )

_WGetCursorP( )

_WGetObjectClientWindow( )

_WGetObjectWindow( )

_WGetPort( )

_WHeight( )

_WHeightP( )

_WHide( )

_WhToHwnd( )

_WLeft( )

_WLeftP( )

_WMainWindow( )

_WMove( )

_WMoveP( )

_WOnTop( )

_WOpen( )

_WOpenP( )

_WPosCursor( )

_WPosCursorP( )

_WPutChr( )

_WPutStr( )

_WRight( )

_WRightP( )

_WScroll( )

_WScrollP( )

_WSelect( )

_WSendBehind( )

_WSetAttr( )

_WSetPort( )

_WSetTitle( )

_WShow( )

_WSize( )

_WSizeP( )

_WTitle( )

_WTop( )

_WTopP( )

_WWidth( )

_WWidthP( )

_WZoom( )

X

Y

Z

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico"..

© 1992 - 2003 Microsoft Corporation. Todos los derechos reservados.

Traducido al Español por el grupo de traductores de PortalFox.

Envíe un informe sobre errores en la traducción de este tema


_ActivateHandler( ) (Rutina de biblioteca API)

Agrega un controlador de función al final de la lista de controladores de eventos.

unsigned int _ActivateHandler(FPFI handler) FPFI handler               /* Event handler to be added. */

Observaciones

_ActivateHandler( ) devuelve un entero que identifica al controlador. Utilice este identificador para quitar el controlador de la lista de procesadores de eventos con _DeActivateHandler( ).

El controlador se invoca con dos parámetros: el parámetro WHANDLE de la ventana a que pertenece el evento y un puntero FAR (32 bits) que apunta a un registro de evento. Si su controlador no busca o modifica un evento para los controladores de eventos subsiguientes, devuelve falso (0) para indicar que el evento debe pasarse aún a los otros controladores o a las rutinas de interfaz de Visual FoxPro. Si el controlador determina que el evento no necesita transferirse, devuelve verdadero (un entero distinto de 0) para indicar que el evento se ha controlado.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente activa un controlador de eventos cuando se carga la biblioteca. El controlador de eventos imprime un mensaje para cada evento y permite a Visual FoxPro procesar el evento como lo hace normalmente. El controlador de eventos se desactiva cuando se descarga la biblioteca.

Código Visual FoxPro

SET LIBRARY TO ACTIHAND
WAIT WINDOW TO m.test TIMEOUT 5
SET LIBRARY TO

Código C

#include <pro_ext.h>
static int HandlerID;
//   This is the routine that is registered as an event handler.
FAR EventHandler(WHandle theWindow, EventRec FAR *ev)
{
_PutStr("\nEventHandler() called.");
return NO;   // event still needs to be handled by Visual FoxPro
}
FAR Activate()
{
HandlerID = _ActivateHandler(EventHandler);
}
//   When the library is unloaded we must deactivate the event handler
//   in a CALLONUNLOAD function.
FAR DeActivate()
{
_DeActivateHandler(HandlerID);
}
FoxInfo myFoxInfo[] = {
{"ACTIVATE",  Activate,   CALLONLOAD, ""},
{"DEACTIVATE", DeActivate, CALLONUNLOAD, ""}
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_DeActivateHandler( ) (Rutina de biblioteca API) | _FindWindow( ) (Rutina de biblioteca API) | _GlobalToLocal( ) (Rutina de biblioteca API) | _MousePos( ) (Rutina de biblioteca API) | Controladores de eventos | EventHandler( ) (Función)


_ActivateIdle( ) (Rutina de biblioteca API)

Agrega una función de controlador inactivo al final de la lista de controladores de eventos inactivos cuando Visual FoxPro espera una entrada del usuario o un evento de fin de tiempo de espera.

unsigned int _ActivateIdle(FPFI handler) FPFI handler               /* Event handler. */

Observaciones

_ActivateIdle( ) devuelve un entero identificador de esta rutina. Utilice el identificador para quitar el controlador de eventos inactivo del bucle inactivo _DeActivateIdle( ).

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo activa un controlador de eventos inactivo cuando se carga la biblioteca. El controlador de eventos inactivo imprime en ese momento un mensaje. El controlador de eventos inactivo se desactiva cuando la biblioteca se descarga.

Código Visual FoxPro

SET LIBRARY TO ACTIIDLE
WAIT WINDOW TO m.test TIMEOUT 5
SET LIBRARY TO

Código C

#include <pro_ext.h>
static unsigned IdlerID;
//   This is the routine that is registered as an idle event handler.
void FAR IdleHandler(WHandle wh, EventRec *ev)
{
_PutStr("\nIdleHandler() called.");
}
void FAR Activate(ParamBlk FAR *parm)
{
IdlerID = _ActivateIdle((FPFI) IdleHandler);
}
//   When the library is unloaded we must deactivate the idle event
//   handlerin a CALLONUNLOAD function.
void FAR DeActivate(ParamBlk FAR *parm)
{
_DeActivateIdle(IdlerID);
}
FoxInfo myFoxInfo[] = {
{"ACTIVATE",  (FPFI) Activate, CALLONLOAD,   ""},
{"DEACTIVATE",  (FPFI) DeActivate, CALLONUNLOAD, ""}
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_DeActivateIdle( ) (Rutina de biblioteca API) | _FindWindow( ) (Rutina de biblioteca API) | _GlobalToLocal( ) (Rutina de biblioteca API) | _MousePos( ) (Rutina de biblioteca API) | Controladores de eventos | EventHandler( ) (Función)


_ActivateMenu( ) (Rutina de biblioteca API)

Muestra el menú especificado en la pantalla e inmediatamente devuelve el control a la rutina que realiza la llamada.

void _ActivateMenu(MENUID menuid) MENUID menuid            /* Menu identifier.

Observaciones

Si detecta la pulsación de un botón del ratón (ratón) o de una tecla en el menú, puede llamar a _MenuInteract( ) para determinar la opción de menú que el usuario escoge.

Para obtener más información a cerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo construye un menú con tres opciones. _ActivateMenu( ) muestra el menú. Este menú es no modal en el sentido de que su interacción no se fuerza como con _MenuInteract( ). Más bien, cuando el usuario realiza una selección, la rutina _OnSelection( ) se llama, la opción se imprime en la pantalla y el menú se repliega.

Código Visual FoxPro

SET LIBRARY TO ACTIMENU
WAIT WINDOW "Make selection from menu." NOWAIT
SUSPEND

Código C

#include <pro_ext.h>
static MENUID menuId;
void putLong(long n)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = 10;
_PutValue(&val);
}
FAR onSelection(long menuId, long itemId)
{
_PutStr("\nitemId = "); putLong(itemId);
}
FAR deactivateMenu(ParamBlk FAR *parm)
{
_DeActivateMenu(menuId);
_DisposeMenu(menuId);
}
FAR activateMenu(ParamBlk FAR *parm)
{
ITEMID itemId;
Point loc;
menuId = _GetNewMenuId();
_NewMenu(MPOPUP, menuId);
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<1st item");
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<2nd item");
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<3rd item");
loc.v = 10; loc.h = 20;
_SetMenuPoint(menuId, loc);
_ActivateMenu(menuId);
_OnSelection(menuId, -1, onSelection);
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) activateMenu, CALLONLOAD, ""},
{"ONUNLOAD", (FPFI) deactivateMenu, CALLONUNLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_DeActivateMenu( ) (Rutina de biblioteca API) | _MenuId( ) (Rutina de biblioteca API) | _NewItem( ) (Rutina de biblioteca API) | _NewMenu( ) (Rutina de biblioteca API) | _OnSelection( ) (Rutina de biblioteca API) | _MenuInteract( ) (Rutina de biblioteca API) | _OnSelection( ) (Rutina de biblioteca API)


_ALen( ) (Rutina de biblioteca API)

Devuelve información acerca de las dimensiones de la matriz cuyo índice en la tabla de nombres es nti.

long _ALen(NTI nti, int mode) NTI nti;                     /* Array name table index. */ int mode;                     /* Mode to determine return value. */

Observaciones

Si mode es AL_ELEMENTS, _ALen( ) devuelve el número total de elementos de la matriz. Si mode es AL_SUBSCRIPT1, _ALen( ) devuelve el valor del primer subíndice utilizado para declarar la matriz. Si mode es AL_SUBSCRIPT2, _ALen( ) devuelve el valor del segundo subíndice utilizado para declarar la matriz.

Si nti no representa el nombre de una matriz existente, _ALen( ) devuelve – 1 sin tener en cuenta el valor de mode.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo proporciona una rutina API de Visual FoxPro para cada uno de los tres posibles valores.

Código Visual FoxPro

SET LIBRARY TO ALEN
DIMENSION a[10, 11]
? ALENELEM(@a)  && returns 110
? ALENSUB1(@a)  && returns 10
? ALENSUB2(@a)  && returns 11
DIMENSION b[3]
? ALENELEM(@b)  && returns 3
? ALENSUB1(@b)  && returns 3
? ALENSUB2(@b)  && returns 0; no second subscript
c = .F.
? ALENELEM(@c)  && returns -1 because variable "c" is not an array
? ALENSUB1(@c)  && returns -1 because variable "c" is not an array
? ALENSUB2(@c)  && returns -1 because variable "c" is not an array

Código C

#include <pro_ext.h>
void FAR alenElem(ParamBlk FAR *parm)
{
_RetInt(_ALen(parm->p[0].loc.l_NTI, AL_ELEMENTS), 10);
}
void FAR alenSub1(ParamBlk FAR *parm)
{
_RetInt(_ALen(parm->p[0].loc.l_NTI, AL_SUBSCRIPT1), 10);
}
void FAR alenSub2(ParamBlk FAR *parm)
{
_RetInt(_ALen(parm->p[0].loc.l_NTI, AL_SUBSCRIPT2), 10);
}
FoxInfo myFoxInfo[] = {
{"ALENELEM", (FPFI) alenElem, 1, "R"},
{"ALENSUB1", (FPFI) alenSub1, 1, "R"},
{"ALENSUB2", (FPFI) alenSub2, 1, "R"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_FindVar( ) (Rutina de biblioteca API) | _Load( ) (Rutina de biblioteca API) | _NameTableIndex( ) (Rutina de biblioteca API) | _NewVar( ) (Rutina de biblioteca API) | _ObjectRelease( ) (Rutina de biblioteca API) | _Store( ) (Rutina de biblioteca API)


_Alloca( ) (Rutina de biblioteca API)

Asigna un bloque de espacio en la pila para la rutina que realiza la llamada.

void FAR * _Alloca(unsigned int size) unsigned int size;            /* Size of stack space to allocate in bytes. */

Observaciones

_Alloca( ) devuelve un puntero al bloque si el bloque se asigna con éxito o devuelve cero si no se asigna. _Alloca( ) libera automáticamente memoria cuando la rutina acaba, por lo que no es necesario que lo haga la correspondiente rutina.

Precaución Algunos compiladores de C, como MPW C, no admiten la asignación de memoria de la pila, por lo que las llamadas a _Alloca( ) desde esos compiladores darán resultados impredecibles. En su lugar, utilice variables locales o llamadas a _AllocHand( ) y _FreeHand( ) en el código para reservar memoria.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo duplica la acción de la función REPLICATE( ) de Visual FoxPro. La memoria utilizada temporalmente para duplicar el carácter proviene de _Alloca( ).

Código Visual FoxPro

SET LIBRARY TO ALLOCA
x = xREPLICATE("x", 120)
? x
? LEN(x)

Código C

#include <pro_ext.h>
void FAR allocaEx(ParamBlk FAR *parm)
{
char FAR *rep;
char c = *(char *) _HandToPtr(parm->p[0].val.ev_handle);
rep = _Alloca((int) parm->p[1].val.ev_long + 1);
_MemFill(rep, c, (int) parm->p[1].val.ev_long);
rep[parm->p[1].val.ev_long] = '\0';  // null terminate
_RetChar(rep);
}
FoxInfo myFoxInfo[] =
{
{"XREPLICATE", (FPFI) allocaEx, 2, "C,I"},
};
FoxTable _FoxTable =
{
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_AllocHand( ) (Rutina de biblioteca API) | _FreeHand( ) (Rutina de biblioteca API) | REPLICATE( ) (Función) | Acceso a la API de Visual FoxPro


_AllocHand( ) (Rutina de biblioteca API)

Devuelve un nuevo MHANDLE de tamaño hsize.

MHANDLE _AllocHand(unsigned int hsize) unsigned int hsize;            /* Size of new memory handle in bytes. */

Observaciones

_AllocHand( ) devuelve 0 cuando no hay memoria suficiente para cumplir la petición. La memoria asignada con _AllocHand( ) no se inicializa y se debe liberar tras su uso.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

En el siguiente ejemplo, un carácter se duplica en memoria aportada por _AllocHand( ). La función API REPLTOMH( ) devuelve el controlador de memoria a Visual FoxPro. Desde Visual FoxPro, el controlador de memoria se pasa a las funciones API, que esperan un argumento de controlador de memoria (que se pasa como un entero, "I").

Código Visual FoxPro

SET LIBRARY TO ALLOCHAN
mh = REPLTOMH("x", 120)
? MHTOFOX(mh)
? LEN(MHTOFOX(mh))
? MHTOFOX(mh)
= FREEMH(mh)

Código C

#include <pro_ext.h>
//   Replicate char argument to memory allocated with _AllocHand().
//   Return the memory handle to Visual FoxPro.
void FAR replToMH(ParamBlk FAR *parm)
{
char FAR *rep;
char c = *(char *) _HandToPtr(parm->p[0].val.ev_handle);
MHANDLE mh;
if ((mh = _AllocHand((int) parm->p[1].val.ev_long + 1)) == 0)
{
_Error(182);  // "Insufficient memory"
}
_HLock(mh);
rep = _HandToPtr(mh);
_MemFill(rep, c, (int) parm->p[1].val.ev_long);
rep[parm->p[1].val.ev_long] = '\0';  // null terminate
_HUnLock(mh);
_RetInt(mh, 10);
}
//   Returns characters in memory handle.
//   Argument in call from Visual FoxPro
//   must be a valid Visual FoxPro memory handle.
void FAR MHToFoxString(ParamBlk FAR *parm)
{
char FAR *string;
MHANDLE mh = parm->p[0].val.ev_long;
_HLock(mh);
string = _HandToPtr(mh);
_RetChar(string);
_HUnLock(mh);
}
//   Frees memory handle.  Argument in call from
//   Visual FoxPro must be a valid
//   Visual FoxPro memory handle.
void FAR freeMH(ParamBlk FAR *parm)
{
_FreeHand((MHANDLE) parm->p[0].val.ev_long);
}
FoxInfo myFoxInfo[] = {
{"REPLTOMH", (FPFI) replToMH, 2, "C,I"},
{"MHTOFOX", (FPFI) MHToFoxString, 1, "I"},
{"FREEMH", (FPFI) freeMH, 1, "I"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_FreeHand( ) (Rutina de biblioteca API) | _GetHandSize( ) (Rutina de biblioteca API) | _HandToPtr( ) (Rutina de biblioteca API) | _HLock( ) | _HUnLock( ) (Rutina de biblioteca API) | _MemAvail( ) (Rutina de biblioteca API) | _SetHandSize( ) (Rutina de biblioteca API)


_AllocMemo( ) (Rutina de biblioteca API)

Asigna size bytes de espacio en el archivo memo para un campo e inserta el número del nuevo bloque en el registro asociado de la base de datos.

long _AllocMemo(Locator FAR *fld, long size) Locator FAR *fld;            /* Pointer to locator that defines the memo field. */ long size;                     /* Size of allocated space in bytes. */

Observaciones

Cuando _AllocMemo( ) tiene éxito, devuelve la ubicación en el archivo para empezar a escribir. De lo contrario, devuelve – 1

Precaución Escribir más de size bytes daña el archivo memo.

Si piensa reemplazar el campo memo con métodos directos, asegúrese de que su rutina llama a _AllocMemo( ) antes de escribir en el archivo memo, incluso si el nuevo valor es de la misma longitud o menor que el original. Esto evita problemas en situaciones multiusuario. _AllocMemo( ) reutiliza el espacio reservado previamente cuando es seguro hacerlo.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo crea un nuevo campo memo de contenidos.

Código Visual FoxPro

SET LIBRARY TO ALLOMEMO
CREATE TABLE wMemo (memoField M)
APPEND BLANK
= NewMemo(@MemoField, "Hello, World.")
APPEND BLANK
= NewMemo(@MemoField, "Isn't this fun?")

Código C

#include <pro_ext.h>
FAR newMemo(ParamBlk FAR *parm)
{
Locator FAR *memoFldLoc;
FCHAN fchMemo;
int memoLen;
long loc;
if ((fchMemo = _MemoChan(-1)) == -1)
{
_UserError("_MemoChan() failed");
}
memoFldLoc = &parm->p[0].loc;
memoLen = parm->p[1].val.ev_length;
if ((loc = _AllocMemo(memoFldLoc, memoLen)) == -1)
{
_UserError("_AllocMemo() failed");
}
_FSeek(fchMemo, loc, FS_FROMBOF);
_HLock(parm->p[1].val.ev_handle);
_FWrite(fchMemo, _HandToPtr(parm->p[1].val.ev_handle), memoLen);
_HUnLock(parm->p[1].val.ev_handle);
}
FoxInfo myFoxInfo[] = {
{"NEWMEMO", (FPFI) newMemo, 2, "R,C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_DBReplace( ) (Rutina de biblioteca API) | _FindMemo( ) (Rutina de biblioteca API) | _MemoChan( ) (Rutina de biblioteca API) | _MemoSize( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_BreakPoint( ) (Rutina de biblioteca API)

_BreakPoint( ) es una macro que genera la instrucción de punto de interrupción del depurador, INT 3. Esto puede ser de gran ayuda para la depuración de rutinas externas.

void _BreakPoint(void any) void any;                     /* Pointer. */

Observaciones

Cuando se encuentra una llamada a _BreakPoint( ), el control se transfiere a su depurador. La mayoría de los depuradores devuelven el control a la línea de programa que incluye la instrucción INT 3 y usted debe aumentar manualmente el puntero de la instrucción (IP) una vez pasada esta instrucción. En ese momento, debe utilizar su depurador para establecer puntos de interrupción adicionales. Quite siempre cualquier punto de interrupción antes de salir de una rutina externa. Para obtener más información acerca de la depuración, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo utiliza la macro _BreakPoint( ) para colocar una instrucción INT 3 que los depuradores reconocen como un punto de interrupción.

Código Visual FoxPro

SET LIBRARY TO BPOINT

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
int RetValue;
_BreakPoint(); // debugger breaks execution here
_HLock(parm->p[0].val.ev_handle);
_HLock(parm->p[1].val.ev_handle);
RetValue = _StrCmp(_HandToPtr(parm->p[0].val.ev_handle),
_HandToPtr(parm->p[1].val.ev_handle));
_RetInt(RetValue, 10); // does return control here
_HUnLock(parm->p[0].val.ev_handle);
_HUnLock(parm->p[1].val.ev_handle);
}
FoxInfo myFoxInfo[] = {
{"STRCMP", (FPFI) Example, 2, "C,C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

Acceso a la API de Visual FoxPro | Rutinas de depuración | Depuración y control de errores


_CountItems( ) (Rutina de biblioteca API)

Devuelve el número de títulos de menú o barras del menú especificado.

int _CountItems(MENUID menuid) MENUID menuid;            /* Menu identifier. */

Ejemplo

El siguiente ejemplo crea un menú con tres elementos y llama a _CountItems( ) para mostrar que la función devuelve correctamente el número de elementos del menú. La rutina dispone entonces de los elementos de menú y llama a _CountItems( ) de nuevo.

Código Visual FoxPro

SET LIBRARY TO CNTITEMS

Código C

#include <pro_ext.h>
void putLong(long n)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = 10;
_PutValue(&val);
}
FAR CountItemsEx(ParamBlk FAR *parm)
{
MENUID menuId;
ITEMID itemId;
Point loc;
menuId = _GetNewMenuId();
_NewMenu(MPOPUP, menuId);
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<1st item");
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<2nd item");
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<3rd item");
loc.v = 10; loc.h = 20;
_SetMenuPoint(menuId, loc);
_ActivateMenu(menuId);
_PutStr("\n_CountItems() ="); putLong(_CountItems(menuId));
_Execute("WAIT");
_DisposeItem(menuId, _GetItemId(menuId, 1));
_PutStr("\n_CountItems() ="); putLong(_CountItems(menuId));
_Execute("WAIT");
_DisposeItem(menuId, _GetItemId(menuId, 0));
_PutStr("\n_CountItems() ="); putLong(_CountItems(menuId));
_Execute("WAIT");
_DisposeMenu(menuId);
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) CountItemsEx, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_GetNewMenuId( ) (Rutina de biblioteca API) | _GetNewMenuId( ) (Rutina de biblioteca API) | _NewMenu( ) (Rutina de biblioteca API) | Crear menús, menús contextuales, elementos de menú y submenús


_DBAppend( ) (Rutina de biblioteca API)

Intenta anexar un nuevo registro a la tabla abierta en el área especificada por el parámetro workarea.

int _DBAppend(int workarea, int carryflag) int workarea;               /* Work area number. */ int carryflag;               /* SET CARRY setting. */

Observaciones

El área de trabajo actual se representa con – 1. _DBAppend( ) devuelve 0 si la rutina acaba con éxito. Si la rutina falla, _DBAppend( ) devuelve un entero negativo cuyo valor absoluto es el número de error de Visual FoxPro.

Valores para carryflag

Valor | Efecto
1 | Copia la información del registro previo en el nuevo registro.
0 | Crea un nuevo registro en blanco.
– 1 | Utiliza la configuración de SET CARRY para determinar si la información del registro anterior se copia en el nuevo registro.

_DBAppend( ) realiza automáticamente cualquier bloqueo que sea necesario. Si no puede bloquear el encabezado del archivo, _DBAppend( ) falla y devuelve un número negativo cuyo valor absoluto corresponde a un número de error de Visual FoxPro.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo utiliza _DBAppend( ) para anexar un registro a una tabla abierta en el área de trabajo actual.

Código Visual FoxPro

SET LIBRARY TO DBAPPEND
DO CreateTest
SET CARRY ON
= DBAPPEND(-1)   && SET CARRY is ON, so carry
SET CARRY OFF
= DBAPPEND(1)   && carry regardless of SET CARRY
= DBAPPEND(-1)   && SET CARRY is OFF, so no carry
PROCEDURE CreateTest
CREATE TABLE test (ABC C(20))
APPEND BLANK
REPLACE ABC WITH "Golly month of"
APPEND BLANK
REPLACE ABC WITH "A twelfth of"
APPEND BLANK
REPLACE ABC WITH "Hello, world"
APPEND BLANK
REPLACE ABC WITH "When in the"
GO TOP
RETURN

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
int RetCode;
if ((RetCode = _DBAppend(-1, (int) parm->p[0].val.ev_long)) < 0) {
_Error(-RetCode);
}
}
FoxInfo myFoxInfo[] = {
{"DBAPPEND", (FPFI) Example, 1, "I"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_DBLock( ) (Rutina de biblioteca API) | _DBUnlock( ) (Rutina de biblioteca API) | Anexar datos a tablas existentes | SET CARRY (Comando) | APPEND (Comando)


_DBLock( ) (Rutina de biblioteca API)

Intenta bloquear el registro actual o la tabla abierta en el área de trabajo especificada por workarea.

int _DBLock(int workarea, int RecOrFile) int workarea;               /* Work area. */ int RecOrFile;               /* What is to be locked. */

Observaciones

El parámetro RecOrFile puede ser DBL_RECORD, para especificar el registro actual, o DBL_FILE, para especificar el archivo de tabla. _DBLock( ) devuelve verdadero (un entero distinto de 0) si el bloqueo tiene éxito o falso (0) si no lo tiene.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo proporciona dos funciones API que puede llamar desde Visual FoxPro: XRLOCK( ), que bloquea el registro actual del área de trabajo actual, y XFLOCK( ), que bloquea la tabla abierta en el área de trabajo actual. XRLOCK( ) llama a _DBLock( – 1, DBL_RECORD( )) y XFLOCK( ) llama a _DBLock( – 1, DBL_FILE( )).

Código Visual FoxPro

SET LIBRARY TO DBLOCK
DO CreateTest
USE Test SHARED
GO 2
= XRLOCK()
LIST STAT  && shows that record #2 is locked
= XFLOCK()
LIST STAT  && shows that whole DBF is locked
PROCEDURE CreateTest
CREATE TABLE test (ABC C(20))
APPEND BLANK
REPLACE ABC WITH "Golly month of"
APPEND BLANK
REPLACE ABC WITH "A twelfth of"
APPEND BLANK
REPLACE ABC WITH "Hello, world"
APPEND BLANK
REPLACE ABC WITH "When in the"
GO TOP
RETURN

Código C

#include <pro_ext.h>
FAR xLockRecord(ParamBlk FAR *parm)
{
_DBLock(-1, DBL_RECORD);
}
FAR xLockFile(ParamBlk FAR *parm)
{
_DBLock(-1, DBL_FILE);
}
FoxInfo myFoxInfo[] =
{
{"XRLOCK", (FPFI) xLockRecord, 0, ""},
{"XFLOCK", (FPFI) xLockFile, 0, ""},
};
FoxTable _FoxTable =
{
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_DBAppend( ) (Rutina de biblioteca API) | _DBUnlock( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro | Transferir parámetros a funciones de la API de Visual FoxPro


_DBRead( ) (Rutina de biblioteca API)

Mueve el puntero del registro actual al registro especificado en el área de trabajo especificada.

int _DBRead(int workarea, long record) int workarea;               /* Work area. */ long record;                  /* Record number. */

Observaciones

_DBRead( ) devuelve 0 si la rutina tiene éxito. Si la rutina falla, _DBRead( ) devuelve un entero negativo cuyo valor absoluto corresponde a un número de error de Visual FoxPro.

Especificar 0 para record equivale a ejecutar GO TOP; especificar – 1 para record equivale a ejecutar GO BOTTOM.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo proporciona una funcionalidad similar a la del comando GO de Visual FoxPro. XGO(n) mueve el puntero del registro actual al registro número n del área de trabajo actual.

Código Visual FoxPro

SET LIBRARY TO DBREAD
DO CreateTest
USE Test SHARED
GO BOTTOM
? RECNO()
= XGO(2)
? RECNO()
PROCEDURE CreateTest
CREATE TABLE test (ABC C(20))
APPEND BLANK
REPLACE ABC WITH "This is record 1"
APPEND BLANK
REPLACE ABC WITH "This is record 2"
APPEND BLANK
REPLACE ABC WITH "This is record 3"
APPEND BLANK
REPLACE ABC WITH "This is record 4"
GO TOP
RETURN

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
_DBRead(-1, parm->p[0].val.ev_long);
}
FoxInfo myFoxInfo[] = {
{"XGO", (FPFI) Example, 1, "I"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_DBRewind( ) (Rutina de biblioteca API) | _DBSkip( ) (Rutina de biblioteca API) | _DBUnwind( ) (Rutina de biblioteca API) | GO | GOTO (Comando)


_DBRecCount( ) (Rutina de biblioteca API)

Devuelve el total de registros de la tabla abierta en el área de trabajo especificada.

long _DBRecCount(int workarea) int workarea;               /* Work area. */

Observaciones

Si no hay ninguna tabla abierta en el área de trabajo especificada, _DBRecCount( ) devuelve un número negativo cuyo valor absoluto corresponde a un número de error de Visual FoxPro.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo llama a _DBRecCount( ) para contar el número de registros de la tabla abierta en el área de trabajo actual.

Código Visual FoxPro

SET LIBRARY TO DBRECCNT
DO CreateTest
? DBRECCOUNT()   && call API routine
? RECCOUNT()   && call built-in Visual FoxPro Function
PROCEDURE CreateTest
CREATE TABLE test (ABC C(20))
APPEND BLANK
REPLACE ABC WITH "This is record 1"
APPEND BLANK
REPLACE ABC WITH "This is record 2"
APPEND BLANK
REPLACE ABC WITH "This is record 3"
APPEND BLANK
REPLACE ABC WITH "This is record 4"
GO TOP
RETURN

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
_RetInt(_DBRecCount(-1), 10);
}
FoxInfo myFoxInfo[] = {
{"DBRECCOUNT", (FPFI) Example, 0, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_DBRecNo( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro | Trabajar con registros | Registros | Trabajar con campos y registros


_DBRecNo( ) (Rutina de biblioteca API)

Devuelve el número del registro actual de la tabla abierta en el área de trabajo especificada.

long _DBRecNo(int workarea) int workarea;               /* Work area. */

Observaciones

Si no hay ninguna tabla abierta en el área de trabajo especificada, _DBRecNo( ) devuelve un número entero negativo cuyo valor absoluto corresponde a un número de error de Visual FoxPro. Si el puntero de registro está al final del archivo, _DBRecNo( ) devuelve un número que es una unidad mayor que el número que devuelve _DBRecCount( ).

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo proporciona una funcionalidad similar a la que proporciona la función RECNO( ) de Visual FoxPro.

Código Visual FoxPro

SET LIBRARY TO DBRECNO
DO CreateTest
GO 3
? DBRECNO()
GO 6
? DBRECNO()
USE
? DBRECNO()  && returns -119
PROCEDURE CreateTest
CREATE TABLE test (ABC C(20))
APPEND BLANK
REPLACE ABC WITH "This is record 1"
APPEND BLANK
REPLACE ABC WITH "This is record 2"
APPEND BLANK
REPLACE ABC WITH "This is record 3"
APPEND BLANK
REPLACE ABC WITH "This is record 4"
APPEND BLANK
REPLACE ABC WITH "This is record 5"
APPEND BLANK
REPLACE ABC WITH "This is record 6"
GO TOP
RETURN

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
_RetInt(_DBRecNo(-1), 10);
}
FoxInfo myFoxInfo[] = {
{"DBRECNO", (FPFI) Example, 0, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_DBRecCount( ) | Acceso a la API de Visual FoxPro | Trabajar con registros | Registros | Trabajar con campos y registros


_DBReplace( ) (Rutina de biblioteca API)

_DBReplace( ) coloca un nuevo valor en un campo.

int _DBReplace(Locator FAR *fld, Value FAR *val) Locator FAR *fld;            /* Field to be replaced. */ Value FAR *val;            /* Value to be placed in field. */

Observaciones

_DBReplace( ) devuelve 0 si el reemplazo tiene éxito. Si el reemplazo falla, _DBReplace( ) devuelve un número negativo cuyo valor absoluto corresponde a un número de error de Visual FoxPro. _DBReplace( ) puede utilizarse sobre un campo memo para reemplazar su valor con un nuevo valor que tenga menos de 65.000 bytes. Para realizar operaciones sobre campos memo que sean mayores de 65.000 bytes, debe utilizar rutinas directas de campo memo y rutinas de E/S con almacenamiento en búfer.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo proporciona una funcionalidad similar a la del comando REPLACE de Visual FoxPro, pero reemplaza el valor de un solo registro a la vez.

Código Visual FoxPro

SET LIBRARY TO DBREPLAC
DO CreateTest
? DBREPLACE(@ABC, "Replacement record 1")
? DBREPLACE(@ABC, 2)  && returns -302 - field ABC is character field
PROCEDURE CreateTest
CREATE TABLE test (ABC C(20))
APPEND BLANK
REPLACE ABC WITH "This is record 1"
APPEND BLANK
REPLACE ABC WITH "This is record 2"
APPEND BLANK
REPLACE ABC WITH "This is record 3"
APPEND BLANK
REPLACE ABC WITH "This is record 4"
GO TOP
RETURN

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
_RetInt(_DBReplace(&parm->p[0].loc, &parm->p[1].val), 10);
}
FoxInfo myFoxInfo[] = {
{"DBREPLACE", (FPFI) Example, 2, "R,?"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_DBLock( ) (Rutina de biblioteca API) | _DBUnlock( ) (Rutina de biblioteca API) | REPLACE (Comando) | Acceso a la API de Visual FoxPro


_DBRewind( ) (Rutina de biblioteca API)

Trabaja como el comando GO TOP de Visual FoxPro en el área especificada y devuelve después el número del registro actual.

long _DBRewind(int workarea) int workarea;               /* Work area. */

Ejemplo

El siguiente ejemplo llama a _DBRewind( ) para la tabla abierta en el área de trabajo actual. Esta rutina tiene el mismo efecto que el comando GO TOP de Visual FoxPro.

Código Visual FoxPro

SET LIBRARY TO DBREWIND
DO CreateTest
GO BOTTOM
? RECNO()
? DBREWIND()    && returns 1
? RECNO()  && yes, we're at record 1
PROCEDURE CreateTest
CREATE TABLE test (ABC C(20))
APPEND BLANK
REPLACE ABC WITH "This is record 1"
APPEND BLANK
REPLACE ABC WITH "This is record 2"
APPEND BLANK
REPLACE ABC WITH "This is record 3"
APPEND BLANK
REPLACE ABC WITH "This is record 4"
GO TOP
RETURN

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
_RetInt(_DBRewind(-1), 10);
}
FoxInfo myFoxInfo[] = {
{"DBREWIND", (FPFI) Example, 0, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_DBSkip( ) (Rutina de biblioteca API) | _DBUnwind( ) (Rutina de biblioteca API) | GO | GOTO (Comando) | Acceso a la API de Visual FoxPro


_DBSeek( ) (Rutina de biblioteca API)

Busca en una tabla indizada del área de trabajo actual el primer registro cuya clave de índice coincida con el valor val.

long _DBSeek(Value FAR *val) Value FAR *val;            /* Sought value. */

Observaciones

Si _DBSeek( ) encuentra un registro coincidente, mueve el puntero de registro al registro coincidente y devuelve el número de registro. La coincidencia debe ser exacta a menos que SET EXACT esté establecido en OFF. Si _DBSeek( ) no encuentra un registro coincidente, devuelve 0. Si no hay coincidencia y SET NEAR está establecido en ON, el puntero de registro se coloca inmediatamente después del registro más similar. Si SET NEAR está establecido en OFF, el puntero de registro se coloca al final del archivo.

Si el registro coincidente es un registro almacenado en búfer agregado que no se ha confirmado, el valor devuelto por _DBSeek( ) será distinto del valor devuelto por RECNO( ). RECNO( ) devuelve un valor negativo que indica que el registro está almacenado en búfer. El valor devuelto por _DBSeek( ) es mayor que el número de registros de la tabla más el número de registros almacenados en búfer antes que el registro coincidente.

Si se produce un error, _DBSeek( ) devuelve un número entero negativo cuyo valor absoluto es un número de error de Visual FoxPro.

Cuando busca un campo numérico, val debe estar configurado como ev_type 'N', incluso si el campo no tiene dígitos decimales. Si val tiene un ev_type como 'I', _DBSeek( ) devolverá el error interno número -302, "No coinciden los tipos de datos".

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo proporciona una búsqueda sobre cualquier índice que controle el orden de una tabla abierta en el área de trabajo actual. Observe que es necesario "?" en la estructura FoxInfo debido a que el tipo de la expresión de índice se desconoce.

Código Visual FoxPro

SET LIBRARY TO DBSEEK
DO CreateTest
INDEX ON ABC TAG ABC
SET ORDER TO TAG ABC
= DBSEEK("This is record 3")  && seeks ABC = "This is record 3"
LIST NEXT 1
USE
PROCEDURE CreateTest
CREATE TABLE test (ABC C(20))
APPEND BLANK
REPLACE ABC WITH "This is record 1"
APPEND BLANK
REPLACE ABC WITH "This is record 2"
APPEND BLANK
REPLACE ABC WITH "This is record 3"
APPEND BLANK
REPLACE ABC WITH "This is record 4"
GO TOP
RETURN

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
_DBSeek(&parm->p[0].val);
}
FoxInfo myFoxInfo[] = {
{"DBSEEK", (FPFI) Example, 1, "?"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_DBRecCount( ) (Rutina de biblioteca API) | _DBRecNo( ) (Rutina de biblioteca API) | _DBSkip( ) (Rutina de biblioteca API) | SET EXACT (Comando)


_DBSkip( ) (Rutina de biblioteca API)

_DBSkip( ) mueve el puntero de registro del área de trabajo especificada un número de registros especificado.

long _DBSkip(int workarea, long distance) int workarea;               /* Work area. */ long distance;               /* Number of records to skip. */

Observaciones

_DBSkip( ) respeta las expresiones activas de índice y de filtro, al igual que el comando SKIP de Visual FoxPro. La distancia puede ser positiva o negativa. _DBSkip( ) devuelve el número del nuevo registro.

Utilice _DBStatus( ) para comprobar las condiciones de inicio y fin de archivo. Si trata de saltar más allá del final del archivo o saltar hacia atrás por delante del principio del archivo, _DBSkip( ) devuelve un número entero negativo cuyo valor absoluto corresponde a un número de error de Visual FoxPro.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo funciona igual que el comando SKIP de Visual FoxPro.

Código Visual FoxPro

SET LIBRARY TO DBSKIP
ON ERROR DO expectError
DO CreateTest
USE
= DBSKIP(1)       && _Error() called: no DBF in use
USE test
GO TOP
= DBSKIP(-1)
= DBSKIP(-1)      && _Error() called: at top of file
GO BOTT
= DBSKIP(1)
= DBSKIP(1)      && _Error() called: at bottom of file
ON ERROR
PROCEDURE expectError
? "ERROR: " + MESSAGE()
RETURN
PROCEDURE CreateTest
CREATE TABLE test (ABC C(20))
APPEND BLANK
REPLACE ABC WITH "This is record 1"
APPEND BLANK
REPLACE ABC WITH "This is record 2"
APPEND BLANK
REPLACE ABC WITH "This is record 3"
APPEND BLANK
REPLACE ABC WITH "This is record 4"
GO TOP
RETURN

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *pblk)
{
int RetCode;
if ((RetCode = _DBSkip(-1, pblk->p[0].val.ev_long)) < 0) {
_PutStr("\nError encountered in example program.");
_Error(-RetCode);  // _DBSkip() returns negative error code
}
_RetInt(RetCode, 10);
}
FoxInfo myFoxInfo[] = {
{"DBSKIP", (FPFI) Example, 1, "I"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_DBRecCount( ) (Rutina de biblioteca API) | _DBRecNo( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro | _DBStatus( ) (Rutina de biblioteca API)


_DBStatus( ) (Rutina de biblioteca API)

Devuelve indicadores de estado del área de trabajo especificada.

int _DBStatus(int workarea) int workarea;               /* Work area. */

Observaciones

Si no hay una tabla abierta en el área de trabajo especificada, _DBStatus( ) devuelve un número entero negativo cuyo valor absoluto corresponde a un número de error de Visual FoxPro. La siguiente tabla muestra los indicadores de estado que devuelve:

Indicador | Valor
DB_BOF | Se establece bajo las mismas condiciones que la función BOF( ) de Visual FoxPro.
DB_EOF | Se establece bajo las mismas condiciones que la función EOF( ) de Visual FoxPro.
DB_RLOCKED | Se establece cuando el registro actual está bloqueado, la tabla está bloqueada o está abierta de forma exclusiva.
DB_FLOCKED | Se establece cuando la tabla está bloqueada o está abierta de forma exclusiva.
DB_EXCLUSIVE | Se establece cuando la tabla está abierta de forma exclusiva.
DB_READONLY | Se establece cuando la tabla se abre sin acceso para escritura.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo muestra el estado de la tabla abierta en el área de trabajo actual. Comprueba cada bit en el valor devuelto por _DBStatus( ) y muestra un mensaje apropiado en pantalla.

Código Visual FoxPro

SET LIBRARY TO DBSTATUS
= DBSTATUS()  && displays status of DBF in current work area

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
int dbstatus = _DBStatus(-1);
_PutStr("\nStatus of DBF in current work area:");
if (dbstatus & DB_BOF)
_PutStr("\nBOF()");
if (dbstatus & DB_EOF)
_PutStr("\nEOF()");
if (dbstatus & DB_RLOCKED)
_PutStr("\nCurrent record is RLOCKed");
if (dbstatus & DB_FLOCKED)
_PutStr("\nDatabase is FLOCKed");
if (dbstatus & DB_EXCLUSIVE)
_PutStr("\nDatabase is open EXCLUSIVEly");
if (dbstatus & DB_READONLY)
_PutStr("\nDatabase is READONLY");
}
FoxInfo myFoxInfo[] = {
{"DBSTATUS", (FPFI) Example, 0, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_DBLock( ) (Rutina de biblioteca API) | _DBUnlock( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro | BOF( ) (Función) | EOF( ) (Función) | ISRLOCKED( ) (Función) | ISFLOCKED( ) (Función) | ISEXCLUSIVE( ) (Función) | ISREADONLY( ) (Función)


_DBUnlock( ) (Rutina de biblioteca API)

Libera todos los bloqueos obtenidos por el usuario sobre registros o sobre el archivo del área de trabajo especificada por workarea.

void _DBUnlock(int workarea) int workarea;               /* Work area. */

Ejemplo

En el siguiente ejemplo se utiliza _DBUnlock( ) para desbloquear todos los registros de la tabla abierta en el área de trabajo actual. El código Visual FoxPro muestra el uso de _DBUnlock( ) y comprueba que está trabajando de forma apropiada.

Código Visual FoxPro

SET LIBRARY TO DBUNLOCK
DO CreateTest
USE Test SHARED
GO 2
= XRLOCK()
LIST STAT  && shows that record #2 is locked
= XUNLOCK()
LIST STAT  && shows no records are locked
= XFLOCK()
LIST STAT  && shows that whole DBF is locked
= XUNLOCK()
LIST STAT  && shows no records are locked
PROCEDURE CreateTest
CREATE TABLE test (ABC C(20))
APPEND BLANK
REPLACE ABC WITH "Golly month of"
APPEND BLANK
REPLACE ABC WITH "A twelfth of"
APPEND BLANK
REPLACE ABC WITH "Hello, world"
APPEND BLANK
REPLACE ABC WITH "When in the"
GO TOP
RETURN

Código C

#include <pro_ext.h>
FAR xLockRecord(ParamBlk FAR *parm)
{
_DBLock(-1, DBL_RECORD);
}
FAR xLockFile(ParamBlk FAR *parm)
{
_DBLock(-1, DBL_FILE);
}
FAR xUnLockFile(ParamBlk FAR *parm)
{
_DBUnLock(-1);
}
FoxInfo myFoxInfo[] = {
{"XRLOCK",  (FPFI) xLockRecord, 0, ""},
{"XFLOCK",  (FPFI) xLockFile, 0, ""},
{"XUNLOCK", (FPFI) xUnLockFile, 0, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_DBAppend( ) (Rutina de biblioteca API) | _DBLock( ) (Rutina de biblioteca API) | _DBReplace( ) (Rutina de biblioteca API) | _DBStatus( ) (Rutina de biblioteca API) | _DBWrite( ) (Rutina de biblioteca API)


_DBUnwind( ) (Rutina de biblioteca API)

Trabaja como el comando GO BOTTOM de Visual FoxPro en el área de trabajo especificada y devuelve el número del registro actual.

long _DBUnwind(int workarea) int workarea;               /* Work area. */

Ejemplo

El siguiente ejemplo llama a _DBUnwind( ) para la tabla abierta en el área de trabajo actual.

Código Visual FoxPro

SET LIBRARY TO DBUNWIND
DO CreateTest
? DBUNWIND()   && returns new record #
SKIP
? EOF()       && now EOF() returns .T.
PROCEDURE CreateTest
CREATE TABLE test (ABC C(20))
APPEND BLANK
REPLACE ABC WITH "This is record 1"
APPEND BLANK
REPLACE ABC WITH "This is record 2"
APPEND BLANK
REPLACE ABC WITH "This is record 3"
APPEND BLANK
REPLACE ABC WITH "This is record 4"
GO TOP
RETURN

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
_RetInt(_DBUnwind(-1), 10);
}
FoxInfo myFoxInfo[] = {
{"DBUNWIND", (FPFI) Example, 0, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_DBRewind( ) (Rutina de biblioteca API) | _DBWrite( ) (Rutina de biblioteca API) | Trabajar con campos y registros | Registros


_DBWrite( ) (Rutina de biblioteca API)

Escribe en disco el registro actual en el área de trabajo especificada y actualiza todos los índices afectados.

int _DBWrite(int workarea) int workarea;               /* Work area. */

Observaciones

Cada vez que el puntero de registro se mueve a otro registro, esta actualización ocurre automáticamente. Si no se han reemplazado campos de datos, _DBWrite( ) no tiene efecto. _DBWrite( ) devuelve 0 si la rutina tiene éxito. Si la rutina falla, _DBWrite( ) devuelve un número entero negativo cuyo valor absoluto corresponde a un número de error de Visual FoxPro.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo lleva a cabo un _DBReplace( ) mediante los dos parámetros de llamada, un campo de tabla transferido por referencia y un valor del tipo adecuado. El ejemplo ejecuta un comando LIST NEXT 1 de Visual FoxPro antes y después de una llamada a _DBWrite( ).

Código Visual FoxPro

SET LIBRARY TO DBWRITE
DO CreateTest
GO 3
=DBWRITE( @ABC, "Replacement Record 1")
PROCEDURE CreateTest
CREATE TABLE test (ABC C(20))
APPEND BLANK
REPLACE ABC WITH "This is record 1"
APPEND BLANK
REPLACE ABC WITH "This is record 2"
APPEND BLANK
REPLACE ABC WITH "This is record 3"
APPEND BLANK
REPLACE ABC WITH "This is record 4"
GO TOP
RETURN

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
int RetValue;
if (RetValue = _DBReplace(&parm->p[0].loc, &parm->p[1].val)) {
_UserError("\n_DBReplace() failed");
}
if (RetValue = _DBWrite(-1)) {
_Error(-RetValue);
}
_Execute("LIST NEXT 1");
}
FoxInfo myFoxInfo[] = {
{"DBWRITE", (FPFI) Example, 2, "R,?"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_DBLock( ) (Rutina de biblioteca API) | _DBReplace( ) (Rutina de biblioteca API) | _DBUnlock( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_DeActivateHandler( ) (Rutina de biblioteca API)

_DeActivateHandler( ) quita el controlador de eventos especificado de la lista de procesadores de eventos.

void _DeActivateHandler(unsigned int EventIdentifier) unsigned int EventIdentifier;      /* ID of event handler to be removed from list. */

Observaciones

Es necesario quitar todos los controladores de eventos, indicados por EventIdentifier, de la lista de controladores cuando la biblioteca se descarga.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente activa un controlador de eventos cuando se carga la biblioteca. El controlador de eventos imprime un mensaje para cada evento y permite a Visual FoxPro procesar el mensaje. El controlador de eventos se desactiva cuando se descarga la biblioteca. Como ocurre en el siguiente ejemplo, _DeActivateHandler( ) se suele llamar desde una función CALLONUNLOAD.

Código Visual FoxPro

SET LIBRARY TO DEACTHAN

Código C

#include <pro_ext.h>
static int HandlerID;
//   This is the routine that is registered as an event handler.
FAR EventHandler(WHandle theWindow, EventRec FAR *ev)
{
_PutStr("\nEventHandler() called.");
return NO;   // event still needs to be handled by Visual FoxPro
}
FAR Activate()
{
HandlerID = _ActivateHandler(EventHandler);
}
//   When the library is unloaded we must deactivate the event handler
//   in a CALLONUNLOAD function.
FAR DeActivate()
{
_DeActivateHandler(HandlerID);
}
FoxInfo myFoxInfo[] = {
{"ACTIVATE",  (FPFI) Activate, CALLONLOAD, ""},
{"DEACTIVATE", (FPFI)  DeActivate, CALLONUNLOAD, ""}
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_ActivateHandler( ) (Rutina de biblioteca API) | _FindWindow( ) (Rutina de biblioteca API) | _GlobalToLocal( ) (Rutina de biblioteca API) | _MousePos( ) (Rutina de biblioteca API)


_DeActivateIdle( ) (Rutina de biblioteca API)

Quita la rutina especificada del bucle inactivo.

void _DeActivateIdle(unsigned int IdleIdentifier) unsigned int IdleIdentifier;         /* Routine to be removed from idle list. */

Observaciones

Es necesario quitar todas las rutinas inactivas de la lista al descargar la biblioteca correspondiente.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo activa un controlador de eventos inactivo cuando se carga la biblioteca. El controlador de eventos inactivo se limita a imprimir un mensaje y se desactiva cuando se descarga la biblioteca. Como ocurre en el siguiente ejemplo, _DeActivateIdle( ) se suele llamar desde una función CALLONUNLOAD.

Código Visual FoxPro

SET LIBRARY TO DEACTIDL

Código C

#include <pro_ext.h>
static unsigned IdlerID;
//   This is the routine that is registered as an idle event handler.
void FAR IdleHandler(WHandle wh, EventRec *ev)
{
_PutStr("\nIdleHandler() called.");
}
void FAR Activate(ParamBlk FAR *parm)
{
IdlerID = _ActivateIdle((FPFI) IdleHandler);
}
//   When the library is unloaded we must deactivate the idle event
//   handler in a CALLONUNLOAD function.
void FAR DeActivate(ParamBlk FAR *parm)
{
_DeActivateIdle(IdlerID);
}
FoxInfo myFoxInfo[] = {
{"ACTIVATE",  (FPFI) Activate, CALLONLOAD,   ""},
{"DEACTIVATE",  (FPFI) DeActivate, CALLONUNLOAD, ""}
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_ActivateIdle( ) (Rutina de biblioteca API) | _FindWindow( ) (Rutina de biblioteca API) | _GlobalToLocal( ) (Rutina de biblioteca API) | _MousePos( ) (Rutina de biblioteca API)


_DeActivateMenu( ) (Rutina de biblioteca API)

Quita un menú de la pantalla.

void _DeActivateMenu(MENUID menuid) MENUID menuid;            /* Menu identifier. */

Observaciones

El menú no se libera de la memoria y se puede reactivar mediante _ActivateMenu( ).

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo activa y desactiva un menú varias veces.

Código Visual FoxPro

SET LIBRARY TO DEACTMEN

Código C

#include <pro_ext.h>
FAR DeActMenuEx(ParamBlk FAR *parm)
{
MENUID menuId;
ITEMID itemId;
Point loc;
menuId = _GetNewMenuId();
_NewMenu(MPOPUP, menuId);
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<1st item");
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<2nd item");
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<3rd item");
loc.v = 10; loc.h = 20;
_SetMenuPoint(menuId, loc);
_ActivateMenu(menuId);
_Execute("WAIT WINDOW 'Menu activated'");
_DeActivateMenu(menuId);
_Execute("WAIT WINDOW 'Menu deactivated'");
_ActivateMenu(menuId);
_Execute("WAIT WINDOW 'Menu activated'");
_DeActivateMenu(menuId);
_Execute("WAIT WINDOW 'Menu deactivated'");
_DisposeMenu(menuId);
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) DeActMenuEx, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_ActivateMenu( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro | DEACTIVATE MENU (Comando) | ACTIVATE MENU (Comando) | HIDE MENU (Comando)


_DefaultProcess( ) (Rutina de biblioteca API)

Proporciona el procesamiento de evento predeterminado para un evento devuelto por _GetNextEvent( ) cuando el evento no requiere un control especial.

void _DefaultProcess(EventRec FAR *event) EventRec FAR *event;      /* Event to be processed. */

Observaciones

Esto permite que una rutina externa utilice ventanas y, aún así, haga que actúen de forma coherente con el resto del producto.

Nota No llame a _DefaultProcess( ) desde un controlador de eventos.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente es un bucle que consiste en una llamada a _GetNextEvent( ) seguida de una llamada a _DefaultProcess( ). Todos los eventos realizados durante este procedimiento reciben su procesamiento predeterminado.

Código Visual FoxPro

SET LIBRARY TO DEFAPROC

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
EventRec ev;
int i;
for (i = 0; i < 16; i++)
{
_GetNextEvent(&ev);
_DefaultProcess(&ev);
}
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", Example, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_FindWindow( ) (Rutina de biblioteca API) | _GetNextEvent( ) (Rutina de biblioteca API) | _GlobalToLocal( ) (Rutina de biblioteca API) | Eventos de Visual FoxPro | Acceso a la API de Visual FoxPro


_Dialog( ) (Rutina de biblioteca API)

Muestra en pantalla un cuadro de diálogo con el esquema de colores, y el texto de cuerpo y de botón especificados.

int _Dialog(int scheme, char FAR *body_text, char FAR *button1, char FAR *button2, char FAR *button3, int default, int
 escape) int scheme;                  /* Color scheme number. */ char FAR *body_text;         /* Text in dialog. */ char FAR *button1;         /* Button prompt. */ char FAR *button2;         /* Button prompt. */ char FAR *button3;         /* Button prompt. */ int default;                  /* Number of the default button. */ int escape;                  /* Number of the button to press if Esc. */

Observaciones

_Dialog( ) devuelve el número del botón que el usuario elige.

Si desea especificar menos de tres botones para el cuadro de diálogo mostrado, especifique 0 como el texto del botón para dejar en blanco cualquiera de los tres botones. El parámetro default especifica el botón que se resaltará en el cuadro de diálogo como el botón predeterminado y el parámetro escape especifica el botón que se procesará como elegido si el usuario presiona ESC.

Si no especifica ningún botón, Visual FoxPro presenta el cuadro de diálogo y espera a que el usuario presione una tecla o haga clic en el botón primario del ratón. Si el usuario presiona ESC, _Dialog( ) devuelve el valor de escape; de lo contrario, devuelve el valor predeterminado.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo crea cuatro cuadros de diálogo con tres, dos, uno y ningún botón.

Código Visual FoxPro

SET LIBRARY TO DIALOG

Código C

#include <pro_ext.h>
void putLong(long n)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = 10;
_PutValue(&val);
}
void FAR dialogEx(ParamBlk FAR *parm)
{
int selection;
selection = _Dialog(DIALOG_SCHEME, "Example dialog with 3 buttons.",
"First", "Second", "Third", 2, 3);
_PutStr("\nItem selected ="); putLong(selection);
selection = _Dialog(DIALOG_SCHEME, "Example dialog with 2 buttons.",
"First", "Second", 0, 2, 2);
_PutStr("\nItem selected ="); putLong(selection);
selection = _Dialog(DIALOG_SCHEME, "Example dialog with 1 button.",
"First", (char *)0, (char *)0, 1, 1);
_PutStr("\nItem selected ="); putLong(selection);
selection = _Dialog(DIALOG_SCHEME, "Example dialog no buttons.",
(char *)0, (char *)0, (char *)0, 1, 2);
_PutStr("\nItem selected ="); putLong(selection);
}
FoxInfo myFoxInfo[] = {
{"DIALOGEX", (FPFI) dialogEx, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

Acceso a la API de Visual FoxPro | SET LIBRARY (Comando)


_DisposeItem( ) (Rutina de biblioteca API)

Libera de la memoria el elemento de menú especificado y libera también todo el almacenamiento en memoria asociado con este elemento.

void _DisposeItem(MENUID menuid, ITEMID itemid) MENUID menuid;            /* Menu identifier. */ ITEMID itemid;            /* Menu item identifier. */

Observaciones

_DisposeItem( ) no libera ningún submenú que esté asociado al elemento.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo crea un menú con tres elementos y, luego, utiliza _DisposeItem( ) para quitar dos de estos elementos.

Código Visual FoxPro

SET LIBRARY TO DISPITEM

Código C

#include <pro_ext.h>
FAR DisposeItemEx(ParamBlk FAR *parm)
{
MENUID menuId;
ITEMID itemId;
Point loc;
menuId = _GetNewMenuId();
_NewMenu(MPOPUP, menuId);
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<1st item");
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<2nd item");
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<3rd item");
loc.v = 10; loc.h = 20;
_SetMenuPoint(menuId, loc);
_ActivateMenu(menuId);
_Execute("WAIT WINDOW 'Menu has three items'");
_DisposeItem(menuId, _GetItemId(menuId, 1));
_Execute("WAIT WINDOW 'Menu has two items'");
_DisposeItem(menuId, _GetItemId(menuId, 0));
_Execute("WAIT WINDOW 'Menu has one item'");
_DisposeMenu(menuId);
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) DisposeItemEx, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_NewItem( ) (Rutina de biblioteca API) | _GetItemId( ) (Rutina de biblioteca API) | Habilitar y deshabilitar elementos de menú | Crear menús, menús contextuales, elementos de menú y submenús


_DisposeMenu( ) (Rutina de biblioteca API)

Libera el menú especificado y todos sus elementos, y también libera toda la memoria asociada con este menú.

void _DisposeMenu(MENUID menuid) MENUID menuid;            /* Menu identifier. */

Observaciones

_DisposeMenu( ) no libera ningún submenú asociado con el menú.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo llama a _DisposeMenu( ) después de que el usuario elija un elemento de menú.

Código Visual FoxPro

SET LIBRARY TO DISPMENU

Código C

#include <pro_ext.h>
void putLong(long n)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = 10;
_PutValue(&val);
}
FAR onSelection(long menuId, long itemId)
{
_PutStr("\nitemId = "); putLong(itemId);
_DisposeMenu(menuId);
}
FAR activateMenu(ParamBlk FAR *parm)
{
MENUID menuId;
ITEMID itemId;
Point loc;
menuId = _GetNewMenuId();
_NewMenu(MPOPUP, menuId);
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<1st item");
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<2nd item");
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<3rd item");
loc.v = 10; loc.h = 20;
_SetMenuPoint(menuId, loc);
_ActivateMenu(menuId);
_OnSelection(menuId, -1, onSelection);
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) activateMenu, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_GetNewMenuId( ) (Rutina de biblioteca API) | _GetNewMenuId( ) (Rutina de biblioteca API) | _NewMenu( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_EdActive( ) (Rutina de biblioteca API)

Permite ocultar (desactivar) o mostrar (activar) el intervalo de selección o la posición del punto de inserción en la ventana especificada.

void _EdActive(WHANDLE wh, int Show) WHANDLE wh;            /* Handle of editing window.*/ int Show;                     /* Boolean hide or show selection. */

Observaciones

Al especificar el parámetro Show como TRUE (verdadero), se muestra el intervalo de selección o la posición del punto de inserción y, al especificar Show como FALSE (falso), se oculta el intervalo de selección o la posición del punto de inserción.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo abre una ventana de edición para un archivo cuyo nombre se transfiere como parámetro y selecciona el primer carácter del archivo. Mediante _EdActive( ), el ejemplo activa y, posteriormente, desactiva la selección.

Código Visual FoxPro

SET LIBRARY TO EDACTIVE
fc = FCREATE("x", 0)
FOR i = 1 TO 90
= FPUTS(fc, REPL(ALLT(STR(i)), i), i)
ENDFOR
= FCLOSE(fc)
= EDACTIVE("x")   && Call our API routine

Código C

#include <pro_ext.h>
FAR EdActiveEx(ParamBlk FAR *parm)
{
#define pFILENAME ((char FAR *) _HandToPtr(parm->p[0].val.ev_handle))
WHANDLE wh;
if (!_SetHandSize(parm->p[0].val.ev_handle,
parm->p[0].val.ev_length+1))
{
_Error(182); // "Insufficient memory"
}
_HLock(parm->p[0].val.ev_handle);
pFILENAME[parm->p[0].val.ev_length] = '\0';
wh = _EdOpenFile(pFILENAME, FO_READONLY);
_HUnLock(parm->p[0].val.ev_handle);
_EdSelect(wh, 0, 1);
_EdActive(wh, TRUE);
_Execute("WAIT WINDOW 'Selection active'");
_EdActive(wh, FALSE);
_Execute("WAIT WINDOW 'Selection inactive'");
}
FoxInfo myFoxInfo[] = {
{"EDACTIVE", (FPFI) EdActiveEx, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_EdSelect( ) (Rutina de biblioteca API) | _EdCloseFile( ) (Rutina de biblioteca API) | SYS(2002) - Activar o desactivar el punto de inserción _EdCopy( ) (Rutina de biblioteca API)


_EdCloseFile( ) (Rutina de biblioteca API)

Cierra la ventana de edición especificada y la vista de archivo en esta ventana.

int _EdCloseFile(WHANDLE wh, int option) WHANDLE wh;            /* Handle of editing window. */ int option;                  /* Closing options. */

Observaciones

El parámetro option puede tener uno de los valores siguientes:

Valores del parámetro option

int | resultado
0 | Guardar inmediatamente.
1 | Guardar tras confirmar en el cuadro de diálogo.
2 | Abrir el cuadro de diálogo Guardar como.

_EdCloseFile( ) devuelve uno de los siguientes valores:

Valores de retorno de _EdCloseFile( )

int | significado
1 | Cancela sin guardar el archivo.
0 | Guarda y cierra el archivo.
– 1 | Descarta los cambios y cierra el archivo.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo abre para su edición un solo archivo especificado por un parámetro, elimina un carácter y cierra la sesión de edición tres veces. La primera vez, la rutina llama a _EdCloseFile( ) con la opción "Guardar inmediatamente", la segunda vez utiliza la opción "Guardar tras confirmar en el cuadro de diálogo" y la tercera vez utiliza la opción "Abrir el cuadro de diálogo Guardar como". Cada una de las veces, la rutina muestra el valor de retorno de _EdCloseFile( ).

Código Visual FoxPro

SET LIBRARY TO EDCLOSE
= EDCLOSE("x")

Código C

#include <pro_ext.h>
void putLong(long n)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = 5;
_PutValue(&val);
}
FAR Example(ParamBlk FAR *parm)
{
#define pFILENAME ((char FAR *) _HandToPtr(parm->p[0].val.ev_handle))
WHANDLE wh;
int retValue;
if (!_SetHandSize(parm->p[0].val.ev_handle,
parm->p[0].val.ev_length+1))
{
_Error(182); // "Insufficient memory"
}
_HLock(parm->p[0].val.ev_handle);
pFILENAME[parm->p[0].val.ev_length] = '\0';
// Open, delete a character, close "save without asking"
wh = _EdOpenFile(pFILENAME, FO_READWRITE);
_HUnLock(parm->p[0].val.ev_handle);
_EdSelect(wh, 0, 1);
_EdDelete(wh);
retValue = _EdCloseFile(wh, 0); // save without asking
_PutStr("\n_EdCloseFile() ="); putLong(retValue);
// Open, delete a character, close "save with asking"
_HLock(parm->p[0].val.ev_handle);
wh = _EdOpenFile(pFILENAME, FO_READWRITE);
_HUnLock(parm->p[0].val.ev_handle);
_EdSelect(wh, 0, 1);
_EdDelete(wh);
retValue = _EdCloseFile(wh, 1); // save with asking
_PutStr("\n_EdCloseFile() ="); putLong(retValue);
// Open, delete a character, close "save as"
_HLock(parm->p[0].val.ev_handle);
wh = _EdOpenFile(pFILENAME, FO_READWRITE);
_HUnLock(parm->p[0].val.ev_handle);
_EdSelect(wh, 0, 1);
_EdDelete(wh);
retValue = _EdCloseFile(wh, 2); // save as
_PutStr("\n_EdCloseFile() ="); putLong(retValue);
}
FoxInfo myFoxInfo[] = {
{"EDCLOSE", (FPFI) Example, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_EdOpenFile( ) (Rutina de biblioteca API) | _EdRevert( ) (Rutina de biblioteca API) | _EdSave( ) (Rutina de biblioteca API) | _EdSelect( ) (Rutina de biblioteca API)


_EdCopy( ) (Rutina de biblioteca API)

Copia al Portapapeles la parte seleccionada del archivo en la ventana de edición especificada.

void _EdCopy(WHANDLE wh) WHANDLE wh;            /* Handle of editing window. */

Ejemplo

El siguiente ejemplo abre para su modificación un archivo especificado por un parámetro, copia el primer carácter del Portapapeles mediante _EdCopy( ) y lo pega después del segundo carácter mediante _EdPaste( ).

Código Visual FoxPro

SET LIBRARY TO EDCOPY
= EDCOPY("x")

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
#define pFILENAME ((char FAR *) _HandToPtr(parm->p[0].val.ev_handle))
WHANDLE wh;
if (!_SetHandSize(parm->p[0].val.ev_handle,
parm->p[0].val.ev_length+1))
{
_Error(182); // "Insufficient memory"
}
pFILENAME[parm->p[0].val.ev_length] = '\0';
_HLock(parm->p[0].val.ev_handle);
wh = _EdOpenFile(pFILENAME, FO_READWRITE);
_HUnLock(parm->p[0].val.ev_handle);
_EdSelect(wh, 0, 1);
_EdCopy(wh);
_EdSetPos(wh, 2);
_EdPaste(wh);
}
FoxInfo myFoxInfo[] = {
{"EDCOPY", (FPFI) Example, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_EdGetPos( ) (Rutina de biblioteca API) | _EdPaste( ) (Rutina de biblioteca API) | _EdSelect( ) (Rutina de biblioteca API) | _EdSetPos( ) | _EdCloseFile( ) (Rutina de biblioteca API)


_EdCut( ) (Rutina de biblioteca API)

Copia al Portapapeles la parte seleccionada del archivo en la ventana de edición especificada y la elimina de la ventana especificada.

void _EdCut(WHANDLE wh) WHANDLE wh;            /* Handle of editing window. */

Ejemplo

El siguiente ejemplo abre para su modificación un archivo especificado por un parámetro, corta el primer carácter del Portapapeles mediante _EdCut( ) y lo pega después del segundo carácter mediante _EdPaste( ).

Código Visual FoxPro

SET LIBRARY TO EDCUT
= EDCUT("x")

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
#define pFILENAME ((char FAR *) _HandToPtr(parm->p[0].val.ev_handle))
WHANDLE wh;
if (!_SetHandSize(parm->p[0].val.ev_handle,
parm->p[0].val.ev_length+1))
{
_Error(182); // "Insufficient memory"
}
pFILENAME[parm->p[0].val.ev_length] = '\0';
_HLock(parm->p[0].val.ev_handle);
wh = _EdOpenFile(pFILENAME, FO_READWRITE);
_HUnLock(parm->p[0].val.ev_handle);
_EdSelect(wh, 0, 1);
_EdCut(wh);
_EdSetPos(wh, 2);
_EdPaste(wh);
}
FoxInfo myFoxInfo[] = {
{"EDCUT", (FPFI) Example, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_EdGetPos( ) (Rutina de biblioteca API) |_EdPaste( ) (Rutina de biblioteca API) | _EdSelect( ) (Rutina de biblioteca API) | _EdSetPos( ) (Rutina de biblioteca API)


_EdDelete( ) (Rutina de biblioteca API)

Elimina la parte seleccionada del archivo en la ventana de edición especificada.

void _EdDelete(WHANDLE wh) WHANDLE wh;            /* Handle of editing window. */

Observaciones

Si no hay nada seleccionado, _EdDelete( ) elimina el carácter situado en la posición actual del punto de inserción.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo abre para su modificación un archivo especificado por un parámetro y elimina el primer carácter del archivo mediante _EdDelete( ).

Código Visual FoxPro

SET LIBRARY TO EDDELETE
= EDDELETE("x")

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
#define pFILENAME ((char FAR *) _HandToPtr(parm->p[0].val.ev_handle))
WHANDLE wh;
int retValue;
if (!_SetHandSize(parm->p[0].val.ev_handle,
parm->p[0].val.ev_length+1))
{
_Error(182); // "Insufficient memory"
}
pFILENAME[parm->p[0].val.ev_length] = '\0';
_HLock(parm->p[0].val.ev_handle);
wh = _EdOpenFile(pFILENAME, FO_READWRITE);
_HUnLock(parm->p[0].val.ev_handle);
_EdSelect(wh, 0, 1);
_EdDelete(wh);
}
FoxInfo myFoxInfo[] = {
{"EDDELETE", (FPFI) Example, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_EdGetPos( ) (Rutina de biblioteca API) | _EdSelect( ) (Rutina de biblioteca API) | _EdSetPos( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_EdGetChar( ) (Rutina de biblioteca API)

_EdGetChar( ) devuelve el carácter situado en la posición de desplazamiento especificada del archivo mostrado en la ventana de edición indicada.

TEXT _EdGetChar(WHANDLE wh, EDPOS thePos)
WHANDLE wh;         /* Handle of editing window. */ EDPOS thePos;            /* Offset position in file of character to be returned. */

Ejemplo

El siguiente ejemplo abre para su modificación un archivo especificado por un parámetro y muestra en pantalla todo el contenido del archivo.

Código Visual FoxPro

SET LIBRARY TO EDGETCHA
= EDGETCHAR("x")

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
#define pFILENAME ((char FAR *) _HandToPtr(parm->p[0].val.ev_handle))
WHANDLE wh;
EDENV EdEnv;
EDPOS edpos;
if (!_SetHandSize(parm->p[0].val.ev_handle,
parm->p[0].val.ev_length+1))
{
_Error(182); // "Insufficient memory"
}
_HLock(parm->p[0].val.ev_handle);
pFILENAME[parm->p[0].val.ev_length] = '\0';
wh = _EdOpenFile(pFILENAME, FO_READONLY);
_HUnLock(parm->p[0].val.ev_handle);
_EdGetEnv(wh, &EdEnv);
for (edpos = 0; edpos <= EdEnv.length; edpos++)
{
_PutChr(_EdGetChar(wh, edpos));
}
}
FoxInfo myFoxInfo[] = {
{"EDGETCHAR", (FPFI) Example, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_EdGetPos( ) (Rutina de biblioteca API) | _EdSetPos( ) (Rutina de biblioteca API) | _EdGetStr( ) (Rutina de biblioteca API) | _EdGetEnv( ) (Rutina de biblioteca API)


_EdGetEnv( ) (Rutina de biblioteca API)

_EdGetEnv( ) proporciona la información de entorno del editor en *EDENV.

int _EdGetEnv(WHANDLE wh, *EDENV theEdEnv) WHANDLE wh;            /* Handle of editing window. */ *EDENV theEdEnv;         /* Environment settings. */

Observaciones

La estructura correspondiente a *EDENV se indica a continuación.

Nota En los observaciones siguientes, una (R) indica que este miembro es de sólo lectura y no se puede establecer mediante _EdSetEnv( ). Una (B) indica que este miembro toma uno de los dos siguientes valores booleanos: 1 (verdadero) o 0 (falso).
typedef struct { char            filename[MAXFILENAME];   // (R) EDPOS         length;         // # of bytes in text. (R) unsigned short   lenLimit;         // Max allowable length. 0 = infinite.  unsigned short   dirty,            // Has the file been changed? (R, B) autoIndent,      // Auto indent? (B) backup,         // Make backup files? (B) addLineFeeds,   // Add line feeds when saving? (B) autoCompile,      // Shall we auto compile this thing? (B) addCtrlZ,         // Add end of file ctrl-z? (B) savePrefs,      // Save edit preferences? (B) dragAndDrop,   // Allow drag-and-drop. (B) readOnly,         // 0 = not r/o, 1 = file is r/o, // 2 = file is r/w, opened r/o, // 3 = file is r/o, opened r/o. (R) status,            // Display status bar? (B) lockPrefs,         // Can update the preferences ? (B) insertMode;      // (B)  short            wrap;            // If < 0, new line at Return only. EDPOS         selStart;         // Selection start. (R) EDPOS         selEnd;         // Selection end. (R) EDPOS         selAnchor;      // Selection anchor point. (R) short            justMode;      // Justification (0 = left, 1 = right, 2 = center). short            tabWidth;      // TAB size in spaces.  char            fontName[MAXFONTNAME]; short            fontSize; short            fontStyle;      // 0 = plain, 1 = bold, 2 = italic, 3 = bold italic. short            kind;         // Kind of editor session (R); // EDCOMMAND, EDPROGRAM, etc. } EDENV;

Devuelve 1 si se llama en una sesión de comandos o del editor. De lo contrario, devuelve 0.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo abre una sesión de edición para un archivo especificado por un parámetro y muestra cada campo de la estructura EDENV para el archivo tal como lo devuelve _EdGetEnv( ).

Código Visual FoxPro

SET LIBRARY TO EDGETENV
= EDGETENV("x")

Código C

#include <pro_ext.h>
void putLong(unsigned long n)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = 6;
_PutValue(&val);
}
FAR Example(ParamBlk FAR *parm)
{
#define pFILENAME ((char FAR *) _HandToPtr(parm->p[0].val.ev_handle))
WHANDLE wh;
EDENV EdEnv;
EDPOS edpos;
if (!_SetHandSize(parm->p[0].val.ev_handle,
parm->p[0].val.ev_length+1))
{
_Error(182); // "Insufficient memory"
}
pFILENAME[parm->p[0].val.ev_length] = '\0';
_HLock(parm->p[0].val.ev_handle);
wh = _EdOpenFile(pFILENAME, FO_READONLY);
_HUnLock(parm->p[0].val.ev_handle);
_EdGetEnv(wh, &EdEnv);
_PutStr("\nfilename: ");    _PutStr(EdEnv.filename);
_PutStr("\nlength: ");    putLong(EdEnv.length);
_PutStr("\nlenLimit: ");    putLong(EdEnv.lenLimit);
_PutStr("\ndirty: ");     putLong(EdEnv.dirty);
_PutStr("\nautoIndent: ");  putLong(EdEnv.autoIndent);
_PutStr("\nbackup: ");    putLong(EdEnv.backup);
_PutStr("\naddLineFeeds: ");  putLong(EdEnv.addLineFeeds);
_PutStr("\nautoCompile: ");   putLong(EdEnv.autoCompile);
_PutStr("\naddCtrlZ: ");    putLong(EdEnv.addCtrlZ);
_PutStr("\nsavePrefs: ");   putLong(EdEnv.savePrefs);
_PutStr("\ndragAndDrop: ");   putLong(EdEnv.dragAndDrop);
_PutStr("\nreadOnly: ");    putLong(EdEnv.readOnly);
_PutStr("\nstatus: ");    putLong(EdEnv.status);
_PutStr("\nlockPrefs: ");   putLong(EdEnv.lockPrefs);
_PutStr("\ninsertMode: ");  putLong(EdEnv.insertMode);
_PutStr("\nwrap: ");    putLong(EdEnv.wrap);
_PutStr("\nselStart: ");    putLong(EdEnv.selStart);
_PutStr("\nselEnd: ");    putLong(EdEnv.selEnd);
_PutStr("\nselAnchor: ");   putLong(EdEnv.selAnchor);
_PutStr("\njustMode: ");    putLong(EdEnv.justMode);
_PutStr("\ntabWidth: ");    putLong(EdEnv.tabWidth);
_PutStr("\nfontName: ");    _PutStr(EdEnv.fontName);
_PutStr("\nfontSize: ");    putLong(EdEnv.fontSize);
_PutStr("\nfontStyle: ");   putLong(EdEnv.fontStyle);
_PutStr("\nkind: ");    putLong(EdEnv.kind);
}
FoxInfo myFoxInfo[] = {
{"EDGETENV", (FPFI) Example, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_EdLastError( ) | _EdSetEnv( ) | _EdGetLineNum( ) (Rutina de biblioteca API) | _EdGetChar( ) (Rutina de biblioteca API)


_EdGetLineNum( ) (Rutina de biblioteca API)

Devuelve el número de línea de la posición de desplazamiento transferida thePos en el archivo de la ventana de edición especificada.

EDLINE _EdGetLineNum(WHANDLE wh, EDPOS thePos) WHANDLE wh;            /* Handle of editing window. */ EDPOS thePos;               /* Offset position in the file. */

Ejemplo

El siguiente ejemplo abre una sesión de edición para un archivo especificado por un parámetro y obtiene la EDPOS para la línea 12 mediante una llamada a _EdGetLinePos( ). A continuación, llama a _EdGetLineNum( ) sobre esta EDPOS, lo que devuelve 12. Posteriormente, aumenta EDPOS y continúa llamando a _EdGetLineNum( ) hasta que cambia la EDLINE devuelta. En este momento, llama a _EdGetLinePos( ) para la línea 13.

Código Visual FoxPro

SET LIBRARY TO EDGETLIN
= EDGETLPOS("x")

Código C

#include <pro_ext.h>
void putLong(unsigned long n)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = 6;
_PutValue(&val);
}
FAR Example(ParamBlk FAR *parm)
{
#define pFILENAME ((char FAR *) _HandToPtr(parm->p[0].val.ev_handle))
WHANDLE wh;
EDENV EdEnv;
EDPOS edpos;
EDLINE edlin, original;
if (!_SetHandSize(parm->p[0].val.ev_handle,
parm->p[0].val.ev_length+1))
{
_Error(182); // "Insufficient memory"
}
pFILENAME[parm->p[0].val.ev_length] = '\0';
_HLock(parm->p[0].val.ev_handle);
wh = _EdOpenFile(pFILENAME, FO_READONLY);
_HUnLock(parm->p[0].val.ev_handle);
edpos = _EdGetLinePos(wh, 12);
_PutStr("\n_EdGetLinePos(wh, 12) =");
putLong(edpos);
original = edlin = _EdGetLineNum(wh, edpos);
for (;;)
{
_PutStr("\n_EdGetLineNum(wh,");
putLong(edpos);
_PutStr(") = ");
putLong(edlin);
if (edlin != original)
{
break;
}
edpos++;
edlin = _EdGetLineNum(wh, edpos);
}
edpos = _EdGetLinePos(wh, 13);
_PutStr("\n_EdGetLinePos(wh, 13) ="); putLong(edpos);
}
FoxInfo myFoxInfo[] = {
{"EDGETLPOS", (FPFI) Example, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_EdGetChar( ) (Rutina de biblioteca API) | _EdGetLinePos( ) (Rutina de biblioteca API) | _EdGetEnv( ) (Rutina de biblioteca API)


_EdGetLinePos( ) (Rutina de biblioteca API)

Devuelve la posición de desplazamiento del primer carácter de la línea especificada en el archivo de la ventana de edición especificada.

EDPOS _EdGetLinePos(WHANDLE wh, EDLINE theLine) WHANDLE wh;            /* Handle of editing window. */ EDLINE theLine;            /* Line number. */

Ejemplo

El siguiente ejemplo abre una sesión de edición para un archivo especificado por un parámetro y obtiene la EDPOS para la línea 12 mediante una llamada a _EdGetLinePos( ). A continuación, llama a _EdGetLineNum( ) sobre esta EDPOS, lo que devuelve 12. Posteriormente, aumenta EDPOS y continúa llamando a _EdGetLineNum( ) hasta que la EDLINE devuelta se modifica. En este momento, llama a _EdGetLinePos( ) para la línea 13.

Código Visual FoxPro

SET LIBRARY TO EDGETLPO
= EDGETLPOS("x")

Código C

#include <pro_ext.h>
void putLong(unsigned long n)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = 6;
_PutValue(&val);
}
FAR Example(ParamBlk FAR *parm)
{
#define pFILENAME ((char FAR *) _HandToPtr(parm->p[0].val.ev_handle))
WHANDLE wh;
EDENV EdEnv;
EDPOS edpos;
EDLINE edlin, original;
if (!_SetHandSize(parm->p[0].val.ev_handle,
parm->p[0].val.ev_length+1))
{
_Error(182); // "Insufficient memory"
}
pFILENAME[parm->p[0].val.ev_length] = '\0';
_HLock(parm->p[0].val.ev_handle);
wh = _EdOpenFile(pFILENAME, FO_READONLY);
_HUnLock(parm->p[0].val.ev_handle);
edpos = _EdGetLinePos(wh, 12);
_PutStr("\n_EdGetLinePos(wh, 12) =");
putLong(edpos);
original = edlin = _EdGetLineNum(wh, edpos);
for (;;)
{
_PutStr("\n_EdGetLineNum(wh,");
putLong(edpos);
_PutStr(") = ");
putLong(edlin);
if (edlin != original)
{
break;
}
edpos++;
edlin = _EdGetLineNum(wh, edpos);
}
edpos = _EdGetLinePos(wh, 13);
_PutStr("\n_EdGetLinePos(wh, 13) ="); putLong(edpos);
}
FoxInfo myFoxInfo[] = {
{"EDGETLPOS", (FPFI) Example, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_EdGetLineNum( ) (Rutina de biblioteca API) | _EdGetPos( ) (Rutina de biblioteca API) | _EdGetChar( ) (Rutina de biblioteca API)


_EdGetPos( ) (Rutina de biblioteca API)

Devuelve la posición de desplazamiento actual del punto de inserción del archivo mostrado en la ventana de edición especificada.

EDPOS _EdGetPos(WHANDLE wh) WHANDLE wh;            /* Handle of editing window. */

Observaciones

Si hay texto seleccionado, _EdGetPos( ) devuelve la posición de desplazamiento del acoplamiento.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo abre una sesión de edición para un archivo especificado por un parámetro. Tras configurar el punto de inserción actual con _EdSetPos( ), se realiza una llamada a _EdSetPos( ) para comprobar que devuelve la posición de desplazamiento del punto de inserción. Tras seleccionar texto con _EdSelect( ), se efectúa una llamada a _EdGetPos( ) para comprobar que devuelve la posición de desplazamiento del punto de acoplamiento.

Código Visual FoxPro

SET LIBRARY TO EDGETPOS
= EDGETPOS("x")

Código C

#include <pro_ext.h>
void putLong(long n)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = 6;
_PutValue(&val);
}
FAR Example(ParamBlk FAR *parm)
{
#define pFILENAME ((char FAR *) _HandToPtr(parm->p[0].val.ev_handle))
WHANDLE wh;
EDPOS edpos;
if (!_SetHandSize(parm->p[0].val.ev_handle,
parm->p[0].val.ev_length+1))
{
_Error(182); // "Insufficient memory"
}
pFILENAME[parm->p[0].val.ev_length] = '\0';
_HLock(parm->p[0].val.ev_handle);
wh = _EdOpenFile(pFILENAME, FO_READONLY);
_HUnLock(parm->p[0].val.ev_handle);
_EdSetPos(wh, 19);
_PutStr("\n_EdSetPos(wh, 19)");
edpos = _EdGetPos(wh);
_PutStr("\n_EdGetPos(wh) ="); putLong(edpos);
_EdSelect(wh, 5, 12);
_PutStr("\n_EdSelect(wh, 5, 12)");
edpos = _EdGetPos(wh);
_PutStr("\n_EdGetPos(wh) ="); putLong(edpos);
}
FoxInfo myFoxInfo[] = {
{"EDGETPOS", (FPFI) Example, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_EdGetChar( ) (Rutina de biblioteca API) | _EdSetPos( ) (Rutina de biblioteca API) | _EdGetLinePos( ) (Rutina de biblioteca API)


_EdGetStr( ) (Rutina de biblioteca API)

Coloca el texto entre las posiciones de desplazamiento especificadas (incluidas éstas) de la dirección especificada.

void _EdGetStr(WHANDLE wh, EDPOS thePos, EDPOS thePos, TEXT *theStr) WHANDLE wh;            /* Handle of editing window. */ EDPOS thePos;               /* Starting offset position. */ EDPOS thePos;               /* Stopping offset position. */ TEXT *theStr;               /* Where to put the text. */

Ejemplo

El ejemplo siguiente toma como parámetro un nombre de archivo y devuelve los primeros 16 bytes de ese archivo.

Código Visual FoxPro

SET LIBRARY TO EDGETSTR
? EDGETSTR("x") && returns the first 16 characters of file "x"

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
WHANDLE wh;
char FAR *buffer;
char FAR *pFileName;
if (!_SetHandSize(parm->p[0].val.ev_handle,
parm->p[0].val.ev_length+1))
{
_Error(182); // "Insufficient memory"
}
_HLock(parm->p[0].val.ev_handle);
pFileName = _HandToPtr(parm->p[0].val.ev_handle);
pFileName[parm->p[0].val.ev_length] = '\0';
wh = _EdOpenFile(pFileName, FO_READONLY);
_HUnLock(parm->p[0].val.ev_handle);
if ((buffer = _Alloca(17)) == 0) {
_Error(182); // "Insufficient memory"
}
_EdGetStr(wh, 0, 15, buffer);
buffer[16] = '\0';
_RetChar(buffer);
}
FoxInfo myFoxInfo[] = {
{"EDGETSTR", (FPFI) Example, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_EdGetChar( ) (Rutina de biblioteca API) | _EdSetPos( ) (Rutina de biblioteca API) | _EdGetLinePos( ) (Rutina de biblioteca API)


_EdIndent( ) (Rutina de biblioteca API)

Aplica una sangría con el número especificado de tabulaciones al texto seleccionado en el archivo mostrado en la ventana especificada.

void _EdIndent(WHANDLE wh, int tabstops) WHANDLE wh;            /* Handle of editing window. */ int tabstops;                  /* Number of tab stops. */

Observaciones

Puede especificar un número negativo para que tabstops origine una sangría francesa en la selección.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo abre una sesión de edición para un archivo especificado por un parámetro, y aplica una sangría a las líneas 13 y 15 del archivo con una sola tabulación.

Código Visual FoxPro

SET LIBRARY TO EDINDENT
= EDINDENT("x")

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
#define pFILENAME ((char FAR *) _HandToPtr(parm->p[0].val.ev_handle))
WHANDLE wh;
if (!_SetHandSize(parm->p[0].val.ev_handle,
parm->p[0].val.ev_length+1)) {
_Error(182); // "Insufficient memory"
}
pFILENAME[parm->p[0].val.ev_length] = '\0';
_HLock(parm->p[0].val.ev_handle);
wh = _EdOpenFile(pFILENAME, FO_READWRITE);
_HUnLock(parm->p[0].val.ev_handle);
_EdSelect(wh, _EdGetLinePos(wh, 12), _EdGetLinePos(wh, 14));
_EdIndent(wh, 1);
}
FoxInfo myFoxInfo[] = {
{"EDINDENT", (FPFI) Example, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_EdGetLineNum( ) (Rutina de biblioteca API) | _EdGetLinePos( ) (Rutina de biblioteca API) | _EdGetPos( ) (Rutina de biblioteca API) | _EdSetPos( ) (Rutina de biblioteca API)


_EdInsert( ) (Rutina de biblioteca API)

Inserta en el punto de inserción el número especificado de bytes, a partir de la dirección TEXT * especificada.

void _EdInsert(WHANDLE wh, TEXT *theStr, unsigned long Bytes) WHANDLE wh;            /* Handle of editing window. */ TEXT *theStr;               /* Address of beginning of insertion text. */ unsigned long Bytes;         /* Number of bytes to insert. */

Ejemplo

El siguiente ejemplo abre una sesión de edición para un archivo especificado por un parámetro e inserta la línea de texto "Hello, world" como la nueva línea número 14 del archivo.

Código Visual FoxPro

SET LIBRARY TO EDINSERT
= EDINSERT("x")

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
#define pFILENAME ((char FAR *) _HandToPtr(parm->p[0].val.ev_handle))
WHANDLE wh;
if (!_SetHandSize(parm->p[0].val.ev_handle,
parm->p[0].val.ev_length+1)) {
_Error(182); // "Insufficient memory"
}
pFILENAME[parm->p[0].val.ev_length] = '\0';
_HLock(parm->p[0].val.ev_handle);
wh = _EdOpenFile(pFILENAME, FO_READWRITE);
_HUnLock(parm->p[0].val.ev_handle);
_EdSetPos(wh, _EdGetLinePos(wh, 13));
_EdInsert(wh, "Hello, world\n", _StrLen("Hello, world\n"));
}
FoxInfo myFoxInfo[] = {
{"EDINSERT", (FPFI) Example, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_EdGetPos( ) (Rutina de biblioteca API) | _EdSetPos( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_EdLastError( ) (Rutina de biblioteca API)

_EdLastError( ) devuelve el número del error más reciente del editor asociado con la ventana de edición especificada.

int _EdLastError(WHANDLE wh) WHANDLE wh;            /* Handle of editing window. */

Ejemplo

El siguiente ejemplo muestra el código de error devuelto por _EdLastError( ) tras diversas operaciones del editor. Debido a que los errores del editor se reservan para situaciones graves, como poca memoria, el ejemplo siguiente normalmente mostrará un código de error de 0.

Código Visual FoxPro

SET LIBRARY TO EDLASTER
= EDLASTERR("x")  && displays _EdLastError() after operations on file "x"

Código C

#include <pro_ext.h>
void putLong(long n)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = 10;
_PutValue(&val);
}
FAR Example(ParamBlk FAR *parm)
{
char FAR *pFileName;
WHANDLE wh;
EDENV EdEnv;
if (!_SetHandSize(parm->p[0].val.ev_handle,
parm->p[0].val.ev_length+1))
{
_Error(182); // "Insufficient memory"
}
_HLock(parm->p[0].val.ev_handle);
pFileName = (char FAR *) _HandToPtr(parm->p[0].val.ev_handle);
pFileName[parm->p[0].val.ev_length] = '\0';
wh = _EdOpenFile(pFileName, FO_READONLY);
_HUnLock(parm->p[0].val.ev_handle);
//   Position past end of file
_EdGetEnv(wh, &EdEnv);
_EdSetPos(wh, EdEnv.length + 128);
_PutStr("\n_EdLastError() ="); putLong(_EdLastError(wh));
//   _EdCopy() with no selection
_EdSetPos(wh, 1);
_EdCopy(wh);
_PutStr("\n_EdLastError() ="); putLong(_EdLastError(wh));
//   _EdScrollToSel() with no selection
_EdScrollToSel(wh, TRUE);
_PutStr("\n_EdLastError() ="); putLong(_EdLastError(wh));
}
FoxInfo myFoxInfo[] = {
{"EDLASTERR", (FPFI) Example, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_EdGetEnv( ) (Rutina de biblioteca API) | _EdSetEnv( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_EdOpenFile( ) (Rutina de biblioteca API)

Abre el archivo especificado en una ventana para iniciar una sesión de edición.

WHANDLE _EdOpenFile(TEXT *filename, int mode) TEXT *filename;            /* File to open. */ int mode;                     /* Mode option. */

Observaciones

Están disponibles las siguientes opciones de modo: FO_READONLY, FO_WRITEONLY y FO_READWRITE.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo abre una sesión del editor para un archivo especificado por un parámetro.

Código Visual FoxPro

SET LIBRARY TO EDOPEN
= EDOPEN("x")  && opens editor session for file "x"

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
#define pFILENAME ((char FAR *) _HandToPtr(parm->p[0].val.ev_handle))
WHANDLE wh;
if (!_SetHandSize(parm->p[0].val.ev_handle,
parm->p[0].val.ev_length+1))
{
_Error(182); // "Insufficient memory"
}
pFILENAME[parm->p[0].val.ev_length] = '\0';
_HLock(parm->p[0].val.ev_handle);
wh = _EdOpenFile(pFILENAME, FO_READWRITE);
_HUnLock(parm->p[0].val.ev_handle);
}
FoxInfo myFoxInfo[] = {
{"EDOPEN", (FPFI) Example, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_EdCloseFile( ) (Rutina de biblioteca API) | _EdRevert( ) (Rutina de biblioteca API) | _EdSave( ) (Rutina de biblioteca API)


_EdPaste( ) (Rutina de biblioteca API)

Copia el contenido del Portapapeles en el punto de inserción del archivo mostrado en la ventana de edición especificada.

void _EdPaste(WHANDLE wh) WHANDLE wh;            /* Handle of editing window. */

Ejemplo

El siguiente ejemplo abre para su modificación un archivo especificado por un parámetro, copia el primer carácter del Portapapeles mediante _EdCopy( ) y lo pega después del segundo carácter mediante _EdPaste( ).

Código Visual FoxPro

SET LIBRARY TO EDPASTE
= EDCOPY("x")

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
#define pFILENAME ((char FAR *) _HandToPtr(parm->p[0].val.ev_handle))
WHANDLE wh;
if (!_SetHandSize(parm->p[0].val.ev_handle,
parm->p[0].val.ev_length+1))
{
_Error(182); // "Insufficient memory"
}
pFILENAME[parm->p[0].val.ev_length] = '\0';
_HLock(parm->p[0].val.ev_handle);
wh = _EdOpenFile(pFILENAME, FO_READWRITE);
_HUnLock(parm->p[0].val.ev_handle);
_EdSelect(wh, 0, 1);
_EdCopy(wh);
_EdSetPos(wh, 2);
_EdPaste(wh);
}
FoxInfo myFoxInfo[] = {
{"EDCOPY", (FPFI) Example, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_EdCopy( ) (Rutina de biblioteca API) |_EdCut( ) (Rutina de biblioteca API) | _EdGetPos( ) (Rutina de biblioteca API) | _EdSelect( ) (Rutina de biblioteca API) | _EdSetPos( ) (Rutina de biblioteca API)


_EdPosInView( ) (Rutina de biblioteca API)

int _EdPosInView(WHANDLE wh, EDPOS thePos) WHANDLE wh;            /* Handle of editing window. */ EDPOS thePos;               /* Offset position. */

Observaciones

_EdPosInView( ) devuelve verdadero (un entero distinto de 0) si la posición de desplazamiento del archivo mostrado en la ventana de edición especificada está visible; de lo contrario, devuelve falso (0).

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo abre un archivo especificado por un parámetro para su modificación. Tras desplazarse hasta el principio del archivo, el ejemplo llama a _EdPosInView( ) para comprobar si el principio y el final del archivo están en la vista y si sus resultados están impresos en la pantalla. A continuación, el ejemplo se desplaza al final del archivo y vuelve a llamar a _EdPosInView( ) para comprobar si el principio y el final del archivo están en la vista.

Código Visual FoxPro

SET LIBRARY TO EDPOSINV
= POSINVIEW("x")

Código C

#include <pro_ext.h>
void putLong(long n)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = 10;
_PutValue(&val);
}
FAR Example(ParamBlk FAR *parm)
{
#define pFILENAME ((char FAR *) _HandToPtr(parm->p[0].val.ev_handle))
WHANDLE wh;
EDENV EdEnv;
if (!_SetHandSize(parm->p[0].val.ev_handle,
parm->p[0].val.ev_length+1))
{
_Error(182); // "Insufficient memory"
}
pFILENAME[parm->p[0].val.ev_length] = '\0';
_HLock(parm->p[0].val.ev_handle);
wh = _EdOpenFile(pFILENAME, FO_READONLY);
_HUnLock(parm->p[0].val.ev_handle);
_EdGetEnv(wh, &EdEnv);
_EdScrollToPos(wh, 0, FALSE);
_PutStr("\n_EdScrollToPos(wh, 0)");
_PutStr("\n_EdPosInView(wh, 0) =");
putLong(_EdPosInView(wh, 0));
_PutStr("\n_EdPosInView(wh, EdEnv.length) =");
putLong(_EdPosInView(wh, EdEnv.length));
_EdScrollToPos(wh, EdEnv.length, FALSE);
_PutStr("\n_EdScrollToPos(wh, EdEnv.length)");
_PutStr("\n_EdPosInView(wh, 0) =");
putLong(_EdPosInView(wh, 0));
_PutStr("\n_EdPosInView(wh, EdEnv.length) =");
putLong(_EdPosInView(wh, EdEnv.length));
}
FoxInfo myFoxInfo[] = {
{"POSINVIEW", (FPFI) Example, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_EdGetPos( ) (Rutina de biblioteca API) | _EdGetPos( ) (Rutina de biblioteca API) | _EdSetPos( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_EdRedo( ) (Rutina de biblioteca API)

Efectúa de nuevo el cambio realizado en el archivo en la ventana de edición especificada que se deshizo con la rutina _EdUndo( ) más reciente.

void _EdRedo(WHANDLE wh) WHANDLE wh;            /* Handle of editing window. */

Ejemplo

El siguiente ejemplo abre un archivo especificado por un parámetro para su modificación. Tras insertar una nueva línea, esta línea nueva se elimina mediante _EdUndo( ) y, después, se vuelve a insertar mediante _EdRedo( ).

Código Visual FoxPro

SET LIBRARY TO EDREDO
= EDREDO("x")

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
#define pFILENAME ((char FAR *) _HandToPtr(parm->p[0].val.ev_handle))
WHANDLE wh;
if (!_SetHandSize(parm->p[0].val.ev_handle,
parm->p[0].val.ev_length+1))
{
_Error(182); // "Insufficient memory"
}
pFILENAME[parm->p[0].val.ev_length] = '\0';
_HLock(parm->p[0].val.ev_handle);
wh = _EdOpenFile(pFILENAME, FO_READWRITE);
_HUnLock(parm->p[0].val.ev_handle);
_EdSetPos(wh, _EdGetLinePos(wh, 13));
_EdInsert(wh, "Hello, world\n", _StrLen("Hello, world\n"));
_Execute("WAIT WINDOW 'New line inserted.  Press any key to undo.'");
_EdUndo(wh);
_Execute("WAIT WINDOW 'Insertion undone.  Press any key to redo.'");
_EdRedo(wh);
}
FoxInfo myFoxInfo[] = {
{"EDREDO", (FPFI) Example, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_EdUndo( ) (Rutina de biblioteca API) | _EdUndoOn( ) (Rutina de biblioteca API) | _EdRevert( ) (Rutina de biblioteca API)


_EdRevert( ) (Rutina de biblioteca API)

Descarta todos los cambios efectuados en el archivo que se muestra en la ventana de edición especificada desde la última vez que se guardó mediante _EdSave( ).

void _EdRevert(WHANDLE wh) WHANDLE wh;            /* Handle of editing window. */

Ejemplo

El siguiente ejemplo abre un archivo especificado por un parámetro para su modificación. Tras realizar operaciones de edición, insertar una línea nueva, aplicar una sangría de dos líneas y eliminar dos líneas, los cambios se descartan mediante _EdRevert( ).

Código Visual FoxPro

SET LIBRARY TO EDREVERT
= EDREVERT("x")

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
#define pFILENAME ((char FAR *) _HandToPtr(parm->p[0].val.ev_handle))
WHANDLE wh;
if (!_SetHandSize(parm->p[0].val.ev_handle,
parm->p[0].val.ev_length+1))
{
_Error(182); // "Insufficient memory"
}
pFILENAME[parm->p[0].val.ev_length] = '\0';
_HLock(parm->p[0].val.ev_handle);
wh = _EdOpenFile(pFILENAME, FO_READWRITE);
_HUnLock(parm->p[0].val.ev_handle);
_EdSetPos(wh, _EdGetLinePos(wh, 13));
_EdInsert(wh, "Hello, world\r\n", _StrLen("Hello, world\n"));
_EdSelect(wh, _EdGetLinePos(wh, 14), _EdGetLinePos(wh, 16));
_EdIndent(wh, 1);
_EdSelect(wh, _EdGetLinePos(wh, 9), _EdGetLinePos(wh, 12));
_EdDelete(wh);
_EdRevert(wh);
}
FoxInfo myFoxInfo[] = {
{"EDREVERT", (FPFI) Example, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_EdRedo( ) (Rutina de biblioteca API) | _EdUndo( ) (Rutina de biblioteca API) | _EdUndoOn( ) (Rutina de biblioteca API) | _EdSave( ) (Rutina de biblioteca API)


_EdSave( ) (Rutina de biblioteca API)

_EdSave( ) guarda el archivo en la ventana especificada sin terminar la sesión de edición.

void _EdSave(WHANDLE wh) WHANDLE wh;            /* Handle of editing window. */

Ejemplo

El siguiente ejemplo abre un archivo especificado por un parámetro para modificarlo. El ejemplo inserta una línea nueva, aplica una sangría a dos líneas y elimina dos líneas. Después de insertar la nueva línea, el ejemplo llama a _EdSave( ). Luego, tras aplicar la sangría y tras la eliminación, el ejemplo llama a _EdUndo( ) tres veces en un intento de deshacer toda la edición, pero la inserción realizada antes de la llamada a _EdSave( ) no se puede deshacer. El ejemplo ejecuta otras dos operaciones de edición, inserta dos líneas y elimina dos líneas, con una llamada a _EdSave( ) entre ellas. Por último, el ejemplo llama a _EdRevert( ), pero también puede deshacer únicamente los cambios realizados desde el último _EdSave( ).

Código Visual FoxPro

SET LIBRARY TO EDSAVE
= EDSAVE("x")

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
#define pFILENAME ((char FAR *) _HandToPtr(parm->p[0].val.ev_handle))
WHANDLE wh;
if (!_SetHandSize(parm->p[0].val.ev_handle,
parm->p[0].val.ev_length+1))
{
_Error(182); // "Insufficient memory"
}
pFILENAME[parm->p[0].val.ev_length] = '\0';
_HLock(parm->p[0].val.ev_handle);
wh = _EdOpenFile(pFILENAME, FO_READWRITE);
_HUnLock(parm->p[0].val.ev_handle);
_EdSetPos(wh, _EdGetLinePos(wh, 13));
_EdInsert(wh, "Hello, world\r\n", _StrLen("Hello, world\n"));
_EdSave(wh);
_EdSelect(wh, _EdGetLinePos(wh, 14), _EdGetLinePos(wh, 16));
_EdIndent(wh, 1);
_EdSelect(wh, _EdGetLinePos(wh, 9), _EdGetLinePos(wh, 12));
_EdDelete(wh);
_Execute("WAIT WINDOW 'Press any key to undo changes.'");
_EdUndo(wh);  // undo deletion
_EdUndo(wh);  // undo indent
_EdUndo(wh);  // attempt to undo insertion, but can't
_EdSelect(wh, _EdGetLinePos(wh, 14), _EdGetLinePos(wh, 16));
_EdIndent(wh, 1);
_EdSave(wh);
_EdSelect(wh, _EdGetLinePos(wh, 9), _EdGetLinePos(wh, 12));
_EdDelete(wh);
_EdRevert(wh);   // undoes deletion
}
FoxInfo myFoxInfo[] = {
{"EDSAVE", (FPFI) Example, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_EdCloseFile( ) (Rutina de biblioteca API) | _EdOpenFile( ) (Rutina de biblioteca API) | _EdRevert( ) (Rutina de biblioteca API) | _EdUndo( ) (Rutina de biblioteca API)


_EdScrollToPos( ) (Rutina de biblioteca API)

Se asegura de que esté visible la posición de desplazamiento especificada en el archivo en la ventana de edición designada.

void _EdScrollToPos(WHANDLE wh, EDPOS thePos, int Center) WHANDLE wh;            /* Handle of editing window. */ EDPOS thePos;               /* Offset position to make visible. */ int Center;                  /* Whether or not to center position in window. */

Observaciones

_EdScrollToPos( ) no mueve el punto de inserción. Especifique Center como verdadero para centrar la posición verticalmente en la ventana o como falso para no centrarla verticalmente.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo abre un archivo especificado por un parámetro para su modificación. Tras desplazarse a la parte superior del archivo mediante una llamada a _EdScrollToPos( ), el procedimiento llama a _EdPosInView( ) para comprobar si el principio y el final del archivo están en la vista, e imprime el resultado en la pantalla. A continuación, se desplaza al final del archivo mediante una llamada a _EdScrollToPos( ) y vuelve a llamar a _EdPosInView( ) para comprobar si el principio y el final del archivo están en la vista.

Código Visual FoxPro

SET LIBRARY TO EDSCTOPO
= POSINVIEW("x")

Código C

#include <pro_ext.h>
void putLong(long n)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = 10;
_PutValue(&val);
}
FAR Example(ParamBlk FAR *parm)
{
#define pFILENAME ((char FAR *) _HandToPtr(parm->p[0].val.ev_handle))
WHANDLE wh;
EDENV EdEnv;
if (!_SetHandSize(parm->p[0].val.ev_handle,
parm->p[0].val.ev_length+1)) {
_Error(182); // "Insufficient memory"
}
pFILENAME[parm->p[0].val.ev_length] = '\0';
_HLock(parm->p[0].val.ev_handle);
wh = _EdOpenFile(pFILENAME, FO_READONLY);
_HUnLock(parm->p[0].val.ev_handle);
_EdGetEnv(wh, &EdEnv);
_EdScrollToPos(wh, 0, FALSE);
_PutStr("\n_EdScrollToPos(wh, 0)");
_PutStr("\n_EdPosInView(wh, 0) =");
putLong(_EdPosInView(wh, 0));
_PutStr("\n_EdPosInView(wh, EdEnv.length) =");
putLong(_EdPosInView(wh, EdEnv.length));
_EdScrollToPos(wh, EdEnv.length, FALSE);
_PutStr("\n_EdScrollToPos(wh, EdEnv.length)");
_PutStr("\n_EdPosInView(wh, 0) =");
putLong(_EdPosInView(wh, 0));
_PutStr("\n_EdPosInView(wh, EdEnv.length) =");
putLong(_EdPosInView(wh, EdEnv.length));
}
FoxInfo myFoxInfo[] = {
{"POSINVIEW", (FPFI) Example, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_EdPosInView( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro | SYS(2002) - Activar o desactivar el punto de inserción _EdInsert( ) (Rutina de biblioteca API)


_EdScrollToSel( ) (Rutina de biblioteca API)

Se asegura de que el texto seleccionado en la ventana designada está visible.

void _EdScrollToSel(WHANDLE wh, int Center) WHANDLE wh;            /* Handle of editing window. */ int Center;                  /* Whether to center anchor point in window. */

Observaciones

Especifique Center como verdadero para centrar el punto de acoplamiento verticalmente en la ventana o como falso si no desea centrar el punto de acoplamiento.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo abre un archivo especificado por un parámetro para su modificación. El ejemplo realiza una selección cerca del final del archivo. Cuando el usuario presione una tecla como respuesta a un comando WAIT de Visual FoxPro, el ejemplo desplaza la ventana de edición a la selección mediante una llamada a _EdScrollToSel( ). A continuación, el ejemplo repite la operación para una selección realizada cerca del principio del archivo.

Código Visual FoxPro

SET LIBRARY TO EDSCTOSE
= TOSEL("x")

Código C

#include <pro_ext.h>
void putLong(long n)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = 10;
_PutValue(&val);
}
FAR Example(ParamBlk FAR *parm)
{
#define pFILENAME ((char FAR *) _HandToPtr(parm->p[0].val.ev_handle))
WHANDLE wh;
EDENV EdEnv;
if (!_SetHandSize(parm->p[0].val.ev_handle,
parm->p[0].val.ev_length+1))
{
_Error(182); // "Insufficient memory"
}
pFILENAME[parm->p[0].val.ev_length] = '\0';
_HLock(parm->p[0].val.ev_handle);
wh = _EdOpenFile(pFILENAME, FO_READONLY);
_HUnLock(parm->p[0].val.ev_handle);
_EdScrollToPos(wh, 0, TRUE);
_EdGetEnv(wh, &EdEnv);
_EdSelect(wh, EdEnv.length - 16, EdEnv.length);
_PutStr("\nMade selection at end of file.");
_Execute("WAIT WINDOW 'Press any key to scroll to selection.'");
_EdScrollToSel(wh, TRUE);
_EdSelect(wh, 1, 16);
_PutStr("\nMade selection at beginning of file.");
_Execute("WAIT WINDOW 'Press any key to scroll to selection.'");
_EdScrollToSel(wh, TRUE);
}
FoxInfo myFoxInfo[] = {
{"TOSEL", (FPFI) Example, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_EdGetPos( ) (Rutina de biblioteca API) | _EdSelect( ) (Rutina de biblioteca API) | _EdSetPos( ) (Rutina de biblioteca API)


_EdSelect( ) (Rutina de biblioteca API)

Selecciona el intervalo entre las dos posiciones de desplazamiento especificadas, inclusive, del archivo en la ventana de edición designada.

void _EdSelect(WHANDLE wh, EDPOS startPos, EDPOS endPos) WHANDLE wh;            /* Handle of editing window. */ EDPOS startPos;         /* Beginning offset position of selection. */ EDPOS endPos;         /* Ending offset position of selection. */

Ejemplo

El siguiente ejemplo abre para su modificación un archivo especificado por un parámetro, selecciona el primer carácter del archivo mediante _EdSelect( ), copia la selección al Portapapeles mediante _EdCopy( ) y la pega después del segundo carácter mediante _EdPaste( ).

Código Visual FoxPro

SET LIBRARY TO EDSELECT
= EDCOPY("x")

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
#define pFILENAME ((char FAR *) _HandToPtr(parm->p[0].val.ev_handle))
WHANDLE wh;
if (!_SetHandSize(parm->p[0].val.ev_handle,
parm->p[0].val.ev_length+1))
{
_Error(182); // "Insufficient memory"
}
pFILENAME[parm->p[0].val.ev_length] = '\0';
_HLock(parm->p[0].val.ev_handle);
wh = _EdOpenFile(pFILENAME, FO_READWRITE);
_HUnLock(parm->p[0].val.ev_handle);
_EdSelect(wh, 0, 1);
_EdCopy(wh);
_EdSetPos(wh, 2);
_EdPaste(wh);
}
FoxInfo myFoxInfo[] = {
{"EDCOPY", (FPFI) Example, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_EdCopy( ) (Rutina de biblioteca API) | _EdCut( ) (Rutina de biblioteca API) | _EdPaste( ) (Rutina de biblioteca API)


_EdSendKey( ) (Rutina de biblioteca API)

Simula la pulsación de tecla asociada al número de carácter ASCII especificado por charNum.

void _EdSendKey(WHANDLE wh, int charNum) WHANDLE wh;            /* Handle of editing window. */ int charNum;               /* Number of character. */

Ejemplo

El siguiente ejemplo abre un archivo especificado por un parámetro para su modificación. Inserta una línea de texto, "Hello, World", y envía los caracteres uno a uno con _EdSendKey( ). A continuación, utiliza _EdSendKey( ) para enviar un retorno de carro y un avance de línea, y para insertar un carácter de escape ASCII. Observe que el carácter de escape no se interpreta como "descartar sesión de edición".

Código Visual FoxPro

SET LIBRARY TO EDSENDKE
= SENDKEY("x")

Código C

#include <pro_ext.h>
void putLong(long n)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = 10;
_PutValue(&val);
}
FAR Example(ParamBlk FAR *parm)
{
#define pFILENAME ((char FAR *) _HandToPtr(parm->p[0].val.ev_handle))
WHANDLE wh;
EDENV EdEnv;
if (!_SetHandSize(parm->p[0].val.ev_handle,
parm->p[0].val.ev_length+1))
{
_Error(182); // "Insufficient memory"
}
pFILENAME[parm->p[0].val.ev_length] = '\0';
_HLock(parm->p[0].val.ev_handle);
wh = _EdOpenFile(pFILENAME, FO_READWRITE);
_HUnLock(parm->p[0].val.ev_handle);
// Insert a line of text using _EdSendKey()
_EdSetPos(wh, 0);
_EdSendKey(wh, 'H');
_EdSendKey(wh, 'e');
_EdSendKey(wh, 'l');
_EdSendKey(wh, 'l');
_EdSendKey(wh, 'o');
_EdSendKey(wh, ',');
_EdSendKey(wh, ' ');
_EdSendKey(wh, 'W');
_EdSendKey(wh, 'o');
_EdSendKey(wh, 'r');
_EdSendKey(wh, 'l');
_EdSendKey(wh, 'd');
_EdSendKey(wh, '.');
_EdSendKey(wh, 0x0d); // carriage return
_EdSendKey(wh, 0x0a); // line feed
_EdSendKey(wh, 0x1b); // esc char code is inserted in file
}
FoxInfo myFoxInfo[] = {
{"SENDKEY", (FPFI) Example, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_EdInsert( ) (Rutina de biblioteca API) | _EdGetChar( ) (Rutina de biblioteca API) | _ASCIICOLS (Variable del sistema) | _ASCIIROWS (Variable del sistema)


_EdSetEnv( ) (Rutina de biblioteca API)

Determina diversas configuraciones de editor.

int _EdSetEnv(WHANDLE wh, *EDENV theEdEnv) WHANDLE wh;            /* Handle of editing window. */ *EDENV theEdEnv;         /* Editor settings. */

Observaciones

Para ver la estructura de *EDENV, vea _EdGetEnv( ) (Rutina de biblioteca API).

Devuelve 1 si se llama en una sesión de comandos o del editor. De lo contrario, devuelve 0.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo abre un archivo especificado por un parámetro para su modificación. Tras aplicar una sangría a las dos primeras líneas del archivo, utiliza _EdSetEnv( ) para cambiar el tamaño de una tabulación hasta 6 y, después, hasta 9 caracteres.

Código Visual FoxPro

SET LIBRARY TO EDSETENV
= EDSETENV("x")

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
#define pFILENAME ((char FAR *) _HandToPtr(parm->p[0].val.ev_handle))
WHANDLE wh;
EDENV EdEnv;
EDPOS edpos;
if (!_SetHandSize(parm->p[0].val.ev_handle,
parm->p[0].val.ev_length+1))
{
_Error(182); // "Insufficient memory"
}
pFILENAME[parm->p[0].val.ev_length] = '\0';
_HLock(parm->p[0].val.ev_handle);
wh = _EdOpenFile(pFILENAME, FO_READWRITE);
_HUnLock(parm->p[0].val.ev_handle);
_EdGetEnv(wh, &EdEnv);
_EdSelect(wh, _EdGetLinePos(wh, 1), _EdGetLinePos(wh, 3));
_EdIndent(wh, 1);
_Execute("WAIT WINDOW 'Press any key\
to change tabs to 6 characters.'");
EdEnv.tabWidth = 6;
_EdSetEnv(wh, &EdEnv);
_Execute("WAIT WINDOW 'Press any key \
to change tabs to 9 characters.'");
EdEnv.tabWidth = 9;
_EdSetEnv(wh, &EdEnv);
}
FoxInfo myFoxInfo[] = {
{"EDSETENV", (FPFI) Example, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_EdGetEnv( ) (Rutina de biblioteca API) | _EdLastError( ) (Rutina de biblioteca API) | _EdGetEnv( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_EdSetPos( ) (Rutina de biblioteca API)

Mueve el punto de inserción a la posición de desplazamiento especificada en el archivo mostrado en la ventana de edición especificada, lo que desactiva la selección de cualquier texto que esté seleccionado.

void _EdSetPos(WHANDLE wh, EDPOS thePos) WHANDLE wh;            /* Handle of editing window. */ EDPOS thePos;               /* Specified offset position. */

Ejemplo

El siguiente ejemplo abre un archivo especificado por un parámetro para su modificación. Mediante _EdSetPos( ), establece el punto de inserción en la posición 19 del archivo. Llama a _EdGetPos( ) e inserta parte del texto para comprobar que el punto de inserción se ha establecido.

Código Visual FoxPro

SET LIBRARY TO EDSETPOS
= EDSETPOS('x')

Código C

#include <pro_ext.h>
void putLong(long n)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = 6;
_PutValue(&val);
}
FAR Example(ParamBlk FAR *parm)
{
#define pFILENAME ((char FAR *) _HandToPtr(parm->p[0].val.ev_handle))
WHANDLE wh;
EDPOS edpos;
if (!_SetHandSize(parm->p[0].val.ev_handle,
parm->p[0].val.ev_length+1))
{
_Error(182); // "Insufficient memory"
}
pFILENAME[parm->p[0].val.ev_length] = '\0';
_HLock(parm->p[0].val.ev_handle);
wh = _EdOpenFile(pFILENAME, FO_READWRITE);
_HUnLock(parm->p[0].val.ev_handle);
_EdSetPos(wh, 19);
_PutStr("\n_EdSetPos(wh, 19)");
edpos = _EdGetPos(wh);
_PutStr("\n_EdGetPos(wh) ="); putLong(edpos);
_EdInsert(wh, "*** Inserted at EDPOS = 19 ***",
_StrLen("*** Inserted at EDPOS = 19 ***"));
}
FoxInfo myFoxInfo[] = {
{"EDSETPOS", (FPFI) Example, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_EdGetLineNum( ) (Rutina de biblioteca API) | _EdGetChar( ) (Rutina de biblioteca API) | _EdGetPos( ) (Rutina de biblioteca API)


_EdSkipLines( ) (Rutina de biblioteca API)

Mueve el punto de inserción al principio de la línea int desde la posición de desplazamiento actual, thePos.

EDPOS _EdSkipLines(WHANDLE wh, EDPOS thePos, int offset) WHANDLE wh;            /* Handle of editing window. */ EDPOS thePos;               /* Current offset position. */ int offset;                     /* Number of lines to skip. */

Observaciones

Puede especificar números de línea positivos o negativos.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo abre un archivo especificado por un parámetro para su modificación. Utiliza _EdSkipLines( ) para encontrar las posiciones de desplazamiento y luego selecciona las líneas 3 y 4.

Código Visual FoxPro

SET LIBRARY TO EDSKIPLI
= SKIPLINE("x")

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
#define pFILENAME ((char FAR *) _HandToPtr(parm->p[0].val.ev_handle))
WHANDLE wh;
EDPOS edpos;
if (!_SetHandSize(parm->p[0].val.ev_handle,
parm->p[0].val.ev_length+1))
{
_Error(182); // "Insufficient memory"
}
pFILENAME[parm->p[0].val.ev_length] = '\0';
_HLock(parm->p[0].val.ev_handle);
wh = _EdOpenFile(pFILENAME, FO_READWRITE);
_HUnLock(parm->p[0].val.ev_handle);
// select next two lines
edpos = _EdSkipLines(wh, 0, 2); // skip to two lines from top
_EdSelect(wh, edpos, _EdSkipLines(wh, edpos, 2));
_Execute("WAIT WINDOW 'Using _EdSkipLines() \
to select lines 3 and 4'");
}
FoxInfo myFoxInfo[] = {
{"SKIPLINE", (FPFI) Example, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_EdGetPos( ) (Rutina de biblioteca API) |_EdSetPos( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_EdUndo( ) (Rutina de biblioteca API)

Deshace un único cambio reciente realizado en el archivo mostrado en la ventana especificada.

void _EdUndo(WHANDLE wh) WHANDLE wh;            /* Handle of editing window. */

Observaciones

Cuando el usuario realiza cambios en un archivo, estos cambios se registran en el búfer de deshacer. _EdUndo( ) se puede ejecutar varias veces para deshacer múltiples cambios. No es posible deshacer un cambio realizado antes de ejecutar _EdSave( ).

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo abre para su modificación un archivo especificado por un parámetro. Tras insertar una línea nueva, utiliza _EdUndo( ) para eliminar la línea y, después, llama a _EdRedo( ) para restaurar la línea insertada.

Código Visual FoxPro

SET LIBRARY TO EDUNDO
= EDREDO("x")

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
#define pFILENAME ((char FAR *) _HandToPtr(parm->p[0].val.ev_handle))
WHANDLE wh;
if (!_SetHandSize(parm->p[0].val.ev_handle,
parm->p[0].val.ev_length+1))
{
_Error(182); // "Insufficient memory"
}
pFILENAME[parm->p[0].val.ev_length] = '\0';
_HLock(parm->p[0].val.ev_handle);
wh = _EdOpenFile(pFILENAME, FO_READWRITE);
_HUnLock(parm->p[0].val.ev_handle);
_EdSetPos(wh, _EdGetLinePos(wh, 13));
_EdInsert(wh, "Hello, world\n", _StrLen("Hello, world\n"));
_Execute("WAIT WINDOW 'New line inserted.\
Press any key to undo.'");
_EdUndo(wh);
_Execute("WAIT WINDOW 'Insertion undone.  Press any key to redo.'");
_EdRedo(wh);
}
FoxInfo myFoxInfo[] = {
{"EDREDO", (FPFI) Example, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_EdRedo( ) (Rutina de biblioteca API) | _EdUndoOn( ) (Rutina de biblioteca API) | _EdSave( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_EdUndoOn( ) (Rutina de biblioteca API)

Permite agrupar varias acciones como una sola acción para su uso con _EdUndo( ) y _EdRedo( ).

void _EdUndoOn(WHANDLE wh, int Grouped) WHANDLE wh;            /* Window handle. */ int Grouped;                  /* Toggle grouping off. */

Observaciones

Las acciones que ocurran después de transferir el parámetro Grouped como falso con _EdUndoOn( ), o después de ejecutar _EdUndo( ), dejan de agruparse como una sola acción.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo muestra cómo puede utilizar _EdUndoOn( ) para agrupar operaciones de edición que se pueden deshacer como un grupo mediante _EdUndo( ).

Código Visual FoxPro

SET LIBRARY TO EDUNDOON
= EDUNDOON("x")  && edit file "x"

Código C

#include <pro_ext.h>
#define TRUE   1
#define FALSE   0
FAR Example(ParamBlk FAR *parm)
{
char FAR *pFileName;
WHANDLE wh;
if (!_SetHandSize(parm->p[0].val.ev_handle,
parm->p[0].val.ev_length+1))
{
_Error(182); // "Insufficient memory"
}
_HLock(parm->p[0].val.ev_handle);
pFileName = (char FAR *) _HandToPtr(parm->p[0].val.ev_handle);
pFileName[parm->p[0].val.ev_length] = '\0';
wh = _EdOpenFile(pFileName, FO_READWRITE);
_HUnLock(parm->p[0].val.ev_handle);
_EdUndoOn(wh, TRUE); // start undo group
_EdSetPos(wh, _EdGetLinePos(wh, 13));
_EdInsert(wh, "Hello, world\n", _StrLen("Hello, world\n"));
_EdSelect(wh, _EdGetLinePos(wh, 14), _EdGetLinePos(wh, 16));
_EdIndent(wh, 1);
_EdUndoOn(wh, FALSE); // end undo group
_EdUndoOn(wh, TRUE); // start another undo group
_EdSelect(wh, _EdGetLinePos(wh, 9), _EdGetLinePos(wh, 12));
_EdDelete(wh);
_EdSetPos(wh, _EdGetLinePos(wh, 13));
_EdInsert(wh, "Hello, world\n", _StrLen("Hello, world\n"));
_Execute("WAIT WINDOW 'Press any key to undo changes.'");
_EdUndoOn(wh, TRUE); // undoes to start of undo group
}
FoxInfo myFoxInfo[] = {
{"EDUNDOON", (FPFI) Example, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_EdRedo( ) (Rutina de biblioteca API) | _EdUndo( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_Error( ) (Rutina de biblioteca API)

Señala el error especificado por el valor de code en el tiempo de ejecución de Visual FoxPro.

void _Error(int code) int code;                     /* Internal Visual FoxPro error number. */

Observaciones

El parámetro code es un número de error interno de Visual FoxPro y se puede transferir como un valor positivo o negativo. _Error( ) otorga el control al controlador de errores de Visual FoxPro de manera que este error se pueda manejar como cualquier otro error de Visual FoxPro. El control del flujo de programa no vuelve a la rutina que llamó a _Error( ), ni siquiera cuando el usuario elige pasar por alto el error. La ejecución se reanuda en la siguiente instrucción de Visual FoxPro.

Consulte el tema acerca de los números de error de Visual FoxPro en la Ayuda para ver los números de error y sus significados.

Nota No utilice _Error( ) desde un controlador de eventos.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo llama a _Error( ) cuando _DBSkip( ) devuelve un número de error. El código de Visual FoxPro muestra la forma de hacer que se ejecute una llamada a _Error( ).

Código Visual FoxPro

SET LIBRARY TO ERROR
DO CreateTest
ON ERROR DO expectError
USE
= DBSKIP(1)  && _Error() called: no DBF in use
USE test
GO TOP
= DBSKIP(-1)
= DBSKIP(-1)    && _Error() called: at top of file
GO BOTT
= DBSKIP(1)
= DBSKIP(1)  && _Error() called: at bottom of file
ON ERROR
PROCEDURE expectError
? "ERROR: " + MESSAGE()
RETURN
PROCEDURE CreateTest
CREATE TABLE test (ABC C(20))
APPEND BLANK
REPLACE ABC WITH "This is record 1"
APPEND BLANK
REPLACE ABC WITH "This is record 2"
APPEND BLANK
REPLACE ABC WITH "This is record 3"
APPEND BLANK
REPLACE ABC WITH "This is record 4"
GO TOP
RETURN

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *pblk)
{
int RetCode;
if ((RetCode = _DBSkip(-1, pblk->p[0].val.ev_long)) < 0) {
_PutStr("\nError encountered in example program.");
_Error(-RetCode);  // _DBSkip() returns negative error code
}
_RetInt(RetCode, 10);
}
FoxInfo myFoxInfo[] = {
{"DBSKIP", (FPFI) Example, 1, "I"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_ErrorInfo( ) (Rutina de biblioteca API) | _UserError( ) (Rutina de biblioteca API) | _DBSkip( ) (Rutina de biblioteca API)


_ErrorInfo( ) (Rutina de biblioteca API)

Devuelve el número de error externo correspondiente al número de error interno de Visual FoxPro especificado por code.

int _ErrorInfo(int code, char FAR *message) int code;                     /* Internal Visual FoxPro error number. */ char FAR *message;         /* Pointer to space for an error message. */

Observaciones

El parámetro message es un puntero para una cadena de caracteres que es el mensaje de error de Visual FoxPro. Si message no es un puntero nulo, Visual FoxPro lo rellena con el texto del mensaje de error asociado con el número de error externo.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo muestra la información devuelta por _ErrorInfo( ).

Código Visual FoxPro

SET LIBRARY TO ERRORINF
= ERRORINFO(0)
= ERRORINFO(1)

Código C

#include <pro_ext.h>
void putLong(long n)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = 10;
_PutValue(&val);
}
void FAR ErrorInfo(ParamBlk FAR *parm)
{
int ext;
char FAR *message;
if ((message =_Alloca(128)) == 0)
{
_Error(182); // "Insufficient memory"
}
ext = _ErrorInfo((int) parm->p[0].val.ev_long, message);
_PutChr('\n'); putLong(ext); _PutStr(" "); _PutStr(message);
}
FoxInfo myFoxInfo[] = {
{"ERRORINFO", (FPFI) ErrorInfo, 1, "I"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_Error( ) (Rutina de biblioteca API) | _UserError( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_Evaluate( ) (Rutina de biblioteca API)

Compila y ejecuta una expresión de Visual FoxPro especificada con expr e incluye su resultado en res.

int _Evaluate(Value FAR *res, char FAR *expr) Value FAR *res;            /* Address for result. */ char FAR *expr;            /* Expression. */

Observaciones

Puede especificar cualquier expresión que se pueda evaluar mediante la función EVALUATE( ) de Visual FoxPro. Después de haber evaluado la expresión, el control normalmente vuelve a la instrucción C inmediatamente después de la llamada a _Evaluate( ). Las excepciones incluyen la evaluación de una expresión de Visual FoxPro que ejecuta un comando CANCEL o QUIT de Visual FoxPro.

_Evaluate( ) devuelve el número de error interno de Visual FoxPro para cualquier error que ocurra durante la evaluación de la expresión de Visual FoxPro o devuelve 0 si no ocurre ningún error. El contenido de res solamente es válido cuando _Evaluate( ) devuelve un valor de 0.

Nota No llame a _Evaluate( ) desde un controlador de eventos.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo tiene la misma funcionalidad que la función EVALUATE( ) de Visual FoxPro.

Código Visual FoxPro

SET LIBRARY TO EVALUATE
? XEVAL("2 + 3")
? XEVAL("'a' + 'b'")
? XEVAL("SIN(PI()/2))")

Código C

#include <pro_ext.h>
FAR EvaluateEx(ParamBlk FAR *parm)
{
char FAR *expr;
Value result;
//   Null terminate character string
if (!_SetHandSize(parm->p[0].val.ev_handle,
parm->p[0].val.ev_length + 1))
{
_Error(182); // "Insufficient memory"
}
_HLock(parm->p[0].val.ev_handle);
expr = (char FAR *) _HandToPtr(parm->p[0].val.ev_handle);
expr[parm->p[0].val.ev_length] = '\0';
_Evaluate(&result, expr);
_RetVal(&result);
_HUnLock(parm->p[0].val.ev_handle);
}
FoxInfo myFoxInfo[] = {
{"XEVAL", (FPFI) EvaluateEx, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_Execute( ) (Rutina de biblioteca API) | CANCEL (Comando) | QUIT (Comando) | Acceso a la API de Visual FoxPro


_Execute( ) (Rutina de biblioteca API)

Compila y ejecuta la instrucción terminada en nulo especificada en stmt.

int _Execute(char FAR *stmt) char FAR *stmt;            /* Statement to execute. */

Observaciones

El parámetro stmt puede ser cualquier comando o función que se pueda ejecutar desde la ventana Comandos. Cuando haya terminado la ejecución de la instrucción, el control suele volver a la instrucción C inmediatamente después de la llamada a _Execute( ). Entre las excepciones se incluye el código de ejecución que ejecuta un comando CANCEL o QUIT de Visual FoxPro.

_Execute( ) devuelve el número de error interno de Visual FoxPro para cualquier error que ocurra durante la ejecución de la instrucción o 0 si no ocurre ningún error.

Nota No llame a _Execute( ) desde un controlador de eventos.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo utiliza _Execute( ) para ejecutar la instrucción de Visual FoxPro transferida.

Código Visual FoxPro

SET LIBRARY TO EXECUTE
= EXEC("? 'Hello, world.'")
= EXEC("DISPLAY STATUS")

Código C

#include <pro_ext.h>
FAR ExecuteEx(ParamBlk FAR *parm)
{
char FAR *cmd;
// Null terminate character string
if (!_SetHandSize(parm->p[0].val.ev_handle,
parm->p[0].val.ev_length+1))
{
_Error(182); // "Insufficient memory"
}
_HLock(parm->p[0].val.ev_handle);
cmd = (char FAR *) _HandToPtr(parm->p[0].val.ev_handle);
cmd[parm->p[0].val.ev_length] = '\0';
_Execute(cmd);
_HUnLock(parm->p[0].val.ev_handle);
}
FoxInfo myFoxInfo[] = {
{"EXEC", (FPFI) ExecuteEx, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_Evaluate( ) (Rutina de biblioteca API) | CANCEL (Comando) | QUIT (Comando) | Acceso a la API de Visual FoxPro


_FCHSize( ) (Rutina de biblioteca API)

Define el tamaño en disco del archivo especificado en el valor length indicado.

int _FCHSize(FCHAN chan, long length) FCHAN chan;               /* File to change. */ long length;                  /* New length for the file in bytes. */

Observaciones

La longitud especificada puede extender o truncar el archivo. _FCHSize( ) devuelve 0 si tiene éxito al modificar la longitud del archivo o – 1 si falla.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente crea un archivo Temp.txt y define su tamaño en 8196 bytes mediante _FCHSize( ).

Código Visual FoxPro

SET LIBRARY TO FCHSIZE
DIR  temp.txt

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
FCHAN fchan = _FCreate("temp.txt", FC_NORMAL);
_FCHSize(fchan, 8196);
_FClose(fchan);
}
FoxInfo myFoxInfo[] = {
{"FCHSIZE", (FPFI) Example, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_FGets( ) (Rutina de biblioteca API) |_FPuts( ) (Rutina de biblioteca API) | _FWrite( ) (Rutina de biblioteca API)


_FClose( ) (Rutina de biblioteca API)

Termina el acceso a un archivo.

int _FClose(FCHAN chan) FCHAN chan;               /* File channel of file to close. */

Observaciones

Los búferes que se puedan haber modificado mientras estaban abiertos se vacían automáticamente en disco. Si el archivo tiene el atributo TEMPORARY, FClose( ) elimina el archivo. _FClose( ) devuelve 0 si el archivo se cierra con éxito o devuelve – 1 si no se logra cerrar el archivo.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo crea un archivo Temp.txt, establece su tamaño en 8196 bytes y lo cierra mediante _FClose( ).

Código Visual FoxPro

SET LIBRARY TO FCLOSE
DIR temp.txt

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
FCHAN fchan = _FCreate("temp.txt", FC_NORMAL);
_FCHSize(fchan, 8196);
_FClose(fchan);
}
FoxInfo myFoxInfo[] = {
{"FCHSIZE", (FPFI) Example, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_FOpen( ) (Rutina de biblioteca API) | _FCopy( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_FCopy( ) (Rutina de biblioteca API)

Intenta copiar len bytes desde la posición de desplazamiento spos del archivo de origen sc a la posición de desplazamiento dpos del archivo de destino dc.

int _FCopy(FCHAN dc, long dpos, FCHAN sc, long spos, long len) FCHAN dc;                  /* File channel of destination file. */ long dpos;                  /* Offset position to start copying to. */ FCHAN sc;                  /* File channel of source file. */ long spos;                  /* Offset position to start copying from. */ long len;                     /* Number of bytes to copy. */

Observaciones

_FCopy( ) devuelve verdadero (un entero distinto de 0) si tiene éxito o devuelve falso (0) si falla.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo crea dos archivos. Escribe el texto "Hello, world" en el primero de estos archivos y, a continuación, copia el contenido del archivo, a partir del tercer byte, en el segundo archivo.

Código Visual FoxPro

SET LIBRARY TO FCOPY

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
FCHAN fchan1, fchan2;
int len;
fchan1 = _FCreate("temp1.txt", FC_NORMAL);
_FPuts(fchan1, "Hello, world.");
_FFlush(fchan1);
len = _FSeek(fchan1, 0, FS_FROMEOF); // determine length of file
fchan2 = _FCreate("temp2.txt", FC_NORMAL);
_FCopy(fchan2, 0, fchan1, 2, len - 2);
_FClose(fchan1);
_FClose(fchan2);
}
FoxInfo myFoxInfo[] = {
{"FCOPY", (FPFI) Example, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_FPuts( ) (Rutina de biblioteca API) | _FWrite( ) (Rutina de biblioteca API) | _FCreate( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_FCreate( ) (Rutina de biblioteca API)

Asigna un canal de Visual FoxPro a un archivo nuevo.

FCHAN _FCreate(char FAR *filename, int mode) char FAR *filename;         /* Name of file to create. */ int mode;                     /* File attributes. */

Observaciones

Si ya existe un archivo con el nombre especificado, _FCreate( ) trunca el archivo existente a cero bytes.

El parámetro mode puede ser uno o varios de los siguientes indicadores: FC_READONLY, FC_SYSTEM, FC_HIDDEN y FC_TEMPORARY. Puede combinar estos indicadores mediante los siguientes operadores de C | o +. Un indicador adicional, FC_NORMAL, especifica que el archivo no tiene ninguno de los demás atributos. Los archivos FC_TEMPORARY se eliminan automáticamente cuando se llama a _FClose( ) para cerrar el archivo.

_FCreate( ) devuelve el canal de archivo si tiene éxito en la creación del archivo o devuelve – 1 si falla.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente utiliza _FCreate( ) para crear varios archivos mediante los diversos indicadores mode de _FCreate( ).

Código Visual FoxPro

SET LIBRARY TO FCREATE

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
FCHAN fchan;
fchan = _FCreate("normal.tmp", FC_NORMAL);
_FClose(fchan);
fchan = _FCreate("readonly.tmp", FC_READONLY);
_FClose(fchan);
fchan = _FCreate("hidden.tmp", FC_HIDDEN);
_FClose(fchan);
fchan = _FCreate("system.tmp", FC_SYSTEM);
_FClose(fchan);
fchan = _FCreate("temp.tmp", FC_TEMPORARY);
_FClose(fchan);
fchan = _FCreate("multi.tmp", FC_SYSTEM | FC_READONLY);
_FClose(fchan);
}
FoxInfo myFoxInfo[] = {
{"FCREATE", (FPFI) Example, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_FClose( ) (Rutina de biblioteca API) | _FOpen( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_FEOF( ) (Rutina de biblioteca API)

int _FEOF(FCHAN chan) FCHAN chan;               /* File channel of file. */

Observaciones

_FEOF( ) devuelve verdadero (un entero distinto de 0) si el puntero del archivo especificado está actualmente al final del archivo; de lo contrario, devuelve falso (0).

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo crea un archivo y define su longitud en 8192 bytes. A continuación, mueve el puntero de archivo al principio del archivo y llama a _FEOF( ), que devuelve 0 (falso). Después, mueve el puntero de archivo al final del archivo y vuelve a llamar a _FEOF( ), que esta vez devuelve 1 (verdadero).

Código Visual FoxPro

SET LIBRARY TO FEOF

Código C

#include <pro_ext.h>
void putLong(long n)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = 10;
PutValue(&val);
}
FAR Example(ParamBlk FAR *parm)
{
FCHAN fchan =  FCreate("temp.txt", FC NORMAL);
FCHSize(fchan, 8196);
FFlush(fchan);
FSeek(fchan, 0, FS FROMBOF);
PutStr("\n FSeek(fchan, 0, FS FROMBOF)");
PutStr("\n FEOF(fchan) ="); putLong(_FEOF(fchan));
_FSeek(fchan, 0, FS_FROMEOF);
_PutStr("\n_FSeek(fchan, 0, FS_FROMEOF)");
_PutStr("\n_FEOF(fchan) ="); putLong(_FEOF(fchan));
}
FoxInfo myFoxInfo[] = {
{"FEOF", (FPFI) Example, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_FSeek( ) (Rutina de biblioteca API) | _FCopy( ) (Rutina de biblioteca API) |_FWrite( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_FError( ) (Rutina de biblioteca API)

Devuelve el número del último error de funcionamiento de archivo registrado para cualquier canal de archivo.

int _FError(void any) void any;                     /* Pointer. */

Ejemplo

El siguiente ejemplo utiliza _FOpen( ) para intentar abrir un archivo denominado Nofile.abc, que supuestamente no existe. A continuación, llama a _FError( ), que devuelve el número de error 2, "Archivo no encontrado".

Código Visual FoxPro

SET LIBRARY TO FERROR

Código C

#include <pro_ext.h>
void putLong(long n)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = 10;
_PutValue(&val);
}
FAR Example(ParamBlk FAR *parm)
{
FCHAN fchan = _FOpen("nofile.abc", FC_READONLY);
_PutStr("\nAttempted to _FOpen() a file which does not exist.");
_PutStr("\n_FError() ="); putLong(_FError());
}
FoxInfo myFoxInfo[] = {
{"FERROR", (FPFI) Example, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_FClose( ) (Rutina de biblioteca API) | _FCreate( ) (Rutina de biblioteca API) | _FOpen( ) (Rutina de biblioteca API)


_FFlush( ) (Rutina de biblioteca API)

Vacía en disco todos los búferes modificados en memoria para el archivo especificado.

int _FFlush(FCHAN chan) FCHAN chan;               /* File channel of file to flush. */

Observaciones

_FFlush( ) devuelve 0 si tiene éxito en el vaciado de los búferes o devuelve – 1 si falla.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo crea un archivo y define su longitud en 8196 bytes. La ejecución de la línea de comandos de Visual FoxPro DIR TEMP.TXT en la ventana Comandos muestra que el tamaño del archivo en disco continúa siendo 0. No obstante, tras ejecutar = XFFLUSH( ), al ejecutar la línea de comandos DIR TEMP.TXT se muestra que el archivo en disco refleja la llamada a _FCHSize( ) y tiene un tamaño de archivo de 8196 bytes.

Código Visual FoxPro

SET LIBRARY TO FFLUSH
DIR temp.txt  && size on disk is still 0
WAIT WINDOW "File Size = 0"
= XFFLUSH()
DIR temp.txt  && size on disk is 8196
WAIT WINDOW "File Size Does Not Equal 0"
CLOSE ALL

Código C

#include <pro_ext.h>
static FCHAN fchan;
FAR CreateIt(ParamBlk FAR *parm)
{
fchan = _FCreate("temp.txt", FC_NORMAL);
_FCHSize(fchan, 8196);
}
FAR FFlushEx(ParamBlk FAR *parm)
{
_FFlush(fchan);
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) CreateIt, CALLONLOAD, ""},
{"XFFLUSH", (FPFI) FFlushEx, 0, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_FPuts( ) (Rutina de biblioteca API) | _FWrite( ) (Rutina de biblioteca API) | _FError( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_FGets( ) (Rutina de biblioteca API)

Copia en el búfer una sola línea del archivo especificado a partir de la posición actual en el archivo.

unsigned int _FGets(FCHAN chan, char FAR *buffer, int maxlen) FCHAN chan;               /* File channel of file from which to copy. */ char FAR *buffer;            /* Buffer address. */ int maxlen;                  /* Maximum length of line in bytes. */

Observaciones

_FGets( ) copia una línea de longitud maxlen delimitada por un retorno de carro. El retorno de carro se convierte en un terminador nulo y se almacena en el búfer. Los avances de línea se pasan por alto y no se copian en el búfer. _FGets( ) devuelve el número de bytes copiados al búfer.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo abre un archivo especificado por un parámetro, tras lo cual copia y muestra cada línea del archivo.

Código Visual FoxPro

SET LIBRARY TO FGETS
fc = FCREATE("x", 0)
= FPUTS(fc, REPL("X", 512), 512)
= FCLOSE(fc)
= XFGETS("x")
DELETE FILE x

Código C

#include <pro_ext.h>
#define BUFFSIZE 256
static char lineBuffer[BUFFSIZE];
void putLong(long n)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = 10;
_PutValue(&val);
}
FAR Example(ParamBlk FAR *parm)
{
FCHAN fchan;
//   Null terminate file name
if (!_SetHandSize(parm->p[0].val.ev_handle,
parm->p[0].val.ev_length+1))
{
_Error(182); // "Insufficient memory"
}
_HLock(parm->p[0].val.ev_handle);
((char FAR *) _HandToPtr(parm->p[0].val.ev_handle))
[parm->p[0].val.ev_length] = '\0';
if ((fchan=_FOpen((char FAR*)_HandToPtr(parm->p[0].val.ev_handle),
FC_NORMAL)) < 0)
{
_UserError("Could not open file.");
}
_HUnLock(parm->p[0].val.ev_handle);
while (!_FEOF(fchan))
{
_FGets(fchan, lineBuffer, BUFFSIZE);
_PutStr(lineBuffer); _PutChr('\n');
}
_FClose(fchan);
}
FoxInfo myFoxInfo[] = {
{"XFGETS", (FPFI) Example, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_FRead( ) (Rutina de biblioteca API) | _FSeek( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_FindMemo( ) (Rutina de biblioteca API)

Devuelve la dirección de memoria del primer carácter del campo memo fld para el registro actual en el área de trabajo seleccionada.

long _FindMemo(Locator FAR *fld) Locator FAR *fld;            /* Memo field name. */

Observaciones

_FindMemo( ) permite tener acceso directamente al contenido del campo memo del registro actual. Cuando el campo memo del registro actual está vacío o cuando fld no es el nombre de un campo memo, _FindMemo( ) devuelve un entero negativo cuyo valor absoluto es un número de error de Visual FoxPro.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo recupera el contenido de un campo memo para el registro actual. Utiliza FindMemo( ) para encontrar la ubicación del contenido memo para el registro actual en el archivo memo. A continuación, el ejemplo mueve el puntero de archivo hasta su ubicación con _FSeek( ) y almacena el contenido del campo memo en memoria mediante _FRead( _MemoSize( )).

Código Visual FoxPro

SET LIBRARY TO FINDMEMO
CREATE TABLE WMemo (MemoField M)
APPEND BLANK
REPLACE MemoField WITH "Hello, World."
? GETMEMO(@MemoField)

Código C

#include <pro_ext.h>
FAR FindMemoEx(ParamBlk FAR *parm)
{
Locator FAR *memoFldLoc;
FCHAN fchMemo;
char FAR *memoContents;
int memoLen;
long loc;
if ((fchMemo = _MemoChan(-1)) == -1)
{
_UserError("_MemoChan() failed");
}
memoFldLoc = &parm->p[0].loc;
if ((loc = _FindMemo(memoFldLoc)) < 0)
{
_UserError("_FindMemo() failed");
}
if ((memoLen = _MemoSize(memoFldLoc)) < 0)
{
_UserError("_MemoSize() failed");
}
if ((memoContents = _Alloca(memoLen + 1)) == 0)
{
_Error(182); // "Insufficient memory"
}
_FSeek(fchMemo, loc, FS_FROMBOF);
_FRead(fchMemo, memoContents, memoLen);
memoContents[memoLen] = '\0';
_RetChar(memoContents);
}
FoxInfo myFoxInfo[] = {
{"GETMEMO", (FPFI) FindMemoEx, 1, "R"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_AllocMemo( ) (Rutina de biblioteca API) | _DBReplace( ) (Rutina de biblioteca API) | _MemoChan( ) (Rutina de biblioteca API) | _MemoSize( ) (Rutina de biblioteca API)


_FindVar( ) (Rutina de biblioteca API)

Proporciona un método para inicializar el localizador de manera que pueda utilizar _Store( ) para colocar los datos en una variable de memoria o en un campo existentes.

int _FindVar(NTI nti, int where, Locator FAR *loc) NTI nti;                     /* NTI number of variable or field. */ int where;                  /* Work area number. */ Locator FAR *loc;            /* Locator. */

Observaciones

_FindVar( ) rellena el localizador transferido con información relativa a una variable o un campo denominados nti que existen en un área de trabajo especificada por where.

  • Si where es – 1, se supone que nti es una variable de memoria.
  • Si where está comprendido en el rango 1 – 225, se supone que nti es un campo del área de trabajo del número especificado.
  • Si where es 0, _FindVar comprueba primero para ver si nti es una variable de memoria. Si no se trata de ninguna variable de memoria, el área de trabajo actual se comprueba en busca de un campo con el NTI especificado.

_FindVar( ) devuelve verdadero (un entero distinto de 0) si se encuentra una variable o un campo nti en where; de lo contrario, _FindVar( ) devuelve falso (0).

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente muestra el valor de una variable de Visual FoxPro de una manera muy indirecta.

Código Visual FoxPro

SET LIBRARY TO FINDVAR
TestVar= "This is a test"
= QMARK("TestVar")

Código C

#include <pro_ext.h>
void putLong(long n)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = 10;
_PutValue(&val);
}
FAR NameTableIndexEx(ParamBlk FAR *parm)
{
NTI nti;
char FAR *name;
Locator loc;
Value val;
//   Null terminate character string, name of variable
if (!_SetHandSize(parm->p[0].val.ev_handle,
parm->p[0].val.ev_length+1))
{
_Error(182); // "Insufficient memory"
}
_HLock(parm->p[0].val.ev_handle);
name = (char FAR *) _HandToPtr(parm->p[0].val.ev_handle);
name[parm->p[0].val.ev_length] = '\0';
nti = _NameTableIndex(name);
_FindVar(nti, 0, &loc);
_Load(&loc, &val);
_PutValue(&val);
}
FoxInfo myFoxInfo[] = {
{"QMARK", (FPFI) NameTableIndexEx, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_ALen( ) (Rutina de biblioteca API) | _Load( ) (Rutina de biblioteca API) | _NameTableIndex( ) (Rutina de biblioteca API) | _NewVar( ) (Rutina de biblioteca API) | _ObjectRelease( ) (Rutina de biblioteca API) | _Store( ) (Rutina de biblioteca API)


_FindWindow( ) (Rutina de biblioteca API)

Devuelve en el parámetro wh el controlador de la ventana a la que pertenece el punto pt en la pantalla.

int _FindWindow(WHANDLE FAR *wh, Point pt) WHANDLE FAR *wh;      /* Pointer to window handle. */ Point pt;                     /* Point. */

Observaciones

_FindWindow( ) devuelve un entero que indica la parte de la ventana donde está situado el punto. Por ejemplo, _FindWindow( ) devuelve el valor inContent si el punto está dentro de la ventana.

En la siguiente tabla se enumeran posibles valores de retorno, tal como se definen en PRO_EXT.H.

Valores de retorno de _FindWindow( )

Valor | Ubicación del punto
inBorder | En el borde de la ventana.
inHelp | En el área de Ayuda.
inContent | En el área de contenido y texto.
inDrag | En la barra de título.
inGrow | En el control de tamaño.
inGoAway | En el cuadro de cierre.
inZoom | En el control de zoom.
inVUpArrow | En la flecha arriba de la barra de desplazamiento vertical.
inVDownArrow | En la flecha abajo de la barra de desplazamiento vertical.
inVPageUp | En el área de página arriba de la barra de desplazamiento vertical.
inVPageDown | En el área de página abajo de la barra de desplazamiento vertical.
inVThumb | En el cuadro de la barra de desplazamiento vertical.
inHUpArrow | En la flecha derecha de la barra de desplazamiento horizontal.
inHDownArrow | En la flecha izquierda de la barra de desplazamiento horizontal.
inHPageUp | En el área de página a la derecha de la barra de desplazamiento horizontal.
inHPageDown | En el área de página a la izquierda de la barra de desplazamiento horizontal.
inHThumb | En el cuadro de la barra de desplazamiento horizontal.
inMenuBar | En la barra de menús.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo espera un clic en el botón primario del ratón (ratón) y, luego, utiliza _FindWindow( ) para obtener el controlador de ventana correspondiente a la posición en que se hizo clic con el ratón.

Código Visual FoxPro

WAIT WINDOW  "Click ratón on a window" NOWAIT
SET LIBRARY TO FINDWIND

Código C

#include <pro_ext.h>
void putLong(long n, int width)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = width;
_PutValue(&val);
}
FAR FindWindowFn(ParamBlk FAR *parm)
{
WHANDLE wh;
Point mousePos;
int where;
//  Get ratón position when left button goes down
while (_InKey(0, MOUSEACTIVE | HIDECURSOR) != 151);
while (!_MousePos(&mousePos));
switch (where = _FindWindow(&wh, mousePos))
{
case inBorder:
_PutStr("\nMouse down inBorder"); break;
case inHelp:
_PutStr("\nMouse down inHelp"); break;
case inContent:
_PutStr("\nMouse down inContent"); break;
case inDrag:
_PutStr("\nMouse down inDrag"); break;
case inGrow:
_PutStr("\nMouse down inGrow"); break;
case inGoAway:
_PutStr("\nMouse down inGoAway"); break;
case inZoom:
_PutStr("\nMouse down inZoom"); break;
case inVUpArrow:
_PutStr("\nMouse down inVUpArrow"); break;
case inVDownArrow:
_PutStr("\nMouse down inVDownArrow"); break;
case inVPageUp:
_PutStr("\nMouse down inVPageUp"); break;
case inVPageDown:
_PutStr("\nMouse down inVPageDown"); break;
case inVThumb:
_PutStr("\nMouse down inVThumb"); break;
case inHUpArrow:
_PutStr("\nMouse down inHUpArrow"); break;
case inHDownArrow:
_PutStr("\nMouse down inHDownArrow"); break;
case inHPageUp:
_PutStr("\nMouse down inHPageUp"); break;
case inHPageDown:
_PutStr("\nMouse down inHPageDown"); break;
case inHThumb:
_PutStr("\nMouse down inHThumb"); break;
case inMenuBar:
_PutStr("\nMouse down inMenuBar"); break;
default:
_PutStr("\nMouse down someplace else"); break;
}
_GlobalToLocal(&mousePos, wh);
_PutStr("\nPosition relative to window:");
putLong(mousePos.v, 5);
_PutChr(' ');
putLong(mousePos.h, 5);
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) FindWindowFn, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_MousePos( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro | _FindWindowP( ) (Rutina de biblioteca API)


_FindWindowP( ) (Rutina de biblioteca API)

Coloca el controlador de la ventana a la que pertenece el punto pt en la pantalla, dentro de wh.

int _FindWindowP(WHANDLE FAR *wh, Point pt) WHANDLE FAR *wh;      /* Pointer to window handle. */ Point pt;                     /* Point in pixels. */

Observaciones

_FindWindowP( ) devuelve un entero que indica la parte de la ventana en que está situado el puntero. Para ver cuáles son los valores de retorno posibles, vea _FindWindow( ) (Rutina de biblioteca API).

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente espera un clic en el botón primario del ratón (ratón) y, luego, utiliza _FindWindowP( ) para obtener el controlador de ventana para la posición en que se pulsó el ratón.

Código Visual FoxPro

WAIT WINDOW "Click Mouse In Window" NOWAIT
SET LIBRARY TO FINDWINP

Código C

#include <pro_ext.h>
void putLong(long n, int width)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = width;
_PutValue(&val);
}
FAR FindWindowEx(ParamBlk FAR *parm)
{
WHANDLE wh;
Point mousePos;
int where;
//  Get ratón position when left button goes down
while (_InKey(0, MOUSEACTIVE | HIDECURSOR) != 151);
while (!_MousePosP(&mousePos));
switch (where = _FindWindowP(&wh, mousePos))
{
case inBorder:
_PutStr("\nMouse down inBorder"); break;
case inHelp:
_PutStr("\nMouse down inHelp"); break;
case inContent:
_PutStr("\nMouse down inContent"); break;
case inDrag:
_PutStr("\nMouse down inDrag"); break;
case inGrow:
_PutStr("\nMouse down inGrow"); break;
case inGoAway:
_PutStr("\nMouse down inGoAway"); break;
case inZoom:
_PutStr("\nMouse down inZoom"); break;
case inVUpArrow:
_PutStr("\nMouse down inVUpArrow"); break;
case inVDownArrow:
_PutStr("\nMouse down inVDownArrow"); break;
case inVPageUp:
_PutStr("\nMouse down inVPageUp"); break;
case inVPageDown:
_PutStr("\nMouse down inVPageDown"); break;
case inVThumb:
_PutStr("\nMouse down inVThumb"); break;
case inHUpArrow:
_PutStr("\nMouse down inHUpArrow"); break;
case inHDownArrow:
_PutStr("\nMouse down inHDownArrow"); break;
case inHPageUp:
_PutStr("\nMouse down inHPageUp"); break;
case inHPageDown:
_PutStr("\nMouse down inHPageDown"); break;
case inHThumb:
_PutStr("\nMouse down inHThumb"); break;
case inMenuBar:
_PutStr("\nMouse down inMenuBar"); break;
default:
_PutStr("\nMouse down someplace else"); break;
}
_GlobalToLocalP(&mousePos, wh);
_PutStr("\nPosition relative to window:");
putLong(mousePos.v, 5);
_PutChr(' ');
putLong(mousePos.h, 5);
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", FindWindowEx, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_FindWindow( ) (Rutina de biblioteca API) | _MousePos( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_FOpen( ) (Rutina de biblioteca API)

Asigna un canal de Visual FoxPro a un archivo existente.

FCHAN _FOpen(char FAR *filename, int mode) char FAR *filename;         /* Name of existing file */ int mode;                     /* Mode option. */

Observaciones

Están disponibles las siguientes opciones de mode: FO_READONLY, FO_WRITEONLY y FO_READWRITE. _FOpen( ) abre un archivo con acceso exclusivo. _FOpen( ) devuelve el canal de archivo si logra abrir el archivo o devuelve – 1 si no puede abrir el archivo.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo crea un archivo de prueba. A continuación, abre el archivo en modo FO_READONLY e intenta escribir en él. Como resultado, _FError( ) devuelve 5 para "Acceso denegado". Por último, el ejemplo abre el archivo de prueba en modo FO_WRITEONLY e intenta leer en él. De nuevo, _FError( ) devuelve 5.

Código Visual FoxPro

SET LIBRARY TO FOPEN

Código C

#include <pro_ext.h>
void putLong(long n)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = 10;
_PutValue(&val);
}
#define BUFFSIZE 256
static char lineBuffer[BUFFSIZE];
FAR Example(ParamBlk FAR *parm)
{
FCHAN fchan;
fchan = _FCreate("temp.tmp", FC_NORMAL);
_FCHSize(fchan, 8192);
_FClose(fchan);
fchan = _FOpen("temp.tmp", FO_READONLY);
_FPuts(fchan, "Hello, world");
_PutStr("\nAttempt to _FPuts() to file _FOpen()d FO_READONLY");
_PutStr("\n_FError() ="); putLong(_FError());
_FClose(fchan);
fchan = _FOpen("temp.tmp", FO_WRITEONLY);
_FGets(fchan, lineBuffer, BUFFSIZE);
_PutStr("\nAttempt to _FGets() from file _FOpen()d FO_WRITEONLY");
_PutStr("\n_FError() ="); putLong(_FError());
_FClose(fchan);
}
FoxInfo myFoxInfo[] = {
{"FOPEN", (FPFI) Example, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_FClose( ) (Rutina de biblioteca API) | _FCreate( ) (Rutina de biblioteca API) | _FError( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_FPuts( ) (Rutina de biblioteca API)

Escribe en un archivo una cadena especificada y terminada en un carácter nulo, seguida por una pareja de retorno de carro y avance de línea.

unsigned int _FPuts(FCHAN chan, char FAR *buffer) FCHAN chan;               /* File channel of file to write to. */ char FAR *buffer;            /* String to write. */

Observaciones

_FPuts( ) devuelve el número total de bytes que se escriben en el archivo.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo crea un archivo y escribe el texto "Hello, world." en el archivo mediante _FPuts( ).

Código Visual FoxPro

SET LIBRARY TO FPUTS

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
FCHAN fchan;
fchan = _FCreate("temp.tmp", FC_NORMAL);
_FPuts(fchan, "Hello, world.");
_FClose(fchan);
}
FoxInfo myFoxInfo[] = {
{"FPUTS", (FPFI) Example, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_FFlush( ) (Rutina de biblioteca API) | _FSeek( ) (Rutina de biblioteca API) | _FWrite( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_FRead( ) (Rutina de biblioteca API)

Copia, desde un archivo al búfer especificado por buffer, tantos bytes como indique length.

unsigned int _FRead(FCHAN chan, char FAR *buffer, int length) FCHAN chan;               /* File channel of file from which to copy. */ char FAR *buffer;            /* Buffer address. */ int length;                  /* Number of bytes to be copied. */

Observaciones

_FRead( ) no anexa ningún terminador al final de los bytes del búfer. No se realiza ninguna conversión en los bytes cuando se almacenan en el búfer. _FRead( ) devuelve el número de bytes leídos.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo crea un archivo de prueba e inserta texto en él. A continuación, el ejemplo intenta leer 32 bytes del archivo mediante _FRead( ).

Código Visual FoxPro

SET LIBRARY TO FREAD

Código C

#include <pro_ext.h>
#define BUFFSIZE 32
static char buffer[BUFFSIZE];
FAR Example(ParamBlk FAR *parm)
{
FCHAN fchan;
int bytesRead;
fchan = _FCreate("temp.tmp", FC_NORMAL);
_FPuts(fchan, "Hello, world.");
_FPuts(fchan, "Hello, world.");
_FPuts(fchan, "Hello, world.");
_FPuts(fchan, "Hello, world.");
_FPuts(fchan, "Hello, world.");
_FSeek(fchan, 0, FS_FROMBOF);
bytesRead = _FRead(fchan, buffer, BUFFSIZE - 1);
buffer[bytesRead] = '\0';
_PutStr(buffer);
_FClose(fchan);
}
FoxInfo myFoxInfo[] = {
{"FREAD", (FPFI) Example, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_FGets( ) (Rutina de biblioteca API) | _FSeek( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_FreeHand( ) (Rutina de biblioteca API)

Libera un controlador de memoria hand asignado anteriormente por métodos como _AllocHand( ).

void _FreeHand(MHANDLE hand) MHANDLE hand;            /* Memory handle. */

Ejemplo

El siguiente ejemplo asigna 1024 bloques de memoria de 16384 bytes hasta alcanzar un total de 16 MB y libera cada bloque de memoria mediante _FreeHand( ) antes de asignar el siguiente.

Código Visual FoxPro

SET LIBRARY TO FREEHAND

Código C

#include <pro_ext.h>
void FAR Example(ParamBlk FAR *parm)
{
MHANDLE mh;
int i;
for (i = 0; i < 1024; i++)
{
if ((mh = _AllocHand(16384)) == 0)
{
_Error(182);  // "Insufficient memory"
}
_FreeHand(mh);
}
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) Example, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_AllocHand( ) (Rutina de biblioteca API) | _GetHandSize( ) (Rutina de biblioteca API) | _HandToPtr( ) (Rutina de biblioteca API) | _HLock( ) (Rutina de biblioteca API) | _HUnLock( ) (Rutina de biblioteca API) | _MemAvail( ) (Rutina de biblioteca API) | _SetHandSize( ) (Rutina de biblioteca API)


_FreeObject( ) (Rutina de biblioteca API)

Libera un objeto del conjunto de datos de la API de Visual FoxPro.

void _FreeObject(Value FAR *objct)

Observaciones

Utilice _FreeObject( ) para liberar un objeto de la tabla de objetos de la API de Visual FoxPro.

_FreeObject( ) se emplea en las situaciones siguientes:

1. Si se devuelve una referencia de objeto desde cualquier función de la API de Visual FoxPro (por ejemplo, _Evaluate( ) o _GetObjectProperty( )), debe utilizar _FreeObject( ) para liberar el objeto cuando ya no lo esté empleando.

2. Si conserva una referencia a un objeto entre distintas llamadas a la API de Visual FoxPro, debe utilizar en primer lugar _ObjectReference( ) para aumentar el contador del objeto. Cuando ya no esté utilizando el objeto, debe emplear _ObjectRelease( ) para disminuir el contador del objeto y, a continuación, debe utilizar _FreeObject( ) para liberar el objeto.

Además de las reglas anteriores, siempre debe limpiar la estructura Value que pasa a cualquier función de la API de Visual FoxPro que devuelve un valor a la estructura Value transferida. Por ejemplo, puede crear y llamar a una función que limpie la estructura antes de llamar a una función que devuelva un valor a su estructura. También puede crear y llamar a una función para limpiar las referencias a objetos o identificadores sin utilizar.

Devuelve 0 a menos que se produzca un error. Cuando se produce un error, se devuelve un número negativo que representa un código interno de error.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Vea también

_ObjectReference( ) (Rutina de biblioteca API) | _ObjectRelease( ) (Rutina de biblioteca API) | _GetObjectProperty( ) (Rutina de biblioteca API) | _Evaluate( ) (Rutina de biblioteca API)


_FSeek( ) (Rutina de biblioteca API)

Mueve el puntero de archivo hasta una nueva ubicación tal como especifican position y mode.

long _FSeek(FCHAN chan, long position, int mode) FCHAN chan;               /* File channel. */ long position;               /* Position in file. */ int mode;                     /* How to determine new location */

Observaciones

Si mode es 0 (absoluto), el puntero de archivo se define con el valor de position. Si mode es 1, (relativo al puntero de archivo), el valor de position se suma a la posición actual del puntero de archivo. Si mode es 2 (relativo al final del archivo), _FSeek( ) mueve el puntero de archivo hasta una posición posterior al final del archivo. _FSeek( ) devuelve la nueva posición del puntero de archivo. Por ejemplo, _FSeek(canal, 0L, 2) mueve el puntero de archivo hasta el final del archivo y devuelve la longitud del archivo en bytes.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo consta de una rutina API que toma dos parámetros, un nombre de archivo y un entero. Abre el archivo. A continuación, mediante _FSeek( ) con el indicador FS_FROMBOF, mueve el puntero de archivo hasta la posición de desplazamiento especificada por el parámetro int y lee un único byte del archivo en esta posición.

Código Visual FoxPro

SET LIBRARY TO FSEEK
fc = FCREATE("x", 0)
= FPUTS(fc, "abcdefghijklmnopqrstuvwxyz", 26)
= FCLOSE(fc)
? XFSEEK("x", 2)  && displays 3rd byte of file x as an integer
? XFSEEK("x", 4)  && displays 5th byte of file x as an integer
DELETE FILE x

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
FCHAN fchan;
char x;
// Null terminate file name
if (!_SetHandSize(parm->p[0].val.ev_handle,
parm->p[0].val.ev_length+1))
{
_Error(182); // "Insufficient memory"
}
_HLock(parm->p[0].val.ev_handle);
((char FAR *) _HandToPtr(parm->p[0].val.ev_handle))
[parm->p[0].val.ev_length] = '\0';
if ((fchan=_FOpen((char FAR*)_HandToPtr(parm->p[0].val.ev_handle),
FC_NORMAL)) < 0)
{
_UserError("Could not open file.");
}
_HUnLock(parm->p[0].val.ev_handle);
_FSeek(fchan, parm->p[1].val.ev_long, FS_FROMBOF);
_FRead(fchan, &x, 1);
_RetInt(x, 10);
_FClose(fchan);
}
FoxInfo myFoxInfo[] = {
{"XFSEEK", (FPFI) Example, 2, "C,I"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_FCopy( ) (Rutina de biblioteca API) | _FFlush( ) (Rutina de biblioteca API) | _FGets( ) (Rutina de biblioteca API) | _FPuts( ) (Rutina de biblioteca API)


_FWrite( ) (Rutina de biblioteca API)

Escribe exactamente length bytes del buffer a un archivo especificado por chan.

unsigned int _FWrite(FCHAN chan, char FAR *buffer, int length) FCHAN chan;               /* File channel of file to write to. */ char FAR *buffer;            /* Buffer address. */ int length;                  /* Number of bytes to write. */

Observaciones

_FWrite( ) no anexa ningún terminador al archivo. No se realizan conversiones en los bytes antes de escribirlos. _FWrite( ) devuelve el número de bytes escritos.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo crea un archivo de prueba y escribe en él algunos datos mediante _FWrite( ).

Código Visual FoxPro

SET LIBRARY TO FWRITE

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
FCHAN fchan;
fchan = _FCreate("temp.tmp", FC_NORMAL);
_FWrite(fchan, "Hello, world.", _StrLen("Hello, world."));
_FWrite(fchan, "\xd\xa", 2);
_FWrite(fchan, "1234567890", 10);
_FClose(fchan);
}
FoxInfo myFoxInfo[] = {
{"FWRITE", (FPFI) Example, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_FFlush( ) (Rutina de biblioteca API) | _FPuts( ) (Rutina de biblioteca API) | _FSeek( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_GetAPIHandle( ) (Rutina de biblioteca API)

Devuelve el controlador de la FLL actual.

void _GetAPIHandle( )

Ejemplo

El siguiente ejemplo devuelve el controlador de la FLL actual.

Código Visual FoxPro

SET LIBR TO GETAPIHA.FLL
? GETAPIHAND( )

Código C

#include <pro_ext.h>
void getAPIHandle()
{
_RetInt((int) _GetAPIHandle(),15);
}
FoxInfo myFoxInfo[] =
{
{"GETAPIHAND",  (FPFI) getAPIHandle, 0, ""},
};
FoxTable _FoxTable =
{
(FoxTable  *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

Acceso a la API de Visual FoxPro | Crear una biblioteca FLL básica | _ActivateHandler( ) (Rutina de biblioteca API) | _DeActivateHandler( ) (Rutina de biblioteca API)


_GetHandSize( ) (Rutina de biblioteca API)

Devuelve el número utilizable de bytes asociados con un controlador (hand) de bloque de memoria especificado.

unsigned long _GetHandSize(MHANDLE hand) MHANDLE hand;            /* Handle of memory block. */

Observaciones

El número utilizable de bytes siempre es mayor o igual que el número de bytes solicitados más recientemente para este controlador MHANDLE por _AllocHand( ) o por una llamada _SetHandSize( ) con éxito.

Nota _GetHandSize( ) no origina ninguna reorganización de la memoria.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo asigna bloques de memoria de diversos tamaños entre 1 y 215, y muestra el valor devuelto por _GetHandSize( ) para estas asignaciones. Observe que el valor devuelto por _GetHandSize( ) sólo algunas veces es exactamente igual que el tamaño solicitado por _AllocHand( ); en general es un poco mayor.

Código Visual FoxPro

SET LIBRARY TO GETHANDS

Código C

#include <pro_ext.h>
void putLong(long n)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = 5;
_PutValue(&val);
}
void FAR Example(ParamBlk FAR *parm)
{
MHANDLE mh;
unsigned int allocSize;
for (allocSize = 1;; allocSize *= 2)
{
if ((mh = _AllocHand(allocSize)) == 0)
{
_Error(182);  // "Insufficient memory"
}
_PutStr("\n_AllocHand("); putLong(allocSize); _PutStr(")");
_PutStr("\n_GetHandSize() ="); putLong(_GetHandSize(mh));
_FreeHand(mh);
if (allocSize == 32768)
{
break;
}
}
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) Example, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_AllocHand( ) (Rutina de biblioteca API) | _FreeHand( ) (Rutina de biblioteca API) | _HandToPtr( ) (Rutina de biblioteca API) | _HLock( ) | _HUnLock( ) (Rutina de biblioteca API) | _MemAvail( ) (Rutina de biblioteca API) | _SetHandSize( ) (Rutina de biblioteca API)


_GetItemCmdKey( ) (Rutina de biblioteca API)

Copia, en el búfer especificado por el parámetro text, la cadena de método abreviado de teclado mostrada en pantalla para el elemento de menú especificado.

int _GetItemCmdKey(MENUID menuid, ITEMID itemid, char FAR *text) MENUID menuid;            /* Menu identifier. */ ITEMID itemid;            /* Menu item identifier. */ char FAR *text;            /* Where to store the shortcut string. */

Observaciones

_GetItemCmdKey( ) devuelve el código interno de teclado para el método abreviado de teclado. Si no existe ningún método abreviado de teclado para el elemento de menú especificado, _GetItemCmdKey( ) devuelve 0.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo crea un menú con tres elementos y configura un método abreviado de teclado para cada elemento. Utiliza _GetItemCmdKey( ) para mostrar las teclas de método abreviado.

Código Visual FoxPro

SET LIBRARY TO GETICMDK

Código C

#include <pro_ext.h>
void putLong(long n)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = 10;
_PutValue(&val);
}
FAR GetItemCmdKeyEx(ParamBlk FAR *parm)
{
MENUID menuId;
ITEMID itemId;
Point loc;
char FAR *shortcutString;
int intKeyCode;
menuId = _GetNewMenuId();
_NewMenu(MPOPUP, menuId);
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<1st item");
_SetItemCmdKey(menuId, itemId, altKey | 0x78, "Alt+1");
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<2nd item");
_SetItemCmdKey(menuId, itemId, altKey | 0x79, "Alt+2");
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<3rd item");
_SetItemCmdKey(menuId, itemId, altKey | 0x7a, "Alt+3");
loc.v = 10; loc.h = 20;
_SetMenuPoint(menuId, loc);
_ActivateMenu(menuId);
if ((shortcutString = _Alloca(64)) == 0)
{
_DisposeMenu(menuId);
_Error(182); // "Insufficient memory"
}
intKeyCode = _GetItemCmdKey(menuId, _GetItemId(menuId, 0),
shortcutString);
_PutStr("\nShortcut string = "); _PutStr(shortcutString);
_PutStr("\nInternal key code ="); putLong(intKeyCode);
intKeyCode = _GetItemCmdKey(menuId, _GetItemId(menuId, 1),
shortcutString);
_PutStr("\nShortcut string = "); _PutStr(shortcutString);
_PutStr("\nInternal key code ="); putLong(intKeyCode);
intKeyCode = _GetItemCmdKey(menuId, _GetItemId(menuId, 2),
shortcutString);
_PutStr("\nShortcut string = "); _PutStr(shortcutString);
_PutStr("\nInternal key code ="); putLong(intKeyCode);
_Execute("WAIT");
_DisposeMenu(menuId);
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) GetItemCmdKeyEx, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_GetItemSubMenu( ) (Rutina de biblioteca API) | _NewItem( ) (Rutina de biblioteca API) | _SetItemCmdKey( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_GetItemId( ) (Rutina de biblioteca API)

Devuelve el identificador del elemento especificado en el menú indicado.

ITEMID _GetItemId(MENUID menuid, long index) MENUID menuid;            /* Menu identifier. */ long index;                  /* Menu item number. */

Observaciones

Puede utilizar _GetItemId( ) para reunir identificadores de barra de menús o de menús, de manera que pueda ejecutar una operación en todos los elementos. _GetItemId( ) devuelve 0 cuando index supera el número de elementos del menú.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo crea un menú con tres elementos. Utiliza _GetItemId( ) para obtener el ITEMID de cada elemento de menú. Tras eliminar un elemento del menú, puede ver que el ITEMID no siempre es igual al índice del elemento.

Código Visual FoxPro

SET LIBRARY TO GETIID

Código C

#include <pro_ext.h>
void putLong(long n)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = 10;
_PutValue(&val);
}
FAR GetItemIdEx(ParamBlk FAR *parm)
{
MENUID menuId;
ITEMID itemId;
Point loc;
menuId = _GetNewMenuId();
_NewMenu(MPOPUP, menuId);
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<1st item");
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<2nd item");
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<3rd item");
loc.v = 10; loc.h = 20;
_SetMenuPoint(menuId, loc);
_ActivateMenu(menuId);
_PutStr("\nitemid for index 0 ="); putLong(_GetItemId(menuId, 0));
_PutStr("\nitemid for index 1 ="); putLong(_GetItemId(menuId, 1));
_PutStr("\nitemid for index 2 ="); putLong(_GetItemId(menuId, 2));
_Execute("WAIT WINDOW");
_DisposeItem(menuId, _GetItemId(menuId, 1));
_PutStr("\nitemid for index 0 ="); putLong(_GetItemId(menuId, 0));
_PutStr("\nitemid for index 1 ="); putLong(_GetItemId(menuId, 1));
_Execute("WAIT WINDOW");
_DisposeMenu(menuId);
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) GetItemIdEx, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_GetItemSubMenu( ) (Rutina de biblioteca API) | _GetNewItemId( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro | NewItemID (Propiedad)


_GetItemSubMenu( ) (Rutina de biblioteca API)

Devuelve el identificador de elemento de menú de un submenú asignado a un elemento de menú.

MENUID _GetItemSubMenu(MENUID menuid, ITEMID itemid); MENUID menuid;            /* Menu identifier */ ITEMID itemid;            /* Menu item identifier*/

Observaciones

Un submenú recibe el mismo tratamiento que un menú independiente. _GetItemSubMenu( ) devuelve el identificador MENUID del submenú asignado a un elemento de menú especificado o devuelve – 1 si no hay ningún submenú asignado al elemento de menú.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo crea un sistema de menús y devuelve el Id. del submenú.

Código Visual FoxPro

SET LIBRARY TO GETITEMS

Código C

#include <pro_ext.h>
MENUID SysMenuId, retMenuId;
MENUID PopupId;
ITEMID PadId;
void putLong(long n)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = 10;
_PutValue(&val);
}
FAR onSelection(long menuId, long itemId)
{
_PutStr("\nitemId = "); putLong(itemId);
}
void FAR StartUp()
{
ITEMID Bar1Id;
ITEMID Bar2Id;
int Error;
//
//   Add new menu title to SYSMENU.
//
SysMenuId = _MenuId(_SYSMENU);
PadId = _GetNewItemId(SysMenuId);
if (_NewItem(SysMenuId, PadId, _LASTITEM, "\\<Added menu title"))
{
_Error(623); /* "Menu item cannot be defined." */
}
//
//   Define menu.
//
PopupId = _GetNewMenuId();
if (Error = _NewMenu(MPOPUP, PopupId))
{
_Error(-Error);
}
Bar1Id = _GetNewItemId(PopupId);
//
//      WARNING: Call _NewItem() before another _GetNewItemId().
//
if (_NewItem(PopupId, Bar1Id, _LASTITEM, "\\<1st item"))
{
_Error(623); /* "Menu item cannot be defined." */
}
Bar2Id = _GetNewItemId(PopupId);
if (_NewItem(PopupId, Bar2Id, _LASTITEM, "\\<2nd item"))
{
_Error(623); /* "Menu item cannot be defined." */
}
//
//   Attach menu to menu title.
//
_SetItemSubMenu(SysMenuId, PadId, PopupId);
_PutStr("\nSubMenu Id = "); putLong(PopupId);
//
//  Set up selection action.
//
retMenuId = _GetItemSubMenu(SysMenuId,PadId);
_PutStr("\nThis is the return value from  _GetItemSubMenu.  retMenuId = "); putLong(retMenuId);
_OnSelection(PopupId, -1, onSelection);
}
void FAR ShutDown()
{
_DisposeItem(SysMenuId, PadId);
_DisposeMenu(PopupId);
}
FoxInfo myFoxInfo[] =
{
{"STARTUP",   (FPFI) StartUp,  CALLONLOAD, ""},
{"SHUTDOWN",  (FPFI) ShutDown, CALLONUNLOAD, ""},
};
FoxTable _FoxTable =
{
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_GetItemId( ) (Rutina de biblioteca API) | _NewItem( ) (Rutina de biblioteca API) | _SetItemText( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_GetItemText( ) (Rutina de biblioteca API)

Copia el texto de una barra de menús o de un título de menú al búfer indicado por text.

void _GetItemText(MENUID menuid, ITEMID itemid, char FAR *text) MENUID menuid;            /* Menu identifier. */ ITEMID itemid;            /* Menu item identifier. */ char FAR *text;            /* Buffer address for text. */

Observaciones

El búfer debe tener una longitud mínima de 80 bytes.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo crea un menú con tres elementos y, a continuación, recupera el texto de cada elemento con _GetItemText( ).

Código Visual FoxPro

SET LIBRARY TO GETITEXT

Código C

#include <pro_ext.h>
FAR GetItemTextEx(ParamBlk FAR *parm)
{
MENUID menuId;
ITEMID itemId;
Point loc;
char FAR *itemText;
menuId = _GetNewMenuId();
_NewMenu(MPOPUP, menuId);
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<1st item");
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<2nd item");
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<3rd item");
loc.v = 10; loc.h = 20;
_SetMenuPoint(menuId, loc);
_ActivateMenu(menuId);
if ((itemText = _Alloca(80)) == 0)
{
_Error(182); // "Insufficient memory"
}
_GetItemText(menuId, _GetItemId(menuId, 0), itemText);
_PutStr("\nItem text of 1st item = "); _PutStr(itemText);
_GetItemText(menuId, _GetItemId(menuId, 1), itemText);
_PutStr("\nItem text of 2nd item = "); _PutStr(itemText);
_GetItemText(menuId, _GetItemId(menuId, 2), itemText);
_PutStr("\nItem text of 3rd item = "); _PutStr(itemText);
_Execute("WAIT WINDOW");
_DisposeMenu(menuId);
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) GetItemTextEx, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_GetItemSubMenu( ) (Rutina de biblioteca API) | _NewItem( ) (Rutina de biblioteca API) | _SetItemText( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_GetNewItemId( ) (Rutina de biblioteca API)

Devuelve un identificador que actualmente está disponible para su uso como identificador de elemento en el menú especificado.

ITEMID _GetNewItemId(MENUID menuid) MENUID menuid;            /* Menu identifier. */

Observaciones

Todos los elementos de un menú deben tener un identificador que sea exclusivo para ese menú.

Tras utilizar _GetNewItemId( ), anexe el nuevo elemento al menú con _NewItem( ) antes de volver a utilizar _GetNewItemId( ). Si no anexa el elemento al menú, las llamadas posteriores a _GetNewItemId( ) devuelven el mismo ITEMID.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo crea un menú con tres elementos. Antes de que se agregue cada elemento al menú, se genera un ITEMID único mediante una llamada a _GetNewItemId( ).

Código Visual FoxPro

SET LIBRARY TO GETNWIID

Código C

#include <pro_ext.h>
void putLong(long n)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = 10;
_PutValue(&val);
}
FAR GetNewItemId(ParamBlk FAR *parm)
{
MENUID menuId;
ITEMID itemId;
Point loc;
menuId = _GetNewMenuId();
_NewMenu(MPOPUP, menuId);
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<1st item");
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<2nd item");
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<3rd item");
loc.v = 10; loc.h = 20;
_SetMenuPoint(menuId, loc);
_MenuInteract(&menuId, &itemId);
_PutStr("\nmenuId ="); putLong(menuId);
_PutStr("\nitemId ="); putLong(itemId);
_DisposeMenu(menuId);
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) GetNewItemId, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_GetItemId( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro | _SetItemText( ) (Rutina de biblioteca API) | _NewItem( ) (Rutina de biblioteca API) | _GetNewMenuId( ) (Rutina de biblioteca API)


_GetNewMenuId( ) (Rutina de biblioteca API)

Devuelve un identificador de menú que esté disponible para su uso con otras funciones de menú.

MENUID _GetNewMenuId(void any) void any;                     /* Pointer. */

Observaciones

Todos los menús deben tener un identificador único.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo construye un menú con tres opciones. Antes de que el ejemplo pueda crear un menú mediante _NewMenu( ), es necesario que utilice _GetNewMenuId( ) para generar un MENUID único.

Código Visual FoxPro

SET LIBRARY TO GETNWMID

Código C

#include <pro_ext.h>
void putLong(long n)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = 10;
_PutValue(&val);
}
FAR GetNewItemId(ParamBlk FAR *parm)
{
MENUID menuId;
ITEMID itemId;
Point loc;
menuId = _GetNewMenuId();
_NewMenu(MPOPUP, menuId);
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<1st item");
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<2nd item");
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<3rd item");
loc.v = 10; loc.h = 20;
_SetMenuPoint(menuId, loc);
_MenuInteract(&menuId, &itemId);
_PutStr("\nmenuId ="); putLong(menuId);
_PutStr("\nitemId ="); putLong(itemId);
_DisposeMenu(menuId);
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) GetNewItemId, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_DisposeMenu( ) (Rutina de biblioteca API) | _MenuId( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_GetNextEvent( ) (Rutina de biblioteca API)

Lee el siguiente evento de EventRec y devuelve el tipo de evento.

int _GetNextEvent(EventRec FAR *event)
EventRec FAR *event;   /* Event. */

Observaciones

Los eventos nulos se generan cuando no se ha llevado a cabo ninguna otra actividad. Las rutinas inactivas no deben llamar a _GetNextEvent( ). Es posible llamar a _GetNextEvent( ) desde un controlador de eventos, pero debe hacerse con cuidado porque _GetNextEvent( ) llama al controlador de eventos de manera recursiva.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo es un bucle que consiste en una llamada a _GetNextEvent( ), seguida de una llamada a _DefaultProcess( ). Todos los eventos realizados durante este procedimiento reciben su procesamiento predeterminado.

Código Visual FoxPro

SET LIBR TO GETNXEV

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
EventRec ev;
int i;
for (i = 0; i < 16; i++) {
_GetNextEvent(&ev);
_DefaultProcess(&ev);
}
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", Example, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_ActivateHandler( ) (Rutina de biblioteca API) | _FindWindow( ) (Rutina de biblioteca API) | _GlobalToLocal( ) (Rutina de biblioteca API) | _MousePos( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro | _DefaultProcess( ) (Rutina de biblioteca API)


_GetObjectProperty( ) (Rutina de biblioteca API)

Devuelve el valor de la propiedad de un objeto.

int _GetObjectProperty(Value FAR *retval, Value FAR *objct, char FAR *prop)

Observaciones

El objeto al que hay que devolver una propiedad se especifica con *objct y la propiedad que hay que devolver se especifica con *prop.

El valor devuelto se coloca en la estructura de valor *retval.

Nota Siempre debe rellenar la estructura *retval con 0 antes de llamar a _GetObjectProperty( ).

_GetObjectProperty( ) devuelve 0 si tiene éxito; de lo contrario, se devuelve el valor negativo del correspondiente código de error de Visual FoxPro.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Vea también

_SetObjectProperty( ) (Rutina de biblioteca API) | Object (Propiedad) | ReadObject (Propiedad)


_GetOSPrompt( ) (Rutina de biblioteca API)

Devuelve el texto de un elemento de menú especificado. Si el elemento de menú contiene una definición de tecla de acceso, también se devuelve el carácter &.

void _GetOSPrompt(MENUID menuid, ITEMID itemid, char FAR *text)
MENUID menuid;            /* ID of menu from which to get prompt */ MENUID itemuid ;            /* Index (0-based) of menu item. */ char FAR *text;               /* Text of menu command. */

Observaciones

Se puede utilizar para programar aplicaciones con teclas de acceso independientes del lenguaje.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo devuelve el texto del primer comando del menú Archivo.

Código Visual FoxPro

SET LIBRARY TO MENUPROMPT

Código C

#include <pro_ext.h>
void FAR menuprompt(ParamBlk FAR *parm)
{
char prompt[256] ;
MenuId men ;
men = _MenuId(_FILE);
_GetOSPrompt(men, 0, prompt); //File New...
_RetChar(prompt);
}
FoxInfo myFoxInfo[] = {
{"MENUPROMPT", (FPFI) menuprompt, 0, ""}
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_GetNewMenuId( ) | _MenuId( ) | _NewMenu( ) | Acceso a la API de Visual FoxPro


_GlobalToLocal( ) (Rutina de biblioteca API)

Convierte un punto de las coordenadas relativas a la pantalla a las coordenadas relativas a la ventana.

void _GlobalToLocal(Point FAR *pt, WHANDLE wh) Point FAR *pt;               /* Point. */ WHANDLE wh;            /* Window handle. */

Observaciones

Antes de llamar a _GlobalToLocal( ), llame a _FindWindow( ) para determinar la ventana a que pertenece el punto.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo espera un clic del botón primario del ratón y, después, utiliza _FindWindow( ) para obtener el controlador de ventana para la posición del ratón. _GlobalToLocal( ) toma como parámetros el controlador de ventana y la posición absoluta del ratón y devuelve la posición del ratón con una posición relativa a la ventana.

Código Visual FoxPro

SET LIBRARY TO GLTOLOC

Código C

#include <pro_ext.h>
void putLong(long n, int width)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = width;
_PutValue(&val);
}
FAR FindWindowEx(ParamBlk FAR *parm)
{
WHANDLE wh;
Point mousePos;
int where;
// Get ratón position when left button goes down
_Execute("WAIT WINDOW 'Click In A Window' NOWAIT");
while (_InKey(0, MOUSEACTIVE | HIDECURSOR) != 151);
while (!_MousePos(&mousePos));
switch (where = _FindWindow(&wh, mousePos))
{
case inBorder:
_PutStr("\nMouse down inBorder"); break;
case inHelp:
_PutStr("\nMouse down inHelp"); break;
case inContent:
_PutStr("\nMouse down inContent"); break;
case inDrag:
_PutStr("\nMouse down inDrag"); break;
case inGrow:
_PutStr("\nMouse down inGrow"); break;
case inGoAway:
_PutStr("\nMouse down inGoAway"); break;
case inZoom:
_PutStr("\nMouse down inZoom"); break;
case inVUpArrow:
_PutStr("\nMouse down inVUpArrow"); break;
case inVDownArrow:
_PutStr("\nMouse down inVDownArrow"); break;
case inVPageUp:
_PutStr("\nMouse down inVPageUp"); break;
case inVPageDown:
_PutStr("\nMouse down inVPageDown"); break;
case inVThumb:
_PutStr("\nMouse down inVThumb"); break;
case inHUpArrow:
_PutStr("\nMouse down inHUpArrow"); break;
case inHDownArrow:
_PutStr("\nMouse down inHDownArrow"); break;
case inHPageUp:
_PutStr("\nMouse down inHPageUp"); break;
case inHPageDown:
_PutStr("\nMouse down inHPageDown"); break;
case inHThumb:
_PutStr("\nMouse down inHThumb"); break;
case inMenuBar:
_PutStr("\nMouse down inMenuBar"); break;
default:
_PutStr("\nMouse down someplace else"); break;
}
_GlobalToLocal(&mousePos, wh);
_PutStr("\nPosition relative to window:");
putLong(mousePos.v, 5);
_PutChr(' ');
putLong(mousePos.h, 5);
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) FindWindowEx, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_FindWindow( ) (Rutina de biblioteca API) | _MousePos( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro | _GlobalToLocalP( ) (Rutina de biblioteca API)


_GlobalToLocalP( ) (Rutina de biblioteca API)

Convierte un punto de coordenadas en píxeles relativas a la pantalla a coordenadas en píxeles relativas a la ventana.

void _GlobalToLocalP(Point FAR *pt, WHANDLE wh) Point FAR *pt;               /* Point. */ WHANDLE wh;            /* Window handle. */

Observaciones

Antes de llamar a _GlobalToLocalP( ), llame a _FindWindow( ) para determinar la ventana a que pertenece el punto.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo espera un clic del botón primario del ratón y, luego, utiliza _FindWindowP( ) para obtener el controlador de ventana para la posición del ratón. _GlobalToLocalP( ) toma como parámetros el controlador de ventana y la posición absoluta del ratón y devuelve la posición del ratón con una posición relativa a la ventana.

Código Visual FoxPro

SET LIBRARY TO GLTOLOCP

Código C

#include <pro_ext.h>
void putLong(long n, int width)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = width;
_PutValue(&val);
}
FAR FindWindowEx(ParamBlk FAR *parm)
{
WHANDLE wh;
Point mousePos;
int where;
// Get ratón position when left button goes down
_Execute("WAIT WINDOW 'Click In A Window' NOWAIT" );
while (_InKey(0, MOUSEACTIVE | HIDECURSOR) != 151);
while (!_MousePosP(&mousePos));
switch (where = _FindWindowP(&wh, mousePos))
{
case inBorder:
_PutStr("\nMouse down inBorder"); break;
case inHelp:
_PutStr("\nMouse down inHelp"); break;
case inContent:
_PutStr("\nMouse down inContent"); break;
case inDrag:
_PutStr("\nMouse down inDrag"); break;
case inGrow:
_PutStr("\nMouse down inGrow"); break;
case inGoAway:
_PutStr("\nMouse down inGoAway"); break;
case inZoom:
_PutStr("\nMouse down inZoom"); break;
case inVUpArrow:
_PutStr("\nMouse down inVUpArrow"); break;
case inVDownArrow:
_PutStr("\nMouse down inVDownArrow"); break;
case inVPageUp:
_PutStr("\nMouse down inVPageUp"); break;
case inVPageDown:
_PutStr("\nMouse down inVPageDown"); break;
case inVThumb:
_PutStr("\nMouse down inVThumb"); break;
case inHUpArrow:
_PutStr("\nMouse down inHUpArrow"); break;
case inHDownArrow:
_PutStr("\nMouse down inHDownArrow"); break;
case inHPageUp:
_PutStr("\nMouse down inHPageUp"); break;
case inHPageDown:
_PutStr("\nMouse down inHPageDown"); break;
case inHThumb:
_PutStr("\nMouse down inHThumb"); break;
case inMenuBar:
_PutStr("\nMouse down inMenuBar"); break;
default:
_PutStr("\nMouse down someplace else"); break;
}
_GlobalToLocalP(&mousePos, wh);
_PutStr("\nPosition relative to window:");
putLong(mousePos.v, 5);
_PutChr(' ');
putLong(mousePos.h, 5);
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", FindWindowEx, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_FindWindow( ) (Rutina de biblioteca API) | _MousePos( ) (Rutina de biblioteca API) | _GlobalToLocal( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_HandToPtr( ) (Rutina de biblioteca API)

Convierte un controlador de memoria a un puntero FAR (de 32-bits) que señala a la memoria asignada a este controlador.

void FAR * _HandToPtr(MHANDLE hand) MHANDLE hand;            /* Memory handle. */

Observaciones

Visual FoxPro puede reorganizar la memoria en cualquier momento en que el control se le transfiera a él o a otra rutina que no pertenezca al módulo actual.

Nota _HandToPtr( ) no provoca la reorganización de la memoria. El puntero devuelto por _HandToPtr( ) puede dejar de ser válido cuando el control se vuelva a transferir a Visual FoxPro, a menos que el controlador MHANDLE esté bloqueado. No conserve punteros a controladores de memoria no bloqueados a través de llamadas de función externas, a menos que sepa con seguridad que la llamada no origina la reorganización de la memoria.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo muestra en pantalla el parámetro de carácter. Utiliza _HandToPtr( ) para convertir el controlador de memoria del parámetro API a un puntero C.

Código Visual FoxPro

SET LIBRARY TO HANDTOPT
= HANDTOPTR("Hello, world.")  && displays "Hello, world" on screen

Código C

#include <pro_ext.h>
void NullTerminate(Value FAR *cVal)
{
if (!_SetHandSize(cVal->ev_handle, cVal->ev_length + 1))
{
_Error(182); // "Insufficient memory"
}
((char FAR *) _HandToPtr(cVal->ev_handle))[cVal->ev_length] = '\0';
}
FAR Example(ParamBlk FAR *parm)
{
NullTerminate(&parm->p[0].val);
_HLock(parm->p[0].val.ev_handle);
_PutStr(_HandToPtr(parm->p[0].val.ev_handle));
_HUnLock(parm->p[0].val.ev_handle);
}
FoxInfo myFoxInfo[] = {
{"HANDTOPTR", (FPFI) Example, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_AllocHand( ) (Rutina de biblioteca API) | _FreeHand( ) (Rutina de biblioteca API) | _GetHandSize( ) (Rutina de biblioteca API) | _HLock( ) (Rutina de biblioteca API) | _HUnLock( ) | _MemAvail( ) (Rutina de biblioteca API) | _SetHandSize( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_HLock( ) (Rutina de biblioteca API)

Bloquea un controlador de memoria para impedir que se mueva si Visual FoxPro necesita reorganizar la memoria.

void _HLock(MHANDLE hand) MHANDLE hand;            /* Memory handle. */

Observaciones

_HLock( ) no origina la reorganización de la memoria. Desbloquee el controlador MHANDLE en cuanto el bloqueo haya logrado su propósito.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo muestra en pantalla el parámetro de carácter. Utiliza _HandToPtr( ) para convertir el controlador de memoria del parámetro API a un puntero C. Dado que es posible que Visual FoxPro decida reorganizar la memoria durante la llamada a _PutStr( ), para garantizar que la ejecución sea correcta, el ejemplo bloquea el controlador de memoria con _HLock( ). El ejemplo también llama a _HUnLock( ) al final, ya que el rendimiento de Visual FoxPro se puede ver afectado negativamente por los controladores de memoria bloqueados.

Código Visual FoxPro

SET LIBRARY TO HLOCK
= HLOCK("Hello, world.") && displays "Hello, world" on screen

Código C

#include <pro_ext.h>
void NullTerminate(Value FAR *cVal)
{
if (!_SetHandSize(cVal->ev_handle, cVal->ev_length + 1))
{
_Error(182); // "Insufficient memory"
}
((char FAR *) _HandToPtr(cVal->ev_handle))[cVal->ev_length] = '\0';
}
FAR Example(ParamBlk FAR *parm)
{
NullTerminate(&parm->p[0].val);
_HLock(parm->p[0].val.ev_handle);
_PutStr(_HandToPtr(parm->p[0].val.ev_handle));
_HUnLock(parm->p[0].val.ev_handle);
}
FoxInfo myFoxInfo[] = {
{"HLOCK", (FPFI) Example, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_AllocHand( ) (Rutina de biblioteca API) | _FreeHand( ) (Rutina de biblioteca API) | _GetHandSize( ) (Rutina de biblioteca API) | _HandToPtr( ) (Rutina de biblioteca API) | _HUnLock( ) (Rutina de biblioteca API) | _MemAvail( ) (Rutina de biblioteca API) | _SetHandSize( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_HUnLock( ) (Rutina de biblioteca API)

Desbloquea un controlador de memoria de manera que Visual FoxPro pueda tener acceso al mismo durante la reorganización de la memoria.

void _HUnLock(MHANDLE hand) MHANDLE hand;            /* Memory handle. /

Observaciones

_HUnLock( ) no origina la reorganización de la memoria.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo utiliza _RetDateStr( ) para devolver un tipo de fecha de Visual FoxPro, siempre y cuando el parámetro de carácter sea una fecha adecuada. Ejecute _HUnLock( ) cuando ya no necesite tener bloqueados los controladores de memoria, ya que el rendimiento de Visual FoxPro se puede ver afectado negativamente por los controladores de memoria bloqueados.

Código Visual FoxPro

SET LIBRARY TO HUNLOCK
? DATES("2/16/95")  && returns date {02/16/95}

Código C

#include <pro_ext.h>
void FAR dates(ParamBlk FAR *parm)
{
MHANDLE mh;
char FAR *instring;
if ((mh = _AllocHand(parm->p[0].val.ev_length + 1)) == 0)
{
_Error(182); // "Insufficient memory"
}
_HLock(parm->p[0].val.ev_handle);
instring = _HandToPtr(parm->p[0].val.ev_handle);
instring[parm->p[0].val.ev_length] = '\0';
_RetDateStr(instring);
_HUnLock(parm->p[0].val.ev_handle);
}
FoxInfo myFoxInfo[] = {
{"DATES", (FPFI) dates, 1, "C"}
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_AllocHand( ) (Rutina de biblioteca API) | _FreeHand( ) (Rutina de biblioteca API) | _GetHandSize( ) (Rutina de biblioteca API) | _HandToPtr( ) (Rutina de biblioteca API) | _HLock( ) (Rutina de biblioteca API) | _MemAvail( ) (Rutina de biblioteca API) | _SetHandSize( ) (Rutina de biblioteca API)


_InKey( ) (Rutina de biblioteca API)

Devuelve la primera tecla presionada durante el período timeout.

int _InKey(int timeout, int flag) int timeout;                  /* Timeout period. */ int flag;                     /* Option(s). */

Observaciones

El período timeout se especifica como un número de pulsaciones del cronómetro del sistema operativo (1000/segundo). Un período de espera de 0 hace que Visual FoxPro espere hasta que se presione una tecla. Un período de espera negativo hace que _InKey( ) vuelva inmediatamente al programa que realiza la llamada si el usuario no presiona una tecla.

Puede especificar flag como una de estas opciones o como ambas:

  • SHOWCURSOR o HIDECURSOR
  • MOUSEACTIVE

Utilice SHOWCURSOR para hacer que aparezca el cursor o HIDECURSOR para hacer que desaparezca. Si no especifica ninguno de los dos, el cursor respetará el valor de SYS(2002). El valor del indicador adicional MOUSEACTIVE hace que _InKey( ) trate los clics del ratón (ratón) como pulsaciones de tecla. _InKey devuelve 151 para un clic del ratón. Para especificar dos valores de indicador, utilice los operadores C | o +.

Nota Las rutinas inactivas no deben llamar a _InKey( ).

Puede escribir controladores de eventos que llamen a _InKey( ), pero deberá tener cuidado, ya que _InKey( ) llama a los controladores de eventos de forma recursiva.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente llama a _InKey( ) desde Visual FoxPro con dos indicadores.

Código Visual FoxPro

SET LIBRARY TO INKEY
#define SHOWCURSOR   1
#define HIDECURSOR   2
#define MOUSEACTIVE 4
= XINKEY(0, SHOWCURSOR + MOUSEACTIVE)

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
_RetInt(_InKey((int) parm->p[0].val.ev_long,
(int) parm->p[1].val.ev_long), 10);
}
FoxInfo myFoxInfo[] = {
{"XINKEY", (FPFI) Example, 2, "I,I"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

INKEY( ) (Función) | Acceso a la API de Visual FoxPro | ReadTimeout (Propiedad)


_Load( ) (Rutina de biblioteca API)

Coloca el valor de la variable de memoria o el campo de registro actual especificado por loc en val.

int _Load(Locator FAR *loc, Value FAR *val) Locator FAR *loc;         /* Variable location. */ Value FAR *val;            /* Holds value of the variable. */

Observaciones

_Load( ) devuelve 0 si la rutina se ejecuta correctamente. Si la rutina falla, devuelve un entero negativo cuyo valor absoluto es un número de error de Visual FoxPro. Puede utilizar _Load( ) para recuperar el contenido de un campo memo, pero no recuperará caracteres del campo después de los primeros 65.000 bytes. Si loc especifica una matriz unidimensional, Visual FoxPro devuelve el valor del primer elemento de la matriz.

_Load( ) no funciona con objetos. Si loc especifica una referencia de objeto, _Load( ) devuelve 0 sin llenar la estructura de valores val. Utilice _Evaluate( ) para obtener una referencia de objeto.

Si el valor del campo Locator l_offset es – 1, Visual FoxPro devolverá una estructura de valor lógico que indica si se elimina el registro actual del área de trabajo especificada:

  • ev_length = .T. = DELETED( )
  • ev_length = .F. = NOT DELETED( )
    Nota _Load( ) sólo crea un identificador cuando la variable de memoria que está cargando el programa es una cadena de caracteres (ev_type = 'C'). Los demás tipos de datos almacenan sus valores en la misma estructura Value. El programa debe liberar los identificadores creados con _Load( ).

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente convierte a mayúsculas un argumento de cadena pasado por referencia.

Código Visual FoxPro

SET LIBRARY TO LOAD
x = "abc"
= XUPPER(@x)
? x

Código C

#include <pro_ext.h>
void FAR Upper(ParamBlk FAR *parm)
{
char FAR *pString;
Value val;
int i;
//
//   _Load() and _Store are the functions of interest for pass-by-reference.
//
_Load(&parm->p[0].loc, &val);
//
//   FoxPro doesn't check the type of pass-by-reference arguments, so we do.
//
if (val.ev_type != 'C')
{
_Error(9); // "Data type mismatch"
}
pString = _HandToPtr(val.ev_handle);
for (i = 0; i < val.ev_length; i++)
{
if ('a' <= *pString && *pString <= 'z')
{
*pString += ('A' - 'a');
}
pString++;
}
_Store(&parm->p[0].loc, &val);
//
// We need to free the handle that we created with  _LOAD()
//
_FreeHand(val.ev_handle);
}
FoxInfo myFoxInfo[] =
{
{"XUPPER", (FPFI) Upper, 1, "R"},
};
FoxTable _FoxTable =
{
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_ALen( ) (Rutina de biblioteca API) | _FindVar( ) (Rutina de biblioteca API) | _NameTableIndex( ) (Rutina de biblioteca API) | _NewVar( ) (Rutina de biblioteca API) | _Release( ) | _Store( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_MemAvail( ) (Rutina de biblioteca API)

Determina si hay suficiente memoria disponible para asignar un controlador de memoria de size bytes.

BOOL _MemAvail(unsigned long size) unsigned int size;            /* Size of memory handle in bytes. */

Observaciones

La función devuelve verdadero (un entero distinto de 0) si hay suficiente memoria disponible; de lo contrario, devuelve falso (0).

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente crea una lista vinculada de asignaciones de controlador de memoria de 1 KB hasta que se utilice la memoria disponible. A continuación, libera las asignaciones y devuelve el número de asignaciones realizadas. _MemAvail( ) se emplea para terminar el primer bucle while.

Código Visual FoxPro

SET LIBRARY TO MEMAVAIL
? MEMAVAIL()  && displays approx. memory available in K

Código C

#include <pro_ext.h>
#define ALLOCSIZE 1024
FAR Example(ParamBlk FAR *parm)
{
int nHandles = 0;
MHANDLE head = 0, mh;
while (_MemAvail(ALLOCSIZE))
{
mh = _AllocHand(ALLOCSIZE);
*((MHANDLE *) _HandToPtr(mh)) = head;
head = mh;
nHandles++;
}
_RetInt(nHandles, 10);
while (head != 0)
{
mh = *((MHANDLE *) _HandToPtr(head));
_FreeHand(head);
head = mh;
}
}
FoxInfo myFoxInfo[] = {
{"MEMAVAIL", (FPFI) Example, 0, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_AllocHand( ) (Rutina de biblioteca API) | _FreeHand( ) (Rutina de biblioteca API) | _GetHandSize( ) (Rutina de biblioteca API) | _HandToPtr( ) (Rutina de biblioteca API) | _HLock( ) (Rutina de biblioteca API) | _HUnLock( ) (Rutina de biblioteca API) | _SetHandSize( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_MemCmp( ) (Rutina de biblioteca API)

Compara dos áreas de memoria de length bytes.

int _MemCmp(void FAR *ptr1, void FAR *ptr2, unsigned int length) void FAR *ptr1;            /* First point to start compare. */ void FAR *ptr2;            /* Second point to start compare. */ unsigned int length;         /* How much to compare in bytes. */

Observaciones

_MemCmp( ) compara cada byte de las dos áreas, a partir del byte situado más la izquierda en cada una de ellas, hasta que haya dos bytes que no coincidan. _MemCmp( ) devuelve 0 si coinciden todos los bytes de las áreas, un número positivo si el primer byte que no coincide de la primera área es mayor que el byte correspondiente de la segunda área o un número negativo si el primer byte que no coincide de la segunda área es mayor que el byte correspondiente de la primera área.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente utiliza _MemCmp( ) para comparar dos parámetros de caracteres hasta la longitud del primer byte que no coincida.

Código Visual FoxPro

SET LIBRARY TO MEMCMP
? MEMCMP("Hello, world.", "Hello, world.")  && returns 0
? MEMCMP("Hello, world.", "Hello, wurld.")  && returns non-0

Código C

#include <pro_ext.h>
#define min(a, b) ((a) < (b) ? (a) : (b))
FAR Example(ParamBlk FAR *parm)
{
int LenToCmp, RetValue;
LenToCmp = min(parm->p[0].val.ev_length, parm->p[1].val.ev_length);
_HLock(parm->p[0].val.ev_handle);
_HLock(parm->p[1].val.ev_handle);
RetValue = _MemCmp(_HandToPtr(parm->p[0].val.ev_handle),
_HandToPtr(parm->p[1].val.ev_handle), LenToCmp);
_RetInt(RetValue, 10); // does return control here
_HUnLock(parm->p[0].val.ev_handle);
_HUnLock(parm->p[1].val.ev_handle);
}
FoxInfo myFoxInfo[] = {
{"MEMCMP", (FPFI) Example, 2, "C,C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_MemFill( ) (Rutina de biblioteca API) | _MemMove( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_MemFill( ) (Rutina de biblioteca API)

Rellena un área de memoria a partir de la ubicación señalada por ptr con length copias del byte indicado por el parámetro character.

void _MemFill(void FAR *ptr, int character, unsigned int length) void FAR *ptr;               /* Starting point for fill. */ int character;               /* Character for fill. */ unsigned int length;         /* How many bytes to fill. */

Ejemplo

El ejemplo siguiente utiliza _MemFill( ) para duplicar la funcionalidad de la función REPLICATE( ) de Visual FoxPro.

Código Visual FoxPro

SET LIBRARY TO MEMFILL
x = xREPLICATE("x", 120)
? x
? LEN(x)

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
char FAR *rep;
char c = *(char *) _HandToPtr(parm->p[0].val.ev_handle);
rep = _Alloca((int) parm->p[1].val.ev_long + 1);
_MemFill(rep, c, (int) parm->p[1].val.ev_long);
rep[parm->p[1].val.ev_long] = '\0';
_RetChar(rep);
}
FoxInfo myFoxInfo[] = {
{"XREPLICATE", (FPFI) Example, 2, "C,I"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_MemCmp( ) (Rutina de biblioteca API) | _MemMove( ) (Rutina de biblioteca API) | _MemAvail( ) (Rutina de biblioteca API)


_MemMove( ) (Rutina de biblioteca API)

Copia length bytes de src a dest.

void _MemMove(void FAR *dest, void FAR *src, unsigned int length) void FAR *dest;            /* Destination. */ void FAR *src;               /* Starting position. */ unsigned int length;         /* How many bytes to move. */

Observaciones

Los movimientos superpuestos se llevan a cabo en el sentido adecuado para evitar que se degraden los datos.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente utiliza _MemMove( ) para implementar una función de subcadena. Desde Visual FoxPro, MEMMOVE(s, n1, n2) devuelve la subcadena de s; comienza en la posición n1 y termina en la posición n2.

Código Visual FoxPro

SET LIBRARY TO MEMMOVE
? MEMMOVE("Hello, world.", 8, 10)  && returns "wor"

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
int SubstrLen;
MHANDLE bufferHandle;
char FAR *FirstDest;
SubstrLen = parm->p[2].val.ev_long - parm->p[1].val.ev_long + 1;
if ((bufferHandle = _AllocHand(SubstrLen + 1)) == 0)
{
_Error(182); // "Insufficient memory"
}
_HLock(bufferHandle);
_HLock(parm->p[0].val.ev_handle);
FirstDest = (char FAR *) _HandToPtr(parm->p[0].val.ev_handle) +
parm->p[1].val.ev_long - 1;
_MemMove(_HandToPtr(bufferHandle), FirstDest, SubstrLen);
((char FAR *) _HandToPtr(bufferHandle))[SubstrLen] = '\0';
_RetChar(_HandToPtr(bufferHandle));
_HUnLock(bufferHandle);
_HUnLock(parm->p[0].val.ev_handle);
}
FoxInfo myFoxInfo[] = {
{"MEMMOVE", (FPFI) Example, 3, "C,I,I"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_MemCmp( ) (Rutina de biblioteca API) | _MemFill( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_MemoChan( ) (Rutina de biblioteca API)

Devuelve el canal de archivo del campo memo asociado con el área workarea especificada.

FCHAN _MemoChan(int workarea) int workarea;               /* Work area number. */

Observaciones

Si no hay ninguna base de datos abierta o si la base de datos no tiene un archivo memo, _MemoChan( ) devuelve – 1.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente obtiene el contenido de un campo memo. _MemoChan( – 1) devuelve un canal de archivo al archivo memo para el área de trabajo actual. Este FCHAN se utiliza como argumento para las repeticiones de llamada a la API de E/S de archivo de bajo nivel.

Código Visual FoxPro

SET LIBRARY TO MEMOCHAN
CREATE TABLE WMemo (MemoField M)
APPEND BLANK
REPLACE MemoField WITH "Hello, World."
? GETMEMO(@MemoField)

Código C

#include <pro_ext.h>
FAR FindMemoEx(ParamBlk FAR *parm)
{
Locator FAR *memoFldLoc;
FCHAN fchMemo;
char FAR *memoContents;
int memoLen;
long loc;
if ((fchMemo = _MemoChan(-1)) == -1)
{
_UserError("_MemoChan() failed");
}
memoFldLoc = &parm->p[0].loc;
if ((loc = _FindMemo(memoFldLoc)) < 0)
{
_UserError("_FindMemo() failed");
}
if ((memoLen = _MemoSize(memoFldLoc)) < 0)
{
_UserError("_MemoSize() failed");
}
if ((memoContents = _Alloca(memoLen + 1)) == 0)
{
_Error(182); // "Insufficient memory"
}
_FSeek(fchMemo, loc, FS_FROMBOF);
_FRead(fchMemo, memoContents, memoLen);
memoContents[memoLen] = '\0';
_RetChar(memoContents);
}
FoxInfo myFoxInfo[] = {
{"GETMEMO", (FPFI) FindMemoEx, 1, "R"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_AllocMemo( ) (Rutina de biblioteca API) | _DBReplace( ) (Rutina de biblioteca API) | _FindMemo( ) (Rutina de biblioteca API) | _FOpen( ) (Rutina de biblioteca API) | _MemoSize( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_MemoSize( ) (Rutina de biblioteca API)

Devuelve la longitud del campo memo especificado en el archivo memo del registro actual.

long _MemoSize(Locator FAR *fld) Locator FAR *fld;            /* Memo field address. */

Observaciones

Cuando el campo memo del registro actual está vacío, o cuando fld no es un campo memo, _MemoSize( ) devuelve un entero negativo cuyo valor absoluto es un número de error de Visual FoxPro.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo recupera el contenido de un campo memo para el registro actual. _MemoSize( ) se emplea para determinar la cantidad de memoria que debe asignarse para un búfer y la cantidad de bytes que deben leerse del campo memo.

Código Visual FoxPro

SET LIBRARY TO MEMOSIZE
CREATE TABLE WMemo (MemoField M)
APPEND BLANK
REPLACE MemoField WITH "Hello, World."
? GETMEMO(@MemoField)

Código C

#include <pro_ext.h>
FAR FindMemoEx(ParamBlk FAR *parm)
{
Locator FAR *memoFldLoc;
FCHAN fchMemo;
char FAR *memoContents;
int memoLen;
long loc;
if ((fchMemo = _MemoChan(-1)) == -1)
{
_UserError("_MemoChan() failed");
}
memoFldLoc = &parm->p[0].loc;
if ((loc = _FindMemo(memoFldLoc)) < 0)
{
_UserError("_FindMemo() failed");
}
if ((memoLen = _MemoSize(memoFldLoc)) < 0)
{
_UserError("_MemoSize() failed");
}
if ((memoContents = _Alloca(memoLen + 1)) == 0)
{
_Error(182); // "Insufficient memory"
}
_FSeek(fchMemo, loc, FS_FROMBOF);
_FRead(fchMemo, memoContents, memoLen);
memoContents[memoLen] = '\0';
_RetChar(memoContents);
}
FoxInfo myFoxInfo[] = {
{"GETMEMO", (FPFI) FindMemoEx, 1, "R"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_AllocMemo( ) (Rutina de biblioteca API) | _DBReplace( ) (Rutina de biblioteca API) | _FindMemo( ) (Rutina de biblioteca API) | _MemoChan( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_MenuId( ) (Rutina de biblioteca API)

Devuelve el identificador del menú que corresponde al literal definido por el sistema para el menú del sistema o el título del menú.

MENUID _MenuId(long literal) long literal;                  /* System-defined literal. */

Observaciones

Los literales se definen en el archivo de inclusión PRO_EXT.H de la API.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente agrega un título de menú al menú del sistema. A continuación, agrega un menú desplegable con dos elementos. _MenuId( ) se emplea para obtener el MENUID del menú del sistema.

Código Visual FoxPro

SET LIBRARY TO MENUID

Código C

#include <pro_ext.h>
MENUID SysMenuId;
MENUID PopupId;
ITEMID PadId;
void putLong(long n)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = 10;
_PutValue(&val);
}
FAR onSelection(long menuId, long itemId)
{
_PutStr("\nitemId = "); putLong(itemId);
}
void FAR StartUp()
{
ITEMID Bar1Id;
ITEMID Bar2Id;
int Error;
// Add new menu title to SYSMENU.
SysMenuId = _MenuId(_SYSMENU);
PadId = _GetNewItemId(SysMenuId);
if (_NewItem(SysMenuId, PadId, _LASTITEM, "\\<Added menu title"))
{
_Error(623); /* "Menu item cannot be defined." */
}
// Define menu.
PopupId = _GetNewMenuId();
if (Error = _NewMenu(MPOPUP, PopupId))
{
_Error(-Error);
}
Bar1Id = _GetNewItemId(PopupId);
// WARNING: Call _NewItem() before another _GetNewItemId().
if (_NewItem(PopupId, Bar1Id, _LASTITEM, "\\<1st item"))
{
_Error(623); /* "Menu item cannot be defined." */
}
Bar2Id = _GetNewItemId(PopupId);
if (_NewItem(PopupId, Bar2Id, _LASTITEM, "\\<2nd item"))
{
_Error(623); /* "Menu item cannot be defined." */
}
// Attach menu to menu title
_SetItemSubMenu(SysMenuId, PadId, PopupId);
// Set up selection action.
_OnSelection(PopupId, -1, onSelection);
}
void FAR ShutDown()
{
_DisposeItem(SysMenuId, PadId);
_DisposeMenu(PopupId);
}
FoxInfo myFoxInfo[] = {
{"STARTUP",   (FPFI) StartUp,   CALLONLOAD,""},
{"SHUTDOWN",   (FPFI) ShutDown,   CALLONUNLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

SYS(1500) - Activar un elemento de menú del sistema | _GetNewMenuId( ) (Rutina de biblioteca API) | Nombres de menús del sistema | _MenuInteract( ) (Rutina de biblioteca API)


_MenuInteract( ) (Rutina de biblioteca API)

Establece el itemid y el menuid para indicar qué elemento de menú se ha elegido, si se ha elegido alguno.

int _MenuInteract(MENUID FAR *menuid, ITEMID FAR *itemid) MENUID FAR *menuid;      /* Pointer to menu identifier. */ ITEMID FAR *itemid;      /* Pointer to menu item identifier. */

Observaciones

Si el usuario elige un elemento de menú, _MenuInteract( ) devuelve 1. Si no elige ningún elemento (por ejemplo, si el usuario presiona la tecla ESC) _MenuInteract( ) devolverá 0.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente crea un menú con tres elementos y, a continuación, solicita al usuario que interactúe con el menú mediante una llamada a _MenuInteract( ).

Código Visual FoxPro

SET LIBRARY TO MENUINTE

Código C

#include <pro_ext.h>
void putLong(long n)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = 10;
_PutValue(&val);
}
FAR GetNewItemId(ParamBlk FAR *parm)
{
MENUID menuId;
ITEMID itemId;
Point loc;
menuId = _GetNewMenuId();
_NewMenu(MPOPUP, menuId);
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<1st item");
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<2nd item");
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<3rd item");
loc.v = 10; loc.h = 20;
_SetMenuPoint(menuId, loc);
_MenuInteract(&menuId, &itemId);
_PutStr("\nmenuId ="); putLong(menuId);
_PutStr("\nitemId ="); putLong(itemId);
_DisposeMenu(menuId);
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) GetNewItemId, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_MenuId( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro | _OnSelection( ) | _GetNewMenuId( ) (Rutina de biblioteca API)


_MousePos( ) (Rutina de biblioteca API)

Rellena pt con la posición actual del puntero del ratón (ratón).

int _MousePos(Point FAR *pt) Point FAR *pt;               /* Pointer. */

Observaciones

_MousePos( ) devuelve verdadero (un entero distinto de 0) si está presionado el botón primario del ratón cuando se llama a la función; de lo contrario, devuelve falso (0).

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente muestra la posición actual del puntero del ratón hasta que detecta un clic del botón primario del ratón.

Código Visual FoxPro

SET LIBRARY TO MOUSEPOS

Código C

#include <pro_ext.h>
void putLong(long n, int width)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = width;
_PutValue(&val);
}
FAR MousePosEx(ParamBlk FAR *parm)
{
Point mousePos;
while (!_MousePos(&mousePos))
{
_PutStr("\nvertical =");
putLong(mousePos.v, 5);
_PutStr("; horizontal =");
putLong(mousePos.h, 5);
}
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) MousePosEx, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_FindWindow( ) (Rutina de biblioteca API) | _GlobalToLocal( ) (Rutina de biblioteca API) | _MousePosP( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_MousePosP( ) (Rutina de biblioteca API)

Rellena pt con la posición actual del puntero del ratón en píxeles.

int _MousePosP(Point FAR *pt) Point FAR *pt;               /* Pointer. */

Observaciones

_MousePosP( ) devuelve verdadero (un entero distinto de 0) si está presionado el botón primario del ratón cuando se llama a la función; de lo contrario, devuelve falso (0).

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente muestra la posición actual del puntero del ratón hasta que detecta un clic del botón primario del ratón.

Código Visual FoxPro

SET LIBRARY TO MOUSEPOP

Código C

#include <pro_ext.h>
void putLong(long n, int width)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = width;
_PutValue(&val);
}
FAR MousePosPEx(ParamBlk FAR *parm)
{
Point mousePos;
while (!_MousePosP(&mousePos))
{
_PutStr("\nvertical =");
putLong(mousePos.v, 5);
_PutStr("; horizontal =");
putLong(mousePos.h, 5);
}
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) MousePosPEx, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_FindWindow( ) (Rutina de biblioteca API) | _GlobalToLocal( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_NameTableIndex( ) (Rutina de biblioteca API)

Devuelve el índice de tabla de nombres que corresponde a un nombre name específico o devuelve – 1 si ese nombre no está en la tabla de nombres.

NTI _NameTableIndex(char FAR *name) char FAR *name;            /* Name. */

Observaciones

El nombre name puede encontrarse en la tabla de nombres aunque no exista una variable con el nombre name. Para determinar si existe una variable con el nombre name, utilice _FindVar( ) y especifique el índice de tabla de nombres devuelto por _NameTableIndex( ) como parámetro nti.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente libera una variable de memoria cuyo nombre se da como argumento de carácter. Observe que _NameTableIndex( ) busca el nombre de la variable después de liberarse. Por consiguiente, _NameTableIndex( ) se utiliza en combinación con _FindVar( ) para comprobar que la variable de memoria está definida actualmente.

Código Visual FoxPro

SET LIBRARY TO NTI
x = 123
= XRELEASE("x")

Código C

#include <pro_ext.h>
FAR ReleaseEx(ParamBlk FAR *parm)
{
NTI nti;
char FAR *name;
int exitCode;
Locator loc;
//   Null terminate character string, name of variable
if (!_SetHandSize(parm->p[0].val.ev_handle,
parm->p[0].val.ev_length+1))
{
_Error(182); // "Insufficient memory"
}
_HLock(parm->p[0].val.ev_handle);
name = (char FAR *) _HandToPtr(parm->p[0].val.ev_handle);
name[parm->p[0].val.ev_length] = '\0';
if ((nti = _NameTableIndex(name)) == -1)
{
_HUnLock(parm->p[0].val.ev_handle);
_UserError("Cannot find variable in name table.");
}
_HUnLock(parm->p[0].val.ev_handle);
if (_FindVar(nti, -1, &loc))
{
_PutStr("\nVariable exists prior to _Release().");
}
if ((exitCode =_Release(nti)) < 0)
{
_Error(-exitCode);
}
_HLock(parm->p[0].val.ev_handle);
name = (char FAR *) _HandToPtr(parm->p[0].val.ev_handle);
name[parm->p[0].val.ev_length] = '\0';
if ((nti = _NameTableIndex(name)) != -1)
{
_PutStr("\n_NameTableIndex() still finds variable \
after it is released.");
}
_HUnLock(parm->p[0].val.ev_handle);
if (!_FindVar(nti, -1, &loc))
{
_PutStr("\nVariable does not exist after _Release().");
}
}
FoxInfo myFoxInfo[] = {
{"XRELEASE", (FPFI) ReleaseEx, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_ALen( ) (Rutina de biblioteca API) | _FindVar( ) (Rutina de biblioteca API) | _Load( ) (Rutina de biblioteca API) | _NewVar( ) (Rutina de biblioteca API) | _ObjectRelease( ) (Rutina de biblioteca API) | _Store( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_NewItem( ) (Rutina de biblioteca API)

Agrega un elemento con el identificador especificado itemid en el menú especificado por menuid.

int _NewItem(MENUID menuid, ITEMID itemid, ITEMID
beforeid, char FAR *prompt) MENUID menuid;            /* Menu identifier. */ ITEMID itemid;            /* New item identifier. */ ITEMID beforeid;            /* Identifier of item the new item precedes. */ char FAR *prompt;         /* Text for new menu item. */

Observaciones

El tipo del nuevo elemento de menú es automáticamente un título de menú o una barra, según el tipo de menú en que se inserte el elemento.

El parámetro beforeid especifica el identificador del elemento delante del cual va a situarse el nuevo elemento. Especifique beforeid como – 1 para indicar que el nuevo elemento será el primero de la lista o como - 2 para indicar que el elemento será el último de la lista. El prompt especifica el texto para el nuevo elemento de menú. _NewItem( ) devuelve 0 si se agrega un elemento; de lo contrario, devuelve – 1.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo construye un menú con tres elementos. Utiliza _NewItem( ) para agregar cada elemento al menú.

Código Visual FoxPro

SET LIBRARY TO NEWITEM

Código C

#include <pro_ext.h>
void putLong(long n)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = 10;
_PutValue(&val);
}
FAR GetNewItemId(ParamBlk FAR *parm)
{
MENUID menuId;
ITEMID itemId;
Point loc;
menuId = _GetNewMenuId();
_NewMenu(MPOPUP, menuId);
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<2nd item");
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -1, "\\<1st item");
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<3rd item");
loc.v = 10; loc.h = 20;
_SetMenuPoint(menuId, loc);
_MenuInteract(&menuId, &itemId);
_PutStr("\nmenuId ="); putLong(menuId);
_PutStr("\nitemId ="); putLong(itemId);
_DisposeMenu(menuId);
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) GetNewItemId, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_SetItemCmdKey( ) (Rutina de biblioteca API) | _SetItemSubMenu( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_NewMenu( ) (Rutina de biblioteca API)

Crea un nuevo menú del tipo especificado.

int _NewMenu(int mtype, MENUID menuid) int mtype;                  /* Menu type. */ MENUID menuid;            /* Menu identifier. */

Observaciones

Puede especificar MPOPUP o MBAR como parámetro mtype . El identificador del menú debe ser único.

Utilice _GetNewMenuId( ) para obtener un identificador del menú disponible. _NewMenu( ) devuelve 0 si logra crear un nuevo menú. Si no lo crea, _NewMenu( ) devuelve un entero negativo cuyo valor absoluto es un número de error de Visual FoxPro.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente emplea _NewMenu( ) para crear un menú.

Código Visual FoxPro

SET LIBRARY TO NEWMENU

Código C

#include <pro_ext.h>
void putLong(long n)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = 10;
_PutValue(&val);
}
FAR GetNewItemId(ParamBlk FAR *parm)
{
MENUID menuId;
ITEMID itemId;
Point loc;
menuId = _GetNewMenuId();
_NewMenu(MPOPUP, menuId);
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<2nd item");
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -1, "\\<1st item");
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<3rd item");
loc.v = 10; loc.h = 20;
_SetMenuPoint(menuId, loc);
_MenuInteract(&menuId, &itemId);
_PutStr("\nmenuId ="); putLong(menuId);
_PutStr("\nitemId ="); putLong(itemId);
_DisposeMenu(menuId);
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) GetNewItemId, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_ActivateMenu( ) (Rutina de biblioteca API) | _GetNewMenuId( ) (Rutina de biblioteca API) | _GetNewMenuId( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_NewVar( ) (Rutina de biblioteca API)

Crea una variable o una matriz.

NTI _NewVar(char FAR *name, Locator FAR *loc, int flag) char FAR *name;            /* Variable name. */ Locator FAR *loc;            /* Place. */ int flag;                     /* Scope. */

Observaciones

La definición de tipo NTI significa Name Table Index (Índice de tabla de nombres). Vea _NameTableIndex( ) (Rutina de biblioteca API) para obtener más información acerca del uso de Name Table Index.

El nombre de variable o matriz debe seguir las reglas estándar de Visual FoxPro para nombres de variable. La nueva variable se inicializa con el valor lógico Falso.

El valor del campo Locator l_subs determina el tipo de variable o matriz:

  • 0 – una variable escalar
  • 1 – una matriz unidimensional de tamaño l_sub1
  • 2 – una matriz de tamaño l_sub1 por l_sub2. Para obtener más información acerca de cómo puede crear una biblioteca de API e integrarla en Visual FoxPro, consulte Acceso a la API de Visual FoxPro.

El parámetro flag puede ser NV_PUBLIC o NV_PRIVATE. Las variables NV_PRIVATE se crean como si las creara la rutina Visual FoxPro que llamó a la rutina externa.

Si _NewVar( ) crea la variable, el campo l_NTI se rellena con el NTI no negativo de la variable creada y _NewVar( ) devuelve este número. Si falla _NewVar( ), devuelve un entero negativo cuyo valor absoluto es un número de error interno de Visual FoxPro.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente utiliza _NewVar( ) para crear tres variables.

Código Visual FoxPro

SET LIBRARY TO NEWVAR
*
* As defined in "pro_ext.h"
*
#define NV_PUBLIC   0
#define NV_PRIVATE   1
= xNewVar('var', 0, 0, 0, NV_PUBLIC)
DISPLAY MEMORY LIKE var
= xNewVar('onedim', 1, 5, 0, NV_PUBLIC)
DISPLAY MEMORY LIKE onedim
= xNewVar('twodim', 2, 5, 6, NV_PUBLIC)
DISPLAY MEMORY LIKE twodim

Código C

#include <pro_ext.h>
void FAR NewVarEx(ParamBlk FAR *parm)
{
char FAR *varName;
Locator loc;
int flag;
int retValue;
// Null terminate character string
if (!_SetHandSize(parm->p[0].val.ev_handle,
parm->p[0].val.ev_length+1))
{
_Error(182); // "Insufficient memory"
}
_HLock(parm->p[0].val.ev_handle);
varName = (char FAR *) _HandToPtr(parm->p[0].val.ev_handle);
varName[parm->p[0].val.ev_length] = '\0';
loc.l_subs = parm->p[1].val.ev_long;
loc.l_sub1 = parm->p[2].val.ev_long;
loc.l_sub2 = parm->p[3].val.ev_long;
flag = parm->p[4].val.ev_long;
if ((retValue = _NewVar(varName, &loc, flag)) < 0)
{
// _NewVar() returns negative Visual FoxPro error number
_Error(-retValue);
}
_HUnLock(parm->p[0].val.ev_handle);
}
FoxInfo myFoxInfo[] = {
{"XNEWVAR", (FPFI) NewVarEx, 5, "C,I,I,I,I"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_ALen( ) (Rutina de biblioteca API) | _FindVar( ) (Rutina de biblioteca API) | _Load( ) (Rutina de biblioteca API) | _NameTableIndex( ) (Rutina de biblioteca API) | _ObjectRelease( ) (Rutina de biblioteca API) | _Store( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_ObjectCmp( ) (Rutina de biblioteca API)

Compara las propiedades de dos objetos y devuelve 0 si sus propiedades y valores de propiedades son idénticos.

int _ObjectCmp(Value FAR *objct1, Value FAR *objct2)

Observaciones

Devuelve 0 si los objetos tienen idénticas propiedades e idénticos valores de propiedades. Devuelve -1 si un objeto tiene una propiedad que el otro objeto no tiene o si los objetos tienen propiedades idénticas pero los valores de una o más propiedades son diferentes.

Si ocurre un error (por ejemplo, si omite uno de los objetos), devuelve el valor negativo del código de error correspondiente de Visual FoxPro.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Vea también

_GetObjectProperty( ) (Rutina de biblioteca API) | _SetObjectProperty( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_ObjectReference( ) (Rutina de biblioteca API)

Aumenta el contador de referencia de un objeto.

int _ObjectReference(Value FAR *objct)

Observaciones

CLEAR MEMORY o CLEAR ALL libera un objeto API de la memoria.

Devuelve 0 a menos que se produzca un error. Cuando se produce un error, se devuelve un número negativo que representa un código interno de error.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Vea también

_FreeObject( ) (Rutina de biblioteca API) | _ObjectRelease( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_ObjectRelease( ) (Rutina de biblioteca API)

Disminuye el contador de referencia de un objeto.

int _ObjectRelease(Value FAR *objct)

Observaciones

Devuelve 0 a menos que se produzca un error. Cuando se produce un error, se devuelve un número negativo que representa un código interno de error.

Vea también

_FreeObject( ) (Rutina de biblioteca API) | _ObjectReference( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_OnSelection( ) (Rutina de biblioteca API)

Especifica una rutina que se va a ejecutar cuando el usuario elija el menú y el elemento especificados.

void _OnSelection(MENUID menuid, ITEMID itemid, FPFI routine) MENUID menuid;            /* Menu identifier. */ ITEMID itemid;            /* Item identifier. */ FPFI routine;               /* Routine to execute. */

Observaciones

Si especifica itemid como – 1, se ejecutará la rutina cuando el usuario elija cualquier elemento de menú. Una rutina asociada con un elemento individual anula un elemento asociado con todo el menú. Para cancelar una rutina de selección para un menú y un elemento determinados, pase (FPFI)0 como parámetro routine.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo crea un menú con tres elementos. Llama a _OnSelection( ) con un parámetro ITEMID de –1, lo que indica que se llamará a la función USERCHOICE( ) cuando el usuario elija cualquier elemento de este menú.

Código Visual FoxPro

SET LIBRARY TO ONSELECT

Código C

#include <pro_ext.h>
void putLong(long n)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = 10;
_PutValue(&val);
}
FAR onSelection(long menuId, long itemId)
{
_PutStr("\nitemId = "); putLong(itemId);
_DisposeMenu(menuId);
}
FAR activateMenu(ParamBlk FAR *parm)
{
MENUID menuId;
ITEMID itemId;
Point loc;
menuId = _GetNewMenuId();
_NewMenu(MPOPUP, menuId);
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<1st item");
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<2nd item");
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<3rd item");
loc.v = 10; loc.h = 20;
_SetMenuPoint(menuId, loc);
_ActivateMenu(menuId);
_OnSelection(menuId, -1, onSelection);
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) activateMenu, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

Acceso a la API de Visual FoxPro | _ActivateMenu( ) (Rutina de biblioteca API) | _MenuInteract( ) (Rutina de biblioteca API)


_PutChr( ) (Rutina de biblioteca API)

Muestra el carácter char en la posición de resultados de la ventana de resultado actual con su atributo normal (color 0).

void _PutChr(int char) int char;                     /* Character to display. */

Observaciones

_PutChr( ) considera a los caracteres especiales, por ejemplo, nueva línea, retorno de carro y campana, como caracteres de control y no los muestra en la pantalla.

Para mostrar el carácter que corresponde a uno de estos caracteres, sume 256 al valor del carácter.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente utiliza _PutChr( ) para mostrar en pantalla todos los caracteres de 8 bits.

Código Visual FoxPro

SET LIBRARY TO PUTCHR

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
int ch;
for (ch = 0; ch < 256; ch++)
{
_PutChr(ch);
}
}
FoxInfo myFoxInfo[] = {
{"PUTCHR", (FPFI) Example, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_PutStr( ) (Rutina de biblioteca API) | _PutValue( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_PutStr( ) (Rutina de biblioteca API)

Muestra una cadena terminada en nulo en la posición de resultados de la ventana de resultado actual con su atributo normal (color 0).

void _PutStr(char FAR *str) char FAR *str;               /* String to display. */

Observaciones

_PutStr( ) considera a los caracteres especiales, por ejemplo, nueva línea, retorno de carro y campana, como caracteres de control y no los muestra en la pantalla.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente utiliza _PutStr( ) para mostrar en pantalla su parámetro de tipo de carácter en mayúsculas.

Código Visual FoxPro

SET LIBRARY TO PUTSTR
= XUPPER("upper")  && displays "UPPER" on the screen

Código C

#include "pro_ext.h"
void NullTerminate(Value FAR *cVal)
{
if (!_SetHandSize(cVal->ev_handle, cVal->ev_length + 1))
{
_Error(182); // "Insufficient memory"
}
((char FAR *) _HandToPtr(cVal->ev_handle))[cVal->ev_length] = '\0';
}
FAR Example(ParamBlk FAR *parm)
{
char FAR *pString;
int i;
NullTerminate(&parm->p[0].val);
pString = _HandToPtr(parm->p[0].val.ev_handle);
for (i = 0; i < parm->p[0].val.ev_length; i++)
{
if ('a' <= *pString && *pString <= 'z')
{
*pString += ('A' - 'a');
}
pString++;
}
_HLock(parm->p[0].val.ev_handle);
_PutStr(_HandToPtr(parm->p[0].val.ev_handle));
_HUnLock(parm->p[0].val.ev_handle);
}
FoxInfo myFoxInfo[] = {
{"XUPPER", (FPFI) Example, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_PutChr( ) (Rutina de biblioteca API) | _PutValue( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro | _WPutChr( ) (Rutina de biblioteca API) | _WPutStr( ) (Rutina de biblioteca API)


_PutValue( ) (Rutina de biblioteca API)

Escribe el valor val en la posición de resultados de la ventana de resultado actual.

void _PutValue(Value FAR *val) Value FAR *val;            /* Value to display. */

Ejemplo

El ejemplo siguiente utiliza _PutValue( ) para mostrar en pantalla su parámetro de tipo de Character en mayúsculas.

Código Visual FoxPro

SET LIBRARY TO PUTVALUE
= XUPPER("upper")  && displays "UPPER" on screen

Código C

#include "pro_ext.h"
void NullTerminate(Value FAR *cVal)
{
if (!_SetHandSize(cVal->ev_handle, cVal->ev_length + 1))
{
_Error(182); // "Insufficient memory"
}
((char FAR *) _HandToPtr(cVal->ev_handle))[cVal->ev_length] = '\0';
}
FAR Example(ParamBlk FAR *parm)
{
char FAR *pString;
int i;
NullTerminate(&parm->p[0].val);
pString = _HandToPtr(parm->p[0].val.ev_handle);
for (i = 0; i < parm->p[0].val.ev_length; i++)
{
if ('a' <= *pString && *pString <= 'z')
{
*pString += ('A' - 'a');
}
pString++;
}
_PutValue(&parm->p[0].val);
}
FoxInfo myFoxInfo[] = {
{"XUPPER", (FPFI) Example, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_PutChr( ) (Rutina de biblioteca API) | _PutStr( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro | _WPutChr( ) (Rutina de biblioteca API) | _WPutStr( ) (Rutina de biblioteca API)


_Release( ) (Rutina de biblioteca API)

Libera de la memoria la matriz o la variable de memoria especificada.

int _Release(NTI n) NTI n;                     /* NTI number of variable or array to release. */

Observaciones

_Release( ) devuelve 0 si libera la matriz o la variable de memoria, o devuelve un entero cuyo valor absoluto es un número de error de Visual FoxPro si falla.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente libera una variable de memoria cuyo nombre se introduce como argumento de tipo carácter. _NameTableIndex( ) se emplea para encontrar el NTI de la variable.

Código Visual FoxPro

SET LIBRARY TO RELEASE
x = 123
= XRELEASE("x")

Código C

#include <pro_ext.h>
FAR ReleaseEx(ParamBlk FAR *parm)
{
NTI nti;
char FAR *name;
int exitCode;
Locator loc;
// Null terminate character string, name of variable
if (!_SetHandSize(parm->p[0].val.ev_handle,
parm->p[0].val.ev_length+1))
{
_Error(182); // "Insufficient memory"
}
_HLock(parm->p[0].val.ev_handle);
name = (char FAR *) _HandToPtr(parm->p[0].val.ev_handle);
name[parm->p[0].val.ev_length] = '\0';
if ((nti = _NameTableIndex(name)) == -1)
{
_HUnLock(parm->p[0].val.ev_handle);
_UserError("Cannot find variable in name table.");
}
_HUnLock(parm->p[0].val.ev_handle);
if (_FindVar(nti, -1, &loc))
{
_PutStr("\nVariable exists prior to _Release().");
}
if ((exitCode =_Release(nti)) < 0)
{
_Error(-exitCode);
}
_HLock(parm->p[0].val.ev_handle);
name = (char FAR *) _HandToPtr(parm->p[0].val.ev_handle);
name[parm->p[0].val.ev_length] = '\0';
if ((nti = _NameTableIndex(name)) != -1)
{
_PutStr("\n_NameTableIndex() still finds variable \
after it is released.");
}
_HUnLock(parm->p[0].val.ev_handle);
if (!_FindVar(nti, -1, &loc))
{
_PutStr("\nVariable does not exist after _Release().");
}
}
FoxInfo myFoxInfo[] = {
{"XRELEASE", (FPFI) ReleaseEx, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_ALen( ) (Rutina de biblioteca API) | _RetCurrency( ) (Rutina de biblioteca API) | _RetDateTimeStr( ) (Rutina de biblioteca API) | _FindVar( ) (Rutina de biblioteca API) | _Load( ) | _NameTableIndex( ) (Rutina de biblioteca API) | _NewVar( ) (Rutina de biblioteca API) | _Store( ) (Rutina de biblioteca API)


_RetChar( ) (Rutina de biblioteca API)

Establece el valor devuelto de la biblioteca como una cadena terminada en nulo.

void _RetChar(char FAR *string) char FAR *string;            /* String. */

Observaciones

Si necesita devolver una cadena que puede contener caracteres nulos incrustados, utilice la función _RetVal( ).

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente efectúa dos llamadas a _RetChar( ), lo que muestra que el control vuelve a la rutina API desde _RetChar( ) y que la última llamada a _RetChar( ) determina el valor devuelto a Visual FoxPro.

Código Visual FoxPro

SET LIBRARY TO RETCHAR

Código C

#include <pro_ext.h>
void FAR chars(ParamBlk FAR *parm)
{
char message[] = "Hello, world";
_RetChar(message);
}
FoxInfo myFoxInfo[] = {
{"CHARS", (FPFI) chars, 0, ""}
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_RetCurrency( ) (Rutina de biblioteca API) | _RetDateStr( ) (Rutina de biblioteca API) | _RetDateTimeStr( ) (Rutina de biblioteca API) | _RetFloat( ) (Rutina de biblioteca API) | _RetInt( ) | _RetLogical( ) (Rutina de biblioteca API) | _RetVal( ) (Rutina de biblioteca API)


_RetCurrency( ) (Rutina de biblioteca API)

Establece el valor devuelto de biblioteca como un valor de moneda.

void _RetCurrency(CCY money, int width) CCY money;         /* CCY - LARGE_INTEGER. */ int width;         /* Number of columns to display. */

Observaciones

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente convierte un valor de tipo numérico en un valor de tipo moneda.

Código Visual FoxPro

SET LIBRARY TO RETCURR
? xntom(100.1)

Código C

#include <pro_ext.h>
#include <math.h>
void FAR retcurr(ParamBlk FAR *parm)
{
CCY money;
money.HighPart = (long) (parm->p[0].val.ev_real*10000 / pow(2,32));
money.LowPart = (unsigned long) ((parm->p[0].val.ev_real - (double) (money.HighPart * pow(2,32)/10000.0)) *10000);
_RetCurrency(money,25);
}
FoxInfo myFoxInfo[] = {
{"XNTOM", (FPFI) retcurr, 1, "N"}
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_RetChar( ) (Rutina de biblioteca API) | _RetDateStr( ) (Rutina de biblioteca API) | _RetDateTimeStr( ) (Rutina de biblioteca API) | _RetFloat( ) (Rutina de biblioteca API) | _RetInt( ) (Rutina de biblioteca API) | _RetLogical( ) (Rutina de biblioteca API) | _RetVal( ) (Rutina de biblioteca API)


_RetDateStr( ) (Rutina de biblioteca API)

Establece el valor devuelto de la biblioteca como una fecha.

void _RetDateStr(char FAR *string) char FAR *string;            /* Date string. */

Observaciones

Especifique la cadena de fecha en formato mm/dd/año, donde el año puede tener dos o cuatro dígitos.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente convierte una cadena de caracteres en un tipo de datos de fecha y lo devuelve a Visual FoxPro.

Código Visual FoxPro

SET LIBRARY TO RETDATES
? DATES("02/16/95")  && returns date {02/16/95}

Código C

#include <pro_ext.h>
void FAR dates(ParamBlk FAR *parm)
{
MHANDLE mh;
char FAR *instring;
if ((mh = _AllocHand(parm->p[0].val.ev_length + 1)) == 0)
{
_Error(182); // "Insufficient memory"
}
_HLock(parm->p[0].val.ev_handle);
instring = _HandToPtr(parm->p[0].val.ev_handle);
instring[parm->p[0].val.ev_length] = '\0';
_RetDateStr(instring);
_HUnLock(parm->p[0].val.ev_handle);
}
FoxInfo myFoxInfo[] = {
{"DATES", (FPFI) dates, 1, "C"}
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_RetChar( ) (Rutina de biblioteca API) | _RetCurrency( ) (Rutina de biblioteca API) | _RetDateTimeStr( ) (Rutina de biblioteca API) | _RetFloat( ) (Rutina de biblioteca API) | _RetInt( ) (Rutina de biblioteca API) | _RetLogical( ) (Rutina de biblioteca API) | _RetVal( ) (Rutina de biblioteca API)


_RetDateTimeStr( ) (Rutina de biblioteca API)

Establece el valor devuelto de la biblioteca como fecha y hora.

void _RetDateTimeStr(char FAR *string) char FAR *string;            /* Datetime string. */

Observaciones

Especifique la cadena de fecha y hora en formato mm/dd/año hh:mm:ss, donde el año puede tener dos o cuatro dígitos. Consulte CTOT( ) (Función) si desea obtener una lista de formatos de fecha y hora válidos para la cadena de fecha y hora.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente convierte un valor de tipo fecha en un valor de tipo fecha y hora.

Código Visual FoxPro

SET LIBRARY TO RETDT
? xctot("2/16/95 12:07am")

Código C

#include <pro_ext.h>
void FAR datetime(ParamBlk FAR *parm)
{
MHANDLE mh;
char FAR *instring;
if ((mh = _AllocHand(parm->p[0].val.ev_length + 1)) == 0) {
_Error(182); // "Insufficient memory"
}
_HLock(parm->p[0].val.ev_handle);
instring = _HandToPtr(parm->p[0].val.ev_handle);
instring[parm->p[0].val.ev_length] = '\0';
_RetDateTimeStr(instring);
_HUnLock(parm->p[0].val.ev_handle);
}
FoxInfo myFoxInfo[] = {
{"XCTOT", (FPFI) datetime, 1, "C"}
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

CTOT( ) (Función) | _RetChar( ) (Rutina de biblioteca API) | _RetCurrency( ) | _RetFloat( ) (Rutina de biblioteca API) | _RetInt( ) (Rutina de biblioteca API) | _RetLogical( ) (Rutina de biblioteca API) | _RetVal( ) (Rutina de biblioteca API)


_RetFloat( ) (Rutina de biblioteca API)

Establece el valor devuelto de la biblioteca como un valor de signo flotante.

void _RetFloat(double flt, int width, int dec) double flt;                  /* Double precision floating point value. */ int width;                     /* Number of columns for number display. */ int dec;                     /* Number of decimal places. */

Observaciones

El parámetro width especifica el número de columnas que Visual FoxPro utiliza para mostrar el número, incluido un signo decimal si se necesita. Si no conoce el ancho, emplee 20. El parámetro dec especifica el número de posiciones decimales del número. Deberá establecer correctamente el número de posiciones decimales para garantizar que Visual FoxPro procesa el número correctamente. Si el número de posiciones decimales no es cero, el ancho deberá ser al menos dos veces mayor que dec.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente utiliza _RetFloat( ) para devolver la representación de signo flotante de un parámetro de fecha de Visual FoxPro.

Código Visual FoxPro

SET LIBRARY TO RETFLOAT
? RETFLOAT({2/16/95})  && returns float representation of date {2/16/95}

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
_RetFloat(parm->p[0].val.ev_real, 20, 4);
}
FoxInfo myFoxInfo[] = {
{"RETFLOAT", (FPFI) Example, 1, "D"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_RetChar( ) (Rutina de biblioteca API) | _RetCurrency( ) (Rutina de biblioteca API) | _RetDateStr( ) (Rutina de biblioteca API) | _RetDateTimeStr( ) (Rutina de biblioteca API) | _RetInt( ) (Rutina de biblioteca API) | _RetLogical( ) (Rutina de biblioteca API) | _RetVal( ) (Rutina de biblioteca API)


_RetInt( ) (Rutina de biblioteca API)

Establece el valor devuelto de la biblioteca como un valor numérico.

void _RetInt(long ival, int width) long ival;                     /* Long integer value. */ int width;                     /* Number of columns to display number. */

Observaciones

El parámetro width especifica el número de columnas que Visual FoxPro utiliza para mostrar el número. Si no conoce el ancho, emplee 10.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente lleva a cabo algunas operaciones en la tabla abierta en el área de trabajo actual. Muestra el valor devuelto por _RecCount( ).

Código Visual FoxPro

SET LIBRARY TO RETINT
? CTEST()

Código C

#include  <pro_ext.h>
#define nl _PutChr('\n')
long FAR CTest()
{
long rc,rec;
int workarea = -1;
int flag = 0;
int rn,recn;
rc = _DBRewind(workarea);
_PutStr("top");  nl;
rc = _DBSkip(workarea, 5);
_PutStr("skipped 5");  nl;
rc = _DBAppend(workarea,flag);
_PutStr("Appending"); nl;
rc = _DBRewind(workarea);
_PutStr("top");  nl;
rn = _DBRecCount(workarea);
_RetInt(rn, 10);
rec = rn;
return rn;
}
FoxInfo myFoxInfo[] = {
{"CTEST", (FPFI) CTest,0 , ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *)0, sizeof(myFoxInfo) / sizeof(FoxInfo), myFoxInfo
};

Vea también

_RetChar( ) (Rutina de biblioteca API) | _RetCurrency( ) (Rutina de biblioteca API) | _RetDateStr( ) (Rutina de biblioteca API) | _RetDateTimeStr( ) (Rutina de biblioteca API) | _RetFloat( ) (Rutina de biblioteca API) | _RetLogical( ) (Rutina de biblioteca API) | _RetVal( ) (Rutina de biblioteca API)


_RetLogical( ) (Rutina de biblioteca API)

Establece el valor devuelto de la biblioteca como un valor lógico.

void _RetLogical(int flag) int flag;                     /* Flag. */

Observaciones

_RetLogical( ) considera cero como Falso y cualquier valor distinto de cero como Verdadero.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente simula el lanzamiento de una moneda al aire. Devuelve .T. o .F. según la función de biblioteca RAND( ).

Código Visual FoxPro

SET LIBRARY TO RETLOGIC
? RETLOGICAL()  && returns .T. or .F. pseudo-randomly

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
_RetLogical(rand() % 2);
}
FoxInfo myFoxInfo[] = {
{"RETLOGICAL", (FPFI) Example, 0, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_RetChar( ) (Rutina de biblioteca API) | _RetCurrency( ) (Rutina de biblioteca API) | _RetDateStr( ) (Rutina de biblioteca API) | _RetDateTimeStr( ) (Rutina de biblioteca API) | _RetFloat( ) (Rutina de biblioteca API) | _RetInt( ) (Rutina de biblioteca API) | _RetVal( ) (Rutina de biblioteca API)


_RetVal( ) (Rutina de biblioteca API)

Devuelve cualquier tipo de datos de Visual FoxPro, salvo Memo.

void _RetVal(Value FAR *val) Value FAR *val;            /* Pointer to value structure. */

Observaciones

_RetVal( ) pasa una estructura de valores completa de Visual FoxPro. Debe llamar a _RetVal( ) para devolver una cadena que contiene caracteres nulos incrustados.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente utiliza _RetVal( ) para devolver el parámetro de tipo carácter convertido en mayúsculas.

Código Visual FoxPro

SET LIBRARY TO RETVAL
? XUPPER("upper")  && returns "UPPER"

Código C

#include "pro_ext.h"
void NullTerminate(Value FAR *cVal)
{
if (!_SetHandSize(cVal->ev_handle, cVal->ev_length + 1)) {
_Error(182); // "Insufficient memory"
}
((char FAR *) _HandToPtr(cVal->ev_handle))[cVal->ev_length] = '\0';
}
FAR Example(ParamBlk FAR *parm)
{
char FAR *pString;
int i;
NullTerminate(&parm->p[0].val);
pString = _HandToPtr(parm->p[0].val.ev_handle);
for (i = 0; i < parm->p[0].val.ev_length; i++)
{
if ('a' <= *pString && *pString <= 'z')
{
*pString += ('A' - 'a');
}
pString++;
}
_RetVal(&parm->p[0].val);
}
FoxInfo myFoxInfo[] = {
{"XUPPER", (FPFI) Example, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_RetChar( ) (Rutina de biblioteca API) | _RetCurrency( ) (Rutina de biblioteca API) | _RetDateStr( ) (Rutina de biblioteca API) | _RetDateTimeStr( ) (Rutina de biblioteca API) | _RetFloat( ) (Rutina de biblioteca API) | _RetInt( ) (Rutina de biblioteca API) | _RetLogical( ) (Rutina de biblioteca API)


_SetHandSize( ) (Rutina de biblioteca API)

Cambia la cantidad de memoria asignada al controlador del bloque de memoria hand.

unsigned short _SetHandSize(MHANDLE hand, unsigned long size) MHANDLE hand;            /* Memory block handle. */ unsigned int size;            /* New number of bytes. */

Observaciones

_SetHandSize( ) devuelve verdadero (un entero distinto de 0) si se produce la reasignación o devuelve falso (0) si no se produce. Los datos asociados con MHANDLE se reservan. Si hand es un MHANDLE bloqueado, _SetHandSize( ) fallará.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente utiliza _SetHandSize( ) para cambiar la cantidad de memoria asignada a un MHANDLE.

Código Visual FoxPro

SET LIBRARY TO SETHANDS
= HANDTOPTR("Hello, world.") && displays "Hello, world" on screen

Código C

#include <pro_ext.h>
void NullTerminate(Value FAR *cVal)
{
if (!_SetHandSize(cVal->ev_handle, cVal->ev_length + 1))
{
_Error(182); // "Insufficient memory"
}
((char FAR *) _HandToPtr(cVal->ev_handle))[cVal->ev_length] = '\0';
}
FAR Example(ParamBlk FAR *parm)
{
NullTerminate(&parm->p[0].val);
_HLock(parm->p[0].val.ev_handle);
_PutStr(_HandToPtr(parm->p[0].val.ev_handle));
_HUnLock(parm->p[0].val.ev_handle);
}
FoxInfo myFoxInfo[] = {
{"HANDTOPTR", (FPFI) Example, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_AllocHand( ) (Rutina de biblioteca API) | _FreeHand( ) (Rutina de biblioteca API) | _GetHandSize( ) (Rutina de biblioteca API) | _HandToPtr( ) (Rutina de biblioteca API) | _HLock( ) (Rutina de biblioteca API) | _HUnLock( ) (Rutina de biblioteca API) | _MemAvail( ) (Rutina de biblioteca API)


_SetItemCmdKey( ) (Rutina de biblioteca API)

Establece el método abreviado de teclado para el elemento especificado del menú y el texto que se muestra para el método abreviado de teclado.

void _SetItemCmdKey(MENUID menuid, ITEMID itemid, int key, char FAR *text) MENUID menuid;            /* Menu identifier. */ ITEMID itemid;            /* Menu item identifier. */ int key;                     /* Shortcut key. */ char FAR *text;            /* Displayed text. */

Observaciones

Si no desea mostrar un método abreviado de teclado, pase text como puntero a una cadena nula. Si desea que el sistema genere el texto predeterminado que se muestra, pase (char FAR *)0.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente crea un menú con tres elementos y asigna un método abreviado de teclado a cada elemento.

Código Visual FoxPro

SET LIBRARY TO SETICMDK

Código C

#include <pro_ext.h>
void putLong(long n)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = 10;
_PutValue(&val);
}
FAR onSelection(long menuId, long itemId)
{
_PutStr("\nitemId = "); putLong(itemId);
_DisposeMenu(menuId);
}
FAR SetItemCmdKeyEx(ParamBlk FAR *parm)
{
MENUID menuId;
ITEMID itemId;
Point loc;
menuId = _GetNewMenuId();
_NewMenu(MPOPUP, menuId);
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<1st item");
_SetItemCmdKey(menuId, itemId, altKey | 0x178, "Alt+1");
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<2nd item");
_SetItemCmdKey(menuId, itemId, altKey | 0x179, "Alt+2");
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<3rd item");
_SetItemCmdKey(menuId, itemId, altKey | 0x17a, "Alt+3");
loc.v = 10; loc.h = 20;
_SetMenuPoint(menuId, loc);
_ActivateMenu(menuId);
_OnSelection(menuId, -1, onSelection);
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) SetItemCmdKeyEx, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_GetItemCmdKey( ) (Rutina de biblioteca API) | _GetItemId( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro | _SetItemSubMenu( ) (Rutina de biblioteca API) | _SetItemText( ) (Rutina de biblioteca API)


_SetItemSubMenu( ) (Rutina de biblioteca API)

Asigna un submenú al elemento de menú especificado.

void _SetItemSubMenu(MENUID menuid, ITEMID itemid, MENUID submenuid) MENUID menuid;            /* Menu identifier. */ ITEMID itemid;            /* Menu item identifier. */ MENUID submenuid;         /* Submenu identifier. */

Observaciones

Puede utilizar _SetItemSubMenu( ) para agregar un menú a un título de menú o un submenú a un elemento de menú.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente agrega un título de menú al menú del sistema. Si utiliza _SetItemSubMenu( ), se agregará a este título de menú un menú con dos elementos.

Código Visual FoxPro

SET LIBRARY TO SETISUBM

Código C

#include <pro_ext.h>
MENUID SysMenuId;
MENUID PopupId;
ITEMID PadId;
void putLong(long n)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = 10;
_PutValue(&val);
}
FAR onSelection(long menuId, long itemId)
{
_PutStr("\nitemId = "); putLong(itemId);
}
void FAR StartUp()
{
ITEMID Bar1Id;
ITEMID Bar2Id;
int Error;
// Add new menu title to SYSMENU.
SysMenuId = _MenuId(_SYSMENU);
PadId = _GetNewItemId(SysMenuId);
if (_NewItem(SysMenuId, PadId, _LASTITEM, "\\<Added menu title"))
{
_Error(623); /* "Menu item cannot be defined." */
}
// Define menu.
PopupId = _GetNewMenuId();
if (Error = _NewMenu(MPOPUP, PopupId))
{
_Error(-Error);
}
Bar1Id = _GetNewItemId(PopupId);
// WARNING: Call _NewItem() before another _GetNewItemId().
if (_NewItem(PopupId, Bar1Id, _LASTITEM, "\\<1st item"))
{
_Error(623); /* "Menu item cannot be defined." */
}
Bar2Id = _GetNewItemId(PopupId);
if (_NewItem(PopupId, Bar2Id, _LASTITEM, "\\<2nd item"))
{
_Error(623); /* "Menu item cannot be defined." */
}
// Attach menu to menu title
_SetItemSubMenu(SysMenuId, PadId, PopupId);
// Set up selection action.
_OnSelection(PopupId, -1, onSelection);
}
void FAR ShutDown()
{
_DisposeItem(SysMenuId, PadId);
_DisposeMenu(PopupId);
}
FoxInfo myFoxInfo[] = {
{"STARTUP",    (FPFI) StartUp,   CALLONLOAD, ""},
{"SHUTDOWN",   (FPFI) ShutDown, CALLONUNLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_GetNewMenuId( ) (Rutina de biblioteca API) | _NewMenu( ) (Rutina de biblioteca API) | _SetItemText( ) (Rutina de biblioteca API) | _SetItemCmdKey( ) (Rutina de biblioteca API)


_SetItemText( ) (Rutina de biblioteca API)

Cambia el texto que se muestra para el elemento de menú especificado.

void _SetItemText(MENUID menuid, ITEMID itemid, char FAR *text) MENUID menuid;            /* Menu identifier. */ ITEMID itemid;            /* Menu item identifier. */ char FAR *text;            /* Text. */

Observaciones

El elemento de menú puede ser un título de menú o una barra.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El siguiente ejemplo construye un menú con tres elementos. A continuación, cambia el texto del elemento mediante _SetItemText( ).

Código Visual FoxPro

SET LIBRARY TO SETITEXT

Código C

#include <pro_ext.h>
FAR SetItemTextEx(ParamBlk FAR *parm)
{
MENUID menuId;
ITEMID itemId;
Point loc;
menuId = _GetNewMenuId();
_NewMenu(MPOPUP, menuId);
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<1st item");
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<2nd item");
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<3rd item");
loc.v = 10; loc.h = 20;
_SetMenuPoint(menuId, loc);
_ActivateMenu(menuId);
_Execute("WAIT WINDOW 'Original item text'");
_SetItemText(menuId, _GetItemId(menuId, 0),
"This was the 1st item");
_SetItemText(menuId, _GetItemId(menuId, 1),
"This was the 2nd item");
_SetItemText(menuId, _GetItemId(menuId, 2),
"This was the 3rd item");
_Execute("WAIT WINDOW 'New item text'");
_DisposeMenu(menuId);
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) SetItemTextEx, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_GetItemId( ) (Rutina de biblioteca API) | _GetItemText( ) (Rutina de biblioteca API) | _SetItemCmdKey( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_SetMenuPoint( ) (Rutina de biblioteca API)

Especifica la posición de pantalla del ángulo superior izquierdo, loc, de un menú.

void _SetMenuPoint(MENUID menuid, Point loc) MENUID menuid;            /* Menu identifier. */ Point loc;                  /* Position of upper-left corner of the menu. */

Observaciones

Un menú se suele colocar automáticamente según su tamaño y el método utilizado por el usuario para invocarlo. Esta rutina se proporciona para anular el posicionamiento automático.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

Se crea un menú y, a continuación, se activa en tres posiciones de pantalla distintas especificadas por _SetMenuPoint( ).

Código Visual FoxPro

SET LIBRARY TO SETMNPNT

Código C

#include <pro_ext.h>
FAR SetMenuPointEx(ParamBlk FAR *parm)
{
MENUID menuId;
ITEMID itemId;
Point loc;
menuId = _GetNewMenuId();
_NewMenu(MPOPUP, menuId);
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<1st item");
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<2nd item");
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<3rd item");
loc.v = 10; loc.h = 20;
_SetMenuPoint(menuId, loc);
_MenuInteract(&menuId, &itemId);
loc.v = 15; loc.h = 30;
_SetMenuPoint(menuId, loc);
_MenuInteract(&menuId, &itemId);
loc.v = 20; loc.h = 40;
_SetMenuPoint(menuId, loc);
_MenuInteract(&menuId, &itemId);
_DisposeMenu(menuId);
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) SetMenuPointEx, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_NewMenu( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro | _SetItemCmdKey( ) (Rutina de biblioteca API) | _SetMenuPointP( ) (Rutina de biblioteca API)


_SetMenuPointP( ) (Rutina de biblioteca API)

Especifica (en píxeles) la posición de pantalla del ángulo superior izquierdo, loc, de un menú.

void _SetMenuPointP(MENUID menuid, Point loc) MENUID menuid;            /* Menu identifier. */ Point loc;                  /* Position of upper left corner of the menu. */

Observaciones

Un menú se suele colocar automáticamente según su tamaño y el método utilizado por el usuario para invocarlo. Esta rutina se proporciona para anular el posicionamiento automático.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente crea un menú y, a continuación, lo activa en tres posiciones de pantalla distintas especificadas por _SetMenuPointP( ).

Código Visual FoxPro

SET LIBRARY TO SETMNPTP

Código C

#include <pro_ext.h>
FAR SetMenuPointPEx(ParamBlk FAR *parm)
{
MENUID menuId;
ITEMID itemId;
Point loc;
menuId = _GetNewMenuId();
_NewMenu(MPOPUP, menuId);
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<1st item");
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<2nd item");
itemId = _GetNewItemId(menuId);
_NewItem(menuId, itemId, -2, "\\<3rd item");
loc.v = 40; loc.h = 80;
_SetMenuPointP(menuId, loc);
_MenuInteract(&menuId, &itemId);
loc.v = 80; loc.h = 160;
_SetMenuPointP(menuId, loc);
_MenuInteract(&menuId, &itemId);
loc.v = 160; loc.h = 320;
_SetMenuPointP(menuId, loc);
_MenuInteract(&menuId, &itemId);
_DisposeMenu(menuId);
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", SetMenuPointPEx, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_NewMenu( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro | _SetMenuPoint( ) (Rutina de biblioteca API) | _GetNewItemId( ) (Rutina de biblioteca API)


_SetObjectProperty( ) (Rutina de biblioteca API)

Establece una propiedad para un objeto.

int _SetObjectProperty(Value FAR *objct, char FAR *prop, Value FAR *val, int fAdd)

Observaciones

El primer parámetro *objct es una referencia a un objeto; el segundo parámetro *prop es el nombre de la propiedad que hay que establecer; el tercer parámetro *val es el nuevo valor de propiedad.

El último parámetro fAdd es 0 o un valor distinto de cero que especifica si la propiedad se agrega al objeto si la propiedad no existe. Si fAdd es un valor distinto de cero y la propiedad que especifique no existe para el objeto, se agrega la propiedad al objeto como propiedad definida por el usuario y contiene el valor de la propiedad que especifique con *val. Si fAdd es 0 y la propiedad que especifique no existe para el objeto, no se agrega la propiedad al objeto.

_SetObjectProperty( ) devuelve 0 si tiene éxito; de lo contrario, devuelve el valor negativo del código de error correspondiente de Visual FoxPro.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Vea también

_GetObjectProperty( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro | Object (Propiedad) | ReadObject (Propiedad)


_Store( ) (Rutina de biblioteca API)

Reemplaza la variable de memoria especificada por loc por el valor val.

int _Store(Locator FAR *loc, Value FAR *val) Locator FAR *loc;            /* Memory variable locator. */ Value FAR *val;               /* Value to store. */

Observaciones

Haga referencia individual a elementos de matriz al establecer l_subs como el número de subíndices que ha especificado, y l_sub1 y l_sub2 como los subíndices actuales. El primer elemento de una matriz se numera como 1. Si loc especifica una matriz y l_subs es 0, _Store( ) guardará el valor de val en todos los elementos de la matriz.

_Store( ) devuelve 0 si tiene éxito. Si falla, _Store( ) devolverá un entero negativo cuyo valor absoluto será un número de error de Visual FoxPro. Si _Store( ) se queda sin memoria mientras almacena en una matriz, es posible que se hayan establecido los valores de algunos elementos de matriz, mientras que otros no.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente convierte a mayúsculas un argumento de cadena pasado por referencia.

Código Visual FoxPro

SET LIBRARY TO STORE
x = "abc"
= XUPPER(@x)
? x

Código C

#include <pro_ext.h>
void FAR Upper(ParamBlk FAR *parm)
{
char FAR *pString;
Value val;
int i;
//
//   _Load() and _Store are the functions of interest for pass-by-reference.
//
_Load(&parm->p[0].loc, &val);
//
//   FoxPro doesn't check the type of pass-by-reference arguments, so we do.
//
if (val.ev_type != 'C') {
_Error(9); // "Data type mismatch"
}
pString = _HandToPtr(val.ev_handle);
for (i = 0; i < val.ev_length; i++)  {
if ('a' <= *pString && *pString <= 'z') {
*pString += ('A' - 'a');
}
pString++;
}
_Store(&parm->p[0].loc, &val);
//
// We need to free the handle that we created with  _LOAD()
//
_FreeHand(val.ev_handle);
}
FoxInfo myFoxInfo[] = {
{"XUPPER", (FPFI) Upper, 1, "R"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_ALen( ) (Rutina de biblioteca API) | _FindVar( ) (Rutina de biblioteca API) | _Load( ) (Rutina de biblioteca API) | _NameTableIndex( ) (Rutina de biblioteca API) | _NewVar( ) (Rutina de biblioteca API) | _ObjectRelease( ) (Rutina de biblioteca API)


_StrCmp( ) (Rutina de biblioteca API)

Compara cada uno de los bytes de dos cadenas terminadas en nulo, a partir del byte de la izquierda.

int _StrCmp(char FAR *string1, char FAR *string2) char FAR *string1;         /* First comparison string. */ char FAR *string2;         /* Second comparison string. */

Observaciones

_StrCmp( ) devuelve 0 si coinciden string1 y string2, un número positivo si el primer byte que no coincide de string1 es mayor que el byte correspondiente de string2, o un número negativo si el primer byte que no coincide de string1 es menor que el byte correspondiente de string2.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente utiliza _StrCmp( ) para comparar dos cadenas pasadas como parámetros.

Código Visual FoxPro

SET LIBRARY TO STRCMP
? STRCMP("Hello, world.", "Hello, world.")  && matches; returns 0
? STRCMP("Hello, world.", "Hello, wurld.")  && no match; returns non-0

Código C

#include <pro_ext.h>
void NullTerminate(Value FAR *cVal)
{
if (!_SetHandSize(cVal->ev_handle, cVal->ev_length + 1))
{
_Error(182); // "Insufficient memory"
}
((char FAR *) _HandToPtr(cVal->ev_handle))[cVal->ev_length] = '\0';
}
FAR Example(ParamBlk FAR *parm)
{
int RetValue;
NullTerminate(&parm->p[0].val);
NullTerminate(&parm->p[1].val);
_HLock(parm->p[0].val.ev_handle);
_HLock(parm->p[1].val.ev_handle);
RetValue = _StrCmp(_HandToPtr(parm->p[0].val.ev_handle),
_HandToPtr(parm->p[1].val.ev_handle));
_RetInt(RetValue, 10); // does return control here
_HUnLock(parm->p[0].val.ev_handle);
_HUnLock(parm->p[1].val.ev_handle);
}
FoxInfo myFoxInfo[] = {
{"STRCMP", (FPFI) Example, 2, "C,C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_StrCpy( ) (Rutina de biblioteca API) | _StrLen( ) (Rutina de biblioteca API) | _PutStr( ) (Rutina de biblioteca API) | _WPutStr( ) (Rutina de biblioteca API) | _SetHandSize( ) (Rutina de biblioteca API) | Rutinas de manipulación de cadenas


_StrCpy( ) (Rutina de biblioteca API)

Copia una cadena terminada en nulo desde src a dest.

void _StrCpy(char FAR *dest, char FAR *src) char FAR *dest;            /* Destination location. */ char FAR *src;               /* Source location. */

Observaciones

_StrCpy( ) no admite movimientos superpuestos. Los movimientos superpuestos son necesarios cuando src y dest tienen algunos bytes en común. Si se necesitan movimientos superpuestos, utilice _MemMove( ).

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente se pasa como una matriz de Visual FoxPro de tipo Carácter. A continuación, reemplaza el segundo elemento mediante _Store( ).

Antes de llamar a MYFUNC( ), el código de ejemplo de Visual FoxPro crea una matriz y la inicializa como tipo Carácter. MYFUNC( ) pasa esta matriz por referencia.

Código Visual FoxPro

SET LIBRARY TO STRCPY
? STRCPY("Hello", " world")   && returns "Hello world"

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
#define p0 (parm->p[0].val)
#define p1 (parm->p[1].val)
if (!_SetHandSize(p0.ev_handle, p0.ev_length + p1.ev_length))
_Error(182); // "Insufficient memory"
_HLock(p0.ev_handle);
_HLock(p1.ev_handle);
((char FAR *) _HandToPtr(p1.ev_handle))[p1.ev_length] = '\0';
_StrCpy((char FAR *) _HandToPtr(p0.ev_handle) + p0.ev_length,
_HandToPtr(p1.ev_handle));
_RetChar(_HandToPtr(p0.ev_handle));
_HUnLock(p0.ev_handle);
_HUnLock(p1.ev_handle);
}
FoxInfo myFoxInfo[] = {
{"STRCPY", (FPFI) Example, 2, "C,C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_StrCmp( ) (Rutina de biblioteca API) | _StrLen( ) (Rutina de biblioteca API) | Rutinas de manipulación de cadenas | _PutStr( ) (Rutina de biblioteca API) | _WPutStr( ) (Rutina de biblioteca API)


_StrLen( ) (Rutina de biblioteca API)

Devuelve la longitud en bytes de la cadena terminada en nulo especificada.

int _StrLen(char FAR *string) char FAR *string;            /* String to be measured. */

Ejemplo

El ejemplo siguiente es similar a la función LEN( ) de Visual FoxPro, pero no puede controlar cadenas con '\0' incrustado.

Código Visual FoxPro

SET LIBRARY TO STRLEN
? STRLEN("Hello") && returns 5

Código C

#include <pro_ext.h>
void NullTerminate(Value FAR *cVal)
{
if (!_SetHandSize(cVal->ev_handle, cVal->ev_length + 1)) {
_Error(182); // "Insufficient memory"
}
((char FAR *) _HandToPtr(cVal->ev_handle))[cVal->ev_length] = '\0';
}
FAR Example(ParamBlk FAR *parm)
{
NullTerminate(&parm->p[0].val);
_HLock(parm->p[0].val.ev_handle);
_RetInt(_StrLen(_HandToPtr(parm->p[0].val.ev_handle)), 10);
_HUnLock(parm->p[0].val.ev_handle);
}
FoxInfo myFoxInfo[] = {
{"STRLEN", (FPFI) Example, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_StrCmp( ) (Rutina de biblioteca API) | _StrCpy( ) (Rutina de biblioteca API) | LEN( ) (Función) | Rutinas de manipulación de cadenas


_UserError( ) (Rutina de biblioteca API)

Indica un error con texto terminado en nulo que se especifica con message.

void _UserError(char FAR *message) char FAR *message;         /* Error message. */

Observaciones

El código interno de Visual FoxPro de este error es 98. El código devuelto por la función ERROR( ) de Visual FoxPro es 1098. La función MESSAGE( ) de Visual FoxPro devuelve al usuario el mensaje message que especifique. El control se pasa al controlador de errores de Visual FoxPro y no vuelve.

Nota No llame a _UserError( ) en una rutina CALLUNLOAD, ya que la biblioteca no se cargará debido a la llamada de _UserError( ); no se mostrará ningún mensaje.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente llama a _UserError( ), lo que muestra que la ejecución no vuelve a la rutina API después de _UserError( ).

Código Visual FoxPro

SET LIBRARY TO EXAMPLE
= EXAMPLE()

Código C

#include <pro_ext.h>
FAR UserErrorEx(ParamBlk FAR *parm)
{
_UserError("This is a _UserError() example.");
_PutStr("This should never be displayed.");
}
FoxInfo myFoxInfo[] = {
{"EXAMPLE", (FPFI) UserErrorEx, 0, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_Error( ) (Rutina de biblioteca API) | _ErrorInfo( ) (Rutina de biblioteca API) | ERROR( ) (Función) | MESSAGE( ) (Función) | Acceso a la API de Visual FoxPro


_WAttr( ) (Rutina de biblioteca API)

Devuelve el byte de atributo del índice de color especificado en el esquema de colores de la ventana.

int _WAttr(WHANDLE wh, int color) WHANDLE wh;            /* Window handle. */ int color;                     /* Color index. */

Ejemplo

El ejemplo siguiente pasa por cada uno de los colores del esquema y muestra su byte de atributo, que devuelve _WAttr( ).

Código Visual FoxPro

SET LIBRARY TO WATTR

Código C

#include <pro_ext.h>
void putLong(long n, int width)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = width;
_PutValue(&val);
}
FAR WAttrEx(ParamBlk FAR *parm)
{
int scheme;
int color;
WHANDLE wh;
int attrib, savePen;
for (scheme = 0; scheme <= 25; scheme++)
{
wh = _WOpen(2, 10, 23, 70, WEVENT, scheme, (Scheme FAR *) 0,
WO_SYSTEMBORDER);
for (color = WA_NORMAL; color <= WA_ISSHADOW; color++)
{
attrib  = _WAttr(wh, color);
savePen = _WAttr(_WGetPort(), WA_PENCOLOR);
_WSetAttr(_WGetPort(), WA_PENCOLOR, attrib);
_PutStr("\nScheme:"); putLong(scheme, 5);
_PutStr("; Color:"); putLong(color, 5);
_PutStr("; Attribute byte:"); putLong(attrib, 5);
_WSetAttr(_WGetPort(), WA_PENCOLOR, savePen);
}
_WClose(wh);
_Execute("WAIT");
}
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) WAttrEx, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WSetAttr( ) (Rutina de biblioteca API) | Cambiar atributos de fuentes (Ejemplo) | Acceso a la API de Visual FoxPro


_WBottom( ) (Rutina de biblioteca API)

Devuelve la fila de la pantalla en que se encuentra la parte inferior de la ventana especificada.

unsigned int _WBottom(WHANDLE wh) WHANDLE wh;            /* Window handle. */

Ejemplo

El ejemplo siguiente muestra la posición de la ventana activa.

Código Visual FoxPro

SET LIBRARY TO WBOTTOM
= WPOSITION()

Código C

#include <pro_ext.h>
void putLong(long n, int width)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = width;
_PutValue(&val);
}
void FAR Example(ParamBlk FAR *parm)
{
WHANDLE wh = _WOnTop();
_PutStr("\ntop   ="); putLong(_WTop(wh), 5);
_PutStr("\nleft ="); putLong(_WLeft(wh), 5);
_PutStr("\nbottom ="); putLong(_WBottom(wh), 5);
_PutStr("\nright  ="); putLong(_WRight(wh), 5);
}
FoxInfo myFoxInfo[] = {
{"WPOSITION", (FPFI) Example, 0, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WHeight( ) (Rutina de biblioteca API) | _WLeft( ) (Rutina de biblioteca API) | _WRight( ) (Rutina de biblioteca API) | _WTop( ) (Rutina de biblioteca API) | _WWidth( ) (Rutina de biblioteca API) | _WBottomP( ) (Rutina de biblioteca API)


_WBottomP( ) (Rutina de biblioteca API)

Devuelve la posición en pantalla (en píxeles) en que está situada la parte inferior de la ventana especificada.

unsigned int _WBottomP(WHANDLE wh) WHANDLE wh;            /* Window handle. */

Observaciones

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente muestra la posición de la ventana activa.

Código Visual FoxPro

SET LIBRARY TO WBOTTOM
=WPOSITION()

Código C

#include <pro_ext.h>
void putLong(long n, int width)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = width;
_PutValue(&val);
}
void FAR Example(ParamBlk FAR *parm)
{
WHANDLE wh = _WOnTop();
_PutStr("\ntop   ="); putLong(_WTopP(wh), 5);
_PutStr("\nleft ="); putLong(_WLeftP(wh), 5);
_PutStr("\nbottom ="); putLong(_WBottomP(wh), 5);
_PutStr("\nright  ="); putLong(_WRightP(wh), 5);
}
FoxInfo myFoxInfo[] = {
{"WPOSITION", Example, 0, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WHeightP( ) (Rutina de biblioteca API) | _WLeftP( ) (Rutina de biblioteca API) | _WRightP( ) (Rutina de biblioteca API) | _WTopP( ) (Rutina de biblioteca API) | _WWidthP( ) (Rutina de biblioteca API) | _WBottom( ) (Rutina de biblioteca API)


_WClear( ) (Rutina de biblioteca API)

Elimina el contenido de la ventana especificada al cambiar el área de contenido al color de fondo predeterminado.

void _WClear(WHANDLE wh) WHANDLE wh;            /* Window handle. */

Observaciones

La posición lógica del cursor no cambia.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente crea una ventana y la llena con caracteres X. Cuando el usuario presiona una tecla en respuesta a un comando WAIT de Visual FoxPro, _WClear( ) borra la ventana.

Código Visual FoxPro

SET LIBRARY TO WCLEAR

Código C

#include <pro_ext.h>
FAR WClearEx(ParamBlk FAR *parm)
{
WHANDLE wh;
int row, col;
wh = _WOpen(2,2,20,70,WEVENT | CLOSE,WINDOW_SCHEME,(Scheme FAR *) 0,
WO_SYSTEMBORDER);
_WShow(wh);
for (row = 0; row < _WHeight(wh); row++)
{
for (col = 0; col < _WWidth(wh); col++)
{
_WPutChr(wh, 'X');
}
_WPutChr(wh, '\n');
}
_Execute("WAIT WINDOW 'Press any key to clear window'");
_WClear(wh);
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) WClearEx, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WClearRect( ) (Rutina de biblioteca API) | _WClearRectP( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro | WAIT (Comando)


_WClearRect( ) (Rutina de biblioteca API)

Borra el área rectangular especificada de la ventana especificada al cambiar el color de fondo predeterminado del área.

void _WClearRect(WHANDLE wh, Rect r) WHANDLE wh;            /* Window handle. */ Rect r;                     /* Rectangle to clear. */

Observaciones

La posición de resultado no cambia.

El área del rectángulo va de la coordenada superior izquierda a la coordenada inferior derecha, sin incluirla. Esto significa que deberá declarar las coordenadas inferior y derecha como una unidad más que el tamaño deseado del rectángulo.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente crea una ventana y la llena con caracteres X. Cuando el usuario presiona una tecla en respuesta a un comando WAIT de Visual FoxPro, _WClearRect( ) borra una región rectangular de la ventana.

Código Visual FoxPro

SET LIBRARY TO WCLRECT

Código C

#include <pro_ext.h>
FAR WClearEx(ParamBlk FAR *parm)
{
WHANDLE wh;
int row, col;
Rect r;
wh = _WOpen(2,2,20,70,WEVENT | CLOSE,WINDOW_SCHEME,(Scheme FAR *) 0,
WO_SYSTEMBORDER);
_WShow(wh);
for (row = 0; row < _WHeight(wh); row++)
{
for (col = 0; col < _WWidth(wh); col++)
{
_WPutChr(wh, 'X');
}
}
_Execute("WAIT WINDOW 'Press any key to clear window rectangle'");
r.top    = 2;W
r.left    = 2;
r.bottom = 15;
r.right  = 65;
_WClearRect(wh, r);
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) WClearEx, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WClear( ) (Rutina de biblioteca API) | WAIT (Comando) | _WClearRectP( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_WClearRectP( ) (Rutina de biblioteca API)

Borra el área rectangular especificada de una ventana al cambiar el color predeterminado de fondo.

void _WClearRectP(WHANDLE wh, Rect r) WHANDLE wh;            /* Window handle. */ Rect r;                     /* Rectangle to clear. */

Observaciones

El área rectangular se especifica en píxeles. La posición de resultado no cambia.

El área del rectángulo va de la posición superior izquierda a la posición inferior derecha, sin incluirla. Esto significa que deberá declarar las posiciones inferior y derecha como un píxel más que el tamaño deseado del rectángulo.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente crea una ventana y la llena con caracteres X. Cuando el usuario presiona una tecla en respuesta a un comando WAIT de Visual FoxPro, _WClearRectP( ) borra una región rectangular de la ventana.

Código Visual FoxPro

SET LIBRARY TO WCLRECTP

Código C

#include <pro_ext.h>
FAR WClearEx(ParamBlk FAR *parm)
{
WHANDLE wh;
int row, col;
Rect r;
wh = _WOpen(2, 2, 20, 70, CLOSE, WINDOW_SCHEME, (Scheme FAR *) 0,
WO_SYSTEMBORDER);
_WShow(wh);
for (row = 0; row < _WHeight(wh); row++)
{
for (col = 0; col < _WWidth(wh); col++)
{
_WPutChr(wh, 'X');
}
}
_Execute("WAIT WINDOW 'Press any key to clear window rectangle'");
r.top    = 20;
r.left    = 20;
r.bottom = 100;
r.right  = 300;
_WClearRectP(wh, r);
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", WClearEx, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WClear( ) (Rutina de biblioteca API) | WAIT (Comando) | _WClearRect( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_WClose( ) (Rutina de biblioteca API)

Cierra la ventana especificada y libera toda la memoria asociada con la ventana.

void _WClose(WHANDLE wh) WHANDLE wh;            /* Window handle. */

Observaciones

Si la ventana se muestra en pantalla, _WClose( ) la elimina de la pantalla.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente crea y muestra una ventana. Cuando el usuario presiona una tecla en respuesta a un comando WAIT de Visual FoxPro, _WClose( ) cierra la ventana.

Código Visual FoxPro

SET LIBRARY TO WCLOSE

Código C

#include <pro_ext.h>
FAR Ex(ParamBlk FAR *parm)
{
WHANDLE wh;
int row, col;
Rect r;
wh = _WOpen(2, 2, 20, 70, 0, WINDOW_SCHEME, (Scheme FAR *) 0,
WO_SYSTEMBORDER);
_WShow(wh);
_Execute("WAIT WINDOW 'Press any key to close window'");
_WClose(wh);
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) Ex, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WOpen( ) (Rutina de biblioteca API) | WAIT (Comando) | Acceso a la API de Visual FoxPro


_WFindTitle( ) (Rutina de biblioteca API)

Devuelve el controlador WHANDLE de la ventana con el título especificado.

WHANDLE _WFindTitle(TEXT *title) TEXT *title;               /* Window title. */

Ejemplo

El ejemplo siguiente oculta la ventana cuyo título se pasa como argumento.

Código Visual FoxPro

SET LIBRARY TO WFINDTIT
CREATE TABLE X (X C(10))
BROWSE NOWAIT
SET LIBR TO WFINDTIT
= WHIDE("X")

Código C

#include <pro_ext.h>
void FAR WFindTitleEx(ParamBlk FAR *parm)
{
//   For readability:
#define pTITLE ((char FAR *) _HandToPtr(parm->p[0].val.ev_handle))
WHANDLE wh;
if (!_SetHandSize(parm->p[0].val.ev_handle,
parm->p[0].val.ev_length+1))
{
_Error(182); // "Insufficient memory"
}
_HLock(parm->p[0].val.ev_handle);
pTITLE[parm->p[0].val.ev_length] = '\0';
wh = _WFindTitle(pTITLE);
_HUnLock(parm->p[0].val.ev_handle);
_WHide(wh);
}
FoxInfo myFoxInfo[] = {
{"WHIDE", (FPFI) WFindTitleEx, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WSetTitle( ) (Rutina de biblioteca API) | _HUnLock( ) (Rutina de biblioteca API) | _WHide( ) (Rutina de biblioteca API) | _WTitle( ) (Rutina de biblioteca API)


_WGetCursor( ) (Rutina de biblioteca API)

Devuelve la posición de resultado actual en la ventana especificada.

Point _WGetCursor(WHANDLE wh) WHANDLE wh;            /* Window handle. */

Ejemplo

El ejemplo siguiente crea una ventana y dibuja un patrón diagonal de X en la misma. Sitúa el cursor antes de escribir cada una de las X mediante _WPosCursor( ) y adopta esa misma posición mediante _WGetCursor( ).

Código Visual FoxPro

SET LIBRARY TO WGETCURS

Código C

#include <pro_ext.h>
void putLong(long n, int width)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = width;
_PutValue(&val);
}
FAR Example(ParamBlk FAR *parm)
{
WHANDLE wh;
Point putPos, getPos;
wh = _WOpen(4,4,20,70,0,WINDOW_SCHEME,(Scheme FAR *) 0,
WO_SYSTEMBORDER);
_WShow(wh);
for (putPos.v = 2; putPos.v < 14; putPos.v++)
{
putPos.h = putPos.v;
_WPosCursor(wh, putPos);
getPos = _WGetCursor(wh);
_WPutChr(wh, 'X');
_PutStr("\nCursor position:");
putLong(getPos.v, 5);
putLong(getPos.h, 5);
_Execute("WAIT WINDOW");
}
_WClose(wh);
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) Example, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WPosCursor( ) | Acceso a la API de Visual FoxPro | _WGetCursorP( ) (Rutina de biblioteca API)


_WGetCursorP( ) (Rutina de biblioteca API)

Devuelve la posición de resultado actual (en píxeles) de la ventana especificada.

Point _WGetCursorP(WHANDLE wh) WHANDLE wh;            /* Window handle. */

Observaciones

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente crea una ventana y dibuja un patrón diagonal de X en la misma. Sitúa el cursor antes de escribir cada una de las X mediante _WPosCursorP( ) y adopta esa misma posición mediante _WGetCursorP( ).

Código Visual FoxPro

SET LIBRARY TO WGETCURP

Código C

#include <pro_ext.h>
void putLong(long n, int width)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = width;
_PutValue(&val);
}
FAR Example(ParamBlk FAR *parm)
{
WHANDLE wh;
Point putPos, getPos;
wh = _WOpen(4,4,20,70,0,WINDOW_SCHEME,(Scheme FAR *)0,
WO_SYSTEMBORDER);
_WShow(wh);
for (putPos.v = 10; putPos.v < 100; putPos.v += 10)
{
putPos.h = putPos.v;
_WPosCursorP(wh, putPos);
_WPutChr(wh, 'X');
getPos = _WGetCursorP(wh);
_PutStr("\nCursor position:");
putLong(getPos.v, 5);
putLong(getPos.h, 5);
_Execute("WAIT");
}
_WClose(wh);
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", Example, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WPosCursor( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro | SET CURSOR (Comando) | _WGetCursor( ) (Rutina de biblioteca API) | _WPosCursorP( ) (Rutina de biblioteca API)


_WGetObjectClientWindow( ) (Rutina de biblioteca API)

Devuelve el identificador de la ventana cliente que contiene el objeto especificado.

WHANDLE _WGetObjectClientWindow(Value FAR *objct)

Observaciones

Utilice la función _WhToHwnd( ) (Rutina de biblioteca API) para convertir WHANDLE a un controlador HWND de Windows.

Vea también

_WGetObjectWindow( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro | _WGetPort( ) (Rutina de biblioteca API) | _GetObjectProperty( ) (Rutina de biblioteca API) | GETOBJECT( ) (Función)


_WGetObjectWindow( ) (Rutina de biblioteca API)

Devuelve el identificador de la ventana de marco que contiene el objeto especificado.

WHANDLE _WGetObjectWindow(Value FAR *objct)

Observaciones

Utilice la función _WhToHwnd( ) (Rutina de biblioteca API) para convertir WHANDLE a un controlador HWND de Windows.

Vea también

_WGetObjectClientWindow( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro | _WGetPort( ) (Rutina de biblioteca API) | _GetObjectProperty( ) (Rutina de biblioteca API) | GETOBJECT( ) (Función)


_WGetPort( ) (Rutina de biblioteca API)

Devuelve el WHANDLE de la ventana que está seleccionada actualmente para el resultado que se muestra al usuario.

WHANDLE _WGetPort(void any) void any;                     /* Pointer. */

Ejemplo

El ejemplo siguiente muestra el controlador de ventana que devuelve _WGetPort( ) cuando se cambia el puerto de salida actual.

Código Visual FoxPro

SET LIBRARY TO WGETPORT

Código C

#include <pro_ext.h>
void putLong(long n, int width)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = width;
_PutValue(&val);
}
FAR Example(ParamBlk FAR *parm)
{
WHANDLE wh;
WHANDLE oldPort;
wh = _WOpen(2,10,23,70,WEVENT | CLOSE,WINDOW_SCHEME,(Scheme FAR *)0,
WO_SYSTEMBORDER);
_WShow(wh);
_PutStr("\n1) _WGetPort() ="); putLong(_WGetPort(), 10);
oldPort = _WSetPort(wh);
_PutStr("\n2) _WSetPort(wh) ="); putLong(oldPort, 10);
_PutStr("\n3) _WGetPort() ="); putLong(_WGetPort(), 10);
oldPort = _WSetPort(oldPort);
_PutStr("\n4) _WSetPort(oldPort) =");  putLong(oldPort, 10);
_PutStr("\nShould be back where we started.");
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) Example, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WhToHwnd( ) (Rutina de biblioteca API) | _WGetObjectClientWindow( ) (Rutina de biblioteca API) | _GetObjectProperty( ) (Rutina de biblioteca API) | GETOBJECT( ) (Función)


_WHeight( ) (Rutina de biblioteca API)

Devuelve el número de filas incluidas en el área de contenido de la ventana especificada.

unsigned int _WHeight(WHANDLE wh) WHANDLE wh;            /* Window handle. */

Ejemplo

El ejemplo siguiente muestra el alto y el ancho en filas y columnas de la ventana activa.

Código Visual FoxPro

SET LIBRARY TO WHEIGHT
=WDIMEN()

Código C

#include <pro_ext.h>
void putLong(long n, int width)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = width;
_PutValue(&val);
}
void FAR Example(ParamBlk FAR *parm)
{
WHANDLE wh = _WOnTop();
_PutStr("\nheight ="); putLong(_WHeight(wh), 5);
_PutStr("\nwidth  ="); putLong(_WWidth(wh), 5);
}
FoxInfo myFoxInfo[] = {
{"WDIMEN", (FPFI) Example, 0, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WBottom( ) (Rutina de biblioteca API) | _WLeft( ) (Rutina de biblioteca API) | _WRight( ) (Rutina de biblioteca API) | _WTop( ) (Rutina de biblioteca API) | _WWidth( ) (Rutina de biblioteca API)


_WHeightP( ) (Rutina de biblioteca API)

Devuelve el alto del área de contenido (en píxeles) de la ventana especificada.

unsigned int _WHeightP(WHANDLE wh) WHANDLE wh;            /* Window handle. */

Observaciones

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente muestra el alto y el ancho (en píxeles) de la ventana activa.

Código Visual FoxPro

SET LIBRARY TO WHEIGHTP
=WDIMEN()

Código C

#include <pro_ext.h>
void putLong(long n, int width)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = width;
_PutValue(&val);
}
void FAR Example(ParamBlk FAR *parm)
{
WHANDLE wh = _WOnTop();
_PutStr("\nheight ="); putLong(_WHeightP(wh), 5);
_PutStr("\nwidth  ="); putLong(_WWidthP(wh), 5);
}
FoxInfo myFoxInfo[] = {
{"WDIMEN", Example, 0, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WBottomP( ) (Rutina de biblioteca API) | _WLeftP( ) (Rutina de biblioteca API) | _WRightP( ) (Rutina de biblioteca API) | _WTopP( ) (Rutina de biblioteca API) | _WWidthP( ) (Rutina de biblioteca API)


_WHide( ) (Rutina de biblioteca API)

Elimina una ventana de la pantalla, pero realiza un seguimiento del contenido de modo que pueda volver a mostrarla.

void _WHide(WHANDLE wh) WHANDLE wh;            /* Window handle. */

Ejemplo

El ejemplo siguiente oculta la ventana cuyo título se pasa como argumento.

Código Visual FoxPro

SET LIBRARY TO WHIDE
CREATE TABLE X (X C(10))
BROWSE NOWAIT
WAIT WINDOW "Press A Key To Hide Window"
SET LIBR TO WFINDTIT
= WHIDE("X")
WAIT WINDOW "Window Is Hidden"

Código C

#include <pro_ext.h>
void FAR Example(ParamBlk FAR *parm)
{
//   For readability---
#define pTITLE ((char FAR *) _HandToPtr(parm->p[0].val.ev_handle))
WHANDLE wh;
if (!_SetHandSize(parm->p[0].val.ev_handle,
parm->p[0].val.ev_length+ 1))
{
_Error(182); // "Insufficient memory"
}
_HLock(parm->p[0].val.ev_handle);
pTITLE[parm->p[0].val.ev_length] = '\0';
wh = _WFindTitle(pTITLE);
_HUnLock(parm->p[0].val.ev_handle);
_WHide(wh);
}
FoxInfo myFoxInfo[] = {
{"WHIDE", (FPFI) Example, 1, "C"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WShow( ) (Rutina de biblioteca API) | HIDE WINDOW (Comando) | SHOW WINDOW (Comando)


_WhToHwnd( ) (Rutina de biblioteca API)

Devuelve el controlador HWND de Windows del controlador WHANDLE especificado.

HWND_WhToHwnd(WHANDLE wh) WHANDLE wh;            /* Window handle. */

Observaciones

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente crea una ventana y, a continuación, obtiene el controlador HWND de Windows para la ventana con la repetición de llamada _WhToHwnd( ). A continuación, para comprobar el valor devuelto por _WhToHwnd( ), el ejemplo utiliza el controlador HWND como argumento para una función de Windows.

Código Visual FoxPro

SET LIBRARY TO WHTOHWND

Código C

#include <windows.h>
#include <pro_ext.h>
void putLong(long n, int width)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = width;
_PutValue(&val);
}
FAR WhToHwndEx(ParamBlk FAR *parm)
{
RECT Rect;
HWND hwnd;
WHANDLE wh;
Value val;
wh = _WOpenP(10,10,120,240,CLOSE,WINDOW_SCHEME, (Scheme FAR *) 0,
WO_SYSTEMBORDER);
_WShow(wh);
//   Get Windows window handle and use as a parameter
//   to a Windows function
hwnd = _WhToHwnd(wh);
GetWindowRect(hwnd, &Rect); // Windows function
_PutStr("\ntop   ="); putLong(Rect.top, 5);
_PutStr("\nleft ="); putLong(Rect.left, 5);
_PutStr("\nbottom ="); putLong(Rect.bottom, 5);
_PutStr("\nright  ="); putLong(Rect.right, 5);
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", WhToHwndEx, CALLONLOAD,  ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WFindTitle( ) (Rutina de biblioteca API) | _WOpen( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_WLeft( ) (Rutina de biblioteca API)

Devuelve la columna de la pantalla donde está situado el borde izquierdo de la ventana especificada.

unsigned int _WLeft(WHANDLE wh) WHANDLE wh;            /* Window handle. */

Ejemplo

El ejemplo siguiente muestra la posición de la ventana activa.

Código Visual FoxPro

SET LIBRARY TO WLEFT
=WPOSITION()

Código C

#include <pro_ext.h>
void putLong(long n, int width)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = width;
_PutValue(&val);
}
void FAR Example(ParamBlk FAR *parm)
{
WHANDLE wh = _WOnTop();
_PutStr("\ntop   ="); putLong(_WTop(wh), 5);
_PutStr("\nleft ="); putLong(_WLeft(wh), 5);
_PutStr("\nbottom ="); putLong(_WBottom(wh), 5);
_PutStr("\nright  ="); putLong(_WRight(wh), 5);
}
FoxInfo myFoxInfo[] = {
{"WPOSITION", (FPFI) Example, 0, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WBottom( ) (Rutina de biblioteca API) | _WHeight( ) (Rutina de biblioteca API) | _WRight( ) (Rutina de biblioteca API) | _WTop( ) (Rutina de biblioteca API) | _WWidth( ) (Rutina de biblioteca API)


_WLeftP( ) (Rutina de biblioteca API)

Devuelve la posición de la pantalla (en píxeles) donde está situado el borde izquierdo de la ventana.

unsigned int _WLeftP(WHANDLE wh) WHANDLE wh;            /* Window handle. */

Observaciones

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente muestra la posición en píxeles de la ventana activa.

Código Visual FoxPro

SET LIBRARY TO WLEFTP
=WPOSITION()

Código C

#include <pro_ext.h>
void putLong(long n, int width)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = width;
_PutValue(&val);
}
void FAR Example(ParamBlk FAR *parm)
{
WHANDLE wh = _WOnTop();
_PutStr("\ntop   ="); putLong(_WTopP(wh), 5);
_PutStr("\nleft ="); putLong(_WLeftP(wh), 5);
_PutStr("\nbottom ="); putLong(_WBottomP(wh), 5);
_PutStr("\nright  ="); putLong(_WRightP(wh), 5);
}
FoxInfo myFoxInfo[] = {
{"WPOSITION", Example, 0, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WBottomP( ) (Rutina de biblioteca API) | _WHeightP( ) (Rutina de biblioteca API) | _WRightP( ) (Rutina de biblioteca API) | _WTopP( ) (Rutina de biblioteca API) | _WWidthP( ) (Rutina de biblioteca API)


_WMainWindow( ) (Rutina de biblioteca API)

Devuelve el controlador WHANDLE de la ventana principal de Visual FoxPro.

WHANDLE _WMainWindow(void any) void any;                     /* Pointer. */

Observaciones

Utilice la función _WhToHwnd( ) (Rutina de biblioteca API) para convertir WHANDLE a un controlador HWND de Windows.

Ejemplo

El ejemplo siguiente escribe un mensaje en la ventana principal de Visual FoxPro.

Código Visual FoxPro

SET LIBRARY TO WMAIN
= EXWMAIN()

Código C

#include <pro_ext.h>
void FAR Example(ParamBlk FAR *parm)
{
WHANDLE wh = _WMainWindow();
_WPutStr(wh, "\nThis is the FoxPro main window or desktop.");
}
FoxInfo myFoxInfo[] = {
{"EXWMAIN", Example, 0, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WhToHwnd( ) (Rutina de biblioteca API) | Ocultar la ventana principal de Visual FoxPro


_WMove( ) (Rutina de biblioteca API)

Mueve la ventana especificada a la nueva ubicación especificada por pt.

void _WMove(WHANDLE wh, Point pt) WHANDLE wh;            /* Window handle. */ Point pt;                     /* New location. */

Observaciones

El parámetro pt especifica la posición del ángulo superior izquierdo de la ventana en filas y columnas. La nueva posición puede situar la ventana parcial o completamente fuera de la pantalla.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente mueve la ventana activa en diagonal 10 filas hacia abajo y 10 columnas a la derecha.

Código Visual FoxPro

SET LIBRARY TO WMOVE
=WMOVE()

Código C

#include <pro_ext.h>
void FAR WMoveEx(ParamBlk FAR *parm)
{
WHANDLE wh = _WOnTop();
Point newPos;
newPos.v = _WTop(wh)  + 10;
newPos.h = _WLeft(wh) + 10;
_WMove(wh, newPos);
}
FoxInfo myFoxInfo[] = {
{"WMOVE", (FPFI) WMoveEx, 0, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WSize( ) (Rutina de biblioteca API) | _WMoveP( ) (Rutina de biblioteca API) | _MemMove( ) (Rutina de biblioteca API) | MOVE WINDOW (Comando) | Acceso a la API de Visual FoxPro


_WMoveP( ) (Rutina de biblioteca API)

Mueve la ventana especificada a una nueva ubicación especificada por pt.

void _WMoveP(WHANDLE wh, Point pt) WHANDLE wh;            /* Window handle. */ Point pt;                     /* New location. */

Observaciones

El parámetro pt especifica la ubicación del ángulo superior izquierdo de la ventana en píxeles. La nueva posición puede situar la ventana parcial o completamente fuera de la pantalla.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente mueve la ventana activa en diagonal, 40 píxeles hacia abajo y 40 píxeles hacia la derecha.

Código Visual FoxPro

SET LIBRARY TO WMOVEP
=WMOVEP()

Código C

#include <pro_ext.h>
void FAR WMovePEx(ParamBlk FAR *parm)
{
WHANDLE wh = _WOnTop();
Point newPos;
newPos.v = _WTopP(wh)  + 40;
newPos.h = _WLeftP(wh) + 40;
_WMoveP(wh, newPos);
}
FoxInfo myFoxInfo[] = {
{"WMOVEP", WMovePEx, 0, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WSizeP( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro | _MemMove( ) (Rutina de biblioteca API) | MOVE WINDOW (Comando) | Acceso a la API de Visual FoxPro


_WOnTop( ) (Rutina de biblioteca API)

Devuelve el controlador WHANDLE de la ventana activa.

WHANDLE _WOnTop(void any) void any;                     /* Pointer. */

Observaciones

Normalmente, las pulsaciones corresponden a la ventana activa. Las rutinas del controlador deben actuar convenientemente.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente muestra información de posición acerca de la ventana activa.

Código Visual FoxPro

SET LIBRARY TO WONTOP
=WPOSITION()

Código C

#include <pro_ext.h>
void putLong(long n, int width)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = width;
_PutValue(&val);
}
void FAR Example(ParamBlk FAR *parm)
{
WHANDLE wh = _WOnTop();
_PutStr("\ntop   ="); putLong(_WTop(wh), 5);
_PutStr("\nleft ="); putLong(_WLeft(wh), 5);
_PutStr("\nbottom ="); putLong(_WBottom(wh), 5);
_PutStr("\nright  ="); putLong(_WRight(wh), 5);
}
FoxInfo myFoxInfo[] = {
{"WPOSITION", Example, 0, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WSendBehind( ) (Rutina de biblioteca API) | _WShow( ) (Rutina de biblioteca API) | _WTop( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_WOpen( ) (Rutina de biblioteca API)

Crea una nueva ventana en las coordenadas especificadas por los parámetros top, left, bottom y right.

WHANDLE _WOpen(int top, int left, int bottom, int right, int flag, int scheme_num, Scheme FAR *scheme, char FAR *bord) int top;                     /* Row of top coordinate. */ int left;                     /* Column of left coordinate. */ int bottom;                  /* Row of bottom coordinate.  */ int right;                     /* Column of right coordinate. */ int flag;                     /* Attributes. */ int scheme_num;            /* Color scheme. */ Scheme FAR *scheme;      /* Points to color scheme to use. */ char FAR *bord;            /* Border type. */

Observaciones

Las coordenadas de la ventana pueden estar fuera de la pantalla, pero el alto no puede superar 120 ni el ancho 264. Se asigna memoria adicional para mantener la imagen de esta ventana fuera de la pantalla.

El parámetro flag determina los atributos de la ventana. Flag puede tener uno de los valores siguientes. Puede combinar múltiples valores de indicador mediante los operadores | o + del lenguaje C. Los bordes de ventana más habituales se definen en PRO_EXT.H.

Valor de flag | Atributo de ventana
WCURSOR | El punto de inserción puede mostrarse en esta ventana.
ZOOM | El usuario puede hacer zoom en la ventana.
ADJ | El usuario puede ajustar el tamaño de la ventana.
CLOSE | El usuario puede cerrar la ventana.
MOVE | El usuario puede mover la ventana.
AUTOSCROLL | La ventana se desplaza cuando el resultado sobrepasa la línea inferior.
WEVENT | La ventana recibe, activa y desactiva eventos.
SHADOW | La ventana tiene una sombra.
WMODAL | El usuario no puede enviar esta ventana al fondo.
WMINIMIZE | El usuario puede minimizar esta ventana.

El parámetro scheme_num puede ser cualquier número válido de esquema de colores o – 1 para indicar que el parámetro scheme señala el esquema de colores que se va a utilizar.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente crea ventanas que utilizan varios esquemas de colores y bordes distintos. En concreto, observe el esquema de colores personalizado.

Código Visual FoxPro

SET LIBRARY TO WOPEN

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
WHANDLE wh;
Scheme customScheme =
{
(char) (BLACK_ON      | WHITE),
(char) (RED_ON      | BLACK      | BLINK),
(char) (WHITE_ON      | WHITE      | BRIGHT),
(char) (CYAN_ON      | BLUE      | BRIGHT),
(char) (GREEN_ON      | BROWN),
(char) (BROWN_ON      | BROWN      | BRIGHT),
(char) (MAGENTA_ON   | MAGENTA   | BRIGHT),
(char) (RED_ON      | MAGENTA   | BRIGHT | BLINK),
(char) (BROWN_ON      | GREEN      | BRIGHT),
(char) (BLACK_ON      | CYAN),
(char) (BLUE_ON      | CYAN),
};
_Execute("WAIT WINDOW 'Press any key to see a window \
in WINDOW_SCHEME with WO_DOUBLEBOX border'");
wh = _WOpen(2,2,20,70,WEVENT | CLOSE,WINDOW_SCHEME,(Scheme FAR *) 0,
WO_DOUBLEBOX);
_WShow(wh);
_Execute("WAIT WINDOW 'Press any key to see a window \
in ALERT_SCHEME with WO_SINGLEBOX border'");
_WClose(wh);
wh = _WOpen(2,2,20,70,WEVENT | CLOSE,ALERT_SCHEME, (Scheme FAR *) 0,
WO_SINGLEBOX);
_WShow(wh);
_Execute("WAIT WINDOW 'Press any key to see a window \
in WINDOW_SCHEME with WO_PANELBORDER border'");
_WClose(wh);
wh = _WOpen(2,2,20,70,WEVENT | CLOSE,WINDOW_SCHEME,(Scheme FAR *) 0,
WO_PANELBORDER);
_WShow(wh);
_Execute("WAIT WINDOW 'Press any key to see a window \
in a custom scheme with WO_SYSTEMBORDER border'");
_WClose(wh);

wh = _WOpen(2,2,20,70,WEVENT | CLOSE,-1,(Scheme FAR *) customScheme,
WO_SYSTEMBORDER);
_WShow(wh);

FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) Example, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WClose( ) (Rutina de biblioteca API) | _WSelect( ) (Rutina de biblioteca API) | _WSetTitle( ) (Rutina de biblioteca API) | _WShow( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_WOpenP( ) (Rutina de biblioteca API)

Crea una nueva ventana en las posiciones especificadas por los parámetros top, left, bottom y right.

WHANDLE _WOpenP(int top, int left, int bottom, int right, int flag, int scheme_num, Scheme FAR *scheme, char FAR *bord) int top;                     /* Top coordinate in pixels. */ int left;                     /* Left coordinate in pixels. */ int bottom;                  /* Bottom coordinate in pixels. */ int right;                     /* Right coordinate in pixels. */ int flag;                     /* Attributes. */ int scheme_num;            /* Color scheme. */ Scheme FAR *scheme;      /* Points to color scheme to use. */ char FAR *bord;            /* Border type. */

Observaciones

Las posiciones de ventana pueden estar fuera de la pantalla. Se asigna memoria adicional para mantener la imagen de esta ventana fuera de la pantalla.

El parámetro flag determina los atributos de la ventana. Flag puede tener uno o más de los valores de la tabla siguiente. Puede combinar múltiples valores de indicador mediante los operadores | o + del lenguaje C. Los bordes de ventana más habituales se definen en PRO_EXT.H.

Valor de flag | Atributo de ventana
WCURSOR | El punto de inserción puede mostrarse en esta ventana.
ZOOM | El usuario puede hacer zoom en la ventana.
ADJ | El usuario puede ajustar el tamaño de la ventana.
CLOSE | El usuario puede cerrar la ventana.
MOVE | El usuario puede mover la ventana.
AUTOSCROLL | La ventana se desplaza cuando el resultado sobrepasa la línea inferior.
WEVENT | La ventana recibe, activa y desactiva eventos.
SHADOW | La ventana tiene una sombra.
WMODAL | El usuario no puede enviar esta ventana al fondo.
WMINIMIZE | El usuario puede minimizar esta ventana.

El parámetro scheme_num puede ser cualquier número válido de esquema de colores o – 1 para indicar que el parámetro scheme señala el esquema de colores que se va a utilizar.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente crea ventanas que utilizan varios esquemas de colores y bordes distintos. En concreto, observe el esquema de colores personalizado.

Código Visual FoxPro

SET LIBRARY TO WOPENP

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
WHANDLE wh;
char customScheme[12] =
{
BLACK_ON      | WHITE,
RED_ON      | BLACK      | BLINK,
WHITE_ON      | WHITE      | BRIGHT,
CYAN_ON      | BLUE      | BRIGHT,
GREEN_ON      | BROWN,
BROWN_ON      | BROWN      | BRIGHT,
MAGENTA_ON   | MAGENTA   | BRIGHT,
RED_ON      | MAGENTA   | BRIGHT | BLINK,
BROWN_ON      | GREEN      | BRIGHT,
BLACK_ON      | CYAN,
BLUE_ON      | CYAN,
};
_Execute("WAIT WINDOW 'Press any key to see a window \
in WINDOW_SCHEME with WO_DOUBLEBOX border'");
wh = _WOpenP(10, 10, 160, 320, WEVENT | CLOSE, WINDOW_SCHEME,
(Scheme FAR *)0, WO_DOUBLEBOX);
_WShow(wh);
_Execute("WAIT WINDOW 'Press any key to see a window \
in ALERT_SCHEME with WO_SINGLEBOX border'");
_WClose(wh);
wh = _WOpenP(10, 10, 160, 320, WEVENT | CLOSE, ALERT_SCHEME,
(Scheme FAR *)0, WO_SINGLEBOX);
_WShow(wh);
_Execute("WAIT WINDOW 'Press any key to see a window \
in WINDOW_SCHEME with WO_PANELBORDER border'");
_WClose(wh);
wh = _WOpenP(10, 10, 160, 320, WEVENT | CLOSE, WINDOW_SCHEME,
(Scheme FAR *)0, WO_PANELBORDER);
_WShow(wh);
_Execute("WAIT WINDOW 'Press any key to see a window \
in a custom scheme with WO_SYSTEMBORDER border'");
_WClose(wh);
wh = _WOpenP(10,10,160,320,WEVENT | CLOSE,-1,customScheme,
WO_SYSTEMBORDER);
_WShow(wh);
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", Example, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WClose( ) (Rutina de biblioteca API) | _WSelect( ) (Rutina de biblioteca API) | _WSetTitle( ) (Rutina de biblioteca API) | _WShow( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_WPosCursor( ) (Rutina de biblioteca API)

Sitúa la posición de resultado de la ventana especificada en la ubicación de filas y columnas especificada por pt.

void _WPosCursor(WHANDLE wh, Point pt) WHANDLE wh;            /* Window handle. */ Point pt;                     /* Location for the output position. */

Observaciones

_WPosCursor( ) no muestra el punto de inserción. Normalmente, el punto de inserción sólo está visible cuando Visual FoxPro está esperando una entrada.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente crea una ventana y dibuja un patrón diagonal de X en la misma. Sitúa el cursor antes de escribir cada una de las X mediante _WPosCursor( ) y adopta esa misma posición mediante _WGetCursor( ).

Código Visual FoxPro

SET LIBRARY TO WPOSCUR

Código C

#include <pro_ext.h>
void putLong(long n, int width)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = width;
_PutValue(&val);
}
FAR Example(ParamBlk FAR *parm)
{
WHANDLE wh;
Point putPos, getPos;
wh = _WOpen(4,4,20,70,0,WINDOW_SCHEME,(Scheme FAR *) 0,
WO_SYSTEMBORDER);
_WShow(wh);
for (putPos.v = 2; putPos.v < 14; putPos.v++)
{
putPos.h = putPos.v;
_WPosCursor(wh, putPos);
_WPutChr(wh, 'X');
getPos = _WGetCursor(wh);
_PutStr("\nCursor position:");
putLong(getPos.v, 5);
putLong(getPos.h, 5);
_Execute("WAIT");
}
_WClose(wh);
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) Example, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WGetCursor( ) | Acceso a la API de Visual FoxPro | _WPosCursorP( ) (Rutina de biblioteca API) | _WPutChr( ) (Rutina de biblioteca API) | _WPutStr( ) (Rutina de biblioteca API)


_WPosCursorP( ) (Rutina de biblioteca API)

Sitúa la posición de resultado de la ventana especificada en la ubicación especificada por pt en píxeles.

void _WPosCursorP(WHANDLE wh, Point pt) WHANDLE wh;            /* Window handle. */ Point pt;                     /* Location for output position. */

Observaciones

_WPosCursor( ) no muestra el punto de inserción. Normalmente, el punto de inserción sólo está visible cuando Visual FoxPro está esperando una entrada.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente crea una ventana y dibuja un patrón diagonal de X en la misma. Sitúa el cursor antes de escribir cada una de las X mediante _WPosCursorP( ) y adopta esa misma posición mediante _WGetCursorP( ).

Código Visual FoxPro

SET LIBRARY TO WPOSCURP

Código C

#include <pro_ext.h>
void putLong(long n, int width)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = width;
_PutValue(&val);
}
FAR Example(ParamBlk FAR *parm)
{
WHANDLE wh;
Point putPos, getPos;
wh = _WOpen(4,4,20,70,0,WINDOW_SCHEME,(Scheme FAR *)0,
WO_SYSTEMBORDER);
_WShow(wh);
for (putPos.v = 10; putPos.v < 100; putPos.v += 10)
{
putPos.h = putPos.v;
_WPosCursorP(wh, putPos);
_WPutChr(wh, 'X');
getPos = _WGetCursorP(wh);
_PutStr("\nCursor position:");
putLong(getPos.v, 5);
putLong(getPos.h, 5);
_Execute("WAIT");
}
_WClose(wh);
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", Example, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WGetCursorP( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro | _WPosCursor( ) (Rutina de biblioteca API) | _WPutChr( ) (Rutina de biblioteca API) | _WPutStr( ) (Rutina de biblioteca API)


_WPutChr( ) (Rutina de biblioteca API)

Muestra un carácter char en la posición de resultado de la ventana especificada, con el color actual.

void _WPutChr(WHANDLE wh, int char) WHANDLE wh;            /* Window handle. */ int char;                     /* Character to display. */

Observaciones

Los caracteres especiales, como nueva línea, retorno de carro y campana, se consideran caracteres de control y no se muestran en la ventana.

Para mostrar el carácter que corresponde a uno de estos caracteres de control, sume 256 al valor del carácter.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente utiliza _WPutChr( ) para mostrar todos los valores de 8 bits en una nueva ventana.

Código Visual FoxPro

SET LIBRARY TO WPUTCHR

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
int i;
WHANDLE wh;
wh = _WOpen(2,2,20,70,WEVENT | CLOSE,WINDOW_SCHEME,(Scheme FAR *) 0,
WO_SYSTEMBORDER);
_WShow(wh);
for (i = 0; i < 256; i++)
_WPutChr(wh, i);
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) Example, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WPutStr( ) (Rutina de biblioteca API) | _WGetCursorP( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro | _WPosCursor( ) (Rutina de biblioteca API)


_WPutStr( ) (Rutina de biblioteca API)

Muestra una cadena terminada en nulo en la posición de resultado de la ventana especificada, con el color actual.

void _WPutStr(WHANDLE wh, char FAR *theStr) WHANDLE wh;            /* Window handle. */ char FAR *theStr;               /* String to display. */

Observaciones

El resultado que suele hacer que la ventana se desplace hacia abajo produce efectos indefinidos en las ventanas que no tienen el atributo AUTOSCROLL.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente utiliza _WPutStr( ) para mostrar una cadena que contiene todos los valores de 8 bits (excepto '\0') en una nueva ventana.

Código Visual FoxPro

SET LIBRARY TO WPUTSTR

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
int i;
WHANDLE wh;
char String[256];
wh = _WOpen(2,2,20,70,WEVENT | CLOSE,WINDOW_SCHEME,(Scheme FAR *) 0,
WO_SYSTEMBORDER);
_WShow(wh);
for (i = 0; i < 255; i++)
String[i] = i + 1;
String[255] = '\0';
_WPutStr(wh, String);
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) Example, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WPutChr( ) | _WGetCursorP( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro | _WPosCursor( ) (Rutina de biblioteca API)


_WRight( ) (Rutina de biblioteca API)

Devuelve la columna de la pantalla donde está situado el borde derecho de la ventana especificada.

unsigned int _WRight(WHANDLE wh) WHANDLE wh;            /* Window handle. */

Ejemplo

El ejemplo siguiente muestra la posición de la ventana activa.

Código Visual FoxPro

SET LIBRARY TO WRIGHT
=WPOSITION()

Código C

#include <pro_ext.h>
void putLong(long n, int width)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = width;
_PutValue(&val);
}
void FAR Example(ParamBlk FAR *parm)
{
WHANDLE wh = _WOnTop();
_PutStr("\ntop   ="); putLong(_WTop(wh), 5);
_PutStr("\nleft ="); putLong(_WLeft(wh), 5);
_PutStr("\nbottom ="); putLong(_WBottom(wh), 5);
_PutStr("\nright  ="); putLong(_WRight(wh), 5);
}
FoxInfo myFoxInfo[] = {
{"WPOSITION", (FPFI) Example, 0, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WBottom( ) (Rutina de biblioteca API) | _WHeight( ) (Rutina de biblioteca API) | _WLeft( ) (Rutina de biblioteca API) | _WTop( ) (Rutina de biblioteca API) | _WWidth( ) (Rutina de biblioteca API)


_WRightP( ) (Rutina de biblioteca API)

Devuelve la posición en la pantalla, en píxeles, donde está situado el borde derecho de la ventana especificada.

unsigned int _WRightP(WHANDLE wh) WHANDLE wh;            /* Window handle. */

Observaciones

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente muestra la posición de la ventana activa.

Código Visual FoxPro

SET LIBRARY TO WRIGHTP
=WPOSITION()

Código C

#include <pro_ext.h>
void putLong(long n, int width)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = width;
_PutValue(&val);
}
void FAR Example(ParamBlk FAR *parm)
{
WHANDLE wh = _WOnTop();
_PutStr("\ntop   ="); putLong(_WTopP(wh), 5);
_PutStr("\nleft ="); putLong(_WLeftP(wh), 5);
_PutStr("\nbottom ="); putLong(_WBottomP(wh), 5);
_PutStr("\nright  ="); putLong(_WRightP(wh), 5);
}
FoxInfo myFoxInfo[] = {
{"WPOSITION", Example, 0, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WBottomP( ) (Rutina de biblioteca API) | _WHeightP( ) (Rutina de biblioteca API) | _WLeftP( ) (Rutina de biblioteca API) | _WTopP( ) (Rutina de biblioteca API) | _WWidthP( ) (Rutina de biblioteca API)


_WScroll( ) (Rutina de biblioteca API)

Desplaza una parte del contenido de una ventana a la izquierda o la derecha y hacia arriba o hacia abajo.

void _WScroll(WHANDLE wh, Rect r, int dv, int dh) WHANDLE wh;            /* Window handle. */ Rect r;                     /* Portion to scroll. */ int dv;                        /* Left or right. */ int dh;                     /* Up or down. */

Observaciones

  • El parámetro r describe la parte de la ventana que se va a desplazar.
  • El parámetro dv describe el número de caracteres que se va a desplazar la ventana a izquierda o derecha. Si dv es negativo, el contenido de la ventana se desplazará hacia la izquierda. Si dv es positivo, se desplazará a la derecha.
  • El parámetro dh describe el número de caracteres que se va a desplazar la ventana hacia arriba o hacia abajo. Si dh es negativo, el contenido de la ventana se desplazará hacia arriba. Si dh es positivo, se desplazará hacia abajo.

Si dv y dh son 0, _WScroll( ) borrará los caracteres del interior del rectángulo.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente abre una ventana y dibuja un patrón rectangular de X. Este rectángulo es también el rectángulo de desplazamiento. En primer lugar, el ejemplo desplaza el rectángulo dos posiciones hacia arriba y dos posiciones a la izquierda. A continuación, desplaza el rectángulo cuatro posiciones hacia abajo y cuatro posiciones a la derecha.

Código Visual FoxPro

SET LIBRARY TO WSCROLL

Código C

#include <pro_ext.h>
FAR WScrollEx(ParamBlk FAR *parm)
{
WHANDLE wh;
Point pos;
Rect rect;
wh = _WOpen(2,2,20,70,WEVENT | CLOSE,WINDOW_SCHEME,(Scheme FAR *) 0,
WO_SYSTEMBORDER);
_WShow(wh);
rect.top   = 6;
rect.left   = 6;
rect.bottom = 12;
rect.right   = 12;
for (pos.v = rect.top; pos.v < rect.bottom; pos.v++)
{
for (pos.h = rect.left; pos.h < rect.right; pos.h++)
{
_WPosCursor(wh, pos);
_WPutChr(wh, 'X');
}
}
_Execute("WAIT WINDOW 'Press any key to _WScroll(wh,rect,-2,-2)'");
_WScroll(wh, rect, -2, -2);
_Execute("WAIT WINDOW 'Press any key to _WScroll(wh,rect,+4,+4)'");
_WScroll(wh, rect, +4, +4);
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) WScrollEx, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WClear( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro | _WScrollP( ) (Rutina de biblioteca API) | _WPosCursor( ) (Rutina de biblioteca API) | _WPutChr( ) (Rutina de biblioteca API)


_WScrollP( ) (Rutina de biblioteca API)

Desplaza una parte del contenido de una ventana a la izquierda o la derecha y hacia arriba o hacia abajo.

void _WScrollP(WHANDLE wh, Rect r, int dv, int dh) WHANDLE wh;            /* Window handle. */ Rect r;                     /* Portion to scroll. */ int dv;                        /* Left or right. */ int dh;                     /* Up or down. */

Observaciones

  • El parámetro r describe la parte de la ventana que se va a desplazar.
  • El parámetro dv describe el número de píxeles que se va a desplazar la ventana a izquierda o derecha. Si dv es negativo, el contenido de la ventana se desplazará hacia la izquierda. Si dv es positivo, se desplazará a la derecha.
  • El parámetro dh describe el número de píxeles que se va a desplazar la ventana hacia arriba o hacia abajo. Si dh es negativo, el contenido de la ventana se desplazará hacia arriba. Si dh es positivo, se desplazará hacia abajo.

Si dv y dh son 0, _WScrollP( ) borra los caracteres del interior del rectángulo.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente abre una ventana y dibuja un patrón rectangular de X. Este rectángulo es también el rectángulo de desplazamiento. En primer lugar, _WScrollP( ) desplaza el rectángulo hacia arriba y a la izquierda. A continuación, desplaza el rectángulo hacia abajo y a la derecha.

Código Visual FoxPro

SET LIBRARY TO WSCROLLP

Código C

#include <pro_ext.h>
FAR WScrollEx(ParamBlk FAR *parm)
{
WHANDLE wh;
Point pos;
Rect rect;
wh = _WOpenP(2, 2, 160, 320, WEVENT | CLOSE, WINDOW_SCHEME,
(char *) 0, WO_SYSTEMBORDER);
_WShow(wh);
rect.top   = 40;
rect.left   = 40;
rect.bottom = 100;
rect.right   = 100;
for (pos.v = rect.top; pos.v < rect.bottom; pos.v += 6)
{
for (pos.h = rect.left; pos.h < rect.right; pos.h +=6)
{
_WPosCursorP(wh, pos);
_WPutChr(wh, 'X');
}
}
_Execute("WAIT 'Press any key to _WScroll(wh, rect, -20, -20)'");
_WScrollP(wh, rect, -20, -20);
_Execute("WAIT 'Press any key to _WScroll(wh, rect, +40, +40)'");
_WScrollP(wh, rect, +40, +40);
}
FoxInfo myFoxInfo[] =
{
{"ONLOAD", WScrollEx, CALLONLOAD, ""},
};
FoxTable _FoxTable =
{
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WClear( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro | _WPosCursor( ) (Rutina de biblioteca API) | _WPutChr( ) (Rutina de biblioteca API)


_WSelect( ) (Rutina de biblioteca API)

Lleva la ventana especificada a la posición activa de la pantalla.

void _WSelect(WHANDLE wh) WHANDLE wh;            /* Window handle. */

Ejemplo

El ejemplo siguiente crea cinco ventanas superpuestas. Las ventanas se mueven a la posición activa mediante _WSelect( ), a partir de la primera ventana creada.

Código Visual FoxPro

SET LIBRARY TO WSELECT

Código C

#include <pro_ext.h>
FAR WSelectEx(ParamBlk FAR *parm)
{
WHANDLE wh[5];
int i;
for (i = 0; i < 5; i++)
{
wh[i] = _WOpen(4 + 2*i,4 + 2*i,12 + 2*i,40 + 2*i,WEVENT | CLOSE,
WINDOW_SCHEME, (Scheme FAR *) 0, WO_SYSTEMBORDER);
_WShow(wh[i]);
}
for (i = 0; i < 5; i++)
{
_Execute("WAIT WINDOW 'Press key to _WSelect() next window'");
_WSelect(wh[i]);
}
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) WSelectEx, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WOnTop( ) (Rutina de biblioteca API) | _WShow( ) (Rutina de biblioteca API) | _WOpen( ) (Rutina de biblioteca API) | _Execute( ) (Rutina de biblioteca API)


_WSendBehind( ) (Rutina de biblioteca API)

Envía la ventana especificada a la posición de segundo plano de la pantalla.

void _WSendBehind(WHANDLE wh) WHANDLE wh;            /* Window handle. */

Ejemplo

El ejemplo siguiente crea cinco ventanas superpuestas. _WSendBehind( ) envía cada ventana a la posición de segundo plano, a partir de la última que se ha creado.

Código Visual FoxPro

SET LIBRARY TO WSENDBEH

Código C

#include <pro_ext.h>
FAR WSendBehindEx(ParamBlk FAR *parm)
{
WHANDLE wh[5];
int i;
for (i = 0; i < 5; i++)
{
wh[i] = _WOpen(4 + 2*i,4 + 2*i,12 + 2*i,40 + 2*i,WEVENT | CLOSE,
WINDOW_SCHEME, (Scheme FAR *) 0, WO_SYSTEMBORDER);
_WShow(wh[i]);
}
for (i = 4; i >= 0; i--)
{
_Execute("WAIT WINDOW 'Press key to _WSendBehind() next window'");
_WSendBehind(wh[i]);
}
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) WSendBehindEx, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WOnTop( ) (Rutina de biblioteca API) | _WSelect( ) (Rutina de biblioteca API) | _WShow( ) (Rutina de biblioteca API) | _Execute( ) (Rutina de biblioteca API)


_WSetAttr( ) (Rutina de biblioteca API)

Cambia el atributo del índice de esquema de colores color especificado en el esquema de colores de la ventana indicada por el nuevo atributo attr.

void _WSetAttr(WHANDLE wh, int color, int attr) WHANDLE wh;            /* Window handle. */ int color;                     /* Color scheme. */ int attr;                     /* Attribute. */

Ejemplo

El ejemplo siguiente pasa por cada color del esquema, utiliza _WSetAttr( ) para establecer el color del lápiz y, a continuación, muestra texto en cada color.

Código Visual FoxPro

SET LIBRARY TO WSETATTR

Código C

#include <pro_ext.h>
void putLong(long n, int width)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = width;
_PutValue(&val);
}
FAR WAttrEx(ParamBlk FAR *parm)
{
int scheme;
int color;
WHANDLE wh;
int attrib, savePen;
for (scheme = 0; scheme <= 25; scheme++)
{
wh = _WOpen(2,10,23,70,WEVENT,scheme,(Scheme FAR *)0,
WO_SYSTEMBORDER);
for (color = WA_NORMAL; color <= WA_ISSHADOW; color++)
{
attrib  = _WAttr(wh, color);
savePen = _WAttr(_WGetPort(), WA_PENCOLOR);
_WSetAttr(_WGetPort(), WA_PENCOLOR, attrib);
_PutStr("\nScheme:"); putLong(scheme, 5);
_PutStr("; Color:"); putLong(color, 5);
_PutStr("; Attribute byte:"); putLong(attrib, 5);
_WSetAttr(_WGetPort(), WA_PENCOLOR, savePen);
}
_WClose(wh);
_Execute("WAIT");
}
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) WAttrEx, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WClear( ) (Rutina de biblioteca API) | _WClearRect( ) (Rutina de biblioteca API) | _WAttr( ) (Rutina de biblioteca API) | _PutStr( ) (Rutina de biblioteca API)


_WSetPort( ) (Rutina de biblioteca API)

Establece la ventana especificada como la ventana de resultado para el usuario.

WHANDLE _WSetPort(WHANDLE wh) WHANDLE wh;            /* Window handle. */

Observaciones

_WSetPort( ) devuelve el controlador de la ventana de resultado anterior del usuario.

Nota Si la rutina cambia la ventana de resultado para el usuario, asegúrese de restaurar dicha ventana antes de volver a Visual FoxPro.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente crea una ventana y la convierte en el puerto de salida. Escriba texto en esta ventana antes de volver a cambiar al puerto de salida original.

Código Visual FoxPro

SET LIBRARY TO WSETPORT

Código C

#include <pro_ext.h>
void putLong(long n, int width)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = width;
_PutValue(&val);
}
FAR Example(ParamBlk FAR *parm)
{
WHANDLE wh;
WHANDLE oldPort;
wh = _WOpen(2,10,23,70,WEVENT | CLOSE,WINDOW_SCHEME,(Scheme FAR *)0,
WO_SYSTEMBORDER);
_WShow(wh);
_PutStr("\n1) _WGetPort() ="); putLong(_WGetPort(), 10);
oldPort = _WSetPort(wh);
_PutStr("\n2) _WSetPort(wh) ="); putLong(oldPort, 10);
_PutStr("\n3) _WGetPort() ="); putLong(_WGetPort(), 10);
oldPort = _WSetPort(oldPort);
_PutStr("\n4) _WSetPort(oldPort) =");  putLong(oldPort, 10);
_PutStr("\nShould be back where we started.");
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) Example, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WGetPort( ) (Rutina de biblioteca API) | _PutStr( ) (Rutina de biblioteca API) | _WShow( ) (Rutina de biblioteca API) | Entrada y salida


_WSetTitle( ) (Rutina de biblioteca API)

Cambia el título de la ventana especificada a title.

void _WSetTitle(WHANDLE wh, char FAR *title) WHANDLE wh;            /* Window handle. */ char FAR *title;            /* Window title. */

Observaciones

Para eliminar un título de una ventana, pase (char FAR *)0 como nuevo título.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente crea una ventana y define el texto del título con _WSetTitle( ).

Código Visual FoxPro

SET LIBRARY TO WSETTITL

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
WHANDLE wh;
char FAR *buffer;
wh = _WOpen(4,4,20,70,CLOSE | WEVENT,WINDOW_SCHEME,(Scheme FAR *)0,
WO_SYSTEMBORDER);
_WSetTitle(wh, "This is a window title");
_WShow(wh);
if ((buffer = _Alloca(128)) == 0)
{
_Error(182); // "Insufficient memory"
}
_WTitle(wh, buffer);
_PutStr("\nThe window title is \"");
_PutStr(buffer);
_PutChr('"');

FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) Example, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WFindTitle( ) (Rutina de biblioteca API) | _WTitle( ) (Rutina de biblioteca API) | _WShow( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro


_WShow( ) (Rutina de biblioteca API)

Muestra en la pantalla una ventana oculta.

void _WShow(WHANDLE wh) WHANDLE wh;            /* Window handle. */

Observaciones

Cuando se crea una ventana, permanece oculta de forma predeterminada hasta que se utiliza _WShow( ) para hacerla visible.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente contiene dos rutinas API. WINOPEN( ) abre una ventana pero no llama a _WShow( ), lo que muestra que la ventana está oculta hasta que _WShow( ) la muestra en la pantalla.

Código Visual FoxPro

SET LIBRARY TO WSHOW
wh = WOPEN()
= WSHOW(wh)

Código C

#include <pro_ext.h>
FAR WOpen(ParamBlk FAR *parm)
{
_RetInt(_WOpen(2, 2, 20, 70, WEVENT | CLOSE, WINDOW_SCHEME,
(Scheme FAR *) 0, WO_SYSTEMBORDER), 10);
}
FAR WShow(ParamBlk FAR *parm)
{
_WShow(parm->p[0].val.ev_long);
}
FoxInfo myFoxInfo[] = {
{"WOPEN", (FPFI) WOpen, 0, ""},
{"WSHOW", (FPFI) WShow, 1, "I"},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WHide( ) (Rutina de biblioteca API) | _WOpen( ) (Rutina de biblioteca API) | _WSelect( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro | _WOpen( ) (Rutina de biblioteca API)


_WSize( ) (Rutina de biblioteca API)

Establece nuevas dimensiones de la ventana especificada con el alto y el ancho especificados por h y v en el parámetro pt.

void _WSize(WHANDLE wh, Point pt) WHANDLE wh;            /* Window handle. */ Point pt;                     /* Position. */

Ejemplo

El ejemplo siguiente crea una ventana y, a continuación, amplía su ancho y su alto.

Código Visual FoxPro

SET LIBRARY TO WSIZE

Código C

#include <pro_ext.h>
FAR WSizeEx(ParamBlk FAR *parm)
{
WHANDLE wh;
Point dim;
wh = _WOpen(2,2,10,10,CLOSE | WEVENT,WINDOW_SCHEME,(Scheme FAR *)0,
WO_SYSTEMBORDER);
_WShow(wh);
dim.v = 8;
//   Grow in width
for (dim.h = 8; dim.h < 60; dim.h += 4)
{
_WSize(wh, dim);
_Execute("WAIT WINDOW 'Press Any Key To Change Size'");
}
//   Grow in height
for (dim.v = 8; dim.v < 20; dim.v += 2)
{
_WSize(wh, dim);
_Execute("WAIT WINDOW 'Press Any Key To Change Size'");
}
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) WSizeEx, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WMove( ) (Rutina de biblioteca API) | _WSizeP( ) (Rutina de biblioteca API) | _WShow( ) (Rutina de biblioteca API) | _Execute( ) (Rutina de biblioteca API)


_WSizeP( ) (Rutina de biblioteca API)

Establece las nuevas dimensiones de la ventana con el alto y el ancho especificados en píxeles por h y v en el parámetro pt.

void _WSizeP(WHANDLE wh, Point pt) WHANDLE wh;            /* Window handle. */ Point pt;                     /* Position. */

Observaciones

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente crea una ventana y amplía su ancho y, a continuación, su alto.

Código Visual FoxPro

SET LIBRARY TO WSIZEP

Código C

#include <pro_ext.h>
FAR WSizeEx(ParamBlk FAR *parm)
{
WHANDLE wh;
Point dim;
wh = _WOpenP(6,6,20,20,CLOSE | WEVENT,WINDOW_SCHEME,(Scheme FAR *)0,
WO_SYSTEMBORDER);
_WShow(wh);
dim.v = 14;
//   Grow in width
for (dim.h = 14; dim.h < 480; dim.h += 40)
{
_WSizeP(wh, dim);
_Execute("WAIT");
}
//   Grow in height
for (dim.v = 14; dim.v < 240; dim.v += 40)
{
_WSizeP(wh, dim);
_Execute("WAIT WINDOW 'Press Any Key To Change Window Size'");
}
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", WSizeEx, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WBottomP( ) (Rutina de biblioteca API) | _WLeftP( ) (Rutina de biblioteca API) | _WRightP( ) (Rutina de biblioteca API) | _WTopP( ) (Rutina de biblioteca API) | _WSize( ) (Rutina de biblioteca API)


_WTitle( ) (Rutina de biblioteca API)

Hace que title pase a ser el título title terminado en nulo de la ventana wh.

void _WTitle(WHANDLE wh, char FAR *title) WHANDLE wh;            /* Window handle. */ char FAR *title;            /* Window title. */

Ejemplo

El ejemplo siguiente crea y muestra una ventana con un título y un pie de página. _WTitle( ) recupera el texto del título, que se muestra a continuación en la pantalla.

Código Visual FoxPro

SET LIBRARY TO WTITLE

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
WHANDLE wh;
char FAR *buffer;
wh = _WOpen(4,4,20,70,CLOSE | WEVENT,WINDOW_SCHEME,(Scheme FAR *) 0,
WO_SYSTEMBORDER);
_WSetTitle(wh, "This is a window title");
_WShow(wh);
if ((buffer = _Alloca(128)) == 0)
{
_Error(182); // "Insufficient memory"
}
_WTitle(wh, buffer);
_PutStr("\nThe window title is \"");
_PutStr(buffer);
_PutChr('"');

}

FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) Example, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WSetTitle( ) (Rutina de biblioteca API) | _PutStr( ) (Rutina de biblioteca API) | _WShow( ) (Rutina de biblioteca API)


_WTop( ) (Rutina de biblioteca API)

Devuelve la fila de la pantalla donde está situada la parte superior de la ventana.

unsigned int _WTop(WHANDLE wh) WHANDLE wh;            /* Window handle. */

Ejemplo

El ejemplo siguiente muestra la posición de fila de la ventana activa.

Código Visual FoxPro

SET LIBRARY TO WTOP
=WPOSITION()

Código C

#include <pro_ext.h>
void putLong(long n, int width)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = width;
_PutValue(&val);
}
void FAR Example(ParamBlk FAR *parm)
{
WHANDLE wh = _WOnTop();
_PutStr("\ntop   ="); putLong(_WTop(wh), 5);
_PutStr("\nleft ="); putLong(_WLeft(wh), 5);
_PutStr("\nbottom ="); putLong(_WBottom(wh), 5);
_PutStr("\nright  ="); putLong(_WRight(wh), 5);
}
FoxInfo myFoxInfo[] = {
{"WPOSITION", (FPFI) Example, 0, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WBottom( ) (Rutina de biblioteca API) | _WHeight( ) (Rutina de biblioteca API) | _WLeft( ) (Rutina de biblioteca API) | _WRight( ) (Rutina de biblioteca API) | _WWidth( ) (Rutina de biblioteca API) | _WTopP( ) (Rutina de biblioteca API)


_WTopP( ) (Rutina de biblioteca API)

Devuelve la posición de la pantalla (en píxeles) donde está situada la parte superior de la ventana.

unsigned int _WTopP(WHANDLE wh) WHANDLE wh;            /* Window handle. */

Observaciones

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente muestra la posición de la ventana activa en píxeles.

Código Visual FoxPro

SET LIBRARY TO WTOPP
=WPOSITION()

Código C

#include <pro_ext.h>
void putLong(long n, int width)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = width;
_PutValue(&val);
}
void FAR Example(ParamBlk FAR *parm)
{
WHANDLE wh = _WOnTop();
_PutStr("\ntop   ="); putLong(_WTopP(wh), 5);
_PutStr("\nleft ="); putLong(_WLeftP(wh), 5);
_PutStr("\nbottom ="); putLong(_WBottomP(wh), 5);
_PutStr("\nright  ="); putLong(_WRightP(wh), 5);
}
FoxInfo myFoxInfo[] = {
{"WPOSITION", Example, 0, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WBottomP( ) (Rutina de biblioteca API) | _WHeightP( ) (Rutina de biblioteca API) | _WLeftP( ) (Rutina de biblioteca API) | _WRightP( ) (Rutina de biblioteca API) | _WWidthP( ) (Rutina de biblioteca API) | _WTop( ) (Rutina de biblioteca API)


_WWidth( ) (Rutina de biblioteca API)

Devuelve el número de columnas en el área de contenido de la ventana especificada.

unsigned int _WWidth(WHANDLE wh) WHANDLE wh;            /* Window handle. */

Ejemplo

El ejemplo siguiente muestra el alto y el ancho en filas y columnas de la ventana activa.

Código Visual FoxPro

SET LIBRARY TO WWIDTH
=WDIMEN()

Código C

#include <pro_ext.h>
void putLong(long n, int width)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = width;
_PutValue(&val);
}
void FAR Example(ParamBlk FAR *parm)
{
WHANDLE wh = _WOnTop();
_PutStr("\nheight ="); putLong(_WHeight(wh), 5);
_PutStr("\nwidth  ="); putLong(_WWidth(wh), 5);
}
FoxInfo myFoxInfo[] = {
{"WDIMEN", (FPFI) Example, 0, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WBottom( ) (Rutina de biblioteca API) | _WHeight( ) (Rutina de biblioteca API) | _WLeft( ) (Rutina de biblioteca API) | _WRight( ) (Rutina de biblioteca API) | _WTop( ) (Rutina de biblioteca API) | _WWidthP( ) (Rutina de biblioteca API)


_WWidthP( ) (Rutina de biblioteca API)

Devuelve el ancho en píxeles del área de contenido de la ventana especificada.

unsigned int _WWidthP(WHANDLE wh) WHANDLE wh;            /* Window handle. */

Observaciones

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente muestra el alto y el ancho (en píxeles) de la ventana activa.

Código Visual FoxPro

SET LIBRARY TO WWIDTHP
=WDIMEN()

Código C

#include <pro_ext.h>
void putLong(long n, int width)
{
Value val;
val.ev_type = 'I';
val.ev_long = n;
val.ev_width = width;
_PutValue(&val);
}
void FAR Example(ParamBlk FAR *parm)
{
WHANDLE wh = _WOnTop();
_PutStr("\nheight ="); putLong(_WHeightP(wh), 5);
_PutStr("\nwidth  ="); putLong(_WWidthP(wh), 5);
}
FoxInfo myFoxInfo[] = {
{"WDIMEN", Example, 0, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WBottom( ) (Rutina de biblioteca API) | _WHeightP( ) (Rutina de biblioteca API) | _WLeftP( ) (Rutina de biblioteca API) | _WRightP( ) (Rutina de biblioteca API) | _WTopP( ) (Rutina de biblioteca API)


_WZoom( ) (Rutina de biblioteca API)

Minimiza o maximiza la ventana especificada o la devuelve a su estado normal.

void _WZoom(WHANDLE wh, int newstate) WHANDLE wh;            /* Window handle. */ int newstate;                  /* State of window after zoom. */

Observaciones

Puede especificar el parámetro newstate como WZ_MINIMIZE, WZ_NORMAL o WZ_MAXIMIZE, que se definen en el archivo PRO_EXT.H.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente crea y muestra una ventana. A continuación, llama a _WZoom( ) para esta ventana con cada parámetro posible.

Código Visual FoxPro

SET LIBRARY TO WZOOM

Código C

#include <pro_ext.h>
FAR Example(ParamBlk FAR *parm)
{
WHANDLE wh;
int row, col;
wh = _WOpen(2,2,20,70,WEVENT | CLOSE,WINDOW_SCHEME,(Scheme FAR *) 0,
WO_SYSTEMBORDER);
_WShow(wh);
_Execute("WAIT WINDOW 'Press any key to minimize window'");
_WZoom(wh, WZ_MINIMIZED);
_Execute("WAIT WINDOW 'Press any key to normalize window'");
_WZoom(wh, WZ_NORMAL);
_Execute("WAIT WINDOW 'Press any key to maximize window'");
_WZoom(wh, WZ_MAXIMIZED);
_Execute("WAIT WINDOW 'Press any key to normalize window'");
_WZoom(wh, WZ_NORMAL);
}
FoxInfo myFoxInfo[] = {
{"ONLOAD", (FPFI) Example, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
(FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_WMove( ) (Rutina de biblioteca API) | _WSize( ) (Rutina de biblioteca API) | _WShow( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro | ZOOM WINDOW (Comando)


Rutinas de biblioteca API ordenadas por categoría

Rutinas de depuración

Rutinas de entorno

Rutinas de control de errores

Rutinas de control de eventos

Rutinas de entrada y resultado de archivos

Rutinas para la administración de la memoria

Rutinas de variables y matrices

Rutinas de entrada y resultado de campos memo

Rutinas de menús

Rutinas de objetos

Rutinas que devuelven resultados a Visual FoxPro

Rutinas de instrucciones y expresiones

Rutinas de manipulación de cadenas

Rutinas de entrada y resultado de tablas

Rutinas para la manipulación del editor de textos y el Portapapeles

Rutinas de manipulación de ventanas


Rutinas de depuración

Estas rutinas de la API permiten depurar sus bibliotecas API.

_BreakPoint( )

Una macro que genera una instrucción de punto de interrupción para el depurador, INT 3. Puede ser útil para depurar rutinas externas.


Rutinas de entorno

Estas rutinas de la API permiten obtener información acerca del entorno de Visual FoxPro.

_GetAPIHandle( )

Devuelve el identificador de la FLL actual.


Rutinas de control de errores

Estas rutinas de la API le permiten determinar la causa de un error y el tipo de error.

_Error( )

Señala el error especificado por el valor de code al entorno de tiempo de ejecución de Visual FoxPro.

_ErrorInfo( )

Devuelve el número de error externo que refleja el número de error interno especificado por code.

_UserError( )

Informa de un error con el texto terminado en Null especificado en el mensaje.


Rutinas de control de eventos

Estas funciones de la API permiten crear controladores de eventos y procesar los eventos de Visual FoxPro.

_ActivateHandler( )

Agrega un controlador de función al final de la lista de controladores de eventos.

_ActivateIdle( )

Agrega una rutina a la lista de rutinas a las que Visual FoxPro llama cuando está esperando una entrada del usuario o durante el tiempo de espera de un evento.

_DeActivateHandler( )

Quita el controlador especificado de la lista de procesadores de eventos.

_DeActivateIdle( )

Quita la rutina especificada del bucle inactivo.

_DefaultProcess( )

Proporciona el procesamiento de evento predeterminado para un evento devuelto por _GetNextEvent( ) cuando el evento no requiere ningún procesamiento especial.

_GetNextEvent( )

Lee el siguiente evento de EventRec y devuelve el tipo de evento.

_InKey( )

Devuelve la siguiente clave escrita durante un periodo de timeout. El periodo de timeout es un número de pulsos del cronómetro de MS-DOS.

_MousePos( )

Guarda en pt la posición actual del ratón (ratón).

_MousePosP( )

Guarda en pt la posición actual del ratón (ratón) en píxeles.


Rutinas de entrada y resultado de archivos

Estas rutinas de la API permiten crear y manipular archivos directamente.

_FCHSize( )

Establece el tamaño del archivo en disco en la longitud especificada. La longitud especificada puede extender o truncar el archivo.

_FClose( )

Termina el acceso a un archivo. Los búferes que se hayan haber modificado mientras estaban abiertos se vacían automáticamente a disco.

_FCopy( )

Intenta copiar len bytes desde la posición spos del archivo sc a la posición dpos del archivo dc.

_FCreate( )

Asigna un canal de Visual FoxPro a un archivo nuevo.

_FEOF( )

Devuelve verdadero si el archivo se encuentra actualmente al final del archivo; de lo contrario, devuelve falso.

_FError( )

Devuelve el último error de operación con archivos registrado para cualquier canal.

_FFlush( )

Asegura que todos los búferes modificados en memoria se han guardado en disco.

_FGets( )

Lee una línea de longitud maxlen, delimitada con un retorno de carro, de un archivo.

_FOpen( )

Asigna un canal de Visual FoxPro a un archivo existente.

_FPuts( )

Escribe en un archivo una cadena terminada en un valor Null, seguida de un retorno de carro y un avance de línea.

_FRead( )

Lee exactamente length bytes de un archivo en un buffer.

_FSeek( )

Mueve el puntero de archivo hasta una nueva ubicación tal como especifican position y mode.

_FWrite( )

Escribe exactamente length bytes del buffer en un archivo. No se agrega ningún terminador al archivo.


Rutinas de entrada y resultado de campos memo

Estas rutinas de la API permiten manipular los campos memo de una tabla de Visual FoxPro.

_AllocMemo( )

Dirige size bytes de espacio en el archivo o campo memo, e inserta un nuevo número de bloque en el registro asociado de la tabla.

_FindMemo( )

Devuelve la ubicación en el archivo memo para efectuar un acceso de lectura directo al campo memo.

_MemoChan( )

Devuelve el canal Visual FoxPro del archivo memo asociado al área de trabajo especificada.

_MemoSize( )

Devuelve la longitud del campo memo en el archivo memo.


Rutinas para la administración de la memoria

Estas rutinas de la API permiten manipular y asignar memoria a las funciones de la API.

_Alloca( )

Asigna un bloque de espacio en la pila a la rutina que llama. La memoria se libera automáticamente cuando finaliza la rutina.

_AllocHand( )

Devuelve un nuevo MHANDLE de tamaño hsize. Se devuelve cero si no hay suficiente memoria para llevar a cabo la operación. La memoria asignada con _AllocHand( ) no se inicializa.

_FreeHand( )

Libera un MHANDLE asignado previamente con un método como _AllocHand( ).

_GetHandSize( )

Devuelve el número de bytes utilizables asociados a un MHANDLE.

_HandToPtr( )

Traduce un MHANDLE como un puntero FAR de 32 bits que apunta a la memoria asignada a este MHANDLE.

_HLock( )

Bloquea un MHANDLE para evitar que se mueva en caso de que Visual FoxPro reorganice la memoria.

_HUnLock( )

Desbloquea un MHANDLE para permitir que participe en la reorganización de memoria de Visual FoxPro.

_MemAvail( )

Devuelve verdadero si una solicitud de asignar un controlador de size bytes se realiza correctamente. De lo contrario, _MemAvail( ) devuelve falso.

_MemCmp( )

Compara dos áreas de memoria de length bytes.

_MemFill( )

Rellena un área de memoria a partir de la ubicación señalada por ptr con length copias del byte de character.

_MemMove( )

Copia length bytes de src a dest.

_SetHandSize( )

Cambia la cantidad de memoria asignada a un MHANDLE. La rutina devuelve verdadero si la reasignación se realiza correctamente; de lo contrario, devuelve falso.


Rutinas de menús

Estas rutinas de la API permiten crear, manipular y liberar menús.

_ActivateMenu( )

Muestra el menú especificado en la pantalla e inmediatamente devuelve el control a la rutina que llama.

_CountItems( )

Devuelve el número de títulos de menú o barras del menú especificado.

_DeActivateMenu( )

Quita un menú de la pantalla.

_DisposeItem( )

Libera el elemento de menú especificado y todo el almacenamiento asociado al mismo.

_DisposeMenu( )

Libera el menú especificado, todos sus elementos y todo el almacenamiento asociado a dicho menú.

_GetItemCmdKey( )

Copia la cadena de método abreviado de teclado mostrada en pantalla para el elemento de menú especificado al búfer al que señala el parámetro text.

_GetItemId( )

Devuelve el identificador del elemento de índice en el menú especificado.

_GetItemSubMenu( )

Devuelve el identificador del elemento de menú o submenú asignado a un elemento de menú.

_GetItemText( )

Copia el texto de una barra de menús o de un título de menú al búfer indicado por text.

_GetNewItemId( )

Devuelve un identificador disponible actualmente para usarlo como identificador del elemento en el menú especificado.

_GetNewMenuId( )

Devuelve un identificador 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 el menú del sistema.

_MenuInteract( )

Establece los valores de itemid y el de menuid para indicar qué elemento de menú se ha seleccionado, en caso de que se hubiera seleccionado alguno.

_NewItem( )

Agrega un elemento con el valor de itemid especificado al menú indicado por menuid.

_NewMenu( )

Crea un nuevo menú del tipo especificado.

_OnSelection( )

Especifica 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 de objetos

Estas funciones de la API permiten manipular los objetos y los controles de Visual FoxPro.

_FreeObject( )

Libera un objeto del conjunto de datos de la API de Visual FoxPro.

_GetObjectProperty( )

Devuelve el valor de la propiedad de un objeto.

_ObjectCmp( )

Compara las propiedades de dos objetos y devuelve 0 si los valores de sus propiedades y la propiedad son idénticas.

_ObjectReference( )

Aumenta el contador de referencia de un objeto.

_ObjectRelease( )

Disminuye el contador de referencia de un objeto.

_SetObjectProperty( )

Establece una propiedad para un objeto.

_WGetObjectClientWindow( )

Devuelve el identificador de la ventana cliente que contiene el objeto especificado.

_WGetObjectWindow( )

Devuelve el identificador de la ventana de marco que contiene el objeto especificado.


Rutinas que devuelven resultados a Visual FoxPro

Estas rutinas de la API permiten devolver resultados a Visual FoxPro en el tipo de datos especificado.

_RetChar( )

Establece el valor devuelto de la función en una cadena que termina en Null.

_RetCurrency( )

Establece el valor devuelto de la biblioteca en un valor Currency.

_RetDateStr( )

Establece el valor devuelto de la función en Date. 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 devuelto de la biblioteca en DateTime.

_RetFloat( )

Establece el valor devuelto de la función en un valor Float.

_RetInt( )

Establece el valor devuelto de la función en un valor Numérico.

_RetLogical( )

Establece el valor devuelto de una función en un valor Logical. Cero se considera falso. Un valor distinto de cero se considera verdadero.

_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. Debe llamar a _RetVal( ) para devolver una cadena que contiene caracteres Null incrustados.


Rutinas de instrucciones y expresiones

Estas rutinas de la API permiten compilar y ejecutar comandos de Visual FoxPro.

_Evaluate( )

Compila y ejecuta una expresión de Visual FoxPro que se encuentra en expr; guarda el resultado en res.

_Execute( )

Compila y ejecuta la instrucción terminada en Null que se encuentra en stmt.


Rutinas de manipulación de cadenas

Estas rutinas de la API permiten manipular cadenas.

_StrCmp( )

Compara dos cadenas terminadas en Null.

_StrCpy( )

Copia una cadena terminada en Null de src a dest.

_StrLen( )

Devuelve la longitud en bytes de una cadena terminada en Null.


Rutinas de entrada y resultado de tablas

Estas rutinas de la API permiten manipular tablas de Visual FoxPro.

_DBAppend( )

Intenta agregar un nuevo registro a la tabla en el área de trabajo (workarea) especificada.

_DBLock( )

Intenta bloquear el registro de tabla o el archivo actuales en el área de trabajo especificada por workarea.

_DBRead( )

Mueve el puntero de registros actual al valor de record indicado en el área de trabajo especificada.

_DBRecCount( )

Devuelve el número total de registros de la tabla abierta en el área de trabajo especificada.

_DBRecNo( )

Devuelve el número del registro actual de la tabla en el área de trabajo especificada.

_DBReplace( )

Coloca un nuevo valor en un campo.

_DBRewind( )

Realiza un GOTO TOP en el área de trabajo especificada y devuelve el número de registro resultante.

_DBSeek( )

Busca en una tabla indizada del área de trabajo actual el primer registro cuya clave de índice coincida con el valor val.

_DBSkip( )

Realiza un SKIP de la distancia indicada en el área de trabajo especificada.

_DBStatus( )

Devuelve los indicadores de estado del área de trabajo especificada.

_DBUnlock( )

Libera todos los bloqueos de registros obtenidos por el usuario o del archivo del área de trabajo especificada por workarea.

_DBUnwind( )

Realiza un GOTO BOTTOM en el área de trabajo especificada y devuelve el número de registro resultante.

_DBWrite( )

Escribe en disco el registro actual del área de trabajo especificada y actualiza todos los índices afectados.


Rutinas para la manipulación del editor de textos y el Portapapeles

Estas rutinas de la API permiten manipular el editor de textos de Visual FoxPro, el archivo abierto en el editor de textos y el Portapapeles.

_EdActive( )

Oculta o muestra el intervalo de selección o el punto de inserción.

_EdCloseFile( )

Cierra el archivo especificado y lo guarda sin preguntar, solicita confirmación antes de guardarlo o lo guarda con otro nombre.

_EdCopy( )

Copia el área seleccionada al Portapapeles.

_EdCut( )

Copia el área seleccionada al Portapapeles y la elimina del editor.

_EdDelete( )

Elimina el área seleccionada. Si no hay selección, elimina el carácter en la posición actual.

_EdGetChar( )

Obtiene el carácter en EDPOS.

_EdGetEnv( )

Lee varias configuraciones del editor.

_EdGetLineNum( )

Devuelve el número de línea de la posición EDPOS.

_EdGetLinePos( )

Devuelve la posición EDPOS al comienzo de la línea EDLINE.

_EdGetPos()

Devuelve la posición POS actual del editor o devuelve el punto de delimitación, si hay una selección.

_EdGetStr( )

Obtiene el texto entre EDPOS y EDPOS, ambos inclusive, y lo coloca en TEXT.

_EdIndent( )

Aplica sangría al texto seleccionado por int tabuladores. int puede ser negativo para obtener una sangría francesa.

_EdInsert( )

Inserta BYTES de TEXT.

_EdLastError( )

Devuelve el número del último error del editor.

_EdOpenFile( )

Inicia una sesión del editor con este archivo.

_EdPaste( )

Copia el texto del Portapapeles al editor en la posición actual.

_EdPosInView( )

Devuelve TRUE si la posición del editor es visible.

_EdRedo( )

Rehace la última acción deshecha.

_EdRevert( )

Vuelve a un archivo guardado.

_EdSave( )

Guarda el archivo sin cerrar la ventana de edición.

_EdScrollToPos( )

Asegura que la posición EDPOS pasada está en la pantalla, pero no mueve el punto de inserción. BOOL significa centrar EDPOS verticalmente.

_EdScrollToSel( )

Asegura que el punto de delimitación de la selección está en la pantalla. BOOL significa centrar el punto de delimitación verticalmente.

_EdSelect( )

Selecciona el intervalo desde EDPOS hasta EDPOS. Para mover el punto de inserción, establezca ambas posiciones EDPOS con el mismo valor.

_EdSendKey( )

Simula presionar la tecla indicada en int.

_EdSetEnv( )

Establece diferentes configuraciones del editor.

_EdSetPos( )

Mueve el punto de inserción y deselecciona todo lo que esté seleccionado actualmente.

_EdSkipLines( )

Mueve el punto de inserción desde EDPOS hasta el comienzo de la línea int.

_EdUndo( )

Deshace los últimos cambios realizados.

_EdUndoOn( )

Agrupa como una sola acción las acciones realizadas después de pasar _EdUndoOn( ) y hasta que se vuelva a pasar otra vez, con fines de deshacer.


Rutinas de variables y matrices

Estas rutinas de la API permiten manipular variables de memoria y matrices de variables de memoria.

_ALen( )

Devuelve información acerca de las dimensiones de la matriz cuyo índice en la tabla de nombres es nti.

_FindVar( )

Proporciona una forma de inicializar un ubicador para que se pueda usar _Store( ) para colocar datos en una variable de memoria existente.

_Load( )

Recoge el valor de la variable de memoria o de tabla especificada en loc y la coloca en val.

_NameTableIndex( )

Devuelve el índice de la tabla de nombres que corresponde a un nombre determinado o –1, si no está en la tabla de nombres.

_NewVar( )

Crea una variable o una matriz.

_Release( )

Libera una variable de memoria o una matriz.

_Store( )

Reemplaza la variable de memoria especificada por loc con el valor val.


Rutinas de manipulación de ventanas

Estas funciones de la API permiten crear, manipular y liberar ventanas, y manipular la ventana principal de Visual FoxPro.

_Dialog( )

Presenta al usuario un cuadro de diálogo con la combinación de colores especificada, y contiene el texto principal y de botón especificados.

_FindWindow( )

Coloca en wh el WHANDLE de la ventana a la que pertenece el punto pt en la pantalla.

_FindWindowP( )

Coloca el controlador de la ventana a la que pertenece el punto pt en la pantalla, dentro de wh.

_GlobalToLocal( )

Convierte un punto de las coordenadas relativas a la pantalla en las coordenadas relativas a la ventana.

_GlobalToLocalP( )

Convierte un punto de coordenadas relativas a la pantalla en coordenadas relativas a la ventana en píxeles.

_PutChr( )

Escribe un carácter char en la ventana de resultados actual con su atributo normal (color 0).

_PutStr( )

Escribe una cadena terminada en Null en la ventana de resultados actual con su atributo normal (color 0).

_PutValue( )

Da formato al valor val y lo escribe en la ventana de resultados actual.

_WAttr( )

Devuelve el byte de atributo para el índice de color de la combinación de la ventana especificada.

_WBottom( )

Devuelve la fila de la pantalla donde se encuentra la parte inferior de la ventana.

_WBottomP( )

Devuelve la posición en pantalla (en píxeles) donde se encuentra la parte inferior de la ventana especificada.

_WClear( )

Elimina el contenido de la ventana especificada, cambiando el área de contenido al color de fondo predeterminado.

_WClearRect( )

Borra un área rectangular de una ventana, asignándole el color de fondo predeterminado.

_WClearRectP( )

Borra la zona rectangular especificada de una ventana, asignándole el color de fondo predeterminado.

_WClose( )

Cierra una ventana y libera toda la memoria asociada a esa ventana.

_WFindTitle( )

Pasa el título de una ventana y devuelve el WHANDLE.

_WGetCursor( )

Devuelve la posición del cursor lógico en la ventana especificada.

_WGetCursorP( )

Devuelve la posición de resultado actual (en píxeles) en la ventana especificada.

_WGetPort( )

Devuelve el WHANDLE de la ventana que está seleccionada actualmente para que se muestren los resultados del usuario.

_WHeight( )

Devuelve el número de filas del área de contenido de una ventana.

_WHeightP( )

Devuelve el alto del área de contenido (en píxeles) de la ventana especificada.

_WHide( )

Elimina una ventana de la pantalla pero hace un seguimiento de su contenido para que se pueda volver a mostrar si se desea.

_WLeft( )

Devuelve la columna de la pantalla en la que se encuentra el borde izquierdo de la ventana.

_WLeftP( )

Devuelve la posición de la pantalla (en píxeles) donde está situado el borde izquierdo de la ventana.

_WMainWindow( )

Devuelve el controlador WHANDLE de la ventana principal de Visual FoxPro.

_WMove( )

Mueve la ventana especificada a una nueva ubicación especificada por pt.

_WMoveP( )

Mueve la ventana especificada a una nueva ubicación especificada por pt.

_WhToHwnd( )

Pasa el WHANDLE y devuelve el HWND de Windows.

_WOnTop( )

Devuelve el controlador WHANDLE de la ventana en primer plano.

_WOpen( )

Crea una nueva ventana en las coordenadas especificadas por top, left, bottom y right.

_WOpenP( )

Crea una ventana nueva en las coordenadas especificadas por top, left, bottom y right.

_WPosCursor( )

Coloca el cursor lógico de la ventana especificada en la ubicación indicada por pt.

_WPosCursorP( )

Coloca el cursor lógico de la ventana especificada en la ubicación indicada en píxeles por pt.

_WPutChr( )

Escribe un carácter car con el color actual en la ventana especificada.

_WPutStr( )

Escribe una cadena terminada en Null con el color actual en la ventana especificada.

_WRight( )

Devuelve la columna de la pantalla en la que se encuentra el borde derecho de la ventana.

_WRightP( )

Devuelve la posición (en píxeles) de la pantalla en la que se encuentra el borde derecho de la ventana.

_WScroll( )

Desplaza una parte del contenido de una ventana a la izquierda o la derecha, y hacia arriba o hacia abajo.

_WScrollP( )

Desplaza una parte del contenido de una ventana a la izquierda o la derecha, y hacia arriba o hacia abajo.

_WSetAttr( )

Cambia el atributo para el índice del esquema de colores especificado en el esquema de colores de la ventana indicada por el nuevo atributo attr.

_WSelect( )

Lleva la ventana especificada al primer plano de la pantalla.

_WSendBehind( )

Manda al fondo la ventana especificada.

_WSetPort( )

Establece la ventana de resultados del usuario como la ventana especificada.

_WSetTitle( )

Cambia el título de una ventana.

_WShow( )

Vuelve a mostrar en la pantalla una ventana oculta.

_WSize( )

Establece las nuevas dimensiones de la ventana en el alto y ancho especificados por h y v en pt.

_WSizeP( )

Establece las nuevas dimensiones de la ventana en el alto y ancho especificados por h y v en pt.

_WTitle( )

Coloca el título terminado en Null del wh de la ventana en title.

_WTop( )

Devuelve la fila de la pantalla en la que se encuentra la parte superior de la ventana.

_WTopP( )

Devuelve la posición de la pantalla (en píxeles) en la que se encuentra la parte superior de la ventana.

_WWidth( )

Devuelve el número de columnas del área de contenido de una ventana.

_WWidthP( )

Devuelve el ancho en píxeles del área de contenido de la ventana especificada.

_WZoom( )

Amplía una ventana a un nuevo estado.


Eventos de Visual FoxPro (creación de bibliotecas API)

En la tabla siguiente se muestra cada evento de Visual FoxPro junto con la composición de sus campos de registro de eventos y una descripción de cuándo ocurre el evento.

Evento | Campos EventRec | Descripción
nullEvent | what = nullEvent where.h = posición horizontal del ratón where.v = posición vertical del ratón when = marcas desde el inicio | Ocurre cuando no existen otros eventos pendientes. Éste es el evento que ocurre con mayor frecuencia y, por motivos de rendimiento, se debería utilizar con moderación.
mouseDownEvent | what = mouseDownEvent where.h = posición horizontal del ratón where.v = posición vertical del ratón mbState = botón primario del ratón when = marcas desde el inicio | Ocurre siempre que se presiona el botón primario del ratón. Intercepte el evento mouseDownEvent y úselo en combinación con el punto where y la función _FindWindow para ver si el usuario hizo clic en el cuadro de cierre de menú o en otras partes de la ventana. (Un evento closeEvent no se genera al hacer clic en el cuadro de cierre de menú de una ventana.)
keyDownEvent | what = keyDownEvent where.h = posición horizontal del ratón where.v = posición vertical del ratón message = código de tecla (vea el apéndice A) modifier = tecla modificadora when = marcas desde el inicio | Ocurre siempre que se presiona una tecla del teclado o cuando se reproduce el búfer del teclado.
deactivateEvent | what = deactivateEvent where.h = posición horizontal del ratón where.v = posición vertical del ratón message = WHANDLE para la ventana when = marcas desde el inicio | Ocurre siempre que se desactiva una ventana al hacer clic en el cuadro de cierre de menú, al activar otra ventana o al utilizar el comando DEACTIVATE WINDOW. A un evento deactivateEvent le sigue habitualmente un evento activateEvent.
activateEvent | what = activateEvent where.h = posición horizontal del ratón where.v = posición vertical del ratón message = WHANDLE para la ventana when = marcas desde el inicio | Ocurre siempre que se activa una ventana. Esto incluye ventanas de usuario y del sistema, así como cuadros de diálogo, por lo que se sugiere que siempre que reciba este tipo de eventos compruebe si pertenece a su ventana. Un evento activateEvent habitualmente va precedido de un evento deactivateEvent.
menuHitEvent | what = menuHitEvent misc = MENUID misc2 = BAR # when = marcas desde el inicio modifier = tecla modificadora | Ocurre siempre que un usuario realiza una selección de un elemento de tipo menú. Los elementos de tipo menú incluyen menús, menús emergentes y listas desplazables. Puesto que los menuHitEvents ocurren muy a menudo, es mejor utilizar la función _OnSelection para realizar una determinada tarea sobre una selección de menú para así eliminar un gran número de comprobaciones de eventos sobrantes.
closeEvent | what = closeEvent message = WHANDLE para la ventana when = marcas desde el inicio | Ocurre siempre que se elimina una ventana de la memoria mediante el comando RELEASE WINDOW o al salir de Visual FoxPro. Para comprobar si un usuario cerró una ventana al hacer clic en el cuadro de cierre de menú, compruebe el evento mouseDownEvent.
hideEvent | what = hideEvent when = marcas desde el inicio | Ocurre siempre que se oculta una ventana con el comando HIDE WINDOW.
showEvent | what = showEvent when = marcas desde el inicio | Ocurre siempre que se muestra una ventana con el comando SHOW WINDOW.
hotkeyEvent | what = hotkeyEvent where.h = posición horizontal del ratón where.v = posición vertical del ratón message = código de tecla (vea el capítulo Códigos de tecla de FoxPro) modifier = tecla modificadora when = marcas desde el inicio | Ocurre siempre que el usuario presiona una tecla a la que se han asignado acciones mediante el comando ON KEY LABEL.
sizeEvent | what = sizeEvent when = marcas desde el inicio | Ocurre únicamente cuando se emite un comando ZOOM WINDOW o SIZE WINDOW. Para comprobar una instancia de un usuario al hacer clic en el control de tamaño de una ventana, compruebe el evento mouseDownEvent.
zoomEvent | what = zoomEvent when = marcas desde el inicio | Ocurre únicamente cuando se ejecuta el comando ZOOM WINDOW. Para comprobar una instancia de un usuario al hacer clic en el control de zoom, compruebe el evento mouseDownEvent.

Vea también

Rutinas externas de biblioteca API ordenadas alfabéticamente | Rutinas externas de biblioteca API ordenadas por categoría | Códigos de teclas de Visual FoxPro (creación de bibliotecas API) | Activate (Evento)


Códigos de teclas de Visual FoxPro (creación de bibliotecas API)

La mayoría de las teclas tienen un valor constante incluso si se combinan con distintas teclas modificadoras (MAYÚS, CTRL y ALT). Todas las teclas normales (caracteres alfabéticos y especiales) tienen un código de tecla de su valor ASCII.

Los valores de código de tecla y de modificador de tecla se devuelven en la estructura EventRec. El código de tecla se puede encontrar en EventRec.message y los modificadores de tecla en EventRec.modifiers.

Visual FoxPro interpreta que algunas teclas tienen distintos valores según el modificador con el que se combinan. Por ejemplo, si se presiona MAYÚS+F10, los campos correspondientes en EventRec serían:

  • EventRec.message = 15D (Hex)
  • EventRec.modifier = 1000 (Hex)

Del mismo modo, si se presiona CTRL+F10, los valores de EventRec serían:

  • EventRec.message = 167 (Hex)
  • EventRec.modifiers = 2000 (Hex)

Cuando se utiliza más de un modificador con una tecla, los valores del modificador se suman. Por ejemplo, si presiona CTRL+MAYÚS+F10, se devuelven los siguientes valores:

  • EventRec.message = 167 (Hex)
  • EventRec.modifiers = 3000 (Hex)

El valor de EventRec.modifiers del ejemplo anterior es 0x3000 porque ambos modificadores, CTRL y MAYÚS, se incluyeron al presionar la tecla. Así, el modificador de tecla MAYÚS (0x1000) se sumó al modificador de tecla CTRL (0x2000) para obtener un valor de 0x3000.

Nota El modo en que Visual FoxPro interpreta las teclas (específicamente las teclas con modificadores) es inherente a Visual FoxPro. Otros programas pueden interpretar las teclas de manera diferente. Si se presiona una tecla en combinación con una o más teclas modificadoras (MAYÚS, CTRL y ALT), la parte principal representará los modificadores que se utilizaron.

La tabla siguiente muestra que la tecla F8 tiene un código de tecla distinto según el modificador utilizado.

Teclas presionadas | Modificador | Código de tecla de F8
F8 | Ninguno | \x142
MAYÚS+F8 | MAYÚS | \x15B
CTRL+F8 | CTRL | \x165
ALT+F8 | ALT | \x16F

Cada tecla especial que se puede combinar con modificadores tiene un valor único cuando se combina con cada uno de ellos. Si una tecla especial se combina con varios modificadores, el valor único que se asigna a la tecla será el valor para uno de los modificadores según las siguientes reglas:

  1. Primero compruebe si la combinación de teclas presionadas incluye la tecla ALT, ya que se asignará a la tecla principal el valor correspondiente a su pulsación combinada con la tecla ALT.
  2. Si la combinación de teclas no incluye ALT, compruebe si se ha utilizado el modificador de tecla CTRL, porque se asignará a la tecla principal el valor correspondiente a su pulsación combinada con la tecla CTRL.
  3. Si no se utiliza el modificador de tecla ALT ni CTRL, compruebe si se utilizó la tecla modificadora MAYÚS, ya que se asignará a la tecla principal el valor correspondiente a su pulsación combinada con la tecla MAYÚS.
  4. Por último, si no se utilizaron modificadores, se asignará a la tecla principal el valor sin basarse en los modificadores.

Códigos de tecla especiales

La tabla siguiente muestra los valores de tecla que Visual FoxPro asigna a las teclas especiales del teclado.

Tecla | Código de tecla (Hex) | Modificador de tecla
PRIMARIO DEL RATÓN | 100 | Ninguno
F1 | 13B | Ninguno
F2 | 13C | Ninguno
F3 | 13D | Ninguno
F4 | 13E | Ninguno
F5 | 13F | Ninguno
F6 | 140 | Ninguno
F7 | 141 | Ninguno
F8 | 142 | Ninguno
F9 | 143 | Ninguno
F10 | 144 | Ninguno
INICIO | 147 | Ninguno
FLECHA ARRIBA | 148 | Ninguno
RE PÁG | 149 | Ninguno
FLECHA IZQUIERDA | 14B | Ninguno
FLECHA DERECHA | 14D | Ninguno
FIN | 14F | Ninguno
FLECHA ABAJO | 150 | Ninguno
AV PÁG | 151 | Ninguno
INSERT | 152 | Ninguno
SUPR | 153 | Ninguno
F11 | 185 | Ninguno
F12 | 186 | Ninguno
SANGRÍA IZQUIERDA | 10F | shiftKey
MAYÚS+F1 | 154 | shiftKey
MAYÚS+F2 | 155 | shiftKey
MAYÚS+F3 | 156 | shiftKey
MAYÚS+F4 | 157 | shiftKey
MAYÚS+F5 | 158 | shiftKey
MAYÚS+F6 | 159 | shiftKey
MAYÚS+F7 | 15A | shiftKey
MAYÚS+F8 | 15B | shiftKey
MAYÚS+F9 | 15C | shiftKey
MAYÚS+F10 | 15D | shiftKey
MAYÚS+F11 | 187 | shiftKey
MAYÚS+F12 | 188 | shiftKey
CTRL+A | 001 | ctrlKey
CTRL+B | 002 | ctrlKey
CTRL+C | 003 | ctrlKey
CTRL+D | 004 | ctrlKey
CTRL+E | 005 | ctrlKey
CTRL+F | 006 | ctrlKey
CTRL+G | 007 | ctrlKey
CTRL+H | 008 | ctrlKey
CTRL+I | 009 | ctrlKey
CTRL+ENTRAR | 00A | ctrlKey
CTRL+J | 00A | ctrlKey
CTRL+K | 00B | ctrlKey
CTRL+L | 00C | ctrlKey
CTRL+M | 00D | ctrlKey
CTRL+N | 00E | ctrlKey
CTRL+O | 00F | ctrlKey
CTRL+P | 010 | ctrlKey
CTRL+Q | 011 | ctrlKey
CTRL+R | 012 | ctrlKey
CTRL+S | 013 | ctrlKey
CTRL+T | 014 | ctrlKey
CTRL+U | 015 | ctrlKey
CTRL+V | 016 | ctrlKey
CTRL+W | 017 | ctrlKey
CTRL+X | 018 | ctrlKey
CTRL+Y | 019 | ctrlKey
CTRL+Z | 01A | ctrlKey
CTRL+ ( | 01B | ctrlKey
CTRL+ \ | 01C | ctrlKey
CTRL+ ) | 01D | ctrlKey
CTRL+ ^ | 01E | ctrlKey+shiftKey
CTRL+ - | 01F | ctrlKey
CTRL+ BARRA ESPACIADORA | 020 | ctrlKey
CTRL+F1 | 15E | ctrlKey
CTRL+F2 | 15F | ctrlKey
CTRL+F3 | 160 | ctrlKey
CTRL+F4 | 161 | ctrlKey
CTRL+F5 | 162 | ctrlKey
CTRL+F6 | 163 | ctrlKey
CTRL+F7 | 164 | ctrlKey
CTRL+F8 | 165 | ctrlKey
CTRL+F9 | 166 | ctrlKey
CTRL+F10 | 167 | ctrlKey
CTRL+FLECHA IZQUIERDA | 173 | ctrlKey
CTRL+FLECHA DERECHA | 174 | ctrlKey
CTRL+FIN | 175 | ctrlKey
CTRL+AV PÁG | 176 | ctrlKey
CTRL+INICIO | 177 | ctrlKey
CTRL+RE PÁG | 184 | ctrlKey
CTRL+F11 | 189 | ctrlKey
CTRL+F12 | 18A | ctrlKey
CTRL+FLECHA ARRIBA | 18D | ctrlKey
CTRL+FLECHA ABAJO | 191 | ctrlKey
CTRL+INSERT | 192 | ctrlKey
CTRL+SUPR | 193 | ctrlKey
CTRL+TAB | 194 | ctrlKey
ALT+Q | 110 | altKey
ALT+W | 111 | altKey
ALT+E | 112 | altKey
ALT+R | 113 | altKey
ALT+T | 114 | altKey
ALT+Y | 115 | altKey
ALT+U | 116 | altKey
ALT+I | 117 | altKey
ALT+O | 118 | altKey
ALT+P | 119 | altKey
ALT+A | 11E | altKey
ALT+S | 11F | altKey
ALT+D | 120 | altKey
ALT+F | 121 | altKey
ALT+G | 122 | altKey
ALT+H | 123 | altKey
ALT+J | 124 | altKey
ALT+K | 125 | altKey
ALT+L | 126 | altKey
ALT+Z | 12C | altKey
ALT+X | 12D | altKey
ALT+C | 12E | altKey
ALT+V | 12F | altKey
ALT+B | 130 | altKey
ALT+N | 131 | altKey
ALT+M | 132 | altKey
ALT+F1 | 168 | altKey
ALT+F2 | 169 | altKey
ALT+F3 | 16A | altKey
ALT+F4 | 16B | altKey
ALT+F5 | 16C | altKey
ALT+F6 | 16D | altKey
ALT+F7 | 16E | altKey
ALT+F8 | 16F | altKey
ALT+F9 | 170 | altKey
ALT+F10 | 171 | altKey
ALT+1 | 178 | altKey
ALT+2 | 179 | altKey
ALT+3 | 17A | altKey
ALT+4 | 17B | altKey
ALT+5 | 17C | altKey
ALT+6 | 17D | altKey
ALT+7 | 17E | altKey
ALT+8 | 17F | altKey
ALT+9 | 180 | altKey
ALT+0 | 181 | altKey
ALT+F11 | 18B | altKey
ALT+F12 | 18C | altKey
ALT+INICIO | 197 | altKey
ALT+FLECHA ARRIBA | 198 | altKey
ALT+RE PÁG | 199 | altKey
ALT+FLECHA IZQUIERDA | 19B | altKey
ALT+FLECHA DERECHA | 19D | altKey
ALT+FIN | 19F | altKey
ALT+FLECHA ABAJO | 1A0 | altKey
ALT+AV PÁG | 1A1 | altKey
ALT+INSERT | 1A2 | altKey
ALT+SUPR | 1A3 | altKey

Ejemplo

FAR EventHandler(WHandle theWindow, EventRec FAR *ev)
{
switch(ev->what)
{
case keyDownEvent:                  /* Check the keyDownEvent */
if (ev->modifiers & shiftCodeMask)      /* A modifier was pressed. */
{
if (ev->modifiers & altKey)            /* Check for the ALT Key */
_PutStr("ALT Key Code should be used.\n");
else
if (ev->modifiers & ctrlKey)         /* CTRL Key */
_PutStr("CTRL Key Code should be used.\n");
else
if (ev->modifiers & shiftKey)         /* SHIFT Key */
_PutStr("SHIFT Key Code should be used.\n");
}
else
_PutStr("Regular Key Code should be used.\n");
return NO;                        /* Let Visual FoxPro have Key also */
break;
default:
return NO;
}
}

Nota shiftCodeMask, altKey, ctrlKey y shiftKey están todas definidas en PRO_EXT.H y PRO_EXT.INC de la siguiente forma:

  • #define shiftCodeMask 0xf000
  • #define shiftKey 0x1000
  • #define ctrlKey 0x2000
  • #define altKey 0x4000

Vea también

Rutinas externas de biblioteca API ordenadas alfabéticamente | Rutinas externas de biblioteca API ordenadas por categoría | _PutStr( ) (Rutina de biblioteca API) | _ASCIICOLS (Variable del sistema) | _ASCIIROWS (Variable del sistema) | Eventos de Visual FoxPro (creación de bibliotecas API) | KeyPress (Evento)


SQL Comandos y Funciones

Visual FoxPro soporta comandos y funciones del sublenguaje Structured Query Language (SQL). Los comandos SQL de Visual FoxPro SQL hacen uso de la tecnología de Optimización Rushmore para mejorar el rendimiento, y un sencillo comando SQL puede ser usado para reemplazar múltiples comandos Visual FoxPro.

Visual FoxPro soporta lo siguiente:

ALTER TABLE - SQL (Comando)
Modifica una tabla existente. Puede modificar el nombre, tipo, precisión, escala, soporte de valores nulos, y reglas de integridad referencial para cada campo en la tabla.
CREATE CURSOR - SQL (Comando)
Crea una tabla temporal. Cada campo en la tabla está definido con un nombre, tipo, precisión, escala, soporte de valores nulos, y reglas de integridad referencial. Estas definiciones pueden ser obtenidas desde una matriz.
CREATE SQL VIEW (Comando)
Muestra el Diseñador de Vistas, permitiéndole crear una vista SQL.
CREATE TABLE - SQL (Comando)
Crea una tabla. Cada nuevo campo de la tabla es definido con un nombre, tipo, precisión, escala, soporte para valores nulos, y reglas de integridad referencial. Estas definiciones pueden ser obtenidas desde una matriz.
DELETE - SQL (Comando)
Marca registros en una tabla para su borrado, usando sintaxis SQL.
INSERT - SQL (Comando)
Agrega un nuevo registro al final de una tabla existente. El nuevo registro contiene datos listados en el comando INSERT, desde una matriz o instrucción SQL.
SELECT - SQL (Comando)
Especifica los criterios en los que se basa una consulta y ejecuta la consulta. Visual FoxPro interpreta la consulta y recupera los datos especificados de la tabla o tablas. El comando SELECT se integra en Visual FoxPro como cualquier otro comando de Visual FoxPro. Con el comando SELECT puede crear una consulta en las siguientes áreas:
  • En la ventana Comandos.
  • En un programa de Visual FoxPro (como cualquier otro comando de Visual FoxPro).
  • En el Diseñador de consultas.
SQL Pass Through (Foundation Class)
Hace posible ejecutar procedimientos almacenados en una base de datos como lo puede ser Microsoft SQL Server.
SQLCANCEL( ) (Función)
Hace la petición de cancelación de una instrucción SQL actualmente en ejecución.
SQLCOLUMNS( ) (Función)
Almacena una lista de nombres de columnas e información acerca de cada columna para la tabla de una fuente de datos en cursor de Visual FoxPro.
SQLCOMMIT( ) (Función)
Confirma una transacción.
SQLCONNECT( ) (Función)
Establece una conexión con una fuente de datos.
SQLDISCONNECT( ) (Función)
Termina una conexión con una fuente de datos.
SQLEXEC( ) (Función)
Manda una instrucción SQL a la fuente de datos, donde la instrucción es procesada.
SQLGETPROP( ) (Función)
Devuelve la configuración actual o predeterminada para una conexión activa.
SQLMORERESULTS( ) (Función)
Copia otro conjunto de resultados en un cursor de Visual FoxPro si más conjuntos de resultados están disponibles.
SQLPREPARE( ) (Función)
Prepara una instrucción SQL para su ejecución remota via SQLEXEC( ).
SQLROLLBACK( ) (Función)
Cancela cualquier cambio hecho durante la transacción actual.
SQLSETPROP( ) (Función)
Especifica una configuración para una conexión activa.
SQLSTRINGCONNECT( ) (Función)
Establece una conexión a una fuente de datos a través de una cadena de conexión.
SQLTABLES( ) (Función)
Almacena los nombres de las tablas de la fuente de datos en un cursor de Visual FoxPro.
UPDATE - SQL (Comando)
Actualiza los registros de una tabla. Los registros se pueden actualizar según los resultados de una instrucción SELECT - SQL.

Vea también

CREATE QUERY (Comando) | MODIFY QUERY (Comando) | Referencia del lenguaje


Referencia del lenguaje para desarrollo OLE DB

El proveedor de OLE DB de Visual FoxPro admite la sintaxis del lenguaje nativo Visual FoxPro para los siguientes comandos:

CREATE TABLE - SQL Comando
Crea una tabla que tiene los campos especificados.
DELETE - SQL Comando
Marca los registros que se van a eliminar.
DROP TABLE Comando
Quita una tabla de la base de datos especificada con el origen de datos y la elimina del disco.
INSERT - SQL Comando
Anexa un registro al final de una tabla que contiene los valores de campo especificados.
SELECT - SQL Comando
Recupera datos de una o más tablas.
UPDATE - SQL Comando
Actualiza registros de una tabla con nuevos valores.

La Referencia del lenguaje de Visual FoxPro contiene información detallada acerca de los siguiente comandos compatibles:

ALTER TABLE - SQL Comando
Modifica la estructura de una tabla por programa.
CREATE TABLE - SQL Comando
Crea una tabla que tiene los campos especificados.
DELETE - SQL Comando
Marca los registros que se van a eliminar.
DELETE TAG Comando
Quita una o varias etiquetas de un archivo de índice compuesto (.cdx).
DROP TABLE Comando
Quita una tabla de la base de datos especificada con el origen de datos y la elimina del disco.
INDEX Comando
Crea un archivo de índice para mostrar registros de tabla y tener acceso a los mismos en un orden lógico.
INSERT - SQL Comando
Anexa un registro al final de una tabla que contiene los valores de campo especificados.
SELECT - SQL Comando
Recupera datos de una o más tablas.

El proveedor de OLE DB de Visual FoxPro admite la sintaxis del lenguaje nativo Visual FoxPro para este comando:

SET ANSI Command
Determina cómo se hacen las comparaciones de cadenas de distintas longitudes utilizando el operador = en comandos SQL de Visual FoxPro.
SET BLOCKSIZE Comando
Especifica cómo se asigna el espacio del disco para el almacenamiento de campos memo.
SET COLLATE Comando
Especifica una secuencia de ordenación para los campos de caracteres en operaciones posteriores de indizado y orden.
SET DELETED Comando
Especifica si se procesarán o no los registros marcados para su eliminación y si están disponibles o no para su uso en otros comandos.
SET EXACT Comando
Especifica las reglas para comparar dos cadenas de longitudes diferentes.
SET EXCLUSIVE Comando
Especifica si los archivos de tablas se abren para uso exclusivo o compartido en una red.
SET NULL Comando
Determina si los comandos ALTER TABLE - SQL, CREATE TABLE - SQL e INSERT - SQL admiten valores nulos.
SET PATH Command
Especifica una ruta de acceso para buscar archivos.
SET REPROCESS Command
Especifica cuántas veces o durante cuánto tiempo de debe bloquear un archivo o un registro después de que fracase un intento de bloqueo.
SET UNIQUE Command
Especifica si los registros con valores de clave de índice duplicados se mantienen en un archivo de índice.
UPDATE - SQL Command
Actualiza registros de una tabla con nuevos valores.

Vea también

Compatibilidad de datos del proveedor OLE DB de Visual FoxPro | Comandos SET de Visual FoxPro compatibles | Comandos y funciones de Visual FoxPro compatibles | Comandos y funciones de Visual FoxPro no compatibles | Asignar funciones de controlador ODBC de Visual FoxPro a métodos OLE DB | Objetos OLE DB compatibles | Propiedades OLE DB estándar y personalizadas | Proveedor OLE DB de Visual FoxPro


Compatibilidad de datos del proveedor OLE DB de Visual FoxPro

La tabla siguiente describe los tipos y otras características de archivo y código de los datos compatibles con el proveedor de OLE DB de Visual FoxPro.

Tipo de datos | Indicador | Tamaño | Intervalo | Tipo OLE DB
Carácter | C | 1 byte por carácter hasta 254 | Cualquier carácter | DBTYPE_STR
Carácter (binario) | C NOCPTRANS | 1 byte por carácter hasta 254 | Cualquier carácter | DBTYPE_BYTES
Fecha | D | 8 bytes | 0001-01-01 a 9999-12-31 | DBTYPE_DATE
DateTime | T | 8 bytes | 0001-01-01 a 9999-12-31; 00:00:00 a.m. a 11:59:59 p.m. | DBTYPE_DBTIMESTAMP
Numérico | N | 1 a 20 bytes | - .9999999999E+19 a .9999999999E+20 | DBTYPE_DECIMAL
Flotante | F | 1 a 20 bytes | - .9999999999E+19 a .9999999999E+20 | DBTYPE_DECIMAL
Entero | I | 4 bytes | 2147483647 a 2147483647 | DBTYPE_I4
Double | B | 8 bytes | +/-4,94065645841247E-324 a +/-8,9884656743115E307 | DBTYPE_R8
Moneda | Y | 8 bytes | - 922337203685477,5807 a 922337203685477,5807 | DBTYPE_CY
Logical | L |  | .T./.F. | DBTYPE_BOOL
Memo | M | 4 bytes en una tabla | Memoria disponible | DBTYPE_BYTES
Memo (binario) | M NOCPTRANS | 4 bytes en una tabla | Memoria disponible | DBTYPE_BYTES
General (blob) | G | 4 bytes en una tabla | Memoria disponible | DBTYPE_BYTES

La tabla siguiente describe la asignación de tipos OLE DB de Visual FoxPro a tipos de Visual Studio:

Indicador | Tipo OLE DB | Tipo de Visual Studio
C | DBTYPE_STR | System.String
C NOCPTRANS | DBTYPE_BYTES | System.String
D | DBTYPE_DATE | System.DateTime
T | DBTYPE_DBTIMESTAMP | System.DateTime
N | DBTYPE_NUMERIC | System.Decimal
F | DBTYPE_NUMERIC | System.Decimal
I | DBTYPE_I4 | System.Int32
B | DBTYPE_R8 | System.Double
Y | DBTYPE_CY | System.Decimal
M | DBTYPE_STR | System.String
M NOCPTRANS | DBTYPE_BYTES | System.Byte
G | DBTYPE_BYTES | System.Byte

Vea también

Referencia del lenguaje para desarrollo OLE DB | Comandos SET de Visual FoxPro compatibles | Comandos y funciones de Visual FoxPro compatibles | Comandos y funciones de Visual FoxPro no compatibles | Objetos OLE DB compatibles | Propiedades OLE DB estándar y personalizadas | Proveedor OLE DB de Visual FoxPro


Comandos y funciones de Visual FoxPro compatibles con el proveedor OLE DB

Los siguientes comandos y funciones se admiten en reglas, desencadenadores, valores predeterminados y procedimientos almacenados.

$ (Operador) | % (Operador) | & (Comando)
&& (Comando) | * (Comando) | = (Comando)

A

ABS( ) (Función) | ACOPY( ) (Función) | ACOS( ) (Función)
ADATABASES( ) (Función) | ADBOBJECTS( ) (Función) | ADD TABLE (Comando)
ADEL( ) (Función) | AELEMENT( ) (Función) | AERROR( ) (Función)
AFIELDS( ) (Función) | AINS( ) (Función) | ALEN( ) (Función)
ALIAS( ) (Función) | ALLTRIM( ) (Función) | ALTER TABLE - SQL (Comando)
AND (Operador) | APPEND (Comando) | APPEND FROM ARRAY (Comando)
APPEND GENERAL (Comando) | APPEND GENERAL (Comando) | APPEND MEMO (Comando)
APPEND PROCEDURES (Comando) | ASC( ) (Función) | ASCAN( ) (Función)
ASIN( ) (Función) | ASORT( ) (Función) | ASUBSCRIPT( ) (Función)
AT( ) (Función) | AT_C( ) (Función) | ATAN( ) (Función)
ATC( ) (Función) | ATCC( ) (Función) | ATCLINE( ) (Función)
ATLINE( ) (Función) | ATN2( ) (Función) | AUSED( ) (Función)
AVERAGE (Comando) |  |

B

BEGIN TRANSACTION (Comando) | BETWEEN( ) (Función) | BITAND( ) (Función)
BITCLEAR( ) (Función) | BITLSHIFT( ) (Función) | BITNOT( ) (Función)
BITOR( ) (Función) | BITRSHIFT( ) (Función) | BITSET( ) (Función)
BITTEST( ) (Función) | BITXOR( ) (Función) | BLANK (Comando)
BOF( ) (Función) |  |

C

CALCULATE (Comando) | CANDIDATE( ) (Función) | CDX( ) (Función)
CEILING( ) (Función) | CHR( ) (Función) | CHRTRAN( ) (Función)
CHRTRANC( ) (Función) | CLOSE (Comandos) | CMONTH( ) (Función)
CONTINUE (Comando) | COPY INDEXES (Comando) | COPY PROCEDURES (Comando)
COPY STRUCTURE (Comando) | COPY STRUCTURE EXTENDED (Comando) | COPY TO (Comando)
CALCULATE (Comando) | CANDIDATE( ) (Función) | CDX( ) (Función)
CEILING( ) (Función) | CHR( ) (Función) | CHRTRAN( ) (Función)
CHRTRANC( ) (Función) | CLOSE (Comandos) | CMONTH( ) (Función)
CONTINUE (Comando) | COPY INDEXES (Comando) | COPY PROCEDURES (Comando)
COPY STRUCTURE (Comando) | COPY STRUCTURE EXTENDED (Comando) | CURSORGETPROP("AutoIncError") (Función)

D

DATE( ) (Función) | DATETIME( ) (Función) | DAY( ) (Función)
DBC( ) (Función) | DBF( ) (Función) | DBUSED( ) (Función)
DELETE - SQL (Comando) | DELETE (Comando) | DELETE TAG (Comando)
DELETED( ) (Función) | DESCENDING( ) (Función) | DIFFERENCE( ) (Función)
DIMENSION (Comando) | DISKSPACE( ) (Función) | DMY( ) (Función)
DO CASE ... ENDCASE (Comando) | DO (Comando) | DO WHILE ... ENDDO (Comando)
DOW( ) (Función) | DTOC( ) (Función) | DTOR( ) (Función)
DTOS( ) (Función) | DTOT( ) (Función) |

E

EMPTY( ) (Función) | END TRANSACTION (Comando) | EOF( ) (Función)
ERROR( ) (Función) | EVALUATE( ) (Función) | EXIT (Comando)
EXP( ) (Función) |  |

F

FCOUNT( ) (Función) | FDATE( ) (Función) | FIELD( ) (Función)
FILE( ) (Función) | FILTER( ) (Función) | FLDLIST( ) (Función)
FLOCK( ) (Función) | FLOOR( ) (Función) | FLUSH (Comando)
FOR ... ENDFOR (Comando) | FOR( ) (Función) | FOUND( ) (Función)
FREE TABLE (Comando) | FSIZE( ) (Función) | FTIME( ) (Función)
FULLPATH( ) (Función) | FUNCTION (Comando) | FV( ) (Función)

G

GATHER (Comando) | GETCP( ) (Función) | GETFLDSTATE( ) (Función)
GETNEXTMODIFIED( ) (Función) | GO | GOTO (Comando) | GOMONTH( ) (Función)

H

HEADER( ) (Función) HOUR( ) (Función)

I

IDXCOLLATE( ) (Función) | IF ... ENDIF (Comando) | IIF( ) (Función)
INDBC( ) (Función) | INDEX (Comando) | INLIST( ) (Función)
INSERT - SQL (Comando) | INT( ) (Función) | ISALPHA( ) (Función)
ISBLANK( ) (Función) | ISDIGIT( ) (Función) | ISEXCLUSIVE( ) (Función)
ISLEADBYTE( ) (Función) | ISLOWER( ) (Función) | ISLOWER( ) (Función)
ISREADONLY( ) (Función) | ISUPPER( ) (Función) |

K

KEY( ) (Función) KEYMATCH( ) (Función)

L

LEFT( ) (Función) | LEFTC( ) (Función) | LEN( ) (Función)
LENC( ) (Función) | LIKE( ) (Función) | LIKEC( ) (Función)
LOCAL (Comando) | LOCATE (Comando) | LOCK( ) (Función)
LOG( ) (Función) | LOG10( ) (Función) | LOOKUP( ) (Función)
LOWER( ) (Función) | LPARAMETERS (Comando) | LTRIM( ) (Función)
LUPDATE( ) (Función) |  |

M

_MLINE (Variable del sistema) | MAX( ) (Función) | MDX( ) (Función)
MDY( ) (Función) | MEMLINES( ) (Función) | MESSAGE( ) (Función)
MIN( ) (Función) | MINUTE( ) (Función) | MLINE( ) (Función)
MOD( ) (Función) | MONTH( ) (Función) | MTON( ) (Función)

N

NDX( ) (Función) | NORMALIZE( ) (Función) | NOT (Operador)
NOTE (Comando) | NTOM( ) (Función) | NVL( ) (Función)

O

OCCURS( ) (Función) | OLDVAL( ) (Función) | ON ERROR (Comando)
ON KEY (Comando) | ON( ) (Función) | OPEN DATABASE (Comando)
OR (Operador) | ORDER( ) (Función) | OS( ) (Función)

P

PACK (Comando) | PADL( ) | PADR( ) | PADC( ) (Funciones) | PARAMETERS (Comando)
PARAMETERS( ) (Función) | PAYMENT( ) (Función) | PI( ) (Función)
PRIMARY( ) (Función) | PRIVATE (Comando) | PROCEDURE (Comando)
PROGRAM( ) (Función) | PROPER( ) (Función) | PUBLIC (Comando)
PV( ) (Función) |  |

R

RAND( ) (Función) | RAT( ) (Función) | RATC( ) (Función)
RATLINE( ) (Función) | RECALL (Comando) | RECCOUNT( ) (Función)
RECNO( ) (Función) | RECSIZE( ) (Función) | RELATION( ) (Función)
REMOVE TABLE (Comando) | REPLACE (Comando) | REPLACE FROM ARRAY (Comando)
REPLICATE( ) (Función) | RETRY (Comando) | RETURN (Comando)
RIGHT( ) (Función) | RIGHTC( ) (Función) | RLOCK( ) (Función)
ROLLBACK (Comando) | ROUND( ) (Función) | RTOD( ) (Función)
RTRIM( ) (Función) |  |

S

SCAN ... ENDSCAN (Comando) | SCATTER (Comando) | SEC( ) (Función)
SECONDS( ) (Función) | SEEK (Comando) | SEEK( ) (Función)
SELECT - SQL (Comando) | SELECT (Comando) | SELECT( ) (Función)
SET AUTOINCERROR (Comando) | SET BLOCKSIZE (Comando) | SET COLLATE (Comando)
SET DATABASE (Comando) | SET DEFAULT (Comando) | SET DELETED (Comando)
SET ENGINEBEHAVIOR (Comando) | SET EXACT (Comando) | SET EXCLUSIVE (Comando)
SET FDOW (Comando) | SET FIELDS (Comando) | SET FILTER (Comando)
SET FIXED (Comando) | SET FULLPATH (Comando) | SET FWEEK (Comando)
SET HOURS (Comando) | SET INDEX (Comando) | SET LOCK (Comando)
SET MULTILOCKS (Comando) | SET NEAR (Comando) | SET NOCPTRANS (Comando)
SET NOTIFY (Comando) | SET NULL (Comando) | SET OPTIMIZE (Comando)
SET ORDER (Comando) | SET PATH (Comando) | SET PROCEDURE (Comando)
SET RELATION (Comando) | SET RELATION OFF (Comando) | SET REPROCESS (Comando)
SET SKIP (Comando) | SET UDFPARMS (Comando) | SET UNIQUE (Comando)
SET VOLUME (Comando) | SET( ) (Función) | SETFLDSTATE( ) (Función)
SIGN( ) (Función) | SIN( ) (Función) | SKIP (Comando)
SORT (Comando) | SPACE( ) (Función) | SQRT( ) (Función)
STORE (Comando) | STR( ) (Función) | STRCONV( ) (Función)
STRTRAN( ) (Función) | STUFF( ) (Función) | STUFFC( ) (Función)
SUBSTR( ) (Función) | SUBSTRC( ) (Función) | SUM (Comando)
SYS(0) - Información de equipo de red | SYS(1) - Fecha del sistema en formato Juliano | SYS(2) - Segundos transcurridos desde la media noche
SYS(3) - Nombre legal del archivo | SYS(5) - Unidad predeterminada | SYS(10) - cadenas del número de la fecha en formato Juliano
SYS(11) - Número del día en formato Juliano | SYS(12) - Memoria disponible en bytes | SYS(2001) – Estado del comando SET
SYS(2003) – Directorio actual | SYS(2004) – Directorio de inicio de Visual FoxPro | SYS(2007) - Valor de la suma de comprobación
SYS(2011) - Estado de bloqueo actual | SYS(2015) - Nombre de procedimiento único | SYS(2029) - Tipo de tabla

T

_TALLY (Variable del sistema) | _TRIGGERLEVEL (Variable del sistema) | TABLEREVERT( ) (Función)
TABLEUPDATE( ) (Función) | TAG( ) (Función) | TAGCOUNT( ) (Función)
TAGNO( ) (Función) | TAN( ) (Función) | TARGET( ) (Función)
TIME( ) (Función) | TOTAL (Comando) | TRIM( ) (Función)
TTOC( ) (Función) | TTOD( ) (Función) | TXNLEVEL( ) (Función)
TYPE( ) (Función) |  |

U

UNIQUE( ) (Función) | UNLOCK (Comando) | UPDATE - SQL (Comando)
UPDATE (Comando) | UPPER( ) (Función) | USE (Comando)
USED( ) (Función) |  |

V

VAL( ) (Función) VERSION( ) (Función)

W

WEEK( ) (Función)

Y

YEAR( ) (Función)

Z

ZAP (Comando)

Vea también

Referencia del lenguaje para desarrollo OLE DB | Compatibilidad de datos del proveedor OLE DB de Visual FoxPro | Comandos SET de Visual FoxPro compatibles | Comandos y funciones de Visual FoxPro no compatibles | Objetos OLE DB compatibles | Propiedades OLE DB estándar y personalizadas | Proveedor OLE DB de Visual FoxPro


Comandos SET de Visual FoxPro admitidos por el proveedor de OLE DB

El proveedor de OLE DB de Visual FoxPro admite los siguientes comandos SET.

SET ANSI (Comando)

SET AUTOINCERROR (Comando)

SET BLOCKSIZE (Comando)

SET COLLATE (Comando)

SET DELETED (Comando)

SET ENGINEBEHAVIOR (Comando)

SET EXACT (Comando)

SET EXCLUSIVE (Comando)

SET FULLPATH (Comando)

SET MULTILOCKS (Comando)

SET NULL (Comando)

SET PATH (Comando)

SET REPROCESS (Comando)

Nota Puede determinar el estado de muchos comandos SET, admitidos y no admitidos excepto SET ANSI, consultando la base de datos. Por ejemplo, el siguiente código devuelve el valor PATH en el cursor resultante.
   SELECT SET('PATH') FROM <sometable> WHERE RECNO()=1

Vea también

Referencia del lenguaje para desarrollo OLE DB | Compatibilidad de datos del proveedor OLE DB de Visual FoxPro | Comandos y funciones de Visual FoxPro compatibles | Comandos y funciones de Visual FoxPro no compatibles | Objetos OLE DB compatibles | Propiedades OLE DB estándar y personalizadas | Proveedor OLE DB de Visual FoxPro


Comandos y funciones de Visual FoxPro no compatibles con el Proveedor OLE DB

Los siguientes comandos y funciones no son compatibles con el proveedor OLE DB:

#DEFINE ... #UNDEF | #IF ... #ENDIF (Directiva del preprocesador) | #IFDEF | #IFNDEF
#INCLUDE (Directiva del preprocesador) | :: (Operador de resolución de alcance) | ! (Comando) (vea RUN | ! (Comando)
? | ?? (Comando) | ??? (Comando) | \ | \\ (Comando)
@ ... BOX (Comando) | @ ... CLASS (Comando) | @ ... CLEAR (Comando)
@ ... EDIT - Cuadros de edición (Comando) | @ ... FILL (Comando) | @ ... GET
@ ... MENU (Comando) | @ ... PROMPT (Comando) | @ ... SAY (Comando)
@ ... SCROLL (Comando) | @ ... TO (Comando) |

A

ACCEPT (Comando) | ACLASS( ) (Función) | ACTIVATE MENU (Comando)
ACTIVATE POPUP (Comando) | ACTIVATE SCREEN (Comando) | ACTIVATE WINDOW (Comando)
ActivateCell (Método) | ADD CLASS (Comando) | ADIR( ) (Función)
AFONT( ) (Función) | AINSTANCE( ) (Función) | _ALIGNMENT (Variable de memoria del sistema)
AMEMBERS( ) (Función) | ANSITOOEM( ) (Función) | APRINTERS( ) (Función)
ASELOBJ( ) (Función) | ASSIST (Comando) |

B

BAR( ) (Función) | BARCOUNT( ) (Función) | BARPROMPT( ) (Función)
_BEAUTIFY (Variable de memoria del sistema) | _BOX (Variable de memoria del sistema) | BROWSE (Comando)
_BROWSER (Variable de memoria del sistema) | BUILD APP (Comando) | BUILD EXE (Comando)
BUILD PROJECT (Comando) | _BUILDER (Variable de memoria del sistema) |

C

_CALCVALUE (Variable de memoria del sistema) | _CLIPTEXT (Variable de memoria del sistema) | _CONVERTER (Variable de memoria del sistema)
_CUROBJ (Variable de memoria del sistema) | CALL (Comando) | CANCEL (Comando)
CAPSLOCK( ) (Función) | CD (Comando) | CHANGE (Comando)
CHDIR (Comando) | CHRSAW( ) (Función) | CLOSE MEMO (Comando)
CNTBAR( ) (Función) | CNTPAD( ) (Función) | COL( ) (Función)
COMPILE (Comando) | COMPILE DATABASE (Comando) | COMPILE FORM (Comando)
COMPOBJ( ) (Función) | Container (Objeto) | Control (Objeto)
COPY FILE (Comando) | COPY MEMO (Comando) | CREATE CLASS (Comando)
CREATE CLASSLIB (Comando) | CREATE COLOR SET (Comando) | CREATE (Comando)
CREATE CONNECTION (Comando) | CREATE DATABASE (Comando) | CREATE FORM (Comando)
CREATE FROM (Comando) | CREATE LABEL (Comando) | CREATE MENU (Comando)
CREATE PROJECT (Comando) | CREATE QUERY (Comando) | CREATE REPORT (Comando)
CREATE SCREEN (Comando) | CREATE SQL VIEW (Comando) | CREATE TRIGGER (Comando)
CREATE VIEW (Comando) | CREATEOBJECT( ) (Función) | CURDIR( ) (Función)
CURSORTOXML( ) (Función) |  |

D

_DBLCLICK (Variable de memoria del sistema) | _DIARYDATE (Variable de memoria del sistema) | DBSETPROP( ) (Función)
DDE (Funciones) | DEACTIVATE MENU (Comando) | DEACTIVATE POPUP (Comando)
DEACTIVATE WINDOW (Comando) | DECLARE - DLL (Comando) | DECLARE (Comando)
DEFINE BAR (Comando) | DEFINE BOX (Comando) | DEFINE CLASS (Comando)
DEFINE MENU (Comando) | DEFINE PAD (Comando) | DEFINE POPUP (Comando)
DEFINE WINDOW (Comando) | DELETE CONNECTION (Comando) | DELETE DATABASE (Comando)
DELETE FILE (Comando) | DELETE TRIGGER (Comando) | DELETE VIEW (Comando)
DIR (Comando) | DIRECTORY (Comando) | DISPLAY (Comando)
DISPLAY CONNECTIONS (Comando) | DISPLAY DATABASE (Comando) | DISPLAY DLLS (Comando)
DISPLAY FILES (Comando) | DISPLAY MEMORY (Comando) | DISPLAY OBJECTS (Comando)
DISPLAY PROCEDURES (Comando) | DISPLAY STATUS (Comando) | DISPLAY STRUCTURE (Comando)
DISPLAY TABLES (Comando) | DISPLAY VIEWS (Comando) | DO FORM (Comando)

E

EDIT (Comando) | ERROR (Comando) |
ERASE (Comando) | EXTERNAL (Comando) | EXPORT (Comando)
EJECT (Comando) | EJECT PAGE (Comando) |

F

_FOXDOC (Variable de memoria del sistema) | _FOXGRAPH (Variable de memoria del sistema) | FCHSIZE( ) (Función)
FCLOSE( ) (Función) | FCREATE( ) (Función) | FEOF( ) (Función)
FERROR( ) (Función) | FFLUSH( ) (Función) | FGETS( ) (Función)
FILER (Comando) | FIND (Comando) | FKLABEL( ) (Función)
FKMAX( ) (Función) | FONTMETRIC( ) (Función) | FOPEN( ) (Función)
FPUTS( ) (Función) | FREAD( ) (Función) | FSEEK( ) (Función)
FWRITE( ) (Función) |  |

G

_GENGRAPH (Variable de memoria del sistema) | _GENMENU (Variable de memoria del sistema) | _GENPD (Variable de memoria del sistema)
_GENSCRN (Variable de memoria del sistema) | _GENXTAB (Variable de memoria del sistema) | GETBAR( ) (Función)
GETCOLOR( ) (Función) | GETDIR( ) (Función) | GETENV( ) (Función)
GETEXPR (Comando) | GETFILE( ) (Función) | GETFONT( ) (Función)
GETOBJECT( ) (Función) | GETPAD( ) (Función) | GETPICT( ) (Función)
GETPRINTER( ) (Función) |  |

H

HELP (Comando) | HIDE MENU (Comando) | HIDE POPUP (Comando)
HIDE WINDOW (Comando) | HOME( ) (Función) |

I

IMESTATUS( ) (Función) | IMPORT (Comando) | INPUT (Comando)
INDEX ON (Comando) | INKEY( ) (Función) | ISCOLOR( ) (Función)
INSERT (Comando) | INSMODE( ) (Función) |
ISMOUSE( ) (Función) | _INDENT (Variable de memoria del sistema) |

J

JOIN (Comando)

K

KEYBOARD (Comando)

L

_LMARGIN (Variable de memoria del sistema) | LABEL (Comando) | LASTKEY( ) (Función)
LINENO( ) (Función) | LIST (Comandos) | LIST CONNECTIONS (Comando)
LOAD (Comando) | LOCFILE( ) (Función) |

M

MCOL( ) (Función) | MD (Comando) | MENU TO (Comando)
MEMORY( ) (Función) | MENU (Comando) | MKDIR (Comando)
MENU( ) (Función) | MESSAGEBOX( ) (Función) | MODIFY CONNECTION (Comando)
MODIFY CLASS (Comando) | MODIFY COMMAND (Comando) | MODIFY FORM (Comando)
MODIFY DATABASE (Comando) | MODIFY FILE (Comando) | MODIFY MEMO (Comando)
MODIFY GENERAL (Comando) | MODIFY LABEL (Comando) | MODIFY PROJECT (Comando)
MODIFY MENU (Comando) | MODIFY PROCEDURE (Comando) | MODIFY SCREEN (Comando)
MODIFY QUERY (Comando) | MODIFY REPORT (Comando) | MODIFY WINDOW (Comando)
MODIFY STRUCTURE (Comando) | MODIFY VIEW (Comando) | MOVE WINDOW (Comando)
MOUSE (Comando) | MOVE POPUP (Comando) | MROW( ) (Función)
MRKBAR( ) (Función) | MRKPAD( ) (Función) |
MWINDOW( ) (Función) | MDOWN( ) (Función) |

N

NEWOBJECT( ) (Función) NUMLOCK( ) (Función)

O

OBJNUM( ) (Función) | OBJTOCLIENT( ) (Función) | ON BAR (Comando)
OEMTOANSI( ) (Función) | ON APLABOUT (Comando) | ON EXIT MENU (Comando)
ON ESCAPE (Comando) | ON EXIT BAR (Comando) | ON KEY = (Comando)
ON EXIT PAD (Comando) | ON EXIT POPUP (Comando) | ON PAD (Comando)
ON KEY LABEL (Comando) | ON MACHELP (Comando) | ON SELECTION BAR (Comando)
ON PAGE (Comando) | ON READERROR (Comando) | ON SELECTION POPUP (Comando)
ON SELECTION MENU (Comando) | ON SELECTION PAD (Comando) |
ON SHUTDOWN (Comando) | OBJVAR( ) (Función) |

P

_PADVANCE (Variable de memoria del sistema) | _PAGENO (Variable de memoria del sistema) | _PBPAGE (Variable de memoria del sistema)
_PCOLNO (Variable de memoria del sistema) | _PCOPIES (Variable de memoria del sistema) | _PDRIVER (Variable de memoria del sistema)
_PDSETUP (Variable de memoria del sistema) | _PECODE (Variable de memoria del sistema) | _PEJECT (Variable de memoria del sistema)
_PEPAGE (Variable de memoria del sistema) | _PLENGTH (Variable de memoria del sistema) | _PLINENO (Variable de memoria del sistema)
_PLOFFSET (Variable de memoria del sistema) | _PPITCH (Variable de memoria del sistema) | _PQUALITY (Variable de memoria del sistema)
_PRETEXT (Variable de memoria del sistema) | _PSCODE (Variable de memoria del sistema) | _PSPACING (Variable de memoria del sistema)
_PWAIT (Variable de memoria del sistema) | PACK DATABASE (Comando) | PAD( ) (Función)
PCOL( ) (Función) | PEMSTATUS( ) (Función) | PLAY MACRO (Comando)
POP KEY (Comando) | POP MENU (Comando) | POP POPUP (Comando)
POPUP( ) (Función) | PRINTJOB ... ENDPRINTJOB (Comando) | PRINTSTATUS( ) (Función)
PRMBAR( ) (Función) | PRMPAD( ) (Función) | PROMPT( ) (Función)
PROW( ) (Función) | PRTINFO( ) (Función) | PUSH KEY (Comando)
PUSH MENU (Comando) | PUSH POPUP (Comando) | PUTFILE( ) (Función)

Q

QUIT (Comando)

R

_RMARGIN (Variable de memoria del sistema) | RD (Comando) | READKEY( ) (Función)
READ (Comando) | READ MENU (Comando) | RELEASE BAR (Comando)
REFRESH() (Función) | REINDEX (Comando) | RELEASE LIBRARY (Comando)
RELEASE CLASSLIB (Comando) | RELEASE (Comando) | RELEASE PAD (Comando)
RELEASE MENUS (Comando) | RELEASE MODULE (Comando) | RELEASE WINDOWS (Comando)
RELEASE POPUPS (Comando) | RELEASE PROCEDURE (Comando) | RENAME (Comando)
REMOVE CLASS (Comando) | RENAME CLASS (Comando) | RENAME VIEW (Comando)
RENAME CONNECTION (Comando) | RENAME TABLE (Comando) | RESTORE FROM (Comando)
REPORT (Comando) | REQUERY( ) (Función) | RESTORE WINDOW (Comando)
RESTORE MACROS (Comando) | RESTORE SCREEN (Comando) | RGBSCHEME( ) (Función)
RESUME (Comando) | RGB( ) (Función) | RUN | ! (Comando)
RMDIR (Comando) | ROW( ) (Función) |
RUNSCRIPT (Comando) | RDLEVEL( ) (Función) |

S

SAVE MACROS (Comando) | SAVE SCREEN (Comando) | SAVE TO (Comando)
SAVE WINDOWS (Comando) | SCHEME( ) (Función) | SCOLS( ) (Función)
SCROLL (Comando) | _SCREEN (Variable de memoria del sistema) | SET (Comando)
SET ALTERNATE (Comando) | SET APLABOUT (Comando) | SET AUTOSAVE (Comando)
SET BELL (Comando) | SET BLINK (Comando) | SET BORDER (Comando)
SET BRSTATUS (Comando) | SET CARRY (Comando) | SET DATE (Comando)
SET CLASSLIB (Comando) | SET CLEAR (Comando) | SET CLOCK (Comando)
SET COLOR OF (Comando) | SET COLOR OF SCHEME (Comando) | SET COLOR SET (Comando)
SET COLOR TO (Comando) | SET COMPATIBLE (Comando) | SET CONFIRM (Comando)
SET CONSOLE (Comando) | SET CPCOMPILE (Comando) | SET CPDIALOG (Comando)
SET CURRENCY (Comando) | SET CURSOR (Comando) | SET DATASESSION (Comando)
SET DATE (Comando) | SET DEBUG (Comando) | SET DECIMALS (Comando)
SET DELIMITERS (Comando) | SET DEVELOPMENT (Comando) | SET DEVICE (Comando)
SET DISPLAY (Comando) | SET DOHISTORY (Comando) | SET ECHO (Comando)
SET ESCAPE (Comando) | SET FORMAT (Comando) | SET FUNCTION (Comando)
SET HEADINGS (Comando) | SET HELP (Comando) | SET HELPFILTER (Comando)
SET INTENSITY (Comando) | SET KEY (Comando) | SET KEYCOMP (Comando)
SET LOGERRORS (Comando) | SET MACDESKTOP (Comando) | SET MACHELP (Comando)
SET MACKEY (Comando) | SET MARGIN (Comando) | SET MARK OF (Comando)
SET MARK TO (Comando) | SET MEMOWIDTH (Comando) | SET MESSAGE (Comando)
SET MOUSE (Comando) | SET ODOMETER (Comando) | SET OLEOBJECT (Comando)
SET PALETTE (Comando) | SET PDSETUP (Comando) | SET POINT (Comando)
SET PRINTER (Comando) | SET READBORDER (Comando) | SET REFRESH (Comando)
SET RESOURCE (Comando) | SET SAFETY (Comando) | SET SCOREBOARD (Comando)
SET SECONDS (Comando) | SET SEPARATOR (Comando) | SET SHADOWS (Comando)
SET SKIP OF (Comando) | SET SPACE (Comando) | SET STATUS (Comando)
SET STATUS BAR (Comando) | SET STEP (Comando) | SET STICKY (Comando)
SET SYSFORMATS (Comando) | SET SYSMENU (Comando) | SET TALK (Comando)
SET TEXTMERGE (Comando) | SET TEXTMERGE DELIMITERS (Comando) | SET TOPIC (Comando)
SET TOPIC ID (Comando) | SET TRBETWEEN (Comando) | SET TYPEAHEAD (Comando)
SET VIEW (Comando) | SET WINDOW OF MEMO (Comando) | SET XCMDFILE (Comando)
_SHELL (Variable de memoria del sistema) | SHOW GET (Comando) | SHOW GETS (Comando)
SHOW MENU (Comando) | SHOW OBJECT (Comando) | SHOW POPUP (Comando)
SHOW WINDOW (Comando) | SIZE POPUP (Comando) | SIZE WINDOW (Comando)
SKPBAR( ) (Función) | SKPPAD( ) (Función) | SOUNDEX( ) (Función)
_SPELLCHK (Variable de memoria del sistema) | SQL (Funciones) | SROWS( ) (Función)
_STARTUP (Variable de memoria del sistema) | STRTOFILE( ) (Función) | SUSPEND (Comando)
SYSMETRIC( ) (Función) |  |

T

_TABS (Variable de memoria del sistema) | TEXT ... ENDTEXT (Comando) | TXTWIDTH( ) (Función)
TRANSFORM( ) (Función) | _TRANSPORT (Variable de memoria del sistema) |
TYPE (Comando) | _THROTTLE (Variable de memoria del sistema) |

U

UPDATED( ) (Función) USE (Comando)

V

VALIDATE DATABASE (Comando) VARREAD( ) (Función) VERSION( ) (Función)

W

_WINDOWS (Variable de memoria del sistema) | _WIZARD (Variable de memoria del sistema) | WCHILD( ) (Función)
WAIT (Comando) | WBORDER( ) (Función) | WFONT( ) (Función)
WCOLS( ) (Función) | WEXIST( ) (Función) | WLROW( ) (Función)
WITH ... ENDWITH (Comando) | WLAST( ) (Función) | WONTOP( ) (Función)
WMAXIMUM( ) (Función) | WLCOL( ) (Función) | WREAD( ) (Función)
WOUTPUT( ) (Función) | WMINIMUM( ) (Función) | WVISIBLE( ) (Función)
WPARENT( ) (Función) | WTITLE( ) (Función) |
WROWS( ) (Función) | _WRAP (Variable de memoria del sistema) |

X

XMLTOCURSOR( ) (Función)

Z

ZOOM WINDOW (Comando)

Vea también

Referencia del lenguaje para desarrollo OLE DB | Compatibilidad de datos del proveedor OLE DB de Visual FoxPro | Comandos SET de Visual FoxPro compatibles | Comandos y funciones de Visual FoxPro compatibles | Objetos OLE DB compatibles | Propiedades OLE DB estándar y personalizadas | Proveedor OLE DB de Visual FoxPro


Asignar funciones de controlador ODBC de Visual FoxPro a métodos OLE DB

OLE DB y ODBC son interfaces diferentes. No hay una correspondencia de uno a uno entre las propiedades de una interfaz y los atributos de la otra. OLE DB contiene una rica definición de conjuntos de propiedades y parámetros de métodos de interfaz que proporciona servicios significativamente diferentes de los que proporciona ODBC. Si desea obtener más información, consulte la documentación OLE DB de los conjuntos de filas de esquema, los conjuntos de propiedades y los métodos. Para ver una explicación acerca de la relación entre OLE DB y ODBC, consulte el artículo de MSDN "OLE DB for the ODBC Programmer".

Vea también

Referencia del lenguaje para desarrollo OLE DB | Proveedor OLE DB de Visual FoxPro


Objetos OLE DB compatibles

El proveedor de OLE DB de Visual FoxPro admite los siguientes objetos OLE DB basados en la implementación de las especificaciones de OLE DB 2.1.

Objeto | Descripción
Data Source (Objeto) | Establece un vínculo con un almacén de datos.
Session (Objeto) | Proporciona métodos para crear comandos y conjuntos de filas y para crear y modificar tablas e índices.
Command (Objeto) | Proporciona colecciones, propiedades y métodos para ejecutar comandos y devolver conjuntos de filas.
Rowset (Objeto) | Expone datos de forma tabular como conjuntos de filas, cada una de las cuales contiene columnas de datos.
Error (Objeto) | Proporciona la posibilidad de devolver múltiples registros de error de una sola llamada y la posibilidad de devolver información de error específica del proveedor.
ConnectionPage (Objeto) | Proporciona el acceso a un cuadro de diálogo de configuración de Microsoft DataLink (UDL).

Vea también

Referencia del lenguaje para desarrollo OLE DB | Compatibilidad de datos del proveedor OLE DB de Visual FoxPro | Comandos SET de Visual FoxPro compatibles | Comandos y funciones de Visual FoxPro compatibles | Comandos y funciones de Visual FoxPro no compatibles | Propiedades OLE DB estándar y personalizadas | Proveedor OLE DB de Visual FoxPro


Propiedades OLE DB estándar y personalizadas

A continuación aparece una lista en orden alfabético de las propiedades OLE DB compatibles con el proveedor de OLE DB de Visual FoxPro y las propiedades personalizadas de Visual FoxPro. Consulte la Referencia del programador de OLE DB para ver descripciones detalladas de estas propiedades.

Propiedad | Descripción
DBPROP_ABORTPRESERVE | Conservar tras anulación
DBPROP_ACCESSORDER | Orden de acceso
DBPROP_ACTIVESESSIONS | Sesiones activas
DBPROP_ALTERCOLUMN | Compatibilidad con alterar columna
DBPROP_APPENDONLY | Conjunto de filas de solo anexar
DBPROP_ASYNCTXNABORT | Anulación no sincronizable
DBPROP_ASYNCTXNCOMMIT | Grabación no sincronizable
DBPROP_AUTH_CACHE_AUTHINFO | Autenticación de caché
DBPROP_AUTH_ENCRYPT_PASSWORD | Codificar contraseña
DBPROP_AUTH_INTEGRATED | Seguridad integrada
DBPROP_AUTH_MASK_PASSWORD | Enmascarar contraseña
DBPROP_AUTH_PASSWORD | Contraseña
DBPROP_AUTH_PERSIST_ENCRYPTED | Mantener codificación
DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO | Mantener información de seguridad
DBPROP_AUTH_USERID | Id. de usuario
DBPROP_BLOCKINGSTORAGEOBJECTS | Bloqueo de objetos de almacenamiento
DBPROP_BOOKMARKINFO | Información de marcador
DBPROP_BOOKMARKS | Utilizar marcadores
DBPROP_BOOKMARKSKIPPED | Saltar marcadores eliminados
DBPROP_BOOKMARKTYPE | Tipo de marcador
DBPROP_BYREFACCESSORS | Pasar descriptores de acceso por referencia
DBPROP_CACHEDEFERRED | Columnas aplazadas en caché
DBPROP_CANFETCHBACKWARDS | Buscar hacia atrás
DBPROP_CANHOLDROWS | Retener filas
DBPROP_CANSCROLLBACKWARDS | Desplazar hacia atrás
DBPROP_CATALOGLOCATION | Ubicación del catálogo
DBPROP_CATALOGTERM | Término del catálogo
DBPROP_CATALOGUSAGE | Uso del catálogo
DBPROP_CHANGEINSERTEDROWS | Cambiar filas insertadas
DBPROP_COL_AUTOINCREMENT | Incremento automático
DBPROP_COL_DEFAULT | Valor predeterminado
DBPROP_COL_DESCRIPTION | Descripción
DBPROP_COL_FIXEDLENGTH | Longitud fija
DBPROP_COL_NULLABLE | Anulable
DBPROP_COL_PRIMARYKEY | Clave principal
DBPROP_COL_UNIQUE | Único
DBPROP_COLUMNDEFINITION | Definición de columna
DBPROP_COLUMNRESTRICT | Privilegios de columna
DBPROP_COMMANDTIMEOUT | Tiempo de espera de comando
DBPROP_COMMITPRESERVE | Conservar tras grabación
DBPROP_CONCATNULLBEHAVIOR | Comportamiento de concatenación de NULL
DBPROP_CURRENTCATALOG | Catálogo actual
DBPROP_DATASOURCENAME | Nombre de origen de datos
DBPROP_DATASOURCEREADONLY | Origen de datos de solo lectura
DBPROP_DBMSNAME | Nombre DBMS
DBPROP_DBMSVER | Versión DBMS
DBPROP_DEFERRED | Columna aplazada
DBPROP_DELAYSTORAGEOBJECTS | Retrasar actualizaciones de objetos de almacenamiento
DBPROP_DSOTHREADMODEL | Modelo de subprocesos del objeto de origen de datos
DBPROP_GROUPBY | Compatibilidad con GROUP BY
DBPROP_HETEROGENEOUSTABLES | Compatibilidad con tablas heterogéneas
DBPROP_IAccessor | IAccessor
DBPROP_IColumnsInfo | IColumnsInfo
DBPROP_IColumnsRowset | IColumnsRowset
DBPROP_IConnectionPointContainer | IConnectionPointContainer
DBPROP_IConvertType | IConvertType
DBPROP_IDENTIFIERCASE | Distinción entre mayúsculas y minúsculas del identificador
DBPROP_ILockBytes | ILockBytes
DBPROP_IMMOBILEROWS | Filas inmóviles
DBPROP_INDEX_AUTOUPDATE | Actualización automática
DBPROP_INDEX_CLUSTERED | Agrupado
DBPROP_INDEX_FILLFACTOR | Factor de llenado
DBPROP_INDEX_INITIALSIZE | Tamaño inicial
DBPROP_INDEX_NULLCOLLATION | Intercalación NULL
DBPROP_INDEX_NULLS | Claves NULL
DBPROP_INDEX_PRIMARYKEY | Clave principal
DBPROP_INDEX_SORTBOOKMARKS | Ordenar marcadores
DBPROP_INDEX_TEMPINDEX | Índice temporal
DBPROP_INDEX_TYPE | Tipo de índice
DBPROP_INDEX_UNIQUE | Único
DBPROP_INIT_CATALOG | Catálogo inicial
DBPROP_INIT_DATASOURCE | Origen de datos
DBPROP_INIT_HWND | Controlador de ventana
DBPROP_INIT_IMPERSONATION_LEVEL | Nivel de imitación
DBPROP_INIT_LCID | Identificador regional
DBPROP_INIT_LOCATION | Ubicación
DBPROP_INIT_MODE | Modo
DBPROP_INIT_PROMPT | Indicador del sistema
DBPROP_INIT_PROTECTION_LEVEL | Nivel de protección
DBPROP_INIT_PROVIDERSTRING | Propiedades extendidas
DBPROP_INIT_TIMEOUT | Tiempo de espera de conexión
DBPROP_IProvideMoniker | IProvideMoniker
DBPROP_IRowset | IRowset
DBPROP_IRowsetChange | IRowsetChange
DBPROP_IRowsetCurrentIndex | IRowsetCurrentIndex
DBPROP_IRowsetFind | IRowsetFind
DBPROP_IRowsetIdentity | IRowsetIdentity
DBPROP_IRowsetIndex | IRowsetIndex
DBPROP_IRowsetInfo | IRowsetInfo
DBPROP_IRowsetLocate | IRowsetLocate
DBPROP_IRowsetRefresh | IRowsetRefresh
DBPROP_IRowsetResynch | IRowsetResynch
DBPROP_IRowsetScroll | IRowsetScroll
DBPROP_IRowsetUpdate | IRowsetUpdate
DBPROP_ISequentialStream | ISequentialStream
DBPROP_IStorage | IStorage
DBPROP_IStream | IStream
DBPROP_ISupportErrorInfo | ISupportErrorInfo
DBPROP_LITERALBOOKMARKS | Marcadores literales
DBPROP_LITERALIDENTITY | Identidad de fila literal
DBPROP_LOCKMODE | Bloquear modo
DBPROP_LOCKMODES | Bloquear modos
DBPROP_MAXINDEXSIZE | Tamaño máximo de índice
DBPROP_MAXOPENROWS | Número máximo de filas abiertas
DBPROP_MAXPENDINGROWS | Número máximo de filas pendientes
DBPROP_MAXROWS | Número máximo de filas
DBPROP_MAXROWSIZE | Tamaño máximo de fila
DBPROP_MAXROWSIZEINCLUDESBLOB | El tamaño máximo de fila incluye BLOB
DBPROP_MAXTABLESINSELECT | Número máximo de tablas en SELECT
DBPROP_MAYWRITECOLUMN | Columna de escritura
DBPROP_MEMORYUSAGE | Uso de memoria
DBPROP_MULTIPLEPARAMSETS | Múltiples conjuntos de parámetros
DBPROP_MULTIPLERESULTS | Múltiples resultados
DBPROP_MULTIPLESTORAGEOBJECTS | Múltiples objetos de almacenamiento
DBPROP_MULTITABLEUPDATE | Actualización de tablas múltiples
DBPROP_NOTIFICATIONGRANULARITY | Granularidad de la notificación
DBPROP_NOTIFICATIONPHASES | Fases de notificación
DBPROP_NOTIFYCOLUMNSET | Notificación de conjunto de columnas
DBPROP_NOTIFYROWDELETE | Notificación de eliminación de fila
DBPROP_NOTIFYROWFIRSTCHANGE | Notificación de primer cambio de fila
DBPROP_NOTIFYROWINSERT | Notificación de inserción de fila
DBPROP_NOTIFYROWRESYNCH | Notificación de resincronización de fila
DBPROP_NOTIFYROWSETFETCHPOSITIONCHANGE | Notificación de cambio de posición de búsqueda de conjunto de filas
DBPROP_NOTIFYROWSETRELEASE | Notificación de liberación de conjunto de filas
DBPROP_NOTIFYROWUNDOCHANGE | Notificación de deshacer cambio de fila
DBPROP_NOTIFYROWUNDODELETE | Notificación de deshacer eliminación de fila
DBPROP_NOTIFYROWUNDOINSERT | Notificación de deshacer inserción de fila
DBPROP_NOTIFYROWUPDATE | Notificación de actualización de fila
DBPROP_NULLCOLLATION | Orden de intercalación de NULL
DBPROP_OLEOBJECTS | Compatibilidad con objetos OLE
DBPROP_OPENROWSETSUPPORT | Compatibilidad con conjunto de filas abierto
DBPROP_ORDERBYCOLUMNSINSELECT | Columnas ORDER BY en lista de selección
DBPROP_ORDEREDBOOKMARKS | Marcadores ordenados
DBPROP_OTHERINSERT | Inserciones ajenas visibles
DBPROP_OTHERUPDATEDELETE | Cambios ajenos visibles
DBPROP_OUTPUTPARAMETERAVAILABILITY | Disponibilidad de parámetros de salida
DBPROP_OWNINSERT | Inserciones propias visibles
DBPROP_OWNUPDATEDELETE | Cambios propios visibles
DBPROP_PERSISTENTIDTYPE | Tipo de Id. persistente
DBPROP_PREPAREABORTBEHAVIOR | Preparar comportamiento de anulación
DBPROP_PREPARECOMMITBEHAVIOR | Preparar comportamiento de grabación
DBPROP_PROCEDURETERM | Término de procedimiento
DBPROP_PROVIDERFRIENDLYNAME | Nombre descriptivo del proveedor
DBPROP_PROVIDERNAME | Nombre del proveedor
DBPROP_PROVIDEROLEDBVER | Versión OLE DB
DBPROP_PROVIDERVER | Versión del proveedor
DBPROP_QUICKRESTART | Reinicio rápido
DBPROP_QUOTEDIDENTIFIERCASE | Sensibilidad de identificador entre comillas
DBPROP_REENTRANTEVENTS | Eventos de reentrada
DBPROP_REMOVEDELETED | Quitar filas eliminadas
DBPROP_REPORTMULTIPLECHANGES | Informar de cambios múltiples
DBPROP_RETURNPENDINGINSERTS | Devolver inserciones pendientes
DBPROP_ROWRESTRICT | Privilegios de fila
DBPROP_ROWSETCONVERSIONSONCOMMAND | Conversiones de conjunto de filas sobre comando
DBPROP_ROWTHREADMODEL | Modelo de subprocesos de fila
DBPROP_SCHEMATERM | Término de esquema
DBPROP_SCHEMAUSAGE | Uso de esquema
DBPROP_SERVERCURSOR | Cursor de servidor
DBPROP_SERVERDATAONINSERT | Datos de servidor tras inserción
DBPROP_SERVERNAME | Nombre de servidor
DBPROP_SESS_AUTOCOMMITISOLEVELS | Niveles de aislamiento de grabación automática
DBPROP_SQLSUPPORT | Compatibilidad con SQL
DBPROP_STRONGIDENTITY | Exigencia de identidad de fila
DBPROP_STRUCTUREDSTORAGE | Almacenamiento estructurado
DBPROP_SUBQUERIES | Compatibilidad con subconsultas
DBPROP_SUPPORTEDTXNDDL | DDL de transacción
DBPROP_SUPPORTEDTXNISOLEVELS | Niveles de aislamiento
DBPROP_SUPPORTEDTXNISORETAIN | Retención de aislamiento
DBPROP_TABLETERM | Término de tabla
DBPROP_TBL_TEMPTABLE | Tabla temporal
DBPROP_TRANSACTEDOBJECT | Objetos de transacción
DBPROP_UPDATABILITY | Capacidad de actualización
DBPROP_USERNAME | Nombre de usuario
DBPROP_VFPOLEDB_ANSI | SET ANSI
DBPROP_VFPOLEDB_BLOCKSIZE | SET BLOCKSIZE
DBPROP_VFPOLEDB_COLLATE | Configuración de SET COLLATE
DBPROP_VFPOLEDB_Column_Caption | Título de columna
DBPROP_VFPOLEDB_Column_Comment | Comentario de columna
DBPROP_VFPOLEDB_Column_Default | Valor predeterminado
DBPROP_VFPOLEDB_Column_Error |
DBPROP_VFPOLEDB_Column_Format | Formato
DBPROP_VFPOLEDB_Column_FormDisplay | DisplayClass
DBPROP_VFPOLEDB_Column_FormPath | DisplayClassLibrary
DBPROP_VFPOLEDB_Column_InputMask | InputMask
DBPROP_VFPOLEDB_Column_RuleExpression | RuleExpression
DBPROP_VFPOLEDB_Column_RuleText | RuleText
DBPROP_VFPOLEDB_DELETED | SET DELETED
DBPROP_VFPOLEDB_EXACT | SET EXACT
DBPROP_VFPOLEDB_INDEX | SET INDEX
DBPROP_VFPOLEDB_INIT_COLLATE | Secuencia de ordenación
DBPROP_VFPOLEDB_NULL | SET NULL
DBPROP_VFPOLEDB_ORDER | SET ORDER
DBPROP_VFPOLEDB_PATH | SET PATH
DBPROP_VFPOLEDB_REPROCESS | SET REPROCESS
DBPROP_VFPOLEDB_Rowset_SP | Procedimiento almacenado
DBPROP_VFPOLEDB_SESS_ID | Id. de sesión interna
DBPROP_VFPOLEDB_SETDEBUGOUTTO | Archivo de resultados de depuración
DBPROP_VFPOLEDB_SETDEFAULTTO | Unidad y carpeta predeterminadas
DBPROP_VFPOLEDB_SETFULLPATH | Set Fullpath ON/OFF
DBPROP_VFPOLEDB_Table_Comment | Comentarios
DBPROP_VFPOLEDB_Table_DeleteTrigger | DeleteTrigger
DBPROP_VFPOLEDB_Table_InsertTrigger | InsertTrigger
DBPROP_VFPOLEDB_Table_Path | Path
DBPROP_VFPOLEDB_Table_PrimaryKey | PrimaryKey
DBPROP_VFPOLEDB_Table_RuleExpression | RuleExpression
DBPROP_VFPOLEDB_Table_RuleText | RuleText
DBPROP_VFPOLEDB_Table_UpdateTrigger | UpdateTrigger
DBPROP_VFPOLEDB_UNIQUE | SET UNIQUE

Vea también

Referencia del lenguaje para desarrollo OLE DB | Compatibilidad de datos del proveedor OLE DB de Visual FoxPro | Comandos SET de Visual FoxPro compatibles | Comandos y funciones de Visual FoxPro compatibles | Comandos y funciones de Visual FoxPro no compatibles | Objetos OLE DB compatibles | Proveedor OLE DB de Visual FoxPro


Elementos de lenguaje compatibles con versiones anteriores

Los siguientes elementos de lenguaje se incluyen por compatibilidad con versiones anteriores de FoxPro.

@ ... BOX (Comando)

@ ... EDIT - Cuadros de edición (Comando)

@ ... GET - Botones de opción (Comando)

@ ... GET - Botones transparentes (Comando)

@ ... GET - Botones de comando (Comando)

@ ... GET - Casillas de verificación (Comando)

@ ... GET - Controles numéricos (Comando)

@ ... GET - Cuadros combinados (Comando)

@ ... GET - Cuadros de lista (Comando)

@ ... GET - Cuadros de texto (Comando)

@ ... MENU (Comando)

@ ... PROMPT (Comando)

@ ... SAY - Imágenes y objetos OLE (Comando)

@ ... SAY (Comando)

@ ... TO (Comando)

_ALIGNMENT (Variable del sistema)

_ASSIST (Variable del sistema)

_BOX (Variable del sistema)

_CUROBJ (Variable del sistema)

_FOXDOC (Variable del sistema)

_GENGRAPH (Variable del sistema)

_GENPD (Variable del sistema)

_GENSCRN (Variable del sistema)

_GENXTAB (Variable del sistema)

_INDENT (Variable del sistema)

_LMARGIN (Variable del sistema)

_PADVANCE (Variable del sistema)

_PBPAGE (Variable del sistema)

_PCOLNO (Variable del sistema)

_PCOPIES (Variable del sistema)

_PDRIVER (Variable del sistema)

_PDSETUP (Variable del sistema)

_PECODE (Variable del sistema)

_PEJECT (Variable del sistema)

_PEPAGE (Variable del sistema)

_PLENGTH (Variable del sistema)

_PLINENO (Variable del sistema)

_PLOFFSET (Variable del sistema)

_PPITCH (Variable del sistema)

_PQUALITY (Variable del sistema)

_PSCODE (Variable del sistema)

_PSPACING (Variable del sistema)

_PWAIT (Variable del sistema)

_RMARGIN (Variable del sistema)

_TABS (Variable del sistema)

_TRANSPORT (Variable del sistema)

_WRAP (Variable del sistema)

ACCEPT (Comando)

ANSITOOEM( ) (Función)

ASSIST (Comando)

CALL (Comando)

CLEAR READ (Comando)

COL( ) (Función)

ColorScheme (Propiedad)

CREATE SCREEN - Pantalla rápida (Comando)

CREATE SCREEN (Comando)

DEFINE BOX (Comando)

ErrorMessage (Evento)

FIND (Comando)

INPUT (Comando)

INSERT (Comando)

JOIN (Comando)

LOAD (Comando)

MDOWN( ) (Función)

MemoWindow (Propiedad)

MENU (Comando)

MENU TO (Comando)

Message (Evento)

MODIFY SCREEN (Comando)

OBJNUM( ) (Función)

OBJVAR( ) (Función)

OEMTOANSI( ) (Función)

ON KEY = (Comando)

ON KEY (Comando)

ON READERROR (Comando)

RDLEVEL( ) (Función)

READ (Comando)

READ MENU (Comando)

ReadActivate (Evento)

ReadBackColor (Propiedad)

ReadCycle (Propiedad)

ReadDeactivate (Evento)

ReadForeColor (Propiedad)

READKEY( ) (Función)

ReadLock (Propiedad)

ReadMouse (Propiedad)

ReadObject (Propiedad)

ReadSave (Propiedad)

ReadShow (Evento)

ReadTimeout (Propiedad)

ReadValid (Evento)

ReadWhen (Evento)

ROW( ) (Función)

SET BORDER (Comando)

SET BRSTATUS (Comando)

SET CLEAR (Comando)

SET COLOR OF (Comando)

SET COLOR TO (Comando)

SET DEBUG (Comando)

SET DELIMITERS (Comando)

SET DISPLAY (Comando)

SET DOHISTORY (Comando)

SET FORMAT (Comando)

SET INTENSITY (Comando)

SET VOLUME (Comando)

SET WINDOW OF MEMO (Comando)

SHOW GET (Comando)

SHOW GETS (Comando)

SHOW OBJECT (Comando)

SizeBox (Propiedad)

SYS(100) - Configuración de CONSOLE

SYS(101) - Configuración de DEVICE

SYS(102) - Configuración de PRINTER

SYS(103) - Configuración de TALK

SYS(15) - Traducción de caracteres

SYS(18) - Control actual

SYS(20) - Transformar texto alemán

SYS(2016) - Nombre SHOW GETS WINDOW

SYS(23)

SYS(24)

UPDATE (Comando)

UPDATED( ) (Función)

VARREAD( ) (Función)

WREAD( ) (Función)

ZoomBox (Propiedad)


Controles y objetos creados en versiones anteriores

En este tema se describe el soporte para controles y objetos creados en versiones anteriores de FoxPro y controles nuevos agregados a Visual FoxPro.

El modo más sencillo de crear controles y objetos consiste en utilizar el Diseñador de formularios. Si desea obtener más información acerca de la creación de controles con el Diseñador de formularios, vea Crear formularios.

También pueden crearse controles y objetos por programa. Para obtener más información acerca de la creación de objetos mediante programación a partir de las clases de base de Visual FoxPro, vea DEFINE CLASS y Programación orientada a objetos.

Algunos controles tienen un comportamiento ligeramente distinto cuando utiliza Visual FoxPro para Windows o Visual FoxPro para Macintosh; de forma predeterminada, los controles en Visual FoxPro para Macintosh siguen las convenciones de interfaz de usuario comunes a las aplicaciones de Macintosh. Por ejemplo, de forma predeterminada, los controles CheckBox, ComboBox y OptionButton no pueden recibir el enfoque en Visual FoxPro para Macintosh. Para obtener más detalles acerca de las diferencias en el comportamiento de controles, vea el tema del comando SET KEYCOMP.

En Visual FoxPro se ha agregado una cláusula NAME a cada uno de los controles creados en versiones anteriores de FoxPro. La cláusula NAME crea una referencia a un objeto para controles creados con @ ... GET y @ ... EDIT, lo que permite manipular los controles con las propiedades, los eventos y los métodos de Visual FoxPro. La cláusula NAME proporciona un paso intermedio para actualizar las aplicaciones mediante las técnicas de programación orientada a objetos de Visual FoxPro.

Compatibilidad con controles de FoxPro 2.x

La tabla siguiente enumera los controles disponibles en versiones anteriores de FoxPro y la clase de base que se emplea para crear el mismo control en Visual FoxPro mediante programación.

Controles de FoxPro 2.x | Controles de Visual FoxPro equivalentes | Nombres de clases de base de Visual FoxPro
@ ... GET - Casillas de verificación | CheckBox (Control) | CheckBox
@ ... GET - Listas | ListBox (Control) | ListBox
@ ... GET - Menús contextuales | ComboBox (Control) | ComboBox
@ ... GET - Botones de comando | CommandButton (Control) | CommandButton
@ ... GET - Botones de opción | OptionButton (Control) | OptionButton
@ ... GET - Controles numéricos | Spinner (Control) | Spinner
@ … GET - Cuadros de texto | TextBox (Control) | TextBox
@ ... EDIT - Regiones de edición de texto | EditBox (Control) | EditBox

Clases de base de Visual FoxPro

Además, los controles y objetos siguientes son nuevos en Visual FoxPro y pueden crearse mediante programación solo desde las clases de base de Visual FoxPro.

Controles y objetos | Nombres de clases de base | Descripción
Column (Objeto) | Column | Crea una columna en una cuadrícula.
CommandGroup (Control) | CommandGroup | Crea un grupo de botones de comando.
Container (Objeto) | Container | Crea un objeto que puede contener otros objetos.
Control (Objeto) | Control | Crea un objeto control que puede contener otros objetos protegidos.
Cursor (Objeto) | Cursor | Se crea cuando se agrega una tabla o una vista al entorno de datos para un formulario, un conjunto de formularios o un informe.
Custom (Objeto) | Custom | Crea un objeto personalizado definido por el usuario.
DataEnvironment (Objeto) | DataEnvironment | Se crea cuando se abre un formulario, un conjunto de formularios o un informe.
Form (Objeto) | Form | Crea un formulario.
FormSet (Objeto) | FormSet | Crea un conjunto de formularios.
Grid (Control) | Grid | Crea un control cuadrícula.
Header (Objeto) | Header | Crea un encabezado para una columna de una cuadrícula.
Hyperlink (Objeto) | HyperLink | Crea un objeto hipervínculo que permite saltar a una dirección URL (Ubicador uniforme de recursos).
Image (Control) | Image | Crea un control Image que muestra una imagen .bmp o PICT.
Label (Control) | Label | Crea un control Label que muestra texto.
Line (Control) | Line | Crea un control Line que muestra una línea horizontal, vertical o diagonal.
OLE Container (Control) | OLEControl | Crea un control OLE Container.
OLE Bound (Control) | OLEBoundControl | Crea un control OLE Bound.
OptionGroup (Control) | OptionGroup | Crea un grupo de botones de opción.
Page (Objeto) | Page | Crea una página en un marco de página.
PageFrame (Control) | PageFrame | Crea un marco de página para contener páginas.
ProjectHook (Objeto) | ProjectHook | Se crea una instancia cuando se abre un proyecto y proporciona acceso por medio de programación a los eventos de proyecto.
Relation (Objeto) | Relation | Se crea cuando se establece una relación desde el Diseñador de entornos de datos para un formulario, un conjunto de formularios o un informe.
Separator (Objeto) | Separator | Crea un objeto Separator que incluye espacios entre los controles de una barra de herramientas.
Session (Objeto) | Session | Crea un objeto personalizado, definido por el usuario, que administra su propia sesión de datos.
Shape (Control) | Shape | Crea un control Shape que muestra un cuadrado, un círculo o una elipse.
Timer (Control) | Timer | Crea un control Timer que puede ejecutar código a intervalos regulares.
ToolBar (Objeto) | Toolbar | Crea una barra de herramientas en la que puede colocar controles.

Vea también

CREATE CLASS | CREATE FORM | DEFINE CLASS


@ ... BOX (Comando)

Se incluye por compatibilidad con versiones anteriores. Use el control Shape en su lugar.


@ ... EDIT - Cuadros de edición (Comando)

Se incluye por compatibilidad con versiones anteriores. Use el control EditBox en su lugar.


@ ... GET - Casillas de verificación (Comando)

Se incluye por compatibilidad con versiones anteriores. Use el control CheckBox en su lugar.


@ ... GET - Cuadros combinados (Comando)

Se incluye por compatibilidad con versiones anteriores. Use el control ComboBox en su lugar.


@ ... GET - Botones de comando (Comando)

Se incluye por compatibilidad con versiones anteriores. Use el control CommandButton en su lugar.


@ ... GET - Cuadros de lista (Comando)

Se incluye por compatibilidad con versiones anteriores. Use el control ListBox en su lugar.


@ ... GET - Botones de opción (Comando)

Se incluye por compatibilidad con versiones anteriores. Use el control OptionGroup en su lugar.


@ ... GET - Controles numéricos (Comando)

Se incluye por compatibilidad con versiones anteriores. Use el control Spinner en su lugar.


@ ... GET - Cuadros de texto (Comando)

Se incluye por compatibilidad con versiones anteriores. Use el control TextBox en su lugar.


@ ... GET - Botones transparentes (Comando)

Se incluye por compatibilidad con versiones anteriores. Use el control CommandButton en su lugar.


@ ... MENU (Comando)

Se incluye por compatibilidad con versiones anteriores. Utilice los Diseñador de menús y menús contextuales y el comando CREATE MENU en su lugar.


@ ... PROMPT (Comando)

Se incluye por compatibilidad con versiones anteriores. Utilice los Diseñador de menús y menús contextuales y el comando CREATE MENU en su lugar.


@ ... SAY - Imágenes y objetos OLE (Comando)

Se incluye por compatibilidad con versiones anteriores. Utilice el control Image, OLE Bound y el control OLE Container en su lugar.


@ ... SAY (Comando)

Se incluye por compatibilidad con versiones anteriores. Use el control Label para mostrar texto y el control TextBox para mostrar el contenido de campos y variables.


@ ... TO (Comando)

Se incluye por compatibilidad con versiones anteriores. Utilice el control Shape en su lugar.


_ALIGNMENT (Variable del sistema)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar el Diseñador de informes.


_ASSIST (Variable del sistema)

Se incluye por compatibilidad con versiones anteriores. Utilice DO (Comando) en su lugar.


_BOX (Variable del sistema)

Se incluye por compatibilidad con versiones anteriores. Utilice el Diseñador de informes en su lugar.


_CUROBJ (Variable del sistema)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar la propiedad ActiveControl para los nuevos formularios.


_FOXDOC (Variable del sistema)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar el Asistente para documentación.


_GENGRAPH (Variable del sistema)

Se incluye por compatibilidad con versiones anteriores. En su lugar, debe utilizar el Asistente para gráficos.


_GENPD (Variable del sistema)

Se incluye por compatibilidad con versiones anteriores. Utilice el argumento TO FILE ASCII en REPORT.


_GENSCRN (Variable del sistema)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar el Diseñador de formularios.


_GENXTAB (Variable del sistema)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar el Asistente para tablas de referencias cruzadas.


_INDENT (Variable del sistema)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar el Diseñador de informes.

Vea también

Variables del sistema | Introducción a las variables del sistema


_LMARGIN (Variable del sistema)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar el Diseñador de informes.


_PADVANCE (Variable del sistema)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar el Diseñador de informes.


_PBPAGE (Variable del sistema)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar el Diseñador de informes.


_PCOLNO (Variable del sistema)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar el Diseñador de informes.


_PCOPIES (Variable del sistema)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar el Diseñador de informes.


_PDRIVER (Variable del sistema)

Se incluye por compatibilidad con versiones anteriores. Utilice el argumento TO FILE ASCII en REPORT.


_PDSETUP (Variable del sistema)

Se incluye por compatibilidad con versiones anteriores. Utilice el argumento TO FILE ASCII en REPORT.


_PECODE (Variable del sistema)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar el Diseñador de informes.


_PEJECT (Variable del sistema)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar el Diseñador de informes.


_PEPAGE (Variable del sistema)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar el Diseñador de informes.


_PLENGTH (Variable del sistema)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar el Diseñador de informes.


_PLINENO (Variable del sistema)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar el Diseñador de informes.


_PLOFFSET (Variable del sistema)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar el Diseñador de informes.


_PPITCH (Variable del sistema)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar el Diseñador de informes.


_PQUALITY (Variable del sistema)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar el Diseñador de informes.


_PSCODE (Variable del sistema)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar el Diseñador de informes.


_PSPACING (Variable del sistema)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar el Diseñador de informes.


_PWAIT (Variable del sistema)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar el Diseñador de informes.


_RMARGIN (Variable del sistema)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar el Diseñador de informes.


_TABS (Variable del sistema)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar el Diseñador de informes.


_TRANSPORT (Variable del sistema)

Se incluye por compatibilidad con versiones anteriores.


_WRAP (Variable del sistema)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar el Diseñador de informes.


ACCEPT (Comando)

Se incluye por compatibilidad con versiones anteriores. Use el control TextBox en su lugar.


ASSIST (Comando)

Se incluye por compatibilidad con versiones anteriores. Utilice DO (Comando) en su lugar.


CALL (Comando)

Se incluye por compatibilidad con versiones anteriores. Utilice SET LIBRARY en su lugar.


CREATE SCREEN - Pantalla rápida (Comando)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar el Diseñador de formularios.

Vea también

Diseñador de formularios


CREATE SCREEN (Comando)

Se incluye por compatibilidad con versiones anteriores. Utilice CREATE FORM en su lugar.

Vea también

CREATE FORM


DEFINE BOX (Comando)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar el Diseñador de informes.


FIND (Comando)

Se incluye por compatibilidad con versiones anteriores. Utilice SEEK en su lugar.


INPUT (Comando)

Se incluye por compatibilidad con versiones anteriores. Use el control TextBox en su lugar.


INSERT (Comando)

Se incluye por compatibilidad con versiones anteriores. Use APPEND o INSERT - SQL en su lugar.


JOIN (Comando)

Se incluye por compatibilidad con versiones anteriores. En su lugar, utilice SELECT - SQL.


LOAD (Comando)

No está disponible. Utilice SET LIBRARY en su lugar.


MENU TO (Comando)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar el Diseñador de menús de Visual FoxPro.


MODIFY SCREEN (Comando)

Se incluye por compatibilidad con versiones anteriores. Utilice MODIFY FORM en su lugar.


ON KEY = (Comando)

Se incluye por compatibilidad con versiones anteriores. Utilice ON KEY LABEL en su lugar.


ON KEY (Comando)

Se incluye por compatibilidad con versiones anteriores. Utilice ON KEY LABEL en su lugar.


ON READERROR (Comando)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar el evento Valid.


READ MENU (Comando)

Se incluye por compatibilidad con versiones anteriores. Utilice el Diseñador de menús para crear menús.


SET BORDER (Comando)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar la propiedad BorderStyle.


SET BRSTATUS (Comando)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar la propiedad StatusBarText.


SET CLEAR (Comando)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar el método Refresh.


SET COLOR OF (Comando)

Se incluye por compatibilidad con versiones anteriores. Utilice SET COLOR OF SCHEME en su lugar.


SET COLOR TO (Comando)

Se incluye por compatibilidad con versiones anteriores. Utilice SET COLOR OF SCHEME en su lugar.


SET DEBUG (Comando)

Se incluye por compatibilidad con versiones anteriores. Hace que las ventanas Depuración y Seguimiento estén disponibles o no en el sistema de menús de las versiones de Visual FoxPro anteriores a la 5.0.

SET DEBUG ON | OFF

Parámetros

ON
(Predeterminado) Hace que las ventanas Depuración y Seguimiento estén o no disponibles desde el sistema de menús de Visual FoxPro.
OFF
Hace que las ventanas Depuración y Seguimiento no estén disponibles en el menú del sistema de Visual FoxPro. Sin embargo, cuando SET DEBUG está desactivado, puede abrir la ventana Depurar con SET ECHO ON o ACTIVATE WINDOW DEBUG, y la ventana Seguimiento con SET STEP ON o ACTIVATE WINDOW TRACE.

Observaciones

Para obtener información acerca de las ventanas Seguimiento y Depuración, vea Probar y depurar aplicaciones.

Vea también

CLEAR DEBUG | DEBUG | SET_ECHO


SET DELIMITERS (Comando)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar la propiedad Format.


SET DISPLAY (Comando)

Se incluye por compatibilidad con versiones anteriores. Utilice la propiedad Fuente (Font) en su lugar _SCREEN (Variable del sistema).


SET DOHISTORY (Comando)

Se incluye por compatibilidad con versiones anteriores. Utilice la ventana Seguimiento en su lugar.


SET FORMAT (Comando)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar la propiedad Format.


SET INTENSITY (Comando)

Se incluye por compatibilidad con versiones anteriores. Utilice SET COLOR OF SCHEME en su lugar.


SET VOLUME (Comando)

Se incluye por compatibilidad con versiones anteriores. Asigna designadores de unidad de MS-DOS (A:, B:, C:, etc.) a volúmenes o carpetas en FoxPro para Macintosh.

SET VOLUME cMS-DOSDrive TO [cMacintoshPath]

Parámetros

cMS-DOSDrive
Especifica un designador de unidad de MS-DOS, que puede ser cualquier letra de la A a la Z. Los dos puntos de delimitador de unidad, como en A: o C:, son opcionales.
cMacintoshPath
Especifica un nombre de volumen, un nombre de volumen con un nombre de carpeta, una carpeta anidada o la notación abreviada de Macintosh (: o ::) o de MS-DOS (\ o ..).

Si cMacintoshPath incluye un nombre de volumen o de carpeta que contiene un espacio, deberá escribirse el valor de cMacintoshPath entre comillas. Si incluye una ruta incompleta en cMacintoshPath, dicha ruta se referirá a la carpeta predeterminada actual.

Observaciones

Este comando es más eficaz en FoxPro para Macintosh.

SET VOLUME ayuda a convertir aplicaciones creadas en FoxPro para MS-DOS y Visual FoxPro a FoxPro para Macintosh. Por cada instancia de un designador de unidad de MS-DOS especificado, FoxPro para Macintosh sustituye internamente el volumen o carpeta de Macintosh que designe.

Cuando inicie FoxPro para Macintosh no habrá ninguna designación de volumen o carpeta predeterminada. Sin embargo, puede especificar un volumen o una carpeta predeterminados en el archivo de configuración de Visual FoxPro con el elemento de configuración VOLUME.

Utilice DISPLAY STATUS para mostrar el volumen o la asignación de carpeta actual.

Ejemplo

Los siguientes comandos asignan cada instancia de una unidad C de MS-DOS a un volumen de Macintosh llamado MacHD o Mac HD:

SET VOLUME C: TO MacHD:
SET VOLUME C: TO 'Mac HD:'
SET VOLUME C TO 'Mac HD:'

También puede especificar una carpeta con un volumen de Macintosh:

SET VOLUME C: TO MacHD:FolderOne
SET VOLUME C TO 'MacHD:Folder One'

También puede utilizar la notación abreviada de MS-DOS y Macintosh. Para asignar cada instancia de una unidad C de MS-DOS al volumen de Macintosh actual, ejecute el siguiente comando:

SET VOLUME C TO \

Para asignar cada ocurrencia de una unidad C MS-DOS del Volumen de inicio en el FoxPro para Macintosh , coloque SET VOLUME sin cMacintoshPath:

SET VOLUME C TO

SET VOLUME C TO

Vea también

SYS(5) - Unidad predeterminada | SYS(2003) - Directorio actual

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


SET WINDOW OF MEMO (Comando)

Se incluye por compatibilidad con versiones anteriores. Use el control TextBox en su lugar.


SHOW GET (Comando)

Se incluye por compatibilidad con versiones anteriores. Use el método Refresh para volver a mostrar un control después de haber modificado sus propiedades.


SHOW GETS (Comando)

Se incluye por compatibilidad con versiones anteriores. Use el método Refresh para volver a mostrar todos los controles de un formulario o un conjunto de formularios después de haber modificado sus propiedades.


SHOW OBJECT (Comando)

Se incluye por compatibilidad con versiones anteriores. Use el método Refresh para volver a mostrar un control después de haber modificado sus propiedades.


SYS(100) - Configuración de CONSOLE

Se incluye por compatibilidad con versiones anteriores . Utilice en su lugar SET("CONSOLE").

SYS(100)

Valores devueltos

Carácter

Ejemplo

IF SYS(100) != 'ON'
SET CONSOLE ON
ENDIF

Vea también

SET CONSOLE (Comando) | SYS( ) - Introducción a las funciones | No se permite la cláusula PREVIEW con OFF/NOCONSOLE o TO PRINT/FILE (Error 1681) | SET( ) (Función)


SYS(101) - Configuración de DEVICE

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar SET("DEVICE").

SYS(101)

Valores devueltos

Carácter

Ejemplo

IF SYS(101) != 'SCREEN'
SET DEVICE TO SCREEN
ENDIF

Vea también

SET DEVICE | SYS( ) - Introducción a las funciones | SYS(100) - Configuración de CONSOLE | SYS(102) - Configuración de PRINTER | SET( ) (Función)


SYS(102) - Configuración de PRINTER

Se incluye por compatibilidad. Utilice en su lugar SET("PRINTER").

SYS(102)

Valores devueltos

Carácter

Ejemplo

IF SYS(102) != 'OFF'
SET PRINTER OFF
ENDIF

Vea también

SET PRINTER | SYS( ) - Introducción a las funciones | GETPRINTER( ) | SET( ) (Función)


SYS(103) - Configuración de TALK

Se incluye por compatibilidad. Utilice en su lugar SET("TALK").

SYS(103)

Valores devueltos

Carácter

Ejemplo

IF SYS(103) != 'ON'
SET TALK ON
ENDIF

Vea también

SET TALK | SYS( ) - Introducción a las funciones | SET( ) (Función)


UPDATE (Comando)

Se incluye por compatibilidad con versiones anteriores. Utilice en su lugar UPDATE - SQL.


Referencia de interfaz de usuario

En los temas de referencia relativos a la interfaz de usuario se explican las opciones que aparecen en diversos cuadros de diálogo, ventanas y otros elementos de la interfaz de usuario. Normalmente estos temas aparecen cuando se presiona F1 en un cuadro de diálogo o en una ventana.

En esta sección

Generadores
Describe los generadores incluidos en Visual FoxPro y cómo puede utilizarlos en controles, formularios y para crear integridad referencial entre tablas de bases de datos.
Diseñadores
Describe los diseñadores, los que facilitan el diseño de ventanas, cuadros de diálogo y componentes en su aplicación visualmente.
Administrador del Panel de tareas
Describe el Administrador del Panel de tareas, que contiene información y expone tareas escenciales para su fácil uso. Paneles individuales pueden contener información estática o dinámica, obtener contenido desde Internet, exponer asistentes para lograr tareas rutinarias, muestrar la Ayuda y ejemplos actuales. Puede crear paneles personalizados que puede compartir con otros usuarios.
Caja de herramientas
Describe la Caja de herramientas de Visual FoxPro, la cual muestra elementos utilizados en la creación de aplicaciones. Los elementos son mostrados en juegos de herramientas (colecciones de herramientas) por categoría.
Asistentes
Visual FoxPro incluye varios asistentes, que son programas interactivos que ayudan a realizar rápidamente tareas frecuentes, como crear formularios, dar formato a informes, configurar las consultas, importar y hacer conversión de datos, publicar documentos en formato HTML para el Web y más.
Ventanas
Entienda las opciones que aparecen en varios cuadros de diálogo, ventanas y otras interfaces de usuario.
Cuadros de diálogo
En esta sección se explican las opciones que aparecen en varios cuadros de diálogo de Visual FoxPro.

Secciones relacionadas

Referencia
Incluye temas acerca de las herramientas de productividad además de los controles, los objetos, las propiedades, los métodos, los eventos, las instrucciones, las funciones y las constantes disponibles.
Referencia general
La información técnica relacionada con Visual FoxPro, incluye los tipos de archivos, estructuras de archivos y otra información de referencia acerca de elementos de Visual FoxPro.
Mensajes de error
Encuentre información acerca de los mensajes de error más comunes de Visual FoxPro.
Desarrollar aplicaciones Visual FoxPro
En esta sección se incluye información conceptual acerca de cómo desarrollar aplicaciones Visual FoxPro, instrucciones para crear bases de datos y la interfaz de usuario y otras tareas.
Programar en Visual FoxPro
Descubra cómo puede acceder a todo el poder de Visual FoxPro creando aplicaciones. Comprender las técnicas de programación orientada a objetos y el modelo controlado por eventos puede aumentar su productividad como programador.


Generadores

Los generadores son herramientas que ayudan a configurar las propiedades de los controles de un formulario. Al contrario de los asistentes, los generadores son reutilizables, por lo que puede volver a abrir un generador en un control en concreto repetidas veces.

Visual FoxPro incluye varios generadores genéricos aplicables a muchos de los controles de formulario más usados, entre los que se incluyen cuadrículas, cuadros de lista, cuadros combinados, casillas de verificación, grupos de comandos y grupos de opciones.

Visual FoxPro ofrece una amplia selección de generadores. Para más detalles, consulte la lista debajo.

Puede usar los generadores para algunos controles, para formularios, para dar formato a controles y para crear integridad referencial entre tablas de bases de datos.

Para generar un control

  • En la barra de herramientas Controles de formularios, elija el botón Bloqueo del generador. Cada vez que agregue un control nuevo a un formulario, Visual FoxPro muestra el generador adecuado.

    –O bien–

  • Seleccione un control del formulario y elija el botón Generador de la ventana Propiedades.

Para usar el Generador de formularios

  • En el menú Formulario, elija Formulario rápido.

Cuando tiene varios controles en un formulario, puede darles formato a todos a la vez con el Generador de autoformato.

Para dar formato a varios controles

  1. En el Diseñador de formularios, seleccione controles.
  2. En la barra de herramientas Diseñador de formularios, elija el botón Autoformato.

Cuando se muestra un generador, seleccione las opciones para cada ficha y, a continuación, elija Aceptar para registrar los cambios.

En esta sección

Generador de aplicaciones
Muestra un cuadro de diálogo con fichas para simplificar la creación y modificación de formularios, con controles complejos, y otros elementos opcionales para crear aplicaciones eficaces y satisfactorias.
Generador de autoformato
Permite aplicar un conjunto de estilos a los controles seleccionados.
Generador de cuadros combinados
Facilita establecer las propiedades para un control Cuadro combinado.
Generador de grupos de comandos
Facilita establecer las propiedades para un control Grupo de comandos.
Generador de CursorAdapter
Facilita generar objetos CursorAdapter rápidamente.
Generador de Entorno de datos
Facilita generar objetos DataEnvironment que aprovechen las capacidades de los objetos CursorAdapter.
Generador de cuadros de edición
Facilita establecer las propiedades para un control Cuadro de edición.
Generador de formularios
Facilita el agregado de campos como nuevos controles a un formulario.
Generador de cuadrículas
Posibilita establecer las propiedades para un control Cuadrícula.
Generador de cuadros de lista
Facilita establecer las propiedades para un control Cuadro de lista.
Generador de grupos de opciones
Facilita establecer las propiedades para un control Grupo de opciones.
Generador de integridad referencial
Le ayuda a asegurar la integridad referencial en tablas relacionadas, al establecer desencadenadores para controlar cómo se insertan, actualizan o eliminan registros.
Generador de cuadros de texto
Facilita establecer las propiedades para un control Cuadro de texto.
Generador de Servicios Web XML
Le permite enlazar un servicio Web XML a un control en un formulario de Visual FoxPro o a un objeto, como es un cursor adapter en el entorno de datos del formulario, sin código escrito.

Secciones relacionadas

Referencia de interfaz de usuario
Explica las opciones que aparecen en diversos cuadros de diálogo, ventanas y otras interfaces de usuario. Normalmente estos tipos de temas aparecen cuando se presiona F1 en un cuadro de diálogo o en una ventana.
Crear aplicaciones con el marco de aplicaciones
Explica cómo crear aplicaciones con el marco de aplicaciones utilizando el Asistente de aplicaciones y el Generador de aplicaciones.
Desarrollar aplicaciones Visual FoxPro
Incluye información conceptual acerca de cómo desarrollar aplicaciones Visual FoxPro, instrucciones para crear bases de datos y la interfaz de usuario y otras tareas necesarias para crear aplicaciones Visual FoxPro.
Programar en Visual FoxPro
Describe cómo comprender las técnicas de programación orientada a objetos y el modelo controlado por eventos puede aumentar su productividad como programador y permitirle acceder a todo el poder de Visual FoxPro.

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Generador de aplicaciones

El cuadro de diálogo con fichas del Generador de aplicaciones simplifica la creación y modificación de formularios, controles complejos y otros elementos opcionales de aplicaciones eficaces y satisfactorias.

Para ejecutar el Generador de aplicaciones

  1. En el menú Herramientas, elija Asistentes y luego haga clic en Todos los asistentes. Aparece el cuadro de diálogo Selección de los asistentes.
  2. En el cuadro de diálogo Selección de los asistentes, elija Generador de aplicaciones.

El Generador de aplicaciones se integra con los archivos del marco de aplicaciones que crea el Asistente para aplicaciones, así puede generar una aplicación completa sin tener que escribir código. También le permite llevar a cabo las siguientes operaciones:

  • Agregar, modificar o quitar componentes específicos de la aplicación, tales como tablas, formularios e informes.
  • Especificar estilos visuales para los formularios e informes.
  • Agregar elementos comunes de las aplicaciones como son la pantalla de bienvenida, un cuadro de diálogo Acerca de, un menú Favoritos, un cuadro de diálogo de Inicio de sesión de usuario y una barra de herramientas estándar.
  • Especificar los títulos de crédito y la información de versión de la aplicación.
  • Ver una base de datos de la ficha Datos

Al igual que todos los generadores de Visual FoxPro, el Generador de aplicaciones es de reentrada, lo que significa que puede cerrarlo y volver a abrirlo posteriormente para modificar cualquier configuración que defina el propio generador. Puede volver a abrir el Generador de aplicaciones si hace clic derecho en el proyecto y selecciona el elemento Generador en el menú contextual.

Nota Recuerde que los cambios que efectúe posteriormente a través del generador no aparecerán en la aplicación hasta que ésta se genere nuevamente.

Para más información, consulte Crear aplicaciones con el marco de aplicaciones.

Fichas del generador

General

Especifica el nombre de aplicación y otras características opcionales como pantalla de inicio, formulario inicial y tipo de aplicación.

Créditos

Especifica créditos de la producción de la aplicación como autor, compañía, versión, copyright y marca registrada.

Datos

Especifica el origen de datos y el formato para formularios e informes que incluye en la aplicación.

Formularios

Especifica tipos de menú, el menú desde cual se llama al formulario, barras de herramientas y si un formularios se puede instanciar múltiples veces.

Informes

Especifica nombres para informes de la aplicación.

Avanzadas

Especifica nombre del archivo de ayuda y el directorio predeterminado para la aplicación. También puede especificar la inclusión de una barra de herramientas estándar y un menú Favoritos en la aplicación.

Vea también

Generadores | Archivos del marco de aplicaciones | Asistente para aplicaciones | Ficha Avanzadas, Generador de aplicaciones | Ficha Créditos, Generador de aplicaciones | Ficha Datos, Generador de aplicaciones | Ficha Formularios, Generador de aplicaciones | Ficha General, Generador de aplicaciones | Ficha Informes, Generador de aplicaciones


Ficha General, Generador de aplicaciones

En esta ficha del Generador de aplicaciones, se especifica el nombre de la aplicación. Esta ficha permite también especificar otras opciones entre las que se incluyen la pantalla de bienvenida, el formulario de inicio y el tipo de la aplicación.

Nombre
Especifica el nombre descriptivo de la aplicación, que aparecerá en la barra de título, el cuadro de diálogo Acerca de y, en general, en toda la aplicación.
Imagen
Puede utilizar los archivos de iconos (.ico) que se distribuyen en su directorio Visual FoxPro \Graphics\ICO u otros tales como archivos .bmp , .gif o .jpg

Tipo de aplicación

Estos botones de opción le permiten especificar la forma en que se ejecutará la aplicación:

Normal
La aplicación se ejecutará en la ventana principal de Visual FoxPro, tomando el control completo del entorno de Visual FoxPro, incluido el menú del sistema.
Módulo
La aplicación se agrega a un proyecto existente o se llama desde otra aplicación. La aplicación sólo agrega un título de menú y un menú al menú del sistema existente y, por tanto, funciona exclusivamente como un componente de otra aplicación.
Nota Dado que los módulos no ejecutan ningún evento de lectura (READ EVENTS) ni alteran los parámetros de configuración del entorno de Visual FoxPro existente, funcionan sin ningún problema cuando se llaman desde otras aplicaciones o durante la fase de diseño en el entorno de desarrollo de Visual FoxPro. Para más información, vea READ EVENTS (Comando).
Nivel superior
La aplicación se ejecuta en el escritorio de Microsoft Windows. Con las aplicaciones de Nivel superior, el escritorio de Visual FoxPro puede dejar de ser visible. Proporciona una interfaz MDI de Windows con más flexibilidad que _SCREEN, ya que se pueden generar subclases a partir de ella. Para más información, vea_SCREEN (Variable del sistema).

Cuadros de diálogo comunes

Las siguientes casillas de verificación le permiten incluir todos o cualquiera de los siguientes cuadros de diálogo en su aplicación:

Pantalla de bienvenida
Especifica si la aplicación debe comenzar o no mostrando un archivo imagen designado en el campo Image y créditos en una ventana abierta.
Formulario de Inicio rápido
Especifica si se debe utilizar o no un formulario de Inicio rápido que permita tener acceso a los documentos de la aplicación y a otros archivos del disco. Puede utilizarlo para guiar al usuario a través de la aplicación.
Diálogo Acerca de
Especifica si debe aparecer o no en la aplicación un cuadro de diálogo Acerca de.
Inicios de sesión de usuario
Especifica si la aplicación debe solicitar o no la contraseña de inicio de sesión del usuario y mantener la información de preferencias para múltiples usuarios, como la configuración del cuadro de diálogo Opciones y el contenido del menú Favoritos.
Icono
Especifica el gráfico que aparecerá en el escritorio principal ( _SCREEN) de las aplicaciones normales, en el marco superior del formulario en las aplicaciones de nivel superior y en la barra de título de los formularios a los que no haya asignado un icono específico.

Si elige Aceptar, el generador se cierra y se aplican los parámetros de configuración de todas las fichas.

Vea también

Generador de aplicaciones | Crear aplicaciones con el marco de aplicaciones


Ficha Créditos, Generador de aplicaciones

En esta ficha del Generador de aplicaciones, puede especificar los créditos de la aplicación como autor, compañía, versión, copyright y marca comercial. Esta información aparecerá en la pantalla de inicio y el cuadro de diálogo Acerca de.

Autor
Especifica el nombre del autor de la aplicación.
Compañía
Especifica el nombre de la empresa que ha desarrollado o utiliza la aplicación.
Versión
Especifica el número de versión de la aplicación.
Copyright
Especifica cualquier información relacionada con el copyright.
Marca comercial
Especifica cualquier marca comercial o marca de servicio.

Ya que estos datos se guardan como texto, puede ingresar cualquier información que desee, hasta 50 caracteres y no sólo la información solicitada por las etiquetas de la ficha.

Si elige Aceptar, el generador se cerrará y aplicará la configuración de propiedades de todas las fichas.

Vea también

Generador de aplicaciones | Crear aplicaciones con el marco de aplicaciones


Ficha Datos, Generador de aplicaciones

En esta ficha del Generador de aplicaciones, puede especificar el origen de datos y el formato para los formularios y reportes que incluirá en su aplicación. La cuadrícula muestra las tablas que seleccionó para su aplicación.

Asistente de Bases de Datos
Permite crear una nueva base de datos para su aplicación mediante el Asistente para bases de datos. Cuando se cierre el asistente, las tablas y las vistas de la nueva base de datos aparecerán en la cuadrícula.
Asistente para Tablas
Permite crear una nueva tabla para su aplicación mediante el Asistente para Tablas. Cuando se cierre el asistente, las tablas y las vistas de la nueva base de datos aparecerán en la cuadrícula.
Seleccionar
Permite seleccionar una base de datos, tabla o vista existente para su uso en su aplicación.
Borrar
Permite eliminar todas las tablas de la cuadrícula.
Generar
Permite generar un informe o formulario a partir de la tabla seleccionada, para todos los formularios o reportes seleccionados, en el Estilo de formulario o de informe especificado.
Estilo de formulario
Permite seleccionar un estilo de formulario que se utilizará en una o más de las tablas mostradas en la cuadrícula.
Estilo de informe
Permite seleccionar un estilo de informe que se utilizará en una o más de las tablas mostradas en la cuadrícula.

Para poder utilizar estilos distintos en los distintos formularios o informes, seleccione los formularios o informes y los estilos y, a continuación, genere los informes. Repita este procedimiento para cada estilo distinto que desee utilizar en su aplicación.

Si elige Aceptar, el generador se cierra y se aplican los parámetros de configuración de todas las fichas.

Vea también

Generador de aplicaciones | Crear aplicaciones con el marco de aplicaciones


Ficha Formularios, Generador de aplicaciones

Le permite especificar los tipos de menú, el menú desde el que se realiza la llamada a un formulario, las barras de herramientas y si un formulario puede tener múltiples instancias.

Para cada uno de los formularios que aparecen en la lista, puede seleccionar las opciones que desee aplicar.

Nombre
Le permite especificar un nombre descriptivo para el formulario seleccionado.
Agregar
Le permite seleccionar un formulario que desee agregar a su aplicación. Cuando selecciona un formulario que desea agregar, se habilitan las casillas de verificación de opciones. El Generador de aplicaciones crea automáticamente en la ficha Datos una lista de todos los formularios que usted ha generado.
Modificar
Le permite modificar el formulario seleccionado por medio del Diseñador de formularios. Podría desear hacer esto para modificar el tamaño o forma de las imágenes en un formulario.
Quitar
Quita un formulario de su aplicación.
Instancia individual
Especifica si sólo se puede abrir una única instancia de un formulario en una aplicación. Si no activa esta casilla de verificación, puede abrir el mismo formulario en diferentes registros para hacer comparaciones.
Usar barra de herramientas Exploración
Especifica que el generador debe incluir una barra de herramientas de exploración para el formulario seleccionado.
Usar menú Exploración
Especifica que el generador debe incluir un menú de exploración para el formulario seleccionado.
Aparece en el cuadro de diálogo Nuevo archivo
Especifica que el nombre del formulario aparece en el cuadro de diálogo Nuevo de la aplicación generada.
Aparece en el cuadro de diálogo Abrir archivo
Especifica que el nombre del formulario aparece en el cuadro de diálogo Abrir de la aplicación generada.

Si elige Aceptar, el generador se cierra y se aplican los parámetros de configuración de todas las fichas.

Vea también

Generador de aplicaciones | Crear aplicaciones con el marco de aplicaciones


Ficha Informes, Generador de aplicaciones

Esta ficha, del Generador de aplicaciones, permite especificar nombres descriptivos para los informes de su aplicación.

Nombre
Permite especificar un nombre descriptivo para el informe seleccionado..
Aparece en el cuadro de diálogo Imprimir informes
Especifica si debe aparecer o no el nombre descriptivo del informe seleccionado en el cuadro de diálogo Imprimir informes de su aplicación.
Agregar
Permite agregar un informe existente a su aplicación.
Modificar
Permite modificar el informe seleccionado por medio del Diseñador de informes. Para más información, vea Diseñador de informes.
Quitar
Permite quitar de la aplicación el informe seleccionado..

Si elige Aceptar, el generador se cierra y se aplican los parámetros de configuración de todas las fichas.

Vea también

Generador de aplicaciones | Crear aplicaciones con el marco de aplicaciones


Ficha Avanzado, Generador de aplicaciones

En esta ficha del Generador de aplicaciones, puede especificar el nombre del archivo de Ayuda y el directorio predeterminado para su aplicación. También puede especificar la inclusión de una barra de herramientas estándar y de un menú Favoritos en su aplicación.

Archivo de Ayuda
Le permite especificar el nombre y ruta de acceso al archivo de Ayuda de su aplicación.
Directorio predeterminado de datos
Le permite especificar el directorio predeterminado para los archivos de datos de su aplicación. Si especifica este directorio antes de seleccionar su origen de datos, puede serle más fácil especificar múltiples tablas.

Menús

Barra de herramientas estándar
Especifica si debe aparecer o no la barra de herramientas Estándar en su aplicación.
Menú Favoritos
Especifica si debe estar disponible o no el menú Favoritos en su aplicación.
Limpiar
Ejecuta una rutina que aplica los cambios realizados en el Generador de aplicaciones al proyecto activo.

Si selecciona OK, el generador se cierra, aplicando la configuración establecida para todas las tablas.

Vea también

Generador de aplicaciones | Crear aplicaciones con el marco de aplicaciones


Generador de autoformato

El Generador de autoformato del Diseñador de formularios aplica un conjunto de estilos a controles seleccionados del mismo tipo. Por ejemplo, puede seleccionar dos o más controles de cuadro de texto en el formulario y utilizar el Generador de autoformato para aplicar los mismos estilos; o puede especificar si los estilos se aplican a todos los bordes, colores, fuentes, diseño o efectos 3D de los controles, o únicamente a algunos de ellos.

Para usar el Generador de autoformato

  • En el menú Nuevo, elija Formulario y luego haga clic en Nuevo archivo. En este punto puede generar manualmente el formulario o puede utilizar inmediatamente el Generador de formularios.

Para iniciar manualmente el generador

  1. Mediante la barra de herramientas Controles de formularios, coloque varios controles del mismo tipo en el formulario.
  2. Seleccione todos los controles a los que quiere dar formato y haga clic derecho; a continuación, elija Generador en el menú contextual del Diseñador de formularios.

    Aparece un cuadro de diálogo apropiado para los controles seleccionados.

  3. Elija las opciones que desee en el cuadro de diálogo y, a continuación, elija Aceptar.

    Cuando elija Aceptar, se cierra el generador y se aplica la configuración seleccionada.

Para empezar con el Generador de autoformato

  1. En el Diseñador de formularios en la barra de herramientas Diseñador de formularios, seleccione el icono Autoformato.
  2. Cuando se abra el Generador de autoformato, elija un estilo de las opciones listadas y borre cualquier elemento que desee mantener sin formato.
  3. Haga clic en Aceptar.

Puede especificar el estilo a utilizar: A relieve, Estándar o Profesional. Cuando haga clic en un estilo, el cuadro a la izquierda se actualiza para mostrar como se ve el estilo. Puede aplicar Estilo a lo siguiente:

Bordes
Aplica el estilo seleccionado a los bordes del control. Esta opción corresponde a la propiedad BorderStyle.
Colores
Aplica el estilo seleccionado a los colores del control. Corresponde a las propiedades BackColor y ForeColor y a las propiedades BackStyle y BorderColor.
Fuentes
Aplica el estilo seleccionado a las fuentes del control.
Diseño
Aplica el estilo seleccionado a la alineación del control.
Efecto 3D
Aplica el estilo seleccionado al efecto 3D del control.
Aplicar ahora
Aplica el estilo a los controles seleccionados sin abandonar el Generador de Autoformato.

Vea también

Generadores | BackColor y ForeColor (Propiedades) | BackStyle (Propiedad) | BorderColor (Propiedad) | BorderStyle (Propiedad)


Generador de CursorAdapter

El Generador de CursorAdapter permite generar rápidamente los objetos CursorAdapter. Puede abrir el Generador de CursorAdapter desde el Diseñador de formularios o el Diseñador de clases.

Para abrir el Generador de CursorAdapter

  1. Crear un nuevo formulario o abrir un formulario existente.
  2. En el Diseñador de formularios, haga clic con el botón secundario del ratón en el formulario, y seleccione Entorno de datos.

    Para un formulario con un objeto DataEnvironment vacío, aparecerá el cuadro de diálogo Abrir.

  3. En el cuadro de diálogo Abrir, elija Cancelar.
  4. Haga clic con el botón secundario del ratón sobre la superficie del Entorno de datos, y seleccione Generador.
  5. En el Generador de entorno de datos, haga clic en la ficha Cursores para hacerla visible.
  6. Para crear un nuevo objeto CursorAdapter, elija Nuevo.

Ahora podrá configurar las propiedades del objeto CursorAdapter que ha creado, agregar un objeto CursorAdapter desde una biblioteca de clases, o editar un objeto CursorAdapter ya existente.

También podrá abrir el Generador de CursorAdapter haciendo clic con el botón secundario del ratón en una clase CursorAdapter, nueva o ya existente en el Diseñador de clases, y seleccionando Generador, o podrá abrir el generador haciendo clic con el botón secundario del ratón en un objeto CursorAdapter ya existente en el Entorno de datos del formulario y seleccionando Generador.

Fichas del generador

Propiedades
Especifica las propiedades del objeto CursorAdapter.
Acceso a datos
Especifica como el objeto CursorAdapter recupera datos desde un origen de datos.
Actualización automática
Especifica como el objeto CursorAdapter actualiza automáticamente los registros en un origen de datos.

Vea también

Generadores | Clase CursorAdapter | Diseñador de formularios | Diseñador de clases | Generador de Entorno de datos


Generador de CursorAdapter, Ficha Propiedades

Muestra el nombre y propiedades de la clase CursorAdapter, y especifica si se usa el entorno de datos como origen de datos usando la configuración de la conexión, solo en el generador.

Class
Muestra el nombre de la clase en la que esta basada el objeto CursorAdapter. La clase, puede ser la clase base del objeto CursorAdapter, o una clase de una biblioteca de clases o archivo de programa, en este caso, el nombre del archivo y el camino también son mostrados.
Name
Especifica el nombre asignado al objeto CursorAdapter por el generador. El nombre generado se puede cambiar.
Alias
Especifica el alias asignado al objeto CursorAdapter por el generador. El nombre predeterminado, es el mismo, que el que aparece en la propiedad Name. El alias generado se puede cambiar.
Nota Asegúrese que el alias es único en tiempo de ejecución. El método CursorAdapter CursorFill falla si una tabla o cursor utilizan el mismo nombre de alias o si ya se encuentra abierto. Para mayor información, Vea Método CursorFill.
Utilizar DataEnvironment como origen de datos
Especifica si quiere utilizar como origen de datos el objeto DataEnvironment. Cuando la propiedad CursorAdapter DataSourceType es "ADO", no deberá seleccionar la casilla de verificación, salvo, que el objeto DataEnvironment contenga solo un CursorAdapter que utilice ese origen de datos.
Utilizar la configuración de conexión solo en el generador
Especifica si se quiere utilizar la configuración de conexión, solo en el generador. Si selecciona esta opción, necesitará agregar código para configurar un entorno de conexión personalizado en tiempo de ejecución. Seleccionando esta opción hace posible tener una conexión abierta en tiempo de diseño, tanto que puede seleccionar tablas, generar consultas, etc.
Tipo de Origen de Datos
Especifica un tipo de origen de datos. Dependiendo del tipo de origen de datos seleccionado, puede seleccionar o generar uno de los siguientes orígenes de datos:
  • ADO

    Especifica una de las siguientes formas de establecer una conexión con ActiveX Data Object (ADO).

    Utilizar un Recordset ADO existente Especifica una referencia a un objeto ADO Recordset válido. Esa referencia debe ser válida en tiempo de diseño, si el Generador CursorAdapter es para utilizar este RecordSet.

    Utilizar DSN Especifica un nombre de Origen de Datos (DSN) de la lista de orígenes de datos y valores en las cajas de ID de Usuario y contraseñas, si es aplicable.

    En la mayor parte de los casos, seleccionando un DSN para una conexión ADO, es el resultado de utilizar Open Database Connectivity (ODBC) con el controlador especificado por el DSN a través del proveedor OLE DB MSDASQL para ODBC. Ciertamente los proveedores OLE DB pueden mapear la configuración ODBC DSN en correspondencia del proveedor OLE DB.

    Nota No deberá usar un nombre DSN si el proveedor OLE DB no puede mapear la configuración ODBC DSN. Puede utilizar un controlador ODBC para un origen de datos que no tiene un proveedor OLE DB.

    Utilizar la cadena de conexión Especifica una cadena de conexión válida. Es el mismo tipo de cadena de conexión, que se utiliza para la propiedad ADO ConnectionString.

    Alternativamente, puede mostrar el cuadro de diálogo de las propiedades de enlace de datos haciendo clic en el Generador. Puede entonces seleccionar el proveedor OLE DB apropiado y otros parámetros necesarios en la cadena de conexión.

  • Nativo

    Especifica un nombre de base de datos válido y el camino en la caja Database. Puede seleccionar una base de datos haciendo clic en el botón con puntos suspensivos (...) para mostrar el cuadro de diálogo Seleccionar Base de Datos.

  • ODBC

    Especifica una de las siguientes formas de establecer una conexión de base de datos.

    Utilizar un controlador de conexión existente Especifica una propiedad, variable de memoria, valor, o expresión que evalúa a un controlador de conexión válido en tiempo de ejecución.

    Utilizar DSN Especifica un nombre de un origen de datos (DSN) de la lista de orígenes de datos y valores en las cajas de ID de Usuario y contraseñas, si es aplicable.

    Utilizar la cadena de conexión Especifica una cadena de conexión válida. Es el mismo tipo de cadena de conexión, que se utiliza para la función SQLSTRINGCONNECT( ). Para mayor información, vea Función SQLSTRINGCONNECT( ).

  • XML

    Especifica XML como el origen de datos.

Vea También

Generador de CursorAdapter | Ficha Acceso a datos, Generador de CursorAdapterer | Ficha Auto-Actualizar, Generador de CursorAdapter


Ficha de acceso de datos, Generador de CursorAdapter

Establece el comando Select y los valores del esquema del objeto CursorAdapter y otras propiedades del acceso a datos.

Comando Select
Escriba o construya el comando Select apropiado.

Cuando el tipo de origen de datos es XML, escriba el comando Select. En este caso, el comando Select debería ser una expresión que resuelva una cadena XML válida y bien formada.

Cuando el tipo de datos es Nativo, ODBC, o ADO, el botón Generar está disponible. Seleccionando el botón Generar se abre el cuadro de diálogo del Generador de comando Select.

Generador de comando Select Especifica las tablas y los campos a incluir en el comando Select.

  • Tabla Especifica una tabla que se desea usar. Las tablas en la lista corresponden a las tablas en el origen de datos seleccionado.
  • Agregar tabla Estará disponible cuando el tipo de origen de datos es Nativo y puede usarse para agregar tablas que no están el la base de datos actual a la lista de tablas.
  • Lista de campos disponibles Especifica los campos a incluir en el comando Select después de seleccionar una tabla, o una vista, si es lo apropiado. Esta lista aparece en el lado izquierdo del cuadro de diálogo del Generador de comando Select.
  • Agregar/Agregar todos/Quitar/Quitar todos Agrega un campo o todos los campos a la lista de campos seleccionados o quita un campo o todos los campos desde la lista de campos seleccionados.

    Lista de campos seleccionados Muestra los campos seleccionados, los cuales pueden ser reorganizados arrastrando y colocando los botones Mover que aparecen a lo largo del lado izquierdo de la lista de campos seleccionados. Esta lista aparece en el lado derecho del cuadro de diálogo del Generador de comando Select.

Esquema
Escriba el esquema para el objeto CursorAdapter, si es necesario. El esquema es generado automáticamente cuando el comando Select es construido usando el Generador de comando Select.

Si escribe el comando Select, puede elegir el botón Generar, y el generador intentará crear el esquema haciendo coincidir los nombres de la tabla y de los campos con las tablas disponibles.

Cuando el tipo de origen de datos es XML, no podrá crear un comando Select, y el esquema no es generado automáticamente. Cuando elija el botón Generar, el cuadro de diálogo Abrir aparece, y podrá especificar un archivo XML desde el cual crear el esquema. Este archivo XML deberá ser un esquema válido XML Schema Definition (XSD), un XML válido con un esquema XML en línea, o un XML válido con una referencia a un XSD externo válido.

Búsqueda de datos
Especifica las propiedades relacionadas con la forma de recuperar datos remotos cuando se está usando el tipo de datos Open Database Connectivity (ODBC). Las siguientes configuraciones están disponibles:
  • Número de registros para buscar a la vez Recupera todos o un número de registros a la vez. Para mayor información, vea FetchSize (Propiedad).
  • Número máximo de registros para buscar Recupera todos o un número máximo de registros. Para mayor información vea, la propiedad MaxRecords.
  • Use memo cuando la longitud del campo carácter >= Usa un campo memo cuando la longitud del campo carácter excede el valor especificado. Para mayor información, vea UseMemoSize (Propiedad).
  • Buscar datos cuando sea necesario Recupera datos sólo cuando sea necesario. Para mayor información, vea FetchAsNeeded (Propiedad).
  • Precompilar SQL en el servidor Especifica si se prepara expresiones SLQ para las llamadas subsiguientes a la función REQUERY( ). Para mayor información, vea Prepared (Propiedad) and REQUERY( ) (Función).
  • Buscar campos memo Especifica si se recuperan campos memo. Para mayor información, vea FetchMemo (Propiedad).
  • Permitir búsqueda simultánea Especifica si se permite recuperaciones simultáneas de datos. Para mayor información, vea AllowSimultaneousFetch (Propiedad).
Anular el modo de almacenamiento en búfer
Especifica el modo de almacenamiento en búfer.

Almacenamiento optimista de filas en búfer Permite editar un determinado registro y bloquear el registro sólo cuando se escriba en disco. Esta es la configuración predeterminada.

Almacenamiento optimista de tabla en búfer Permite editar todos los registros y no bloquearlos hasta que se escriban en el disco.

Interrumpir en caso de error
Especifica si se permite a los errores interrumpir la ejecución del programa en la ubicación dónde han ocurrido o enviarlos al objeto CursorAdapter. Para mayor información, vea BreakOnError (Propiedad).
Indicadores XML
Especifica la configuración de los indicadores para pasar a la función XMLUPDATEGRAM( ), la cual es llamada cuando el tipo de origen de datos es XML y la actualización ocurre. Para mayor información acerca de la actualización automática, vea Manejo de datos utilizando CursorAdapters and XMLUPDATEGRAM( ) (Función).

Vea también

Generador de CursorAdapter | Ficha Auto-Actualizar, Generador de CursorAdapter | Ficha Propiedades, Generador de CursorAdapter


Ficha Auto-Actualizar, Generador CursorAdapter

Especifica como el objeto CursorAdapter automáticamente actualiza los registros en el origen de datos. Para mayor información acerca de objetos CursorAdapter, vea CursorAdapter (Clase).

Enviar actualizaciones
Especifica, si el objeto CursorAdapter está disponible para ser actualizado. Enviar actualizaciones está seleccionado de forma predeterminada.
Auto-actualizar
Especifica, si es posible la actualización automática para el objeto CursorAdapter.
Avanzado
Muestra el Cuadro de diálogo Propiedades avanzadas de actualización, el que contiene tres fichas: Actualizar, Eliminar y Añadir. Cada ficha permite especificar la siguiente información:
  • Permite (actualizar/eliminar/añadir)

    Especifica, si permite actualizar, eliminar o añadir. Esta opción está seleccionada de forma predeterminada.

  • Comando Actualizar/Eliminar/Añadir

    Especifica, el texto del comando personalizado, actualizar/eliminar/añadir. Estos comandos pueden ser secuencias SQL UPDATE/ DELETE/INSERT, nombres de procedimientos almacenados, llamadas a métodos o procedimientos personalizados, etc.

  • Actualizar el tipo de origen de datos

    Especifica un origen de datos apropiado, si necesita un tipo diferente de origen de datos para sus comandos Actualizar/Eliminar/Añadir.

    Nota Cuando selecciona ADO u ODBC, puede además introducir la información del origen de datos como se especifica en la ficha Propiedades.
Tablas
Especifica, una lista de tablas para actualizar, separadas por comas. El generador normalmente suministra la lista de tablas.
Columna campo clave (símbolo llave)
Muestra cuadros de verificación para seleccionar los campos clave. Esta columna está activa solo cuando está seleccionado Auto-actualizar.
Columna de actualización automática (símbolo lápiz)
Muestra casillas de verificación para seleccionar campos para actualización automática. Esta columna está activa solo cuando está seleccionado Auto-actualizar.
Campo cursor
Muestra los campos disponibles para la actualización automática. Esta columna está activa solo cuando está seleccionado Auto-actualizar.
Nombre de actualización
Especifica los nombres de campos, como tableName. FieldName, utilizado para actualización automática. Esta columna está activa solo cuando está seleccionado Auto-actualizar. Para mayor información, vea UpdateNameList (Propiedad).
Actualizar todos los campos
Especifica que todos los campos son seleccionados y actualizados automáticamente. Debe especificar además un campo clave.
Actualización utilizada
Especifica el método de actualización preferido: SQL UPDATE o SQL DELETE o INSERT. Para más información, vea UPDATE - SQL (Comando), DELETE - SQL (Comando), y INSERT - SQL (Comando).
Cláusulas SQL WHERE incluidas
Especifica el tipo de claúsula WHERE utilizada para actualizar: campos clave solamente, campos clave y actualizables, campos clave y modificables o campos clave y marca de tiempo. Para más información, vea WhereType (Propiedad).
Batch update count
Establece el valor de la propiedad BatchUpdateCount. Para más información, vea BatchUpdateCount (Propiedad).
Comparar memo
Establece el valor de la propiedad CompareMemo como on u off. Para más información, vea CompareMemo (Propiedad).
Funciones de conversión
Especifica una lista de nombres de campos delimitada por comas y nombres de funciones separadas por espacios. Para más detalles, vea ConversionFunc (Propiedad).

Vea también

Generador de CursorAdapter | Ficha Propiedades, Generador de CursorAdapter | Ficha Acceso a datos, Generador de CursorAdapterer


Generador de Entorno de datos

Con el Generador de Entorno de datos es posible crear objetos DataEnvironment que utilizan las capacidades de los objetos CursorAdapter. Se puede abrir el Generador de Entorno de Datos desde el Diseñador de Formularios o desde el Diseñador de Clases.

Para abrir el Generador de Entorno de Datos

  1. Crear un nuevo formulario o abrir uno existente.
  2. Desde el Diseñador de Formularios, haga clic derecho en el formulario, y haga clic en Entorno de datos.

    Para un formulario con un Entorno de Datos vacío, aparecerá el cuadro de diálogo Abrir.

  3. En el cuadro de diálogo Abrir, de clic en Cancelar.
  4. De clic derecho en la superficie de Entorno de Datos, y clic en Generador.

Ahora puede usar el generador para crear objetos de Entorno de Datos.

También se puede abrir el Generador de Entornos de Datos haciendo clic derecho sobre una clase de Entorno de Datos nueva o existente en el Diseñador de Clases y seleccionando Generador.

Fichas del Generador

Ficha Origen de datos, Generador de Entorno de datos

Se especifica el tipo de origen de datos y el origen de datos para el objeto Entorno de Datos.

Ficha Cursores, Generador de Entorno de datos

En esta ficha se añaden, crean o borran objetos CursorAdapter desde el objeto DataEnvironment. También puede abrir el Generador de CursorAdapters para editar objetos CursorAdapter existentes.

Vea también

Generadores | Objeto DataEnvironment | Diseñador de formularios | Diseñador de clases | Generador de CursorAdapter

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, consulte el tema "Microsoft Visual FoxPro Soporte Técnico"..


Ficha Origen de datos, Generador de Entorno de datos

Especifica el Tipo de origen de datos y el Origen de datos a utilizar, si es necesario.

Nota Cuando se accede a tablas de Microsoft Access, en particular tablas que tienen espacios en los nombres de las columnas, debe utilizar el Proveedor OLE DB de Microsoft para Access y especificar ADO como el tipo de Origen de datos, en lugar del controlador de Access ODBC de Microsoft . Para seleccionar el Proveedor OLE DB para Access, en la Ficha de Origen de datos, seleccione ADO en la casilla Tipo origen de datos (Data source type). Haga clic en Utilizar cadena de conexión (Use connection string), y luego en el botón Generar (Build) para continuar la construcción de la cadena de conexión con la base de datos Access.
Tipos de origen de datos
Especifica el tipo de Origen de datos. Dependiendo del tipo de origen de datos seleccionado puede seleccionar o generar uno de los siguientes orígenes de datos:
  • ADO

    Especifica una de las siguientes formas de establecer una conexión con Activex Data Objects (ADO).

    Utilizar un ADO Recordset existente Especifica una referencia válida a un objeto ADO RecordSet. Esta referencia debe ser válida en tiempo de diseño si se usa el Generador de CursorAdapter con este RecordSet.

    Utilizar DSN Especifica un nombre de origen de datos (DSN) desde la lista de Origen de datos y los valores de las casillas de ID y contraseña, si es aplicable.

    En la mayoría de los casos, la selección de un DSN para una conexión ADO resulta en la utilización de un controlador Open Database Connectivity (ODBC) especificado por el DSN a través del Proveedor MSDASQL OLE DB para ODBC. Ciertos proveedores de OLE DB pueden asignar los ajustes del ODBC DSN a los ajustes correspondientes del proveedor de OLE DB.

    Nota No debe usar un nombre DSN si el proveedor OLE DB no puede asignar los ajustes del ODBC DSN. Puede utilizar un controlador ODBC para el Origen de datos que no tenga un proveedor de OLE DB..

    Utilizar cadena de conexión Especifica una cadena de conexión válida. Esta es la misma cadena de conexión que introduce para la propiedad ADO ConnectionString.

    Alternativamente, puede seleccionar el botón Generar (Build) para desplegar el cuadro de diálogo Propiedades del enlace de datos (Data Link Properties). Puede seleccionar el proveedor OLE DB apropiado y otros parámetros necesarios para la instrucción de conexión.

  • Nativo

    Especifica una ruta y nombre de una base de datos válida en el Cuadro de diálogo Bases de datos (Database). Puede explorar y seleccionar una base de datos a utilizar, haciendo clic en el botón de Puntos (...) se abrirá el cuadro de diálogo Seleccionar base de datos (Select Database).

  • ODBC

    Especifica una de las siguientes formas de establecer una conexión con la base de datos.

    Utilizar un controlador de conexión existente Especifica una propiedad, variable de memoria, valor o expresión que se evalúa como un controlador de conexión válido en tiempo de ejecución.

    Utilizar DSN Especifica un Nombre de origen de datos (DSN) de la lista de Origen de datos y los valores de las casilla de ID del usuario y contraseña, si es aplicable.

    Utilizar cadena de conexión Especifica una cadena de conexión válida. Esta es la misma cadena de conexión que usaría para la función SQLSTRINGCONNECT( ). Para mas información, vea Función SQLSTRINGCONNECT( ).

  • XML

    Especifica XML como un origen de datos.

Vea también

Generador de Entorno de datos | Ficha Cursores, Generador de Entorno de datos


Ficha cursores, generador de entorno de datos

Se utiliza para crear nuevos objetos CursorAdapter, añadir objetos CursorAdapter desde una biblioteca de clases, eliminar objetos CursorAdapter o abrir el Generador de CursorAdapter para un objeto CursorAdapter existente.

Añadir
Muestra el cuadro de diálogo Abrir de tal forma que pueda seleccionar una clase CursorAdapter existente desde una biblioteca de clases o archivo de programa.
Nuevo
Muestra el Generador de CursorAdapter de tal forma que pueda crear y configurar un nuevo objeto CursorAdapter.
Eliminar
Elimina el objeto CursorAdapter seleccionado actualmente. Puede además seleccionar un objeto CursorAdapter diferente, desde la lista que aparece en la ficha Cursores.
Generador
Abre el Generador de CursorAdapter para el objeto CursorAdapter seleccionado actualmente.
Clase
Es de Sólo lectura. Muestra el nombre del miembro de clase para el objeto CursorAdapter actualmente seleccionado.
Nombre
Es de Lectura / Escritura. Muestra el nombre del objeto CursorAdapter actualmente seleccionado. El nombre predeterminado es Cursor<CursorNumber>.

Vea además

Generador de Entorno de datos | Ficha Origen de datos, Generador de Entorno de datos


Generador de cuadros combinados

El Generador de cuadros combinados facilita el establecimiento de propiedades de un control ComboBox. Las propiedades se establecen al seleccionar las opciones presentadas en el cuadro de diálogo Generador de cuadros combinados.

Para usar el Generador de cuadros combinados

  1. En el menú Nuevo, elija Formulario, y luego hacer clic en Nuevo archivo.
  2. Utilizando la barra de herramientas Controles de formularios, poner uno o más controles ComboBox en el formulario.
  3. Seleccione todos los controles ComboBox a los que quiera dar formato y haga clic en ellos con el botón secundario del ratón y, a continuación, elija Generador en el menú contextual del Diseñador de formularios.
  4. Elija las opciones en cada ficha del cuadro de diálogo que aparece y, a continuación, elija Aceptar.

    Cuando elija Aceptar, se cerrará el generador y se aplicará la configuración de propiedades al control.

Fichas del generador

Elementos de la lista
Especifica elementos de una tabla, una matriz o seleccionados manualmente, que deben figurar en el cuadro combinado.
Estilo
Especifica las propiedades Style y SpecialEffect del control, incluidos 3D o estilo plano, cuadros combinados o listas desplegables, y búsqueda incremental o de clave única.
Diseño
Especifica las propiedades Width y ColumnWidths del control.
Valor
Especifica qué columna devuelve un valor y en dónde se debe almacenar.

Vea también

Generadores | ComboBox (Control) | Ficha Diseño, Generador de cuadros combinados | Ficha Elementos de la lista, Generador de cuadros combinados | Ficha Estilo, Generador de cuadros combinados | Ficha Valor, Generador de cuadros combinados


Ficha Elementos de la lista, Generador de cuadros combinados

Esta ficha, en el Generador de cuadros combinados, especifica los elementos que se incluyen en el cuadro combinado.

Rellenar la lista con
Especifica el tipo de datos con los que se rellenará la lista del cuadro combinado. La selección que se haga aquí determina qué elecciones aparecen en esta ficha. Las opciones son: Campos de una tabla o una vista, Datos introducidos manualmente o Valores de una matriz.
Campos de una tabla o una vista
Le permite seleccionar tablas libres o tablas y vistas de una base de datos para usarlas en el cuadro combinado.
Bases de datos y tablas
Lista las bases de datos disponibles y da la opción de seleccionar Tablas libres. Para encontrar una base de datos o una tabla, haga clic en el botón de cuadro diálogo, que muestra el cuadro de diálogo Abrir . Esta opción aparece cuando ha seleccionado Campos de una tabla o una vista en la lista desplegable Rellenar la lista con.
Lista de tablas
Muestra tablas y vistas en la base de datos seleccionada, o tablas libres. Esta opción aparece cuando ha seleccionado Campos de una tabla o una vista en la lista desplegable Rellenar la lista con.
Campos disponibles
Muestra todos los campos de la tabla o de la vista seleccionada. Seleccione los campos cuyos datos quiera en su cuadro combinado. Esta opción aparece cuando ha seleccionado Campos de una tabla o una vista en la lista desplegable Rellenar la lista con.
Botones de flecha
Agrega y elimina campos del cuadro Campos seleccionados. Esta opción aparece cuando ha seleccionado Campos de una tabla o una vista en la lista desplegable Rellenar la lista con.

También puede hacer doble clic en un elemento para moverlo entre listas.

Campos seleccionados
Muestra los campos que se van a usar para rellenar la lista del cuadro combinado. El orden de los campos seleccionados corresponderá al orden de las columnas del cuadro combinado. Esta opción aparece cuando ha seleccionado Campos de una tabla o una vista en la lista desplegable Rellenar la lista con.
Datos introducidos manualmente
Le permite seleccionar el número de columnas que se van a mostrar en el cuadro combinado y escribir la información que se va a mostrar.
Columnas
Especifica el número de columnas de la lista del cuadro combinado. Esta opción aparece cuando ha seleccionado Datos introducidos manualmente en la lista desplegable Rellenar la lista con.
Cuadrícula de columnas
Muestra las columnas en las que se introducen los datos. Escriba los datos en las celdas de las columnas. Puede modificar el tamaño de las columnas si arrastra con el ratón las líneas que las separan. Esta opción aparece cuando ha seleccionado Datos introducidos manualmente en la lista desplegable Rellenar la lista con.
Valores de una matriz
Le permite usar datos de una matriz del cuadro combinado.
Nombre de la matriz
Especifica el nombre de una matriz. Esta opción aparece cuando ha seleccionado Valores de una matriz en la lista desplegable Rellenar la lista con.
Toda la matriz
Especifica que toda la matriz va a llenar la lista del cuadro combinado. Esta opción aparece cuando ha seleccionado Valores de una matriz en la lista desplegable Rellenar la lista con.
Intervalo de la matriz
Especifica que una parte de la matriz va a llenar la lista del cuadro combinado según la configuración de columnas y filas. Esta opción aparece cuando ha seleccionado Valores de una matriz en la lista desplegable Rellenar la lista con.
Intervalo de columnas y filas
Especifica la primera y la última columna, y la primera y la última fila, como intervalo de la matriz. Estas opciones sólo están disponibles cuando se selecciona Intervalo de la matriz. Esta opción aparece cuando ha seleccionado Valores de una matriz en la lista desplegable Rellenar la lista con.

Vea también

Generador de cuadros combinados | ControlSource (Propiedad) | Ficha Diseño, Generador de cuadros combinados | Cuadro de diálogo Abrir | RowSource (Propiedad) | RowSourceType (Propiedad) | Ficha Estilo, Generador de cuadros combinados | Ficha Valor, Generador de cuadros combinados


Ficha Estilo, Generador de cuadros combinados

Esta ficha en el Generador de cuadros combinados, especifica efectos especiales, combinado o lista desplegable y compatibilidad de búsqueda incremental para el cuadro combinado.

Tridimensional
Especifica que los bordes superior e izquierdo del cuadro combinado están resaltados, y los bordes inferior y derecho están sombreados.
Normal
Especifica que el cuadro combinado es un cuadro sin sombra en el formulario. Tridimensional y Normal determinan el valor de la propiedad SpecialEffect.
Combinado desplegable
Especifica que el cuadro combinado será un combinado desplegable, en el que el usuario puede hacer clic en la flecha desplegable para ver una lista de opciones posibles o escribir directamente un nuevo elemento en el cuadro de texto. Esta opción corresponde a configurar la propiedad Style en 0.
Lista desplegable
Especifica que el cuadro combinado será una lista desplegable, en la que el usuario sólo puede seleccionar de la lista. Esta opción equivale a configurar la propiedad Style en 2.
Sí, activar la búsqueda incremental
Especifica si el control intenta buscar una coincidencia con un elemento de la lista a medida que el usuario escribe cada letra. Esta opción corresponde a la configuración de la propiedad IncrementalSearch.
No, desactivar la búsqueda incremental
Desactiva la búsqueda incremental de forma que cada pulsación de tecla inicia una búsqueda de un carácter inicial.

Vea también

Generador de cuadros combinados | IncrementalSearch (Propiedad) | Ficha Elementos de la lista, Generador de cuadros combinados | Ficha Diseño, Generador de cuadros combinados | Style (Propiedad) | Ficha Valor, Generador de cuadros combinados


Ficha Diseño, Generador de cuadros combinados

Esta ficha en el Generador de cuadros combinados controla el ancho de las columnas y la presentación.

Ajustar el ancho del cuadro combinado para mostrar todas las columnas
Especifica que se van a mostrar todas las columnas incluso si el cuadro combinado abierto debe extenderse más allá de los límites del formulario. Esto controla la propiedad Width del control combobox.
Cuadrícula de columnas
Controla el valor de la propiedad ColumnWidths. Puede ajustar el ancho de la columna si arrastra el borde derecho de un encabezado de columna con el ratón. Haga doble clic en un encabezado de columna para ocultar la columna.

La cuadrícula muestra los datos reales si están disponibles. Si no hay datos disponibles, la cuadrícula presenta un mensaje a tal efecto.

Para cambiar el orden de las columnas, vuelva a la ficha Elementos de la lista, elimine los campos y vuelva a agregarlos en el orden deseado.

Vea también

Generador de cuadros combinados | Ficha Elementos de la lista, Generador de cuadros combinados | Ficha Estilo, Generador de cuadros combinados | Ficha Valor, Generador de cuadros combinados


Ficha Valor, Generador de cuadros combinados

Esta ficha en el Generador de cuadros combinados especifica dónde se deben conseguir los valores devueltos y dónde se deben almacenar.

Devolver el valor de
Especifica la columna cuyo valor se almacena en un campo de tabla cuando el usuario selecciona un elemento del cuadro combinado. Esta opción corresponde a la propiedad BoundColumn.
Nombre de campo
Especifica un campo de tabla o de vista en el que se almacena el valor especificado en el cuadro Devolver el valor de. De forma predeterminada, la lista incluye campos de tablas en el entorno de datos. Elija el botón de cuadro de diálogo para mostrar el cuadro de diálogo Abrir y poder seleccionar otra tabla. Esta opción corresponde a la propiedad ControlSource.

Por ejemplo, si llena el cuadro combinado con una lista de 50 estados, cuando el usuario elija un estado, lo podrá escribir en el campo ESTADO de una tabla de direcciones.

Vea también

BoundColumn (Propiedad) | Generador de cuadros combinados | ControlSource (Propiedad) | Ficha Diseño, Generador de cuadros combinados | Ficha Elementos de la lista, Generador de cuadros combinados | Cuadro de diálogo Abrir | Ficha Estilo, Generador de cuadros combinados


Generador de grupos de comandos

El Generador de grupos de comandos facilita la forma de establecer propiedades para un control de tipo grupo de comandos. Las propiedades se establecen al seleccionar las opciones presentadas en el cuadro de diálogo Generador de grupos de comandos.

Para usar el Generador de grupos de comandos

  1. Mediante la barra de herramientas Controles de formularios, coloque un control de Grupo de comandos en un formulario.
  2. Seleccione el control de Grupo de comandos y haga clic en él con el botón secundario del ratón y, a continuación, elija Generador en el menú contextual del Diseñador de formularios.

    Aparecerá un cuadro de diálogo apropiado para el control seleccionado.

  3. Elija las opciones que desee en el cuadro de diálogo y, a continuación, elija Aceptar.

    Cuando se elige Aceptar, el generador se cierra y se aplica la configuración de propiedades de cada ficha.

Fichas del generador

Botones
Especifica el número de botones y las propiedades Caption y Picture de cada uno de ellos.
Diseño
Especifica la distribución de botones (vertical u horizontal), el espacio entre ellos y el estilo del borde al controlar las propiedades Height y Width del grupo de comandos.
Nota Los botones de comandos pueden tener títulos, gráficos o ambos. También puede especificar gráficos para que se muestren cuando el botón está desactivado y cuando está presionado, pero debe hacerlo mediante programación o en la ventana Propiedades. Para obtener más detalles, vea las propiedades DisabledPicture y DownPicture.

Vea también

Generadores | Ficha Botones, Generador de grupos de comandos | CommandButton (Control) | CommandGroup (Control) | Ficha Diseño, Generador de grupos de comandos | Ventana Propiedades


Ficha Botones, Generador de grupos de comandos

Esta ficha en el Generador de grupos de comandos, especifica el número de botones y sus títulos y gráficos.

Número de botones
Especifica el número de botones que tendrá el grupo de comandos. Esta opción corresponde a la propiedad ButtonCount. El rango va de 0 a 100.
Columna Título
Especifica el título que irá en el botón. Escriba el título en la celda de la cuadrícula. Esta opción corresponde a la propiedad Caption.
Columna Gráfico
Especifica la ruta y el nombre del archivo del mapa de bits a mostrar en el botón. Escriba la ruta y el nombre del archivo en el cuadro o haga clic sobre el botón del diálogo para abrir el cuadro de diálogo Abrir para elegir un archivo. Este gráfico se mostrará en el botón de comando todo el tiempo independientemente de su estado. Esta opción corresponde a la propiedad Picture.

Los botones ajustan automáticamente su tamaño para alojar nuevos títulos e imágenes. El contenedor de grupo también ajusta su tamaño automáticamente y se modifica la posición de los botones vecinos si es necesario para conservar el espacio deseado.

Vea también

ButtonCount (Propiedad) | Caption (Propiedad) | Generador de grupos de comandos | DisabledPicture (Propiedad) | DownPicture (Propiedad) | Ficha Diseño, Generador de grupos de comandos | Picture (Propiedad) | Ventana Propiedades


Ficha Diseño, Generador de grupos de comandos

Esta ficha en el Generador de grupos de comandos especifica la distribución de botones (vertical u horizontal), el espacio entre ellos y el estilo del borde.

Distribución de los botones
Especifica la distribución vertical u horizontal de los botones del grupo de comandos. También puede personalizar la ubicación de los botones de un Grupo de comandos si selecciona Modificar en el menú contextual y arrastra botones al interior del Grupo de comandos. Vuelva a modificar el Grupo de comandos haciendo clic fuera de los límites del Grupo de comandos.

Si ha personalizado la distribución de botones, no se elige Vertical ni Horizontal. Si elige Vertical u Horizontal, los botones se alinean y se pierde el modelo personalizado. Presione Cancelar para recuperar el modelo personalizado.

Espacio entre botones
Especifica el espacio entre botones. Si ha personalizado el espacio entre botones, esta opción se desactiva. Si ajusta la alineación horizontal o vertical de los botones, se activará esta opción.
Estilo del borde
Especifica un borde de una sola línea o ningún borde alrededor del grupo de comandos.

Vea también

Ficha Botones, Generador de grupos de comandos | Generador de grupos de comandos | Generador de cuadros de edición | Generador de cuadros combinados


Generador de cuadros de edición

El Generador de cuadros de edición facilita el establecimiento de propiedades de un control EditBox. Los cuadros de edición se utilizan normalmente para presentar campos Carácter o Memo largos y permiten al usuario modificar texto. Un cuadro de edición también puede mostrar texto de un archivo de texto o del portapapeles. Las propiedades para el control EditBox se establecen al seleccionar opciones en el cuadro de diálogo Generador de cuadros de edición.

Para usar el Generador de cuadros de edición

  1. Mediante la barra de herramientas Controles de formularios, coloque un control EditBox en un formulario.
  2. Seleccione el control EditBox y haga clic con el botón secundario del ratón en él y, a continuación, elija Generador en el menú contextual del Diseñador de formularios.

    Aparecerá un cuadro de diálogo apropiado para el control seleccionado.

  3. Elija las opciones que desee en el cuadro de diálogo y, a continuación, elija OK.

    Cuando se elige Aceptar, el generador se cierra y se aplica la configuración de propiedades de cada ficha.

Fichas del generador

Formato
Especifica diversas opciones de formato para el cuadro de edición.
Estilo
Especifica el efecto visual, el borde y la alineación del cuadro de edición.
Valor
Especifica un campo en que se almacenará el valor del cuadro de edición.

Vea también

Generadores | EditBox (Control) | Ficha Formato, Generador de cuadros de edición | Ficha Estilo, Generador de cuadros de edición | Ficha Valor, Generador de cuadros de edición | Ventana Propiedades


Ficha Formato, Generador de cuadros de edición

La ficha Formato del Generador de cuadros de edición especifica diversas opciones de formato para el cuadro de edición, tales como agregar barras de desplazamiento verticales y hacer el cuadro de sólo lectura.

Permitir al usuario insertar tabulaciones
Permite insertar tabulaciones en el cuadro de edición. Esto evita el desplazamiento del enfoque al siguiente control al presionar la tecla TAB. Presione CTRL + TAB para desplazarse al siguiente control. Esta opción corresponde a la propiedad AllowTabs.
Agregar barras de desplazamiento vertical
Agrega barras de desplazamiento vertical al cuadro de edición. Esta opción corresponde a la propiedad ScrollBars.
Seleccionar en la entrada
Especifica que se seleccione el texto del cuadro de edición cuando el enfoque esté en el cuadro de edición. Esto agrega el valor "K" a la propiedad Format.
Usar SET DATE actual
Agrega el valor "D" a la propiedad Format de forma que las entradas de fecha se ajustarán al SET DATE actual o al Formato de fecha de la ficha Internacional del cuadro de diálogo Opciones.
Ocultar selección
Especifica si el texto seleccionado del cuadro de edición permanece seleccionado de forma visible cuando el cuadro de edición no tiene el enfoque. Esta opción corresponde a la propiedad HideSelection.
Activar en tiempo de ejecución
Especifica si el cuadro de edición se activa o no cuando se ejecuta el formulario. Corresponde a la propiedad Enabled.
Hacer de sólo lectura
Evita que el usuario cambie el texto en el cuadro de edición. Esta opción corresponde a la propiedad ReadOnly.
Fecha europea
Agrega el valor "E" a la propiedad Format de forma que las entradas de fecha se ajusten al formato europeo de SET DATE o al Formato de fecha de la ficha Internacional del cuadro de diálogo Opciones.

Vea también

AllowTabs (Propiedad) | Generador de cuadros de edición | Enabled (Propiedad) | Format (Propiedad) | HideSelection (Propiedad) | ReadOnly (Propiedad) | ScrollBars (Propiedad) | Ficha Estilo, Generador de cuadros de edición | Ficha Valor, Generador de cuadros de edición


Ficha Estilo, Generador de cuadros de edición

La ficha Estilo del Generador de cuadros de edición especifica el efecto visual, el borde y la alineación del cuadro de edición.

Efecto especial

3D
Especifica que los bordes superior e izquierdo del cuadro combinado están resaltados y los bordes inferior y derecho están sombreados. Esta opción corresponde al valor 3D de la propiedad SpecialEffect.
Normal
Especifica que el cuadro combinado es un cuadro sin sombra en el formulario. Esta opción corresponde al valor Normal de la propiedad SpecialEffect.

Borde

Simple
Especifica una sola línea alrededor del cuadro de edición. Esta opción corresponde al valor Simple fijo de la propiedad BorderStyle.
Ninguna
Especifica que no hay ninguna línea alrededor del cuadro de edición. Esta opción corresponde al valor Ninguno de la propiedad BorderStyle.

Alineación de los caracteres

Izquierda
Especifica que el texto del cuadro de edición se alineará a la izquierda. Esta opción corresponde al valor Izquierda de la propiedad Alignment.
Derecha
Especifica que el texto del cuadro de edición se alineará a la derecha. Esta opción corresponde al valor Derecha de la propiedad Alignment.
Centro
Especifica que el texto del cuadro de edición estará centrado. Esta opción corresponde al valor Centro de la propiedad Alignment.

Vea también

Generador de cuadros de edición | Ficha Formato, Generador de cuadros de edición | Ficha Valor, Generador de cuadros de edición | Alignment (Propiedad) | BorderStyle (Propiedad) | SpecialEffect (Propiedad)


Ficha Valor, Generador de cuadros de edición

Esta ficha en el Cuadro de edición especifica un campo en el que almacenar el valor del cuadro de edición.

Nombre de campo
Especifica un campo de tabla o de vista en el que almacenar el valor del cuadro de edición. Escriba el nombre del campo o haga clic en el botón de cuadro de diálogo para mostrar el cuadro de diálogo Abrir, en el que puede seleccionar otra tabla o vista. En el Generador de cuadros de edición, haga clic en la flecha desplegable que está junto al cuadro Nombre de Campo para seleccionar un campo.

El contenido predeterminado de esta ficha está formado por todos los campos del entorno de datos. Esta opción corresponde a la propiedad ControlSource.

Para más información, vea Crear formularios.

Vea también

Generador de cuadros de edición | Ficha Formato, Generador de cuadros de edición | Cuadro de diálogo Abrir | Ficha Estilo, Generador de cuadros de edición | ControlSource (Propiedad)


Generador de formularios

El Generador de formularios facilita la adición de campos como nuevos controles a un formulario. Se agregan controles y se especifica el estilo al seleccionar opciones mostradas en el cuadro de diálogo Generador de formularios.

Para usar el Generador de formularios

  • Haga clic derecho en un formulario nuevo o existente en el Diseñador de formularios.

    –O bien–

  • Elija Formulario rápido en el menú Formulario.

    Cuando se elige Aceptar, el generador se cierra y se aplica la configuración de propiedades de cada ficha.

Fichas del generador

Seleccionar campos
Especifica los campos que se van a agregar como controles de formulario.
Estilo
Ofrece varias opciones de estilo para sus controles y la opción de agrandar el formulario si es necesario. El tamaño de formulario sólo se agrandará hasta que se ajuste al tamaño del Área de diseño máxima establecida en la ficha Formularios del cuadro de diálogo Opciones.

Los estilos son los ofrecidos por los Asistentes para formularios. Si ha creado un formulario con un asistente y después quiere agregar un nuevo control del mismo estilo, use el Generador de formularios. También puede agregar nuevos controles con un estilo diferente. El estilo elegido en el Generador de formularios no afecta a los controles existentes en un formulario. Para darles formato, use el Generador de autoformato.

Vea también

Generadores | Generador de autoformato | Ficha Seleccionar campos, Generador de formularios | Ficha Formularios, cuadro de diálogo Opciones | Ficha Estilo, Generador de formularios


Ficha Seleccionar campos, Generador de formularios

Esta ficha en el Generador de formularios especifica los campos que se agregan como controles del formulario.

Bases de datos y tablas
Presenta una lista de las bases de datos disponibles o le permite seleccionar tablas libres. Para encontrar una base de datos o una tabla, haga clic en el botón de cuadro diálogo, que muestra el cuadro de diálogo Abrir.
Lista de tablas
Muestra tablas y vistas en la base de datos seleccionada, o tablas libres.
Campos disponibles
Muestra todos los campos de la tabla o de la vista seleccionada. Seleccione los campos cuyos datos desee incluir en el formulario.
Botones de flecha
Agrega y elimina campos del cuadro Campos seleccionados.
Campos seleccionados
Muestra los campos que estarán presentes como controles en su formulario.

Vea también

Generador de formularios | Cuadro de diálogo Abrir | Ficha Estilo, Generador de formularios | Generador de cuadrículas


Ficha Estilo, Generador de formularios

La ficha Estilo del Generador de formularios ofrece varias opciones de estilo para sus controles y la opción de agrandar el formulario para alojar datos. El tamaño de formulario sólo se agrandará hasta que se ajuste al tamaño del Área de diseño máxima establecida en la ficha Formularios del cuadro de diálogo Opciones.

Estilo
Especifica el estilo de los controles de formulario, que está determinado por la clase del control. Seleccione un estilo de formulario para obtener una vista previa de la apariencia del estilo.
Casilla de verificación Ampliar el formulario según sea necesario
Especifica si el generador agranda el formulario para alojar los campos seleccionados; hasta un tamaño máximo especificado por el Área de diseño máxima del formulario, si es necesario.

Vea también

Ficha Seleccionar campos, Generador de formularios | Generador de formularios | Ficha Formularios, cuadro de diálogo Opciones | Generador de cuadros de edición


Generador de cuadrículas

El Generador de cuadrículas facilita el establecimiento de las propiedades de un control cuadrícula. El control cuadrícula permite presentar y manipular filas y columnas de datos de un formulario o una página. Las propiedades de cuadrícula se establecen al seleccionar las opciones presentadas en el cuadro de diálogo Generador de cuadrículas.

Para usar el Generador de cuadrículas

  1. Mediante la barra de herramientas Controles de formularios, coloque un control cuadrícula en un formulario.
  2. Seleccione el control cuadrícula y haga clic en él con el botón secundario del ratón y, a continuación, elija Generador en el menú contextual del Diseñador de formularios.
  3. Elija las opciones que desee en el cuadro de diálogo y, a continuación, elija OK.

    Cuando se elige Aceptar, el generador se cierra y se aplica la configuración de propiedades de cada ficha.

    Nota Antes de ejecutar el formulario, asegúrese de que ha ajustado el tamaño del control cuadrícula para presentar adecuadamente los datos.

Fichas del generador

Elementos de la cuadrícula
Especifica los campos que se van a mostrar en la cuadrícula.
Estilo
Especifica un estilo para la presentación de la cuadrícula.
Diseño
Especifica los títulos de las columnas y los tipos de controles.
Relación
Especifica relaciones entre campos de cuadrícula y campos de tabla.

Vea también

Generadores | Grid (Control) | Ficha Elementos de la cuadrícula, Generador de cuadrículas | Ficha Diseño, Generador de cuadrículas | RecordSource (Propiedad) | RecordSourceType (Propiedad) | Ficha Relación, Generador de cuadrículas | Ficha Estilo, Generador de cuadrículas


Ficha Elementos de la cuadrícula, Generador de cuadrículas

Esta ficha en el Generador de cuadrículas, especifica los campos que se van a mostrar en la cuadrícula.

Nota En el Generador de cuadrículas sólo se pueden seleccionar campos de una única tabla. Para establecer una relación entre cuadrículas debe usar el Generador de cuadrículas de forma independiente en cada cuadrícula y, a continuación, usar la ficha Relación de uno de los generadores de cuadrículas para establecer la relación.

Bases de datos y tablas Presenta las bases de datos disponibles y da la opción de seleccionar Tablas libres. Para encontrar una base de datos o una tabla, haga clic en el botón de cuadro diálogo, que muestra el cuadro de diálogo Abrir.

Lista de tablas
Muestra tablas y vistas en la base de datos seleccionada, o tablas libres.
Campos disponibles
Muestra todos los campos de la tabla seleccionada. Sólo puede seleccionar campos de una sola tabla.
Botones de flecha
Agregan y eliminan campos de la lista de Campos seleccionados.
Campos seleccionados
Muestran los campos que aparecerán en la cuadrícula. Cada campo será una columna de la cuadrícula.

Vea también

Generador de cuadrículas | Ficha Diseño, Generador de cuadrículas | Cuadro de diálogo Abrir | Ficha Relación, Generador de cuadrículas | Ficha Estilo, Generador de cuadrículas


Ficha Estilo, Generador de cuadrículas

Esta ficha en el Generador de cuadrículas especifica un estilo para la presentación de la cuadrícula.

Estilo
Especifica los estilos Profesional, Estándar, Elegante o Doble carta para la presentación de la cuadrícula. Puede optar por conservar el estilo actual.

Vea también

Generador de cuadrículas | Ficha Elementos de la cuadrícula, Generador de cuadrículas | Ficha Diseño, Generador de cuadrículas | Ficha Relación, Generador de cuadrículas


Ficha Diseño, Generador de cuadrículas

Esta ficha en el Generador de cuadrículas especifica los títulos de las columnas y los tipos de controles que se puede agregar a la cuadrícula.

Nota Para cambiar el encabezado de una columna, primero debe seleccionarla.
Título
Especifica el título para la columna seleccionada. Escriba un título en el cuadro. Si los deja como están, los nombres de los campos serán los encabezados de las columnas.
Tipo de control
Especifica el tipo de control para agregar a la columna seleccionada. Los cuadros de texto o de edición están disponibles para datos de tipo carácter, los cuadros de texto o las casillas de verificación están disponibles para datos de tipo lógico, y los cuadros de texto o los controles numéricos están disponibles para datos numéricos.
Presentación de cuadrícula
Muestra las columnas de la cuadrícula de la forma especificada actualmente. La presentación se actualiza automáticamente de acuerdo con las selecciones de Título y Tipo de control. Se puede establecer el ancho de las columnas arrastrando el borde derecho del encabezado.

Vea también

Generador de cuadrículas | Ficha Elementos de la cuadrícula, Generador de cuadrículas | Ficha Estilo, Generador de cuadrículas | Ficha Relación, Generador de cuadrículas


Ficha Relación, Generador de cuadrículas

Esta ficha en el Generador de cuadrículas especifica una relación entre campos de cuadrícula y campos de tabla.

Campo clave de la tabla primaria
Especifica el campo clave de una tabla que controla la relación. Esta opción corresponde a la propiedad LinkMaster. Para buscar una tabla, haga clic en el botón de cuadro de diálogo, que muestra el cuadro de diálogo Abrir.
Índice relacionado de la tabla secundaria
Especifica el nombre de la etiqueta de índice de la tabla controlada de la relación. Esta opción corresponde a la propiedad ChildOrder.

Vea también

ChildOrder (Propiedad) | Generador de cuadrículas | Ficha Elementos de la cuadrícula, Generador de cuadrículas | Ficha Estilo, Generador de cuadrículas | Ficha Diseño, Generador de cuadrículas | LinkMaster (Propiedad)


Generador de cuadros de lista

El Generador de cuadros de lista facilita el establecimiento de propiedades de un control ListBox. Los cuadros de lista proporcionan al usuario una lista desplazable que contiene varias opciones o trozos de información. En un cuadro de lista, pueden estar visibles varios elementos en todo momento. Las propiedades del cuadro de lista se establecen al seleccionar opciones presentadas en el cuadro del diálogo Generador de cuadros de lista.

Para usar el Generador de cuadros de lista

  1. Mediante la barra de herramientas Controles de formularios, coloque un control ListBox en un formulario.
  2. Seleccione el control ListBox y haga clic con el botón secundario del ratón en él y, a continuación, elija Generador en el menú contextual del Diseñador de formularios.
  3. Elija las opciones que desee en el cuadro de diálogo y, a continuación, elija OK.

    Cuando se elige Aceptar, el generador se cierra y se aplica la configuración de propiedades de cada ficha.

Fichas del generador

Elementos de la lista
Especifica elementos para llenar el cuadro de lista y los orígenes de dichos datos.
Estilo
Especifica el estilo (3D o normal), el número de filas y activa o desactiva la búsqueda incremental.
Diseño
Controla el ancho de las columnas y la presentación.
Valor
Especifica de qué columna se devuelven valores y en qué campo se almacenan.

Vea también

Generadores | Ficha Diseño, Generador de cuadros de lista | ListBox (Control) | Ficha Elementos de la lista, Generador de cuadros de lista | Ventana Propiedades | Ficha Estilo, Generador de cuadros de lista | Ficha Valor, Generador de cuadros de lista


Ficha Elementos de la lista, Generador de cuadros de lista

La ficha Elementos de la lista del Generador de cuadros de lista especifica los elementos para rellenar el cuadro de lista.

En el cuadro Rellenar la lista con, puede especificar el tipo de datos con los cuales se rellena la lista. Esta selección determina cuales opciones aparecen en esta ficha. Las opciones son: Campos de una tabla o una vista, Datos introducidos manualmente y Valores de una matriz.

Campos de una tabla o una vista

Bases de datos y tablas
Presenta las bases de datos disponibles y la opción de seleccionar Tablas libres. Para encontrar una base de datos o una tabla, haga clic en el botón de cuadro diálogo, que muestra el cuadro de diálogo Abrir.
Lista de tablas
Muestra tablas y vistas en la base de datos seleccionada, o tablas libres.
Campos disponibles
Muestra todos los campos de la tabla o de la vista seleccionada. Seleccione los campos cuyos datos quiere en el cuadro de lista.
Botones de flecha
Agrega y quita campos a la lista Campos seleccionados.
Campos seleccionados
Muestra los campos que se van a usar para rellenar la lista. Esta opción corresponde a la propiedad RowSource.
Nota Debe elegir esta opción para ocultar la columna de la ficha Diseño.

Datos introducidos manualmente

Columnas
Especifica el número de columnas de la lista. Esta opción corresponde a la propiedad ColumnCount.
Cuadrícula de columnas
Muestra las columnas en las que se introducen los datos. Escriba los datos en las celdas de la cuadrícula. Puede ajustar el tamaño de las columnas si arrastra con el ratón las líneas entre los encabezados de columna. Use las teclas de flecha para moverse entre las columnas. Esta opción corresponde a la propiedad RowSource.

Valores de una matriz

Nombre de la matriz
Especifica el nombre de una matriz. Esta opción corresponde a la propiedad RowSource.
Toda la matriz
Especifica que toda la matriz va a rellenar la lista.
Intervalo de la matriz
Especifica que una parte de la matriz va a rellenar la lista.
Intervalo de columnas y filas
Especifica la primera y la última columna, y la primera y la última fila, como intervalo de la matriz. Estas opciones están disponibles cuando se selecciona Intervalo de la matriz. Esta opción corresponde a las propiedades FirstElement, NumberOfElements y ColumnCount.

Para obtener más información, vea Crear formularios.

Vea también

Ficha Diseño, Generador de cuadros de lista | Generador de cuadros de lista | Cuadro de diálogo Abrir | RowSource (Propiedad) | RowSourceType (Propiedad) | Ficha Estilo, Generador de cuadros de lista | Ficha Valor, Generador de cuadros de lista


Ficha Estilo, Generador de cuadros de lista

Esta ficha en el Generador de cuadros de lista especifica el estilo, número de artículos a mostrar y la búsqueda incremental.

Tridimensional
Especifica una apariencia tridimensional para el cuadro de lista. Esta opción corresponde a la propiedad SpecialEffect.
Normal
Especifica una apariencia normal para el cuadro de lista. Esta opción corresponde a la propiedad SpecialEffect.
Mostrar filas
Establece la propiedad Height del cuadro de lista de forma que sólo se muestra un número especifico de filas por vez.
Sí, activar la búsqueda incremental
Especifica si el control intenta buscar una coincidencia con un elemento de la lista a medida que el usuario escribe cada letra. Esta opción corresponde a establecer la propiedad IncrementalSearch en Verdadero (.T.)
No, desactivar la búsqueda incremental
Desactiva la búsqueda incremental. Esta opción corresponde a establecer la propiedad IncrementalSearch en Falso (.F.)

Vea también

Height (Propiedad) | IncrementalSearch (Propiedad) | Ficha Diseño, Generador de cuadros de lista | Generador de cuadros de lista | Ficha Elementos de la lista, Generador de cuadros de lista | SpecialEffect (Propiedad) | Ficha Valor, Generador de cuadros de lista

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Ficha Diseño, Generador de cuadros de lista

Esta ficha en el Generador de cuadros de lista controla el ancho y la presentación de las columnas.

Ajustar el ancho del cuadro de lista para mostrar todas las columnas
Especifica que se mostrarán todas las columnas y el cuadro de lista ajustará su tamaño automáticamente. Esta opción corresponde a la propiedad Width.
Cuadrícula de columnas
Muestra las columnas definidas en la ficha Elementos de la lista. Puede ajustar el ancho de la columna si arrastra el borde derecho de un encabezado de columna con el ratón.

Puede ocultar una columna haciendo doble clic en el encabezado de la misma si ha elegido la opción “Llenar la lista con campos de una tabla o una vista” de la ficha Elementos de la lista. Esta opción corresponde a la propiedad ColumnWidths.

Vea también

ColumnWidths (Propiedad) | Generador de cuadros de lista | Ficha Elementos de la lista, Generador de cuadros de lista | Ficha Estilo, Generador de cuadros de lista | Ficha Valor, Generador de cuadros de lista | Width (Propiedad)


Ficha Valor, Generador de cuadros de lista

Esta ficha en el Generador de cuadros de lista especifica de dónde se obtendrán los valores devueltos y dónde se deben almacenar.

Devolver el valor de
Especifica la columna o campo de la que se obtiene un valor cuando el usuario selecciona un elemento de cuadro de lista. Esta opción corresponde a la propiedad BoundColumn.
Nombre de campo
Especifica un campo de tabla o de vista en el que se almacena el valor especificado en el cuadro Devolver el valor de. De forma predeterminada, la lista incluye campos de una tabla o vista seleccionada en la ficha Elementos de la lista. Elija el botón de cuadro de diálogo para mostrar el cuadro de diálogo Abrir y así poder seleccionar otro archivo. Esta opción corresponde a la propiedad ControlSource.

Vea también

BoundColumn (Propiedad) | ControlSource (Propiedad) | Ficha Diseño, Generador de cuadros de lista | Generador de cuadros de lista | Ficha Elementos de la lista, Generador de cuadros de lista | Cuadro de diálogo Abrir | Ficha Estilo, Generador de cuadros de lista

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Generador de grupos de opciones

El Generador de grupos de opciones facilita el establecimiento de propiedades de un control OptionGroup. Los botones de opción permiten al usuario elegir una opción entre varias opciones mutuamente excluyentes. Las propiedades se establecen al seleccionar opciones mostradas en el cuadro de diálogo Generador de grupos de opciones.

Para usar el Generador de grupos de opciones

  1. Mediante la barra de herramientas Controles de formularios, coloque un control Grupo de opciones en un formulario.
  2. Seleccione el control OptionGroup y haga clic en él con el botón secundario del ratón y, a continuación, elija Generador en el menú contextual del Diseñador de formularios.
  3. Elija las opciones que desee en el cuadro de diálogo y, a continuación, elija Aceptar.

    Cuando se elige Aceptar, el generador se cierra y se aplica la configuración de propiedades de cada ficha.

Fichas del generador

Botones
Especifica el número de botones, títulos y gráficos.
Diseño
Especifica la distribución de los botones de opción (vertical u horizontal), el espacio entre ellos y el estilo del borde.
Valor
Especifica un campo de tabla o de vista en el que se almacenará el valor del grupo de opciones.

Vea también

Generadores | Ficha Botones, Generador de grupos de opciones | Ficha Diseño, Generador de grupos de opciones | OptionGroup (Control) | Ficha Valor, Generador de grupos de opciones


Ficha Botones, Generador de grupos de opciones

Esta ficha, en el Generador de Grupo de Botones de comando, especifica el número de botones, títulos y gráficos.

Número de botones
Especifica el número de botones que tendrá el grupo de opciones. Esta opción corresponde a la propiedad ButtonCount.
Estándar
Especifica botones de opción estándar. La columna Gráfico no se activa cuando se selecciona Estándar.
Gráfico
Especifica botones de opción rectangulares. Se puede especificar título y gráfico en las columnas cuando se ha seleccionado Gráfico.
Columna Título
Especifica el título que hay que mostrar en el próximo botón. Escriba el título en el cuadro o déjelo en blanco si lo prefiere sin un título. Esta opción corresponde a la propiedad Caption.
Columna Gráfico
Especifica la ruta de acceso y el nombre de archivo del mapa de bits que hay que mostrar en el botón. Escriba la ruta de acceso y el nombre de archivo en el cuadro, o haga clic en el botón para mostrar el cuadro de diálogo Abrir y poder seleccionar un archivo. Esta opción corresponde a la propiedad Picture del botón de opción.
Nota Los botones de Opción pueden tener tanto título como gráfico. También puede especificar gráficos para que se muestren cuando el botón está desactivado y cuando está presionado, pero debe hacerlo mediante programación o en la ventana Propiedades. Para obtener más detalles, vea las propiedades DisabledPicture y DownPicture.

Vea también

ButtonCount | Caption (Propiedad) | DisabledPicture (Propiedad) | DownPicture (Propiedad) | Ficha Diseño, Generador de grupos de opciones | Generador de grupos de opciones | Picture (Propiedad) | Ventana Propiedades | Ficha Valor, Generador de grupos de opciones

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Ficha Diseño, Generador de grupos de opciones

Esta ficha en el Generador de grupos de opciones especifica la distribución de los botones (vertical u horizontal), el espacio entre ellos y el estilo del borde.

Distribución de los botones
Especifica la distribución vertical u horizontal de los botones del grupo de opciones al ajustar la propiedad Width.
Espacio entre botones
Especifica el espacio entre botones al ajustar la propiedad Width o la propiedad Height .
Estilo del borde
Especifica un borde de una sola línea alrededor del grupo de opciones, o ningún borde. Esta opción corresponde a la propiedad BorderStyle.

Vea también

BorderStyle (Propiedad) | Ficha Botones, Generador de grupos de opciones | Generador de grupos de opciones | Ficha Valor, Generador de grupos de opciones


Ficha Valor, Generador de grupos de opciones

Esta ficha en el Generador de grupos de opciones especifica un campo de tabla o de vista en el que se almacenará el valor del grupo de opciones.

Nombre de campo
Especifica un campo de tabla o de vista en el que se almacenará el valor del grupo de opciones. De forma predeterminada, la lista incluye campos de una tabla. Elija el botón de cuadro de diálogo para mostrar el cuadro de diálogo Abrir y así poder seleccionar otro archivo. Esta opción corresponde a la propiedad ControlSource.

Vea también

Ficha Botones, Generador de grupos de opciones | ControlSource (Propiedad) | Ficha Diseño, Generador de grupos de opciones | Cuadro de diálogo Abrir | Generador de grupos de opciones


Generador de integridad referencial

El Generador de integridad referencial (IR) le ayuda a asegurar la integridad referencial al establecer desencadenadores para controlar como se insertan, actualizan o eliminan registros de tablas relacionadas.

El Generador IR se muestra cuando:

  • Hace doble clic en una línea de relación entre dos tablas del Diseñador de bases de datos y elige el botón Integridad referencial del cuadro de diálogo Modificar relación.
  • Elige Modificar integridad referencial en el menú contextual del Diseñador de bases de datos.
  • Elige Modificar integridad referencial en el menú Base de datos.

Fichas del generador

Reglas para la actualización
Especifica reglas que se aplicarán cuando se modifique el valor clave de la tabla primaria.
Reglas para la eliminación
Especifica las reglas que se aplicarán cuando se elimine un registro de la tabla primaria.
Reglas para la inserción
Especifica las reglas que se aplicarán cuando se inserte un nuevo registro o cuando se actualice un registro existente en la tabla secundaria.

Para obtener más información, vea Desarrollar bases de datos, Uso de desencadenadores y Trabajar con tablas.

Vea también

Generadores | Diseñador de bases de datos | Cuadro de diálogo Modificar relación | Ficha Reglas para la eliminación | Ficha Reglas para la inserción | Ficha Reglas para la actualización | Generar integridad referencial


Ficha Reglas para la actualización, Generador IR

Esta ficha en el generador de Integridad Referencial (RI) especifica las reglas que se aplicarán cuando se modifique el valor clave de la tabla primaria.

Cascada
Especifica que las modificaciones de los campos de las claves Principal o Candidato de la tabla primaria se reflejan en tablas secundarias relacionadas. Si selecciona esta opción, siempre que cambien los campos de la tabla primaria, Microsoft Visual FoxPro cambia automáticamente los valores correspondientes en todos los registros de tablas secundarias relacionadas.
Restringir
Impide la modificación de los valores de campos de la clave Principal o Candidato de la tabla primaria de forma que no haya registros huérfanos en la tabla secundaria.
Ignorar
Le permite actualizar registros de la tabla primaria, incluso si hay registros relacionados en la tabla secundaria.
Cuadrícula de integridad referencial
Tabla primaria muestra el nombre de la tabla de la relación de base de datos que contiene el índice principal o candidato.

Tabla secundaria muestra el nombre de la tabla secundaria de la relación de base de datos.

Update muestra las reglas de actualización para la integridad referencial de la relación. Los valores posibles son Cascada, Restringir o Ignorar. Puede cambiar la configuración si selecciona el campo, que presentará una lista desplegable con las opciones posibles.

Eliminar muestra las reglas de eliminación para la integridad referencial de la relación. Los valores posibles son Cascada, Restringir o Ignorar. Puede cambiar la configuración si selecciona el campo, que presentará una lista desplegable con las opciones posibles.

Insertar muestra las reglas de inserción para la integridad referencial de la relación. Los valores posibles son Cascada, Restringir o Ignorar. Puede cambiar la configuración si selecciona el campo, que presentará una lista desplegable con las opciones posibles.

Etiqueta primaria La columna de cuadrícula muestra el nombre de etiqueta del índice Principal o Candidato de la tabla primaria.

Etiqueta secundaria La columna de cuadrícula muestra el nombre de etiqueta del índice de la tabla secundaria.

Vea también

Generador de integridad referencial | Ficha Reglas para la eliminación | Ficha Reglas para la inserción


Ficha Reglas para la eliminación, Generador IR

La ficha Reglas para la eliminación del Generador de integridad referencial (RI) especifica las reglas que se aplicarán cuando se elimine un registro de la tabla primaria.

Cascada
Especifica que las eliminaciones de la tabla primaria se reflejan en las tablas secundarias relacionadas. Si elige como relación Eliminar en cascada, siempre que se eliminen registros en la tabla primaria, se eliminarán automáticamente registros de la tabla secundaria.
Restringir
Impide la eliminación de registros en la tabla primaria que tiene registros relacionados en la tabla secundaria. Si selecciona como relación Restringir eliminación, siempre que intente eliminar registros en la tabla primaria se generará un error si hay registros relacionados en la tabla secundaria.
Ignorar
Le permite eliminar registros en la tabla primaria incluso si hay registros relacionados en la tabla secundaria.
Cuadrícula de integridad referencial
Tabla primaria muestra el nombre de la tabla de la relación de base de datos que contiene el índice principal o candidato.

Tabla secundaria muestra el nombre de la tabla secundaria de la relación de base de datos.

Actualizar muestra las reglas de actualización para la integridad referencial de la relación. Los valores posibles son Cascada, Restringir o Ignorar. Puede cambiar la configuración si selecciona el campo, que presentará una lista desplegable con las opciones posibles.

Eliminar muestra las reglas de eliminación para la integridad referencial de la relación. Los valores posibles son Cascada, Restringir o Ignorar. Puede cambiar la configuración si selecciona el campo, que presentará una lista desplegable con las opciones posibles.

Insertar muestra las reglas de inserción para la integridad referencial de la relación. Los valores posibles son Cascada, Restringir o Ignorar. Puede cambiar la configuración si selecciona el campo, que presentará una lista desplegable con las opciones posibles.

Etiqueta primaria la columna de cuadrícula muestra el nombre de etiqueta del índice Principal o Candidato de la tabla primaria.

Etiqueta secundaria la columna de cuadrícula muestra el nombre de etiqueta del índice de la tabla secundaria.

Vea también

Generador de integridad referencial | Ficha Reglas para la inserción | Ficha Reglas para la actualización


Ficha Reglas para la inserción, Generador IR

La ficha Reglas para la inserción del Generador de integridad referencial especifica reglas que se aplican cuando se inserta un nuevo registro o cuando se actualiza un registro existente en la tabla secundaria.

Restringir
Impide que se agreguen registros a la tabla secundaria para los que no hay registros coincidentes en la tabla primaria. Si selecciona como relación Restringir inserción, al intentar agregar registros a la tabla secundaria se generará un error si no hay un registro primario coincidente.
Ignorar
Le permite insertar registros en la tabla secundaria independientemente de si hay o no un registro coincidente en la tabla primaria.
Cuadrícula de integridad referencial
Tabla primaria muestra el nombre de la tabla de la relación de base de datos que contiene el índice principal o candidato.

Tabla secundaria muestra el nombre de la tabla secundaria de la relación de base de datos.

Actualizar muestra las reglas de actualización para la integridad referencial de la relación. Los valores posibles son Cascada, Restringir o Ignorar. Puede cambiar la configuración si selecciona el campo, que presentará una lista desplegable con las opciones posibles.

Eliminar muestra las reglas de eliminación para la integridad referencial de la relación. Los valores posibles son Cascada, Restringir o Ignorar. Puede cambiar la configuración si selecciona el campo, que presentará una lista desplegable con las opciones posibles.

Insertar muestra las reglas de inserción para la integridad referencial de la relación. Los valores posibles son Cascada, Restringir o Ignorar. Puede cambiar la configuración si selecciona el campo, que presentará una lista desplegable con las opciones posibles.

Etiqueta primaria la columna de cuadrícula muestra el nombre de etiqueta del índice Principal o Candidato de la tabla primaria.

Etiqueta secundaria la columna de cuadrícula muestra el nombre de etiqueta del índice de la tabla secundaria.

Vea también

Generador de integridad referencial | Ficha Reglas para la inserción | Ficha Reglas para la actualización


Generador de cuadros de texto

El Generador de cuadros de texto facilíta el establecimiento de propiedades para un control TextBox. El cuadro de texto es el control básico que permite a los usuarios agregar o modificar datos almacenados en un campo de tipo Carácter, Numérico o Fecha de una tabla. Las propiedades se establecen al seleccionar las opciones mostradas en el cuadro de diálogo Generador de cuadros de texto.

Para usar el Generador de cuadros de texto

  1. Mediante la barra de herramientas Controles de formularios, coloque un control TextBox en un formulario.
  2. Seleccione el control TextBox y haga clic con el botón secundario del ratón en él y, a continuación, elija Generador en el menú contextual del Diseñador de formularios.
  3. Elija las opciones que desee en el cuadro de diálogo y, a continuación, elija OK.

    Cuando se elige Aceptar, el generador se cierra y se aplica la configuración de propiedades de cada ficha.

Fichas del generador

Formato
Especifica diversas opciones de formato para el cuadro de texto y el tipo de máscara de entrada.
Estilo
Especifica el efecto visual, borde y alineación de caracteres del cuadro de texto.
Valor
Especifica un campo en el que se almacenará el valor del cuadro de texto.

Vea también

Generadores | Ficha Formato, Generador de cuadros de texto | Ficha Estilo, Generador de cuadros de texto | TextBox (Control) | Ficha Valor, Generador de cuadros de texto


Ficha Formato, Generador de cuadros de texto

La ficha Formato del Generador de cuadros de texto especifica distintas opciones de formato para el cuadro de texto y el tipo de máscara de entrada.

Tipo de datos
Especifica un tipo de datos Carácter, Fecha, Lógico o Numérico para el cuadro de texto. Si elige un valor de la ficha Valor, asegúrese de que es del mismo tipo de datos que el valor especificado aquí.
Activar en tiempo de ejecución
Especifica que el cuadro de texto se activa cuando se ejecuta el formulario. Esta opción está disponible para todos los tipos de datos y está activada de forma predeterminada. Corresponde a la propiedad Enabled.
Sólo caracteres alfabéticos
Especifica que sólo se permitirán caracteres alfabéticos en el cuadro de texto (ni números ni símbolos). Esta opción sólo está disponible para el tipo de datos Carácter. Corresponde al valor “A” de la propiedad Format.
Hacer de sólo lectura
Impide al usuario cambiar el texto del cuadro de texto. Esta opción corresponde a la propiedad ReadOnly y está disponible para todos los tipos de datos.
Seleccionar en la entrada
Especifica que el texto del cuadro de texto se selecciona cuando el enfoque está en el cuadro de texto. Esta opción sólo está disponible para el tipo de datos Carácter. Corresponde al valor “K” de la propiedad Format.
Ocultar selección
Especifica si el texto seleccionado en el cuadro de texto permanece visible cuando el cuadro de texto no tiene el enfoque. Esta opción corresponde a la propiedad HideSelection y está disponible para todos los tipos de datos.
Mostrar ceros iniciales
Especifica que se muestran los ceros a la izquierda de la coma decimal. Sólo está disponible para el tipo de datos Numéricos. Esta opción corresponde al valor “L” de la propiedad Format.
Usar SET DATE actual
Agrega el valor “D” a la propiedad Format de forma que las entradas de datos se ajustarán al valor de SET DATE actual o al Formato de fecha de la ficha Regional del cuadro de diálogo Opciones. Esta opción aparece cuando selecciona Fecha en el cuadro desplegable Tipo de datos.
Fecha europea
Agrega el valor “E” a la propiedad Format de forma que las entradas de datos se ajusten al formato europeo de SET DATE o al Formato de fecha de la ficha Regional del cuadro de diálogo Opciones. Esta opción aparece cuando selecciona Fecha en el cuadro desplegable Tipo de datos.
Input Mask
Especifica el formato de entrada del usuario para campos de tipo Numérico, Carácter y Lógico. Hay varias opciones disponibles en la lista desplegable; un ejemplo de la máscara de entrada seleccionada aparece a la derecha de la lista desplegable. Por ejemplo, una máscara de entrada para un tipo de datos Numérico es el formato de números de teléfono de Estados Unidos:
(###) ###-####.

Vea también

Enabled (Propiedad) | Format (Propiedad) | HideSelection (Propiedad) | Input Mask (Propiedad) | ReadOnly (Propiedad) | Ficha Estilo, Generador de cuadros de texto | Generador de cuadros de texto | Ficha Valor, Generador de cuadros de texto


Ficha Estilo, Generador de cuadros de texto

La ficha Estilo del Generador de cuadros de texto especifica el efecto visual, el borde y la alineación de caracteres del cuadro de texto.

Efecto visual

3D
Especifica la apariencia tridimensional para el cuadro de texto. Esta opción corresponde al valor 3D de la propiedad SpecialEffect.
Normal
Especifica que el cuadro de texto es un cuadro de texto sin sombreado en el formulario. Esta opción corresponde al valor Normal de la propiedad SpecialEffect.

Borde

Simple
Especifica una sola línea alrededor del cuadro de texto. Esta opción corresponde al valor Simple fijo de la propiedad BorderStyle.
Ninguna
Especifica que no hay ninguna línea alrededor del cuadro de texto. Esta opción corresponde al valor Ninguno de la propiedad BorderStyle.

Alineación de caracteres

Izquierda
Especifica que el texto del cuadro de texto se alineará a la izquierda. Esta opción corresponde al valor Izquierda de la propiedad Alignment.
Derecha
Especifica que el texto del cuadro de texto se alineará a la derecha. Esta opción corresponde al valor Derecha de la propiedad Alignment.
Centro
Especifica que el texto del cuadro de texto estará centrado. Esta opción corresponde al valor Centro de la propiedad Alignment.
Automático
Especifica que el texto del cuadro de texto se alineará de acuerdo con el tipo de datos del origen del control. Esta opción corresponde al valor Automático (predeterminado) de la propiedad Alignment.
Ajustar al contenido del texto
Ajusta automáticamente el tamaño del cuadro de texto. Si se especifica una máscara de entrada, se usa la configuración de la máscara de entrada para ajustar el tamaño del cuadro de texto. Si no se especifica, se usa la longitud de campo de la propiedad ControlSource para ajustar el tamaño del cuadro de texto.
Nota Si ha especificado una máscara de entrada en la ficha Formato del Generador de cuadros de texto, el cuadro de texto se alargará para ajustarse a la longitud de la máscara de entrada. Si no ha especificado una máscara de entrada, el cuadro de texto se alargará para ajustarse a la longitud del campo.

Vea también

BorderStyle (Propiedad) | ControlSource (Propiedad) | Ficha Formato, Generador de cuadros de texto | SpecialEffect (Propiedad) | Generador de cuadros de texto | Ficha Valor, Generador de cuadros de texto


Ficha Valor, Generador de cuadros de texto

Esta ficha en el Generador de cuadros de texto, especifica un campo en el cual se almacenará el valor del cuadro de texto.

Nombre de campo
Especifica un campo de una tabla o vista en el cual almacenar el valor del cuadro de texto. Seleccione el botón del diálogo para mostrar el cuadro de diálogo Abrir para elegir un archivo. Esta opción corresponde a la propiedad ControlSource.

Vea también

ControlSource (Propiedad) | Ficha Formato, Generador de cuadros de texto | Cuadro de diálogo Abrir | Ficha Estilo, Generador de cuadros de texto | Generador de cuadros de texto


Generador de Servicios Web XML

Posibilita enlazar un Servicio Web XML a un formulario de Visual FoxPro o a un objeto, como un cursorAdapter del entorno de datos del formulario, sin necesidad de escribir código.

Se puede abrir el Generador de Servicios Web XML desde el diseñador de formularios o desde el diseñador de clases.

Para abrir el Generador de Servicios Web XML

  1. Crear un nuevo formulario o abrir uno existente.
  2. Desde el Menú Herramientas, seleccionar Caja de Herramientas.
  3. Desde Mis Servicios Web XML de la Caja de Herramientas, arrastrar el control Generic Handler o un Servicio Web XML registrado sobre el formulario.

También se puede abrir el generador para un Servicio Web XML existente, registrándolo en la Caja de Herramientas, arrastrándolo desde la Caja de Herramientas a un formulario, pulsando el botón derecho del ratón en el servicio Web XML y en el menú contextual, seleccionar 'Generador'.

Nota Del mismo modo que otros generadores de Visual FoxPro, es posible utilizar el generador de Servicios Web XML para modificar de nuevo el Servicio Web XML. El Generador no solo configura propiedades de un control, sino que escribe información en el método SetupOperations.

Fichas del Generador

Ficha Servicios, Generador de Servicios Web XML
Especifica el Servicio Web XML que se utilizará en el formulario o la clase.
Generador de Servicios Web XML. Ficha Operaciones
Especifica las operaciones del Servicio Web XML que se utilizarán y sus enlaces con los controles u objetos del formulario o la clase.

Ver También

Generadores | Accediendo a servicios Web XML

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


Ficha Servicios, Generador de Servicios Web XML

Especifica el servicio Web XML a ser usado en su aplicación. Puede ver también las operaciones o llamadas a métodos, disponibles para el servicio Web XML.

Seleccionar un servicio Web XML
Especifica el servicio Web XML que quiere vincular a controles u objetos en el formulario y despliega otros servicios Web XML que están disponibles en la Caja de Herramientas.
Actualizar
Actualiza el servicio Web XML seleccionado de forma a que el mismo pueda ser registrado apropiadamente en su PC. Esa opción solo está disponible cuando se listan todos los servicios Web XML registrados.
Agregar un nuevo servicio Web XML
Lo hace posible registrar y agregar un nuevo servicio Web XML. Esa opción solo está disponible cuando se listan todos los servicios Web XML registrados.
Cambiar servicio Web XML
Lista todos los servicios Web XML registrados. Esta opción aparece si un servicio Web XML está seleccionado, cuando se abre el generador.
Nota Al cambiar el servicio Web XML se remueven todas las configuraciones de la ficha Operaciones, para ese servicio Web XML.
Ver Operaciones
Despliega las operaciones, o llamadas a métodos, disponibles para el servicio Web XML seleccionado.
Nota La operación seleccionada aparece en el recuadro Ver operaciones solo para propósitos informativos. Puede establecer vínculos para la operación en la ficha Operaciones. Para más información, vea Ficha Operaciones, Generador de Servicio Web XML.
Ver descripción del servicio (WSDL)
Despliega la descripción WSDL para el servicio Web XML.

Vea también

Generador de Servicios Web XML | Ficha Operaciones, Generador de Servicio Web XML


Ficha Operaciones, Generador Sevicios Web XML

Especifica las operaciones de Servicios Web XML o llamadas a métodos, que desea utilizar en sus formularios o clases. Puede suministrar un parámetro de información para las llamadas de una operación en progreso y especificar el control, o cliente con el que desea enlazar los resultados de la llamada a la operación.

Nota Las configuraciones para las fichas Operaciones y Clientes son guardadas en el método personalizado SetupOperations .
Operaciones
Lista todas las operaciones registradas para el Servicio Web XML. Puede llamar estas operaciones automáticamente cuando los formularios o clases instanciadas o programáticamente cuando lo necesite. Puede asociar cada operación con múltiples clientes.
  • Añadir Muestra un cuadro de diálogo con opciones para añadir una nueva operación. Para más información, vea Servicios Web XML - Cuadro de diálogo - Detalles de la operación.
  • Modificar Muestra un cuadro de diálogo con opciones para modificar la operación seleccionada. Para más información, vea Servicios Web XML - Cuadro de diálogo - Detalles de la operación.
  • Quitar Quitar la operación seleccionada. Si quita una operación, aparecerá una pregunta sobre si quitar los clientes asociados a esa operación.
Clientes
Lista todos los clientes registrados para la operación seleccionada. Los clientes son controles u objetos en un formulario o una clase que utilice la operación Servicio Web XML. Puede especificar cuando ocurre un enlace entre la operación y el cliente y qué propiedades del control resultados de la operación son asignadas. Para Servicios Web XML que devuelven ADO.NET DataSets, puede además especificar tipo de información compleja tal como configuración de tablas o campos.
  • Añadir Muestra un cuadro de diálogo con opciones para añadir de un nuevo cliente. Para más información, vea Servicios Web XML - Cuadro de diálogo Detalle de cliente.
  • Modificar Muestra un cuadro de diálogo con opciones para la modificación del cliente seleccionado. Para más información, vea Servicios Web XML - Cuadro de diálogo Detalle de cliente.
  • Quitar Quita el cliente seleccionado.

Vea también

Generador de Servicios Web XML | Ficha Servicios, Generador de Servicios Web XML


Diseñadores

Los diseñadores facilitan el diseño visual de ventanas, cuadros de diálogo y componentes de su aplicación.

En esta sección

Diseñador de clases
Utilice el Diseñador de clases para crear y modificar clases visualmente.
Diseñador de conexiones
Utilice el Diseñador 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.
Diseñador de entorno de datos
Utilice el Diseñador de entornos de datos para crear y modificar visualmente el entorno de datos de formularios, conjuntos de formularios e informes.
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.
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.
Diseñador de etiquetas
Utilice el Diseñador de etiquetas para crear y modificar etiquetas. Cuando la ventana del Diseñador de etiquetas está activa, Microsoft Visual FoxPro muestra el menú Informe y la barra de herramientas Controles de informes.
Diseñador de menús y menús contextuales
Utilice el Diseñador de menús y el Diseñador de menús contextuales para crear menús, elementos de menú, submenús de elementos de menú, líneas que separen grupos de elementos de menú relacionados, etc.
Diseñador de consultas y de vistas
Utilice el Diseñador de consultas y el Diseñador de vistas para crear y modificar consultas y vistas. Cuando se activa el Diseñador de consultas o el Diseñador de vistas, Microsoft Visual FoxPro muestra el menú Consulta y la barra de herramientas Consulta o la barra de herramientas Diseñador de vistas.
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, Microsoft Visual FoxPro muestra el menú Informe y la barra de herramientas Controles de informes.
Diseñador de tablas
Utilice el Diseñador de tablas para crear y modificar tablas de base de datos, tablas libres, campos e índices.

Secciones relacionadas

Referencia de interfaz de usuario
Explica las opciones que aparecen en diversos cuadros de diálogo, ventanas y otras interfaces de usuario. Normalmente estos tipos de temas aparecen cuando se presiona F1 en un cuadro de diálogo o en una ventana.
Desarrollar aplicaciones Visual FoxPro
Incluye información conceptual acerca de cómo desarrollar aplicaciones Visual FoxPro, instrucciones para crear bases de datos y la interfaz de usuario y otras tareas necesarias para crear aplicaciones Visual FoxPro.
Programar en Visual FoxPro
Visual FoxPro es una eficaz herramienta de administración de datos, pero además podrá beneficiarse de toda su eficacia para crear aplicaciones. Comprender las técnicas de programación orientada a objetos y el modelo controlado por eventos puede aumentar su productividad como programador.
Referencia
Incluye temas acerca de las herramientas de productividad además de los controles, los objetos, las propiedades, los métodos, los eventos, las instrucciones, las funciones y las constantes disponibles.
Programas de utilidad
Estas herramientas se ofrecen junto con Microsoft Visual FoxPro para acelerar el proceso de programación de la aplicación.


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, Microsoft Visual FoxPro muestra el menú Clase. El menú Ver le permite abrir herramientas complementarias de diseño de clases, como la ventana Propiedades, la barra de herramientas Controles de formularios y la barra de herramientas Diseño.

Las clases se almacenan en archivos de biblioteca de clases (.vcx). Para modificar más de una clase, debe abrir múltiples Diseñadores de clases al mismo tiempo.

Puede guardar clases presionando CTRL+E mientras esté en la ventana modificar código. Cuando reabre la clase, la ventana modificar código se reabre en la misma ubicación en el código.

Para obtener más información acerca del diseño de clases, vea Programación orientada a objetos y los temas Crear clases y Guardar formularios.

La ventana Diseñador de clases consiste de la ventana Clase, la cual 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 contenga tipos de barras de herramientas.

Vea también

Ventana Sesión de datos | Diseñador de formularios | PageFrame (Control) | Diseñador de conexiones | Diseñador de bases de datos | Diseñador de entorno de datos


Diseñador de conexiones

Utilice el Diseñador 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 la creación de conexiones, vea "Definir una conexión" en Acceder a datos remotos.

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 orígenes de datos ODBC instalados.
  • Id. de usuario Le permite escribir un nombre de usuario o Id. si el origen de datos requiere uno.
  • Contraseña Le permite escribir 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 escribe la cadena de conexión. Al elegir el botón de cuadro de diálogo aparece el cuadro de diálogo Seleccionar conexión u origen de datos, que permite seleccionar un origen de datos de un archivo o un equipo existente.
Comprobar conexión
Le permite comprobar la conexión para la que ha escrito 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 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 siempre debe pedir información al usuario con el cuadro de diálogo Id. de usuario del origen de datos ODBC. Permite que el usuario utilice un Id. y contraseña de inicio de sesión diferentes de aquellos almacenados en 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 las 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 advertencias
Especifica la visualización de advertencias no interceptables. Esta opción corresponde a la propiedad de conexión DispWarnings.
Procesamiento por lotes
Especifica que la conexión opera en modo de procesamiento 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 del 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 las propiedades de conexión en la función DBGETPROP( ).

Conexión (segundos)
Especifica el intervalo de tiempo de espera de la 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 desactivan después del intervalo de tiempo 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.

Vea también

CREATE CONNECTION (Comando) | DBGETPROP( ) (Función) | DBSETPROP( ) (Función) | DELETE CONNECTION (Comando) | DISPLAY CONNECTIONS (Comando) | LIST CONNECTIONS (Comando) | MODIFY CONNECTION (Comando) | RENAME CONNECTION (Comando) | SQLCONNECT( ) (Función) | SQLDISCONNECT( ) (Función) | SQLGETPROP( ) (Función) | SQLSETPROP( ) (Función)


Diseñador de entornos de datos

Utilice el Diseñador de entornos de datos para crear y modificar visualmente el entorno de datos, tanto de formularios, como de conjuntos de formularios e informes. Cuando la ventana del Diseñador de entornos de datos está activa, Visual FoxPro muestra el menú Entorno de Datos, que le permite controlar objetos del entorno de datos. Para mostrar las ventanas Propiedades y Código, haga clic con el botón secundario del ratón para mostrar el menú contextual del Entorno de datos y, a continuación, seleccione Propiedades o Código.

Un entorno de datos define el origen de los datos usados en un formulario o informe. Este puede incluir tablas, vistas y relaciones. El entorno de datos se guarda con el formulario o informe y se puede modificar siempre y cuando utilice el Diseñador de informes o el Diseñador de formularios.

Cuando se define el entorno de datos de un formulario o informe, Visual FoxPro abre automáticamente las tablas o vistas cuando abre o ejecuta el archivo, y los cierra cuando se cierra o se libera el archivo.

  • Para los formularios, Visual FoxPro llena la lista de propiedades ControlSource de la ventana Propiedades con todos los campos disponibles en el entorno de datos.
  • Para los informes, Visual FoxPro llena el conjunto de datos que su informe necesita basado en las tablas y vistas asociadas.
  • Para obtener más información acerca del uso del Diseñador de entornos de datos con formularios, vea Crear formularios.

Vea también

Ventana Código | ControlSource (Propiedad) | Diseñador de formularios | Ventana Propiedades | Diseñador de informes | Diseñador de formularios | Diseñador de bases de datos | Diseñador de etiquetas

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


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 esta 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 redimensionable que muestra los campos de la tabla y los índices, si existe alguno. El Diseñador de bases de datos muestra las relaciones persistentes con líneas dibujadas entre las tablas, conectando los índices.

Puede cambiar la ubicación de las tablas y las vistas simplemente arrastrando o bien utilizando el comando Organizar del menú Base de datos. Si lo que se desea es mostrar u ocultar objetos en la ventana, puede utilizar el comando Propiedades del menú Base de datos.

Vea también

CREATE DATABASE (Comando) | Diseñador de tablas | Asistente para tablas | Diseñador de entorno de datos | Diseñador de formularios | Diseñador de conexiones | Establecer relaciones temporales entre tablas | Agregar tablas a bases de datos

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


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, la barra de herramientas Diseñador de formularios y la ventana Propiedades.

Puede ejecutar el formulario haciendo clic en el icono ! en la barra de herramientas o presionando Ctrl+E mientras esté en el editor de código. Cuando reabra el Diseñador de formularios, el editor de código reabrirá en la misma posición en el código.

Para obtener información acerca de cómo modificar código de eventos y de métodos, vea Crear formularios.

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 de formularios pueden moverse por el Diseñador de formularios.

Vea también

Diseñador de clases | Ficha Formularios, cuadro de diálogo Opciones | Asistente para formularios | PageFrame (Control) | Ventana Propiedades | Agregar controles de Visual FoxPro a un formulario


Diseñador de etiquetas

Utilice el Diseñador de etiquetas para crear y modificar etiquetas. Cuando la ventana del Diseñador de etiquetas está activa, Visual FoxPro muestra el menú Informe y la barra de herramientas Controles de informes.

El Diseñador de etiquetas es similar al Diseñador de informes, al usar los mismos menús y barras de herramientas. La principal diferencia es que el Diseñador de etiquetas define automáticamente la página y sus columnas según el tamaño de etiqueta seleccionado.

Para crear rápidamente un diseño sencillo de etiqueta, elija Informe rápido en el menú Informe. El comando Informe rápido le solicita la entrada de los campos y el diseño que desea para su etiqueta.

Bandas

De forma predeterminada, el Diseñador de etiquetas muestra cinco bandas: Encabezado de página, Encabezado de columna, Detalles, Pie de columna y Pie de página.

Puede agregar las siguientes bandas a su etiqueta.

Banda | Se imprime | Contenido típico
Encabezado de grupo | Una vez por informe | Precede los datos siguientes
Pie de grupo | Una vez por informe | 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 etiquetas tiene una regla vertical y otra horizontal que puede usar para colocar con precisión los objetos en las bandas. Utilice la regla con el comando Mostrar posición del menú Ver como ayuda para colocar los objetos.

Para cambiar la escala de la regla

La regla está configurada a la unidad predeterminada del sistema (pulgadas). Cámbiela a píxeles de la forma siguiente:

  1. En el menú Formato, elija Configurar cuadrícula. Se presenta el cuadro de diálogo Configurar cuadrícula.
  2. En el cuadro de diálogo Configurar cuadrícula , seleccione Pixels y elija Aceptar.

    La escala de la regla se establece en píxeles y el indicador de posición de la barra de estado (si Mostrar posición está activado en el menú Ver) también muestra las posiciones en píxeles.

Vea también

Asistente para etiquetas | Cuadro de diálogo Informe rápido | Cuadro de diálogo Configurar cuadrícula | CREATE LABEL (Comando) | Diseñador de menús y menús contextuales | Diseñador de formularios | Crear informes y etiquetas | Controlar el resultado de informes y etiquetas


Diseñadores de menús y menús contextuales

Utilice los Diseñadores de menús y menús contextuales para crear menús, elementos de menú, submenús de elementos de menú, líneas que separen grupos de elementos de menú relacionados, etc. Al crear sus propios menús y menús contextuales, puede personalizar su copia de Visual FoxPro o diseñar menús para las aplicaciones que piensa distribuir.

Los Diseñadores de menús y menús contextuales constan de los siguientes elementos y opciones:

Indicador del sistema
Permite especificar los títulos de menú y los elementos de menú de su sistema de menús.
Control Selector
Se muestra como un botón con la flecha de dos puntas que aparece a la izquierda de la columna Indicador del sistema. Permite una colocación visual de los elementos de menú en tiempo de diseño.
Resultado
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
Aparece al seleccionar Submenu o Procedure en la columna Resultado (Result). Puede utilizar este botón Crear para especificar un submenú o procedimiento para un título de menú o elemento de menú.
Modificar
Aparece sólo después de crear un submenú o procedimiento en la columna Resultado para un elemento de menú. Seleccionar el botón Editar en el Diseñador de menú para el submenú o procedimiento asociado con un título de menú o elemento de menú.
Opciones
Abre el cuadro de diálogo Opciones de la acción, en el cual puede definir métodos abreviados de teclado y otras opciones de menú.
Nivel de menú
Especifica el menú, submenú o método abreviado que está modificando.
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
Disponible sólo cuando un elemento está seleccionado en el Diseñador de menús contextuales y se abre 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
Disponible sólo cuando un elemento está seleccionado y se elimina la fila seleccionada desde el Diseñador de menú.
Mover elemento
Disponible sólo cuando un elemento está seleccionado y se abre el cuadro de diálogo Mover Elemento, el que puede ser utilizado para cambiar la localización de un elemento en el menú.

Vea también

Cuadros de diálogo | Cuadro de diálogo Opciones de la acción | Crear menús, menús contextuales, elementos de menú y submenús | Cuadro de diálogo Insertar barra de menús del sistema | Cuadro de diálogo Mover elemento | Cuadro de diálogo Opciones generales | Cuadro de diálogo Opciones de menú


Diseñadores de consultas y de vistas

Utilice el Diseñador de consultas y el Diseñador de vistas para crear y modificar consultas y vistas. Cuando se activa el Diseñador de consultas o el Diseñador de vistas, el menú Consulta y la barra de herramientas Consulta o la barra de herramientas Diseñador de vistas se hacen visibles.

El panel superior del diseñador muestra las tablas de la consulta o vista. Cada tabla se representa por una ventana redimensionable que muestra los campos de las tablas y los índices. El diseñador muestra las condiciones de combinación al mostrar líneas que conectan los campos entre las tablas. Puede arrastrar campos indizados 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 , que le permite modificar la condición.

En esta sección

Ficha Campos, Diseñadores de consultas y vistas
Especifica campos, funciones de agregado, como los comandos SUM o COUNT, u otras expresiones.
Ficha Combinacón, Diseñadores de consultas y vistas
Especifica expresiones de combinación para registros coincidentes entre dos o más tablas o vistas.
Ficha Filtro, Diseñadores de consultas y vistas
Especifica condiciones para seleccionar registros, tales como valores específicos en un campo o condiciones de combinación que definen relaciones temporales entre tablas.
Ficha Ordenar por, Diseñadores de consultas y vistas
Especifica campos, funciones de agregado, como los comandos SUM o COUNT, u otras expresiones que se utilizan para configurar el orden de los registros recuperados en la consulta.
Ficha Agrupar por, Diseñadores de consultas y vistas
Especifica campos, funciones de agregado, como los comandos SUM o COUNT, u otras expresiones que se utilizan para combinar registros en un grupo basado en valores idénticos en esos campos.
Ficha Criterios de actualización, Diseñadores de consultas y vistas
Especifica los campos a ser actualizados y el criterio para que dichos campos sean actualizados (sólo Diseñador de Vistas).
Ficha Varios, Diseñadores de consultas y vistas
Especifica si se deben recuperar los duplicados y límites en los registros, como el porcentaje o la cantidad superior.

Secciones relacionadas

Diseñadores
Los diseñadores facilitan el diseño visual de ventanas, cuadros de diálogo y componentes de su aplicación.
Diseñador de clases
Utilice el Diseñador de clases para crear y modificar clases visualmente.
Diseñador de conexiones
Utilice el Diseñador 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.
Diseñador de entorno de datos
Utilice el Diseñador de entornos de datos para crear y modificar visualmente el entorno de datos de formularios, conjuntos de formularios e informes.
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.
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.
Diseñador de etiquetas
Utilice el Diseñador de etiquetas para crear y modificar etiquetas. Cuando la ventana del Diseñador de etiquetas está activa, se muestra el menú Informe y la barra de herramientas Controles de informes.
Diseñador de menús y menús contextuales
Utilice el Diseñador de menús y el Diseñador de menús contextuales para crear menús, elementos de menú, submenús de elementos de menú, líneas que separen grupos de elementos de menú relacionados, etc.
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, se muestra el menú Informe y la barra de herramientas Controles de informes.
Diseñador de tablas
Utilice el Diseñador de tablas para crear y modificar tablas de base de datos, tablas libres, campos e índices.


Ficha Campos, diseñadores de consultas y de vistas

Especifica campos, funciones de agregado y otras expresiones para el resultado de la consulta o de la vista. Esta ficha aparece en los Diseñador de consultas y de vistas.

Campos disponibles
Muestra todos los campos disponibles en las tablas de la consulta o de la vista. Puede seleccionar todas las tablas disponibles y sus campos eligiendo el asterisco(*), todos los campos de una tabla particular eligiendo table.* o campos individuales para su consulta o vista. La selección aparece en la instrucción SELECT en la ventana SQL cuando hace clic en el botón SQL o elige Ver SQL en el menú Consulta.

Si selecciona un campo en la lista Campos disponibles, su nombre aparece automáticamente en la lista Campos seleccionados, también aparece en el cuadro de edición Funciones y expresiones y en el cuadro de edición Expresión del Generador de expresiones, el cual se abre cuando hace clic en el botón puntos (...).

Funciones y expresiones
Especifica una función o expresión. Escriba una expresión directamente en el cuadro o seleccione una función de la lista en el Generador de expresiones, el cual se abre cuando hace clic en el botón puntos (...).

Después de crear la expresión, puede agregarla al cuadro Campos seleccionados haciendo clic en el botón Agregar.

Campos seleccionados
Muestra los campos seleccionados, las funciones agregadas y otras expresiones que aparecen en los resultados de la consulta o vista. Puede redistribuir el orden del resultado si arrastra la flecha vertical de dos puntas a la izquierda de los campos.
Agregar
Agrega el elemento seleccionado al cuadro Campos seleccionados desde los cuadros Campos disponibles o Funciones y expresiones.
Agregar todos
Agrega todos los campos del cuadro Campos disponibles al cuadro Campos seleccionados.
Quitar
Quita el elemento seleccionado del cuadro Campos seleccionados.
Quitar todos
Quita todos los elementos del cuadro Campos seleccionados.
Propiedades
Presenta el cuadro de diálogo Propiedades del campo de la vista, que le permite especificar opciones para los campos en una vista igual que lo hace para campos en tablas de base de datos. Esta opción sólo está disponible en el Diseñador de vistas.

Vea también

Ficha Filtro, Diseñadores de consultas y vistas | Ficha Agrupar por, Diseñadores de consultas y vistas | Ficha Ordenar por, Diseñadores de consultas y vistas | Diseñador de consultas y de vistas | Ficha Criterios de actualización, Diseñadores de consultas y vistas | Ficha Combinacón, Diseñadores de consultas y vistas


Cuadro de diálogo Propiedades del campo de la vista

Le permite especificar opciones para los campos de una vista, igual que lo hace para los campos en tablas de bases de datos. Utilice este cuadro de diálogo para definir propiedades para determinar el tipo de datos que almacena el campo, para controlar la entrada de datos en las vistas actualizables y para controlar lo que presenta el campo.

Este cuadro de diálogo aparece cuando selecciona un campo y, a continuación, elige el botón Propiedades en la ficha Campos del Diseñador de consultas y de vistas.

Campo
Especifica el nombre del campo seleccionado en la vista. Para establecer propiedades en otros campos seleccionados, puede elegirlos en la lista desplegable. El campo aparece con su número secuencial de campo.

Opciones de validación de campos

Estas opciones le permiten controlar los contenidos del campo.

Regla
Especifica la expresión para la regla a nivel de campo que controla qué valores se pueden escribir en este campo.
Mensaje
Especifica el mensaje de error que se presenta cuando se infringe la regla a nivel de campo.
Valor predeterminado
Especifica una cantidad o cadena que es el contenido un campo cuando se agrega un nuevo registro. El valor predeterminado permanece en el campo hasta que escribe un nuevo valor.

Opciones de mostrar

Estas opciones le permiten controlar cómo se escriben o presentan los valores del campo.

Formato
Especifica la expresión para el uso de mayúsculas, el tamaño y el estilo para la presentación del campo en la ventana Examinar, los formularios o los informes. La configuración de las propiedades en el formulario o informe reemplaza esta expresión.
Máscara de entrada
Especifica el formato para los valores cuando se escriben en el campo. Por ejemplo, los números de teléfono podrán tener un formato de tipo (999) 999-9999.
Título
Especifica la etiqueta que aparece para el campo en la ventana Examinar, los formularios o los informes. La configuración de las propiedades en el formulario o informe puede reemplazar este valor. Para especificar una expresión para un título de campo, incluya el signo igual (=) precediendo la cadena de título. Si no se encuentra un signo de igual, esta será tratada como una cadena literal. Las expresiones no pueden exceder 254 caracteres. Si la expresión excede 254 caracteres, predetermina el título al nombre del campo.
Nota El uso de expresiones como títulos de campos solo es soportado por tablas contenidas en una Base de Datos, en aplicaciones que corren en Visual FoxPro 8.0 o superior. En versiones previas, la expresión aparece como una cadena literal.

Opciones de Asignar tipo de campo a clases

Si planea utilizar el campo de vista en formularios, estas opciones le permiten especificar un tipo predeterminado de control que aparece cuando coloca el campo en un formulario.

Mostrar biblioteca
Especifica el archivo de biblioteca de clases (.vcx) que contiene la clase de control que desea asociar con el campo.
Mostrar clase
Especifica el tipo de control que se crea cuando se coloca el campo en un formulario.

Opciones de asignación de datos

De forma predeterminada, el campo de vista tiene la misma configuración de propiedades que su campo asociado en una tabla. Estas opciones sólo están activas para vistas remotas.

Tipo de datos (sólo vistas remotas)
Especifica el tipo de datos que puede contener este campo.
Ancho (sólo vistas remotas)
Especifica el número de caracteres que puede contener este campo.
Decimal (sólo vistas remotas)
Para tipos de datos numéricos, especifica el número de posiciones decimales a la derecha de la coma que puede contener este campo.
Comentarios (sólo vistas remotas)
Proporciona espacio para que escriba un comentario acerca del campo.

Vea también

Diseñador de consultas y de vistas | Ficha Combinacón, Diseñadores de consultas y vistas | Ficha Campos, Diseñadores de consultas y vistas | Crear valores predeterminados para campos de vista | Ficha Filtro, Diseñadores de consultas y vistas

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Ficha Combinación, diseñadores de consultas y de vistas

Especifica las condiciones de combinación que deben cumplirse para hacer coincidir registros de una o más tablas o vistas, por ejemplo, especifica valores de un campo o condiciones de unión que definen las relaciones temporales entre tablas..

Las configuraciones de la ficha Combinación, determinan las condiciones de unión que aparecen en la cláusula FROM del SELECT - SQL (Comando) generado y que podemos ver en la ventana SQL. El Diseñador de Vistas carga y genera cualquier cláusula FROM tenga o no tenga opciones JOIN, utilizando paréntesis donde sea necesario en las cláusulas ON.

Botón de condición
Aparece si se combinan dos o más tablas en la consulta. Haciendo clic en la flecha horizontal de dos puntas se puede modificar la condición o criterio de consulta seleccionado en el cuadro de diálogo Condición de combinación, que actualizará las entradas de las otras columnas.
Tabla Izquierda
Contiene el alias de la tabla de la izquierda de la combinación o bien "<Combinación Anterior>", lo cual significa que la tabla izquierda de la combinación actual es el resultado de una combinación previa.
Tipo de Combinación
especifica el tipo de condición de combinación. Por defecto el tipo de combinación es Interna. Cuando se crea una nueva condición de combinación, hacer clic en el campo para mostrar una lista desplegable con todos los tipos de combinación disponibles.
  • Combinación Interna Indica que sólo se incluirán en el resultado los registros que cumplan la condición de unión. Esta es la opción por defecto y la más utilizada.
  • Combinación Izquierda Indica que se incluirán en el resultado todos los registros de la tabla izquierda, cumplan o no las condiciones de unión y solo aquellos registros de la tabla derecha que cumplan las condiciones de unión.
  • Combinación Derecha Indica que se incluirán en el resultado todos los registros de la tabla derecha, cumplan o no las condiciones de unión y solo aquellos registros de la tabla izquierda que cumplan las condiciones de unión.
  • Combinación Completa Indica que todos los registros que cumplan o no las condiciones de unión serán incluidos en el resultado. El campo debe coincidir con el texto de muestra carácter por carácter.
  • Combinación Cruzada Indica que cada registro de la tabla izquierda se hace coincidir con todos los registros de la tabla derecha. Cuando no existe una cláusula WHERE, establecer una combinación cruzada produce un resultado igual al producto Cartesiano.

    La opción Combinación Cruzada hace posible modificar el orden de aparición de las tablas en la cláusula FROM de la instrucción SQL SELECT en la ventana SQL para la consulta o vista. Seleccionar Combinación Cruzada inserta una coma (,) que separa las tablas de la cláusula FROM.

    Nota Solo se puede especificar una combinación cruzada para la tabla izquierda, la cual no puede ser una condición anterior. No se puede especificar una combinación cruzada justo en el momento de añadir nuevas tablas a la consulta o vista, por lo cual si se quiere una posición secuencial específica para la tabla, se debe establecer añadiendo manualmente la combinación cruzada para la tabla.
    Fuera de los diseñadores de consultas y vistas, las combinaciones cruzadas no están soportadas dentro de la sintaxis del comando SQL SELECT. Las combinaciones cruzadas solo están admitidas para modificar el orden de aparición de las tablas en los diseñadores de Consultas y Vistas.

    Al analizar la instrucción SQL SELECT, Visual FoxPro sitúa todas las tablas de la cláusula FROM que no están envueltas en combinaciones en la ficha Combinaciones. Una fila indicando "<alias> Combinación Cruzada" aparece en la lista de combinaciones. El orden de las tablas en la cláusula FROM de la instrucción SQL SELECT coincide con el orden de combinaciones en la ficha Combinación. Al generar consultas, Visual FoxPro usa esta información para colocar cada tabla en la posición correcta tal y como se especifica en la cláusula FROM. Al re-cargar las modificaciones en los diseñadores de Consultas y Vistas, estos se actualizan en la ficha Combinaciones.

    Si una tabla no se relaciona en la ficha combinaciones, Visual FoxPro la sitúa al comienzo de la cláusula FROM. Si hay varias tablas en esta situación, todas ellas son situadas aleatoriamente al principio de la cláusula FROM.

Pri. (Prioridad)
Indica un rango numérico desde 0 a 99, que establece una prioridad para la operación de combinación. El número 0 se refiere la prioridad más alta, mientras que 99 especifica la prioridad más baja.

Establecer prioridades para las operaciones de combinación determina el orden en el que las combinaciones serán procesadas y utiliza paréntesis (()) para agrupar operaciones. Por ejemplo, supongamos que se especifica una prioridad de 0 para una operación de combinación, una prioridad 1 para la segunda, y una prioridad 0 para una tercera. La primera y la tercera operaciones de combinación, que tienen una prioridad 0, son ejecutadas antes de la segunda operación de combinación, que tiene una prioridad 1.

Tabla Derecha
Contiene el alias de la tabla de la derecha en la combinación o bien "<Siguiente Combinación>", que significa que la tabla de la derecha de la combinación es la próxima sub-combinación que se especifique.
Nombre de campo
Indica el primer campo de la condición de combinación. Al crear una nueva condición de combinación, se hace clic en el campo para desplegar la lista con los campos disponibles. también es posible especificar una expresión.
No
Invierte la condición para excluir los registros que coincidan con la condición.
Criterios
Especifica un operador de condición:
  • Igual (=) Indica que el campo y el valor de muestra deben ser iguales.
  • Like (como) Indica que el campo debe incluir carácteres coincidentes con el texto de muestra.

    Por ejemplo, Customer.state Like O coincide con registros como Ohio, Oklahoma, y Oregon.

  • Exactamente Igual (==) Indica que el campo debe coincidir, carácter por carácter, con el texto indicado en el campo de muestra.
  • Mayor que (>) Indica que el campo debe ser mayor que el valor especificado en el campo de muestra.
  • Menor que (<) Indica que el campo debe ser menor que el valor especificado en el campo de muestra.
  • Mayor o igual que (>=) Indica que el campo debe ser mayor o igual que el valor especificado en el campo de muestra.
  • Menor o igual que (<=) Indica que el campo debe ser menor o igual que el valor especificado en el campo de muestra.
  • Es Nulo Especifica que el campo debe contener un valor NULL.
  • Es Verdad Indica que el campo o expresión de la izquierda se evalúa como Verdadero (True), asumiendo que se trata de una expresión de tipo lógico.
  • Between (entre) Indica que el campo debe ser mayor o igual que el valor mínimo y menor o igual que el valor máximo que aparecen en la columna de ejemplo. Hay que separar los dos valores del campo de ejemplo con el conector AND. Visual FoxPro crea la consulta utilizando la palabra BETWEEN.

    Por ejemplo, Invoices.idate Between 10/05/97 AND 12/05/97 hará coincidir los registros con fechas del día 10, 11 y 12 de Mayo de 1997.

  • In (en) Indica que el campo debe estar entre los distintos valores especificados en el texto de muestra como una lista separada por comas.

    Por ejemplo, Customer.name In Al,George,Mary hará coincidir los registros con nombres Al, George, o Mary.

Valor
Especifica la otra tabla y campo de la condición de combinación. también puede ser una expresión.
Lógico
Añade una condición AND u OR a la lista de condiciones de combinación.
Pri. (Prioridad)
especifica un número en el rango de 0 a 99, indicando la prioridad para las operaciones lógicas. El número 0 indica la mayor prioridad, mientras que el 99 indica la más baja.

Ajustar prioridades a las operaciones lógicas determina el orden en el cual se van a ejecutar las operaciones y utiliza paréntesis (()) para agruparlas. Por ejemplo, supongamos que se especifica una prioridad 0 a una operación, una prioridad 1 a la segunda y una prioridad 0 a una tercera operación lógica. Las operaciones primera y tercera, que tienen priridad 0, se ejecutan antes que la segunda operación lógica que tiene prioridad 1.

Botón Insertar
Inserta una condición de combinación en blanco encima de la condición seleccionada.
Botón Quitar
Quita la condición seleccionada de la consulta.

Vea también

| Ficha Campos, Diseñadores de consultas y vistas | Ficha Agrupar por, Diseñadores de consultas y vistas | Condición de Combinación (Cuadro de Diálogo) | Ficha Ordenar por, Diseñadores de consultas y vistas | SELECT - SQL (Comando) | Ficha Criterios de Actualización, Diseñadores de consultas y vistas | Ficha Filtro, Diseñadores de consultas y vistas | Consultar múltiples tablas y vistas


Ficha Filtro, diseñadores de consultas y de vistas

Especifica condiciones para seleccionar registros que son listadas en la cláusula WHERE del comando SELECT - SQL en la ventana SQL. Puede cargar y guardar una consulta o vista con una subconsulta en la cláusula WHERE.

Mover Box

Arrastra el cuadro selector para mover el elemento seleccionado hacia arriba o hacia abajo en la cuadrícula.

Botón de condición
Haga clic en la flecha horizontal de dos puntas para modificar el filtro seleccionado.
Nombre de campo
Especifica el primer campo de la condición de combinación. Cuando cree una nueva condición de combinación, haga clic en el campo para presentar una lista desplegable de los campos disponibles.
No
Invierte la condición para excluir los registros que coincidan con la condición.
Criterios
Especifica el operador de comparación:
  • Igual (=) Especifica que el campo y el valor en el campo de ejemplo son iguales.
  • Like Especifica que el campo debe incluir caracteres que coincidan con los caracteres del texto de ejemplo.

    Por ejemplo, Customer.state Like O coincide con los registros que contengan Ohio, Oklahoma y Oregon.

  • Exactamente igual (==) &nbspEspecifica que el campo debe coincidir con el texto de ejemplo, carácter a carácter.
  • Mayor que (>) Especifica que el campo debe ser mayor o igual que el valor del texto de ejemplo.
  • Menor que (<) Especifica que el campo debe ser menor que el valor del texto de ejemplo.
  • Mayor que o igual a (>=) Especifica que el campo debe ser mayor o igual que el valor del texto de ejemplo.
  • Menor que o igual a (<=) Especifica que el campo debe ser menor o igual que el valor en el texto de ejemplo.
  • Is NULL Especifica que el campo debe contener un valor NULL.
  • Is True Construye una cláusula WHERE que contenga sólo el campo de la izquierda donde el campo o expresión es evaluada a Verdadero, asumiendo que el campo o expresión evalúa a un valor lógico
  • Between Especifica que el campo de ser mayor o igual que el menor valor y menor o igual que el mayor valor, en la condición que aparece en la columna ejemplo. Puede separar las dos columnas en el campo ejemplo con la palabra AND. Visual FoxPro crea la consulta con la palabra BETWEEN.

    Por ejemplo, Invoices.idate Between 05/10/97 AND 05/12/97 coinciden los registros del 10, 11 y 12 de mayo de 1997.

  • In Especifica que el campo debe coincidir con uno de los valores que aparecen, separados por comas, en una lista en el campo ejemplo.

    Por ejemplo, Customer.name In Al,George,Mary coinciden los artículos en los cuales el nombre del cliente (customer's name) es Al, George o Mary.

  • Exists Especifica que los registros devueltos contiene el criterio en el campo ejemplo. Cuando la condición de filtro especifica Exists, la condición de filtro se evalúa como Verdadera (.T.) a menos que la subconsulta devuelva un conjunto vacío.

    En el siguiente ejemplo, al especificar Exists devuelve cada usuario (customer) que tiene una orden (order):

    SELECT Customer.cust_id, Customer.company;
FROM testdata!customer;
WHERE Exists (select * from orders where customer.cust_id = ;
orders.cust_id)
Ejemplo
Especifica el valor o texto con el cual desea comparar el campo. Para hacer coincidir el texto del ejemplo, utilice las funciones UPPER( ), LOWER( ) y PROPER( ).
Logical
Agrega una condición AND u OR a la lista de condiciones de combinación.
Pri. (Priority)
Especifica un número de rango de 0 a 99, el que indica la prioridad para operaciones lógicas. El número 0 indica la mayor prioridad, mientras el número 99 indica la menor prioridad.

Establecer prioridades para operaciones lógicas determina el orden en el que cada operación debe realizarse. En efecto, el comportamiento es similar a utilizar paréntesis (()) para agrupar operaciones. Por ejemplo, suponga que ha especificado una prioridad cero (0) para una operación lógica, una prioridad uno (1) para una segunda operación lógica y una prioridad de cero (0) para una tercera operación lógica. Las operaciones con prioridad cero (0), la primera y tercera operación, se realizarán antes que la segunda con prioridad uno (1).

Botón Insertar
Inserta una condición de combinación en blanco encima de la condición seleccionada.
Botón Quitar
Quita la condición seleccionada de la consulta.

Vea también

Ficha Campos, Diseñadores de consultas y vistas | Ficha Agrupar por, Diseñadores de consultas y vistas | Cuadro de diálogo Condición de combinación | Ficha Ordenar por, Diseñadores de consultas y vistas | Diseñador de consultas y de vistas | SELECT - SQL (Comando) | Ficha Criterios de actualización, Diseñadores de consultas y vistas


Ficha Ordenar por, diseñadores de consultas y de vistas

Especifica campos, funciones de agregado, como los comandos SUM o COUNT, u otras expresiones que se utilizan para configurar el orden de los registros recuperados en la consulta.

Puede seleccionar campos desde la ficha Ordenar por que no estén incluidos en la lista SELECT .

Campos seleccionados
Muestra los campos seleccionados y las expresiones que aparecerán en los resultados de la consulta.
Criterios de ordenación
Especifica los campos y las expresiones utilizadas en el ordenamiento de la consulta. La flecha que aparece a la izquierda de cada campo especifica una ordenación ascendente (hacia arriba) o descendente (hacia abajo). Un cuadro selector aparece a la izquierda de la flecha para cambiar el orden de los campos.

Opciones de ordenación

Ascendente
Configura el elemento seleccionado en el cuadro Criterio de ordenación para ordenar en orden ascendente.
Descendente
Configura el elemento seleccionado en el cuadro Criterio de ordenación para ordenar en orden descendente.
Agregar
Agrega el elemento seleccionado en el cuadro Campos seleccionados al cuadro Criterios de ordenación.
Quitar
Quita el elemento seleccionado del cuadro Criterios de ordenación.

Vea también

COUNT(Comando) | Ficha Campos, Diseñadores de consultas y vistas | Ficha Filtro, Diseñadores de consultas y vistas | Ficha Agrupar por, Diseñadores de consultas y vistas | SELECT - SQL (Comando) | SUM (Comando) | Ficha Criterios de actualización, Diseñadores de consultas y vistas


Ficha Agrupar por, diseñadores de consultas y de vistas

Agrupa filas de los resultados de una consulta o de una vista. Esta ficha aparece en los Diseñador de consultas y de vistas. Para obtener más información, vea la cláusula GROUP BY en el comando SELECT - SQL.

Campos disponibles
Muestra todos los campos disponibles en las tablas de una consulta o vista y otras expresiones.
Campos agrupados
Muestra los campos, las funciones agregadas y otras expresiones para determinar la agrupación de los resultados de la consulta. Los campos se agrupan en el orden en que aparecen en la lista. Puede cambiar el orden de los campos y la jerarquía de agrupación si arrastra la flecha de dos puntas a la izquierda de cada campo.
Agregar
Agrega el elemento seleccionado en el cuadro Campos disponibles al cuadro Agrupar por campos.
Quitar
Quita los elementos seleccionados del cuadro Agrupar por campos.
Condiciones
Muestra el cuadro de diálogo Condiciones para configurar los criterios de selección sobre los grupos en lugar de sobre los registros individuales.

Vea también

Ficha Campos, Diseñadores de consultas y vistas | Ficha Filtro, Diseñadores de consultas y vistas | Cuadro de diálogo Condiciones | Ficha Ordenar por, Diseñadores de consultas y vistas | Diseñador de consultas y de vistas | SELECT - SQL (Comando) | Ficha Criterios de actualización, Diseñadores de consultas y vistas


Ficha Criterios de actualización, Diseñador de vistas

Especifica las condiciones para enviar cambios en la vista a los registros originales de la tabla utilizada en la vista. Esta ficha se muestra solamente en la ficha Campos, Diseñadores de consultas y vistas

Tabla
Especifica qué tablas de las utilizadas en la vista pueden aceptar cambios. La lista muestra las tablas que tienen campos en la lista Campos seleccionados de la ficha Campos, Diseñadores de consultas y vistas.
Restablecer claves
Selecciona el campo de clave principal de cada tabla como campos clave para la vista y coloca una marca de verificación bajo el símbolo de clave en la lista de nombres Campo para cada campo de clave principal. Los campos clave se utilizan para hacer coincidir los cambios de la vista con el registro original de la tabla.
Actualizar todos
Selecciona todos los campos que no sean campos clave para actualizarlos y coloca una marca de verificación bajo el símbolo del lápiz en la lista de nombres Campo.
Enviar actualizaciones SQL
Especifica si los cambios de los registros de la vista se envían realmente a las tablas originales.
Panel Nombre de campo
Muestra los campos que ha seleccionado como resultado y que, por tanto, están disponibles para la actualización.
  • Campo clave (marcado con un símbolo de llave) Especifica si el campo es un campo clave.
  • Actualizable (marcado con un símbolo de lápiz) Especifica si el campo es actualizable.
  • Nombre de campo Presenta el nombre de los campos de resultado disponibles para ser marcados como campos clave o actualizables.

La cláusula SQL WHERE incluye

Controla qué campos se agregan a la cláusula WHERE para detectar conflictos de actualización en el servidor cuando los cambios en la vista se envían a las tablas originales.

Un conflicto se basa en la comparación entre los antiguos valores en la vista, OLDVAL( ), y los valores actuales en la tabla original, CURVAL( ). Si los valores son iguales, se considera que la tabla original no ha cambiado y que no existe ningún conflicto. Si no son iguales, existe un conflicto y el origen de datos devuelve un error.

El error que se devuelve para un conflicto entre un valor antiguo y el valor actual es el Error 1585 “El registro ha sido modificado por otro” o el Error 1494 “Conflicto de actualización. Use TABLEUPDATE() para forzar la actualización o TABLEREVERT() para deshacerla”.

Sólo campos clave
Establece la cláusula WHERE para detectar un conflicto si se ha cambiado un campo clave en la tabla original. Los cambios hechos por otro usuario en cualquier otro campo en el registro original de la tabla no se comparan.
Campos clave y actualizables
Establece la cláusula WHERE para detectar un conflicto si otro usuario cambió cualquiera de los campos que eran actualizables.
Campos clave y modificados
Establece la cláusula WHERE para detectar un conflicto si el campo clave o uno de los campos modificados en el registro en la tabla original ha cambiado desde que la vista se recuperó por primera vez (opción predeterminada).
Clave y marca de hora
Establece la cláusula WHERE para detectar un conflicto si la hora del registro de la tabla original ha cambiado desde que se recuperó por primera vez. Esta opción sólo está disponible si la tabla remota tiene una columna de hora.

Actualizar con

Especifica cómo se realizan las actualizaciones en el servidor Backend.

SQL DELETE e INSERT
Se elimina el registro de la tabla original y, a continuación, se crea un nuevo registro a partir del registro modificado en la vista.
SQL UPDATE
Se utilizan los cambios en los campos de la vista para modificar los campos en la tabla original.

Vea también

Ficha Campos, Diseñadores de consultas y vistas | Ficha Filtro, Diseñadores de consultas y vistas | Ficha Agrupar por, Diseñadores de consultas y vistas | Ficha Ordenar por, Diseñadores de consultas y vistas | Diseñador de consultas y de vistas


Ficha Varios, diseñadores de consultas y de vistas

Especifica otras condiciones de selección de registros para la vista o consulta.

Nota Es posible que las opciones de conflicto aumenten si hace clic varias veces en los botones de Referencia Cruzada, Informes y Etiquetas. El Diseñador de Consultas procurará advertirle y proporcionar la opción para quitar el comando anterior si es el primer conflicto encontrado. Debe cerciorarse de que solamente el código opcional deseado aparezca en la consulta.
Sin duplicados
Elimina los registros duplicados de los resultados de la consulta o de la vista. Los registros duplicados son registros en los que todos los campos coinciden.
Forzar combinación
Cambia el análisis o la forma de generar de la opción FORCE en la cláusula FROM, esto es, especificar que las tablas han sido combinadas de acuerdo al orden en que aparecen en la cláusula FROM. Para activar la opción de forzar la combinación, utilice Forzar combinación.
Superior
Selecciona una cantidad o porcentaje para el resultado. Cuando especifique un número o porcentaje, utilice Ficha Ordenar por, Diseñadores de consultas y vistas para escoger que registros estarán primero en el resultado.

Todos Especifica que todos los registros generados por la consulta o vista deben ser considerados en el resultado.

Número de registros Toma una cantidad de registros desde los registros procesados para incluirlos en el resultado.

Porcentaje Cambia el número del cuadro anterior a un porcentaje de registros.

Referencia Cruzada (Solo consultas)
Envía el resultado de una vista o consulta a Microsoft Graph, un informe, o una tabla de referencias cruzadas. La consulta debe contener exactamente tres elementos que represente el eje x, el eje y el valor a graficar.

Visual FoxPro inserta el siguiente código de ejemplo:

INTO CURSOR SYS(2015)
* Para ejecutar este comando, el resultado debe tener tres columnas.
DO (_GENXTAB) WITH 'T2 t1'
Nota La cláusula INTO CURSOR es agregada solo si ésta no existe en la consulta.

Por ejemplo, podría generar un informe que muestre la cantidad facturada a los clientes al mes. Crearía un gráfico que presentase a los clientes a lo largo del lado izquierdo de la página, los doce meses a lo largo de la parte superior de la página y, dentro del gráfico, la cantidad facturada a cada cliente cada mes.

Informes (Solo consultas)
Genera el comando REPORT FORM apropiado y abre el cuadro de diálogo Informes, que hace posible configurar un informe y establecer algunas opciones.

Visual FoxPro inserta el siguiente código de ejemplo:

INTO CURSOR SYS(2015)
REPORT FORM tbl2.frx TO PRINTER PLAIN
Nota La cláusula INTO CURSOR es agregada solo si ésta no existe en la consulta.
Nota Un comando REPORT existente en la ventana de consultas no es analizado, y los cambios no se reflejan en el cuadro de diálogo. Debe seleccionar nuevamente las opciones deseadas en el cuadro de diálogo. Luego de hacer clic en OK, se le mostrará un mensaje para reemplazar el comando. Solo aparecerá esta opción si el comando REPORT es el primer elemento luego de la consulta. Si antepone código antes del comando REPORT, se situará inmediatamente después de la instrucción SQL un nuevo comando REPORT .
Etiquetas (Solo consultas)
Genera el comando LABEL FORM apropiado y abre la caja de diálogo de Etiquetas, que hace posible configurar una etiqueta y establecer algunas opciones.

Visual FoxPro inserta el siguiente código de ejemplo:

INTO CURSOR SYS(2015)
LABEL FORM tbl2.lbx TO PRINTER
Nota Un comando LABEL existente en la ventana de consultas no es analizado, y los cambios no se reflejan en el cuadro de diálogo. Debe seleccionar nuevamente las opciones deseadas en el cuadro de diálogo. Al hacer clic en OK, se le mostrará un mensaje para reemplazar el comando. Solo aparecerá esta opción si el comando LABEL es el primer elemento luego de la consulta. Si antepone código antes del comando LABEL, se situará inmediatamente después de la instrucción SQL un nuevo comando LABEL.

Vea también

Ficha Campos, Diseñadores de consultas y vistas | Ficha Filtro, Diseñadores de consultas y vistas | Ficha Agrupar por, Diseñadores de consultas y vistas | Ficha Ordenar por, Diseñadores de consultas y vistas | Diseñador de consultas y de vistas | Cuadro de diálogo Informes | Cuadro de diálogo Etiqueta


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 un diseño sencillo de informe, elija Informe rápido en el menú Informe. Informe rápido le solicita la entrada de los campos y el diseño que desea para su informe.

Cuando está abierto el Diseñador de informes, puede administrar los colores de fondo y de primer plano de los elementos del informe mediante opciones adicionales en el menú Formato, según la tabla siguiente:

Control | Color de primer plano | Color de fondo
Etiqueta | Habilitado | Deshabilitado
Campo | Habilitado | Habilitado
Línea | Habilitado | Habilitado
Rectángulo | Habilitado | Habilitado
Rectángulo redondeado | Habilitado | Habilitado
Imagen / ActiveX dependiente | Deshabilitado | Deshabilitado

Para obtener más información acerca de cómo utilizar el Diseñador de informes, vea “Opciones de formato para controles de informes” en Dar formato a controles de campo en un informe.

El Diseñador de informes utiliza bandas y controles para administrar el diseño de los datos en un formulario.

Bandas

De forma predeterminada, el Diseñador de informes muestra tres bandas: Encabezado de página, Detalles y Pie de página. En la parte inferior de cada banda hay una barra separadora. El nombre del tipo de banda aparece en la barra junto a una flecha azul, que indica que la banda está encima, no debajo, de la barra.

Las bandas se agregan a la lista de bandas en la opción Bandas del menú Informe según las agrega al informe seleccionando opciones del menú 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

Insertar control

Esta opción de menú muestra los controles de la Barra de herramientas Controles de informes asociada. Cuando selecciona desde esta paleta, Visual FoxPro coloca el informe en modo de ficha y agrega el control a la esquina superior izquierda del informe. A continuación, puede mover o cambiar el tamaño del control y la ficha desde un control al siguiente. Utilice CTRL+Tab para no seleccionar el control, utilice Alt+Entrar para abrir la ventana Propiedades.

Regla

El Diseñador de informes tiene una regla vertical y otra horizontal que puede usar para colocar con precisión los objetos en las bandas. Utilice la regla con el comando Mostrar posición del menú Ver como ayuda para colocar los objetos.

La escala de la regla viene determinada por la configuración 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 a píxeles

Cámbiela a píxeles de la forma siguiente:

  1. En el menú Formato, elija Configurar cuadrícula. Se presenta el cuadro de diálogo Configurar cuadrícula.
  2. En el cuadro de diálogo Configurar cuadrícula, seleccione Píxeles y elija Aceptar.

    La escala de la regla se establece en píxeles y el indicador de posición de la barra de estado (si Mostrar posición está activado en el menú Ver) también muestra las posiciones en píxeles.

Puede desplazarse fácilmente entre objetos en el informe en modo de tabulado. Para entrar al modo tabulado, presione TAB para moverse al siguiente objeto o SHIFT+TAB para moverse al objeto anterior.

Para modificar etiquetas primero debe utilizar CTRL+E para pasar al modo de Modificación de etiquetas. Ya que puede utilizar la tecla Ctrl para especificar los caracteres ASCII altos, utilice la tecla ESC para desactivar la Modificación de etiquetas. Se aplican otras teclas de desplazamiento del Diseñador.

Para modificar un campo de informe, presione ALT+ENTER para abrir el cuadro de diálogo propiedades para ese campo.

Para más información, vea Métodos abreviados de teclado.

Vea también

Cuadro de diálogo Informe rápido | Asistente para informes | Cuadro de diálogo Configurar cuadrícula | Diseñador de tablas | Controlar el resultado de informes y etiquetas | Dar formato a controles de campo


Diseñador de tablas

Utilice el Diseñador de tablas para crear y modificar tablas de base de datos, tablas libres, campos e índices. El Diseñador de tablas le ayuda a implementar características avanzadas, como reglas de validación, valores predeterminados y clases predeterminadas de controles.

En esta sección

Ficha Campos, Diseñador de tablas
Presenta los campos de la tabla en una cuadrícula desplazable.
Ficha Indices, Diseñador de tablas
Contiene una cuadrícula desplazable para la definición de índices.
Ficha Tabla, Diseñador de tablas
Presenta la información acerca de la tabla y le permite especificar desencadenadores y reglas de nivel de registro.

Secciones relacionadas

Diseñadores
Los diseñadores facilitan el diseño visual de ventanas, cuadros de diálogo y componentes de su aplicación.
Diseñador de clases
Utilice el Diseñador de clases para crear y modificar clases visualmente.
Diseñador de conexiones
Utilice el Diseñador 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.
Diseñador de entorno de datos
Utilice el Diseñador de entornos de datos para crear y modificar visualmente el entorno de datos de formularios, conjuntos de formularios e informes.
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.
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.
Diseñador de etiquetas
Utilice el Diseñador de etiquetas para crear y modificar etiquetas. Cuando la ventana del Diseñador de etiquetas está activa, Microsoft® Visual FoxPro® muestra el menú Informe y la barra de herramientas Controles de informes.
Diseñador de menús y menús contextuales
Utilice el Diseñador de menús y el Diseñador de menús contextuales para crear menús, elementos de menú, submenús de elementos de menú, líneas que separen grupos de elementos de menú relacionados, etc.
Diseñador de consultas y de vistas
Utilice el Diseñador de consultas y el Diseñador de vistas para crear y modificar consultas y vistas. Cuando se activa el Diseñador de consultas o el Diseñador de vistas, Microsoft® Visual FoxPro® muestra el menú Consulta y la barra de herramientas Consulta o la barra de herramientas Diseñador de vistas.
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, Microsoft® Visual FoxPro® muestra el menú Informe y la barra de herramientas Controles de informes.


Ficha Campos, Diseñador de tablas

El tabulador de Campos muestra información dependiendo del momento en que se abre una tabla de bases de datos o una tabla libre. Si se está creando un tabla de base de datos, el tabulador de Campos incluye opciones para configurar las reglas de validación. Si se está creando una tabla libre, el tabulador de Campos contiene solamente las opciones, nombre de Campo, tipo y formato.

El Tabulador de Campos muestra los campos de la tabla en un grid deslizable. Cada una de las filas contiene el nombre del campo, tipo de dato, ancho del carácter, ancho decimal, y soporte para valores nulos. Haga clic en una celda del grid para modificar un campo.

Botón Selector
Es el botón de la flecha de dos puntas que está a la izquierda de la fila. Una vez que haya introducido dos o más filas, utilice el botón selector para mover una fila hacia arriba o hacia abajo en la lista.
Nombre
Especifica el nombre del campo. No se aceptan espacios en blanco. Para tablas que pertenecen a una base de datos, la longitud del nombre puede ser de hasta 128 caracteres. Para mayor información, vea Creación de nombres en Visual FoxPro. (nota para el revisor: Poner aquí el nombre con que se haya traducido este link, borrar después lo que esta dentro del paréntesis)
Tipo
Especifica el tipo de datos del campo. Haga clic en la flecha desplegable para seleccionar un tipo de la lista.
Ancho
Especifica el número de caracteres o dígitos que puede almacenar el campo.
Decimal
Especifica el número de dígitos a la derecha del separador decimal. La columna Decimal se aplica a los tipos de datos numéricos y dobles.
Índice
Especifica un índice normal en el campo para ordenar los datos.
NULL
Cuando se activa, especifica que el campo puede aceptar valores nulos.
Botón Insertar
Inserta un nuevo campo sobre el campo seleccionado.
Botón Eliminar
Elimina el campo seleccionado de la tabla.
Display
Especifica la propiedad format para el ingreso y visualización del campo.

Format Especifica la expresión para case, size, y style cuando se muestra el campo en la ventana Browse, formularios o informes. La configuración de las propiedades dentro de un formulario o un informe pueden sobrescribir esta expresión.

Input mask Especifica el formato de los valores ingresados en el campo. Por ejemplo, los números de teléfono pueden tener un formato (999) 999-9999.

Caption Especifica la etiqueta que se mostrara para el campo en la ventana Browse, formularios, o informes. La Configuración de las propiedades dentro0 de un formulario o informe pueden sobrescribir esta configuración. Para especificar una expresión caption, incluya un signo igual (=) seguido de la cadena de caracteres. La expresión no puede ser superior a 254 caracteres. Si la expresión supera los 254 caracteres, el campo caption tendrá como valor predeterminado el nombre del campo.

Nota El soporte para el uso de expresiones en el campo caption deben ser utilizadas solo con tablas que pertenezcan a un DBC en aplicaciones que se ejecuten en Visual FoxPro 8.0 o posterior. En versiones anteriores, la expresión se muestra como una cadena literal.
Field validation
Si se modifica una tabla perteneciente a una base de datos, el grupo de opciones del Campo Propiedad se muestra debajo del grid deslizable.

Los valores de configuración de las propiedades para el campo seleccionado se especifican en esta área. Elija el botón de Dialogo a la derecha de cada propiedad para mostrar la Cuadro de diálogo Generador de expresiones, o escriba directamente la expresión. Valores para esta opción, no son obligatorios.

Rule Especifica la regla de Nivel de Campo para forzar la validación de datos.

Message Especifica el mensaje de error que se mostrará si un ingreso de datos viola la regla de validación del Nivel del Campo.

Default value Especifica el valor predeterminado para el campo

Map field type to classes
Para especificar un clase de control predeterminada, establezca la biblioteca y la clase que desea crear cuando se coloque un campo dentro de un formulario mediante la operación de arrastrar y soltar.

Display library Especifica la ruta y el nombre de archivo para la biblioteca de clase. Para examinar en busca del archivo, utilice el botón de dialogo.

Display class Especifica el control de clase predeterminado para un campo.

AutoIncrement
Establece el valor inicial y el valor de incremento después de activar la opción de autoincrementar en un campo, seleccione valores para Next Value y Step utilizando los spin boxes. Para mayor información, vea Autoincremento de valores en campos de una tabla.

Next Value Especifica el valor de inicio para un campo que utilice autoincremento. Puede seleccionar un valor entero positivo o negativo dentro del rango 2,147,483,647 a -2,147,483,647. El valor predeterminado es 1.

Step Especifica el valor de incremento para un campo que utilice autoincremento. Puede seleccionar un valor entero positivo que no sea cero comprendido entre 1 y 255. El valor predeterminado es 1.

Comentario de campo
Proporciona un espacio para escribir notas acerca del campo.

Vea también

Cuadro de diálogo Generador de expresiones | Ficha Indices, Diseñador de tablas | Asistente para tablas | Creación de nombres en Visual FoxPro | Diseñador de tablas


Ficha Indices, Diseñador de Tablas

La ficha Índice aparece en el Diseñador de tablas. Contiene una cuadrícula desplazable para la definición de índices. La cuadrícula tiene cuatro columnas.

Botón Selector
Es el botón de la flecha de dos puntas que está a la izquierda de la fila. Una vez que haya introducido dos o más filas, utilice el botón selector para mover una fila hacia arriba o hacia abajo en la lista.
Orden
Especifica el orden para el índice. Una flecha arriba indica un orden ascendente; una flecha abajo, descendente.
Nombre
Especifica el nombre de etiqueta para el índice. El botón de flecha izquierda del nombre de índice especifica el orden ascendente o descendente. Seleccione el índice y, después, haga clic en el botón de flecha para cambiar el orden.
Tipo
Especifica el tipo de índice: Principal (sólo si la tabla está contenida en una base de datos), Candidato o Regular (el predeterminado). Cuando hace clic en una celda de esta columna, aparece una lista desde la cual puede seleccionar un tipo. No se requiere una entrada en este campo.

Sólo se puede establecer un índice de una tabla como Principal en la columna Tipo.

Nota Si una tabla contiene una etiqueta de índice única, el Diseñador de tablas mostrará este tipo, aunque ya no incluye esta opción de etiqueta.
Expresión
Especifica la expresión de índice, como un nombre de campo. Haga clic en el botón para crear o modificar una expresión en el cuadro de diálogo Generador de expresiones. Una expresión puede tener hasta 240 caracteres.
Filtro
Especifica la expresión de filtro. Haga clic en el botón para crear o modificar una expresión en el cuadro de diálogo Generador de expresiones.
Ordenación
Especifica una secuencia de ordenación para la etiqueta de índice. Haga clic en la flecha para seleccionar una secuencia de ordenación de Visual FoxPro en la lista desplegable. La configuración predeterminada es "Machine".
Botón Insertar
Inserta un nuevo índice sobre el índice seleccionado en la cuadrícula.
Botón Eliminar
Elimina el índice seleccionado de la cuadrícula.

Vea también

Cuadro de diálogo Generador de expresiones | FOR( ) (Función) | INDEX (Comando) | SYS(14) - Expresión de índice | SYS(2021) - Expresión de índice filtrado | Diseñador de tablas | Ficha Tabla, Diseñador de tablas | Asistente para tablas

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Ficha Tabla, Diseñador de tablas

La ficha Tabla aparece en el Diseñador de tablas. Contiene información de sólo lectura acerca de la tabla y áreas para establecer la regla de validación a nivel de registro y el texto de error de validación, desencadenadores y observaciones.

Nota Si está modificando una tabla libre, en esta ficha únicamente se presentan las estadísticas de sólo lectura para la tabla. Una tabla libre no puede tener asociadas reglas, desencadenadores ni observaciones.
Nombre
Especifica el nombre de la tabla que se está creando o modificando.

Para las tablas de base de datos, el nombre de la tabla aparece en el Administrador de proyectos; no es el nombre de archivo. Se admiten nombres largos de hasta 128 caracteres.

Base de datos
Presenta el nombre de la base de datos a la que pertenece la tabla si la tabla no es una tabla libre. Este cuadro es de sólo lectura.

Estadísticas

Presenta información de sólo lectura acerca de la tabla.

Archivo de tabla
Presenta la ruta de acceso y el nombre de archivo para la tabla.
Registros
Presenta la cantidad de filas almacenadas actualmente en la tabla.
Campos
Presenta la cantidad de columnas definidas en la estructura de la tabla.
Longitud
Presenta la longitud de la tabla.

Validación de registros

Establece la regla de validación a nivel de fila, el texto de error de validación y un comentario para la tabla. El botón a la derecha de cada valor presenta el cuadro de diálogo Generador de expresiones.

Regla de validación
Especifica una regla a nivel de registro para reforzar la validación de datos.
Texto de validación
Especifica el mensaje de error que se va a mostrar si una entrada no se adecua a la regla de validación a nivel de registro.

Desencadenadores

Especifica reglas para actualizaciones, inserciones y eliminaciones.

desencadenante INSERT
Especifica una regla que se va a desencadenar cada vez que se inserta o anexa un registro a la tabla. Haga clic en el botón de cuadro de diálogo para presentar el cuadro de diálogo Generador de expresiones.
desencadenante UPDATE
Especifica una regla que se va a desencadenar cada vez que se actualice un registro en la tabla. Haga clic en el botón de cuadro de diálogo para presentar el cuadro de diálogo Generador de expresiones.
desencadenante DELETE
Especifica una regla que se va a desencadenar cada vez que se elimine un registro de la tabla. Haga clic en el botón de cuadro de diálogo para presentar el cuadro de diálogo Generador de expresiones.
Comentario de tabla
Proporciona un espacio para que escriba un comentario acerca de la tabla. Lo que escriba aquí aparecerá como la descripción en la parte inferior del Administrador de proyectos cuando se seleccione la tabla.

Vea también

Cuadro de diálogo Generador de expresiones | FOR( ) (Función) | INDEX (Comando) | SYS(14) - Expresión de índice | SYS(2021) - Expresión de índice filtrado | Ficha Tabla, Diseñador de tablas | Asistente para tablas | Diseñador de tablas


Cuadros de diálogo

En esta sección se explican las opciones que aparecen en varios cuadros de diálogo.

En esta sección

Cuadro de diálogo Acerca de Microsoft Visual FoxPro
Muestra información sobre el copyright, licencia y versión de Visual FoxPro, también su número de identificación del producto.
Cuadro de diálogo Agregar archivos al control de código fuente
Agrega un archivo o archivos seleccionados en su proyecto al control de código fuente.
Cuadro de diálogo Agregar tabla o vista
Permite seleccionar una o más tablas o vistas existentes en las cuales basar una nueva consulta o vista local.
Cuadro de diálogo Opciones avanzadas
Permite ajustar como se recuperan los registros en una vista o como actualizar en el servidor o tablas de origen.
Cuadro de diálogo Anexar desde
Este cuadro de diálogo le permite agregar registros a la tabla o vista actual desde otra tabla, una hoja de cálculo o un archivo de texto.
Cuadro de diálogo Opciones de Anexar desde
Especifica campos que se agregan y permite generar una expresión que debe cumplirse para los registros que se agregan.
Cuadro de diálogo Organizar tablas y vistas
Permite cambiar el diseño de tablas y vistas de la base de datos.
Cuadro de diálogo Opciones de presentación
Cuadro de diálogo Permite especificar formato de texto y estilos de indentación para el texto en la ventana modificar.
Cuadro de diálogo Puntos de interrupción
Permite especificar opciones para puntos de interrupción.
Cuadro de diálogo Opciones para generar
Permite crear una aplicación personalizada o actualizar un proyecto existente.
Cuadro de diálogo Calcular campo
Permite seleccionar una operación matemática para crear un campo calculado.
Cuadro de diálogo Cambiar icono
Especifica un icono a utilizar para un objeto incrustado o vinculado en un formulario o en un campo General de una tabla.
Cuadro de diálogo Proteger archivos
Protege las modificaciones realizadas en el directorio de trabajo del entorno de programación a la base de datos de control de código fuente.
Cuadro de diálogo Desproteger archivos
Desprotege una copia de los archivos seleccionados del proveedor de control de código fuente y coloca una copia en la que se puede escribir en el correspondiente directorio de trabajo del entorno de programación.
Cuadro de diálogo Elegir campo o variable
Especifica un campo de una tabla o una variable.
Cuadro de diálogo Información de clase
Muestra varios atributos de miembros de clase, su apariencia en tiempo de diseño y si están o no protegidos.
Cuadro de diálogo Página de códigos
Permite asignar una página de códigos a un archivo .dbf o archivo de texto que no tiene una.
Cuadro de diálogo Pie de columna
Establece la altura y otras opciones para la banda Pie de columna en una etiqueta o informe de varias columnas.
Cuadro de diálogo Encabezado de columna
Establece el alto y otras opciones de la banda Encabezado de columna en una etiqueta o un informe de varias columnas.
Cuadro de diálogo Comentarios
Permite ingresar notas o observaciones para identificar la consulta o vista y su propósito.
Cuadro de diálogo Compilar
Permite compilar archivos de programa, menú o consulta.
Cuadro de diálogo Conexiones
Permite crear y mantener conexiones de bases de datos.
Cuadro de diálogo Trayecto
Permite especificar opciones para el registro de la ejecución del programa.
Cuadro de diálogo Crear
Permite especificar el directorio, nombre y tipo de archivos nuevos.
Cuadro de diálogo Crear relaciones uno a varios
Establece una relación uno a varios, en la cual la tabla secundaria puede contener varios registros que corresponden a un registro en la tabla primaria.
Cuadro de diálogo Agrupar datos
Le permite crear bandas de grupos para la separación visual de grupos de registros y la visualización de los datos de introducción y resumen para cada grupo.
Cuadro de diálogo Propiedades de la base de datos
Le permite elegir el tipo de objetos de base de datos que se muestran en el Diseñador de bases de datos.
Cuadro de diálogo Definir diseño de ventana
Le permite dar nombre y guardar configuraciones de ventanas y de barras de herramientas para su reutilización.
Cuadro de diálogo Eliminar registros
Permite marcar registros para borrado.
Cuadro de diálogo Descripción
Proporciona un cuadro de texto donde puede escribir una breve descripción que identifica un archivo.
Cuadro de diálogo Detalle
Establece altura y otras opciones para la banda Detalle en un informe o etiqueta.
Cuadro de diálogo Ejecutar
Le permite especificar un archivo de programa o formulario para ejecutarlo.
Cuadro de diálogo Modificar bandas
Este cuadro de diálogo muestra una lista de las bandas disponibles que le permiten modificar directamente las acciones alto, entrada y salir.
Cuadro de diálogo Modificar vínculos
Le permite cambiar o romper un vínculo.
Cuadro de diálogo Modificar propiedades
Le permite establecer opciones de edición para la ventana de edición actual o establecer opciones de color y fuente para todas las sesiones de edición.
Cuadro de diálogo Modificar propiedades y métodos
Le permite agregar nuevas propiedades y métodos, o modificar propiedades y métodos existentes.
Cuadro de diálogo Modificar relación
Permite alterar relaciones persistentes entre tablas.
Cuadro de diálogo Seguimiento de eventos
Permite ver cuándo se produce cada evento en relación a otros eventos.
Cuadro de diálogo Versión EXE
Muestra información acerca del número de versión, así como otra información suministrada por usted.
Cuadro de diálogo Velocidad de ejecución
Permite especificar el retardo en segundos entre la ejecución de cada línea de código que esté en la ventana Seguimiento.
Cuadro de diálogo Exportar
Permite exportar datos desde tablas de Visual FoxPro a un archivo de texto, hoja de cálculo o tabla con un formato común.
Cuadro de diálogo Opciones de exportación
Especifica los registros y campos que va a exportar.
Cuadro de diálogo Generador de expresiones
Le permite crear y modificar expresiones. Una expresión puede ser tan simple como el nombre de un campo o tan compleja como un cálculo que incluya funciones IF inmediatas, concatenaciones y conversiones de tipos de datos.
Cuadro de diálogo Opciones del Generador de expresiones
Establece las preferencias para los elementos mostrados en el Generador de expresiones.
Cuadro de diálogo Buscador de archivos
Le permite realizar búsquedas basadas en criterios especificados.
Cuadro de diálogo Buscar
Permite buscar texto.
Cuadro de diálogo Buscar tabla o vista
Le permite seleccionar una tabla o vistas que no puede localizar en el esquema de la base de datos mostrado en el Diseñador de bases de datos.
Cuadro de diálogo Fuente
Controla el tipo, estilo y tamaño de fuentes en un archivo de texto, campo o control label en un informe o etiqueta, o en la ventana Comandos.
Cuadro de diálogo Formato (Campo)
Especifica el valor de una expresión en un control de campo.
Cuadro de diálogo Opciones generales
Le permite especificar código para un sistema de menús completo.
Cuadro de diálogo Generar menú
Le permite especificar un nombre para el programa de menú generado y, a continuación, generar el programa.
Cuadro de diálogo Obtener la última versión de los archivos
Obtiene los archivos seleccionados del proveedor de control de código fuente y coloca una copia local en el Administrador de proyectos.
Cuadro de diálogo Ir a la línea
Le permite mover el punto de inserción a la línea designada de un archivo de programa o texto, o en la ventana Comandos.
Cuadro de diálogo Ir al registro
Especifica el registro al que desea mover el puntero.
Cuadro de diálogo Pie de grupo
Establece opciones de alto y expresiones de banda para la banda Pie de grupo de un informe o etiqueta.
Cuadro de diálogo Encabezado de grupo
Establece opciones de alto y expresiones de banda para la banda Encabezado de grupo de un informe o etiqueta.
Cuadro de diálogo Condiciones
Especifica las condiciones para seleccionar qué grupos de registros se incluirán en el resultado de la consulta.
Cuadro de diálogo Importar
Permite importar datos a una tabla desde una hoja de cálculo u otro formato de tabla.
Cuadro de diálogo Archivo tipo Include
Le permite especificar un archivo de tipo Include que contenga constantes de tiempo de compilación predefinidas para una clase, un formulario o un conjunto de formularios definidos por el usuario.
Cuadro de diálogo Insertar objeto
Presenta los objetos OLE que puede vincular o incrustar en la aplicación para formularios o campos General de tablas de Visual FoxPro.
Cuadro de diálogo Insertar referencia de objeto
Le permite ver el nombre de todos los objetos en el diseñador e insertar una referencia completamente cualificada al objeto en su código.
Cuadro de diálogo Insertar barra de menús del sistema
Le permite agregar menús y opciones de menú a la ventana Diseñador de menús.
Cuadro de diálogo Condición de combinación
Especifica una condición de combinación entre tablas.
Cuadro de diálogo Encontrar base de datos
Le permite ubicar o ignorar una tabla o vista que falte.
Cuadro de diálogo Encontrar archivo
Permite ubicar o ignorar un archivo o grupo de archivos dañados.
Cuadro de diálogo Encontrar registro
Busca un registro en la tabla o vista activa que coincida con las condiciones especificadas.
Cuadro de diálogo Buscar referencia
Permite buscar y reemplazar referencias de código o texto en proyectos o carpetas.
Caja de diálogo Buscar referencia, cuadro de diálogo Opciones
Establece opciones adicionales para buscar referencias de código.
Cuadro de diálogo Macros
Le permite definir combinaciones de teclas con las teclas de función, CTRL o ALT para ejecutar una serie de pulsaciones de teclas.
Cuadro de diálogo Opciones de menú
Permite especificar código para un menú específico.
Cuadro de diálogo Más ventanas
Muestra una lista de ventanas activas desde la cual puede elegir.
Cuadro de diálogo Mover elemento
Permite cambiar la ubicación de un menú o ítem de menú.
Cuadro de diálogo Nueva clase
Especifica información para una nueva clase, la cual se utiliza en el Diseñador de clases.
Cuadro de diálogo Nuevo
Permite crear nuevos archivos utilizando diseñadores y asistentes.
Cuadro de diálogo Nuevo archivo
Permite crear nuevos formularios, informes, etiquetas o consultas, dependiendo del tipo de archivo seleccionado actualmente en el Administrador de proyectos.
Cuadro de diálogo Nueva etiqueta
Muestra tipos de etiquetas Avery predefinidos.
Cuadro de diálogo Nueva vista local
Le permite crear una vista de tablas locales u otras vistas de la base de datos por medio del Asistente para vistas locales o del Diseñador de vistas.
Cuadro de diálogo Nuevo método
Permite crear un nuevo método y especifica la descripción y visibilidad del método.
Cuadro de diálogo Nueva propiedad
Permite crear un nuevo método y especifica la descripción y visibilidad de la propiedad.
Cuadro de diálogo Nueva vista remota
Permite crear una vista remota utilizando el Diseñador de vistas o el Asistente para vistas remotas.
Cuadro de diálogo Nueva tabla
Permite crear una nueva tabla en la base de datos utilizando el Diseñador de tablas o el Asistente para tablas.
Cuadro de diálogo Abrir
Permite abrir un archivo existente o crear un nuevo archivo.
Cuadro de diálogo Abrir imagen
Permite abrir un archivo gráfico existente.
Cuadro de diálogo Opciones
Permite establecer diferentes categorías de opciones.
Cuadro de diálogo Pie de página
Establece altura y otras opciones para la banda Pie de página en un informe o etiqueta.
Cuadro de diálogo Encabezado de página
Establece altura y otras opciones para la banda Encabezado de página en un informe o etiqueta.
Cuadro de diálogo Configurar página
Permite ajustar el ancho en columnas y el formato de página para los informes o etiquetas.
Cuando de diálogo Personalización del Panel
Utilizado para crear, modificar y borrar paneles en el Administrador del panel de tareas.
Cuadro de diálogo Pegado especial
Permite vincular o incrustar un objeto OLE desde el Portapapeles.
Cuadro de diálogo Imprimir
Permite imprimir un archivo de texto, informe, etiqueta o el contenido de la ventana de Comandos o el Portapapeles.
Cuadro de diálogo Imprimir archivo
Permite buscar un archivo a imprimir en una unidad o directorio.
Cuadro de diálogo Opciones de impresión
Le permite imprimir un archivo de texto, un informe, una etiqueta o el contenido de la ventana Comandos o el Portapapeles.
Cuadro de diálogo Configurar impresión
Selecciona una impresora, una ruta de acceso a la impresora y una configuración de papel.
Cuadro de diálogo Imprimir-Condiciones
Permite la impresión condicional de un objeto basado en el valor de una expresión y controla cómo se imprimen los objetos cuando las bandas son continuas.
Cuadro de diálogo Información del proyecto
Permite ver y modificar información acerca del proyecto y sus archivos.
Cuadro de diálogo Opciones de la acción
Permite especificar opciones de acciones en un sistema de menús personalizado.
Cuadro de diálogo Destino de la consulta
Le permite enviar el resultado de su consulta a siete destinos diferentes. Este comando sólo está disponible para las consultas.
Cuadro de diálogo Informe rápido
Permite seleccionar campos y un diseño de campo para un informe.
Cuadro de diálogo Desmarcar registros
Permite desmarcar los registros que se han marcado para su eliminación.
Cuadro de diálogo Rectángulo/Línea
Especifica la posición y las opciones de impresión para los controles de rectángulo y línea.
Cuadro de diálogo Quitar archivos del control de código fuente
Quita los archivos seleccionados del proyecto del control de código fuente.
Cuadro de diálogo Cambiar el nombre del archivo
Permite renombrar el archivo seleccionado.
Cuadro de diálogo Reemplazar
Le permite buscar y reemplazar el texto especificado en el archivo actual.
Cuadro de diálogo Reemplazar campo
Cambia los valores almacenados en un registro o intervalo de registros.
Cuadro de diálogo Opciones de impresión de informes y etiquetas
Este cuadro de diálogo aparece cuando hace clic en Opciones en el cuadro de diálogo Opciones de impresión.
Cuadro de diálogo Bandas del diseñador de informes
Incluye opciones para columna, grupo y encabezados y pies de página , títulos, etcétera..
Cuadro de diálogo Expresión de informe
Define el contenido de un control de campo en un informe.
Cuadro de diálogo Imagen para informe
Le permite incluir mapas de bits, iconos u otra información de un campo de tabla General en el informe o etiqueta.
Cuadro de diálogo Variables del informe
Le permite crear variables de memoria en un informe.
Cuadro de diálogo Rectángulo redondeado
Especifica la forma, la posición y las opciones de impresión para controles de tipo rectángulo redondeado.
Cuadro de diálogo Guardar como clase
Le permite guardar un formulario, o los controles seleccionados de un formulario, como una definición de clase.
Cuadro de diálogo Guardar como
Guarda un nuevo archivo o un archivo existente con un nombre diferente.
Cuadro de diálogo Guardar como HTML
Permite crear una nueva versión HTML del formulario, menú, informe o tabla actual.
Cuadro de diálogo Alcance
Especifica sobre qué registros de la tabla o vista actual actúa Visual FoxPro.
Cuadro de diálogo Seleccionar conexión u origen de datos
Permite seleccionar un origen de datos o una conexión existente a un origen de datos para crear una nueva vista remota.
Cuadro de diálogo Seleccionar
Permite seleccionar un Servicio Web XML e inserta código para él en un programa o o ventana modificar código.
Cuadro de diálogo Configurar cuadrícula
Le permite definir incrementos horizontales y verticales de la cuadrícula en píxeles, y (para informes y etiquetas) especifica si la regla se muestra en unidades del sistema o en píxeles.
Cuadro de diálogo Establecer orden de índice
Fija el orden de índice para una tabla secundaria.
Cuadro de diálogo Ortografía
Permite comprobar ortografía en un archivo de texto o campo memo.
Cuadro de diálogo Resumen
Establece altura y otras opciones para la banda Resumen en un informe o etiqueta.
Cuadro de diálogo Orden de tabulación
Ajusta el orden que se sigue para tener acceso a los objetos del formulario mediante el teclado.
Cuadro de diálogo Opciones del panel de tareas
Personaliza el Administrador del panel de tareas y los paneles individuales que contiene.
Cuadro de diálogo Título
Establece el alto y otras opciones de la banda Título en un informe o etiqueta.
Cuadro de diálogo Título y resumen
Permite especificar si se incluye una banda Título o Resumen en un informe.
Cuadro de diálogo Barras de herramientas
Permite crear, modificar, ocultar y personalizar barras de herramientas.
Cuadro de diálogo Deshacer desproteger archivos
Sobrescribe las modificaciones realizadas a un archivo y copia la última versión protegida al directorio de trabajo del entorno de programación.
Cuadro de diálogo Actualizar la lista de proyectos
Muestra el resultado de la actualización de la lista de proyectos.
Cuadro de diálogo Parámetros de vista
Configura vistas que piden que se escriba un valor para completar la vista.
Cuadro de diálogo Convertidor de Visual FoxPro
Permite abrir archivos creados en una versión anterior de Visual FoxPro.
Cuadro de diálogo Transportador de Visual FoxPro
Le permite transportar formularios, etiquetas e informes a través de distintas plataformas y versiones de FoxPro.
Cuadro de diálogo Localización de Servicios Web XML de Visual FoxPro
Especifica una Uniform Resource Locator (URL) local o directorio virtual para publicar un Servicio Web XML.
Cuadro de diálogo de Publicación Servicios XML Web de Visual FoxPro
Especifica información para publicar Servidores COM (.dll) de Visual FoxPro como Servicios Web XML que pueden accederse en la Web.
Servicio Web XML - Cuadro de diálogo Registrar
Especifica información para registrar un Servicio Web XML para poder usarlo en las aplicaciones.
Cuadro de diálogo Selección de los asistentes
Muestra una lista de asistentes en la que puede elegir.
Cuadro de diálogo Propiedades del área de trabajo
Le permite modificar la estructura de una tabla, seleccionar archivos de índice y campos, y definir filtros.
Servicios Web XML - Cuadro de diálogo Detalle de cliente
Permite especificar el control o cliente para el cual se desea enlazar los resultados de una operación Servicio Web XML.
Servicios Web XML - Cuadro de diálogo Tipos complejos
Permite especificar información para tipos complejos como tabla y nombres de campo para una operación Servicio Web XML que devuelve ADO.NET DataSets o nombres de propiedad para un objeto devuelto.
Servicios Web XML - Cuadro de diálogo - Detalles de la operación
Permite elegir operaciones o métodos específicos del Servicio Web XML, que desea llamar desde la aplicación. También puede especificar valores de parámetros para estas operaciones.
Servicios Web XML - Cuadro de diálogo Valores de parámetros
Permite establecer valores de parámetros o es especificar un control y su propiedad como un parámetro origen para una operación de Servicio Web XML seleccionada.
Cuadro de diálogo Zoom
Muestra el valor de texto para la propiedad seleccionada.

Secciones relacionadas

Referencia de interfaz de usuario
Explica las opciones que aparecen en diversos cuadros de diálogo, ventanas y otras interfaces de usuario. Normalmente estos tipos de temas aparecen cuando presiona F1 en un cuadro de diálogo o en una ventana.
Desarrollar aplicaciones Visual FoxPro
Incluye información conceptual acerca de como desarrollar aplicaciones Visual FoxPro, instrucciones para crear bases de datos y la interfaz de usuario y otras tareas necesarias para crear aplicaciones Visual FoxPro.
Programar en Visual FoxPro
Describe como comprender las técnicas de programación orientada a objetos y el modelo controlado por eventos puede aumentar su productividad como programador y habilitarlo para acceder a toda la potencia de Visual FoxPro.
Referencia
Incluye temas acerca de las herramientas de productividad además de los controles, los objetos, las propiedades, los métodos, los eventos, las instrucciones, las funciones y las constantes disponibles.
Programas de utilidad
Estas herramientas se ofrecen junto con Microsoft Visual FoxPro para acelerar el proceso de programación de la aplicación.


Cuadro de diálogo Acerca de Microsoft Visual FoxPro

Muestra el copyright, la licencia, la información de versión y el número de identificación de producto de Visual FoxPro.

Para mostrar este cuadro de diálogo

  • En el menú Ayuda, elija Acerca de Microsoft Visual FoxPro.
Información del sistema
Muestra la herramienta Microsoft System Information que contiene la información de configuración del sistema. Para tener acceso a información de ayuda acerca de Microsoft System Information, presione F1 o elija Temas de Ayuda en el menú Ayuda de Microsoft System Information.

Vea también

SET HELP TO | HELP (Comando) | Ayuda HTML | WinHelp 4.0


Cuadro de diálogo Agregar archivos al control de código fuente

Agrega los archivos seleccionados en el proyecto al control de código fuente.

Archivos para agregar
Muestra todos los archivos que puede agregar al control de código fuente.
Mantener desprotegido
Actualiza la base de datos de control de código fuente con sus modificaciones pero conserva el archivo desprotegido.
Comentarios
Muestra un comentario asociado a un archivo o le permite agregar o cambiar un comentario.

Vea también

Cuadro de diálogo Deshacer desproteger archivos | Cuadro de diálogo Quitar archivos del control de código fuente | Compilar código fuente


Cuadro de diálogo Agregar tabla o vista

Aparece cuando elige Consulta o Vista local en el cuadro de diálogo Nuevo y, a continuación, elige Nuevo archivo. En este cuadro de diálogo, se seleccionan una o más tablas o vistas existentes en las que se basa la nueva consulta o vista local.

Base de datos
Muestra la base de datos actual de forma predeterminada y le permite seleccionar otra base de datos.
Tablas o Vistas de la base de datos
Muestra las tablas o vistas de la base de datos actual, según la opción que seleccione: Tablas o Vistas.
Alias
Especifica un alias en lugar del alias generado automáticamente, que se utilizará para referenciar la tabla o vista seleccionada.
Añadir
Añade una tabla o vista.
Otras
Muestra el cuadro de diálogo Abrir, desde el cual puede seleccionar una tabla libre para agregar a la consulta.
Tablas
Muestra las tablas de la base de datos actual en el cuadro Tablas de la base de datos.
Vistas
Muestra las vistas de la base de datos actual en el cuadro Vistas de la base de datos.

Vea también

Cuadro de diálogo Agregar tabla o vista | Cuadro de diálogo Condición de combinación | Cuadro de diálogo Organizar tablas y vistas | Consultar múltiples tablas y vistas | Cuadro de diálogo Nuevo | Cuadro de diálogo Abrir

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Cuadro de diálogo Opciones avanzadas

Le permite poder ajustar la forma en que se recuperan los registros de una vista o cómo se hacen las actualizaciones en el servidor o las tablas de origen. Este comando solo está disponible para las vistas.

Información de conexión

Nombre de conexión y origen de datos
Muestra el nombre de la conexión o el origen de datos utilizado para tener acceso a los datos de la vista.
Conexión con recurso compartido
Especifica que Visual FoxPro va a usar la misma conexión para las nuevas vistas que cree. Esta opción se aplica sólo a datos remotos (ODBC). Si tiene actualmente una conexión configurada, puede establecer esta opción a Usar conexión actual para las nuevas vistas.

Búsqueda de datos

Número de registros para buscar a la vez
Controla cuántos registros se devuelven a la vez desde el servidor ODBC o el origen de datos remoto. Por ejemplo, si ejecuta una consulta que devuelve 1000 registros y establece esta opción en 100, cuando ejecute la vista se mostrarán los primeros 100 registros, mientras que los restantes registros se buscarán en bloques de 100 al continuar explorando los resultados. Al hacer clic en Todos este valor se establece en -1, lo que indica que se deben devolver todos los registros en la primera operación de búsqueda.
Número máximo de registros para buscar
Limita el número total de registros que devuelve una vista. Al hacer clic en Todos, el valor que se establece indica que se deben devolver todos los registros.
Usar memo cuando la longitud del campo carácter >=
Determina cuándo los campos de caracteres largos deberían convertirse en campos memo en el resultado de la vista.

Rendimiento

Número de registros para actualizar por lotes
Especifica el número de registros para actualizar con un único comando. Para obtener más información, consulte el comando REPLACE y las cláusulas Scope.
Buscar memo
Busca campos Memo en el origen de datos sólo cuando se activa un campo memo en el resultado de la vista.
Incluir campos memo en la cláusula WHERE
Especifica que cuando Visual FoxPro compara un registro guardado localmente con uno del servidor, comprueba si hay modificaciones; los campos memo deben incluirse en esta comparación. Algunos orígenes de datos no admiten esta opción; en este caso, la inclusión de un campo memo puede causar que el servidor informe de modificaciones, incluso si los registros son los mismos.
Precompilar SQL en el servidor
Especifica que Visual FoxPro pasa la consulta SQL al servidor para que se compile antes de ejecutarse. Si el servidor admite esta opción, las consultas se pueden ejecutar mucho más rápido que si no estuvieran compiladas.

Vea también

Cuadro de diálogo Parámetros de vista | Cuadro de diálogo Comentarios | Diseñador de consultas y de vistas | REPLACE (Comando) | Alcance (Cláusulas) | Cuadro de diálogo Destino de la consulta


Cuadro de diálogo Anexar desde

Le permite agregar registros a la tabla o vista actual desde otra tabla, una hoja de cálculo o un archivo de texto. Este cuadro de diálogo se muestra cuando selecciona Anexar registros en el menú Tabla.

Tipo
Especifica el tipo de archivo desde el que quiere anexar registros.
Desde
Proporciona espacio para que escriba el nombre del archivo desde el que quiere anexar registros. Si no conoce el nombre, elija el botón de cuadro de diálogo para mostrar el cuadro de diálogo Abrir y seleccione el archivo deseado.
Para
Muestra la ruta de acceso y el nombre de archivo de la tabla o vista a la que se van a anexar los registros.
Opciones
Muestra el cuadro de diálogo Opciones de Anexar desde, en el que puede especificar los campos que desea anexar y generar una expresión que deben cumplir los registros que se van a anexar.

Para obtener más información, vea Proceso de anexión de datos en Importar y exportar datos.

Vea también

Cuadro de diálogo Opciones de Anexar desde | APPEND FROM (Comando) | Ventana Examinar | Cuadro de diálogo Abrir | Agregar registros | APPEND (Comando)


Cuadro de diálogo Opciones de Anexar desde

Especifica los campos que desea anexar y le permite generar una expresión que los registros que se anexen deben cumplir. Este cuadro de diálogo aparece cuando elige Opciones en el cuadro de diálogo Anexar desde.

Criterios

Campos
Muestra el cuadro de diálogo Selector de campos, en el que puede seleccionar campos para anexar.
FOR
Muestra el cuadro de diálogo Generador de expresiones, en el que puede crear una expresión FOR que todos los registros que se anexen deben cumplir.

Vea también

Cuadro de diálogo Anexar desde | Cuadro de diálogo Generador de expresiones | Cuadro de diálogo Selector de campos | Cuadro de diálogo Eliminar registros | APPEND FROM (Comando) | APPEND (Comando)


Cuadro de diálogo Organizar tablas y vistas

Le permite cambiar el diseño de tablas y vistas de la base de datos. Use este cuadro de diálogo para organizar, alinear o cambiar el tamaño de tablas y vistas en el diseño de la base de datos.

Este cuadro de diálogo aparece cuando selecciona Organizar en el menú Base de datos.

Organizar

Estas opciones le permiten ordenar el contenido del diseño de la base de datos.

Por nombre
Ordena las tablas y las vistas por nombre.
Por tipo
Ordena las tablas por un lado y las vistas por otro.

Alinear objetos

Estas opciones le permiten colocar el contenido del diseño de la base de datos en una línea.

Verticalmente
Coloca los objetos en una línea vertical en la ventana del Diseñador de bases de datos.
Horizontalmente
Coloca los objetos en una línea horizontal en la ventana del Diseñador de bases de datos.
Cambiar tamaño de los objetos al alto y el ancho predeterminados
De forma predeterminada, los objetos de la base de datos muestran cinco campos. Si ha cambiado el tamaño de los objetos para ver más del contenido del objeto, puede volver al tamaño predeterminado.

Vea también

Cuadro de diálogo Conexiones | Cuadro de diálogo Propiedades de la base de datos | Agregar tablas a bases de datos | Actualizar múltiples tablas en una vista | Cuadro de diálogo Nueva vista local | Cuadro de diálogo Buscar tabla o vista | Diseñador de bases de datos


Cuadro de diálogo Opciones de presentación

Le permite especificar el uso de las mayúsculas y los estilos de sangría en el texto de la ventana de edición. Este comando aparece cuando abre un programa o archivo de texto en una ventana de edición.

Uso de mayúsculas

Palabras clave
Proporciona cuatro formas de representar las palabras clave. Las palabras clave pueden tener formato de MAYÚSCULAS, minúsculas, Mayúsculas y minúsculas mezcladas o Sin cambios.
Símbolos
Proporciona cuatro formas de representar los símbolos. Los símbolos pueden tener formato de MAYÚSCULAS, minúsculas, Coincidir con la primera aparición o Sin cambios.

Coincidir con la primera aparición sólo afecta a los símbolos disponibles en la ventana de edición actual.

Sangría

Tipo de sangría
Proporciona tres formas de aplicar sangría al texto. Se puede aplicar sangría al texto mediante Tabulaciones, Espacios o Sin cambios.

Si se selecciona Espacios, escriba o seleccione el número de espacios para aplicar la sangría al texto mediante el control numérico Espacios.

Texto para aplicar sangría
Le permite especificar a qué tipos de texto se debe aplicar la sangría.

Comentarios hace que se aplique la sangría a todas las líneas de texto que comiencen con el identificador de comentario *.

Continuación de línea hace que se aplique la sangría a las líneas que siguen al punto y coma (;) (utilizado para indicar la marca de continuación de la primera línea). La sangría para la Continuación de línea continua al mismo nivel hasta que se escriba una nueva línea de comandos.

Sangría adicional por debajo
Proporciona una sangría adicional para las líneas que siguen al principio de los procedimientos y las estructuras de control DO CASE.

Vea también

Ventana Modificar | _BEAUTIFY (Variable del sistema) | Cuadro de diálogo Macros


Cuadro de diálogo Puntos de interrupción

Permite especificar opciones para los puntos de interrupción.

Este cuadro de diálogo se muestra cuando elige Puntos de interrupción en el menú Herramientas de la ventana Depurador.

Tipo
El tipo del punto de interrupción. Elija una de las configuraciones siguientes.
Valor | Descripción
Punto de interrupción en la ubicación | Detiene la ejecución en una línea de código.
Punto de interrupción en la ubicación si la expresión es verdadera | Detiene la ejecución en una línea de código cuando una expresión da como resultado verdadero.
Punto de interrupción cuando la expresión es verdadera | Detiene la ejecución cuando una expresión da como resultado verdadero.
Punto de interrupción cuando la expresión ha cambiado | Detiene la ejecución cuando cambia el valor de una expresión.
Ubicación
Dónde se debe suspender la ejecución. La ubicación puede ser un programa, un procedimiento o un método o evento específicos. Puede suspender la ejecución del programa en una línea determinada en la ubicación si incluye el número de línea después de la ubicación y una coma.
Sugerencia Para mostrar números de línea en la ventana Seguimiento, elija Mostrar los números de línea en la ficha Depurar, cuadro de diálogo Opciones.
Archivo
El archivo en el que se encuentra la ubicación. El archivo puede ser un archivo de programa, de formulario o de clase. Si no especifica ningún nombre de archivo, el punto de interrupción se evalúa para cualquier método o procedimiento con el mismo nombre que el método o procedimiento del cuadro Ubicación.
Cuenta de pasos
El número de veces que una línea de código del cuadro Ubicación se debe ejecutar antes de que se suspenda la ejecución del programa.
Sugerencia Utilice Cuenta de pasos con bucles en los que se presenten problemas sólo después de un número determinado de repeticiones.
Expresión
Cualquier expresión válida de Visual FoxPro. Especifique aquí la expresión al elegir Punto de interrupción cuando la expresión es verdadera o Punto de interrupción en la ubicación si la expresión es verdadera de la lista Tipo.
Puntos de interrupción
Enumera todos los puntos de interrupción que se han agregado. Los puntos de interrupción activados tienen una marca de verificación, y se activan y desactivan con los botones Activar y Desactivar.

Todos los puntos de interrupción enumerados en la lista Puntos de interrupción se guardan en un archivo de configuración de depuración cuando se elige Guardar configuración en el menú Archivo de la ventana Depurador.

Agregar
Agrega el punto de interrupción especificado por los cuadros Tipo, Ubicación, Archivo, Cuenta de pasos y Expresión a la lista Puntos de interrupción. Sólo los puntos de interrupción que se han agregado se guardan al salir del cuadro de diálogo.
Quitar
Quita el punto de interrupción seleccionado de la lista Puntos de interrupción.
Desactivar
Quita la marca de verificación que está junto al punto de interrupción seleccionado en la lista Puntos de interrupción. Al desactivar un punto de interrupción, la ejecución del programa no se detiene en la ubicación o condición especificadas por el punto de interrupción.
Activar
Coloca una marca de verificación junto al punto de interrupción seleccionado en la lista Puntos de interrupción y lo activa.
Borrar todas
Quita todos los puntos de interrupción de la lista Puntos de interrupción.
Mostrar los mensajes de los puntos de interrupción
Permite activar o desactivar la presentación de cuadros de mensajes de punto de interrupción cuando se encuentra un punto de interrupción. Dichos mensajes no se muestran cuando la interrupción se encuentra en la ubicación del punto de interrupción.

Vea también

Ficha Depurar, cuadro de diálogo Opciones | Ventana Seguimiento | Ventana Depurador | Métodos abreviados del depurador


Cuadro de diálogo Opciones para generar

Le permite crear una aplicación personalizada o actualizar un proyecto existente.

Este cuadro de diálogo aparece cuando selecciona Generar en el menú Proyecto.

Acción

Volver a generar el proyecto
Crea y genera un archivo de proyecto. Esta opción corresponde al comando BUILD PROJECT.
Aplicación (.app)
Genera el proyecto, compila archivos que no están actualizados y crea un archivo .app único. Esta opción corresponde al comando BUILD APP.
Ejecutable Win32 o servidor COM (.exe)
Crea un archivo ejecutable a partir de un proyecto. Esta opción corresponde al comando BUILD EXE.
Servidor COM de subproceso único (.dll)
Crea una biblioteca de vínculos dinámicos con extensión de nombre de archivo .dll mediante la información de clase del archivo de proyecto. Esta opción corresponde al comando BUILD DLL que apunta a la biblioteca en tiempo de ejecución vfp8r.dll.
Servidor COM de subproceso múltiple (.dll)
Crea una biblioteca de vínculos dinámicos (DLL) multiproceso con una extensión de nombre de archivo .dll, mediante la información de clase de un archivo de proyecto. Esta opción corresponde al comando BUILD MTDLL que apunta a la biblioteca en tiempo de ejecución vfp8t.dll.

Opciones

Volver a compilar todos los archivos
Vuelve a compilar todos los archivos del proyecto y crea un archivo de objeto para cada archivo de origen.
Mostrar errores
Muestra errores de tiempo de compilación en una ventana de edición cuando termina la generación.
Ejecutar después de generar
Le permite especificar si quiere que la aplicación se ejecute después de haberla generado.
Volver a generar Id. de servidor de Automatización
Instala y registra los servidores de Automatización contenidos en el proyecto. Cuando se activa esta opción, se especifica que los nuevos Identificadores globales únicos (GUID, Globally Unique Identifiers) se crean cuando se genera un programa. Sólo se crearán y se registrarán las clases marcadas como OLE Público en el cuadro de diálogo Información de clase del menú Clase. Esta opción se activa cuando está activada la casilla Generar DLL OLE o Generar ejecutable y se ha generado un programa que contiene la palabra clave OLEPublic.
Versión
Muestra el cuadro de diálogo Versión EXE, que le permite especificar información para el número de versión y el tipo de versión. Este botón se activa cuando selecciona Generar ejecutable o Generar DLL OLE en el cuadro de diálogo Opciones para generar.

Vea también

BUILD APP (Comando) | BUILD EXE (Comando) | BUILD PROJECT (Comando) | Ventana Modificar | Administrador de proyectos | Cuadro de diálogo Información del proyecto | BUILD DLL (Comando) | BUILD MTDLL (Comando) | Cuadro de diálogo Información de clase | Cuadro de diálogo Versión EXE


Cuadro de diálogo Calcular campo

Le permite seleccionar una operación matemática para crear un campo calculado. Este cuadro de diálogo se muestra cuando elige Cálculos en el cuadro de diálogo Expresión de informe.

Restablecer
Le permite especificar el punto en el cual la expresión se restablece a su valor inicial. De forma predeterminada, Fin del informe se muestra en el cuadro de lista. También puede seleccionar Fin de página o Fin de columna. Si ha especificado grupos en un informe en el cuadro de diálogo Agrupar datos, el cuadro Restablecer muestra un elemento para cada grupo del informe.

Calcular

Estas opciones le permiten especificar un cálculo realizado en la expresión de informe.

Nada
Especifica que no se harán cálculos en esta expresión. (Valor predeterminado)
Recuento
Cuenta el número de veces que la variable se imprime por grupo, página, columna o informe (según su selección en la lista Restablecer). El cálculo se basa en el número de veces que aparece la variable, no en su valor.
Suma
Calcula la suma aditiva de los valores de la expresión. La suma conserva el total de los valores de la expresión durante una ejecución para un grupo, página, columna o informe (según su selección en el cuadro Restablecer).
Promedio
Calcula la media aritmética (promedio) de los valores de la expresión para un grupo, página, columna o informe (según su selección en el cuadro Restablecer).
Mínimo
Muestra el valor más bajo de la expresión que apareció en un grupo, página, columna o informe (según su selección en la lista Restablecer). Inicialmente se establece el valor de la expresión en el valor del primer registro. Cuando se encuentra un valor más bajo, la variable cambia a ese valor.
Máximo
Muestra el valor más alto de la expresión que apareció en un grupo, página, columna o informe (según su selección en el cuadro Restablecer). Inicialmente se establece el valor de la expresión en el valor del primer registro. Cuando se encuentra un valor más alto, la expresión cambia a ese valor.
Desviación estándar
Devuelve la raíz cuadrada de la varianza para los valores de la expresión en un grupo, página, columna o informe (según su selección en el cuadro Restablecer).
Varianza
Mide el grado en que varían los valores de campos individuales respecto de la media de todos los valores para el grupo, página, columna o informe (según su selección en el cuadro Restablecer).

Vea también

Cuadro de diálogo Agrupar datos | Diseñador de informes | Cuadro de diálogo Expresión de informe | Cuadro de diálogo Bandas del diseñador de informes


Cuadro de diálogo Cambiar icono

Especifica un icono para usar en un objeto vinculado o incrustado, o en un formulario o campo General de una tabla Visual FoxPro. Este cuadro de diálogo se muestra cuando selecciona Mostrar como icono en el cuadro de diálogo Insertar Objeto o en el cuadro de diálogo Pegado especial y elije Cambiar icono.

Icono
Actual Especifica que se va a utilizar el icono actual.

Predeterminado Especifica que se va a utilizar el icono predeterminado.

De archivo Especifica el archivo desde el cual se va a obtener el nuevo icono. Escriba la ruta de acceso y el nombre del archivo en el cuadro y elija OK para mostrar todos los iconos disponibles. Desplácese por los iconos, seleccione el icono que desea usar y, a continuación, elija OK.

Etiqueta
Especifica la etiqueta que se mostrará debajo del icono. Escriba la etiqueta deseada en el cuadro.
Examinar
Muestra el cuadro de diálogo Examinar, con el que puede seleccionar un archivo que contenga el icono que desea.

Vea también

Cuadro de diálogo Insertar objeto | Cuadro de diálogo Modificar vínculos | Ventana de campo General | Modificar objetos OLE en formularios y tablas | Icon (Propiedad) | Cuadro de diálogo Pegado especial | Cuadro de diálogo Pegado especial


Cuadro de diálogo Proteger archivos

Protege las modificaciones realizadas en el directorio de trabajo del entorno de programación a la base de datos de control de código fuente.

Archivos a proteger
Muestra los archivos que puede proteger. Haga clic en los archivos que quiera proteger o haga clic en Seleccionar todo para seleccionar todos los archivos que se muestran.
Comentarios
Escriba un comentario opcional.
Mantener desprotegido
Actualiza la base de datos de control de código fuente con sus modificaciones pero conserva el archivo desprotegido.

Vea también

Cuadro de diálogo Obtener la última versión de los archivos | Cuadro de diálogo Desproteger archivos | Compilar código fuente


Cuadro de diálogo Desproteger archivos

Desprotege una copia de los archivos seleccionados del proveedor de control de código fuente y coloca una copia en la que se puede escribir en el correspondiente directorio de trabajo del entorno de programación.

Archivos a desproteger
Muestra los archivos que se pueden desproteger. Haga clic en los archivos que quiere desproteger o haga clic en Seleccionar todo para seleccionar todos los archivos mostrados.
Comentarios
Escriba una breve descripción de la razón por la que desprotege.
Seleccionar todo
Selecciona todos los archivos mostrados.
Avanzado
Muestra el cuadro de diálogo Opciones avanzadas de desprotección del proveedor de control de código fuente.

Vea también

Cuadro de diálogo Proteger archivos | Cuadro de diálogo Deshacer desproteger archivos | Compilar código fuente


Cuadro de diálogo Elegir campo o variable

Especifica un campo o variable de tabla.

Elija un campo o una variable
Escriba el campo o variable que desee.
Campos
Muestra campos de la tabla especificada en el cuadro Campo del cuadro de diálogo Imagen para informe. Haga doble clic en el campo deseado para mover el campo al cuadro Elija un campo o una variable.
Variables
Muestra las variables disponibles. Haga doble clic en la variable deseada para moverla al cuadro de texto Elija un campo o una variable.
Comentarios
Le permite agregar observaciones. Los observaciones sirven exclusivamente como referencia y no aparecen por ningún sitio en el informe o la etiqueta que se imprime.

Vea también

Cuadro de diálogo Imagen para informe | Convenciones de nomenclatura de campos de tabla | Acceso a variables y campos de Visual FoxPro | Variables | Cuadro de diálogo Rectángulo redondeado


Cuadro de diálogo Información de clase

Este cuadro de diálogo muestra varios atributos de los miembros de la clase, su apariencia en tiempo de diseño y si están o no protegidos.

Las opciones se agrupan en las siguientes fichas.

Ficha | Descripción
Ficha Clase | Información general sobre la clase y sus iconos asociados.
Ficha Miembros | Información sobre miembros individuales de la clase.

Vea también

Ficha Clase, cuadro de diálogo Información de clase | Ficha Miembros, cuadro de diálogo Información de clase | Proteger y ocultar miembros de clases | Especificar la apariencia de una clase en tiempo de diseño


Ficha Clase, cuadro de diálogo Información de clase

Proporciona información general sobre la clase y sus iconos asociados. El cuadro de diálogo que contiene esta ficha aparece al seleccionar Información de Clase del menú Clase.

Icono de barra de herramientas
Muestra el nombre del icono de la barra de herramientas de clases. Elija el botón del cuadro de diálogo para seleccionar un icono para la clase.

El icono de la barra de herramientas de clases se muestra en la barra de herramientas Controles de formularios del Diseñador de formularios y del Diseñador de clases cuando llena la barra de herramientas Controles de formularios con las clases de su biblioteca de clases. El icono de la barra de herramientas de clases también aparece en el contenedor del proyecto cuando la clase forma parte de un proyecto.

Icono contenedor
Muestra el nombre del icono de barra de herramientas del contenedor de la clase. Elija el botón del cuadro de diálogo para seleccionar un icono para el contenedor de la clase.

El icono de contenedor sólo se muestra en el Examinador de clases.

OLE público
Especifica que cuando un programa que contiene la palabra clave OLEPublic se genera mediante el Administrador de proyectos, se genera un servidor de Automatización personalizado. También se genera para el programa un Identificador global único (Globally Unique Identifier, GUID).
Descripción
Muestra observaciones acerca de la clase seleccionada. Puede escribir una nueva descripción en el cuadro o modificar la existente.
Nombre de clase
Muestra el nombre de la clase seleccionada en el Diseñador de clases.
Clase primaria
Muestra el nombre de la clase primaria.
Biblioteca de clases
Muestra la ruta de acceso y el nombre de archivo de la biblioteca de clases.

Vea también

Cuadro de diálogo Información de clase | Ficha Miembros, cuadro de diálogo Información de clase | Ventana Examinador de clases | Diseñador de clases | Diseñador de formularios | Ventana Administrador de proyectos


Ficha Miembros, cuadro de diálogo Información de clase

Muestra información sobre miembros individuales de la clase. El cuadro de diálogo que contiene esta ficha aparece cuando elige la opción Información de clase del menú Clase.

La ficha Miembros consiste en un cuadro de lista con las siguientes columnas:

Clase
Muestra el nombre de la clase.
Nombre
Muestra el nombre del método o la propiedad de la clase. Los métodos Access y Assign creados para propiedades también aparecen en la columna Nombre.
Visibilidad
Especifica si el miembro de clase es protegido, público u oculto. Si selecciona Protegido en la lista desplegable Visibilidad del cuadro de diálogo Modificar propiedades y métodos, se impide la obtención de acceso y la modificación de propiedades de la clase desde fuera de la definición de la clase o de la subclase.
Sin inicializar
Especifica si el método Init se ejecuta cuando se agrega el objeto. Cuando es verdadero (.T.), el método Init no se ejecuta. Esta opción solo se aplica a subclases de la clase.
Modificar
Abre el cuadro de diálogo Modificar propiedades y métodos en el que puede modificar una propiedad o método existente.

Vea también

Cuadro de diálogo Información de clase | Ficha Clase, cuadro de diálogo Información de clase | Métodos Access y Assign | Proteger y ocultar miembros de clases | Proteger y ocultar miembros de clases | Cuadro de diálogo Modificar propiedades y métodos


Cuadro de diálogo Página de códigos

Le permite asignar una página de códigos a un archivo .dbf o de texto que no tenga ninguna.

Los archivos .dbf sólo se muestran de forma apropiada si tienen la página de códigos correcta. Visual FoxPro asigna automáticamente páginas de códigos a los archivos .dbf en el momento de crearlos. Sin embargo, los archivos .dbf y de texto creados en versiones anteriores de FoxPro o en otros productos podrían no tener página de códigos.

Si activa la casilla de verificación Pedir página de códigos en la ficha Datos del cuadro de diálogo Opciones, Visual FoxPro le pide que especifique una página de códigos al abrir tablas o archivos de texto que no estén marcados con una página de códigos. También puede mostrar el cuadro de diálogo Página de códigos con la función GETCP( ).

Plataforma
Hace referencia al tipo de sistema operativo que está usando. Su selección aquí determina la página de códigos que se muestra en el cuadro Página de códigos.
  • Todas Muestra páginas de códigos para todas las plataformas.
  • Windows Muestra sólo páginas de códigos de Windows.
  • MS-DOS Muestra sólo páginas de códigos de MS-DOS.
  • Macintosh Muestra sólo páginas de códigos de Macintosh.
Página de códigos
Muestra todas las páginas de códigos para la plataforma seleccionada.
Seleccionar
Designa la página de códigos seleccionada actualmente como la predeterminada.

Vea también

Cuadro de diálogo Abrir imagen | Cuadro de diálogo Guardar como | Ficha Datos, cuadro de diálogo Opciones | GETCP( ) (Función) | Cuadro de diálogo Abrir | Cuadro de diálogo Guardar como | Desarrollar aplicaciones internacionales


Cuadro de diálogo Pie de columna

Establece el alto y otras opciones de la banda Pie de columna en una etiqueta o un informe de múltiples columnas. Este cuadro de diálogo aparece cuando hace doble clic en la barra de separación de la banda Pie de columna en el Diseñador de informes.

Alto
Especifica el alto de la banda. Escriba un valor en el cuadro, haga clic en FLECHA ARRIBA o FLECHA ABAJO para cambiar el valor mostrado en incrementos de 0,05 o arrastre la barra de separación de la banda con el ratón.
Banda de alto constante
Impide que la banda se alargue para ajustarse a la longitud de los datos o se encoja para absorber las líneas en blanco que se hayan quitado.

Ejecutar expresión

Al entrar
Especifica que se evalúe una expresión antes de que se imprima el contenido del pie de columna. Escriba la expresión en el cuadro o elija el botón de cuadro de diálogo para mostrar el cuadro de diálogo Generador de expresiones.
Al salir
Especifica que se evalúe una expresión tras imprimirse el contenido del pie de columna. Escriba la expresión en el cuadro o elija el botón de cuadro de diálogo para mostrar el cuadro de diálogo Generador de expresiones.

Vea también

Cuadro de diálogo Generador de expresiones | Diseñador de etiquetas | Diseñador de informes | Cuadro de diálogo Bandas del diseñador de informes | Modificar diseños | Refinar el diseño de página | Preparar el diseño de informe


Cuadro de diálogo Encabezado de columna

Establece el alto y otras opciones de la banda Encabezado de columna en una etiqueta o un informe de varias columnas. Este cuadro de diálogo aparece cuando hace doble clic en la barra de separación de la banda Encabezado de columna en el Diseñador de informes.

Alto
Especifica el alto de la banda. Escriba un valor en el cuadro, haga clic en FLECHA ARRIBA o FLECHA ABAJO para cambiar el valor mostrado en incrementos de 0,05 o arrastre la barra de separación de la banda con el ratón.
Banda de alto constante
Impide que la banda se alargue para ajustarse a la longitud de los datos o se encoja para absorber las líneas en blanco que se hayan quitado.

Ejecutar expresión

Al entrar
Especifica que se evalúe una expresión antes de que se imprima el contenido del encabezado de columna. Escriba la expresión en el cuadro o elija el botón de cuadro de diálogo para mostrar el cuadro de diálogo Generador de expresiones.
Al salir
Especifica que se evalúe una expresión tras imprimirse el contenido del encabezado de columna. Escriba la expresión en el cuadro o elija el botón de cuadro de diálogo para mostrar el cuadro de diálogo Generador de expresiones.

Vea también

Cuadro de diálogo Generador de expresiones | Diseñador de etiquetas | Diseñador de informes | Cuadro de diálogo Bandas del diseñador de informes | Modificar diseños | Refinar el diseño de página | Preparar el diseño de informe


Cuadro de diálogo Comentarios

Le permite escribir notas o observaciones para identificar la consulta o la vista y su propósito.

Agregar comentario
Le permite escribir un comentario o alguna nota acerca de la consulta o la vista.

Vea también

Cuadro de diálogo Destino de la consulta | Cuadro de diálogo Opciones avanzadas | Comment (Propiedad) | Comentarios


Cuadro de diálogo Compilar

Le permite compilar archivos de programa, menú o consulta.

Nota Si tiene un programa abierto en la ventana Edición, el comando Compilar compila el programa actual sin mostrar ninguna opción.

Este cuadro de diálogo aparece cuando selecciona Compilar en el menú Programa.

Nombre de archivo
Especifica el archivo que se va a compilar. Para compilar, seleccione el nombre del archivo en la lista y elija Compilar, o haga doble clic en el nombre del archivo. Para elegir varios archivos, mantenga presionada la tecla CTRL mientras hace clic en los nombres de los archivos.

Los archivos mostrados son los del directorio actual que coinciden con el tipo especificado en el cuadro Mostrar archivos de tipo.

Mostrar archivos de tipo
Muestra los tipos de archivo disponibles. El tipo predeterminado es Programa (.prg). Si ha dado a sus programas, formularios, menús o consultas una extensión diferente de las predeterminadas de Visual FoxPro, puede verlos si selecciona Todos los archivos.
Compilar
Compila los archivos seleccionados.
Seleccionar todo
Selecciona todos los nombres de archivo del cuadro Nombre de archivo para compilar.
Deseleccionar todo
Desactiva la selección de todos los nombres de archivo en el cuadro Nombre de archivo.
Más
Expande el cuadro de diálogo Compilar para que pueda especificar otras opciones.

Opciones

Cifrar archivos compilados
Cifra los archivos compilados para impedir que los programas descompiladores reconstruyan el código fuente.
Incluir información para depurar
Especifica si la información para depurar se incluye con el archivo compilado. Si esta opción no está activada, no puede ver la ejecución del programa en la ventana Seguimiento. Corresponde al argumento NODEBUG del comando COMPILE.
Compilar sólo los archivos actualizados
De los archivos seleccionados, sólo compila los que son nuevos o se han actualizado desde la última vez que se compilaron.

Ubicación de mensajes de error

Archivo .ERR
Almacena los mensajes de error para cada archivo seleccionado en un archivo distinto con el mismo nombre base que el original. El archivo .err se almacena en el mismo directorio que el archivo de origen. Si desactiva este cuadro, los mensajes de error para todos los archivos seleccionados se almacenan juntos en un archivo de registro que se especifica en el cuadro Archivo.
Anexar
Agrega mensajes de error para cada archivo seleccionado a un archivo de registro existente. Esta casilla de verificación se activa al desactivar la casilla de verificación Archivo .err.
Archivo
Almacena mensajes de error para todos los archivos seleccionados en un archivo de registro. Escriba el nombre del archivo de registro en el cuadro o elija el botón del cuadro de diálogo para buscar y especificar un archivo de registro existente. Este cuadro de texto se activa si desactiva la casilla de verificación Archivo .err.

Ubicación de archivos compilados

Directorio
Especifica una ruta de acceso donde se almacenan los archivos de resultados compilados. Escriba la ruta de acceso en el cuadro, o elija el botón del cuadro de diálogo para buscar y especificar un directorio y un nombre de archivo.

Vea también

COMPILE (Comando) | Ventana Seguimiento | Cuadro de diálogo Ejecutar | Probar y depurar aplicaciones | Compilar una aplicación


Cuadro de diálogo Conexiones

Le permite crear y mantener conexiones de bases de datos. Este cuadro de diálogo aparece cuando selecciona Conexiones en el menú Base de datos.

Conexiones en <base de datos>
Presenta las conexiones asociadas a la base de datos abierta actualmente.
Nuevo
Abre el Diseñador de conexiones, que le permite crear y modificar conexiones con nombre.
Modificar
Abre el Diseñador de conexiones, que le permite modificar la conexión de base de datos existente.
Eliminar
Le permite eliminar la conexión de la base de datos.

Vea también

Diseñador de conexiones | Cuadro de diálogo Modificar relación | Cuadro de diálogo Organizar tablas y vistas | Administrar conexiones con paso a través de SQL | Compartir conexiones para múltiples vistas remotas | Desarrollar bases de datos | Diseñador de bases de datos


Cuadro de diálogo Trayecto

Permite especificar opciones para el registro de la ejecución del programa. Utilice este cuadro de diálogo para obtener información acerca de cuántas veces se ha ejecutado cada línea de código, qué líneas de código no se han ejecutado durante la comprobación y cuánto ha tardado cada línea en ejecutarse.

Este cuadro de diálogo se muestra cuando elige Registro de trayecto en el menú Herramientas de la ventana Depurador.

Archivo
Especifica el archivo en el que se escribirá el registro de trayecto. El botón de cuadro de diálogo muestra el cuadro de diálogo Abrir, que permite seleccionar un archivo en el que se escribirá el registro de trayecto.
Anexar
Especifica que el registro de trayecto se escribirá después del contenido actual de un archivo existente y conservará el contenido original.
Sobrescribir
Especifica que el registro de trayecto sustituirá el contenido del archivo especificado.

Vea también

Aplicación Analizador de trayecto | _COVERAGE (Variable del sistema) | Ventana Depurador | Métodos abreviados del depurador | Cuadro de diálogo Abrir


Cuadro de diálogo Crear

Aparece cuando selecciona Proyecto, Base de datos o Tabla en el cuadro de diálogo Nuevo y elige Nuevo archivo. Le permite especificar el directorio, el nombre y el tipo del nuevo archivo.

Página de códigos
Muestra el cuadro de diálogo Página de códigos, en el que puede especificar la página de códigos necesaria para ver el archivo correctamente. Este comando se aplica sólo a archivos de texto como programas (.prg), consultas (.qpr) y archivos de texto propiamente dichos (.txt).

Vea también

Cuadro de diálogo Nuevo | Cuadro de diálogo Seleccionar conexión u origen de datos | Cuadro de diálogo Página de códigos | Agregar archivos a un proyecto | Cuadro de diálogo Página de códigos | Asistentes


Cuadro de diálogo Crear relaciones uno a varios

Establece una relación uno a varios, en la que la tabla secundaria puede contener varios registros que corresponden a un registro de la tabla primaria. Corresponde al comando SET SKIP.

Este cuadro de diálogo aparece cuando se elige el botón Uno a varios en la ventana Sesión de datos.

El botón Uno a varios se activa cuando hay al menos una relación con origen en la tabla seleccionada.

Alias secundarios
Presenta los alias secundarios del alias primario, cuyo nombre está dado en la parte superior del cuadro de diálogo.
Alias seleccionados
Presenta alias de todas las tablas involucradas actualmente en una relación uno a varios con la tabla primaria.
Mover
Copia los alias secundarios seleccionados en el cuadro Alias secundarios al cuadro Alias seleccionados. Para activar este botón, se debe seleccionar un alias en el cuadro Alias secundarios.
Todas
Copia todos los alias secundarios del cuadro Alias secundarios al cuadro Alias seleccionados.
Quitar
Elimina los alias seleccionados del cuadro Alias seleccionados. Para activar este botón hay que seleccionar un alias en el cuadro Alias seleccionados.
Quitar todos
Elimina todos los alias del cuadro Alias seleccionados.

Vea también

Ventana Sesión de datos | Asistente para formularios uno a varios | SET RELATION (Comando) | SET SKIP (Comando) | Cuadro de diálogo Establecer orden de índice | Crear tablas


Personalizar la Caja de herramientas

Muestra opciones para cambiar la configuración de la Barra de Herramientas y para modificar categorías y elementos mostrados en la Barra de Herramientas.

Seleccionar Treeview
Muestra las áreas que puede modificar y cambia las opciones para la Barra de Herramientas.

Opciones

Muestra las opciones generales para configurar el comportamiento de la Barra de Herramientas.

Ejecutar generadores asociados
Especifica que los generadores son mostrados automáticamente en el Diseñador de Formularios cuando se crea un control que tiene un generador registrado.
Mostrar la sección de texto de ayuda de la Barra de Herramientas
Especifica si la sección de texto de ayuda de la Barra de Herramientas es mostrada.
Mostrar información sobre herramientas
Especifica si se muestra la información sobre herramientas para los elementos de categoría.
Siempre arriba
Especifica si la Barra de Herramientas debe aparecer enfrente de otras ventanas.
Hacer doble clic para abrir un elemento
Especifica si un elemento de hipervínculo en la Barra de Herramientas necesita que se haga un clic sencillo o doble para abrirlo.
Establecer propiedad CurrentControl cuando un control es colocado sobre una columna de cuadrícula
Especifica que Visual FoxPro debe cambiar automáticamente el valor de la propiedad CurrentControl cuando un control es colocado sobre una columna de cuadrícula de la Barra de Herramientas.
Indicador para quitar control Text1 cuando se coloca un control nuevo sobre una columna de cuadrícula
Especifica que Visual FoxPro debe quitar automáticamente el control Text1 de la columna de cuadrícula cuando un control nuevo es colocado sobre una columna de cuadrícula de la Barra de Herramientas.
Permitir minimizar la Barra de Herramientas.
Especifica si el botón de control para minimizar la Barra de Herramientas debe ser mostrado de manera que la Barra de Herramientas pueda ser minimizada.
Velocidad de desplazamiento de una categoría.
Especifica la velocidad en milisegundos, que una categoría se desplazará cuando el ratón esté sobre el Toolbox.
Tabla de Barra de Herramientas.
Especifica la tabla para la Barra de Herramientas para guardar las configuraciones.
Fuente
Configura los atributos de la fuente utilizados para la Barra de Herramientas.
Limpiar Barra de Herramientas
Quita los elementos borrados de la tabla de la Barra de Herramientas.
Restaurar Predeterminado
Restaura la Barra de Herramientas a su estado predeterminado.

Elementos de la Clase

Visualiza las opciones de como las clases son mostradas y utilizadas desde la Barra de Herramientas.

Convención predeterminada para nombrar clases agregadas a la Barra deHerramientas
Especifica la convención para nombrar de como una clase es mostrada en la Barra de Herramientas.
Arrastrar y Soltar plantilla de texto
Especifica que un texto será agregado cuando usted arrastre y coloque una clase desde la Barra de Herramientas.
CTRL+Arrastrar y Soltar plantilla de texto
Especifica el texto que será agregado cuando usted realice CTRL+Arrastrar una clase desde la Barra de Herramientas.
Editar
Abre un editor, el cual tiene IntelliSense y coloreado de código, para cambiar el texto con arrastrar y soltar, o CTRL+arrastrar

Muestra opciones para manejar sus filtros para la Barra de Herramientas.

Nuevo Filtro
Crea un filtro nuevo y lo selecciona para editar.
Borrar Filtro
Da la indicación de borrar el filtro que esté seleccionado.
Aplicar Filtro
Aplica el filtro que esté seleccionado a la Barra de Herramientas.
Limpiar Filtro
Quita los efectos de un filtro de la Barra de Herramientas.
Nombre de Filtro
Especifica el nombre para el filtro que esté seleccionado.
Actualizar
Guarda todos los cambios realizados al nombre del filtro que fueron hechos en el campo Nombre del Filtro.
Filtros Definidos
Muestra una lista de los filtros que pueden ser aplicados a la Barra de Herramientas.
Seleccionar categorias de la Barra de Herramientas que pertenecen a este filtro.
Muestra una lista de opciones de filtro que pueden ser aplicadas con un filtro.

Categorías.

Muestra opciones para manejar las categorías en la Barra de Herramientas.

Agregar Categoría
Muestra un cuadro de diálogo para agregar una categoría nueva a la Barra de Herramientas.
Quitar Categoría
Da la indicación para borrar la categoría que esté seleccionada.
Propiedades de Categoría
Muestra un cuadro de diálogo que contiene información sobre las propiedades de la categoría que esté seleccionada.
Actualizar Categoría
Actualiza la Barra de Herramientas con todos los cambios hechos a la categoría que esté seleccionada.
Actualizar Barra de Herramientas
Actualiza la Barra de Herramientas con todos los cambios hechos a todas las categorias mostradas en ella.
Seleccionar un elemento para visualizarlo
Especifica el tipo de elementos que son mostrados en la lista de elementos para una categoría específica.
Mostrar únicamente los elementos activos
Especifica que únicamente los elementos de la lista de elementos que estén seleccionados y mostrados en la categoríia sean visibles.
Agregar Elemento
Muestra un cuadro de diálogo utilizado para agregar un elemento nuevo a la categoría que esté seleccionada.
Quitar Elemento
Da la indicación para quitar un elemento de la categoría que esté seleccionada.
Propiedades de Elemento
Muestra un cuadro de diálogo que contiene información sobre las propiedades del elemento que esté seleccionado.
Ordenar Alfabéticamente.
Ordena los elementos de la lista de elementos para que sean mostrados en orden alfabético.

Vea también

Cuadros de diálogo | Caja de herramientas


Cuadro de diálogo Agrupar datos

Le permite crear bandas de grupos para la separación visual de grupos de registros y la visualización de los datos de introducción y resumen para cada grupo. Estas propiedades incluyen la impresión del texto con encabezados y pies de página para identificar grupos específicos; cada grupo se imprime en una nueva página y los números de página se inicializan cuando los grupos se imprimen en una nueva página.

Group Expressions

Muestra expresiones de salto de grupo, como un nombre de campo, para el informe actual y le permite escribir nuevas expresiones. Si desea generar una expresión, elija el botón de cuadro de diálogo para mostrar el cuadro de diálogo Generador de expresiones.

Propiedades de grupo

Estas opciones le permiten especificar opciones para los saltos de página.

Comenzar grupo en una nueva columna
Comienza una nueva columna cada vez que el grupo cambia.
Comenzar cada grupo en una nueva página
Comienza una nueva página cada vez que el grupo cambia.
Empezar en página 1 para cada grupo
Comienza una nueva página y reinicia la numeración de páginas cada vez que el grupo cambia.
Volver a imprimir el encabezado de grupo en cada página
Especifica que el encabezado de grupo sigue al encabezado de página en todas las páginas del grupo cuando el grupo ocupe más de una página.
Comenzar grupo en nueva página cuando sea menor que
Establece la mínima distancia desde la parte inferior de la página en la que se imprime un encabezado de grupo.
Insertar
Inserta un cuadro de texto en blanco en el cuadro Expresiones de grupo, en el que puede definir una nueva expresión de grupo.
Eliminar
Elimina la expresión de grupo seleccionada del cuadro Expresiones de grupo.

Vea también

Cuadro de diálogo Título y resumen | Cuadro de diálogo Generador de expresiones | Cuadro de diálogo Variables del informe | Agregar múltiples grupos de datos | Agrupar datos en diseños | Crear un diseño de informe


Cuadro de diálogo Propiedades de la base de datos

Este cuadro de diálogo permite elegir el tipo de objetos de base de datos que se muestran en el Diseñador de bases de datos. Puede elegir tablas, relaciones, vistas locales y vistas remotas. También puede agregar un comentario. Use este cuadro de diálogo para mostrar u ocultar objetos de base de datos en el esquema de la base de datos.

Este cuadro de diálogo aparece cuando selecciona Propiedades en el menú Base de datos.

Evento
Muestra los eventos disponibles.
Activar eventos
Especifica si están habilitados los eventos DBC en tiempo de diseño y en tiempo de ejecución en la sesión actual de Visual FoxPro.
Archivo de eventos
Le permite especificar un archivo externo que contiene código de evento DBC.
Botón Modificar código
Abre el editor de Visual FoxPro para permitirle agregar código al evento DBC seleccionado actualmente en el archivo de procedimientos almacenado o en el archivo externo especificado.
Tablas
Muestra u oculta las tablas en el esquema de la base de datos.
Relaciones
Muestra u oculta las líneas de relación entre tablas en el esquema de la base de datos.
Vistas locales
Muestra u oculta las vistas creadas en datos almacenados en tablas locales.
Vistas remotas
Muestra u oculta las vistas creadas en datos almacenados en un origen de datos remoto.
Comentarios
Proporciona un espacio para que escriba un comentario acerca del esquema de la base de datos.

Vea también

Cuadro de diálogo Conexiones | Cuadro de diálogo Organizar tablas y vistas | Diseñador de bases de datos | Cuadro de diálogo Nueva vista local | Cuadro de diálogo Nueva vista remota | Cuadro de diálogo Modificar relación | Cuadro de diálogo Buscar tabla o vista | Ver y configurar propiedades de bases de datos


Cuadro de diálogo Definir diseño de ventana

Le permite dar nombre y guardar configuraciones de ventanas y de barras de herramientas para su reutilización.

Nombre de vista
Especifica el nombre del diseño de ventana actual.
Vista
Muestra los diseños de ventana disponibles.
Aplicar
Configura las ventanas actuales según el diseño de ventana seleccionado.
Agregar
Agrega el diseño con nombre actual a la lista de diseños de ventana disponibles.
Eliminar
Elimina el diseño seleccionado de la lista de diseños de ventana disponibles.
Cambiar nombre
Le permite cambiar el nombre del diseño de ventana actual.

Vea también

Cuadro de diálogo Opciones generales | DEFINE WINDOW (Comando) | Configurar las Barras de herramientas de Visual FoxPro | Diseñador de menús | Cuadro de diálogo Orden de tabulación | Cuadro de diálogo Barras de herramientas


Cuadro de diálogo Eliminar (Registros)

Permite marcar los registros para su eliminación. Corresponde al comando DELETE.

Este comando no elimina físicamente los registros, sino que sólo los marca para su eliminación en el futuro. Para eliminar los registros de forma permanente del disco duro, utilice la opción Quitar registros eliminados del menú Tabla.

Alcance
Permite especificar los registros sobre los cuales Visual Foxpro va a actuar. Elija Siguiente, Todos, Registro o Resto en la lista desplegable. Elija un número en el control numérico de la derecha al seleccionar Siguiente o Registro en la lista desplegable Alcance.
FOR
Muestra el cuadro de diálogo Generador de expresiones, en el que crea la expresión lógica que cada registro debe cumplir para que le afecte el comando. Cada registro de la tabla se comprueba mediante la expresión FOR.
WHILE
Muestra el cuadro de diálogo Generador de expresiones. La expresión WHILE especifica que la acción afecta a los registros sólo mientras la expresión lógica sea verdadera. La primera vez que la expresión dé como resultado falso, se detiene la acción sin evaluar los registros restantes.
Eliminar
Elimina los registros mediante los valores de Alcance, FOR y WHILE.

Vea también

DELETE (Comando) | Cuadro de diálogo Generador de expresiones | Cuadro de diálogo Desmarcar registros | Cuadro de diálogo Alcance | Cuadro de diálogo Reemplazar campo


Cuadro de diálogo Descripción

Proporciona un cuadro de texto en el que puede escribir una breve descripción que identifica el archivo. Este cuadro de diálogo aparece cuando selecciona un archivo en el Administrador de proyectos y elige el comando Modificar descripción del menú Proyecto.

Descripción
Muestra la descripción actual de un archivo, que se puede reemplazar al escribir una nueva descripción en el cuadro.

Vea también

Generador de cuadros de texto | Description (Propiedad) | Modificar los iconos y las descripciones de clases | Cuadro de diálogo Cambiar el nombre del archivo | Cuadro de diálogo Nuevo archivo


Cuadro de diálogo Detalle

Establece el alto y otras opciones para la banda Detalle en un informe o etiqueta. Este cuadro de diálogo aparece cuando hace doble clic en la barra de separación de la banda Detalle en el Diseñador de informes.

Alto
Especifica el alto de la banda. Escriba un valor en el cuadro, haga clic en FLECHA ARRIBA o FLECHA ABAJO para cambiar el valor mostrado en incrementos de 0,05 o arrastre la barra de separación de la banda con el ratón.
Banda de alto constante
Impide que la banda se alargue para ajustarse a la longitud de los datos o se encoja para absorber las líneas en blanco que se hayan quitado.

Ejecutar expresión

Al entrar
Especifica que se evalúe una expresión antes de que se imprima un registro en la banda de detalle. Escriba la expresión en el cuadro o elija el botón de cuadro de diálogo para mostrar el cuadro de diálogo Generador de expresiones.
Al salir
Especifica que una expresión se evalúe después de que se imprima un registro en la banda de detalle. Escriba la expresión en el cuadro o elija el botón de cuadro de diálogo para mostrar el cuadro de diálogo Generador de expresiones.

Vea también

Cuadro de diálogo Generador de expresiones | Diseñador de etiquetas | Diseñador de informes | Cuadro de diálogo Bandas del diseñador de informes | Modificar diseños | Refinar el diseño de página | Crear informes y etiquetas | Preparar el diseño de informe


Cuadro de diálogo Ejecutar

Le permite especificar un archivo de programa o formulario para ejecutarlo.

Este cuadro de diálogo aparece cuando selecciona Ejecutar en el menú Programa.

Método abreviado

CTRL+D

Ejecutar (cuadro de texto)
Especifica el archivo de programa o formulario que se va a ejecutar. Para ejecutar el programa o formulario, seleccione el nombre en la lista y elija Ejecutar, o haga doble clic en el nombre del archivo.

Los archivos de programa mostrados son los del directorio actual con la extensión .app, .fxp, .mpr, .prg, .qpr o .src que coincidan con el tipo especificado en el cuadro Archivos tipo.

Ejecutar (botón)
Establece como carpeta predeterminada la que contiene el programa o formulario seleccionado, y ejecuta el programa o formulario.

Vea también

DO (Comando) | Compilar una aplicación | Probar y depurar aplicaciones | DoCmd (Método)


Cuadro de diálogo Modificar bandas

Muestra una lista de las bandas disponibles que le permiten modificar directamente las acciones alto, entrada y salir. Este cuadro de diálogo aparece al seleccionar la opción Bandas del menú Informe o al hacer doble clic en una banda de informe. El editor de banda proporciona las opciones siguientes.

Control numérico Alto
Permite modificar la altura actual de la banda seleccionada.
Casilla de verificación Banda de alto constante
Impide que la banda se alargue para ajustarse a la longitud de los datos o se encoja para absorber las líneas en blanco que se hayan quitado.

Ejecutar expresión

Cuadro de edición Al entrar y generador de expresiones
Permite escribir una expresión que se ejecutará cuando el cursor se sitúe en la banda de informe seleccionada.
Cuadro de edición Al salir y generador de expresiones
Permite escribir una expresión que se ejecutará cuando el cursor salga de la banda de informe seleccionada.

Vea también

Diseñador de informes | Generador de expresiones | Cuadro de diálogo Bandas del diseñador de informes | Cambiar una banda de grupo | Eliminar una banda de grupo


Cuadro de diálogo Modificar vínculos

Este cuadro de diálogo le permite cambiar o romper un vínculo con un objeto. Esta opción de menú se activa cuando se abre un campo general conteniendo un objeto OLE vinculado, que se haya generado desde otra aplicación.

Vínculos
Muestra el nombre y la ruta de acceso del archivo vinculado, el tipo de aplicación y el tipo de actualización seleccionada para el vínculo.
Origen
Muestra el nombre completo y la ubicación del archivo de objeto seleccionado en el cuadro Vinculo.
Tipo
Muestra la aplicación del objeto o el tipo de aplicación al que está vinculado el archivo seleccionado en el cuadro Vínculo.
Actualización
Especifica cómo desea actualizar la información.
  • Seleccione Automática para que Visual FoxPro actualice la información siempre que haya información nueva disponible.
  • Seleccione Manual para actualizar la información sólo cuando seleccione un vínculo y elija el botón Actualizar ahora.
Actualizar ahora
Actualiza el vínculo seleccionado en el cuadro Vínculo . Si la información ha cambiado en el documento objeto, la nueva información se muestra en el formulario o informe.
Abrir origen
Abre el archivo seleccionado en la aplicación objeto para su edición.
Cambiar origen
Muestra el cuadro de diálogo Cambiar origen , en el que puede especificar un archivo de objeto diferente para el vínculo seleccionado o cambiar la información del elemento.
Romper vínculo
Rompe el vínculo seleccionado en el cuadro Vínculo. Esto cambia el objeto a una imagen que ya no puede modificar la aplicación OLE que lo creó.

Vea también

Cuadro de diálogo Modificar propiedades | Ventana de campo General | Agregar objetos OLE a las aplicaciones | Cuadro de diálogo Cambiar icono | Actualizar vínculos de tablas y bases de datos | Compartir información dinámicamente

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Cuadro de diálogo Modificar propiedades

Le permite establecer opciones de edición para la ventana de edición actual o establecer opciones de color y fuente para todas las sesiones de edición.

Este cuadro de diálogo aparece cuando elige Propiedades en el menú contextual de cualquier ventana de edición o cuando elige Propiedades en el menú Edición.

Comportamiento

Las opciones de esta área afectan únicamente a la ventana de edición actual.

Edición con Arrastrar y soltar
Activa la edición de texto con arrastrar y soltar para manipular texto con el ratón.
Ajuste automático de línea
Ajusta líneas de texto en la ventana. Sólo está disponible si está desactivado (OFF) Colorear la sintaxis. Para más información, vea Ficha Editor, cuadro de diálogo Opciones.
Sangría automática
Aplica automáticamente una sangría al texto de acuerdo con la sangría de la primera línea. Esto no afecta a cómo se guarda el texto.
Hipervínculos incrustados
Le permite especificar si se pueden incluir hipervínculos en el tipo de archivo seleccionado.

Apariencia

Le permite controlar el tamaño, el estilo, el color y otras características del texto.

Alineación
Especifica la alineación izquierda, centrada o derecha del texto.
Fuente
Cambia la fuente de la ventana de edición. Elija el botón (...) para abrir el cuadro de diálogo Fuente.
Mostrar posición de línea/columna
Permite mostrar el número de línea y la posición de la columna en la barra de estado. El número de línea no se muestra si está activado el ajuste automático de línea.
Colorear la sintaxis
Especifica si se muestran o no colores para los elementos de sintaxis. Sólo puede seleccionarlo si está desactivado (OFF) el Ajuste automático de línea. Para más información, vea Ficha Editor, cuadro de diálogo Opciones.
Mostrar espacio en blanco
Especifica si los espacios, los tabuladores y los párrafos del editor activo se muestran como caracteres. Esta opción se encuentra disponible cuando trabaja en el editor de texto. Los marcadores de párrafos (saltos de líneas) se muestra sólo si está activado el ajuste automático de línea. Para mostrar especio en blanco, haga clic en Mostrar espacio en blanco del menú Formato.
Nota La opción Mostrar espacio en blanco no está activa en plataformas double-byte character set (DBCS).

Opciones de Guardar

Permite administrar características de archivos guardados. Las opciones de guardado disponibles dependen del tipo de archivo que abra.

Crear copia de seguridad
Especifica que Visual FoxPro crea una copia de seguridad cada vez que guarda un archivo. La copia de seguridad es guardada con el nombre del archivo y la extensión .bak en su carpeta de proyectos de Visual FoxPro.
Guardar con avances de línea
Guarda el archivo con los avances de línea que se han introducido. Si este cuadro no está activado, los avances de línea se quitan cuando se guarda el archivo. Para más información, vea AddLineFeeds (Propiedad).
Guardar con marca de fin de archivo
Coloca un carácter CTRL+Z al final de un archivo cuando se guarda el archivo. Cuando se guarda este carácter adicional con el archivo, ayuda a resolver la diferencia entre la actividad de edición normal y la actividad MODIFY MEMO. Para más información, vea MODIFY MEMO (Comando).
Compilar antes de guardar (Editor de programa)
Especifica que Visual FoxPro compila automáticamente el programa y comprueba si hay errores de sintaxis cuando se guarda el archivo.
Guardar preferencias
Determina si la configuración para un archivo abierto y el resto de las ventanas del mismo tipo es guarda para la próxima vez que sea abierta. Si Guardar preferencias no está seleccionado, las preferencias se guardan sólo para la ventana abierta.
Aplicar al código del método (Diseñador de clases o Diseñador de formularios)
Especifica la configuración actual como predeterminada para todos los métodos del formulario o de la clase.
Aplicar al código de menú (Diseñador de menús)
Especifica los valores actuales como predeterminados para todos los procedimientos de menú.
Aplicar a archivos .PRG o .TXT (Editor de programas o Editor de texto)
Especifica los valores actuales como los predeterminados para los archivos .prg o .txt.
Aplicar a los archivos de tipo memo (Editor de campos memo)
Especifica los valores actuales como los predeterminados para los campos memo.

Sangría

Le permite especificar el tamaño y el comportamiento de los espacios y de los tabuladores.

Tamaño de tabulador
Especifica el ancho en caracteres de un tabulador del tipo de archivo actualmente seleccionado. El intervalo varía de 1 a 50. El valor predeterminado es 4.
Tamaño de sangría
Especifica el ancho en caracteres de una sangría de párrafo del tipo de archivo actualmente seleccionado. Si es distinto del tamaño de tabulador, se utilizan tabuladores y/o espacios adicionales para crear el valor especificado. El intervalo varía de 1 a 50. El valor predeterminado es 4.
Insertar espacios
Especifica que se insertan espacios mediante la tecla Tabulador en el tipo de archivo actualmente seleccionado. El valor predeterminado es 4.
Mantener tabuladores
Especifica que se insertan tabuladores mediante la tecla Tabulador en el tipo de archivo actualmente seleccionado (predeterminado).

Información del archivo (Editor de programas o Editor de texto)

Le permite especificar las características del sistema de archivos guardados.

Nombre de archivo
Especifica el nombre y directorio del programa o archivo de texto que está modificando.
Tamaño
Especifica el tamaño del programa o archivo de texto que está modificando.
Guardado por última vez
Especifica la fecha y hora en que el programa o archivo de texto se guardó por última vez en disco.

Vea también

MODIFY MEMO | Cuadro de diálogo Modificar vínculos | Cuadro de diálogo Fuente | Cuadro de diálogo Cambiar icono | Ver y configurar propiedades de bases de datos | Cuadro de diálogo Modificar propiedades y métodos | EditorOptions (Propiedad) | Configurar las opciones del Editor


Cuadro de diálogo Modificar propiedades y métodos

Le permite agregar nuevas propiedades y métodos, o modificar propiedades y métodos existentes. Para formularios y conjuntos de formularios, el alcance de la propiedad o método es el formulario individual o el conjunto de formularios.

También puede crear métodos Access y Assign. Un método Access le permite ejecutar código cuando se consulta el valor de una propiedad. Un método Assign le permite ejecutar código cuando intenta cambiar el valor de una propiedad.

Este cuadro de diálogo aparece cuando selecciona Modificar propiedades y métodos en los menús Clase o Formulario.

Información de propiedad o método
Proporciona información acerca de las propiedades y los métodos agregados a un formulario, un conjunto de formularios o una clase. Puede hacer clic en el encabezado de una columna para ordenar la columna por orden alfabético ascendente o descendente. Las columnas en este diálogo son redimensionables haciendo clic y arrastrando el ratón entre los encabezados de columna.
Columna | Descripción
Nombre | El nombre de cada propiedad y método.
Tipo | Propiedad (P) o método (M).
Access | Indica si una propiedad tiene un método Access correspondiente. Sí indica que la propiedad tiene un método Access, No indica que la propiedad no tiene un método Access.
Assign | Indica si una propiedad tiene un método Assign correspondiente. Si: indica que la propiedad tiene un método Assign, No: indica que la propiedad no tiene un método Assign.
Visibilidad Indica la visibilidad de una propiedad o método. Para un formulario o conjunto de formularios, la visibilidad de propiedades y métodos siempre es pública. Para una clase, la visibilidad puede ser oculta, protegida o pública.

Se puede tener acceso a las propiedades y métodos públicos desde cualquier punto de la aplicación. Las instancias de objetos no pueden tener acceso a las propiedades y los métodos protegidos, pero las subclases sí pueden. Las instancias de objetos y las subclases no pueden tener acceso a las propiedades y los métodos ocultos.

Tenga en cuenta que en el Diseñador de clases puede seleccionar múltiples propiedades y métodos para establecer la misma configuración de visibilidad para todos los métodos y propiedades seleccionados. Todos los métodos y propiedades públicos aparecen en las bibliotecas de tipos creadas para los proyectos DLL en proceso y para los proyectos EXE fuera de proceso; la selección múltiple le permite establecer la visibilidad como protegida u oculta para que las propiedades y métodos seleccionados no aparezcan en las bibliotecas de tipos.
Nueva Propiedad
Muestra el cuadro de diálogo Nueva propiedad, que le permite crear una nueva propiedad.
Nuevo Método
Muestra el cuadro de diálogo Nuevo método, que le permite crear un nuevo método.
Quitar
Quita la propiedad o el método seleccionado.
Nombre de propiedad o método
Muestra el nombre de la propiedad o el método seleccionado actualmente.
Método Access
Especifica si una propiedad tiene un método Access cuyo código se ejecuta siempre que se consulta la propiedad. Active esta casilla de verificación para crear un método Access para una propiedad. Desactive la casilla de verificación para quitar el método Access.
Método Assign
Especifica si una propiedad tiene un método Assign cuyo código se ejecuta cada vez que intenta cambiar el valor de la propiedad. Active esta casilla de verificación para crear un método Assign para una propiedad. Desactive la casilla de verificación para quitar un método Assign.
Descripción
Contiene la descripción de la propiedad o el método que se muestra al final de la ventana Propiedades en el Diseñador de clases y, si la propiedad no está protegida, en el Diseñador de formularios.
Visibilidad (sólo clases)
Especifica si la clase es pública, protegida u oculta.
Aplicar
Aplica los cambios realizados en una propiedad o un método.
Cerrar
Cierra el cuadro de diálogo.

Vea también

Métodos Access y Assign | Diseñador de clases | Diseñador de formularios | Cuadro de diálogo Nueva propiedad | Ventana Propiedades | Agregar propiedades y métodos a un formulario | Cuadro de diálogo Nuevo método


Cuadro de diálogo Modificar relación

Después de crear una relación persistente entre tablas, use el cuadro de diálogo Modificar relación para modificar la relación.

Este cuadro de diálogo aparece cuando selecciona una línea de relación en el Diseñador de bases de datos y selecciona Modificar relación en el menú Base de datos, o hace doble clic en la línea de la relación.

Tabla
Muestra el nombre de la tabla primaria actual y le permite seleccionar una etiqueta de índice diferente.
Tabla relacionada
Muestra el nombre de la tabla secundaria actual y le permite seleccionar una etiqueta de índice diferente.
Tipo de relación
Muestra el tipo de relación entre la tabla primaria y las tablas secundarias.
Integridad referencial
Muestra el Generador de integridad referencial de forma que pueda establecer reglas para controlar cómo se insertan, actualizan o eliminan registros en tablas relacionadas.
Nota Si las tablas aún no están indexadas, tiene que abrirlas en el Diseñador de tablas y crear índices antes de usar el Generador de integridad referencial.

Vea también

Diseñador de bases de datos | Generador de integridad referencial | Diseñador de tablas | Cuadro de diálogo Conexiones | Cuadro de diálogo Buscar tabla o vista | Agregar tablas a bases de datos | Crear un índice | Agregar tablas a bases de datos | Desarrollar bases de datos


Cuadro de diálogo Seguimiento de eventos

Permite ver cuándo se produce cada evento en relación a otros eventos. Use este cuadro de diálogo para determinar el lugar más eficiente para incluir su código.

Este cuadro de diálogo se muestra cuando elige Seguimiento de eventos en el menú Herramientas de la ventana Depurador.

Activar el seguimiento de eventos
Activa o desactiva el seguimiento de eventos.

Cuando está activado el seguimiento de eventos, cada vez que se produce un evento del sistema de la lista Eventos para seguir, el nombre del evento se muestra en la ventana Resultados del depurador o se escribe en un archivo.

Eventos disponibles
Muestra todos los eventos disponibles que no se han seleccionado para su seguimiento.
Sugerencia Si no está trabajando específicamente con movimientos del ratón, quite el evento MouseMove de la lista Eventos para seguir. Los eventos MouseMove normalmente se producen con mucha frecuencia.
Eventos para seguir
Muestra todos los eventos que desea seguir.

Enviar resultados a

Ventana Resultados del depurador
Establece si los eventos de los que se hace seguimiento se muestran o no en la ventana Resultados del depurador. Si no está abierta la ventana Resultados del depurador, no se mostrarán los eventos, incluso si está activada la casilla de verificación Ventana Resultados del depurador.
Archivo
Indica un archivo en el que se escribirán los eventos de los que se hace seguimiento. El botón de cuadro de diálogo le permite seleccionar un archivo del cuadro de diálogo Abrir.
Anexar
Especifica que los eventos de los que se hace seguimiento se escribirán después del contenido de un archivo existente y conservarán el contenido original.
Sobrescribir
Especifica que los eventos de los que se hace seguimiento sustituirán el contenido del archivo especificado.

Vea también

Cuadro de diálogo Abrir | Ventana Resultados del depurador | Ventana Depurador | Métodos abreviados del depurador | Cuadro de diálogo Trayecto | MouseMove (Evento)


Cuadro de diálogo Versión EXE

Muestra información acerca del número de versión, así como otra información suministrada por usted.

Número de versión

Principal
Muestra un número de cuatro cifras que se puede modificar. Este número corresponde a la versión principal.
Secundaria
Muestra un número de cuatro cifras que se puede modificar. Este número corresponde a una versión secundaria.
Revisión
Muestra un número de cuatro cifras modificable. Este número corresponde a las actualizaciones incrementales.
Incrementar automáticamente
Cuando esta opción está activada, permite actualizaciones automáticas del número de revisión cada vez que se genere el programa.

Información de la versión

Tipo
Muestra siete categorías de información de versión definidas por usted. Estas categorías son Comentarios, Nombre de la compañía, Descripción del archivo, Copyright legal, Marcas comerciales legales, Nombre del producto e Id. de idioma.
Valor
Muestra la información escrita acerca de una categoría. Haga clic en una categoría de la lista Tipo para mostrar, escribir o modificar la información.

Vea también

Obtener las versiones más recientes de los archivos | GetLatestVersion (Método) | VersionNumber (Propiedad) | VersionTrademarks (Propiedad) | VersionCopyright (Propiedad) | Cuadro de diálogo Opciones para generar | Cuadro de diálogo Información del proyecto


Cuadro de diálogo Velocidad de ejecución

Permite especificar el retardo en segundos entre la ejecución de cada línea de código que esté en la ventana Seguimiento. Este cuadro de diálogo se muestra cuando se selecciona Velocidad en el menú Depurar de la ventana Depurador.

Retardo (segundos)
Permite establecer el retardo de ejecución entre cada línea de código de 0,0 a 5,0 segundos.

Vea también

Ventana Seguimiento | Ventana Depurador | Métodos abreviados del depurador


Cuadro de diálogo Exportar

Le permite exportar datos desde tablas de Visual FoxPro a un archivo de texto, una hoja de cálculo o un formato común de tabla.

Este cuadro de diálogo aparece cuando selecciona Exportar en el menú Archivo.

Tipo
Especifica el tipo de archivo que va a exportar. Seleccione un tipo de archivo de la lista.
Para
Especifica la ruta de acceso y el nombre del archivo de destino. Escriba la ruta de acceso y el nombre, o haga clic en el botón de cuadro de diálogo para encontrar el archivo de destino.
Delimitador de texto
Le permite delimitar cadenas de texto en el archivo de resultados. El delimitador de texto predeterminado es el carácter de comillas (“). Esta opción solo aparece si elige Texto delimitado en la lista desplegable Tipo.
Separador de campos
Le permite separar campos de datos en el archivo de resultados. El separador de campo predeterminado es el carácter de coma (,). Esta opción solo aparece si elige Texto delimitado en la lista desplegable Tipo.
Desde
Especifica la ruta de acceso y el nombre del archivo de origen. Escriba la ruta de acceso y el nombre, o haga clic en el botón de cuadro de diálogo para encontrar el archivo de origen.
Opciones
Muestra el cuadro de diálogo Opciones de exportación, donde puede especificar qué registros y campos desea exportar.

La tabla siguiente muestra los tipos de archivo que puede exportar con este comando y los comandos equivalentes que puede escribir en la ventana Comandos.

Tipos de archivo Comandos equivalentes
Formato de intercambio de datos (DIF)
COPY TO FileName TYPE DIF
DBASE IV (DBF)
COPY TO FileName FOX2X
Texto delimitado
COPY TO FileName TYPE DELIMITED
FoxBASE+ (DBF)
COPY TO FileName FOXPLUS
FoxPro para Windows 2.x (DBF)
COPY TO FileName FOX2X
Lotus 1-2-3 1-A (WKS)
COPY TO FileName TYPE WKS
Lotus 1-2-3 2.x (WK1)
COPY TO FileName TYPE WK1
Microsoft Excel 2.0, 3.0 y 4.0 (XLS)
COPY TO FileName TYPE XLS
MultiPlan 4.01 (MOD)
COPY TO FileName TYPE MOD
Formato de vínculos simbólicos (SLK)
COPY TO FileName TYPE SYLK
Symphony 1.01 (WRK)
COPY TO FileName TYPE WRK
Symphony 1.10 (WR1)
COPY TO FileName TYPE WR1
Formato de datos de sistema (SDF)
COPY TO FileName TYPE SDF
Visual FoxPro (DBF)
COPY TO FileName

Vea también

Cuadro de diálogo Opciones de exportación | Ventana Comandos | COPY TO (Comando) | Opciones de exportación | EXPORT (Comando) | Cuadro de diálogo Importar | Proceso de exportación de datos


Cuadro de diálogo Opciones de exportación

Especifica los registros y campos que va a exportar. Este cuadro de diálogo se muestra cuando elige Opciones en el cuadro de diálogo Exportar.

Criterios
Estas opciones controlan qué registros y campos desea exportar, y las condiciones bajo las que se exportan.
  • Alcance Muestra el cuadro de diálogo Alcance, en el que puede especificar cuántos registros se deben exportar.
  • FOR Muestra el cuadro de diálogo Generador de expresiones, en el que crea la expresión lógica que debe cumplir cada registro que se exporte.
  • WHILE Muestra el cuadro de diálogo Generador de expresiones, en el que crea una expresión lógica WHILE que debe cumplirse para que puedan exportarse los registros.
  • Campos Muestra el cuadro de diálogo Selector de campos, donde puede elegir los campos que desea exportar.

Vea también

Cuadro de diálogo Exportar | EXPORT (Comando) | Cuadro de diálogo Generador de expresiones | Cuadro de diálogo Selector de campos | Cuadro de diálogo Alcance | Cuadro de diálogo Configurar página | Proceso de exportación de datos


Cuadro de diálogo Generador de expresiones

Le permite crear y modificar expresiones. Una expresión puede ser tan simple como el nombre de un campo o tan compleja como un cálculo que incluya funciones IF inmediatas, concatenaciones y conversiones de tipos de datos. La finalidad principal del Generador de expresiones es facilitar la creación de expresiones al proporcionarle listas de opciones adecuadas en cada paso. Se puede tener acceso a este cuadro de diálogo desde diseñadores, ventanas, generadores y asistentes.

Para crear su expresión, puede escribirla directamente en el cuadro de expresión, o puede seleccionar elementos de las listas desplegables de funciones del cuadro de diálogo para que Visual FoxPro las pegue en el cuadro de expresión.

Puede encontrar algunas las siguientes funciones útiles para manipular cadenas en expresiones.

Si desea | Utilice esta función
Quitar los espacios en blanco antes y después de las expresiones de caracteres | ALLTRIM( ) (Función)
Quitar espacios en blanco del principio | LTRIM( ) (Función)
Quitar espacios en blanco del final | RTRIM( ) (Función)
Agregar los caracteres especificados a la izquierda, a la derecha o a ambos lados de una cadena | PADL( ) | PADR( ) | PADC( ) (Funciones)
Trabajar con partes de una cadena de caracteres para hacer comparaciones | SUBSTR( ) (Función)
Utilizar el número de caracteres especificado a partir de la izquierda de una cadena | LEFT( ) (Función)
Utilizar el número de caracteres especificado a partir de la derecha de una cadena | RIGHT( ) (Función)
Cambiar mayúsculas a minúsculas o viceversa | UPPER( ) (Función), LOWER( ) (Función)
Convertir una cadena a mayúsculas iniciales | PROPER( ) (Función)
Hacer que un campo numérico se interprete como una cadena de caracteres | STR( ) (Función)

Funciones

Contiene cuadros de lista de cuatro tipos de funciones. Cuando se selecciona una función de uno de los cuatro tipos, Visual FoxPro la pega automáticamente en el cuadro de expresión. Cuando se están generando expresiones para vistas remotas, Visual FoxPro presenta sólo las funciones específicas de los datos de destino.

Cadena
Presenta las funciones de cadenas de caracteres disponibles.
Lógicas
Presenta las funciones lógicas disponibles.
Matemáticas
Presenta las funciones matemáticas disponibles.
Fecha
Presenta las funciones de fecha y hora disponibles.
Expresión
Muestra la expresión que se está creando o modificando.
Campos
Presenta los campos de la tabla o vista actual.

Para pegar un campo en el cuadro Expresión, haga doble clic sobre el campo o seleccione el campo y presione ENTRAR.

Para mostrar campos de una tabla distinta, seleccione una tabla distinta en el cuadro Desde tabla.

Desde tabla
Presenta tablas y vistas que están abiertas. Seleccione una tabla o una vista para actualizar el cuadro Campos.
Variables
Presenta variables de memoria del sistema, matrices y variables de memoria creadas por usted.

Para pegar una variable en el cuadro Expresión, haga doble clic en la variable, o seleccione la variable y presione ENTRAR.

Comprobar
Valida la sintaxis de la expresión del cuadro de expresión si la tabla correspondiente está abierta. Si la expresión es válida, se muestra “La expresión es válida” en la barra de estado. Si no es válida, o si la tabla correspondiente no está abierta, Visual FoxPro muestra un mensaje de error. Esta opción no se activa para vistas remotas.
Nota Si se incluye una llamada a función definida por el usuario, Comprobar indicará un error, pero no habrá necesariamente un error cuando la expresión se evalúe en tiempo de ejecución.
Opciones
Muestra el cuadro de diálogo Opciones del Generador de expresiones, en el que se pueden fijar las preferencias para el Generador de expresiones.

Para obtener más información, vea "Generar expresiones de impresión" en Establecer opciones de impresión para un control.

Vea también

ALLTRIM( ) (Función) | Cuadro de diálogo Opciones del Generador de expresiones | IIF( ) (Función) | LEFT( ) (Función) | ISLOWER( ) (Función) | ALLTRIM( ) (Función) | PADL( ) | PADR( ) | PADC( ) (Funciones) | PROPER( ) (Función) | RIGHT( ) (Función) | RTRIM( ) (Función) | SET ANSI (Comando) | SET EXACT (Comando) | STR( ) (Función) | SUBSTR( ) (Función) | UPPER( ) (Función)


Cuadro de diálogo Opciones del Generador de expresiones

Fija las preferencias para los elementos mostrados en el Generador de expresiones. Este cuadro de diálogo aparece cuando se elige Opciones en el cuadro de diálogo Generador de expresiones.

Funciones

Permite cambiar los elementos que aparecen en las funciones de Cadena, Matemáticas, Lógicas y de Fecha en el Generador de Expresiones. Se puede elegir mostrarlas todas en el cuadro Generador de Expresiones de cadena, o seleccionar sólo las deseadas. Para seleccionar o cancelar la selección de varios elementos, presione CTRL al hacer sus selecciones.

Cadena
Muestra todas las funciones de cadena del cuadro. Todas las funciones de cadena seleccionadas se mostrarán en el Generador de expresiones.
Matemáticas
Muestra todas las funciones matemáticas del cuadro. Todas las funciones matemáticas seleccionadas se mostrarán en el Generador de expresiones.
Lógicas
Muestra todas las funciones lógicas del cuadro. Todas las funciones lógicas seleccionadas se mostrarán en el Generador de expresiones.
Fecha
Muestra todas las funciones de fecha del cuadro. Todas las funciones de fecha seleccionadas se mostrarán en el Generador de expresiones.
Nota Para seleccionar elementos individuales, presione CTRL + botón primario del ratón. Para seleccionar un grupo de elementos consecutivos, haga clic con el botón primario del ratón en el primer elemento y presione MAYÚS + botón primario del ratón en el último elemento.
Todas
Selecciona todas las funciones del cuadro de forma que todas aparecen como elecciones en el Generador de expresiones.
Borrar
Cancela la selección de todas las funciones del cuadro de forma que ya no aparecen como elecciones en el Generador de expresiones.

Alias de campo

Estas opciones especifican si aparecen alias de tabla o de vista en sus expresiones, y cómo aparecen.

Siempre agregar alias
Especifica que el nombre de tabla o de vista siempre se incluye con campos usados en la expresión.
Agregar sólo alias no seleccionados
Especifica que cuando está abierta más de una tabla o vista, Visual FoxPro sólo incluye el nombre de cualquier tabla o vista que no está seleccionada en la lista Alias de la ventana Sesión de datos con cualquiera de sus campos en la expresión. No se agregan los nombres de tabla o de vista para las tablas que están seleccionadas en la lista Alias.
Nunca agregar alias
Especifica que los nombre de tabla o de vista no se incluyen con ningún campo cuando se crea la expresión.
Mostrar variables de memoria del sistema
Especifica si se muestran las variables de memoria del sistema en el Generador de expresiones. Desactive esta opción si quiere ver solamente las variables de memoria del sistema que se han definido.

Vea también

Ventana Sesión de datos | Cuadro de diálogo Generador de expresiones | Establecer opciones de impresión para un control | _TEXT (Variable del sistema)


Cuadro de diálogo Buscador de archivos

Le permite realizar búsquedas basadas en criterios especificados.

Buscar ahora
Ejecuta una búsqueda de archivos basada en las opciones que especifique en las fichas de Archivador.
Modificar
Abre los archivos seleccionados en la lista de resultados de la búsqueda para su modificación.
Nueva búsqueda
Borra las opciones especificadas en las fichas Búsqueda de texto, Fecha de modificación y Atributos de archivo.
Resultados de la búsqueda
Muestra los archivos localizados por la búsqueda. Haga doble clic en un archivo en la lista Resultados de la búsqueda para abrir el archivo y modificarlo. Para abrir múltiples archivos para su modificación, seleccione los archivos y haga clic en el botón Modificar.

Las opciones de Archivador están agrupadas en las fichas siguientes.

Ficha | Para tener acceso a las siguientes características
Nombre y ubicación | Especificar los nombres, extensiones y ubicaciones de los archivos que busca.
Búsqueda de texto | Especificar las cadenas de texto que desea buscar.
Fecha de modificación | Especificar la creación, modificación o fechas de acceso para los archivos que busca.
Atributos de archivo | Especificar el tamaño y los atributos de los archivos que busca.

Ficha Nombre y ubicación

Nombre
Especifica los archivos que desea buscar. Especifique un nombre y extensión de archivo, o cualquier parte de un nombre y extensión de archivo que incluya caracteres comodín. Separe múltiples especificaciones de archivo con punto y coma. Por ejemplo, para mostrar todos los archivos .prg y .app, use *.prg;*.app.

Haga clic en la flecha abajo para mostrar una lista de las extensiones de archivo de Visual FoxPro utilizadas habitualmente.

Buscar en
Especifica la carpeta en que se produce la búsqueda. Haga clic en la flecha abajo para mostrar una lista de carpetas que haya especificado durante la sesión actual del Archivador.
Examinar
Muestra el cuadro de diálogo Seleccionar directorio, que le permite seleccionar la carpeta en la que se efectuará la búsqueda.
Incluir subcarpetas
Si está activada esta opción, especifica que también se buscará en las subcarpetas. Observe que el Archivador ignora las carpetas del sistema.

Ficha Búsqueda de texto

Expresión 1
Una cadena de texto que se buscará en los archivos que coincidan con la especificación de archivo escrita en la ficha Nombre y ubicación.
Expresión 2
Una cadena de texto adicional que se buscará. Se ignora si el cuadro Expresión 1 está vacío.
Expresión 3
Una cadena de texto adicional que se buscará. Se pasa por alto si los cuadros Expresión 1 y Expresión 2 están vacíos.
Contiene cualquier palabra coincidente
Si está activada esta opción, especifica que cualquiera de las cadenas de texto especificadas en Expresión 1, Expresión 2 y Expresión 3 deben coincidir para que la búsqueda tenga éxito.
Contiene todas las palabras coincidentes
Si está activada esta opción, especifica que todas las cadenas de texto especificadas en Expresión 1, Expresión 2 y Expresión 3 deben coincidir para que la búsqueda tenga éxito.
Coincidir mayúsculas y minúsculas
Si está activada esta opción, especifica que se distingue entre mayúsculas y minúsculas en las cadenas de texto especificadas en Expresión 1, Expresión 2 y Expresión 3.
Solo palabras completas
Si está activada esta opción, especifica que el texto de las cadenas especificadas en Expresión 1, Expresión 2 y Expresión 3 debe coincidir con palabras completas para que la búsqueda tenga éxito.

Ficha Fecha de modificación

Todos los archivos
Si está activada esta opción, especifica que las fechas de creación, modificación o acceso de los archivos se pasan por alto en la búsqueda.
Buscar todos los archivos creados o modificados
Si está activada esta opción, incluye en la búsqueda todos los archivos creados o modificados entre o antes de las fechas especificadas.
Buscar todos los archivos con último acceso
Si está activada esta opción, incluye en la búsqueda todos los archivos a los que se ha tenido acceso entre o antes de las fechas especificadas.
Entre
Está disponible cuando están activadas las opciones Buscar todos los archivos creados o modificados o Buscar todos los archivos con último acceso. Incluye en la búsqueda todos los archivos creados, modificados o a los que se ha tenido acceso entre las dos fechas especificadas.
Durante los meses anteriores
Está disponible cuando están activadas las opciones Buscar todos los archivos creados o modificados o Buscar todos los archivos con último acceso. Incluye en la búsqueda todos los archivos creados, modificados o a los que se ha tenido acceso durante el número especificado de meses.
Durante los días anteriores
Está disponible cuando están activadas las opciones Buscar todos los archivos creados o modificados o Buscar todos los archivos con último acceso. Incluye en la búsqueda todos los archivos creados, modificados o a los que se ha tenido acceso durante el número especificado de días.

Ficha Atributos de archivo

Tamaño
Especifica que los archivos incluidos en la búsqueda tienen al menos o como mucho un tamaño especificado (en kilobytes).

Excluir archivos con estos atributos

Sólo lectura
Excluye de la búsqueda los archivos que tienen activado el atributo de sólo lectura.
Modificado
Excluye de la búsqueda los archivos que tienen activado el atributo modificado.
Oculto
Excluye de la búsqueda los archivos que tienen activado el atributo oculto.
Sistema
Excluye de la búsqueda los archivos que tienen activado el atributo sistema.

Vea también

Cuadro de diálogo Opciones | Ventana Depurador | Cuadro de diálogo Opciones de presentación | Cuadro de diálogo Macros | Cuadro de diálogo Ortografía | Cuadro de diálogo Selección de los asistentes


Cuadro de diálogo Buscar

Este cuadro de diálogo contiene las opciones que le permiten buscar un texto. Visual FoxPro añade diferentes vías para acceder al cuadro de diálogo Buscar desde el teclado.

Teclas | Descripción
CTRL+F | Buscar
CTRL+L | Reemplazar
F3 | Buscar siguiente o abre el cuadro de diálogo Buscar
CTRL+F3 | Actualizar búsqueda con la palabra o los caracteres seleccionados en la posición del cursor.
CTRL+MAYÚS+F3 | Actualizar búsqueda de una aparición anterior de la palabra o los caracteres seleccionados en la posición del cursor.
Buscar
Especifica la cadena de texto que va a buscar.

Para buscar caracteres especiales, use las siguientes representaciones de lenguaje C en los cuadros de texto del cuadro de diálogo Buscar.

Para buscar | Tipo
Entrar | \r
Ficha | \t
Barra invertida \\
Nueva línea (salto de línea) | \n

En Visual FoxPro, las búsquedas admiten caracteres comodín.

Opciones
Estas opciones definen los límites y la dirección de la búsqueda. Si especifica un texto para buscar y no obtiene los resultados esperados, asegúrese de tener seleccionadas las opciones correctas.
  • Coincidir MAY/min Busca el texto que coincida exactamente con la combinación de letras mayúsculas y minúsculas que escriba en el cuadro Buscar.
  • Búsqueda continua Busca en el archivo actual, desde el punto de inserción hasta el final del archivo y, después, desde el principio del archivo hasta el punto de inserción original.
  • Sólo palabras completas Busca distintas apariciones de palabras, no de grupos de caracteres dentro de otras palabras.
  • Búsqueda hacia atrás Busca desde el punto de inserción actual hacia el principio del archivo.
  • Usar caracteres comodín Le permite utilizar caracteres comodín en el texto de búsqueda.

    Con la casilla Usar caracteres comodín desactivada, se realiza una búsqueda de literales por cualquier carácter. Cuando la casilla Usar caracteres comodín está activada, se aplican las siguientes reglas:

    Carácter | Descripción | Uso
    ? Cualquier carácter único Se especifica en vez del carácter que falta.
    * Cero o más caracteres Se especifica en vez de los caracteres que faltan.
    # Cualquier dígito único Se especifica en vez del dígito que falta.
    < Inicio de una palabra Busca la expresión al principio de una palabra
    > Fin de una palabra Busca la expresión al final de una palabra. Debe colocarse después de los caracteres que se van a buscar.
    [charlist] | Conjunto de caracteres | Busca cualquiera de los caracteres especificados entre corchetes. El conjunto puede ser un intervalo, separado por un guión (–) (por ejemplo, [a-d]).
    [!charlist] | Excluir caracteres | Busca cualquier carácter excepto los que se encuentran a continuación del signo de admiración entre corchetes.
    \ Secuencia de escape Busca el carácter a continuación de la barra invertida (\). Le permite buscar los caracteres utilizados en una notación de expresión normal, como { y ^.
Alcance
Define la extensión de la búsqueda. Las opciones de Alcance se activan cuando modifica un procedimiento en una ventana Código.
  • Procedimiento actual Busca sólo en el procedimiento actual, que se muestra en la ventana Código.
  • Objeto actual Busca en todos los procedimientos (código de eventos) del objeto actual (seleccionado).
  • Todos los objetos Busca en todos los procedimientos (código de eventos) de todos los objetos del formulario o conjunto de formularios actual. Si está seleccionado Wrap Around, solamente buscará el evento o método actual.
Buscar siguiente
Busca la siguiente aparición de la cadena que escribió en el cuadro Buscar.
Reemplazar
Expande el cuadro de diálogo al agregar un botón Reemplazar todos y el cuadro de entrada de texto Reemplazar con, en el que puede especificar el texto de sustitución.

Vea también

Cuadro de diálogo Reemplazar | Cuadro de diálogo Pegado especial | Cuadro de diálogo Ir a la línea | Cuadro de diálogo Insertar objeto | Cuadro de diálogo Cambiar icono | Cuadro de diálogo Modificar vínculos | Ventana Código


Cuadro de diálogo Buscar tabla o vista

Este cuadro de diálogo permite seleccionar una tabla o vistas que no puede localizar en el esquema de la base de datos mostrado en el Diseñador de bases de datos. Utilice este cuadro de diálogo para buscar tablas o vistas en el esquema de la base de datos.

Este cuadro de diálogo aparece cuando selecciona Buscar objeto en el menú Base de datos.

Tablas y vistas
Muestra una lista de objetos del diseño de la base de datos que puede buscar. Si la tabla o vista que desea no aparece en esta lista, no se ha agregado a la base de datos.
Botón Buscar
Selecciona y muestra el objeto en el esquema de la base de datos.

Vea también

Cuadro de diálogo Nueva vista local | Cuadro de diálogo Modificar relación | Cuadro de diálogo Nueva vista remota | Crear vistas | Agregar tablas a bases de datos | Crear tablas | Crear una tabla de base de datos | Diseñador de bases de datos


Cuadro de diálogo Fuente

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

Puede cambiar las fuentes de un archivo de texto, un campo o un control de etiqueta en un informe o una etiqueta o en la ventana Comandos. Para cambiar las fuentes de informes y etiquetas, debe crear un control de etiqueta o de campo y, a continuación, seleccionarlo.

Fuente
Muestra las fuentes disponibles.
Estilo de la fuente
Muestra los estilos (Normal, Negrita, Cursiva o Negrita cursiva) que puede aplicar a la fuente o al texto seleccionado.
Tamaño
Muestra una lista de tamaños en puntos para la fuente.

Efectos

  • Tachado Tacha el texto mediante una línea horizontal. Esta opción aparece solo cuando está trabajando con un informe o una etiqueta.
  • Subrayado Subraya el texto seleccionado. Esta opción aparece solo cuando está trabajando con un informe o una etiqueta.
Color
Especifica el color del texto seleccionado. Esta opción aparece solo cuando está trabajando con un informe o una etiqueta.
Ejemplo
Muestra un ejemplo del estilo de letra de la fuente seleccionada para letras mayúsculas y minúsculas.
Alfabeto
Muestra los alfabetos disponibles para una fuente específica. Elija el alfabeto adecuado para el idioma para el que está configurado el equipo.

Vea también

Ventana Examinar | Ventana Modificar | Introducción a las fuentes | FontBold, FontItalic, FontStrikethru, FontUnderline (Propiedades) | Crear informes y etiquetas


Cuadro de diálogo Formato (Campo)

Especifica el valor de una expresión en un control de campo. Este cuadro de diálogo aparece cuando tiene una expresión válida en el cuadro Expresión del cuadro de diálogo Expresión de informe y elige el botón de cuadro de diálogo para Formato.

Formato
Le permite escribir la expresión de formato en lugar de configurar las opciones siguientes, o escribir una plantilla de formato.
Character
Especifica el tipo de datos de carácter y muestra las opciones de edición apropiadas.
Numérico
Especifica el tipo de datos numérico y muestra las opciones de edición apropiadas.
Fecha
Especifica el tipo de datos de fecha y muestra las opciones de edición apropiadas.

Este grupo cambia según el tipo de datos (de carácter, numérico o de fecha). Al seleccionar estas opciones se coloca un código de formato en el cuadro Formato.

Mayúsculas (tipo de carácter)
Convierte todos los caracteres a mayúsculas.
Ignorar máscara de entrada
Muestra, pero no almacena, los caracteres sin formato.
Alinear a la izquierda (tipo de carácter y numérico)
Comienza todos los datos numéricos en la posición más a la izquierda del campo especificado.
Alinear a la derecha (tipo de carácter)
Imprime el dato ajustando a la derecha en el campo.
Alinear al centro (tipo de carácter)
Centra los datos en el campo.
En blanco si es cero (tipo numérico)
Si la salida del campo es cero, no imprime el cero.
(Negativo) (tipo numérico)
Coloca los números negativos entre paréntesis.
SET DATE (todos los tipos)
Muestra los datos como una fecha con el formato actual de SET DATE.
Formato de fecha europea (todos los tipos)
Muestra los datos como una fecha con formato europeo (británico).
CR si es positivo (tipo numérico)
Muestra CR (crédito) después de los números positivos.
DB si es negativo (tipo numérico)
Muestra DB (débito) después de los números negativos.
Ceros iniciales (tipo numérico)
Imprime todos los ceros iniciales.
Moneda (tipo numérico)
Muestra el formato Moneda como se especifica en la ficha Regional del cuadro de diálogo Opciones.
Notación científica (tipo numérico)
Muestra el formato en notación científica (se usa para números muy grandes o muy pequeños).

Vea también

Cuadro de diálogo Calcular campo | Ficha Regional, cuadro de diálogo Opciones | Diseñador de informes | Cuadro de diálogo Expresión de informe | SET DATE | Dar formato a controles de campo | Crear un diseño de informe


Cuadro de diálogo Opciones generales

Le permite especificar código para un sistema de menús completo. Puede tener acceso a este cuadro de diálogo al seleccionar Opciones generales en el menú Ver del Diseñador de menús.

Procedimiento
Crea el código de un procedimiento de menú. Si el código excede la región de edición mostrada, la barra de desplazamiento se activa.
Modificar
Abre una ventana de edición, con lo que puede crear el código en ella, en lugar de en el cuadro de diálogo Opciones generales. Para activar la ventana de edición, elija Modificar y, a continuación, elija Aceptar en el cuadro de diálogo Opciones generales.

Ubicación

Reemplazar
Reemplaza el sistema de menús existente con un nuevo sistema de menús.
Anexar
Agrega un nuevo sistema de menús a la derecha del sistema de menús activo.
Antes
Inserta un nuevo menú antes del menú especificado. Esta opción muestra una lista desplegable que contiene los nombres del sistema de menús activo. Para insertar el nuevo menú, seleccione el nombre del menú que desea que esté antes del nuevo menú.
Después
Inserta un nuevo menú tras el menú especificado. Esta opción muestra una lista desplegable que contiene los nombres del sistema de menús activo. Para insertar el nuevo menú, seleccione el nombre del menú que desea que esté después que el nuevo menú.

Código de menú

Instalación
Abre una ventana de edición en la cual puede agregar código de instalación a un sistema de menús. Para activar la ventana de edición, elija Aceptar en el cuadro de diálogo Opciones generales.
Limpiar
Abre una ventana de edición en la que puede agregar código de limpieza a un sistema de menús. Para activar la ventana de edición, elija Aceptar en el cuadro de diálogo Opciones generales.
Formulario de nivel superior
Si está activada, permite que se use el menú en un formulario de nivel superior (SDI). Si no está activada, permite que sólo se use el menú en el marco de Visual FoxPro.

Para obtener más información, vea Diseñar menús y barras de herramientas.

Vea también

Diseñador de menús | Cuadro de diálogo Opciones de menú | Cuadro de diálogo Definir diseño de ventana | Cuadro de diálogo Orden de tabulación | Cuadro de diálogo Barras de herramientas


Cuadro de diálogo Generar menú

Le permite especificar un nombre para el programa de menú generado y, a continuación, generar el programa. Si no ha guardado el menú, se le pedirá que lo haga.

Este cuadro de diálogo aparece cuando selecciona Generar en el menú Menú.

Archivo de resultados
Especifica la ruta de acceso al programa de menú generado. Elija el botón del cuadro de diálogo para seleccionar un directorio y un nombre de archivo, o reemplace el nombre de archivo que haya elegido al sobrescribir el nombre mostrado.
Generar
Genera un archivo de programa de menú, con una extensión .mpr.

Vea también

Cuadro de diálogo Ejecutar | Diseñador de menús | Crear un sistema de menús | Directrices para el diseño de sistemas de menús | Crear menús, menús contextuales, elementos de menú y submenús | CREATE MENU (Comando)


Cuadro de diálogo Obtener la última versión de los archivos

Obtiene los archivos seleccionados del proveedor de control de código fuente y coloca una copia local en el Administrador de proyectos.

Archivos de los que hay que obtener la última versión
Muestra los archivos disponibles en el proyecto de control de código fuente.
Seleccionar todo
Selecciona todos los archivos disponibles.
Avanzadas
Muestra el cuadro de diálogo Opciones avanzadas de obtener archivos del proveedor de control de código fuente.

Vea también

Cuadro de diálogo Proteger archivos | Cuadro de diálogo Desproteger archivos | Cuadro de diálogo Deshacer desproteger archivos | Enlaces del Administrador de proyectos


Cuadro de diálogo Ir a la línea

Este diálogo permite mover el punto de inserción a la línea designada de un archivo de programa o texto, o en la ventana Comandos.

Número de línea
Especifica el número de línea donde desea que aparezca el punto de inserción.

Vea también

Ventana Comandos | Cuadro de diálogo Buscar | Cuadro de diálogo Opciones | SYS(2002) - Activar o desactivar el punto de inserción | Cuadro de diálogo Insertar objeto | Cuadro de diálogo Reemplazar


Cuadro de diálogo Ir al registro

Especifica el registro al que desea mover el puntero. Escriba el número de registro en el cuadro Número de registro, o utilice las flechas arriba y abajo hasta que se muestre el número deseado en el cuadro Número de registro. Elija Aceptar para volver a la ventana Examinar con el puntero de registro sobre el registro especificado.

Este cuadro de diálogo aparece cuando elige el comando Registro número del submenú Ir al registro.

Vea también

Ventana Examinar | Cuadro de diálogo Encontrar registro | Cuadro de diálogo Alcance | Cuadro de diálogo Selector de campos | Trabajar con registros | Agregar registros | Filtrar datos | Manipulación de registros


Cuadro de diálogo Pie de grupo

Establece opciones de alto y expresiones de banda para la banda Pie de grupo de un informe o etiqueta. Este cuadro de diálogo aparece cuando hace doble clic en la barra de la banda Pie de grupo en el Diseñador de informes. Para crear una banda Pie de grupo, elija Agrupar datos en el menú Informe, cree una expresión de grupo y, a continuación, elija Aceptar.

Alto
Especifica el alto de la banda. Escriba un valor en el cuadro, haga clic en FLECHA ARRIBA o FLECHA ABAJO para cambiar el valor mostrado en incrementos de 0,05 o arrastre la barra de separación de la banda con el ratón.
Banda de alto constante
Impide que la banda se alargue para ajustarse a la longitud de los datos o se encoja para absorber las líneas en blanco que se hayan quitado.

Ejecutar expresión

Al entrar
Especifica que se evalúe una expresión antes de que se imprima el contenido del pie de grupo. Escriba la expresión en el cuadro o elija el botón de cuadro de diálogo para mostrar el cuadro de diálogo Generador de expresiones.
Al salir
Especifica que se evalúe una expresión después de imprimir el contenido del pie de grupo. Escriba la expresión en el cuadro o elija el botón de cuadro de diálogo para mostrar el cuadro de diálogo Generador de expresiones.

Vea también

Cuadro de diálogo Agrupar datos | Cuadro de diálogo Generador de expresiones | Cuadro de diálogo Encabezado de grupo | Diseñador de etiquetas | Diseñador de informes | Cuadro de diálogo Bandas del diseñador de informes | Modificar diseños | Crear informes y etiquetas | Refinar el diseño de página | Preparar el diseño de informe


Cuadro de diálogo Encabezado de grupo

Establece opciones de alto y expresiones de banda para la banda Encabezado de grupo de un informe o etiqueta. Este cuadro de diálogo aparece cuando hace doble clic en la barra de la banda Encabezado de grupo en el Diseñador de informes. Para crear una banda Encabezado de grupo, elija Agrupar datos en el menú Informe, cree una expresión de grupo y, a continuación, elija Aceptar.

Alto
Especifica el alto de la banda. Escriba un valor en el cuadro, haga clic en FLECHA ARRIBA o FLECHA ABAJO para cambiar el valor mostrado en incrementos de 0,05 o arrastre la barra de separación de la banda con el ratón.
Banda de alto constante
Impide que la banda se alargue para ajustarse a la longitud de los datos o se encoja para absorber las líneas en blanco que se hayan quitado.

Ejecutar expresión

Al entrar
Especifica que se evalúe una expresión antes de imprimir cada encabezado de grupo nuevo. Escriba la expresión en el cuadro o elija el botón de cuadro de diálogo para mostrar el cuadro de diálogo Generador de expresiones.
Al salir
Especifica que se evalúe una expresión después de imprimir cada página nueva. Escriba la expresión en el cuadro o elija el botón de cuadro de diálogo para mostrar el cuadro de diálogo Generador de expresiones.

Vea también

Cuadro de diálogo Agrupar datos | Cuadro de diálogo Generador de expresiones | Cuadro de diálogo Pie de grupo | Diseñador de etiquetas | Diseñador de informes | Cuadro de diálogo Bandas del diseñador de informes | Modificar diseños | Refinar el diseño de página | Preparar el diseño de informe


Cuadro de diálogo Condiciones

Especifica las condiciones para seleccionar qué grupos de registros se incluirán en el resultado de la consulta.

Este cuadro de diálogo aparece cuando elige Condiciones en la ficha Agrupar por, Diseñadores de consultas y vistas.

Nombre de campo
Especifica una función, nombre de campo u otra expresión. Cuando cree una cláusula Having, seleccione el campo para mostrar una lista de funciones, una lista de nombres de campo para cada tabla o utilice el comando de expresión para presentar el cuadro de diálogo Generador de expresiones. Si elige una función, un submenú presenta una lista de nombres de campos disponibles para utilizarse con esa función.
No
Invierte el criterio de comparación.
Criterio de comparación
Especifica el operador para el criterio de selección. Los criterios de comparación son los siguientes:
  • Igual (=) Especifica que el campo y el valor en el campo Ejemplo tiene el mismo valor.
  • Like Especifica que el campo debe incluir caracteres que coincidan con caracteres en el texto del campo Ejemplo.

    Por ejemplo, Customer.state Like O coinciden los registros Ohio, Oklahoma y Oregon.

  • Exactamente igual (==) Especifica que el campo debe coincidir carácter a carácter, con el texto en el campo Ejemplo.
  • Mayor que (>) Especifica que el campo debe ser mayor que el valor en el campo Ejemplo.
  • Menor que (<) Especifica que el campo debe ser el menor que el valor en el campo Ejemplo.
  • Mayor que o igual a (>=) Especifica que el campo debe ser el igual o mayor que el valor en el campo Ejemplo.
  • Menor que o igual a (<=) Especifica que el campo debe ser el igual o menor que el valor en el campo Ejemplo.
  • Es NULL Especifica que el campo debe contener un valor nulo.
  • Es Verdadero Especifica que el campo izquierdo o la expresión se evalúa como Verdadero, asumiendo que el campo o expresión se evalúa como un valor lógico.
  • Between Especifica que el campo debe ser mayor que o igual a el valor inferior y menor que o igual a el valor superior, en la condición que aparece en la columna Ejemplo. Debe separar los dos valores en la columna Ejemplo con la palabra AND. Visual FoxPro crea la consulta con la palabra BETWEEN.

    Por ejemplo, para Invoices.idate Between 05/10/97 AND 05/12/97 coinciden los registros 10, 11 y 12 de Mayo de 1997.

  • In Especifica que el campo debe coincidir uno a muchos valores en la lista separada por comas que aparece en el campo Ejemplo.

    Por ejemplo, para Customer.name In Al,George,Mary coinciden los registros en los cuales el nombre del cliente es Al, George o Mary.

Ejemplo
Especifica el valor o texto con el cual desea comparar el campo. Para que el texto del ejemplo coincida en mayúscula o minúsculas, utilice las funciones UPPER( ), LOWER( ) y PROPER( ).
Lógicas
Agrega una condición AND u OR para la lista de condiciones.
Pri. (Prioridad)
Especifica un número dentro del intervalo 0 a 99, el cual indica la prioridad para las operaciones lógicas. El número 0 indica la más alta prioridad, mientras que el número 99 indica la prioridad más baja.

Establecer las prioridades para operaciones lógicas determina el orden en el cual se realizan y puede utilizar paréntesis (()) para agrupar operaciones. Por ejemplo, suponga que puede especificar una prioridad 0 para una operación lógica, una prioridad 1 para una segunda operación lógica y una prioridad 0 para una tercera operación lógica. La primera y tercera operaciones lógicas, las cuales tienen una prioridad 0, se realizan antes de la segunda operación lógica, la cual tiene una prioridad 1.

Insertar
Inserta una fila en blanco encima de la condición seleccionada.
Quitar
Quita las filas seleccionadas de la lista Nombre de campo.

Vea también

Ficha Agrupar por, Diseñadores de consultas y vistas | Diseñador de consultas y de vistas | SELECT - SQL (Comando) | CREATE QUERY (Comando) | Crear consultas


Cuadro de diálogo Importar

Le permite importar datos a una tabla de Visual FoxPro desde una hoja de cálculo o una tabla con otro formato. También puede usar el Asistente para importar para importar archivos.

Nota No puede importar archivos de texto con este comando de menú. Para importar archivos de texto, utilice el Asistente para importar o cree una tabla y, a continuación, anexe el archivo de texto a la nueva tabla.

Este cuadro de diálogo aparece cuando selecciona Importar en el menú Archivo.

Tipo
Especifica el tipo de archivo que va a importar. Seleccione un tipo de archivo de la lista.
Desde
Especifica la ruta de acceso y el nombre del archivo de origen. Escriba la ruta de acceso y el nombre, o haga clic en el botón de cuadro de diálogo para encontrar el archivo de origen.
Hoja
Especifica una hoja de cálculo de Microsoft Excel para importar. Este cuadro sólo aparece si selecciona Microsoft Excel en el cuadro Tipo.
Para
Muestra la ruta de acceso, tal como se define en la ficha Ubicaciones de archivo del cuadro de diálogo Opciones y el nombre de archivo del archivo importado. El nombre de archivo es el del archivo de origen, pero con una extensión .dbf.
Asistente para importar
Inicia el Asistente para importar, que le hace preguntas básicas a medida que realiza una breve serie de pasos. Debe usar el Asistente para importar para importar archivos de texto, o crear una tabla y después anexar el archivo de texto a la nueva tabla.

La tabla siguiente muestra los tipos de archivo que puede importar con este comando y los comandos equivalentes que podría escribir en la ventana Comandos.

Tipos de archivo Comandos equivalentes
FrameWork II (FW2)
IMPORT FROM FileName TYPE FW2
Lotus 1-2-3 1-A (WKS)
IMPORT FROM FileName TYPE WKS
Lotus 1-2-3 2.x (WK1)
IMPORT FROM FileName TYPE WK1
Lotus 1-2-3 3.x (WK3)
IMPORT FROM FileName TYPE WK3
Microsoft Excel 2.0, 3.0 y 4.0 (XLS)
IMPORT FROM FileName TYPE XLS
MultiPlan 4.01 (MOD)
IMPORT FROM FileName TYPE MOD
Paradox 3.5, 4.0, 4.5 (DB)
IMPORT FROM FileName TYPE PDOX
RapidFile (RPD)
IMPORT FROM FileName TYPE RPD
Symphony 1.01 (WRK)
IMPORT FROM FileName TYPE WRK
Symphony 1.10 (WR1)
IMPORT FROM FileName TYPE WR1

Vea también

Cuadro de diálogo Anexar desde | Ventana Comandos | Cuadro de diálogo Exportar | Asistente para importar | IMPORT (Comando) | Ficha Archivos, cuadro de diálogo Opciones | Importar y exportar datos


Cuadro de diálogo Archivo de tipo Include

Le permite especificar un archivo de tipo Include que contenga constantes de tiempo de compilación predefinidas para una clase, un formulario o un conjunto de formularios definidos por el usuario.

Este cuadro de diálogo aparece cuando selecciona la opción Archivo de tipo Include del menú Clase o del menú Formulario.

Archivo de tipo Include
Especifica un archivo de encabezado de constantes de tiempo de compilación predefinidas para una clase, un formulario o un conjunto de formularios definidos por el usuario. Escriba el nombre del archivo de tipo Include en el cuadro o use el botón del cuadro de diálogo para seleccionar un archivo de tipo Include existente.

Vea también

#DEFINE | Cuadro de diálogo Modificar propiedades y métodos | Cuadro de diálogo Nuevo método | Cuadro de diálogo Nueva propiedad | Funciones definidas por el usuario | Procedimientos y funciones definidas por el usuario | Constantes


Cuadro de diálogo Insertar objeto

Presenta los objetos OLE que puede vincular o incrustar en la aplicación para formularios o campos General de tablas de Visual FoxPro.

En una ventana Examinar, haga doble clic en un campo General para mostrar la ventana de edición y activar el comando Insertar objeto.

Para un formulario, seleccione un control Contenedor OLE mientras se muestra el formulario. Esto abre el cuadro de diálogo Insert Object y el nuevo objeto se almacena en el campo al que está vinculado el control.

Crear nuevo
Muestra el cuadro Tipo de objeto en el que puede elegir una aplicación OLE en la que creará el nuevo objeto.
Tipo de objeto
Aparece cuando selecciona Crear nuevo, y muestra las aplicaciones OLE instaladas en su equipo. Seleccione la aplicación en la que desea crear el objeto.
Crear desde archivo
Muestra el cuadro Archivo, en el que puede especificar un objeto existente para insertar.
Archivo
Aparece cuando selecciona Crear desde archivo. Escriba el nombre de archivo y la ruta de acceso de acceso del objeto o elija Examinar para seleccionar el archivo apropiado.
Examinar
Abre el cuadro de diálogo Examinar, que le permite seleccionar una tabla o vista.
Vincular
Vincula el objeto. Si no selecciona esta opción, el objeto se incrusta.
Mostrar como icono
Muestra el objeto insertado como un icono. El icono procede de la aplicación en que se creó el objeto.
Resultado
Dependiendo del botón de opción seleccionado, puede mostrar una descripción de la acción que se va a realizar en el contenido del archivo después de que seleccione Aceptar, un Identificador único y una ruta de acceso a la selección de Control o Tipo de objeto. Puede modificar la descripción mostrada si elige las opciones Crear nuevo, Crear desde archivo, o Mostrar como icono.
Cambiar icono
Muestra el cuadro de diálogo Cambiar icono, que le permite seleccionar un icono diferente para el objeto OLE. Aparece cuando selecciona la opción Mostrar como icono.
Insertar control (sólo en formularios)
Muestra el cuadro Tipo de control, por lo que puede insertar un control ActiveX.
Tipo de control (sólo para formularios)
Aparece cuando se selecciona Insertar Control y presenta los controles ActiveX que puede insertar.
Agregar control (sólo para formularios)
parece cuando se selecciona Insertar Control y abre el cuadro de diálogo Examinar, por lo que puede buscar y seleccionar un control ActiveX no presentado en Tipo de control.

Vea también

Ficha Controles, cuadro de diálogo Opciones | Tipo de campo General | Ventana Propiedades | Cuadro de diálogo Cambiar icono | Compartir información dinámicamente


Cuadro de diálogo Insertar referencia de objeto

Le permite ver el nombre de todos los objetos en el diseñador e insertar una referencia completamente cualificada al objeto en su código.

Este cuadro de diálogo aparece cuando elige la opción Lista de objetos del menú contextual de la ventana Código en el Diseñador de formularios o el Diseñador de clases.

Lista de objetos
Todos los objetos contenidos en el contenedor de más alto nivel en el Diseñador de formularios o el Diseñador de clases. Se aplica una sangría a los objetos contenidos para indicar la jerarquía del contenedor.
Insertar
Inserta una cadena con la referencia completa al objeto en el cursor de la ventana de edición.

Vea también

Diseñador de clases | Diseñador de formularios | Ventana Vista del documento | Ventana Código | Cuadro de diálogo Insertar objeto


Cuadro de diálogo Insertar barra de menús del sistema

Le permite agregar menús y opciones de menú a la ventana Diseñador de menús. Este cuadro de diálogo aparece cuando elige la opción Insertar barra del menú Menú o al seleccionar el botón Insertar barra de la ventana Diseñador de menús.

Cuadro de lista Menú
Muestra los nombres de menú y los nombres de opciones de menú disponibles, que dependen de si ha elegido Uso o Indicador del sistema en la opción Ordenar por.

Ordenar por

Uso
Especifica que el cuadro de lista Menú muestra los elementos de menú disponibles para que aparezcan en sus títulos de menú respectivos. Por ejemplo, se muestran en primer lugar todos los elementos del menú Archivo, en el orden en que aparecen en el menú Archivo real. Los elementos del menú Edición aparecen a continuación y así sucesivamente.
Indicador del sistema
Especifica que el cuadro de lista Menú muestra los elementos de menú disponibles en orden alfabético.
Insertar
Inserta el elemento de menú seleccionado en la fila especificada en la ventana del Diseñador de menús.

Vea también

Cuadro de diálogo Generar menú | Opciones de menú | Cuadro de diálogo Opciones de menú | Menús y barras de menús | Diseñador de menús


Cuadro de diálogo Condición de combinación

Especifica una condición de combinación entre tablas. Este cuadro de diálogo aparece cuando agrega más de una tabla a su consulta o vista, y las tablas no tienen una condición de combinación especificada.

Para más información sobre condiciones de combinación, vea Condiciones de combinación para tablas, consultas y vistas.

Lista de campos derecha
Muestra los campos de la tabla que ha agregado. Seleccione un campo de la lista por el que quiere combinar las tablas.
Lista de campos izquierda
Muestra los campos de todas las tablas que se han agregado previamente al Diseñador de consultas. Seleccione un campo de la lista por el que quiere combinar las tablas.

Tipo de combinación

Interna
Crea una combinación que sólo mostrará los registros de la Lista de campos izquierda que coincidan con los registros de la Lista de campos derecha para los campos seleccionados.
Izquierda
Crea una combinación que incluye los registros de la Lista de campos izquierda y los registros coincidentes de la Lista de campos derecha para los campos seleccionados.
Derecha
Crea una combinación que incluye los registros de la Lista de campos derecha y los registros coincidentes de la Lista de campos izquierda para los campos seleccionados.
Completa
Crea una combinación que incluye todos los registros de los dos cuadros de lista para los campos seleccionados en los cuadros de lista.
Descripción
Especifica cómo se relacionan entre sí los campos de cada tabla cuando selecciona las distintas opciones de combinación.

Vea también

Cuadro de diálogo Agregar tabla o vista | SELECT - SQL (Comando) | SET ANSI (Comando) | Cuadro de diálogo Destino de la consulta | Diseñador de consultas


Cuadro de diálogo Etiqueta

Muestra los resultados de la consulta en una etiqueta existente. Debe haber configurado previamente un archivo de etiqueta (.lbx) que contenga los campos a mostrar en la consulta. Este comando está disponible sólo para consultas.

Abrir etiqueta
Muestra el cuadro de diálogo Abrir para que se seleccione el archivo de etiqueta que se utilizará para la consulta. Puede hacer clic en el botón o escribir un nombre de archivo en el cuadro de texto.
Icono del Asistente
Muestra el Asistente para etiquetas.
Vista preliminar
Muestra los resultados en la ventana Vista preliminar.
Activar consola
Muestra los resultados en la ventana activa.

Salida Secundaria

Ninguna
Especifica que los resultados no sean enviados a la impresora o guardados como un archivo de texto.
A impresora
Envía los resultados de la consulta a la impresora.
A un archivo de texto
Guarda los resultados de la consulta como archivo de texto. Haga clic en el botón para seleccionar un archivo existente que desee sobrescribir o escriba el nombre de un archivo nuevo en el cuadro de texto.

Vea también

Ficha Varios, Diseñadores de consultas y vistas | Asistente para etiquetas | Diseñador de etiquetas | Crear un diseño de etiquetas


Cuadro de diálogo Encontrar base de datos

Le permite ubicar o ignorar una tabla o vista que falte.

Este cuadro de diálogo aparece cuando abre o ejecuta un formulario y Visual FoxPro no es capaz de ubicar una tabla o vista en el entorno de datos del formulario.

Encontrar
Presenta el cuadro de diálogo Abrir, de forma que pueda encontrar la tabla o vista.
Ignorar
Visual FoxPro continuará cargando el formulario sin crear una instancia del objeto cursor en el entorno de datos. Si hay controles que dependen de campos en la tabla o vista, se generarán errores adicionales.
Cancelar
Visual FoxPro detendrá la carga del formulario.
Ayuda
Presenta la Ayuda sobre el cuadro de diálogo.

Vea también

Cuadro de diálogo Abrir | LOCATE (Comando) | Cuadro de diálogo Encontrar registro | Botón Encontrar | Cuadro de diálogo Buscar tabla o vista | Cuadro de diálogo Agregar tabla o vista


Cuadro de diálogo Encontrar archivo

Le permite encontrar o ignorar un archivo o grupo de archivos perdidos. Este cuadro de diálogo aparece cuando ejecuta un programa y Visual FoxPro es incapaz de encontrar un archivo necesario para ejecutar el programa satisfactoriamente.

Buscar
Muestra el Cuadro de diálogo Abrir, para que se pueda encontrar el archivo.
Pasar por alto
Visual FoxPro continuará ejecutando el programa sin el archivo requerido.
Pasar por alto todos
Visual FoxPro continuará ejecutando el programa sin el grupo de archivos requeridos.
Cancelar
Visual FoxPro detendrá la ejecución del programa.

Vea también

Cuadro de diálogo Abrir | LOCATE (Comando) | Cuadro de diálogo Encontrar registro | Botón Encontrar | Cuadro de diálogo Buscar tabla o vista | Cuadro de diálogo Agregar tabla o vista | Cuadro de diálogo Encontrar base de datos


Cuadro de diálogo Encontrar registro

Busca en la tabla o vista activa aquellos registros que coincidan con las condiciones especificadas. Utilice este comando cuando desee buscar en una tabla o vista registro a registro por un campo indizado o sin indexar, o cuando desee encontrar más de un registro de la tabla.

Este cuadro de diálogo aparece cuando elige el comando Buscar del submenú Ir al registro.

Alcance
Permite especificar los registros sobre los cuales Visual Foxpro va a actuar. Elija Todo, Siguiente, Registro o Resto en la lista desplegable. Elija un número en el control numérico de la derecha al seleccionar Siguiente o Registro en la lista desplegable Alcance.
FOR
Muestra el cuadro de diálogo Generador de expresiones, en el que puede crear la expresión lógica que cada registro debe cumplir para que le afecte el comando.
WHILE
Muestra el cuadro de diálogo Generador de expresiones. La expresión WHILE especifica que la acción afecta a los registros sólo mientras la expresión lógica sea verdadera. La primera vez que la expresión dé como resultado falso, se detiene la acción sin evaluar los registros restantes.
Encontrar
Ejecuta el comando mediante los valores de Alcance, FOR y WHILE.

Vea también

Ventana Examinar | CONTINUE (Comando) | Cuadro de diálogo Generador de expresiones | LOCATE (Comando) | Cuadro de diálogo Alcance | Trabajar con registros | Agregar registros | Filtrar datos | Manipulación de registros


Cuadro de diálogo Buscar Referencia

Le proporciona una forma de buscar las apariciones de un código de referencia en un proyecto, en una carpeta o sub-carpeta específica. Puede filtrar su búsqueda con tipo de archivo.

El cuadro de diálogo Buscar Referencia aparece solamente en el modo de diseño cuando selecciona Referencias de Código en el menú Herramientas. También puede seleccionar Buscar Referencia haciendo clic en el botón derecho del ratón dentro de la ventana de edición para programas o abra el cuadro de diálogo Buscar Referencia mediante programación, para la primera vez usando el siguiente código:

DO(_FOXREF)

Para más información sobre llamar el sistema variable _FOXREF, vea _FOXREF (Variable del sistema).

Buscar
Especifica la expresión para el destino de la búsqueda.

Visual FoxPro llena el cuadro Buscar con la expresión seleccionada en la ventana de Edición. El cuadro Buscar contiene todas las expresiones seleccionadas recientemente o previamente buscadas.

Cuando se selecciona la casilla de verificación Usar expresiones regulares, un botón de flecha al lado del cuadro Buscar se vuelve disponible. Seleccionando la casilla de verificación Usar expresiones regulares se permite la búsqueda de carácteres comodín. Para más información, vea "Usar expresiones regulares" en este apartado.

Alcance
Especifica el rango de búsqueda y contiene las siguientes opciones:
  • Carpeta Busca la carpeta activa y de forma opcional, subcarpetas.
  • Proyecto Busca el conjunto de archivos en el proyecto seleccionado. Únicamente aparecen en la lista desplegada los proyectos abiertos.
Examinar
Especifica la carpeta activa y cuando se selecciona Carpeta en el cuadro de Alcance, contiene una lista desplegada con la historia de las carpetas seleccionadas previemente. Para seleccionar una carpeta diferente, haga clic en el botón (...) para abrir el cuadro de diálogo Seleccionar Directorio.

El cuadro Examinar no está disponible cuando se selecciona Proyecto en la casilla Alcance.

Buscar subcarpetas
Incluye las subcarpetas de la carpeta seleccionada en su búsqueda. El cuadro de verificación Buscar subcarpetas está disponible únicamente cuando se selecciona Carpeta en la casilla Alcance.
Limitar la búsqueda al directorio local del proyecto y subcarpetas.
Incluye únicamente aquellos archivos en el proyecto que están localizados entre la carpeta y subcarpetas locales del proyecto. Los archivos compartidos quedan excluidos. Esta casilla de verificación está disponible solamente cuando se selecciona Proyecto en la casilla Alcance.
Sobrescribir resultados anteriores
Controla si los resultados de una búsqueda anterior están incluidos o sobrescritos en la nueva búsqueda. Esta opción funciona de manera similar a seleccionar Limpiar Todos los Resultados del menú contextual en la ventana Referencias de Código para reemplazar todo el contenido en el panel Buscar. La casilla de verificación Sobrescribir resultados anteriores está disponible cuando se selecciona Carpeta o Proyecto en Alcance.
Tipos de Archivo
Especifica un conjunto de tipos de archivo para limitar la búsqueda. Los tipos de archivo están separados por comas. El valor más reciente usado en una búsqueda es utilizado en la siguiente búsqueda. Puede agregar tipos de archivo personalizados usando el archivo FoxRefAddin.dbf. La tabla FoxRefAddin le permite incluir extensiones de tipos de archivo específicas que están excluidas cuando se realiza la búsqueda de un nombre de archivo con caracteres comodín (*.*). La siguiente tabla incluye todos los tipos de archivo de Visual FoxPro que son admisibles y cómo se comportan las búsquedas en un tipo de archivo.
Extensión de Archivo | Comportamiento
.cdx | Busca expresiones de índice. Si selecciona esta extensión se requiere que una tabla esté abierta para encontrar la expresión.
.dbc | Busca procedimientos almacenados, vistas remotas fuente, conexiones y otros datos .dbc, sin incluir archivos y estructuras .dbf .
.dbf | Busca nombres de campo y todos los metadatos de archivo con extensión .dbc como las expresiones desencadenantes, pero no los contenidos de tabla. Si selecciona esta extensión, Visual FoxPro podría necesitar que abra o cierre tablas temporalmente.
.frx, .lbx | Busca expresiones de informes y etiquetas, valores de etiqueta y entorno de datos.
.mnx | Busca nombres de menú y código asociado.
.prg | Busca archivos de programa y muestra el número de la línea para la referencia si lo encuentra.
.scx | Busca todos los códigos de método, entorno de datos y los valores de propiedades no predeterminados.
.vcx | Busca todos los códigos método y los valores de propiedad no predeterminados.
Otros tipos de Archivos | Trata las expresiones de búsqueda como texto estricto.

La siguiente tabla lista los grupos predeterminados de tipos de archivo que aparecen desplegados en la lista del cuadro Tipos de Archivo.

Tipos de Archivo | Extensiones de Archivo
Todos los archivos *.*
Común | *.scx, *.vcx, *.prg, *.frx, *.lbx, *.mnx, *.dbc, *.qpr, *.h
Todas las Fuentes | *.scx, *.vcx, *.prg, *.frx, *.lbx, *.mnx, *.dbc, *.dbf, *.cdx, *.qpr, *.h
Formularios y Clases | *.scx, *.vcx, *.prg
Reportes y Etiquetas | *.frx, *.lbx
Menus | *.mnx
Programas | *.prg, *.h, *.qpr, *.mpr
Estructuras de Datos | *.dbc, *.dbf, *.cdx
Texto | *.txt, *.xml, *.xsl, *.html, *.log, *.asp, *.aspx

Nota El grupo de tipos de archivo de fuente Común incluye solamente archivos .dbc como opción predeterminada de fuente de datos. El comportamiento predeterminado es para buscar únicamente procedimientos almacenados. Puede cambiar este comportamiento haciendo clic en el botón de Opciones en el cuadro de diálogo Buscar Referencia.

Opciones
Abre el cuadro de diálogo Opciones para configurar opciones adicionales para su búsqueda. Para más información, vea Caja de diálogo Buscar referencia, cuadro de diálogo Opciones.

Grupo de Opciones

El cuadro Grupo de Opciones incluye opciones adicionales que puede especificar para personalizar su búsqueda.

Coincidir May/min
Especifica si su búsqueda es sensible al uso de mayúsculas y minúsculas.
Solo palabras completas
Especifica si en su búsqueda deben considerarse las palabras completas exactas.
Usar expresiones regulares
Permite la búsqueda de carácteres comodín. Seleccionando la casilla de verificación Usar expresiones regulares se habilita el botón de flecha al lado del cuadro Buscar. Al hacer clic en el botón de flecha se abre un menú del cual puede seleccionar un tipo de expresión regular para insertarlo en el cuadro Buscar. Para más información sobre expresiones regulares, vea Expresiones regulares y operadores
Comentarios
Especifica si se incluyen observaciones de código en su búsqueda. Los observaciones comienzan con un asterisco (*), doble aspersan (&&) o NOTA clave. La lista desplegada de Comentarios incluye las siguientes opciones:
  • Incluir Comentario Incluye observaciones en su búsqueda.
  • Ignorar Comentarios Ignora observaciones en su búsqueda.
  • Sólo Comentarios Busca únicamente observaciones.

Vea también

Cuadros de diálogo | Ventana Referencia de código | Ver definiciones de código | _FOXREF (Variable del sistema)


Caja de dialogo Buscar referencia, Cuadro de diálogo Opciones

Configura opciones adicionales para buscar una referencia de código.

El cuadro de diálogo Opciones aparece cuando hace clic en el botón Opciones en el cuadro de diálogo Buscar Referencia o la ventana Referencias de Código. Usted puede obtener descripciones de cada opción haciendo clic en el texto de la opción.

Crear tabla de definiciones de símbolo durante la búsqueda.
Especifica la recolección de definiciones de símbolo de código de archivos procesados durante la búsqueda de una referencia. De otra forma, las definiciones son recogidas a solicitud cuando se están viendo definiciones de código. Esta opción realiza una búsqueda completa de definiciones durante una búsqueda de referencia y ahorra tiempo cuando se ven definiciones de código. Para más información, vea Ver definiciones de código.
Limitar colección de definición al directorio local de proyecto y no relevantes.
Especifica que una colección de definiciones de símbolo de código para un proyecto incluye solamente aquellos archivos que están en el árbol del directorio local del proyecto. Esto evita que se incluyan definiciones de framework y otros archivos que no están inmediatamente relevantes para el proyecto activo.
Buscar solamente códigos y expresiones fuente.
Especifica que la búsqueda se realiza únicamente en códigos y expresiones fuente. De otra manera, valores tales como nombres de archivos en tablas, valores de etiqueta en reportes, títulos y otros textos son incluidos en la búsqueda.
Buscar nombres y valores de propiedades de formulario/clase
Especifica que los nombres y valores de propiedades de los formularios visuales (.scx) y clases visuales (.vcx) están incluidas en una búsqueda de referencia.
Mostrar número de referencias encontradas por línea en resultados de búsqueda
Especifica que un indicador es mostrado en la ventana de referencias al lado de los resultados que tienen más de una coincidencia por línea.
Mostrar historial de tipos de archivo buscados
Especifica que un historial de los tipos de archivo seleccionados recientemente se mostrará en la ventana Buscar Referencia . De otra forma, solamente se mostrarán los tipos de archivo común y los tipos de archivo más recientemente seleccionados.
Estilo de copia de seguridad
Especifica cómo son nombrados los archivos cuando se les crea una copia de seguridad durante el reemplazo de la referencia de código global.
Fuente
Muestra el cuadro de diálogo Fuente, el cual puede usar para cambiar la fuente de la ventana Referencias de Código.
Carpeta para las tablas de Referencias de Código
Especifica y contiene la ubicación para agrupar las tablas de Referencias de Código. Para seleccionar una carpeta diferente, haga clic en el botón (...) para mostrar el cuadro de diálogo Seleccionar Directorio.
Limpiar tablas fuente
Limpia las tablas de referencia de Visual FoxPro buscando registros viejos y obsoletos. Específicamente, esta opción realiza las siguientes acciones.
  • Quita todos los registros Inactivos y de Error del archivo RefFile.dbf excepto donde UniqueID="WINDOW", el cual permanece siempre.
  • Quita todos los registros que hacen referencia a archivos que no existen en el disco del archivo RefFile.dbf y cualquier registro correspondiente en el archivo RefDef.dbf .
  • Quita todos los registros inactivos del archivo RefDef.dbf .
  • Realiza una operación PACK en los archivos RefFile.dbf y RefDef.dbf .

Vea también

Cuadros de diálogo | Cuadro de diálogo Buscar referencia | Ventana Referencia de código | Comando PACK

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


Cuadro de diálogo Macros

Le permite definir combinaciones de teclas con las teclas de función, CTRL o ALT para ejecutar una serie de pulsaciones de teclas. Puede combinar macros individuales en conjuntos y almacenarlas en archivos.

Macro individual
Muestra las macros disponibles para su uso.
Grabar
Muestra el cuadro de diálogo Grabar macro, en el que puede crear una macro.
Nuevo
Muestra el cuadro de diálogo Nueva macro, en el que puede crear manualmente una macro.
Modificar
Muestra el cuadro de diálogo Modificar macro, en el que puede modificar la macro seleccionada.
Borrar
Le solicita que borre o conserve la macro seleccionada.

Conjunto de macros

Guardar
Muestra el cuadro de diálogo Guardar macros, en el cual puede dar nombre y guardar macros individuales o conjuntos de macros.
Restaurar
Muestra el cuadro de diálogo Restaurar macros en el cual puede agregar un conjunto de macros guardado a las macros actuales (es decir, las que están en el cuadro Macro individual del cuadro de diálogo Macros).
Establecer predeterminada
Le solicita que sobrescriba el conjunto predeterminado de macros con un nuevo conjunto de macros.
Borrar todas
Le solicita el borrado de todas las macros en la lista Macros individuales.

Vea también

APPEND (Comando) | DIR or DIRECTORY (Comando) | DISPLAY (Comando) | DISPLAY MEMORY (Comando) | DISPLAY STATUS (Comando) | DISPLAY STRUCTURE (Comando) | Cuadro de diálogo Modificar macro | LIST (Comando) | Formato de archivo de macro (.fky) | Sustitución de macros | PLAY MACRO (Comando) | Introducción a comandos SET | Cuadro de diálogo Sobrescribir macro | Cuadro de diálogo Detener grabación de macro


Cuadro de diálogo Grabar macro

Crea una macro automáticamente al grabar sus pulsaciones de teclas hasta que detenga la grabación.

Este cuadro de diálogo aparece cuando elige Grabar en el cuadro de diálogo Macros.

Tecla definida
Muestra la combinación de teclas que presiona para ejecutar la macro. Para asignar su macro a una pulsación de tecla en especial, coloque el cursor en este campo y, a continuación, presione la tecla o la combinación de teclas. Visual FoxPro coloca el nombre de la tecla o de la combinación de teclas que presionó en este campo y asigna la macro que va a grabar a esa tecla o combinación de teclas.
Nombre de macro
Presenta el nombre predeterminado de la macro, que se basa en la tecla definida. Por ejemplo, si la tecla definida es CTRL+D, el nombre de la macro será CTRL_D. Si desea cambiar el nombre de la macro, escriba el nuevo nombre (de hasta 20 caracteres) en el cuadro. La grabación no comienza hasta que haga clic en Aceptar, lo que coloca el punto de inserción en la ventana de comandos donde graba la macro.

Vea también

Cuadro de diálogo Sobrescribir macro | SET FUNCTION (Comando) | Cuadro de diálogo Detener grabación de macro | Cuadro de diálogo Nueva macro | Cuadro de diálogo Modificar macro | Cuadro de diálogo Macros


Cuadro de diálogo Detener grabación de macro

Interrumpe el proceso de grabación de una macro. En este cuadro de diálogo, puede elegir Aceptar para detener la grabación de la macro tal y como está, o puede hacer uso de otras opciones.

Este cuadro de diálogo aparece cuando selecciona Macros del menú Herramientas mientras graba una macro.

Insertar literal
Graba el significado literal de la siguiente pulsación de tecla, en lugar del significado actualmente asignado a la tecla con una macro. Utilice esto cuando desee definir dos teclas circularmente.
Insertar pausa
Graba una pausa en la macro. Antes de elegir Insertar pausa, elija Tecla para reanudar o Segundos para definir cómo se reanudará la ejecución de la macro.
Tecla para reanudar
Le solicita una tecla que reanuda la ejecución de una macro que ha sufrido una pausa. Esta petición sólo aparece si ha implementado el comando SET MACKEY.
Segundos
Especifica el tiempo de pausa en la ejecución de la macro, antes de que se reanude automáticamente. En el control numérico, escriba o seleccione un número.
Continuar
Le devuelve al punto de inserción antes de la aparición del cuadro de diálogo Detener grabación de macro, con lo que puede continuar grabando la macro.
Descartar
Borra la macro que está grabando y coloca su punto de inserción en el último cuadro de texto en que entró.
Aceptar
Confirma que la macro está lista y preparada para usarse.

Vea también

Cuadro de diálogo Macros | SET MACKEY (Comando) | Cuadro de diálogo Sobrescribir macro | Cuadro de diálogo Nueva macro | Cuadro de diálogo Modificar macro


Cuadro de diálogo Sobrescribir macro

Reemplaza una macro existente con una nueva con el mismo nombre. Este cuadro de diálogo aparece cuando define una combinación de teclas ya existente en el cuadro de diálogo Grabar macro y hace clic en Aceptar.

Sobrescribir
Reemplaza la definición de macro existente con la nueva definición.
Anexar pulsaciones
Agrega pulsaciones de tecla al final de la macro existente. El punto de inserción se coloca en el último cuadro de texto al que entró, con lo que puede escribir las pulsaciones que se agregan.

Vea también

Cuadro de diálogo Grabar macro | Cuadro de diálogo Nueva macro | Cuadro de diálogo Modificar macro | Cuadro de diálogo Detener grabación de macro | Cuadro de diálogo Macros


Cuadro de diálogo Nueva macro

Crea manualmente una macro, en lugar de grabar las pulsaciones de teclas.

Tecla definida
Muestra la combinación de teclas que debe presionar para iniciar la ejecución de la macro.
Nombre de macro
Presenta el nombre predeterminado de la macro, que se basa en la tecla definida. Por ejemplo, si la tecla definida es CTRL+D, el nombre de la macro será CTRL_D. Si desea cambiar el nombre de la macro, escriba el nuevo nombre (de hasta 20 caracteres) en el cuadro.
Contenido de la macro
Proporciona un espacio para que escriba las pulsaciones que la macro ejecuta. Use las asignaciones de etiquetas de tecla que se muestran en el tema ON KEY LABEL (Comando) y enciérrelas entre llaves para representar las pulsaciones deseadas. Coloque todas las combinaciones de teclas (como CTRL+F2) también entre llaves. Por ejemplo:
MODIFY{SPACEBAR}COMMAND{ENTER}
{HOME}{SHIFT+END}
Nota Las combinaciones de teclas MAYÚS+CTRL+\, CTRL+-, CTRL+^ y MAYÚS+CTRL+ENTRAR no se admiten en Visual FoxPro.

Vea también

Cuadro de diálogo Modificar macro | ON KEY LABEL (Comando) | Cuadro de diálogo Macros | Cuadro de diálogo Sobrescribir macro | Cuadro de diálogo Detener grabación de macro | Cuadro de diálogo Grabar macro


Cuadro de diálogo Modificar macro

Le permite modificar manualmente una macro que ya existe.

Tecla definida
Muestra la combinación de teclas que debe presionar para iniciar la ejecución de la macro.
Nombre de macro
Presenta el nombre predeterminado de la macro, que se basa en la tecla definida. Por ejemplo, si la tecla definida es CTRL+D, el nombre de la macro será CTRL_D. Si desea cambiar el nombre de la macro, escriba el nuevo nombre (de hasta 20 caracteres) en el cuadro.
Contenido de la macro
Proporciona un espacio para que escriba las pulsaciones que la macro ejecuta. Use las asignaciones de etiquetas de tecla que se muestran en el tema ON KEY LABEL (Comando) y enciérrelas entre llaves para representar las pulsaciones deseadas. Coloque todas las combinaciones de teclas (como CTRL+F2) también entre llaves. Por ejemplo:
MODIFY{SPACEBAR}COMMAND{ENTER}
{HOME}{SHIFT+END}
Nota Las combinaciones de teclas MAYÚS+CTRL+\, CTRL+-, CTRL+^ y MAYÚS+CTRL+ENTRAR no se admiten en Visual FoxPro.

Vea también

ON KEY LABEL (Comando) | Cuadro de diálogo Macros | Cuadro de diálogo Sobrescribir macro | Cuadro de diálogo Detener grabación de macro | Cuadro de diálogo Grabar macro


Cuadro de diálogo Opciones de menú

Le permite especificar el código de un menú determinado. Puede tener acceso a este cuadro de diálogo al seleccionar Opciones de menú en el menú Ver del Diseñador de menús.

Nombre
Contiene el nombre del menú. De forma predeterminada, este texto es el mismo que el de la columna Indicador del sistema del Diseñador de menús. Para cambiarlo, escriba un nuevo nombre en la columna Indicador del sistema.
Procedimiento
Proporciona un espacio para el código de procedimiento del menú o muestra el código existente. Si el código excede la región de edición mostrada, la barra de desplazamiento se activa.
Modificar
Abre una ventana de edición en la que puede crear el código en lugar de en el cuadro de diálogo Opciones de menú. Para activar la ventana de edición, elija Aceptar en el cuadro de diálogo Opciones de menú.

Para obtener más información, vea Diseñar menús y barras de herramientas.

Vea también

Cuadro de diálogo Opciones generales | Diseñador de menús | Cuadro de diálogo Definir diseño de ventana | Cuadro de diálogo Orden de tabulación | Cuadro de diálogo Barras de herramientas


Cuadro de diálogo Más ventanas

Muestra una lista de las ventanas activas que puede elegir. Este cuadro de diálogo aparece cuando elige Más ventanas en el menú Windows. Elija uno de los nombres de ventana activa que aparecen listados en Seleccionar ventana para ver la ventana activa.

Vea también

HIDE WINDOW (Comando) | MODIFY WINDOW (Comando) | Ventana Comandos | Ventana Sesión de datos | SHOW WINDOW (Comando)


Cuadro de diálogo Mover elemento

Hace posible que pueda cambiar la localización del menú o elemento del menú.

El Cuadro de diálogo Mover elemento aparece cuando selecciona una fila en el Diseñador de menú o Diseñador de menú contextual y hace clic en el elemento Mover.

Mover Grupo

Nombre
Muestra el nombre del menú o de elemento del menú.
Tipo
Muestra el tipo para el menú o elemento de menú.

Para localizar grupo

Cuadro de localización
Muestra una lista de localizaciones válidas a las que puede mover un elemento de menú.

Vea también

Cuadros de diálogo | Diseñador de menús y menús contextuales


Cuadro de diálogo Nueva clase

Especifica información para una nueva clase; esta información se utiliza posteriormente en el Diseñador de clases.

Este cuadro de diálogo aparece cuando selecciona Clase en el cuadro de diálogo Nuevo y, a continuación, elige Nuevo archivo o escribe CREATE CLASS en la ventana Comandos.

Nombre de clase
Especifica el nombre de la definición de clase que se va a crear.
Nota El nombre que especifique se convierte a letras minúsculas cuando la clase se guarda.
Basado en
Especifica la clase en que se basa la nueva definición de clase. Elija en la lista o haga clic en el botón del cuadro de diálogo para mostrar un cuadro de diálogo en el que pueda seleccionar un archivo .vcx. Esta lista incluye todas las clases de Visual FoxPro de forma predeterminada.
Desde
Muestra la ruta de acceso a la biblioteca de clases visual de la clase de base que haya especificado en el cuadro Basado en.
Almacenar en
Muestra un cuadro de diálogo Guardar como, en el que puede especificar el nombre de la biblioteca de clases visual en la que desea guardar la nueva clase.

Vea también

Ventana Comandos | Diseñador de clases | Class (Propiedad) | Class Library (Propiedad) | CREATE CLASS (Comando) | Cuadro de diálogo Abrir | Cuadro de diálogo Nueva etiqueta | Cuadro de diálogo Nuevo | Crear, copiar y eliminar archivos de biblioteca de clases


Cuadro de diálogo Nuevo

Le permite crear nuevos archivos mediante diseñadores y asistentes.

Visual FoxPro proporciona muchos diseñadores que le ayudan a crear clases, conexiones, bases de datos, formularios, etiquetas, menús, consultas, vistas locales y remotas, informes y tablas. Puede usar también un asistente de Visual FoxPro para crear muchos de estos archivos, incluidos varios tipos de informes, formularios y consultas. Se crean nuevos programas o archivos de texto fácilmente al escribirlos en la ventana Edición. La tabla siguiente muestra los tipos de archivos y cómo se pueden crear.

Método abreviado

CTRL+N

El cuadro de diálogo Nuevo aparece cuando selecciona Nuevo en el menú Archivo.

Tipo de archivo
La tabla siguiente muestra los tipos de archivo y las características disponibles para su creación, que dependen de si hace clic en Nuevo archivo o en Asistentes.
Tipo de archivo | Se crea con
Proyecto | Administrador de proyectos
Base de datos | Diseñador de bases de datos
Tabla | Diseñador de tablas, Asistente para tablas
Consulta | Diseñador de consultas, Asistente para tablas de referencias cruzadas, Asistente para consultas, Asistente para vistas locales, Asistente para vistas remotas, Asistente para tablas dinámicas
Conexión* | Diseñador de conexiones
Vista* | Diseñador de vistas, Asistente para vistas locales
Vista remota* | Asistente para vistas remotas
Formulario | Diseñador de formularios, Asistente para formularios, Asistente para formularios uno a varios
Informe | Diseñador de informes, Asistente para informes, Asistente para informes uno a varios
Etiqueta | Diseñador de etiquetas, Asistente para etiquetas
Programa | Ventana Modificar
Clase | Diseñador de clases
Archivo de texto | Ventana Modificar
Menú | Diseñador de menús

*Debe tener una base de datos abierta para activar esta opción.

Nuevo archivo
Muestra un cuadro de diálogo, diseñador o ventana de edición de forma que pueda crear el archivo del tipo seleccionado.
Asistente
Abre un asistente que crea el tipo de archivo seleccionado. Si hay un grupo de asistentes para elegir, Visual FoxPro le pedirá que seleccione el asistente que desea.

Vea también

Cuadro de diálogo Crear | Diseñador de clases | Diseñador de conexiones | Diseñador de bases de datos | Ventana Modificar | Diseñador de formularios | Diseñador de etiquetas | Diseñador de menús | Administrador de proyectos | Diseñador de consultas | Diseñador de informes | Diseñador de tablas | Diseñador de vistas


Cuadro de diálogo Nuevo archivo

Permite crear un nuevo formulario, informe, etiqueta o consulta, según el tipo de archivo actualmente seleccionado en el Administrador de proyectos.

Si selecciona Pedir asistentes en la ficha Proyectos del cuadro de diálogo Opciones, Visual FoxPro le ofrece la posibilidad de ejecutar un asistente si hay un asistente asociado al tipo de archivo seleccionado.

Nota Los nombres de archivo precedidos de un círculo con una barra se excluyen cuando se genera el proyecto. Si no hay un círculo con una barra en el nombre de archivo, significa que el archivo se incluirá en la generación. El nombre de archivo del programa principal va en negrita.

Este cuadro de diálogo aparece cuando selecciona la opción Nuevo archivo del menú Proyecto.

Asistente para tipo de archivo
Abre un asistente que crea el tipo de archivo seleccionado. Si hay un grupo de asistentes para elegir, Visual FoxPro le pedirá que seleccione el asistente que desea. Se muestra sólo si activa Pedir asistentes en la ficha Proyectos del cuadro de diálogo Opciones.
Nuevo tipo de archivo
Muestra un cuadro de diálogo, diseñador o ventana de edición de forma que pueda crear el archivo del tipo seleccionado.

Vea también

Cuadro de diálogo Nuevo | Cuadro de diálogo Opciones | Ventana Administrador de proyectos | Ficha Proyecto, cuadro de diálogo Opciones | CREATE FORM (Comando) | Crear formularios | CREATE REPORT (Comando) | CREATE LABEL (Comando) | Crear un formulario nuevo | Crear consultas | CREATE QUERY (Comando) | Cuadro de diálogo Cambiar el nombre del archivo | Cuadro de diálogo Descripción | Asistentes


Cuadro de diálogo Nueva etiqueta

Muestra los tipos de etiqueta Avery predefinidos. Este cuadro de diálogo aparece cuando selecciona Etiqueta en el cuadro de diálogo Nuevo y, a continuación, elige Nuevo archivo. El tipo que seleccione se convierte en la base de la nueva etiqueta que cree en el Diseñador de etiquetas. La columna Columnas indica el número de columnas de ese tipo de etiqueta que cabrán en una página.

Las columnas siguientes muestran información acerca de la etiqueta (no puede cambiar estos valores):

Nº Avery
Número de identificación del fabricante para un tipo determinado de etiqueta.
Alto
Alto en pulgadas de una etiqueta individual.
Ancho
Ancho en pulgadas de una etiqueta individual.
Columnas
Número de columnas de ese tipo de etiqueta que cabrán en una página de 8 1/2 x 11 pulgadas.
Nota Puede agregar un tipo de etiqueta nuevo a la lista mediante la aplicación ADDLABEL.APP ubicada en el directorio ...\Tools de Visual FoxPro.

Vea también

CREATE LABEL (Comando) | Diseñador de etiquetas | Cuadro de diálogo Seleccionar conexión u origen de datos | Crear informes y etiquetas | Addlabel.app (Ejemplo) | Preparar el diseño de informe | Asistente para etiquetas | Cuadro de diálogo Nuevo | ADDLABEL.APP (Ejemplo)


Cuadro de diálogo Nueva vista local

Este diálogo permite crear una vista de tablas locales u otras vistas de la base de datos por medio del Asistente para vistas locales o del Diseñador de vistas. Las vistas locales pueden incluir tablas con formato .dbf nativas de Visual FoxPro, vistas remotas o locales ya existentes, cualquier tabla con un formato .dbf y otras tablas almacenadas en servidores locales.

El cuadro de diálogo Nueva vista local sólo muestra la opción Asistente para vistas locales cuando se activa Pedir asistentes en la ficha Proyectos del cuadro de diálogo Opciones.

Asistente para vistas
Abre el Asistente para vistas locales, que crea una vista local.
Nueva vista
Abre el Diseñador de vistas con el que puede crear una vista local.

Vea también

Diseñador de bases de datos | Asistente para vistas locales | Cuadro de diálogo Opciones | Ficha Proyecto, cuadro de diálogo Opciones | Diseñador de vistas | Cuadro de diálogo Nueva vista remota | Cuadro de diálogo Buscar tabla o vista | Combinar vistas | Actualizar múltiples tablas en una vista | Crear vistas locales | Crear vistas


Cuadro de diálogo Nuevo método

Le permite crear un método nuevo y especificar la descripción y visibilidad del método.

Este cuadro de diálogo aparece cuando selecciona Nuevo método en el menú Clase o en el menú Formulario.

Nombre
Especifica el nombre del nuevo método.
Visibilidad (sólo clases)
Especifica si la propiedad de clase está protegida. Las instancias de objeto no pueden tener acceso a las propiedades protegidas, pero las subclases sí. Ni las instancias de objetos ni las subclases pueden tener acceso a las propiedades ocultas.
Descripción
Contiene la descripción del método que se muestra al final de la ventana Propiedades en el Diseñador de clases y si la propiedad no está protegida, en el Diseñador de formularios.

Vea también

Diseñador de clases | Cuadro de diálogo Modificar propiedades y métodos | Diseñador de formularios | Cuadro de diálogo Nueva propiedad | Ventana Propiedades | Agregar propiedades y métodos a un formulario


Cuadro de diálogo Nueva propiedad

Le permite crear una propiedad nueva y especificar la descripción y visibilidad de la propiedad.

Este cuadro de diálogo aparece cuando selecciona Nueva propiedad en los menús Clase o Formulario.

Nombre
Especifica el nombre de la nueva propiedad.
Visibilidad (sólo clases)
Las instancias de objeto no pueden tener acceso a las propiedades protegidas, pero las subclases sí. Ni las instancias de objetos ni las subclases pueden tener acceso a las propiedades ocultas.
Método Access
Especifica si se crea un método Access para la nueva propiedad. El código de un método Access se ejecuta cada vez que se consulta la propiedad. Active esta casilla de verificación para crear un método Access para una propiedad.
Método Assign
Especifica si se crea un método Assign para la nueva propiedad. El código de un método Assign se ejecuta cada vez que se intenta cambiar el valor de la propiedad. Active esta casilla de verificación para crear un método Assign para una propiedad.
Descripción
Contiene la descripción del método que se muestra al final de la ventana Propiedades en el Diseñador de clases y, si la propiedad no está protegida, en el Diseñador de formularios.

Vea también

Métodos Access y Assign | Diseñador de clases | Cuadro de diálogo Modificar propiedades y métodos | Diseñador de formularios | Cuadro de diálogo Nueva clase | Cuadro de diálogo Nuevo método | Ventana Propiedades | Forms (Propiedad)


Cuadro de diálogo Nueva vista remota

Este diálogo permite crear una nueva vista remota mediante el Diseñador de vistas o el Asistente para vistas remotas. Si la información que necesita está en un origen de datos remoto, podrá crear una vista remota desde el origen e incorporar dicha vista a su base de datos.

El cuadro de diálogo Nueva vista remota sólo muestra la opción Asistente para vistas remotas cuando se activa Pedir asistentes de la ficha Proyectos en el cuadro de diálogo Opciones.

Nota Antes de que pueda crear una nueva vista remota, debe establecer una conexión o un origen de datos ODBC. Para establecer una conexión, utilice el Diseñador de conexiones.
Asistente para vistas
Abre el Asistente para vistas remotas, que crea una vista remota.
Nueva vista
Abre el cuadro de diálogo Seleccionar conexión u origen de datos para que pueda seleccionar un origen de datos remoto para utilizar en la vista remota.

Vea también

Diseñador de conexiones | Diseñador de bases de datos | Ficha Proyecto, cuadro de diálogo Opciones | Cuadro de diálogo Opciones | Asistente para vistas remotas | Cuadro de diálogo Seleccionar conexión u origen de datos | Diseñador de vistas | Acceder a datos remotos


Cuadro de diálogo Nueva tabla

Este diálogo permite crear una tabla nueva de la base de datos mediante el Diseñador de tablas o el Asistente para tablas.

Asistente para tablas
Abre el Asistente para tablas, que le ayuda a crear una tabla. El asistente proporciona campos de ejemplo que le facilitan la creación de la estructura de la tabla. El cuadro de diálogo Nueva tabla solo muestra la opción Asistente para tablas cuando ha seleccionado Asistente para tablas en la ficha Proyectos del cuadro de diálogo Opciones, el que aparece al seleccionar Nueva tabla desde el menú Base de datos.
Nueva tabla
Abre el Diseñador de tablas con el que puede crear una tabla en la base de datos.

Vea también

ADD TABLE (Comando) | Diseñador de bases de datos | Cuadro de diálogo Opciones | Ficha Proyecto, cuadro de diálogo Opciones | Diseñador de tablas | Asistente para tablas | Crear una tabla de base de datos | Copiar y modificar la estructura de una tabla | Cuadro de diálogo Nueva vista remota | Cuadro de diálogo Nueva vista local | Agregar tablas a bases de datos


Cuadro de diálogo Abrir

Se utiliza para abrir un archivo existente o crear un nuevo archivo. Este cuadro de diálogo aparece al seleccionar Abrir del menú Archivo.

Los proyectos abiertos previamente aparecen en la parte inferior del menú Archivo. Puede abrir un proyecto abierto previamente si elige su nombre en la parte inferior del menú.

Nota Los archivos creados con el comando Abrir no se agregan a un proyecto.

La función GETFILE( ) se corresponde con el cuadro de diálogo Abrir. Por ejemplo, este diálogo aparece al escribir ? GETFILE( ) en la ventana Comandos.

Método abreviado

CTRL+O

Buscar en
Muestra una lista desplegable de localizaciones donde puede encontrar su archivo. En sistemas operativos Windows 2000 y Windows XP la barra Lugares a la izquierda del cuadro de diálogo muestra las localizaciones comunes como son Mis Documentos y Escritorio. Haga clic en uno de estos iconos para hacer que la localización correspondiente aparezca en la lista desplegable.
Nombre de archivo
Muestra el nombre del archivo actualmente seleccionado o le permite especificar el nombre del archivo que desea abrir.
Biblioteca de clases
Especifica el nombre de la biblioteca de clases. Este cuadro aparece sólo al abrir una biblioteca de clases o al utilizar AGETCLASS( ) o MODIFY CLASS.
Tipos de archivos
Muestra una lista de tipos de archivos. Puede seleccionar un tipo de archivo de la lista desplegable para mostrar sólo los ficheros de un tipo específico. Las siguientes extensiones no pueden ser utilizadas en esta versión de Visual FoxPro: .lbl, .fpc, .cat, and .frm.
Nombre de clase
Muestra las clases almacenadas en la biblioteca de clases mostrada en el cuadro Nombre de clase. Esta lista sólo aparece cuando abre una biblioteca de clases o al utilizar AGETCLASS( ) o MODIFY CLASS.
Abrir como sólo lectura
Especifica que el archivo a abrir podrá ser visto; pero no modificado.
Entorno
Guarda todos los parámetros de entorno con el archivo y abre el entorno asociado al abrir el archivo.
Nota La casilla de verificación Entorno aparece sólo en versiones anteriores a Visual FoxPro 8.0.

Esta opción está disponible al seleccionar Formulario, Etiqueta o Informe de una lista de tipos de archivos y está marcada de forma predeterminada. Para abrir un formulario, etiqueta o informe sin abrir el entorno asociado, deje desactivada esta casilla de verificación.

Abrir en modo exclusivo
Especifica que puede utilizar un archivo de tabla (.dbf) o base de datos (.dbc) de modo exclusivo, de tal forma que ningún otro usuario pueda abrir el archivo. Esta opción está disponible sólo al abrir una tabla. Se corresponde con el comando USE.
Página de código
Muestra el cuadro de diálogo Página de código para que pueda especificar el código de página que necesita para ver el archivo correctamente. Este comando se aplica sólo a archivos de texto como por ejemplo archivos de programas (.prg), consultas (.qpr) y textos (.txt).
Vista previa
Especifica que puede realizar una vista previa de archivos gráficos cuando se seleccionan en una lista de archivos. Esta casilla de verificación sólo aparece cuando puede abrir o seleccionar un archivo gráfico. Por ejemplo, esta casilla de verificación aparece en el cuadro de diálogo Abrir cuando agrega un control Imagen a un formulario y hace doble clic en la propiedad Picture en la ventana Propiedades.
Nota La casilla de verificación Vista previa, aparece sólo al ejecutar Visual FoxPro en sistemas operativos anteriores a Windows 2000. Puede previsualizar imágenes en Windows 2000 y posterior haciendo clic en el icono de Menú Ver que está cerca del borde superior del cuadro de diálogo y luego Vistas en miniaturas (Thumbnails).

Vea también

Cuadro de diálogo Abrir imagen | Cuadro de diálogo Nueva clase | Cuadro de diálogo Página de códigos | GETFILE( ) (Función) | Cuadro de diálogo Abrir imagen | USE EXCLUSIVE (Comando) | USE (Comando)


Cuadro de diálogo Abrir imagen

Permite abrir un archivo gráfico existente.

Este cuadro de diálogo se muestra al ejecutar la función GETPICT( ). Por ejemplo, este cuadro de diálogo aparecerá cuando escriba ? GETPICT( ) en la Ventana de comandos.

Buscar en
Muestra una lista desplegable que le permite especificar la carpeta que contiene el archivo que desea abrir. En los sistemas operativos Windows 2000 y Windows XP, la barra de Sitios al lado izquierdo del cuadro de diálogo muestra las localizaciones más comunes tales como Mis Documentos y Escritorio. Elija uno de estos íconos para hacer con que la localización correspondiente aparezca en la lista desplegable.
Nombre de archivo
Muestra el nombre del archivo actualmente seleccionado o le permite especificar el archivo que desea abrir.
Archivos de tipo
Muestra una lista de tipos de archivos. Le permite seleccionar el tipo de archivo que desee mostrar de la lista desplegable para mostrar tipos de un tipo particular. Las siguientes extensiones ya no son usadas en esta versión de Visual FoxPro: .lbl, .fpc, .cat, and .frm.
Imagen
El área que presenta una vista previa del gráfico seleccionado cuando está activada la casilla de verificación Vista previa.
Nota La imagen aparece solo cuando ejecutando Visual FoxPro en sistemas operativos previos a Windows 2000. De otra forma, el cuadro de diálogo Abrir Imagen muestra una versión en miniatura (más chica) del archivo gráfico. Hace un doble clic en la vista en miniatura para ver una versión mayor del archivo.
Vista previa
Le permite obtener una vista previa del archivo gráfico seleccionado.
Nota La casilla de verificación Vista previa aparece solo cuando ejecutando Visual FoxPro en sistemas operativos previos a Windows 2000. Puede obtener vista previa de imágenes en Windows 2000 y posteriores eligiendo el icono Menú Ver en la parte superior del cuadro de diálogo y luego elegir Vistas en miniatura.

Vea también

Cuadro de diálogo Abrir | Cuadro de diálogo Página de códigos | GETPICT( ) | Cuadro de diálogo Abrir | Ventana Comandos | Compatibilidad con gráficos en Visual FoxPro | Crear ayuda gráfica | Cuadro de diálogo Imagen para informe


Cuadro de diálogo Opciones

Le permite establecer diferentes categorías de opciones. El cuadro de diálogo Opciones aparece cuando selecciona Opciones desde el menú Herramientas.

Cuando hace clic en el botón Establecer como predeterminado, Visual FoxPro guarda todas las opciones de todas las fichas.

la siguiente tabla describe las fichas disponibles en el cuadro de diálogo Opciones.

Ficha | Opciones Disponibles
Ficha Controles, cuadro de diálogo Opciones | Establecer opciones que indican qué bibliotecas de clases visuales y controles ActiveX están disponibles en el botón Ver clases de la barra de herramientas Controles de formularios.
Ficha Datos, cuadro de diálogo Opciones | Establecer opciones de la tabla, tales como utilizar optimización Rushmore, si exigir o no unicidad al utilizar índices, especificar la secuencia de ordenamiento, tamaño del bloque memo, el intervalo de contador de registros para las búsquedas, y que opciones de bloqueo y búfer utilizar.
Ficha Depurar, cuadro de diálogo Opciones | Establecer opciones de presentación y seguimiento para el depurador, que ventanas, fuentes, colores.
Ficha Editor, cuadro de diálogo Opciones | Establecer las opciones de fuente y color para identificar los elementos en un programa, como observaciones y palabras clave, en la ventana Comandos o cualquier ventana de edición, excepto aquellas abiertas con los comandos MODIFY FILE o MODIFY MEMO.
Ficha Asignación de campos, cuadro de diálogo Opciones | Establecer las opciones sobre qué controles crear al arrastrar tablas o campos a un formulario desde el Diseñador de entorno de datos, Diseñador de bases de datos, o Administrador de proyectos.
Ficha Archivos, cuadro de diálogo Opciones | Establecer las ubicaciones para el directorio predeterminado de Visual FoxPro, donde se almacena la Ayuda y si se almacenan archivos auxiliares.
Ficha Formularios, cuadro de diálogo Opciones | Establecer las opciones del Diseñador de formularios, tales como el espacio de cuadrícula, las unidades de escala que se deben utilizar, el área máxima de diseño y qué clases de plantillas utilizar.
Ficha General, cuadro de diálogo Opciones | Establecer la opciones de programación e introducción de datos, tales como el sonido de advertencia, si registrar o no los errores de compilación, si llenar automáticamente los nuevos registros, qué teclas de desplazamiento utilizar, qué paleta de colores utilizar y si advertir o no antes de sobrescribir archivos.
Ficha IDE, cuadro de diálogo Opciones | Establecer las opciones de configuración de formato, apariencia y comportamiento para tipos de archivo de Visual FoxPro.
Ficha Proyecto, cuadro de diálogo Opciones | Establecer las opciones del Administrador de proyectos, tales como si preguntar o no por los asistentes, si ejecutar o modificar los archivos al hacer doble clic y opciones para control de origen.
Ficha Regional, cuadro de diálogo Opciones | Establecer los formatos para fechas, horas, moneda y números.
Ficha Datos remotos, cuadro de diálogo Opciones | Establecer las opciones de acceso a datos remotos, tales como los valores de límite de tiempo de espera de conexión, el intervalo de número de registros para las búsquedas y cómo utilizar SQL para actualizaciones.
Ficha informes, cuadro de diálogo Opciones | Establecer la configuración del Diseñador de informes cuando se crean los informes.
Ficha Ver, cuadro de diálogo Opciones | Establecer las opciones de interfaz, tales como presentar una barra de estado, un reloj, resultados de comandos, mensajes del sistema o una lista de proyectos utilizados recientemente.

Vea también

Cuadros de diálogo | Ver y cambiar la configuración del entorno | Configurar el entorno de Visual FoxPro


Ficha Controles, cuadro de diálogo Opciones

Contiene opciones para registrar las bibliotecas de clases visuales al especificar clases de plantillas en la ficha Formularios, cuadro de diálogo Opciones. Estas opciones también especifican qué puede seleccionarse desde el botón Ver clases de la barra de herramientas Controles de formularios para que resulte fácil agregar controles personalizados a los formularios.

Cuando elige Establecer como predeterminado (que aparece en todas las fichas del cuadro de diálogo) Visual FoxPro guarda la configuración de las opciones en el Registro (base de datos de registro de Windows del sistema).

Bibliotecas de clases visuales
Especifica qué bibliotecas de clases (archivos .vcx) se presentan en la lista Seleccionado.
Controles ActiveX
Especifica qué controles ActiveX se presentan en la lista Seleccionado.
Seleccionado
Muestra los archivos que puede agregar o quitar de su entorno de Visual FoxPro. Si ha elegido Bibliotecas de clases visuales, la lista presenta los archivos .vcx que ya ha agregado y especifica qué bibliotecas aparecen en el menú contextual cuando hace clic en el botón Ver clases en la barra de herramientas Controles de formularios.

Cuando se selecciona la opción Controles ActiveX, la lista presenta las clases de objetos y los controles disponibles en el sistema. Los objetos y controles ActiveX que ya ha agregado están marcados y aparecen en el menú contextual cuando hace clic en el botón Ver clases de la barra de herramientas Controles de formularios.

Etiqueta
Aparece cuando selecciona la opción Bibliotecas de clases visuales. Especifica el nombre de la biblioteca de clases. De forma predeterminada, Visual FoxPro utiliza el nombre del archivo sin la extensión .vcx.
Biblioteca
Aparece cuando selecciona la opción Bibliotecas de clases visuales. Muestra la ruta de acceso y el nombre de archivo de los archivos .vcx para la biblioteca de clases visuales seleccionada actualmente.
Mostrar
Se muestra cuando está seleccionado ActiveX. Le permite especificar los tipos de objetos ActiveX que se muestran en la lista Seleccionado.
  • Objetos insertables Especifica que la lista Seleccionado presenta clases de objetos que puede insertar como objetos ActiveX en aplicaciones de Visual FoxPro.
  • Controles Especifica que la lista Seleccionado presenta controles ActiveX.
Agregar
Elija este botón para mostrar el cuadro de diálogo Abrir de forma que pueda agregar bibliotecas (archivos .vcx) o controles ActiveX a la lista Seleccionado. Cuando se agrega un control ActiveX también se registra, de forma que estará disponible en la lista de controles del cuadro de diálogo Insertar objeto y en otras aplicaciones.
Quitar
Aparece cuando selecciona la opción Bibliotecas de clases visuales. Seleccione este botón para quitar la biblioteca seleccionada del cuadro Seleccionado.

Vea también

Ficha Formularios, cuadro de diálogo Opciones | Cuadro de diálogo Insertar objeto | Cuadro de diálogo Abrir | Cuadro de diálogo Opciones


Ficha Datos, cuadro de diálogo Opciones

Contiene las opciones para la manipulación de datos en tablas.

Cuando elige el botón Establecer como predeterminado, que aparece en todas las fichas del cuadro de diálogo, Visual FoxPro guarda todas las opciones de todas las fichas.

Abrir en modo exclusivo
Especifica si Visual FoxPro abre las tablas y las bases de datos en modo exclusivo, con lo cual nadie más puede verlas o modificarlas mientras está trabajando en ellas. Abrir los archivos en modo exclusivo puede dar como resultado un mejor rendimiento. Utilice esta opción cuando esté procesando gran número de registros en circunstancias en las que otros usuarios no necesiten tener acceso a los datos (por ejemplo, de noche). Esta opción corresponde al comando SET EXCLUSIVE.
Mostrar nombres de campos
Especifica si Visual FoxPro coloca un nombre de campo como encabezado de columna a lo largo de cada campo en el resultado del AVERAGE (Comando), CALCULATE (Comando), DISPLAY (Comando), LIST (Comando) y SUM (Comando). Esta opción corresponde al SET HEADINGS (Comando).
Pedir página de códigos
Especifica si Visual FoxPro solicita que adjunte una página de códigos cuando abra tablas que no tienen ya una adjuntada. Esta opción corresponde al comando SET CPDIALOG.
Pasar por alto registros eliminados
Especifica si ciertos comandos de Visual FoxPro deben ignorar los registros marcados para eliminar cuando se ejecutan comandos que tengan una cláusula de alcance. Si esta opción no está seleccionada, Visual FoxPro incluye los registros marcados. Esta opción corresponde al comando SET DELETED.
Optimización de consultas Rushmore
Especifica si Visual FoxPro utiliza o no optimización Rushmore cuando ejecuta comandos que incluyen una cláusula FOR. Esta opción corresponde al comando SET OPTIMIZE. Para obtener más información, vea Optimizar aplicaciones.
Registros únicos en índices
Especifica si Visual FoxPro permite o no registros con valores de clave de índice duplicados en un archivo de índice. Si elige esta opción, sólo se indiza el primer registro que contiene el índice de clave original. Esta opción corresponde al comando SET UNIQUE.
Secuencia de ordenación
Especifica una secuencia de ordenación para los campos de caracteres en las operaciones de indización y ordenación. Esta opción corresponde al comando SET COLLATE.
Intervalo contador de registros
Especifica cuántos registros se deberían procesar durante comandos tales como COPY TO antes de que Visual FoxPro actualice la presentación de contador de registros en la línea de estado. El intervalo es de 1 a 32.767 registros. Cuanto mayor sea el número que especifique, mayor será el retardo entre actualizaciones, pero el comando se podrá ejecutar más deprisa. Debe elegir la opción Barra de estado en la ficha Ver para que esta opción tenga efecto. Esta opción corresponde al comando SET ODOMETER.
Tamaño del bloque memo (bytes)
Especifica el tamaño de los bloques en los que se asigna espacio en disco para los campos memo. El valor que escriba especifica el mínimo espacio en disco requerido para un campo memo y el tamaño en que se incrementan los campos memo a medida que se les agregan datos. Si especifica un valor entre 1 y 32, Visual FoxPro multiplica su valor por 512 y, a continuación, asigna espacio en disco en un bloque de ese tamaño. Si especifica un valor mayor que 32, Visual FoxPro asigna bloques de sólo ese tamaño; especificar un número mayor que 32 puede por lo tanto ahorrar espacio en disco. Esta opción corresponde al comando SET BLOCKSIZE.
Intervalo de actualización de examen (seg)
Especifica cada cuánto tiempo Visual FoxPro actualiza la presentación de registros en una ventana Examinar activa, lo que es útil en un entorno multiusuario. Los posibles valores van de 0 a 3600. Establezca 0 como valor para impedir actualizaciones. Establezca en este valor un número grande para actualizar la ventana Examinar menos a menudo, lo que puede aumentar el rendimiento. Esta opción corresponde al comando SET REFRESH.
Intervalo de actualización de tabla (seg)
Especifica cada cuánto tiempo FoxPro debería actualizar la presentación de una tabla activa, lo que es útil en un entorno multiusuario. Los posibles valores van de 0 a 3600. Establezca 0 como valor para impedir actualizaciones. Establezca en este valor un número grande para actualizar la tabla menos a menudo, lo que puede aumentar el rendimiento. Esta opción corresponde al comando SET REFRESH.

Comparaciones de cadenas

SET NEAR activado
Especifica que Visual FoxPro posicione el puntero de registro sobre el registro que coincida mejor después de un comando FIND o SEEK que no haya tenido éxito. Esta opción corresponde al comando SET NEAR.
SET EXACT activado
Especifica que Visual FoxPro utiliza la longitud completa de ambas expresiones de cadena (excepto los espacios en blanco del final) cuando se utiliza el operador de comparación (=). Si no selecciona esta opción, Visual FoxPro dejará de comparar dos cadenas cuando se alcance el final de la expresión en el lado derecho del operador de comparación (=). Esta opción corresponde al comando SET EXACT.
Nota Esta configuración no tiene efecto en los resultados del operador =.
SET ANSI activado
Especifica si Visual FoxPro llena cadenas cuando las compara con el operador = de SQL, que compara carácter por carácter hasta que finaliza la cadena más corta. Si elige esta opción, Visual FoxPro llena la cadena más corta con espacios, de forma que la comparación de SQL falle (“Luisito” no es equivalente a “Luis”). Si no selecciona esta opción, la cadena más corta no se rellena, de forma que cadenas de longitudes desiguales pueden ser equivalentes (“Luisito” es equivalente a “Luis”). Esta opción corresponde al comando SET ANSI.

Bloquear y usar búfer

Bloqueo automático de archivos
Especifica que Visual FoxPro bloquea automáticamente los archivos para ciertos comandos que no cambian los datos, incluidos AVERAGE, COPY TO, INDEX, REPORT, SORT y TOTAL. Si no selecciona esta opción, el archivo no se bloquea durante estos comandos y otros usuarios pueden cambiar registros mientras se ejecuta su comando. Esta opción corresponde al comando SET LOCK.
Múltiples bloqueos de registros
Especifica si Visual FoxPro puede bloquear múltiples registros a la vez. Si desactiva esta opción, Visual FoxPro elimina todos los bloqueos actuales y sólo le permite bloquear un registro a la vez; el registro actual se desbloquea cuando bloquea el siguiente. Esta opción corresponde al comando SET MULTILOCKS.
Almacenamiento en búfer
Especifica en entornos multiusuario si se deben almacenar en búfer localmente los cambios en los registros, y si se almacenan, si se debe hacerlo de forma optimista o pesimista. El almacenamiento en búfer puede mejorar el rendimiento y proporcionar mayor control de concurrencia. Esta opción sólo está disponible si selecciona Múltiples bloqueos de registros. Corresponde a la función CURSORSETPROP( ). Las opciones son:
  • Desactivado Los cambios no se almacenan en búfer y las actualizaciones de registros se hacen inmediatamente en el disco. Este modo sólo se recomienda cuando se trabaja en un entorno de usuario único.
  • Registro (pesimista) El registro actual se bloquea cuando el usuario hace un cambio en él y los cambios se almacenan en búfer. Otros usuarios pueden leer pero no cambiar el registro en el disco. Cuando el puntero de registro se mueve a otro registro, el registro actual se vuelve a escribir automáticamente desde el búfer a la tabla de origen y, a continuación, se desbloquea. El bloqueo pesimista de registros es útil para la modificación interactiva en una tabla sujeta a muchas actualizaciones por parte de otros usuarios.
  • Registro (optimista) Los cambios en un único registro se almacenan en búfer pero no se bloquean cuando el usuario mueve el puntero de registro al registro. Otros usuarios pueden leer y cambiar el registro en el disco. Cuando el usuario mueve el puntero de registro a otro registro, Visual FoxPro comprueba los cambios en el registro actual frente al registro en el disco. Si el registro en el disco ha cambiado, Visual FoxPro ofrece opciones para descartar los cambios actuales o sobrescribir el registro en el disco. El almacenamiento en búfer optimista de registros se recomienda principalmente cuando se actualizan tablas con poca actividad.
  • Tabla (pesimista) Los cambios en los registros se almacenan en búfer y se bloquean cuando el usuario mueve el puntero de registro a ellos y permanecen así hasta que se llama a la función TABLEUPDATE( ). El almacenamiento pesimista en búfer de tablas es el modo más seguro de actualizar múltiples registros en una tabla, pero como bloquea todos los registros cambiados, puede limitar el acceso de otros usuarios a los datos. Por tanto, sólo se recomienda para ayudar a acelerar la introducción de datos cuando los usuarios van a introducir nuevos registros en lotes o cuando es esencial para la aplicación que todos los registros utilizados actualmente sean mantenidos exclusivamente por la aplicación.
    Nota Cuando se utiliza almacenamiento en búfer de tablas, debe ejecutar TABLEUPDATE( ) para escribir los cambios de los registros almacenados en búfer en el disco. Si no lo hace, los registros cambiados se descartan cuando el usuario sale de Visual FoxPro.
  • Tabla (optimista) Los cambios en los registros se almacenan en búfer, pero no se bloquean, cuando el usuario mueve el puntero de registros al registro. Otros usuarios pueden leer y cambiar los registros en el disco. Cuando se emite TABLEUPDATE( ), Visual FoxPro comprueba los cambios en cada registro al escribir el registro en el disco; los registros que han cambiado no se escriben. El almacenamiento optimista en búfer de tablas es útil para optimizar el rendimiento de actualización en tablas donde hay poca actividad. Cuando utilice esta opción, ejecute TABLEUPDATE( ) a menudo de forma que la posibilidad de que los registros almacenados en búfer cambien en el disco sea mínima.
    Nota Cuando se utiliza almacenamiento en búfer de tablas, debe ejecutar TABLEUPDATE( ) para escribir los cambios de los registros almacenados en búfer en el disco. Si no lo hace, los registros cambiados se descartan cuando el usuario sale de Visual FoxPro.
Reproceso
Especifica cuántas veces o durante cuánto tiempo Visual FoxPro intenta bloquear una tabla o registro que ya está bloqueado por otro usuario. Esta opción corresponde al comando SET REPROCESS. Las opciones son:
  • Intentar bloqueo (predeterminado). Intenta bloquear sólo una vez.
  • Intentar bloqueo (automático). Continúa intentando el bloqueo hasta tener éxito o hasta que el usuario cancela el intento al presionar ESC. Es equivalente a SET REPROCESS TO AUTO.
  • Esperar bloqueo. Continúa intentando un bloqueo hasta que el registro esté disponible. Esta opción no proporciona una forma para que el usuario detenga los intentos de bloquear el registro. Es equivalente a SET REPROCESS TO -1.
  • Nº de reintentos. Intenta bloquear el registro o la tabla el número especificado de veces. Si el bloqueo sigue sin tener éxito, se presenta un mensaje de error. SET REPROCESS TO n, donde n es el número de reintentos.
  • Segundos de reintento. Intenta bloquear el registro o la tabla durante el número especificado de segundos. Si el bloqueo sigue sin tener éxito, se presenta un mensaje de error. SET REPROCESS TO n SECONDS, donde n es el número de segundos de reintento.

Vea también

Cuadro de diálogo Opciones


Ficha Depurar, cuadro de diálogo Opciones

Le permite establecer opciones para personalizar las ventanas del depurador de Visual FoxPro, que incluyen:

  • Fuentes y colores.
  • Si hacer seguimiento de código de eventos Timer.
  • Si se presentan los números de línea.
  • Si se registra el resultado de la ventana Resultados del depurador a un archivo.

Cuando elige Establecer como predeterminado (que aparece en todas las fichas del cuadro de diálogo) Visual FoxPro guarda la configuración de las opciones en el Registro (base de datos de registro de Windows del sistema).

Entorno
Especifica el entorno de depuración.
  • Marco de depuración Todas las ventanas del depurador aparecen en un gran marco que es externo a la ventana principal de Visual FoxPro, con sus propios menús y barras de herramientas. Esto hace que el depurador no interfiera tanto en el entorno en tiempo de ejecución de su aplicación. Si elige esta opción, puede abrir el depurador si elige Depurador en el menú Herramientas.
  • Marco de FoxPro Las ventanas del depurador aparecen en la ventana principal de Visual FoxPro. El entorno de FoxPro es sobre todo útil si sólo desea tener abierta una única ventana, por ejemplo la ventana Inspección. Si elige esta opción, Visual FoxPro reemplaza el comando Depurador del menú Herramientas con comandos para abrir ventanas individuales de depuración y las barras de herramientas para las ventanas individuales de depuración se ponen en mosaico con la ventana principal de Visual FoxPro.
    Nota No puede cambiar esta opción si está abierto el depurador completo o cualquier ventana de depuración, o si está abierta la barra de herramientas del depurador en el escritorio de Visual FoxPro.
Mostrar eventos Timer
Elija esta opción si desea que los eventos de cronómetro del control Timer se presenten en la ventana Seguimiento cuando se alcanza su valor de intervalo. Si no selecciona esta opción, el evento de cronómetro sigue ocurriendo, pero no se presenta; se trata como si hubiese especificado Paso a paso por procedimientos para ese evento.

Con esta casilla desactivada, Visual FoxPro filtra eventos de cronómetro incluso cuando actualmente recorre un evento de cronómetro. Se debe a causas de diseño. Visual FoxPro entra en un evento de cronómetro en las siguientes situaciones:

  • SET STEP está en ON.
  • Se establece un punto de interrupción en una línea de código.
  • Se establece un punto de interrupción en un valor que se ha cambiado.
  • Se llama a un método o procedimiento nuevo.

Especificar ventana

Elija esta opción para especificar para qué ventana de depurador desea especificar opciones. La ventana que elija aquí afecta a las siguientes opciones disponibles.

Pila de llamadas
Presenta las siguientes opciones para la ventana:
  • Mostrar el orden de la pila de llamadas Presenta un número al lado de cada programa que aparece en la ventana Pila de llamadas; el número más alto indica el programa que se ejecuta actualmente.
  • Mostrar el indicador de línea actual Indica si se presenta el indicador de línea actual en la ventana Pila de llamadas.
  • Mostrar el indicador de pila de llamadas Indica si se presenta una flecha en la ventana Pila de llamadas para indicar el procedimiento presentado en la ventana Seguimiento. Si los procedimientos de la línea actual y de la pila de llamadas son el mismo, Visual FoxPro presenta sólo el indicador de la línea actual.
Locales
No hay opciones adicionales para esta ventana.
Resultados
Presenta el área Registrar resultados del depurador, que contiene estas opciones:
  • Registrar resultados del depurador Copia los valores escritos en la ventana Resultados del depurador a un archivo de texto. Si elige registrar los valores de resultado, necesita especificar un archivo donde registrarlos. La extensión de archivo predeterminada para un archivo de registro es .log. Visual FoxPro registrará el resultado en un archivo sólo si se presenta la ventana Resultados. Puede presentar información en la ventana Resultados (y enviarla al archivo de registro) mediante el comando DEBUGOUT o el comando SET PRINTER en un programa.

    Cuando sale de Visual FoxPro, esta opción se desactiva, de forma que no pueda sobrescribir un archivo de registro sin darse cuenta la próxima vez que inicie Visual FoxPro.

  • Anexar Especifica que el resultado de la depuración se escribe después del contenido actual de un archivo existente, con lo que se conserva el contenido original.
  • Sobrescribir Especifica que el resultado de depuración reemplaza el contenido del archivo especificado.
Seguimiento
Presenta las siguientes opciones para la ventana:
  • Mostrar los números de línea Presenta números de línea a la izquierda de las líneas de código en la ventana Seguimiento.
  • Seguimiento entre puntos de interrupción Ejecuta el código entre puntos de interrupción a la velocidad de acelerador. La velocidad de acelerador indica la pausa en segundos entre la ejecución de cada línea de código. Si no selecciona esta opción, el código entre puntos de interrupción se ejecuta a velocidad normal, el valor predeterminado de _THROTTLE (Variable del sistema), que es 0. Equivalente a utilizar el comando SET TRBETWEEN.
  • Pausa entre ejecución de líneas Especifica el retardo en segundos entre la ejecución de cada línea de código. Esta opción le permite frenar la ejecución del programa de forma que pueda inspeccionar las líneas de código sin tener que ir paso a paso por cada línea individual. El seguimiento entre los puntos de interrupción debe estar activado para esta configuración para que tenga algún efecto. Equivalente a establecer la variable de memoria del sistema _THROTTLE.
Inspección
No hay opciones adicionales para esta ventana.
Fuente
Elija una fuente y un estilo para la ventana de depurador especificada. Por ejemplo, para establecer la fuente de la ventana de depurador Seguimiento, elija Seguimiento bajo Especificar ventana y, a continuación, elija Fuente para seleccionar la fuente, el tamaño y el estilo.

Colores

Área
Seleccione el elemento de texto para el cual desea especificar un color. Por ejemplo, para especificar un color para el texto utilizado para los valores cambiados, seleccione Valor cambiado. Las opciones en la lista Área dependen de qué ventana especificó en Especificar ventana.
Primer plano
Elija un color para el texto del área seleccionada. Para utilizar el color predeterminado establecido en el Panel de control de Windows, seleccione Automático.
Segundo plano
Elija un color de fondo para el área seleccionada. Por ejemplo, para mostrar los observaciones en texto amarillo sobre fondo azul, seleccione amarillo en Primer plano y azul en Segundo plano. Para utilizar el color predeterminado establecido en el Panel de control de Windows, seleccione Automático.

Para obtener más información, vea Probar y depurar aplicaciones.

Vea también

Ventana Pila de llamadas | Ventana Resultados del depurador | Ventana Depurador | Ventana Seguimiento | Ventana Inspección | Cuadro de diálogo Opciones


Ficha Editor, cuadro de diálogo Opciones

Contiene opciones para especificar el color y la fuente para identificar los elementos de programa de Visual FoxPro, tales como las palabras claves y los observaciones, en la ventana de comandos y en todas las ventanas de edición, excepto aquellas abiertas con el comando MODIFY FILE o el comando MODIFY MEMO.

Cuando elige Establecer como predeterminado (que aparece en todas las fichas del cuadro de diálogo) Visual FoxPro guarda la configuración de las opciones en el Registro (base de datos de registro de Windows del sistema).

Opciones del editor

Le permite especificar funciones comunes a todos los editores de Visual FoxPro.

Margen de selección
Le permite especificar si los editores muestran un margen de selección, de modo que pueda resaltar una línea y especificar puntos de interrupción o marcadores y accesos directos.
Activar hipervínculos
Especifica si las ventanas de los editores reconocen “http:/” como hipervínculo y su entrada como tal.
Arrastrar y soltar entre palabras
Especifica si el comportamiento de arrastrar y soltar permite arrastrar a palabras o sólo entre palabras.
Cadena de observaciones
Especifica el carácter que identifica un comentario en el código. La cadena de comentario predeterminada es *!*
Número de elementos mostrados
Especifica el número máximo de elementos mostrados en una lista desplegable.
Duración del resaltado
Especifica el número de milisegundos que se resaltan las instrucciones entre delimitadores de paréntesis o corchetes. Puede seleccionar uno de los valores de la lista o escribir la duración específica en el cuadro manualmente.

Configuraciones de colores para la sintaxis

Le permite especificar características para colorear la sintaxis.

Área
Elija el tipo de elemento de programa para el que se van a establecer opciones de fuente y color. Cuando haga su selección, los otros controles se actualizan con los valores para el área seleccionada.
Estilo de la fuente
Elija un estilo de la fuente para el área especificada. Por ejemplo, para mostrar todos los observaciones de sus programas en cursiva, seleccione Comentarios en el cuadro Área y, a continuación, seleccione Cursiva en el cuadro Estilo de la fuente.
Primer plano
Elija un color para el texto del área seleccionada. Para utilizar el color predeterminado establecido en el Panel de control, seleccione Automático.
Segundo plano
Elija un color de fondo para el área seleccionada. Por ejemplo, para mostrar los observaciones en texto amarillo sobre fondo azul, seleccione Comentarios en el cuadro Área, seleccione amarillo en Primer plano y azul en Segundo plano. Para utilizar el color predeterminado establecido en el Panel de control, seleccione Automático.

Esta área de ejemplo muestra los efectos de su configuración.

Restablecer todos
Elija esta opción para establecer los valores predeterminados para colorear la sintaxis de Visual FoxPro.

Vea también

Cuadro de diálogo Modificar propiedades | MODIFY FILE (Comando) | MODIFY MEMO (Comando) | Cuadro de diálogo Opciones


Ficha Asignación de campos, cuadro de diálogo Opciones

Le permite especificar qué tipo de control crea Visual FoxPro cuando se arrastra una tabla o campo a un formulario desde el Diseñador de entorno de datos, Diseñador de bases de datos, o Administrador de proyectos. Por ejemplo, puede especificar que Visual FoxPro cree un cuadro de edición cuando arrastre un campo Carácter a un formulario.

Cuando elige Establecer como predeterminado (que aparece en todas las fichas del cuadro de diálogo) Visual FoxPro guarda la configuración de las opciones en el Registro (base de datos de registro de Windows del sistema). Observe que en esta ficha, al elegir Aceptar también guarda la configuración de opciones en el Registro.

Asignar campos a las clases para arrastrar y soltar
Presenta las asignaciones actuales entre los tipos de campos y las clases (controles). La lista incluye:
  • Tipo Todos los tipos de datos admitidos para campos de base de datos. El tipo de campo Múltiple se utiliza para especificar la clase que se creará si arrastra la tabla completa o múltiples campos a la vez a un control. El tipo de campo Etiqueta se utiliza para especificar la clase que se creará para los títulos de campo.
  • Biblioteca de clases La biblioteca que contiene la definición de clase para asignar a un tipo de campo. Si esta columna está en blanco, el tipo de campo se asigna a una clase de base de Visual FoxPro.
  • Nombre de clase La clase a la que se asigna un tipo de campo, que especifica el tipo de control que se creará.
Modificar
Elija este botón para presentar el cuadro de diálogo Modificar la asignación de campos, donde puede especificar una asignación diferente para el tipo de campo seleccionado.

Para modificar asignaciones de campos

  1. En la ficha Asignación de campos del cuadro de diálogo Opciones, elija Modificar.
  2. En el cuadro de diálogo Modificar la asignación de campos, seleccione un tipo de campo de la lista Tipo.
  3. Para establecer la clase que se crea cuando arrastra una tabla o múltiples campos, seleccione Múltiple.
  4. Para seleccionar la biblioteca de clases (archivo .vcx) que contiene el control que desea asociar con el tipo de campo seleccionado, elija Examinar.
  5. Seleccione un nombre de clase de la lista Nombre. La clase que especifique aquí se creará cada vez que se arrastre un campo del tipo seleccionado a un formulario.
  6. Elija Aceptar o Aplicar para aceptar la asignación.

Opciones de bases de datos

Arrastrar y soltar título del campo
Elija esta opción si desea que Visual FoxPro utilice el nombre del campo como el título de la clase que se está creando. Si no selecciona esta opción, Visual FoxPro no creará títulos de campo.
Copiar comentario del campo
Elija esta opción para hacer que Visual FoxPro copie el comentario de un campo (si existe) a la propiedad Comment de la nueva clase al crearla.
Copiar las máscaras de entrada de los campos
Elija esta opción para hacer que Visual FoxPro copie la máscara de entrada de un campo (si existe) a la propiedad InputMask de la nueva clase al crearla.
Copiar el formato del campo
Elija esta opción para hacer que Visual FoxPro copie la especificación de formato de un campo (si existe) a la propiedad Format de la nueva clase al crearla.

Vea también

Cuadro de diálogo Modificar la asignación de campos | Cuadro de diálogo Opciones | Diseñador de entorno de datos | Diseñador de bases de datos | Ventana Administrador de proyectos | Agregar controles de Visual FoxPro a un formulario | Agregar controles a un formulario con la Galería de componentes


Cuadro de diálogo Modificar la asignación de campos

Utilice este cuadro de diálogo para cambiar la asignación entre un tipo de campo de base de datos y el tipo de clase (control) que Visual FoxPro crea cuando arrastra una tabla o campo a un formulario desde el Diseñador de entorno de datos, Diseñador de bases de datos o Administrador de proyectos.

Este cuadro de diálogo aparece cuando elige Modificar en la ficha Asignación de campos, cuadro de diálogo Opciones.

Tipo
Seleccione el tipo de campo de base de datos para el que desea cambiar la asignación. De forma predeterminada, el tipo de campo seleccionado es el que estaba seleccionado en la ficha Asignación de tipos de campos.

Información de clase

Biblioteca
Escriba el nombre de una biblioteca de clases que contenga la clase que desea que Visual FoxPro cree cuando se arrastre un campo del tipo especificado a un formulario. Si este cuadro esta en blanco, el tipo de campo se asigna a una clase de base de Visual FoxPro.
Examinar
Elija este botón para presentar el cuadro de diálogo Abrir, desde el cual puede seleccionar una biblioteca de clases.
Nombre
Seleccione el nombre de una clase que desee asignar al tipo de campo especificado. La lista sólo contiene las clases de la biblioteca que eligió; para presentar las clases de base de Visual FoxPro en este cuadro, deje en blanco el cuadro Biblioteca. La clase de base y la descripción de la clase seleccionada, si está disponible, se presenta debajo del nombre de la clase.
Aplicar
Elija este botón para crear la asignación. Elija Aplicar si desea cambiar una asignación paro mantener el cuadro de diálogo Modificar la asignación de campos abierto para otra asignación. Para cambiar una única asignación, elija Aceptar.

Vea también

Ficha Asignación de campos, cuadro de diálogo Opciones | Cuadro de diálogo Opciones | Diseñador de entorno de datos | Diseñador de bases de datos | Administrador de proyectos | Agregar controles de Visual FoxPro a un formulario


Ficha Archivos, cuadro de diálogo Opciones

Contiene ubicaciones de directorios y nombres de archivos utilizados por Visual FoxPro. Puede escribir la ruta de acceso y el nombre de archivo directamente en cada cuadro o hacer clic en el botón de cuadro de diálogo para presentar un cuadro de diálogo para establecer la opción.

Cuando elige Establecer como predeterminado (que aparece en todas las fichas del cuadro de diálogo) Visual FoxPro guarda la configuración de las opciones en el Registro (base de datos de registro de Windows del sistema).

Presentación
Especifica el nombre de archivo de la aplicación que se llama cuando elige la opción Presentación del menú Herramientas. El comando Presentación aparece en el menú Herramientas cuando abre un programa o un archivo de texto en una ventana de edición. Contiene Beautify.app de forma predeterminada. Esta opción corresponde a la variable del sistema _BEAUTIFY.
Generadores
Especifica el nombre de archivo de la aplicación que se llama en el Diseñador de formularios cuando elige Generador en el menú contextual. Un generador consiste en uno o más cuadros de diálogo que le ayudan a establecer propiedades para un control específico o a combinar cláusulas para crear una expresión específica. Esta opción corresponde a la variable del sistema _BUILDER. Los generadores se pueden mostrar automáticamente si elige la opción Bloqueo del generador en la ficha Formularios, cuadro de diálogo Opciones.
Examinador de clases
Especifica el nombre de archivo de la aplicación que se llama cuando elige la opción Examinador de clases del menú Herramientas. Contiene Browser.app de forma predeterminada. Esta opción corresponde a la variable del sistema _BROWSER.
Referencias de código
Especifica el nombre de la aplicación que se llama cuando elige Referencias de código en el menú Herramientas, o cuando selecciona Buscar referencia o Ver definición en el menú contextual desde la ventana Modificar de un programa. Este archivo corresponde a la variable de sistema _FOXREF y contiene FoxRef.app en forma predeterminada.
Galería de componentes
Especifica el nombre de archivo de la aplicación que se llama cuando elige la opción Galería de componentes del menú Herramientas. Contiene Gallery.app de forma predeterminada. Esta opción corresponde a la variable del sistema _GALLERY.
Convertidor
Especifica el nombre de archivo de la aplicación que se llama cuando abre un formulario, informe u otro componente de aplicación creado en una versión anterior de FoxPro o Visual FoxPro. La aplicación especificada convierte el componente al formato de archivo actual. Esta opción corresponde a la variable del sistema _CONVERTER.
Analizador de trayecto
Especifica el nombre de archivo de la aplicación que crea el resultado del analizador y el trayecto del Depurador. Contiene Coverage.app de forma predeterminada. Esta opción corresponde a la variable del sistema _COVERAGE.
Generación de referencias cruzadas
Especifica el nombre y la ubicación del programa que crea tablas de referencias cruzadas.
Directorio predeterminado
Especifica el directorio predeterminado de Visual FoxPro. Si activa esta casilla de verificación y elige Establecer como predeterminado, el directorio presentado se registra como valor predeterminado para la sesión actual y todas las sesiones posteriores. Si desactiva esta opción y elige Establecer como predeterminado, el directorio o la carpeta presentados se eliminan del Registro. Si activa esta casilla de verificación y elige Aceptar, se cambia el directorio predeterminado sólo para la sesión actual. Por último, si desactiva esta opción, no podrá cambiar el directorio predeterminado de la sesión actual. Esta opción corresponde al comando SET DEFAULT.
Archivo Include predeterminado
Especifica un archivo de cabecera predeterminado de constantes predefinidas de tiempo de compilación que se incluye automáticamente con las clases definidas por el usuario, los formularios y los conjuntos de formularios. Esta opción está vacía de forma predeterminada y corresponde a la variable del sistema _INCLUDE.
Generador de expresiones
Especifica el nombre de archivo de la aplicación que se ejecuta cuando emite el comando GETEXPR o invoca el cuadro de diálogo Generador de expresiones desde Visual FoxPro. Esta opción está vacía de forma predeterminada y corresponde a la variable del sistema _GETEXPR.
FoxCode
Especifica el nombre y la ubicación de la tabla que proporciona funcionalidad IntelliSense. Esta opción corresponde a la propiedad FoxCode.
FoxTask
Especifica el nombre y la ubicación de la tabla que contiene los registros de la lista de tareas. Esta opción corresponde a la variable del sistema _FoxTask.
Archivo de Ayuda
Especifica si Visual FoxPro presenta Ayuda y, en ese caso, qué archivo utilizar. Si la extensión del nombre del archivo es .hlp, se utiliza una Ayuda gráfica. Si la extensión del nombre del archivo es .dbf, se utiliza una Ayuda tipo .dbf. Si no se especifica extensión, el valor predeterminado es Ayuda gráfica. Esta opción corresponde al comando SET HELP.
Generador de HTML
Especifica el nombre de archivo de la aplicación que se llama cuando elige la opción Guardar como HTML del menú Archivo. Contiene Genhtml.prg de forma predeterminada. Esta opción corresponde a la variable del sistema _GENHTML.
Administrador de IntelliSense
Especifica el nombre y la ubicación del programa que proporciona IntelliSense de Visual FoxPro.
Generador de menús
Especifica el nombre de archivo del programa generador de menús. Esta opción corresponde a la variable del sistema _GENMENU.
Examinador de objetos
Especifica el nombre y la ubicación del Examinador de objetos. Esta opción corresponde a la variable del sistema _ObjectBrowser.
Archivo de recursos
Especifica si Visual FoxPro almacena su estado actual (macros, tamaño y ubicación de las ventanas, etc.) en un archivo de recursos y si es así, qué archivo utilizar. Si esta opción no se selecciona, Visual FoxPro restablece el estado del sistema a sus valores predeterminados cada vez que inicia el programa. Además, se desactivarán algunas opciones del cuadro de diálogo Opciones.

Esta opción corresponde al comando SET RESOURCE.

Directorio Samples
Especifica el directorio que contiene los archivos de ejemplo de Visual FoxPro. Esta opción corresponde a la variable del sistema _SAMPLES.
Ruta de búsqueda
Especifica los directorios en los que Visual FoxPro busca archivos si no encuentra los archivos en el directorio predeterminado. Los directorios deben separarse por signos de coma o punto y coma. Puede utilizar el botón de cuadro de diálogo para insertar signos punto y coma automáticamente cuando especifica múltiples directorios. Esta opción corresponde al comando SET PATH.
Programa de inicio
Especifica el nombre de archivo de la aplicación que se llama cuando inicia Visual FoxPro. Contiene Vfp7strt.app de forma predeterminada. Esta opción corresponde a la variable del sistema _STARTUP.
Lista de tareas
Especifica el nombre y la ubicación del programa que administra la lista de tareas. Esta opción corresponde a la variable del sistema _TASKLIST.
Archivos temporales
Especifica el directorio en el que Visual FoxPro guarda los archivos temporales (por ejemplo, al ordenar o indexar). Como los archivos temporales pueden llegar a ser muy grandes, especifique un directorio con mucho espacio libre. Para mejorar el rendimiento, especifique una unidad rápida; por ejemplo, en un entorno multiusuario puede especificar una unidad local.
Asistentes
Especifica el nombre de archivo de la aplicación a la que se llama cuando ejecuta un asistente. Esta opción corresponde a la variable del sistema _WIZARD.

Para obtener más información, vea Personalizar el entorno de Visual FoxPro en la Guía de instalación.

Vea también

_COVERAGE (Variable del sistema) | _GALLERY (Variable del sistema) | ADDLABEL.APP (Ejemplo) | BUILDER (Variable del sistema) | _CONVERTER (Variable del sistema) | GENMENU (Variable del sistema) | Cuadro de diálogo Opciones | SET DEFAULT (Comando) | SET HELP (Comando) | SET PATH (Comando) | SET RESOURCE (Comando) | _WIZARD (Variable del sistema) | _TASKLIST (Variable del sistema) | _OBJECTBROWSER (Variable del sistema) | _FoxTask (Variable del sistema)


Ficha Formularios, cuadro de diálogo Opciones

Contiene opciones para el Diseñador de formularios.

Cuando elige Establecer como predeterminado (que aparece en todas las fichas del cuadro de diálogo) Visual FoxPro guarda la configuración de las opciones en el Registro (base de datos de registro de Windows del sistema).

Nota Si ya hay una instancia abierta del Diseñador de formularios cuando cambia la configuración en la ficha Formularios del cuadro de diálogo Opciones, los cambios no se reflejan hasta que cierra esa instancia del Diseñador de formularios y, a continuación, la vuelve a abrir.

Cuadrícula

Líneas de cuadrícula
Muestra las líneas de cuadrícula en el Diseñador de formularios para ayudarle a alinear controles.
Nota Son valores predeterminados sólo para formularios nuevos; los valores para formularios existentes se guardarán en el archivo de recursos.
Forzar a la cuadrícula
Especifica que cuando dibuje nuevos controles, los bordes se alinearán con las líneas de cuadrícula más cercanas.
Nota Son valores predeterminados sólo para formularios nuevos; los valores para formularios existentes se guardarán en el archivo de recursos.
Espacio horizontal (píxeles)
Especifica el ancho del espacio entre las líneas horizontales de la cuadrícula. El ancho se basa en la opción Unidades de escala, también en esta ficha.
Nota Son valores predeterminados sólo para formularios nuevos; los valores para formularios existentes se guardarán en el archivo de recursos.
Espacio vertical (píxeles)
Especifica el alto del espacio entre las líneas verticales de la cuadrícula. El alto se basa en la opción Unidades de escala, también en esta ficha.
Nota Son valores predeterminados sólo para formularios nuevos; los valores para formularios existentes se guardarán en el archivo de recursos.
Mostrar posición
Especifica si la posición del objeto y sus dimensiones se muestran en la barra de estado.
Orden de tabulación
Especifica cómo establecer el orden de tabulación en un formulario. Elija Interactivo para utilizar controles de orden al hacer clic en ellos. Elija Por lista para utilizar el cuadro de diálogo Orden de tabulación.
Unidades de escala
Establece el modo de escala predeterminado para el Diseñador de formularios y el Diseñador de clases. Especifica píxeles o fóxeles.
Área de diseño máxima
Especifica el tamaño máximo de un formulario en tiempo de diseño. La configuración predeterminada es Ninguno, la cual evita que el formulario aparezca cortado dentro del Diseñador de formularios. No puede tener un formulario de un tamaño mayor que la resolución especificada. Es una buena idea especificar la menor resolución que desearán sus usuarios, para que sus formularios sean visibles para todos.

Clases de plantilla

Puede especificar una biblioteca de clases y clases sobre las que basar sus nuevos formularios y conjuntos de formularios. De forma predeterminada, Visual FoxPro usa la clase de base.

Conjunto de formularios
Muestra el cuadro de diálogo Plantilla de conjunto de formularios, donde puede seleccionar una plantilla de conjunto de formularios.
Formulario
Muestra el cuadro de diálogo Plantilla de formularios, donde puede seleccionar una plantilla de formularios.
Bloqueo del generador
Especifica que los generadores aparecerán automáticamente en el Diseñador de formularios cuando cree un control para el que hay registrado un generador.
Avisar para guardar los cambios antes de ejecutar el formulario
Especifica que cuando ejecuta un formulario desde el Diseñador de formularios, se le pide que guarde los cambios hechos en el formulario desde la última vez que lo guardó. Si no selecciona esta opción, el Diseñador de formularios guarda los cambios automáticamente antes de ejecutar el formulario.

Vea también

Diseñador de formularios | Cuadro de diálogo Opciones | Cuadro de diálogo Orden de tabulación | Cuadro de diálogo Plantilla de conjunto de formularios | Cuadro de diálogo Plantilla de formularios


Cuadro de diálogo Plantilla de conjunto de formularios

Especifica una plantilla de conjunto de formularios para usar con los conjuntos de formularios.

Clase
Especifica el nombre de archivo de la plantilla de conjunto de formularios.
Nombre de clase
Muestra las clases incluidas en la biblioteca de clases seleccionada actualmente.

Vea también

Ficha Formularios, cuadro de diálogo Opciones | Cuadro de diálogo Opciones | Diseñador de formularios | Cuadro de diálogo Plantilla de formularios


Cuadro de diálogo Plantilla de formularios

Especifica una plantilla de formularios para usar con los formularios.

Clase
Especifica el nombre de archivo de la plantilla de formulario.
Nombre de clase
Muestra las clases incluidas en la biblioteca de clases seleccionada actualmente.

Vea también

Ficha Formularios, cuadro de diálogo Opciones | Cuadro de diálogo Opciones | Cuadro de diálogo Plantilla de conjunto de formularios | Ficha IDE, cuadro de diálogo Opciones


Ficha General, cuadro de diálogo Opciones

Contiene opciones sobre sonidos, programación, entrada de datos y otras opciones de Visual FoxPro.

Cuando elige el botón Establecer como predeterminado, que aparece en todas las fichas del cuadro de diálogo, Visual FoxPro guarda todas las opciones de todas las fichas.

Sonido de advertencia

Desactivado
Desactiva el sonido de error. Corresponde al comando SET BELL.
Valor predeterminado
Establece el sonido de error como el predeterminado del sistema. Corresponde al comando SET BELL.
Reproducir
Establece el sonido de error como un archivo .wav. Escriba el nombre del archivo en el cuadro o haga clic en el botón de cuadro de diálogo para seleccionar un archivo .wav existente. Corresponde al comando SET BELL.

Programación

Cancelar programas al salir
Especifica que puede cancelar la ejecución de un programa al presionar la tecla ESC. Corresponde al comando SET ESCAPE.
Registrar errores de compilación
Especifica que Visual FoxPro registra los errores de compilación en un archivo con el mismo nombre que el del proyecto, pero con la extensión .err. Corresponde al comando SET LOGERRORS.
SET DEVELOPMENT
Especifica que Visual FoxPro vuelve a compilar un programa antes de ejecutarlo si el código objeto es más antiguo que el código fuente. Corresponde al comando SET DEVELOPMENT.
Compatibilidad con dBASE
Especifica que se mantenga la compatibilidad con FoxBASE+, dBASE y otros lenguajes Xbase. Corresponde a SET COMPATIBLE (Comando).
Usar la paleta de colores de Visual FoxPro
Especifica que Visual FoxPro aplica la paleta de colores predeterminada a todos los mapas de bits y objetos OLE, lo que impide desplazamientos de paleta cuando se presentan varias imágenes a la vez. Corresponde al comando SET PALETTE.
Confirmar el reemplazo de archivos
Especifica que Visual FoxPro le solicite confirmación cuando vaya a sobrescribir archivos existentes con archivos nuevos. Corresponde al comando SET SAFETY.
Examinar control IME
Especifica que Visual FoxPro presenta un Editor de métodos de entrada (IME, Input Method Editor) cuando se desplaza a un cuadro de texto en la ventana Examinar Esta configuración no tiene efecto si no está trabajando en un entorno DBCS. Corresponde a SET BROWSEIME (Comando).

Entrada de datos

Teclas de desplazamiento
Especifica si desea utilizar teclas de desplazamiento compatibles con Windows o con MS-DOS para las tareas tales como moverse entre controles en formularios. Corresponde al comando SET KEYCOMP.
Llenar nuevos registros con los valores actuales
Especifica que Visual FoxPro copia automáticamente valores desde el registro actual al nuevo registro que está insertando o anexando. Corresponde al comando SET CARRY.
ENTRAR o TAB para salir de campos
Especifica que puede presionar ENTRAR o TAB para salir de los campos de texto. De lo contrario, puede salir de los cuadros de texto si escribe más allá del último carácter en el cuadro de texto. Corresponde al comando SET CONFIRM.

Compatibilidad con el milenio

Nivel de fecha estricto
Especifica si las constantes ambiguas Date y DateTime generarán errores. Corresponde a SET STRICTDATE (Comando).

Vea también

Cuadro de diálogo Opciones | IMEStatus( ) (Función) | Ventana Seguimiento


Ficha IDE, cuadro de diálogo Opciones

Contiene opciones para editores de Visual FoxPro.

Especificar archivo o ventana

Le permite especificar los tipos de archivo afectados por la configuración establecida en esta ficha.

Tipo:
Le permite especificar los editores o los tipos de archivos para los que especifica condiciones de edición predeterminadas.
Extensiones:
Especifica las extensiones de archivo del tipo de archivos seleccionado.
Reemplazar configuración individual
Le permite reemplazar temporalmente la configuración predeterminada de FoxUser.

Sangría

Le permite especificar el tamaño y el comportamiento de los espacios y de los tabuladores.

Tamaño de tabulador
Especifica el ancho en caracteres de un tabulador del tipo de archivo actualmente seleccionado. El intervalo varía de 1 a 50. El valor predeterminado es 4.
Tamaño de sangría
Especifica el ancho en caracteres de una sangría de párrafo del tipo de archivo actualmente seleccionado. Si es distinto del tamaño de tabulador, se utilizan tabuladores y/o espacios adicionales para crear el valor especificado. El intervalo varía de 1 a 50. El valor predeterminado es 4.
Insertar espacios
Especifica que se insertan espacios mediante la tecla Tabulador en el tipo de archivo actualmente seleccionado. El valor predeterminado es 4.
Mantener tabuladores
Especifica que se insertan tabuladores mediante la tecla Tabulador en el tipo de archivo actualmente seleccionado (predeterminado).

Opciones de guardar

Le permite especificar cómo se guardan los archivos del tipo seleccionado.

Crear copia de seguridad
Para algunos tipos de archivo, especifica si se crea una copia de seguridad cuando se guarda un archivo de este tipo de archivo.
Guardar con avances de línea
Especifica que el tipo de archivo actual se va a guardar con caracteres de retorno y de avance de línea CHR(13)+CHR(10).
Guardar con marca de fin de archivo
Especifica que el tipo de archivo actual se va a guardar con Ctrl+Z al final del archivo.
Compilar antes de guardar
Especifica que se va a intentar realizar una compilación antes de guardar el tipo de archivo actual.

Apariencia y comportamiento

Le permite especificar cómo se muestra el texto en el tipo de archivo seleccionado.

Alineación:
Especifica si el tipo de archivo actual está alineado a la izquierda, al centro o a la derecha.
Fuente:
Especifica la fuente, el estilo y el tamaño del tipo de archivo actual.
Edición con Arrastrar y soltar
Especifica si los archivos posteriores del tipo de archivo seleccionado incluyen comportamiento de arrastrar y soltar. Para desactivar arrastrar y soltar, también debe activar la casilla de verificación Reemplazar configuración individual. Una vez aplicadas, estas selecciones resultan válidas para todos los archivos de los tipos de archivo seleccionados que se abran posteriormente.
Sangría automática
Le permite especificar que la sangría se mantiene automáticamente en las líneas que siguen a una línea con sangría.
Mostrar posición de línea/columna
Le permite mostrar en la línea de estado de la ventana principal el número de línea y columna del cursor de los campos Memo.
Ajuste automático de línea
Para algunos tipos de archivo, le permite especificar si las palabras se ajustan a la línea siguiente en el límite de la ventana del editor.
Colorear la sintaxis
Le permite especificar si está disponible la opción de colorear la sintaxis para el tipo de archivo seleccionado. Puede administrar los parámetros de colorear la sintaxis en la ficha Editor, cuadro de diálogo Opciones.
Hipervínculos incrustados
Le permite especificar si se pueden incluir hipervínculos en el tipo de archivo seleccionado. Los atributos Unvisited, Visited y Hover se encuentran disponibles si tiene instalado Internet Explorer.
Mostrar espacio en blanco
Le permite especificar si se muestran los espacios, tabuladores, párrafos y otros marcadores no relacionados con caracteres en los editores para el tipo de archivo seleccionado.

Botón Aplicar

Guarda la configuración pendiente para el tipo de archivo seleccionado.

Botón Restablecer todos

Restablece los valores predeterminados de Visual FoxPro para el tipo de archivo seleccionado. Para restablecer todos los valores de configuración de tipo, debe utilizar la lista Especificar archivo o ventana y, a continuación, hacer clic en Restablecer todos para cada tipo de archivo de la lista.

Vea también

Ficha Editor, cuadro de diálogo Opciones | Cuadro de diálogo Opciones | Ficha Proyecto, cuadro de diálogo Opciones


Ficha Proyectos, cuadro de diálogo Opciones

Contiene opciones para el Administrador de proyectos.

Cuando elige Establecer como predeterminado (que aparece en todas las fichas del cuadro de diálogo) Visual FoxPro guarda la configuración de las opciones en el Registro (base de datos de registro de Windows del sistema).

Al hacer doble clic en el proyecto

Especifica si Visual FoxPro ejecuta o modifica un archivo cuando hace doble clic en el Administrador de proyectos.

Ejecutar el archivo seleccionado
Activa la ejecución del archivo seleccionado al hacer doble clic en él.
Modificar el archivo seleccionado
Visual FoxPro abre un el editor o diseñador adecuado al hacer doble clic en un archivo.
Pedir asistentes
Especifica que Visual FoxPro le pida automáticamente que utilice un asistente, si es necesario, cuando elija Nuevo archivo en el menú Proyecto o Nuevo en el Administrador de proyectos.
Mostrar iconos contenedores definidos por el usuario
Especifica que Visual FoxPro presenta iconos contenedores definidos por el usuario en el Administrador de proyectos.

Opciones de control de código fuente

Las opciones de este cuadro le permiten especificar qué aplicación de control de origen se va a utilizar y como funciona la aplicación de control de origen cuando agrega, modifica o quita componentes de su proyecto.

Activar el proveedor de control de código fuente
Especifica el nombre de la aplicación de control de código fuente que se va a utilizar. El nombre que especifique aquí se aplicará a los nuevos proyectos. Cuando crea un proyecto, el nombre de la aplicación de control de código fuente en efecto en ese momento se almacena con el proyecto de forma que Visual FoxPro sabe qué aplicación de control de código fuente debe utilizar cada vez que se abre el proyecto. Para desactivar el control de código fuente, elija Ninguno.
Agregar automáticamente nuevos proyectos al control de código fuente
Especifica que se le pregunte si desea poner un proyecto bajo control de código fuente cuando lo crea. Si no selecciona esta opción, los nuevos proyectos no se ponen automáticamente bajo control de código fuente y los debe agregar manualmente.
Desproteger los archivos al modificarlos
Especifica que los archivos se desprotegen automáticamente para el usuario que los modifica desde el Administrador de proyectos. Si un archivo ya está desprotegido, Visual FoxPro presenta un error. Si no activa esta opción, los usuarios que intenten modificar archivos que no estén desprotegidos desde el Administrador de proyectos pueden ver los archivos pero no los pueden cambiar.
Nota Si los usuarios modifican archivos de proyecto mediante comandos desde la ventana Comandos (tales como MODIFY), deben desproteger primero los archivos.
Agregar archivos al control de código fuente tras agregarlos al proyecto
Especifica que los archivos agregados al proyecto se ponen automáticamente bajo el control de código fuente para ese proyecto. Si no selecciona esta opción, los archivos que agregue formarán parte del proyecto (el archivo .pjx), pero no se ponen bajo el control de código fuente. Sin embargo, puede colocar manualmente los archivos de proyecto bajo control de código fuente en cualquier momento.
Nota Los archivos de base de datos (.dbc), de tabla (.dbf), las bibliotecas de API y los archivos de aplicación (.app) no se ponen automáticamente bajo control de código fuente cuando se agregan a un proyecto. Sin embargo, puede colocar manualmente estos archivos bajo control de código fuente.
Quitar archivos del control de código fuente al quitarlos del proyecto
Especifica que cuando quita un archivo de un proyecto, se quite también del control de código fuente. Si no selecciona esta opción, cuando quite un archivo del proyecto, la información de control de código fuente para el archivo permanece en la base de datos de control de código fuente. Al hacerlo así, se mantiene la información guardada acerca de este archivo y si el archivo no se elimina del disco, le permite tener acceso a él mediante el sistema de control de código fuente desde fuera de Visual FoxPro.
Mostrar el cuadro de diálogo para los comandos de menú contextual
Especifica que cuando elige un comando de control de código fuente desde el menú contextual del proyecto, Visual FoxPro le permite seleccionar más de un archivo en los que llevar a cabo el comando seleccionado. Si no activa esta opción, el comando se aplica sólo al archivo seleccionado en el proyecto, pero esto se puede anular al presionar MAYÚSCULAS+botón secundario del ratón y elegir el comando.
Generación de texto
Especifica el nombre de la aplicación utilizada para crear una representación mediante texto de archivos binarios (formularios, etiquetas, menús, informes o bibliotecas de clases) cada vez que se protege el archivo. El archivo de texto resultante se protege junto con el archivo de origen de la tabla y se puede utilizar para crear un informe de diferencias entre múltiples versiones de un archivo.
Clase de proyecto
Muestra el cuadro de diálogo Referencia de proyecto, que le permite especificar una clase ProjectHook predeterminada como plantilla para nuevos proyectos.

Vea también

Enlaces del Administrador de proyectos | Ficha Controles, cuadro de diálogo Opciones | Cuadro de diálogo Nuevo archivo | Cuadro de diálogo Opciones | Administrador de proyectos


Ficha Regional, cuadro de diálogo Opciones

Contiene las opciones para formatos de fecha, hora y numéricos. En Visual FoxPro puede sobrescribir la configuración del sistema de forma temporal o permanente. Las opciones de configuración de esta ficha se reflejan en el resultado de hora, fecha y moneda.

Cuando elige Establecer como predeterminado (que aparece en todas las fichas del cuadro de diálogo) Visual FoxPro guarda la configuración de las opciones en el Registro (base de datos de registro de Windows del sistema).

Usar la figuración del sistema
Cuando selecciona esta opción, todas las opciones de esta ficha se leen del sistema. La configuración mostrada coincide con la del Panel de control. En este modo, la mayoría de las opciones son de sólo lectura.

Cuando no se selecciona esta opción, puede especificar la configuración que sobrescribirá la configuración del sistema.

Fecha y hora

Especifica cómo se presentan los datos de fecha y hora de forma predeterminada. Un ejemplo de la configuración actual aparece en el cuadro superior derecho del grupo de opciones.

Formato de fecha
Especifica el orden de día, mes y año en una fecha. Elija Corta para eliminar los ceros a la izquierda en la fecha. Elija Larga para presentar la fecha escrita. Corresponde al comando SET DATE.
Separador de fecha
Especifica el carácter que aparece entre las partes de una fecha. Desactive esta opción para utilizar el separador predeterminado. Corresponde al comando SET MARK TO.
Siglo
Especifica que el año se presenta con información de siglo (por ejemplo, 1997). Desactive esta opción para presentar el año como 2 dígitos (por ejemplo 97). Corresponde al comando SET CENTURY.
12 horas
Establece el formato de hora de 12 horas que muestra AM o PM.
24 horas
Establece el formato de hora de 24 horas.
Segundos
Especifica que se incluyan los segundos en la presentación de hora.

Moneda y números

Especifica cómo se presentan los datos de moneda de forma predeterminada. Un ejemplo de la configuración actual aparece en el cuadro superior derecho del grupo de opciones.

Formato de moneda
Especifica la ubicación del símbolo de moneda. Corresponde al comando SET CURRENCY.
Símbolo de moneda
Especifica el carácter o caracteres utilizados para la moneda. Corresponde al comando SET CURRENCY.
Separador de miles
Especifica el carácter que se inserta cada tres dígitos a la izquierda del separador de decimales. Corresponde al comando SET SEPARATOR.
Separador decimal
Especifica un carácter que se usa para indicar el decimal. Corresponde al comando SET POINT.
Dígitos decimales
Especifica el número de dígitos que siguen al separador de decimales. Corresponde al comando SET DECIMALS.
La semana comienza en
Especifica en qué día comienza la semana. Corresponde al comando SET FDOW.
Primera semana del año
Especifica dónde comienza el calendario anual. Corresponde al comando SET FWEEK.

Vea también

Cuadro de diálogo Opciones | SET DATE (Comando) | SET MARK TO (Comando) | SET CENTURY (Comando) | SET CURRENCY (Comando) | SET SEPARATOR (Comando) | SET POINT (Comando) | SET DECIMALS (Comando) | SET FDOW (Comando) | SET FWEEK (Comando)


Ficha Datos remotos, cuadro de diálogo Opciones

Contiene opciones para las vistas remotas (ODBC) y las conexiones predeterminadas.

Cuando elige el botón Establecer como predeterminado, que aparece en todas las fichas del cuadro de diálogo, Visual FoxPro guarda todas las opciones de todas las fichas.

Opciones predeterminadas de vista remota

Las configuraciones del cuadro Opciones predeterminadas de vista remota representan los valores de cursor de Visual FoxPro para la sesión actual. Si elige Establecer como predeterminado, los valores serán los predeterminados para las subsiguientes sesiones. Las opciones de este cuadro corresponden a la configuración que establece u obtiene mediante la función CURSORSETPROP( ) y la función CURSORGETPROP( ).

Conexión con recurso compartido
Especifica que Visual FoxPro utiliza la conexión compartida, si una está disponible. Si no está disponible una conexión compartida, Visual FoxPro crea una conexión única cuando la vista se abre y no puede ser compartida con otras vistas.
Buscar memo
Especifica que Visual FoxPro no busca campos memo y general en el origen de datos hasta que se activa un campo memo o general en el resultado de la vista. Deje esta opción desactivada para reducir la cantidad de datos descargados inicialmente desde la tabla remota; esto da como resultado un rendimiento más rápido.
Actualizaciones SQL: criterios
Establece los campos que Visual FoxPro activa en un servidor remoto para determinar si un registro ha cambiado antes de intentar actualizarlo. La actualización falla si los datos de los campos especificados han cambiado.
Actualizaciones SQL: método
Especifica si Visual FoxPro utiliza SQL UPDATE o SQL DELETE y, a continuación, INSERT para actualizar la información en el servidor remoto.
Registros para buscar a la vez
Especifica cuántos registros debe devolver Visual FoxPro a la vez desde el origen de datos remotos. Elija Todos para especificar que se deben devolver todos los registros en la primera operación de búsqueda. Esta configuración está limitada por el valor especificado en Máximo de registros para buscar.
Máximo de registros para buscar
Limita el número total de registros devueltos por una vista, lo que puede ayudar a evitar que descargue una cantidad excesiva de datos si ha construido incorrectamente una consulta. Elija Todos para especificar que se deben devolver todos los registros.
Usar memo para los campos >=
Especifica la máxima longitud de datos en campos Caácter largos. Si los datos de caracteres exceden la longitud especificada, Visual FoxPro los convierte a un campo memo en el resultado de su vista. El valor predeterminado es 255, el tamaño máximo de un campo Carácter en Visual FoxPro.
Registros para actualizar por lotes
Especifica el número de instrucciones de actualización enviadas a la vez para vistas. El valor predeterminado es 1. Ajustar este valor puede aumentar significativamente el rendimiento de actualización. Para obtener más información, consulte REPLACE (Comando) y Alcance (Claúsulas).

Opciones predeterminadas de conexión

Las configuraciones del cuadro Opciones predeterminadas de conexión representan las configuraciones predeterminadas globales de Visual FoxPro para las conexiones. Las opciones de este cuadro corresponden a valores que establece u obtiene mediante la función SQLSETPROP( ) y la función SQLGETPROP( ).

Ejecución asíncrona
Especifica que Visual FoxPro ejecuta los comandos de paso a través de SQL (mediante la función SQLEXEC( ), la función SQLMORERESULTS( ), la función SQLTABLES( ) y la función SQLCOLUMNS( )) en segundo plano después de devolver el control a su aplicación. Si elige esta opción, sus aplicaciones pueden presentar información de progreso y pueden permitir a los usuarios interrumpir un comando con la tecla ESC si el comando SET ESCAPE se ha establecido como verdadero. También puede determinar el estado de un comando de SQL que se ejecuta de forma asíncrona al llamar a una de las funciones de paso a través repetidamente hasta que informe de que el comando se ha realizado. El valor predeterminado de esta opción es desactivada (ejecución sincrónica), lo que especifica que Visual FoxPro espera hasta que el comando de paso a través de SQL se complete antes de devolver el control a su aplicación.
Mostrar advertencias
Habilita la muestra de mensajes de advertencia.
Procesamiento por lotes
Especifica que cuando envía múltiples instrucciones de paso a través de SQL mediante la función SQLEXEC( ), Visual FoxPro no devuelve ningún resultado hasta que se hayan recuperado todos los conjuntos individuales de resultados. Corresponde a la configuración de BatchMode en la función SQLSETPROP( ). Si esta opción está desactivada, debe llamar a la función SQLMORERESULTS( ) para determinar si hay datos disponibles.
Transacciones automáticas
Especifica que la conexión administra las transacciones automáticamente en tablas remotas. Si no selecciona esta opción, debe tratar el proceso de transacciones manualmente mediante la función SQLCOMMIT( ) y la función SQLROLLBACK( ).
Mostrar inicio de sesión
Especifica si se presentan o no peticiones de inicio de sesión cuando se activa una conexión (si la conexión requiere que los usuarios hayan iniciado una sesión). Por ejemplo, Sólo cuando sea necesario especifica que las peticiones de inicio de sesión aparezcan sólo cuando la información de inicio de sesión no se especifique en la definición de conexión o vista.
Tiempo de espera de la conexión (seg)
Especifica el número de segundos (entre 0 y 600) que se debe esperar para que se establezca la conexión con el servidor remoto. Si la conexión no se establece dentro del tiempo especificado, Visual FoxPro genera un error. Especifique 0 para esperar una conexión indefinidamente.
Tiempo de espera inactivo (min)
Especifica el número de minutos de tiempo de inactividad permitido antes de que la conexión se desactive. Si no se ha hecho una petición al servidor dentro del tiempo especificado, Visual FoxPro finaliza la conexión. Sin embargo, Visual FoxPro le permite volver a conectarse automáticamente si se hace una petición al servidor después de que la conexión haya superado el tiempo de espera.
Tiempo de espera de la consulta (seg)
Especifica el número de segundos (entre 0 y 600) de espera para que el servidor responda a una petición. Si el servidor tarda un tiempo mayor del especificado para procesar la consulta, Visual FoxPro genera un error. Especifique 0 para esperar indefinidamente a los resultados de consultas.
Tiempo de espera (ms)
Especifica el número de milisegundos que transcurren antes de que Visual FoxPro compruebe si la instrucción SQL ha completado la ejecución.

Vea también

Crear vistas | Compartir conexiones para múltiples vistas remotas | Tipo de campo Memo | REPLACE (Comando) | Alcance (Cláusulas) | SQLEXEC( ) (Función) | SQLGETPROP( ) (Función) | SQLSETPROP( ) (Función) | Cuadro de diálogo Opciones


Ficha informes, cuadro de diálogo Opciones

Contiene opciones y configuración global para el Diseñador de informes que serán utilizadas al crear informes.

Al seleccionar Set As Default, que aparece en cada ficha en el Cuadro de diálogo Opciones, Visual FoxPro guarda todas las opciones en todas las fichas.

Cuadrícula

Líneas de cuadrícula
Muestra u oculta las líneas de la cuadrícula para alinear los controles en el área del Diseñador de informes. Además puede seleccionar Líneas de cuadrícula desde el menú Ver.
Forzar a la cuadrícula
Alinea los bordes de los nuevos controles dibujados con la línea de cuadrícula más cercana en el Diseñador de informes. Además puede seleccionar Forzar a la cuadrícula desde el menú Formato.
Espaciado Horizontal (pixels)
Especifica el número de pixels para el espaciado horizontal de cada sección de cuadrícula. Además puede establecer el espaciado horizontal seleccionando Establecer escala de cuadrícula en el menú Formato.
Espaciado vertical (pixels)
Especifica el número de pixels para el espaciado vertical de cada sección de cuadrícula. Además puede establecer el espaciado vertical seleccionando Establecer escala de cuadrícula en el menú Formato.

Opciones de Informe

Utilizar sesión privada de datos
Ejecuta el informe utilizando una sesión privada de datos. Además puede seleccionar Sesión privada de datos desde el menú Informes. Para más información acerca de sesiones privadas de datos, vea Utilizar sesiones de datos.
Guardar entorno de impresora
Guarda el entorno actual de impresora configurándolo dentro del informe. Además puede seleccionar Entorno de impresora desde el menú Informes.
Utilizar títulos de campos DBC
Utiliza los títulos de campos del contenedor de base de datos (DBC) cuando arrastra un campo en el informe.

Otras opciones

Mostrar posición
Muestra la posición, altura y ancho del control seleccionado en la barra de estado. Además puede seleccionar Mostrar posición desde el menú Ver.
Escala de la regla
Especifica la escala de la regla utilizando el sistema predeterminado o pixels. Además puede configurar el espaciado vertical seleccionando Establecer escala de la cuadrícula desde el menú Formato.
Fuente predeterminada
Especifica la fuente, estilo y tamaño que desee. Además puede seleccionar Fuente predeterminada en el menú Informes.

Vea también

cuadro de diálogo Opciones | Cuadro de diálogo Configurar cuadrícula | Configurar el entorno de Visual FoxPro | Ver y cambiar la configuración del entorno | Crear informes y etiquetas | Guía: Crear informes con Visual FoxPro


Ficha Ver, cuadro de diálogo Opciones

Contiene las opciones para el control de la visualización de las características de Visual FoxPro.

Cuando elige el botón Establecer como predeterminado, que aparece en cada ficha del cuadro de diálogo, Visual FoxPro guarda todas las opciones de todas las fichas.

Mostrar

Barra de estado
Especifica si Visual FoxPro muestra la barra de estado en la parte inferior de la ventana principal. Corresponde al comando SET STATUS BAR.
Reloj
Especifica si el reloj del sistema aparece o no en la barra de estado. Debe elegir la opción Barra de estado para que esta opción tenga efecto. Corresponde al comando SET CLOCK.
Resultado del comando
Especifica que Visual FoxPro presenta los resultados de ciertos comandos, incluidos APPEND FROM, AVERAGE, CALCULATE, COUNT, INDEX, SUM y TOTAL, en la ventana principal de Visual FoxPro, la ventana de mensajes del sistema, la barra de estado gráfica o una ventana definida por el usuario. Corresponde al comando SET TALK.
Mensajes del sistema
Especifica que Visual FoxPro presenta ciertos mensajes del sistema en la barra de estado. Esta opción corresponde al comando SET NOTIFY.
La lista de los proyectos usados más recientemente contiene
Le permite especificar el número de archivos que se muestran en la lista de archivos usados recientemente. Esta opción está desactivada si no seleccionó Archivo de recursos en la ficha Archivos, cuadro de diálogo Opciones o si ha desactivado el comando SET RESOURCE.
Abrir el último proyecto al iniciar
Especifica que Visual FoxPro abre el proyecto usado más recientemente al iniciar. Esta opción está desactivada si no seleccionó Archivo de recursos en la ficha Archivos, cuadro de diálogo Opciones o si ha desactivado el comando SET RESOURCE.

Vea también

Cuadro de diálogo Opciones | Configurar el entorno de Visual FoxPro


Cuadro de diálogo Pie de página

Establece el alto y otras opciones de la banda Pie de página de un informe o etiqueta. Este cuadro de diálogo aparece cuando hace doble clic en la barra de separación de la banda Pie de página en el Diseñador de informes.

Alto
Especifica el alto de la banda. Escriba un valor en el cuadro, haga clic en FLECHA ARRIBA o FLECHA ABAJO para cambiar el valor mostrado en incrementos de 0,05 o arrastre la barra de separación de la banda con el ratón.
Banda de alto constante
Seleccione esta opción para impedir que la banda se alargue para ajustarse a la longitud de los datos o se encoja para absorber las líneas en blanco que se hayan quitado.

Ejecutar expresión

Al entrar
Especifica que se evalúe una expresión antes de imprimir cada encabezado de grupo nuevo. Escriba la expresión en el cuadro o elija el botón de cuadro de diálogo para mostrar el cuadro de diálogo Generador de expresiones.
Al salir
Especifica que se evalúe una expresión después de imprimir cada página nueva. Escriba la expresión en el cuadro o elija el botón de cuadro de diálogo para mostrar el cuadro de diálogo Generador de expresiones.

Vea también

Cuadro de diálogo Generador de expresiones | Diseñador de etiquetas | Diseñador de informes | Cuadro de diálogo Bandas del diseñador de informes | Modificar diseños | Preparar el diseño de informe | Refinar el diseño de página


Cuadro de diálogo Encabezado de página

Establece el alto y otras opciones de la banda Encabezado de página de un informe o etiqueta. Este cuadro de diálogo aparece cuando hace doble clic en la barra de separación de la banda Encabezado de página en el Diseñador de informes.

Alto
Especifica el alto de la banda. Escriba un valor en el cuadro, haga clic en FLECHA ARRIBA o FLECHA ABAJO para cambiar el valor mostrado en incrementos de 0,05 o arrastre la barra de separación de la banda con el ratón.
Banda de alto constante
Seleccione esta opción para impedir que la banda se alargue para ajustarse a la longitud de los datos o se encoja para absorber las líneas en blanco que se hayan quitado.

Ejecutar expresión

Al entrar
Especifica que se evalúe una expresión antes de imprimir cada encabezado de grupo nuevo. Escriba la expresión en el cuadro o elija el botón de cuadro de diálogo para mostrar el cuadro de diálogo Generador de expresiones.
Al salir
Especifica que se evalúe una expresión después de imprimir cada página nueva. Escriba la expresión en el cuadro o elija el botón de cuadro de diálogo para mostrar el cuadro de diálogo Generador de expresiones.

Vea también

Cuadro de diálogo Generador de expresiones | Diseñador de etiquetas | Diseñador de informes | Cuadro de diálogo Bandas del diseñador de informes | Modificar diseños | Refinar el diseño de página | Preparar el diseño de informe


Cuadro de diálogo Configurar página

Permite ajustar el ancho en columnas y el formato de página para los informes o etiquetas. La configuración que puede ajustar en este cuadro de diálogo depende de la impresora que tenga instalada y se guarda con el informe o etiqueta.

Este cuadro de diálogo aparece cuando selecciona Configurar página en el menú Archivo.

Diseño de página
Proporciona una representación gráfica de la página, que refleja su diseño en el Diseñador de informes y en el Diseñador de etiquetas, y la configuración que elija o escriba en el cuadro de diálogo Configurar página.

Columnas

Número
Especifica el número de columnas que se imprimirán a lo largo de la página.
Ancho
Especifica el ancho de las columnas individuales, en pulgadas o centímetros.
Espacio
Especifica el espacio entre columnas, en pulgadas o centímetros.

Área de impresión

Página imprimible
Especifica que los requisitos del controlador de impresora seleccionado actualmente determinan los márgenes mínimos.
Toda la página
Especifica que el tamaño de papel determina los márgenes mínimos.
Margen izquierdo
Especifica el ancho del margen izquierdo, en pulgadas o centímetros.
Dimensiones
Indica si el ancho de las columnas y el espacio se calculan en pulgadas o en centímetros.
Orden al imprimir
Especifica cómo se ajustan los registros cuando hay múltiples columnas.
Configurar impresora
Muestra el cuadro de diálogo Configurar impresión, donde puede seleccionar una impresora, la ruta de acceso de la impresora y una configuración de papel.

Vea también

Cuadro de diálogo Opciones de exportación | Cuadro de diálogo Imprimir | Cuadro de diálogo Configurar impresión | SYS(1037) - Cuadro de diálogo Configurar página | Imprimir los resultados en un informe o una etiqueta | Cuadro de diálogo Opciones de impresión de informes y etiquetas


Cuadro de diálogo Pegado especial

Le permite vincular o incrustar un objeto OLE del Portapapeles. Visual FoxPro coloca el objeto en el campo General actual. Debe abrir la ventana Campo General para pegar los datos.

Para usar Pegado especial, primero debe copiar el objeto que desea pegar en el Portapapeles y a continuación abrir la ventana del Campo General; esto activará el comando. El Pegado especial abre el cuadro de diálogo Pegado especial.

Origen
Muestra la aplicación, el directorio y el archivo desde el que está pegando.
Como
Muestra los formatos disponibles para el objeto que está pegando. Seleccione el formato del objeto según la tarea que desee hacer con el objeto almacenado en Visual FoxPro. El formato Objeto le permite modificar el objeto (por ejemplo, un objeto de hoja de calculo de Microsoft Excel) si abre su aplicación de origen desde un campo. Si un objeto tiene un formato Imagen o Mapa de bits, no puede modificarlo desde un campo de la tabla. Los formatos Imagen y Mapa de bits muestran el objeto y minimizan el espacio que ocupa en su archivo. Si va a cambiar el tamaño del objeto, elija el formato Imagen.
Pegar
Incrusta el objeto del Portapapeles en el campo General actual.
Pegar vínculo
Vincula el objeto a Visual FoxPro, con lo que puede modificar el objeto desde Visual FoxPro. Pegar vínculo sólo está disponible cuando copia un objeto guardado.
Nota Con un documento de Microsoft Word, están disponibles los comandos Pegar y Pegar vínculo.
Mostrar como icono
Muestra el icono de la aplicación en lugar de los datos. Esto ahorra espacio en disco al vincular o incrustar.
Cambiar icono
Muestra el cuadro de diálogo Cambiar icono, que le permite especificar el icono que se debe usar para un objeto vinculado o incrustado en un formulario o un campo General de una tabla de Visual FoxPro. Este botón aparece cuando se activa la casilla de verificación Mostrar como icono.
Resultado
Describe qué acciones se van a llevar a cabo sobre el contenido del Portapapeles cuando elija Aceptar. Puede modificar la descripción mostrada si elige las opciones Pegar, Pegar vínculo o Mostrar como icono.

Vea también

Ventana de campo General | Cuadro de diálogo Buscar | Cuadro de diálogo Cambiar icono | Tipo de campo General | Agregar objetos OLE a las aplicaciones | Rutinas para la manipulación del editor de textos y el Portapapeles | Compartir información dinámicamente


Cuadro de diálogo Personalización del Panel

El cuadro de diálogo Personalización del Panel es utilizado para crear, modificar y borrar paneles en el Administrador del Panel de tareas.

Nuevo
Muestra el cuadro de diálogo Panel para que introduzca información básica sobre el nuevo panel a crear. Son presentadas las siguientes opciones:
  • Proveedor (Vendor) Especifica el nombre de la compañía que está creando el nuevo panel.
  • ID Único Especifica un número de Id único para el contenido del panel. Se recomienda que acepte el valor predeterminado.
  • Nombre Especifica el nombre del panel nuevo. Este nombre aparece en la parte superior del Administrador del Panel de tareas. Para especificar una tecla de método abreviado para el vínculo en la parte superior del Administrador del panel de tareas, incluya un carácter escape en el cuadro Nombre. Por ejemplo, \<My Panel especificaría la letra M como la tecla de método abreviado en el vínculo de los paneles.
  • Tipo de panel Especifica el tipo de panel que desea crear. Los cuatro tipos de paneles que puede crear están explicados en la siguiente tabla.
    Tipo de panel | Descripción
    Página Web | Muestra un URL de Internet utilizando el control Internet Explorer ActiveX.
    HTML | El panel y sus secciones contenidas están mostradas como HTML en el control Internet Explorer ActiveX.
    XML | El panel y sus secciones contenidas están mostradas como XML en el control Internet Explorer ActiveX. Un archivo local Extensible Stylesheet Language (XSL) debe ser distribuido con este tipo de panel.
    Controles VFP Especifica una clase y biblioteca de clases de Visual FoxPro para crearlas como el panel. Esta clase debe heredar de la clase PaneContainer de la biblioteca FoxPane.
    DEFINE CLASS MyPane AS PaneContainer OF FoxPane
Borrar
Borra un panel del Administrador de Panel de tareas. Cuando se selecciona, un cuadro de diálogo aparece permitiéndole borrar el panel seleccionado.
Publicar
Muestra el cuadro de diálogo Publicar panel en donde puede publicar el panel seleccionado ajustando el contenido del panel y sus archivos asociados en un archivo XML manifestado, para una distribución fácil. Son presentadas las siguientes opciones:
  • Publicar todo el contenido en panel Especifica que todas las secciones de contenido del panel son publicadas dentro del archivo XML manifestado.
  • Publicar contenido seleccionado Especifica que únicamente las secciones de contenido seleccionadas en la lista son publicadas dentro del archivo XML manifestado.
  • Publicar archivos asociados con el panel Especifica que los archivos asociados con el panel son publicados en el archivo XML manifestado.
  • Publicar archivos comunes a todos los paneles Especifica que los archivos que son comunes a todos los paneles son publicados dentro del archivo XML manifestado. Esta opción debe ser seleccionada únicamente si necesita distribuir contenido en la carpeta PaneCache raíz.
Vista de contenido
Muestra la sección de Contenido del panel en el lado derecho del cuadro de diálogo Personalización del panel.
Vista de archivos
Muestra la sección Archivos del panel en el lado derecho del cuadro de diálogo Personalización del panel.
Lista de paneles
Lista todos los paneles instalados en el Administrador del panel de tareas. Seleccionando un panel se actualizan los controles de las secciones Contenido del panel y Archivos del panel con información del panel seleccionado.
Inactivo
Especifica que el panel seleccionado está inactivo. los paneles inactivos no son mostrados en la barra de herramientas de la Lista de paneles en la parte superior del Administrador del panel de tareas o en el cuadro de diálogo Opciones del Panel de tareas.
Guardar
Guarda todos los cambios hechos al panel seleccionado, los aplica al Administrador del panel de tareas y cierra el cuadro de diálogo Personalización del panel.
Aplicar
Guarda todos los cambios hechos al panel seleccionado y los aplica al Administrador de Panel de tareas.

Contenido del panel

La sección de Contenido del panel es mostrada cuando selecciona Vista de contenido. En esta sección puede especificar configuraciones para los paneles.

Agregar
Agrega una nueva sección de contenido, la cual es mostrada en la Lista de secciones de contenido debajo del botón.
Quitar
Le permite borrar la sección de contenido seleccionada.
Flecha hacia arriba
Mueve hacia arriba la sección seleccionada en la Lista de secciones de contenido.
Flecha hacia abajo
Mueve hacia abajo la sección seleccionada en la Lista de secciones de contenido.
Lista de secciones de contenido
Lista las secciones de contenido para un panel. Seleccionando una sección de contenido se actualizan los controles de la sección Contenido del panel con información del panel seleccionado.

Ficha general

Muestra opciones para el contenido del panel raíz o contenido de sección en la cual especifica información general en el elemento seleccionado. Para más información, vea Ficha General, Cuadro de diálogo Personalización del panel.

Ficha de datos

Muestra el URL para paneles basados en páginas Web o contiene los datos XML utilizados para presentar una página para paneles basados en HTML- o XML-. Este panel está disponible únicamente cuando el tipo de panel raíz es página Web, HTML o XML. Para más información, vea Ficha Datos, Cuadro de diálogo Personalización del panel

Ficha de datos Transformar

Especifica la transformación XML que es utilizada para presentar paneles basados en HTML o XML. Este panel está disponible únicamente cuando el tipo del panel raíz es HTML o XML. Para más información, vea Ficha Transformar datos, Cuadro de diálogo Personalización del panel.

Ficha de datos predeterminada

Especifica los datos utilizados cuando el panel es presentado si el contenido en línea del panel no puede ser bajado. Este panel está disponible únicamente cuando el tipo del panel raíz es HTML o XML. Para más información, vea Ficha Datos predeterminados, Cuadro de diálogo Personalización del panel.

Archivo controlador

Especifica el código controlador a las entradas del usuario controladoras en paneles. Este panel está disponible únicamente cuando el tipo del panel raíz es HTML o XML. Para más información, vea Ficha Controlador, Cuadro de diálogo Personalización del panel.

Archivo Opciones

Especifica las opciones personalizadas para una sección de contenido. Para paneles basados en XML- HTML-, las opciones pueden ser especificadas únicamente en el contenido de subsección. Para paneles de control Página Web y VFP, las opciones pueden ser especificadas únicamente en la sección de contenido raíz. Para más información, vea Ficha Opciones, cuadro de diálogo Personalización del panel.

Archivos de panel

La sección Archivos de panel es presentada cuando selecciona Archivos de vista. En esta sección puede agregar, editar y quitar archivos asociados con un panel.

Agregar
Le permite al usuario seleccionar un archivo para agregarlo al panel.
Editar
Abre un archivo y su editor predeterminado asociado para editar.
Quitar
Le permite al usuario quitar del panel el archivo seleccionado.

Vea también

Cuadros de diálogo | Administrador del Panel de tareas | Cuadro de diálogo Opciones del panel de tareas


Ficha Datos, Cuadro de diálogo Personalización del panel

La ficha Datos contiene los datos en los que están basados los paneles Página Web, HTML y XML.

Especifica el tipo de origen de datos para el panel. Los cinco tipos de origen de datos están explicados en la siguiente tabla:
Tipo de origen de datos | Descripción
Texto Estático Especifica que los datos están bien formados en XML. El texto estático predeterminado para el tipo de panel XML es:
<VFPData>
<!-- CONTENT -->
</VFPData>

Puede escribir datos bien formados en XML en lugar del comentario. Si el panel raíz tiene subsecciones, el texto estático predeterminado puede permanecer porque Visual FoxPro concatena y ubica los datos XML para la subsección.

Si necesita ajustar su subcontenido en XML de manera que las secciones de contenido puedan ser posteriormente transformados por la raíz antes de ser mostradas en el panel, utilice la siguiente sintaxis en la sección de contenido raíz.

<VFPData>
<!-- XMLCONTENT -->
</VFPData>

Esto ajusta cada subcontenido en las secciones XML CDATA con lo contenido entre etiquetas <HTMLText>. Por ejemplo, un panel con dos registros subcontenidos pueden lucir como el siguiente ejemplo:

<VFPData>
<PaneContent id="uniqueid1">
<PaneTitle>Content Title goes here</PaneTitle>
<HTMLText><![CDATA[Transformed sub-content is placed here]]>
</HTMLText>
</PaneContent>
<PaneContent id="uniqueid2">
<PaneTitle>Content Title goes here</PaneTitle>
<HTMLText><![CDATA[Transformed sub-content is placed here]]>
</HTMLText>
</PaneContent>
</VFPData>

La etiqueta contiene transformaciones de secciones, después determina si transforma estos datos o distribuye un archivo XML en la sección de archivos.
URL | Los datos están contenidos en un archivo en Internet. Después, puede seleccionar contenido dinámico al panel desde un archivo en Internet.
Secuencia de comandos Especifica el código Visual FoxPro para generar datos XML. El código devuelve una cadena XML para ser utilizada como datos y acepta un objeto de parámetro para exponer al código un conjunto de opciones para el panel.
LPARAMTERS oContent

El objeto expone las siguientes propiedades y métodos:

  • CacheDir El directorio del Panel Cache.
  • ContentTitle El nombre de la sección de contenido seleccionado
  • Unique ID El Id. único de la sección de contenido seleccionado
  • TaskPaneID El Id. único del panel al que pertenece la sección de contenido
  • User Datos de usuario que están contenidos en el campo Usuario en la tabla PaneContent
  • GetOption(cOptionName, xDefaultValue) Devuelve el valor de la opción especificada. De forma opcional, se puede especificar el valor predeterminado que será devuelto si la opción está vacía. Todos los valores de la opción son devueltos como cadenas, a menos que xDefaultValue especifique un tipo diferente de datos.
Archivo | Especifica un archivo local como la fuente de datos. Este archivo es agregado a la lista de archivos asociados para el panel y es copiado en el directorio "pane's cache directory".
Servicio Web | Especifica que los datos son obtenidos mediante un Servicio Web XML de Internet.
Modificar
Abre una ventana para modificar el Código Visual FoxPro o datos XML.
Editar Cuadro
Muestra códigos Visual FoxPro o datos XML.
La fuente de este contenido es de Internet
Especifica que una secuencia de código Visual FoxPro está bajando contenido de Internet. Esto activa la opción Verificar por nuevo contenido de Internet para el panel.
Archivo
Especifica el nombre del archivo de datos.
Puntos suspensivos (...)
Le permite seleccionar un archivo de datos.
WSDL URL
Especifica el archivo URL Web Services Description Language (WSDL) para el Servicio Web XML que proporciona los datos para el panel. El WSDL describe los servicios ofrecidos por el servidor.
Método
Especifica el método de Servicio Web XML al que se llamará. También deben ser especificados los parámetros apropiados para el método. Para especificar las opciones del panel, utilice los delimitadores ## . Por ejemplo, GetPaneXML(##daysold##) hace referencia al método GetPaneXML del Servicio Web XML y utiliza la opción DaysOld para el panel como parámetro.
Servicio
Especifica el servicio en el archivo WSDL que contiene la operación especificada en las solicitudes del Protocolo de Acceso de Objeto Simple (SOAP). Si esta opción está en blanco, se utiliza el primer servicio en el archivo específico WSDL cuando se inicializa el objeto SoapClient. (Opcional)
Puerto
Especifica el nombre del puerto en el archivo WSDL que contiene la operación especificada en la solicitud SOAP. Si esta opción está en blanco, el primer puerto en el servicio especificado es utilizado cuando se inicializa el objeto SoapClient object. (Opcional)
WSML
Especifica el URL del archivo Web Services Meta Language (WSML). Este es un parámetro requerido únicamente cuando se utilizan custom type mappers. Para más información sobre custom type mappers, vea también la documentación SOAP Toolkit distribuida con Visual FoxPro.

Vea también

Cuando de diálogo Personalización del Panel | Administrador del Panel de tareas


Ficha Datos predeterminados, Cuadro de diálogo Personalización del panel

La ficha Datos predeterminados especifica los datos predeterminados para mostrar si los datos actuales no pueden ser recuperados desde Internet cuando el panel se muestra primero. Esta información es opcional y es utilizada solamente si el dato no es almacenado localmente. Si el panel recupera satisfactoriamente los datos desde Internet pero falla en los intentos siguientes, el panel utilizará los datos almacenados en el directorio PaneCache, no en el dato XML predeterminado.

Modificar
Abre una ventana para editar el dato XML predeterminado.
Cuadro de edición
Muestra el dato XML predeterminado.

Vea además

Cuando de diálogo Personalización del Panel | Administrador del panel de tareas


Ficha General, Cuadro de diálogo Personalización del panel

El Archivo General contiene información general para personalizar la sección del panel de contenidos y subcontenidos.

ID Único
Especifica un identificador único asignado al panel seleccionado. Un Id. predeterminado es asignado cuando se crea un panel. Se le recomienda que acepte el valor predeterminado.
Nombre
Especifica el nombre de la sección de contenido. Si la sección de contenido seleccionada es la sección de contenido raíz, el nombre aparece en la parte superior del Administrador de Panel de tareas. Se pueden asignar teclas de método ubicando un carácter de salida en el cuadro Nombre. Por ejemplo, \<My Panel como nombre de la sección de contenido raíz especifica la letra M como la tecla de método para este panel en el Administrador del Panel de tareas.
Ayuda URL
Especifica la URL para ayuda en el panel seleccionado. El hipervínculo para la URL aparece en el cuadro de diálogo Opciones del Panel de tareas cuando el panel es seleccionado.
Seleccionar Imagen
Muestra un cuadro de diálogo para seleccionar una imagen que será asociada con el panel seleccionado. La imagen seleccionada es mostrada junto con el vínculo al panel en la parte superior del Administrador de Panel de tareas.
Biblioteca de clases
Especifica el archivo de programa (.prg) o el archivo de biblioteca (.vcx) que contiene la clase y el código asociado para ejecutar el panel. El archivo es copiado automáticamente en la carpeta PaneCache del panel seleccionado y los archivos son agregados automáticamente a la lista de archivos asociados con el panel seleccionado. Este campo aparece únicamente si el panel seleccionado está basado en el tipo de Controles VFP.
Nombre de clases
Especifica el nombre de la clase contenedora a inicializar cuando se crea el panel desde la biblioteca de clases especificada. Este campo aparece únicamente si el panel seleccionado está basado en el tipo de Controles VFP.
Modificar
Abre la biblioteca de clases para editar. Este control aparece únicamente si el panel seleccionado está basado en el tipo de Controles VFP.

Vea también

Cuando de diálogo Personalización del Panel | Administrador del Panel de tareas


Ficha Controlador, Cuadro de diálogo Personalización del panel

La ficha Controlador de código especifica los controladores para los hipervínculos que son seleccionados en el panel cuando el tipo de panel es XML o HTML, y el hipervínculos comienza con vfps:. Por ejemplo: el siguiente código abre una ventana examinar para la URL especificada:

<a href="vfps:linkto?url=http://msdn.microsoft.com/vfoxpro/">Go to the VFP site</a>

La siguiente tabla lista los controladores predeterminados generados en el Administrador del Panel de tareas.

Controlador predeterminado | Descripción
vfps:refresh | Recarga el panel actual.
vfps:linkto | Abre una ventana examinar a la URL especificada. La URL es especificada con el parámetro url=cURL .
vfps:gotopane | Cambia el Administrador del Panel de tareas al panel especificado. El panel es especificado con el parámetro uniqueid=cPaneUniqueID.
vfps:help | Muestra la Ayuda especificada por tema o ID. La ayuda es mostrada utilizando los parámetros ID=cTopicID o Topic=cTopicName.
vfps:options | Muestra el Cuadro de diálogo Opciones del panel de tareas para el panel especificado. El panel está especificado con el parámetro uniqueid=cPaneUniqueID.
vfps:message | Muestra un cuadro de mensaje informativo. El mensaje está especificado con el parámetro msg=cMessage.

Puede incluir el parámetro refresh con algún controlador de código tal que el panel se recargue inmediatamente después que el controlador es llamado. Esto es útil cuando el resultado del enlace puede afectar el contenido del panel. Puede utilizar el parámetro refresh con otros parámetros como se muestra en el siguiente ejemplo:

vfps:message?msg=This is a message&refresh

La siguiente tabla lista los parámetros pasados al código cuando se utiliza el código controlador personal.

Parámetro | Descripción
cAcción Especifica la acción, la cual es el siguiente texto vfps: pero seguido por algún parámetro. Por ejemplo, lo siguiente especifica utilizar un controlador de usuario llamado MyAction:
<a href="vfps:MyAction?Param=Value">Este es mi controlador</a>
oParameters Una colección de parámetros especificados. Adicionalmente, si este es un formulario enviado, la colección también incluye los valores del formulario. Para recuperar un valor, se llama a la función GetParam( ) con el nombre del parámetro, como se muestra en el siguiente ejemplo:
oParameters.GetParam("ParameterName")
oBrowser Contiene la referencia de objeto al objeto Window en el examinador de objetos del panel. Puede utilizarlo para acceder a los métodos y propiedades DHTML. Por ejemplo:
oBrowser.document.all("SearchResults").style.display = "none"
oContent | Contiene la referencia a la definición del panel contenido de manera que pueda recuperar los valores de opción y la carpeta PaneCache especificada en el cuadro de diálogo Opciones del panel de tareas. Este es el mismo objeto que es pasado al script en la ficha Datos Cuadro de diálogo Personalización del Panel.
Modificar
Abre una ventana para editar el código controlador.
Cuadro de edición
Muestra el código controlador.

Vea también

Cuando de diálogo Personalización del Panel | Administrador del Panel de tareas


Ficha Opciones, Cuadro de diálogo Personalización del panel.

La ficha Opciones especifica las opciones de usuarios para la sección contenida.

Para los tipos de paneles XML y HTML, las opciones pueden ser especificadas solo en la subsección contenida. Para los tipos de paneles página Web y Controles Visual FoxPro, las opciones pueden ser especificadas en la sección raíz contenida, ya que esos tipos de paneles no tienen secciones subcontenidas.

Nuevo
Abrir el cuadro de diálogo Nueva opción pregunta sobre la información para una nueva opción. El cuadro de diálogo Nueva Opción tiene los siguientes campos.
  • Nombre de opciones El nombre de la opción que es referida en el código.
  • Tipo El tipo de control que desea crear en el Cuadro de diálogo Opciones del panel de tareas. Puede ser un cuadro de texto, una casilla de verificación, un control spinner o un control contraseña
  • Título La etiqueta que aparece junto al control en el Cuadro de diálogo Opciones del Panel de tareas.
Eliminar
Pregunta si desea eliminar la opción seleccionada.
Nueva propiedad
Muestra un cuadro de mensaje en el que se pide introducir el nombre de la nueva propiedad. Puede introducir el valor de la propiedad utilizando Lista de propiedades después que haber añadido la propiedad.
Eliminar
Pregunta si desea eliminar la propiedad seleccionada.
Lista de opciones
Muestra la lista de opciones del panel seleccionado o la sección de contenidos.
Lista de propiedades
Muestra la lista de propiedades y sus valores predeterminados para el panel seleccionado o la sección de contenidos.

Vea además

Cuando de diálogo Personalización del Panel | Administrador del Panel de tareas


Ficha Transformar datos, Cuadro de diálogo Personalización del panel

En la ficha Transformar Datos, es donde se especifica como se realizará la transformación de datos XML, que es utilizada antes de procesar el contenido de una sección.

Tipo
Especifica el tipo de transformación de dato. A continuación, los dos tipos de transformación de datos.
Tipo | Descripción
XML | Especifica que la transformación es Extensible Stylesheet Language (XSL).
Script | Especifica que la transformación es con código de Visual FoxPro.
Fuente
Especifica el origen de la transformación de datos. La transformación de datos XML, puede tener origen en el mismo código especificado en el Panel de datos del Cuadro de Diálogo Panel de Personalización.
Modificar
Abre la ventana para modificar el código Visual FoxPro o el dato XSL.
Cuadro Editar
Muestra el código Visual FoxPro o el dato XSL.

Vea también

Cuando de diálogo Personalización del Panel | Administrador del panel de tareas


Cuadro de diálogo Imprimir

Le permite imprimir un archivo de texto, un informe, una etiqueta o el contenido de la ventana Comandos o el Portapapeles.

Este cuadro de diálogo aparece cuando selecciona Imprimir en el menú Archivo.

Método abreviado

CTRL+P

Impresora

Nombre
Muestra los nombres de las impresoras instaladas actualmente en el equipo.
Estado
Muestra si la impresora elegida es o no la impresora predeterminada y si está preparada para imprimir.
Tipo
Muestra el modelo de la impresora seleccionada. El modelo de impresora se especifica cuando instala la impresora por primera vez.
Ubicación
Muestra la ruta de acceso de la impresora.
Comentarios
Muestra observaciones acerca de la impresora.
Propiedades
Muestra el cuadro de diálogo Propiedades de la impresora, que le permite establecer opciones para la impresora.

Intervalo de impresión

Todas
Especifica que se imprimen todas las páginas del documento.
Páginas
Le permite especificar qué páginas del documento se van a imprimir.
Selección
Imprime la selección resaltada en el documento.

Copias

Número de copias
Le permite especificar el número de copias del documento que se van a imprimir.
Intercalar
Especifica que si se imprimen múltiples copias de un documento, las copias impresas se intercalan.

Vea también

Generador de expresiones | Cuadro de diálogo Imprimir archivo | Cuadro de diálogo Configurar impresión | Imprimir los resultados de una consulta en un informe o una etiqueta | Cuadro de diálogo Opciones de impresión de informes y etiquetas | Preparar el diseño de informe | Mostrar e imprimir archivos de código fuente en color


Cuadro de diálogo Imprimir archivo

Le permite buscar en una unidad o directorio el archivo en el que desea imprimir. Este cuadro de diálogo aparece cuando hace clic en el botón de cuadro de diálogo a la derecha del cuadro Archivo, en el cuadro de diálogo Imprimir.

Página de códigos
Muestra el cuadro de diálogo Página de códigos para que pueda adjuntar la página de códigos correcta. Si el archivo que desea imprimir utiliza el juego de caracteres extendido, haga clic en Página de códigos y realice la selección apropiada.

Vea también

Cuadro de diálogo Imprimir | Imprimir los resultados en un informe o una etiqueta | Preparar el diseño de informe | Cuadro de diálogo Configurar impresión | Cuadro de diálogo Opciones de impresión de informes y etiquetas | Cuadro de diálogo Página de códigos


Cuadro de diálogo Opciones de impresión

Le permite imprimir un archivo de texto, un informe, una etiqueta o el contenido de la ventana Comandos o el Portapapeles.

Este cuadro de diálogo aparece cuando selecciona Opciones en el cuadro de diálogo Imprimir.

Imprimir

Tipo
Especifica el tipo de archivo que se va a imprimir. Puede seleccionar Informe, Etiqueta, Ventana Comandos, Archivo, Archivo ASCII, Portapapeles o cualquier archivo de texto abierto (.qpr, .prg o .txt).
Nota La opción Archivo ASCII pasa por alto el controlador de impresora y envía el contenido del archivo seleccionado directamente a la impresora. Asegúrese de que el archivo contiene comandos de impresora válidos. Cuando se envían comandos de impresora no válidos al dispositivo de impresión, es posible que la impresora falle y sea necesario reiniciarla.
Archivo
Especifica la ruta de acceso y el nombre del archivo que desea imprimir. Escriba la ruta de acceso y el nombre, o haga clic en el botón del cuadro de diálogo para mostrar el cuadro de diálogo Imprimir archivo, en el que puede buscar directorios y seleccionar el archivo que desea imprimir.

Opciones de impresión

Números de línea
Imprime los números de línea en el margen izquierdo. Esta opción se activa para la ventana Comandos y el Portapapeles.
Salto de página antes
Avanza la impresora a la parte superior de la página siguiente antes de imprimir el archivo.
Salto de página después
Avanza la impresora a la parte superior de la página siguiente después de imprimir el archivo. Esta opción no se activa para informes y etiquetas.
Restaurar entorno
Para ejecutar informes de FoxPro versión 2.x, asegura que la configuración del entorno de datos guardada previamente con el informe se usa para ejecutarlo. Esta opción no se aplica a los informes de Visual FoxPro porque estos usan sus propios entornos de datos.
Configurar impresora
Muestra el cuadro de diálogo Configurar impresión, en el que puede especificar una impresora local o de red, la orientación de página, el tamaño del papel y opciones de impresión adicionales.
Opciones
Muestra el cuadro de diálogo Opciones de impresión de informes y etiquetas, en el que puede crear expresiones mediante el cuadro de diálogo Generador de expresiones para seleccionar los registros que desea imprimir.

Vea también

Cuadro de diálogo Generador de expresiones | Cuadro de diálogo Imprimir archivo | Cuadro de diálogo Configurar impresión | Cuadro de diálogo Opciones de impresión de informes y etiquetas | Imprimir los resultados de una consulta en un informe o una etiqueta | Cuadro de diálogo Imprimir | Preparar el diseño de informe


Cuadro de diálogo Configurar impresión

Selecciona una impresora, una ruta de acceso a la impresora y una configuración de papel. La configuración que puede ajustar en este cuadro de diálogo depende de la impresora que tenga instalada y se guarda con el informe o etiqueta. Puede cambiar también la configuración del trabajo de impresión actual; esta configuración no se guarda con el archivo de informe.

Impresora

Nombre
Muestra los nombres de las impresoras instaladas actualmente en el equipo.
Estado
Muestra si la impresora elegida es o no la impresora predeterminada y si está preparada para imprimir.
Tipo
Muestra el modelo de la impresora seleccionada. El modelo de impresora se especifica cuando instala la impresora por primera vez.
Ubicación
Muestra la ruta de acceso de la impresora.
Comentarios
Muestra observaciones acerca de la impresora.

Orientación

Vertical
Orienta el papel verticalmente para la impresión.
Horizontal
Orienta el papel horizontalmente para la impresión.

Papel

Tamaño
Especifica el tamaño de papel que se va a utilizar. Puede imprimir en papel o en sobres.
Origen
Especifica el origen de papel (por ejemplo, la bandeja superior) en la impresora.

Vea también

Cuadro de diálogo Imprimir | Cuadro de diálogo Imprimir archivo | Cuadro de diálogo Opciones de impresión | Cuadro de diálogo Opciones de impresión de informes y etiquetas | Imprimir los resultados en un informe o una etiqueta | Preparar el diseño de informe


Cuadro de diálogo Imprimir-Condiciones

Permite la impresión condicional de un objeto basado en el valor de una expresión y controla cómo se imprimen los objetos cuando las bandas son continuas.

Para objetos de campo, este cuadro de diálogo controla si se imprimen los valores que no cambian de una banda a otra. Para objetos que no son campos, este cuadro de diálogo controla cómo se imprimen las bandas continuas.

Este cuadro de diálogo aparece cuando coloca un control en un informe o etiqueta y elige Imprimir-Condiciones en el cuadro de diálogo del control.

Una versión ligeramente diferente de Imprimir-Condiciones aparece cuando dibuja un rectángulo o una línea en un informe o etiqueta, hace doble clic en él y elige Imprimir-Condiciones desde el cuadro de diálogo Rectángulo/Línea.

Imprimir valores repetidos

Esta opción aparece sólo para los objetos que no son campos (como objetos OLE, etiquetas, líneas, rectángulos y rectángulos redondeados).

Sí
Los objetos se imprimirán cuando se inicien las bandas que contienen el objeto.
No
El objeto no se imprimirá a menos que esté activada una de las opciones siguientes o ambas: En 1ª banda completa de nueva página o columna y Cuando detalle pase a nueva página o columna.

Imprimir valores repetidos

Esta opción sólo aparece para objetos Campo.

Sí
Muestra los valores repetidos.
No
Suprime los valores repetidos.

Imprimir también

En 1ª banda completa de nueva página o columna
Imprime el campo en la primera banda de una nueva página o columna que no sobrepase la página o columna anterior. Esta casilla se activa automáticamente si elige Sí en Imprimir valores repetidos y es opcional si elige No.
Cuando cambie este grupo
Imprime el campo cuando el grupo elegido cambie. Esta opción sólo está disponible si existe un grupo de datos y elige un grupo de datos en el cuadro de lista.
Cuando detalle pase a nueva página o columna
Imprime el campo cuando la banda Detalle sobrepase una nueva página o columna.
Quitar líneas en blanco
Contrae la banda si un objeto no se imprime y ningún otro objeto ocupa el mismo espacio horizontal.
Imprimir sólo cuando la expresión sea verdadera
Proporciona un espacio para que escriba una expresión o muestra el cuadro de diálogo Generador de expresiones con el que puede definir una expresión que se debe evaluar antes de que se imprima el campo. Todas las otras opciones de este cuadro de diálogo, excepto Quitar líneas en blanco, se desactivan si incluye una expresión.

Vea también

Cuadro de diálogo Título | Cuadro de diálogo Generador de expresiones | Cuadro de diálogo Rectángulo/Línea | Diseñador de informes | Cuadro de diálogo Expresión de informe | Establecer opciones de impresión para controles


Cuadro de diálogo Información del proyecto

Permite ver y modificar la información acerca del proyecto y sus archivos. Este cuadro de diálogo aparece al seleccionar Información del proyecto del menú Proyecto.

Método abreviado

CTRL+J en el Administrador de proyectos o ALT+ENTER.

Vea también

Cuadro de diálogo Actualizar la lista de proyectos | Ficha Proyecto, cuadro de diálogo Información del proyecto | Cuadro de diálogo Seleccionar directorio | Cuadro de diálogo Opciones para generar | Cuadro de diálogo Versión EXE | Ficha Archivos, cuadro de diálogo Información del proyecto | Ficha Proyecto, cuadro de diálogo Opciones | Ficha Servidores, cuadro de diálogo Información del proyecto


Ficha Proyecto, cuadro de diálogo Información del proyecto

Muestra la información de estado acerca del proyecto.

Autor
Muestra el nombre del autor, se puede cambiar escribiendo el nuevo nombre en el cuadro.
Compañía
Muestra el nombre de la compañía, se puede cambiar escribiendo el nuevo nombre en el cuadro.
Dirección/Ciudad/Estado/País/Código postal
Muestra la información de la dirección de la compañía, que puede cambiar si escribe los nuevos datos en los cuadros correspondientes.
Local
Muestra el directorio que contiene el archivo de proyecto. Para cambiar el directorio, escriba otro nombre en el cuadro o haga clic en el botón de cuadro de diálogo para mostrar el cuadro de diálogo Seleccionar directorio.
Última compilación
Muestra la fecha y hora de la última generación del proyecto (no se puede modificar).
Archivos
Muestra el número de archivos del proyecto (no se puede modificar).
Información de depuración
Especifica si la información para depurar se incluye con el archivo compilado. Si esta opción no está activada, no puede ver la ejecución del programa en la ventana Seguimiento. Corresponde al argumento NODEBUG del comando COMPILE.
Codificado
Especifica si se codifican los archivos compilados, por seguridad.
Adjuntar icono
Especifica si se muestra un icono seleccionado cuando la aplicación se ejecuta. Cuando esta opción está activada, muestra el cuadro de diálogo Abrir si no se ha asignado nunca un icono a la aplicación.
Icono
Muestra el cuadro de diálogo Abrir de forma que pueda elegir un icono. Este botón sólo se activa si tiene seleccionado el cuadro de verificación Adjuntar icono a .exe. Para mostrar el icono correctamente en el Explorador de Windows, el archivo de icono debe contener imágenes de iconos de 32 x 32 bits y de 16 x 16 bits. La imagen de 32 x 32 bits se utiliza en la vista Iconos grandes del Explorador y la imagen de 16 x 16 bits se utiliza en las vistas Iconos pequeños, Listas y Detalles del Explorador.

La siguiente tabla muestra los formatos para la imagen del icono que admite Visual FoxPro.

Colores | Tamaño (pixels)
Color verdadero (24 bit) | 16 x 16
Color verdadero (24 bit) | 32 x 32
Color verdadero (24 bit) | 48 x 48
Color verdadero (16 bit) | 16 x 16
Color verdadero (16 bit) | 32 x 32
Color verdadero (16 bit) | 48 x 48
256 Colores | 16 x 16
256 Colores | 32 x 32
256 Colores | 48 x 48
16 Colores | 16 x 16
16 Colores | 32 x 32
16 Colores | 48 x 48
Clase de proyecto
Muestra el cuadro de diálogo Referencia de proyecto, que le permite especificar una clase ProjectHook predeterminada como plantilla para nuevos proyectos.

Vea también

COMPILE (Comando) | Ficha Archivos, cuadro de diálogo Información del proyecto | Administrador de proyectos | Cuadro de diálogo Seleccionar directorio | Ventana Seguimiento | Ficha Servidores, cuadro de diálogo Información del proyecto | Cuadro de diálogo Información del proyecto | Enlaces del Administrador de proyectos | Herramientas de productividad para el desarrollo

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Cuadro de diálogo Seleccionar directorio

Le permite configurar el directorio principal del proyecto. Este cuadro de diálogo aparece cuando selecciona el botón de cuadro de diálogo asociado a la ficha Proyecto del cuadro de diálogo Información del proyecto. El botón de cuadro de diálogo está asociado a la opción Local.

Directorio
Muestra un árbol de directorios, en el que puede hacer clic en el directorio que desea establecer como directorio principal del proyecto.
Unidad
Le permite seleccionar una unidad de forma que pueda elegir un directorio de esa unidad.
Seleccionar
Convierte la combinación de unidad y directorio seleccionados en el directorio principal del proyecto. Este directorio se muestra después en el cuadro Local de la ficha Proyecto.
Nueva carpeta
Está disponible cuando el valor nflag de la función GETDIR( ) = 64. Le permite crear una carpeta nueva en el cuadro de diálogo.

Vea también

Cuadro de diálogo Información del proyecto | Administrador de proyectos | Ficha Proyecto, cuadro de diálogo Información del proyecto | Ficha Archivos, cuadro de diálogo Información del proyecto | Cuadro de diálogo Información del proyecto


Ficha Archivos, cuadro de diálogo Información del proyecto

Muestra una lista ordenada alfabéticamente de todos los archivos del proyecto, su tipo e información acerca de su estado incluido o excluido, la fecha y hora de la última modificación y la página de códigos.

Tipo
Muestra un icono que representa el tipo de archivo.
Nombre
Muestra el nombre de archivo.
Última modificación
Muestra la fecha y hora de la última modificación del archivo.
Incluido
Si activa esta casilla, el archivo se incluye. Si desactiva la casilla, el archivo se excluye.
Página de códigos
Muestra el número de la página de códigos.
Actualizar páginas de códigos nativas
Actualiza las páginas de códigos para cada archivo de la lista.

Vea también

Administrador de proyectos | Ficha Proyecto, cuadro de diálogo Información del proyecto | Ficha Servidores, cuadro de diálogo Información del proyecto | Cuadro de diálogo Seleccionar directorio | Cuadro de diálogo Opciones para generar | Cuadro de diálogo Versión EXE | Determinar la página de códigos de un archivo de proyecto | Páginas de códigos en Visual FoxPro | Desarrollar aplicaciones internacionales


Ficha Servidores, cuadro de diálogo Información del proyecto

Muestra las clases ubicadas en los servidores, su biblioteca, las instancias, su descripción, el tipo e información de Ayuda.

Clases de servidor
Muestra una lista de todas las clases disponibles, en .vcx y en código, que están marcadas como OLEPublic. Cada clase de la lista tiene un archivo .pjx correspondiente.
Biblioteca de clases
Muestra la ruta de acceso del directorio de la biblioteca de clases en la que está almacenada la clase seleccionada.
Nombre de clase
Muestra el nombre de la clase.
Crear instancia
Muestra una de las siguientes opciones:

Single Use Especifica que se puede crear una instancia de clase dentro y fuera de Visual FoxPro utilizando Automatización. Cada petición de creación de una instancia de clase hecha por medio de un cliente de Automatización que este fuera del proyecto hace que se inicie la ejecucion de una copia separada del Servidor de Automatización.

Instancia el valor predeterminado de Single Use cuando se crea un nuevo proyecto que contiene clases OLEPUBLIC. Esta configuracion es la apropiada para generar servidores EXE.

Not Creatable Especifica que es posible crear instancias de clase solo dentro de Visual FoxPro.

Multi Use Especifica que se puede crear una instancia de clase dentro y fuera de Visual FoxPro utilizando Automatización. Cada petición de creación de una instancia de clase hecha por medio de una cliente de Automatización que este fuera del proyecto, hace que se ejecute siempre en la misma copia del servidor de Automatización la cual es proporcianada como origen para la nueva instancia.

Instancia el valor predeterminado para Multi Use cuando se crea un Servidor .dll COM.

Descripción
Muestra una breve descripción de la clase.

De forma predeterminada, Visual FoxPro registra toda la notación Project.Server como descripción. Así se garantiza la coherencia de las claves del Registro. Puede especificar otra descripción aquí.

Archivo de Ayuda
Muestra el archivo de Ayuda asociado al servidor. Seleccione el botón de cuadro de diálogo para mostrar el cuadro de diálogo Abrir si no se muestra ningún archivo.
Id. de contexto de Ayuda
Muestra el Id. de contexto del archivo de Ayuda asociado a la aplicación, si se distribuye un archivo de Ayuda con la aplicación.
Nombre del proyecto
Muestra el nombre del proyecto asociado a las clases de servidor.
Descripción de biblioteca de tipos
Muestra una descripción de la biblioteca de clases en la que está basada la clase seleccionada.

Vea también

Ficha Archivos, cuadro de diálogo Información del proyecto | Administrador de proyectos | Ficha Proyecto, cuadro de diálogo Información del proyecto | Clases de Visual FoxPro | Cuadro de diálogo Seleccionar directorio | Cuadro de diálogo Versión EXE | Crear, copiar y eliminar archivos de biblioteca de clases


Cuadro de diálogo Opciones de la acción

Permite especificar opciones de acciones en un sistema de menús personalizado. Use este cuadro de diálogo para definir métodos abreviados del teclado, determinar cuando está activado o desactivado un elemento del menú, incluir un mensaje en la barra de estado cuando el menú (o un elemento del menú) está seleccionado, especificar un nombre de un título de menú y controlar la localización de títulos de menú durante la edición visual OLE.

Este cuadro de diálogo aparece cuando elige el botón Opciones de los Diseñador de menús y menús contextuales.

Comentarios
Proporciona espacio para agregar un comentario sólo para uso personal. Los observaciones no afectan de ningún modo al código generado; Microsoft Visual FoxPro los ignora al ejecutar el programa de menú.
Método abreviado
Define la tecla de método abreviado opcional para un menú o elemento de menú. Los métodos abreviados de teclado para los elementos de menú de Visual FoxPro son una combinación de la tecla CTRL y otra tecla.
Etiqueta de tecla
Muestra la combinación de teclas. Si un elemento de menú no tiene un método abreviado de teclado, Visual FoxPro muestra “(presione la tecla)” en el cuadro Etiqueta de tecla. Presione la combinación de teclas que desee para la tecla de método abreviado.
Texto de tecla
Muestra el texto que desea que aparezca junto al elemento de menú. A no ser que lo cambie, este cuadro repite el método abreviado del cuadro Etiqueta de tecla. Por ejemplo, si Etiqueta de tecla y Texto de tecla fueran CTRL+R, puede cambiar el Texto de tecla a ^R.
Nota No puede asignar CTRL+J como método abreviado de teclado para un elemento de menú.
Saltar por
Muestra el cuadro de diálogo Generador de expresiones. En el cuadro Saltar por del Generador de expresiones, escriba la expresión que determina si el menú o el elemento de menú está desactivado o activado. El menú o el elemento de menú se desactiva si la expresión tiene el valor verdadero (.T.).
Negociar
Especifica la localización de títulos de menú cuando un usuario modifica un objeto OLE en su aplicación.
Contenedor
Especifica cómo se combinará el título de menú cuando Visual FoxPro sea el contenedor de un objeto activo en contexto.
Nota Las opciones de negociación de menú sólo están disponibles para objetos OLE que se pueden modificar en contexto.

La tabla siguiente muestra la ubicación del título de menú para cada valor de negociación.

Valor | Ubicación
Ninguna | Especifica que el título de menú no se coloca en la barra de menús. Es lo mismo que no elegir ninguna opción.
Izquierda | Especifica que el título de menú se coloca en el grupo izquierdo de los títulos de menús de la barra de menús.
Centro | Especifica que el título de menú se coloca en el grupo central de títulos de menús de la barra de menús.
Derecha | Especifica que el título de menú se coloca en el grupo derecho de los títulos de menús de la barra de menús.

Para obtener más información acerca de la negociación de menús de objetos, vea DEFINE PAD (Comando).

Mensaje
Muestra el cuadro de diálogo Generador de expresiones. En el cuadro Mensaje del Generador de expresiones, escriba el mensaje que figurará en la barra de estado de Visual FoxPro que describe la elección de menú.
Título de menú
Le permite especificar un título de menú opcional. El nombre o número utilizado en el programa de menú generado es opcional y Visual FoxPro proporciona uno si usted no lo hace. Al utilizar este nombre o número puede hacer referencia a un menú o elemento de menú en tiempo de ejecución. Esta opción sólo está disponible para menús.
Nota Esta opción sólo está disponible si el área Resultado de la ventana del Diseñador de menús muestra Comando, Submenú o Procedimiento.
Imagen
Le permite especificar el archivo gráfico que se va a mostrar a la izquierda del texto de la barra de menús o al lado del recurso en el menú del sistema de Visual FoxPro.
Nº de barra
Le permite especificar un título de menú contextual opcional. Esta opción sólo está disponible para menús contextuales.

Vea también

Cuadro de diálogo Generador de expresiones | Diseñador de menús y menús contextuales | PROMPT( ) (Función) | DEFINE PAD (Comando) | Cuadro de diálogo Condiciones | Cuadro de diálogo Establecer orden de índice | Cuadro de diálogo Crear relaciones uno a varios


Cuadro de diálogo Destino de la consulta

Le permite enviar el resultado de su consulta a siete destinos diferentes.

Este cuadro de dialogo aparece cuando seleccione Destino de la Consulta desde el menú Consulta y esta disponible solo para consultas.

Destino del resultado
Muestra los botones para que seleccione el tipo de salida para los resultados de su consulta. La tabla de abajo muestra y describe los tipos de resultados.
Botón | Descripción
Botón Examinar, cuadro de diálogo Destino de la consulta | Muestra el resultado de la consulta en una ventana Examinar.
Botón Cursor, cuadro de diálogo Destino de la consulta | Guarda el resultado de la consulta en un cursor.
Botón Tabla, cuadro de diálogo Destino de la consulta | Guarda el resultado de la consulta como un archivo de tabla.
Botón Pantalla, cuadro de diálogo Destino de la consulta | Muestra el resultado de la consulta en la ventana de resultados activa.

Vea también

Cuadros de diálogo | Diseñador de consultas y de vistas


Botón Examinar, cuadro de diálogo Destino de la consulta

Muestra el resultado de la consulta en una ventana Examinar para su consulta y edición.

Vea también

Cuadro de diálogo Destino de la consulta | Ventana Examinar | BROWSE (Comando) | Botón Cursor, cuadro de diálogo Destino de la consulta | Botones del Examinador de clases


Botón Cursor, cuadro de diálogo Destino de la consulta

Guarda el resultado de la consulta en un cursor con el nombre que le asigne. El cursor es de sólo lectura, aparece en la ventana Ver y está disponible para examinar, crear informes y otros usos hasta que lo cierre. Este comando sólo está disponible para las consultas.

Nombre del cursor
Especifica el nombre del cursor.

Vea también

Cuadro de diálogo Destino de la consulta | Botón Examinar, cuadro de diálogo Destino de la consulta | Botón Tabla, cuadro de diálogo Destino de la consulta | Almacenar los resultados en una tabla, matriz o cursor | SET CURSOR (Comando) | Diseñador de consultas y de vistas


Botón Tabla, cuadro de diálogo Destino de la consulta

Guarda el resultado de la consulta en un archivo de tabla (.dbf) con el nombre que le asigne. Este comando solo está disponible para las consultas.

Nombre de tabla
Especifica el nombre de la tabla. Puede escribir el nombre en el cuadro de texto o usar el botón de cuadro de diálogo para seleccionar una tabla existente que desee sobrescribir.

Vea también

Cuadro de diálogo Destino de la consulta | Botón Cursor, cuadro de diálogo Destino de la consulta | Estructura de archivos de tabla (.dbc, .dbf, .frx, .lbx, .mnx, .pjx, .scx, .vcx)


Botón Pantalla, cuadro de diálogo Destino de la consulta

Muestra el resultado de la consulta en la ventana de resultados activa. Este comando sólo está disponible para las consultas.

Salida secundaria

Ninguna
Especifica que el resultado no debe enviarse a la impresora ni guardarse como un archivo de texto.
A la impresora
Envía el resultado de la consulta a la impresora, además de a la pantalla.
Al archivo de texto
Guarda el resultado de la consulta como un archivo de texto. Haga clic en el botón para seleccionar un archivo existente y sobrescribirlo, o escriba el nombre de un archivo nuevo en el cuadro de texto.

Opciones

Suprimir encabezados de columnas
Suprime la aparición de los encabezados en la parte superior de los resultados de las consultas.
Pausa entre pantallas
Hace una pausa al final de cada pantalla y le solicita la continuación a la siguiente pantalla. En la petición, puede cancelar la consulta si presiona ESC.

Vea también

Cuadro de diálogo Destino de la consulta


Cuadro de diálogo Informe rápido

Le permite seleccionar campos y un diseño de campos para un informe.

Puede usar también los asistentes de Visual FoxPro para crear rápidamente un informe. Entre ellos se encuentran el Asistente para informes y el Asistente para informes uno a varios.

Diseño de campos
Muestra el diseño de columnas a la izquierda y el diseño de filas a la derecha. Elija el diseño en columnas para mostrar los campos de izquierda a derecha a lo ancho de la página. Elija el diseño en filas para mostrar los campos uno debajo del otro a lo largo de la página.
Títulos
Determina si los nombres de campo se mostrarán como títulos en los controles de etiqueta encima o junto al campo correspondiente.
Agregar alias
Agrega automáticamente el alias a todos los nombres de campo en la ventana Diseñador de informes.
Agregar tabla al entorno de datos
Agrega automáticamente la tabla al entorno de datos.
Campos
Muestra el cuadro de diálogo Selector de campos, en el cual puede seleccionar los campos que desea mostrar en su informe.

Vea también

Cuadro de diálogo Variables del informe | Cuadro de diálogo Expresión de informe | Cuadro de diálogo Selector de campos | Asistente para informes uno a varios | Diseñador de informes | Asistente para informes | Agregar, copiar y eliminar controles de informes | Crear un diseño de informe


Cuadro de diálogo Desmarcar registros

Permite desmarcar los registros que se han marcado para su eliminación. Corresponde al comando RECALL.

Alcance
Permite especificar los registros sobre los cuales Visual Foxpro va a actuar. Elija Siguiente, Todos, Registro o Resto en la lista desplegable. Elija un número en el control numérico de la derecha al seleccionar Siguiente o Registro en la lista desplegable Alcance.
FOR
Muestra el cuadro de diálogo Generador de expresiones, en el que crea la expresión lógica que cada registro debe cumplir para que le afecte el comando. Cada registro de la tabla se comprueba mediante la expresión FOR.
WHILE
Muestra el cuadro de diálogo Generador de expresiones. La expresión WHILE especifica que la acción afecta a los registros sólo mientras la expresión lógica sea verdadera. La primera vez que la expresión dé como resultado falso, se detiene la acción sin evaluar los registros restantes.
Desmarcar
Desmarca todos los registros mediante los valores de Alcance, FOR y WHILE.

Vea también

Cuadro de diálogo Eliminar registros | Cuadro de diálogo Generador de expresiones | RECALL (Comando) | Cuadro de diálogo Alcance


Cuadro de diálogo Rectángulo/Línea

Especifica la posición y las opciones de impresión para los controles de rectángulo y línea. Este cuadro de diálogo aparece cuando dibuja un rectángulo o una línea en un informe o etiqueta, y hace clic en él mientras está seleccionado.

Imprimir-Condiciones
Muestra el cuadro de diálogo Imprimir-Condiciones con el que puede controlar exactamente cuándo se imprime la línea o el rectángulo en el informe o etiqueta.

Posición del objeto

Flotante
Especifica que el control de rectángulo o línea seleccionado se mueve en relación con el tamaño de los campos cercanos.
Borde superior de la banda
Hace que el rectángulo o la línea permanezcan en la posición que le ha asignado en el Diseñador de informes o el Diseñador de etiquetas, y lo mantiene en esa posición relativa al principio de la banda.
Borde inferior de la banda
Hace que el rectángulo o la línea permanezcan en la posición que le ha asignado en el Diseñador de informes o el Diseñador de etiquetas, y lo mantiene en esa posición relativa al final de la banda.

Alargar hacia abajo

No alargar
Especifica que el rectángulo no se alargue verticalmente cuando la banda se alargue para mostrar los datos del campo.
Alargar con relación al objeto más alto del grupo
Especifica que el rectángulo se alargue para ajustarse al objeto más alto del grupo.
Alargar con relación al alto de la banda
Especifica que el rectángulo se alargue para encajar en la banda.
Comentarios
Le permite agregar observaciones al archivo .frx o .lbx. Los observaciones sirven sólo como referencia y no aparecen por ningún sitio en el informe o la etiqueta que se imprime.

Vea también

Cuadro de diálogo Imprimir-Condiciones | Cuadro de diálogo Rectángulo redondeado | Cuadro de diálogo Imagen para informe | Agregar líneas, rectángulos y círculos | Establecer opciones de impresión para controles


Cuadro de diálogo Quitar archivos del control de código fuente

Quita los archivos seleccionados del proyecto del control de código fuente.

Archivos para quitar
Muestra los archivos del proyecto con control de código fuente.
Seleccionar todo
Selecciona todos los archivos mostrados.

Vea también

Cuadro de diálogo Agregar archivos al control de código fuente | Cuadro de diálogo Actualizar la lista de proyectos | Compilar código fuente


Cuadro de diálogo Cambiar el nombre del archivo

Le permite cambiar el nombre del archivo seleccionado.

Este cuadro de diálogo aparece cuando selecciona la opción Cambiar el nombre del archivo del menú Proyecto.

Cambiar nombre
Muestra el nombre del archivo seleccionado actualmente.
Para
Muestra el nombre de archivo actual, que se puede reemplazar al escribir un nombre nuevo en el cuadro.
Nota Tenga cuidado al cambiar el nombre de un archivo. Si cambia el nombre de una tabla a la que se hace referencia en la propiedad DataEnvironment de un formulario, ese formulario no podrá buscar la tabla. Si cambia el nombre de una clase que se ha agregado a un formulario, el formulario no podrá encontrar la clase.

Vea también

Administrador de proyectos | Cuadro de diálogo Descripción | Cuadro de diálogo Nuevo archivo | RENAME (Comando) | DataEnvironment (Propiedad) | RENAME TABLE (Comando)


Cuadro de diálogo Reemplazar

Este cuadro de diálogo permite buscar y reemplazar el texto especificado en el archivo actual. Para reemplazar en tablas, elija Reemplazar campo en el menú Tabla. El método abreviado de teclado para acceder a este cuadro de diálogo es CTRL+L.

Buscar
Especifica la cadena de texto que desea buscar.
Reemplazar con
Especifica el texto de sustitución.
Opciones
Define los límites y la dirección de la búsqueda y la sustitución. Si especifica texto para buscar y no obtiene los resultados esperados, asegúrese de tener estas opciones correctamente seleccionadas:
  • Coincidir MAY/min Reemplaza el texto que coincide exactamente con la combinación de letras mayúsculas y minúsculas que escriba en el cuadro Buscar.
  • Búsqueda continua Busca en el archivo actual, desde el punto de inserción hasta el final del archivo y después desde el principio del archivo hasta el punto de inserción original.
  • Sólo palabras completas Reemplaza distintas apariciones de palabras, excepto para texto incrustado.
  • Búsqueda hacia atrás Busca desde el punto de inserción actual hacia el principio del archivo.
  • Usar caracteres comodín Le permite utilizar carácteres comodín en el texto de búsqueda.
Alcance
Define la extensión de la búsqueda. Las opciones de Alcance se activan cuando modifica un procedimiento en una ventana Código.
  • Procedimiento actual Busca sólo en el procedimiento actual, que se muestra en la ventana Código.
  • Objeto actual Busca en todos los procedimientos (código de eventos) del objeto actual (seleccionado).
  • Todos los objetos Busca en todos los procedimientos (código de eventos) de todos los objetos del formulario o conjunto de formularios actual.
Buscar siguiente
Busca la siguiente aparición de la cadena que escribió en el cuadro Buscar. Este botón no se activa hasta que escriba texto en el cuadro Buscar.
Reemplazar
Cambia el texto seleccionado por el texto del cuadro Reemplazar con. Si desea dejar el texto seleccionado sin cambiar y pasar a la siguiente aparición, haga clic en Buscar siguiente.
Reemplazar todos
Busca y reemplaza todas las instancias del texto del cuadro Buscar con por el texto del cuadro Reemplazar con. Puede deshacer las sustituciones si elige el comando Deshacer.

Vea también

Cuadro de diálogo Buscar | Cuadro de diálogo Ir a la línea | Cuadro de diálogo Reemplazar campo | Ventana Código | Cuadro de diálogo Insertar objeto


Cuadro de diálogo Reemplazar campo

Cambia los valores almacenados en un registro o intervalo de registros.

Campo
Muestra el nombre de los campos de la tabla actual. Al hacer clic en la flecha abajo, aparecen los tipos y tamaños de los campos.
WITH
Especifica una expresión que describe los valores de sustitución. Escriba la expresión o elija el botón de cuadro de diálogo para mostrar el cuadro de diálogo Generador de expresiones y crear una expresión de sustitución.

Criterios de sustitución

Alcance
Permite especificar los registros sobre los cuales Visual Foxpro va a actuar. Elija Siguiente, Todos, Registro o Resto en la lista desplegable. Elija un número en el control numérico de la derecha al seleccionar Siguiente o Registro en la lista desplegable Alcance.
FOR
Muestra el cuadro de diálogo Generador de expresiones, en el que crea la expresión lógica que cada registro debe cumplir para que le afecte el comando. Cada registro de la tabla se comprueba mediante la expresión FOR.
WHILE
Muestra el cuadro de diálogo Generador de expresiones. La expresión WHILE especifica que la acción afecta a los registros sólo mientras la expresión lógica sea verdadera. La primera vez que la expresión dé como resultado falso, se detiene la acción sin evaluar los registros restantes.
Reemplazar
Reemplaza los registros mediante los valores de Alcance, FOR y WHILE. Sólo está disponible cuando tiene un nombre de campo o una expresión en los cuadros de texto Campo y WITH.

Vea también

Cuadro de diálogo Generador de expresiones | REPLACE (Comando) | Cuadro de diálogo Alcance | Cuadro de diálogo Desmarcar registros | Cuadro de diálogo Eliminar registros


Cuadro de diálogo Opciones de impresión de informes y etiquetas

Este cuadro de diálogo aparece cuando hace clic en Opciones en el cuadro de diálogo Opciones de impresión.

Alcance
Le permite especificar cuanto desea imprimir. Elija Todo, Siguiente, Registro o Resto en la lista desplegable. Elija un número en el control numérico de la derecha al seleccionar Siguiente o Registro en la lista desplegable Alcance.
FOR
Muestra el cuadro de diálogo Generador de expresiones, en el que puede crear una expresión lógica que cada registro debe cumplir para poder imprimirse.
WHILE
Muestra el cuadro de diálogo Generador de expresiones, en el que puede crear una expresión lógica que tiene que ser verdadera para que se impriman los registros.

Vea también

Cuadro de diálogo Generador de expresiones | Cuadro de diálogo Imprimir | Cuadro de diálogo Alcance | Imprimir los resultados de una consulta en un informe o una etiqueta | Cuadro de diálogo Imprimir archivo | Cuadro de diálogo Configurar impresión | Cuadro de diálogo Opciones de impresión | Preparar el diseño de informe


Cuadros de diálogo Bandas del Diseñador de informes

El Diseñador de informes utiliza bandas predeterminadas y opcionales de información para generar un informe. Al abrir el Diseñador de informes, se muestran de forma predeterminada las bandas Encabezado de página, Detalle y Pie de página. Puede obtener acceso a otras bandas por medio de las opciones Título y resumen y Agrupar datos del menú Informe. Para obtener más información acerca de las opciones de banda, vea los siguientes temas de la Ayuda.

Cuadro de diálogo Pie de columna
Cuadro de diálogo Encabezado de columna
Cuadro de diálogo Detalle
Cuadro de diálogo Pie de grupo
Cuadro de diálogo Encabezado de grupo
Cuadro de diálogo Pie de página
Cuadro de diálogo Encabezado de página
Cuadro de diálogo Resumen
Cuadro de diálogo Título

Vea también

Cuadro de diálogo Formato (Campo) | Cuadro de diálogo Calcular campo | Diseñador de informes | Cuadro de diálogo Expresión de informe


Cuadro de diálogo Informes

Muestra el resultado de la consulta en el diseño del informe. Debe haber configurado previamente un archivo de informe (.frx) que contenga los campos a mostrar en la consulta. Este comando está disponible sólo para consultas.

Abrir informe
Muestra el cuadro de diálogo Abrir para que se seleccione el archivo de informe que se utilizará para la consulta. Puede hacer clic en el botón o escribir un nombre de archivo en el cuadro de texto.
Icono asistente
Muestra el cuadro de diálogo Selección del Asistente, desde el cual se puede elegir que asistente de informe ejecutar.
Vista preliminar
Muestra los resultados en la ventana Vista preliminar.
Activar consola
Muestra los resultados en la ventana activa.
Salto de página antes del informe
Imprime una página en blanco al principio del informe para separar los documentos a imprimir.

Salida secundaria

Ninguna
Indica que los resultados no serán enviados a la impresora o guardados como un archivo de texto.
A impresora
Envia los resultados de la consulta a la impresora.
A un archivo de texto
Guarda los resultados de la consulta como archivo de texto. Haga clic en el botón para seleccionar un archivo ya existente en el cual se desea sobreescribir, o escriba el nombre de un nuevo archivo en el cuadro de texto.

Opciones

Suprimir cabeceras de columnas
Mantiene las cabeceras de la columna que se ven en la cabecera de los resultados.
Solamente información de resumen
Elimina la impresión de líneas de detalle. El informe incluirá las cabeceras de página y pies de página, totalizadores y demás, pero excluirá las líneas de detalle.

Vea también

Ficha Varios, Diseñadores de consultas y vistas | REPORT (Comando) | Cuadro de diálogo Selección de los asistentes | Cuadro de diálogo Abrir | Preparar el diseño de informe


Cuadro de diálogo Expresión de informe

Define el contenido de un control de campo en un informe. Este cuadro de diálogo aparece cuando coloca un control de campo en un informe o etiqueta.

Expresión
Muestra la expresión actualmente seleccionada como un campo de tabla o una variable, o le permite escribir una expresión nueva. Elija el botón de cuadro de diálogo para mostrar el cuadro de diálogo Generador de expresiones si desea crear una expresión y comprobarla antes de continuar.
Formato
Cuando una expresión válida se muestra en el cuadro Expresión, puede especificar un formato en este cuadro de texto. Elija el botón de cuadro de diálogo para mostrar el cuadro de diálogo Formato (Campo) si desea especificar el formato para el campo en su informe.
Posición del campo
Especifica la posición del campo en el informe.
  • Flotante Especifica que el campo seleccionado se mueve n dependencia del tamaño de los campos que lo rodean.
  • Borde superior de la banda Hace que el campo se mantenga en la posición que se le ha dado en el Diseñador de informes o etiquetas y la mantenga en relación con el borde superior de la banda.
  • Borde inferior de la banda Hace que el campo se mantenga en la posición que se le ha dado en el Diseñador de informes o etiquetas y la mantenga en relación con el borde inferior de la banda.
Ajustar al contenido del texto
Especifica que el campo se expande hacia abajo en la página del informe para mostrar todo el dato del campo o la expresión.
Comentarios
Permite agregar observaciones al archivo de informe .frx o etiqueta .lbx. Los observaciones son sólo como referencia, no aparecen en ningún lugar del informe o etiqueta impresas.
Cálculos
Muestra el cuadro de diálogo Calcular campo, en el que puede seleccionar una expresión para crear un campo calculado.
Nota Los comandos SUM y COUNT no funcionan en expresiones de informe.
Imprimir-Condiciones
Muestra el cuadro de diálogo Imprimir-Condiciones, en el que puede especificar las condiciones que se deben cumplir antes de que se imprima el texto en el informe o la etiqueta.

Vea también

Cuadro de diálogo Calcular campo | Cuadro de diálogo Generador de expresiones | Cuadro de diálogo Formato (Campo) | Cuadro de diálogo Imprimir-Condiciones | Diseñador de informes | Cuadro de diálogo Informe rápido | Crear informes y etiquetas


Cuadro de diálogo Imagen para informe

Le permite incluir mapas de bits, iconos u otra información de un campo de tabla General en el informe o etiqueta. Este cuadro de diálogo aparece cuando elige el botón Imagen o Control OLE dependiente en la barra de herramientas Controles de informes y coloca el control en un informe o etiqueta.

Origen de la imagen

Archivo
Especifica el nombre de archivo del mapa de bits o icono. Escriba la ruta de acceso y el nombre de archivo en el cuadro, o elija el botón de cuadro de diálogo para abrir el cuadro de diálogo Abrir de forma que pueda seleccionar el archivo de mapa de bits o icono deseado.
Campo
Especifica un campo General para incluirlo en el informe o etiqueta. Elija el botón de cuadro de diálogo para abrir el cuadro de diálogo Elegir campo o variable de forma que pueda seleccionar el campo deseado o escribir el nombre del campo en el cuadro de texto.

Si un campo General de la tabla contiene un objeto que no sea una imagen o un gráfico (por ejemplo, una hoja de cálculo de Microsoft Excel o un documento de Microsoft Word), se imprime un icono que representa el objeto en el informe o la etiqueta.

Si la imagen y el marco tienen tamaños diferentes

Recortar imagen
Muestra una sección de la imagen original en el marco, pero conserva las dimensiones originales de la imagen si es mayor que el marco creado en el Diseñador de informes o el Diseñador de etiquetas. La imagen se acopla en la parte superior izquierda del marco. No puede ver la parte inferior derecha de la imagen que se extiende fuera del marco.
Cambiar la escala de la imagen, conservar la forma
Muestra toda la imagen, llenando la mayor parte posible del marco y conservando las proporciones relativas de la imagen. Esto protegerá la imagen de distorsión vertical u horizontal.
Cambiar la escala de la imagen, rellenar el marco
Muestra toda la imagen, rellenando completamente el marco. Si es necesario, la imagen se distorsionará vertical u horizontalmente para ajustarse al marco.

Posición del objeto

Flotante
Especifica que la imagen seleccionada se mueve con respecto al tamaño de los campos que la rodean.
Borde superior de la banda
Hace que la imagen permanezca en la posición que le ha asignado en el Diseñador de informes o el Diseñador de etiquetas, y lo mantiene en esa posición relativa al principio de la banda.
Borde superior de la banda
Hace que la imagen permanezca en la posición que le ha asignado en el Diseñador de informes o el Diseñador de etiquetas, y lo mantiene en esa posición relativa al final de la banda.
Centrar imagen
Asegura que las imágenes de campo General más pequeñas que el marco se centran en el marco del informe o la etiqueta. Las imágenes incluidas en un campo General pueden tener una gran variedad de formas y tamaños. Si la imagen de un campo General es más pequeña que el marco, se mostrará en la parte superior izquierda del marco a no ser que seleccione Centrar imagen.
Nota Si incluye un archivo de mapa de bits o icono en el informe o etiqueta, Centrar imagen no afectará a la imagen única. Como la imagen única tiene parámetros conocidos, nunca será más pequeña que el marco.
Imprimir-Condiciones
Muestra el cuadro de diálogo Imprimir-Condiciones de forma que pueda controlar exactamente cuándo se imprime la imagen en el informe o etiqueta.
Comentarios
Le permite agregar observaciones. Los observaciones sirven exclusivamente como referencia y no aparecen por ningún sitio en el informe o la etiqueta que se imprime.

Vea también

Cuadro de diálogo Elegir campo o variable | Picture (Propiedad) | Cuadro de diálogo Imprimir-Condiciones | Cuadro de diálogo Rectángulo redondeado | Cuadro de diálogo Rectángulo/Línea | Tipo de campo General


Cuadro de diálogo Variables del informe

Le permite crear variables de memoria en un informe. Visual FoxPro utiliza variables para almacenar los resultados de cálculos realizados mientras se está imprimiendo el informe. Utilice este comando para agregar una nueva variable, cambiar o eliminar variables existentes, o cambiar el orden en que se evalúan las variables.

Variables
Muestra las variables del informe actual y proporciona espacio para nuevas variables.
Almacenar valor
Muestra las expresiones almacenadas en la variable actual o le permite escribir una expresión en el cuadro de texto. Para crear una expresión que se almacenará en la variable, elija el botón de cuadro de diálogo para mostrar el cuadro de diálogo Generador de expresiones.
Valor Inicial
Muestra el valor de la variable seleccionada antes de que se realice ningún cálculo, y el valor al que se restablece la variable. Puede escribir un valor en el cuadro de texto o si desea crear una expresión para el valor inicial, elija el botón de cuadro de diálogo para mostrar el cuadro de diálogo Generador de expresiones.
Liberar tras informe
Libera la variable del informe de la memoria tras imprimir el informe. Si no se selecciona esta opción, la variable permanece disponible en la memoria hasta que salga de Visual FoxPro o libere la variable con los comandos CLEAR ALL o CLEAR MEMORY.
Restablecer
Le permite especificar el punto en el cual la variable se restablece a su valor inicial. De forma predeterminada, Fin del informe se muestra en el cuadro de lista. También puede seleccionar Fin de página o Fin de columna. Si ha especificado grupos en un informe en el cuadro de diálogo Agrupar datos, el cuadro Restablecer muestra un elemento para cada grupo del informe.
Insertar
Inserta un cuadro de texto en blanco en el cuadro Variables, en el que puede escribir el nombre nuevo de una variable.
Eliminar
Elimina el nombre de variable seleccionado del cuadro Variables.

Calcular

Estas opciones le permiten especificar un cálculo que la variable realiza. La variable comienza el cálculo con su valor inicial y continúa hasta que se restablece a su valor inicial.

Nada
Especifica que no se harán cálculos sobre esta variable.
Recuento
Cuenta el número de veces que la variable se imprime por grupo, página, columna o informe (según su selección en el cuadro Restablecer). El cálculo se basa en el número de veces que aparece la variable, no en su valor.
Suma
Calcula la suma aditiva de los valores de la variable. La suma conserva el total de los valores de la variable durante una ejecución para un grupo, página, columna o informe (según su selección en el cuadro Restablecer).
Promedio
Calcula la media aritmética (promedio) de los valores de la variable para un grupo, página, columna o informe (según su selección en el cuadro Restablecer).
Mínimo
Muestra el valor más bajo de la variable que apareció en un grupo, página, columna o informe (según su selección en el cuadro Restablecer). Coloca en la variable el valor del primer registro del grupo. Cuando se encuentra un valor más bajo, la variable cambia a ese valor.
Máximo
Muestra el valor más alto de la variable que apareció en un grupo, página, columna o informe (según su selección en el cuadro Restablecer). Coloca en la variable el valor del primer registro del grupo. Cuando se encuentra un valor más alto, la variable cambia a ese valor.
Desviación estándar
Devuelve la raíz cuadrada de la varianza para los valores de la variable en un grupo, página, columna o informe (según su selección en el cuadro Restablecer).
Varianza
Mide el grado en que varían los valores de campos individuales respecto de la media de todos los valores para el grupo, página, columna o informe (según su selección en el cuadro Restablecer).

Vea también

CLEAR (Comandos) | Cuadro de diálogo Agrupar datos | Cuadro de diálogo Generador de expresiones | Cuadro de diálogo Informe rápido | Definir variables de informe | Acceso a variables y campos de Visual FoxPro | Variables


Cuadro de diálogo Rectángulo redondeado

Especifica la forma, la posición y las opciones de impresión para controles de tipo rectángulo redondeado. Este cuadro de diálogo aparece cuando dibuja un rectángulo redondeado en un informe o etiqueta y, a continuación, hace doble clic en él mientras está seleccionado.

Estilo
Especifica el estilo del rectángulo redondeado.

Posición del objeto

Flotante
Especifica que el control de rectángulo redondeado se mueve con relación al tamaño de los campos que lo rodean.
Borde superior de la banda
Hace que el rectángulo redondeado permanezca en la posición que le ha asignado en el Diseñador de informes o el Diseñador de etiquetas, y lo mantiene en esa posición relativa al principio de la banda.
Borde inferior de la banda
Hace que el rectángulo redondeado permanezca en la posición que le ha asignado en el Diseñador de informes o el Diseñador de etiquetas, y lo mantiene en esa posición relativa al final de la banda.

Alargar hacia abajo

No alargar
Especifica que el rectángulo redondeado no se alargue verticalmente cuando la banda se alargue para mostrar los datos del campo.
Alargar con relación al objeto más alto del grupo
Especifica que el rectángulo redondeado se alargue para ajustarse al objeto más alto del grupo.
Alargar con relación al alto de la banda
Especifica que el rectángulo redondeado se alargue para encajar en la banda.
Imprimir-Condiciones
Muestra el cuadro de diálogo Imprimir-Condiciones con el que puede controlar exactamente cuándo se imprime el rectángulo redondeado en el informe o etiqueta.
Comentarios
Le permite agregar observaciones al archivo .frx o .lbx. Los observaciones sirven sólo como referencia y no aparecen por ningún sitio en el informe o la etiqueta que se imprime.

Vea también

Cuadro de diálogo Imprimir-Condiciones | Agregar líneas, rectángulos y círculos | Cuadro de diálogo Imagen para informe | Establecer opciones de impresión para controles


Cuadro de diálogo Guardar como clase

Le permite guardar un formulario, o los controles seleccionados de un formulario, como una definición de clase. Cree una clase si desea crear subclases basadas en el formulario o reutilizar los controles de otros formularios.

Este cuadro de diálogo aparece cuando selecciona Guardar como clase en el menú Archivo.

Guardar
Especifica la parte del formulario que se va a guardar como una definición de clase.
  • Controles seleccionados Guarda sólo los controles seleccionados como una definición de clase.
  • Formulario actual Guarda el formulario activo como una definición de clase.
  • Todo el conjunto de formularios Guarda una colección de formularios relacionados como una definición de clase. Este comando está disponible tras usar el comando Crear conjunto de formularios del menú Formulario.
  • DataEnvironment Guarda el entorno de datos del formulario y cualquier cursor o CursorAdapter contenido en el archivo de biblioteca de clase visual (.vcx) especificado.
Como clase
Especifica la definición de clase en que se guardarán los controles seleccionados, el formulario completo o el conjunto de formularios.
  • Nombre Especifica el nombre asignado a la clase.
  • Archivo Especifica el nombre del archivo .vcx en el que se almacenará la definición de clase.
  • Descripción Especifica la descripción opcional de la clase.

Vea también

Cuadro de diálogo Guardar como | Cuadro de diálogo Importar | Diseñador de clases | Clases de Visual FoxPro | Manipulación de clases y objetos | Guardar formularios


Cuadro de diálogo Guardar como

Guarda un archivo nuevo o guarda un archivo existente con un nombre distinto. Corresponde a la función PUTFILE( ).

El comando Guardar como está disponible para los siguientes tipos de archivo:

  • Proyecto
  • Consulta
  • Conexión (vea la nota a continuación)
  • Vista (vea la nota a continuación)
  • Formulario
  • Informe
  • Etiqueta
  • Programa
  • Archivo de texto
  • Menú
    Nota Cuando elige Guardar o Guardar como para una conexión o vista, aparece el cuadro de diálogo Guardar.

Este cuadro de diálogo aparece cuando selecciona Guardar como en el menú Archivo.

Página de códigos
Esta opción está disponible si guarda un archivo de texto o una tabla que no tiene página de códigos. Muestra el cuadro de diálogo Página de códigos para que pueda adjuntar la página de códigos correcta. Si el archivo de texto existente usa el juego de caracteres extendido, elija Página de códigos y haga las selecciones adecuadas.

Vea también

Cuadro de diálogo Página de códigos | Cuadro de diálogo Guardar como clase | Cuadro de diálogo Página de códigos | PUTFILE( ) (Función) | Cuadro de diálogo Guardar como HTML


Cuadro de diálogo Guardar como HTML

Le permite crear una nueva versión HTML (Lenguaje de marcado de hipertexto) del formulario, menú, informe o tabla actual. Está disponible en el Diseñador de formularios, el Diseñador de menús y el Diseñador de informes cuando se ha guardado el formulario, menú o informe activo, o en una ventana Examinar.

Guardar archivo para utilizarlo más tarde
Guarda el archivo en disco como un archivo .htm.
Guardar y modificar archivo
Guarda el archivo en disco como un archivo .htm y abre el archivo en una ventana de edición.
Guardar archivo y ver en el explorador Web
Guarda el archivo como un archivo .htm y lo muestra en su explorador Web.

Vea también

_GENHTML (Variable del sistema) | Cuadro de diálogo Guardar como clase | Cuadro de diálogo Guardar como | Cuadro de diálogo Imprimir archivo | Cuadro de diálogo Elemento HTML | Guardar un formulario como HTML | Guardar un menú como HTML | Guardar un informe como HTML | Guardar una tabla como HTML | Diseñador de formularios | Diseñador de informes | Ventana Examinar


Cuadro de diálogo Alcance

Especifica sobre qué registros de la tabla o vista actual actúa Visual FoxPro. Este cuadro de diálogo aparece cuando elige Alcance en el cuadro de diálogo Opciones de exportación.

Todos
La acción afecta a todos los registros de la tabla o vista.
Siguiente
La acción afecta a un intervalo de registros que comienza en el registro actual y continúa durante un número de registros que usted especifica. Escriba el valor 1 para actuar sobre el registro actual.
Registro
La acción afecta sólo al registro cuyo número se especifica.
Resto
La acción afecta a un intervalo de registros que comienza en el registro actual y acaba en el ultimo registro de la tabla o vista.

Vea también

Ventana Examinar | Cuadro de diálogo Opciones de exportación | Filtrar datos | Manipulación de registros | Cuadro de diálogo Anexar desde | Cuadro de diálogo Eliminar registros


Cuadro de diálogo Seleccionar conexión u origen de datos

Permite seleccionar un origen de datos o una conexión existente a un origen de datos para crear una nueva vista remota. También puede tener acceso al Diseñador de conexiones para crear una nueva conexión.

Aparece cuando selecciona Vista remota en el cuadro de diálogo Nuevo y, a continuación, elige Nuevo archivo.

Conexiones en la base de datos/Orígenes de datos disponibles
Muestra los orígenes de datos ODBC disponibles o las conexiones existentes, según la opción que haya seleccionado en el grupo de opciones Seleccionar. Seleccione el origen de datos o la conexión que desee y elija Aceptar.

Seleccionar

Conexiones
Muestra las conexiones existentes para que elija en la base de datos activa.
Orígenes de datos disponibles
Muestra los orígenes de datos ODBC disponibles para la creación de vistas remotas.
Nuevo
Muestra el Diseñador de conexiones, en el que puede crear y guardar una conexión a un origen de datos.

Vea también

Cuadro de diálogo Crear | Cuadro de diálogo Nueva etiqueta | Diseñador de conexiones | CREATE CONNECTION (Comando) | Visual FoxPro como origen de datos | Cuadro de diálogo Nuevo


Cuadro de diálogo Seleccionar

Hace posible seleccionar un servicio Web XML e insertar código para él en un programa o ventana de edición de código.

Este cuadro de diálogo aparece cuando escribe las letras ws, seguidas de presionar la Barra Espaciadora en la ventana de edición de un programa.

Seleccione un servicio Web XML
Especifica el servicio Web XML para el cual generar el código proxy.
Uso la clase Custom
Especifica si incluir el código que usa el WSHandler (Foundation Class) para envolver las llamadas del cliente de Protocolo de Acceso Simple a Objetos (SOAP). Por otra parte, el código es generado para llamar directamente al cliente SOAP Toolkit 3.0 COM.
Incluir manejo de Errores
Especifica si incluye la estructura del manejo de errores usando el código TRY...CATCH...FINALLY en torno a las llamadas del cliente SOAP. Para más información, vea Comando TRY...CATCH...FINALLY.
Nuevo
Abre el Cuadro de Dialogo de Registro de los Servicios Web XML de Visual FoxPro para que pueda registrar un nuevo servicio Web XML. Para más información, vea Servicio Web XML - Cuadro de diálogo Registrar

Vea También

Cuadros de diálogo | Accediendo a servicios Web XML


Cuadro de diálogo Configurar cuadrícula

Le permite definir incrementos horizontales y verticales de la cuadrícula en píxeles, y (para informes y etiquetas) especifica si la regla se muestra en unidades del sistema o en píxeles.

Este comando está disponible cuando trabaja con un informe, una etiqueta, una formulario o una clase.

Puede establecer los valores predeterminados para el Diseñador de formularios en la ficha Formularios del cuadro de diálogo Opciones.

Cuadrícula (en píxeles)

Horizontal
Especifica el número de píxeles por pulgada horizontalmente. El intervalo va de 1 a 48 píxeles. Utilice el control numérico o escriba un número en el cuadro de edición.
Vertical
Especifica el número de píxeles por pulgada verticalmente. El intervalo va de 1 a 48 píxeles. Utilice el control numérico o escriba un número en el cuadro de edición.

Escala de la regla

Configuración predeterminada del sistema
Especifica las pulgadas o centímetros como la unidad de medida que se muestra en la regla, según la configuración regional. Esta opción solo aparece para informes y etiquetas.
Píxeles
Especifica los píxeles como unidad de medida que se muestra en la regla. Esta opción solo aparece para informes y etiquetas.

Vea también

Diseñador de formularios | Ficha Formularios, cuadro de diálogo Opciones | Agregar, copiar y eliminar controles de informes | Crear informes y etiquetas | Generador de cuadrículas


Cuadro de diálogo Establecer orden de índice

Fija el orden de índice para una tabla secundaria. Este cuadro de diálogo aparece cuando se fija la tabla primaria de una relación en la ventana Sesión de datos y después se hace clic en una tabla secundaria de la lista Alias de la ventana Sesión de datos, si la tabla secundaria no tiene fijado aún ningún orden de índice.

Lista Establecer orden de índice
Muestra los órdenes de índice predefinidos que existen para la tabla secundaria seleccionada.
Botón Sin ordenar
Abre el cuadro de diálogo Generador de expresiones, donde puede establecer su propia relación para la tabla secundaria. También puede hacer doble clic en un índice de tabla mostrado en el cuadro de diálogo para abrir el cuadro de diálogo Generador de expresiones.

Vea también

SET INDEX (Comando) | Ventana Sesión de datos | Cuadro de diálogo Generador de expresiones | Ficha Indices, Diseñador de tablas | Cuadro de diálogo Crear relaciones uno a varios


Cuadro de diálogo Ortografía

Le permite comprobar la ortografía de un archivo de texto o de un campo memo.

No está en el diccionario
Muestra una palabra que no se encuentra en los diccionarios activos. Si su texto tiene espacio de columnas o sangrías, este cuadro cambia a Espacio adicional.
Nota Si no desea que Visual FoxPro cuente los espacios adicionales, cambie la configuración en el cuadro de diálogo Opciones de ortografía.
Cambiar por/Sugerencias
Escriba o seleccione un reemplazo para la palabra que no se encuentra en los diccionarios. Para borrar la palabra del cuadro No está en el diccionario del documento, elimine el texto del cuadro Cambiar por y elija Cambiar todo.
Ignorar
Deja la palabra especificada sin cambios en la instancia especificada.
Pasar por alto todo
Deja la palabra especificada sin cambios en todo el documento.
Cambiar
Cambia la palabra especificada por la palabra del cuadro Cambiar por.
Cambiar todo
Cambia la palabra especificada en todo el documento por la palabra del cuadro Cambiar por.
Agregar
Agrega la palabra especificada al diccionario.
Deshacer último
Invierte el último reemplazo hecho en el documento. Puede invertir hasta los últimos cinco reemplazos.
Sugerir
Presenta una lista de sugerencias propuestas después de que escriba una palabra en el cuadro Cambiar por.
Opciones
Presenta el cuadro de diálogo Opciones de ortografía, en el cual puede controlar las reglas que Visual FoxPro utiliza para corregir la ortografía.

Vea también

Cuadro de diálogo Opciones de ortografía | Cuadro de diálogo Macros | Cuadro de diálogo Opciones de presentación


Cuadro de diálogo Opciones de ortografía

Controla las reglas que Visual FoxPro utiliza para corregir la ortografía. Este cuadro de diálogo aparece cuando elige Opciones en el cuadro de diálogo Ortografía.

Sugerir siempre
Presenta una lista de correcciones sugeridas para cada palabra que no coincida cuando corrija la ortografía.
Pasar por alto las palabras en MAYÚSCULAS
Se salta las palabras en las que todos los caracteres son letras mayúsculas.
Pasar por alto los espacios sobrantes
Pasa por alto los espacios adicionales entre palabras.

Diccionario

Idioma
Especifica el idioma del diccionario activo.
Tipo
Especifica el diccionario: Normal, Conciso, Completo, Médico o Legal.

Vea también

Cuadro de diálogo Ortografía | Cuadro de diálogo Macros | _SPELLCHK (Variable del sistema) | Cuadro de diálogo Opciones de presentación | Ventana Depurador


Cuadro de diálogo Resumen

Establece el alto y otras opciones de la banda Resumen en un informe o etiqueta. Este cuadro de diálogo aparece cuando hace doble clic en la barra de separación de la banda Resumen en el Diseñador de informes. Para ver la banda Resumen, debe seleccionar Banda Resumen en el cuadro de diálogo Título y resumen.

Alto
Especifica el alto de la banda. El intervalo es desde 0,2083 hasta 20,00 pulgadas. Escriba un valor en el cuadro, haga clic en FLECHA ARRIBA o FLECHA ABAJO para cambiar el valor mostrado en incrementos de 0,05 o arrastre la barra de separación de la banda con el ratón.
Banda de alto constante
Impide que la banda se alargue para ajustarse a la longitud de los datos o se encoja para absorber las líneas en blanco que se hayan quitado. Esta opción no se puede desactivar en el cuadro de diálogo Resumen.

Ejecutar expresión

Al entrar
Especifica que se evalúe una expresión antes de imprimir cada encabezado de grupo nuevo. Escriba la expresión en el cuadro o elija el botón de cuadro de diálogo para mostrar el cuadro de diálogo Generador de expresiones.
Al salir
Especifica que se evalúe una expresión después de imprimir cada página nueva. Escriba la expresión en el cuadro o elija el botón de cuadro de diálogo para mostrar el cuadro de diálogo Generador de expresiones.

Vea también

Cuadro de diálogo Generador de expresiones | Diseñador de etiquetas | Diseñador de informes | Cuadro de diálogo Título y resumen | Cuadro de diálogo Bandas del diseñador de informes | Modificar diseños | Preparar el diseño de informe | Refinar el diseño de página


Cuadro de diálogo Orden de tabulación

Ajusta el orden que se sigue para tener acceso a los objetos del formulario mediante el teclado. Este cuadro de diálogo aparece cuando elige Orden de tabulación en el menú Ver y ha seleccionado la opción Por lista para Orden de tabulación en la ficha Formularios, cuadro de diálogo Opciones.

Lista de objetos
Muestra todos los objetos, excepto los objetos gráficos o de texto, del formulario o la clase. Los objetos se muestran en el orden actual de acceso mediante el teclado. Para cambiar el orden, haga clic en el botón situado a la izquierda de la imagen del objeto y arrastre el objeto a la posición de la lista que corresponde a su lugar en el orden de acceso deseado.
Por filas
Ajusta el orden de los objetos de forma que se tenga acceso a ellos por filas, de izquierda a derecha del formulario, desde la parte superior.
Por columnas
Ajusta el orden de los objetos de forma que se tenga acceso a los objetos por columnas, de arriba a abajo del formulario, desde el lado izquierdo.

Para obtener más información, vea Establecer el orden de tabulación para controles.

Vea también

Ficha Formularios, cuadro de diálogo Opciones | TabIndex (Propiedad) | Cuadro de diálogo Opciones generales | Cuadro de diálogo Opciones de menú | Cuadro de diálogo Definir diseño de ventana


Cuadro de diálogo Opciones del panel de tareas

El cuadro de diálogo Opciones del Panel de tareas permite personalizar el Administrador del Panel de tareas y los paneles personales que contiene. Adicionalmente, se pueden añadir nuevos paneles al Administrador del Panel de tareas y acceder al cuadro de diálogo Personalización del Panel para crear sus propios paneles.

Mover hacia arriba
Mueve hacia arriba el elemento seleccionado en el árbol.
Mover hacia abajo
Mueve hacia abajo el elemento seleccionado en el árbol.
Arbol
Muestra las diferentes áreas del Administrador del Panel de tareas en las que se pueden ajustar las opciones. Cuando selecciona un elemento en el árbol, se expande el nodo para mostrar categorías adicionales para el elemento seleccionado; también muestra las opciones apropiadas para el elemento seleccionado en la parte derecha del cuadro de diálogo. Adicionalmente, el orden de aparición del panel en el árbol es el orden en el cual son mostrados en la parte de arriba del Administrador del Panel de tareas.
Ayuda
Abre el archivo de ayuda de Visual FoxPro.

Administrador del Panel de tareas General

Muestra las opciones que pueden ser ajustadas por el Administrador del Panel de tareas.

Panel
Especifica el panel inicial que será mostrado cuando el Administrador del Panel de tareas es abierto.
Chequear nuevos contenidos en Internet
Selecciona cada cuánto tiempo, chequea nuevos contenidos para los paneles basados en Web. Esta opción es la opción predeterminada en los paneles basados en Web; no obstante, dependiendo del panel están disponibles diferentes ajustes.
Abrir el Panel de tareas cuando Visual FoxPro comienza
Especifica si el Administrador del Panel de tareas se abre automáticamente cuando Visual FoxPro comienza.

Administrador del Panel de tareas, Personalizado

Muestra las opciones para paneles personalizado y para el manejo del Administrador del Panel de tareas.

Instalar un panel
Muestra un cuadro de diálogo para seleccionar un panel de Microsoft o terceras partes y añadirlo al Administrador del Panel de tareas.
Panel personalizado
Muestra el cuadro de diálogo Personalización de panel, el cual permite visualizar, personalizar y crear sus propios paneles.
Limpiar Tablas
Elimina registros borrados de las tablas del Administrador del Panel de tareas y limpia el directorio caché del Administrador del Panel de tareas.
Restaura valores predeterminados
Restaura el Administrador del Panel de tareas a los valores y paneles predeterminados.
Carpeta de Tablas de contenido del Administrador del Panel de tareas
Especifica la carpeta en la cual el Administrador del Panel de tareas accede a sus tablas.
Carpeta para archivos en caché.
Especifica la carpeta en la cual Administrador del Panel de tareas almacena sus archivos en caché.

Comienzo, General

Muestra las opciones que puede ser ajustadas por el panel Comienzo.

Comienzo
Especifica si la sección Comienzo del panel Comienzo es mostrada.
Mis herramientas
Especifica si la sección Mis Herramientas de el panel Comienzo es mostrada.
Proyectos recientes
Especifica si los Proyectos recientemente usados son mostrados en el panel Comienzo.
Bases de datos recientes
Especifica si las últimas bases de datos usadas son mostradas en el panel Comienzo.
Chequear nuevos contenidos en Internet
Selecciona cada cuanto tiempo chequear contenidos basados en Internet.

Comunidades, General

Muestra las opciones que pueden ser ajustadas por el panel Comunidades.

FoxCentral News
Especifica si las news del portal FoxCentral son mostrados en el panel Comunidades.
Universal Thread News
Especifica si el contenido del portal Universal Thread es mostrado en el panel Comunidades.
Wiki
Especifica si el contenido del portal Visual Foxpro Wiki es mostrado en el panel Comunidades.
Buscar nuevos contenidos en Internet
Selecciona cada cuánto tiempo buscar nuevos contenidos basados en Internet.

Comunidad, FoxCentral News

Muestra las opciones que pueden ser ajustadas para mostrar las noticias del portal FoxCentral.

Número de días hacia atrás para buscar noticias
Especifica cuántos días de noticias atrasadas, del portal FoxCentral, deben ser mostradas en el panel Comunidades.

Comunidad, Universal Thread News

Muestra opciones que pueden ser ajustadas para mostrar contenidos del portal Universal Thread.

Usuario
Especifica el nombre de usuario que el panel de Comunidades debe usar cuando descarga contenidos del portal Universal Thread.
Contraseña
Especifica la contraseña que el panel de Comunidades debe usar cuando descarga contenidos del portal Universal Thread.
Número de días hacia atrás para buscar noticias
Especifica cuántos días de contenidos atrasados, del portal Universal Thread, deben ser mostradas en el panel Comunidades.
Noticias
Especifica si el panel de Comunidades debe mostrar las noticias del portal Universal Thread.
Artículos
Especifica si el panel de Comunidades debe mostrar los artículos del portal Universal Thread.
Descargas
Especifica si el panel de Comunidades debe mostrar las descargas del portal Universal Thread.
Formación
Especifica si el panel de Comunidades debe mostrar los cursos de formación del portal Universal Thread.

Comunidad, Wiki

Muestra las opciones para mostrar contenidos del portal Visual FoxPro Wiki.

Número de días hacia atrás para buscar noticias
Especifica cuántos días de contenidos atrasados, del portal Visual FoxPro Wiki, deben ser mostradas en el panel Comunidades.

Ejemplos de soluciones, General

Muestras las opciones que pueden ser ajustadas por el panel Ejemplos de Soluciones

Ejemplos de soluciones
Especifica si la sección Ejemplos de Soluciones es mostrada en el panel Ejemplos de Soluciones.
Add-In Links
Especifica si la sección Ejemplos de Soluciones Add-In Links es mostrada en el panel Ejemplos de Soluciones.
Buscar nuevos contenidos en Internet
Selecciona cada cuánto tiempo buscar nuevos contenidos basados en Internet.

XML Web Services, General

Muestra las opciones que pueden ser ajustadas en el panel XML Web Services.

XML Web Services Herramientas
Especifica si la sección XML Web Services Tools debe ser mostrada en el panel XML Web Services.
Explorar un XML Web Service
Especifica si la sección Explorar un XML Web Service debe ser mostrada en el panel XML Web Services.
XML Web Services Recursos
Especifica si la sección Recursos XML Web Services debería ser mostrada en el panel XML Web Services.
Buscar nuevos contenidos en Internet
Selecciona cada cuánto tiempo buscar nuevos contenidos basados en Internet.

Busca Minas

Muestra las opciones que pueden ser ajustadas en el panel Busca Minas.

Dimensiones de la Matriz
Especifica el tamaño por defecto del área de juego.

Ver También

Cuadros de diálogo | Cuando de diálogo Personalización del Panel | Administrador del Panel de tareas


Cuadro de diálogo Título

Establece el alto y otras opciones de la banda Título en un informe o etiqueta. Este cuadro de diálogo aparece cuando hace doble clic en la barra de separación de la banda Título en el Diseñador de informes. Para ver la banda Título, debe seleccionar Banda Título en el cuadro de diálogo Título y resumen.

Alto
Especifica el alto de la banda. Escriba un valor en el cuadro, haga clic en FLECHA ARRIBA o FLECHA ABAJO para cambiar el valor mostrado en incrementos de 0,05 o arrastre la barra de separación de la banda con el ratón.
Banda de alto constante
Impide que la banda se alargue para ajustarse a la longitud de los datos o se encoja para absorber las líneas en blanco que se hayan quitado.

Ejecutar expresión

Al entrar
Especifica que se evalúe una expresión antes de imprimir cada encabezado de grupo nuevo. Escriba la expresión en el cuadro o elija el botón de cuadro de diálogo para mostrar el cuadro de diálogo Generador de expresiones.
Al salir
Especifica que se evalúe una expresión después de imprimir cada página nueva. Escriba la expresión en el cuadro o elija el botón de cuadro de diálogo para mostrar el cuadro de diálogo Generador de expresiones.

Vea también

Cuadro de diálogo Generador de expresiones | Diseñador de etiquetas | Diseñador de informes | Cuadro de diálogo Título y resumen | Cuadro de diálogo Bandas del diseñador de informes | Modificar diseños | Preparar el diseño de informe | Refinar el diseño de página


Cuadro de diálogo Título y resumen

Le permite especificar si se incluye una banda de Título o de Resumen en el informe.

Título del informe

Banda Título
Incluye una banda de información de título que se imprime una vez al principio del informe.
Nueva página
Salta una página tras la impresión de la banda de título. Sólo puede activar esta opción si activa primero la Banda Título.

Resumen del informe

Banda Resumen
Incluye una banda de información de Resumen que se imprime una vez al final del informe.
Nueva página
Salta una página antes de imprimir la banda de información de Resumen. Solo puede activar esta opción si activa antes la Banda Resumen.
Encabezado de página
Incluye encabezado de página con la Banda Resumen
Pie de página
Incluye pie de página con la Banda Resumen.

Vea también

Diseñador de informes | Cuadro de diálogo Título | Cuadro de diálogo Resumen | Diseñador de informes | Crear un diseño de informe


Cuadro de diálogo Barras de herramientas

Le permite crear, modificar, ocultar y personalizar las barras de herramientas.

Barras de herramientas
Muestra las barras de herramientas disponibles. Las barras de herramientas seleccionadas se ponen en mosaico o se muestran en la ventana de resultado activa.
Nueva
Muestra el cuadro de diálogo Nueva barra de herramientas, en el que puede escribir un nombre para la nueva barra de herramientas.
Restablecer
Devuelve la barra de herramientas seleccionada a su versión integrada. Este botón cambia a Eliminar si selecciona una barra de herramientas personalizada. No se puede restablecer una barra de herramientas personalizada.
Eliminar
Elimina la barra de herramientas personalizada seleccionada. Este botón cambia a Restablecer cuando selecciona una barra de herramientas integrada. No se puede eliminar una barra de herramientas integrada.
Personalizar
Muestra el cuadro de diálogo Personalizar barra de herramientas con el que puede agregar o eliminar botones de barra de herramientas.

Mostrar

Botones en color
Muestra botones coloreados sobre las barras de herramientas integradas y personalizadas. Desactive esta casilla de verificación si está usando un monitor monocromo.
Botones grandes
Muestra los botones de la barra de herramientas con un tamaño mayor que el tamaño estándar. Si su monitor tiene alta resolución, quizás quiera ver los botones más grandes.
Mostrar información de herramientas
Muestra el nombre del botón cuando coloca el puntero sobre cualquier botón de una barra de herramientas.

Vea también

Cuadro de diálogo Personalizar barra de herramientas | Cuadro de diálogo Orden de tabulación | Cuadro de diálogo Opciones generales | Cuadro de diálogo Opciones de menú | Cuadro de diálogo Definir diseño de ventana | Crear barras de herramientas personalizadas


Cuadro de diálogo Personalizar barra de herramientas

Le permite agregar y eliminar botones de barra de herramientas. Los botones disponibles se muestran por categorías. Haga clic en un botón para ver su descripción.

Este cuadro de diálogo aparece cuando elige Personalizar en el cuadro de diálogo Barras de herramientas.

Categorías
Muestra las categorías de botones.
Botón
Muestra los botones incluidos en la categoría que seleccione en el cuadro Categorías. Para agregar el botón, arrástrelo hasta la barra de herramientas deseada y colóquelo en el escritorio de Visual FoxPro para crear una nueva barra de herramientas.
Descripción
Describe el botón seleccionado.

Para obtener más información, vea Configurar las Barras de herramientas de Visual FoxPro.

Vea también

Cuadro de diálogo Barras de herramientas | Cuadro de diálogo Orden de tabulación | Cuadro de diálogo Opciones generales | Cuadro de diálogo Opciones de menú | Cuadro de diálogo Definir diseño de ventana | Crear barras de herramientas personalizadas


Cuadro de diálogo Deshacer desproteger archivos

Sobrescribe las modificaciones realizadas a un archivo y copia la última versión protegida al directorio de trabajo del entorno de programación.

Archivos que hay que proteger
Muestra los archivos actualmente desprotegidos. Haga clic en los archivos de los que quiere deshacer la desprotección o haga clic en Seleccionar todo para seleccionar todos los archivos mostrados.
Seleccionar todo
Selecciona todos los archivos mostrados.

Vea también

Cuadro de diálogo Desproteger archivos | Cuadro de diálogo Agregar archivos al control de código fuente | Compilar código fuente


Cuadro de diálogo Actualizar la lista de proyectos

Muestra el resultado cuando elige Actualizar la lista de proyectos en el submenú Control de código fuente del menú Proyecto.

Comentarios
Muestra el resultado de la actualización.

Vea también

Cuadro de diálogo Quitar archivos del control de código fuente | Cuadro de diálogo Información del proyecto | Compilar código fuente


Cuadro de diálogo Parámetros de vista

Configura vistas que piden que se escriba un valor para completar la vista.

Nombre
Especifica el nombre del parámetro.
Tipo
Especifica el tipo de datos del parámetro.
Insertar
Inserta una fila en blanco.
Eliminar
Elimina la fila seleccionada.

Vea también

Cuadro de diálogo Opciones avanzadas | Diseñador de consultas y de vistas | Cuadro de diálogo Destino de la consulta | Crear una consulta parametrizada | PARAMETERS (Comando)


Cuadro de diálogo Convertidor de Visual FoxPro

Convierte archivos de FoxPro 2.6 y Visual FoxPro 3.0 a formato Visual FoxPro 7.0, es necesario para utilizar estos archivos con versiones posteriores de Visual FoxPro.

Este cuadro de diálogo se muestra cuando elige Abrir desde el menú Archivo y selecciona un archivo creado con una versión anterior de FoxPro o cuando escribe MODIFY PROJECT (Comando), MODIFY FORM (Comando), MODIFY REPORT (Comando), o MODIFY LABEL (Comando) nombrearchivo en la Ventana Comandos y selecciona un archivo creado con una versión anterior de FoxPro en el cuadro de diálogo Abrir.

Convertir registros de formulario Macintosh y Windows
Sólo es visible si se convierten pantallas o proyectos de FoxPro 2.6 que contienen controles o información específicos de la plataforma (tales como referencias a fuentes de pantalla o rutas de acceso). Sí selecciona esta opción, el programa Convertir crea un formulario separado para cada plataforma. La versión para Windows del formulario tendrá el nombre original y la versión para Macintosh tendrá el nombre original con el sufijo "_MAC" agregado. Si la pantalla original era parte de un proyecto, el nuevo proyecto se actualizará para incluir ambos formularios nuevos.
Conservar los valores predeterminados de propiedades de Visual FoxPro 3.0
Solo es visible si se convierten Formularios o Proyectos de Visual FoxPro 3.0. La configuración predeterminada de propiedades de Visual FoxPro 7.0 para fuentes y colores cumple los estándares de Windows 98 y a veces es distinta de la configuración de Visual FoxPro 3.0. Si selecciona esta opción, sus formularios convertidos conservarán la configuración de propiedades de Visual FoxPro 3.0.
Archivos de copia de seguridad
Le permite especificar un directorio en el que se guardarán los archivos de copia de seguridad.
Crear archivo de registro
Le permite guardar una lista de las acciones realizadas mientras se convertían sus archivos.
Conversión funcional

Solo está visible si se están convirtiendo pantallas o proyectos de FoxPro 2.6. Crea imágenes de formularios y de controles, y copia código a ubicaciones en propiedades, eventos y métodos de objetos. La conversión funcional proporciona compatibilidad de LECTURA inmediata con FoxPro 2.6 de forma que pueda utilizar formularios en Visual FoxPro sin hacer grandes cambios manualmente. Para obtener funcionalidad completa de modelo de eventos, debe eliminar páginas y marcos de página, cambiar la propiedad WindowType, del conjunto de formularios y volver a ubicar manualmente el código en métodos y eventos.

Conversión visual
Sólo está visible si se están convirtiendo pantallas o proyectos de FoxPro 2.6. Crea imágenes de formularios y de todos los controles, pero copia todo el código de las pantallas o el proyecto originales de FoxPro 2.6 a un archivo no compilable .PRG. Elija Conversión visual si desea moverse a la funcionalidad completa de Visual FoxPro sin tener que eliminar páginas y marcos de página, cambiar la propiedad WindowType, del conjunto de formularios y volver a ubicar manualmente el código de un objeto a otro.
Continuar
Presenta el cuadro de diálogo Transportador de Visual FoxPro, que le permite completar el proceso de conversión de archivos.
Archivo
Puede utilizar el botón de tres puntos para localizar o especificar en el cuadro de edición el archivo que desea convertir.
Directorio
Utilice está opción para convertir todos los archivos de un directorio. Cuando hace clic en este botón, activa las opciones que especifican el tipo o tipos de archivos que desea convertir. También puede especificar si desea convertir subdirectorios.

Cuando seleccione esta opción, también puede optar por incluir todos los archivos .scx y .vcx, y por comprobar en todos los subdirectorios la existencia de archivos convertibles.

Vea también

Ventana Comandos | MODIFY FORM (Comando) | MODIFY LABEL (Comando) | MODIFY PROJECT (Comando) | MODIFY REPORT (Comando) | WindowType (Propiedad) | Cuadro de diálogo Transportador de Visual FoxPro


Cuadro de diálogo Transportador de Visual FoxPro

Le permite transportar formularios, etiquetas e informes a través de distintas plataformas y versiones de FoxPro.

Este cuadro de diálogo sólo aparece si está intentando convertir archivos de Macintosh o MS-DOS que nunca han contenido registros de Windows y cuando hace clic en el botón Continuar del cuadro de diálogo Converter de Visual FoxProx. El Transportador crea registros de plataforma Windows a partir de los registros Macintosh o MS-DOS de forma que Converter pueda entonces convertir los archivos al formato de archivo de Visual FoxPro 8.0 (necesario para utilizar los archivos con versiones posteriores de Visual FoxPro).

Transportar
Crea una versión Windows de los registros Macintosh o MS-DOS de forma que el programa Converter de Visual FoxPro reconozca el archivo y lo convierta al formato de archivo correcto.
No transportar
Cancela el proceso de transporte y conversión del archivo. Todavía puede abrir el archivo en la versión más antigua de FoxPro.
Fuente
Abre el cuadro de diálogo Fuente de forma que pueda elegir la fuente predeterminada para su pantalla, etiqueta o informe transportado.
Transportar objetos desde
Le permite elegir la plataforma apropiada desde la lista desplegable.

Vea también

_TRANSPORT (Variable del sistema) | Cuadro de diálogo Convertidor de Visual FoxPro


Cuadro de Diálogo Localización Servicios Web XML Visual FoxPro

Especifica un URL (Uniform Resource Locator) local o directorio virtual para publicar un Servicio Web XML.

El cuadro de diálogo Localización de Servicios Web XML Visual FoxPro aparece al seleccionar el Asistente de Publicación de Servicios Web desde el menú Asistentes. Puede abrir el cuadro de diálogo haciendo clic en Avanzado en el cuadro de diálogo Publicación de Servicios Web XML Visual FoxPro. Para mayor información, vea Cuadro de diálogo de Publicación Servicios XML Web de Visual FoxPro.

Nota La configuración establecida para los Servicios Web XML publicados anteriormente se mantienen, por tanto no es necesario volver a establecer estos valores cada vez que publique un Servicio Web XML.
Existente
Selecciona una localización existente en el cuadro Seleccione localización (Directorio Virtual) para publicar un Servicio Web XML. Debe ser una localización URL (directorio virtual) disponible en un servidor IIS Web accesible.
Nuevo
Especifica un nuevo directorio virtual en el cuadro Seleccione localización (Directorio Virtual) para publicar un Servicio Web XML y para introducir el nombre del directorio virtual en el cuadro Nombre de nuevo directorio virtual.
Seleccionar localización (Directorio virtual)
Especifica la URL local (directorio virtual) para publicar un Servicio Web XML. El cuadro lista todos los directorios virtuales en su Servicio Web IIS predeterminado, Si es seleccionado Nuevo la URL especificada es utilizada como localización raíz para el nuevo directorio virtual apareciendo en el cuadro Nombre del nuevo directorio virtual.
Ruta de archivo de salida
Muestra el camino físico para la localización del nuevo directorio virtual y está disponible solamente cuando Nuevo es seleccionado. Haga clic en el botón (...) a la derecha del cuadro Ruta del Archivo para seleccionar un directorio físico para un nuevo directorio virtual.
Nuevo nombre de directorio virtual
Especifica el nombre del nuevo directorio virtual y está disponible solo cuando es seleccionado Nuevo.

Vea también

Cuadros de diálogo | Distribuir Servicios Web XML | Servicios Web XML en Visual FoxPro 8.0


Servicio Web XML - Cuadro de diálogo Publicar

Especifica la información para publicar servicios XML en la Web con servidores COM (.dll) de Visual FoxPro como servicios XML Web que pueden ser accedidos en la Red. El cuadro de Diálogo de Publicación de Servicios XML Web de Visual FoxPro aparece cuando se hace clic en Publicar un Servicio XML Web en el panel de Servicios XML Web, en el panel de Controlador de Tareas o cuando se hace clic en Asistentes del menú de Herramientas.

Nota El cuadro de diálogo de Publicación de Servicios XML Web de Visual FoxPro usa el motor de generación de Los Servicios de Descripción del Lenguaje (WSDL) del Kit de Herramientas 3.0 de SOAP. Por lo tanto, ciertos Tipos complejos, podrían no estar soportados. Para mas detalles acerca de archivos WSDL o WSML generados por el Publicador de Servicios XML Web de Visual FoxPro, vea la documentación del Kit de herramientas 3.0 de SOAP.

El cuadro de diálogo de la Publicación de Servicios XML Web de Visual FoxPro usa por defecto la dirección URL (directorio virtual) para sus ajustes. Puede visualizar y modificar estos ajustes haciendo clic en Avanzado en el cuadro de diálogo de Publicación. Los Ajustes son preservados por lo que después puede volver a publicar su servicio XML de la Web con archivos de soporte nuevamente generados.

Servidor COM
Especifica el nombre del archivo del servidor COM a ser publicado. Haga Clic en el botón Elipsis (...) para seleccionar un servidor COM (archivos .dll o .exe).

Por defecto, se visualizará el Servidor COM asociado con el proyecto activo. La casilla del Servidor COM lista todos los Servidores COM asociados con un proyecto abierto y cualquier publicación previa de Servidores COM.

Seleccionar Clases
Especifica una clase individual (OLEPUBLIC) del servidor COM a ser publicada. La casilla de Seleccionar Clases lista todas las clases disponibles en el Servidor COM.

Avanzado
Despliega el cuadro de diálogo Avanzado para que pueda modificar los valores por defecto del Servicio de la Web XML que quiere publicar y para los archivos soportes generados por el servicio de la Web XML. Estos ajustes son usados cuando se hace clic en Generar. Estos son preservados por lo que puede volver a publicar el servicio de la Web XML con archivos de soporte nuevamente generados. Los siguientes ajustes están disponibles:

Pestañas de Opciones

  • Nombre del Servicio Especifica el nombre del servicio XML a ser creado en la Web. Cuando se generan los archivos WSDL y ASP, se usa este nombre para los archivos.
  • Listener URI Especifica la dirección URL para los archivos WSDL y ASP. Esta casilla lista las ubicaciones sugeridas basado en un conjunto de directorios virtuales de su servidor Web por defecto. Haciendo clic en el botón Elipses (...) se despliega el cuadro de diálogo de las Ubicaciones para el Servicio XML de Web de Visual FoxPro para que pueda escoger un directorio virtual existente o un nuevo directorio virtual. Para mas información, vea Cuadro de diálogo Localización de Servicios Web XML de Visual FoxPro.
  • Ubicación de Archivo(s) Visualiza la ubicación física de los archivos WSDL generados. Esta ubicación es determinada por la ubicación especificada cuando se hace clic en el botón Elipses (...) en el lado derecho del la caja de Listener URI.
  • Tipos de Listener Especifica si su servicio XML Web usará un listener ISAPI o ASP. El listener ISAPI es la opción por defecto y ofrece el rendimiento más rápido. Si se especifica un Listener ASP, se creará un archivo ASP con sus respectivos archivos WSDL cuando se haga clic en el botón de Generar.
  • Aplicaciones ASP listener Despliega el nombre de la aplición usada en la secuencia ASP del archivo listener.
  • VBScript Especifica que el archivo ASP listener usará el lenguaje de secuencia VBScript.
  • JScript Especifica que el archivo ASP listener usará el lenguaje de secuencia JScript.
  • Generación Automática Crea un contenedor de proyecto con el Servidor COM para que los archivos de soporte XML Web sean generados automáticamente cuando el Servidor COM sea regenerado.
  • Generar con UTF-16 Usa el codificador Unicode UTF-16 cuando genera los archivos WSDL. Con el codificador UTF-16, cada carácter usa dos bytes. Con el codificador UTF-8, la mayoría de los caracteres, por ejemplo, caracteres en Inglés, usan un byte cada uno. Otros caracteres, tales como Asiáticos o Árabes, usan hasta tres bytes cada uno. Por lo tanto, es mejor guardar los archivos en el formato UTF-16.

Pestaña de Métodos

  • Métodos Especifica una lista de los métodos disponibles en la clase Servidor COM seleccionada. Solamente los métodos seleccionados son incluidos como operaciones en los archivos WSDL generados para el servicio XML Web.

Péstaña de Namespaces Especifica los diferentes namespaces para URIs en los archivos WSDL generados. Cada servicio XML Web necesita un namespace único para la aplicación cliente a fin de distinguirla de otros servicios en la Red. Es recomendable que use un dominio diferente a tempuri.org.

  • WSDL Namespace URI Especifica un namespace usado para las definiciones en los documentos WSDL.
  • Schema Type Definition Namespace URI Especifica un namespace usado para los esquemas de referencia en los documentos WSDL.
  • Message Namespace URI Especifica un namespace usado para los mensajes de entrada y salida, o llamadas a métodos, en los documentos WSDL.
  • Base SOAP Action URI Especifica la URI usada para operaciones en los documentos WSDL.

Asistente STK3
Abre el Generador del Kit de Herramientas SOAP 3.0 WSDL para que pueda crear los archivos WSDL desde un objeto COM. Puede usar este asistente como un método alternativo para publicar su Servidor COM como un servicio XML Web y contiene muchas de las opciones similares a la Publicación de Servicios XML Web de Visual FoxPro.

Generar
Genera todos los archivos soportes del servicio XML Web necesarios para publicar el servidor COM como un servicio XML Web incluyendo los archivos ASP listener y WSDL.

Vea También

Cuadros de diálogo | Distribuir Servicios Web XML | Servicios Web XML en Visual FoxPro 8.0


Servicio Web XML - Cuadro de diálogo Registrar

Especifica la información para registrar un Servicio Web XML para que sea usado en las Aplicaciones.

El cuadro de diálogo para el Registro de Servicios Web XML de Visual FoxPro XML aparece cuando se hace clic sobre Registro en XML Web Service en la pestaña de Servicios Web XML en el Administrador de Tareas. También se puede abrir el Cuadro de Diálogo desde el Asistente de Servicios Web XML y el Cuadro de Dialogo Selección cuando se escriben los caracteres ws, en la ventana de Edición.

Localización de la URL WSDL
Especifica el lugar del Archivo WSDL y usualmente el URL. Sin embargo, el lugar puede ser también un Directorio Local. Este Valor debe ser un lugar de Archivo válido de WSDL; Por lo tanto, Visual FoxPro genera el Mensaje apropiado cuando se intenta registrar un Servicio Web XML.

El cuadro también incluye la referencia al lugar previo del WSDL registrado. Si se especifica un archivo WSDL que contiene múltiples puertos (classes), se le invitará a seleccionar ese puerto en particular.

Buscar UDDI
Muestra el cuadro de diálogo Buscar UDDI para que se pueda realizar una búsqueda de un Web Service XML registrado en la Base de Datos de Microsoft: Universal Discovery Description and Integration (UDDI). El cuadro de diálogo Buscar UDDI contiene las siguiente Opciones:
  • Ingrese el Nombre para buscar el la Base de Datos UDDI Especifica el nombre a Buscar y este puede ser un nombre de compañía, negocio o simplemente una simple categoría, como clima o existencia.
  • Servicios Web Muestra los resultados de una búsqueda en el UDDI.

    El área Resultados muestra detalles acerca de un Servicio Web XML específico, sin embargo muchas veces el resultado de la búsqueda no regresará esto, pero si una referencia a un URL conteniendo un enlace a un Servicio Web XML. Si esta situación ocurre, el botón Selección no estará disponible; sin embargo la descripción contiene un enlace para más información.

  • View Service Description (WSDL) Contiene un vinculo hacia el WSDL para el servicio Web XML.
  • Ir a Web Site de UDDI de Microsoft Contiene un vinculo hacia el Sitio Web UDDI de Microsoft.
  • Busqueda Realiza una búsqueda en el UDDI por una expresión dada.

    El tiempo requerido para cada búsqueda depende de la expresión ingresada. Si el resultado de la búsqueda es negativo, se muestra un Cuadro de Mensaje indicando esto.

  • Selección Ingresa el servicio Web XML en el cuadro URL del WSDL en el Cuadro de diálogo Registro del Web Service XML de Visual FoxPro
    Nota Si se debe realizar una búsqueda más compleja, visitar el Sitio web del UDDI Web en http://www.microsoft.com/.

Vea También

Cuadros de diálogo | Accediendo a servicios Web XML | Servicios Web XML en Visual FoxPro 8.0

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


Cuadro de diálogo Selección de los asistentes

Muestra una lista de asistentes en la que puede elegir. Este cuadro de diálogo se muestra desde el menú Herramientas al elegir Asistentes y, a continuación, elegir Consulta, Formulario, Informe o Todos en el submenú.

Seleccione el asistente que desee utilizar
Presenta todos los asistentes de Visual FoxPro disponibles para un elemento específico. Por ejemplo, Visual FoxPro tiene tres asistentes para informes distintos.
Descripción
Le da una breve descripción del asistente actualmente seleccionado.

Vea también

Asistentes | Cuadro de diálogo Ortografía | Cuadro de diálogo Macros | Ventana Examinador de clases


Cuadro de diálogo Propiedades del área de trabajo

Le permite modificar la estructura de una tabla, seleccionar archivos de índice y campos, y definir filtros. Este cuadro de diálogo aparece cuando elige Propiedades en el menú Tabla.

Cursor
Muestra el título de la barra abierta actualmente.
Activar almacenamiento en búfer de datos
Activa el almacenamiento en búfer.

Bloquear registros

Al modificar
Impide el acceso a otros usuarios cuando modifica registros. Esto también se conoce como almacenamiento pesimista en búfer.
Al escribir
Permite tener acceso a otros usuarios hasta que se actualice el registro. Esto también se conoce como almacenamiento optimista en búfer.

Búfer

Registro activo
Activa el almacenamiento en búfer únicamente del registro activo. Esto también se conoce como almacenamiento de registros en búfer.
Todos los registros modificados
Activa el almacenamiento en búfer de todos los registros modificados. Esto también se conoce como almacenamiento de tablas en búfer.
Nota Cuando selecciona Búfer, Registro activo, SET MULTILOCKS (Comando) se establece automáticamente como activado (si está actualmente desactivado), pero no se establece como desactivado si desactiva Búfer, Registro activo o selecciona Búfer, Todos los registros modificados. Establezca los valores predeterminados para tablas nuevas en la ficha Datos, cuadro de diálogo Opciones.
Filtro de datos
Proporciona un cuadro de texto para escribir una expresión de filtro de datos. De forma alternativa, el botón de cuadro de diálogo muestra el cuadro de diálogo Generador de expresiones, en el que puede especificar qué registros de la tabla activa estarán disponibles para su procesamiento. Corresponde al comando SET FILTER.
Orden del índice
Específica el orden del índice de la tabla. En el Diseñador de bases de datos, el índice principal de la tabla aparece con un símbolo de una llave junto a él en la lista de índices. Corresponde al comando SET ORDER.

Permitir acceso a

Todos los campos del área de trabajo
Especifica que el usuario tiene acceso a todos los campos del área de trabajo. Corresponde al comando SET FIELDS.
Sólo los campos especificados en el filtro de campos
Especifica que sólo los registros que coincidan con las selecciones del cuadro de diálogo Selector de campos se muestren o estén disponibles para su modificación.
Filtro de campos
Muestra el cuadro de diálogo Selector de campos, en el que se controla el número de campos activos.
Modificar
Muestra el Diseñador de tablas, en el que puede modificar bases de datos y campos, índices y tablas libres.

Vea también

Personalizar tablas | Ficha Datos, cuadro de diálogo Opciones | Diseñador de bases de datos | Cuadro de diálogo Generador de expresiones | Cuadro de diálogo Selector de campos | SET FIELDS (Comando) | SET FILTER (Comando) | SET MULTILOCKS (Comando) | SET ORDER (Comando) | Diseñador de tablas


Cuadro de diálogo Selector de campos

Limita el número de campos activos en una tabla de forma que pueda personalizar lo que se muestra. No se puede tener acceso a los campos que no están activos y estos campos tampoco se pueden examinar o modificar. Los datos de la tabla no se ven afectados. La selección que realice en este cuadro de diálogo se ignora a menos que seleccione Sólo los campos especificados en el filtro de campos del cuadro de diálogo Propiedades del área de trabajo.

Este cuadro de diálogo aparece cuando elige Filtro de campos en el cuadro de diálogo Propiedades del área de trabajo o Campos en el cuadro de diálogo Informe rápido, el cuadro de diálogo Opciones de Anexar desde o el cuadro de diálogo Opciones de exportación.

Todos los campos
Muestra los nombres de todos los campos de la tabla actual.
Campos seleccionados
Muestra los nombres de los campos que selecciona en el cuadro Todos los campos y los copia con el botón Mover.
Desde tabla
Especifica qué campos de la tabla se muestran en el cuadro Todos los campos.
Mover
Copia los campos seleccionados del cuadro Todos los campos al cuadro Campos seleccionados.
Todos
Copia todos los campos del cuadro Todos los campos al cuadro Campos seleccionados.
Quitar
Quita los campos seleccionados del cuadro Campos seleccionados.
Quitar todos
Quita todos los campos del cuadro Campos seleccionados.

Vea también

Cuadro de diálogo Opciones de Anexar desde | Cuadro de diálogo Opciones de exportación | Cuadro de diálogo Informe rápido | Cuadro de diálogo Propiedades del área de trabajo | Crear campos


Cuadro de diálogo Zoom

Presenta el valor de texto de la propiedad seleccionada. Se tiene acceso a este comando a través del menú contextual de la ventana Propiedades.

Vea también

Ventana Propiedades | Cuadro de diálogo Generador de expresiones | ZOOM WINDOW (Comando) | ZoomBox (Propiedad)


Servicio Web XML - Cuadro de diálogo Detalle de Cliente

Le posibilita especificar el control o cliente, al cual se quiere enlazar los resultados de la operación del servicio Web XML. Cuando se llama a una operación de servicio Web XML, los resultados pueden ser enlazados a un control específico en el formulario. Entonces puede asignar el valor de retorno o el parámetro, tal y como es pasado por referencia, a la propiedad de un control. Normalmente, se asigna este valor devuelto a la propiedad Value o Caption así el usuario puede ver los resultados.

Este cuadro de diálogo aparece cuando hace clic en Agregar o Editar, en el grupo Clientes de la ficha Operaciones del Generador de Servicios Web XML. Para más información, vea Ficha Operaciones, Generador de Servicio Web XML.

Seleccionar control
Despliega y especifica controles u objetos disponibles en el formulario actual a los cuales se puede enlazar los resultados de la operación del servicio Web XML.

Si su Servicio Web XML devuelve un tipo de datos simple, puede querer selecionar un cuadro de texto o etiqueta. Puede enlazar una operación que devuelve un DataSet de ADO.NET, el cual es de un tipo complejo, a un control cuadrícula. Para objetos DataEnvironment, puede seleccionar un objeto CursorAdapter y enlazar el resultado de la operación a su método CursorFill, lo que es típico para operaciones de servicio Web XML que devuelven DataSets de ADO.NET.

Propiedad del control usada para asignar resultados del servicio Web
Despliega y especifica la propiedad del control seleccionado a la cual se quiere enlazar los resultados de la operación. Cuando la operación es llamada, los resultados son asignados a la propiedad.

Para un control TextBox, normalmente se elige la propiedad Value; sin embargo, si la operación devuelve un DataSet de ADO.NET, podría querer usar la propiedad ControlSource.

Para un control Label, la propiedad Caption es predeterminada como seleccionada.

Para un control Grid, y si la operación resulta en un DataSet de ADO.NET, puede querer usar la propiedad RecordSource.

Enlazar un control al valor devuelto o parametro del servicio Web
Especifica el parámetro fuente del servicio Web XML al cual la propiedad del control está enlazada.

ReturnValue está seleccionado en forma predeterminada. Sin embargo, también puede especificar un parámetro de la operación como origen. Esto puede ser útil para operaciones que tienen parámetros pasados por referencia. Algunas veces también es útil para mostrar el valor de la entrada original, por ejemplo usando la propiedad Label Caption.

Descripción del Cliente
Especifica un nombre que quiera usar para el cliente. (Opcional)
Nombre de la propiedad enlazada
Especifica el nombre de una propiedad personalizada que quiera utilizar como el origen del evento para disparar la llamada a la operación del Servicio Web XML y el subsiguiente control de enlace (control binding). Esta opción tiene predeterminado el valor BindMe. Sin embargo, se incluyen en la lista todas las propiedades personales y métodos del control para que seleccione cualquier otro si lo desea.

Si un objeto CursorAdapter es seleccionado, el método CursorFill es predeterminado ya que este evento causa que un cursor sea creado luego de llamar el servicio Web XML. Esto es útil para operaciones que devuelven DataSet de ADO.NET porque el servicio Web XML habilita el DataSet para ser importado dentro de un objeto CursorAdapter, por medio de un objeto XMLAdapter, el cual es usado por el método CursorAdapter CursorFill.

Las operaciones de servicio Web XML son llamadas usando las capacidades de enlace a eventos de Visual FoxPro. En tiempo de ejecución, una propiedad especificada por el Nombre de la opción propiedad de enlace es agregada al control. La propiedad agregada sirve como origen para el evento y su enlace al método InvokeCliente del servicio Web XML. Cuando el valor de la propiedad de enlace está fijado como Verdadero (.T.), un evento ocurre y llama al método InvokeClient, el cual a su turno, llama la operación del servicio Web XML. Después que la operación es llamada, el valor a devolver es establecido a la propiedad especificada. También puede especificar un método personal en lugar de una propiedad personal. Llamar a ese método personal desencadena un evento que llama al delegado InvokeClient.

Invocar al iniciar
Especifica que el servicio Web XML es llamado, y el control es enlazado, cuando el formulario o clase es instanciado por primera vez.
Siempre llama al servicio Web
Especifica que cada control hace su propia llamada a la operación de servicio Web XML a la cual está enlazado.

El control del servicio Web XTML (wshandler) tiene la capacidad de detectar cuando ocurren múltiples llamadas clientes para la misma operación. Por rendimiento, múltiples clientes reutilizan los resultados de una operación cuando esos clientes son llamados simultáneamente, como cuando el formulario o clase es primeramente instanciado.

Por ejemplo, suponga que tiene un control TextBox que enlaza los resultados de una operación a su propiedad Value y un control Label que enlaza el primer parámetro, un valor ingresado, de la misma operación a su propiedad Caption. Cuando el formulario o clase es instanciado, y ambos clientes son llamados, normalmente solo ocurre una simple llamada a la operación de servicio Web XML. Sin embargo, seleccionando Siempre llama al servicio Web, puede especificar que todos los clientes hagan sus propias llamadas a la misma operación. Esto también ocurre si un cliente llama manualmente la operación cuando se instancia el formulario o clase.

Tipos Complejos
Muestra un cuadro de diálogo que hace posible establecer opciones adicionales al enlazar con operaciones que retornan tipos complejos, así como un DataSet de ADO.NET o un XMLDOMNodeList. Para más información, vea Servicios Web XML - Cuadro de diálogo Tipos complejos.

Vea También

Cuadros de diálogo | Ficha Operaciones, Generador de Servicio Web XML


Servicios Web XML - Cuadro de diálogo de tipos complejos

Hace posible que pueda especificar información para tipos complejos como tablas y nombres de campos para operaciones de servicios de web XML que retornan hojas de datos ADO.NET o nombres de propiedades para un objeto retornado tal como una lista de nodos XML, que retorna el kit de herramientas SOAP 3.0 para los tipos mas complejos.

Este cuadro de diálogo aparece cuando se hace click en tipos complejos en Servicios Web XML - Cuadro de diálogo Detalle de cliente .

Set de datos
Especifica una tabla y nombre de campo de un set de datos retornado. El control de servicios de web XML importa el set de datos en un objeto XMLAdapter, objeto que su aplicación puede utilizar. Cuando una operación de cliente es llamada, el cursor es creado automáticamente.
  • Tablas de set de datos Especifica una tabla desde las tablas disponibles en el set de datos.
  • Campo de tabla Especifica un campo desde los campos disponibles en el set de datos seleccionados. La seleccion de un campo puede ser útil a la hora de conectarlo con la propiedad ControlSource de un control TextBox.
  • Usar un cursor existente si ya está abierto Especifica el uso de un cursor que tiene el mismo nombre; de otra manera, crea un nuevo cursor.
Objetos
Más operaciones de servicio Web XML que retornan tipos complejos son los objetos, que son tratados por el Kit de herramientas SOAP 3.0 como listas de nodos XML y posee propiedades que podrá controlar.
  • Valores Muestran las propiedades asociadas con el objeto.
Consultas
Llamadas al servicio Web XML con los que Ud. podrá disponer de valores para el set de datos u objetos.
Puesta a cero
Puesta a cero de todos los valores hacia cadenas vacias.
Esquema de ataque
Coloca la propiedad de Adaptador de cursor "Esquema de cursor" hacia el esquema de la tabla seleccionada. Disponible cuando un objeto Adaptador de cursor es seleccionado en el cuadro de diálogo de detalles del cliente.

Vea también

Cuadros de diálogo | Servicios Web XML - Cuadro de diálogo Detalle de cliente


Servicios Web XML - Cuadro de diálogo de detalles de operación

Hace posible que seleccione operaciones específicas, o métodos, que quiera llamar desde su aplicación. Puede especificar valores como parámetros para estas operaciones.

Este cuadro de diálogo aparece al hacer clic en Agregar o Editar en el grupo de operaciones de la pestaña operaciones del asistente de servicios Web XML. Para más información , lea Ficha Operaciones, Asistente de Servicios Web XML.

Nombre
Especifíca un nombre que puede usar para referirse a la operación.
Descripción
Especifíca una descripción para esta operación. (Opcional)
Selecciona una operación (método)
Especifica la operación que puede usar. Los detalles de la operacion seleccionada aparecen en el cuadro de sintaxis, incluyéndo los parámetros previamente asignados.
Parametrización
Especifica como se asignan valores a los parámetros para las operaciones que siguen:
  • Introducir valores ahora Hace posible la introducción de valores para los parámetros en forma momentanea. Para especificar valores o fuentes de parámetros en tiempo de ejecución, haga click para abrir en Servicios Web XML - Cuadro de diálogo Valores de parámetros.
  • Programando en tiempo de ejecución Cargue valores en parámetros en tiempo de ejecución usando la colección de parámetros de operaciones.
  • Sugerencias en tiempo de ejecución Especifique que un cuadro de diálogo aparecerá para entrar valores cuando la operación es llamada en tiempo de ejecución. El cuadro de diálogo solo soporta tipos de datos simples.
Set
Muestra un cuadro de diálogo para cargar valores de parámetros para la operación. Esta opción está disponible solo cuando Introducir valores ahora, está seleccionado en el cuadro de diálogo de parametrización.
Sintaxis
Muestra la sintaxis para la operación.

Opciones

Permite que llamadas a servicios Web puedan ser capturadas fuera de línea
Especifica que las operaciones de llamada, incluyéndo los valores de los parámetros y resultados, sean almacenadas localmente. Si la operación es llamada fuera de línea usando algunos parámetros, se retornan los valores originales haciendo posible que su aplicación corra desconectada de cualquier interrupción.

Vea también

Cuadros de diálogo | Ficha Operaciones, Asistente de Servicios Web XML


Servicio Web XML - Valores de los Parámetro de la Caja de Dialogo

Hace posible que se configuren los Valores de los Parámetros o se especifique un control y sus propiedades como el origen del parámetro para una seleccionada operación de Servicio Web XML.

Nota Se puede especificar solamente un simple tipo de dato dentro de la caja de dialogo. Se puede configurar complejos tipos de datos, tal como una matriz o ADO.NET DataSets, utilizando código programado para la recolección de las operaciones de parámetro.

Esta caja de dialogo aparecerá cuando seleccione los valores de entrada dentro de la configuración de la caja de parámetros de los Servicios Web XML - Cuadro de diálogo - Detalles de la operación

Seleccionando Parámetros
Especifique los parámetros que quiera configurar.
Tipo de Parámetro
Muestra los tipos de datos para los parámetros.
Especificar origen de los parámetros
Especifique el origen de quien suministrará los valores para los parámetro seleccionados.
  • Valor Especifique un valor en particular para los parámetros. El valor proveído es automáticamente convertido al tipo correcto de datos requerido por el parámetro.

    También se puede incluir una expresión, el cual será evaluada en tiempo de ejecución, anteponiéndole un signo de Igualdad (=). Por ejemplo, puedes configurar la fecha actual como se muestra a continuación:

    =DATE( )
  • Control/Propiedad Muestra los controles disponibles sobre el formulario y específica cual propiedad del control seleccionado u objeto suministrará el valor al parámetro.

    Cuando se selecciona un control, aparecerá un lista de propiedades disponibles para los controles de esta manera puedan seleccionar uno de los valores a proporcionar. Si desean tener al usuario suministre el valor del parámetro, podría querer seleccionar el Valor de la propiedad.

Vea también

Cuadros de diálogo | Servicios Web XML - Cuadro de diálogo - Detalles de la operación


Administrador del Panel de tareas

El Administrador de Panel de tareas, muestra áreas que contienen información y exponen llamadas esenciales para un uso sencillo. Hojas Individuales pueden contener información tanto estática como dinámica, reuniendo información desde Internet, exponiendo los Asistentes que realizan tareas de rutinas, muestra la ayuda y presenta ejemplos. Los usuarios pueden configurar los panel que serán compartidas con otros Usuarios.

El Administrador de Panel de tareas, se puede acceder desde el Menú de herramientas en la Pantalla principal de Visual FoxPro.

Comienzo
Contiene secciones que muestra información de Visual FoxPro, lista la Herramientas de Usuarios selectas y muestra los Proyectos y las Base de Datos abiertas recientemente.
Comunidad
Contiene información sobre las Comunidades de Visual FoxPro. Esta página es creada usando contenido dinámico de Internet.
Administrador de Entorno
Especifica la configuración del Entorno de Visual FoxPro y los asocia con Proyectos individuales.
Ejemplos de Soluciones
Muestra los ejemplos de Soluciones creados en Visual FoxPro. Ejemplos adicionales pueden ser instalados usando la Opción, Instalar ejemplos (Install Sample).
Servicios Web XML
Ayuda a los usuarios a usar, publicar y administrar Servicios Web XML. También incluye enlaces a recursos útiles sobre Servicios Web XML.
Busca Archivos (Filer)
Especifica el criterio de búsqueda para localizar Archivos.
Refrescamiento
Vuelve a cargar el contenido del Administrador de Páginas que es actualmente mostrado. Si contiene Información dinámica de Internet, este es vuelto a cargar como se especifica en las opciones del Cuadro de Dialogo del Administrador de Panel de Tareas.
Opciones
Muestra el Cuadro de dialogo del Administrador de Panel de tareas mientras se configuran las Opciones de los Panel individuales.

Vea También.

Referencia de interfaz de usuario | _TASKPANE (Variable del sistema) | Cuando de diálogo Personalización del Panel | Cuadro de Diálogo Opciones de Llamada de Tareas


Caja de herramientas

La caja de herramientas muestra los elementos utilizados en la creación de aplicaciones, los elementos son mostrados en colecciones de herramientas por categoría. Las colecciones de herramientas pueden ser recursos comunes tales como clases nativas de Visual FoxPro que pueden ser colocadas en el área de trabajo. Adicionalmente, la caja de herramientas permite elementos que son creados por los asistentes o generadores, controles ActiveX, controles o clases COM+, y recortes de texto. Además, la caja de herramientas puede contener recursos basados en archivos, como son tablas, imágenes, informes, etiquetas y formularios.

El conjunto de herramientas individual puede ser totalmente personalizado. Además los usuarios pueden añadir un nuevo conjunto de herramientas que contenga su propia selección de elementos.

Puede abrir la caja de herramientas haciendo clic en Caja de herramientas del menú Herramientas o haciendo clic en el botón Caja de herramientas en el cuadro de herramientas estándar de Visual FoxPro. Luego puede arrastrar y colocar elementos desde la caja de herramientas a su área de trabajo para ejecutar otras acciones.

Favoritos
Un conjunto de herramientas para almacenar elementos que se utilizan frecuentemente. Elementos de otras categorías pueden ser movidos a este cuadro para lograr un rápido acceso.
Recortes de texto
Un conjunto de herramientas que contiene recortes de texto. Se pueden agregar nuevos recortes seleccionando el texto y arrastrandolo sobre esta categoría.
Clases base de VFP
Un conjunto de herramientas que contienen clases nativas de Visual FoxPro.
VFP Foundation Classes
Un conjunto de herramientas que contienen algunas de las clases Foundation Classes más populares de Visual FoxPro.
Mis clases bases
Un conjunto de herramientas que contienen las clases base Foundation FoxPro desde la biblioteca de clases FFC\_BASE.VCX.
Mis Servicios web XML
Un conjunto de herramientas que contienen los servicios web XML.
Mis controles ActiveX
Un conjunto de herramientas que contienen los controles ActiveX registrados.

Vea además

Referencia de interfaz de usuario | _TOOLBOX (Variable del sistema) | Personalizar la Caja de herramientas | Personalizar la Caja de herramientas


Asistentes

Visual FoxPro incluye varios asistentes. Los asistentes son programas interactivos que ayudan a realizar rápidamente tareas frecuentes, como crear formularios, dar formato a informes, configurar las consultas, importar y hacer conversión de datos, crear gráficos, combinar correspondencia, generar tablas dinámicas, crear informes de referencias cruzadas y publicar documentos en formato HTML para el Web.

Al responder a las preguntas o elegir opciones de la serie de pantallas del asistente, está indicando al asistente que genere un archivo o realice una tarea en función de sus respuestas.

La mayoría de los asistentes tienen varias opciones de resultado en la última página. Estas opciones de resultado suelen consistir en el uso de archivos que pueden vincularse a su aplicación. Por ejemplo, el Asistente para publicación en Web tiene una opción de resultado que crea un archivo de programa (.prg) que genera dinámicamente una página HTML a partir de datos de FoxPro. Puede incluir este archivo de comandos en su aplicación, y ejecutarlo desde un elemento del menú o un botón de un formulario.

Observe que tiene otros asistentes a su disposición en el sitio Web de Visual FoxPro en http://www.microsoft.com/latam/vfoxpro/ (Latinoamérica) o http://www.microsoft.com/spain/msdn/vfoxpro/ (España).

En esta sección

Asistente para aplicaciones
Permite crear un proyecto y una aplicación plantilla de Visual FoxPro (Visual FoxPro Enhanced Application Framework) y luego abrir el Generador de aplicaciones para incluir bases de datos, tablas, formularios o informes que han sido creados.
Asistente para tablas de referencias cruzadas
Permite crear consultas de tablas de referencias cruzadas que filtran los datos de las tablas existentes.
Asistente para bases de datos
Permite utilizar las plantillas predefinidas para ayudarle a crear bases de datos que contienen las tablas apropiadas.
Asistente para documentación
Permite dar formato y generar archivos de texto a partir del código de archivos de proyecto y de programa.
Asistente para formularios
Posibilita utilizar una tabla para crear un formulario de entrada de datos.
Asistente para gráficos
Permite crear un gráfico desde una tabla de Visual FoxPro utilizando Microsoft Graph.
Asistente para importar
Permite mover los datos a una tabla de Visual FoxPro desde un archivo de otro formato, como por ejemplo, un texto plano, Microsoft Excel, Microsoft Word y otros archivos.
Asistente para etiquetas
Permite crear etiquetas, que pueden ser anexadas a sobres y paquetes o que pueden ser empleadas en situaciones personales.
Asistente para vistas locales
Permite crear vistas, que se muestran personalizadas, alguna o toda la información, utilizando datos nativos de Visual FoxPro.
Asistente para combinar correspondencia
Permite crear cualquier origen de datos, tales como nombres y direcciones, para archivos de combinación de correspondencia de Microsoft Word , como pueden ser cartas, etiquetas postales, sobres de correos, o catálogos o archivos de texto que pueden ser utilizados por cualquier procesador de palabras.
Asistente para formularios uno a varios
Permite crea un formulario de entrada de datos que actualice varias tablas desde un único formulario.
Asistente para informes uno a varios
Permite crear un informe que agrupe registros desde una tabla padre con registros de una tabla hija.
Asistente para tablas dinámicas
Permite crear tablas dinámicas interactivas utilizadas para resumir y analizar datos de tablas existentes.
Asistente para consultas
Permite crear una consulta para seleccionar un grupo de registros basados en reglas específicas.
Asistente para vistas remotas
Permite crear vistas, que se muestran personalizadas, alguna o toda la información, utilizando datos remotos (ODBC).
Asistente para informes
Permite crear informes utilizando una tabla libre o una tabla o vista de una base de datos.
Asistente para Conversión a SQL Server
Permite crear una base de datos SQL Server database que duplique, tanto como sea posible, la funcionalidad de una base de datos de Visual FoxPro.
Asistente para tablas
Permite crear tablas basadas en la estructura típica de tablas y permite seleccionar de una lista de tablas ejemplo, una tabla que cumpla con sus requerimientos.
Asistente para publicación en Web
Muestra datos de una tabla o vista en un documento HTML.
Servicio Web XML - Cuadro de diálogo Publicar
Permite publicar un servicio Web XML.

Secciones relacionadas

Referencia de interfaz de usuario
Explican las opciones que aparecen en diversos cuadros de diálogo, ventanas y otras interfaces de usuario. Normalmente estos tipos de temas aparecen cuando presiona F1 en un cuadro de diálogo o en una ventana.
Crear aplicaciones con el marco de aplicaciones
Explica cómo crear aplicaciones con el marco de aplicaciones utilizando el Asistente de aplicación y Generador de aplicación.
Generadores
Describe cómo los generadores son herramientas que ayudan a configurar las propiedades de los controles de un formulario. Al contrario de los asistentes, los generadores son reutilizables, por lo que puede volver a abrir un generador en un control en concreto repetidas veces.
Ventanas
Explica las opciones que aparecen en varios cuadros de diálogo, ventanas y otras interfaces de usuario.
Cuadros de diálogo
Explican las opciones que aparecen en varios cuadros de diálogo.
Diseñadores
Describe cómo los diseñadores facilitan el diseño visual de ventanas, cuadros de diálogo y componentes de su aplicación.


Asistente para aplicaciones

El Asistente para aplicaciones crea un Proyecto y un marco de aplicación mejorado de Visual FoxPro antes de abrir el Generador de aplicaciones para que pueda agregar una base de datos, tablas, formularios e informes creados anteriormente. En el Generador de aplicaciones puede crear también una nueva aplicación con plantillas de bases de datos o tablas.

Para acceder al Asistente de aplicaciones

  • Desde el menú Herramientas, seleccione Asistentes y haga clic en Aplicación.

El asistente mostrará un cuadro de diálogo en el que puede especificar el nombre y localización de su aplicación nueva.

Cuadro de diálogo Nombre del proyecto
Permite especificar el nombre del proyecto, este nombre se mostrará en la barra de título del proyecto.
Cuadro de diálogo Archivo de proyecto
Permite especificar el nombre y localización del nuevo proyecto.
Botón Examinar
Permite localizar un archivo de proyecto existente para utilizarlo en el Generador de aplicaciones.
Casilla de verificación Crear estructura de directorios del proyecto
Permite determinar si Visual FoxPro debe crear automáticamente la estructura de directorios para el proyecto. El asistente crea una plantilla que incluye todos los archivos de aplicación posibles, aunque pueda no necesitarlos todos. Si los archivos de su aplicación ya fueron creados, mantenga esta casilla sin seleccionar.

El Asistente de aplicación mostrará una ventana de espera que avisa que debe esperar a que genere la estructura de archivos necesaria de la aplicación Visual FoxPro y el marco de aplicación de Visual FoxPro. Cuando el proceso se completa, el asistente mostrará la ventana del proyecto nuevo y el Generador de aplicaciones para que pueda completar todos los detalles de su nueva aplicación.

Vea también

Generador de aplicaciones | Archivos del marco de aplicaciones | Objeto Application Framework de Visual FoxPro | Introducción a los asistentes | Miembros de objetos del Asistente para aplicaciones


Objeto Application del marco de Visual FoxPro

La clase mejorada _application del marco incluye, además de sus propiedades y métodos, cinco objetos: cuserror, cusdatasession, cuswindowhandler, custablesort y custablenav.

El objeto Application contiene el código de los métodos estándar e incluye un conjunto de métodos nuevos que proporcionan la mayor parte de la funcionalidad mejorada del marco de la aplicación en esta versión de Visual FoxPro. En _framewk.vcx encontrará más detalles de _application y de los objetos que contiene.

Vea también

Generador de aplicaciones | Introducción a los asistentes | Miembros de objetos del Asistente para aplicaciones | Asistente para aplicaciones


Miembros de objetos del Asistente para aplicaciones

Cuando un Asistente para aplicaciones crea un nuevo proyecto, genera automáticamente dos formularios para la nueva aplicación: un formulario Quick Start y un formulario About, derivados de los formularios wzQuickStartForm y Wzaboutdialog, de la biblioteca Appwiz.vcx.

Los formularios derivados son contenedores de los objetos siguientes.

Miembros de Wzaboutdialog

Objeto | Clase | Descripción
cmdOK | CommandButton | Libera el formulario.

Miembros de WzQuickStartForm

Objeto | Clase | Descripción
CmdClose | CommandButton | Cierra el formulario QuickStart.
CmdRun | CommandButton | Ejecuta el formulario actualmente seleccionado en el cuadro de lista.
LblForms | Label | Etiqueta de texto.
LstForms | ListBox | Contiene una lista de todos los formularios definidos en la aplicación, generada automáticamente en el método Init del cuadro de lista. Cuando el usuario hace doble clic en el nombre de un formulario, éste se ejecuta.

Vea también

Miembros de objetos del Asistente para aplicaciones | Introducción a los asistentes | Objeto Application del marco de Visual FoxPro


Asistente para tablas de referencias cruzadas

Este asistente crea una consulta de referencias cruzadas para resumir los datos de una tabla en un formato de planilla. .

Para acceder al Asistente de referencias cruzadas

  1. Desde el menú Herramientas, seleccione Asistentes y haga clic en Consulta.
  2. En el cuadro de diálogo de Selección de los asistentes, elija Asistente para tablas de referencias cruzadas.

Paso 1 - Seleccionar campos

En este paso, se puede elegir una tabla libre o una tabla dentro de una base de datos como la fuente de su tabla dinámica. Se pueden seleccionar sólo campos de una única tabla o vista. Para más información, vea Crear vistas.

Para seleccionar los campos para la consulta de referencias cruzadas

  1. Utilice los controles Bases de datos y tablas para ubicar y seleccionar la tabla que desee usar.
  2. En la ventana Campos disponibles, elija tres o cuatro campos que desee usar de la tabla seleccionada y use los botones con flechas para moverlos a la ventana Campos seleccionados.

Se necesitan elegir por lo menos tres campos, uno para valores de fila, otro para las columnas y otro para datos.

Paso 2 - Definir diseño

En este paso, puede especificar qué valores de campo serán calculados para los datos. Por ejemplo, si se tiene una tabla Orders que contiene, entre otros, un campo para ciudad, otro para región y otro para el monto de las órdenes, se puede tratar de crear una tabla dinámica que mostraría en el área de datos sumas para todas las ciudades por región. En la parte inferior, la tabla mostrará totales para cada columna. En el extremo derecho, la tabla mostrará los totales para cada fila.

Para definir el diseño de la referencia cruzada

  1. Desde la lista Campos disponibles, arrastre un campo al cuadro Fila. La consulta de tabla de referencias cruzadas contendrá una fila por cada valor único en el campo que se arrastre al cuadro Fila
  2. Desde la lista Campos disponibles, arrastre un campo al cuadro Columna. La consulta de tabla de referencias cruzadas contendrá una columna por cada valor único en el campo que se arrastre al cuadro Columna
  3. Desde la lista Campos disponibles, arrastre un campo al cuadro Datos. Como este campo será totalizado, generalmente es mejor arrastrar un campo numérico aquí.

Si se tiene una tabla grande, podría ser mejor crear primero una vista que contenga los campos deseados y luego crear una consulta de tabla de referencias cruzadas desde esa vista. Para más información, vea Crear vistas.

Paso 3 - Agregar información de resumen

En este paso, puede determinar si desea agregar una columna subtotal e información de resumen de sus datos. Para agregar información de resumen, seleccionar el botón de opción apropiado (Suma, Recuento, Promedio, Máximo o Mínimo) en la sección Resumen. Para agregar una columna subtotal, seleccionar el botón de opción apropiado (Suma de datos, Número de celdas que contienen datos o Porcentaje del total de la tabla) en la sección Subtotales. Si no se desea agregar una columna subtotal, seleccione el botón de opción Nada en la sección Subtotales. Los totales aparecerán en la columna del extremo derecho de los resultados de la consulta de tabla de referencias cruzadas.

Paso 4 - Finalizar

Este paso posibilita guardar y especificar el uso de la consulta de referencias cruzadas.

Guardar la consulta de tabla de referencias cruzadas
Guarda la consulta de tabla de referencias cruzadas para ser usada más tarde.
Guardar y ejecutar la consulta de tabla de referencias cruzadas
Guarda la consulta de tabla de referencias cruzadas y la ejecuta inmediatamente.
Guardar la consulta y modificar en el Diseñador de consultas
Guarda la consulta de tabla de referencias cruzadas y la abre en el Diseñador de consultas para que se pueda modificar.

Puede visualizar la consulta de tabla de referencias cruzadas pulsando el botón Vista previa. Para ver valores nulos, seleccione la casilla de verificación Mostrar los valores nulos.

En cualquier momento luego de guardar la consulta de tabla de referencias cruzadas, se puede abrir y modificar como cualquier otra consulta con los Diseñadores de consultas y vistas.

Vea también

Introducción a los asistentes | Asistente para consultas | Diseñador de consultas y de vistas | Crear consultas


Asistente para bases de datos

El Asistente para bases de datos utiliza plantillas predefinidas para ayudarle a crear una base de datos que contenga las tablas apropiadas.

Las plantillas siguientes son incluidas en Visual FoxPro.

Nota Puede utilizar el asistente de aplicación para crear una aplicación que utilice estas plantillas.
Plantilla | Descripción
Libreta de direcciones | Incluye una tabla para la libreta de direcciones personal.
Control de activos | Incluye tablas útiles para la documentación de activos y costos.
Libros | Incluye tablas útiles para la documentación de autores y libros.
Contactos | Incluye tablas útiles para la documentación y administración de contactos.
Donaciones | Incluye tablas útiles para la administración de campañas de donaciones.
Administración de eventos | Incluye tablas útiles para la planificación y administración de eventos y del personal.
Gastos | Incluye tablas útiles para la documentación de los gastos efectuados por los empleados y los informes asociados.
Inventario doméstico | Incluye tablas útiles para la administración de los muebles y equipos domésticos.
Control de inventario | Incluye tablas útiles para el control de inventario.
Contabilidad | Incluye tablas útiles para la administración de transacciones.
Asociaciones | Incluye tablas útiles para la administración de un club o asociación.
Colección musical | Incluye tablas útiles para la administración de colecciones de música.
Pedidos | Incluye tablas útiles para la administración de operaciones de recepción de pedidos.
Biblioteca de imágenes | Incluye tablas útiles para la administración de colecciones de películas y fotografías.
Recetas | Incluye tablas útiles para la administración de recetas culinarias.
Programación de recursos | Incluye tablas útiles para la especificación, programación y administración de recursos.
Servicio técnico – Llamadas | Incluye tablas útiles en la administración del personal del servicio técnico y de las llamadas que reciben.
Alumnos y clases | Incluye tablas útiles para la administración de alumnos, instructores, instalaciones y programas educativos.
Tiempo y facturación | Incluye tablas útiles para la administración de cuentas de empleados y clientes.
Colección de vídeos | Incluye tablas útiles para la administración de colecciones de cintas de vídeos.
Lista de vinos | Incluye tablas útiles para la administración de colecciones de vino.
Ejercicio físico | Incluye tablas útiles para el diseño y administración de un programa de preparación física.

Para acceder al Asistente para bases de datos

Para ejecutar el Asistente para bases de datos

  1. Abrir Visual FoxPro.
  2. Desde el menú Herramientas, seleccione Asistentes y haga clic en Base de datos.

Paso 1 – Seleccionar una Base de datos

En este paso, puede seleccionar una plantilla de base de datos de Visual FoxPro de la lista en la sección Seleccionar Base de datos. Para más información acerca de cada una de estas plantillas, vea la tabla previa. Alternativamente, puede especificar una base de datos de Visual FoxPro o seleccionar una plantilla de bases de datos de Access (.mdb) haciendo clic en el botón Seleccionar (Select). Este muestra el cuadro de diálogo Abrir desde el que puede localizar la base de datos remota para utilizar como plantilla.

Paso 2 – Seleccionar tablas y vistas

En este paso, puede escoger las tablas y vistas que desea incluir en su base de datos. La plantilla especificada en el paso 1 proporciona una lista de tablas y vistas pre-seleccionada. Seleccione las casillas de verificación para las tablas y vistas que desea utilizar en su base de datos.

Paso 3 – Ordenar las tablas

En este paso, puede determinar cómo desea indexar sus tablas. Puede seleccionar qué campo desea utilizar como clave de índice principal.

Puede especificar un campo como clave de índice primario

  1. En el cuadro de lista Seleccionar tabla (Select table), se realza la tabla que contiene el campo que desea utilizar.
  2. En el cuadro de lista Clave primaria (Primary key), se realza el campo que desea utilizar

Puede seleccionar también las casillas de verificación junto a las opciones que se ofrecen en la sección Nombre de campo (Field Name) para crear índices adicionales.

Paso 4 – Establecer relaciones

En este paso, puede establecer o cambiar las relaciones entre las tablas en la base de datos.

Para especificar las relaciones entre las tablas en la base de datos

  1. En el cuadro de lista Seleccionar tabla (Select table), se realza la tabla que contiene el campo que desea utilizar.
  2. En el cuadro de lista Mi nueva tabla X (My new X table) (con X comienza el nombre de la tabla), se resalta la expresión de la relación que desea modificar y luego haga clic en el botón Relación ... (Relationships…).
  3. En el cuadro de diálogo Relación (Relationships) haga clic en el radio button que se encuentra junto a la descripción del tipo de relación que desea crear. Puede seleccionar el campo clave o crear un nuevo campo al escribirlo en el cuadro de edición.
  4. Haga clic en Aceptar (OK). Esto lo devolverá al paso 4 donde una relación nueva o editada es listada en el cuadro de lista My new X table.

Paso 5 – Finalizar

En este paso, seleccione las opciones finales para su base de datos:

Guardar la base de datos para utilizarla después (Save database for later use)— Guarda la base de datos.

Guardar la base de datos y modificarla en el Diseñador de base de datos (Save database and modify it in the Database Designer) — Guarda su base de datos y la abre en el Diseñador de base de datos para su posterior modificación.

Llenar las tablas con datos de ejemplo (Populate tables with sample data) — llena la nueva base de datos con datos de ejemplos en la plantilla.

Después que el asistente genera la base de datos, puede añadir la base de datos a la ventana Administrador de proyecto o a la Galería de componentes, o puede abrir el Diseñador de base de datos para modificar las tablas de la base de datos y sus relaciones.

Vea también

Introducción a los asistentes | Ventana Administrador de proyectos | Introducción a la Galería de componentes | Diseñador de bases de datos


Asistente para documentación

El Asistente para documentación genera archivos de texto con un formato apropiado a partir del código de los proyectos y archivos de programas. Puede usar estos archivos par compartir el código o para leer más fácilmente largas secciones en proyectos y programas. Por ejemplo, el asistente puede aplicar sangrías al código fuente, poner en mayúsculas las palabras de uso reservado y las variables, y producir un informe que muestre todas las palabras clave del programa.

Nota El asistente no modifica el código y sólo crea un archivo de texto que sirve para documentar el código.

Puede personalizar la manera en que el Asistente para Documentación trabaja agregando ciertas directivas en su código. Para mas información, vea Personalizar el Asistente para documentación.

Para acceder al Asistente para Documentación

  • En el submenú Asistentes, del menú Herramientas, elija la opción Documentación.

Paso 1 – Elegir archivo de origen

Puede escribir el nombre de un archivo de proyecto o de un archivo de programa específico. Si elige un archivo de proyecto, el Asistente para documentación documentará todos los programas que componen el proyecto, con el código de eventos para formularios, el código de las bibliotecas de clases, etc.

Paso 2 – Definir uso de mayúsculas

Le permite elegir cómo usará el Asistente para documentación las mayúsculas en las palabras clave y símbolos que aparecen en el código. Se denominan palabras clave todas las palabras de uso reservado en el lenguaje de programación de Visual FoxPro, por ejemplo MODIFY. Los símbolos son las variables y nombres que define en el código. La capitalización facilita la lectura e identificación de elementos en su código. Las opciones de capitalización son:

MAYÚSCULAS
Todas las palabras clave y símbolos aparecen en mayúsculas.
minúsculas
Todas las palabras clave y los símbolos aparecen en minúsculas.
Mixto
Las palabras clave aparecen con la primera letra de cada "palabra" de la palabra clave en mayúsculas, por ejemplo: AddObject.
Coincidir con la primera aparición
Los símbolos aparecen, en cuanto al uso de mayúsculas y minúsculas, de la misma forma que la primera aparición de un símbolo en el archivo. Por ejemplo, si utiliza mayúsculas iniciales en la primera ocurrencia en un archivo, el resto de las ocurrencias de esas palabras claves se muestran de la misma manera, no importa cómo estén escritas en ocurrencias posteriores.
Sin cambios
No se modifican las palabras clave ni los símbolos.

Paso 3 – Definir sangrías

Le permite especificar de qué forma aplicará el Asistente para la documentación la sangría a las líneas del programa. El asistente puede aplicar la sangría a determinados tipos de líneas y puede definir cuántos espacios se usarán para la sangría. Funcionalmente, en código, no hay diferencia entre los espacios o las tabulaciones. Identar hace más fácil leer y entender su código.

Tipo de sangría
Seleccione si el asistente debe aplicar la sangría usando tabuladores o espacios en blanco. Para desactivar la sangría, elija la opción Sin cambios. Si selecciona Espacios, defina el número de espacios que desea usar en cada nivel de sangría. Si selecciona Tabulaciones, entonces el Asistente para Documentación usa la configuración actual de la ficha de configuración de Visual FoxPro.
Texto para aplicar sangría
Especifique el tipo de línea a la que el asistente debe aplicar la sangría. Las opciones son Comentarios, Estructuras de control (como bucles, bloques "IF" y estructuras DO CASE), y Líneas separadas por punto y coma (instrucciones que ocupan varias líneas).

Paso 4 – Agregar encabezados

Le permite especificar si el Asistente para documentación debe insertar o no encabezados en sus programas. Los encabezados son observaciones acerca del código, aplicables al código que les sigue. Pueden colocarse al principio de los archivos, procedimientos, definiciones de clases y métodos para hacer que el código con formato sea más fácil de leer.

Paso 5 – Seleccionar informes

Le permite especificar el tipo de informes que crea el Asistente para documentación. (Los informes son en realidad archivos de texto). El asistente puede producir los tipos de informes que se describen en la siguiente tabla.

Tipo de informe | Nombre de archivo | Observaciones
Diagrama de acción | project.act | Muestra las relaciones jerárquicas existentes en el código. Si no utiliza las páginas de códigos ASCII 1250 y ANSI 1252, consulte las instrucciones que aparecen en "*# document ACTIONCHARS", en Personalizar el Asistente para documentación.
Referencia cruzada | Xref.lst | Lista de todos los símbolos definidos por el usuario.
Lista de archivos | Files.lst | Lista de todos los archivos del proyecto.
Lista de códigos fuente | project.lst | Coloca todo el código con formato en un sólo archivo.
Diagrama de árbol | Tree.lst | Muestra el árbol de llamadas a procedimiento.

El asistente crea, también automáticamente, los siguientes archivos:

  • Files.dbf Tabla con un registro para cada archivo de un proyecto.
  • Fdxref.dbf Tabla con un registro para cada aparición de símbolos de usuario en el código (como es mostrado en la siguiente tabla) en el código. Esta tabla le permite ver que tipo de elemento de Visual FoxPro esta representado por cada símbolo.
Flag | Descripción
B | Clase de base
C | Nombre de clase
D | PROC o FUNC definido (no método)
F | Llamada a función: myproc( ) o DO myproc
K | Palabra clave
M | Definición de método
N | Nombre de archivo
O | Objeto
P | Propiedad de un objeto
R | Referencia de símbolo de usuario
V | Definición (PARA, PRIV, PUBL, DIME) de símbolos de usuario (variable)

Paso 6 – Finalizar

En este paso puede determinar la ubicación y estructura que contiene su código documentado. También puede especificar si el documento actual sobrescribe cualesquiera documentos anteriores.

De forma predeterminada, el asistente no sobrescribe archivos ya existentes. Para poder sobrescribir los archivos de código existentes con los nuevos que guarda el asistente, es necesario especificar Sobrescribir archivos existentes.

Si selecciona la opción Colocar archivos en un único directorio y, a continuación, hace clic en Finalizar, el asistente le indicará que elija un solo directorio para guardar todos los archivos que cree.

Si selecciona Colocar archivos en un nuevo árbol de directorio y, a continuación, hace clic en Finalizar, el asistente le pedirá que elija un directorio en el que creará una copia del árbol original del proyecto, y guardará los nuevos archivos de programa, con formato, en los directorios correspondientes del nuevo árbol.

Cuando selecciona la opción Referencia cruzada de palabras clave, el asistente crea una tabla de palabras clave denominada Fdxref.dbf o agrega a esa tabla nuevos elementos. Después de ejecutar el asistente, puede utilizar esa tabla para generar informes de las palabras clave utilizadas en su aplicación. El asistente agrega un registro a Fdxref.dbf para cada aparición de una palabra clave de Visual FoxPro en el código.

Cuando se selecciona esta opción, el asistente compara las palabras clave que aparecen en el código con el primer campo, denominado Token, del archivo Fdkeywrd.dbf. Este archivo puede estar dentro de la carpeta \Wizards del directorio raíz de Visual FoxPro y contiene todas las palabras reservadas de Visual FoxPro. La segunda columna de Fdkeywrd.dbf, Código, contiene un identificador que indica al asistente cómo debe tratar la palabra clave cuando analiza su código. La siguiente tabla describe estos códigos identificadores.

Código | Descripción
I | Sangría
U | Quitar sangría
R | Restablecer sangría en 0 (o en 1, si está en DefineClass)
F | Procedimiento o función
D | While o Case: instrucción DO
O | Objeto (Spinner, CommandButton)
P | Propiedad (Scalemode, DecimalPoints)
M | Método (Init, KeyPress)
C | Cláusula usada sólo como cláusula: no puede comenzar una instrucción

Nota Según el tamaño de su código, esta opción puede hacer ampliar el archivo Fdxref.dbf con un número muy grande de registros. Antes de ejecutar el asistente y elegir la opción de creación de referencias cruzadas de palabras clave, debe comprobar que tiene espacio suficiente en disco.

Si selecciona Ejecutar analizador, el asistente inicia el Analizador de código de Visual FoxPro. El Analizador de código realiza un seguimiento dinámico de la estructura y los símbolos de los archivos de aplicación de Visual FoxPro. El Analizador de código proporciona controles visuales, un menú y opciones de teclado para desplazarse a través del código del archivo de la aplicación, utilizando la salida del Asistente para documentación.

Vea también

Personalizar el Asistente para documentación | Introducción a los asistentes | Analizador de código (Ejemplo)


Personalizar el resultado del Asistente de Documentación

Además de las opciones que puede elegir al ejecutar el Asistente de Documentación, puede personalizar otras opciones fuera del asistente mediante la edición de la tabla Fdkeywrd.dbf, que contiene todas las palabras reservadas de Visual FoxPro, en el directorio ..\Wizards o agregar directivas al código mediante el asistente de Documentación.

Cambiar el Fdkeywrd.dbf

Puede cambiar el estilo de la sangría en una estructura CASE cambiando el valor del campo en Fdkeywrd.dbf. De forma predeterminada, el asistente busca una sangría en una estructura CASE como se muestra a continuación:

DO CASE
CASE case1=1
case2=2
CASE case3=3
case4=4
ENDCASE

Algunos programadores prefieren aplicar una sangría adicional (un nivel más) a las líneas entre DO CASE y ENDCASE, como muestra este ejemplo:

DO CASE
CASE case1=1
case2=2
CASE case3=3
case4=4
ENDCASE

Si aplica sangría a las estructuras CASE como en el segundo ejemplo, debe especificarlo en Fdkeywrd.dbf.

Para especificar sangrías jerarquizadas en las instrucciones DO CASE

  1. Ubicar el archivo Fdkeywrd.dbf en el directorio ..\Wizards en el directorio raíz de Visual FoxPro.
  2. Abrir la tabla Fdkeywrd.dbf.
  3. Ubicar el registro ENDCASE.
  4. Cambiar el valor del campo Code a UU.

Agregar Directivas al Asistente

puede colocar directivas especiales en su código que obliguen al asistente de Documentación realizar tareas específicas cuando analice el código. Las directivas del asistente son:

ACTIONCHARS
Especifica los caracteres a ser usados en los diagramas de árbol o acción del código. Puede que desee cambiar los valores predeterminados si utiliza páginas de código diferentes a ASCII 1250 o ANSI 1252 en FoxFont para conseguir el carácter que desea.
EXPANDKEYWORDS
Especifica si activa o no la expansión de las palabras clave en el asistente de Documentación. El valor predeterminado es OFF, que conserva las palabras clave como fueron escritas. Si ha utilizado las abreviaciones de cuatro caracteres en su código, puede que desee hacer la lectura mas fácil si activa la expansión de palabras clave con el valor ON.
XREFKEYWORDS
Especifica si el asistente crea un archivo que contiene todas las palabras clave y su ubicación dentro del código. El archivo contiene los nombres de las palabras clave, tipo (de acuerdo a la tabla Fdxref.dbf, como se describe en el Paso 5 del Asistente de Documentación), la línea donde esta ubicada, y el archivo que la contiene. El valor predeterminado es ON.
ARRAYBRACKETS
Establece si los corchetes "[]" y paréntesis "()" son tratados de forma diferente. El valor predeterminado es ON, toma a los corchetes como delimitadores de matrices y los paréntesis como delimitadores de funciones o métodos.
ACTIONINDENTLENGTH
Especifica el número de espacios que utiliza el asistente para la sangría en los diagramas de árbol y acción. El valor mínimo es de dos caracteres. Particularmente no se diferencia entre espacios o tabulaciones en el código. La sangría hace mas fácil la lectura y comprensión del código.

Puede ubicar las directivas del asistente en el programa principal del proyecto (para obligar al asistente a analizar todos los archivos de código del proyecto) o en cada archivo de código (para obligar al asistente a analizar archivos específicos).

La sintaxis de las directivas comienza con un asterisco, para que Visual FoxPro los trate como observaciones y los pase por alto al compilar los programas. Las directivas no distinguen entre mayúsculas y minúsculas. La sintaxis de estas directivas es :

*# document directive

Para la consistencia a través de su código, Es aconsejable colocar las directivas cerca del comienzo del archivo del programa principal, para que el Asistente para documentación las encuentre cuando comience el análisis.

Las directivas del asistente de Documentación se describen a continuación.

*# document ACTIONCHARS "abcdef"
De forma predeterminada, cuando el asistente crea un Diagrama de acción o un Diagrama de árbol, utiliza seis caracteres que aparecen como líneas rectas y esquinas si se utilizan las páginas de códigos ASCII 1250 o ANSI 1252 en FoxFont. No todos estos caracteres están asignados a caracteres de línea cuando se ven en otras páginas de códigos. Los seis caracteres predeterminados y sus correspondientes caracteres FoxFont son los que se indican a continuación como a, b, c, d, e y f.
abcdef | Valor Chr( ) predeterminado | Cómo se ve en FoxFont
a | 32 | (espacio)
b | 196
c | 179
d | 218
e | 192
f | 195
Sugerencia Cuando utilice otras páginas de códigos, inserte el siguiente código en el archivo del programa principal para garantizar que las líneas de los diagramas se asignen a caracteres similares a líneas (el primer carácter de la cadena de caracteres que aparece entre comillas es un espacio en blanco):
*# document ACTIONCHARS " -|+++"
Nota Si desea ver una lista con las páginas de códigos compatibles, consulte Páginas de códigos compatibles con Visual FoxPro.
*# document XREF cMode
Activa las referencias cruzadas de variables. El valor predeterminado es activado (ON).
cMode | Descripción
ON | Activa las referencias cruzadas de variables
OFF | Desactiva las referencias cruzadas de variables
SUSPENDER Desactiva las referencias cruzadas de variables en el archivo actual, hasta que el Asistente para documentación encuentre la siguiente aparición de:

*# document XREF ON
*# document EXPANDKEYWORDS cMode
Activa la expansión de las palabras clave abreviadas en el código. Por ejemplo, "DEFI WIND" ser escrito como "DEFINE WINDOW." El valor predeterminado es OFF.
Precaución No todas las palabras clave de Visual FoxPro comienzan con una cadena única de cuatro caracteres. Por ejemplo, "REPL" puede ser la abreviatura de "REPLACE" o "REPLICATE". Extreme las precauciones si incluye esta directiva y elige sobrescribir los archivos existentes.
cMode | Descripción
ON | Activa la expansión de palabras clave
OFF | Desactiva la expansión de palabras clave
SUSPENDER Desactiva la expansión de palabras clave en el archivo actual, hasta la siguiente aparición de:

*# document EXPANDKEYWORDS ON
*# document XREFKEYWORDS cMode
Esta directiva corresponde a la opción Referencia cruzada de palabras clave del "Paso 6 – Finalizar" del Asistente para documentación. El valor predeterminado es OFF.
cMode | Descripción
ON | Activa las referencias cruzadas de palabras clave
OFF | Desactiva las referencias cruzadas de palabras clave
SUSPENDER Desactiva las referencias cruzadas de palabras clave para el archivo actual, hasta la siguiente aparición de:

*# document XREFKEYWORDS ON
*# document ARRAYBRACKETS cMode
El valor predeterminado es OFF.
cMode | Descripción
ON | El Asistente para documentación supone que se usan corchetes para las matrices y paréntesis para las funciones y métodos.
OFF | El Asistente para documentación trata los corchetes y paréntesis como matrices.
*# document ACTIONINDENTLENGTH nSpace
nSpacees el número de caracteres espacio que desea que el Asistente para documentación use para la sangría. El valor mínimo permitido es 2.

Vea también

Asistente para documentación | Introducción a los asistentes | Páginas de códigos compatibles con Visual FoxPro


Asistente para formularios

Este asistente facilita crear un formulario para la entrada de datos a partir de una sola tabla. El asistente rellenará el formulario automáticamente con todos los campos de la tabla, así se puede eliminarlos o arreglarlos según las necesidades. El tamaño del formulario depende del valor del Área de diseño máxima en la ficha Formularios del cuadro de diálogo Opciones. La asignación de campos (que muestra un formulario) es controlada por las configuraciones en la ficha Asignación de campos del cuadro de diálogo Opciones, del menú Herramientas. Esta ficha no está disponible mientras el Asistente para formularios está abierto.

Para ejecutar el Asistente para formularios

  1. En el submenú Asistentes del menú Herramientas, seleccione la opción Formulario.
  2. En el cuadro de diálogo de Selección de los asistentes, elija Asistente para formularios.

Si crea un formulario en una base de datos, el Asistente para formularios puede usar la máscara de entrada y la configuración del formato guardados en la base de datos. Una vez guardado el formulario, puede abrirlo y modificarlo como cualquier otro formulario, con el Diseñador de formularios.

Paso 1 - Seleccionar campos

En este paso, puede elegir una tabla libre o una tabla dentro de una base de datos como fuente de datos para su formulario. Solo puede seleccionar campos de una única tabla o vista.

Para seleccionar los campos para su formulario

  1. Utilice los controles Bases de datos y tablas para localizar y seleccionar la tabla que quiere utilizar.
  2. En el cuadro de lista Campos disponibles , seleccione uno o más campos a ser usados de la tabla seleccionada y use los botones direccionales para moverlos al cuadro de lista Campos seleccionados .

Paso 2 - Elegir el estilo del formulario

Permite especificar la apariencia que tendrán los controles del formulario. Cuando haga clic en cualquiera de los estilos mostrados en el cuadro de lista Estilo , el asistente mostrará una imagen en la lupa como ejemplo de dicho estilo.

El tipo de botón se aplica a los botones de desplazamiento del formulario.

Botones de texto
Pone texto de navegación en los botones de su formulario.
Botones con imagen
Pone íconos de navegación en los botones de su formulario.
Sin botones
No pone botones en su formulario, así puede evitar la navegación más allá de los datos mostrados o ingresados.
Personalizado
Permite elegir entre dos tipos de formularios con desplazamiento de datos en pantalla.
  • Cuadrícula con desplazamiento - Muestra los campos seleccionados de un registro a la vez.
  • Cuadrícula con desplazamiento (justificado) – Muestra los campos seleccionados de muchos registros, de una sola vez, tantos cuantos quepan en el formulario.

Los botones de desplazamiento que el asistente crea en el formulario son los siguientes.

Botón | Icono | Descripción
Primero |  | Mueve el puntero de registro al primer registro.
Anterior |  | Mueve el puntero de registro un registro hacia atrás.
Siguiente |  | Mueve el puntero de registro un registro hacia delante.
Último |  | Mueve el puntero de registro al último registro.
Buscar |  | Muestra el cuadro de diálogo Buscar.
Imprimir |  | Imprime un informe.
Agregar |  | Agrega un nuevo registro al final de la tabla.
Modificar |  | Permite al usuario cambiar valores en el registro actual.
Eliminar |  | Elimina el registro actual.
Salir |  | Cierra el formulario.
Nota Una vez que el asistente guarde un formulario, puede agregarle campos adicionales con los mismos estilos, seleccionando Formulario rápido en el menú Formulario para que aparezca el Generador de formularios.

Todos los controles creados por el Asistente para formularios y el Generador de formularios se encuentran en el directorio Wizards\Wizstyle.vcx. Si desea modificar los estilos, modifique las clases de este archivo con el Diseñador de clases.

Paso 3 - Ordenar los Registros

Seleccione los campos en el orden en que desee ordenar los registros en cada grupo. Por ejemplo, si está usando dos campos, uno llamado nombre y otro apellido, entonces puede elegir ordenar por nombre+apellido (como en PaulWilson) o por apellido+nombre (como en WilsonPaul). Cómo se ordena es determinado por el orden en el cual se selecciona estos campos.

Si su tabla ya tiene uno o más índices, puede seleccionar una etiqueta, que se lista abajo de los campos en el cuadro de lista Campos disponibles o etiqueta de índice.

Paso 4 - Finalizar

Si elige un gran número de campos en el Paso 1 – Seleccionar campos y desea asegurarse de que hay espacio para todos en el formulario, seleccione Agregar páginas para campos que no caben. De lo contrario, si el número de campos excede el tamaño del formulario, Visual FoxPro proporcionará un formulario con desplazamiento en pantalla.

Puede utilizar las asignaciones de campos especificadas en el cuadro de diálogo Opciones del menú Herramientas, o sustituirlas por la información contenida en la propia base de datos. Para obtener una vista previa del formulario antes de salir del Asistente para formularios, haga clic en el botón Vista previa .

Una vez guardado el formulario, puede abrirlo y modificarlo como cualquier otro formulario, con el Diseñador de formularios.

Vea también

Introducción a los asistentes | Ficha Formularios, cuadro de diálogo Opciones | Diseñador de formularios


Asistente para gráficos

El Asistente para gráficos crea un gráfico a partir de una tabla utilizando Microsoft Graph. Puede utilizar el tipo de gráfico que desee para facilitar la visualización o evaluación de los datos contenidos en grandes tablas o reportes de muchas hojas.

Cuanto mayor sea la tabla, más tiempo tardará el asistente en procesar el gráfico. Puede considerar la posibilidad de limitar el alcance de los registros en una tabla grande, creando una vista antes de ejecutar el Asistente para gráficos. Para más información, vea Crear consultas.

Para ejecutar el Asistente para gráficos

  1. En el submenú Asistentes del menú Herramientas, elija la opción Consulta.
  2. En el cuadro de diálogo Selección de los asistentes, elija Asistente para gráficos.

Paso 1 - Seleccionar campos

En este paso, puede elegir una tabla libre o una tabla de una base de datos como el origen para su gráfico. Esto puede normalizar el ingreso de datos en los formularios y, por consiguiente, sus tablas de datos. Sólo puede seleccionar campos desde una única tabla o vista. Esta selección debe incluir al menos un campo numérico.

Para seleccionar los campos para un gráfico

  1. Use el control Base de datos y tablas para ubicar y seleccionar la tabla que desee utilizar.
  2. En la ventana Campos disponibles, seleccione uno o más campos de la tabla seleccionada, que desee utilizar y, use los botones de flechas para moverlos a la ventana Campos seleccionados.
    Nota Si elige un campo general o de automatización en este paso, el campo no estará disponible en el siguiente paso para definir el diseño del gráfico.

Paso 2 – Definir el diseño

En este paso, especifique cual campo numérico se grafica y cual proporciona las divisiones. Arrastre un o más campos numéricos disponibles desde la ventana Campos disponibles a la ventana Series de datos. Arrastre otros campos desde la ventana Campos disponibles al cuadro Ejes debajo de la imagen gráfico. Por ejemplo, en una tabla que contiene salarios como un campo numérico, podría elegir el campo salario y un campo nombre o región para graficar contra salarios.

Paso 3 - Seleccionar estilo de gráfico

En este paso selecciona un estilo de gráfico que presente efectivamente la información. Cada estilo dibuja los datos en diferente forma. Observe las imágenes de los botones para elegir el estilo que necesite. La siguiente lista resume los tipos de gráficos disponibles:

Area y 3D área
Indica la importancia relativa de valores sobre un período de tiempo y, enfatiza la cantidad de los cambios en lugar del porcentaje.
Barra y 3D barra
Indica valores de elementos discretos relativos entre sí. Esto es similar a un gráfico de columna pero ordenado verticalmente.
Columna y 3D columna
Indica la variación sobre un período de tiempo o dibuja comparaciones entre elementos discretos. La matriz horizontal de columnas sugiere un flujo de tiempo mas que un diagrama barras.
Pastel y 3D pastel
Indica las relaciones o proporciones de partes de un todo. Este tipo de gráfico siempre contiene sólo una serie de datos.
Línea y cinta (3D línea)
Indica tendencias o cambios en datos sobre un período de tiempo. Esto es similar a un gráfico de área, pero enfatiza el flujo de tiempo y tasa de cambio antes que la cantidad del cambio.
Dispersión (XY)
Indica la relación o grado de relación entre valores numéricos en diferentes grupos de datos. Este tipo de gráfico es útil para determinar patrones o tendencias y para determinar si las variables son independientes o afectan unas a otras.

Paso 4 - Finalizar

En este paso, especifica la forma en que se muestra el gráfico y si mostrará el nombre del campo numérico seleccionado y los valores nulos. Puede guardar el gráfico en un formulario, puede usar el gráfico en un informe guardándolo en una tabla o puede crear una consulta que genere el gráfico.

Guardar en un formulario

Si elige guardar el gráfico en un formulario, el asistente crea un formulario que contiene el gráfico y opcionalmente, una leyenda de los valores graficados.

Guardar en una tabla

Puede elegir guardar el gráfico en una tabla, el asistente crea una tabla con un único registro que contiene un campo General que almacena un objeto Automation para su gráfico. Después puede incluir este campo en un informe. Después de que el asistente haya terminado, mantiene la nueva tabla abierta. Para ver el gráfico, examine la nueva tabla y haga doble clic en el campo Olegraph.

Crear una consulta

Si elige crear una consulta, el asistente guarda una consulta que envía sus resultados al gráfico que ha especificado. Después de que el asistente guarda la consulta, pude abrirla y modificarla como cualquier otra consulta en el Diseñador de consultas.

Casilla de verificación Mostrar valores nulos
Especifica que el gráfico represente cualquier valor nulo así como todos los valores positivos y negativos. Por ejemplo, podría ser importante para su presentación mostrar que no sucede nada en días particulares o con clientes particulares.
Casilla de verificación Agregar leyenda al gráfico
Especifica que el gráfico incluya una leyenda nombrando los valores graficados. Esto ayuda a que su gráfico y sus datos sean más legibles.
Botón Vista previa
Le permite ver el gráfico antes de guardarlo en un archivo de formulario, tabla o consulta.

Vea también

Ejecutar consultas | Asistente para tablas de referencias cruzadas | Asistente para vistas locales | Asistente para consultas | Asistente para vistas remotas | Introducción a los asistentes | Crear consultas


Asistente para importar

Puede utilizar el Asistente para importar, para transferir datos a archivos de tabla (.dbf) de Visual FoxPro desde otros formatos de archivos, como texto plano, Microsoft Excel o Word u otros archivos. Por ejemplo, podría tener una lista de nombres y direcciones en un archivo Word que será más fácil de utilizar y más efectivo, si estan en una tabla de Visual FoxPro.

Para ejecutar el Asistente para importar

  • En el submenú Asistentes del menú Herramientas, elija Importar.

Paso 1 – Describir datos

En este paso, identifique el tipo y ubicación de los datos que desea importar.

Lista de Tipos de archivo
Proporciona una lista de tipos de archivo conocidos del que se debe elegir uno.

Archivo de origen
Le permite elegir o especificar un nombre y ubicación de archivo. Si no está en la lista, puede utilizar el botón Buscar para encontrar el archivo.
Nueva tabla
Cuando especifica el nombre de un archivo de destino y su ubicación, el asistente pregunta por el nombre de una nueva tabla en el mismo directorio. El cuadro de texto le permite especificar un nombre o localización diferente para el archivo de destino. Puede utilizar el botón Buscar para especificar otro nuevo archivo y ubicación.
Tabla existente
Si elige este botón, el cuadro de texto le permite especificar el nombre y ubicación de un archivo existente. Si no lo sabe, puede usar el botón Buscar para encontrar el archivo.

Paso 1a – Seleccionar una base de datos

En este paso puede especificar una base de datos a la cual se agregará su tabla. También puede decidir importar sus datos en una tabla libre. Si elige una base de datos, obtiene algunas ventajas como la opciones de formato automático y personalizado. Para más información sobre las ventajas de las bases de datos, consulte Crear una base de datos

Paso 2 – Determinar el formato de datos

En este paso, puede especificar la manera de cómo se formatearán los datos importados, con o sin caracteres delimitadores entre campos o columnas, y filas o como una única columna de ancho fijo. También puede especificar donde desea empezar a importar los datos dentro del archivo.

Delimitados
Especifica que los campos en el archivo están separados por un carácter, como por ejemplo una coma (,) o un punto y coma (;).
Ancho fijo
Especifica que los campos en el archivo está alineados en columnas de ancho fijo.
Nombres de campo en la fila
Permite que especifique la fila de datos importados que contiene los nombres de los campos. Por ejemplo, si la primera línea de los datos importados contiene los nombres de los campos, establezca Nombres de campo en la fila como 1. Si los nombres de los campos no son parte de los datos importados, desde el Paso 3, puede especificar los nombres de los campos para incluír en la nueva tabla.

El Asistente para importar automáticamente reemplaza espacios con subrayados y reduce los nombres de los campos a máximo 10 caracteres de longitud.

Empezar a importar en la fila
Permite especificar la fila en que se empiezan a importar los datos del archivo. Esta opción permite evitar la cabecera de los campos importados.

Si está importando desde una hoja de cálculo, este paso ofrece un lista de hojas disponibles en la hoja de cálculo seleccionada.

Paso 2a – Describir datos o Establecer columnas

Este paso sólo aparece si ha elegido importar un archivo de texto (.txt). Dependiendo del formato de datos que elija en el paso 2, obtendrá una de dos opciones para el paso 2a: Describir datos o Establecer columnas.

Describir datos

Este paso aparece si selecciona Delimitado como Formato de datos en el paso 2. Seleccione qué delimitador separa las cadenas de texto en el archivo seleccionado. Vea el efecto del delimitador seleccionado en la cuadrícula situada en la parte inferior de este cuadro de diálogo del asistente.

Establecer columnas

Este paso aparece si seleccionó Ancho fijo como el Formato de datos en el paso 2. Puede utilizar la cuadrícula en la parte inferior para especificar más columnas haciendo clic sobre los datos mostrados, para que la información importada esté dividida en campos discretos.

Paso 3 - Definir los campos importados

En este paso se especifica el nombre de las columnas de la tabla, el tipo de datos de las columnas y el ancho de las columnas. Haga clic en una columna de la cuadrícula y edite la información en Nombre, Tipo, Ancho y Decimales.

Si no desea importar una columna específica, haga clic en la cabecera y luego presiones DELETE. El espacio de la columna permanece visible (sin nombre de cabecera), pero cuando termine el asistente e importe los daos esa columna se ignora.

Hoja de cálculo
Especifica el nombre de la hoja de cálculo si está importando un archivo de Excel.
Cuadrícula
Para un archivo de texto esta cuadrícula muestra, en la parte inferior del cuadro de diálogo del asistente, el número de registros y datos como se encuentran en el archivo. Para otros tipos de archivos, muestra los datos del archivo como aparecerán cuando haya terminado con el Asistente Importar.

Paso 3a – Especificar opciones internacionales

En este paso, puede especificar configuraciones alternativas para internacionalización de los datos importados en la tabla. Puede elegir cambiar el código de páginas, símbolo de moneda, separador de miles, separador decimal y formato de fecha.

Página de códigos
Cambiar la página de códigos puede afectar la forma en que aparece su gráfico, ya que los caracteres que forman líneas y esquinas difieren entre páginas de códigos. Esta opción permite seleccionar una página de códigos admitida por Visual FoxPro.
Símbolo de moneda
Esta configuración permite sobrescribir la configuración de moneda predeterminada para el archivo creado por este asistente.
Separador de miles
Esta configuración permite sobrescribir el separador de miles predeterminado para el archivo creado por este asistente.
Separador decimal
Esta configuración permite sobrescribir el separador decimal predeterminado para el archivo creado por este asistente.
Formato de fecha
Esta opción permite seleccionar uno de los formatos de fecha admitidos por Visual FoxPro. Para más información, consulte Dateformat (Propiedad).

Vea también

Introducción a los asistentes | Asistente para gráficos | Importar datos con el asistente para importar | Importar y exportar datos | Desarrollar aplicaciones internacionales | Dateformat (Propiedad)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Asistente para etiquetas

Puede utilizar el Asistente para etiquetas para crear etiquetas que puede pegar a sobres y paquetes o usar en la situación que necesite. Estas etiquetas se generan desde los datos de una tabla.

Para ejecutar el Asistente para etiquetas

  • En el menú Herramientas, elija Asistentes y haga clic en Etiqueta.

Paso 1 – Seleccionar tablas

En este paso, seleccione una tabla o vista como el origen para las etiquetas. Si utiliza una tabla, obtendrá todos los campos de la tabla para usarlos en la etiqueta. Eligiendo una vista permite preseleccionar ciertos registros o ciertos campos en cada registro de una tabla. Para más información, consulte Crear vistas.

Paso 2 - Elegir el tipo de etiqueta

En este paso puede elegir una etiqueta estándar o personalizada, por nombre, tamaño y columnas disponibles.

El asistente lista los tipos de etiquetas estándar que están instalados con Visual FoxPro. El asistente también lista cualquier tipo de etiqueta que haya creado utilizando la aplicación AddLabel de la carpeta \Tools de Visual FoxPro.

También puede lanzar el asistente Agregar etiqueta haciendo clic en el botón Nueva etiqueta. Para más información, vea Addlabel.app (Ejemplo).

Paso 3 – Definir el diseño

En este paso, seleccione los campos que desea utilizar en la etiqueta y especifique el diseño, fuente cualquier texto que desee que aparezca en la etiqueta.

Agregue los campos en el orden que desea que aparezcan en la etiqueta. Puede utilizar los botones coma, punto, dos puntos, guión, Enter y Espacio para formatear la etiqueta. Utilice el cuadro Texto para agregar texto. También puede utilizar el botón Fuente para cambiar la fuente usada en las etiquetas.

A medida que agregue elementos a la etiqueta, la imagen en la ventana del asistente se actualiza para mostrar aproximadamente como se verá la etiqueta. Compruebe esta imagen para ver si los campos que ha elegido se adaptan a la etiqueta. Las líneas de texto se extenderán más allá del borde inferior si hay muchas líneas.

Paso 4 – Ordenar los registros

En este paso, puede especificar el orden de clasificación de sus etiquetas. Por ejemplo, si son para etiquetas postales, podría ordenarlas por ciudad, estado o código postal. Sin embargo, si son para carpetas podría desear ordenarlas alfabéticamente por nombres.

Seleccione los campos o etiqueta de índice para el orden en que desea ver clasificados los registros.

Paso 5 - Finalizar

En este paso, elija como guardar las etiquetas. Puede guardarlas para uso posterior; puede guardarla y modificarla en el diseñador de etiquetas, el cual permite usar una de las etiquetas predefinidas como una base para una etiqueta personalizada de su propio diseño; o imprimir las etiquetas inmediatamente desde Visual FoxPro.

Puede elegir Vista previa para verificar las selecciones antes de finalizar.

Vea también

Introducción a los asistentes | Asistente para importar | Asistente para gráficos | Trabajar con tablas | Proceso de importación de datos | Páginas de código en Visual FoxPro


Asistente para vistas locales

Crea vistas, las cuales son muestras personalizadas de toda la información, utilizando datos nativos de Visual FoxPro. Podría desear utilizar una vista si la cantidad de datos en el origen es grande, pero sólo necesita mostrar una porción particular de esos datos. Si no tiene una base de datos abierta, se le pedirá que abra o cree una base de datos.

Para ejecutar el Asistente para vistas locales

  1. En el submenú Asistentes del menú Herramientas, elija la opción Consulta.
  2. En el cuadro de diálogo Selección de los asistentes, elija Asistente para vistas locales.

Paso 1 – Seleccionar campos

En este paso, se especifica cuales tablas o vistas de la base de datos de Visual FoxPro desea utilizar como origen para la vista local. Una vista puede reunir información de una o más tablas en una sola presentación de información. Una vista local, a diferencia de una ventana Examinar, permite crear presentaciones muy efectivas, quizás simples, de orígenes de datos grandes y complejos.

Puede seleccionar campos de varias tablas o vistas. Primero, seleccione campos de una tabla o vista y muévalos al cuadro Campos seleccionados; luego seleccione campos de otra tabla o vista y muévalos al mismo cuadro.

Paso 2 – Relacionar tablas

Este paso se muestra sólo si selecciona campos de varias tablas o vistas. Puede especificar cuales campos en cada tabla o vista contienen la misma información y por lo tanto pueden usarse para establecer la relación entre tablas o vistas, y en consecuencia establecer los registros incluidos.

Seleccione los campos deseados de dos cuadros de lista desplegables y después elija Agregar. Si utiliza múltiples tablas en su vista, entonces debe relacionar las tablas indicando cuales campos contienen datos coincidentes en cada tabla.

Paso 2a – Incluir registros

Este paso sólo se muestra si seleccionó campos de varias tablas o vistas, puede especificar cuales registros de las tablas seleccionadas quedan disponibles para el Asistente para vista locales.

Si está usando varias tablas, puede especificar una condición de combinación. Para más información, vea Crear vistas con múltiples tablas. Por ejemplo, si especifica Sólo filas coincidentes en el Paso 2a, podrá refinar esa elección en el Paso 3 especificando un valor particular par un campo.

Sólo filas coincidentes
Devuelve solamente los registros de ambas tablas que coinciden con la condición de comparación establecida entre los dos campos en la condición de combinación. Esto se llama una combinación interna.
Todas las filas de esta tabla
Devuelve todos los registros de una de las tablas o vistas listadas. Esto permite crear una combinación externa izquierda o derecha.
Todas las filas de las dos tablas
Devuelve todos los registros de las dos tablas coincidentes o no. Esto se llama una combinación externa.

En forma predefinida sólo se incluyen los registros coincidentes.

Paso 3 – Filtrar registros

Este paso aparece inmediatamente después del Paso 1 si eligió sólo una tabla o vista como origen para la consulta. Se puede especificar una condición de filtro, así sólo ciertos registros de los elegidos estarán disponibles para utilizarlos en la vista local.

Para determinar la condición de filtro

  1. Seleccionar un campo de lista desplegable Campos.
  2. Especifica un operador, como es igual o contiene, en la lista desplegable Operador.
  3. Especifica un valor en el cuadro de texto Valor.

    Por ejemplo, si desea filtrar para una ciudad específica, como Helena, podría elegir city en la lista desplegable Campos, elija es igual en la lista desplegable Operador, e ingrese Helena en el cuadro de texto Valor.

Puede reducir el número de registros creando expresiones que filtren registros desde tablas o vistas seleccionadas. Puede crear dos expresiones y conectarlas con And, el cual sólo devuelve los registros que cumplen ambos criterios especificados, u Or, el cual devuelve registros que cumplan uno de los dos criterios.

Puede ver el resultado haciendo clic en el botón Vista previa.

Paso 4 - Ordenar registros

Este paso permite especificar uno o más campos por los cuales se clasifican los registros en la vista local.

Elija hasta tres campos o una etiqueta de índice existente en la base de datos para determinar el orden en el cual se muestran los resultados. Seleccione Ascendente para clasificar la vista en orden ascendente o Descendente para clasificar la vista en orden descendente.

Paso 4a – Limitar registros

Este paso aparece sólo si se especificaron uno o más campos en el Paso 4. Además puede limitar el número de registros en la vista, basado en un porcentaje de registros devueltos o en el número actual de registros.

Para ver un porcentaje de registros disponibles, elija el botón de opción Porcentaje de registros, y entonces especifique el porcentaje en el cuadro Valor de la porción. Puede ver todos los registros seleccionando Número de registros y luego seleccionar Todos los registros. Como se muestra en los siguientes procedimientos, puede elegir una porción de registros desde el comienzo o el final de los registros disponibles.

Para ver los primeros 10 registros

  1. Elija el botón de opción Número de registros
  2. Ingrese 10 en el cuadro Valor de la porción.

Para ver los últimos 10 registros.

Nota Esto cambia el orden de clasificación último registro = primero leído.

  1. En el Paso 4, cambie el orden de clasificación a Descendente.
  2. En el Paso 4a, seleccione el botón de opción Número de registros.
  3. Ingrese 10 en el cuadro Valor de la porción.

Paso 5 - Finalizar

En este paso, puede elegir cómo guardar la vista local.

Guardar la vista local
Permite guardar la vista local para usarla después.
Guardar vista local y ejecutarla
Permite guardar la vista local y ejecutarla inmediatamente
.
Guardar vista local y modificarla en el Diseñador de vistas locales
Permite guardar la vista local y luego usar el Diseñador de vistas locales para modificarla.

Vea también

Definir resultados | Crear relaciones persistentes | Agregar tablas a bases de datos | Asistente para tablas de referencias cruzadas | Asistente para gráficos | Asistente para consultas | Asistente para vistas remotas | Introducción a los asistentes | Diseñador de vistas


Asistente para combinar correspondencia

Crea un origen de datos para un documento combinado de Microsoft Word como una carta, etiquetas postales, sobres o catálogos o un archivo de texto que puede utilizar en cualquier procesador de textos.

La instalación de Visual FoxPro puede instalar la funcionalidad ODBC a través del Visual FoxPro OLE DB Provider. Para información acerca de documentos combinados, vea la ayuda de Microsoft Word. Para mayor información, consulte Proveedor OLE DB de Visual FoxPro.

Para ejecutar el Asistente para combinar correspondencia

  • En el submenú Asistentes del menú Herramientas, elija Combinar correspondencia.

Paso 1 – Seleccionar campos

Este paso permite especificar los campos que contienen la información que desea utilizar con el documento combinado, el cual puede ser un documentos Word o un archivo de cualquier procesador de textos. Sólo puede seleccionar campos desde una única tabla o vista.

Paso 2 - Elegir procesador de textos

En este paso especifica si creará un archivo para utilizar con Word o uno genérico, delimitado por comas para utilizar con cualquier procesador de textos.

Debe tener una versión actual de Word instalada en su equipo si selecciona Microsoft Word. Si selecciona Archivo de texto delimitado por comas, el asistente se salta los Pasos 3 y 4 y va directo a la pantalla Finalizar.

Paso 3 - Seleccionar tipo de documento

Este paso permite crear un nuevo documento, como una lista de correo o agregar a un documento existente, como una lista de contactos.

Paso 4 - Elegir estilo del documento

En este paso, se elige un tipo de documento a crear.

Carta modelo
Permite crear o utilizar una plantilla de carta en la cual se combinan los datos especificados en un archivo de Visual FoxPro.
Etiqueta
Permite crear o utilizar una plantilla de etiqueta en la cual se combinan los datos especificados en un archivo de Visual FoxPro.
Sobre
Permite crear o utilizar una plantilla de sobre en la cual se combinan los datos especificados en un archivo de Visual FoxPro.
Catálogo
Permite crear o utilizar un archivo que contiene etiquetas, como Item o Color o Número de catálogo, en el cual se combinan los datos especificados en un archivo de Visual FoxPro.

Paso 5 - Finalizar

Este paso permite guardar los datos como un archivo de texto o continuar en Word para especificar como se combinan los datos de Visual FoxPro en el documento combinado nuevo o existente.

Si eligió crear un documento Word, el asistente abrirá el documento en Word. Si eligió crear un archivo de texto, el asistente le preguntará para guardar su archivo delimitado por comas.

Vea también

Importar y exportar datos | Introducción a los asistentes | Asistente para vistas locales | Objeto Combinar correspondencia


Asistente para formularios uno a varios

Puede usar este asistente para crear un formulario para la entrada de datos a partir de varias tablas relacionadas. Por ejemplo, puede crear un formulario que podría actualizar las tablas de clientes y pedidos. El tamaño del formulario depende del valor del Área de diseño máxima de la ficha Formularios, cuadro de diálogo Opciones.

Para ejecutar el Asistente para formularios uno a varios

  1. En el submenú Asistentes del menú Herramientas, seleccione la opción Formulario.
  2. En el cuadro de diálogo Selección de los asistentes, elija Asistente para formularios uno a varios.

Paso 1 – Seleccionar campos de la tabla primaria

En este paso, se elige una tabla libre o una tabla o vista de una base de datos que proveerá los datos de los campos primarios presentados en el formulario. Esto especifica cuales campos de la tabla padre o primaria determina los registros seleccionados en la tabla hija o secundaria.

Seleccionar los campos para el formulario

  1. Utilice los controles Bases de datos y tablas para localizar y seleccionar la tabla que quiere usar.
  2. En el cuadro de lista Campos disponibles , seleccione uno o más campos a ser usados de la tabla seleccionada y use los botones direccionales para moverlos al cuadro de lista Campos seleccionados.

Sólo puede seleccionar los campos de una sola tabla o vista.

Paso 2 - Seleccionar campos de la tabla secundaria

En este paso, se eligen los campos de la tabla relacionada. Esto determina cuales campos de una tabla hija o secundaria son mostrados en el formulario. Por ejemplo, la tabla padre podría sostener solo nombres de clientes, números de ID y direcciones, y la tabla hija podría sostener información de pedidos, tales como números de ID, cantidad, fecha, descuento, etc. Un cliente puede tener muchos pedidos.

Así como con los campos de la tabla primaria, sólo puede seleccionar los campos de una sola tabla o vista.

Paso 3 – Relacionar tablas

En este paso, puede especificar desde la lista de campos, cómo las tablas padre e hija están relacionadas. En el ejemplo del Paso 2, ambas tablas contienen el campo ID de cliente, para que sea una manera de relacionarlas. Podría haber otras maneras que dependen de los campos disponibles y de lo que quiere informar.

Paso 4 - Elegir el estilo del formulario

En este paso, elige el formato básico para el formulario de entre los estilos incluidos en el asistente. Al hacer clic en cualquiera de los estilos que aparece en el cuadro Estilo, el asistente mostrará una imagen en la lupa como ejemplo del estilo.

El tipo de botón se aplica a los botones de desplazamiento del formulario. Los botones de desplazamiento que el asistente crea en el formulario son los siguientes.

Botones de Texto
Ponen texto de navegación en los botones del formulario.
Picture buttons
Ponen íconos de navegación en los botones del formulario.
Sin botones
No pone botones en el formulario, así se puede prevenir la navegación más allá de los datos mostrados o ingresados.
Nota El tipo de botón Personalizado no está disponible en el Asistente para formularios uno a varios.
Botón | Icono | Descripción
Primero |  | Mueve el puntero de registro al primer registro.
Anterior |  | Mueve el puntero de registro un registro hacia atrás.
Siguiente |  | Mueve el puntero de registro un registro hacia delante.
Último |  | Mueve el puntero de registro al último registro.
Buscar |  | Muestra el cuadro de diálogo Buscar.
Imprimir |  | Imprime un informe.
Agregar |  | Agrega un nuevo registro al final de la tabla.
Modificar |  | Permite al usuario cambiar valores en el registro actual.
Eliminar |  | Elimina el registro actual.
Salir |  | Cierra el formulario.
Nota Después de que el asistente guarde un formulario, puede agregarle campos adicionales con los mismos estilos, seleccionando Formulario rápido en el menú Formulario .

Todos los controles creados por el Asistente para formularios y el Generador de formularios están en Wizards\Wizstyle.vcx. Si desea modificar los estilos, modifique las clases de este archivo.

Paso 5 – Ordenar los registros

Seleccione los campos de la tabla primaria en el orden en que desee ordenar los registros. Por ejemplo, si está usando dos campos, uno llamado nombre y otro apellido, entonces puede elegir ordenar por nombre+apellido (como PaulWilson) o por apellido+nombre (como WilsonPaul). Cómo se ordena es determinado por el orden en el cual se selecciona estos campos.

Si su tabla ya tiene uno o más índices, puede seleccionar la etiqueta de índice, la cual es listada abajo de los campos, separada por una línea, en el cuadro Campos disponibles o etiqueta de índice.

Paso 6 - Finalizar

En este paso puede elegir como y cuando usar el formulario.

Guardar el formulario para su uso posterior
Permite guardar el formulario como un archivo, el que puede ser abierto más tarde.
Guardar y ejecutar el formulario
Guarda el formulario como un archivo y lo abre en Visual FoxPro para su uso inmediato.
Guardar el formulario y modificarlo en el Diseñador de formularios
Guarda el formulario como un archivo y lo abre en el Diseñador de formularios, para que pueda ser modificado.

Si selecciona la casilla de verificación Usar asignaciones de campos, entonces se usarán las asignaciones de campos especificadas en el cuadro de diálogos Opciones del menú Herramientas. Para mayor información, vea Ficha Asignación de campos, cuadro de diálogo Opciones. Si usa tablas de una base de datos, puede seleccionar Pasar por alto con clase de presentación de campos DBC para que su formulario use la información de la base de datos, de otra forma esta opción no estará disponible.

Para ver el formulario antes de salir del Asistente para formularios uno a varios, haga clic en el botón Vista previa.

Vea también

Cuadro de diálogo Crear relaciones uno a varios | Diseñador de formularios | Introducción a los asistentes | Ficha Formularios, cuadro de diálogo Opciones | Crear relaciones persistentes


Asistente para informes uno a varios

Crea un informe que agrupa registros de una tabla primaria con registros de una tabla secundaria, por ejemplo, nombres y direcciones de una tabla Clientes y montos y descuentos de una tabla Ordenes. El asistente le plantea preguntas sencillas a medida que recorre una breve serie de pasos en los que especifica la tabla y los campos que desea utilizar para crear controles en el informe.

Para ejecutar el Asistente para informes uno a varios

  1. En el submenú Asistentes del menú Herramientas, elija Informe.
  2. En el cuadro de diálogo Selección de los asistentes, elija Asistente para informes uno a varios.

Paso 1 - Seleccionar los campos de la tabla primaria

En este paso, elija una tabla libre o tabla o vista de una base de datos que proporcionará los campos con los datos presentados en el informe. Esto especifica cual campo de la tabla primaria determina los registros seleccionados en la tabla secundaria.

Para seleccionar los campos del informe

  1. Utilice los controles Base de datos y tablas para ubicar y seleccionar la tabla que desea utilizar.
  2. En la ventan Campos disponibles, seleccione uno o más campos que desee de la tabla seleccionada y utilice los botones de flechas para moverlos a la ventana Campos seleccionados.

Sólo puede seleccionar campos de una única tabla o vista.

Paso 2 - Seleccionar los campos de la tabla secundaria

En este paso, elija los campos de la tabla relacionada. Este paso determina cuales campos de la tabla secundaria se muestran en se muestran en el informe. Por ejemplo, la tabla primaria podría tener sólo nombres de clientes, números ID y direcciones y, la tabla secundaria podría tener información de órdenes como números ID, monto, fecha, descuento, etcétera. Un cliente podría tener múltiples órdenes.

Sólo puede seleccionar campos de una única tabla o vista secundaria.

Paso 3 – Relacionar las tablas

En este paso, especifica cuales campos de la lista relacionan las tablas primaria y secundaria. En el ejemplo del Paso 2, ambas tablas contienen el campo número ID, así que esta es la única forma de relacionarlas. Podría haber otra forma dependiendo de los campos disponibles y el informe que desee.

Paso 4 – Ordenar los registros

En este paso, puede seleccionar en la tabla primaria los campos por los cuales desea ordenar los registros. Por ejemplo, si está utilizando dos campos y tiene un campo nombre y un campo apellido, entonces puede elegir ordenar los registros por nombre+apellido (como PaulWilson) o por apellido+nombre (como WilsonPaul). El como se ordenen está determinado por el orden en el cual seleccione estos campos.

Si la tabla ya tiene uno o más índices, puede seleccionar la etiqueta de índice, las cuales se listan después de los campos, separadas por una línea, en la ventan Campos disponible.

Paso 5 - Elegir el estilo del informe

En este paso, puede elegir el formato básico de su informe de los estilos incluidos en el asistente. Cuando se hace clic en alguno de los estilos, el asistente actualiza la imagen en la lupa como un ejemplo del estilo.

El botón Opciones de resumen permite especificar si el informe incluirá uno o más cálculos, como suma o promedio, en los campos disponibles.

También puede elegir si el informe se mostrará o imprimirá con orientación vertical y horizontal.

Paso 6 - Finalizar

En este paso, puede elegir como y cuando utilizar el informe.

Guardar el informe para su uso posterior
Permite guardar el informe como un archivo, el cual puede abrir posteriormente.
Guardar el informe y modificarlo en el Diseñador de informes
Guarda el informe como un archivo y luego lo abre en el Diseñador de informes, para modificarlo.
Guardar e imprimir el informe
Guarda el informe como un archivo y lo imprime inmediatamente.

Si selecciona Usar config. de presentación almacenada en la base de datos, el informe utiliza la información de la base de datos.

Si el número de campos seleccionados no cabe en una línea dentro del ancho del informe, los campos se ajustan en la siguiente línea. Si no desea que se ajusten los campos, desactive la casilla de verificación Ajustar los campos al contenido. Haga clic en el botón Vista previa para ver el informe sin salir del asistente.

Después de guardar el informe, puede abrirlo y modificarlo como cualquier otro informe en el Diseñador de informes.

Vea también

Trabajar con tablas | Agregar tablas a bases de datos | Cuadro de diálogo Crear relaciones uno a varios | Crear relaciones persistentes | Asistente para informes | Introducción a los asistentes | Asistente para formularios uno a varios | Trabajar con tablas


Asistente para tablas dinámicas

Con el Asistente de Tablas Dinámicas puede crear tablas dinámicas, lo cual es una tabla de hoja de cálculo interactiva que le permite resumir y analizar datos de tablas existentes. Puede elegir guardar una tabla dinámica directamente en Microsoft Excel o agregarla como un objeto a un formulario.

Debe tener Microsoft Excel con Microsoft Query instalado en su computador para crear una tabla dinámica. Para más información, vea la ayuda de Microsoft Excel.

Para ejecutar el Asistente para tablas dinámicas

  • En el submenú Asistentes del menú Herramientas, elija Tablas dinámicas.

Paso 1 – Seleccionar campos

Puede seleccionar una tabla libre o una tabla de base de datos como el origen de su tabla dinámica. Puede seleccionar campos de una sola tabla o vista. Para más información, vea Crear vistas.

Asistente para tablas dinámicas: paso 2 - Definir diseño

Para seleccionar los campos de su tabla dinámica

  1. Use el control Bases de datos y Tablas para localizar y seleccionar la tabla que desea usar.
  2. En la ventana de Campos Disponibles, seleccione tres o cuatro campos que desee usar de la tabla seleccionada, y use los botones de flecha para moverlos a la ventana Campos Seleccionados.

El asistente no permitirá que proceda al paso siguiente hasta que haya elegido por lo menos tres campos; uno para cada valor de fila, valor de columna y datos.

Paso 2 - Definir diseño

Puede especificar cuales valores de campo serán calculados en los datos. Por ejemplo, si tiene una tabla de Pedidos que contiene, entre otras cosas, un campo para la ciudad, un campo para la región y un campo para la cantidad del pedido, podría crear una tabla dinámica que mostrara los datos por área, sumas para todas las ciudades y por región. Al final, la tabla podría mostrar totales para cada columna. A la derecha de la tabla mostrará totales para cada fila.

Definir el diseño de la tabla dinámica

  1. Desde la lista Campos disponibles, arrastre un campo al cuadro. La tabla dinámica tendrá una fila por cada valor único en el campo que arrastró al cuadro Filas.
  2. Desde la lista Campos disponibles, arrastre un campo al cuadro Columnas. La tabla dinámica tendrá una columna por cada valor único en el campo que arrastró al cuadro Columnas.
  3. Desde la lista Campos disponibles, arrastre un campo al cuadro Datos. Como este campo será sumariado, generalmente es mejor arrastrar un campo numérico aquí.

También puede arrastrar un campo al cuadro Página. Si arrastra un campo al cuadro Página, la tabla dinámica contrendrá una lista desplegable desde la cual puede seleccionar diferentes páginas. Habrá una página para cada valor único que exista en el campo que arrastró al cuadro Página.

Si tiene una tabla grande, puede ser que primero desee crear una vista que contenga los campos deseados, después puede crear una tabla dinámica a partir de esta vista. Para más información, vea Crear vistas.

Paso 3 - Finalizar

Si selecciona la opción Crear una tabla dinámica de Microsoft Excel, el asistente mostrará la tabla dinámica terminada en Microsoft Excel. El cálculo predeterminado para el Asistente para tablas dinámicas es la suma. Si crea una tabla dinámica en Excel, entonces puede cambiar el calculo fácilmente por otro soportado por Excel, como un promedio o contador.

Si selecciona la opción Crear un nuevo formulario que contenga una tabla dinámica incrustada, el asistente creará un nuevo formulario que contendrá la tabla dinámica incrustada y lo abrirá en el Diseñador de formularios. Haga doble clic en el objeto incrustado para modificarlo en el Diseñador de formularios.

Vea también

Crear vistas | Diseñador de formularios | Introducción a los asistentes


Asistente para consultas

Crea una selección de registros basado en algunas reglas especificadas. Por ejemplo, si tiene tablas que contengan grandes cantidades de información, puede utilizar una consulta diseñada cuidadosamente para recuperar o mostrar sólo unos pocos registros que satisfagan algún valor numérico o lógico.

Para ejecutar el Asistente para consultas

  1. En el submenú Asistentes del menú Herramientas, elija la opción Consulta.
  2. En el cuadro de diálogo Selección de los asistentes, seleccione Asistente para consultas.

Paso 1 – Seleccionar campos

En este paso, puede elegir tablas libres o tablas de una base de datos como el origen para su consulta. Puede seleccionar campos desde una o más tablas o vistas.

Seleccionar campos para su consulta

  1. Utilice el control Bases de datos y tablas para ubicar y seleccionar las tablas o vistas que desea usar.

  2. En la ventan Campos disponibles, seleccione uno o más campos que desee utilizar de la tabla seleccionada, y utilice los botones de flechas para moverlos a la ventana Campos seleccionados.

Repita este proceso para agregar campos desde otras tablas o vistas.

Paso 2 – Relacionar tablas

Este paso se muestra sólo si selecciona campos de varias tablas o vistas. Puede especificar cuales campos en cada tabla o vista contienen la misma información y por lo tanto pueden usarse para establecer la relación entre tablas o vistas, y en consecuencia establecer los registros incluidos.

Seleccione los campos deseados de dos cuadros de lista desplegables y después elija Agregar. Si utiliza múltiples tablas en su vista, entonces debe relacionar las tablas indicando cuales campos contienen datos coincidentes en cada tabla.

Paso 2a – Incluir registros

Este paso sólo se muestra si seleccionó campos de varias tablas o vistas, puede especificar cuales registros de las tablas seleccionadas quedan disponibles para el Asistente para consultas.

Si está usando varias tablas, puede especificar una condición de combinación. Para más información, vea Crear vistas con múltiples tablas. Por ejemplo, si especifica Sólo filas coincidentes en el Paso 2a, podrá refinar esa elección en el Paso 3 especificando un valor particular par un campo.

Sólo filas coincidentes
Devuelve solamente los registros de ambas tablas que coinciden con la condición de comparación establecida entre los dos campos en la condición de combinación. Esto se llama una combinación interna.
Todas las filas de esta tabla
Devuelve todos los registros de una de las tablas o vistas listadas. Esto permite crear una combinación externa izquierda o derecha.
Todas las filas de las dos tablas
Devuelve todos los registros de las dos tablas coincidentes o no. Esto se llama una combinación externa.

En forma predefinida sólo se incluyen los registros coincidentes.

Paso 3 – Filtrar registros

Este paso aparece inmediatamente después del Paso 1 si eligió sólo una tabla o vista como origen para la consulta. Se puede especificar una condición de filtro, así sólo ciertos registros de los elegidos estarán disponibles para utilizarlos en la consulta.

Para determinar la condición de filtro

  1. Seleccionar un campo de lista desplegable Campos.
  2. Especifica un operador, como es igual o contiene, en la lista desplegable Operador.
  3. Especifica un valor en el cuadro de texto Valor.

    Por ejemplo, si desea filtrar para una ciudad específica, como Helena, podría elegir city en la lista desplegable Campos, elija es igual en la lista desplegable Operador, e ingrese Helena en el cuadro de texto Valor.

Puede reducir el número de registros creando expresiones que filtren registros desde tablas o vistas seleccionadas. Puede crear dos expresiones y conectarlas con And, el cual sólo devuelve los registros que cumplen ambos criterios especificados, u Or, el cual devuelve registros que cumplan uno de los dos criterios.

Puede ver el resultado haciendo clic en el botón Vista previa.

Paso 4 - Ordenar registros

En este paso puede especificar el orden de clasificación de los registros de la consulta. Por ejemplo, si la consulta se usará para acceder órdenes por región, entonces podría ordenar por estado o código postal.

Elija hasta tres campos o una etiqueta de índice existente en la base de datos para determinar el orden en el cual se muestran los resultados. Seleccione Ascendente para clasificar la vista en orden ascendente o Descendente para clasificar la vista en orden descendente.

Paso 4a – Limitar registros

Este paso aparece sólo si se especificaron uno o más campos en el Paso 4. Además puede limitar el número de registros en la vista, basado en un porcentaje de registros devueltos o en el número actual de registros.

Para ver un porcentaje de registros disponibles, elija el botón de opción Porcentaje de registros, y entonces especifique el porcentaje en el cuadro Valor de la porción. Puede ver todos los registros seleccionando Número de registros y luego seleccionar Todos los registros. Como se muestra en los siguientes procedimientos, puede elegir una porción de registros desde el comienzo o el final de los registros disponibles.

Para ver los primeros 10 registros

  1. Elija el botón de opción Número de registros
  2. Ingrese 10 en el cuadro Valor de la porción.

Para ver los últimos 10 registros.

Nota Esto cambia el orden de clasificación último registro = primero leído.
  1. En el Paso 4, cambie el orden de clasificación a Descendente.
  2. En el Paso 4a, seleccione el botón de opción Número de registros.
  3. Ingrese 10 en el cuadro Valor de la porción.

Paso 5 - Finalizar

En este paso, puede elegir cómo guardar la consulta.

Guardar consulta
Permite guardar la consulta para usarla después.
Guardar consulta y ejecutarla
Permite guardar la consulta y ejecutarla inmediatamente
.
Guardar consulta y modificarla en el Diseñador de consultas
Permite guardar la consulta y luego usar el Diseñador de consultas para modificarla.

Vea también

Definir resultados | Crear relaciones persistentes | Agregar tablas a bases de datos | Asistente para tablas de referencias cruzadas | Asistente para gráficos | Asistente para vistas locales | Asistente para vistas remotas | Introducción a los asistentes | Diseñador de consultas y de vistas


Asistente para vistas remotas

Crea vistas con datos remotos (ODBC). Debe tener una base de datos existente para almacenar la vista, y un origen de datos o una conexión existentes. Si no tiene una base de datos abierta, se le pedirá que seleccione una base de datos existente o que cree una.

Antes de ejecutar el Asistente para vistas remotas, puede establecer opciones para los valores predeterminados de vistas remotas y conexiones en la ficha Datos remotos del cuadro de diálogo Opciones. Puede crear conexiones en el Diseñador de conexiones.

Para ejecutar el Asistente para vistas remotas

  1. En el submenú Asistentes del menú Herramientas, elija la opción Consulta.
  2. En el cuadro de diálogo Selección de los asistentes, elija Asistente para vistas remotas.

Paso 1 - Elegir origen de datos

En este paso, el asistente muestra los orígenes de datos ODBC disponibles o las conexiones existentes en su equipo. Si el cuadro está vacío, deberá definir los orígenes de datos y las conexiones en Microsoft Windows antes de ejecutar el asistente. Puede definir sus orígenes de datos usando el Orígenes de datos (ODBC) del panel de control Herramientas administrativas. Si el origen de datos remoto requiere una contraseña, se le pedirá la misma cuando haga clic en Siguiente.

También puede optar por incluir las tablas de sistema para controladores ODBC que las admitan.

Luego de seleccionar un origen de datos ODBC, podría ver el cuadro de diálogo Configurar Conexión en el cual puede especificar si va a usar una base de datos o una tabla libre y la localización de la tabla de destino.

Paso 2 – Seleccionar Campos

En este paso puede especificar cuales campos quiere usar en su vista remota.

Para seleccionar los campos para la vista

  1. Use el control Tablas para localizar y seleccionar la tabla que quiere usar.
  2. En el cuadro Campos disponibles, seleccione uno o más campos que quiera usar de la tabla seleccionada y use los botones de dirección para moverlos al cuadro Campos seleccionados.

    Puede usar campos de otras tablas repitiendo este proceso. Puede seleccionar tantos campos cuantos necesite y moverlos al cuadro Campos seleccionados.

Paso 3 – Relacionar Tablas

Este paso sólo se muestra si usted selecciona los campos de más de una tabla. Puede especificar qué campos en cada tabla contienen la misma información y puede gobernar la relación entre las tablas, mientras determina los registros incluidos por eso.

Seleccione los campos deseados de los dos cuadros de lista desplegables, y elija Agregar. Si usa múltiples tablas en la vista, entonces debe relacionar las tablas indicando cuales campos contienen datos coincidentes en cada tabla.

Si no existe una relación actualmente y el asistente no puede sugerir campos para una combinación, usted debe elegir los campos. Típicamente las tablas incluyen campos para este propósito y frecuentemente tienen el mismo nombre.

Paso 4 - Incluir Registros

Este paso se muestra solo si usted selecciona campos de más de una tabla. Puede especificar cuales registros de las tablas seleccionadas estarán disponibles para el Asistente para Vistas remotas.

Sólo filas coincidentes
Devuelve solo las filas de ambas tablas que coincidan con la condición de comparación establecida entre los dos campos en la condición de combinación. Esto es llamado de combinación interna.
Todas las filas de esta tabla
Devuelve todas las filas de una tabla seleccionada. Esto hace posible crear una combinación externa izquierda o derecha. Para más información, vea Crear vistas con múltiples tablas.

Paso 5 – Ordenar los registros

Este paso hace posible especificar uno o más campos por los cuales se ordenarán los registros en la vista remota.

Seleccione un máximo de tres campos para determinar el orden en que se clasificarán los resultados de la vista. Si la tabla ya tiene uno o más índices, puede seleccionar la etiqueta de índice, la cual está listada abajo de los campos, separada por una línea, en el cuadro Campos disponibles. Seleccione Ascendente para ordenar la vista de forma ascendente o Descendente para ordenarla de forma descendente.

Paso 6 - Filtrar Registros

En este paso, puede especificar una condición de filtro, de tal forma a asegurarse de que solo los registros que usted elija hacer disponibles sean usados en la vista remota.

Para determinar la condición de filtro

  1. Seleccione un campo del cuadro de lista deplegable Campo.
  2. Especifique un operador, tal como es igual o contiene, en el cuadro de lista desplegable Operador.
  3. Especifique un valor en el cuadro de texto Valor.

    Por ejemplo, si procura filtrar por una ciudad específica, tal como Helena, usted podría escoger ciudad del cuadro de lista Campo, elegir es igual en el cuadro de lista Operadore ingresar Helena en el cuadro de texto Valor.

Puede reducir el número de registro creando expresiones que filtren los registros de las tablas o vistas seleccionadas. Puede crear dos expresiones y conectarlas con AND, lo que devuelve solo los registros que cumplan con ambos criterios especificados, u OR, lo que devuelve los registros que cumplan con cualquiera de los criterios.

Puede ver el resultado haciendo clic en el botón Vista previa.

Paso 7 -Finalizar

En este paso, puede elegir como manejar la vista remota recién definida.

Guardar la vista remota
Guarda la vista remota recién definida y sale del asistente.
Guardar la vista remota y examinar
Guarda la nueva vista remota y abre la ventana Examinar para que usted pueda revisar los datos mostrados.
Guardar la vista remota y modificarla en el Diseñador de Vistas
Guarda la nueva vista remota y permite modificarla abriendo el diseñador de Vistas.

Vea también

Ejecutar extensiones ODBC de SQL | Registro del sistema de ODBC | Asistente para tablas de referencias cruzadas | Asistente para gráficos | Asistente para vistas locales | Asistente para consultas | Introducción a los asistentes | Ficha Datos remotos, cuadro de diálogo Opciones | Diseñador de conexiones | Diseñador de consultas y de vistas


Asistente para informes

Con este asistente, se puede crear un informe utilizando una tabla libre, o una tabla o vista de una base de datos. Utilice este asistente para crear informes rápidamente y guardar para uso posterior. Cuando ejecute el informe guardado mostrará o imprimirá la información actual de la tabla o vista.

Para ejecutar el Asistente para informes

  1. En el submenú Asistentes del menú Herramientas, elija Informe.
  2. En el cuadro de diálogo Selección de los asistentes, elija Asistente para informes.

Paso 1 - Seleccionar los campos

En este paso, puede elegir una tabla libre, o una tabla o vista de una base de datos, como el origen para el informe. Sólo se pueden seleccionar campos de una única tabla o vista.

Para seleccionar campos para el informe

  1. Utilice los controles Base de datos y tablas para ubicar y seleccionar la tabla que desea utilizar.
  2. En la ventana Campos disponibles, seleccione uno o más campos que desee utilizar de la tabla seleccionada y, use los botones de flecha para moverlos a la ventana Campos seleccionados.

Paso 2 – Agrupar los registros

En este paso puede agrupar datos para categorizar y ordenar los registros, para que sea mas fácil leerlos. Cuando seleccione un campo en uno de los cuadros de lista Agrupar por, puede elegir Opciones de agrupación y Opciones de resumen para mejorar la agrupación. Puede elegir hasta tres campos para agrupar.

Al elegir Opciones de agrupación se abre el cuadro de diálogo Intervalos de agrupación que permite seleccionar niveles de filtrado aplicables al tipo de dato contenido en los campos seleccionados para agrupar.

Al elegir Opciones de resumen se abre el cuadro de diálogo Opciones de resumen que permite especificar de la siguiente lista el tipo de cálculos a realizar en campos numéricos:

Opción de resumen | Devuelve
Sum | Total de los valores del campo numérico especificado.
Avg | Promedio de los valores del campo numérico especificado.
Count | Número de registros con valores no nulos en el campo especificado.
Min | Mínimo valor en el campo numérico especificado.
Max | Máximo valor en el campo numérico especificado.

También puede elegir Detalles y resumen, la cual proporciona totales y subtotales por grupo; Sólo resumen, la cual proporciona sólo totales o; Sin totales, para no incluír los totales en el informe. Utilice Calcular porcentaje del total para sumas para obtener el porcentaje del total representado por cada subtotal.

Los campos que seleccione aquí para agrupar no estarán disponibles en el Paso 5 - Ordenar registros.

Paso 3 - Elegir estilo de informe

En este paso puede elegir el formato básico del informe de los estilos incluidos en el asistente. Cuando se hace clic en cualquiera de los estilos, el asistente actualiza la imagen en la lupa con un ejemplo del estilo.

Paso 4 - Definir diseño de informe

En este paso se especifica el número de filas o columnas del informe y si el informe está orientado horizontal o verticalmente.

Cuando especifique un número de columnas o seleccione una opción de diseño, el asistente actualiza la imagen en la lupa con un ejemplo de la selección.

Nota Si se especificó una opción agrupar en el Paso 2, las selecciones Columnas y Filas del Diseño de campo no están disponibles.

Paso - Ordenar registros

Este paso permite especificar uno o más campos por los cuales se ordenan los registros en el informe.

Elija hasta tres campos o una etiqueta de índice existentes en la base de datos para determinar el orden en el cual se ven los resultados. Selecciones Ascendente para verlos en orden ascendente o Descendente para verlos en orden descendente.

Paso 6 -Finalizar

En este paso, puede elegir cómo y cuando utilizar el informe.

Guardar el informe para su uso posterior
Permite guardar el informe como un archivo, el cual puede abrir posteriormente.
Guardar el informe y modificarlo en el Diseñador de informes
Guarda el informe como un archivo y luego lo abre en el Diseñador de informes, para permitir modificarlo.
Guardar e imprimir el informe
Guarda el informe como un archivo y lo imprime inmediatamente.

Si el número de campos que seleccione no cabe en una única línea dentro del ancho del informe, los campos se ajustarán en la siguiente línea. Si no desea que se ajusten los campos, desactive la casilla de verificación Ajustar los campos al contenido. Si ha utilizado una tabla o vista de una base de datos, puede elegir Usar configuración de presentación almacenada en la base de datos, de otro modo esta opción no estará disponible. Haga clic en el botón Vista previa para ver el informe sin salir del asistente.

Después de guardar el informe, puede abrirlo y modificarlo como cualquier otro informe en el Diseñador de informes.

Vea también

Asistente para informes uno a varios | Introducción a los asistentes | Trabajar con tablas | CREATE REPORT (Comando) | Diseñador de informes

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Asistente para conversión a SQL Server

El asistente para conversión a SQL Server crea una base de datos en SQL Server identica, tanto como sea posible, a la base de datos de Visual FoxPro.

Puede crear un modelo local funcional de su aplicación usando tablas de Visual FoxPro, vistas, y bases de datos para representar la información que eventualmente sera accedida en el servidor remoto. Cuando este listo para mover este prototipo a su ubicación de producción, puede convertirlo. Puede usar el asistente de conversión a SQL Server para:

  • Mover datos locales a un servidor remoto.
  • Transformar las tablas y vistas locales en tablas y vistas remotas.
  • Migrar una aplicación local a una aplicación cliente/servidor.

Nota La operación de conversión puede tardar mucho tiempo, dependiendo de la cantidad de datos, la cantidad de tráfico en la red y el número de peticiones concurrentes que tenga que procesar el servidor. Para tablas de gran tamaño, la operación de conversión puede durar varias horas.

Antes de ejecutar el Asistente para conversión a SQL Server, debe preparar el cliente y el servidor. Debe asegurarse de tener los permisos CREATE y SELECT en el servidor y conexiones con nombre en el cliente. Para mas información, vea Preparar el Asistente para conversión a SQL Server.

Para acceder al Asistente para conversión a SQL Server

  • Desde el menú Herramientas, seleccione Asistentes, y entonces haga clic en Conversión.

    -o-

    Desde el menú Herramientas, seleccione Asistentes, haga clic en Todos los Asistentes... para abrir el cuadro de diálogo de Selección de Asistenes, y seleccione Asistente para conversión a SQL Server.

Paso 1 - Seleccione la base de datos local

En este primer paso, Seleccione la base de datos que desea convertir.

Base de Datos a convertir
Muestra las bases de datos abiertas actualmente. Seleccione la base de datos que desa convertir. Si no tiene abierta una base de datos, utilice el botón Abrir para seleccionar y abrir una base de datos.

Paso 2 - Seleccione el origen de datos

En este paso, especifique las opciones para seleccionar el origen de datos ODBC de SQL Server o conexión con nombre que desea usar.

Origen de Datos ODBC
Seleccione esta opción para mostrar los orígenes de datos ODBC de SQL Server. Si esta seleccionada, la lista adyacente se muestra como Orígenes de datos disponibles.
Conexiones
Seleccione esta opción para mostrar las conexiones almacenadas en la base de datos abierta que conectan al origen de datos de SQL Server. Si esta seleccionada, la lista adyacente se muestra como Conexiones existentes.
Orígenes de datos disponibles
Lista los orígenes de datos ODBC que conectan al SQL Server. Este listado es mostrado cuando se selecciona la opción Origen de Datos ODBC.
Conexiones existentes
Este listado es mostrado cuando se selecciona la opción Conexiones. Muestra las conexiones almacendas en la base de datos abierta que conectan a un origen de datos de SQL Server.
Todos
Utilice esta casilla de verificación para mostrar todos los orígenes de datos que no son identificados explicitamente con las palabras clave "SQL Server" en el título. Las palabras "SQL Server" deben aparecer en el nombre del origen de datos para que Visual FoxPro lo identifique como origen de datos de SQL Server. Si su origen de datos utiliza controladores de terceras personas para conectarse a SQL Server, este puede no ser identicado como un origen de SQL Server.

El listado mostrado depende de que tenga seleccionada la opción Origenes de datos ODBC o la opción Conexiones seleccionada.

Cuando da clic sobre Siguiente, el asistente se conecta al SQL Server y muestra el cuadro de diálogo de inicio de sesión de SQL Server. Si utilizó una conexión con nombre con una contraseña almacenada, el asiste se autenticará en el SQL Server seleccionado sin preguntar por la información de la autenticación de ODBC.

Utilizando una Conexión con Nombre

Si utiliza una conexión con nombre para acceder a su origen de datos, el asistente de Conversión a SQL Server asocia la conexión con cualquier vista remota que cree durante la conversión. Si la conexión incluye una contraseña, la opción de Guardar Contraseña con la Vista es seleccionada automáticamente y deshabilitada; para prevenir que la contraseña sea eliminada de la definición de la conexión.

Utilizando un Origen de Datos

Si utiliza un nombre de origen de datos en lugar de un conexión con nombre para conectarse al origen de datos, y elige el asistente para crear vistas remotas, el asistente Conversión a SQL Server crea una conexión con nombre llamada "Upsize" (o "Upsize2", "Upsize3" etcétera, si existe una definición de conexión con el nombre sugerido).

Paso 3 – Elegir tablas

En este paso, puede seleccionar las tablas de Visual FoxPro que desea exportar a SQL Server.

Tablas disponibles
Lista todas las tablas almacenadas en la base de datos que ha elegido convertir.
Tablas seleccionadas
Lista las tablas que eligió convertir en la base de datos del servidor.

Debe seleccionar al menos una tabla, y puede elegir el botón (>>) para exportar todas las tablas.

Cuando elige Siguiente, el asistente Conversión a SQL Server lee la lista de tablas que ha seleccionado para convertir y trata de abrir aquellas tablas para uso exclusivo en la base de datos que he elegido convertir. Cualquier tabla que no pueda abrirse exclusivamente no estará disponible para convertir. La tablas se abren exclusivamente para prevenir que otros usuarios cambien los datos en las tablas durante el proceso de conversión, lo cual ayuda a asegurar la exactitud de los datos exportados. Si alguna tabla ya está abierta y compartida, el asistente la cierra y la vuelve a abrir como exclusiva; esto podría provocar pérdida de cualquier relación temporal establecida con los comandos SET RELATION o SET SKIP.

Elegir tablas para exportar

Es muy importante elegir cuidadosamente las tablas que exporta, esta elección tiene gran impacto en el rendimiento de la aplicación. Exportar todas la tablas podría resultar en consultas excesivas (y lentas) al servidor. Un buen diseño de base de datos cliente-servidor generalmente consiste de una mezcla de tablas locales y remotas.

En general, mantener tablas, las cuales rara vez cambian, en su base de datos local, tal como tablas de nombres y abreviaturas de estados. Exportar tablas que cambian frecuentemente y se acceden por muchos usuarios, como una tabla de órdenes.

El asistente Conversión a SQL Server exporta los nombres de campo de las tablas, tipos de datos y datos. Para más información, consulte Diseñar aplicaciones cliente /servidor y Optimizar rendimiento cliente/servidor .

Paso 4 - Equivalencia de tipos de datos de campos

En este paso, Visual FoxPro muestra la equivalencia predeterminada de tipos de datos, utilizada para convertir datos locales a datos remotos, como se convierten al tablas al servidor. Puede cambiar las equivalencias predeterminadas.

No puede cambiar la equivalencia predeterminada para un campo clave a un tipo de dato que no permita indexar el campo. Puede cambiar la equivalencia predeterminada de un campo que es parte de una clave de índice si elige un tipo de dato que sea indizable; sin embargo, podría desear cambiar el tipo de datos para otros campos en la clave para que coincidan. Visual FoxPro alerta si cambia la equivalencia predeterminada del tipo de datos para un campo que no es un campo clave pero que se utiliza en un índice de Visual FoxPro. Si comete un error, haga clic en Predeterminado para restaurar el tipo de datos.

Tabla
Selecciona la tabla cuyos campos desea equivaler desde la lista de todas las tablas que ha elegido para convertir.
Columna Timestamp
Seleccione esta casilla de verificación para agregar una columna timestamp a la versión de la tabla en el servidor. Si desea aplicar esto a todas las tablas, puede ahorrar tiempo seleccionando la casilla de verificación Todas las tablas.
Columna de identificación
Seleccione esta casilla de verificación para agregar una columna de identificación a la versión de la tabla en el servidor. Si desea aplicar esto a todas las tablas, puede ahorrar tiempo activando la casilla de verificación Todas las tablas.
Predeterminado
Elija este botón para restaurar todas las configuraciones de campos de la tabla a sus valores predeterminados. Este botón deshace cualquier cambio que haya entrado para una tabla específica en el Paso 4.
Nombre del campo
Lista los campos contenidos en la tabla que seleccionó en la lista Tablas.
Tipo de FoxPro
Lista los tipos de datos de Visual FoxPro para el campo.
Tipo del Servidor
Lista los tipos de datos del servidor a los cuales equivalen los datos Visual FoxPro cuando la tabla se copia al servidor. Haga clic en este campo para mostrar una lista desplegable desde la cual puede seleccionar un tipo de dato diferente del servidor.
Ancho
Especifica el ancho del campo.
Precisión
Especifica la precisión decimal del campo, cuando es aplicable.

Crear columnas Timestamp

Una columna timestamp de SQL Server contiene un único valor, generado por SQL Server que se actualiza cuando lo hace el registro del servidor. Utilizar un campo timestamp en una tabla remota actualizable puede incrementar el rendimiento y la confiabilidad.

Si actualiza campos utilizando valores Visual FoxPro SQL WhereType DB_KEYANDMODIFIED o DB_KEYANDUPDATABLE, Visual FoxPro debe verificar todos los campos modificados o actualizables para determinar cuando fueron cambiados por otro usuario. Puesto que los campos de texto o imagen pueden ser de varios megabytes de tamaño, comparar estos campos para verificar cambios puede consumir mucho tiempo y tráfico de red, por esta razón se reduce el rendimiento. La confiabilidad también se puede afectar, por que convertir los valores de campos de punto flotante entre cliente y servidor podría causar que el valor aparezca como cambiado cuando no ha cambiado.

Cuando agrega un campo timestamp a una tabla remota y actualiza utilizando el valor SQL WhereType DB_KEYANDTIMESTAMP, Visual FoxPro sólo utiliza el valor del campo timestamp para determinar cuando fue cambiado el registro antes de actualizarlo. Ya que Visual FoxPro puede comparar el valor en el campo timestamp más rápidamente que de lo que puede evaluar el contexto campos de texto o imágenes grandes, puede incrementar el rendimiento en vistas remotas. Sin embargo, si utiliza el valor DB_KEYANDTIMESTAMP para la propiedad SQL WhereType, cualquier cambio en el registro remoto se reconoce como un conflicto de actualización, esté o no el campo remoto cambiado en la lista de campos que estableció como modificables en la vista remota.

Si prefiere actualizar campos utilizando valores de Visual FoxPro SQL WhereType DB_KEYANDMODIFIED, podría probar el rendimiento estableciendo a Falso (.F.) la propiedad CompareMemo de vistas remotas, los campos Memo se quitan de la lista de campos comparados de la vista remota contra los datos en el registro remoto del servidor.

Paso 5 - Seleccionar base de datos de destino

En este paso, puede seleccionar la base de datos en el origen de datos del servidor para la cual desea copiar tablas.

Después de que se ha conectado a un servidor y ha elegido el origen de datos, las tablas que desea actualizar y la equivalencia de tipos de datos para campos, puede utilizar una base de datos existente o crear una nueva base de datos como el destino para su base de datos local convertida. Si eligió una conexión con nombre en el Paso 2, puede usar la base de datos nombrada en la conexión o crear una nueva base de datos como el destino.

Bases de datos disponibles en 'database name'
Esta lista se muestra cuando selecciona el botón de opción Existente para agregar tablas de Visual FoxPro a una base de datos SQL Server existente. Seleccionar la base de datos en la cual desea copiar tablas de Visual FoxPro cuando realice la conversión.
Nombre de nueva base de datos
Este cuadro de texto se muestra cuando se selecciona el botón de opción Nuevo. Ingrese un nombre para la nueva base de datos que desea crear en el servidor remoto al cual está convirtiendo. El nombre puede ser hasta de 30 caracteres de longitud y puede incluir letras, dígitos y símbolos #, $ y _. Los espacios no están permitidos.

Si convierte a una base de datos existente, el asistente salta al Paso 8.

Si utiliza una versión de Microsoft SQL Server posterior a la 6.x, el asistente salta al Paso 8 tanto si utiliza una base de datos existente como si crea una nueva.

Paso 6 - Establecer propiedades de la base de datos

Si eligió crear una nueva base de datos SQL Server en el Paso 5, entonces el asistente muestra este paso para ayudarle a seleccionar el dispositivo de la base de datos y el tamaño. Puede elegir crear una nueva base de datos SQL Server en un dispositivo existente o crear un nuevo dispositivo.

Seleccionar un dispositivo existente

Dispositivo de base de datos
Muestra todos los dispositivos en el SQL Server al que ha ingresado, incluyendo dispositivos predeterminados. Seleccione un dispositivo con suficiente espacio libre para la base de datos.
Tamaño
Muestra el tamaño en megabytes del dispositivo de la base de datos seleccionada en en la lista adjunta Dispositivo de base de datos.
Espacio libre
Muestra la cantidad de espacio libre sobrante en el dispositivo de base datos seleccionado en la lista Dispositivo de base datos.
Tamaño de base de datos
Ingrese la cantidad de espacio, en megabytes, que desea reservar para la nueva base de datos. El tamaño de una nueva base de datos deber ser de al menos dos megabytes, puesto que es el mínimo permitido por SQL Server.

Dispositivos predeterminados

Si se han establecido uno o más dispositivos como predeterminados en SQL Server, el asistente Conversión a SQL Server incluye una entrada Predeterminado en la lista de dispositivos disponibles. La entrada Predeterminado representa más de un dispositivo. Elegir el dispositivo predeterminado no asegura que tiene suficiente espacio para convertir la base de datos. El asistente Conversión a SQL Server verifica el dispositivo especificado como predeterminado para asegurar que hay suficiente espacio para la base de datos.

Sugerencia Para colocar la base de datos en varios dispositivos, haga aquellos dispositivos (y no otros) como dispositivos predeterminados. Cuando ejecute el asistente Conversión a SQL Server, seleccione Predeterminado para la base de datos.

Para más información sobre configurar el estado predeterminado para dispositivos, vea la documentación de SQL Server para una descripción del procedimiento de sistema sp_diskdefault.

Crear un nuevo dispositivo

Si los dispositivos existentes están llenos, podría desear crear un nuevo dispositivo. Debe tener permisos de administrador para crear un nuevo dispositivo SQL Server.

Para crear un nuevo dispositivo SQL Server

  1. Seleccione Crear nuevo dispositivo de la lista de dispositivos.

    Si tiene permisos de administrador, aparece un cuadro de diálogo. De otro modo, aparece un mensaje de error.

  2. Escriba un nombre para el nuevo dispositivo.

    El nombre del dispositivo debe ser de 30 caracteres o menos y debe consistir de letras, dígitos y los símbolos #, $, o _. Los espacios no están permitidos.

  3. Haga clic en Aceptar.

    El nuevo nombre de dispositivo se agrega a lista de dispositivos.

  4. Escriba el tamaño del dispositivo.

    El tamaño del dispositivo debe ser al menos de dos megabytes. El tamaño combinado de nuevos dispositivos no debe exceder el espacio disponible en el disco.

Si tiene permisos de administrador, el asistente Conversión a SQL Server muestra la cantidad de espacio en la unidad del servidor que almacena la base de datos Master SQL Server.

Nota El tamaño de un dispositivo no se puede cambiar después que se ha establecido. Asegúrese de crear dispositivos suficientemente grandes.

El nuevo dispositivo seleccionado se crea después que haya elegido el botón Finalizar. El asistente Conversión a SQL Server crea el nuevo dispositivo en el mismo directorio del dispositivo Master de la base de datos. Si agrega un nuevo dispositivo a la lista pero no selecciona el nuevo dispositivo como el dispositivo de la base de datos, entonces el nuevo dispositivo no se crea.

El asistente Conversión a SQL Server puede generar un informe que incluya el nombre lógico, nombre físico y otra información acerca de nuevos dispositivos que cree.

Limitaciones del número de dispositivos

A cada dispositivo SQL Server se le da un número cuando se crea. Sin embargo, el conjunto de números de dispositivos es limitado. El valor predeterminado es 10, aunque el número puede ser diferente en cada servidor. El asistente Conversión a SQL Server busca un número de dispositivo disponible, si todos los números de dispositivo están ocupados, no puede crear un nuevo dispositivo.

Nota Para incrementar los números disponibles para dispositivos SQL Server, vea la documentación de SQL Server para una descripción del procedimiento de sistema sp_configure.

Paso 7 - Especificar propiedades de registro (Log)

En este paso, puede especificar el tamaño y dispositivo para almacenar el registro de una transacción. El registro de una transacción se crea por SQL Server para la base de datos y puede usarse para reconstruir la base de datos en el evento de un serio problema del sistema.

Dispositivo de registro (Log)
Muestra una lista de dispositivos de registro en el servidor remoto. Seleccione el dispositivo que desea utilizar para el registro de transacciones.

Idealmente, una base de datos y su correspondiente registro debe colocarse en dispositivos que estén en discos separados físicamente. Estos dispositivos deben crearse antes de que inicie el asistente Conversión a SQL Server, pues el asistente crea todos los nuevos dispositivos en el mismo disco físico, el disco donde está el dispositivo maestro de la base de datos.

Si sólo tiene un disco físico, debe colocar la base de datos y sus registro en dispositivos separados, así puede usar el comando SQL server DUMP TRANSACTION.

Tamaño
Muestra el tamaño en megabytes del dispositivo de la base de datos seleccionado en la lista adjunta Dispositivo de registro (Log).
Espacio libre
Muestra la cantidad de espacio libre sobrante en el dispositivo de registro seleccionado en la lista Dispositivo de registro (Log).
Tamaño del registro (Log)
Ingrese la cantidad de espacio, en megabytes, que desea asignar para el registro de transacción. Para más información sobre como determinar el tamaño del registro que necesita, vea Especificar tamaño del registro más adelante en este tema.
Tamaño de la base de datos
Muestra la cantidad de espacio asignada para la nueva base de datos en el Paso 6.

Especificar tamaño del registro (Log)

Como una guía general, asigne 10 a 20 por ciento del tamaño de la nueva base de datos SQL Server; esta guía depende varias consideraciones que se discuten en la documentación de SQL Server.

Puede ingresar un valor de 0 para el tamaño del registro, lo cual hace que el asistente coloque el registro (una tabla llamada syslogs) en el mismo dispositivo de la base de datos. Cuando el tamaño del registro se establece a 0, el registro consume la mínima cantidad de espacio ene el servidor pero también se llena muy rápidamente.

Cuando convierte a una nueva base de datos, el asistente Conversión a SQL Server vacía el registro de transacción cada vez que se llena. El vaciado realiza una copia de respaldo de una base de datos y su registro de transacción en una forma que se pueda leer con LOAD DATABASE. Para más información sobre el comando DUMP TRANSACTION de SQL Server y una estimación de la cantidad de espacio que se debe asignar para un registro de transacción, vea la documentación de SQL Server.

Nota Puede incrementar el tamaño de un registro o moverlo a un nuevo dispositivo. Para más información, vea la documentación de SQL Server para una descripción del comando ALTER DATABASE y el procedimiento de sistema sp_logdevice.

Paso 8 - Establecer opciones de conversión

En este paso, puede controlar como exporta las tablas el asistente Conversión a SQL Server. También puede especificar los cambios que desea que haga a la base de datos local el asistente Conversión a SQL Server. Puede crear informes de conversión, redirigir vistas para utilizar datos remotos, crear nuevas vistas remotas en las tablas que se convierten y guardar contraseñas con vistas.

Especificar atributos de tabla a convertir

En forma predeterminada, el asistente Conversión a SQL Server exporta una estructura de tabla y sus datos. Junto con los nombres de campos y tipos de datos, también puede exportar:

  • Indices
  • Predeterminados
  • Relaciones (restricciones para integridad referencial)
  • Reglas de validación

El asistente Conversión a SQL Server puede exportar propiedades adicionales de tablas y crear columnas timestamp en ciertas tablas SQL Server. El asistente Conversión a SQL Server también puede modificar la base de datos de Visual FoxPro para que las consultas, formularios e informes utilicen las nuevas tablas SQL Server, en lugar de los datos de la base de datos local de Visual FoxPro.

Los índices de Visual FoxPro y predeterminados se convierten en índices de SQL Server y predeterminados. Si elige exportar reglas de validación, el asistente Conversión a SQL Server intenta exportar reglas de validación a nivel de campos y de registros a SQL Server, donde se convierten en procedimientos almacenados llamados desde desencadenantes SQL Server. Las relaciones entre tablas exportadas también se convierten en parte de los desencadenantes.

Sugerencia Si exporta relaciones entre tablas, asegúrese de exportar índices también o podría experimentar un rendimiento mediocre.

Atributos de tabla a convertir

Indices
Selecciona convertir índices .cdx de Visual FoxPro.
Predeterminados
Selecciona convertir valores predeterminados para los campos de la tabla.
Relaciones
Selecciona convertir relaciones almacenadas en la base de datos que está convirtiendo.
Reglas de validación
Selecciona convertir reglas de validación de campos y tabla.
Sólo estructura, no datos
Selecciona convertir la estructura de tabla vacía, sin copiar datos de la tabla al origen de datos SQL Server.
Usar declaraciones de integridad referencial
Se habilita cuando convierte a una base de datos SQL Server versión 6.x. Seleccione crear restricciones SQL para forzar la integridad referencial.
Equivalencia Null
Seleccione los campos que pueden aceptar .NULL.

Esta opción ayuda a asegurar que se ejecuten con éxito los comandos insertar y actualizar contra datos remotos. Esta opción permite sobrescribir la configuración null para campos en las tablas de Visual FoxPro que se están convirtiendo. Si elige la opción campos General y Memo, entonces todos los campos general y memo en la tabla de Visual FoxPro seleccionada se convertirán con esta configuración de campos para permitir campos nulos.

Hay diferencias en como los comandos SQL de Visual FoxPro SQL tales como INSERT y UPDATE afectan datos locales y remotos dependiendo de la configuración null para los campos. Por ejemplo, si tiene un comando INSERT que no incluye todos los campos en una tabla, Visual FoxPro inserta blancos en los campos no especificados para datos locales. Si se utiliza el comando INSERT para una vista remota (datos SQL Server), entonces los nulos se insertan en los campos no especificados en el comandos. El comando fallará si alguno de estos campos no admite nulos. Es bastante fácil escribir un comando INSERT, el cual incluye todos los campos y valores a ser insertados. Observe, sin embargo, que insertar contenido en un campo general es un poco más difícil.

Hacer cambios localmente

Crear informe de conversión
Crea una serie de informes documentando los resultados del proceso de conversión.
Redirigir vistas a datos remotos
Cambia la definición de vistas locales en la base de datos que está convirtiendo a vistas remotas que utilicen las tablas convertidas del servidor como tablas base. Las consultas, formularios e informes usarán entonces vistas de los datos en el nuevo origen de datos SQL Server en lugar de los datos originales de Visual FoxPro.
Crear vistas remotas sobre tablas
Cuando convierte una tabla local, necesita quitar las vistas para acceder la tabla convertida en el servidor remoto. El asistente Conversión a SQL Server puede crear nuevas vistas remotas cuando hace la conversión. Como el asistente crea nuevas vistas remotas, renombra todas las versiones locales de tablas agregando el sufijo "_local" al nombre de la tabla.

Nota No se recomienda crear vistas remotas sobre tablas al realizar la conversión, ya que estas vistan no están optimizadas y seleccionan todos los datos en la tabla en lugar de seleccionar sólo la información que su aplicación necesita. El método preferido es crear vistas parametrizadas. Puede crear vistas locales parametrizadas, las cuales luego se convierten eligiendo Redirigir vistas a datos remotos o crear una nueva vista remota parametrizada sobre la tabla después de completar el proceso de conversión. Para más información, vea Crear vistas.

Guardar contraseña con vistas
En forma predeterminada, debe ingresar la contraseña y el ID de ingreso cuando abre una vista remota en una nueva sesión con Visual FoxPro. Seleccione esta opción para almacenar la contraseña localmente con la definición de la vista remota en la base de datos.

Nota Esta casilla de verificación se activa automáticamente y se desactiva si utilizó una conexión con nombre en el Paso 2 para acceder el origen de datos y la conexión con nombre incluye una contraseña. Esto evita que se quite la contraseña de la definición de la conexión.

Crear informes de la conversión

Cuando seleccione Crear informe de la conversión, Visual FoxPro genera informes que documentan las tablas, vistas, campos, índices y restricciones para integridad referencial que crea el asistente Conversión a SQL Server sobre SQL Server. El asistente coloca los informes en un nuevo proyecto, utilizando los siguientes nombres para los informes:

  • RptErrors
  • RptField
  • RptIndex
  • RptRels
  • RptTable
  • RptViews

Los informes de la conversión incluyen información acerca de cualquier dispositivo y bases de datos que se creen, información acerca de cualquier error encontrado durante el proceso de conversión, y una completa explicación de la forma en la cual cada objeto de Visual FoxPro se equivale a un objeto de SQL Server. Puede ver o imprimir estos informes después de completar la conversión.

Convertir todas las tablas usadas por una vista local

Si convierte todas las tablas usadas por una vista local, la vista local se renombra agregando el sufijo"_local" al nombre de la vista local existente. El asistente Conversión a SQL Server crea una nueva vista basada en la instrucción SQL de la vista local, sustituyendo los nombres de la tabla local por los nombres de la tabla remota. La propiedad KeyField y otras propiedades de la vista se conservan.

Convertir algunas de las tablas usadas por una vista local

Si convierte solamente algunas de las tablas utilizadas por una vista local, el asistente SQL Server Conversión no renombrará las vistas locales. En su lugar, renombrará las tablas de Visual FoxPro que exporte con el sufijo "_local.". Por ejemplo, si exporta una tabla con el nombre "Empleados", la tablá será renombrada como "Empleados_local" en su base de datos. El asistente entonces crea una vista remota para cada tabla exportada. Cada vista selecciona todos los campos y todos los registros desde la tabla remota.

Nota Visual FoxPro maneja datos locales y remotos de diferente forma. El diseño de acceso de datos de una aplicación usando datos locales puede ser muy ineficiente cuando se aplica como datos remotos.

Cuadro de diálogo Avanzado

Hacer de una clave principal un índice agrupado
De forma predeterminada, las tablas que tienen una clave principal obtienen un índice agrupado automáticamente creado en SQL Server mediante el Asistente para conversión. Esto es porque es el servidor SQL Server predeterminado si la cláusula [CLUSTERED | NONCLUSTERED] no se especifica en la instrucción ALTER TABLE que utiliza el Asistente. Ya que las claves principales normalmente están en orden secuencial, es posible que no sea necesario un índice agrupado. Esta opción le permite controlar si se crea un índice agrupado.
Colocar tablas locales
Si elige crear vistas remotas para las tablas, el Asistente para conversión creará un nuevo conjunto de vistas remotas utilizando los nombres de sus tablas correspondientes (y cambiará el nombre de las tablas originales). Es posible que ya no necesite utilizar las tablas locales. Esta opción le permite colocar las tablas locales desde la base de datos.
Nombre de vista remota predeterminada
Si elige crear vistas remotas, es posible que desee controlar la nomenclatura de estas tablas. De forma predeterminada, el nombre que se utiliza es el de la tabla original (y se cambia el nombre de la tabla original). Las siguientes opciones le permiten controlar la nomenclatura de las vistas remotas.
  • Prefijo especifica una cadena de caracteres para agregarla al inicio de cada uno de los nombres de las vistas remotas creadas recientemente.
  • Sufijo especifica una cadena de caracteres para agregarla al final de cada uno de los nombres de las vistas remotas creadas recientemente.
  • Ninguno (como el nombre de tabla local) establece el uso del nombre de tabla como valor predeterminado y cambia el nombre de la tabla original.

Paso 9 -Finalizar

En este paso, puede optar por:

  • Convertir sin generar código SQL.
  • Sólo generar código SQL para la conversión.
  • Convertir y generar código SQL.
Upsize
Seleccione esta opción para comenzar a crear bases de datos y tablas, según corresponda, en el servidor remoto.
Guardar SQL generado
Seleccione esta opción para que el Asistente para conversión guarde la secuencia de comandos SQL necesaria para convertir la base de datos y después, se detenga antes de crear una base de datos o tabla en el servidor remoto.

Puede utilizar esta opción para obtener una secuencia de comandos de conversión SQL, que después puede personalizar para adaptarla a las necesidades de su aplicación. Una vez que haya modificado y guardado la secuencia de comandos SQL, puede ejecutarla para completar el proceso de conversión. Este proceso en dos etapas ofrece una gran flexibilidad, ya que le permite usar Visual FoxPro para generar la mayor parte del código que necesita y al mismo tiempo, le ofrece la posibilidad de ajustar los detalles de la instalación después del conversión.

Actualizar y guardar las secuencias de comandos SQL generadas
Seleccione esta opción para convertir la base de datos y guardar la secuencia de comandos SQL generada por el asistente.

La primera y la tercera opción de conversión sólo están disponibles si tiene el permiso CREATE TABLE en el servidor. Si elige cualquiera de las opciones que guardan el código SQL generado, todo el código SQL que genere el Asistente para Conversión a SQL Server se guardará en el disco duro.

Nota El conversión puede tardar mucho tiempo, dependiendo del tamaño de los datos, la cantidad de tráfico en la red y el número de peticiones concurrentes que tenga que procesar el servidor. La exportación de tablas de gran tamaño puede tardar varias horas.

Para convertir la base de datos

  1. Seleccione la opción de conversión que desee.
  2. Seleccione el botón Finalizar.

    El asistente para Conversión a SQL Server crea los dispositivos y bases de datos necesarios, y comienza a exportar los objetos de Visual FoxPro a SQL Server.

Solución de problemas

Si se produce algún error mientras el asistente para Conversión a SQL Server está exportando datos, se le preguntará si desea guardar información del error. Si elige guardar la información del error, se generará un informe de errores.

La mayor parte de los errores de conversión se producen porque no hay suficiente espacio en la base de datos o en el dispositivo de registro del servidor, o porque la base de datos remota no tiene el tamaño suficiente para aceptar los datos que se están exportando al servidor. Asegúrese de seleccionar dispositivos que tengan suficiente espacio disponible y de definir un tamaño suficientemente grande para la base de datos.

Base de datos o registro llenos

El asistente para Conversión a SQL Server agota el espacio disponible y se detiene si la base de datos SQL seleccionada o creada es demasiado pequeña. Para solucionar este problema, puede aumentar el espacio asignado a la base de datos o al registro. Esta solución puede implicar perder (quitar) la base de datos o el registro creados por el proceso de conversión.

Para aumentar el espacio para una nueva base de datos o registro

  1. Elimine la base de datos.
  2. Si el asistente para Conversión a SQL Server ha cambiado los nombres de alguna tabla local, restablezca los nombres de las tablas a sus valores originales con uno de los siguiente métodos:
    • Recupere una versión de copia de seguridad del archivo .dbc de la base de datos local de su sistema y reemplace con ella el archivo .dbc modificado.

      -o-

    • Cambie el nombre de las tablas locales a sus nombres originales.
  3. Al ejecutar nuevamente el asistente, especifique un tamaño mayor para la base de datos o el registro.

Para aumentar el espacio para una base de datos existente

  1. Aumente el tamaño de la base de datos.
  2. Si el asistente para Conversión a SQL Server ha cambiado el nombre de alguna tabla local, cámbielo nuevamente al nombre original.
    • Recupere una versión de copia de seguridad del archivo .dbc de la base de datos local de su sistema y reemplace con ella el archivo .dbc modificado.

      -o-

    • Cambie el nombre de las tablas locales a sus nombres originales.
  3. Ejecute nuevamente el asistente.

Para aumentar el espacio de un registro existente

  1. Aumente el tamaño del registro.

    -o-

    Elimine el registro de transacciones.

  2. Si el asistente para Conversión a SQL Server ha cambiado el nombre de alguna tabla local, cámbielo nuevamente al nombre original.
    • Recupere una versión de copia de seguridad del archivo .dbc de la base de datos local de su sistema y reemplace con ella el archivo .dbc modificado.

      -o-

    • Cambie el nombre de las tablas locales a sus nombres originales.
  3. Ejecute nuevamente el asistente.

Debe sobrescribir las tablas creadas en la conversión parcial efectuada anteriormente, para asegurarse de que se crean todas las relaciones de tablas.

Para obtener más información acerca de cómo aumentar el tamaño de la base de datos o del registro, consulte el comando ALTER DATABASE en la documentación de SQL Server. Para obtener más información acerca de cómo eliminar el registro de transacciones, consulte el comando DUMP TRANSACTION en la documentación de SQL Server.

Dispositivo lleno

El dispositivo en el que está ubicada una base de datos o un registro puede llenarse. Puede ampliar la base de datos o el registro a otro dispositivo con el comando ALTER DATABASE o el Administrador de SQL Server; o bien, puede crear un dispositivo de mayor tamaño.

Para crear un dispositivo de mayor tamaño

  1. Elimine el dispositivo.
  2. Reinicie SQL Server.
  3. Cree un dispositivo de mayor tamaño.
    Precaución Al eliminar un dispositivo se eliminan todas las bases de datos y registros que contiene, no sólo la base de datos a la que está convirtiendo.

Para eliminar un dispositivo puede usar el procedimiento del sistema sp_dropdevice. Para obtener más información, consulte la documentación de SQL Server.

Vea también

Introducción a los asistentes | Convertir las bases de datos de Visual FoxPro | Funcionamiento del Asistente para conversión a SQL Server


Asistente para tablas

Crea tablas basadas en estructuras típicas de tabla. El Asistente para tablas proporciona plantillas de tablas, configuraciones de estilo opcionales, uso de los tipos de datos binarios Character y Memo, y acceso a las bases de datos. El asistente le permite seleccionar una tabla que se ajuste a sus necesidades a partir de la lista de tablas de ejemplo. Puede personalizar la estructura y los campos de la tabla a medida que recorre el asistente. Puede agregar una tabla a una base de datos y utilizar la configuración de la base de datos para determinar los formatos de los campos que se van a agregar a la tabla. También puede establecer relaciones entre las tablas de la base de datos.

Si tiene una o más bases de datos abiertas, el Asistente para tablas agregará automáticamente la nueva tabla a la base de datos actual. Si agrega la tabla a una base de datos, el Asistente para tablas da automáticamente el formato apropiado a los campos seleccionados. Si no hay ninguna base de datos abierta, el asistente crea una tabla libre.

Para acceder al Asistente para tablas

  • En el submenú Asistentes del menú Herramientas, elija Tablas.

    -o-

    En el menú Archivo, elija Nuevo, elija la opción Tabla y hacer clic en el botón Asistente.

Para crear una tabla con el Asistente para tablas

  1. En el Administrador de proyectos, seleccione la ficha Datos y, a continuación, seleccione Tablas libres.
  2. Elija Nuevo.
  3. Elija el botón Asistente para tablas.
  4. Siga las instrucciones de las pantallas del asistente.

Si basa la tabla en una base de datos, puede usar estilos, asignaciones de campos o una clave principal, y establecer o usar relaciones en las tablas de base de datos.

Paso 1 – Seleccionar campos

En este paso, puede elegir una de las tablas de ejemplo y seleccionar desde los campos disponibles para crear su tabla.

Para seleccionar campos para la tabla

  1. Use el cuadro de lista Tablas de ejemplo para localizar y seleccionar la tabla que quiere usar.
  2. En el cuadro de lista Campos disponibles, seleccione uno o más campos que quiera usar de la tabla seleccionada y use los botones de dirección para moverlos al cuadro Campos seleccionados.

Puede clasificar su selección como Negocios o Personal, y puede seleccionar campos de más de una tabla. Si desea agregar una de sus propias tablas al cuadro Tablas de ejemplo, elija Agregar.

Paso 1a - Seleccionar una Base de Datos

En este paso puede elegir agregar la tabla a una base de datos. Agregar la tabla a una base de datos aumenta su funcionalidad, pero la tabla puede ser completamente funcional sin que haga parte de una base de datos. Si usted crea su tabla en una base de datos, el Asistente para tablas le ofrecerá opciones de formato automático y personalizado en el siguiente paso.

También puede especificar un nombre significativo o descriptivo para la nueva tabla.

Nota Si crea una tabla libre, no podrá cambiar los títulos de los campos.

Paso 2 - Modificar las opciones de los campos

En este paso puede cambiar cualquier configuración predeterminada del campo. Por ejemplo, puede modificar el ancho máximo de un campo de caracteres o el número de decimales permitido en un campo numérico.

Puede especificar si los campos pueden contener valores NULL, y puede cambiar el título o el tipo del campo.

Si está creando su tabla en una base de datos, también puede seleccionar una de las máscaras predefinidas de entrada de datos para cada tipo de campo o crear una máscara de entrada personalizada. La ventana Formato muestra la máscara y código de formato que ha elegido.

Paso 3 - Indexar la tabla

En este paso, puede seleccionar el campo que será la clave de índice principal de la nueva tabla. También puede designar otros campos como claves de índice secundarias.

Paso 4 - Definir relaciones

En este paso, si crea una tabla en una base de datos, puede establecer relaciones entre los campos de la nueva tabla y de las tablas existentes en la base de datos.

Resalte el campo para el que desea definir una relación y, a continuación, haga clic en el botón Relaciones.

Para definir una relación

  1. Haga clic en el botón de opción que identifica el tipo de relación que desea definir.
  2. Seleccione el campo que relaciona las tablas en la base de datos. Si selecciona <nuevo campo>, escriba un nombre de campo.
  3. Haga clic en Aceptar.

    El cuadro de diálogo Relaciones se cerrará y volverá al paso 3, donde aparecerá la nueva relación en la lista.

Paso 5 - Finalizar

En este paso puede especificar como la tabla será guardada y usada.

Guardar la tabla para su uso posterior
Guarda la tabla en disco para uso posterior cuando se hace clic en Finalizar.
Guardar la tabla y examinarla
Guarda la tabla en disco y la abre para que se pueda inmediatamente agregar registros, eligiendo Agregar nuevo registro en el menú Tabla, luego de hacer clic en Finalizar.
Guardar la tabla y modificarla en el Diseñador de tablas
Guarda la tabla en disco y luego la abre en el Diseñador de tablas para que pueda modificarla inmediatamente después de hacer clic en Finalizar.

Vea también

Crear índices para tablas | Introducción a los asistentes | Crear una tabla libre | Trabajar con tablas


Asistente para publicación en Web

Le permite presentar datos de una tabla o vista en un documento HTML. En su explorador, puede usar o compartir el archivo creado por el Asistente para publicación en Web, o puede modificarlo en un editor de texto.

Para ejecutar el Asistente para publicación en Web

  • En el submenú Asistentes del menú Herramientas, elija Publicación en Web.

En el Asistente para publicación en Web, puede especificar el diseño de los datos así como el diseño y estilo del encabezado y cuerpo de la página HTML. Puede utilizar los diseños y estilos visuales predeterminados incluidos con el asistente, o personalizarlos. Además, puede cargar un archivo de hoja de estilo en cascada (.css) existente.

Paso 1 – Seleccionar campos

En este paso, puede elegir una tabla libre o una tabla dentro de una base de datos como el origen de su página Web. Sólo puede seleccionar campos de una sola tabla o vista.

Seleccionar campos para su página Web

  1. Use el control Bases de datos y Tablas para localizar y seleccionar la tabla que desea usar.
  2. En el cuadro de dialogo Campos disponibles, seleccione uno o mas campos que desee usar desde la tabla seleccionada, y use los botones de flecha para moverlos al cuadro desea ordenar los registros en cada grupo. También puede especificar un orden Ascendente o DResalte los campos y, a continuación, haga clic en Agregar para seleccionar los campos por los que el orden en el cual ordenar Seleccione hasta tres campos o una etiqueta de índice existente en la base de datos para determinar.

Paso 2 – Ordenar los registros

Seleccione hasta tres campos o una etiqueta de índice existente en la base de datos para determinar el orden en el cual ordenar Resalte los campos y, a continuación, haga clic en Agregar para seleccionar los campos por los que desea ordenar los registros. También puede especificar un orden Ascendente o Descendente.

Utilice Quitar para eliminar un campo de la lista.

Paso 3 – Elegir estilo

Puede seleccionar un Diseño de datos y un Estilo visual para su página Web.

Puede modificar el diseño seleccionado con el botón Opciones. Puede omitir los parámetros del estilo visual predeterminado y agregar sus propias etiquetas HTML con el botón Avanzadas.

Opciones
Abre el cuadro de diálogo Opciones de diseño, en el que puede modificar las propiedades específicas del diseño de datos que elija.
Avanzadas
Abre el cuadro de diálogo Avanzadas, en el que puede modificar la apariencia de su página Web, agregando una hoja de estilo en cascada (.css), colores, texto y etiquetas HTML.
Vista previa
Utilice este botón para ver un ejemplo de su página Web con el diseño de datos y los estilos visuales seleccionados. La vista previa está limitada a diez (10) registros por página.

Paso 4 - Finalizar

En este paso, puede guardar su nuevo documento de Web.

Guardar página Web y usarla más tarde
Guarda la página Web en disco para usarla posteriormente.
Guardar página Web y modificarla en un editor de texto
Guarda la página Web a disco y la abre en su editor de texto predeterminado para modificarla.
Guardar página Web y abrirla en el explorador
Guarda la página en disco y la abre en el explorador Web predeterminado.
Crear script para generar pagina Web
Crea un archivo de programa que creará su página Web dinámicamente.

Guardar estilo

Úselo para especificar y guardar el nombre del estilo que aplicó a su página Web.

Vea también

Introducción a los asistentes | Ayuda HTML


Cuadro de diálogo Avanzadas

Este cuadro de diálogo es parte del Asistente para Publicación en Web que le permite especificar características adicionales a una página Web. Se muestra en el Paso 3, al hacer clic en el botón Avanzadas. Puede especificar formatos y objetos de hojas de estilo en cascada (.css), y agregar Elementos HTML adicionales, como encabezados, texto, y otros elementos y características de páginas Web.

Para acceder al cuadro de diálogos Avanzadas

  1. Desde el menú Herramientas, seleccionar Asistentes, y luego clic en Publicación en Web.
  2. Navegue por el asistente hasta el Paso 3.
  • Clic en Avanzadas.
Hoja de estilo en cascada
Este control le permite especificar o localizar un archivo de hoja de estilo en cascada (.css) para usarlo en su página Web.
Cuerpo
Color Este cuadro de lista le permite escoger un color para utilizarlo como fondo para el cuerpo. Esta opción anula los colores especificados en el diseño de datos o estilo visual seleccionados.

Imagen Este cuadro de diálogo le permite especificar o localizar un archivo de imagen para mostrarlo en su página Web.

Copiar gráficos en la ubicación de los archivos HTML
Esta casilla de verificación permite especificar que todos los archivos gráficos que se usen en el diseño de datos o estilo visual se copien en la misma ubicación en que se encuentra el archivo de página Web.
Guardar configuración
Este botón permite mantener los cambios de un estilo visual en un archivo para usarlo posteriormente.
Cargar Configuración
Este botón permite acceder a un diseño o elimina un diseño guardado que ya no desea.
Elementos HTML Adicionales
Esta sección le permite agregar etiquetas Web para dar formato, agregar texto y referencias a su página Web.
Agregar
Este botón abre el cuadro de diálogo de elementos HTML en el cual puede agregar y formatear elementos HTML adicionales en la página Web. Para mayor información, vea Cuadro de diálogo Elemento HTML.
Modificart
Este botón abre el cuadro de diálogo de elementos HTML, y así modificar el elemento HTML seleccionado en la página Web. Para mayor información, vea Cuadro de diálogo Elemento HTML.
Eliminar
Este botón le permite eliminar el elemento HTML seleccionado en la página Web.

Vea también

Asistente para Publicación en Web | Cuadro de diálogo Elemento HTML | Cuadro de diálogo Opciones de diseño | Introducción a los asistentes


Cuadro de diálogo Elemento HTML

El cuadro de diálogo Elemento HTML es parte del Asistente de Publicación en Web. Le permite especificar elementos adicionales y sus atributos para la página Web creada.

Para acceder al cuadro de diálogo Elemento HTML

  1. Desde el menú Herramientas seleccione Asistentes y luego haga clic en Publicación en Web.
  2. Navegue a través del asistente hasta que alcance el paso 3.
  3. Haga clic en Avanzado (Advanced).
  4. En el cuadro de diálogo Avanzado (Advanced) haga clic en Agregar (Add).
Type
Esta lista desplegable proporciona una lista de elementos de etiquetas de HTML que puede agregar a su página.
Location
Esta lista desplegable le permite especificar dónde, en qué lugar de la página Web, desea que aparezca el elemento HTML seleccionado — en el encabezado, antes de los datos o después de los datos.
Text Formatting
  • Text Especifique el texto exacto que desea mostrar en en la localización que ha seleccionado en la lista desplegable Location.
  • Heading Especifique, a partir de una lista desplegable, la etiqueta de encabezado HTML que desea aplicar al texto especificado.
  • Bold (Strong) Especifique si desea o no, que el texto especificado tenga formato Negrita (bold).
  • Italic Especifique si desea o no, que el texto especificado tenga formato cursiva (italic).
  • Font name Especifique la fuente que desea usar para el texto especificado. Si elige un encabezado, esta opción se desactivará y su página Web usará el valor definido para encabezados en el explorador.
  • Size Especifique el tamaño que desea usar para el texto especificado. Si elige un encabezado, esta opción se desactivará y su página Web usará el valor definido para encabezados en el explorador.
  • Alignment Especifique la alineación de izquierda a derecha del elemento HTML especificado.
  • Forecolor Especifique el color de primer plano (texto predeterminado) del elemento HTML especificado.
  • Backcolor Especifique el color del elemento HTML especificado.
Attributes
Archivo/HREF Especifique o localice el archivo (o dirección URL) que desea usar en un elemento Hyperlink o Image seleccionado en Type.
  • File/HREF Especifique o localice el archivo (o URL) que desea utilizar si selecciona los elementos Hyperlink o Image en la lista desplegable Type.
  • Style Class Especifique una ruta de referencia a la clase contenida en el folio escalado (cascading style sheet) (.css).

Cuando hace clic en Aceptar (OK), es devuelto al cuadro de diálogo avanzado, donde puede especificar otro elemento HTML, guardar el dato actual de diseño y estilo de información o continuar hasta el paso 4 del Asistente para Publicación en Web.

Vea también

Asistente para publicación en Web | Cuadro de diálogo Avanzado | Cuadro de diálogo Opciones de diseño | Introducción a los asistentes


Cuadro de diálogo Opciones de diseño

El cuadro de diálogo Opciones de diseño es parte del Asistente de Publicacion en el Web. Este cuadro de dialogo le permite modificar los valores predeterminados del diseño de datos seleccionado. Puede guardar los cambios realizados en un nuevo diseño de datos y especificación de estilo, con el botón Guardar configuración del cuadro de diálogo Avanzadas.

Para acceder al cuadro de dialogo Opciones de Diseño

  1. Desde el menú Herramientas elija Asistentes, luego haga clic en Publicación en Web.
  2. Navegue a traves del asistente hasta que llegue al paso 3.
  3. Haga clic en Opciones.
Borde
Esta ficha le permite seleccionar el color de fondo y del borde, así como el ancho del borde. También puede especificar un archivo .gif o .jpg que se usará como imagen de fondo.
  • Color de Borde Especifica el color del borde.
  • Color de Fondo Especifica el color de fondo para los gráficos y el texto.
  • Imagen de Fondo Especifica el nombre de una imagen de fondo .gif o .jpg y, si es necesario, su ubicación.
  • Ancho del borde Especifica el ancho del borde en puntos.
Fuente
Esta ficha le permite especificar una o más fuentes definidas en HTML para el caso que un usuario no tenga una fuente específica. Esta función es muy útil para poder utilizar los exploradores de distintas plataformas.

También puede especificar el nombre de la fuente y cambiar su color predeterminado.

  • Nombre de Fuente Especifica el nombre de la fuente y, si es necesario, su ubicación.
  • Tamaño de la fuente Especifica el tamaño de la fuente.
  • Color de Texto Especifica el color del texto
Otros
Esta ficha le permite especificar el nombre de una clase definida en HTML para usarla en su página Web.

La ficha Otros también le permite tener acceso a las propiedades específicas para la elección de un diseño en particular.

  • Clase de Estilo Especifique el nombre y ubicacion de un archivo .css que contiene la clase de estilo para usar en su pagina web.
  • Color de la Primera Fila Especifique desde la lista desplegable el color de la primera fila de su pagina web.
  • Color de la Próxima Fila Especifique desde la lista desplegable el color de las filas siguientes en su página Web.
  • Grupos de Filas Especifique el número de filas en cada bloque de la tabla mostrada. Cada uno de los colores de la fila que usted elige será utilizado en este número de filas alternadamente.
Restablecer valores predeterminados
Utilice este botón para restablecer las opciones en los valores originales predeterminados del asistente.

Cuando haga clic en Aceptar, el cuadro de dialogo se cerrara y volverá al paso 3 del Asistente para Publicación en Web.

Vea también

Asistente para Publicación en Web | Cuadro de diálogo Avanzado | Cuadro de diálogo Elemento HTML | Asistentes - Generalidades

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Ventanas

Explica las funciones y opciones que aparecen en varias ventanas de Visual FoxPro.

En esta sección

Ventana Explorador de accesibilidad
Permite explorar varios elementos de la interfaz de usuario accesible de una aplicación .
Ventana prueba de secuencias automáticas
Permite guardar y reproducir los eventos del ratón y teclado en la aplicación.
Ventana Examinar
Muestra los registros de la tabla activa.
Ventana Pila de llamadas
Permite presentar procedimientos, programas y métodos que se están ejecutando. Mientras se ejecuta un programa, se muestra en la ventana de la pila de llamadas.
Ventana Examinador de clases
Muestra las clases de una biblioteca de clases o un formulario y la información de bibliotecas de tipos de un archivo .tlb, .olb o .exe.
Ventana Referencia de código
Permite seleccionar y reemplazar texto o referencias de código luego de ejecutar una búsqueda con el cuadro de diálogo Buscar Referencia.
Ventana Código
Utilice la ventana Código para escribir, presentar y modificar código de formulario, evento y método.
Ventana Comandos
Muestra los comandos del lenguaje de Visual FoxPro cuando elige una comando del menú. La ventana Comandos es una ventana del sistema de Microsoft Visual FoxPro.
Ventana Galería de componentes
Muestra como iconos de acceso directo, los componentes que están disponibles para los proyectos, aplicaciones, diseñadores, asistentes y generadores de Microsoft Visual FoxPro y permite administrar cualquier archivo disponible para su sistema de diversas formas.
Ventana Analizador de trayecto
Contiene un grupo de botones de la herramienta Analizador de trayecto y opciones que le permiten especificar cómo se mostrará la información devuelta por el Motor de trayecto.
Ventana Sesión de datos
Permite abrir y mostrar las tablas o vistas, establecer relaciones temporales y cambiar las propiedades del área de trabajo.
Ventana Resultados del depurador
Permite mostrar los resultados del código de un programa, procedimiento o método activo.
Ventana Depurador
Contiene los menús Depurador, la barra de herramientas Depurador y varias ventanas de depuración.
Ventana Vista del documento
Permite ver y navegar por cualquier procedimiento, función, o definición #DEFINE o directivas de preprocesador del programa.
Ventana Modificar
Permite modificar archivos de texto y programas.
Ventana Campo general
Permite ver o insertar objetos OLE.
Ventana Ir a la definición (temas encontrados)
Permite elegir varias definiciones del código resultado de la utilización de la ventana Ver definición para ver el significado de los elemento del código en el programa.
Ventana Locales
Permite mostrar todas las variables, matrices, objetos y sus miembros, que son visibles para un determinado programa, procedimiento o método.
Ventana Examinador de objetos
Muestra las clases, propiedades, métodos , eventos y constantes disponibles para las bibliotecas de objetos COM.
Ventana Administrador de proyectos
Permite administrar y organizar los archivos en un proyecto.
Ventana Propiedades
Contiene la lista de propiedades, eventos y métodos del formulario, información del entorno, cursores, relaciones o controles seleccionados.
Ventana Administrador de lista de tareas
Describe información importante sobre las tareas con el uso de señales visuales, tales como texto de diferentes colores e iconos.
Ventana Seguimiento
Permite ver cómo están siendo ejecutadas las líneas de código.
Ventana Administrador de Intellisense de Visual FoxPro
Permite especificar el aspecto y el comportamiento de la sintaxis en las instrucciones y otra información mostrada en la ventanas de propiedades, edición y código.
Ventanas del sistema de Visual Foxpro
Provisto en Visual FoxPro como parte de la interfaz.
Ventana Inspección
Permite mostrar las expresiones y sus valores actuales y cambiar los puntos de interrupción en una expresión.

Secciones relacionadas

Referencia de interfaz de usuario
Explica las opciones que aparecen en varios cuadros de diálogo, ventanas y otras interfaces de usuario. Normalmente estos tipos de temas aparecen cuando se presiona F1 en un cuadro de diálogo o en una ventana.
Crear aplicaciones con el marco de aplicaciones
Describe cómo el Application Framework (marco de aplicaciones) se ha diseñado para que incluya todos los elementos necesarios y muchos opcionales, para hacer que una aplicación sea efectiva y cómoda de utilizar.
Generadores
Describe las herramientas que ayudan a configurar las propiedades de los controles de un formulario. Al contrario de los asistentes, los generadores son reutilizables, por lo que puede volver a abrir un generador en un control en concreto repetidas veces.
Cuadros de diálogo
En esta sección se explican las opciones que aparecen en varios cuadros de diálogo.
Desarrollar aplicaciones Visual FoxPro
Incluye información conceptual acerca de cómo desarrollar aplicaciones Visual FoxPro, instrucciones para crear bases de datos y la interfaz de usuario y otras tareas necesarias para crear aplicaciones Visual FoxPro.
Programar en Visual FoxPro
Describe cómo entender las técnicas de programación orientada a objetos y el modelo de manejo de eventos para aumentar su rendimiento en la programación y acceder a todo el poder de Visual FoxPro.


Ventana Explorador de accesibilidad

El Explorador de accesibilidad de Visual FoxPro es una ventana no modal que le permite explorar varios elementos de la interfaz de usuario de una aplicación mediante su interfaz IAccessible.

Para obtener detalles acerca de las diversas propiedades y métodos de IAccessible en la sección Detalles de miembro, consulte la documentación técnica en el sitio Web de accesibilidad de Microsoft en http://www.microsoft.com/enable/.

Opción Esta sesión de VFP
Cuando se activa, el contenido del cuadro de lista de elementos de la interfaz de usuario se rellena con la instancia actual de Visual FoxPro.
Opción Otra sesión de VFP
Cuando se activa, el contenido del cuadro de lista de elementos de la interfaz de usuario se rellena con una nueva instancia de Visual FoxPro.
Botón de comando Actualizar
Actualiza el cuadro de lista de elementos de la interfaz de usuario basándose únicamente en los valores de la casilla de verificación Opciones de sesión y Sólo formularios.
Casilla de verificación Sólo formularios
Cuando está activada, sólo se muestran formularios de Visual FoxPro (los de la colección _VFP.Forms). En caso contrario, en la aplicación de Visual FoxPro se incluyen todos los elementos de la interfaz de usuario.
Botón de comando +
Expande el cuadro de lista de elementos de la interfaz de usuario.
Botón de comando -
Contrae el cuadro de lista de elementos de la interfaz de usuario.
Cuadro de lista de elementos de la interfaz de usuario
Contiene una lista jerárquica (basada en la relación de contenedores primarios) de todos los elementos de la interfaz de usuario accesibles. La lista se rellena cuando se hace clic en el botón Actualizar. Cuando hace clic en un elemento de la lista, en la sección Detalles de miembro se presentan las propiedades de IAccessible de ese elemento.
Sección Detalles de miembro
Esta sección contiene una lista de propiedades de IAccessible (y sus valores) para el elemento seleccionado en el cuadro de lista de elementos de la interfaz de usuario.
Botón de comando Ir (accParent)
Selecciona el elemento primario del elemento actual en el cuadro de lista de elementos de la interfaz de usuario.
Botón de comando Ir (accChild)
Selecciona el elemento secundario del elemento actual en el cuadro de lista de elementos de la interfaz de usuario. El elemento secundario seleccionado es el que se ha elegido en la lista desplegable accChild anterior al botón Ir.
Botón de comando Ejecutar
Ejecuta la acción predeterminada del elemento seleccionado.
Botón de comando <-
Se desplaza al elemento anterior de la interfaz de usuario.
Botón de comando ->
Se desplaza al elemento siguiente de la interfaz de usuario.
Botón de comando Seleccionar
Selecciona el elemento actual de la interfaz de usuario en el cuadro de lista.
Botón de comando Foco
Coloca el enfoque en el elemento actual de la interfaz de usuario en el cuadro de lista.
Botón de comando Hacer clic
Hace clic en el elemento actual de la interfaz de usuario en el cuadro de lista.
Botón de comando Destello
Muestra un borde amarillo alrededor del elemento de la interfaz de usuario seleccionada en el cuadro de lista de elementos de la interfaz de usuario.
Casilla de verificación Resaltar
Cuando está activada, muestra automáticamente un borde amarillo alrededor de elemento de la interfaz de usuario seleccionado según cambia el elemento seleccionado en el cuadro de lista de elementos de la interfaz de usuario.

Plataformas compatibles

Windows 2000 y posterior incluye toda la compatibilidad básica para la accesibilidad. Versiones anteriores de Windows admiten la accesibilidad en varios grados.

Plataforma | Descripción de compatibilidad
Windows 98 | Incluye Accesibilidad activa versión 1.1 en la versión inicial de Windows 98; no obstante, puede ejecutar msaardk.exe para actualizarse a una versión posterior de Accesibilidad activa. Son compatibles todas las versiones de idiomas de Windows 98 y los futuros Service Pack de Windows 98 tendrán versiones localizadas actualizadas de Accesibilidad activa.
Windows NT 4.0 | Ofrece compatibilidad limitada para Windows NT 4 con Service Pack 4 (SP4) o posterior. SP6 tiene compatibilidad completa y es la versión de NT que se recomienda para utilizar Accesibilidad activa. Para utilizar Accesibilidad activa, debe ejecutar msaardk.exe para instalar los componentes básicos del sistema de Accesibilidad activa. El paquete msaardk.exe falla si aún no está instalado SP4 (o posterior). Sólo es compatible la arquitectura Intel.
Windows 2000 | Incluye archivos básicos del sistema Accesibilidad activa para todas las versiones de los idiomas del sistema operativo. En Windows 2000 se ofrece la compatibilidad con procesadores Intel y Alpha.
Windows Me | Durante la instalación de Windows Me las opciones de accesibilidad se instalan de forma predeterminada, pudiendo disponer al instante del Asistente para accesibilidad y sus utilidades. La integración mejorada de Accesibilidad activa de Microsoft en Windows Me facilita que muchas ayudas a la accesibilidad se ejecuten más correcta y eficazmente con el sistema operativo y otras aplicaciones.

Vea también

Uso del Explorador de accesibilidad | Herramientas de productividad para el desarrollo | Accesibilidad para personas con discapacidades


Ventana prueba de secuencias automáticas

La ventana de Visual FoxPro Automated Test Harness posibilita grabar y reproducir los eventos del teclado y del ratón en las aplicaciones.

Ficha Secuencia de Comandos
Esta ficha hace posible ver y trabajar con secuencias de comandos existentes que fueron grabadas previamente con el Test Harness. Se puede editar cualquier secuencia, seleccionandola en el grid y pulsando el botón Editar Secuencia de Prueba o seleccionando la opción Editar Secuencia del menú. Una o más secuencias pueden ser reproducidas simultáneamente. Para ello, basta con marcar los checkboxes correspondientes a cada secuencia que se quiere reproducir, y pulsar el botón Ejecutar la Secuencia o selecccionar la opción Ejecutar del menú. Las siguientes opciones están disponibles en esta ficha:
  • Cuadrícula de secuencias

    Muestra todas las secuencias grabadas. Se incluye información sobre cada secuencia, incluyendo las secuencias anteriores y posteriores a la principal. La secuencia principal utiliza el registro de eventos. Los elementos marcados en la primera columna son los que se eliminarán o se reproducirán al seleccionar estas opciones. La función Editar Secuencia solo se aplica a la fila de la cuadrícula seleccionada.

  • Botón eliminar

    Elimina la secuencia seleccionada (primera columna marcada) en la cuadrícula.

Ficha Opciones
Esta ficha tiene configuraciones opcionales que pueden seleccionarse tanto para grabaciones como para reproducciones. Las siguientes opciones están disponibles:
  • Sobrescribir la secuencia existente

    Si está marcada, la secuencia existente del mismo nombre será sustituída por la nueva secuencia grabada sin pedir confirmación.

  • Abrir siempre nueva ventana de VFP

    Si se marca, las grabaciones siempre comenzarán en una nueva instancia de Visual FoxPro.

  • Validar la ventana de inicio antes de comenzar la reproducción

    Si está marcada, la ventana de inicio es validada contra la Ventana de Registro. Si no corresponde hacerlo, provocará un error. La prueba fallará si aparece una ventana imprevista u ocurre un error.

  • Comprobar la presencia de cada objeto

    Si está marcada, antes de reproducir cada evento, se verifica que el objeto asociado con dicho evento exista. Por ejemplo, si la tecla pulsada ha sido grabada en un control textbox, se verificará antes de ejecutar el evento la presencia de un objeto con ese nombre. Se lanzará un error si el objeto no existe.

  • Comprobar errores de programa

    Esta opción se utiliza para notificar un error en la prueba de la aplicación. Si está marcada y ocurre un error durante la reproducción, el error será añadido al archivo de registro. Los resultados de la prueba se pueden ver en la ficha Registro de la Prueba.

  • Número de ejecuciones

    Especifica el número de veces que debe ejecutarse cada una de las secuencias de comandos seleccionada en la ficha Secuencia de Comandos.

  • Retardo entre eventos

    Posibilita indicar un retardo determinado (número de milisegundos) entre evento y evento durante la reproducción.

  • Si falla la secuencia

    Proporciona un controlador de errores si ocurre un problema durante la reproducción. Se puede abortar del todo la secuencia, saltar solo el evento que ha fallado o bien continuar la reproducción después de reintentar el evento fallido.

Registro de la Prueba
Esta ficha contiene detalles de los resultados de las reproducciones. Las siguientes opciones están disponibles en esta ficha:
  • Control de la cuadrícula del Registro de Prueba

    Muestra información útil de las secuencias reproducidas recientemente. La utilización de memoria es la diferencia entre la memoria disponible antes y después de ejecutar la prueba.

  • Botón eliminar

    Emilina el registro seleccionado.

Registro de trayecto
Se puede establecer el registro de trayecto utilizando las configuraciones de la ficha Registro de Trayecto. Durante la reproducción, activará el registro de trayecto y guardará el registro en el archivo indicado.
  • Activar registro de trayecto durante la reproducción

    Si está seleccionado, crea un registro de trayecto durante la reproducción de la secuencia.

  • Sobrescribir el archivo de registro si existe

    Si está seleccionado y existe el archivo de registro indicado, se sobrescribe automáticamente sin solicitar confirmación.

  • Botón ver registro

    Muestra el archivo de trayecto de la prueba, si existe.

  • Botón Analizador de Trayecto

    Llama al Analizador de Trayecto, que cargará el registro de trayecto si existe; si no, pedirá que se le indique uno.

Ver también

Uso del Dominio de prueba automatizada | Probar y depurar aplicaciones | Depuración y control de errores | Ventana Explorador de accesibilidad | Analizador de Trayecto (Aplicación)


Ventana Examinar

Muestra los registros almacenados en la tabla activa.

Cuando examina una tabla en la ventana Examinar, puede ver los registros de dos modos: Examinar y Modificar. Puede alternar entre ambos seleccionando Examinar o Modificar en el menú Ver.

Nota Al abrir una tabla con la opción Abrir del menú Archivo, debe elegir Examinar <tabla> en el menú Ver para poder ver la tabla.

Para seleccionar campos, haga clic en una celda o presione TAB, ENTRAR, o las teclas de dirección. Mueva una columna a una nueva posición haciendo clic en el nombre del campo, arrastrando la columna a la posición deseada y soltando el botón del ratón.

Para escribir un valor Null en un campo que acepte valores Null, presione CTRL+0. Mientras un campo que contenga un valor Null permanezca activo, no se mostrará nada en él. Después de activar otro campo distinto, el que contenía el valor Null mostrará la cadena definida con el comando SET NULLDISPLAY (por ejemplo ".NULL.").

Si elige la opción Anexar del menú Ver, la ventana Examinar agrega un nuevo registro en blanco. Cuando rellene el nuevo registro, la ventana Examinar agregará automáticamente otro nuevo registro.

Nota En algunos casos, al examinar una tabla o un cursor generado por una consulta de tabla de referencias cruzadas, los nombres de los campos comienzan con un carácter y un guión que indican el tipo de datos del campo. Por ejemplo, un campo numérico comienza con N-.

Vea también

Controlar la presentación de un campo | Crear tablas | BROWSE (Comando) | SET BRSTATUS (Comando) | SET REFRESH (Comando) | Personalizar una ventana Examinar


Ventana de la pila de llamadas

Le permite presentar procedimientos, programas y métodos que se están ejecutando. Mientras se ejecuta un programa, se muestra en la ventana Pila de llamadas. Si ejecuta un procedimiento u otro programa desde un primer programa, mientras dure la ejecución del segundo programa aparecerán los nombres de ambos programas en la ventana Pila de llamadas, y así sucesivamente.

Esta ventana se activa cuando se elige Pila de llamadas en el menú Ventana de la ventana Depurador.

Panel Resultados
Muestra los procedimientos, programas y métodos que se están ejecutando actualmente.
Indicador de la pila de llamadas
Señala el programa, procedimiento o método que se está ejecutando actualmente.

La ventana Pila de llamadas se puede configurar en la ficha Depurar, cuadro de diálogo Opciones.

Vea también

Ficha Depurar, cuadro de diálogo Opciones | Ventana Depurador | Métodos abreviados del depurador | Ventana Resultados del depurador | Ventana Inspección


Ventana Examinador de clases

El Examinador de clases muestra las clases de una biblioteca de clases o un formulario y la información de bibliotecas de tipos de un archivo .tlb, .olb o .exe. Puede utilizar el Examinador de clases para ver, utilizar y administrar clases y sus miembros definidos por el usuario.

Para ejecutar el Examinador de clases

  1. Abrir Visual FoxPro.
  2. Desde el menú Herramientas, hacer clic en Examinador de clases.
    Nota Puede abrir el menú contextual del Examinador de clases si hace clic con el botón secundario del ratón en la ventana del Examinador de clases o al presionar ALT+F10.

Botones del Examinador de clases

Ejecutan diversos comandos del Examinador de clases. La funcionalidad adicional se proporciona mediante el menú contextual del Examinador de clases.

Cuadro Tipo
Permite la selección o entrada de un tipo de clase o cadena de caracteres para filtrar el comando Mover. La lista desplegable muestra las clases de base. La lista también guarda un historial de tipos de clase y filtros que ha seleccionado o escrito para la instancia actual del Examinador de clases.
Icono Mover de la clase
Muestra un icono que representa la clase seleccionada. El icono se puede arrastrar a la ventana principal de Visual FoxPro para crear una instancia de dicha clase. Es posible asignar un mapa de bits definido por el usuario al icono Mover de la clase.
Lista de clases
Muestra las clases y subclases contenidas en una biblioteca de clases (.vcx) o un formulario (.scx) en una vista jerárquica o alfabética. Unos corchetes angulares (<<) junto a una clase indican que la clase primaria está en un archivo que no se muestra en la Lista de clases actual. Para ver la clase primaria, elija Seleccionar clase primaria en el menú contextual. Para modificar cualquier clase en el Diseñador de clases, haga doble clic en el nombre de la clase.
Lista de miembros
Presenta las propiedades y métodos definidos por el usuario de la clase o el formulario seleccionado en la lista de clases. Puede filtrar esta lista si selecciona opciones en el menú contextual de la Lista de miembros.
  • Filtro protegido Si se muestra un icono de protegido (una llave) junto al elemento de menú contextual Filtro protegido, los miembros protegidos se muestran en la Lista de miembros. Los miembros protegidos también se indican con un asterisco (*).
  • Filtro oculto Si se muestra un icono de oculto (un candado) junto al elemento de menú contextual Filtro oculto, los miembros ocultos se muestran en la Lista de miembros. Los miembros ocultos se indican también con un signo de intercalación (^).
  • Filtro vacío Si se muestra una marca de verificación junto al elemento de menú contextual Filtro vacío, se muestran los métodos vacíos en la Lista de miembros. Los métodos vacíos se indican con una tilde (~).
Cuadro Descripción de clase
Muestra una descripción para la clase seleccionada. Este cuadro se encuentra en la parte inferior derecha de la ventana Examinador de clases. Puede modificar la descripción de este cuadro.
Cuadro Descripción de miembro
Muestra información acerca del miembro seleccionado de una clase. Este cuadro se encuentra en la parte inferior derecha de la ventana Examinador de clases.

Para los miembros objeto, este cuadro es una presentación de sólo lectura de la clase y la clase de base. En el caso de miembros de propiedades o métodos, el cuadro muestra una descripción que puede modificar. Para las instancias, el cuadro muestra una descripción de sólo lectura que incluye el alcance de la variable (pública u oculta), nombres de miembros y valores de propiedades.

Vea también

Agregar controles a formularios con el Examinador de clases | Examinar clases con el Examinador de clases | Botones del Examinador de clases | Métodos del Examinador de clases | Propiedades del Examinador de clases | Diseñador de clases | Ventana Comandos | Personalizar el Examinador de clases | Filtrar la lista de clases del Examinador de clases | Métodos abreviados de teclado | Modificar los iconos y las descripciones de clases | Ver jerarquías de clases


Botones del Examinador de clases

Cuando se abre el Examinador de clases, también se abre una barra de herramientas con un único botón. Puede elegir este botón Modificar ParentClass Método cuando se edita código de métodos. Si hay código asociado con el método en la clase contenedora, el código se muestra en una ventana separada de manera que se puede ver la funcionalidad que se puede heredar o sobrescribir.

En la ventana del Examinador de clases están disponibles los botones siguientes:

Galería de componentes
Alterna entre el Examinador de clases y la Galería de componentes para administrar los elementos de Foundation Classes. | Abrir
Agrega un archivo de biblioteca de clases (.vcx) existente, o un archivo de formulario o conjunto de formularios (.scx) a la lista de clases o crea un nuevo archivo de biblioteca de clases.
Ver código de clase
 Ver código de clase
Busca texto específico en nombres de clase, descripciones de clase, nombres de miembro y descripciones de miembro. | Nueva clase
Cambia el nombre de la clase, propiedad o método seleccionados.
Cambia la clase contenedora de la clase seleccionada.

Vea también

Agregar controles a formularios con el Examinador de clases | Examinar clases con el Examinador de clases | Métodos del Examinador de clases | Propiedades del Examinador de clases | Ventana Examinador de clases | Administrar clases con el Examinador de clases | Ver el código de la definición de clase | PACK | Introducción a la Galería de componentes


Ventana Referencia de código

Muestra el resultado de una referencia de código que busca encontrar el alcance de la carpeta/proyecto y tipos de archivos especificados en la caja de diálogo Buscar Referencia. Para mayor información, ver Cuadro de diálogo Buscar referencia.

La ventana de Referencia de Código aparece después que se realiza una búsqueda en el cuadro de diálogo Buscar Referencia o cuando selecciona Código de Referencia desde el menú Herramientas, cuando ha hecho búsquedas previas de referencia de código en el mismo proyecto o carpeta. El proyecto actualmente activo toma preferencia sobre la Carpeta en el alcance de la búsqueda. Si el cuadro de diálogo Búsqueda de Referencia ha sido previamente abierta, puede también llamar la ventana de Código de Referencia usando el siguiente código:

DO(_FOXREF)

Puede colocar a la ventana de Referencia de Código a que siempre aparezca en primer plano cuando otras ventanas están activas.

Para mostrar la ventana de referencia de código en primer plano:

  1. En la ventana de Referencia de Código, clic-derecho en el área derecha de la barra de herramientas.
  2. En el menú contextual, seleccione Siempre al Frente.

Sin embargo, si selecciona Siempre al Frente para otras ventanas de Visual FoxPro, no notará diferencia en su comportamiento.

Los siguientes botones están disponibles en la ventana de Referencia de Código. Puede encontrar algunos de estos comandos en menús contextuales disponibles en diferentes paneles en la ventana de Referencia de Código.

Abrir (icono de carpeta)
Abre o trae al frente el diseñador para el archivo seleccionado. El comando Abrir está disponible solamente cuando un archivo nodo está seleccionado.
Flecha
Cambia entre el alcance de proyecto y carpeta.
Búsqueda
Muestra el cuadro de diálogo Buscar Referencia para que realice una nueva búsqueda de referencia de código.
Refrescar
Actualiza los resultados de la búsqueda previa con los resultados actuales.
Reemplazar
Muestra un cuadro de diálogo de Reemplazar para que especifique una expresión de reemplazo para el código de referencia seleccionado en el panel de resultados. Las siguientes opciones están disponibles en la caja de dialogo Reemplazar:
  • Remplazar con Especifica la expresión de reemplazo para la referencia o referencias de código seleccionadas.
  • Confirmar reemplazos Abre una caja de dialogo para que confirme, decline, o cancele la operación de reemplazo para cada referencia de código.
  • Proteger Realiza operaciones de reemplazo usando el original de la referencia de código o del texto. La protección incluye las de mayúsculas, minúsculas o título (propiedad), en el cual la primera letra de cada palabra es capitalizada. Esta opción no soporta el caso mixto, como por ejemplo en "FoxPro", porque las longitudes de los valores originales y de reemplazo pueden ser diferentes.
  • Crea respaldo de archivos modificados Efectúa una copia de respaldo de los archivos seleccionados antes de realizar una operación de reemplazo. Las copias de respaldo se guardan en la misma ubicación que los archivos originales. Puede abrir el cuadro de diálogo Opciones de la ventana de Referencia de Código o en la caja de dialogo Buscar Referencia para controlar el nombramiento de los archivos de respaldo.

Visual FoxPro crea un registro de actividad conteniendo los resultados más recientes de reemplazos individuales de referencia de código. Estos registros de actividad son mostrados debajo del nodo Registro de Actividades en el panel de búsqueda. Cada registro contiene los siguientes elementos:

  • Una línea que muestra los valores originales y de reemplazo
  • Si la operación de reemplazo tuvo éxito o si una referencia fue omitida usando la opción, se confirma el reemplazo
  • Detalles y código para que haga cambios a la estructura de datos si el archivo de datos fuera afectado
    Nota Las operaciones de búsqueda y reemplazo pueden incluir todos los archivos de Visual FoxPro, incluyendo archivos de datos. Como resultado, realizar una operación de reemplazo puede modificar estructuras de datos.
    Cuando esta posibilidad ocurre, Visual FoxPro muestra una caja de diálogo para confirmar o no la operación de reemplazo. Si usted confirma la operación de reemplazo, Visual FoxPro realizará solamente los reemplazos que no afecten archivos de datos y suministrando código en el nodo de cadena de búsqueda bajo el nodo de Registro de Reemplazos para que manualmente realice los cambios deseados. Si rehusa el reemplazo, los cambios no se realizan.
    Adicionalmente, la herramienta de Referencia de Código no soporta reemplazos en nombre de propiedades y métodos en un formulario (.scx) o biblioteca de clases visuales (.vcx) por los posibles cambios a subclases y referencias externas.
Imprimir
Muestra el cuadro de diálogo Imprimir para que seleccione un conjunto de resultados de búsqueda de códigos de referencia para imprimirse. Las siguientes opciones están disponibles en la caja de diáogo Imprimir:
  • Conjunto de búsqueda Especifica todos los resultados de la búsqueda de referencia de código o el conjunto de resultados que quiere imprimir.
  • Todo Especifica que todas las referencias en el conjunto de referencias de código deben ser impresas.
  • Solamente elementos seleccionados Especifica que solamente los elementos seleccionados por un conjunto de referencias de código sean impresos.
  • Imprime Imprime el conjunto de referencias de código especificadas.
  • Vista previa Abre un cuadro de diálogo de Impresión Previa y el Diseñador de Reportes para la vista previa del conjunto de referencias a imprimir.

Puede especificar un informe diferente si lo desea modificando los siguientes campos en el archivo RefAddin.dbf:

  • Tipo Especifica el Informe.
  • Dato Especifica la descripción del informe.
  • Nombre archivo Especifica el nombre del informe, como puede ser "informe1.frx".
Exportar
Muestra el cuadro de diálogo Exportar para todos los formatos o un conjunto de ellos. Las siguientes opciones están disponibles en la caja de diálogo Exportar:
  • Tipo Especifica el tipo de archivo destino en el resultado de la búsqueda. Para hacer disponible la Opción de Salida a XML, seleccione Lenguaje Extensible de Marca (XML) en la lista desplegable.

    Cuando exporta el resultado de su búsqueda a HTML, Visual FoxPro genera el archivo usando XML y XSLT. Por omisión, Visual FoxPro busca un archivo FoxRef.xsl en el directorio de inicio de Visual FoxPro o HOME(0). Si el archivo no se encuentra, Visual FoxPro copia un archivo interno .xsl y lo coloca en el directorio de Datos de Aplicación del Usuario de Visual FoxPro o HOME(7) a menos que le especifique un directorio diferente. Puede suministrar un archivo XSLT para dar formato al archivo HTML renombrando su archivo XSLT a FoxRef.xsl y reemplazando el archivo original .xsl por el nuevo archivo.

  • A Especifica un destino para el archivo a exportar. Para seleccionar una ubicación distinta a la carpeta actual para el archivo a exportar, haga clic en el botón (...).
  • Conjunto de búsqueda Visualiza todos los resultados de la búsqueda o un conjunto de ficheros que desea exportar.
  • Vista después de exportar Especifica sí desea ver el resultado generado después de que la operación de exportación haya finalizado. Esta opción se vuelve no disponible si selecciona el Portapapeles como destino.
  • Opciones de Salida XML Especifica las siguientes opciones adicionales para la exportación del resultado de la búsqueda hacia una salida XML:

    Generar elementos-basados en XML Genera un archivo XML en el cual los campos son almacenados como elementos.

    Genera atributos-basados en XML Genera un archivo XML en el cual los campos están almacenados como atributos.

    Incluye esquema Agrega un esquema de Definición de Esquema XML (XSD) a la salida XML.

  • Todo Especifica que todas las referencias en el conjunto seleccionado de referencias de código debe ser exportado.
  • Solamente elementos seleccionados Especifica que solo los elementos seleccionados por un conjunto de referencia de código será exportado.
Opciones
Abre la caja de dialogo Opciones para agregar opciones adicionales para su búsqueda. Para mayor información, ver Caja de diálogo Buscar referencia, cuadro de diálogo Opciones.
Ayuda
Abre el archivo de Ayuda de Visual FoxPro.

Panel de búsqueda

El panel de búsqueda, o la ventana arriba-a-la-izquierda, contiene un tree view retraible de los resultados desde una búsqueda de referencias de código. El tree view muestra un nodo con todos los resultados, cada referencia de código, y los archivos que contiene cada referencia. Cuando hace clic en el nombre del archivo, la vista en el panel de resultados, o la ventana arriba-a-la-derecha, es filtrada para presentar solamente el resultado del archivo en particular.

Un nodo de Registro de Reemplazos aparece en el panel cuando los registros que contienen los resultados más recientes de operaciones de reemplazo de referencia de código son creados.

Los siguientes comandos estan adicionalmente disponibles desde un menú contextual que aparece con un clic derecho en una navegación, referencia de código, o archivo de nodo dentro del panel de búsqueda:

Copiar
Copia toda la información en el panel de resultados, incluyendo el nombre del archivo, clase, método o procedimiento, y la línea de información, para el elemento seleccionado hacia el portapapeles para que así se pueda pegar la información en cualquier otra parte.
Limpiar resultado
Elimina el resultado seleccionado del panel de búsqueda. El comando Limpiar Resultado no está disponible si el nodo Todos los Resultados está seleccionado. Si un archivo está seleccionado, solo ese archivo es eliminado del panel de búsqueda.
Limpiar todos los resultados
Elimina todos los resultados de búsqueda del panel de búsqueda.

Panel de resultados

El panel de resultados, muestra los resultados de una búsqueda de referencia de código, incluyendo definiciones potenciales si es que existen, los cuales puede seleccionar, y múltiples referencias que tal vez existan en una sola línea de código. Si existen multiples referencias por línea , el panel de resultados muestran un indicador (el número de referencia encerrado en un círculo) en dicha línea.

El panel de resultados muestra los siguientes elementos:

  • Cajas de verificación para seleccionar líneas individuales de código
  • # Número de referencia de código instanciado que corresponde al resultado, si hay más de uno
  • Nombre de Archivo Nombre del archivo y la localización del mismo.
  • Clase.método,línea Clase, método, y número de línea
  • Código Línea de código que contiene la referencia de código

Puede ordenar los elementos en cada columna haciendo clic en los encabezados de cada columna.

Los siguientes comandos están adicionalmente disponibles desde un menú contextual que aparece cuando hace clic-derecho en una referencia seleccionada dentro del panel de resultados:

Copiar
Copia toda la información de la línea seleccionada, incluyendo el nombre del archivo, clase, método o procedimiento y línea de información, al portapapeles para que así se pueda pegar la información en cualquier otra parte.
Selecciona todo
Seleccoina todos los elementos del panel de resultados.
Limpia selección
Limpia todas las cajas de verificación en el panel de resultados.
Ordenar por
Organiza los elementos en la siguiente manera:
  • Nombre de archivo Organiza los elementos basado en el nombre del archivo.
  • Clase.método Organiza los elementos basado en el nombre de la clase seguido por el nombre del método.
  • Seleccionado Grupos de elementos si es que fueron seleccionados.
  • Tipo de archivo Organiza los elementos basado en el tipo de archivo (extensión).
  • Localización Organiza los elementos basado en la ubicación de la carpeta.

Panel de descripción

El panel de descripción, muestra información sobre una búsqueda, como puede ser el proyecto o carpeta buscada y las similitudes encontradas. Cuando una referencia es seleccionada, el panel de descripción muestra la localización de la referencia y la línea de código en la cual aparece la expresión.

Para esconder o mostrar el panel de descripción

  1. En la ventana Referencia de Código, haga clic-derecho en el área de la derecha de la barra de herramientas.
  2. Desde el menú contextual, seleccione Muestra Descripciones.

Ver también

Ventanas | Cuadro de diálogo Buscar referencia | Caja de diálogo Buscar referencia, cuadro de diálogo Opciones | Ver definiciones de código | Función HOME( )


Ventana Código

Utilice la ventana Código para escribir, mostrar y modificar códigos de formulario, evento y método. Puede abrir tantas ventanas Código como desee. De esta forma, puede ver, copiar y pegar código entre ventanas.

La ventana Código aparece al hacer doble clic en un formulario o en el control de un formulario en el Diseñador de formularios, al hacer doble clic en la ventana Diseñador de entorno de datos, o al hacer doble clic en un evento o método en la ventana Propiedades. Esto también se logra seleccionando el comando Código en el menú Ver.

Objeto
Muestra una lista que incluye: el formulario actual, el conjunto de formularios, el entorno de datos, los objetos de la barra de herramientas, el cursor, las relaciones y todos los controles del formulario actual.
Procedimiento
Muestra una lista de todos los eventos reconocidos por Microsoft Visual FoxPro para el formulario, el conjunto de formularios, el entorno de datos, el cursor, las relaciones o el control que aparece en el cuadro Objeto. Al seleccionar un evento o un método del cuadro Procedimiento, aparecen en el área de edición de la ventana Código los parámetros pasados al evento o método (si los hay). Los nombres de eventos con el texto en negrita contienen código. Los métodos Access y Assign creados para una propiedad también se muestran en el cuadro de diálogo Procedimiento.
Sugerencia Si desea obtener Ayuda acerca de la sintaxis de las funciones, instrucciones, propiedades, eventos o métodos mientras está trabajando en la ventana Código, escriba la palabra clave o el nombre de la propiedad, evento o método, selecciónela y presione F1 para obtener Ayuda en pantalla. También puede seleccionar un evento o método en el cuadro Procedimiento y presionar F1 para obtener información acerca del evento o método seleccionado. Presione AV PAG para pasar al siguiente evento o método que contiene código.

Vea también

Métodos Access y Assign | Diseñador de formularios | Ventana Propiedades | Diseñador de entorno de datos


Ventana Comandos

La ventana Comandos es una ventana del sistema de Visual FoxPro. Cuando elige un comando de un menú, los comandos del lenguaje de Visual FoxPro se reenvían a la ventana Comandos.

En esta ventana también puede escribir directamente comandos de Visual FoxPro. En la ventana Comandos, puede:

  • Borrar el texto escrito presionando ESC, siempre y cuando no haya presionado ENTRAR para ejecutar el comando.
  • Volver a ejecutar un comando, colocando el cursor sobre la línea que contiene el comando y presionando ENTRAR.
  • Volver a ejecutar un bloque de código, seleccionándolo y presionando ENTRAR.
  • Dividir comandos largos. Para ello, escriba un punto y coma (;) después de espacio en el comando que desea dividir y presione ENTRAR.
  • Trasladar texto entre la ventana Comandos y otras ventanas de edición. Seleccione el texto que desea trasladar y arrástrelo al lugar de destino.
  • Copiar texto de la ventana Comandos y pegarlo en otra ventana de edición sin utilizar los comandos del menú Edición. Seleccione el texto, mantenga presionada la tecla CTRL y arrastre el texto al lugar deseado.

Puede cambiar la fuente, el espacio y la sangría seleccionando el comando apropiado en el menú Formato.

Haga clic con el botón secundario del ratón en la ventana Comandos para mostrar un menú contextual con estas opciones:

  • Cortar, Copiar, Pegar. Mueven o eliminan caracteres en la ventana Comandos.
  • Generar expresión. Muestra la ventana de cuadro de diálogo Generador de expresiones, en la que puede definir una expresión utilizando comandos, literales, campos u otras expresiones. La expresión que se genera se pega en la ventana Comandos al hacer clic en Aceptar.
  • Ejecutar Selección. Ejecuta el texto seleccionado en la ventana Comandos como un comando nuevo.
  • Borrar. Quita de la ventana Comandos la lista de los comandos ejecutados anteriormente.
  • Propiedades. Muestra la ventana de cuadro de diálogo Modificar propiedades, en la que puede cambiar el comportamiento, ancho de la ficha, fuentes y opciones de colorear la sintaxis de la ventana Comandos.

Persistencia de contenido

El contenido de la ventana Comandos se guarda automáticamente en un archivo, _command.prg, a menos que se habilite la directiva del sistema noRecentDocHistory o que no utilice un archivo de recursos Foxuser. Puede borrar la ventana seleccionando Borrar en el menú contextual de la ventana Comandos. Para habilitar su uso en múltiples instancias de Visual FoxPro, el archivo sólo se lee cuando se inicia Visual FoxPro y se escribe cuando se sale de Visual FoxPro. El archivo se encuentra en el mismo directorio que el archivo de recursos Foxuser. Puede determinar o cambiar la ubicación del archivo de recursos en el cuadro de diálogo Opciones, de la ficha Archivos o mediante programa con SET("RESOURCE") o SET RESOURCE respectivamente.

Vea también

Cuadro de diálogo Modificar propiedades | Cuadro de diálogo Generador de expresiones | Ventana Modificar | Funcionamiento de la ventana Comandos | Configuración de Visual FoxPro | Ficha Archivos, cuadro de diálogo Opciones | SET RESOURCE (Comando)


Ventana Galería de componentes

La ventana Galería de componentes muestra como iconos de acceso directo los componentes que están disponibles para sus proyectos, aplicaciones, diseñadores, asistentes y generadores de Visual FoxPro y le permite administrar cualquier archivo disponible para su sistema de diversas formas.

La ventana Galería de componentes contiene una barra de herramientas de la Galería de componentes además de las siguientes opciones:

Panel Catálogo (izquierdo)
Muestra la jerarquía de catálogos y carpetas de la Galería de componentes. Seleccione aquí un catálogo o carpeta para mostrar los elementos del contenedor en el panel Objeto situado a la derecha.
Panel Objeto (derecho)
Muestra los elementos contenidos en un catálogo o carpeta.

Para obtener información acerca del uso de elementos de la Galería de componentes, vea Introducción a la Galería de componentes.

Cuadro Descripción
Proporciona información acerca del elemento seleccionado. La barra de estado de Visual FoxPro informa del estado de proceso de la Galería de componentes.

Vea también

Introducción a la Galería de componentes | Cuadros de diálogo Propiedades de la Galería de componentes | Cuadro de diálogo Agregar clase al proyecto


Cuadro de diálogo Abrir catálogo

Le permite seleccionar un nombre de archivo o una descripción de catálogo existente en la Galería de componentes.

Abrir

Abre la descripción del catálogo o el catálogo seleccionado.

Examinar
Abre el cuadro de diálogo Abrir del sistema Windows para que pueda buscar un catálogo que desee abrir.

Vea también

Introducción a la Galería de componentes | Cuadro de diálogo Abrir | Ventana Examinador de clases | Ventana Galería de componentes | Cuadro de diálogo Opciones de la Galería de componentes | Cuadro de diálogo Buscar componente


Cuadro de diálogo Opciones de la Galería de componentes

Le permite especificar la configuración global para catálogos y vistas en la Galería de componentes.

Opciones de la ficha

Las opciones disponibles en el cuadro de diálogo Opciones de la Galería de componentes se agrupan en las siguientes fichas.

Ficha | Para tener acceso a las siguientes características
Ficha estándar, cuadro de diálogo Opciones de la Galería de componentes | Le permite especificar valores predeterminados globales. Esta ficha siempre se encuentra disponible.
Ficha Catálogos, cuadro de diálogo Opciones de la Galería de componentes | Le permite agregar catálogos a la Galería de componentes y especificar si los catálogos son globales o predeterminados.
Ficha Vistas dinámicas, cuadro de diálogo Opciones de la Galería de componentes | Le permite agregar, modificar o quitar vistas de su lista de vistas. Esta ficha siempre se encuentra disponible.

Vea también

Introducción a la Galería de componentes | Ficha estándar, cuadro de diálogo Opciones de la Galería de componentes | Ficha Catálogos, cuadro de diálogo Opciones de la Galería de componentes | Ficha Vistas dinámicas, cuadro de diálogo Opciones de la Galería de componentes | Ventana Galería de componentes


Ficha estándar, cuadro de diálogo Opciones de la Galería de componentes

Le permite especificar la configuración predeterminada de funcionamiento global para todos los catálogos y carpetas, o elementos. En esta ficha están disponibles los siguientes valores:

Valores predeterminados globales

Activar cambio nombre a elemento
Activa la modificación de etiquetas de retardo de selección en los paneles de la Galería de componentes. El cambio de nombre siempre está disponible en el menú contextual.
Generador FFC bloqueado
Le permite especificar que un generador se abre cuando coloca una clase en un formulario.
Arrastrar y soltar en el escritorio
Permite que los elementos de la galería se abran como ejemplos en la ventana del escritorio de Visual FoxPro.
Edición avanzada activada
Activa las fichas de edición avanzada Tipo, Secuencias de comandos, Vistas y Comentarios del cuadro de diálogo Propiedades del elemento.

Comportamiento predeterminado de catálogo

Abrir archivos como vista nueva
Cambia el comportamiento predeterminado de doble clic de los elementos de la galería de Modificar a Ejecutar.
Agregar archivo a la vista actual
Cambia el comportamiento predeterminado de doble clic de los elementos de la galería de Abrir a Agregar.

Comportamiento predeterminado de elemento

Modificar archivo elemento
Establece el comportamiento predeterminado de doble clic de los elementos de la galería a Modificar.
Ejecutar archivo elemento
Establece el comportamiento predeterminado de doble clic de los elementos de la galería a Ejecutar.

Vea también

Cuadro de diálogo Opciones de la Galería de componentes | Ventana Galería de componentes | Ficha Catálogos, cuadro de diálogo Opciones de la Galería de componentes | Ficha Vistas dinámicas, cuadro de diálogo Opciones de la Galería de componentes | Cuadro de diálogo Propiedades de elemento


Ficha Catálogos, cuadro de diálogo Opciones de la Galería de componentes

Muestra los nombres de las vistas disponibles actualmente en la Galería de componentes. Es la lista que se muestra en la lista desplegable Tipo de vista.

Opciones de la ficha

Global
Establece que un catálogo contenga cualquier tipo de carpeta. Puede tener acceso a catálogos globales y su contenido independientemente de que otros catálogos estén abiertos.
Valor predeterminado
Habilita un catálogo para que se abra automáticamente cuando se inicie la Galería de componentes. Todos los catálogos que están marcados como predeterminados están disponibles cuando selecciona la vista predeterminada.
Nuevo
Muestra el cuadro de diálogo Abrir catálogo para que pueda agregar un catálogo a esta lista.

Vea también

Ventana Galería de componentes | Ficha Vistas dinámicas, cuadro de diálogo Opciones de la Galería de componentes | Ficha estándar, cuadro de diálogo Opciones de la Galería de componentes | Cuadro de diálogo Opciones de la Galería de componentes


Ficha Vistas dinámicas, cuadro de diálogo Opciones de la Galería de componentes

Muestra los nombres de las Vistas dinámicas disponibles actualmente en la Galería de componentes. Puede especificar vistas dinámicas en el cuadro de diálogo Opciones de la Galería de componentes.

Opciones de la ficha

Nuevo
Le permite crear una vista dinámica nueva en la Galería de componentes.
Modificar
Le permite modificar una vista dinámica ya existente; para ello, muestra el cuadro de diálogo Modificar vista para la vista seleccionada.
Quitar
Le permite quitar de la Galería de componentes la vista dinámica seleccionada.

Vea también

Ficha Catálogos, cuadro de diálogo Opciones de la Galería de componentes | Cuadro de diálogo Buscar componente | Cuadro de diálogo Opciones de la Galería de componentes | Ventana Galería de componentes | Ficha estándar, cuadro de diálogo Opciones de la Galería de componentes


Cuadro de diálogo Buscar componente

Le permite buscar catálogos o carpetas según varios criterios. El criterio de búsqueda está guardado como una vista que puede usar otra vez.

El cuadro de diálogo aparece cuando hace clic en el botón Buscar de la barra de herramientas de la Galería de componentes. Sus criterios de búsqueda se guardan automáticamente como una descripción de vista antes de que cierre el cuadro de diálogo Buscar componente. Puede quitar las vistas de la galería que ya no necesite usar mediante el botón Quitar de la ficha Vistas dinámicas del cuadro de diálogo Opciones.

Opciones del cuadro de diálogo

Que contenga
Especifica una lista de expresiones separadas por comas que desea buscar. Puede utilizar las mismas expresiones que se emplean en Filtrar la lista de clases del Examinador de clases.
Buscar en
Una lista seleccionable de catálogos disponibles y una opción “todos los catálogos”. Puede agregar un nuevo alcance para la búsqueda.
Palabras clave
Muestra el cuadro de diálogo Palabras clave para seleccionar en el campo Palabras clave del catálogo seleccionado.
Nota Todas las palabras clave están almacenadas en la tabla Keywords.dbf en la carpeta HOME( ).

Buscar campos

Estas casillas de verificación seleccionan campos del catálogo resaltado:

Nombre de elemento
Busca el Nombre como se muestra en la ficha General del cuadro de diálogo Propiedades de elemento.
Nombre de clase
Busca el Nombre de clase como se muestra en la ficha Elemento de clase del cuadro de diálogo Propiedades de elemento.
Descripción
Busca la Descripción como se muestra en la ficha General del cuadro de diálogo Propiedades de elemento.
Propiedades
Busca el contenido de Propiedades como se muestra en la ficha Secuencias de comandos del cuadro de diálogo Propiedades de elemento.
Nombre de archivo
Busca el nombre del archivo mostrado como Biblioteca de clases en la ficha Elemento de clase del cuadro de diálogo Propiedades de elemento.
Tipos de elemento
Muestra los tipos de elemento predeterminados y definidos por el usuario disponibles que puede seleccionar como objetivos de búsqueda.
Buscar
Inicia la búsqueda cuando se hayan establecido todos los criterios.
Cancelar
Cancela una búsqueda.
Nueva búsqueda
Borra los criterios actuales para que pueda iniciar una nueva especificación de búsqueda.
Vista Resultado
Muestra el nombre de la vista que crea o modifica.

Vea también

Cuadros de diálogo Propiedades de la Galería de componentes | Filtrar la lista de clases del Examinador de clases | Cuadro de diálogo Opciones de la Galería de componentes | Ventana Galería de componentes


Cuadros de diálogo Propiedades de la Galería de componentes

En la Galería de componentes puede utilizar la opción Propiedades de los menús contextuales para ver o modificar las propiedades de los catálogos, carpetas u otros elementos de la carpeta. Los temas siguientes proporcionan detalles acerca de cada tipo de cuadro de diálogo de propiedades:

Cuadro de diálogo Propiedades de catálogo

Cuadro de diálogo Propiedades de Carpeta

Cuadro de diálogo Propiedades de elemento

Vea también

Cuadro de diálogo Opciones de la Galería de componentes | Ventana Galería de componentes | Cuadro de diálogo Agregar clase al proyecto


Cuadro de diálogo Propiedades de catálogo

Le permite personalizar el comportamiento de un catálogo de la Galería de componentes al tener acceso a valores en la tabla relacionada.

Este cuadro de diálogo aparece cuando hace clic en Propiedades en el menú contextual de un catálogo seleccionado.

Ficha General

Le permite especificar la configuración global para todos los catálogos. En esta ficha están disponibles los siguientes valores:

Nombre
Muestra el valor del campo Text como la etiqueta del componente en la Galería de componentes.
Descripción
Información opcional del campo Desc que se muestra en el panel de descripción de la Galería de componentes.
Imagen
Valor del campo Folderpict que especifica la ruta de acceso y el nombre de archivo del gráfico utilizado para representar el elemento en la galería.
Imagen de elemento
Valor del campo Picture que especifica la ruta de acceso y el nombre de archivo del gráfico utilizado para representar elementos del catálogo que no posean ninguna imagen especificada.
Desc. elem.
Valor del campo Typedesc que contiene una descripción que se aplica a todos los elementos contenidos en este catálogo o carpeta.

Ficha Nodo

Un nodo es cualquier elemento que puede seleccionar en la galería. Le permite especificar la configuración global para todos los catálogos. En esta ficha están disponibles los siguientes valores:

Id.
El nombre de una tabla junto con el valor del campo ID para el catálogo seleccionado.
Id. de vínculo
Si el elemento seleccionado es un vínculo, especifica el nombre del elemento de origen.
Nombre de clase
El valor del campo Classname, que especifica el nombre de la clase del catálogo o la carpeta seleccionados.
Biblioteca de clases
El valor del campo Classlib, que especifica el nombre y la ruta de acceso a la biblioteca de clases que contiene el elemento de la galería.
Clase del elemento
El valor del campo Itemclass, que especifica la clase predeterminada de los elementos del catálogo seleccionado que no tienen ninguna clase asignada previamente.
Catálogo dinámico
El valor del campo Filename, que contiene la expresión de destino, el nombre del archivo o la dirección URL que se inicia cuando selecciona este elemento del catálogo dinámico.

Ficha Secuencias de comandos

Esta ficha proporciona un lugar para especificar sucesos o propiedades globales para todos los catálogos. En esta ficha están disponibles las áreas siguientes:

Secuencia de comandos
El valor del campo Script, que contiene cualquier secuencia de comandos de eventos relacionados con este catálogo y sus elementos.
Propiedades
El valor del campo Properties, que puede contener asignaciones de valores para propiedades del elemento.

Ficha Comentarios

Le permite especificar la configuración global para todos los catálogos. En esta ficha están disponibles los siguientes valores:

Comentarios
El valor del campo Comment, que contiene observaciones de usuario acerca del uso, las características u otros elementos.
Usuario
El valor del campo User, que contiene observaciones de usuario acerca del uso, las características u otros elementos.

Ficha Tipos de elemento

Le permite especificar la configuración global para todos los catálogos. Puede modificar la configuración de catálogos existentes al seleccionar un tipo de catálogo de la lista o puede agregar un nuevo tipo al hacer clic en el botón Agregar.

Esta ficha proporciona un cuadro de lista que le permite seleccionar un tipo de elemento existente de forma que pueda ver o modificar sus opciones. En esta ficha también se encuentran disponibles los valores siguientes:

Botón Agregar
Le permite agregar nuevos tipos de elementos a la Galería de componentes. A continuación puede configurar y especificar las siguientes propiedades:
Texto
Especifica la etiqueta que se muestra en la Galería de componentes.
Clase
Especifica el nombre de clase del elemento seleccionado.
Biblioteca de clases
Especifica el nombre y la ruta de acceso a la biblioteca de clases que contiene el elemento de la galería.
Tipos de archivos
Especifica las opciones de extensión de archivo que el cuadro de diálogo GETFILE( ) proporcionará para este elemento.
Tipo de elemento
Especifica si el nuevo tipo del elemento es una carpeta o un elemento de la galería.
Propiedades
Puede contener asignaciones de valor a las propiedades del elemento.
Redirección
Especifica qué extensiones se deben utilizar según el tipo de elemento de la galería.
Botón Quitar
Le permite quitar un tipo de elemento existente en la galería.

Vea también

Cuadro de diálogo Propiedades de Carpeta | Cuadro de diálogo Propiedades de elemento | Ventana Galería de componentes | Cuadro de diálogo Propiedades de Carpeta | Cuadro de diálogo Propiedades de elemento | Cuadros de diálogo Propiedades de la Galería de componentes


Cuadro de diálogo Propiedades de Carpeta

Le permite personalizar el comportamiento de las carpetas de la Galería de componentes.

Este cuadro de diálogo aparece cuando hace clic en el menú contextual Propiedades de una carpeta seleccionada.

Ficha General

Le permite especificar la configuración global para todos los catálogos. En esta ficha están disponibles los siguientes valores:

Nombre
Muestra el valor del campo Text como la etiqueta del componente en la Galería de componentes.
Descripción
Información opcional del campo Desc que se muestra en el panel de descripción de la Galería de componentes.
Imagen
Valor del campo Folderpict, que especifica la ruta de acceso y el nombre de archivo del gráfico utilizado para representar el elemento seleccionado en la galería.
Imagen de elemento
Valor del campo Picture que especifica la ruta de acceso y el nombre de archivo del gráfico utilizado para representar elementos del catálogo que no posean ninguna imagen especificada.
Desc. elem.
Valor del campo Typedesc que contiene una descripción que se aplica a todos los elementos contenidos en este catálogo o carpeta.

Ficha Nodo

Un nodo es cualquier elemento que puede seleccionar en la galería. Le permite especificar la configuración global para todos los catálogos. En esta ficha están disponibles los siguientes valores:

Id.
El nombre de una tabla junto con el valor del campo ID para la carpeta seleccionada.
Id. de vínculo
Si el elemento seleccionado es un vínculo, especifica el nombre del elemento de origen.
Nombre de clase
El valor del campo Classname, que especifica el nombre de la clase de la carpeta seleccionada.
Biblioteca de clases
El valor del campo Classlib, que especifica el nombre y la ruta de acceso a la biblioteca de clases que contiene el elemento de la galería.
Clase del elemento
El valor del campo Itemclass que especifica la clase predeterminada de elementos de la carpeta seleccionada que no tienen una clase asignada previamente.
Carpeta dinámica
El valor del campo Filename que contiene la expresión de destino, el nombre del archivo o la dirección URL que se inicia cuando selecciona este elemento de la carpeta dinámica.

Ficha Secuencias de comandos

Esta ficha proporciona un lugar para especificar eventos o propiedades globales para todas las carpetas. En esta ficha están disponibles las áreas siguientes:

Secuencia de comandos
El valor del campo Script, que contiene cualquier secuencia de comandos de eventos relacionados con este catálogo y sus elementos.
Propiedades
El valor del campo Properties, que puede contener asignaciones de valores para propiedades del elemento.

Ficha Comentarios

Le permite especificar la configuración global para todos los catálogos. En esta ficha están disponibles los siguientes valores:

Comentarios
El valor del campo Comments, que contiene observaciones de usuario acerca del uso, las características u otros elementos.
Usuario
El valor del campo User, que contiene observaciones de usuario acerca del uso, las características u otros elementos.

Vea también

Cuadro de diálogo Propiedades de catálogo | Cuadro de diálogo Propiedades de elemento | Cuadros de diálogo Propiedades de la Galería de componentes | Ventana Galería de componentes


Cuadro de diálogo Propiedades de elemento

Le permite personalizar el comportamiento de los elementos de la Galería de componentes.

Este cuadro de diálogo aparece cuando hace clic en Propiedades en el menú contextual de un elemento seleccionado. Cuando selecciona Edición avanzada activada en el cuadro de diálogo Opciones de la Galería de componentes, este cuadro de diálogo también mostrará las fichas Tipo, Secuencias de comandos, Vistas y Comentarios.

Ficha General

Le permite especificar los siguientes valores en esta ficha:

Nombre
Muestra el valor del campo Text como la etiqueta del componente en la Galería de componentes.
Descripción
Información opcional del campo Desc de este registro para la tabla seleccionada (especificada en el valor Id. de la ficha Nodo). Este elemento se muestra en el panel de descripción de la Galería de componentes.
Imagen
Valor del campo Folderpict que especifica la ruta de acceso y el nombre de archivo del gráfico utilizado para representar el elemento en la galería.

Ficha Vistas

Le permite especificar características que controlan la presentación de este elemento en la Galería de componentes.

Vistas
Especifica los nombres de la vista y la carpeta que contienen el elemento seleccionado con la sintaxis siguiente:
<viewName>=<folderName>
Palabras clave
Muestra las palabras clave por las que se puede encontrar el elemento seleccionado. Puede agregar palabras clave a esta lista si hace clic en el botón de cuadro de diálogo y selecciona en la lista predeterminada de palabras clave de la galería.

Ficha Nodo

Un nodo es cualquier elemento que puede seleccionar en la galería. Le permite especificar la configuración del elemento seleccionado. En esta ficha están disponibles los siguientes valores:

Id.
El nombre de la tabla y el valor del campo ID del registro del elemento seleccionado en su catálogo primario.
Vínculo
Si el elemento seleccionado es un vínculo, especifica el nombre del elemento de origen.
Nombre de clase
Especifica la clase de la galería del elemento seleccionado.
Biblioteca de clases
Especifica la ruta de acceso a la biblioteca y el nombre de archivo que contiene la clase de la galería del elemento seleccionado.

Ficha Secuencias de comandos

Proporciona un lugar para especificar eventos o propiedades globales para todos los elementos. En esta ficha están disponibles las áreas siguientes:

Secuencia de comandos
El valor del campo Script del registro de este elemento en su catalogo primario. El campo contiene cualquier secuencia de comandos de eventos relacionada con este elemento.
Propiedades
El valor del campo Properties, que puede contener asignaciones de valores para propiedades del elemento.

Ficha Comentarios

Le permite especificar la configuración del elemento seleccionado. En esta ficha están disponibles los siguientes valores:

Comentarios
El valor del campo Comment de este registro en el catálogo primario (especificado en el valor Id. de la ficha Nodo) que contiene observaciones del usuario acerca del uso, las características u otros elementos.
Usuario
El valor del campo User de este registro en el catálogo primario (especificado en el valor Id. de la ficha Nodo) que contiene observaciones del usuario acerca del uso, las características u otros elementos.

Fichas Elemento

La Galería de componentes genera las fichas Elemento y las agrega al cuadro de diálogo Propiedades de elemento para la mayoría de los elementos que agregue a la galería. Cada ficha Elemento proporciona un conjunto de información de propiedades específico del elemento concreto de ese tipo. Un cuadro de diálogo Propiedades de elemento puede incluir las fichas Elemento de clase, Elemento de archivo, Elemento de formulario, Elemento de menú, Elemento de programa, Elemento de proyecto y Elemento de informe.

Ficha Elemento de clase

Le permite especificar la clase y biblioteca de clases que contiene el elemento de la galería.

Nombre de clase
Especifica el nombre de la clase.
Biblioteca de clases
Especifica el nombre y la ruta de acceso a la biblioteca de clases que contiene el elemento de la galería.
Clase de base
Especifica la clase de la que se deriva este elemento de la galería.
Archivo de ejemplo
Especifica el nombre y la ruta de acceso a un archivo que contiene un ejemplo de este elemento de la galería.

Ficha Elemento de archivo

Le permite especificar la ruta de acceso y el nombre de archivo del elemento de la galería.

Nombre de archivo
Especifica la ruta de acceso y el nombre del archivo.

Ficha Elemento de formulario

Le permite especificar la ruta de acceso y el nombre del archivo .scx del elemento de la galería.

Nombre de formulario
Especifica la ruta de acceso y el nombre del formulario.

Ficha Elemento de menú

Le permite especificar la ruta de acceso y el nombre del archivo .mnx del elemento de la galería.

Nombre de menú
Especifica la ruta de acceso y el nombre del formulario.

Ficha Elemento de programa

Le permite especificar la ruta de acceso y el nombre del archivo del elemento de la galería.

Nombre de archivo
Especifica la ruta de acceso y el nombre del archivo.

Ficha Elemento de proyecto

Le permite especificar la ruta de acceso y el nombre del archivo .pjx del elemento de la galería.

Nombre de archivo
Especifica la ruta de acceso y el nombre de archivo del proyecto de origen.
Nombre de resultados
Especifica la ruta de acceso y el nombre del archivo de resultados.
Acción de generación
Especifica qué opción de generación (Volver a generar el proyecto, Generar aplicación, Generar ejecutable o Generar DLL OLE) se utiliza cuando genera este proyecto.
Volver a generar todos
Le permite volver a generar todos los archivos o sólo aquellos archivos que han cambiado desde la última generación.
Mostrar errores
Le permite mostrar errores de la opción de generación en un cuadro de edición cuando haya finalizado la compilación.
Ejecutar después de generar
Le permite ejecutar la aplicación cuando haya finalizado la generación.

Ficha Elemento de informe

Le permite especificar la clase y biblioteca de clases que contiene el elemento de la galería.

Nombre de informe
Especifica la ruta de acceso y el nombre de archivo del informe de origen.

Vea también

Cuadro de diálogo Propiedades de catálogo | Cuadro de diálogo Propiedades de Carpeta | Cuadro de diálogo Opciones para generar | Cuadro de diálogo Opciones de la Galería de componentes


Cuadro de diálogo Agregar clase al proyecto

Agrega una clase de la Galería de componentes a un proyecto.

Agregar clase al proyecto
Agrega la clase al proyecto.
Crear clase nueva desde la clase seleccionada
Crea una nueva clase y, después, agrega la nueva clase a un proyecto. Se muestra el cuadro de diálogo Nueva clase, que le permite especificar un nombre para la nueva clase y la biblioteca de clases en que se almacenará la nueva clase.
Crear formulario nuevo desde la clase selecc.
Agrega un formulario al proyecto. Esta opción sólo está disponible al agregar un formulario al proyecto.

Vea también

Ventana Galería de componentes | Cuadro de diálogo Nueva clase | Cuadros de diálogo Propiedades de la Galería de componentes


Ventana del Analizador de trayecto

Contiene un grupo de botones de la herramienta Analizador de trayecto y opciones que le permiten especificar cómo se mostrará la información devuelta por el Motor de trayecto.

Panel Lista de origen
El panel superior Lista de origen se divide en dos columnas. La columna de la izquierda muestra una lista de las clases del archivo seleccionado o Todas las clases, Objetos y Procesos. La columna de la derecha muestra el archivo que contiene el código fuente de este elemento. Este archivo puede ser un archivo .frx, .lbx, .scx o .vcx que contiene la clase o el objeto mostrado en el panel de la izquierda, el archivo .prg para la selección Todas las clases o cualquier otro tipo de archivo que almacene código fuente. Por ejemplo, podría mostrarse un archivo .dbc si se registraran procedimientos almacenados; se podría mostrar un archivo .frx si el Entorno de datos de un formulario de informe contuviera código.
Panel Código fuente
El panel inferior Código fuente (en modo de presentación preliminar) muestra el código del elemento que seleccione en el panel superior Lista de origen. El modo que seleccione determina parte del contenido y del formato del código mostrado.
Modo Trayecto
En modo Trayecto, el panel Código fuente muestra el código del elemento resaltado en la sección superior. El Analizador de trayecto puede marcar las líneas ejecutadas y las no ejecutadas. La configuración predeterminada marca, con los símbolos especificados en el Cuadro de diálogo Opciones del Analizador de trayecto, cada línea que no se haya ejecutado realmente. Utilice este modo cuando pruebe la aplicación para comprobar qué líneas de código se han ejecutado realmente.

Al marcar las líneas que se ejecutan y las que no se ejecutan (con marcas diferentes) puede distinguir más fácilmente entre las líneas que nunca se ejecutan, como los observaciones, y las líneas que no se ejecutan durante este análisis de trayecto.

Modo Perfil
En modo Perfil, el panel Código fuente muestra el código del elemento resaltado en el panel superior Lista de origen, el número de coincidencias de cada línea y la duración de cada línea. Utilice este modo si desea evaluar el rendimiento del código que se está ejecutando.

Las líneas pueden indicar una duración de 0,000 (1º y Avg) incluso aunque la columna uno muestre 1 o más Coincidencias para estas líneas. Esto ocurre cuando las líneas se ejecutan de manera tan rápida que la duración es inferior a 0,001 segundos.

Vea también

Aplicación Analizador de trayecto | Cuadro de diálogo Opciones del Analizador de trayecto | Cuadro de diálogo Estadísticas del Analizador de trayecto | Botones de la herramienta Analizador de trayecto | Objeto Coverage Engine


Botones de la herramienta Analizador de trayecto

Contiene los siguientes botones de herramientas:

Botón | Descripción
Cuadro de diálogo Abrir catálogo | Muestra el cuadro de diálogo Abrir de manera que pueda abrir un registro de trayecto.
Cuadro de diálogo Guardar como | Muestra el cuadro de diálogo Guardar como de manera que pueda guardar información de la aplicación Analizador de trayecto como una tabla (.dbf).
Cuadro de diálogo Estadísticas del Analizador de trayecto | Muestra el cuadro de diálogo Estadísticas del Analizador de trayecto de manera que pueda ver resúmenes de los detalles del Analizador de trayecto y revisar las estadísticas del Analizador de trayecto relacionadas con un proyecto específico de Visual FoxPro.
Cuadro de diálogo Complementos del Analizador de trayecto | Muestra el cuadro de diálogo Complementos del Analizador de trayecto de manera que pueda especificar complementos para utilizarlos con el Analizador de trayecto.
Ventana Analizador de trayecto | Muestra los resultados de trayecto en el panel inferior de la ventana Analizador de trayecto o en la ventana Zoom.
Ventana Analizador de trayecto | Muestra los resultados del analizador en el panel inferior de la ventana Analizador de trayecto o en la ventana Zoom.
Ventana Analizador de trayecto | Muestra la ventana del Analizador de trayecto como un único cuadro de diálogo de dos paneles.
Ventana Analizador de trayecto | Muestra el Analizador de trayecto como dos cuadros de diálogo independientes que puede organizar y cambiar de tamaño.
Cuadro de diálogo Buscar del Analizador de trayecto | Muestra el cuadro de diálogo Buscar del Analizador de trayecto, que le permite buscar elementos específicos en el registro de trayecto.

Vea también

Aplicación Analizador de trayecto | Cuadro de diálogo Opciones del Analizador de trayecto | Cuadro de diálogo Estadísticas del Analizador de trayecto | Ventana Analizador de trayecto | Cuadro de diálogo Complementos del Analizador de trayecto


Cuadro de diálogo Opciones del Analizador de trayecto

Le permite especificar el grado de sensibilidad de las rutas de acceso, el entorno y el formato del cuadro de diálogo y las marcas utilizadas para marcar líneas de código que se ejecutan en su programa o aplicación, y las fuentes para mostrar y escribir código.

Usar ruta inteligente
Establece que el Analizador de trayecto realice ciertas suposiciones acerca de la ubicación de archivos en su proyecto o aplicación según cómo se muestren los archivos en el registro de trayecto. El Analizador de trayecto, de forma predeterminada, le permite buscar archivos de origen a los que se hace referencia en el registro de trayecto. Si activa esta opción, el Analizador de trayecto supone que las carpetas en las que ya ha encontrado archivos contienen archivos de origen adicionales que necesita.

Desactive esta opción para tener un control más completo o si tiene archivos de origen con el mismo nombre en carpetas diferentes.

Registrar complementos adicionales al ejecutarlos
Establece que el Analizador de trayecto conserve para uso futuro la ruta de acceso y la información de nombre de complementos adicionales cuando los ejecute de manera que pueda encontrarlos en la lista desplegable del cuadro de diálogo Complementos del Analizador de trayecto.
Marcar todo el código al cargar el registro
Marca líneas de código mientras el Analizador de trayecto procesa el registro de trayecto (.log). Esta configuración puede retardar el rendimiento de carga, especialmente en archivos grandes.

Marcas de trayecto

Ejecutada
Le permite escribir un carácter o varios caracteres, tales como asteriscos, a fin de utilizarlos para marcar cada línea de código ejecutada.
No ejecutada
Le permite escribir un carácter o varios caracteres a fin de utilizarlos para marcar cada línea de código que no se ejecuta. El carácter predeterminado es una barra vertical.
Nota Algunas líneas en código, como observaciones, las instrucciones DEFINE CLASS y ELSE, y líneas que estén entre TEXT… ENDTEXT no aparecen en registros de trayecto porque no son líneas ejecutables. Además, las líneas cortadas por símbolos de continuación (signos de punto y coma) se consideran como una única línea de código y sólo se marcan en la última línea.

Modo inicio

Trayecto
Especifica que la aplicación Analizador de trayecto se abre como un analizador de trayecto y marca el código que realmente se ejecuta en los proyectos o aplicaciones seleccionados.
Analizador
Especifica que la aplicación del Analizador de trayecto se abre como un analizador, lo que determina la cantidad de tiempo necesario para ejecutar líneas de código en la aplicación o el proyecto seleccionado.

Entorno

Marco de trayecto
Especifica que la aplicación Analizador de trayecto se abra en el escritorio de Windows.
Marco de FoxPro
Especifica que la aplicación Analizador de trayecto se abra en la ventana principal de Visual FoxPro.

Fuentes

Mostrar fuente
Le permite especificar la fuente utilizada en el panel Lista de origen de la ventana Analizador de trayecto.
Fuente de código
Le permite especificar la fuente utilizada en el panel Código fuente de la ventana Analizador de trayecto.
Establecer como predeterminado
Guarda sus opciones seleccionadas en el Registro de Windows. Las configuraciones Modo de inicio y Entorno surten efecto cuando reinicia el Analizador de trayecto.

Vea también

Ventana Analizador de trayecto | Botones de la herramienta Analizador de trayecto | Cuadro de diálogo Complementos del Analizador de trayecto | Cuadro de diálogo Estadísticas del Analizador de trayecto


Cuadro de diálogo Complementos del Analizador de trayecto

Le permite encontrar y ejecutar los archivos .app, .fxp o .prg para cambiar o mejorar el Analizador de trayecto. Puede utilizar estos complementos para agregar controles, consultas, cuadros de diálogo y otras mejoras al Analizador de trayecto.

Complementos

Le permite seleccionar un programa complemento para ejecutarlo.

Registrar este complemento después de ejecutar
Agrega el complemento actual a una lista desplegable de manera que pueda tener acceso al mismo posteriormente.
Nota Puede establecer que el Analizador de trayecto registre complementos nuevos de forma predeterminada si activa la casilla de verificación Registrar complementos adicionales al ejecutar del cuadro de diálogo Opciones del Analizador de trayecto.
Ejecutar
Inicia el complemento.

Vea también

Ventana Analizador de trayecto | Botones de la herramienta Analizador de trayecto | Cuadro de diálogo Estadísticas del Analizador de trayecto | Cuadro de diálogo Opciones del Analizador de trayecto | Complementos del Analizador de trayecto


Cuadro de diálogo Estadísticas del Analizador de trayecto

Muestra información de resumen del archivo .log actual y proporciona acceso a la información de proyecto, el texto de origen y los archivos ignorados.

Estadísticas

Muestra información de resumen acerca del archivo seleccionado en el panel Lista de origen. El contenido de esta área depende del tipo de archivo seleccionado. El cuadro de diálogo muestra solamente estadísticas de líneas para archivos de base de datos (.dbc) o de programa (.prg). Para los tipos de archivo como .frx, .lbx, .scx y .vcx, que contienen clases, el cuadro de diálogo muestra información acerca de líneas y clases. Los detalles que ofrece esta información se muestran en el panel Código fuente como información de los modos Trayecto y Perfil.

Ver detalles

Estadísticas por proyecto
Le permite seleccionar un archivo de proyecto y generar un informe de resumen y detalles acerca del trayecto del proyecto.
Informe de texto de origen
Muestra el archivo de registro actual en el editor de Visual FoxPro.
Archivos de origen omitidos
Abre una ventana Examinar en el cursor SkippedFiles. Este cursor contiene nombres de archivos para los que el Analizador de trayecto no proporciona ninguna información. Puede que estos archivos sean archivos para los que no tenga código sin compilar, archivos que no ha podido localizar el Analizador de trayecto o código fuente del Analizador de trayecto.

Vea también

Ventana Analizador de trayecto | Botones de la herramienta Analizador de trayecto | Cuadro de diálogo Complementos del Analizador de trayecto | Cuadro de diálogo Buscar del Analizador de trayecto


Cuadro de diálogo Buscar del Analizador de trayecto

Le permite buscar elementos específicos en el registro de trayecto.

Opciones

Coincidir mayúsculas y minúsculas
Hace que coincidan las mayúsculas y minúsculas con las del elemento buscado.
Búsqueda continua
Especifica que una búsqueda iniciada dentro de un archivo continúa hasta el final del archivo y pasa de nuevo por el principio del archivo hasta la posición actual del cursor.

Buscar

Clases
Realiza búsquedas en las clases del registro de trayecto.
Archivos
Realiza búsquedas en los archivos del registro de trayecto.
Código fuente
Realiza búsquedas en el código fuente de la presentación actual.

Vea también

Cuadro de diálogo Complementos del Analizador de trayecto | Cuadro de diálogo Opciones del Analizador de trayecto | Cuadro de diálogo Estadísticas del Analizador de trayecto | Ventana Analizador de trayecto | Botones de la herramienta Analizador de trayecto


Cuadro de diálogo Salir del Analizador de trayecto

Detiene la aplicación Analizador de trayecto y le permite elegir cómo continuar o finalizar el registro de trayecto. Este cuadro de diálogo se muestra si ha ejecutado el comando SET COVERAGE NombreArchivo antes de ejecutar la aplicación Analizador de trayecto.

El cuadro de diálogo proporciona las siguientes opciones:

Botón | Resultado
Sí | Le permite seguir registrando datos al anexar más registros al archivo .log actual para su utilización en la aplicación Analizador de trayecto.
No | Le permite seguir registrando datos pero sobrescribe los registros en el archivo .log actual.
Cancelar | Deja el registro desactivado después de cerrar la aplicación Analizador de trayecto.

Vea también

Ventana Analizador de trayecto | Botones de la herramienta Analizador de trayecto | SET COVERAGE (Comando) | Cuadro de diálogo Buscar del Analizador de trayecto | Cuadro de diálogo Estadísticas del Analizador de trayecto | Complementos del Analizador de trayecto


Ventana Sesión de datos

Puede utilizar la ventana Sesión de datos para abrir y mostrar tablas o vistas, establecer relaciones temporales y establecer áreas de trabajo apropiadas.

Sesión actual
Muestra el nombre de la sesión de datos actual.
Alias
Muestra el nombre de la vista o tabla sin la extensión del archivo.
Relaciones
Indica la relación temporal establecida entre las tablas o vistas en el cuadro Alias.
Propiedades
Muestra el cuadro de diálogo Propiedades del área de trabajo, en el que puede modificar la estructura de una tabla, seleccionar los archivos de índice y los campos, y definir filtros de datos. Si no existe ninguna tabla en el cuadro Alias, se presentará un cuadro de diálogo Abrir para permitirle abrir una tabla o vista.
Examinar
Muestra la tabla o vista seleccionada en el cuadro Alias en una ventana Examinar, donde puede examinar, modificar o anexar datos.
Abrir
Muestra un cuadro de diálogo Abrir, similar al cuadro de diálogo Agregar tabla o vista, en el que puede seleccionar una tabla o vista para abrirla.
Cerrar
Quita la tabla o vista seleccionada, y todos los archivos asociados del cuadro Alias.
Relaciones
Define la relación entre las tablas y las vistas con el cuadro de diálogo Generador de expresiones. El cuadro de diálogo Establecer orden de índice aparece antes que el cuadro de diálogo Generador de expresiones cuando no se ha establecido ningún orden de índices entre las dos tablas.
Uno a varios
Muestra el cuadro de diálogo Crear relaciones uno a varios, que le permite establecer relaciones temporales uno a varios entre tablas secundarias y tablas primarias. Este botón está habilitado cuando se establecen relaciones entre dos o más tablas, seleccionándolas en el cuadro de diálogo Vista y haciendo clic en Relaciones.

Vea también

Trabajar con tablas | Agregar tablas a bases de datos | Crear relaciones persistentes | Ventana Examinar | Cuadro de diálogo Crear relaciones uno a varios | Cuadro de diálogo Generador de expresiones | Cuadro de diálogo Abrir | Cuadro de diálogo Propiedades del área de trabajo


Ventana Resultados del depurador

Le permite presentar el resultado del código de los programas, procedimientos o métodos activos.

Esta ventana se activa cuando se elige Resultados en el menú Ventana de la ventana Depurador.

Panel Resultados
Muestra cadenas de caracteres especificadas por el comando DEBUGOUT y si está activado el seguimiento de eventos, los nombres de los eventos del sistema a medida que se van produciendo.

Para guardar el texto de la ventana

  • Elija Guardar resultado como en el menú Archivo de la ventana Depurador.

Vea también

DEBUGOUT (Comando) | Cuadro de diálogo Seguimiento de eventos | Ventana Depurador | Métodos abreviados del depurador


Ventana Depurador

La ventana Depurador de Visual FoxPro contiene los menús Depurador, la barra de herramientas Depurador y varias ventanas de depuración.

Esta ventana se activa cuando elige la opción Depurador en el menú principal Herramientas de Visual FoxPro, si la opción Entorno del menú Depurar (en Opciones en el menú Herramientas) se establece a Marco de depuración. Si la opción Marco de FoxPro está seleccionada, no tendrá acceso a la ventana Depurador, y las ventanas de cada depurador estarán disponibles desde el menú principal de FoxPro.

Ventana Seguimiento
Le permite ver sus líneas de código a medida que se ejecutan.
Ventana Locales
Presenta las variables, matrices, objetos y miembros de objetos visibles desde el programa, procedimiento o método actual.
Ventana Inspección
Presenta expresiones y sus valores actuales, y le permite establecer puntos de interrupción en una expresión.
Ventana Pila de llamadas
Presenta los procedimientos, programas y métodos que se están ejecutando.
Ventana Resultados del depurador
Presenta los resultados específicos de depuración de sus programas.

Las ventanas de depuración y la barra de herramientas se pueden acoplar y colocar.

Para | Haga lo siguiente
Cambiar el tamaño de ventanas acopladas adyacentes | Arrastre la barra de separación entre ellas.
Convertir una ventana en flotante | Elija Desacoplar del menú contextual.
Ver una ventana abierta, oculta. | Haga clic en el botón de barra de herramientas asociado con la ventana dos veces: una para cerrar la ventana y otra para volverla a abrir.

Vea también

Ventana Seguimiento | Ventana Locales | Ventana Inspección | Ventana Pila de llamadas | Cuadro de diálogo Opciones


Métodos abreviados y menús del depurador

Los siguientes métodos abreviados de teclado se aplican a las herramientas de la ventana Depurador o del marco FoxPro.

Acción | Teclado
Reanudar | F5
Cancelar | ESC
Paso a paso por instrucciones | F8
Paso a paso por procedimientos | F6
Paso a paso para salir | MAYÚS+F7
Ejecutar hasta cursor | F7
Ventana Seguimiento | ALT+8
Ventana Inspección | ALT+3
Ventana Locales | ALT+4
Ventana de la pila de llamadas | ALT+7
Ventana Resultados del depurador | ALT+2
Alternar punto de interrupción | F9
Borrar puntos de interrupción | CTRL+MAYÚS+F9
Puntos de interrupción | CTRL+B
Abrir archivo | CTRL+O
Guardar la configuración | ALT+S
Salir del depurador | ALT+F4

Vea también

Ventana Depurador | Ventana Resultados del depurador | Métodos abreviados de teclado


Ventana Vista del documento

Le permite ver y desplazarse a cualquier procedimiento, función o directiva de preprocesador o definición #DEFINE de su programa.

Puede activar esta ventana desde el menú Herramientas o al seleccionar Vista del documento del menú contextual de un programa en una ventana de edición.

Nota Cuando está abierta la ventana Ver documento para un archivo .prg, puede utilizar Ctrl-PgUp y Cltr-PgDn para navegar al procedimiento anterior/posterior.

Haga clic con el botón secundario del ratón en esta ventana para obtener acceso a las siguientes opciones.

Ordenar por nombre
Especifica que los elementos de la lista se ordenan por nombre.
Ordenar por ubicación
Especifica que los elementos de la lista se ordenan por ubicación en el programa. Al seleccionar esta opción, puede utilizar Ctrl+RePág o Ctrl+AvPág para desplazarse por los elementos de la lista. Además, la ventana Vista del documento seleccionará automáticamente el procedimiento que contiene actualmente el símbolo de inserción en el editor.
Ordenar por tipo
Especifica que los elementos de la lista se ordenan alfabéticamente por tipo de elemento.
Mostrar definiciones #DEFINE
Alterna la presentación de definiciones #DEFINE en la lista.
Mostrar directivas de preprocesador
Alterna la presentación de directivas de preprocesador. La presentación incluye los siguientes elementos:
#INCLUDE
#IF...#ELIF...#ELSE...#ENDIF
#IFDEF...#ELSE...#ENDIF
#IFNDEF...#ELSE...#ENDIF
Fuente
Abre el cuadro de diálogo Fuente, que le permite cambiar la fuente utilizada en la ventana Vista del documento.

La ventana Ver Documento indica visualmente cada procedimiento o función, definición del preprocesador, clase o directiva del preprocesador con los símbolos siguientes:

  • Un signo numérico rojo # representa una definición del preprocesador.
  • Un signo numérico amarillo # representa una directiva del preprocesador.
  • Un cuadro azul representa una función o procedimiento.
  • Un conjunto de cuadros multicoloreados representa una clase.

Vea también

Cuadro de diálogo Insertar referencia de objeto | #DEFINE ... #UNDEF (Directiva del preprocesador) | #NAME (Directiva del preprocesador) | Cuadro de diálogo Fuente | APROCINFO( ) (Función)


Ventana de edición

Permite modificar archivos de texto y programas. Si ha seleccionado Modificar el archivo seleccionado en la ficha Proyectos del cuadro de diálogo Opciones, la ventana de edición se abrirá al hacer doble clic en un archivo de texto o de programa en el Administrador de proyectos.

En la ventana Edición puede:

  • Trasladar texto entre la ventana Comandos y otras ventanas de edición. Seleccione el texto que desea trasladar y arrástrelo al lugar de destino.
  • Copiar texto de la ventana Comandos y pegarlo en otra ventana de edición sin utilizar los comandos del menú Edición. Seleccione el texto, mantenga presionada la tecla CTRL y arrastre el texto al lugar deseado.

Cambiar la fuente, el espacio entre líneas y la sangría, seleccionando el comando apropiado en el menú Formato.

Vea también

Mostrar e imprimir archivos de código fuente en color | Ficha Proyecto, cuadro de diálogo Opciones | Ventana Administrador de proyectos | Ventana Comandos


Ventana de campo General

La ventana es mostrada al hacer doble clic en el identificador de tipo de un campo general en una tabla que está examinando o al presionar CTRL+RE PAG o CTRL+AV PAG para abrirla desde el teclado..

Con esta ventana abierta, puede crear o insertar objetos OLE con el comando Insertar objeto del menú Edición. Puede modificar el objeto existente haciendo doble clic en él o seleccionando el objeto Imagen de mapa de bits o el objeto Abrir del menú Edición.

Vea también

Tipo de campo General | Diseñador de tablas | Cuadro de diálogo Insertar objeto | Agregar un campo General


Ir a la ventana definiciones

Muestra definiciones de elementos de código múltiple que pueden ser elegidas cuando se está buscando una definición de código.

La opción de Ir a la ventana de definiciones se muestra después de seleccionar el comando Definición de Vistas en una definición multiple de elementos de código. Puede selecionar el comando Definición de Vistas desde el método abreviado de menú que aparece cuando se pulsa el botón derecho del ratón dentro de una ventana de edición de un programa.

Archivo
Muestra una lista con el nombre de archivo y la ubicación de la definición de código.
Class.Method (Línea)
Muestra una lista con la clase, método y el número de línea sí está disponible en la definición de código.
Código
Muestra una lista con el código que contiene la definición de código.
Ir a
Se mueve a la ubicación de la definición de código seleccionada.

Vea también

Ventanas | Ver definiciones de código | Ventana Modificar


Ventana Locales

Le permite presentar todas las variables, matrices, objetos y miembros de objeto que sean visibles en un programa, procedimiento o método determinado.

Esta ventana se activa cuando elige Locales en el menú Ventana de la ventana Depurador.

Locales para
Indica el procedimiento cuyas variables, matrices y objetos se muestran en la ventana Locales.
Nombre
Muestra los nombres de las variables locales visibles.
Valor
Muestra los valores actuales de las variables locales visibles.
Tipo
Muestra los caracteres que representan los tipos de datos de las variables locales visibles.

Use el menú contextual para controlar la categoría de las variables que se mostrarán.

Categoría | Descripción
Público | Variables declaradas con la palabra clave PUBLIC.
Local | Variables declaradas con la palabra clave LOCAL.
Estándar | Todas las variables en el alcance del procedimiento se muestran en el cuadro Locales para.
Objetos | Variables de objeto.

Para ver los valores de los elementos de matrices o propiedades de objeto, haga clic en el cuadro a la izquierda del nombre de objeto o matriz. La ventana Locales le permite ver las propiedades de todos los objetos en forma de jerarquía de contenedores.

Vea también

LOCAL (Comando) | PUBLIC (Comando) | Ventana Depurador | Métodos abreviados del depurador


Ventana del Examinador de objetos

El Examinador de objetos muestra las clases, propiedades, métodos, eventos y constantes disponibles para las bibliotecas de objetos COM. Puede utilizarlo para buscar y utilizar los objetos que cree, así como los objetos de otras aplicaciones.

Para iniciar el Examinador de objetos desde el menú Herramientas, elija Examinador de objetos y abra la biblioteca COM que desea ver.

Para hacer referencia al Examinador de objetos se utiliza la variable del sistema _OBJECTBROWSER que, de forma predeterminada, hace referencia a objectbrowser.app. Se puede establecer en la ficha Archivos del cuadro de diálogo Opciones.

Panel Clases y miembros
Enumera las clases, miembros, interfaces, enumeraciones, constantes y otra información disponible de la biblioteca de tipos de clases. Para mostrar los miembros de cada categoría, expanda la categoría.
Panel Miembros
Muestra información acerca de la clase o elemento seleccionado en el panel Clases y Miembros. Si una clase es seleccionada, los eventos, métodos y propiedades son mostradas.
Panel Descripción
Muestra una definición del elemento seleccionado, la sintaxis modelo y un hipervínculo a la clase, biblioteca o tipo a la que pertenece el elemento. Algunos miembros tienen saltos a su clase primaria. Cuando una interfaz es seleccionada, el panel descripción incluye el numero de identificación de la interfaz.

Puede copiar o arrastrar texto desde el panel Descripción a la ventana del editor.

Botón Abrir biblioteca de tipos
Muestra el cuadro de diálogo Abrir biblioteca de tipos, donde puede ver información de la clase de un componente COM o control ActiveX determinado. Para mostrar una lista desplegable con las últimas bibliotecas abiertas haga clic en el botón de flecha Abajo.
Cuadro de diálogo Abrir biblioteca de tipos
El cuadro de diálogo Abrir biblioteca de tipos se puede mostrar mediante el botón Abrir o el elemento de menú Abrir del menú contextual del Examinador de objetos.
Nombre | Descripción
Ficha Historial reciente | Muestra una lista de las últimas bibliotecas abiertas. Para agregar una biblioteca al Examinador de Objetos, seleccione la casilla de verificación al lado de la biblioteca. El botón Borrar historial borra todo el contenido de la lista Historial reciente.
Ficha Bibliotecas COM | Muestra una lista de todas las bibliotecas de clases COM del sistema. La lista incluye las bibliotecas de componentes COM y controles ActiveX. La primera vez que se entra en esta ficha, se lee las bibliotecas COM en el Registro del sistema y se almacena en la caché, en la tabla local foxrefs.dbf. En llamadas posteriores, las bibliotecas se leen de esta tabla local. Para volver a cargar todas las bibliotecas de clases del sistema, haga clic en el botón Actualizar. El botón Examinar muestra un cuadro de diálogo de selección de archivos donde puede seleccionar la biblioteca individual (.tlb, .ocx, .olb, .dll, .exe) que va a cargar.
Ficha Selección actual | Muestra una lista de todas las bibliotecas abiertas. Para cerrar las bibliotecas individualmente, borre la casilla de verificación situada junto al nombre. Haga clic en el botón Cerrar todo para cerrar todas las bibliotecas.
Botón Anterior
Retrocede el foco de selección hasta el último elemento que ha visto.
Botón Siguiente
Sitúa el foco de selección en el elemento que estaba viendo antes de hacer clic en el botón Anterior.
Botón Actualizar
Vuelve a cargar las bibliotecas seleccionadas para actualizar el contenido del Examinador de objetos. Resulta útil para componentes COM que se están programando y que cambian con frecuencia. Además, se actualizan las bibliotecas de la caché.
Botón Copiar
Permite copiar el elemento seleccionado en la lista actual. Si no se selecciona algo de forma explícita en el panel Descripción, se copia todo el texto.
Botón Buscar
Muestra la vista Buscar donde puede escribir la cadena de texto que se buscará en las bibliotecas abiertas en el Examinador de Objetos.
Vista Buscar
Expande la vista hasta el nivel superior del Examinador de objetos al hacer clic en el botón Buscar. Utilice la vista Buscar para buscar una frase de texto determinada en la biblioteca.
Nombre | Descripción
Cuadro de texto Buscar: Escriba el texto que desea buscar. La búsqueda predeterminada incluye todas las bibliotecas abiertas, todos sus miembros y cualquier elemento que contenga el texto de búsqueda.
Botón Ir a | Haga clic en este botón para buscar el texto escrito en el cuadro de texto. Al hacer clic en este botón, en el panel Clases y miembros se agrega un nuevo nodo para cada biblioteca abierta y se anexa la expresión "(Buscar: <searchtext>)" al final de la biblioteca. Puede ajustar la búsqueda utilizando la vista Avanzadas.
Switch to advanced find... link | Muestra opciones de búsqueda adicionales para realizar una búsqueda más ajustada.
Lista desplegable Bibliotecas | Limita la búsqueda a todas las bibliotecas abiertas o sólo a una. Sólo vista Búsqueda avanzada.
Lista desplegable Alcance | Limita la búsqueda a los miembros de todas las bibliotecas o sólo a uno. La lista de opciones disponibles es: Clases, Constantes, Enumeraciones, Interfaces, Métodos, Eventos y Propiedades. Sólo vista Búsqueda avanzada.
Lista desplegable Opciones | Determina cómo se realiza la búsqueda de texto. Las opciones son: Contenido en, Empieza por y Exactamente como. Sólo vista Búsqueda avanzada.
Botón Opciones
Muestra el cuadro de diálogo Opciones donde se puede controlar varias opciones de presentación. También puede establecer los complementos personalizados que se utilizarán con el Examinador de objetos.
Ficha Opciones de presentación, cuadro de diálogo Opciones
Esta ficha del cuadro de diálogo Opciones permite controlar los aspectos visuales del Examinador de objetos.
Nombre | Descripción
Casilla de verificación Resaltar posibles orígenes de eventos | Especifica si se va a resaltar un posible origen de eventos (interfaz o método).
Casilla de verificación Resaltar elementos predeterminados | Especifica si se van a resaltar los elementos predeterminados utilizando un estilo de negrita.
Casilla de verificación Mostrar elementos ocultos | Especifica si se van a mostrar los elementos ocultos, por ejemplo, interfaz, métodos y propiedades.
Casilla de verificación Expandir detalles automáticamente | Especifica si los elementos de nivel superior se van a expandir automáticamente en el panel de detalles.
Casilla de verificación Aumentar detalles automáticamente | Especifica si las jerarquías complejas se van a expandir automáticamente en el panel Métodos, por ejemplo, los métodos y propiedades de cada interfaz.
Casilla de verificación Mostrar interfaces VTable | Especifica si se van a mostrar las interfaces basadas en VTable y sus miembros.
Casilla de verificación Enumera todas las interfaces que definen un método, evento o propiedad en detalle | Especifica si todas las interfaces que definen un método o propiedad se van a enumerar en el panel Descripción.
Casilla de verificación Mostrar propiedades que empiezan por un signo de subrayado (_) | Las propiedades que empiezan por un signo de subrayado normalmente son marcadores de enumeraciones (colecciones de constantes). Por este motivo, no se muestran de forma predeterminada.
Casilla de verificación Mostrar miembros definidos en IUnknown o IDispatch | Todos los objetos COM tienen métodos definidos en las interfaces IDispatch e IUnknown. Para que funcionen en un entorno COM, estos métodos tienen que estar ahí aunque, normalmente, el programador de Visual FoxPro no los utiliza directamente.
Casilla de verificación Enumerar parámetros de los miembros detalladamente | Los parámetros de los métodos se pueden enumerar directamente en el panel Miembros. No obstante, los parámetros se enumeran con más detalle en el panel Descripción.
Casilla de verificación Enumerar las interfaces en los detalles de la clase | Todas las clases que se pueden crear se basan en una o varias interfaces. Normalmente, las interfaces enumeradas en el panel Miembros muestran la misma información que toda la clase, pero a veces proporcionan más.
Casilla de verificación Mostrar estructura de herencia de interfaz | Especifica si las interfaces heredadas se van a mostrar en el panel Miembros.
Botón Fuente | Especifica la fuente para los elementos de la interfaz del Examinador de objetos.
Ficha Complementos, cuadro de diálogo Opciones
Esta ficha del cuadro de diálogo Opciones permite agregar complementos personalizados.
Nombre | Descripción
Botón Instalar complemento | Instala un complemento nuevo.
Lista Complementos instalados actualmente | Muestra todos los complementos instalados.
Botón Quitar | Este botón se muestra junto a un complemento instalado, en la lista de complementos. Haga clic en este botón para quitar un complemento. El archivo del complemento no se elimina.
Botón Ayuda
Muestra documentación acerca del miembro seleccionado. Además, puede presionar F1.

Vea también

Utilizar el Examinador de objetos | Examinador de clases | _ObjectBrowser (Variable del sistema) | DEFINE CLASS | EVENTHANDLER( ) | Ver información de bibliotecas de tipos


Ventana Administrador de proyectos

Utilice el Administrador de proyectos para organizar y administrar los archivos en proyectos. Un proyecto es una colección de archivos, datos, documentos y objetos de Visual FoxPro que se guardan como un archivo con extensión .pjx. Al activar la ventana Administrador de proyectos, Visual FoxPro muestra el menú Proyecto en la barra de menús.

Los elementos del Administrador de proyectos están organizados en una vista en forma de esquema que puede expandirse o contraerse. Un signo "más" aparece junto al símbolo si tiene uno o más elementos de ese tipo en el proyecto. Haga clic en el signo "más" que aparece junto al símbolo para ver más elementos de la lista. Haga clic en el signo "menos" para contraer una lista expandida.

Inicialmente, el Administrador de Proyectos aparece como una ventana separada. Puede mover el contenedor, cambiarlo de tamaño o contraerlo para que solo se muestre una ficha.

Al igual que las barras de herramientas, puede acoplar el Administrador de proyectos arrastrándolo hasta la parte superior de la pantalla o haciendo doble clic en la barra de título. Cuando el Administrador de Proyectos esta acoplado, se convierte en parte del área de la barra de herramientas de la ventana. No puede expandir la ventana del Administrador de Proyectos cuando esta acoplado; en su lugar, haga clic en las fichas individuales para usarlas. También puede sacar las fichas desde un Administrador de Proyectos acoplado.

Puede personalizar su área de trabajo visual cambiando la vista del Administrador de Proyectos o configurando el doble clic para ejecutar archivos en el Administrador de Proyectos. Para más información, vea Personalizar el Entorno de Visual FoxPro.

Fichas

Muestran los elementos agrupados por categorías. Al contraer el Administrador de proyectos, puede eliminar las fichas al arrastrarlas fuera del Administrador de proyectos. Para volver a colocar una ficha, arrástrela de nuevo a su posición original o haga clic en el cuadro Cerrar.

Para sacar una ficha, contraiga el contenedor, seleccione una ficha y arrástrela fuera del Administrador de Proyectos. Cuando una ficha este flotando, puede acceder a las opciones en el menú Proyecto haciendo clic derecho del ratón en la ficha flotante.

Si desea que una ficha se mantenga por encima de las otras ventanas, haga clic en el botón del pin de la ficha. La ficha se mantendrá por encima de las demás ventanas de Visual FoxPro. Puede configurar más de una ficha para que permanezca "siempre en el tope" Para remover la configuración "siempre en el tope" de una ficha, haga clic en el pin de nuevo.

Botón para expandir o contraer

Expande o contrae el Administrador de proyectos. Después de contraer el Administrador de proyectos, puede eliminar las fichas colocando el puntero del ratón sobre una ficha y arrastrándola fuera del Administrador de proyectos.

Lista de elementos

Muestra los elementos contenidos en el proyecto con una vista de esquema. A la izquierda de los elementos aparecen los iconos que identifican el tipo de elemento.

El símbolo aparece junto a los elementos excluidos del proyecto.

Cuando los archivos están incluidos en el proyecto, se compilan en un único archivo .app al generar el proyecto. Todos los archivos incluidos son de sólo lectura en tiempo de ejecución. En el grupo Programas, Formularios, Consultas o Menús, el nombre del archivo del programa principal aparece en negrita.

Botones del Administrador de proyectos

Nuevo
Crea un archivo u objeto nuevo. Este botón realiza la misma función que el comando Nuevo archivo del menú Proyecto. El nuevo archivo u objeto será del mismo tipo que el elemento actualmente seleccionado.
Nota Los archivos creados desde el menú Archivo no se incluyen automáticamente en un proyecto. Los archivos creados con el comando Archivo nuevo del menú Proyecto (o el botón Nuevo del Administrador de proyectos) se incluyen automáticamente en el proyecto.
Agregar
Agrega un archivo existente al proyecto. Este botón realiza la misma función que el comando Agregar archivo del menú Proyecto. Despúes de hacer clic en Agregar, puede seleccionar múltiples archivos presionando la tecla SHIFT o CTRL en el cuadro de dialogo Abrir mientras selecciona los archivos para agregarlos.
Modificar
Abre el elemento seleccionado en el diseñador apropiado. Este botón realiza la misma función que el comando Modificar archivo del menú Proyecto.
Examinar
Abre una tabla en una ventana Examinar. Este botón realiza la misma función que el comando Examinar archivo del menú Proyecto y sólo se activa cuando se selecciona una tabla.
Cerrar
Cierra una base de datos abierta. Este comando realiza la misma función que el comando Cerrar archivo del menú Proyecto, y sólo se activa cuando se selecciona una tabla. Si la base de datos seleccionada está cerrada, este botón cambia a Abrir.
Abrir
Abre una base de datos. Este botón realiza la misma función que el comando Abrir archivo del menú Proyecto y sólo está activado cuando se selecciona una tabla. Si la base de datos seleccionada ya está abierta, el botón Abrir se convierte en Cerrar.
Quitar
Quita del proyecto el archivo u objeto seleccionado. Visual FoxPro le pregunta si sólo desea quitarlo del proyecto, o del proyecto y del disco. Este botón realiza la misma función que el comando Quitar archivo del menú Proyecto.
Generar
Genera un proyecto o una aplicación, y también puede generar un ejecutable o un servidor de automatización. Este botón realiza la misma función que el comando Generar del menú Proyecto.
Vista previa
Muestra el informe o etiqueta seleccionado en el modo de Presentación preliminar. Está disponible cuando selecciona un informe o una etiqueta en el Administrador de proyectos. Este botón realiza la misma función que el comando Vista previa de archivo del menú Proyecto.
Ejecutar
Ejecuta la consulta, el formulario o el programa seleccionado. Está disponible cuando selecciona una consulta, un formulario, un menú o un programa en el Administrador de proyectos. Este botón realiza la misma función que el comando Ejecutar archivo del menú Proyecto.

Vea también

Ventana Examinar | Ventana Examinar | Referencias a archivos modificables | Crear la interfaz de usuario sin programación | Compilar una aplicación


Ventana Propiedades

Muestra las propiedades, eventos, métodos y sus configuraciones para un formulario, entorno de datos, cursor, relación o control. Para mas información acerca de como establecer valores para propiedades, eventos y métodos, vea Manipular objetos.

Puede ver el valor de una propiedad de solo-lectura que se extiende más allá del borde derecho de la ventana Propiedades sin ensanchar la ventana usando la opción Zoom.

Para ver el valor de una propiedad solo-lectura

  1. En la ventana propiedades, botón-derecho en la propiedad que desea ver.
  2. Desde el menú contextual, seleccione Zoom.

El cuadro de diálogo Zoom usualmente permite visualizar valores para una propiedad de lectura/escritura con la excepción de propiedades como Visible o ColorSource. Sin embargo aún cuando se puede seleccionar y copiar todo o parte del valor en una propiedad solo-lectura, no se puede modificar su valor.

Lista de objetos

Identifica el objeto seleccionado actualmente. Al hacer clic en la flecha hacia abajo de la lista desplegable de la derecha muestra una lista con los objetos disponibles. Esta lista incluye el formulario actual, el conjunto de formularios y todos los controles que contiene el formulario.

Si está abierto el Diseñador del entorno de datos, la lista de objetos incluye también el entorno de datos y todos los cursores y relaciones definidos en el entorno.

Fichas

Muestran las propiedades, eventos y métodos agrupados por categoría.

  • Todos Muestra todas las propiedades, eventos y métodos.
  • Datos Muestra las propiedades asociadas con la forma en que el objeto presenta o manipula los datos.
  • Métodos Muestra los métodos y eventos.
  • Diseño Muestra todas las propiedades de diseño.
  • Otros Muestra otras propiedades y las propiedades definidas por el usuario.

Cuadro Configuración de propiedades

Le permite cambiar el valor de la propiedad seleccionada en la lista de propiedades.

Si la propiedad seleccionada requiere un valor predefinido, haciendo clic en la flecha hacia abajo a la derecha del cuadro se abre una lista para seleccionar la opción deseada. Puede también navegar a travéz de las opciones haciendo doble-clic en el nombre de la propiedad de la lista de propiedades. Si el valor requiere un nombre de archivo o un color, haciendo clic en el botón elipsis (...) se muestra el cuadro de diálogo o ventana apropiados, como el cuadro de diálogo selector de colores.

Los siguientes botones aparecen a la izquierda del cuadro configuración de propiedades:

  • Cancelar (X) Cancela los cambios realizados y reestablece el valor anterior.
  • Aceptar (marca check) Confirma los cambios realizados en una propiedad.
  • Función (marca Fx) Abre el cuadro de diálogo Generador de expresiones. Puede establecer las propiedades con valores literales o con valores devueltos por funciones o expresiones.

Lista de propiedades

Esta lista muestra todas las propiedades que pueden modificarse en tiempo de diseño y sus valores actuales. Para obtener Ayuda acerca de una propiedad determinada, selecciónela y presione F1.

Los valores de propiedades en la lista de propiedades aparece como a continuación:

  • Los valores de propiedades que corresponden a expresiones están precedidos por un signo igual (=).
  • Las propiedades, eventos y métodos de sólo lectura aparecen en itálicas.
  • Los métodos y eventos muestran información de herencia en el formato siguiente:
    Default

    -O bien-

    Inherited cClassname ClassLibrary

    Para mas información acerca de código heredado para un método o evento, vea Manipular objetos.

Métodos abreviados de teclado

La tabla siguiente muestra comandos de métodos abreviados de teclado para la ventana propiedades.

Método abreviado | Acción
ALT+FLECHA ABAJO | Abre la lista desplegable.
ALT+FLECHA ARRIBA | Cierra la lista desplegable.
CTRL+PAGINA ABAJO o FLECHA ABAJO o FLECHA DERECHA | Se mueve al siguiente objeto en la lista desplegable.
CTRL+PAGINA ARRIBA o FLECHA ARRIBA o FLECHA IZQUIERDA | Se mueve al objeto anterior en la lista desplegable.
CTRL+FIN | Se mueve al último objeto en la lista desplegable.
CTRL+HOME | Se mueve al primer objeto en la lista desplegable.
TAB | Se recorre al siguiente control en la ventana de propiedades.
SHIFT+TAB | Se recorre al control anterior en la ventana de propiedades.
SHIFT+F10 | Muestra el correspondiente menú contextual.
CTRL+ALT+letter | Selecciona la propiedad siguiente en la lista de propiedades que comience con el carácter letter. Por ejemplo, al presionar CTRL+ALT+B se selecciona la siguiente propiedad que comience con la letra B.

Vea también

Crear formularios | Personalizar formularios | Establecer el entorno de datos | Crear informes y etiquetas | Cuadro de diálogo Generador de expresiones | Diseñador de formularios | Diseñador de entorno de datos | Ver y configurar propiedades de bases de datos | Cuadro de diálogo Zoom


Ventana Administrador de lista de tareas

Permite mantener el rastro de tareas.

El Administrador de lista de tareas aparece cuando hace clic en Lista de tareas en el menú Herramientas. También puede acceder a este administrador utilizando la variable de sistema _TASKLIST, la cual en forma predeterminada hace referencia a Tasklist.app. Puede modificar esta referencia en la ficha Archivos del cuadro de diálogo Opciones. Para mayor información, consulte variable del sistema _TASKLIST o Ficha Archivos, cuadro de diálogo Opciones.

La lista de tareas se almacena como una tabla en el archivo FoxTask.dbf. Puede especificar un archivo diferente utilizando la variable de sistema _FOXTASK. Para más información, vea variable del sistema _FOXTASK.

Utilizar indicaciones visuales

El Administrador de lista de tareas describe información importante mediante indicaciones visuales:

Indicación visual | Descripción
Texto en rojo | Indica que ya se ha pasado el vencimiento.
Texto en negro | Indica que aún no se ha llegado al vencimiento.
Texto en azul | Indica que hoy se produce el vencimiento.
Texto en negrita | Indica que la tarea aún no se ha leído.
Texto tachado | Indica que la tarea se ha completado.
Flecha hacia arriba roja | Indica una tarea de prioridad alta.
Flecha hacia abajo azul | Indica una tarea de prioridad baja.
Icono con flecha | Indica una tarea de acceso directo.
Icono con persona o tarea | Indica una tarea definida por el usuario u otra tarea.

Campos de tarea

El Administrador de lista de tareas incluye los siguientes campos:

Nombre de campo | Descripción | Se muestra inicialmente | Se puede quitar | Se puede modificar el acceso directo | Se puede modificar definido por el usuario
Prioridad | Lista desplegable que muestra la prioridad de la tarea. | X | X | X
Tarea completada | Casilla de verificación que indica si la tarea se ha completado. | X | X | X
Tipo de tarea Representación visual del tipo de tarea (icono). Internamente, los tipos se representan mediante los valores siguientes en el campo Tipo de Foxtask:
S - Acceso directo
U – Definido por el usuario
O – Otro
 X
Contenido | Descripción de la tarea. | X | X
Nombre de archivo | Nombre del archivo que contiene el Acceso directo o uno asociado con la tarea. | X | X | X
Vencimiento | Fecha en la que se programa que se completará la tarea. | X | X | X | X
Clase | Nombre de clase que contiene el Acceso directo o la asociación de tarea. | X | X
Línea | Número de línea del Acceso directo o la asociación de tarea. | X | X
Método | Nombre del método que contiene el Acceso directo o la asociación de tarea. | X | X
Marca de tiempo | Marca de fecha y hora numérica cuando se agregó la tarea por primera vez. | X
Personalizado | Puede agregar campos personalizados para tareas. | X | X | X
Cuadro de diálogo Opciones de lista de tareas
Muestra opciones para agregar , borrar y examinar campos personales en el Administrador de lista de tareas. También puede editar la estructura de la tabla y limpiar la tabla Lista de tareas. Este cuadro de diálogo aparece cuando hace clic derecho en el Administrador de lista de tareas y hace clic en Opciones.
  • Botón Nueva Crea una tabla nueva y muestra el Diseñador de tablas para que pueda agregar nuevos campos personalizados y sus tipos de datos. Asegúrese de que deja el campo UniqueID inicial en la definición de tabla.
    Nota La ficha campos del cuadro de diálogo Propiedades de la tarea trata a todos los campos personalizados como de tipo Carácter y no ejecuta ningún tipo de validación.
  • Botón modificar estructura Permite modificar la estructura de la tabla columnas definidas por el usuario.
  • Botón Borrar Quita la asociación de la tabla de campos personalizados de la Lista de tareas. La tabla y su contenido se deja tal y como está para que se pueda restaurar posteriormente si es necesario.
  • Botón Examinar Le permite seleccionar una tabla de campos personalizados existente para que pueda configurar una asociación a la tabla Foxtask.dbf principal.
    Nota Cuando se ha creado una tabla de campos personalizada, no se puede modificar directamente desde el Administrador de lista de tareas. Debe hacerlo manualmente en Visual FoxPro con el Diseñador de tablas.
  • Limpiar FoxTask.dbf Limpia y hace pack a la tabla de lista de tareas.

Vea también

Usar el Administrador de lista de tareas | _TASKLIST (Variable del sistema) | _FoxTask (Variable del sistema) | Crear marcadores y accesos directos a la lista de tareas


Ventana Seguimiento

Le permite ver sus líneas de código a medida que se ejecutan.

Esta ventana se activa cuando se elige Seguimiento en el menú Ventana de la ventana Depurador.

Objeto
Está disponible cuando se está ejecutando código de objeto. El código de la ventana Seguimiento está asociado al objeto que se muestra en la lista Objeto. La lista Objeto contiene todos los objetos del contenedor primario del nivel superior del objeto cuyo código se está ejecutando actualmente.
Procedimiento
Está disponible cuando se está ejecutando código de objeto. El código de la ventana Seguimiento está asociado al método o evento que se muestra en la lista Procedimiento. La lista Procedimiento contiene todos los métodos del objeto de la lista Objeto que tienen código asociado a él.

La parte izquierda de la ventana Seguimiento puede tener los siguientes símbolos:

Símbolo | Descripción
 | La línea de código que se está ejecutando actualmente.
 | Punto de interrupción activo.
 | Punto de interrupción inactivo.
 | Posición en la pila de llamadas si está examinando código en un nivel distinto del correspondiente al código que se está ejecutando actualmente.

Vea también

Ventana Depurador | Métodos abreviados del depurador | Ventana Locales | Ventana Inspección | Ventana Pila de llamadas | Ventana Resultados del depurador


Ventana Administrador de IntelliSense de Visual FoxPro

El Administrador de IntelliSense es una aplicación a la que se puede tener acceso mediante la variable del sistema _CodeSense (que, de forma predeterminada, hace referencia a FoxCode.app). El Administrador de IntelliSense le permite especificar la apariencia y el comportamiento de la sintaxis de instrucciones y otra información de sugerencias acerca de herramientas que se muestran en la hoja de propiedades, el editor y las ventanas de código.

Puede habilitar o deshabilitar la funcionalidad de IntelliSense por programa estableciendo el valor de la propiedad _VFP.EditorOptions. Para obtener más información, vea EditorOptions (Propiedad).

En el menú Herramientas, elija Administrador de IntelliSense y, a continuación, seleccione las siguientes opciones.

Ficha General

Casilla de verificación Habilitar IntelliSense
Habilita o deshabilita IntelliSense en Visual FoxPro. Limpiando la casilla de verificación Habilitar IntelliSense se desactiva el IntelliSense durante la sesión actual.
Lista desplegable Miembros de la lista
Especifica si la funcionalidad Miembros de lista automáticos de IntelliSense está activa. Si está deshabilitada, puede tener acceso a Miembros de la lista de IntelliSense desde el menú del Editor o el método abreviado de teclado Ctrl+J. Para obtener detalles, vea Mostrar miembros.
Lista desplegable Sugerencias rápidas
Especifica si la funcionalidad Información rápida automática de IntelliSense está activa. Si está deshabilitada, puede tener acceso a Información rápida de IntelliSense desde el menú del Editor o el método abreviado de teclado Ctrl+I. Para obtener detalles, vea Información rápida.
Botón de comando Sugerencias
Abre una ventana que muestra información de sintaxis en cuanto escribe información suficiente para distinguir un comando de Visual FoxPro.

Use esto para comandos y funciones que tienen muchas cláusulas o parámetros. La ventana Sugerencias sólo muestra la información de funciones y comandos de Visual FoxPro que se encuentran en FOXCODE.DBF. La clase y el objeto IntelliSense no se muestra.

Botón de comando Examinar
Abre una ventana Examinar en FoxCode.dbf (_FOXCODE), que proporciona los datos para el Administrador de Intellisense.
Uso de mayúsculas/Expansión
Esta sección proporciona capacidad para controlar cómo se utilizan las mayúsculas en la sintaxis de Visual FoxPro nativa. Además de las opciones del uso de mayúsculas estándar, también puede elegir deshabilitar la expansión o hacerla que derive de _FOXCODE predeterminado.
Lista desplegable Funciones
Proporciona una lista de opciones de formato para funciones de Visual FoxPro. El valor predeterminado es todo UPPERCASE.
Lista desplegable Comandos
Proporciona una lista de opciones de formato para comandos de Visual FoxPro. El valor predeterminado es todo UPPERCASE.
Lista desplegable Predeterminado de FoxCode
Proporcionar una lista de opciones de formato para entradas en FoxCode.dbf. Es un valor predeterminado global que otras entradas en FoxCode.dbf pueden utilizar si no tienen su propio valor de uso de mayúsculas. Este valor se almacena en el primer registro de versión de FoxCode.dbf.
Casilla de verificación Aplicar cambios solamente al lenguaje de Visual FoxPro
Le permite especificar si los cambios se realizan a todos o sólo a las funciones y comandos nativos de Visual FoxPro. Están marcados con la palabra clave "RESERVED" en el campo Source del archivo FoxCode.dbf.

Ficha Tipos

Controla la presentación de los tipos de datos cuando se especifica el uso estricto de tipos para una variable (como LOCAL myvar AS). Los tipos pueden ser elementos intrínsecos básicos como una cadena, un número, o clases Visual FoxPro o COM. Puede agregar clases COM o Visual FoxPro si hace clic en el botón de comando Agregar biblioteca de tipos o Agregar clase.

Cuadro de lista Tipos
Si no desea que un elemento determinado aparezca en la lista de uso estricto de tipos puede desactivar una casilla de verificación. Haga clic en un encabezado de columna para ordenar por esa columna. Un asterisco en la tercera columna indica que el campo Data de FoxCode.dbf para ese elemento contiene código de secuencia de comandos.
Botón de comando Modificar
El botón Modificar le permite modificar la referencia a tipo seleccionada en el archivo FoxCode.dbf. También puede hacer doble clic en ese elemento en el cuadro de lista.
Botón de comando Bibliotecas de tipos
Muestra el cuadro de diálogo Referencias de la biblioteca de tipos. Este cuadro de diálogo explora el Registro de Windows para detectar bibliotecas de tipos de Controles ActiveX y servidores COM. En este cuadro de diálogo seleccione las bibliotecas de tipos que desea incluir en la lista de uso estricto de tipos.
Botón de comando Clases
Le permite seleccionar una clase de Visual FoxPro que desea incluir en la lista de uso estricto de tipos.
Botón de comando Servicios Web
Abre el cuadro de diálogo Registro de servicios Web XML de Visual FoxPro. Para detalles, vea Servicio Web XML - Cuadro de diálogo Registrar.

Custom Tab

Le permite agregar sus propios elementos personalizados en FoxCode.dbf. Puede incluir accesos directos para proporcionar expansión automática de comandos y funciones. Se puede agregar un elemento de propiedad para que sirva como una secuencia de comandos que se va a ejecutar (como mostrar un Editor de valor personalizado) cuando se intenta establecer el valor de una propiedad. También puede agregar las secuencias de comandos que van a ejecutar los elementos.

Cuadro de texto Reemplazar
Escriba el acceso directo del que desea desencadenar la expansión automática de la palabra del cuadro de texto Con.
Cuadro de texto Con
Escriba la palabra que desea que expanda el acceso directo del cuadro de texto Reemplazar.
Cuadro de lista Personalizado
Seleccione el elemento que desea modificar. Una vez seleccionados, es posible cambiar los valores de Reemplazar o Con. Puede hacer doble clic para modificar el elemento directamente en FoxCode.dbf. Un asterisco en la tercera columna indica que el campo Data de FoxCode.dbf para ese elemento contiene código de secuencia de comandos.
Lista desplegable Tipo
Le permite establecer el tipo del elemento personalizado.
Botón de comando Secuencia de comandos
Abre una ventana de edición para agregar o modificar la secuencia de comandos de ese elemento.
Botón de comando Modificar
Muestra el registro completo de ese elemento para su modificación.
Botón de comando Agregar
Agrega un nuevo elemento con los valores del cuadro de texto Reemplazar y Con especificados para FoxCode.dbf. El botón Agregar cambia para mostrar Reemplazar si va a modificar un elemento existente en el cuadro de lista.
Botón de comando Eliminar
Elimina un elemento personalizado.

Ficha Avanzadas

Propiedades personalizadas
Le permite controlar diversos comportamientos de IntelliSense especiales mediante la especificación de valores de propiedad personalizados.

Botón de comando Modificar propiedades Abre el cuadro de diálogo Propiedades personalizadas para que pueda especificar el valor del comportamiento avanzado de IntelliSense.

Seleccione una propiedad en la Lista de propiedades y su descripción aparecerá en el cuadro Descripción. El valor de la propiedad se muestra en el cuadro de texto Valor. Las propiedades personalizadas son:

Propiedad | Descripción | Valor predeterminado
lEnableFullSetDisplay | Controla si se agrega TO automáticamente después de determinados comandos SET | T
lHideScriptErrors | Suprime la presentación de resultados de los errores de la secuencia de comandos de IntelliSense | F
lKeywordCapitalization | Habilita el uso de mayúsculas y la expansión de palabras clave de comandos | T
lPropertyValueEditors | Habilita secuencias de comandos que activan editores de valor de determinadas propiedades | T
lExpandCOperators | Habilita la expansión automática de operadores de tipo C, como ++, --, +=, -+, *= y /= | T

Para cambiar un valor, seleccione una propiedad y escriba un valor nuevo en el cuadro de texto Valor. Al cerrar el cuadro de diálogo Propiedades personalizadas se guardan los cambios.

Mantenimiento
Le permite restaurar valores predeterminados de FoxCode.dbf y las listas de Usados más recientemente (MRU) y ejecutar otras rutinas de mantenimiento de IntelliSense

Botón de comando Limpiar Abre el cuadro de diálogo Mantenimiento.

  • Utilice el botón de comando Restaurar FoxCode para restablecer los valores predeterminados de IntelliSense de Visual FoxPro. En el sistema se restaura una copia limpia de FoxCode.dbf. Se mantendrán los Elementos personalizados.
  • Utilice el botón de comando Limpiar FoxCode para quitar los registros que ha marcado para eliminación de la tabla _FoxCode.
  • Utilice el botón de comando Limpiar listas para quitar archivos que ya no existen de las listas MRU.
  • Utilice el botón de comando Borrar listas para borrar todo el contenido de la lista MRU.

Vea también

_FOXCODE (Variable del sistema) | _CodeSense (Variable del sistema) | Mostrar miembros | Información rápida | Mostrar valores | Introducción a IntelliSense | Personalizar IntelliSense mediante FoxCode


Ventanas del sistema de Visual FoxPro

Las ventanas del sistema de Visual FoxPro son ventanas que Visual FoxPro proporciona como parte de la interfaz de producto. La siguiente tabla ofrece detalles que le permiten tener acceso y controlar estas ventanas.

Ventana | Código de acceso | Estado de acoplamiento predeterminado
Comandos | ACTIVATE WINDOW (Comando) | Acoplable, desacoplada
Sesión de datos | SET VIEW ON, ACTIVATE WINDOW VIEW | Acoplable, desacoplada
Vista del documento | ACTIVATE WINDOW (Documento) | Acoplable, desacoplada
Propiedades | ACTIVATE WINDOW (Propiedades) | Acoplable, desacoplada
Depurador | DEBUG ACTIVATE WINDOW (Depurador) | No acoplable
Pila de llamadas | (vea la nota) | En el Depurador, Acoplable
Resultado del depurador | (vea la nota) | En el Depurador, Acoplable
Locales | (vea la nota) | En el Depurador, Acoplable
Seguimiento | (vea la nota) | En el Depurador, Acoplable
Inspección | (vea la nota) | En el Depurador, Acoplable
Nota Las ventanas Depurador individual son acoplables sólo cuando el Depurador está habilitado en el Marco de FoxPro. No puede abrir subventanas del Depurador, sólo, en código a menos que primero establezca que el Depurador utiliza el Marco de Visual FoxPro. Por ejemplo, normalmente si utiliza ACTIVATE WINDOW "pila de llamada", el Depurador completo se abre con la ventana Pila de llamadas resaltada. Si primero establece el Depurador al Marco de Visual FoxPro, ACTIVATE WINDOW "pila de llamada" abre la ventana Pila de llamadas.

Vea también

Ficha Depurar, cuadro de diálogo Opciones


Ventana Inspección

Le permite presentar expresiones y sus valores actuales y establecer puntos de interrupción en una expresión. Esta ventana es activada al seleccionar Seguimiento desde el menú Ventana, la ventana Debugger. Visual FoxPro habilita IntelliSense en la ventana Seguimiento pero los límites llegan solo a los Miembros de la lista.

Inspección
El valor o la expresión que desea examinar. Escriba expresiones aquí para agregarlas a la cuadrícula de expresiones de inspección activas que hay debajo.
Nombre
Muestra los nombres de las expresiones de inspección actuales.
Valor
Muestra los valores de las expresiones de inspección actuales.
Tipo
Muestra caracteres que representan los tipos de datos de las expresiones de inspección actuales.

Puede seleccionar expresiones, borrarlas o anexar puntos de interrupción a las expresiones.

Para crear una nueva expresión de inspección

  • Seleccione texto en cualquier ventana de Visual FoxPro y arrástrelo a la ventana Inspección.

Para modificar una expresión de inspección

  • Haga doble clic en la expresión de inspección.

Vea también

Ventana Depurador | Métodos abreviados del depurador | Ventana Pila de llamadas


Mensajes de error

Este tema contiene información acerca de los mensajes de error más comunes de Visual FoxPro.

En esta sección

Mensajes de error ordenados alfabéticamente
Esta sección contiene una lista de temas de mensajes de error ordenados alfabéticamente.
Mensajes de error ordenados por número
Esta sección contiene una lista de mensajes de error ordenados por número.
Parámetros de los mensajes de error
Lista los mensajes de error para los cuales puede retornar el nombre de archivo, campo o variable como un parámetro, usando SYS(2018).

Secciones relacionadas

Referencia
El material de referencia de Visual FoxPro incluye temas acerca de las herramientas de productividad además de los controles, los objetos, las propiedades, los métodos, los eventos, las instrucciones, las funciones y las constantes disponibles.
Referencia general
La información técnica relacionada con Visual FoxPro, incluye los tipos de archivos, estructuras de archivos y otra información de referencia acerca de elementos de Visual FoxPro.
Referencia del lenguaje
Proporciona una lista de temas de referencia del lenguaje en el orden alfabético
Referencia de interfaz de usuario
En los temas de referencia relativos a la interfaz de usuario se explican las opciones que aparecen en diversos cuadros de diálogo, ventanas y otras interfaces de usuario. Normalmente estos tipos de temas aparecen cuando se presiona F1 en un cuadro de diálogo o en una ventana.


Mensajes de error ordenados alfabéticamente

Ir a esta letra:

A | B | C | D | E | F | G - H | I | J - K | L | M
N | O | P | Q | R | S | T | U | V | W | X - Z

1196 | "archivo" no es un archivo .EXE de Visual FoxPro. (Error 1196)
1309 | "archivo" no es un archivo de objeto (Error 1309)
1130 | No se encuentra la frase "campo'" (Error 1130)
1832 | "campo | variable" no es único y se debe calificar (Error 1832)
1165 | "campo" no tiene relación con el área de trabajo actual. (Error 1165)
1815 | "cursor" debe crearse mediante SELECT ... INTO TABLE (Error 1815)
1429 | Error de OLE (Error 1429)
1298 | La banda "nombre" es demasiado grande y no cabe en la página (Error 1298)
1462 | Error interno de coherencia "nombre" (Error 1462)
1737 | "nombre" es un método, evento u objeto (Error 1737)
1925 | "nombre" es un miembro desconocido (Error 1925)
1740 | "nombre" es una propiedad de sólo lectura (Error 1740)
1294 | "nombre" no es un archivo de recursos válido (Error 1294)
1745 | "nombre" no es un evento de Visual FoxPro (Error 1745)
1924 | "nombre" no es un objeto (Error 1924)
1992 | "nombre" no es una función, procedimiento o programa (Error 1992)
232 | "nombre" no es una matriz (Error 232)
226 | "nombre" no es una variable de archivo (Error 226)
225 | "nombre" no es una variable (Error 225)
1932 | No se puede cerrar "nombre" mientras está suspendido (Error 1932)
1794 | No es posible enumerar "nombre" (Error 1794)
1983 | Los objetos "nombre" no pueden devolver un valor (Error 1983)
1929 | "nombre" sólo puede usarse en un método (Error 1929)
*** | *fecha incorrecta*
*** | *Interrumpido*
78 | Error en el dominio de ** o ^ (Error 78)
1550 | Error interno de coherencia DBC (Error 1550)
115 | El encabezado del archivo .DIF no es válido. (Error 115)
117 | El indicador de tipo .DIF no es válido. (Error 117)
116 | El vector .DIF no es válido; incoherencia de campos .DBF. (Error 116)
119 | El encabezado del archivo .SYLK no es válido. (Error 119)
120 | Los límites de dimensión del archivo .SYLK no son válidos. (Error 120)
121 | El formato del archivo .SYLK no es válido. (Error 121)

A

2081 | ADODB.Command ya está abierto. (Error 2081)
2080 | ADODB.Recordset ya está abierto. (Error 2080)
2143 | ADODB.Recordset no está abierto. (Error 2143)
1486 | Advertencia: hay conversiones de campo memo no válidas que comienzan en el registro "número" (Error 1486)
1485 | Advertencia: hay conversiones de datos no válidas que comienzan en el registro "número" (Error 1485)
1495 | Advertencia: la clave definida por la propiedad KeyField para la tabla "alias" no es única (Error 1495)
1484 | Advertencia: los siguientes "cExpr" registros modificados ya se han actualizado de forma remota (Error 1484)
1496 | Advertencia: no hay información disponible para comprobar los conflictos de actualizaciones remotas (Error 1496)
1487 | Advertencia: no se puede establecer el modo de transacciones de la conexión (Error 1487)
1480 | Advertencia: no se puede establecer el modo síncrono o asíncrono de la conexión (Error 1480)
1483 | Advertencia: no se puede establecer el tamaño del paquete de la conexión (Error 1483)
1481 | Advertencia: no se puede establecer el tiempo de espera de la conexión (Error 1481)
1482 | Advertencia: no se puede establecer el tiempo de espera de la consulta (Error 1482)
392 | Al importar el archivo se supera la longitud máxima de registro (Error 392)
1587 | Anidamiento no válido de OLDVAL( ) o CURVAL( ) (Error 1587)
*** | Archivo compacto EXE no válido. Vuelva a generar el archivo EXE.

B

1569 | Base de datos "nombre": acceso al archivo denegado (Error 1569)
1530 | Búsqueda cancelada; la tabla remota está cerrada (Error 1530)

C

1903 | Cadena demasiado larga (Error 1903)
1001 | Característica no disponible. (Error 1001)
2146 | Clave no válida en columna "nombre". (Error 2146)
*** | Código de error nExpr desconocido
1426 | Código de error OLE 0x"nombre" (Error 1426)
1427 | Código de excepción OLE IDispatch "nombre" (Error 1427)
1428 | Código de excepción OLE IDispatch "número" de "nombre": "nombre" (Error 1428)
1695 | COLUMN | FORM | ALIAS | NOOVERWRITE | WIDTH sólo se permiten con la cláusula FROM (Error 1695)
1698 | COLUMN | ROW | ALIAS | NOOVERWRITE | SIZE | SCREEN sólo se permiten con la cláusula FROM (Error 1698)
1595 | Conflicto de actualización. Se confirmaron algunos cambios en el lote actual de filas (Error 1595)
1585 | Conflicto de actualización. (Error 1585)
2032 | Constante Date/DateTime ambigua (Error 2032)
1509 | Conversión cancelada. Ajuste BLOCKSIZE en el memo (Error 1509)
1313 | Creación de clase cancelada (Error 1313)
2033 | CTOD y CTOT pueden producir resultados incorrectos (Error 2033)
2092 | CursorAdapter no encuentra el registro actual en el búfer. Puede que el registro se haya revertido (Error 2092)
2076 | CursorAdapter no permite esta operación. (Error 2076)
2077 | CursorAdapter no permite esta operación en estos momentos. (Error 2077)
2138 | CursorAdapter no puede determinar DataSourceType para la operación. (Error 2138)
2090 | CursorAdapter no tiene un cursor asociado (Error 2090)
2078 | CursorAdapter "nombre" no se puede cargar para diseño. (Error 2078)

D

110 | Debe abrir el archivo en modo exclusivo. (Error 110)
1778 | Debe convertir la tabla antes de anexar (Error 1778)
42 | Debe ejecutar el comando LOCATE antes que el comando CONTINUE (Error 42)
94 | Debe especificar parámetros adicionales (Error 94)
1684 | Debe especificar un nombre de etiqueta o archivo de índice (Error 1684)
1145 | Debe ser un campo clave de tipo Numérico o Carácter. (Error 1145)
1226 | Debe ser una variable de archivo. (Error 1226)
1225 | Debe ser una variable o una matriz. (Error 1225)
37 | Debe utilizar una expresión lógica con FILTER (Error 37)
1127 | Debe utilizar una expresión lógica con una cláusula FOR o WHILE. (Error 1127)
1956 | Denegado el acceso a la impresora (Error 1956)
1705 | Denegado el acceso al archivo (Error 1705)
1640 | Denegado el acceso al Registro del sistema (Error 1640)
39 | Desbordamiento numérico. Se han perdido datos (Error 39)
1103 | Desplazamiento de búsqueda no válido. (Error 1103)
1232 | DIMENSIÓN contiene una declaración de variable sin los argumentos de subíndice necesarios. (Error 1232)

E

1589 | El almacenamiento en búfer de tablas o de filas requiere que SET MULTILOCKS tenga el valor ON (Error 1589)
1713 | El ancho o el número de decimales del campo no son válidos (Error 1713)
1246 | El ancho total de la etiqueta supera el tamaño permitido. (Error 1246)
1718 | El archivo "nombre" es de sólo lectura (Error 1718)
1190 | El archivo "nombre" es demasiado grande. (Error 1190)
1551 | El archivo "nombre" es una base de datos no válida (Error 1551)
1553 | El archivo "nombre" es una base de datos (Error 1553)
1565 | El archivo "nombre" forma parte de una base de datos (Error 1565)
1552 | El archivo "nombre" no es una base de datos (Error 1552)
1933 | El archivo "nombre" no está cerrado (Error 1933)
1558 | El archivo "nombre" no forma parte de una base de datos (Error 1558)
2036 | El archivo de Ayuda actual está vacío. (Error 2036)
1691 | El archivo de biblioteca "nombre" no es válido (Error 1691)
1747 | El archivo de clase "nombre" no es válido (Error 1747)
54 | El archivo de etiquetas no es válido (Error 54)
1991 | El archivo de formulario "nombre" es de una versión anterior de FoxPro. Debe convertirlo al formato actual para poder ejecutarlo (Error 1991)
1686 | El archivo de formulario "nombre" no es válido (Error 1686)
1749 | El archivo de formulario (.SCX) debe contener al menos un objeto Form (Error 1749)
19 | El archivo de índice no corresponde a la tabla (Error 19)
50 | El archivo de informe "nombre" no es válido (Error 50)
55 | El archivo de memoria no es válido (Error 55)
1687 | El archivo de menú no es válido (Error 1687)
1195 | El archivo de objeto "archivo" se compiló con una versión anterior de FoxPro. (Error 1195)
1719 | El archivo de objeto "nombre" está en uso y no se puede quitar de la memoria (Error 1719)
1169 | El archivo de proyecto es de sólo lectura. (Error 1169)
1685 | El archivo de proyecto no es válido (Error 1685)
127 | El archivo de vista no es válido (Error 127)
1131 | El archivo especificado en la cláusula FROM está vacío. (Error 1131)
1708 | El archivo está abierto en otra área de trabajo (Error 1708)
3 | El archivo está en uso (Error 3)
*** | El archivo EXE no es válido o falta.
41 | El archivo memo "nombre" no existe o no es válido (Error 41)
1113 | El archivo no está abierto. (Error 1113)
1 | El archivo "nombre" no existe. (Error 1)
1750 | El archivo se creó en una versión de Visual FoxPro posterior a la actual (Error 1750)
1955 | El archivo WIN.INI o el Registro están dañados (Error 1955)
7 | El archivo ya existe (Error 7)
1908 | El argumento de ancho o número de decimales no es válido (Error 1908)
61 | El argumento de SQRT( ) no puede ser negativo (Error 61)
*** | El Asistente para vistas remotas no pudo obtener la información de columnas para esta tabla remota. Puede deberse a un error de ODBC o a que la tabla remota no sea propiedad del usuario actual.
1545 | El búfer de tablas para el alias "nombre" contiene cambios no confirmados (Error 1545)
1088 | El campo "nombre" es de sólo lectura. (Error 1088)
1581 | El campo "nombre" no acepta valores Null (Error 1581)
1646 | El campo de tipo Total debe ser de tipo Fecha o Numérico (Error 1646)
1913 | El campo debe ser de tipo General (Error 1913)
350 | El campo debe ser de tipo Memo (Error 350)
1252 | El código compilado para esta línea es demasiado largo. (Error 1252)
1941 | El código de error no es válido (Error 1941)
1507 | El código de pantalla es demasiado grande para la memoria disponible (Error 1507)
*** | El código fuente no está actualizado
1220 | El comando contiene un carácter no válido. (Error 1220)
36 | El comando contiene una frase o palabra clave no reconocida (Error 36)
1466 | El controlador de conexión no es válido (Error 1466)
1524 | El controlador de impresora seleccionado no permite el acceso directo (Error 1524)
1643 | El controlador de la impresora está dañado (Error 1643)
1166 | El cursor está dañado o tiene un formato erróneo. (Error 1166)
2112 | El cursor "nombre" está asociado a otro objeto CursorAdapter. (Error 2112)
1111 | El descriptor de archivo no es válido. (Error 1111)
1962 | El directorio no está vacío (Error 1962)
2126 | El documento XML no es un DiffGram. (Error 2126)
2096 | El documento XML no se ha cargado. (Error 2096)
2124 | El documento XML no tiene un elemento raíz. (Error 2124)
115 | El encabezado del archivo .DIF no es válido. (Error 115)
119 | El encabezado del archivo .SYLK no es válido. (Error 119)
2068 | El entorno de datos "nombre" no contiene el objeto cursor. (Error 2068)
1966 | El entorno de datos ya está cargado (Error 1966)
1967 | El entorno de datos ya está descargado (Error 1967)
1907 | El especificador de unidad no es válido (Error 1907)
2094 | El esquema XML es demasiado complejo. (Error 2094)
1510 | El formato de archivo no es válido. Si es un archivo de dBASE, debe convertirlo primero. Para convertirlo, escriba MODIFY LABEL archivo (Error 1510)
1688 | El formato de archivo Paradox no es válido (Error 1688)
1673 | El formato de archivo Symphony versión 1.0 no es válido (Error 1673)
1471 | El formato de columna es incorrecto (Error 1471)
121 | El formato del archivo .SYLK no es válido. (Error 121)
356 | El formato del archivo de macros de teclado no es válido (Error 356)
1661 | El formato del archivo de Microsoft Excel no es válido (Error 1661)
1670 | El formato del archivo de Multiplan versión 4.0 no es válido (Error 1670)
1632 | El formato del archivo de ventana no es válido (Error 1632)
1662 | El formato del archivo Lotus 1-2-3 versión 1.0 no es válido (Error 1662)
297 | El formato del archivo Lotus 1-2-3 versión 2.0 no es válido (Error 297)
1678 | El formato del archivo Lotus 1-2-3 versión 3.0 no es válido (Error 1678)
1674 | El formato del archivo Symphony versión 1.1 no es válido (Error 1674)
1167 | El icono está dañado o tiene un formato incorrecto. (Error 1167)
117 | El indicador de tipo .DIF no es válido. (Error 117)
1886 | El índice no acepta NULL (Error 1886)
114 | El índice no corresponde a la tabla. Elimine el archivo de índice y vuelva a crear el índice. (Error 114)
2061 | El índice o la expresión no coinciden con un miembro existente de la colección. (Error 2061)
1645 | El informe contiene un error de anidamiento (Error 1645)
1413 | El marco de página no puede ser tan pequeño (Error 1413)
221 | El margen izquierdo, incluida la sangría, debe ser menor que el margen derecho (Error 221)
287 | El menú es demasiado pequeño (Error 287)
181 | El menú especificado en ACTIVATE MENU ya está en uso (Error 181)
182 | El menú especificado en ACTIVATE POPUP ya está en uso (Error 182)
279 | El menú no está seleccionado (Error 279)
178 | El menú no se ha activado con ACTIVATE MENU (Error 178)
179 | El menú no se ha activado con ACTIVATE POPUP (Error 179)
168 | El menú no se ha definido con DEFINE MENU (Error 168)
165 | El menú no se ha definido con DEFINE POPUP (Error 165)
1765 | El método contiene errores de sintaxis. No se ha guardado el método (Error 1765)
1760 | El miembro "nombre" es un miembro de clase (Error 1760)
1943 | El miembro "nombre" no se evalúa como un objeto (Error 1943)
216 | El modo de presentación no está disponible (Error 216)
1438 | El módulo de control ActiveX no se registró correctamente (Error 1438)
2128 | El nodo XML no pertenece a MSXML4.DOMDocument. (Error 2128)
1571 | El nombre "nombre" ya se usa para otro objeto. Elija otro nombre diferente (Error 1571)
24 | El nombre de alias ya está en uso (Error 24)
1746 | El nombre de archivo de clase para "nombre" no es válido (Error 1746)
1712 | El nombre de campo está duplicado o no es válido (Error 1712)
*** | El nombre de campo no es válido o está duplicado
1949 | El nombre de clase no es válido (Error 1949)
1479 | El nombre de columna de actualización "nombre" no es válido (Error 1479)
1497 | El nombre de conexión no es válido (Error 1497)
1888 | El nombre de etiqueta es demasiado largo (Error 1888)
1470 | El nombre de propiedad es incorrecto (Error 1470)
1578 | El nombre de tabla de la base de datos no es válido (Error 1578)
2001 | El nombre del archivo de objeto de "archivo" está en uso por otro programa del proyecto (Error 2001)
1918 | El nombre del archivo es demasiado largo (Error 1918)
1575 | El nombre del objeto no es válido (Error 1575)
223 | El número de columnas debe estar entre 0 y 255 (Error 223)
1657 | El número de columnas debe estar entre 0 y el margen derecho (Error 1657)
1914 | El número de la página de códigos no es válido (Error 1914)
222 | El número de líneas debe ser menor que la longitud de página (Error 222)
1540 | El número de sesión no es válido (Error 1540)
17 | El número de tabla no es válido (Error 17)
1935 | El objeto actual no hereda de la clase "nombre" (Error 1935)
2021 | El objeto DataObject no se puede modificar en los eventos OLEDragOver y OLEDragDrop (Error 2021)
1445 | El objeto EventHandler "nombre" no implementa una interfaz. (Error 1445)
2009 | El objeto no es una vista sin conexión (Error 2009)
1938 | El objeto no está contenido en un "nombre" (Error 1938)
1420 | El objeto OLE no es válido o está dañado (Error 1420)
1767 | El objeto primario no permitirá esta configuración de propiedad para "nombre" (Error 1767)
2129 | El objeto XMLAdapter no tiene ninguna tabla asociada. (Error 2129)
2144 | El objeto XMLField ya está asociado con el objeto XMLTable. (Error 2144)
2130 | El objeto XMLTable con "nombre" XMLName no tiene campos asociados. (Error 2130)
2097 | El objeto XMLTable no tiene campos asociados. (Error 2097)
2095 | El objeto XMLTable no tiene un objeto XMLAdapter asociado. (Error 2095)
2132 | El objeto XMLTable ya tiene un objeto primario o está asociado con el objeto XMLAdapter. (Error 2132)
1985 | El objeto ya tiene un entorno de datos; no se puede usar otro con el método SaveAs (Error 1985)
1742 | El origen de datos para este objeto debe ser una referencia de variable (Error 1742)
1781 | El origen del control de un objeto no se puede establecer como su propiedad Value (Error 1781)
1499 | El parámetro "nombre" de SQL no es válido (Error 1499)
1969 | El Portapapeles contenía uno o más objetos que no se pudieron agregar al contenedor. Estos objetos no se pegaron (Error 1969)
1954 | El programa generador ya se está ejecutando (Error 1954)
124 | El redireccionamiento de la impresora no es válido. (Error 124)
1126 | El registro es demasiado largo. (Error 1126)
5 | El registro está fuera del intervalo (Error 5)
130 | El registro no está bloqueado (Error 130)
20 | El registro no está incluido en el índice (Error 20)
46 | El resultado de la expresión no es válido (Error 46)
2074 | El resultado no es compatible con el esquema del cursor. (Error 2074)
1463 | El servidor no ha devuelto ningún conjunto de resultados (Error 1463)
1234 | El subíndice está fuera del intervalo definido. (Error 1234)
2141 | El tamaño de campo para el valor Unicode no puede ser un número impar. (Error 2141)
1732 | El tipo de datos no es válido para esta propiedad (Error 1732)
1773 | El tipo de objeto de base de datos no es válido (Error 1773)
164 | El título de menú no se ha definido con DEFINE PAD (Error 164)
1523 | El usuario canceló la ejecución (Error 1523)
2142 | El valor de campo para el valor Unicode no debe utilizar la traducción de páginas de códigos. (Error 2142)
1469 | El valor de la propiedad está fuera de los límites (Error 1469)
1560 | El valor de la propiedad no es válido (Error 1560)
2134 | El valor de la propiedad XMLName, XMLNamespace o XMLPrefix debe ser una cadena Unicode. (Error 2134)
1988 | El valor de moneda está fuera del intervalo (Error 1988)
1997 | El valor predeterminado para el campo "nombre" no se evalúa como del tipo correcto para el campo (Error 1997)
11 | El valor, tipo o número del argumento de la función no es válido. (Error 11)
116 | El vector .DIF no es válido; incoherencia de campos .DBF. (Error 116)
1922 | El volumen no existe (Error 1922)
2098 | Elemento no válido en la colección XMLTable.Fields (Error 2098)
1436 | En los campos de tipo General sólo se permiten objetos insertables (Error 1436)
1214 | ENDTEXT no tiene la instrucción TEXT correspondiente. (Error 1214)
1779 | Error al agregar "nombre" al objeto. El nombre de miembro o propiedad está duplicado (Error 1779)
1881 | Error al cargar el archivo - número de registro n. "objeto" (o uno de sus miembros); "tema": "error" (Error 1881)
1958 | Error al cargar el controlador de impresora (Error 1958)
1995 | Error al cargar el entorno de datos. La tabla está en uso (Error 1995)
2049 | Error al cargar la colección HtmlHelp 2.0. (Error 2049)
1112 | Error al cerrar el archivo. (Error 1112)
1424 | Error al copiar el objeto OLE al Portapapeles (Error 1424)
1423 | Error al crear el objeto OLE (Error 1423)
1973 | Error al crear la tabla: "nombre" (Error 1973)
1554 | Error al crear una instancia del objeto Cursor. No se puede abrir la tabla "alias". Se pasará por alto el objeto (Error 1554)
1736 | Error al crear una instancia del objeto "objeto" (Error 1736)
1105 | Error al escribir en el archivo "archivo". (Error 1105)
1422 | Error al guardar el objeto OLE (Error 1422)
1574 | Error al inicializar el objeto Application (Error 1574)
1508 | Error al inicializar OLE (Error 1508)
1104 | Error al leer el archivo "archivo". (Error 1104)
1296 | Error al leer el recurso (Error 1296)
1584 | Error al leer una propiedad desde la base de datos. Se pasará por alto la propiedad (Error 1584)
1957 | Error al tener acceso a la cola de impresión (Error 1957)
2055 | Error de análisis de consulta: intente volver a generar en el Asistente para consultas o mediante la ficha Combinación del Diseñador de vistas. (Error 2055)
1435 | Error de análisis de XML (Error 1435)
1653 | Error de anidamiento en la etiqueta (Error 1653)
96 | Error de anidamiento (Error 96)
1981 | Error de compilación en el archivo "nombre" (Error 1981)
1526 | Error de conectividad: "nombre" (Error 1526)
1440 | Error de excepción OLE: "nombre" El objeto OLE puede estar dañado (Error 1440)
1217 | Error de imagen en la instrucción GET. (Error 1217)
1002 | Error de la operación de entrada o salida. (Error 1002)
2018 | Error de la reconexión de la vista sin conexión (Error 2018)
2043 | Error de la secuencia de comandos de FoxCode "nombre". (Error 2043)
1242 | Error de sintaxis en la expresión de campo. (Error 1242)
10 | Error de sintaxis. (Error 10)
1590 | Error del comando BEGIN TRANSACTION. El nivel de anidamiento es demasiado profundo (Error 1590)
1194 | Error del comando de vínculo. (Error 1194)
1539 | Error del desencadenante en "cursor" (Error 1539)
67 | Error del evaluador de expresiones (Error 67)
1797 | Error durante la conversión (Error 1797)
2005 | Error en "nombre" - "propiedad": "error" (Error 2005)
78 | Error en el dominio de ** o ^ (Error 78)
1258 | Error en la cláusula PICTURE (Error 1258)
1735 | Error en la definición de clase. "Detalles (Error 1735)
*** | Error fatal nExpr al notificar el error nExpr.
2071 | Error iniciado por el usuario (Error 2071)
1462 | Error interno de coherencia "nombre" (Error 1462)
1550 | Error interno de coherencia DBC (Error 1550)
1522 | Error interno de coherencia de conectividad (Error 1522)
1465 | Error interno de coherencia de paso a través de SQL (Error 1465)
1000 | Error interno de coherencia. (Error 1000)
1243 | Error interno: hay demasiados caracteres en el informe. (Error 1243)
2110 | Error XML: "error" (Error 2110)
1727 | Es necesario un archivo de Ayuda estilo .DBF (Error 1727)
1308 | Espacio de pila insuficiente (Error 1308)
1310 | Especificó demasiados carácteres en la cláusula PICTURE (Error 1310)
1580 | Esta característica no está permitida para las tablas que no son .DBC (Error 1580)
2116 | Esta característica requiere MSXML4 SP1 o posterior. (Error 2116)
1953 | Esta característica sólo está disponible si el objeto está en modo de diseño (Error 1953)
1536 | Esta función no es compatible con las tablas nativas (Error 1536)
1999 | Esta función no está implementada (Error 1999)
1525 | Esta función no está permitida en tablas remotas (Error 1525)
1521 | Esta operación no está permitida para objetos miembros de la clase (Error 1521)
1533 | Esta propiedad es de sólo lectura (Error 1533)
1782 | Esta propiedad OLE no puede ser una expresión (Error 1782)
1748 | Este archivo no es compatible con la versión actual de Visual FoxPro (Error 1748)
1780 | Este elemento de matriz se ha definido como un objeto y no se puede volver a definir en la definición de clase (Error 1780)
1911 | Este entorno requiere el producto traducido (Error 1911)
1784 | Este objeto se deriva de una clase base y no tiene una clase principal (Error 1784)
2059 | Excepción estructurada no controlada (Error 2059)
2105 | Existe un campo "nombre" duplicado en el esquema XML. (Error 2105)
2104 | Existe una tabla "nombre" duplicada en el esquema XML. (Error 2104)

F

1724 | Falta #ENDIF (Error 1724)
1304 | Falta ( en el nombre de la función (Error 1304)
1300 | Falta ) en el nombre de la función (Error 1300)
1528 | Falta el punto de entrada a ODBC, "nombre" (Error 1528)
1193 | Falta la sección .RTT. (Error 1193)
1231 | Falta un operando. (Error 1231)
1493 | Falta un parámetro de SQL (Error 1493)
1221 | Falta una cláusula necesaria en el comando. (Error 1221)
1306 | Falta una coma (,) (Error 1306)
152 | Falta una expresión (Error 152)
1211 | Falta una instrucción IF | ELSE | ENDIF. (Error 1211)
1213 | Falta una palabra clave en la estructura de comandos FOR... ENDFOR o DO CASE... ENDCASE. (Error 1213)
1229 | Faltan argumentos. (Error 1229)
1504 | Función no compatible para cursores de paso a través de SQL (Error 1504)

G - H

1872 | Hay demasiadas columnas (Error 1872)
22 | Hay demasiadas variables (Error 22)
1116 | Hay demasiadas ventanas abiertas. (Error 1116)
6 | Hay demasiados archivos abiertos (Error 6)
1230 | Hay demasiados argumentos. (Error 1230)
1250 | Hay demasiados comandos PROCEDURE activados. (Error 1250)
1249 | Hay demasiados comandos READ activados. (Error 1249)
1156 | Hay nombres de campos duplicados. (Error 1156)
1241 | Hay un tipo de datos incorrecto en la expresión de grupo. (Error 1241)
1206 | Hay una definición recurrente en la macro. (Error 1206)
1245 | Hay una expresión no válida en el archivo de definición de etiqueta. (Error 1245)
1910 | Hay una recurrencia no válida en el controlador de impresora (Error 1910)
1887 | Hay una recurrencia no válida en la evaluación de la regla (Error 1887)

I

2026 | Id. local no válido (Error 2026)
1679 | Importar sólo la hoja A de los archivos Lotus 1-2-3 versión 3.0 (Error 1679)
1711 | Incoherencia en la revisión de la biblioteca API. Vuelva a generar la biblioteca (Error 1711)
1939 | Incoherencia en WITH/ENDWITH (Error 1939)
107 | Incompatibilidad entre el tipo de operador y el tipo de operando. (Error 107)
1583 | Infracción de la regla de validación del registro (Error 1583)
2024 | Infracción de uso compartido (Error 2024)

J - K

L

2050 | La ayuda de este tema o contexto no se ha implementado. (Error 2050)
1298 | La banda "nombre" es demasiado grande y no cabe en la página (Error 1298)
1534 | La base de datos "alias" no está abierta (Error 1534)
1557 | La base de datos debe abrirse en modo exclusivo (Error 1557)
1570 | La base de datos es de sólo lectura (Error 1570)
1561 | La base de datos no es válida. Valídela (Error 1561)
2057 | La biblioteca de clases especificada no existe o no contiene una clase de miembro válida. (Error 2057)
2003 | La cadena Changed Properties de OLE es de una versión incorrecta. Las propiedades subclasificadas se ignoran (Error 2003)
1257 | La cadena de clave es demasiado larga (Error 1257)
1752 | La clase "nombre" está en uso por MODIFY CLASS (Error 1752)
1776 | La clase "nombre" está en uso (Error 1776)
2029 | La clase "nombre" no es una clase Form (Error 2029)
1576 | La clase "nombre" no se encuentra en la biblioteca de clases (Error 1576)
1434 | La clase "nombre" no se ha registrado (Error 1434)
1761 | La clase "nombre" ya existe (Error 1761)
2056 | La clase de miembro especificada no existe o es de tipo incorrecto. (Error 2056)
1744 | La clase de objeto no es válida para este contenedor (Error 1744)
2053 | La cláusula GroupBy es demasiado larga. (Error 2053)
1710 | La cláusula MULTISELECT o MOVER no está permitida para los menús de estilo PROMPT (Error 1710)
2052 | La cláusula OrderBy es demasiado larga. (Error 2052)
1982 | La cláusula TO sólo se puede usar con Form y FormSet modales (Error 1982)
2062 | La clave especificada ya existe. (Error 2062)
1124 | La clave excede el tamaño permitido. (Error 1124)
1883 | La clave principal ya existe (Error 1883)
1728 | La combinación de colores está reservada (Error 1728)
2044 | La combinación de texto es recursiva. (Error 2044)
1541 | La conexión "nombre" está ocupada (Error 1541)
1739 | La configuración de la propiedad no se aplicará hasta que no se vuelva a cargar el entorno de datos (Error 1739)
1725 | La constante ya se ha creado mediante #DEFINE (Error 1725)
2135 | Ha fallado la conversión a Unicode. (Error 2135)
1532 | La conversión de tipo no es compatible (Error 1532)
1543 | La conversión de tipo que requiere la propiedad DataType para el campo "nombre" no es válida (Error 1543)
2136 | Ha fallado la conversión desde Unicode. (Error 2136)
1950 | La definición de clase "nombre" es recurrente (Error 1950)
1494 | La definición de la vista ha cambiado (Error 1494)
1212 | La estructura de anidamiento es demasiado profunda. (Error 1212)
1235 | La estructura no es válida. (Error 1235)
1255 | La etiqueta de clave "etiqueta" no es válida (Error 1255)
1647 | La expresión de campo contiene un tipo de datos no válido (Error 1647)
23 | La expresión de índice excede la longitud máxima (Error 23)
1998 | La expresión de índice para el índice "nombre" contiene una referencia no válida a un campo de tipo Memo, General o Imagen (Error 1998)
1722 | La expresión de preprocesador no es válida (Error 1722)
1947 | La expresión es demasiado compleja (Error 1947)
1140 | La expresión FILTER excede el tamaño permitido. (Error 1140)
1940 | La expresión no es válida fuera de WITH/ENDWITH (Error 1940)
1759 | La expresión no es válida. Use una expresión válida para la propiedad "nombre" (Error 1759)
1555 | La expresión relacional no es válida (Error 1555)
1845 | La expresión SQL es demasiado compleja (Error 1845)
293 | La expresión usada con ACOS( ) está fuera del intervalo (Error 293)
291 | La expresión usada con ASIN( ) está fuera del intervalo (Error 291)
1586 | La función requiere el modo de almacenamiento en búfer de filas o tablas (Error 1586)
1680 | La hoja A del archivo Lotus 1-2-3 versión 3.0 está oculta (Error 1680)
1108 | La imagen es demasiado grande, está dañada o tiene un formato incorrecto. (Error 1108)
125 | La impresora no está preparada. (Error 125)
2051 | La instrucción condicional del elemento de menú es demasiado larga. (Error 2051)
1927 | La instrucción no es válida en una definición de clase (Error 1927)
1931 | La instrucción no está en un procedimiento (Error 1931)
95 | La instrucción no está permitida en modo interactivo (Error 95)
1934 | La instrucción sólo es válida en un método (Error 1934)
1928 | La instrucción sólo es válida en una definición de clase (Error 1928)
1498 | La instrucción SQL SELECT no es válida (Error 1498)
18 | La línea es demasiado larga (Error 18)
112 | La longitud de clave no es válida. (Error 112)
21 | La longitud de las cadenas de variables excede la memoria disponible (Error 21)
1117 | La longitud del campo clave no coincide. (Error 1117)
355 | La macro no está definida (Error 355)
1972 | La matriz "nombre" está en uso (Error 1972)
1764 | La matriz no es miembro del objeto primario (Error 1764)
1690 | La operación de tabla no es válida durante la indización (Error 1690)
1115 | La operación no es válida para el objeto Cursor. (Error 1115)
1912 | La operación no es válida para un campo de tipo General (Error 1912)
2007 | La operación para la vista sin conexión no es válida mientras esté fuera sin conexión (Error 2007)
2008 | La operación para la vista sin conexión no es válida mientras se usa en línea (Error 2008)
2011 | La operación para la vista sin conexión no es válida (Error 2011)
30 | La posición de fila o de columna está fuera de la pantalla (Error 30)
167 | La posición del elemento de menú debe ser un número positivo (Error 167)
1743 | La propiedad "nombre" es de sólo lectura (Error 1743)
1757 | La propiedad "nombre" está protegida (Error 1757)
1738 | La propiedad "nombre" no es un método o evento (Error 1738)
2145 | La propiedad "nombre" tiene un valor incorrecto. (Error 2145)
1763 | La propiedad "nombre" ya existe (Error 1763)
1478 | La propiedad ChildOrder de un objeto Relation del entorno de datos ya no es válida. Se quitará la relación (Error 1478)
1544 | La propiedad DataType para el campo "nombre" no es válida (Error 1544)
1473 | La propiedad de entorno no es válida (Error 1473)
1567 | La propiedad de la clave principal no es válida; valide la base de datos (Error 1567)
1468 | La propiedad no es válida para cursores de tabla (Error 1468)
1467 | La propiedad no es válida para cursores locales (Error 1467)
1138 | La propiedad no tiene un valor predeterminado. (Error 1138)
1223 | La referencia a la variable no es válida. (Error 1223)
31 | La referencia al subíndice no es válida (Error 31)
1996 | La regla de validación para el campo "nombre" no se evalúa como de tipo lógico o NULL (Error 1996)
202 | La ruta o el nombre de archivo no es válido (Error 202)
1549 | La sesión de datos #número no se puede liberar si hay transacciones abiertas (Error 1549)
1599 | La sesión de datos #número se vio forzada a deshacer (ROLLBACK) todas las transacciones para evitar el bloqueo (Error 1599)
1860 | La subconsulta devolvió más de un registro (Error 1860)
1548 | La tabla "alias" tiene uno o más índices no estructurales abiertos. Ciérrelos y vuelva a intentar BEGIN TRANSACTION (Error 1548)
2091 | La tabla "nombre" está dañada. Se debe reparar antes de volver a utilizarla. (Error 2091)
1564 | La tabla "nombre" ya existe en la base de datos (Error 1564)
1147 | La tabla de destino ya se usa en una relación. (Error 1147)
2046 | La tabla de FoxTask está dañada o su versión es incorrecta. (Error 2046)
1556 | La tabla no se puede examinar porque el objeto Cursor ya no es válido (Error 1556)
26 | La tabla no tiene ningún orden de índice establecido (Error 26)
1659 | La tabla tiene campos memo que no se pueden convertir mientras esté abierta para sólo lectura (Error 1659)
1134 | La variable debe estar en la tabla seleccionada. (Error 1134)
332 | La ventana especificada en DEFINE WINDOW tiene coordenadas no válidas (Error 332)
215 | La ventana no se ha activado mediante ACTIVATE WINDOW (Error 214)
214 | La ventana no se ha definido mediante DEFINE WINDOW (Error 214)
1751 | La versión del archivo de clase es posterior a la versión actual (Error 1751)
1946 | La versión del archivo de proyecto "nombre" es incorrecta (Error 1946)
1338 | La versión del archivo es incorrecta (Error 1338)
2015 | La vista sin conexión debe utilizarse en línea para este comando (Error 2015)
1696 | Las cláusulas NOWAIT | SAVE | NOENVIRONMENT | IN | WINDOW no se permiten con la cláusula FROM (Error 1696)
1959 | Las coordenadas no son válidas (Error 1959)
230 | Las dimensiones de la matriz no son válidas (Error 230)
227 | Las dimensiones del cuadro no son válidas (Error 227)
1851 | Las instrucciones SELECT no son compatibles con UNION "Detalles" (Error 1851)
2140 | Las propiedades Unicode y la IsBinary no pueden estar establecidas como .T.. (Error 2140)
228 | Las tabulaciones deben estar en orden ascendente (Error 228)
1597 | Las vistas requieren DB_BUFOPTROW o DB_BUFOPTTABLE (Error 1597)
2010 | Las vistas sin conexión se deben abrir en modo exclusivo cuando se usan en línea (Error 2010)
58 | LOG( ): se ha usado cero o un valor negativo como argumento (Error 58)
1706 | Los archivos .IDX no se pueden ordenar en sentido descendente (Error 1706)
1984 | Los campos de la tabla "nombre" no coinciden con las entradas de la base de datos (Error 1984)
1542 | Los campos de la tabla base han cambiado y ya no coinciden con campos de la vista. No se pueden establecer las propiedades de los campos de la vista (Error 1542)
1568 | Los campos de la vista han cambiado. Las propiedades de campo Update y Key se han restablecido a sus valores predeterminados (Error 1568)
1598 | Los códigos de regla y de desencadenante deben equilibrar el uso de la transacción (Error 1598)
1611 | Los elementos y títulos de menú deben ser de tipo Carácter (Error 1611)
120 | Los límites de dimensión del archivo .SYLK no son válidos. (Error 120)
2125 | Los objetos CursorAdapter y XMLTable no pertenecen a la misma sesión de datos. (Error 2125)
1983 | Los objetos "nombre" no pueden devolver un valor (Error 1983)
1942 | Los objetos no pueden asignarse a matrices (Error 1942)

M

1600 | Memoria insuficiente para abrir una tabla con el comando USE (Error 1600)
1149 | Memoria insuficiente para el búfer. (Error 1149)
1151 | Memoria insuficiente para el nombre de archivo. (Error 1151)
1150 | Memoria insuficiente para la asignación de archivos. (Error 1150)
*** | Menú emergente demasiado grande; se muestran las primeras nExpr entradas

N

9 | No coinciden los tipos de datos (Error 9)
1794 | No es posible enumerar "nombre" (Error 1794)
1594 | No es posible un bloqueo de archivo en una transacción después de bloquear los registros primarios (Error 1594)
256 | No es una base de datos u hoja de cálculo válida de Framework II (Error 256)
255 | No es una base de datos válida de RapidFile (Error 255)
1439 | No es una clase ProjectHook (Error 1439)
45 | No es una expresión de tipo Carácter (Error 45)
27 | No es una expresión de tipo Numérico (Error 27)
15 | No es una tabla (Error 15)
1682 | No es una ventana definida por el usuario (Error 1682)
1596 | No está activado el almacenamiento de tablas en búfer (Error 1596)
2023 | No existe ninguna aplicación asociada a la extensión del nombre de archivo indicado (Error 2023)
1488 | No existe ninguna conexión asociada a este cursor (Error 1488)
138 | No hay campos para copiar (Error 138)
47 | No hay campos para procesar (Error 47)
1604 | No hay definido ningún elemento de menú (Error 1604)
1605 | No hay definido ningún menú (Error 1605)
1649 | No hay ningún comando PRINTJOB previo asociado a este comando (Error 1649)
166 | No hay ningún elemento definido para este menú (Error 166)
1621 | No hay ningún título definido para este menú (Error 1621)
1878 | No hay ningún valor predeterminado para DROP (Error 1878)
1520 | No hay ninguna base de datos abierta o establecida como activa (Error 1520)
1879 | No hay ninguna clave principal (Error 1879)
1877 | No hay ninguna regla para DROP (Error 1877)
52 | No hay ninguna tabla abierta en el área de trabajo actual (Error 52)
56 | No hay suficiente espacio en disco para "nombre" (Error 56)
43 | No hay suficiente memoria para completar esta operación (Error 43)
1772 | No puede cambiar el RecordSource de un objeto BROWSE (Error 1772)
1777 | No se admite este comando para vistas (Error 1776)
91 | No se cargó el archivo en memoria con el comando LOAD (Error 91)
2022 | No se encontró el archivo o la ruta especificada (Error 2022)
13 | No se encuentra el alias (Error 13)
1707 | No se encuentra el archivo .CDX estructural (Error 1707)
1993 | No se encuentra el archivo de biblioteca de clases "nombre" (Error 1993)
2020 | No se encuentra el archivo de clase asociado a este campo; se ha borrado la asociación de clase (Error 2020)
1994 | No se encuentra el archivo de inclusión "nombre" (Error 1994)
1937 | No se encuentra el archivo de procedimiento "nombre" (Error 1937)
*** | No se encuentra el código fuente
1644 | No se encuentra el controlador de impresora (Error 1644)
1963 | No se encuentra el directorio (Error 1963)
1766 | No se encuentra el objeto "nombre" (Error 1766)
1923 | No se encuentra el objeto "nombre" (Error 1923)
1162 | No se encuentra el procedimiento "nombre". (Error 1162)
1642 | No se encuentra el recurso de conjunto de colores (Error 1642)
1715 | No se encuentra el servidor "servidor" (Error 1715)
1726 | No se encuentra la biblioteca API (Error 1726)
1444 | No se encuentra la biblioteca de tipos "nombre". (Error 1444)
1527 | No se encuentra la biblioteca ODBC, ODBC32.DLL. (Error 1527)
1762 | No se encuentra la clase "nombre" (Error 1762)
1716 | No se encuentra la cola "cola" (Error 1716)
1733 | No se encuentra la definición de clase "nombre" (Error 1733)
1683 | No se encuentra la etiqueta de índice (Error 1683)
1882 | No se encuentra la etiqueta relacionada, o no es principal ni candidata (Error 1882)
1130 | No se encuentra la frase "campo". (Error 1130)
1775 | No se encuentra la hoja de cálculo "nombre" (Error 1775)
1238 | No se encuentra la instrucción PARAMETER. (Error 1238)
1443 | No se encuentra la interfaz "nombre" (Error 1443)
1734 | No se encuentra la propiedad "nombre" (Error 1734)
1559 | No se encuentra la propiedad (Error 1559)
1915 | No se encuentra la secuencia de ordenación "nombre" (Error 1915)
2042 | No se encuentra la tabla de Foxcode. Puede que la versión no sea correcta o que no sea compatible. (Error 2042)
1880 | No se encuentra la tabla relacionada en la base de datos activa (Error 1880)
12 | No se encuentra la variable "variable". (Error 12)
*** | No se encuentra la versión deseada de Visual FoxPro.
1796 | No se encuentra ningún registro para la plataforma actual (Error 1796)
1774 | No se encuentra ninguna hoja (Error 1774)
1964 | No se encuentra ninguna PageFrame o Page en el FormSet o el formulario cuya propiedad WindowType se ha establecido como READ o READ MODAL (Error 1964)
1178 | No se ha cerrado el archivo de aplicación "archivo". (Error 1178)
1975 | No se ha creado ninguna instancia para el objeto miembro "nombre" (Error 1975)
1612 | No se ha definido dicho menú o elemento de menú (Error 1612)
1714 | No se ha definido la ventana "nombre" (Error 1714)
*** | No se ha instalado correctamente el producto.
2075 | No se ha especificado la propiedad CursorSchema. (Error 2075)
1492 | No se han especificado columnas clave para la tabla de actualización "nombre". Use la propiedad KeyFieldList del objeto Cursor (Error 1492)
1491 | No se han especificado tablas de actualización. Use la propiedad Tables del objeto Cursor (Error 1491)
1490 | No se permite guardar un formulario convertido como una clase (Error 1490)
1699 | No se permite la cláusula IN para esta ventana (Error 1699)
1681 | No se permite la cláusula PREVIEW con OFF/NOCONSOLE o TO PRINT/FILE (Error 1681)
1501 | No se permite la conversión de tipo para los parámetros de resultados (Error 1501)
1793 | No se permite la solicitud de red (Error 1793)
2016 | No se permite quitar un miembro de clase (Error 2016)
2060 | No se permite una instrucción RETURN/RETRY en TRY/CATCH. (Error 2060)
2147 | No se permite utilizar OpenTables o CloseTables mientras se esté ejecutando cualquiera de estos métodos. (Error 2147)
1651 | No se permite usar CANCEL o SUSPEND (Error 1651)
1097 | No se permiten funciones definidas por el usuario. (Error 1097)
1168 | No se pudo agregar el icono al archivo ejecutable. (Error 1168)
1181 | No se pudo agregar el recurso de versión al archivo ejecutable. (Error 1181)
2013 | No se puede abrir directamente el búfer de tablas persistentes (Error 2013)
*** | No se puede abrir el archivo de configuración.
101 | No se puede abrir el archivo "archivo". (Error 101)
2121 | No se puede abrir la vista fuera de línea en modo ADMIN/ONLINE dentro de la transacción. (Error 2121)
1421 | No se puede activar el servidor OLE (Error 1421)
2082 | No se puede actualizar ADODB.Recordset hasta que el cursor, creado mediante el método CursorAdapter.CursorFill ,no se asocie a un objeto CursorAdapter.
2085 | No se puede actualizar ADODB.Recordset porque el cursor FOX no tiene una columna ADOBookmark (Error 2085)
2083 | No se puede actualizar ADODB.Recordset porque es de sólo lectura (Error 2083)
2084 | No se puede actualizar ADODB.Recordset porque no admite la propiedad Bookmark (Error 2084)
1157 | No se puede actualizar el archivo "archivo". (Error 1157)
111 | No se puede actualizar el objeto Cursor "cursor", ya que es de sólo lectura. (Error 111)
1909 | No se puede actualizar el proyecto desde el metarchivo del proyecto (Error 1909)
1741 | No se puede agregar "nombre". La definición de clase es cíclica (Error 1741)
1537 | No se puede agregar esta tabla: pertenece a la base de datos "nombre" (Error 1537)
1768 | No se puede agregar este objeto a un control cuadrícula (Error 1768)
1769 | No se puede agregar este objeto a un objeto Column (Error 1769)
1755 | No se puede agregar un objeto a esta clase (Error 1755)
1846 | No se puede agrupar (GROUP) por campo agregado (Error 1846)
1672 | No se puede anexar desde archivos protegidos por contraseña (Error 1672)
1337 | No se puede anidar el comando PRINTJOB (Error 1337)
*** | No se puede asignar el mapa de pantalla
1974 | No se puede asignar matrices a elementos de matriz (Error 1974)
2101 | No se puede asociar un objeto con la propiedad XMLName vacía. (Error 2101)
1952 | No se puede basar una vista en sí misma (Error 1952)
1503 | No se puede bloquear el archivo (Error 1503)
1951 | No se puede borrar el objeto "objeto" porque está en uso (Error 1951)
177 | No se puede borrar un menú emergente que está en uso (Error 177)
176 | No se puede borrar un menú que está en uso (Error 176)
1770 | No se puede borrar la clase "clase" porque está en uso (Error 1770)
1573 | No se puede cambiar el modo de un formulario visible (Error 1573)
1153 | No se puede cambiar el nombre del archivo en otro dispositivo. (Error 1153)
1253 | No se puede cambiar el nombre del directorio actual (Error 1253)
1758 | No se puede cambiar la propiedad "nombre" en el método SetAll (Error 1758)
2103 | No se puede cambiar la propiedad XMLName mientras el objeto XMLField pertenezca al objeto XMLTable. (Error 2103)
2102 | No se puede cambiar la propiedad XMLName mientras el objeto XMLTable pertenezca al objeto XMLAdapter. (Error 2102)
1753 | No se puede cargar la DLL de 32 bits "nombre" (Error 1753)
1932 | No se puede cerrar "nombre" mientras está suspendido (Error 1932)
1184 | No se puede cerrar el archivo debido a que existen referencias pendientes. (Error 1184)
1535 | No se puede cerrar esta base de datos porque la está usando un proyecto (Error 1535)
1546 | No se puede cerrar la tabla durante la ejecución de una expresión vinculada a la tabla (Error 1546)
2122 | No se puede cerrar la vista fuera de línea en modo ADMIN/ONLINE dentro de la transacción. (Error 2122)
2079 | No se puede cerrar o quitar el cursor asociado porque está actualmente en modo de diseño. (Error 2079)
1971 | No se puede compilar hasta que se haya completado el comando COMPILE actual (Error 1971)
102 | No se puede crear el archivo "archivo". (Error 102)
1102 | No se puede crear el archivo "archivo". (Error 1102)
*** | No se puede crear el área de trabajo del programa.
2019 | No se puede crear la vista sin conexión en una vista modificada actualmente (Error 2019)
1441 | No se puede crear ninguna instancia para la clase porque el miembro "nombre" no existe. (Error 1441)
2002 | No se puede crear una DLL sin clases públicas de OLE (Error 2002)
1442 | No se puede crear una instancia de la clase porque el miembro "nombre" contiene un número de parámetros incorrecto. (Error 1442)
2120 | No se puede deducir el esquema XML. (Error 2120)
169 | No se puede definir el elemento de menú (Error 169)
1307 | No se puede dividir entre 0 (Error 1307)
1593 | No se puede ejecutar el comando dentro de una transacción (Error 1593)
1566 | No se puede ejecutar el comando PACK en una base de datos mientras sus objetos tienen cursores abiertos (Error 1566)
1592 | No se puede ejecutar el comando ROLLBACK sin el correspondiente comando BEGIN TRANSACTION (Error 1592)
1720 | No se puede ejecutar el comando SET FORMAT mientras hay un comando READ en curso en un archivo de formato (Error 1720)
1579 | No se puede ejecutar este comando en una tabla cuyos objetos Cursor estén en modo de almacenamiento de tablas en búfer (Error 1579)
1588 | No se puede ejecutar INSERT cuando está activado el almacenamiento en búfer de filas o tablas, o cuando hay limitaciones de integridad vigentes (Error 1588)
1591 | No se puede ejecutar un comando END TRANSACTION sin el correspondiente comando BEGIN TRANSACTION (Error 1591)
2030 | No se puede eliminar el archivo "nombre" (Error 2030)
1572 | No se puede eliminar un objeto de base de datos mientras está abierto en un diseñador (Error 1572)
2133 | No se puede emitir XML, dos o más cursores utilizan páginas de códigos distintas. (Error 2133)
2006 | No se puede encontrar el explorador de Web (Error 2006)
1562 | No se puede encontrar el objeto "nombre" en la base de datos (Error 1562)
*** | No se puede encontrar el programa Asistente.
1798 | No se puede encontrar el programa convertidor (Error 1798)
1693 | No se puede encontrar el programa de generación de menús (Error 1693)
1791 | No se puede encontrar el programa de generación de texto (Error 1791)
*** | No se puede encontrar el programa de presentación.
*** | No se puede encontrar el programa de revisión ortográfica.
*** | No se puede encontrar el programa de revisión ortográfica.
1944 | No se puede encontrar el programa generador (Error 1944)
1754 | No se puede encontrar el punto de entrada "nombre" en la DLL (Error 1754)
1412 | No se puede encontrar la variable de entorno COMSPEC (Error 1412)
1563 | No se puede encontrar la vista "nombre" en la base de datos activa (Error 1563)
1502 | No se puede escribir en el registro porque está en uso (Error 1502)
2045 | No se puede establecer la propiedad DBCEventFile cuando DBCEvents está desactivado (Error 2045)
2123 | No se puede establecer la ubicación externa del esquema cuando se utiliza un esquema en línea. (Error 2123)
1689 | No se puede generar sin un programa principal (Error 1689)
1717 | No se puede generar un controlador de impresora (Error 1717)
1191 | No se puede guardar el formulario: no es válido el nombre de un objeto. (Error 1191)
1671 | No se puede importar desde archivos protegidos por contraseña (Error 1671)
1547 | No se puede insertar una fila vacía desde una vista en su tabla o tablas base (Error 1547)
170 | No se puede liberar el elemento de menú (Error 170)
2012 | No se puede llamar a SetFocus desde un evento When, Valid, RangeHigh o RangeLow (Error 2012)
2107 | No se puede llamar a XMLAdapter.ToXML mientras que haya un documento XML cargado. (Error 2107)
1731 | No se puede modificar una clase base (Error 1731)
1948 | No se puede modificar una clase que está en uso (Error 1948)
1979 | No se puede modificar visualmente una clase basada en una clase no visual (Error 1979)
1978 | No se puede modificar visualmente una clase de este tipo (Error 1978)
1795 | No se puede organizar un formulario no transportado (Error 1795)
*** | No se puede procesar el error.
1437 | No se puede registrar el control ActiveX (Error 1437)
1976 | No se puede resolver el vínculo primario (Error 1976)
62 | No se puede tener acceso a caracteres después del final de la cadena (Error 62)
1152 | No se puede tener acceso a la tabla seleccionada. (Error 1152)
1106 | No se puede tener acceso al archivo "archivo"; hay una transacción en curso. (Error 1106)
292 | No se puede usar 0 o un valor negativo como argumento para LOG10( ) (Error 292)
1970 | No se puede volver a abrir el archivo de proyecto "nombre" (Error 1970)
1930 | No se puede volver a definir "nombre" (Error 1930)
175 | No se puede volver a definir un menú emergente que está en uso (Error 175)
174 | No se puede volver a definir un menú que está en uso (Error 174)
2017 | No se puede volver a utilizar la vista sin conexión en otro modo diferente (Error 2017)
1987 | No se pueden agregar objetos por medio de programación al FormSet del Diseñador de formularios (Error 1987)
1926 | No se pueden anidar definiciones de clases (Error 1926)
1254 | No se pueden anidar etiquetas de clave. (Error 1254)
1844 | No se pueden anidar funciones agregadas (Error 1844)
1410 | No se pueden crear archivos de trabajo temporales (Error 1410)
1871 | No se pueden eliminar (DROP) todas las columnas existentes (Error 1871)
1989 | No se pueden eliminar objetos por medio de programación desde el Diseñador de formularios (Error 1989)
1531 | No se pueden realizar los cambios a la tabla porque la expresión de índice o de filtro para el índice "nombre" no sería válida (Error 1531)
1489 | No se pueden usar campos generales en la condición WHERE de una instrucción de actualización. Cambie la propiedad WhereType de la vista (Error 1489)
2069 | No se pueden utilizar formularios o clases Form que especifiquen una DEClass y DEClassLibrary en un conjunto de formularios. (Error 2069)
16 | No se reconoce el verbo de comando (Error 16)

O

1936 | Objeto Application no inicializado (Error 1936)
2031 | Operación de interfaz de usuario no permitida en este momento (Error 2031)
34 | Operación no válida para campos de tipo Memo, General o Imagen (Error 34)
109 | Otra persona está usando el registro. (Error 109)
108 | Otro usuario está utilizando el archivo. (Error 108)
1709 | Otro usuario está utilizando el objeto de base de datos (Error 1709)

P

1637 | Para convertir un archivo memo debe abrirlo en modo exclusivo (Error 1637)
1977 | Para poder actualizar este archivo, debe abrirlo en modo exclusivo. Vuelva a abrirlo (Error 1977)
1916 | Para usar esta característica, incluya CODEPAGE=AUTO en el archivo CONFIG.FPW y reinicie Visual FoxPro (Error 1916)
1202 | Programa demasiado grande. (Error 1202)

Q

1986 | Queda poca memoria GDI; cierre una o más ventanas e inténtelo de nuevo (Error 1986)
2000 | Queda poca memoria, por lo que se ha deshabilitado la actualización de resultados (Error 2000)

R

1960 | Redefinición no válida de la variable "nombre" (Error 1960)
44 | Relación cíclica (Error 44)
*** | Requiere una expresión lógica.
1141 | Revisión no reconocida del archivo de índice. Vuelva a crear el índice. (Error 1141)
1405 | RUN |! error del comando "Detalles" (Error 1405)
1411 | RUN |! La cadena del comando RUN|! es demasiado larga (Error 1411)

S

2014 | Se borrarán los campos marcados como claves de actualización (Error 2014)
1792 | Se canceló la generación de texto (Error 1792)
2100 | Se debe utilizar el valor de XMLField.XMLName como valor clave para la colección. (Error 2100)
2099 | Se debe utilizar el valor de XMLTable.XMLName como valor clave para la colección. (Error 2099)
1477 | Se ejecutó una llamada no válida mientras se ejecutaba una secuencia SQLCOLUMNS( ) (Error 1477)
1474 | Se ejecutó una llamada no válida mientras se ejecutaba una secuencia SQLEXEC( ) (Error 1474)
1475 | Se ejecutó una llamada no válida mientras se ejecutaba una secuencia SQLMORERESULTS( ) (Error 1475)
1476 | Se ejecutó una llamada no válida mientras se ejecutaba una secuencia SQLTABLES( ) (Error 1476)
1783 | Se especificó una clase no válida para el comando @...Class (Error 1783)
1538 | Se está ejecutando un procedimiento almacenado (Error 1538)
103 | Se excedió el nivel permitido de anidamiento de DO. (Error 103)
1164 | Se ha cambiado la estructura de examinar. (Error 1164)
1799 | Se ha cancelado la conversión (Error 1799)
1163 | Se ha cerrado la tabla examinada. (Error 1163)
4 | Se ha encontrado el final del archivo (Error 4)
38 | Se ha encontrado el principio del archivo (Error 38)
1431 | Se ha excedido el número máximo de argumentos OLE (Error 1431)
1607 | Se ha excedido el número máximo de elementos de menú permitidos (128) (Error 1607)
1608 | Se ha excedido el número máximo de menús permitidos (25) (Error 1608)
1609 | Se ha excedido la longitud máxima de los elementos de menú (50) (Error 1609)
1870 | Se ha interrumpido la operación ALTER TABLE (Error 1870)
1945 | Se ha liberado el objeto actual (Error 1945)
1098 | Se ha llamado a la función _UserError( ) de la API. (Error 1098)
2004 | Se ha movido el archivo de tabla "nombre". Valide la base de datos "nombre" y vuelva a intentarlo (Error 2004)
231 | Se ha usado un argumento no válido con la función SET (Error 231)
1577 | Se hace referencia a la tabla "nombre" en una relación (Error 1577)
1694 | Se han especificado demasiadas extensiones (Error 1694)
1875 | Se han producido múltiples advertencias al realizar las modificaciones de índice solicitadas (Error 1875)
1201 | Se han usado demasiados nombres. (Error 1201)
1582 | Se infringe la regla de validación del campo "nombre" (Error 1582)
1884 | Se infringe la unicidad del índice "nombre" (Error 1884)
1472 | Se necesita el parámetro de la instrucción SQL para las llamadas SQLEXEC( ) no preparadas (Error 1472)
1756 | Se quitó el objeto miembro; no se puede completar la operación de guardar (Error 1756)
1148 | Se volvió a escribir la expresión mientras se ejecutaba el filtro. (Error 1148)
2139 | SelectCmd está vacío. (Error 2139)
1723 | Sobran o faltan #IF/#ELSIF/#ELSE/#ENDIF (Error 1723)
1256 | Sobran o faltan llaves en la etiqueta de clave (Error 1256)
1885 | Sólo pueden definirse como candidatas las etiquetas estructurales (Error 1885)
1297 | Sólo se permite el comando en modo interactivo1297)
1819 | SQL: DISTINCT no es válida (Error 1819)
1842 | SQL: el anidamiento en la subconsulta es demasiado profundo (Error 1842)
1801 | SQL: error al correlacionar campos (Error 1801)
1831 | SQL: error al generar el índice temporal (Error 1831)
1800 | SQL: error interno (Error 1800)
1828 | SQL: GROUP BY no es válido en la subconsulta (Error 1828)
1834 | SQL: hay demasiadas cláusulas UNION (Error 1834)
1841 | SQL: hay demasiadas referencias a columnas (Error 1841)
1805 | SQL: hay demasiadas subconsultas (Error 1805)
1864 | SQL: hay demasiados campos en UPDATE (Error 1864)
1811 | SQL: hay un agregado en una expresión no numérica (Error 1811)
1822 | SQL: hay un campo agregado no válido (Error 1822)
1807 | SQL: la cláusula GROUP BY no es válida (Error 1807)
1803 | SQL: la cláusula HAVING no es válida (Error 1803)
1808 | SQL: la cláusula ORDER BY no es válida (Error 1808)
1833 | SQL: la cláusula WHERE no es válida (Error 1833)
1866 | SQL: la especificación TOP no es válida (Error 1866)
1865 | SQL: la expresión SET no es válida en UPDATE (Error 1865)
1812 | SQL: la instrucción es demasiado larga (Error 1812)
1804 | SQL: la instrucción no es válida (Error 1804)
1839 | SQL: la operación se canceló (Error 1839)
1825 | SQL: la subconsulta no es válida (Error 1825)
1809 | SQL: memoria insuficiente (Error 1809)
1814 | SQL: no se aceptan consultas de este tipo (Error 1814)
1830 | SQL: no se encuentra el índice (Error 1830)
1806 | SQL: no se encuentra la columna "campo | variable" (Error 1806)
1890 | SQL: no se puede determinar el tipo de datos de la columna SQL."columna" (Error 1890)
1802 | SQL: no se puede encontrar la tabla (Error 1802)
1802 | SQL: no se puede encontrar la tabla (Error 1802)
1818 | SQL: se necesita la cláusula FROM (Error 1818)
1820 | SQL: SELECT contiene el carácter * no válido (Error 1820)
1826 | SQL: SELECT no es válido (Error 1826)
1867 | SQL: TOP requiere un ORDER BY (Error 1867)
1810 | SQL: uso de subconsulta no válido (Error 1810)
1813 | SQL: uso no válido de UNION en la subconsulta (Error 1813)
1236 | Suspenda el programa antes de usar RESUME. (Error 1236)

T

104 | Tecla de función desconocida. (Error 104)
2058 | TRY/CATCH/FINALLY/ENDTRY no coinciden o hay un error. (Error 2058)

U

2035 | Un valor Date/DateTime contiene caracteres no válidos (Error 2035)
2028 | Una llamada a API ha producido una excepción (Error 2028)
2027 | Una llamada Declare a DLL ha producido una excepción (Error 2027)
1889 | Una tabla que participa en múltiples relaciones sólo puede tener un orden secundario (Error 1889)
1965 | Uno de los miembros de esta clase está basado en una clase no visual. No se puede escribir en el archivo .VCX (Error 1965)
1968 | Uno de los miembros de este formulario o FormSet está basado en una clase no visual. No se puede escribir en un archivo .SCX (Error 1968)
1652 | Uso no válido de una función de Visual FoxPro como una matriz (Error 1652)

V

2034 | Valor Date/DateTime evaluado como un valor no válido (Error 2034)
2048 | Valor de COMATTRIB no válido para "nombre" (Error 2048)
2137 | Vfp.VFPXMLProgId no admite el parámetro cSchemaLocation para XMLUpdateGram(). (Error 2137)

W

X - Z

2118 | XMLAdapter: fractionDigits no debe ser mayor o igual que maxLength. (Error 2118)
2127 | XMLAdapter.XMLName está vacío. (Error 2127)
2108 | XMLTable.Alias está vacío. (Error 2108)
2109 | XMLTable tiene una tabla secundaria. (Error 2109)
1529 | Ya existe el archivo "nombre" como parte de una base de datos (Error 1529)
1183 | Ya existe esa relación. (Error 1183)
1771 | Ya existe un objeto miembro con este nombre (Error 1771)
1961 | Ya existe un subdirectorio o archivo "nombre" (Error 1961)

Vea también

Mensajes de error ordenados por número | Parámetros de los mensajes de error


"cursor" debe crearse mediante SELECT ... INTO TABLE (Error 1815)

Ha intentado utilizar un cursor reempaquetado como origen para otra instrucción SELECT.

  • Algunos cursores no se pueden utilizar en consultas sucesivas.

    Utilice en su lugar la cláusula INTO TABLE de la instrucción SELECT - SQL.


"campo | variable" no es único y se debe calificar (Error 1832)

Ha hecho referencia a un campo que existe en más de una tabla.

Por ejemplo, si utiliza la base de datos TESTDATA y ejecuta el siguiente comando, ocurre el mismo error porque el campo cust_id existe tanto en la tabla customer como en la tabla orders:

SELECT cust_id FROM customer,orders
  • Para solucionar la falta de exclusividad de los nombres de campo, ejecute el siguiente comando:
    SELECT customer.cust_id FROM customer,orders

    Para más información, vea SELECT - SQL.


"campo" no tiene relación con el área de trabajo actual (Error 1165)

Ha ejecutado un comando que requiere una relación para existir.

Por ejemplo, ejecutar SET SKIP TO antes de que se establezca la relación generará este error.

  • Ejecute SET RELATION antes de ejecutar el comando que ocasionó el error.


No se encuentra la frase 'campo' (Error 1130)

No se encuentra el campo especificado en PROMPT field.

  • Está utilizando un comando con una claúsula PROMPT que hace referencia a un campo desconocido.


"archivo" no es un archivo .EXE de Visual FoxPro (Error 1196)

El archivo .EXE especificado no se creó con Visual FoxPro.

  • Use RUN | ! para ejecutar archivos ejecutables externos.


"archivo" no es un archivo de objeto (Error 1309)

Se ha intentado cargar un programa compilado de Visual FoxPro que no tiene un encabezado correcto.

  • Compruebe el nombre del archivo que está intentando ejecutar con DO.


La banda "nombre" es demasiado grande y no cabe en la página (Error 1298)

Ha intentado utilizar una banda de informe que es demasiado grande para una página.

  • Vuelva a diseñar el formulario de informe e intente esta operación de nuevo.

    Para obtener más información, vea Diseñador de informes.


"nombre" sólo puede usarse en un método (Error 1929)

Se utilizó uno de los siguientes comandos fuera de un método: THIS, THISFORM o THISFORMSET.

  • Utilizó la instrucción dentro de un procedimiento, pero sólo se puede utilizar dentro de un método.

    Mueva el comando THIS, THISFORM o THISFORMSET al método adecuado.


No se puede cerrar "nombre" mientras está suspendido (Error 1932)

Ejecute RESUME o CANCEL para el procedimiento almacenado antes de volver a intentar esta operación.


No es posible enumerar "nombre" (Error 1794)

El comando FOR EACH sólo se puede usar para enumerar una matriz de Visual FoxPro, una matriz OLE, una colección de Visual FoxPro o una colección OLE.


Error interno de coherencia "nombre" (Error 1462)

Error interno del producto. Visual FoxPro cierra todos los archivos abiertos y sale.

  • Visual FoxPro no puede reconciliar dos estados internos opuestos en el producto.

    Registre todas sus acciones recientes mientras utilizaba Visual FoxPro y llame al Soporte técnico de Microsoft.


"nombre" es un método, evento u objeto (Error 1737)

Nombre no puede almacenar un valor porque no es una propiedad.

  • Sólo las propiedades pueden almacenar valores.

    Compruebe los nombres de las propiedades para el objeto con el que está trabajando (vea el tema de Ayuda correspondiente) y, a continuación, utilice una de las propiedades existentes o defina una propia en el cuadro de diálogo Nueva propiedad.


"nombre" es una propiedad de sólo lectura (Error 1740)

Las propiedades de sólo lectura no pueden almacenar valores.

  • Solo las propiedades modificables pueden almacenar valores.

    Compruebe los nombres de propiedad y los atributos del objeto con el que esté trabajando (vea el tema de Ayuda correspondiente), y a continuación, utilice una de las propiedades modificables existentes o defina una propia en el cuadro de diálogo Nueva propiedad.


"nombre" no es una variable de archivo (Error 226)

Se ha utilizado una variable de memoria o de matriz en lugar de una variable de archivo (campo). Para más información, vea Campos o Trabajar con campos y registros


"nombre" no es una función, procedimiento o programa (Error 1992)

Un método Access debe devolver una referencia de objeto.


"nombre" no es un archivo de recursos válido (Error 1294)

El archivo de recurso está dañado. De forma predeterminada, un archivo de recursos es FOXUSER (Foxuser.dbf y Foxuser.fpt).

  • Foxuser.dbf, Foxuser.fpt o uno de los archivos de recursos predeterminados esta dañado.

    Restaure los archivos de recurso a partir de una copia de seguridad o salga de Visual FoxPro, elimine los archivos de recurso y, a continuación, reinicie Visual FoxPro.

    Para comprobar el archivo de recursos predeterminado, vea la ficha Archivos del cuadro de diálogo Opciones o utilice el comando SET RESOURCE.


"nombre" no es una variable (Error 225)

Se ha utilizado una variable de archivo (campo) en lugar de una variable de memoria o de matriz. Para más información, vea Variables Matrices o Transferencia de datos y matrices


"nombre" no es un evento de Visual FoxPro (Error 1745)

Un evento especificado en el comando SET EVENTLIST no es un evento de Visual FoxPro.


"nombre" no es una matriz (Error 232)

Se utilizó una variable o una variable de archivo (campo de tabla) donde se necesitaba una matriz. Para obtener más información, vea Variables Campos o Trabajar con campos y registros


"nombre" no es un objeto (Error 1924)

Este nombre se definió anteriormente como algo que no era un objeto.

  • Nombre aparece otra vez.

    Compruebe en su código las presencias duplicadas de nombre.


Los objetos "nombre" no pueden devolver un valor (Error 1983)

El objeto raíz del formulario almacena el valor devuelto desde su evento Unload con la cláusula TO del comando DO FORM.

  • Sólo los objetos Form y FormSet pueden devolver valores.

    Asegúrese de que el objeto raíz sea un formulario o un conjunto de formularios.


"Error de OLE" (Error 1429)

El servidor de automatización está transmitiendo un error a Visual FoxPro.

  • Este texto de error se pasó a Visual FoxPro desde el servidor de automatización.


Error en el dominio de ** o ^ (Error 78)

Los números negativos sólo se pueden elevar a valores enteros.

  • El operador exponenciación no puede aceptar valores fraccionales para números negativos.

    Use un exponente entero.


*fecha incorrecta*

La expresión de fecha utilizada no es válida.


*Interrumpido*

La ejecución del programa se ha detenido de forma temporal.

  • Presionó la tecla ESC.

    Elija Cancelar, Suspender u Omitir en el cuadro de diálogo de error.


Error interno de coherencia DBC (Error 1550)

Se produjo un error interno en la base de datos.

  • La base de datos está dañada.

    Intente el comando VALIDATE DATABASE para diagnosticar o reparar el problema.

  • El índice del contenedor de base de datos (.dcx) está dañado o no está sincronizado con el archivo contenedor de la base de datos (.dbc), normalmente como resultado de un cierre anormal del sistema.

    Vuelva a generar el índice cerrando la base de datos, eliminando el archivo de índice dbc_nombre.DCX y volviendo a abrir la base de datos.

    Si el problema no se corrige, registre sus acciones recientes mientras utilizaba Visual FoxPro y, a continuación, llame al Soporte técnico de Microsoft.


El encabezado del archivo .DIF no es válido (Error 115)

El encabezado del archivo .dif no es correcto.


El indicador de tipo .DIF no es válido (Error 117)

El archivo .dif que intenta importar tiene un indicador de tipo de datos no válido.


El vector .DIF no es válido; incoherencia de campos .DBF (Error 116)

El archivo .dif que intenta importar tiene un conflicto interno entre el encabezado y los datos.


Los límites de dimensión del archivo .SYLK no son válidos (Error 120)

El archivo que intenta importar indica filas o columnas no válidas.


El formato del archivo .SYLK no es válido (Error 121)

El archivo que intenta importar no tiene un formato de archivo SYLK válido.


El encabezado del archivo .SYLK no es válido (Error 119)

El archivo que intenta importar no tiene un encabezado de archivo SYLK correcto.


Es necesario un archivo de Ayuda estilo .DBF (Error 1727)

SET HELPFILTER sólo funciona con archivos de ayuda de tipo .DBF.


Una Clave no puede especificarse al agregar un dato a esta colección. (Error 2064)

No puede especificar una clave cuando agrega un nuevo dato a la colección en los cuales los demás datos no tienen clave. Todos los elementos de la colección tienen clave o ninguno. Para determinar si una colección requiere claves, use GetKey(1) y la función EMPTY( ) como sigue:

? EMPTY(Collection.GetKey(1))


Se debe especificar una clave al agregar un elemento a esta colección. (Error 2063)

Debe especificar una clave al añadir un nuevo elemento a la colección en la cual todos los elementos tienen claves. Todos los elementos de la colección tienen clave o ninguno. Para determinar si una colección requiere claves, use GetKey(1) y la función EMPTY( ) como sigue:

? EMPTY(Collection.GetKey(1))


Ya existe un objeto miembro con este nombre (Error 1771)

Intentó agregar un objeto miembro a un contenedor que ya tenía un miembro con el mismo nombre.

  • Los objetos miembros deben tener nombres únicos dentro de un contenedor dado.

    Revise los nombres de miembro.


Infracción de uso compartido. (Error 2024)

Otra aplicación está utilizando el archivo que ha intentado colocar en una operación de arrastrar y soltar de OLE.


Se está ejecutando un procedimiento almacenado (Error 1538)

Ha intentado volver a compilar o descargar procedimientos almacenados (por ejemplo, MODIFY PROCEDURE o CLOSE DATABASES) mientras se estaba ejecutando un procedimiento almacenado. Esta operación no es válida.


Ya existe un subdirectorio o archivo "nombre" (Error 1961)

Ha elegido un nombre que ya existe.


Una tabla que participa en múltiples relaciones sólo puede tener un orden secundario (Error 1889)

Ha especificado más de un orden secundario para una tabla que participa en varias relaciones. Esta operación no está permitida.


Denegado el acceso al Registro del sistema (Error 1640)

No tiene acceso al Registro del sistema y no puede realizar operaciones como la creación de servidores COM. Compruebe que ha iniciado la sesión y que sus derechos de acceso son correctos.


ADODB.Command ya está abierto. (Error 2081)

Visual FoxPro requiere que un objeto ADO Command, State, sea igual a adStateClosed, cuando intenta pasar un objeto ADO Command a los métodos CursorFill en el parámetro Source.

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


ADODB.Recordset ya está abierto. (Error 2080)

Visual FoxPro requiere que un ADO Recordset esté cerrado cuando comienza a ser añadido a un objeto CursorAdapter. Esto es debido a que el método CursorFill intenta abrir el ADO Recordset cuando este comienza a ser añadido. Para utilizar un ADO Recordset que ya está abierto, hay que pasarlo como el parámetro Source del método CursorFill.

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


ADODB.Recordset no está abierto. (Error 2143)

Visual FoxPro requiere que un ADO Recordset esté abierto cuando es pasado como parámetro Source del método CursorFill.

  • Asegúrese de que el ADO Recordset ha sido abierto correctamente y que el ADO Recordsets State está establecido a adStateOpen (1).

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


No se encuentra el alias (Error 13)

Ha intentado especificar un alias que no se ha definido. No existe un alias como éste en uso actualmente.


El nombre de alias ya está en uso (Error 24)

Ha intentado utilizar una tabla con un alias que está asociado a otra tabla que ya está en uso.


Se excedió el nivel permitido de anidamiento de DO (Error 103)

El comando DO limita el anidamiento a 128 niveles.


Se ha interrumpido la operación ALTER TABLE (Error 1870)

Ha interrumpido el comando ALTER TABLE durante la copia de registros al nuevo formato de registro. Es posible que algunos datos no se hayan copiado. Compruebe los datos.


Constante Date/DateTime ambigua (Error 2032)

Este error se produce cuando un valor de tipo Date o DateTime no cumple el formato estricto.


Falta una instrucción IF | ELSE | ENDIF (Error 1211)

Vea el tema IF ... ENDIF para obtener información detallada acerca de la ejecución de comandos condicionales.


El origen del control de un objeto no se puede establecer como su propiedad Value (Error 1781)

Ha intentado establecer el origen del control de un objeto como él mismo. Utilice un origen de datos válido. Para obtener más información acerca de cómo establecer orígenes de datos, vea "Establecer un origen de datos ODBC", en la sección Instalar Visual FoxPro.


Una llamada a API ha producido una excepción. (Error 2028)

Los parámetros pasados a una API han producido una excepción en la API.

Asegúrese de que pasa a la API todos los parámetros necesarios y de que el tipo de parámetro es correcto.


Se ha llamado a la función _UserError( ) de la API (Error 1098)

Se mostró una cadena de error suministrada por el usuario.


No se encuentra la biblioteca API (Error 1726)

Se intentó ejecutar SET LIBRARY TO o RELEASE LIBRARY, pero no se encuentra la biblioteca especificada.


Incoherencia en la revisión de la biblioteca API. Vuelva a generar la biblioteca (Error 1711)

La biblioteca de API que está utilizando no corresponde a esta versión de Visual FoxPro.

  • Está utilizando una versión más antigua de un archivo .FLL.

    Vuelva a generar el archivo .FLL u obtenga una versión actualizada.

  • El control ActiveX que llama a la API de Visual FoxPro no está actualizado.

    Vuelva a generar el control ActiveX u obtenga una versión actualizada.

Para obtener más información, vea el comando Acceso a la API de Visual FoxPro.


No se ha cerrado el archivo de aplicación "archivo" (Error 1178)

Visual FoxPro intentó generar una aplicación sin haber cerrado uno de los archivos que ya estaba abierto.

  • Todos los archivos de la aplicación deben estar cerrados para poder generarla.

    Cierre el archivo y vuelva a generar la aplicación.


Objeto Application no inicializado (Error 1936)

No se ha registrado correctamente el servidor de automatización o la biblioteca de tipos.

  • Su archivo de registro está dañado.

    Elimine la entrada del registro.


La matriz "nombre" está en uso (Error 1972)

Un objeto intentó cambiar el tamaño de la matriz que lo contiene.


Las dimensiones de la matriz no son válidas (Error 230)

Las matrices deben tener más de 0 y menos de 65.000 elementos.

  • Utilizó un valor prohibido al declarar la matriz.

    Utilice un número válido para las filas y columnas de una matriz. Para obtener más información, vea DIMENSION.


La matriz no es miembro del objeto primario (Error 1764)

Compruebe las referencias de la matriz.


No se puede asignar matrices a elementos de matriz (Error 1974)

Compruebe los nombres de asignación.


Los campos de la tabla base han cambiado y ya no coinciden con campos de la vista. No se pueden establecer las propiedades de los campos de la vista (Error 1542)

Se ha modificado el nombre o el número de columnas de la tabla base o la vista base de una definición de vista, y ya no coincide con la definición de vista.

  • Las propiedades de vista no se pueden cargar en el cursor de vista.

    Vuelva a crear o modifique la vista para que refleje los cambios de estructura en las tablas y vistas base.

  • El parámetro lUseCursorSchema para el método CursorFill es Verdadero (.T.) y el número de campos definidos en la propiedad CursorSchema es mayor o menor que el número de campos esla tabla de datos.


Error del comando BEGIN TRANSACTION. El nivel de anidamiento es demasiado profundo (Error 1590)

Las transacciones sólo se pueden anidar con cinco niveles de profundidad.

  • Debe finalizar una transacción antes de comenzar otra.

    Llame primero a END TRANSACTION o ROLLBACK.


Se ha encontrado el principio del archivo (Error 38)

El puntero de registros se encuentra al principio del archivo.

  • Intentó colocar el puntero de registros antes del primer registro del archivo.

    Utilice BOF( ) para comprobar dónde comienza el archivo.


Las propiedades Unicode y la IsBinary no pueden estar establecidas como .T. (Error 2140)

Visual FoxPro no permite que las propiedades Unicode y la IsBinary estén establecidas a Verdadero (.T.) en un mismo objeto XMLField.


Las dimensiones del cuadro no son válidas (Error 227)

La fila 2, columna 2 debe ser mayor que la fila 1, columna 1 cuando se utiliza el comando @ ... BOX.


Se ha cambiado la estructura de examinar (Error 1164)

Una rutina de validación de Examinar ha modificado la estructura de una ventana Examinar.


Se ha cerrado la tabla examinada (Error 1163)

Una rutina de validación de Examinar ha cerrado una ventana Examinar.


No se permite utilizar OpenTables o CloseTables mientras se esté ejecutando cualquiera de estos métodos. (Error 2147)

Los métodos OpenTables o CloseTables no pueden ser llamados, en los eventos BeforeOpenTables o AfterCloseTables, ya que estos son eventos no recursivos.


No se permite usar CANCEL o SUSPEND (Error 1651)

El archivo de informe o etiquetas de dBASE IV que se está ejecutando llama a SUSPEND. Esta operación no es válida en Visual FoxPro.


No se puede tener acceso a caracteres después del final de la cadena (Error 62)

Intentó obtener acceso a caracteres después del último byte de una variable String o de un campo de una tabla.


No se puede tener acceso al archivo; hay una transacción en curso. (Error 1106)

Visual FoxPro no puede acceder a un archivo de tabla de índice o memo debido a que otro usuario ha iniciado una transacción que aún no ha terminado.

FLOCK( ) y RLOCK( ) normalmente no impiden que otros usuarios lean la información bloqueada. Este mensaje, que se desplaza de izquierda a derecha para indicar que Visual FoxPro continúa activo, se ha agregado por compatibilidad con el sistema de seguimiento de transacciones (TTS) de Novell.


No se puede tener acceso a la tabla seleccionada (Error 1152)

Ha intentado seleccionar una tabla fuera del intervalo de 32K del área de trabajo o está intentando hacer referencia a una variable de archivo en una tabla que no está abierta.


No se puede activar el servidor OLE (Error 1421)

El objeto no se puede activar.

  • El objeto es estático.

    Vincule el objeto a un archivo.

  • No se puede tener acceso al servidor OLE (también llamado servidor de automatización).

    Asegúrese de que la aplicación servidor esta instalada y que tiene acceso a ella. Además, asegúrese de que hay suficiente memoria como para iniciar la aplicación.


No se puede agregar "nombre". La definición de clase es cíclica (Error 1741)

Ha intentado especificar una clase en una instrucción ADD OBJECT cuya definición de clase es la misma que la de la clase que se está definiendo. Para obtener más información, vea DEFINE CLASS.


No se puede agregar un objeto a esta clase (Error 1755)

Si una clase está basada en la clase de base Control, sólo se le puede agregar un objeto si su primaria inmediata es la clase CONTROLS.


No se puede agregar este objeto a un objeto Column (Error 1769)

El objeto Column en una cuadrícula no admite objetos como formularios, conjuntos de formularios, barras de herramientas y columnas.

  • Utilizó el método AddObject en el objeto Column en la cuadrícula.

    Utilice AddObject sólo para objetos que se representan de forma razonable en un objeto Column. Si desea que aparezca un formulario en un objeto Column, guarde el contenido del formulario en una clase contenedor y agréguela al objeto Column.


No se puede agregar este objeto a un control cuadrícula (Error 1768)

Ha intentado ejecutar el método Grid.AddObject para agregar un objeto que no era una columna a un control cuadrícula.

  • Está intentando agregar un objeto a una columna, en lugar de agregar una columna a la cuadrícula.

    Para agregar un objeto a un objeto Column, utilice la sintaxis Grid.Column con el método AddObject.


No se puede agregar esta tabla: pertenece a la base de datos "nombre" (Error 1537)

La operación que intentó sólo es compatible con tablas libres. Vuelva a intentarlo con un archivo del tipo correcto: un archivo .dbf que no pertenezca a una base de datos.


No se puede asignar el mapa de pantalla

No hay suficiente memoria para ejecutar Visual FoxPro.


No se puede anexar desde archivos protegidos por contraseña (Error 1672)

El archivo que intentó agregar está cifrado.


No se puede organizar un formulario no transportado (Error 1795)

Al mover pantallas entre distintas plataformas de FoxPro 2.x, debe transportar las pantallas con el Transportador (TRANSPRT.PRG) antes de intentar organizarlas.


No se puede basar una vista en sí misma (Error 1952)

Intentó modificar una vista en el Diseñador de vistas seleccionando Agregar y, a continuación, seleccionando la vista que está modificando como vista base desde el cuadro de diálogo. Esta operación no es válida.


No se puede crear una DLL sin clases públicas de OLE (Error 2002)

El comando BUILD DLL requiere que estén definidas clases públicas OLE.

  • Eligió la opción incorrecta en el cuadro de diálogo Opciones para generar.

    Elija otra opción, como Generar aplicación.

  • No hay clases públicas OLE definidas.

    Defina una o varias clases públicas OLE. Para obtener más información, vea el cuadro de diálogo Información de clase o la cláusula OLEPUBLIC del comando DEFINE CLASS.


No se puede generar sin un programa principal (Error 1689)

El programa principal del proyecto especificado no se encuentra o no se estableció.

  • Los proyectos deben tener un programa principal.

    Para obtener más información, vea Establecer principal en el menú Proyecto.


No se puede llamar a SetFocus desde un evento When, Valid, RangeHigh o RangeLow (Error 2012)

El método SetFocus entra en conflicto con estos eventos, que prueban si el objeto puede obtener o perder el enfoque.

  • Está llamando a SetFocus desde un evento When.

    En su lugar, llame a SetFocus desde el evento GotFocus.

  • Está llamando a SetFocus desde un evento Valid, RangeHigh o RangeLow.

    En su lugar, llame a SetFocus desde el evento LostFocus.


No se puede cambiar el modo de un formulario visible (Error 1573)

El parámetro nStyle del método Show no se puede cambiar mientras el formulario esté visible.

  • Está llamando a un método Show de un formulario con un parámetro mientras que el formulario está visible.

    Cambie el modo del formulario cuando no esté visible, utilizando un código similar al siguiente:

    Form1.Hide
Form1.Show(nStyle)


No se puede cambiar la propiedad "nombre" en el método SetAll (Error 1758)

Las propiedades Name y TabIndex deben tener valores únicos y no se pueden establecer con el método SetAll.


No se puede borrar una clase "clase" porque está en uso. (Error 1770)

La clase especificada no puede ser eliminada de un archivo biblioteca .vcx, mientras la definición de clase esté en uso. Este error puede ocurrir cuando al utilizar el comando REMOVE CLASS, la cláusula OVERWRITE del comando ADD CLASS o el comando RENAME CLASS.

  • Ejecute CLEAR ALL para eliminar todas las referencias a la clase e intente de nuevo.


No se puede borrar un menú que está en uso (Error 176)

Ha intentado borrar un menú activo.

  • Los comandos CLEAR MENU y RELEASE MENU no se pueden aplicar a menús activos.

    Utilice DEACTIVATE MENU antes de borrar o liberar el menú.


No se puede borrar un menú emergente que está en uso (Error 177)

Ha intentado borrar un menú activo.

  • Los comandos CLEAR POPUP y RELEASE POPUP no se pueden aplicar a menús activos.

    Utilice DEACTIVATE POPUP antes de borrar o liberar el menú.


No se puede borrar el objeto "objeto" porque está en uso. (Error 1951)

Se está ejecutando actualmente un código de evento o un método para ese objeto. Este mensaje también puede ocurrir al intentar quitar de memoria una definición de clase con el comando CLEAR ALL.

  • Interrumpa el código que está ejecutando o espere a completarlo antes de limpiar la memoria.


No se puede cerrar o quitar el cursor asociado ya que está actualmente en el modo diseño. (Error 2079)

Esto ocurre, si el cursor está inadvertidamente cerrado en la sesión de datos del sistema.


No se puede cerrar la tabla durante la ejecución de una expresión vinculada a la tabla (Error 1546)

No intente cerrar tablas durante esta operación.


No se puede cerrar esta base de datos porque la está usando un proyecto (Error 1535)

Ha intentado cerrar un contenedor de base de datos que un proyecto está utilizando para presentar datos.

  • La base de datos debe permanecer abierta mientras el proyecto esté abierto.

    Deje la base de datos abierta o cierre el proyecto.


No se puede compilar hasta que se haya completado el comando COMPILE actual (Error 1971)

Ha intentado compilar código mientras que otra compilación estaba en curso. El compilador sólo puede realizar un proceso a la vez.


No se puede crear el archivo "archivo" (Error 102)

El sistema operativo no puede crear el archivo especificado por una de las siguientes razones.

  • El disco o el directorio están llenos.

    Quite archivos y vuelva a intentarlo.

  • No tiene acceso al directorio de destino.

    Compruebe su nivel de permisos.

  • Especificó un nombre de archivo no válido.

    Compruebe si cometió errores de escritura.


No se puede crear el archivo "archivo" (Error 1102)

El sistema operativo no puede crear el archivo especificado por las siguientes razones posibles :

  • El disco o el directorio están llenos.

    Quite archivos y vuelva a intentarlo.

  • No tiene acceso al directorio de destino.

    Cambie su nivel de permisos.

  • Especificó un nombre de archivo no válido.

    Compruebe si cometió errores de escritura.


No se puede crear la vista sin conexión en una vista modificada actualmente (Error 2019)

CREATEOFFLINE no es una operación válida.

  • Está modificando la vista en el Diseñador de vistas..

    Cierre la vista e intente ejecutar CREATEOFFLINE de nuevo.


No se puede crear el área de trabajo del programa.

Visual FoxPro no ha podido crear suficiente espacio de trabajo al iniciar el programa.

  • El disco o el directorio están llenos.

    Quite archivos y vuelva a intentarlo.

  • No tiene acceso al directorio de destino.

    Cambie su nivel de permisos.


No se puede definir el elemento de menú (Error 169)

Intentó agregar una barra de menús a un elemento de menú definido con archivos o estructura.


No se puede eliminar un objeto de base de datos mientras está abierto en un diseñador (Error 1572)

Una vista o conexión está abierta en un diseñador.

  • Intentó eliminar la vista o conexión en la ventana Comandos o desde el Diseñador de bases de datos.

    Cierre primero el Diseñador de vistas o el Diseñador de conexiones.


No se puede eliminar el archivo "nombre". (Error 2030)

Visual FoxPro no puede eliminar un archivo. Por ejemplo, Visual FoxPro no puede eliminar un archivo si se trata de un archivo de sólo lectura.


No se puede dividir entre 0 (Error 1307)

Se ha especificado 0 (cero) como segundo argumento de la función MOD( ).


No se pueden eliminar (DROP) todas las columnas existentes (Error 1871)

Una tabla existente debe tener al menos una columna.


No se puede encontrar el punto de entrada "nombre" en la DLL (Error 1754)

El punto de entrada de la biblioteca de vínculos dinámicos (DLL) que declaró no es válido. Compruebe tanto el nombre del punto de entrada como el nombre de la DLL.


No se puede encontrar el objeto "nombre" en la base de datos (Error 1562)

Se ha hecho referencia a un objeto de base de datos que no se encuentra en la base de datos. Utilice DISPLAY DATABASE o LIST DATABASE para confirmar los nombres de los objetos existentes en la base de datos .


No se puede encontrar el programa de revisión ortográfica.

No se encuentra el programa de revisión ortográfica.

  • La variable de sistema _SPELLCHK no contiene un nombre de archivo válido.

    Compruebe el valor de _SPELLCHK.


No se puede encontrar el programa de presentación.

Visual FoxPro no puede encontrar el programa llamado BEAUTIFY.APP porque se eliminó, se le cambió el nombre o se movió fuera del directorio principal de Visual FoxPro. Puede:

  • Ejecutar el programa de instalación de Visual FoxPro para instalar BEAUTIFY.APP.


No se puede encontrar el programa generador (Error 1944)

No se puede encontrar la aplicación generadora.

  • La variable de sistema _BUILDER no contiene un nombre de archivo válido.

    Compruebe el valor de _BUILDER.


No se puede encontrar el programa convertidor (Error 1798)

No se puede encontrar la aplicación convertidora.

  • La variable de sistema _CONVERTER no contiene un nombre de archivo válido.

    Compruebe el valor de _CONVERTER.


No se puede encontrar el programa de generación de menús (Error 1693)

No se pueden localizar los programas GENMENU y GENSCRN, que crean los menús y pantallas.


No se puede encontrar el programa de revisión ortográfica.

Visual FoxPro no puede encontrar el programa llamado SPELLCHK.APP porque se eliminó, se le cambió el nombre o se movió fuera del directorio principal de Visual FoxPro. Puede:

  • Ejecutar el programa de instalación de Visual FoxPro para instalar SPELLCHK.APP.


No se puede encontrar el programa de generación de texto (Error 1791)

No se puede localizar el programa que genera versiones de texto de los archivos binarios para el control de origen.

  • La variable de sistema _SCCTEXT no contiene un nombre de archivo válido.

    Compruebe el valor de _SCCTEXT.


No se puede encontrar el programa Asistente.

Visual FoxPro no puede encontrar el programa llamado WIZARD.APP porque se eliminó, se le cambió el nombre o se movió fuera del directorio principal de Visual FoxPro. Puede:

  • Ejecutar el programa de instalación de Visual FoxPro para instalar WIZARD.APP.


No se puede encontrar la vista "nombre" en la base de datos activa (Error 1563)

El nombre que especificó no es el nombre de una vista en la base de datos activa. Compruebe que el nombre sea correcto y que la base de datos activa sea la base de datos que necesita. Utilice DISPLAY VIEWS o LIST VIEWS para confirmar los nombre de las vistas de bases de datos existentes.

Si el nombre de la vista aparece en la lista, el índice .dbc puede estar dañado.

Para volver a generar el índice

  1. Cierre la base de datos.
  2. Elimine el archivo de índice (nombre_basededatos.DCX).
  3. Vuelva a abrir la base de datos.
  4. Vuelva a crear el índice.


No se puede agrupar (GROUP) por campo agregado (Error 1846)

Se ha intentado agrupar utilizando una de las funciones agregadas: MIN( ), MAX( ), SUM( ), AVG( ), COUNT( ), NPV( ), STD( ) o VAR( ).


No se puede importar desde archivos protegidos por contraseña (Error 1671)

El archivo que intenta importar está cifrado.


No se puede insertar una fila vacía desde una vista en su tabla o tablas base (Error 1547)

Mientras se está actualizando una vista, se está insertando un nuevo registro vacío (sin campos modificados) en una de las tablas base de la vista.

Asegúrese de que cada registro que se inserta desde una vista en una tabla base tiene al menos un campo modificado en la vista antes de la actualización de la vista.


No se puede ejecutar el comando PACK en una base de datos mientras sus objetos tienen cursores abiertos (Error 1566)

Cierre todas las tablas de la base de datos antes de ejecutar el comando PACK.


No se puede ejecutar el comando SET FORMAT mientras hay un comando READ en curso en un archivo de formato (Error 1720)

El archivo de formato especificado llama a un archivo de formato actualmente en uso.


No se puede cargar la DLL de 32 bits "nombre" (Error 1753)

Falta el archivo de la biblioteca de vínculo dinámico (DLL) o no es válido.


No se encuentra la biblioteca ODBC, ODBC32.DLL (Error 1527)

No se encuentra el archivo ODBC32.DLL.

  • Este archivo debe estar en la ruta de acceso actual para utilizar características de conectividad.

    Si el archivo no está en el sistema, vuelva a instalar el componente ODBC de Visual FoxPro. Si está presente, copie el archivo al directorio de sistema predeterminado.


No se puede encontrar la variable de entorno COMSPEC (Error 1412)

No se puede encontrar una variable de entorno que necesita Visual FoxPro. Este error se produce normalmente cuando se intenta ejecutar Visual FoxPro desde otro programa que no traslada correctamente las variables de entorno de MS-DOS.


No se puede encontrar el explorador de Web (Error 2006)

Visual FoxPro no pudo ejecutar el comando de Web START para la ubicación de Web que eligió.

  • No hay un explorador de Web disponible en su equipo.

    Instale (o vuelva a instalar) un explorador de Web.


No se puede modificar una clase de base (Error 1731)

Intentó modificar una clase de base de Visual FoxPro.

Para hacer modificaciones, debe definir primero su propia subclase basada en la clase de base de Visual FoxPro.


No se puede modificar una clase que está en uso (Error 1948)

Intentó modificar una clase que está actualmente en uso.

Utilice CLEAR CLASS para liberar la definición de clase de la memoria e inténtelo de nuevo.


No se pueden anidar funciones agregadas. (Error 1844)

No se admite el anidamiento de las funciones agregadas MIN( ) y MAX( ), ni de las subfunciones del comando CALCULATE: AVG( ), CNT( ), MAX( ), MIN( ), NPV( ), STD( ), SUM( ) o VAR( ).


No se pueden anidar definiciones de clases (Error 1926)

Una definición de clase no puede contener otra definición de clase


No se pueden anidar etiquetas de clave (Error 1254)

No es posible anidar etiquetas de clave.


No se puede anidar el comando PRINTJOB (Error 1337)

Después del comando PRINTJOB no se ha encontrado ENDPRINTJOB antes de la aparición de otro comando PRINTJOB.


No se puede abrir el archivo de configuración.

Visual FoxPro encontró un archivo de configuración, pero no tenía los permisos necesarios para abrirlo.


No se puede abrir el archivo "archivo". (Error 101)

Visual FoxPro no puede abrir el archivo especificado. Es posible que el archivo esté bloqueado por otro usuario de la red.


No se puede abrir directamente el búfer de tablas persistentes (Error 2013)

No se puede abrir directamente el archivo de búfer de cambios (.TBF) de una vista sin conexión.

Sólo se puede abrir el archivo .dbf correspondiente a la vista sin conexión.


No se puede volver a definir "nombre" (Error 1930)

Ha intentado asignar un valor a THIS, THISFORM, THISFORMSET o a una variable reservada del sistema. Para obtener más información, vea Palabras reservadas.


No se puede volver a definir un menú que está en uso (Error 174)

Se ha intentado ejecutar el comando DEFINE MENU teniendo en la memoria un menú activo.

Primero es necesario especificar el comando DEACTIVATE MENU.


No se puede volver a definir un menú emergente que está en uso (Error 175)

Se ha intentado ejecutar el comando DEFINE POPUP teniendo en la memoria un menú emergente activo.

Primero es necesario ejecutar el comando DEACTIVATE POPUP.


No se puede liberar el elemento de menú (Error 170)

Se ha intentado liberar un elemento definido con archivos o estructura.


No se puede cambiar el nombre del directorio actual (Error 1253)

No se ha podido cambiar el nombre del directorio indicado en el Archivador.


No se puede cambiar el nombre del archivo en otro dispositivo (Error 1153)

Para mover el archivo a otra unidad, utilice COPY FILE.


No se puede volver a abrir el archivo de proyecto "nombre" (Error 1970)

Visual FoxPro intentó abrir el proyecto que dejó abierto en la sesión anterior.

  • El proyecto ya no existe. Si el proyecto existe pero no se puede abrir, es posible que esté dañado.

    Localice un proyecto válido o pase por alto el mensaje.


No se puede resolver el vínculo primario (Error 1976)

Visual FoxPro no pudo hacer coincidir correctamente una tabla con su base de datos.

Utilice VALIDATE DATABASE para comprobar los vínculos en la base de datos.


No se puede volver a utilizar la vista sin conexión en otro modo diferente (Error 2017)

Las vistas sin conexión sólo se pueden abrir en el modo en el que se crearon originalmente.

  • Abrió una vista sin conexión en línea, dentro de una transacción, y a continuación, intentó abrirla sin conexión.


No se puede guardar el formulario: no es válido el nombre de un objeto (Error 1191)

Se debe dar un nombre correcto a los objetos para poder guardar el formulario.

  • Uno o varios nombres de objetos están establecidos como cadenas vacías.

    Busque propiedades Name establecidas como "".


No se puede establecer la propiedad DBCEventFile cuando DBCEvents está desactivado. (Error 2045)

Ha intentado utilizar DBSETPROP( ) sin haber activado DBCEvents.


Los archivos .IDX no se pueden ordenar en sentido descendente (Error 1706)

Los archivos IDX no admiten la cláusula DESCENDING.


No se puede actualizar ADODB.Recordset porque el cursor FOX no tiene una columna ADOBookmark. (Error 2085)

Visual FoxPro requiere que el cursor esté asociado a un ADO Recordset, si es que va a ser utilizado para actualizar un ADO Recordset.

  • Para verificar que un cursor está asociado con un ADO Recordset compruebe su propiedad SourceType utilizando la función CursorGetProp( ). Los valores válidos para la propiedad SouceType son 4, 104, y 204.

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


No se puede actualizar ADODB.Recordset porque no admite la propiedad Bookmark. (Error 2084)

Ocurre cuando el ADO Recordset suministrado no permite marcadores (bookmark). Esta es una fuente de datos dependiente.

  • Asegúrese que el ADO Recordset está configurado para permitir modificaciones.

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


No se puede actualizar ADODB.Recordset porque es de sólo lectura. (Error 2083)

Ocurre cuando el ADO Recordset suministrado posee una configuración no actualizable y está establecido como una fuente de datos.

  • Asegúrese que el ADO Recordset está configurado para permitir actualizaciones. La propiedad CursorType del ADO Recordset normalmente esta establecida como, adOpenKeyset, adOpenDynamic o adOpenStatic y su propiedad CursorLocation como adUseClient.

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


No se puede actualizar ADODB.Recordset hasta que el cursor, creado mediante el método CursorAdapter.CursorFill, no se asocie a un objeto CursorAdapter. (Error 2082)

Visual FoxPro requiere que el cursor, creado desde un ADO Recordset usando el método CursorFill, esté asociado a un objeto CursorAdapter, antes de poder recibir actualizaciones.

  • Para que el cursor reciba actualizaciones, vuelva a asociar el cursor al objeto CursorAdapter.

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


No se puede actualizar el proyecto desde el metarchivo del proyecto (Error 1909)

Hay un conflicto en el metarchivo del proyecto (archivo .PJM).

  • Modificó el archivo .PJM directamente.

    Restaure el archivo a una versión anterior y utilice la interfaz para hacer cambios: deshaga la desprotección del archivo .PJM y actualice la lista de proyectos.

  • Hay un conflicto en la sección de información de proyecto del archivo .PJM.

    Resuelva el conflicto quitando sólo líneas completas, si es posible.

  • El formato del metarchivo de proyecto no es correcto.

    Por ejemplo, parte de la información tiene un tipo de datos inesperado o las comas están mal colocadas.


No se puede actualizar el objeto Cursor "cursor", ya que es de sólo lectura. (Error 111)

Visual FoxPro no puede actualizar el cursor especificado, debido a que es de sólo lectura. Esto puede ocurrir cuando intenta escribir en un archivo creado o al que se accede con propósitos de sólo lectura.


No se puede actualizar el archivo "archivo" (Error 1157)

Visual FoxPro no puede actualizar el archivo especificado. Se produjo un error crítico al escribir en el disco, como la falta de espacio en disco, o un error de lectura o escritura.


No se puede usar 0 o un valor negativo como argumento para LOG10( ) (Error 292)

Se ha utilizado cero o un número negativo como argumento de un logaritmo base 10. Para obtener más información, vea LOG10( )..


No se puede modificar visualmente una clase basada en una clase no visual (Error 1979)

Intentó modificar una clase definida en un programa. Debe utilizar el Diseñador de clases para modificar clases basadas en clases base o clases definidas en archivos .vcx.


No se puede modificar visualmente una clase de este tipo (Error 1978)

Intentó crear una clase basada en una de las clases base Cursor, DataEnvironment, Page, Column, Header o Relation. No puede modificar visualmente ninguno de estos tipos de clase de base.


No se puede escribir en el registro porque está en uso (Error 1502)

Visual FoxPro no pudo escribir en el registro seleccionado porque se está utilizando.


La clase "nombre" ya existe (Error 1761)

Se ejecutó el comando ADD CLASS o RENAME CLASS con un nombre de clase que ya existe en la biblioteca de clases.


La clase "nombre" no se ha registrado (Error 1434)

Intentó utilizar un formulario que contiene un objeto OLE cuyo servidor no se ha instalado en el equipo actual.


La clase "nombre" está en uso (Error 1776)

La clase especificada con el método SaveAsClass ya existe y está siendo utilizada en otro lugar.

Ejecute CLEAR ALL para liberar la clase y poder sobrescribirla.


La clase "nombre" está en uso por MODIFY CLASS (Error 1752)

Ha intentado utilizar una clase que se está modificando actualmente en el Diseñador de clases.


La clase "nombre" no es una clase Form. (Error 2029)

La clase especificada en la cláusula AS de CREATE FORM debe estar basada en una clase Form.


No se encuentra la clase "nombre" (Error 1762)

El comando REMOVE CLASS especificó un nombre de clase que no existe en la biblioteca de clases.


La clase "nombre" no se encuentra en la biblioteca de clases (Error 1576)

La clase que especificó no se puede encontrar.

Asegúrese de que está utilizando el nombre de clase correcto.


No se puede crear ninguna instancia para la clase porque el miembro "nombre" no existe (Error 1441)

Al utilizar IMPLEMENTS, ha intentado usar un miembro que no se encuentra incluido en la definición de esta clase.


No se puede crear una instancia de la clase porque el miembro "nombre" contiene un número de parámetros incorrecto (Error 1442)

Al utilizar IMPLEMENTS, ha especificado un número de parámetros incorrecto para esta clase.


Creación de clase cancelada (Error 1313)

Canceló el cuadro de diálogo mientras se intentaba crear una clase basada en un control ActiveX.


No se encuentra la definición de clase "nombre" (Error 1733)

No se puede ubicar la definición de clase especificada en una función CREATEOBJECT( ).


La definición de clase "nombre" es recurrente (Error 1950)

Ha intentado crear una instancia de una clase que depende de otra clase, que depende de la primera clase.


El archivo de clase "nombre" no es válido (Error 1747)

El archivo de biblioteca de clases visuales (.vcx) está dañado y se debe restaurar desde un archivo de copia de seguridad o crear de nuevo.


El nombre de archivo de clase para "nombre" no es válido (Error 1746)

A una clase almacenada en un archivo de biblioteca de clases visuales (.vcx), basado en una clase que también está almacenada en un archivo .vcx, se le ha dado un nombre que excede la longitud máxima permitida de nombre de archivo.


La versión del archivo de clase es posterior a la versión actual (Error 1751)

Ha intentado utilizar un archivo de biblioteca de clases visuales (.vcx) que creado con una versión posterior de Visual FoxPro que la que está utilizando actualmente.


No se encuentra el archivo de biblioteca de clases "nombre" (Error 1993)

El archivo de biblioteca de clases visuales (.vcx) especificado en el comando RELEASE CLASSLIB o CLEAR CLASSLIB no está en la lista SET CLASSLIB.


El nombre de clase no es válido (Error 1949)

El nombre de clase que especificó no es válido o no existe.


El número de la página de códigos no es válido (Error 1914)

El número de página de códigos que especificó (relacionado con el país y el idioma que se utilizan) no es válido para esta versión de Visual FoxPro. Compruebe que el número de página de códigos es correcto. Las versiones localizadas pueden admitir páginas de códigos adicionales en el archivo opcional .INT.


No se encuentra la secuencia de ordenación "nombre" (Error 1915)

Este error ocurre al intentar utilizar una secuencia de ordenación que no está disponible para la página de códigos actual. La secuencia de ordenación asignada con el comando SET COLLATE o la cláusula COLLATE en los comandos CREATE TABLE - SQL, ALTER TABLE - SQL o INDEX debe ser una secuencia de ordenación válida de Visual FoxPro.

Debe especificar una página de códigos compatible en su archivo de configuración de Visual FoxPro. Por ejemplo, puede ver este error, "No está creada la secuencia de ordenación "CZECH" " cuando utilice el comando:

SET COLLATE TO "CZECH"

Para habilitar la secuencia de ordenación CZECH agregue la línea de código siguiente en su archivo Config.fpw file y reinicie Visual FoxPro:

CODEPAGE = 1250

Para más información secuencias de intercalación, vea SET COLLATE (Comando) para secuencias válidas y Optimizar aplicaciones internacionales.


La combinación de colores está reservada (Error 1728)

Las combinaciones de colores se incluyen únicamente por compatibilidad con las versiones anteriores. Las combinaciones de colores 13 a 16 están reservadas. Las combinaciones de colores definidas por el usuario corresponden a los números 17 a 24.


No se encuentra el recurso de conjunto de colores (Error 1642)

Se intentó usar SET COLOR SET TO para especificar un conjunto de colores que no se encuentra en el archivo de recursos actual. Compruebe el archivo de recursos actual con SYS(2005).


COLUMN | FORM | ALIAS | NOOVERWRITE | WIDTH sólo se permiten con la cláusula FROM (Error 1695)

Estas opciones sólo están disponibles cuando se crea un informe rápido con la cláusula FROM.


COLUMN | ROW | ALIAS | NOOVERWRITE | SIZE | SCREEN sólo se permiten con la cláusula FROM (Error 1698)

Estas opciones sólo están disponibles cuando se crea una pantalla rápida con la cláusula FROM.


El número de columnas debe estar entre 0 y 255 (Error 223)

El número de columna de la impresora especificado está fuera del intervalo.


El número de columnas debe estar entre 0 y el margen derecho (Error 1657)

Se intentó establecer un número no válido en la variable del sistema _PCOLNO. Esta variable de sistema se incluye por compatibilidad con las versiones anteriores. Para obtener mejores resultados en la versión actual, utilice el Diseñador de informes.


No se puede ejecutar este comando en una tabla cuyos objetos Cursor estén en modo de almacenamiento de tablas en búfer (Error 1579)

Cambie el modo de almacenamiento en búfer a un modo sin tablas antes de ejecutar este comando.


No se puede ejecutar el comando dentro de una transacción (Error 1593)

Debe finalizar todas las transacciones abiertas con END TRANSACTION o ROLLBACK antes de ejecutar este comando. Visual FoxPro no permite que nada que modifique una base de datos (.dbc) forme parte de una transacción. Los siguientes comandos están prohibidos dentro de una transacción:

  • CLEAR ALL
  • CLOSE ALL
  • CLOSE DATABASE
  • CLOSE TABLES
  • COPY INDEXES
  • CREATE / DELETE / MODIFY DATABASE
  • CREATE / DELETE / MODIFY VIEW
  • CREATE / DELETE TRIGGER
  • CREATE / DELETE / MODIFY CONNECTION
  • APPEND / MODIFY / COPY PROCEDURES

Los siguientes comandos están prohibidos en las tablas que participan en la transacción:

  • ALTER TABLE
  • CREATE TABLE (de una tabla en un contenedor de base de datos)
  • DELETE TAG
  • INDEX ON
  • INSERT (no de SQL)
  • MODIFY STRUCTURE
  • PACK
  • TABLEREVERT( )
  • Desactivar el modo de almacenamiento en búfer de tablas (cambiando la propiedad Buffering de 3 ó 5 a 1, 2 ó 4 con la función CURSORETPROP( )).
  • Cerrar una tabla (ejecutando el comando USE en el área de trabajo de una tabla que participe en la transacción)
  • ZAP


El comando contiene un carácter no válido (Error 1220)

La línea de origen contiene un carácter no válido. Probablemente, el error se debe a caracteres de control incrustados en la línea de origen con un editor externo.


El comando contiene una frase o palabra clave no reconocida (Error 36)

Se ha utilizado en la línea de comandos una frase que comienza con una palabra clave no válida.


Sólo se permite el comando en modo interactivo (Error 1297)

Está intentando utilizar un comando que sólo está permitido en modo interactivo. Este comando sólo se puede ejecutar a través de la ventana Comandos.


Falta una cláusula necesaria en el comando (Error 1221)

Se utilizó un comando sin una cláusula que la sintaxis de Visual FoxPro requiere. Seleccione el comando y presione F1 para obtener Ayuda sensible al contexto para el comando.


Error de compilación en el archivo "nombre" (Error 1981)

Intentó agregar procedimientos almacenados a una base de datos con la cláusula FROM del comando APPEND PROCEDURES, desde un archivo que no se puede compilar correctamente. Compruebe que el archivo contiene código válido.


El código compilado para esta línea es demasiado largo (Error 1252)

El código objeto producido para esta instrucción excede el tamaño del búfer de código interno de Visual FoxPro.

  • La línea contiene demasiadas expresiones largas.

    Divida la línea en varias instrucciones.


La conexión "nombre" está ocupada (Error 1541)

Esta conexión remota está siendo utilizada por otra instrucción que se está ejecutando.

Espere a que se complete o cancélela antes de volver a intentar esta operación.


El controlador de conexión no es válido (Error 1466)

El controlador de conexión que se suministró no es válido.

Utilice SQLCONNECT( ) o SQLSTRINGCONNECT( ) para generar un controlador de conexión válido.


El nombre de conexión no es válido (Error 1497)

El nombre que especificó no es el nombre de una vista en la base de datos activa.

Compruebe que el nombre sea correcto y que la base de datos activa sea la base de datos que necesita.


Error de conectividad: "nombre" (Error 1526)

Se produjo un error de ODBC. Visual FoxPro proporciona este mensaje como un envoltorio para el error real de ODBC. El error de ODBC puede ser generado por el administrador de controlador de ODBC, por el controlador ODBC o por el servidor de datos de servicios de fondo. AERROR( ) devuelve los errores ODBC. El formato de un error ODBC 1526, tal como lo devuelve AERROR( ), se muestra en la siguiente tabla:

Número de elemento | Descripción
1 | Numérico. Contiene 1526.
2 | Character. El texto del mensaje de error.
3 | Character. El texto del mensaje de error ODBC.
4 | Character. El estado ODBC de SQL actual.
5 | Numérico. El número de error desde el origen de datos ODBC.
6 | Numérico. El controlador de conexión ODBC.
7 | El valor Null.

El mensaje de error ODBC (elemento número 3) contiene el origen del error como el último nombre de la lista que precede al texto real de error.

Utilice el código de estado ODBC (elemento número 4) para buscar el error en el libro de ODBC (Referencia del programador).

Para un error de servidor, se establece el error del origen de datos (elemento número 5). Utilícelo para buscar el error en la documentación del servidor.


Error interno de coherencia de conectividad (Error 1522)

Error interno de conectividad.

Si ocurre este error, registre sus acciones recientes mientras utilizaba Visual FoxPro y, a continuación, llame al Soporte técnico de Microsoft.


La constante ya se ha creado mediante #DEFINE (Error 1725)

La constante ya se creó con #DEFINE.

Utilice #UNDEF para liberarla antes de volver a definirla.


Conversión cancelada. Ajuste BLOCKSIZE en el memo (Error 1509)

Está intentando convertir una tabla de dBASE con un tamaño de bloque de memo inferior a 512 K.

Para convertir correctamente el archivo para Visual FoxPro, vuelva a dBASE y ajuste el tamaño de bloque de memo a mayor o igual que 512 K.


Ha fallado la conversión desde Unicode. (Error 2136)

Ocurre cuando un problema es encontrado mientras Visual FoxPro intenta convertir una cadena Unicode en un carácter ANSI.

  • Examine sus datos, tabla y nombre de archivo para asegurarse que contiene valores que Visual FoxPro puede convertir adecuadamente a un carácter ANSI.


Se ha cancelado la conversión (Error 1799)

La conversión se canceló. Es posible que los archivos implicados no se hayan convertido.


Ha fallado la conversión a Unicode. (Error 2135)

Ocurre cuando un problema es encontrado mientras Visual FoxPro trata de convertir una cadena a Unicode.

  • Examine su datos, tablas y nombres de campos para asegurar que contienen valores que Visual FoxPro puede convertir adecuadamente a Unicode.


No se pudo agregar el icono al archivo ejecutable (Error 1168)

Especificó un archivo de icono no válido (.ICO) mientras creaba los archivos ejecutables distribuibles.


No se pudo agregar el recurso de versión al archivo ejecutable (Error 1181)

No se pudo agregar el recurso al archivo ejecutable en tiempo de generación.

  • El recurso podría estar dañado.

    Vuelva a crear el recurso.

  • Es posible que haya utilizado una letra en la opción cBuildNumber de la propiedad VersionNumber.

    Utilice sólo números en la configuración de cBuildNumber.


CTOD y CTOT pueden producir resultados incorrectos. (Error 2033)

Este error se produce por las mismas razones que el error 2032, pero CTOD( ) y CTOT( ) pueden ser no compatibles o ambiguas.


El valor de moneda está fuera del intervalo (Error 1988)

El tamaño máximo de un campo numérico o flotante son 20 dígitos.


El cursor "nombre" está asociado a otro objeto CursorAdapter. (Error 2112)

Visual FoxPro no permite que sea asociado un cursor al objeto CursorAdapter si ya está relacionado con otro objeto CursorAdapter.

  • Para verificar si un cursor ya está asociado a un CursorAdapter, compruebe su propiedad SourceType utilizando la función CursorGetProp( ).


El cursor está dañado o tiene un formato erróneo (Error 1166)

Intentó establecer un archivo .CUR no válido en la propiedad DragIcon. Un archivo .CUR válido debe incluir un cursor en blanco y negro no dañado.


CursorAdapter "nombre" no se puede cargar para diseño. (Error 2078)

Visual FoxPro no puede instanciar el CursorAdapter.


Los objetos CursorAdapter y XMLTable no pertenecen a la misma sesión de datos. (Error 2125)

Ocurre cuando un objeto CursorAdapter y una XMLTable son creados en diferentes sesiones de datos.

  • Asegúrese, de que el objeto CursorAdapter y XMLTable, son creados en la misma sesión de datos, antes de que sean utilizados juntos.


CursorAdapter no encuentra el registro actual en el búfer. Puede que el registro se haya revertido. (Error 2092)

Ocurre cuando Visual FoxPro no puede encontrar un registro adicionado, eliminado o modificado en el búfer.

  • Asegúrese, que otras operaciones, no están modificando el estado del campo de los registros modificados.


CursorAdapter no tiene un cursor asociado. (Error 2090)

Ocurre cuando se realiza una operación que requiere un cursor asociado, pero no existe la asociación con al objeto CursorAdapter.

  • Compruebe que el objeto CursorAdapter tiene un cursor aosciado.

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


CursorAdapter no puede determinar DataSourceType para la operación. (Error 2138)

Se debe especificar la propiedad DataSourceType.

  • Asegúrese, que se ha especificado la propiedad DataSourceType para el objeto CursorAdapter.
  • Asegúrese, que la propiedad UseDeDataSource tiene un valor Verdadero (.T.).
  • Compruebe, que está establecida la propiedad DataSourceType para el objeto asociado DataEnvironment.

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


No se especificó la propiedad CursorSchema. (Error 2075)

Si el entorno de datos contiene un CursorAdapter, pero el CursorAdapter no contiene un dato válido en la propiedad CursorSchema, el diseñador de entorno de datos no se abre.

  • Compruebe, que la propiedad CursorSchema de CursorAdapter contiene un dato válido.

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


Relación cíclica (Error 44)

Se intentó establecer una relación circular definiendo una secuencia de relaciones que apuntará, en último término, a una tabla ya relacionada.


El "

Referencia de Visual FoxPro

El "nombre" del entorno de datos no contiene un objeto cursor. (Error 2068)

El Diseñador de Entorno de Datos no abre si la clase DataEnvironment no contiene un objeto CursorAdapter o Cursor.


El entorno de datos ya está cargado (Error 1966)

Está llamando al método OpenTables del entorno de datos y el entorno de datos ya está cargado.


El entorno de datos ya está descargado (Error 1967)

El formulario está intentando cerrar tablas al cerrarse.

  • AutoCloseTables está establecida en verdadero (.T.).

    No cierre las tablas de entorno de datos por medio de programación.

  • Se está llamando al método CloseTables antes de que se cierre el formulario.

    Establezca Set AutoCloseTables en falso (.F.).


La sesión de datos #número no se puede liberar si hay transacciones abiertas (Error 1549)

Un objeto basado en una sesión de datos se está cerrando mientras existen transacciones abiertas. La sesión de datos permanecerá activa.

Cierre la sesión de datos emitiendo SET DATASESSION TO número seguido por el número adecuado de comandos END TRANSACTION o ROLLBACK.


La sesión de datos #número se vio forzada a deshacer (ROLLBACK) todas las transacciones para evitar el bloqueo (Error 1599)

Se detectó un bloqueo desde otra sesión de datos que intentaba bloquear un archivo de índice o memo que mantenía la sesión de datos #número. Se realizó un ROLLBACK forzado, dejando la sesión de datos #número en estado de error.

Ejecute el número apropiado de comandos ROLLBACK para borrar el estado de error. Estas situaciones se pueden evitar estableciendo SYS(3052) como activo para los archivos de índice o memo.


El tipo de datos no es válido para esta propiedad (Error 1732)

Los tipos de datos no coinciden.

  • El valor especificado para la propiedad no es del tipo de datos correcto.

    Para ver más información, consulte Tipos de datos y campos


No coinciden los tipos de datos (Error 9)

Una expresión no es válida porque está compuesta de tipos de datos que Visual FoxPro no puede evaluar en conjunto.

  • Ha especificado un tipo de datos inapropiado o bien, los dos campos especificados en una operación entre dos tablas (como UPDATE, REPLACE, SET RELATION) no tenían el mismo tipo de datos.


La base de datos "alias" no está abierta (Error 1534)

Ha intentado ejecutar el comando SET DATABASE TO en una base de datos que no está abierta todavía.

Ejecute primero OPEN DATABASE.


Base de datos "nombre": acceso al archivo denegado (Error 1569)

Intentó escribir en un archivo contenedor de base de datos (.dbc) protegido contra escritura.


La base de datos no es válida. Valídela (Error 1561)

Visual FoxPro ha detectado un problema con la estructura de la base de datos.

Intente ejecutar VALIDATE DATABASE para diagnosticar o solucionar el problema.


La base de datos es de sólo lectura (Error 1570)

Comandos como VALIDATE DATABASE RECOVER y aquellos que implican la creación o modificación de objetos de base de datos necesitan escribir en la base de datos.

Cierre la base de datos y vuelva a abrirla con acceso de escritura.


Otro usuario está utilizando el objeto de base de datos (Error 1709)

Otro usuario está teniendo acceso al objeto de base de datos.

  • Visual FoxPro está teniendo acceso a registros temporalmente en respuesta a las acciones de otro usuario.

    Espere algunos minutos y vuelva a intentarlo.

  • Otro usuario está modificando una tabla o conexión.

    Contacte con el usuario. Si usted está modificando una tabla o conexión, impedirá que otros tengan acceso mientras usted esté en el diseñador. Para obtener más información, vea MODIFY STRUCTURE, MODIFY CONNECTION y así sucesivamente.

  • Otro usuario está modificando una vista.

    Usted también puede utilizarla. Si desea modificarla, póngase en contacto con el usuario. Para obtener más información, vea MODIFY VIEW


El tipo de objeto de base de datos no es válido (Error 1773)

Los tipos válidos son: CONNECTION, VIEW, TABLE, RELATION, FIELD, INDEX. Algunos comandos sólo son adecuados para un subconjunto de estos tipos.


La propiedad DataType para el campo "nombre" no es válida (Error 1544)

El valor en la propiedad DataType del campo de la vista no es un tipo de datos válido de Visual FoxPro.

Cambie la propiedad DataType del campo de vista a un tipo válido.


Un valor Date/DateTime contiene caracteres no válidos (Error 2035)

La constante Date o DateTime contienen caracteres no admitidos por las constantes de tipo Date y DateTime.


Valor Date/DateTime evaluado como un valor no válido (Error 2034)

Un valor de tipo Date o DateTime no tiene un formato válido o está fuera del intervalo válido para Date y DateTime.


Una llamada Declare a DLL ha producido una excepción. (Error 2027)

Los parámetros pasados a una DLL han producido una excepción en la DLL.

Asegúrese de que pasa a la DLL todos los parámetros necesarios y del tipo correcto.


DIMENSION contiene una declaración de variable sin los argumentos de subíndice necesarios (Error 1232)

Una instrucción DIMENSION contiene una declaración de variable sin los argumentos de subíndice requeridos.


No se encuentra el directorio (Error 1963)

El directorio que especificó no existe.


El modo de presentación no está disponible (Error 216)

Intentó seleccionar un modo de presentación no disponible.


El especificador de unidad no es válido (Error 1907)

Especificó un nombre de unidad no válido en un comando DIR.


Hay nombres de campos duplicados (Error 1156)

Especificó un nombre duplicado en la cláusula FIELDS del comando SORT o COPY. Corrija el programa o comando, e intente de nuevo la operación.


Se ha encontrado el final del archivo (Error 4)

El puntero de registros se ha colocado después del último registro del archivo.


No se puede ejecutar un comando END TRANSACTION sin el correspondiente comando BEGIN TRANSACTION (Error 1591)

Coloque el código de transacción entre pares coincidentes de BEGIN TRANSACTION y END TRANSACTION.


ENDTEXT no tiene la instrucción TEXT correspondiente (Error 1214)

Una instrucción ENDTEXT carece de la instrucción TEXT correspondiente.


La propiedad de entorno no es válida (Error 1473)

Especificó una propiedad que no se puede establecer en el entorno para que sea heredada por los nuevos cursores. Debe crear primero el cursor y, a continuación, utilizar CURSORSETPROP( ).


Error al tener acceso a la cola de impresión (Error 1957)

No se pudo realizar una llamada interna a la función GetPrinter( ). Visual FoxPro llama a esta función a través de PRTINFO( ) o SET PRINTER TO.


Error al agregar "nombre" al objeto. El nombre de miembro o propiedad está duplicado (Error 1779)

El nombre de miembro o propiedad que está intentando agregar al objeto ya existe.


Error al cerrar el archivo (Error 1112)

El sistema operativo devolvió un error cuando Visual FoxPro intentaba cerrar un archivo.


El código de error no es válido (Error 1941)

No se reconoce la entrada para el comando ERROR.


Error al copiar el objeto OLE al Portapapeles (Error 1424)

No hay suficientes recursos disponibles.


Error al crear la tabla: "nombre" (Error 1973)

La definición de tabla utilizada en la cláusula FROM del comando CREATE TABLE contiene una definición de campo no válida.


Error al crear el objeto OLE (Error 1423)

No hay suficientes recursos disponibles o Visual FoxPro no encuentra la aplicación de servidor.


Error en la definición de clase. "Detalles" (Error 1735)

Un error ha ocurrido en la definición de clase por uno de los siguientes motivos:

  • La matriz no existe.
  • Páginas no pueden ser removidas en la definición de clase.
  • Columnas no pueden ser removidas en la definición de clase.
  • No se pudo encontrar el nombre de la clase en el formulario.
  • Utilizó CREATEOBJECT( ) en una definición de clase.
  • Eliminó columnas de cuadrícula en una definición de clase, estableciendo ColumnCount en la clase primaria en un valor y, a continuación, estableciendo un valor inferior en ColumnCount en la clase secundaria.
  • Eliminó páginas de tipo de objeto Pageframe en una definición de clase, estableciendo PageCount en la clase primaria en un valor y, a continuación, estableciendo un valor inferior en PageCount en la clase secundaria.
  • Utilizó la cláusula ADD OBJECT a[1] del comando DEFINE CLASS donde a no es una matriz.


Error en la cláusula PICTURE (Error 1258)

El compilador detectó un error al compilar una cláusula PICTURE. Una imagen debe ser un archivo válido de mapa de bits (.BMP) o de icono (.ICO).


Error al inicializar el objeto Application (Error 1574)

El servidor de automatización o la biblioteca de tipos no están registrados correctamente.

  • Su archivo de registro está dañado.

    Elimine la entrada del registro.


Error al inicializar OLE (Error 1508)

No hay suficiente memoria o ha habido una instalación no adecuada para esta operación. Cierre las otras aplicaciones que se estén ejecutando y vuelva a intentarlo.


Error al crear una instancia del objeto Cursor. No se puede abrir la tabla "alias". Se pasará por alto el objeto (Error 1554)

Ha encontrado un error en modo diseño al intentar cargar el entorno de datos. El cursor no se creó. Si guarda el formulario, el objeto se perderá.


Error al crear una instancia del objeto "objeto". (Error 1736)

El servidor para el objeto no se ha registrado adecuadamente, hay pocos recursos o una DLL necesaria no está presente. Otras razones son especificadas.


Error al cargar el archivo - número de registro n. "objeto" (o uno de sus miembros); "tema": "error" (Error 1881)

Se produjo un error al intentar leer en un archivo de formulario (.scx) o archivo de clase (.vcx). Tema se relaciona con "Propiedades," "Métodos," o "Propiedades de usuario."

Para solucionar este error:

  1. Para acceder al registro referenciado en el error, abra el formulario o clase como una tabla, de la siguiente forma:
    USE myform.scx
  2. Para moverse al registro, utilice el comando GO.

Puede encontrar frecuentemente la causa del error en los campos Properties, Methods, Class, Classloc, Objname, o Parent.

Nota Debe hacer una copia de respaldo de su formulario antes de modificar directamente el contenido de los registros y campos.


Error al cargar la colección HtmlHelp 2.0. (Error 2049)

La colección HTML Help 2.0 no se cargó correctamente. Compruebe la ficha Archivos, cuadro de diálogo Opciones para asegurarse de que el archivo se encuentra en la ubicación especificada.


Error al cargar el controlador de impresora (Error 1958)

No se pudo realizar una llamada interna a la función LoadLibrary( ). Visual FoxPro llama a esta función a través de PRTINFO( ) o SET PRINTER TO.


Error al cargar el entorno de datos. La tabla está en uso (Error 1995)

Compruebe si la tabla está abierta de forma exclusiva en otra sesión de datos.


Error durante la conversión (Error 1797)

El convertidor se ha ejecutado y ha devuelto un estado sin error, pero el archivo de formulario de informe (.FRX) resultante no está en formato de Visual FoxPro. Si cambió el valor de _CONVERTER, el convertidor que está utilizando no generará archivos .FRX de Visual FoxPro correctos.


Error al leer una propiedad desde la base de datos. Se pasará por alto la propiedad (Error 1584)

Se produjo un error mientras se cargaba código de reglas o de desencadenante desde el contenedor de la base de datos. La regla o el desencadenante se omitirán.

Intente ejecutar VALIDATE DATABASE antes de volver a abrir esta tabla.


Error al leer el archivo "archivo" (Error 1104)

El sistema operativo devolvió un error cuando Visual FoxPro intentaba leer el archivo especificado.


Error al leer el recurso (Error 1296)

Este mensaje indica un error interno de Visual FoxPro.

Registre todas sus acciones recientes mientras utilizaba Visual FoxPro y llame al Soporte técnico de Microsoft.


Error al guardar el objeto OLE (Error 1422)

No hay suficiente espacio en disco o recursos disponibles para guardar el objeto.


Error en "nombre" - "propiedad": "error" (Error 2005)

Intentó establecer un valor prohibido en una propiedad a través del lenguaje.


Error al escribir en el archivo "archivo" (Error 1105)

El sistema operativo devolvió un error cuando Visual FoxPro intentaba escribir en el archivo especificado. La mayoría de las veces, este error se produce cuando se intenta escribir en un disco protegido contra escritura.


El objeto EventHandler "nombre" no implementa una interfaz (Error 1445)

Ha especificado una interfaz para la función EVENTHANDLER( ) que no implementa el objeto EventHandler.


Para poder actualizar este archivo, debe abrirlo en modo exclusivo. Vuelva a abrirlo (Error 1977)

No tiene derechos exclusivos para este archivo.

Vuelva a abrir el archivo con la cláusula EXCLUSIVE del comando USE.


El usuario canceló la ejecución (Error 1523)

Canceló un comando remoto presionando la tecla ESC.


El resultado de la expresión no es válido (Error 46)

Ocurre cuando una expresión especificada en un comando SET MEMOWIDTH, BROWSE o @ ... TO da como resultado un valor incorrecto al evaluarla.

-u-

Ocurre cuando un valor especificado en una propiedad LockColumns o LockColumnsLeft es mayor que la cantidad de columnas que son visibles en un panel del control cuadrícula.


Error del evaluador de expresiones (Error 67)

Error interno de comprobación de coherencia del evaluador de expresiones de Visual FoxPro. Se puede deber a un archivo de código objeto de Visual FoxPro dañado.

Vuelva a compilar el programa que produjo el error.


Se volvió a escribir la expresión mientras se ejecutaba el filtro (Error 1148)

Se volvió a escribir la expresión de SET FILTER TO mientras se ejecutaba el filtro. Este error se puede producir en las configuraciones complejas con SET RELATION o SET FILTER, o durante el uso de funciones de Visual FoxPro o funciones definidas por el usuario en las que se hace referencia a otras áreas de trabajo, como LOOKUP( ) o SEEK( ).


La expresión no es válida. Use una expresión válida para la propiedad "nombre" (Error 1759)

La expresión que escribió para una propiedad Grid no es válida. La expresión se borrará de la configuración de la propiedad.

  • Si está estableciendo la expresión en el evento AfterRowColChange de la cuadrícula, el propio error vuelve a disparar el evento, lo que produce un bucle recurrente de mensajes de error.

    Presione Cancelar en el cuadro de diálogo para desactivar la expresión. No podrá establecer ni cambiar la expresión.

  • La expresión contiene errores de sintaxis.

    Asegúrese de que su expresión es válida y no tiene errores de sintaxis.

  • Las variables de la expresión no tienen el alcance adecuado.

    Asegúrese de que las variables que utiliza en la expresión tienen alcance global o tienen alcance en el formulario. Si su expresión contiene una variable que es local para la función en la que está estableciendo la expresión, la variable quedará fuera de alcance cuando se devuelva la función. Sin embargo, la expresión se evaluará en el futuro cuando la cuadrícula intente dibujar y esto causará un error.


La expresión no es válida fuera de WITH/ENDWITH (Error 1940)

Sólo puede utilizar una expresión de la forma .propiedad=algún_valor dentro de una construcción WITH ... ENDWITH.

  • Este error también puede ocurrir si está utilizando .NULL. como una expresión.

    Ponga comillas alrededor del .NULL. para evitar que se identifique como una propiedad.

  • Puede haber olvidado un punto final con un valor como verdadero (.T.), falso (.F.) o nulo (.NULL.)

    Compruebe si hay puntos coincidentes en cualquiera de los lados de la constante.


La expresión es demasiado compleja (Error 1947)

La expresión de índice es demasiado larga. El número máximo de caracteres que se permite en una clave de índice .IDX es 100. El número máximo de caracteres que se permite en una clave de índice .CDX es 240.


La expresión usada con ACOS( ) está fuera del intervalo (Error 293)

La expresión utilizada con la función arco coseno tiene un valor fuera del intervalo –1,0 a +1,0.


La expresión usada con ASIN( ) está fuera del intervalo (Error 291)

La expresión utilizada con la función arco seno tiene un valor fuera del intervalo – 1,0 a +1,0.


Error fatal nExpr al notificar el error nExpr.

No se devuelve un número de error. Visual FoxPro cierra todos los archivos abiertos y sale.

Registre todas sus acciones recientes mientras utilizaba Visual FoxPro y llame al Soporte técnico de Microsoft.


Característica no disponible (Error 1001)

La característica de Visual FoxPro que intenta utilizar no se admite en esta versión de Visual FoxPro.


Esta característica no está permitida para las tablas que no son .DBC (Error 1580)

Ha intentado implementar una característica, tal como un campo anulable, una clave principal, una relación persistente, un valor predeterminado, una regla de validación o un desencadenante, en una tabla libre. Estas características sólo están disponibles para tablas que están contenidas en una base de datos (.dbc).

Utilice ADD TABLE para agregar una tabla libre a una base de datos.


Esta característica sólo está disponible si el objeto está en modo de diseño (Error 1953)

La operación que intentó sólo es válida en modo de diseño.


Búsqueda cancelada; la tabla remota está cerrada (Error 1530)

Canceló de forma interactiva la ejecución de una función local como parte de una búsqueda remota de datos al presionar la tecla ESC.


El campo "nombre" no acepta valores Null (Error 1581)

Intentó almacenar un valor Null en un campo que no acepta este tipo de valores.

Puede cambiar esta configuración seleccionando la casilla de verificación NULL cuando modifica un campo en el Diseñador de tablas o especificando la palabra clave NULL en una definición de campo.


El campo "name" es de sólo lectura. (Error 1088)

Ocurre cuando intenta insertar, actualizar, o reemplazar un valor en un campo auto-incremental y la propiedad AutoIncError está establecida a Verdadero (.T.) u ON por el comando SET AUTOINCERROR.

Pruebe estableciendo la propiedad AutoIncError a Falso (.F.) u OFF utilizando el comando AUTOINCERROR.


Se infringe la regla de validación del campo "nombre" (Error 1582)

Corrija el valor del campo o cambie el registro a su forma anterior.


La expresión de campo contiene un tipo de datos no válido (Error 1647)

REPORT encontró un tipo de datos de imagen en una expresión de campo.


El valor de campo para el valor Unicode no debe utilizar la traducción de páginas de códigos. (Error 2142)

Ocurre cuando Visual FoxPro intenta convertir datos Unicode a o desde XML, y la propiedad NoCpTrans se evalúa a Falso (.F.).

  • Compruebe para asegurarse que sus campos carácter y memo utilizados para datos Unicode tienen la propiedad NoCpTrans establecida a Verdadero (.T.).


El campo debe ser de tipo General (Error 1913)

Ha intentado escribir un nombre de campo no general con APPEND GENERAL o MODIFY GENERAL, o en el cuadro de diálogo Imagen para informe.


El campo debe ser de tipo Memo (Error 350)

Se ha intentado escribir con los comandos APPEND o COPY MEMO el nombre de un campo que no es de tipo memo.


El nombre de campo está duplicado o no es válido (Error 1712)

Algún campo de la tabla ya tiene ese nombre, o se ha escrito con un espacio o con alguno de estos caracteres ., ", /, \, [, ], :, |, <, >, +, =, ;, *, o ? en un nombre de campo.


El tamaño del campo para un valor Unicode no puede ser un número impar (Error 2141)

Ocurre cuando se intenta convertir datos Unicode hacia o desde XML y el tamaño del campo no es un número par.

  • Asegúrese que este utilizando cadenas Unicode.
  • Asegúrese que el tamaño de los campos sea siempre un número par.

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


El ancho o el número de decimales del campo no son válidos (Error 1713)

El ancho del campo o el número de lugares decimales especificado no son válidos. Si desea una lista de los requisitos, vea Capacidades del sistema.


Se borrarán los campos marcados como claves de actualización (Error 2014)

Los campos Memo, General e Imagen no pueden ser campos de clave.

  • Se cambió un campo clave a Memo, General o Imagen.

    Visual FoxPro borrará el marcador de actualizar clave.


Ya existe el archivo "nombre" como parte de una base de datos (Error 1529)

Ha intentado sobrescribir un archivo existente que forma parte de una base de datos.

Para evitar daños a la base de datos, ejecute primero REMOVE TABLE en la tabla existente desde su base de datos.


El archivo "nombre" no existe (Error 1)

El archivo especificado no existe.


El archivo "nombre" es una base de datos (Error 1553)

La operación que intentó no se admite para archivos de base de datos.

Vuelva a intentarla con un archivo del tipo correcto.


El archivo "nombre" es una base de datos no válida (Error 1551)

Se detectaron problemas al intentar usar la base de datos mencionada.

Intente abrirla y ejecutar VALIDATE DATABASE para diagnosticar o resolver el problema.


El archivo "nombre" no es una base de datos (Error 1552)

La operación de base de datos que intentó no se pudo realizar porque el archivo no era una base de datos válida.

Vuelva a intentarla con un archivo del tipo correcto.


El archivo "nombre" no está cerrado (Error 1933)

Error de coherencia interna. Se cerró un archivo de formulario (.scx) o de biblioteca de clases visuales (.vcx), pero el código de evento y método que están almacenados en él todavía se están utilizando.


El archivo "nombre" no forma parte de una base de datos (Error 1558)

La operación que intentó no es compatible con tablas libres.

Vuelva a intentarla con un archivo del tipo correcto.


El archivo "nombre" forma parte de una base de datos (Error 1565)

La operación que intentó sólo es compatible con tablas libres.

Vuelva a intentarla con un archivo del tipo correcto.


El archivo "nombre" es de sólo lectura (Error 1718)

Intentó escribir en un archivo de sólo lectura.


El archivo "nombre" es demasiado grande (Error 1190)

El archivo es demasiado grande para modificarlo.

  • El archivo es mayor de 2 GB.

    Utilice otro método para reducir el tamaño del archivo y luego vuelva a intentarlo.


Denegado el acceso al archivo (Error 1705)

Intentó escribir en un archivo protegido contra escritura.


El archivo ya existe (Error 7)

El nombre de archivo que intenta cambiar ya existe. Este error lo genera normalmente el comando RENAME.


No se puede cerrar el archivo debido a que existen referencias pendientes (Error 1184)

Existen referencias pendientes a un objeto en este formulario o conjunto de formularios.


No se puede bloquear el archivo (Error 1503)

Visual FoxPro no puede bloquear el archivo solicitado. Es posible que esté bloqueado por otro usuario de la red.


El archivo está en uso (Error 3)

Intentó ejecutar USE, DELETE o RENAME en un archivo actualmente abierto.


Otro usuario está utilizando el archivo (Error 108)

Intentó ejecutar USE, DELETE o RENAME en un archivo que está utilizando otro usuario de la red.


El archivo no está abierto (Error 1113)

Intentó leer o escribir en un archivo que no está actualmente abierto.


El archivo está abierto en otra área de trabajo (Error 1708)

Los comandos que requieren el uso exclusivo de una tabla (PACK, MODIFY STRUCTURE, ZAP, etc.) no se pueden utilizar en una tabla abierta en varias áreas de trabajo con la cláusula AGAIN del comando USE.


La versión del archivo es incorrecta (Error 1338)

Intentó abrir un archivo de pantalla o de informe que no es un archivo de Visual FoxPro.


Debe abrir el archivo en modo exclusivo (Error 110)

Intentó realizar una operación que requiere el uso exclusivo de la tabla.


Para convertir un archivo memo debe abrirlo en modo exclusivo (Error 1637)

El archivo de tabla en uso se debe abrir de modo exclusivo para poder convertir el archivo memo.


El nombre del archivo es demasiado largo (Error 1918)

El nombre del archivo excede las capacidades actuales del sistema.


El archivo se creó en una versión de Visual FoxPro posterior a la actual (Error 1750)

Hay una discrepancia en la comparación del número de versión integrado en el archivo de formulario (.scx) o contenedor de base de datos (.dbc), y el número de versión almacenado en el producto para estos archivos.


No se cargó el archivo en memoria con el comando LOAD (Error 91)

Se produjo un error al intentar ejecutar CALL o RELEASE en un módulo no cargado.


La expresión FILTER excede el tamaño permitido (Error 1140)

Se intentó ejecutar SET FILTER TO para establecer como filtro una expresión con más caracteres que el máximo de 160 permitido.


El archivo de formulario (.SCX) debe contener al menos un objeto Form (Error 1749)

Para agregar un formulario a un archivo .scx, utilice el Diseñador de formularios.


El archivo de formulario "nombre" es de una versión anterior de FoxPro. Debe convertirlo al formato actual para poder ejecutarlo (Error 1991)

Intentó compilar un archivo de formulario (.scx) de una versión anterior de FoxPro.

Conviértalo a la versión actual e inténtelo de nuevo.


El archivo de formulario "nombre" no es válido (Error 1686)

El archivo de pantalla especificado está dañado.


No se pueden utilizar formularios o clases Form que especifiquen una DEClass y DEClassLibrary en un conjunto de formularios. (Error 2069)

Visual FoxPro no soporta las propiedades DEClass y DEClassLibrary de DataEnvironment para conjuntos de formularios. Ocurre un error bajo las siguientes condiciones en tiempo de diseño:

  • Cuando intenta convertir un formulario a un conjunto de formularios después de especificar las propiedades DEClass y DEClassLibrary para el formulario.
  • Cuando intenta agregar una clase Form, que especifica las propiedades DEClass y DEClassLibrary, a una clase FormSet cuando el conjunto de formularios está abierto en el Diseñador de Formularios.


Error de la secuencia de comandos de FoxCode "nombre". (Error 2043)

Error de la secuencia especificada en la tabla de _Foxcode (Variable del sistema). Escriba lo siguiente para determinar el archivo asociado a la variable del sistema:

? _FOXCODE

A continuación, compruebe la sintaxis del registro de secuencia de comandos correspondiente.


No se encuentra la tabla de Foxcode. Puede que la versión no sea correcta o que no sea compatible. (Error 2042)

La tabla especificada por _Foxcode (Variable del sistema) no existe o no es compatible con esta versión de Visual FoxPro. Escriba lo siguiente para determinar el archivo asociado a la variable del sistema:

? _FOXCODE

A continuación, compruebe que el archivo es una tabla correctamente estructurada para esta versión de Visual FoxPro. Para obtener más información, vea Personalizar IntelliSense mediante Foxcode.


La tabla de FoxTask está dañada o su versión es incorrecta. (Error 2046)

La tabla especificada como valor de _FoxTask (Variable del sistema) no es válida.


El valor, tipo o número del argumento de la función no es válido (Error 11)

Se ha pasado a una función un valor que no corresponde al tipo de datos esperado o se encuentra fuera del intervalo admitido por la función, o se han pasado demasiados argumentos a una función.


Esta función no está implementada (Error 1999)

Se intentó llamar a una función no admitida en la versión actual de Visual FoxPro.


Esta función no es compatible con las tablas nativas (Error 1536)

El comando o función que está utilizando (por ejemplo, REQUERY( )) no se puede aplicar a tablas nativas de Visual FoxPro.


Esta función no está permitida en tablas remotas (Error 1525)

El comando o función que está utilizando (por ejemplo, PACK o ALTER TABLE) no se puede aplicar a tablas remotas.


Falta ( en el nombre de la función (Error 1304)

Falta el paréntesis de apertura en un nombre de función.


Falta ) en el nombre de la función (Error 1300)

Falta el paréntesis de cierre en un nombre de función.

  • La línea contiene un paréntesis de apertura sin el paréntesis de cierre correspondiente.
  • La función contiene demasiados argumentos y no se detecta el paréntesis de cierre.


Función no compatible para cursores de paso a través de SQL (Error 1504)

Este comando sólo se aplica a cursores de vista.

  • Los cursores de paso a través de SQL no devuelven necesariamente conjuntos únicos de resultados.

    No utilice REQUERY( ) en un cursor de paso a través de SQL.


La función requiere el modo de almacenamiento en búfer de filas o tablas (Error 1586)

La función que intentó llamar sólo está habilitada para cursores con el almacenamiento en búfer de filas o tablas activado. Establezca en 2, 3, 4 ó 5 la propiedad Buffering con CURSORSETPROP( ) para activar el almacenamiento en búfer de filas o tablas.


Queda poca memoria GDI; cierre una o más ventanas e inténtelo de nuevo (Error 1986)

Cierre todas las aplicaciones abiertas y reinicie Windows en su equipo.


No se pueden usar campos generales en la condición WHERE de una instrucción de actualización. Cambie la propiedad WhereType de la vista (Error 1489)

En la cláusula WHERE de una instrucción de actualización SQL, las expresiones que utiliza para aplicar bloqueos optimistas no pueden incluir campos generales. Utilice la propiedad de vista WhereType (puede cambiar el valor predeterminado KeyAndModified a Key) para quitar los campos generales de la cláusula de actualización WHERE.

Para obtener más información acerca de la propiedad WhereType, vea CURSORGETPROP( ) o DBGETPROP( ).


La cláusula GroupBy es demasiado larga. (Error 2053)

La cláusula GroupBy que ha especificado contiene más de 256 caracteres.


La ayuda de este tema o contexto no se ha implementado. (Error 2050)

No existe información de nivel superior para el tema que ha especificado. Utilice la función de búsqueda.


El icono está dañado o tiene un formato incorrecto (Error 1167)

Se encontró un archivo de icono (.ICO) no válido durante BUILD EXE.


Anidamiento no válido de OLDVAL( ) o CURVAL( ) (Error 1587)

La expresión que pasa a OLDVAL( ) o CURVAL( ) hace referencia a la función OLDVAL( ) o CURVAL( ). No se admite esta operación.


Hay una recurrencia no válida en el controlador de impresora (Error 1910)

El programa controlador de impresora llama al controlador de impresora.


Hay una recurrencia no válida en la evaluación de la regla (Error 1887)

El código de regla o desencadenante ha hecho que el cursor original (el cursor desde el que se activó la regla o el desencadenante) intente evaluar una regla o desencadenante de forma recurrente. Esto puede ocurrir bajo una de las siguientes condiciones:

  • Intentó mover el puntero de registro o cambiar valores en el cursor original.

    • Compruebe el código de regla o desencadenante.

  • Intentó mover el puntero de registro en el evento BeforeUpdate para un objeto CursorAdapter.

Verifique si regla o desencadenante.


Redefinición no válida de la variable "nombre" (Error 1960)

El comando PUBLIC o LOCAL intentó cambiar el estado de una variable que ya existe. Por ejemplo, si tiene una variable x que no es pública y, a continuación, ejecuta PUBLIC x, obtendrá este error.

Las variables creadas en la ventana Comandos son públicas por definición. Para crear una variable que no sea pública, utilice un archivo de programa (.PRG).


No es posible un bloqueo de archivo en una transacción después de bloquear los registros primarios (Error 1594)

Intentó bloquear explícita (con FLOCK( )) o implícitamente (con REPLACE ALL) un archivo en una transacción. Esto no es válido si ya se han bloqueado registros explícita o implícitamente en este nivel de transacción o en un nivel de transacción inferior. Esto no es válido, aunque esos bloqueos de registro se hayan liberado dentro de la transacción.

Debe deshacer todos los bloqueos de registro de este archivo antes de intentar bloquear este archivo. Para obtener más información, vea ROLLBACK.


Importar sólo la hoja A de los archivos Lotus 1-2-3 versión 3.0 (Error 1679)

Las hojas B y C no se pueden importar en Visual FoxPro debido a que una tabla es bidimensional.


Hay un tipo de datos incorrecto en la expresión de grupo (Error 1241)

REPORT encontró un tipo de datos de imagen en la expresión de grupo.


No se encuentra el archivo de inclusión "nombre" (Error 1994)

El archivo especificado en el formulario no existe o #INCLUDE contiene una referencia no válida.


El formato de columna es incorrecto (Error 1471)

Intentó pasar un descriptor de tipo de columna incorrecto a SQLCOLUMNS( ).


El nombre de propiedad es incorrecto (Error 1470)

Intentó utilizar un nombre de propiedad desconocido.


El índice no acepta NULL (Error 1886)

La expresión de índice de clave principal o propuesta se evaluó como NULL, que no es un valor válido para estos tipos de índices.

Cambie los valores de los registros de forma que la expresión no se evalúe como NULL.


El índice no corresponde a la tabla. Elimine el archivo de índice y vuelva a crear el índice (Error 114)

Se detectó una estructura dañada en un archivo de índice.

Elimine el archivo de índice (.CDX o .IDX) y vuelva a crearlo.


La expresión de índice excede la longitud máxima (Error 23)

La expresión de este índice excede la longitud máxima de 220 bytes.


El archivo de índice no corresponde a la tabla (Error 19)

La expresión del índice activo utiliza variables no contenidas en la tabla activa.


El índice o la expresión no coinciden con un miembro existente de la colección. (Error 2061)

El índice o expresión provisto no coinciden con el miembro correspondiente en la colección. Asegúrese que indica un índice o expresión válido para un miembro existente.


No se encuentra la etiqueta de índice (Error 1683)

No se encontró la etiqueta especificada en el índice.

Compruebe la cláusula TAG de su comando.


Debe especificar un nombre de etiqueta o archivo de índice (Error 1684)

Intentó salir sin especificar un nombre de etiqueta.


Error de la operación de entrada o salida (Error 1002)

El sistema operativo no puede realizar una operación de archivo o de hardware.


No se puede ejecutar INSERT cuando está activado el almacenamiento en búfer de filas o tablas, o cuando hay limitaciones de integridad vigentes. (Error 1588)

Desactive el almacenamiento en búfer de filas o tablas estableciendo en 1 la propiedad Buffering con CURSORSETPROP( ), o utilice APPEND en lugar de INSERT.


Espacio de pila insuficiente (Error 1308)

Este mensaje de error lo pueden causar las situaciones siguientes:

  • El programa es demasiado recursivo.
  • El programa es demasiado complejo y con anidamientos demasiado profundos.
  • Un error en Visual FoxPro.


No se encuentra la interfaz "nombre" (Error 1443)

Al utilizar IMPLEMENTS, ha especificado una interfaz incorrecta para un objeto COM.


Error interno de coherencia (Error 1000)

Registre todas sus acciones recientes mientras utilizaba Visual FoxPro y llame al Soporte técnico de Microsoft.


Error interno: hay demasiados caracteres en el informe (Error 1243)

El tamaño total de todos los encabezados y expresiones definidos para el informe en CREATE REPORT o MODIFY REPORT es demasiado grande para estar contenido en un archivo de informe estándar.


Se ha usado un argumento no válido con la función SET (Error 231)

Se utilizó un argumento no válido con la función SET( ).


Se ejecutó una llamada no válida mientras se ejecutaba una secuencia SQLCOLUMNS( ) (Error 1477)

Se realizó una llamada no válida de función de paso a través de SQL (SPT) mientras se esperaba una llamada SQLCOLUMNS( ) para continuar la secuencia de llamadas SPT en curso.

Llame a SQLCANCEL( ) para cancelar la secuencia SPT o haga llamadas SPT válidas para finalizar la secuencia de llamadas.


Se ejecutó una llamada no válida mientras se ejecutaba una secuencia SQLEXEC( ) (Error 1474)

Se realizó una llamada no válida de función de paso a través de SQL (SPT) mientras se esperaba una llamada SQLEXEC( ) para continuar la secuencia de llamadas SPT en curso.

Llame a SQLCANCEL( ) para cancelar la secuencia SPT o haga llamadas SPT válidas para finalizar la secuencia de llamadas.


Se ejecutó una llamada no válida mientras se ejecutaba una secuencia SQLMORERESULTS( ) (Error 1475)

Se realizó una llamada no válida de función de paso a través de SQL (SPT) mientras se esperaba una llamada SQLMORERESULTS( ) para continuar la secuencia de llamadas SPT en curso.

Llame a SQLCANCEL( ) para cancelar la secuencia SPT o haga llamadas SPT válidas para finalizar la secuencia de llamadas.


Se ejecutó una llamada no válida mientras se ejecutaba una secuencia SQLTABLES( ) (Error 1476)

Se realizó una llamada no válida de función de paso a través de SQL (SPT) mientras se esperaba una llamada SQLTABLES( ) para continuar la secuencia de llamadas SPT en curso.

Llame a SQLCANCEL( ) para cancelar la secuencia SPT o haga llamadas SPT válidas para finalizar la secuencia de llamadas.


Se especificó una clase no válida para el comando @...Class (Error 1783)

No puede especificar una clase de formulario, conjunto de formularios o barra de herramientas cuando utiliza @ ... CLASS


Valor de COMATTRIB no válido para "nombre" (Error 2048)

Ha especificado un valor incorrecto para esta propiedad con nombre de la definición de clase.


Archivo compacto EXE no válido. Vuelva a generar el archivo EXE.

El archivo ejecutable compacto (.EXE) se ha dañado.

Vuelva a generar el archivo.


Las coordenadas no son válidas (Error 1959)

Los valores de coordenadas deben ser mayores que -32768 y menores que 32767.


El nombre de tabla de la base de datos no es válido (Error 1578)

Los nombres de tabla de base de datos válidos sólo contienen caracteres alfanuméricos y espacios, y no pueden comenzar por un número. No pueden tener más de 128 caracteres.


Elemento no válido en la colección XMLTable.Fields (Error 2098)

Visual FoxPro ha detectado un objeto no válido en la colección XMLField.

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


Hay una expresión no válida en el archivo de definición de etiqueta (Error 1245)

Se encontró una expresión no válida en un archivo LABEL (.LBX).


El descriptor de archivo no es válido (Error 1111)

Visual FoxPro no puede abrir un archivo.

Registre todas sus acciones recientes mientras utilizaba Visual FoxPro y llame al Soporte técnico de Microsoft.


El formato de archivo no es válido. Si es un archivo de dBASE, debe convertirlo primero. Para convertirlo, escriba MODIFY LABEL archivo (Error 1510)

Convierta el archivo de dBASE e inténtelo de nuevo.


Clave no válida en columna "nombre". (Error 2146)

Ocurre cuando la propiedad KeyFieldList del objeto CursorAdapter, contiene un valor no válido.

  • Compruebe, que el valor asignado a la propiedad KeyFieldList es válido.

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


La longitud de clave no es válida (Error 112)

  • Si ha creado una clave de índice que exceda los límites siguientes, cree una clave de índice más corta.

    La longitud de una clave de índice para un índice o índice compilado (.idx) debe ser entre 1 y 100 caracteres. La longitud de un índice compuesto (.cdx) debe ser entre 1 y 240 caracteres.

    Para ciertas secuencias de intercalación o cuando al utilizar conjuntos de caracteres binarios (double-byte character sets) (DBCS), cada carácter en el parámetro eExpression en el comando INDEX utiliza dos caracteres en la clave de índice. En esos casos, la longitud de eExpression está limitada a 120 caracteres.

  • Si ha creado una clave de índice con longitud cero (0), asegúrese de que el primer registro de los campos en los que basa el índice contiene algún dato.

    Cuando Visual FoxPro crea un índice, evalúa los campos en el primer registro de la tabla.


Id. local no válido. (Error 2026)

El Id. local especificado en STRCONV( ) no es compatible con el sistema operativo.


La operación para la vista sin conexión no es válida (Error 2011)

Algunas operaciones no son válidas para vistas sin conexión.

  • Intentó modificar la definición de vista o tabla, compactar la vista, insertar o eliminar registros, o actualizar la vista.

    No utilice estos comandos en vistas sin conexión.


La operación para la vista sin conexión no es válida mientras se usa en línea (Error 2008)

Algunas operaciones no son válidas cuando se está usando en línea una vista sin conexión.

  • Intentó cambiar el modo de almacenamiento en búfer de la vista.

    Por definición, las vistas sin conexión que se utilizan en línea están en modo de almacenamiento en búfer de tablas. No llame a CURSORSETPROP( ) para cambiar el modo de almacenamiento en búfer.

  • Intentó crear un índice.

    No utilice SET ORDER TO o INDEX en vistas sin conexión mientras las esté utilizando en línea.


La operación para la vista sin conexión no es válida mientras esté fuera sin conexión (Error 2007)

Algunas operaciones no son válidas cuando se está utilizando sin conexión una vista sin conexión.

  • Intentó crear una vista sin conexión a partir de una vista que ya está sin conexión.

    Utilice directamente la vista original o utilice una vista distinta como base para la nueva vista sin conexión.

Para obtener más información, vea CREATEOFFLINE( ).


La operación no es válida para el objeto Cursor (Error 1115)

Intentó ejecutar el comando PACK en un cursor.


El nombre de campo no es válido o está duplicado

El nombre de campo que especificó ya existe en la tabla.

  • Especifique un nombre de campo único para cada campo de la tabla.


El archivo EXE no es válido o falta.

El archivo .EXE que especificó falta o está dañado.


La ruta o el nombre de archivo no es válido (Error 202)

Intentó ejecutar un comando de Visual FoxPro que contiene un nombre de archivo o una ruta de acceso no válidos.


Desplazamiento de búsqueda no válido (Error 1103)

Registre todas sus acciones recientes mientras utilizaba Visual FoxPro y llame al Soporte técnico de Microsoft.


La referencia al subíndice no es válida (Error 31)

Se utilizó un subíndice fuera del intervalo válido para la matriz, definido en la instrucción DIMENSION. Este error también se puede deber al uso de dos subíndices para una matriz de una dimensión.


El nombre de columna de actualización "nombre" no es válido (Error 1479)

El nombre de columna no se encuentra en la lista de columnas de la vista.

Corrija el nombre de columna.


Uso no válido de una función de Visual FoxPro como una matriz (Error 1652)

Visual FoxPro encontró una función donde esperaba un nombre de matriz.

Para corregirlo, sustituya la función por un nombre de matriz válido.


La referencia a la variable no es válida (Error 1223)

Se utilizó una función donde se esperaba una variable de memoria.

Reemplace la referencia con un nombre válido de variable o matriz.


La clave excede el tamaño permitido (Error 1124)

La versión compilada de la expresión de índice supera los 150 bytes.


La longitud del campo clave no coincide (Error 1117)

La longitud del campo clave no coincide en una operación UPDATE o SET RELATION TO entre dos archivos.


La etiqueta de clave "etiqueta" no es válida (Error 1255)

La etiqueta de clave utilizada no es válida. Vea en ON KEY LABEL una lista de etiquetas de clave válidas.


La cadena de clave es demasiado larga (Error 1257)

La expresión de caracteres incluida con KEYBOARD es demasiado larga.


El formato del archivo de macros de teclado no es válido (Error 356)

Intentó utilizar un archivo de macro con datos no válidos.


El archivo de etiquetas no es válido (Error 54)

Intentó modificar o imprimir etiquetas utilizando un archivo de etiquetas que no se creó con CREATE LABEL o MODIFY LABEL.


Error de anidamiento en la etiqueta (Error 1653)

Una función definida por el usuario en un formulario de etiqueta ha vuelto a llamar a LABEL con una cláusula FORM.


El margen izquierdo, incluida la sangría, debe ser menor que el margen derecho (Error 221)

La posición del margen derecho debe ser mayor que la posición del margen izquierdo.

Ajuste los valores de márgenes y vuelva a intentar esta operación.


La longitud de las cadenas de variables excede la memoria disponible (Error 21)

La longitud combinada de todas las cadenas de variable de memoria ha excedido la cantidad de memoria disponible.


El archivo de biblioteca "nombre" no es válido (Error 1691)

Visual FoxPro no puede utilizar el archivo de biblioteca especificado.

Vuelva a generar la biblioteca.


La línea es demasiado larga (Error 18)

Se superó la longitud máxima de una línea de comando (8,192 bytes).

  • Una sustitución con macro puede haber hecho que se sobrepase el límite de 8,192 bytes.


El número de líneas debe ser menor que la longitud de página (Error 222)

El número de línea utilizado está fuera de lo indicado por la variable de memoria de longitud de página.


Error del comando de vínculo (Error 1194)

Se produjo un error de compilación y no se creó el archivo .EXE en el disco.


Este entorno requiere el producto traducido (Error 1911)

Se intentó utilizar una versión de Visual FoxPro para Estados Unidos en un sistema de otro país.


LOG( ): se ha usado cero o un valor negativo como argumento (Error 58)

Se utilizó cero o un número negativo como argumento de la función logaritmo natural.


Requiere una expresión lógica.

La expresión especificada en el Generador de expresiones debe ser de tipo lógico. Para obtener más información, vea Crear expresiones de tipo Lógico.


El formato del archivo Lotus 1-2-3 versión 1.0 no es válido (Error 1662)

El archivo de Lotus 1-2-3 que intenta importar no corresponde a la versión 1.0 o está dañado.


El formato del archivo Lotus 1-2-3 versión 2.0 no es válido (Error 297)

El archivo de Lotus 1-2-3 que intenta importar no corresponde a la versión 2.0. Utilice la herramienta de conversión de Lotus para convertir el archivo a la versión 2.0 antes de intentar importarlo.


El formato del archivo Lotus 1-2-3 versión 3.0 no es válido (Error 1678)

El archivo de Lotus 1-2-3 que intenta importar no corresponde a la versión 3,0 o está dañado.


La macro no está definida (Error 355)

Intentó reproducir una macro que no existe.


Se ha excedido la longitud máxima de los elementos de menú (50) (Error 1609)

Reduzca el número de elementos de menú.


Se ha excedido el número máximo de elementos de menú permitidos (128) (Error 1607)

Se ha sobrepasado el número máximo de elementos que puede contener un menú (128).


Se ha excedido el número máximo de menús permitidos (25) (Error 1608)

Se ha sobrepasado el número máximo de menús que se pueden definir (25).


Se ha excedido el número máximo de argumentos OLE (Error 1431)

Ha especificado más argumentos para un método de automatización de los que se permiten en Visual FoxPro.

Llame al método con menos de 64 argumentos.


Al importar el archivo se supera la longitud máxima de registro (Error 392)

El archivo que se intenta importar tiene una longitud de registro superior a 4.001 bytes.


El miembro "nombre" no se evalúa como un objeto (Error 1943)

Sintaxis no válida. La sintaxis indica que el próximo elemento que se va a evaluar debería ser un objeto pero no lo es.

Por ejemplo, si tiene un objeto Form llamado myform con un cuadro de texto llamado text1, el comando myform.txt.value = "help" generaría este error. El comando debería ser myform.text1.value = "help".


El miembro "nombre" es un miembro de clase (Error 1760)

Intentó quitar un miembro de un objeto. El miembro no se puede quitar porque es un miembro de la clase en la que está basado el objeto.

Para quitar el miembro, modifique la clase.


No se ha creado ninguna instancia para el objeto miembro "nombre" (Error 1975)

Se hizo una referencia a un objeto miembro en un evento Init antes de crear una instancia del objeto.


Se quitó el objeto miembro; no se puede completar la operación de guardar (Error 1756)

La clase no se puede guardar.

  • El archivo .vcx o la memoria están dañados.


El archivo memo "nombre" no existe o no es válido (Error 41)

Se intentó utilizar un archivo de tabla cuyo archivo memo asociado (.dct o .fpt) se ha eliminado, quitado o no se encuentra.


El archivo de memoria no es válido (Error 55)

Se intentó restaurar con RESTORE FROM un archivo de memoria (.mem) no válido.


Queda poca memoria, por lo que se ha deshabilitado la actualización de resultados (Error 2000)

El mapa de bits fuera de pantalla no se puede crear con un comando como?, LIST o DISPLAY.

  • Visual FoxPro tiene poca memoria.

    Libere algo de memoria.


El archivo de menú no es válido (Error 1687)

El archivo de menú especificado está dañado.


El menú no se ha activado con ACTIVATE MENU (Error 178)

Se intentó seleccionar un elemento de un menú antes de activar el menú. Para obtener más información, vea ACTIVATE MENU.


El menú no se ha activado con ACTIVATE POPUP (Error 179)

Se intentó seleccionar un título de un menú emergente antes de activar el menú. Para obtener más información, vea ACTIVATE POPUP.


El menú no se ha definido con DEFINE MENU (Error 168)

Se intentó activar un menú que no se ha definido. Para obtener más información, vea DEFINE MENU.


El menú no se ha definido con DEFINE POPUP (Error 165)

Se intentó activar un menú emergente antes de haberlo definido. Para obtener más información, vea DEFINE POPUP.


La posición del elemento de menú debe ser un número positivo (Error 167)

Se intentó colocar un menú o menú emergente utilizando un número negativo.


Los elementos y títulos de menú deben ser de tipo Carácter (Error 1611)

Se encontró un elemento o un título de menú definido con un tipo de datos distinto de Character.


La instrucción condicional del elemento de menú es demasiado larga. (Error 2051)

La condición que ha especificado contiene más de 256 caracteres.


El menú es demasiado pequeño (Error 287)

El menú es demasiado pequeño para mostrar elementos de menú.

Debe definir un menú emergente de mayor tamaño.


El menú especificado en ACTIVATE MENU ya está en uso (Error 181)

Intentó activar un menú que ya está activo.


El menú especificado en ACTIVATE POPUP ya está en uso (Error 182)

Intentó activar un menú emergente que ya está activo.


El título de menú no se ha definido con DEFINE PAD (Error 164)

Se ha hecho referencia a un título de menú que no existe. Para obtener más información, vea DEFINE PAD.


El menú no está seleccionado (Error 279)

Se ha intentado desplegar un menú o menú emergente que no se había seleccionado.


El método contiene errores de sintaxis. No se ha guardado el método (Error 1765)

Ha incluido más de un procedimiento o tiene una declaración de clase en el código.

Arregle el código e inténtelo de nuevo.


El formato del archivo de Microsoft Excel no es válido (Error 1661)

El archivo de Microsoft Excel que intentó importar no es de la versión 5.0 o está dañado.


Sobran o faltan #IF/#ELSIF/#ELSE/#ENDIF (Error 1723)

Se ha especificado un comando #IF de preprocesador incompleto o incorrecto.


Sobran o faltan llaves en la etiqueta de clave (Error 1256)

Falta una llave derecha o izquierda en una etiqueta de clave.


Falta #ENDIF (Error 1724)

Se ha especificado un comando #IF sin el comando #ENDIF correspondiente.


Falta la sección .RTT (Error 1193)

El componente de distribución de Microsoft Visual FoxPro no se ha instalado correctamente.


Falta una coma (,) (Error 1306)

Visual FoxPro esperaba una coma y no la ha encontrado.

  • Este error se produce normalmente al especificar un número incorrecto de argumentos en una función.

    Compruebe la sintaxis.


Falta una expresión (Error 152)

Se esperaba una expresión válida y no se ha encontrado.


Falta un operando (Error 1231)

Un operador que requiere dos operandos se ha utilizado sin el segundo de ellos, como por ejemplo ? (13+4)/.


El formato del archivo de Multiplan versión 4.0 no es válido (Error 1670)

El archivo de Multiplan que intenta importar no corresponde a la versión 4.0 o está dañado.


Se han producido múltiples advertencias al realizar las modificaciones de índice solicitadas (Error 1875)

Todos los cambios estructurales y de propiedades de la tabla se completaron correctamente.

  • Como registró un controlador ON ERROR, las advertencias se procesaron allí.

    Agregue código para comprobar los cambios y controlar las advertencias que recibió.


La cláusula MULTISELECT o MOVER no está permitida para los menús de estilo PROMPT (Error 1710)

Los comandos con las cláusulas PROMPT FIELD, PROMPT FILE o PROMPT STRUCTURE no admiten las cláusulas MULTISELECT o MOVER.


Debe ser un campo clave de tipo Numérico o Character (Error 1145)

El campo clave utilizado en UPDATE ON debe ser de tipo Carácter, Date o Numérico.


Debe ser una variable de archivo (Error 1226)

Se ha utilizado una variable de archivo (campo) donde se requería una variable de memoria o matriz.


Debe ser una variable o una matriz (Error 1225)

Se ha utilizado una variable de archivo (campo), donde se requería una variable o matriz.


Debe especificar parámetros adicionales (Error 94)

Ocurre cuando:

El número de parámetros especificado en una instrucción DO ... WITH es mayor que el definido en la instrucción PARAMETERS del programa llamado.

-o-

El método delegado no tiene el mismo número de parámetros que el evento especificado en cEvent en la función BINDEVENT( ).


Error de anidamiento (Error 96)

Se ha producido una de las situaciones siguientes:

  • Existe una instrucción DO sin el correspondiente ENDDO o viceversa
  • Existe una instrucción SCAN sin el correspondiente ENDSCAN o viceversa
  • Existe una instrucción FOR sin el correspondiente ENDFOR o viceversa
  • Existe una cláusula LOOP o EXIT fuera de los comandos DO WHILE ... ENDDO FOR ... ENDFOR o SCAN ... ENDSCAN.


No existe ninguna conexión asociada a este cursor (Error 1488)

La conexión se cerró.

  • Cerró la conexión con SQLDISCONNECT( ) y, a continuación, intentó volver a consultar o actualizar la vista.

    Asegúrese de que tiene una conexión abierta antes de ejecutar este comando en una vista remota.


No hay ninguna base de datos abierta o establecida como activa (Error 1520)

Intentó realizar una acción que requiere que haya una base de datos abierta y establecida como activa.

Utilice los comandos OPEN DATABASE o SET DATABASE TO, o seleccione una base de datos de la lista desplegable de bases de datos en la barra de herramientas estándar.


No hay ningún valor predeterminado para DROP (Error 1878)

Intentó utilizar la cláusula DROP DEFAULT del comando ALTER TABLE en una columna sin valor predeterminado. Esta operación no es válida.


No hay campos para procesar (Error 47)

No se puede encontrar ningún campo, normalmente porque ha ejecutado SET FIELDS TO.


No hay campos para copiar (Error 138)

En un intento de copiar a un archivo, no se encontraron campos visibles.


No se han especificado columnas clave para la tabla de actualización "nombre". Use la propiedad KeyFieldList del objeto Cursor (Error 1492)

No se ha especificado ninguna columna clave en la propiedad KeyFieldList de una tabla base que se está actualizando.

Modifique la propiedad KeyFieldList para incluir columnas clave para cada tabla que esté actualizando. Para la mayoría de las vistas, puede utilizar el Diseñador de vistas para establecer las propiedades de actualización de la vista y, a continuación, volver a guardar la vista en la base de datos. Para obtener más información, vea CURSORGETPROP( ).


No hay definido ningún menú (Error 1605)

Se intentó activar un menú sin definir primero una barra de menús.


No hay definido ningún elemento de menú (Error 1604)

Se intentó leer una barra de menús que no se ha definido.


No hay ningún elemento definido para este menú (Error 166)

Debe definir barras de elementos de menú para cada menú.


No hay ningún título definido para este menú (Error 1621)

Se intentó activar un menú que no tiene ningún título.


No se encuentra ninguna PageFrame o Page en el FormSet o el formulario cuya propiedad WindowType se ha establecido como READ o READ MODAL (Error 1964)

Intentó hacer que un objeto FormSet pasara a ser de tipo READ o READMODAL manualmente, sin tener la combinación correcta de objetos Page y PageFrames. Esta operación sólo se debería realizar con el programa Converter.


No se encuentra la instrucción PARAMETER (Error 1238)

Al llamar a un programa con una lista de parámetros, el programa llamado debe comenzar con una instrucción PARAMETER.


No hay ningún comando PRINTJOB previo asociado a este comando (Error 1649)

Se encontró un comando ENDPRINTJOB que no está precedido por el comando PRINTJOB correspondiente.


No hay ninguna clave principal (Error 1879)

Intentó utilizar la cláusula DROP PRIMARY KEY del comando ALTER TABLE en una tabla sin clave principal. Esta operación no es válida.


No se encuentra ningún registro para la plataforma actual (Error 1796)

Intentó modificar un archivo que no tiene registros de la plataforma actual.

Utilice el programa _TRANSPORT (Variable del sistema) para convertir el archivo.


El servidor no ha devuelto ningún conjunto de resultados (Error 1463)

La consulta remota no generó un conjunto de resultados.

Compruebe la consulta y sus parámetros para asegurarse de que está produciendo un conjunto de resultados en el servidor.


No hay ninguna regla para DROP (Error 1877)

Intentó utilizar la cláusula DROP CHECK del comando ALTER TABLE en un objeto Column (o una tabla) sin ninguna regla. Esta operación no es válida.


No se encuentra ninguna hoja (Error 1774)

El archivo .XLS al que está haciendo referencia no contiene registros de hoja de cálculo. Esto también puede ocurrir con un archivo que sólo contenga gráficos o macros.


No se ha definido dicho menú o elemento de menú (Error 1612)

El valor o valores pasados a un comando READ MENU TO o READ MENU BAR TO no se corresponden con un menú o elemento de menú definido.


No hay ninguna tabla abierta en el área de trabajo actual (Error 52)

No había ninguna tabla en uso cuando Visual FoxPro intentó ejecutar un comando de tabla.

  • El área de trabajo actual no tiene una tabla abierta.

    Abra una tabla o cambie las áreas de trabajo.


No se han especificado tablas de actualización. Use la propiedad Tables del objeto Cursor (Error 1491)

No hay tablas de base especificadas en la propiedad Tables de la vista.

Establezca la propiedad Tables para especificar la tabla o tablas base que se deberían actualizar en la vista. Para la mayoría de las vistas puede utilizar el Diseñador de vistas para establecer las propiedades de actualización de la vista y, a continuación, volver a guardar la vista en la base de datos. Para obtener más información, vea CURSORGETPROP( ).


No es una expresión de tipo Carácter (Error 45)

Intentó llamar con CALL a un módulo utilizando una expresión cuyo valor no es de tipo Carácter.


No es una expresión de tipo Numérico (Error 27)

Intentó utilizar el comando SUM en un campo que no es de tipo Numérico.


No es una clase ProjectHook. (Error 1439)

La clase ProjectHook predeterminada que especificó como plantilla para nuevos proyectos debe estar basada en una clase ProjectHook.


No es una tabla (Error 15)

El archivo que Visual FoxPro intenta utilizar como tabla contiene un encabezado incorrecto.


No es una ventana definida por el usuario (Error 1682)

Intentó ejecutar un comando con una cláusula WINDOW en una ventana no definida por el usuario, como por ejemplo la ventana Comandos.


No es una base de datos u hoja de cálculo válida de Framework II (Error 256)

El archivo que intenta importar no tiene un formato de Framework II válido.


No es una base de datos válida de RapidFile (Error 255)

El archivo que intenta importar no tiene un formato de archivo RapidFile válido.


Memoria insuficiente para el búfer (Error 1149)

No hay suficiente memoria para que Visual FoxPro asigne memoria para un búfer.

  • La memoria disponible está muy limitada.

    Agregue memoria o quite programas residentes para dar a Visual FoxPro más memoria de trabajo.


Memoria insuficiente para la asignación de archivos (Error 1150)

No hay suficiente memoria para que Visual FoxPro asigne memoria para un recurso interno de Visual FoxPro.

  • La memoria disponible está muy limitada.

    Agregue memoria o quite programas residentes para dar a Visual FoxPro más memoria de trabajo.


Memoria insuficiente para el nombre de archivo (Error 1151)

No hay suficiente memoria para que Visual FoxPro asigne memoria para un recurso interno de Visual FoxPro.

  • La memoria disponible está muy limitada.

    Agregue memoria o quite programas residentes para dar a Visual FoxPro más memoria de trabajo.


Memoria insuficiente para abrir una tabla con el comando USE (Error 1600)

No había memoria suficiente para abrir una tabla adicional.


Las cláusulas NOWAIT | SAVE | NOENVIRONMENT | IN | WINDOW no se permiten con la cláusula FROM (Error 1696)

Estas cláusulas no se pueden incluir cuando se crea un informe rápido con la cláusula FROM.


Desbordamiento numérico. Se han perdido datos (Error 39)

El resultado de una operación matemática es demasiado grande para almacenarlo en el campo o variable donde se ha colocado.


No se encuentra el objeto "nombre" (Error 1766)

El objeto que especificó está protegido y no se puede encontrar.


No se encuentra el objeto "nombre" (Error 1923)

No se encuentra el objeto que especificó.


El objeto ya tiene un entorno de datos; no se puede usar otro con el método SaveAs (Error 1985)

No puede especificar otro entorno de datos con el método SaveAs.


La clase de objeto no es válida para este contenedor (Error 1744)

Intentó agregar un objeto miembro a un objeto principal con el método AddObject. No se puede agregar porque la clase del objeto miembro no puede ser un miembro de la clase del objeto principal. Por ejemplo, no puede agregar un objeto Grid a un objeto PageFrame.


El archivo de objeto "archivo" se compiló con una versión anterior de FoxPro (Error 1195)

Intentó ejecutar una aplicación compilada con una versión anterior de FoxPro.

Vuelva a compilar el código fuente en la versión actual.


El archivo de objeto "nombre" está en uso y no se puede quitar de la memoria (Error 1719)

Un programa especificado en el proyecto está suspendido.

Cancele la ejecución del programa para poder generar correctamente desde el proyecto.


El objeto no es una vista sin conexión (Error 2009)

Algunos comandos y cláusulas requieren una vista sin conexión.

  • Intentó utilizar las cláusulas ONLINE o ADMIN.

    Debe proporcionar una vista sin conexión con estas cláusulas. Para obtener más información, vea USE.

  • Intentó eliminar una vista.

    Utilice DROPOFFLINE( ) sólo con vistas sin conexión.


El objeto no está contenido en un "nombre" (Error 1938)

Este mensaje lo produce el operador de alcance cuando la clase principal especificada no está en la jerarquía de herencia del objeto actual (THIS). Por ejemplo, este error ocurrirá si pone FORMSET::Click en el evento Click de un objeto Form que no esté contenido en un objeto FormSet.


El nombre del objeto no es válido (Error 1575)

Especificó un nombre que no es válido para un objeto miembro del método AddObject.

Compruebe el nombre e inténtelo de nuevo.


Los objetos no pueden asignarse a matrices (Error 1942)

Los elementos de matriz sólo pueden contener valores.


No se pueden agregar objetos por medio de programación al FormSet del Diseñador de formularios (Error 1987)

Intentó agregar objetos Form al objeto FormSet del Diseñador de formularios utilizando un programa. Esto no se puede hacer.


No se pueden eliminar objetos por medio de programación desde el Diseñador de formularios (Error 1989)

Intentó eliminar objetos Form utilizando un programa desde el objeto FormSet del Diseñador de formularios. Esto no se puede hacer.


Falta el punto de entrada a ODBC, "nombre" (Error 1528)

El punto de entrada para la función especificada no se encuentra en la biblioteca de vínculos dinámicos de ODBC32. El archivo ODBC32.DLL no es válido.

Vuelva a instalar el componente de ODBC de Visual FoxPro.


La vista sin conexión debe utilizarse en línea para este comando (Error 2015)

Cuando se utiliza una vista en modo administrador, no son válidos ni el uso normal en línea ni las operaciones de actualización de tablas. Para obtener más información, vea la cláusula VIEW ADMIN del comando USE.


Las vistas sin conexión se deben abrir en modo exclusivo cuando se usan en línea (Error 2010)

Utilice la cláusula EXCLUSIVE junto con la cláusula ONLINE para tener acceso a la vista sin conexión. Para obtener más información, vea USE.


La cadena Changed Properties de OLE es de una versión incorrecta. Las propiedades subclasificadas se ignoran. (Error 2003)

Los nombres y valores de las propiedades del objeto OLE no se pueden leer desde el archivo de formulario (.scx) o de clase (.vcx).

  • En el archivo falta información o el archivo está dañado.

    Vuelva a aplicar los cambios recientes y guarde el archivo en el Diseñador de formularios o en el Diseñador de clases. Se escribirá la información correcta.

  • El número de versión del objeto OLE ha cambiado.

    Contacte con el vendedor del objeto OLE.


Código de error OLE 0x"nombre" (Error 1426)

Ha recibido un código de error desde OLE (en hexadecimal) y una breve descripción del error. El remedio depende del error que devolvió OLE.


Error de excepción OLE: "nombre". El objeto OLE puede estar dañado. (Error 1440)

Un objeto COM o un control COM han producido un error de protección general, posiblemente porque se han pasado parámetros incorrectos. Libere o vuelva a cargar el objeto COM o el control COM.


Código de excepción OLE IDispatch "nombre" (Error 1427)

Ha recibido un código de error devuelto por un objeto de automatización. Es específico del objeto OLE. El objeto no proporciona ninguna otra información de texto acerca del error.

Vea la documentación del objeto para obtener más información.


Código de excepción OLE IDispatch "número" de "nombre": "nombre" (Error 1428)

Ha recibido un código de error devuelto por un objeto de automatización. Es específico del objeto OLE. En este caso, el objeto devuelve un texto de descripción del error, así como el origen (normalmente el nombre del objeto OLE) del error.

Vea la documentación del objeto para obtener más información.


El objeto OLE no es válido o está dañado (Error 1420)

Los datos de un objeto OLE almacenados en un campo general no se pueden validar.


Uno de los miembros de esta clase está basado en una clase no visual. No se puede escribir en el archivo .VCX (Error 1965)

Ha incluido una clase no visual en su definición de clase.

Quítela e inténtelo de nuevo.


Uno de los miembros de este formulario o FormSet está basado en una clase no visual. No se puede escribir en un archivo .SCX (Error 1968)

Ha incluido una clase no visual en su objeto FormSet.

Quítela e inténtelo de nuevo.


En los campos de tipo General sólo se permiten objetos insertables (Error 1436)

Los objetos insertables son, por ejemplo, una hoja de cálculo de Microsoft Excel o un documento de Microsoft Word. Se permiten en los campos de tipo General. Los objetos no insertables son objetos como los controles ActiveX. Los controles ActiveX no se permiten en campos de tipo General.


Sólo pueden definirse como candidatas las etiquetas estructurales (Error 1885)

Intentó crear una clave candidata (con INDEX ON ... CANDIDATE) que era un archivo IDX o una etiqueta en un archivo CDX distinto del archivo CDX especificado.

Cree el índice candidato en el archivo CDX estructural.


La operación no es válida para un campo de tipo General (Error 1912)

Intentó realizar una operación no válida, como un cálculo o una indización, en un campo de tipo General.


Operación no válida para campos de tipo Memo, General o Imagen (Error 34)

  • Un comando INDEX no puede especificar un campo Memo como su expresión clave.
  • No había suficiente memoria para que Visual FoxPro completara una operación.
  • Las uniones entre diferentes tipos de columnas no están permitidas cuando una de las columnas es de tipo Memo o General a no ser que se utilice UNION ALL.


CursorAdapter no permite esta operación. (Error 2076)

Ocurre cuando se realiza una operación no permitida, por ejemplo, cuando la función TABLEUPDATE( ) intenta realizar una operación de: Insertar, Actualizar, o Borrar, y las correspondientes propiedades AllowUpdate, AllowDelete, o AllowInsert de CursorAdapter están establecida a Falso (.F.).

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


CursorAdapter no permite esta operación en estos momentos. (Error 2077)

El objeto CursorAdapter actualmente se está utilizando en otro proceso, o de lo contrario no puede ser usado en el momento que fue llamado.

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


Incompatibilidad entre el tipo de operador y el tipo de operando (Error 107)

Se está utilizando una función o un operador aritmético, de cadena o lógico con un tipo de datos no válido. Este error se produce, por ejemplo, cuando se intenta sumar dos valores lógicos.


La cláusula OrderBy es demasiado larga. (Error 2052)

La cláusula OrderBy que ha especificado contiene más de 256 caracteres.


El marco de página no puede ser tan pequeño (Error 1413)

Los marcos de página deben ser lo bastante altos para mostrar una fila de fichas, si está establecida la propiedad Tabs; en caso contrario, deben tener al menos un píxel de alto.

  • Intentó cambiar el tamaño de un marco de página a menos del alto de una fila de fichas.

    Haga más alto el marco de página.


El formato de archivo Paradox no es válido (Error 1688)

El archivo de Paradox que intenta importar no corresponde a la versión 3.5 o está dañado.


El objeto primario no permitirá esta configuración de propiedad para "nombre" (Error 1767)

Intentó establecer un valor de propiedad en un objeto cuyo objeto primario controla el valor de esa propiedad.

Por ejemplo, cuando intente establecer la propiedad ControlSource de un control contenido en una columna de cuadrícula y la propiedad Bound de la columna de cuadrícula se haya establecido como True (.T.), obtendrá este mensaje de error, porque la propiedad ControlSource para el control se toma de la propiedad ControlSource de la columna de cuadrícula.


Error de imagen en la instrucción GET (Error 1217)

La cláusula PICTURE de una instrucción @ ... SAY o @ ... GET contiene una imagen que no puede incluir el valor al que debe dar formato. Esto se puede deber a un error en la imagen o a que el valor al que se va a dar formato no coincide con el formato de la imagen.


La imagen es demasiado grande, está dañada o tiene un formato incorrecto (Error 1108)

Intentó utilizar un archivo de imagen no válido.


Menú emergente demasiado grande; se muestran las primeras nExpr entradas

Especificó que se mostraran demasiados elementos en el menú.


La expresión de preprocesador no es válida (Error 1722)

Sólo se permiten expresiones simples (de evaluación, de concatenación y matemáticas) en los comandos del preprocesador (#IF, etc.).


No se permite la cláusula PREVIEW con OFF/NOCONSOLE o TO PRINT/FILE (Error 1681)

No se permite la presentación preliminar cuando la consola no está encendida, o cuando se imprime en la impresora o en un archivo.


La clave principal ya existe (Error 1883)

Intentó utilizar la cláusula ADD PRIMARY KEY del comando ALTER TABLE en una tabla que ya tiene una clave primaria.

Quite antes la clave primaria existente.


La propiedad de la clave principal no es válida; valide la base de datos (Error 1567)

La propiedad de la clave principal de esta tabla de la base de datos está dañada.

Utilice VALIDATE DATABASE para resolver el problema.


Denegado el acceso a la impresora (Error 1956)

No se pudo realizar una llamada interna a la función OpenPrinter( ). Visual FoxPro llama a esta función a través de PRTINFO( ) o SET PRINTER TO.


El controlador de la impresora está dañado (Error 1643)

Intentó cargar un controlador de impresora dañado.


No se encuentra el controlador de impresora (Error 1644)

No se encuentra el controlador de impresora especificado.


La impresora no está preparada (Error 125)

No se puede tener acceso actualmente al dispositivo de impresión especificado o excede el intervalo de espera. Puede ser necesario incrementar el parámetro TIME en el archivo de configuración de Visual FoxPro.


El redireccionamiento de la impresora no es válido (Error 124)

No se ha establecido una ruta de acceso a una impresora o el dispositivo de impresión no se puede compartir.


No se encuentra el procedimiento "nombre" (Error 1162)

No se puede encontrar el procedimiento especificado en la cláusula IN del comando DO.


No se encuentra el archivo de procedimiento "nombre" (Error 1937)

Ha especificado un nombre en un comando RELEASE PROCEDURE name que no está en la lista SET PROCEDURE.


No se ha instalado correctamente el producto.

Vuelva a instalar su copia de Visual FoxPro.


Programa demasiado grande (Error 1202)

El programa que Visual FoxPro intenta cargar no cabe en la memoria. El tamaño máximo de un programa o procedimiento individual que puede cargar Visual FoxPro es 65.000 bytes.


La versión del archivo de proyecto "nombre" es incorrecta (Error 1946)

El archivo de proyecto especificado no coincide con la versión de Visual FoxPro.


El archivo de proyecto no es válido (Error 1685)

El archivo de proyecto especificado está dañado.


El archivo de proyecto es de sólo lectura (Error 1169)

Visual FoxPro no le permite abrir proyectos de sólo lectura.

Haga que el proyecto sea de lectura y escritura, e inténtelo de nuevo.


La propiedad "nombre" ya existe (Error 1763)

El objeto ya tiene una propiedad con este nombre.

Dé a la nueva propiedad un nombre único.


La propiedad "nombre" tiene un valor incorrecto. (Error 2145)

Ocurre cuando los objetos CursorAdapter, UpdateableFieldList y la propiedad UpdateNameList son establecidas con valores incorrectos.

  • Compruebe, que los valores asignados a las propiedades sean válidos. Para más información vea Manejo de datos utilizando CursorAdapters.

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


La propiedad "nombre" no es un método o evento (Error 1738)

Utilizó un nombre que no es un método o evento.


No se encuentra la propiedad "nombre" (Error 1734)

No se puede encontrar el nombre de propiedad que especificó.

Compruebe el nombre de la propiedad e inténtelo de nuevo.


La propiedad "nombre" está protegida (Error 1757)

No puede cambiar el valor de una propiedad protegida.


La propiedad "nombre" es de sólo lectura (Error 1743)

No puede cambiar el valor de una propiedad de sólo lectura.


La propiedad no tiene un valor predeterminado. (Error 1138)

Sólo se puede llamar a ResetToDefault para propiedades que tengan valores predeterminados heredables.

  • La propiedad es de sólo lectura o es una de las siguientes:

    Alias, ChildOrder, CursorSource, Database, Name, Order, ParentAlias, RelationalExpr.


La propiedad no es válida para cursores locales (Error 1467)

La propiedad no es compatible con cursores basados en tablas o vistas locales; sólo se aplica a cursores basados en vistas remotas. Utilice esta propiedad sólo con cursores basados en vistas remotas.

Al utilizar la función CURSORGETPROP( ), la propiedad ADORecordset no es válida para cursores que no están basados en ADO Recordsets.


La propiedad no es válida para cursores de tabla (Error 1468)

Esta propiedad no es compatible con cursores basados en tablas; sólo se aplica a cursores basados en vistas. Utilice esta propiedad para cursores basados en vistas.

Para un cursor creado por un objeto CursorAdapter la propiedad SQL para CURSORGETPROP( ) no es válida para un cursor de tabla cuando la propiedad DataSourceType es especificado como "XML".


No se encuentra la propiedad (Error 1559)

El nombre de propiedad que especificó no se encuentra o no es válido para el objeto especificado.

Compruebe el nombre de la propiedad e inténtelo de nuevo. Asegúrese de que el objeto y la propiedad son compatibles.


La configuración de la propiedad no se aplicará hasta que no se vuelva a cargar el entorno de datos (Error 1739)

Intentó establecer una propiedad en un objeto de entorno de datos (Relation, Cursor) cuando el entorno de datos ya estaba cargado. El valor de la propiedad se almacenará con el objeto, pero la propiedad no tendrá efecto hasta que se descargue y se vuelva a cargar el entorno de datos.

Para descargar el entorno de datos

  • Ejecute CloseTables de la siguiente forma:
    [Formset.]Form.DataEnvironment.CloseTables

Para volver a cargar el entorno de datos

  • Ejecute OpenTables de la siguiente forma:
    [Formset.]Form.DataEnvironment.OpenTables


El valor de la propiedad no es válido (Error 1560)

Intentó establecer un valor de propiedad para un cursor o un objeto de base de datos que no estaba en el intervalo o tipo definidos para esa propiedad.

Compruebe qué valores son válidos y cambie el valor para que coincida con el tipo de propiedad.


El valor de la propiedad está fuera de los límites (Error 1469)

El valor de la propiedad está fuera de los límites permitidos para esta propiedad.

Cambie el valor para que sea válido para esta propiedad.


Error de análisis de consulta: intente volver a generar en el Asistente para consultas o mediante la ficha Combinación del Diseñador de vistas. (Error 2055)

Este error puede ocurrir en ciertas circunstancias cuando el Diseñador de vistas no puede analizar la consulta.

  • Intentar re-generar la consulta utilizando el Asistente de consultas.
  • Hacer cambios a la consulta en la ficha Combinación del Diseñador de vistas, quitando, cambiando o re-añadiendo tablas y relaciones en la consulta.


No se encuentra la cola "cola" (Error 1716)

No se encuentra la cola especificada en el comando SET PRINTER TO.


Error de la reconexión de la vista sin conexión (Error 2018)

La vista no se puede volver a conectar como una vista en línea: falta uno de los componentes de la vista o no está disponible. Por ejemplo, una tabla base para la vista puede estar bloqueada de forma exclusiva o ausente, o puede faltar el archivo contenedor de la base de datos (.dbc).


Otra persona está usando el registro (Error 109)

Intentó escribir en un registro que otro usuario tiene bloqueado.


El registro no está incluido en el índice (Error 20)

Un campo clave de la tabla en uso se ha modificado sin que el índice estuviera activo.

Aplique el comando REINDEX al archivo de tabla.


El registro no está bloqueado (Error 130)

Intentó ejecutar BROWSE, CHANGE, EDIT, DELETE, GATHER, MODIFY MEMO, READ, RECALL o REPLACE en un registro sin haberlo bloqueado.


El registro está fuera del intervalo (Error 5)

El número del registro al que desea tener acceso está fuera del número de registros contenidos en la tabla activa.

  • El índice actual no coincide con la tabla

    Ejecute REINDEX en la tabla para intentar resolver el problema.


El registro es demasiado largo (Error 1126)

Al intentar crear un archivo de tabla se superó la longitud máxima de la parte de datos de un registro (65.500 bytes). La longitud de la parte de datos de un registro es igual a la suma de las longitudes de los campos individuales.


Infracción de la regla de validación del registro (Error 1583)

La operación que intentó es una infracción de una regla de validación de registro.

Cambie los valores del registro o vuelva al registro.


Hay una definición recurrente en la macro (Error 1206)

Se alcanzó el número máximo de sustituciones de macro (256 por instrucción) en la línea actual.

  • Una macro hace referencia a sí misma.


No se encuentra la tabla relacionada en la base de datos activa (Error 1880)

Se esta creando o haciendo referencia a un objeto de relación de base de datos para el que no se encuentra la tabla relacionada.

  • Utilizó la cláusula REFERENCES de los comandos CREATE TABLE o ALTER TABLE.

    Asegúrese de que las dos tablas implicadas en la relación están en la base de datos.


No se encuentra la etiqueta relacionada, o no es principal ni candidata (Error 1882)

Se está creando o haciendo referencia a un objeto de relación de base de datos en el que falta parte de la información relacionada, no es ni principal ni candidata, o no es válida.

  • Utilizó las cláusulas REFERENCES y TAG de los comandos CREATE TABLE o ALTER TABLE.

    Asegúrese de que las dos tablas implicadas en la relación están en la base de datos.


Ya existe esa relación. (Error 1183)

Las tablas ya están relacionadas.


La expresión relacional no es válida (Error 1555)

La propiedad RelationalExpr no es válida.

Asegúrese de que la expresión no está vacía y de que se puede evaluar.


No se permite quitar un miembro de clase (Error 2016)

Una instancia de una clase no puede quitar miembros de la clase.

  • Intentó utilizar RemoveObject.

    Utilice AddObject y, a continuación, establezca la propiedad CurrentControl.


El informe contiene un error de anidamiento (Error 1645)

Una función definida por el usuario en un formulario de informe ha llamado a REPORT FORM


El archivo de informe "nombre" no es válido (Error 50)

Una descripción de informe contiene un error.


El resultado no es compatible con el esquema del cursor. (Error 2074)

Ocurre si el método CursorFill es llamado con el parámetro lUserCursorSchema establecido como Verdadero (.T.) y la definición del campo no coincide con el tipo o precisión del campo en la tabla base.

  • Compruebe, que los tipos y la precisión de los campos coinciden con la tabla base.
  • El parámetro lUserCursorSchema debe ser utilizado solamente si es necesario, ya que al convertir XML no tiene un esquema, y es necesario controlar los tipos de campos.

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


No se permite una instrucción RETURN/RETRY en TRY/CATCH. (Error 2060)

Una instrucción RETURN no puede aparecer en una estructura TRY...CATCH...FINALLY .


No se puede ejecutar el comando ROLLBACK sin el correspondiente comando BEGIN TRANSACTION (Error 1592)

Para ejecutar el comando ROLLBACK debe haber una transacción en curso.


La posición de fila o de columna está fuera de la pantalla (Error 30)

Un número de fila o columna especificado en un comando @ es mayor que el número de filas o columnas de la pantalla, de la ventana o de la impresora.


Los códigos de regla y de desencadenante deben equilibrar el uso de la transacción (Error 1598)

Una expresión de regla o de desencadenante, o un código llamado desde una expresión, han comenzado una transacción que no finalizó o han finalizado una que no comenzó. El intento de escritura que disparó el código de regla o de desencadenante se ha anulado.


RUN |! error del comando. "Detalles" (Error 1405)

El sistema operativo ha devuelto un error a Visual FoxPro indicando que no puede crear un proceso para ejecutar un comando RUN.

Frecuentemente, este error ocurre por la imposibilidad de encontrar el shell del programa para ser ejecutado o no existe suficiente memoria libre para cargar en memoria el shell del programa.


RUN |! La cadena del comando RUN|! es demasiado larga (Error 1411)

La cadena de comando incluida en el comando RUN es demasiado larga. La longitud máxima permitida es de aproximadamente 240 caracteres.


No se permite guardar un formulario convertido como una clase (Error 1490)

Intentó guardar una pantalla convertida de FoxPro 2.x como una clase con el método SaveAsClass. Esta operación no es válida.


El código de pantalla es demasiado grande para la memoria disponible (Error 1507)

El objeto pantalla que intenta copiar tiene un código de más de 64 KB.


SelectCmd está vacío. (Error 2139)

Ocurre cuando la propiedad SelectCmd está vacía. Visual FoxPro requiere que la propiedad SelectCmd esté establecida con un valor válido, adecuado a lo que especifica la propiedad DataSourceType, cuando el método CursorFill es llamado.

  • Compruebe, que la propiedad SelectCmd está establecida con un valor válido.

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


Las instrucciones SELECT no son compatibles con UNION "Detalles" (Error 1851)

Esto ocurre por una de las siguientes posibles razones:

  • La cantidad de campos no coincide. Asegúrese de que la cantidad de campos coincide.
  • El campo especificado no es compatible. Asegúrese que el campo especificado es compatible.
  • Los tipos de datos o tamaños de campos que se planean en cada instrucción SELECT no son idénticos.


No se encuentra el servidor "servidor" (Error 1715)

No se encuentra el servidor especificado en el comando SET PRINTER TO.


El número de sesión no es válido (Error 1540)

Utilice un número de sesión válido con SET DATASESSION TO.


No se encuentra el código fuente

El archivo que especificó no se puede ubicar en el directorio especificado.


El código fuente no está actualizado

La fecha del código fuente que especificó no coincide con el archivo compilado (.FXP).


La expresión SQL es demasiado compleja (Error 1845)

Visual FoxPro se ha quedado sin memoria al expandir la instrucción SELECT para analizarla.


El parámetro "nombre" de SQL no es válido (Error 1499)

La definición de parámetro de SQL en una llamada SQLEXEC( ) o en una definición de vista, contiene un error de sintaxis.

  • Falta el carácter de cierre para una constante de cadena o un paréntesis derecho de cierre.

    Compruebe la definición de parámetro que sigue al operador "?" en la cadena SQL y corrija la sintaxis del parámetro.


Falta un parámetro de SQL (Error 1493)

El marcador de parámetro (?) en una instrucción SQL utilizada en SQLEXEC( ) o en una definición de vista no va seguido por la expresión del parámetro.

Agregue la expresión de parámetro después del marcador de parámetro.


Error interno de coherencia de paso a través de SQL (Error 1465)

Error interno de paso a través de SQL.

Registre todas sus acciones recientes mientras utilizaba Visual FoxPro y llame al Soporte técnico de Microsoft.


La instrucción SQL SELECT no es válida (Error 1498)

A la instrucción SQL que define una vista le falta la cláusula SELECT o FROM. Corrija la sintaxis de la instrucción SQL. Para más información, consulte SELECT - SQL.


Se necesita el parámetro de la instrucción SQL para las llamadas SQLEXEC( ) no preparadas (Error 1472)

Debe utilizar antes SQLPREPARE( ) o incluir una instrucción SQL en la llamada a SQLEXEC( ).

  • No se llamó a SQLPREPARE( ).

    Incluya una instrucción SQL directamente en SQLEXEC( ) o llame a SQLPREPARE( ) antes de llamar a SQLEXEC( ).

  • Se borró el estado preparado porque se llamó a SQLEXEC( ) con un argumento cSQLCommand o porque se llamó a SQLPREPARE( ).

    Vuelva a llamar a SQLPREPARE( ).


SQL: hay un agregado en una expresión no numérica (Error 1811)

Se intentó obtener un promedio, suma, desviación estándar o varianza en un campo no numérico.


SQL: no se puede determinar el tipo de datos de la columna "columna" (Error 1890)

Visual FoxPro no puede determinar el tipo de datos de la columna SQL especificada ya que el primer registro del campo contiene un valor Null.


SQL: no se puede encontrar la tabla (Error 1802)

No se encuentra la tabla especificada.


SQL: no se encuentra la columna "campo | variable" (Error 1806)

No se encuentra el campo o variable especificados.


SQL: DISTINCT no es válida (Error 1819)

La cláusula DISTINCT sólo se debe utilizar una vez en cada nivel.


SQL: error al generar el índice temporal (Error 1831)

No se pudo generar un índice temporal, probablemente por falta de espacio en disco.


SQL: error al correlacionar campos (Error 1801)

Las referencias externas sólo se pueden especificar con una sintaxis similar a la siguiente:

X = Y

Una sintaxis como X = Y + 1 o X = 5 producirá este error.


SQL: se necesita la cláusula FROM (Error 1818)

Debe haber una cláusula FROM en el comando SELECT. Para más información, vea SELECT - SQL.


SQL: la cláusula GROUP BY no es válida (Error 1807)

Hay un error en la cláusula GROUP BY. Para más información, vea SELECT - SQL o SET ENGINEBEHAVIOR.


SQL: la cláusula HAVING no es válida (Error 1803)

Hay un error en la cláusula HAVING.

Por ejemplo, la cláusula no contiene una expresión lógica. Para más información, vea SELECT - SQL.


SQL: GROUP BY no es válido en la subconsulta (Error 1828)

Al utilizar uno de los seis operadores +, -, *, /, < y >, sólo puede haber una fila de salida. Para más información, vea SELECT - SQL.


SQL: no se encuentra el índice (Error 1830)

Visual FoxPro no encuentra el índice existente. Para más información, vea SELECT - SQL.


SQL: error interno (Error 1800)

Se produjo un error interno.

Registre todas sus acciones recientes mientras utilizaba Visual FoxPro y llame al Soporte técnico de Microsoft.


SQL: hay un campo agregado no válido (Error 1822)

Intentó utilizar una función agregada en un campo memo.


SQL: la expresión SET no es válida en UPDATE (Error 1865)

Compruebe las expresiones en sus cláusulas SET. Para obtener más información, vea el comando UPDATE.


SQL: la especificación TOP no es válida (Error 1866)

La cláusula TOP del comando SELECT - SQL requiere un valor mayor que cero. Si está presente la cláusula PERCENT, el valor debe ser mayor que cero y menor que 100. En ambos casos, el valor debe ser numérico.


SQL: uso de subconsulta no válido (Error 1810)

Se utilizó una subconsulta en un lugar donde no se esperaba. Para más información, vea SELECT - SQL.


SQL: la operación se canceló (Error 1839)

Se intentó ejecutar SELECT en una tabla con SAFETY en ON y el usuario eligió no sobrescribir la tabla. Para más información, vea SELECT - SQL.


SQL: la cláusula ORDER BY no es válida (Error 1808)

Uno de los campos elegidos para la cláusula ORDER BY no está en la lista SELECT. Esto sólo ocurre cuando se utiliza indización numérica como en el siguiente ejemplo, donde el número elegido excede el número de campos seleccionados:

SELECT a,b,c FROM table ORDER BY 4

Para más información, vea SELECT - SQL.


SQL: memoria insuficiente (Error 1809)

Visual FoxPro se ha quedado sin memoria al procesar el comando SELECT. Para más información, vea SELECT - SQL.


SQL: no se aceptan consultas de este tipo (Error 1814)

Intentó ejecutar una consulta que no es compatible con FoxPro versiones 2.5 a la actual. Para más información, vea SELECT - SQL.


SQL: SELECT contiene el carácter * no válido (Error 1820)

Intentó utilizar * en una de las funciones agregadas MAX( ), MIN( ), AVG( ) o SUM( ).

Para obtener más información, vea SELECT - SQL y el comando CALCULATE.


SQL: SELECT no es válido (Error 1826)

Intentó seleccionar más de un campo en una subconsulta. Para más información, vea SELECT - SQL.


SQL: la instrucción no es válida (Error 1804)

Hay un error en la lista de proyección. Para más información, vea SELECT - SQL.


SQL: la instrucción es demasiado larga (Error 1812)

El código de objeto es demasiado largo para compilarse. Para más información, vea SELECT - SQL.


SQL: la subconsulta no es válida (Error 1825)

Hay algo incorrecto en la subconsulta. Para más información, vea SELECT - SQL.


SQL: el anidamiento en la subconsulta es demasiado profundo (Error 1842)

Visual FoxPro no admite subconsultas anidadas. Para más información, vea SELECT - SQL.


SQL: hay demasiadas referencias a columnas (Error 1841)

No debe hacer referencia a más de 256 columnas en total en un comando SELECT. Para más información, vea SELECT - SQL.


SQL: hay demasiados campos en UPDATE (Error 1864)

Intentó ejecutar UPDATE - SQL con más de 128 campos para actualizar.


SQL: hay demasiadas subconsultas (Error 1805)

El número de consultas admitido en FoxPro es de dos por cada instrucción SELECT. Para más información, vea SELECT - SQL.


SQL: hay demasiadas cláusulas UNION (Error 1834)

Se sobrepasó el número máximo de UNION (10). Para más información, vea SELECT - SQL.


SQL: TOP requiere un ORDER BY (Error 1867)

Debe proporcionar una cláusula ORDER BY si utiliza la cláusula TOP. Para más información, vea SELECT - SQL.


SQL: uso no válido de UNION en la subconsulta (Error 1813)

En Visual FoxPro no se admite UNION en las subconsultas. Para más información, vea SELECT - SQL.


SQL: la cláusula WHERE no es válida (Error 1833)

Hay un error en la cláusula WHERE. Para más información, vea SELECT - SQL.


El argumento de SQRT( ) no puede ser negativo (Error 61)

Los argumentos de la función SQRT( ) no deben ser negativos.


La instrucción no está permitida en modo interactivo (Error 95)

Los comandos IF, ELSE, ENDIF, TEXT, ENDTEXT, EXIT, RETRY, RETURN, SUSPEND, DO WHILE, ENDDO, DO CASE, ENDCASE, SCAN, ENDSCAN, FOR y ENDFOR no se permiten en la ventana Comandos; debe utilizar estas instrucciones en un programa.


La instrucción no está en un procedimiento (Error 1931)

No se permiten instrucciones después de la cláusula ENDPROC. Para obtener más información, vea DEFINE CLASS.


La instrucción no es válida en una definición de clase (Error 1927)

Utilizó un comando que no se permite dentro de una estructura DEFINE CLASS. Los comandos válidos son: ADD OBJECT, ADD PROTECTED OBJECT, DIMENSION, FUNCTION, PROCEDURE y PROTECTED. Para obtener más información, vea DEFINE CLASS.


La instrucción sólo es válida en una definición de clase (Error 1928)

Los comandos PROTECTED, ADD OBJECT y ADD PROTECTED OBJECT sólo son válidos en una definición de clase. Para obtener más información, vea DEFINE CLASS.


La instrucción sólo es válida en un método (Error 1934)

Intentó utilizar el operador :: (resolución de alcance) fuera de un método. Como el operador de alcance es controlado desde la referencia de objeto THIS, sólo se puede utilizar en un método.


Cadena demasiado larga (Error 1903)

Se ha superado la longitud de cadena permitida.


No se encuentra el archivo .CDX estructural (Error 1707)

No se encuentra el archivo de índice estructural asociado a un archivo de tabla.


La estructura no es válida (Error 1235)

En CREATE FROM se especificó una tabla cuya estructura no coincide con el formato de STRUCTURE EXTENDED.


La estructura de anidamiento es demasiado profunda (Error 1212)

Se superó el anidamiento máximo (64 niveles) de comandos de programación estructurada.


La subconsulta devolvió más de un registro (Error 1860)

Las subconsultas vinculadas con los seis operadores normales <>, =, <=, >=, < o >, excepto ALL y ANY, sólo pueden producir una fila como resultado.


El subíndice está fuera del intervalo definido (Error 1234)

Se intentó hacer referencia a un elemento de matriz con un subíndice fuera del intervalo definido en la instrucción DIMENSION.


Suspenda el programa antes de usar RESUME (Error 1236)

RESUME sólo se puede aplicar cuando un programa está suspendido.


El formato de archivo Symphony versión 1.0 no es válido (Error 1673)

El archivo de Symphony que intenta importar no corresponde a la versión 1.0 o está dañado.


El formato del archivo Symphony versión 1.1 no es válido (Error 1674)

El archivo de Symphony que intenta importar no corresponde a la versión 1.1 o está dañado.


Error de sintaxis (Error 10)

Ha ejecutado un comando con una sintaxis incorrecta.

  • Escribió mal el nombre del comando o la variable, o utilizó una cláusula que no es válida en el contexto actual.

    Presione F1 para obtener Ayuda interactiva para el comando.


Error de sintaxis en la expresión de campo (Error 1242)

Se utilizó una expresión no válida que se refiere a un campo.


Las tabulaciones deben estar en orden ascendente (Error 228)

Las posiciones de tabulación definidas con la variable de sistema _TABS deben seguir un orden ascendente.


La tabla "alias" tiene uno o más índices no estructurales abiertos. Ciérrelos y vuelva a intentar BEGIN TRANSACTION (Error 1548)

Cierre todos los índices no estructurales (no .CDX) e intente de nuevo la operación.

Si hay otros índices abiertos en el archivo, sus operaciones de escritura irán directamente al disco y no se reflejarán en cambios de las tablas hasta que ejecute END TRANSACTION. Por lo tanto, si ejecuta un ROLLBACK, los índices no estructurales no serán correctos.


La tabla "nombre" ya existe en la base de datos (Error 1564)

Intentó agregar a la base de datos una tabla que ya estaba en la base de datos.


La tabla "nombre" está dañada. Se debe reparar antes de volver a utilizarla. (Error 2091)

El conteo de registros de la tabla no coincide con los registros actuales en la tabla o el tamaño del archivo en el disco no coincide con el tamaño de archivo esperado desde su cabecera. Reparar la tabla utilizando una utilidad de reparación de terceros apropiada para tablas de Visual FoxPro antes de abrir la tabla nuevamente.


Se hace referencia a la tabla "nombre" en una relación (Error 1577)

No puede quitar una tabla de una base de datos si esa tabla está implicada en una relación.

Elimine primero la relación.


El búfer de tablas para el alias "nombre" contiene cambios no confirmados (Error 1545)

El cursor citado tiene un búfer de tablas modificado y estos cambios se deben confirmar explícitamente utilizando TABLEUPDATE( ) o descartar utilizando TABLEREVERT( ) para que se pueda cerrar el cursor o cambiar el modo de almacenamiento en búfer.


No está activado el almacenamiento de tablas en búfer (Error 1596)

Intentó utilizar la función GETNEXTMODIFIED( ) que requiere que el almacenamiento en búfer de tablas esté activado.

Active el almacenamiento en búfer de tablas o utilice otra función distinta.


La tabla no se puede examinar porque el objeto Cursor ya no es válido. (Error 1556)

Cierre y vuelva a abrir el Diseñador de formularios para volver a sincronizar la tabla y el cursor.


La tabla no tiene ningún orden de índice establecido (Error 26)

Los registros de la tabla no siguen ningún orden.

  • No había un índice seleccionado para el archivo de tabla cuando se encontró un comando UPDATE que utilizaba la cláusula RANDOM.

    Seleccione un índice para el archivo de tabla.

  • Se intentó un FIND o SEEK contra una tabla sin orden de índice.

    Utilice SET ORDER TO para especificar un orden de índice.

  • Se ejecutó SET RELATION con una expresión no numérica.

    Proporcione una expresión numérica.


El número de tabla no es válido (Error 17)

Seleccione un número de tabla entre 1 y 225.


La operación de tabla no es válida durante la indización (Error 1690)

Intentó realizar una operación de tabla en una función definida por el usuario en la que se hace referencia a una expresión de índice.


El almacenamiento en búfer de tablas o de filas requiere que SET MULTILOCKS tenga el valor ON (Error 1589)

Todos los modos de almacenamiento en búfer requieren que MULTILOCKS esté activado. Para desactivar el almacenamiento en búfer, establezca en 1 la propiedad Buffering (DB_BUFOFF) utilizando CURSORSETPROP( ).


El nombre de etiqueta es demasiado largo (Error 1888)

Los nombres de etiqueta no pueden tener más de 10 caracteres.


La tabla de destino ya se usa en una relación (Error 1147)

Hay más de una relación entre el archivo de tabla seleccionado y uno de sus destinos.


Se canceló la generación de texto (Error 1792)

El programa de generación de texto, SCCTEXT.PRG (o el programa cuyo valor está almacenado en la variable de sistema _SCCTEXT), se ha detenido.

  • Presionó la tecla ESC.

    El programa estaba creando versiones de texto de archivos de proyecto para protegerlos en el control de origen. Evite presionar ESC mientras protege archivos.


La combinación de texto es recursiva. (Error 2044)

La instrucción Textmerge da como resultado una expresión que, en sí misma, realiza una combinación de texto.


El módulo de control ActiveX no se registró correctamente (Error 1438)

El archivo no parece ser un control ActiveX válido.

  • El control ActiveX no tiene una función de registro automático.

    Contacte con el proveedor del control ActiveX para obtener un control actualizado que contenga una función DllRegisterServer correcta.


El programa generador ya se está ejecutando (Error 1954)

Intentó iniciar un programa generador cuando el generador ya se estaba ejecutando. Esta operación no es válida.


La propiedad ChildOrder de un objeto Relation del entorno de datos ya no es válida. Se quitará la relación (Error 1478)

Debido a cambios en el entorno de datos, se quitó la relación de una propiedad ChildOrder.


No se encuentra el archivo de clase asociado a este campo; se ha borrado la asociación de clase. (Error 2020)

La clase no es válida o no se encuentra.

  • Modificó una tabla que tenía una asociación de clase o campo cuyo archivo de clase no se pudo leer.

    Asigne una clase válida al campo.


El Portapapeles contenía uno o más objetos que no se pudieron agregar al contenedor. Estos objetos no se pegaron (Error 1969)

Intentó pegar un objeto no válido (por ejemplo, un separador de barra de herramientas) en un formulario o control.


El archivo de Ayuda actual está vacío. (Error 2036)

El archivo de ayuda que ha especificado no contiene ninguna información. Especifique otro archivo.


El objeto actual no hereda de la clase "nombre" (Error 1935)

Especificó un nombre de clase que no está en la jerarquía de herencia del objeto actual.


Se ha liberado el objeto actual (Error 1945)

Ha ejecutado RELEASE THIS en el evento de destrucción del objeto actual.


El origen de datos para este objeto debe ser una referencia de variable (Error 1742)

Especificó un origen de datos o de control no válido para un objeto.

  • Un origen de datos o una propiedad ControlSource deben contener una variable.

    Asegúrese de que no especificó una expresión.


La base de datos debe abrirse en modo exclusivo (Error 1557)

Comandos como VALIDATE DATABASE RECOVER, PACK DATABASE y aquellos que implican la creación o modificación de objetos de base de datos requieren el acceso en modo exclusivo a la base de datos.

Cierre la base de datos y vuelva a abrirla con OPEN DATABASE FileName EXCLUSIVE.


El objeto DataObject no se puede modificar en los eventos OLEDragOver y OLEDragDrop. (Error 2021)

Los métodos de DataObject no son compatibles con estos eventos.


El valor predeterminado para el campo "nombre" no se evalúa como del tipo correcto para el campo (Error 1997)

Una expresión de valor predeterminado se debe evaluar al tipo de datos del campo.

Cambie la expresión para que se evalúe al tipo de datos correcto.


El directorio no está vacío (Error 1962)

No puede eliminar un directorio que contenga archivos o subdirectorios.


Los campos de la tabla "nombre" no coinciden con las entradas de la base de datos (Error 1984)

Cuando se abre una tabla de la base de datos, Visual FoxPro intenta confirmar que cada campo de la tabla tiene un objeto de campo coincidente en la base de datos.

  • La base de datos o la tabla están dañadas.

    Utilice VALIDATE DATABASE para identificar el problema.

  • La tabla que está abriendo no es la tabla correcta.

    Quítela y vuelva a agregar la tabla a la base de datos.


El archivo especificado en la cláusula FROM está vacío (Error 1131)

No hay registros en este archivo.


No se permite la cláusula IN para esta ventana (Error 1699)

Esta ventana no se puede colocar dentro de otra ventana.

  • Utilizó el comando ACTIVATE WINDOW para intentar colocar una de las ventanas del depurador dentro de otra ventana.

    Utilice una ventana distinta o cambie el entorno de depuración en la ficha Depurar del cuadro de diálogo Opciones.


La expresión de índice para el índice "nombre" contiene una referencia no válida a un campo de tipo Memo, General o Imagen (Error 1998)

No puede indexar en los tipos de campo Memo, General o Imagen.


Debe ejecutar el comando LOCATE antes que el comando CONTINUE (Error 42)

Intentó ejecutar un comando CONTINUE sin haber ejecutado primero un comando LOCATE.


El nombre "nombre" ya se usa para otro objeto. Elija otro nombre diferente (Error 1571)

Dos objetos de nivel superior en la base de datos no pueden tener el mismo nombre de base de datos.

Utilice DISPLAY DATABASE para ver una lista de todos los objetos de la base de datos.


El nombre del archivo de objeto de "archivo" está en uso por otro programa del proyecto (Error 2001)

Seleccione un nombre de archivo diferente.


No se permite la solicitud de red (Error 1793)

Visual FoxPro no pudo obtener información acerca de un archivo de la red.

  • No hay letras de unidad disponibles.

    Libere una letra de unidad y vuelva a intentar la solicitud.


El Asistente para vistas remotas no pudo obtener la información de columnas para esta tabla remota. Puede deberse a un error de ODBC o a que la tabla remota no sea propiedad del usuario actual.

Si la consulta que está utilizando no contiene el nombre del propietario para la tabla especificada, la información de la tabla remota no estará disponible.

Para corregir este problema, utilice el Diseñador de vistas para agregar el usuario actual como propietario de la tabla a la cadena SQL.

Si sigue recibiendo un error, debe corregir el problema en ODBC.


El controlador de impresora seleccionado no permite el acceso directo (Error 1524)

La impresora que seleccionó y configuró a través del sistema operativo no permite el acceso directo. Puede intentar usar el controlador Genérico/Sólo texto o un equivalente en Windows. Tenga en cuenta que la opción "Archivo ASCII" en Visual FoxPro pasa por alto el controlador de impresora y envía el contenido del archivo seleccionado directamente a la impresora. Tiene que asegurarse de que todos los archivos que se envíen de esta forma contienen comandos de impresora válidos y de que hay seleccionado un controlador de impresora adecuado.


La biblioteca de clases especificada no existe o no contiene una clase de miembro válida. (Error 2057)

Asegúrese de que la biblioteca de clases que ha especificado existe y contiene una clase de miembro válida.


No se encontró el archivo o la ruta especificada. (Error 2022)

No se encuentra el archivo que intenta arrastrar y soltar en una operación de OLE.


La clave especificada ya existe. (Error 2062)

La clave especificada existe para un miembro en la colección. Trate de utilizar una clave diferente. Las claves distinguen entre letras mayúsculas y minúsculas, por lo que se pueden utilizar claves con diferentes combinaciones de letras mayúsculas y minúsculas.


La clase de miembro especificada no existe o es de tipo incorrecto. (Error 2056)

Es necesario asegurarse de que la clase de miembro especificada existe y es del tipo correcto.


No se pueden realizar los cambios a la tabla porque la expresión de índice o de filtro para el índice "nombre" no sería válida (Error 1531)

Intentó utilizar el comando ALTER TABLE donde se obtendría como resultado un índice existente o una expresión de filtro no válida, aunque el comando ALTER TABLE no los modifique explícitamente.


Se ha movido el archivo de tabla "nombre". Valide la base de datos "nombre" y vuelva a intentarlo (Error 2004)

Un cursor que es parte de un entorno de datos no puede encontrar una tabla que es parte de una base de datos (archivo .dbc).


La tabla tiene campos memo que no se pueden convertir mientras esté abierta para sólo lectura (Error 1659)

Intentó realizar un operación de sólo lectura en un campo memo de tipo dBASE IV. Visual FoxPro no puede convertir un campo memo durante una operación de sólo lectura.


Debe convertir la tabla antes de anexar (Error 1778)

Intentó utilizar el comando APPEND FROM en una tabla que no se creó con Visual FoxPro.

Obtenga una copia de seguridad del archivo original y convierta una copia de la tabla para utilizarla con Visual FoxPro.


La cláusula TO sólo se puede usar con Form y FormSet modales (Error 1982)

Intentó utilizar el comando DO FORM con la cláusula TO:

DO FORM x TO variable.

Esta operación no es válida en objetos Form y FormSet no modales.


La regla de validación para el campo "nombre" no se evalúa como de tipo lógico o NULL (Error 1996)

El resultado de la regla de validación de campo debe ser de tipo lógico o NULL.


Existe un campo duplicado "nombre" en el esquema XML. (Error 2105)

Visual FoxPro no permite esquemas para definir más de un campo con el mismo nombre.

  • Compruebe, que la fuente XML devuelve el XML en el formato correcto y esperado.
  • Corregir el esquema suministrado y el documento XML.

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


Existe una tabla duplicada "nombre" en el esquema XML. (Error 2104)

Visual FoxPro no permite esquemas para definir más de una tabla con el mismo nombre.

  • Asegúrese de que la fuente XML devuelve el XML en un formato correcto y esperado.
  • Corrija el esquema suministrado y el documento XML.


Falta una palabra clave en la estructura de comandos FOR ... ENDFOR o DO CASE ... ENDCASE (Error 1213)

Para obtener más información, vea los temas FOR ... ENDFOR y DO CASE ... ENDCASE.


No existe ninguna aplicación asociada a la extensión del nombre de archivo indicado. (Error 2023)

El archivo que intenta arrastrar y soltar en una operación de OLE no está asociado a una aplicación.


No hay suficiente espacio en disco para "nombre" (Error 56)

No hay espacio suficiente en el disco para completar la operación.

  • El disco está lleno.

    Libere espacio en el disco y vuelva a intentar la operación.

  • En ciertas versiones de Novell, intentó extender un archivo que no tiene propietario. Se devuelve este error pero no es correcto.

    Resuelva el problema asignando antes un propietario al archivo.

  • El tamaño del archivo de tabla es superior a 2 gigabytes.

    Ha superado el tamaño máximo de los archivos DBF, FPT o CDX de Visual FoxPro. Disminuya el tamaño del archivo especificado.


No hay suficiente memoria para completar esta operación (Error 43)

Libere parte de la memoria actualmente en uso y vuelva a intentar esta operación.


Este elemento de matriz se ha definido como un objeto y no se puede volver a definir en la definición de clase (Error 1780)

Una vez que ha definido un elemento de matriz como un objeto miembro en una definición de clase, no se puede volver a definir.

Por ejemplo, el siguiente código causaría este error:

DEFINE CLASS test AS form
DIME a[1]
ADD OBJECT a[1] AS commandbutton
a[1] = 10
ENDDEFINE


No se admite este comando para vistas (Error 1777)

Las vistas no se pueden cambiar con este comando. Este error tiene las siguientes causas y soluciones:

  • El uso de uno de los siguientes comandos para cambiar la estructura de la vista: ALTER TABLE, CREATE TRIGGER, DELETE TRIGGER y MODIFY STRUCTURE.

    Utilice un comando que funcione en vistas o bien, utilice una tabla.

  • Modificar la estructura de un cursor de vista con el Diseñador de tablas.

    Utilice el Diseñador de vistas para modificar de forma permanente la estructura de los cursores producidos con una definición de vista.


Esta característica requiere MSXML4 SP1 o posterior. (Error 2116)

Visual FoxPro requiere que esté instalado MSXML 4 SP1 o superior para utilizar el objeto XMLAdapter.


Este archivo no es compatible con la versión actual de Visual FoxPro (Error 1748)

Un archivo creado en una versión preliminar de Visual FoxPro 3.0 no es compatible con la versión actual de Visual FoxPro. Ejecute el archivo 30Update.prg, incluido con la versión preliminar de Visual FoxPro 3.0, para convertir el archivo al formato actual.


Este objeto se deriva de una clase de base y no tiene una clase principal. (Error 1784)

No se puede encontrar la clase predeterminada. Para obtener más información, vea DODEFAULT( ).


Esta propiedad OLE no puede ser una expresión (Error 1782)

Intentó establecer alguna de las propiedades OLE como una expresión en la hoja de propiedades. Esta operación no es válida.


Esta operación no está permitida para objetos miembros de la clase (Error 1521)

Intentó clonar o copiar un objeto que es un miembro de una clase.


Esta propiedad es de sólo lectura (Error 1533)

No puede cambiar el valor de una propiedad de sólo lectura.


Para usar esta característica, incluya CODEPAGE=AUTO en el archivo CONFIG.FPW y reinicie Visual FoxPro (Error 1916)

Este error se debe a una designación no válida con el comando SET COLLATE.


Faltan argumentos (Error 1229)

Una llamada a función contiene menos argumentos de los requeridos.


Hay demasiados argumentos (Error 1230)

Una llamada a función contiene más argumentos de los permitidos.


Especificó demasiados caracteres en la cláusula PICTURE (Error 1310)

La cantidad de caracteres permitidos en una cláusula PICTURE está limitada por la memoria disponible.


Hay demasiadas columnas (Error 1872)

Puede tener un máximo de 255 campos por registro.


Se han especificado demasiadas extensiones (Error 1694)

Se han incluido demasiadas extensiones de archivo en una función GETFILE( ), LOCFILE( ) o PUTFILE( ).

El número máximo permitido es 30.


Hay demasiados archivos abiertos (Error 6)

Visual FoxPro intentó abrir más archivos que los especificados en el límite interno.


Se han usado demasiados nombres (Error 1201)

Durante la carga de un programa o la apertura de una tabla, se desbordó la tabla de nombres de Visual FoxPro.

Para corregir este error, divida el programa en módulos más pequeños.


Hay demasiados comandos PROCEDURE activados (Error 1250)

El número de procedimientos está limitado por la cantidad de memoria disponible.


Hay demasiados comandos READ activados (Error 1249)

Se superó el nivel máximo de anidamiento (5) de comandos READ.


Hay demasiadas variables (Error 22)

Se ha superado el número máximo de variables de memoria que se pueden crear.


Hay demasiadas ventanas abiertas (Error 1116)

No se pueden crear más ventanas.

  • Tiene abiertas demasiadas ventanas de aplicación.

    Cierre aplicaciones abiertas.

  • No hay suficientes recursos disponibles.

    Reinicie Windows.


El campo de tipo Total debe ser de tipo Date o Numérico (Error 1646)

Una expresión de informe que incluye una especificación de total no es de tipo numérico.


El ancho total de la etiqueta supera el tamaño permitido (Error 1246)

El comando LABEL detectó una condición en la que la suma de los anchos de las etiquetas individuales y los espacios de separación supera el ancho máximo permitido.


Error del desencadenante en "cursor". (Error 1539)

Cambie los valores del registro de forma que el desencadenante no falle o revierta el registro.


TRY/CATCH/FINALLY/ENDTRY no coinciden o hay un error (Error 2058)

TRY...CATCH...FINALLY necesita para ser compilada, finalizar con una instrucción ENDTRY.


La conversión de tipo no es compatible (Error 1532)

Error de conversión de parámetros de SQL. Error interno de conectividad.

Registre todas sus acciones recientes mientras utilizaba Visual FoxPro y llame al Soporte técnico de Microsoft.


No se permite la conversión de tipo para los parámetros de resultados (Error 1501)

Error de conversión de parámetros de SQL. Error interno de conectividad.

Registre todas sus acciones recientes mientras utilizaba Visual FoxPro y llame al Soporte técnico de Microsoft.


La conversión de tipo que requiere la propiedad DataType para el campo "nombre" no es válida (Error 1543)

La conversión de tipo entre el tipo de datos remoto y el tipo de datos de Visual FoxPro, especificada por la propiedad DataType del campo de vista, no es compatible para el campo de la vista que se está activando.

Cambie la propiedad DataType del campo de vista a un tipo válido.


No se encuentra la biblioteca de tipos "nombre" (Error 1444)

La biblioteca que ha especificado no existe. Compruebe la instrucción, su ubicación y el nombre de la biblioteca para asegurarse de que el archivo existe en donde lo ha especificado.


No se puede asociar un objeto con la propiedad XMLName vacía. (Error 2101)

El campo XMLName no puede estar vacío al añadir un objeto XMLTable o un objeto XMLField a una colección.

  • Asegúrese de que la propiedad XMLName para el objeto XMLField o el objeto XMLTable esté establecida a un valor válido y este valor es utilizado como clave.


No se puede cambiar la propiedad XMLName mientras el objeto XMLField pertenezca al objeto XMLTable. (Error 2103)

Visual FoxPro no permite que sea modificada la propiedad XMLName para un objeto XMLField, cuando el objeto XMLField pertenece a un objeto XMLTable.


No se puede cambiar la propiedad XMLName mientras el objeto XMLTable pertenezca al objeto XMLAdapter. (Error 2102)

Visual FoxPro no permite que la propiedad XMLName para un objeto XMLTable sea modificada, cuando el objeto XMLTable pertenece a un objeto XMLAdapter.


No se puede cerrar la vista fuera de línea en el modo ADMIN/ONLINE dentro de la transacción. (Error 2122)

No se puede cerrar la vista fuera de línea en el modo ADMIN/ONLINE dentro de la transacción.


No se pueden crear archivos de trabajo temporales (Error 1410)

El sistema operativo no permitió a un comando SORT o INDEX crear los archivos de trabajo temporales que requiere.

  • Su directorio está lleno.

    Quite algunos archivos.

  • Visual FoxPro no tiene permiso para tener acceso al directorio de archivos temporales.

    Compruebe sus permisos.


No se puede emitir XML, dos o más cursores utilizan páginas de códigos distintas. (Error 2133)

Ocurre cuando intenta llamar el método ToXML de un objetoXMLAdapter, cuando se utilizó el método AddTableSchema de objetos XMLAdapter para agregar un esquema de dos o más cursores que tienen diferentes pàginas de códigos.

  • Compruebe que todos los cursores que se están convirtiendo a XML tienen las mismas páginas de codigos.


No se puede generar un controlador de impresora (Error 1717)

El controlador de impresora asociado con el informe o la etiqueta que ha elegido no se puede generar o cargar.


No se puede deducir el esquema XML. (Error 2120)

Ocurre cuando la función XMLTOCURSOR( ) no consigue analizar el esquema suministrado y no puede crear el cursor.

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


No se encuentra la versión deseada de Visual FoxPro.

La versión de Visual FoxPro solicitada no se encuentra en la ruta de acceso que se ha especificado.


No se puede abrir la vista fuera de línea en el modo ADMIN/ONLINE dentro de la transacción. (Error 2121)

No se puede abrir la vista fuera de línea en el modo ADMIN/ONLINE dentro de la transacción.


No se puede procesar el error.

No se devuelve un número de error. Visual FoxPro cierra todos los archivos abiertos y sale.

Registre todas sus acciones recientes mientras utilizaba Visual FoxPro y llame al Soporte técnico de Microsoft.


No se puede registrar el control ActiveX (Error 1437)

El archivo no parece ser un control ActiveX válido.

  • El control ActiveX no tiene una función de registro automático.

    Contacte con el proveedor del control ActiveX para obtener un control actualizado que contenga una función DllRegisterServer correcta.


No se puede establecer la ubicación externa del esquema cuando se utiliza un esquema en línea. (Error 2123)

El valor de la propiedad XMLSchemaLocation de XMLAdapter, no se puede establecer a Esquema en línea (1), cuando el parámetro cSchemaLocation se ha utilizado.


Excepción estructurada no controlada (Error 2059)

Una excepción no controlada puede ocurrir bajo las siguientes circunstancias:

  • Ocurrió un error o excepción que no estaba incluido en un bloque TRY, CATCH o FINALLY y no fue atrapado por un control estructurado de errores, tal como TRY...CATCH...FINALLY.
  • Un control estructurado de errores no atrapa una excepción que ocurrió fuera de una estructura TRY...CATCH...FINALLY.

Se puede atrapar una excepción estructurada no controlada utilizando los siguientes controladores:

  • ON ERROR (Comando)
  • Error (Evento)
  • Controlador del sistema Visual FoxPro

Para cada uno de estos controladores, el número de error devuelto por la función ERROR( ) es 2059. Visual FoxPro proporciona detalles acerca del error original. También puede obtener información adicional acerca del error original que provocó la excepción no controlada, con las funciones SYS(2018) - Parámetro de mensaje de error, MESSAGE( ), y AERROR( ). La función SYS(2018) devuelve el mismo valor almacenado en el tercer elemento de la matriz devuelta por la función AERROR( ). La función MESSAGE( ) devuelve el mismo valor almacenado en el segundo elento en la matriz devuelta por AERROR( ).

Si la excepción no controlada fue causada por una instrucción THROW, el valor de SYS(2018) es 2071, o Error iniciado por el usuario (Error 2071).


Se infringe la unicidad del índice "nombre" (Error 1884)

Se infringe la condición de que la clave principal o candidata sea única.

Cambie los valores del registro o reviértalos.


Código de error nExpr desconocido

No se devuelve un número de error. Visual FoxPro cierra todos los archivos abiertos y sale.

Registre todas sus acciones recientes mientras utilizaba Visual FoxPro y llame al Soporte técnico de Microsoft.


Tecla de función desconocida (Error 104)

Intentó utilizar SET FUNCTION con una tecla de función que no coincide con el nombre o número de ninguna tecla de función existente.


"nombre" es un miembro desconocido (Error 1925)

Visual FoxPro intentó evaluar la siguiente sintaxis:

objvar.memberobj.property

No se encontró ningún miembro llamado memberobj.

  • Estaba intentando tener acceso a los miembros de una clase de controles desde fuera de la clase.

    Asegúrese de que las referencias a controles, como .ActiveControl, están dentro del alcance.


No se reconoce el verbo de comando (Error 16)

La palabra utilizada al principio de la línea de comandos no corresponde a ningún comando válido de Visual FoxPro. Para obtener más información, vea Palabras reservadas.


Revisión no reconocida del archivo de índice. Vuelva a crear el índice (Error 1141)

El archivo de índice tiene un formato incompatible con esta versión de Visual FoxPro.

Vuelva a crear el índice.


Conflicto de actualización (Error 1585)

Se ha detectado un conflicto de bloqueo optimista mientras se intentaba actualizar una vista.

Asegúrese de que su clave de actualización es válida.

Si desea confirmar los cambios en las tablas base, llame a TABLEUPDATE( ) con lForce. Esto sobrescribirá los cambios realizados en la tabla de base desde que se hizo la última búsqueda en la vista.

Para descartar los cambios locales hechos en la vista, llame a TABLEREVERT( ).


Conflicto de actualización. Se confirmaron algunos cambios en el lote actual de filas (Error 1595)

El texto completo del mensaje de error es:

Conflicto de actualización. Algunos cambios del lote actual de filas se realizaron. Use TABLEUPDATE( ) con el parámetro lForce para confirmar la actualización o la transacción manual para deshacer la actualización (Error 1595)

La actualización de tablas múltiples no se incluyó en una transacción remota y no se pudo realizar.

  • Algunas de las tablas implicadas en la actualización pueden estar confirmadas en las tablas de base remotas.

    Fuerce la actualización para la fila o lote de filas actual, o deshaga la transacción manual remota en la conexión actual. Para obtener más información, vea TABLEUPDATE( ).


No se permiten funciones definidas por el usuario (Error 1097)

Las funciones definidas por el usuario no se admiten en esta área de Visual FoxPro.

Quite la función definida por el usuario.


Operación de interfaz de usuario no permitida en este momento. (Error 2031)

Este error se produce cuando se activa el modo de servidor desatendido con SYS(2335). Si es posible, quite del servidor el código que crea el estado modal que produce este error.


Error Iniciado por el Usuario (Error 2071)

Ocurre cuando se utiliza el comando THROW para lanzar una excepción, desde un bloque TRY...CATCH...FINALLY hacia una estructura de control de errores superior.

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


Se debe utilizar el valor de XMLField.XMLName como valor clave para la colección. (Error 2100)

La propiedad XMLName para un XMLField debe utilizarse como clave, cuando agregue XMLField a la colección Fields.

  • Asegúrese que los objetos XMLField, que se están agregando a la colección tengan la propiedad XMLName establecida a un valor válido, y que este valor se utiliza como clave.


El valor de la propiedad XMLName, XMLNamespace o XMLPrefix debe ser una cadena Unicode. (Error 2134)

No se pueden asignar cadenas No-Unicode como valores para las propiedades XMLName, XMLNamespace y XMLPrefix de objetos XMLAdapter.

  • Utilice la función STRCONV( ) para convertir una cadena a Unicode. El siguiente código convierte una cadena a Unicode.
    oXMLTable = CREATEOBJECT("XMLTABLE")
oXMLTable.XMLName = STRCONV("MyTable",12)


Se debe utilizar el valor de XMLTable.XMLName como valor clave para la colección. (Error 2099)

La propiedad XMLName para XMLTable debe utilizarse como la clave, cuando agregue XMLTable a una colección Tables para un XMLAdapter.

  • Asegúrese que los objetos XMLTable que se están agregando a la colección tengan la propiedad XMLName establecida a un valor válido, y que este valor se utiliza como clave.


No se encuentra la variable "variable" (Error 12)

No se encuentra la variable o nombre de campo especificado.


La variable debe estar en la tabla seleccionada (Error 1134)

En las pantallas rápidas sólo se pueden utilizar campos de la tabla actualmente seleccionada.


vfp.VFPXMLProgId no admite el parámetro cSchemaLocation para XMLUpdateGram().. (Error 2137)

Ocurre cuando Visual FoxPro intenta utilizar el parámetro cSchemaLocation en una implementación personalizada de XMLUpdateGram con el vfp.VFPXMLProgid. Visual FoxPro no permite utilizar el parámetro cSchemaLocation en implementaciones personalizadas.

  • Si el parámetro cSchemaLocation, es requerido en su implementación personalizada de XMLUpdateGram, añada el valor del schema a través de su propia implementación.

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, mire el tema "Microsoft Visual FoxPro Soporte Técnico".


La definición de la vista ha cambiado (Error 1494)

No se puede volver a consultar la vista.

  • Ha cambiado la definición de la vista en la base de datos.

    Cierre la vista y vuelva a abrirla. Para asegurarse de que no se cambia la vista, abra la base de datos en modo exclusivo.


Los campos de la vista han cambiado. Las propiedades de campo Update y Key se han restablecido a sus valores predeterminados (Error 1568)

Intentó modificar una vista cuya estructura de tablas ha cambiado. Cuando elige Aceptar, el Diseñador de vistas presenta las condiciones anteriores de la vista, pero la ficha Criterios de actualización se reinicia en las condiciones predeterminadas. No ha habido actualización.


El archivo de vista no es válido (Error 127)

Intentó abrir un archivo de vista con datos no válidos.


Las vistas requieren DB_BUFOPTROW o DB_BUFOPTTABLE (Error 1597)

Los cursores basados en vistas locales o remotas sólo admiten actualización con un modo optimista de almacenamiento en búfer.


No se puede iniciar Visual FoxPro

Visual FoxPro no se puede iniciar o configurar por una de las siguientes razones:

  • Memoria insuficiente.

    Visual FoxPro no pudo asignar suficiente memoria para las estructuras internas. Libere memoria y reinicie Visual FoxPro.

  • Espacio insuficiente en disco.

    Visual FoxPro no pudo asignar suficiente espacio a los archivos temporales. Libere espacio en disco y reinicie Visual FoxPro.

  • No se pudo cargar Vfp7enu.dll.

    Visual FoxPro no pudo encontrar Vfp7enu.dll porque falta o se le ha cambiado el nombre. Vuelva a instalar Visual FoxPro.

  • No se pudo cargar el archivo de recursos que especificó con el modificador de inicio -L.

    Visual FoxPro no pudo encontrar el archivo que especificó. Compruebe que el archivo que especificó con el modificador -L está disponible.

  • Visual FoxPro requiere Windows 98, Windows ME, Windows 2000 o versiones posteriores.

    Instale uno de los sistemas operativos de Windows compatibles.

  • Producto utilizado por otra persona.

    Asegúrese de que tiene los derechos correctos de acceso en red. Vea la documentación de Windows.

  • Falta el archivo .EXE o no es válido.

    Vuelva a instalar Visual FoxPro.


El volumen no existe (Error 1922)

El volumen especificado en el comando SET VOLUME (admitido sólo en Visual FoxPro para Macintosh) no existe.


Advertencia: hay conversiones de datos no válidas que comienzan en el registro "número" (Error 1485)

Se informó de un error de conversión de datos mientras se buscaban datos en el registro número del conjunto remoto de resultados.

  • El controlador de ODBC no puede convertir algunos valores de datos remotos al tipo de datos de la vista local.

    Utilice una función de conversión en la instrucción SQL remota para convertir los datos a un tipo de datos diferente antes de la búsqueda; utilice la propiedad DataType del campo de la vista para cambiar el tipo de datos local.


Advertencia: hay conversiones de campo memo no válidas que comienzan en el registro "número" (Error 1486)

Se informó de un error de conversión de campos memo mientras se buscaban datos grandes en el registro número del conjunto remoto de resultados.

  • El controlador de ODBC no puede convertir algunos valores grandes de datos remotos al tipo de datos de la vista local.

    Utilice una función de conversión en la instrucción SQL remota para convertir los datos a un tipo de datos diferente antes de la búsqueda; utilice la propiedad DataType del campo de la vista para cambiar el tipo de datos local. Utilice valores específicos del servidor para limitar la cantidad de datos enviados por cada valor grande de datos.


Advertencia: no hay información disponible para comprobar los conflictos de actualizaciones remotas (Error 1496)

El controlador de ODBC no informa acerca del número de registros afectados por una instrucción UPDATE, DELETE o INSERT. No se informará acerca de conflictos de bloqueos optimistas en vistas remotas que utilicen esta conexión.

Asegúrese de que su código de actualización controla esta limitación.


Advertencia: no se puede establecer el tamaño del paquete de la conexión (Error 1483)

El controlador de ODBC no puede establecer el tamaño de paquete de la conexión. La conexión utilizará el tamaño de paquete predeterminado definido para el controlador. Esto puede afectar al rendimiento de esta conexión.

Compruebe la documentación del controlador y la red para ver formas alternativas de configurar el tamaño de paquetes de la red.


Advertencia: no se puede establecer el modo síncrono o asíncrono de la conexión (Error 1480)

El controlador de ODBC no pudo establecer el modo síncrono o asíncrono de la conexión. La conexión utilizará el modo síncrono o asíncrono predeterminado definido para el controlador. Esto no permitirá a las funciones de paso a través de SQL devolver el control mientras haya una llamada ODBC en curso.


Advertencia: no se puede establecer el tiempo de espera de la conexión (Error 1481)

El controlador de ODBC no puede establecer el tiempo de espera de la conexión. La conexión utilizará el tiempo de espera predeterminado definido para el controlador. Esto no permitirá a las funciones de paso a través de SQL devolver el control mientras haya una llamada ODBC en curso.


Advertencia: no se puede establecer el modo de transacciones de la conexión (Error 1487)

El controlador de ODBC no puede establecer el modo de transacción de la conexión. La conexión utilizará el modo de transacción predeterminado definido para el controlador.


Advertencia: la clave definida por la propiedad KeyField para la tabla "alias" no es única (Error 1495)

La clave especificada para esta tabla cambió más de una fila en la tabla de base para algunas filas de la vista remota que se estaban actualizando.

Vuelva a definir la clave utilizando la propiedad KeyField de la vista.


Advertencia: los siguientes "cExpr" registros modificados ya se han actualizado de forma remota (Error 1484)

Se produjo un error mientras se intentaba actualizar un lote de filas modificadas de una vista remota en el cursor de vista, después de actualizar correctamente el lote en la tabla de base remota.

Desactive la propiedad de vista SendUpdates y confirme los registros llamando a TABLEUPDATE( ).


Advertencia: no se puede establecer el tiempo de espera de la consulta (Error 1482)

El controlador de ODBC no puede establecer el tiempo de espera de consulta de la conexión. La conexión utilizará el tiempo de espera de consulta predeterminado, definido para el controlador.


El argumento de ancho o número de decimales no es válido (Error 1908)

El argumento de longitud o de decimales de la función STR( ) no es válido.

La suma del margen izquierdo especificado y la sangría del párrafo excede el margen derecho.


El archivo WIN.INI o el Registro están dañados (Error 1955)

Intentó obtener información de impresión desde el sistema operativo utilizando PRTINFO( ) o SET PRINTER TO, pero no hay una impresora predeterminada seleccionada.

Utilice Impresoras en el Panel de control para seleccionar una impresora predeterminada.


No se ha definido la ventana "nombre" (Error 1714)

Hizo referencia a una ventana que no existe.

  • La ventana no se ha creado o ya ha sido destruida.

    Cree la ventana o haga referencia a una ventana distinta.


El formato del archivo de ventana no es válido (Error 1632)

El archivo de ventana (.WIN) que intenta restaurar contiene datos no válidos.


La ventana no se ha activado mediante ACTIVATE WINDOW (Error 215)

Intentó utilizar una ventana sin haberla activado. Para obtener más información, vea ACTIVATE WINDOW


La ventana no se ha definido mediante DEFINE WINDOW (Error 214)

Intentó activar una ventana sin haberla definido.

Utilice el comando DEFINE WINDOW antes de utilizar el comando ACTIVATE WINDOW.


La ventana especificada en DEFINE WINDOW tiene coordenadas no válidas (Error 332)

Intentó definir las coordenadas de una ventana fuera del intervalo permitido.


Incoherencia en WITH/ENDWITH (Error 1939)

Debe haber una instrucción ENDWITH para cada instrucción WITH.


No se encuentra la hoja de cálculo "nombre" (Error 1775)

Intentó especificar un nombre de hoja de cálculo que no coincide con ningún nombre del archivo .XLS especificado.

Compruebe el nombre de la hoja de cálculo e intente de nuevo la operación.


La hoja A del archivo Lotus 1-2-3 versión 3.0 está oculta (Error 1680)

Visual FoxPro no puede importar una hoja de cálculo oculta.


El documento XML no tiene un elemento raíz. (Error 2124)

Visual FoxPro no permite DOM vacío o nodos DOM para ser asociados al objeto XMLAdapter .


El documento XML no es un DiffGram. (Error 2126)

Visual FoxPro no permite que sean llamados los métodos ApplyDiffGram y ChangesToCursor cuando la propiedad IsDiffgram del objeto XMLTable está establecida como Falso (.F.).


El documento XML no se ha cargado. (Error 2096)

El método ApplyDiffGram, el método ChangesToCursor, el método ToCursor y el objeto asociado XMLAdapter deben tener un documento XML cargado.

  • Verifique en los objetos XMLAdapter la propiedad IsLoaded para ver si un documento XML ha sido cargado.


Error XML: "error" (Error 2110)

Ocurre cuando un error es llamado desde un objeto MSXML, mientras intentaba cargar o asociar XML.


El nodo XML no pertenece a MSXML4.DOMDocument. (Error 2128)

Visual FoxPro requiere que los datos XML no puedan ser accedidos cuando no exista un documento padre.


Error de análisis de XML (Error 1435)

Este error es provocado por el analizador MSXML al leer una fuente XML cuando es pasada a la función XMLTOCURSOR( ) es debido usualmente a que ha recibido un formato XML indebido. Para ver el error específico del analizador, vea el archivo XML en un visualizador.


El esquema XML es demasiado complejo. (Error 2094)

El método LoadXML fue activado para entender completamente el esquema XML suministrado.

  • Verifique para estar seguro que el esquema suministrado contiene tipos de datos XSD válidos o el esquema y el formato XML está soportado por Visual FoxPro.


El objeto XMLAdapter no tiene ninguna tabla asociada. (Error 2129)

Visual FoxPro requiere que uno o varios objetos XMLTable estén asociados con un objeto XMLAdapter, antes de intentar llamar al método ToXML.

  • Ejecute el método AddTableSchema del objetoXMLAdapter para crear las colecciones XMLTable y XMLField o en caso contrario cree estos elementos.


No se puede llamar a XMLAdapter.ToXML mientras que haya un documento XML cargado. (Error 2107)

Visual FoxPro no permite ejecutar el método ToXML cuando ya ha sido cargado un documento XML.

  • Verifique la propiedad IsLoaded para asegurarse que no haya sido cargado un documento XML.
  • Utilice el método ReleaseXML para liberar el documento cargado actualmente.


XMLAdapter.XMLName está vacío. (Error 2127)

Visual FoxPro requiere que sea especificada la propiedad XMLName para un XMLTable, antes que sean llamados los métodos ApplyDiffgram y ChangesToCursor.


XMLAdapter: fractionDigits no debe ser mayor o igual que maxLength. (Error 2118)

El valor de la propiedad FractionDigits no puede ser mayor que el valor de la propiedad MaxLength.


El objeto XMLField ya está asociado con el objeto XMLTable. (Error 2144)

Visual FoxPro no permite que objetos XMLField sean añadidos a objetos XMLTable, colección XMLField, cuando ya están asociados con otro objeto XMLTable.

  • Puede verificar para ver si un objeto XMLField ya está asociado a un objeto XMLTable verificando su propiedad XMLTable. Si no está asociado, el valor de la propiedad XMLTable será nulo (NULL). En caso contrario, va a devolver una referencia de objeto perteneciente al objeto XMLTable.


XMLTable tiene una tabla secundaria. (Error 2109)

Visual FoxPro no permite utilizar el método ChangesToCursor en un objeto XMLTable que contiene una referencia de objeto XMLTable secundario. No puede crear un objeto utilizando el método ChangesToCursor cuando el XMLTable representa los resultados de la combinación de una o más tablas.


El objeto XMLTable ya tiene un objeto primario o está asociado con el objeto XMLAdapter. (Error 2132)

El objeto XMLTable no puede ser agregado como una referencia de tabla secundaria a otro objeto XMLAdapter, si es ya una tabla secundaria o está asociada con otro objeto XMLAdapter.


El objeto XMLTable no tiene campos asociados. (Error 2097)

Un objeto XMLTable debe tener asociado objetos XMLField para ejecutar los métodos ToCursor y ChangesToCursor.


El objeto XMLTable no tiene asociado un objeto XMLAdapter. (Error 2095)

Visual FoxPro requiere que un objeto XMLTable tenga asociado un objeto XMLAdapter.

  • Compruebe que la propiedad XMLTable.XMLAdapter esté asociada con un objeto XMLAdapter.


El objeto XMLTable con XMLNombre "nombre" no tiene campos asociados. (Error 2130)

Visual FoxPro requiere que el objeto XMLTable contenga un objeto u objetos XMLField, antes que el método ToXML de los objetos XMLAdapter pueda ser llamado.

  • Ejecute el método AddTableSchema de los objetos XMLAdapter, para crear las colecciones XMLTable y XMLField, o establezca de otra forma estos items.


XMLTable.Alias está vacío. (Error 2108)

Los métodos ToCursor y ChangesToCursor no pueden ser llamados cuando la propiedad Alias de XMLTable está vacía y el parámetro cAlias no ha sido utilizado.


No puede cambiar el RecordSource de un objeto BROWSE (Error 1772)

El objeto Browse debe permanecer alineado con su tabla.

  • Intentó cambiar la propiedad RecordSource utilizando un programa.

    Para examinar una tabla distinta, cierre el objeto Browse actual y examine la nueva tabla. Para obtener más información, vea BROWSE o RecordSource.


Debe utilizar una expresión lógica con una cláusula FOR o WHILE (Error 1127)

Una cláusula FOR o WHILE de un comando no contiene una expresión lógica. Para obtener más información, vea Crear expresiones de tipo Lógico.


Debe utilizar una expresión lógica con FILTER (Error 37)

Se ha intentado ejecutar SET FILTER TO en una expresión que no es lógica. Para obtener más información, vea Crear expresiones de tipo Lógico.


Mensajes de error ordenados por número

Saltar al siguiente número:

1 | 100 | 200 | 300 | 1000
1100 | 1200 | 1300 | 1400 | 1500
1600 | 1700 | 1800 | 1900 | 2000
2100 |  |  |  |

***

*** | *fecha incorrecta*
*** | No se puede asignar el mapa de pantalla
*** | No se puede crear el área de trabajo del programa.
*** | No se puede encontrar el programa de revisión ortográfica.
*** | No se puede encontrar el programa de presentación.
*** | No se puede encontrar el programa de revisión ortográfica.
*** | No se puede encontrar el programa Asistente.
*** | No se puede abrir el archivo de configuración.
*** | Error fatal nExpr al notificar el error nExpr.
*** | *Interrumpido*
*** | Archivo compacto EXE no válido. Vuelva a generar el archivo EXE.
*** | El nombre de campo no es válido o está duplicado
*** | El archivo EXE no es válido o falta.
*** | Requiere una expresión lógica.
*** | Menú emergente demasiado grande; se muestran las primeras nExpr entradas
*** | No se ha instalado correctamente el producto.
*** | No se encuentra el código fuente
*** | El código fuente no está actualizado
*** | El Asistente para vistas remotas no pudo obtener la información de columnas para esta tabla remota. Puede deberse a un error de ODBC o a que la tabla remota no sea propiedad del usuario actual.
*** | No se encuentra la versión deseada de Visual FoxPro.
*** | No se puede procesar el error.
*** | Código de error nExpr desconocido
*** | No se puede iniciar Visual FoxPro

1

1 | El archivo "nombre" no existe. (Error 1)
3 | El archivo está en uso (Error 3)
4 | Se ha encontrado el final del archivo (Error 4)
5 | El registro está fuera del intervalo (Error 5)
6 | Hay demasiados archivos abiertos (Error 6)
7 | El archivo ya existe (Error 7)
9 | No coinciden los tipos de datos (Error 9)
10 | Error de sintaxis. (Error 10)
11 | El valor, tipo o número del argumento de la función no es válido. (Error 11)
12 | No se encuentra la variable "variable". (Error 12)
13 | No se encuentra el alias (Error 13)
15 | No es una tabla (Error 15)
16 | No se reconoce el verbo de comando (Error 16)
17 | El número de tabla no es válido (Error 17)
18 | La línea es demasiado larga (Error 18)
19 | El archivo de índice no corresponde a la tabla (Error 19)
20 | El registro no está incluido en el índice (Error 20)
21 | La longitud de las cadenas de variables excede la memoria disponible (Error 21)
22 | Hay demasiadas variables (Error 22)
23 | La expresión de índice excede la longitud máxima (Error 23)
24 | El nombre de alias ya está en uso (Error 24)
26 | La tabla no tiene ningún orden de índice establecido (Error 26)
27 | No es una expresión de tipo Numérico (Error 27)
30 | La posición de fila o de columna está fuera de la pantalla (Error 30)
31 | La referencia al subíndice no es válida (Error 31)
34 | Operación no válida para campos de tipo Memo, General o Imagen (Error 34)
36 | El comando contiene una frase o palabra clave no reconocida (Error 36)
37 | Debe utilizar una expresión lógica con FILTER (Error 37)
38 | Se ha encontrado el principio del archivo (Error 38)
39 | Desbordamiento numérico. Se han perdido datos (Error 39)
41 | El archivo memo "nombre" no existe o no es válido (Error 41)
42 | Debe ejecutar el comando LOCATE antes que el comando CONTINUE (Error 42)
43 | No hay suficiente memoria para completar esta operación (Error 43)
44 | Relación cíclica (Error 44)
45 | No es una expresión de tipo Carácterr (Error 45)
46 | El resultado de la expresión no es válido (Error 46)
47 | No hay campos para procesar (Error 47)
50 | El archivo de informe "nombre" no es válido (Error 50)
52 | No hay ninguna tabla abierta en el área de trabajo actual (Error 52)
54 | El archivo de etiquetas no es válido (Error 54)
55 | El archivo de memoria no es válido (Error 55)
56 | No hay suficiente espacio en disco para "nombre" (Error 56)
58 | LOG( ): se ha usado cero o un valor negativo como argumento (Error 58)
61 | El argumento de SQRT( ) no puede ser negativo (Error 61)
62 | No se puede tener acceso a caracteres después del final de la cadena (Error 62)
67 | Error del evaluador de expresiones (Error 67)
78 | Error en el dominio de ** o ^ (Error 78)
91 | No se cargó el archivo en memoria con el comando LOAD (Error 91)
94 | Debe especificar parámetros adicionales (Error 94)
95 | La instrucción no está permitida en modo interactivo (Error 95)
96 | Error de anidamiento (Error 96)

100

101 | No se puede abrir el archivo "archivo". (Error 101)
102 | No se puede crear el archivo "archivo". (Error 102)
103 | Se excedió el nivel permitido de anidamiento de DO. (Error 103)
104 | Tecla de función desconocida. (Error 104)
107 | Incompatibilidad entre el tipo de operador y el tipo de operando. (Error 107)
108 | Otro usuario está utilizando el archivo. (Error 108)
109 | Otra persona está usando el registro. (Error 109)
110 | Debe abrir el archivo en modo exclusivo. (Error 110)
111 | No se puede actualizar el objeto Cursor "cursor", ya que es de sólo lectura. (Error 111)
112 | La longitud de clave no es válida. (Error 112)
114 | El índice no corresponde a la tabla. Elimine el archivo de índice y vuelva a crear el índice. (Error 114)
115 | El encabezado del archivo .DIF no es válido. (Error 115)
116 | El vector .DIF no es válido; incoherencia de campos .DBF. (Error 116)
117 | El indicador de tipo .DIF no es válido. (Error 117)
119 | El encabezado del archivo .SYLK no es válido. (Error 119)
120 | Los límites de dimensión del archivo .SYLK no son válidos. (Error 120)
121 | El formato del archivo .SYLK no es válido. (Error 121)
124 | El redireccionamiento de la impresora no es válido. (Error 124)
125 | La impresora no está preparada. (Error 125)
127 | El archivo de vista no es válido (Error 127)
130 | El registro no está bloqueado (Error 130)
138 | No hay campos para copiar (Error 138)
152 | Falta una expresión (Error 152)
164 | El título de menú no se ha definido con DEFINE PAD (Error 164)
165 | El menú no se ha definido con DEFINE POPUP (Error 165)
166 | No hay ningún elemento definido para este menú (Error 166)
167 | La posición del elemento de menú debe ser un número positivo (Error 167)
168 | El menú no se ha definido con DEFINE MENU (Error 168)
169 | No se puede definir el elemento de menú (Error 169)
170 | No se puede liberar el elemento de menú (Error 170)
174 | No se puede volver a definir un menú que está en uso (Error 174)
175 | No se puede volver a definir un menú emergente que está en uso (Error 175)
176 | No se puede borrar un menú que está en uso (Error 176)
177 | No se puede borrar un menú emergente que está en uso (Error 177)
178 | El menú no se ha activado con ACTIVATE MENU (Error 178)
179 | El menú no se ha activado con ACTIVATE POPUP (Error 179)
181 | El menú especificado en ACTIVATE MENU ya está en uso (Error 181)
182 | El menú especificado en ACTIVATE POPUP ya está en uso (Error 182)

200

202 | La ruta o el nombre de archivo no es válido (Error 202)
214 | La ventana no se ha definido mediante DEFINE WINDOW (Error 214)
215 | La ventana no se ha activado mediante ACTIVATE WINDOW (Error 214)
216 | El modo de presentación no está disponible (Error 216)
221 | El margen izquierdo, incluida la sangría, debe ser menor que el margen derecho (Error 221)
222 | El número de líneas debe ser menor que la longitud de página (Error 222)
223 | El número de columnas debe estar entre 0 y 255 (Error 223)
225 | "nombre" no es una variable (Error 225)
226 | "nombre" no es una variable de archivo (Error 226)
227 | Las dimensiones del cuadro no son válidas (Error 227)
228 | Las tabulaciones deben estar en orden ascendente (Error 228)
230 | Las dimensiones de la matriz no son válidas (Error 230)
231 | Se ha usado un argumento no válido con la función SET (Error 231)
232 | "nombre" no es una matriz (Error 232)
255 | No es una base de datos válida de RapidFile (Error 255)
256 | No es una base de datos u hoja de cálculo válida de Framework II (Error 256)
279 | El menú no está seleccionado (Error 279)
287 | El menú es demasiado pequeño (Error 287)
291 | La expresión usada con ASIN( ) está fuera del intervalo (Error 291)
292 | No se puede usar 0 o un valor negativo como argumento para LOG10( ) (Error 292)
293 | La expresión usada con ACOS( ) está fuera del intervalo (Error 293)
297 | El formato del archivo Lotus 1-2-3 versión 2.0 no es válido (Error 297)

300

332 | La ventana especificada en DEFINE WINDOW tiene coordenadas no válidas (Error 332)
350 | El campo debe ser de tipo Memo (Error 350)
355 | La macro no está definida (Error 355)
356 | El formato del archivo de macros de teclado no es válido (Error 356)
392 | Al importar el archivo se supera la longitud máxima de registro (Error 392)

1000

1000 | Error interno de coherencia. (Error 1000)
1001 | Característica no disponible. (Error 1001)
1002 | Error de la operación de entrada o salida. (Error 1002)
1088 | El campo "nombre" es de sólo lectura. (Error 1088)
1097 | No se permiten funciones definidas por el usuario. (Error 1097)
1098 | Se ha llamado a la función _UserError( ) de la API. (Error 1098)

1100

1102 | No se puede crear el archivo "archivo". (Error 1102)
1103 | Desplazamiento de búsqueda no válido. (Error 1103)
1104 | Error al leer el archivo "archivo". (Error 1104)
1105 | Error al escribir en el archivo "archivo". (Error 1105)
1106 | No se puede tener acceso al archivo "archivo"; hay una transacción en curso. (Error 1106)
1108 | La imagen es demasiado grande, está dañada o tiene un formato incorrecto. (Error 1108)
1111 | El descriptor de archivo no es válido. (Error 1111)
1112 | Error al cerrar el archivo. (Error 1112)
1113 | El archivo no está abierto. (Error 1113)
1115 | La operación no es válida para el objeto Cursor. (Error 1115)
1116 | Hay demasiadas ventanas abiertas. (Error 1116)
1117 | La longitud del campo clave no coincide. (Error 1117)
1124 | La clave excede el tamaño permitido. (Error 1124)
1126 | El registro es demasiado largo. (Error 1126)
1127 | Debe utilizar una expresión lógica con una cláusula FOR o WHILE. (Error 1127)
1130 | No se encuentra la frase "campo". (Error 1130)
1131 | El archivo especificado en la cláusula FROM está vacío. (Error 1131)
1134 | La variable debe estar en la tabla seleccionada. (Error 1134)
1138 | La propiedad no tiene un valor predeterminado. (Error 1138)
1140 | La expresión FILTER excede el tamaño permitido. (Error 1140)
1141 | Revisión no reconocida del archivo de índice. Vuelva a crear el índice. (Error 1141)
1145 | Debe ser un campo clave de tipo Numérico o Carácter. (Error 1145)
1147 | La tabla de destino ya se usa en una relación. (Error 1147)
1148 | Se volvió a escribir la expresión mientras se ejecutaba el filtro. (Error 1148)
1149 | Memoria insuficiente para el búfer. (Error 1149)
1150 | Memoria insuficiente para la asignación de archivos. (Error 1150)
1151 | Memoria insuficiente para el nombre de archivo. (Error 1151)
1152 | No se puede tener acceso a la tabla seleccionada. (Error 1152)
1153 | No se puede cambiar el nombre del archivo en otro dispositivo. (Error 1153)
1156 | Hay nombres de campos duplicados. (Error 1156)
1157 | No se puede actualizar el archivo "archivo". (Error 1157)
1162 | No se encuentra el procedimiento "nombre". (Error 1162)
1163 | Se ha cerrado la tabla examinada. (Error 1163)
1164 | Se ha cambiado la estructura de examinar. (Error 1164)
1165 | "campo" no tiene relación con el área de trabajo actual. (Error 1165)
1166 | El cursor está dañado o tiene un formato erróneo. (Error 1166)
1167 | El icono está dañado o tiene un formato incorrecto. (Error 1167)
1168 | No se pudo agregar el icono al archivo ejecutable. (Error 1168)
1169 | El archivo de proyecto es de sólo lectura. (Error 1169)
1178 | No se ha cerrado el archivo de aplicación "archivo". (Error 1178)
1181 | No se pudo agregar el recurso de versión al archivo ejecutable. (Error 1181)
1183 | Ya existe esa relación. (Error 1183)
1184 | No se puede cerrar el archivo debido a que existen referencias pendientes. (Error 1184)
1190 | El archivo "nombre" es demasiado grande. (Error 1190)
1191 | No se puede guardar el formulario: no es válido el nombre de un objeto. (Error 1191)
1193 | Falta la sección .RTT. (Error 1193)
1194 | Error del comando de vínculo. (Error 1194)
1195 | El archivo de objeto "archivo" se compiló con una versión anterior de FoxPro. (Error 1195)
1196 | "archivo" no es un archivo .EXE de Visual FoxPro. (Error 1196)

1200

1201 | Se han usado demasiados nombres. (Error 1201)
1202 | Programa demasiado grande. (Error 1202)
1206 | Hay una definición recurrente en la macro. (Error 1206)
1211 | Falta una instrucción IF | ELSE | ENDIF. (Error 1211)
1212 | La estructura de anidamiento es demasiado profunda. (Error 1212)
1213 | Falta una palabra clave en la estructura de comandos FOR... ENDFOR o DO CASE... ENDCASE. (Error 1213)
1214 | ENDTEXT no tiene la instrucción TEXT correspondiente. (Error 1214)
1217 | Error de imagen en la instrucción GET. (Error 1217)
1220 | El comando contiene un carácter no válido. (Error 1220)
1221 | Falta una cláusula necesaria en el comando. (Error 1221)
1223 | La referencia a la variable no es válida. (Error 1223)
1225 | Debe ser una variable o una matriz. (Error 1225)
1226 | Debe ser una variable de archivo. (Error 1226)
1229 | Faltan argumentos. (Error 1229)
1230 | Hay demasiados argumentos. (Error 1230)
1231 | Falta un operando. (Error 1231)
1232 | DIMENSION contiene una declaración de variable sin los argumentos de subíndice necesarios. (Error 1232)
1234 | El subíndice está fuera del intervalo definido. (Error 1234)
1235 | La estructura no es válida. (Error 1235)
1236 | Suspenda el programa antes de usar RESUME. (Error 1236)
1238 | No se encuentra la instrucción PARAMETER. (Error 1238)
1241 | Hay un tipo de datos incorrecto en la expresión de grupo. (Error 1241)
1242 | Error de sintaxis en la expresión de campo. (Error 1242)
1243 | Error interno: hay demasiados caracteres en el informe. (Error 1243)
1245 | Hay una expresión no válida en el archivo de definición de etiqueta. (Error 1245)
1246 | El ancho total de la etiqueta supera el tamaño permitido. (Error 1246)
1249 | Hay demasiados comandos READ activados. (Error 1249)
1250 | Hay demasiados comandos PROCEDURE activados. (Error 1250)
1252 | El código compilado para esta línea es demasiado largo. (Error 1252)
1253 | No se puede cambiar el nombre del directorio actual (Error 1253)
1254 | No se pueden anidar etiquetas de clave. (Error 1254)
1255 | La etiqueta de clave "etiqueta" no es válida (Error 1255)
1256 | Sobran o faltan llaves en la etiqueta de clave (Error 1256)
1257 | La cadena de clave es demasiado larga (Error 1257)
1258 | Error en la cláusula PICTURE (Error 1258)
1294 | "nombre" no es un archivo de recursos válido (Error 1294)
1296 | Error al leer el recurso (Error 1296)
1297 | Sólo se permite el comando en modo interactivo1297)
1298 | La banda "nombre" es demasiado grande y no cabe en la página (Error 1298)

1300

1300 | Falta ) en el nombre de la función (Error 1300)
1304 | Falta ( en el nombre de la función (Error 1304)
1306 | Falta una coma (,) (Error 1306)
1307 | No se puede dividir entre 0 (Error 1307)
1308 | Espacio de pila insuficiente (Error 1308)
1309 | "archivo" no es un archivo de objeto (Error 1309)
1310 | Especificó demasiados caracteres en la cláusula PICTURE (Error 1310)
1313 | Creación de clase cancelada (Error 1313)
1337 | No se puede anidar el comando PRINTJOB (Error 1337)
1338 | La versión del archivo es incorrecta (Error 1338)

1400

1405 | RUN |! error del comando "Detalles" (Error 1405)
1410 | No se pueden crear archivos de trabajo temporales (Error 1410)
1411 | RUN |! La cadena del comando RUN|! es demasiado larga (Error 1411)
1412 | No se puede encontrar la variable de entorno COMSPEC (Error 1412)
1413 | El marco de página no puede ser tan pequeño (Error 1413)
1420 | El objeto OLE no es válido o está dañado (Error 1420)
1421 | No se puede activar el servidor OLE (Error 1421)
1422 | Error al guardar el objeto OLE (Error 1422)
1423 | Error al crear el objeto OLE (Error 1423)
1424 | Error al copiar el objeto OLE al Portapapeles (Error 1424)
1426 | Código de error OLE 0x"nombre" (Error 1426)
1427 | Código de excepción OLE IDispatch "nombre" (Error 1427)
1428 | Código de excepción OLE IDispatch "número" de "nombre": "nombre" (Error 1428)
1429 | Error de OLE (Error 1429)
1431 | Se ha excedido el número máximo de argumentos OLE (Error 1431)
1434 | La clase "nombre" no se ha registrado (Error 1434)
1435 | Error de análisis de XML (Error 1435)
1436 | En los campos de tipo General sólo se permiten objetos insertables (Error 1436)
1437 | No se puede registrar el control ActiveX (Error 1437)
1438 | El módulo de control ActiveX no se registró correctamente (Error 1438)
1439 | No es una clase ProjectHook (Error 1439)
1440 | Error de excepción OLE: "nombre" El objeto OLE puede estar dañado (Error 1440)
1441 | No se puede crear ninguna instancia para la clase porque el miembro "nombre" no existe. (Error 1441)
1442 | No se puede crear una instancia de la clase porque el miembro "nombre" contiene un número de parámetros incorrecto. (Error 1442)
1443 | No se encuentra la interfaz "nombre" (Error 1443)
1444 | No se encuentra la biblioteca de tipos "nombre". (Error 1444)
1445 | El objeto EventHandler "nombre" no implementa una interfaz. (Error 1445)
1462 | Error interno de coherencia "nombre" (Error 1462)
1463 | El servidor no ha devuelto ningún conjunto de resultados (Error 1463)
1465 | Error interno de coherencia de paso a través de SQL (Error 1465)
1466 | El controlador de conexión no es válido (Error 1466)
1467 | La propiedad no es válida para cursores locales (Error 1467)
1468 | La propiedad no es válida para cursores de tabla (Error 1468)
1469 | El valor de la propiedad está fuera de los límites (Error 1469)
1470 | El nombre de propiedad es incorrecto (Error 1470)
1471 | El formato de columna es incorrecto (Error 1471)
1472 | Se necesita el parámetro de la instrucción SQL para las llamadas SQLEXEC( ) no preparadas (Error 1472)
1473 | La propiedad de entorno no es válida (Error 1473)
1474 | Se ejecutó una llamada no válida mientras se ejecutaba una secuencia SQLEXEC( ) (Error 1474)
1475 | Se ejecutó una llamada no válida mientras se ejecutaba una secuencia SQLMORERESULTS( ) (Error 1475)
1476 | Se ejecutó una llamada no válida mientras se ejecutaba una secuencia SQLTABLES( ) (Error 1476)
1477 | Se ejecutó una llamada no válida mientras se ejecutaba una secuencia SQLCOLUMNS( ) (Error 1477)
1478 | La propiedad ChildOrder de un objeto Relation del entorno de datos ya no es válida. Se quitará la relación (Error 1478)
1479 | El nombre de columna de actualización "nombre" no es válido (Error 1479)
1480 | Advertencia: no se puede establecer el modo síncrono o asíncrono de la conexión (Error 1480)
1481 | Advertencia: no se puede establecer el tiempo de espera de la conexión (Error 1481)
1482 | Advertencia: no se puede establecer el tiempo de espera de la consulta (Error 1482)
1483 | Advertencia: no se puede establecer el tamaño del paquete de la conexión (Error 1483)
1484 | Advertencia: los siguientes "cExpr" registros modificados ya se han actualizado de forma remota (Error 1484)
1485 | Advertencia: hay conversiones de datos no válidas que comienzan en el registro "número" (Error 1485)
1486 | Advertencia: hay conversiones de campo memo no válidas que comienzan en el registro "número" (Error 1486)
1487 | Advertencia: no se puede establecer el modo de transacciones de la conexión (Error 1487)
1488 | No existe ninguna conexión asociada a este cursor (Error 1488)
1489 | No se pueden usar campos generales en la condición WHERE de una instrucción de actualización. Cambie la propiedad WhereType de la vista (Error 1489)
1490 | No se permite guardar un formulario convertido como una clase (Error 1490)
1491 | No se han especificado tablas de actualización. Use la propiedad Tables del objeto Cursor (Error 1491)
1492 | No se han especificado columnas clave para la tabla de actualización "nombre". Use la propiedad KeyFieldList del objeto Cursor (Error 1492)
1493 | Falta un parámetro de SQL (Error 1493)
1494 | La definición de la vista ha cambiado (Error 1494)
1495 | Advertencia: la clave definida por la propiedad KeyField para la tabla "alias" no es única (Error 1495)
1496 | Advertencia: no hay información disponible para comprobar los conflictos de actualizaciones remotas (Error 1496)
1497 | El nombre de conexión no es válido (Error 1497)
1498 | La instrucción SQL SELECT no es válida (Error 1498)
1499 | El parámetro "nombre" de SQL no es válido (Error 1499)

1500

1501 | No se permite la conversión de tipo para los parámetros de resultados (Error 1501)
1502 | No se puede escribir en el registro porque está en uso (Error 1502)
1503 | No se puede bloquear el archivo (Error 1503)
1504 | Función no compatible para cursores de paso a través de SQL (Error 1504)
1507 | El código de pantalla es demasiado grande para la memoria disponible (Error 1507)
1508 | Error al inicializar OLE (Error 1508)
1509 | Conversión cancelada. Ajuste BLOCKSIZE en el memo (Error 1509)
1510 | El formato de archivo no es válido. Si es un archivo de dBASE, debe convertirlo primero. Para convertirlo, escriba MODIFY LABEL archivo (Error 1510)
1520 | No hay ninguna base de datos abierta o establecida como activa (Error 1520)
1521 | Esta operación no está permitida para objetos miembros de la clase (Error 1521)
1522 | Error interno de coherencia de conectividad (Error 1522)
1523 | El usuario canceló la ejecución (Error 1523)
1524 | El controlador de impresora seleccionado no permite el acceso directo (Error 1524)
1525 | Esta función no está permitida en tablas remotas (Error 1525)
1526 | Error de conectividad: "nombre" (Error 1526)
1527 | No se encuentra la biblioteca ODBC, ODBC32.DLL. (Error 1527)
1528 | Falta el punto de entrada a ODBC, "nombre" (Error 1528)
1529 | Ya existe el archivo "nombre" como parte de una base de datos (Error 1529)
1530 | Búsqueda cancelada; la tabla remota está cerrada (Error 1530)
1531 | No se pueden realizar los cambios a la tabla porque la expresión de índice o de filtro para el índice "nombre" no sería válida (Error 1531)
1532 | La conversión de tipo no es compatible (Error 1532)
1533 | Esta propiedad es de sólo lectura (Error 1533)
1534 | La base de datos "alias" no está abierta (Error 1534)
1535 | No se puede cerrar esta base de datos porque la está usando un proyecto (Error 1535)
1536 | Esta función no es compatible con las tablas nativas (Error 1536)
1537 | No se puede agregar esta tabla: pertenece a la base de datos "nombre" (Error 1537)
1538 | Se está ejecutando un procedimiento almacenado (Error 1538)
1539 | Error del desencadenante en "cursor" (Error 1539)
1540 | El número de sesión no es válido (Error 1540)
1541 | La conexión "nombre" está ocupada (Error 1541)
1542 | Los campos de la tabla base han cambiado y ya no coinciden con campos de la vista. No se pueden establecer las propiedades de los campos de la vista (Error 1542)
1543 | La conversión de tipo que requiere la propiedad DataType para el campo "nombre" no es válida (Error 1543)
1544 | La propiedad DataType para el campo "nombre" no es válida (Error 1544)
1545 | El búfer de tablas para el alias "nombre" contiene cambios no confirmados (Error 1545)
1546 | No se puede cerrar la tabla durante la ejecución de una expresión vinculada a la tabla (Error 1546)
1547 | No se puede insertar una fila vacía desde una vista en su tabla o tablas base (Error 1547)
1548 | La tabla "alias" tiene uno o más índices no estructurales abiertos. Ciérrelos y vuelva a intentar BEGIN TRANSACTION (Error 1548)
1549 | La sesión de datos #número no se puede liberar si hay transacciones abiertas (Error 1549)
1550 | Error interno de coherencia DBC (Error 1550)
1551 | El archivo "nombre" es una base de datos no válida (Error 1551)
1552 | El archivo "nombre" no es una base de datos (Error 1552)
1553 | El archivo "nombre" es una base de datos (Error 1553)
1554 | Error al crear una instancia del objeto Cursor. No se puede abrir la tabla "alias". Se pasará por alto el objeto (Error 1554)
1555 | La expresión relacional no es válida (Error 1555)
1556 | La tabla no se puede examinar porque el objeto Cursor ya no es válido (Error 1556)
1557 | La base de datos debe abrirse en modo exclusivo (Error 1557)
1558 | El archivo "nombre" no forma parte de una base de datos (Error 1558)
1559 | No se encuentra la propiedad (Error 1559)
1560 | El valor de la propiedad no es válido (Error 1560)
1561 | La base de datos no es válida. Valídela (Error 1561)
1562 | No se puede encontrar el objeto "nombre" en la base de datos (Error 1562)
1563 | No se puede encontrar la vista "nombre" en la base de datos activa (Error 1563)
1564 | La tabla "nombre" ya existe en la base de datos (Error 1564)
1565 | El archivo "nombre" forma parte de una base de datos (Error 1565)
1566 | No se puede ejecutar el comando PACK en una base de datos mientras sus objetos tienen cursores abiertos (Error 1566)
1567 | La propiedad de la clave principal no es válida; valide la base de datos (Error 1567)
1568 | Los campos de la vista han cambiado. Las propiedades de campo Update y Key se han restablecido a sus valores predeterminados (Error 1568)
1569 | Base de datos "nombre": acceso al archivo denegado (Error 1569)
1570 | La base de datos es de sólo lectura (Error 1570)
1571 | El nombre "nombre" ya se usa para otro objeto. Elija otro nombre diferente (Error 1571)
1572 | No se puede eliminar un objeto de base de datos mientras está abierto en un diseñador (Error 1572)
1573 | No se puede cambiar el modo de un formulario visible (Error 1573)
1574 | Error al inicializar el objeto Application (Error 1574)
1575 | El nombre del objeto no es válido (Error 1575)
1576 | La clase "nombre" no se encuentra en la biblioteca de clases (Error 1576)
1577 | Se hace referencia a la tabla "nombre" en una relación (Error 1577)
1578 | El nombre de tabla de la base de datos no es válido (Error 1578)
1579 | No se puede ejecutar este comando en una tabla cuyos objetos Cursor estén en modo de almacenamiento de tablas en búfer (Error 1579)
1580 | Esta característica no está permitida para las tablas que no son .DBC (Error 1580)
1581 | El campo "nombre" no acepta valores Null (Error 1581)
1582 | Se infringe la regla de validación del campo "nombre" (Error 1582)
1583 | Infracción de la regla de validación del registro (Error 1583)
1584 | Error al leer una propiedad desde la base de datos. Se pasará por alto la propiedad (Error 1584)
1585 | Conflicto de actualización. (Error 1585)
1586 | La función requiere el modo de almacenamiento en búfer de filas o tablas (Error 1586)
1587 | Anidamiento no válido de OLDVAL( ) o CURVAL( ) (Error 1587)
1588 | No se puede ejecutar INSERT cuando está activado el almacenamiento en búfer de filas o tablas, o cuando hay limitaciones de integridad vigentes (Error 1588)
1589 | El almacenamiento en búfer de tablas o de filas requiere que SET MULTILOCKS tenga el valor ON (Error 1589)
1590 | Error del comando BEGIN TRANSACTION. El nivel de anidamiento es demasiado profundo (Error 1590)
1591 | No se puede ejecutar un comando END TRANSACTION sin el correspondiente comando BEGIN TRANSACTION (Error 1591)
1592 | No se puede ejecutar el comando ROLLBACK sin el correspondiente comando BEGIN TRANSACTION (Error 1592)
1593 | No se puede ejecutar el comando dentro de una transacción (Error 1593)
1594 | No es posible un bloqueo de archivo en una transacción después de bloquear los registros primarios (Error 1594)
1595 | Conflicto de actualización. Se confirmaron algunos cambios en el lote actual de filas (Error 1595)
1596 | No está activado el almacenamiento de tablas en búfer (Error 1596)
1597 | Las vistas requieren DB_BUFOPTROW o DB_BUFOPTTABLE (Error 1597)
1598 | Los códigos de regla y de desencadenante deben equilibrar el uso de la transacción (Error 1598)
1599 | La sesión de datos #número se vio forzada a deshacer (ROLLBACK) todas las transacciones para evitar el bloqueo (Error 1599)

1600

1600 | Memoria insuficiente para abrir una tabla con el comando USE (Error 1600)
1604 | No hay definido ningún elemento de menú (Error 1604)
1605 | No hay definido ningún menú (Error 1605)
1607 | Se ha excedido el número máximo de elementos de menú permitidos (128) (Error 1607)
1608 | Se ha excedido el número máximo de menús permitidos (25) (Error 1608)
1609 | Se ha excedido la longitud máxima de los elementos de menú (50) (Error 1609)
1611 | Los elementos y títulos de menú deben ser de tipo Caracter (Error 1611)
1612 | No se ha definido dicho menú o elemento de menú (Error 1612)
1621 | No hay ningún título definido para este menú (Error 1621)
1632 | El formato del archivo de ventana no es válido (Error 1632)
1637 | Para convertir un archivo memo debe abrirlo en modo exclusivo (Error 1637)
1640 | Denegado el acceso al Registro del sistema (Error 1640)
1642 | No se encuentra el recurso de conjunto de colores (Error 1642)
1643 | El controlador de la impresora está dañado (Error 1643)
1644 | No se encuentra el controlador de impresora (Error 1644)
1645 | El informe contiene un error de anidamiento (Error 1645)
1646 | El campo de tipo Total debe ser de tipo Fecha o Numérico (Error 1646)
1647 | La expresión de campo contiene un tipo de datos no válido (Error 1647)
1649 | No hay ningún comando PRINTJOB previo asociado a este comando (Error 1649)
1651 | No se permite usar CANCEL o SUSPEND (Error 1651)
1652 | Uso no válido de una función de Visual FoxPro como una matriz (Error 1652)
1653 | Error de anidamiento en la etiqueta (Error 1653)
1657 | El número de columnas debe estar entre 0 y el margen derecho (Error 1657)
1659 | La tabla tiene campos memo que no se pueden convertir mientras esté abierta para sólo lectura (Error 1659)
1661 | El formato del archivo de Microsoft Excel no es válido (Error 1661)
1662 | El formato del archivo Lotus 1-2-3 versión 1.0 no es válido (Error 1662)
1670 | El formato del archivo de Multiplan versión 4.0 no es válido (Error 1670)
1671 | No se puede importar desde archivos protegidos por contraseña (Error 1671)
1672 | No se puede anexar desde archivos protegidos por contraseña (Error 1672)
1673 | El formato de archivo Symphony versión 1.0 no es válido (Error 1673)
1674 | El formato del archivo Symphony versión 1.1 no es válido (Error 1674)
1678 | El formato del archivo Lotus 1-2-3 versión 3.0 no es válido (Error 1678)
1679 | Importar sólo la hoja A de los archivos Lotus 1-2-3 versión 3.0 (Error 1679)
1680 | La hoja A del archivo Lotus 1-2-3 versión 3.0 está oculta (Error 1680)
1681 | No se permite la cláusula PREVIEW con OFF/NOCONSOLE o TO PRINT/FILE (Error 1681)
1682 | No es una ventana definida por el usuario (Error 1682)
1683 | No se encuentra la etiqueta de índice (Error 1683)
1684 | Debe especificar un nombre de etiqueta o archivo de índice (Error 1684)
1685 | El archivo de proyecto no es válido (Error 1685)
1686 | El archivo de formulario "nombre" no es válido (Error 1686)
1687 | El archivo de menú no es válido (Error 1687)
1688 | El formato de archivo Paradox no es válido (Error 1688)
1689 | No se puede generar sin un programa principal (Error 1689)
1690 | La operación de tabla no es válida durante la indización (Error 1690)
1691 | El archivo de biblioteca "nombre" no es válido (Error 1691)
1693 | No se puede encontrar el programa de generación de menús (Error 1693)
1694 | Se han especificado demasiadas extensiones (Error 1694)
1695 | COLUMN | FORM | ALIAS | NOOVERWRITE | WIDTH sólo se permiten con la cláusula FROM (Error 1695)
1696 | Las cláusulas NOWAIT | SAVE | NOENVIRONMENT | IN | WINDOW no se permiten con la cláusula FROM (Error 1696)
1698 | COLUMN | ROW | ALIAS | NOOVERWRITE | SIZE | SCREEN sólo se permiten con la cláusula FROM (Error 1698)
1699 | No se permite la cláusula IN para esta ventana (Error 1699)

1700

1705 | Denegado el acceso al archivo (Error 1705)
1706 | Los archivos .IDX no se pueden ordenar en sentido descendente (Error 1706)
1707 | No se encuentra el archivo .CDX estructural (Error 1707)
1708 | El archivo está abierto en otra área de trabajo (Error 1708)
1709 | Otro usuario está utilizando el objeto de base de datos (Error 1709)
1710 | La cláusula MULTISELECT o MOVER no está permitida para los menús de estilo PROMPT (Error 1710)
1711 | Incoherencia en la revisión de la biblioteca API. Vuelva a generar la biblioteca (Error 1711)
1712 | El nombre de campo está duplicado o no es válido (Error 1712)
1713 | El ancho o el número de decimales del campo no son válidos (Error 1713)
1714 | No se ha definido la ventana "nombre" (Error 1714)
1715 | No se encuentra el servidor "servidor" (Error 1715)
1716 | No se encuentra la cola "cola" (Error 1716)
1717 | No se puede generar un controlador de impresora (Error 1717)
1718 | El archivo "nombre" es de sólo lectura (Error 1718)
1719 | El archivo de objeto "nombre" está en uso y no se puede quitar de la memoria (Error 1719)
1720 | No se puede ejecutar el comando SET FORMAT mientras hay un comando READ en curso en un archivo de formato (Error 1720)
1722 | La expresión de preprocesador no es válida (Error 1722)
1723 | Sobran o faltan #IF/#ELSIF/#ELSE/#ENDIF (Error 1723)
1724 | Falta #ENDIF (Error 1724)
1725 | La constante ya se ha creado mediante #DEFINE (Error 1725)
1726 | No se encuentra la biblioteca API (Error 1726)
1727 | Es necesario un archivo de Ayuda estilo .DBF (Error 1727)
1728 | La combinación de colores está reservada (Error 1728)
1731 | No se puede modificar una clase base (Error 1731)
1732 | El tipo de datos no es válido para esta propiedad (Error 1732)
1733 | No se encuentra la definición de clase "nombre" (Error 1733)
1734 | No se encuentra la propiedad "nombre" (Error 1734)
1735 | Error en la definición de clase. "Detalles" (Error 1735)
1736 | Error al crear una instancia del objeto "objeto" (Error 1736)
1737 | "nombre" es un método, evento u objeto (Error 1737)
1738 | La propiedad "nombre" no es un método o evento (Error 1738)
1739 | La configuración de la propiedad no se aplicará hasta que no se vuelva a cargar el entorno de datos (Error 1739)
1740 | "nombre" es una propiedad de sólo lectura (Error 1740)
1741 | No se puede agregar "nombre". La definición de clase es cíclica (Error 1741)
1742 | El origen de datos para este objeto debe ser una referencia de variable (Error 1742)
1743 | La propiedad "nombre" es de sólo lectura (Error 1743)
1744 | La clase de objeto no es válida para este contenedor (Error 1744)
1745 | "nombre" no es un evento de Visual FoxPro (Error 1745)
1746 | El nombre de archivo de clase para "nombre" no es válido (Error 1746)
1747 | El archivo de clase "nombre" no es válido (Error 1747)
1748 | Este archivo no es compatible con la versión actual de Visual FoxPro (Error 1748)
1749 | El archivo de formulario (.SCX) debe contener al menos un objeto Form (Error 1749)
1750 | El archivo se creó en una versión de Visual FoxPro posterior a la actual (Error 1750)
1751 | La versión del archivo de clase es posterior a la versión actual (Error 1751)
1752 | La clase "nombre" está en uso por MODIFY CLASS (Error 1752)
1753 | No se puede cargar la DLL de 32 bits "nombre" (Error 1753)
1754 | No se puede encontrar el punto de entrada "nombre" en la DLL (Error 1754)
1755 | No se puede agregar un objeto a esta clase (Error 1755)
1756 | Se quitó el objeto miembro; no se puede completar la operación de guardar (Error 1756)
1757 | La propiedad "nombre" está protegida (Error 1757)
1758 | No se puede cambiar la propiedad "nombre" en el método SetAll (Error 1758)
1759 | La expresión no es válida. Use una expresión válida para la propiedad "nombre" (Error 1759)
1760 | El miembro "nombre" es un miembro de clase (Error 1760)
1761 | La clase "nombre" ya existe (Error 1761)
1762 | No se encuentra la clase "nombre" (Error 1762)
1763 | La propiedad "nombre" ya existe (Error 1763)
1764 | La matriz no es miembro del objeto primario (Error 1764)
1765 | El método contiene errores de sintaxis. No se ha guardado el método (Error 1765)
1766 | No se encuentra el objeto "nombre" (Error 1766)
1767 | El objeto primario no permitirá esta configuración de propiedad para "nombre" (Error 1767)
1768 | No se puede agregar este objeto a un control cuadrícula (Error 1768)
1769 | No se puede agregar este objeto a un objeto Column (Error 1769)
1770 | No se puede borrar la clase "clase" porque está en uso (Error 1770)
1771 | Ya existe un objeto miembro con este nombre (Error 1771)
1772 | No puede cambiar el RecordSource de un objeto BROWSE (Error 1772)
1773 | El tipo de objeto de base de datos no es válido (Error 1773)
1774 | No se encuentra ninguna hoja (Error 1774)
1775 | No se encuentra la hoja de cálculo "nombre" (Error 1775)
1776 | La clase "nombre" está en uso (Error 1776)
1777 | No se admite este comando para vistas (Error 1776)
1778 | Debe convertir la tabla antes de anexar (Error 1778)
1779 | Error al agregar "nombre" al objeto. El nombre de miembro o propiedad está duplicado (Error 1779)
1780 | Este elemento de matriz se ha definido como un objeto y no se puede volver a definir en la definición de clase (Error 1780)
1781 | El origen del control de un objeto no se puede establecer como su propiedad Value (Error 1781)
1782 | Esta propiedad OLE no puede ser una expresión (Error 1782)
1783 | Se especificó una clase no válida para el comando @...Class (Error 1783)
1784 | Este objeto se deriva de una clase base y no tiene una clase principal (Error 1784)
1791 | No se puede encontrar el programa de generación de texto (Error 1791)
1792 | Se canceló la generación de texto (Error 1792)
1793 | No se permite la solicitud de red (Error 1793)
1794 | No es posible enumerar "nombre" (Error 1794)
1795 | No se puede organizar un formulario no transportado (Error 1795)
1796 | No se encuentra ningún registro para la plataforma actual (Error 1796)
1797 | Error durante la conversión (Error 1797)
1798 | No se puede encontrar el programa convertidor (Error 1798)
1799 | Se ha cancelado la conversión (Error 1799)

1800

1800 | SQL: error interno (Error 1800)
1801 | SQL: error al correlacionar campos (Error 1801)
1802 | SQL: no se puede encontrar la tabla (Error 1802)
1803 | SQL: la cláusula HAVING no es válida (Error 1803)
1804 | SQL: la instrucción no es válida (Error 1804)
1805 | SQL: hay demasiadas subconsultas (Error 1805)
1806 | SQL: no se encuentra la columna "campo | variable" (Error 1806)
1807 | SQL: la cláusula GROUP BY no es válida (Error 1807)
1808 | SQL: la cláusula ORDER BY no es válida (Error 1808)
1809 | SQL: memoria insuficiente (Error 1809)
1810 | SQL: uso de subconsulta no válido (Error 1810)
1811 | SQL: hay un agregado en una expresión no numérica (Error 1811)
1812 | SQL: la instrucción es demasiado larga (Error 1812)
1813 | SQL: uso no válido de UNION en la subconsulta (Error 1813)
1814 | SQL: no se aceptan consultas de este tipo (Error 1814)
1815 | "cursor" debe crearse mediante SELECT ... INTO TABLE (Error 1815)
1818 | SQL: se necesita la cláusula FROM (Error 1818)
1819 | SQL: DISTINCT no es válida (Error 1819)
1820 | SQL: SELECT contiene el carácter * no válido (Error 1820)
1822 | SQL: hay un campo agregado no válido (Error 1822)
1825 | SQL: la subconsulta no es válida (Error 1825)
1826 | SQL: SELECT no es válido (Error 1826)
1828 | SQL: GROUP BY no es válido en la subconsulta (Error 1828)
1830 | SQL: no se encuentra el índice (Error 1830)
1831 | SQL: error al generar el índice temporal (Error 1831)
1832 | "campo | variable" no es único y se debe calificar (Error 1832)
1833 | SQL: la cláusula WHERE no es válida (Error 1833)
1834 | SQL: hay demasiadas cláusulas UNION (Error 1834)
1839 | SQL: la operación se canceló (Error 1839)
1841 | SQL: hay demasiadas referencias a columnas (Error 1841)
1842 | SQL: el anidamiento en la subconsulta es demasiado profundo (Error 1842)
1844 | No se pueden anidar funciones agregadas (Error 1844)
1845 | La expresión SQL es demasiado compleja (Error 1845)
1846 | No se puede agrupar (GROUP) por campo agregado (Error 1846)
1851 | Las instrucciones SELECT no son compatibles con UNION "Detalles" (Error 1851)
1860 | La subconsulta devolvió más de un registro (Error 1860)
1864 | SQL: hay demasiados campos en UPDATE (Error 1864)
1865 | SQL: la expresión SET no es válida en UPDATE (Error 1865)
1866 | SQL: la especificación TOP no es válida (Error 1866)
1867 | SQL: TOP requiere un ORDER BY (Error 1867)
1870 | Se ha interrumpido la operación ALTER TABLE (Error 1870)
1871 | No se pueden eliminar (DROP) todas las columnas existentes (Error 1871)
1872 | Hay demasiadas columnas (Error 1872)
1875 | Se han producido múltiples advertencias al realizar las modificaciones de índice solicitadas (Error 1875)
1877 | No hay ninguna regla para DROP (Error 1877)
1878 | No hay ningún valor predeterminado para DROP (Error 1878)
1879 | No hay ninguna clave principal (Error 1879)
1880 | No se encuentra la tabla relacionada en la base de datos activa (Error 1880)
1881 | Error al cargar el archivo - número de registro n. "objeto" (o uno de sus miembros); "tema": "error" (Error 1881)
1882 | No se encuentra la etiqueta relacionada, o no es principal ni candidata (Error 1882)
1883 | La clave principal ya existe (Error 1883)
1884 | Se infringe la unicidad del índice "nombre" (Error 1884)
1885 | Sólo pueden definirse como candidatas las etiquetas estructurales (Error 1885)
1886 | El índice no acepta NULL (Error 1886)
1887 | Hay una recurrencia no válida en la evaluación de la regla (Error 1887)
1888 | El nombre de etiqueta es demasiado largo (Error 1888)
1889 | Una tabla que participa en múltiples relaciones sólo puede tener un orden secundario (Error 1889)
1890 | SQL: no se puede determinar el tipo de datos de la columna SQL "columna" (Error 1880)

1900

1903 | Cadena demasiado larga (Error 1903)
1907 | El especificador de unidad no es válido (Error 1907)
1908 | El argumento de ancho o número de decimales no es válido (Error 1908)
1909 | No se puede actualizar el proyecto desde el metarchivo del proyecto (Error 1909)
1910 | Hay una recurrencia no válida en el controlador de impresora (Error 1910)
1911 | Este entorno requiere el producto traducido (Error 1911)
1912 | La operación no es válida para un campo de tipo General (Error 1912)
1913 | El campo debe ser de tipo General (Error 1913)
1914 | El número de la página de códigos no es válido (Error 1914)
1915 | No se encuentra la secuencia de ordenación "nombre" (Error 1915)
1916 | Para usar esta característica, incluya CODEPAGE=AUTO en el archivo CONFIG.FPW y reinicie Visual FoxPro (Error 1916)
1918 | El nombre del archivo es demasiado largo (Error 1918)
1922 | El volumen no existe (Error 1922)
1923 | No se encuentra el objeto "nombre" (Error 1923)
1924 | "nombre" no es un objeto (Error 1924)
1925 | "nombre" es un miembro desconocido (Error 1925)
1926 | No se pueden anidar definiciones de clases (Error 1926)
1927 | La instrucción no es válida en una definición de clase (Error 1927)
1928 | La instrucción sólo es válida en una definición de clase (Error 1928)
1929 | "nombre" sólo puede usarse en un método (Error 1929)
1930 | No se puede volver a definir "nombre" (Error 1930)
1931 | La instrucción no está en un procedimiento (Error 1931)
1932 | No se puede cerrar "nombre" mientras está suspendido (Error 1932)
1933 | El archivo "nombre" no está cerrado (Error 1933)
1934 | La instrucción sólo es válida en un método (Error 1934)
1935 | El objeto actual no hereda de la clase "nombre" (Error 1935)
1936 | Objeto Application no inicializado (Error 1936)
1937 | No se encuentra el archivo de procedimiento "nombre" (Error 1937)
1938 | El objeto no está contenido en un "nombre" (Error 1938)
1939 | Incoherencia en WITH/ENDWITH (Error 1939)
1940 | La expresión no es válida fuera de WITH/ENDWITH (Error 1940)
1941 | El código de error no es válido (Error 1941)
1942 | Los objetos no pueden asignarse a matrices (Error 1942)
1943 | El miembro "nombre" no se evalúa como un objeto (Error 1943)
1944 | No se puede encontrar el programa generador (Error 1944)
1945 | Se ha liberado el objeto actual (Error 1945)
1946 | La versión del archivo de proyecto "nombre" es incorrecta (Error 1946)
1947 | La expresión es demasiado compleja (Error 1947)
1948 | No se puede modificar una clase que está en uso (Error 1948)
1949 | El nombre de clase no es válido (Error 1949)
1950 | La definición de clase "nombre" es recurrente (Error 1950)
1951 | No se puede borrar el objeto "objeto" porque está en uso (Error 1951)
1952 | No se puede basar una vista en sí misma (Error 1952)
1953 | Esta característica sólo está disponible si el objeto está en modo de diseño (Error 1953)
1954 | El programa generador ya se está ejecutando (Error 1954)
1955 | El archivo WIN.INI o el Registro están dañados (Error 1955)
1956 | Denegado el acceso a la impresora (Error 1956)
1957 | Error al tener acceso a la cola de impresión (Error 1957)
1958 | Error al cargar el controlador de impresora (Error 1958)
1959 | Las coordenadas no son válidas (Error 1959)
1960 | Redefinición no válida de la variable "nombre" (Error 1960)
1961 | Ya existe un subdirectorio o archivo "nombre" (Error 1961)
1962 | El directorio no está vacío (Error 1962)
1963 | No se encuentra el directorio (Error 1963)
1964 | No se encuentra ninguna PageFrame o Page en el FormSet o el formulario cuya propiedad WindowType se ha establecido como READ o READ MODAL (Error 1964)
1965 | Uno de los miembros de esta clase está basado en una clase no visual. No se puede escribir en el archivo .VCX (Error 1965)
1966 | El entorno de datos ya está cargado (Error 1966)
1967 | El entorno de datos ya está descargado (Error 1967)
1968 | Uno de los miembros de este formulario o FormSet está basado en una clase no visual. No se puede escribir en un archivo .SCX (Error 1968)
1969 | El Portapapeles contenía uno o más objetos que no se pudieron agregar al contenedor. Estos objetos no se pegaron (Error 1969)
1970 | No se puede volver a abrir el archivo de proyecto "nombre" (Error 1970)
1971 | No se puede compilar hasta que se haya completado el comando COMPILE actual (Error 1971)
1972 | La matriz "nombre" está en uso (Error 1972)
1973 | Error al crear la tabla: "nombre" (Error 1973)
1974 | No se puede asignar matrices a elementos de matriz (Error 1974)
1975 | No se ha creado ninguna instancia para el objeto miembro "nombre" (Error 1975)
1976 | No se puede resolver el vínculo primario (Error 1976)
1977 | Para poder actualizar este archivo, debe abrirlo en modo exclusivo. Vuelva a abrirlo (Error 1977)
1978 | No se puede modificar visualmente una clase de este tipo (Error 1978)
1979 | No se puede modificar visualmente una clase basada en una clase no visual (Error 1979)
1981 | Error de compilación en el archivo "nombre" (Error 1981)
1982 | La cláusula TO sólo se puede usar con Form y FormSet modales (Error 1982)
1983 | Los objetos "nombre" no pueden devolver un valor (Error 1983)
1984 | Los campos de la tabla "nombre" no coinciden con las entradas de la base de datos (Error 1984)
1985 | El objeto ya tiene un entorno de datos; no se puede usar otro con el método SaveAs (Error 1985)
1986 | Queda poca memoria GDI; cierre una o más ventanas e inténtelo de nuevo (Error 1986)
1987 | No se pueden agregar objetos por medio de programación al FormSet del Diseñador de formularios (Error 1987)
1988 | El valor de moneda está fuera del intervalo (Error 1988)
1989 | No se pueden eliminar objetos por medio de programación desde el Diseñador de formularios (Error 1989)
1991 | El archivo de formulario "nombre" es de una versión anterior de FoxPro. Debe convertirlo al formato actual para poder ejecutarlo (Error 1991)
1992 | "nombre" no es una función, procedimiento o programa (Error 1992)
1993 | No se encuentra el archivo de biblioteca de clases "nombre" (Error 1993)
1994 | No se encuentra el archivo de inclusión "nombre" (Error 1994)
1995 | Error al cargar el entorno de datos. La tabla está en uso (Error 1995)
1996 | La regla de validación para el campo "nombre" no se evalúa como de tipo lógico o NULL (Error 1996)
1997 | El valor predeterminado para el campo "nombre" no se evalúa como del tipo correcto para el campo (Error 1997)
1998 | La expresión de índice para el índice "nombre" contiene una referencia no válida a un campo de tipo Memo, General o Imagen (Error 1998)
1999 | Esta función no está implementada (Error 1999)

2000

2000 | Queda poca memoria, por lo que se ha deshabilitado la actualización de resultados (Error 2000)
2001 | El nombre del archivo de objeto de "archivo" está en uso por otro programa del proyecto (Error 2001)
2002 | No se puede crear una DLL sin clases públicas de OLE (Error 2002)
2003 | La cadena Changed Properties de OLE es de una versión incorrecta. Las propiedades subclasificadas se ignoran (Error 2003)
2004 | Se ha movido el archivo de tabla "nombre". Valide la base de datos "nombre" y vuelva a intentarlo (Error 2004)
2005 | Error en "nombre" - "propiedad": "error" (Error 2005)
2006 | No se puede encontrar el explorador de Web (Error 2006)
2007 | La operación para la vista sin conexión no es válida mientras esté fuera sin conexión (Error 2007)
2008 | La operación para la vista sin conexión no es válida mientras se usa en línea (Error 2008)
2009 | El objeto no es una vista sin conexión (Error 2009)
2010 | Las vistas sin conexión se deben abrir en modo exclusivo cuando se usan en línea (Error 2010)
2011 | La operación para la vista sin conexión no es válida (Error 2011)
2012 | No se puede llamar a SetFocus desde un evento When, Valid, RangeHigh o RangeLow (Error 2012)
2013 | No se puede abrir directamente el búfer de tablas persistentes (Error 2013)
2014 | Se borrarán los campos marcados como claves de actualización (Error 2014)
2015 | La vista sin conexión debe utilizarse en línea para este comando (Error 2015)
2016 | No se permite quitar un miembro de clase (Error 2016)
2017 | No se puede volver a utilizar la vista sin conexión en otro modo diferente (Error 2017)
2018 | Error de la reconexión de la vista sin conexión (Error 2018)
2019 | No se puede crear la vista sin conexión en una vista modificada actualmente (Error 2019)
2020 | No se encuentra el archivo de clase asociado a este campo; se ha borrado la asociación de clase (Error 2020)
2021 | El objeto DataObject no se puede modificar en los eventos OLEDragOver y OLEDragDrop (Error 2021)
2022 | No se encontró el archivo o la ruta especificada (Error 2022)
2023 | No existe ninguna aplicación asociada a la extensión del nombre de archivo indicado (Error 2023)
2024 | Infracción de uso compartido (Error 2024)
2026 | Id. local no válido (Error 2026)
2027 | Una llamada Declare a DLL ha producido una excepción (Error 2027)
2028 | Una llamada a API ha producido una excepción (Error 2028)
2029 | La clase "nombre" no es una clase Form (Error 2029)
2030 | No se puede eliminar el archivo "nombre" (Error 2030)
2031 | Operación de interfaz de usuario no permitida en este momento (Error 2031)
2032 | Constante Date/DateTime ambigua (Error 2032)
2033 | CTOD y CTOT pueden producir resultados incorrectos (Error 2033)
2034 | Valor Date/DateTime evaluado como un valor no válido (Error 2034)
2035 | Un valor Date/DateTime contiene caracteres no válidos (Error 2035)
2036 | El archivo de Ayuda actual está vacío. (Error 2036)
2042 | No se encuentra la tabla de Foxcode. Puede que la versión no sea correcta o que no sea compatible. (Error 2042)
2043 | Error de la secuencia de comandos de FoxCode "nombre". (Error 2043)
2044 | La combinación de texto es recursiva. (Error 2044)
2045 | No se puede establecer la propiedad DBCEventFile cuando DBCEvents está desactivado (Error 2045)
2046 | La tabla de FoxTask está dañada o su versión es incorrecta. (Error 2046)
2048 | Valor de COMATTRIB no válido para "nombre" (Error 2048)
2049 | Error al cargar la colección HtmlHelp 2.0. (Error 2049)
2050 | La ayuda de este tema o contexto no se ha implementado. (Error 2050)
2051 | La instrucción condicional del elemento de menú es demasiado larga. (Error 2051)
2052 | La cláusula OrderBy es demasiado larga. (Error 2052)
2055 | Error de análisis de consulta: intente volver a generar en el Asistente para consultas o mediante la ficha Combinación del Diseñador de vistas. (Error 2055)
2056 | La clase de miembro especificada no existe o es de tipo incorrecto. (Error 2056)
2053 | La cláusula GroupBy es demasiado larga. (Error 2053)
2056 | La clase de miembro especificada no existe o es de tipo incorrecto. (Error 2056)
2057 | La biblioteca de clases especificada no existe o no contiene una clase de miembro válida. (Error 2057)
2058 | TRY/CATCH/FINALLY/ENDTRY no coinciden o hay un error. (Error 2058)
2059 | Excepción estructurada no controlada. (Error 2059)
2060 | No se permite una instrucción RETURN/RETRY en TRY/CATCH. (Error 2060)
2061 | El índice o la expresión no coinciden con un miembro existente de la colección. (Error 2061)
2062 | La clave especificada ya existe. (Error 2062)
2063 | Se debe especificar una clave al agregar un elemento a esta colección. (Error 2063)
2064 | No se puede especificar una clave al agregar un elemento a esta colección. (Error 2064)
2068 | El entorno de datos "nombre" no contiene el objeto cursor. (Error 2068)
2069 | No se pueden utilizar formularios o clases Form que especifiquen una DEClass y DEClassLibrary en un conjunto de formularios. (Error 2069)
2071 | Error iniciado por el usuario (Error 2071)
2074 | El resultado no es compatible con el esquema del cursor. (Error 2074)
2075 | No se ha especificado la propiedad CursorSchema. (Error 2075)
2076 | CursorAdapter no permite esta operación. (Error 2076)
2077 | CursorAdapter no permite esta operación en estos momentos. (Error 2077)
2078 | CursorAdapter "nombre" no se puede cargar para diseño. (Error 2078)
2079 | No se puede cerrar o quitar el cursor asociado porque está actualmente en modo de diseño. (Error 2079)
2080 | ADODB.Recordset ya está abierto. (Error 2080)
2081 | ADODB.Command ya está abierto. (Error 2081)
2082 | No se puede actualizar ADODB.Recordset hasta que el cursor, creado mediante el método CursorAdapter.CursorFill, no se asocie a un objeto CursorAdapter.
2083 | No se puede actualizar ADODB.Recordset porque es de sólo lectura (Error 2083)
2084 | No se puede actualizar ADODB.Recordset porque no admite la propiedad Bookmark (Error 2084)
2085 | No se puede actualizar ADODB.Recordset porque el cursor FOX no tiene una columna ADOBookmark (Error 2085)
2090 | CursorAdapter no tiene un cursor asociado (Error 2090)
2091 | La tabla "nombre" está dañada. Se debe reparar antes de volver a utilizarla. (Error 2091)
2092 | CursorAdapter no encuentra el registro actual en el búfer. Puede que el registro se haya revertido (Error 2092)
2094 | El esquema XML es demasiado complejo. (Error 2094)
2095 | El objeto XMLTable no tiene un objeto XMLAdapter asociado. (Error 2095)
2096 | El documento XML no se ha cargado.. (Error 2096)
2097 | El objeto XMLTable no tiene campos asociados.. (Error 2097)
2098 | Elemento no válido en la colección XMLTable.Fields. (Error 2098)
2099 | Se debe utilizar el valor de XMLTable.XMLName como valor clave para la colección. (Error 2099)

2100

2100 | Se debe utilizar el valor de XMLField.XMLName como valor clave para la colección. (Error 2100)
2101 | No se puede asociar un objeto con la propiedad XMLName vacía. (Error 2101)
2102 | No se puede cambiar la propiedad XMLName mientras el objeto XMLTable pertenezca al objeto XMLAdapter. (Error 2102)
2103 | No se puede cambiar la propiedad XMLName mientras el objeto XMLField pertenezca al objeto XMLTable. (Error 2103)
2104 | Existe una tabla "nombre" duplicada en el esquema XML. (Error 2104)
2105 | Existe un campo "nombre" duplicado en el esquema XML. (Error 2105)
2107 | No se puede llamar a XMLAdapter.ToXML mientras que haya un documento XML cargado. (Error 2107)
2108 | XMLTable.Alias está vacío. (Error 2108)
2109 | XMLTable tiene una tabla secundaria. (Error 2109)
2110 | Error XML: "error" (Error 2110)
2112 | El cursor "nombre" está asociado a otro objeto CursorAdapter. (Error 2112)
2116 | Esta característica requiere MSXML4 SP1 o posterior. (Error 2116)
2118 | XMLAdapter: fractionDigits no debe ser mayoir o igual que maxLength. (Error 2118)
2120 | No se puede deducir el esquema XML. (Error 2120)
2121 | No se puede abrir la vista fuera de línea en modo ADMIN/ONLINE dentro de la transacción. (Error 2121)
2122 | No se puede cerrar la vista fuera de línea en modo ADMIN/ONLINE dentro de la transacción. (Error 2122)
2123 | No se puede establecer la ubicación externa del esquema cuando se utiliza un esquema en línea. (Error 2123)
2124 | El documento XML no tiene un elemento raíz. (Error 2124)
2125 | Los objetos CursorAdapter y XMLTable no pertenecen a la misma sesión de datos. (Error 2125)
2126 | El documento XML no es un DiffGram. (Error 2126)
2127 | XMLAdapter.XMLName está vacío. (Error 2127)
2128 | El nodo XML no pertenece a MSXML4.DOMDocument. (Error 2128)
2129 | El objeto XMLAdapter no tiene ninguna tabla asociada. (Error 2129)
2130 | El objeto XMLTable con "nombre" XMLName no tiene campos asociados. (Error 2130)
2132 | El objeto XMLTable ya tiene un objeto primario o está asociado con el objeto XMLAdapter. (Error 2132)
2133 | No se puede emitir XML, dos o más cursores utilizan páginas de códigos distintas. (Error 2133)
2134 | El valor de la propiedad XMLName, XMLNamespace o XMLPrefix debe ser una cadena Unicode. (Error 2134)
2135 | Ha fallado la conversión a Unicode. (Error 2135)
2136 | Ha fallado la conversión desde Unicode. (Error 2136)
2137 | _vfp.VFPXMLProgId no admite el parámetro cSchemaLocation para XMLUpdateGram(). (Error 2137)
2138 | CursorAdapter no puede determinar DataSourceType para la operación. (Error 2138)
2139 | SelectCmd está vacío. (Error 2139)
2140 | Las propiedades Unicode y la IsBinary no pueden estar establecidas como .T. . (Error 2140)
2141 | El tamaño de campo para el valor Unicode no puede ser un número impar. (Error 2141)
2142 | El valor de campo para el valor Unicode no debe utilizar la traducción de páginas de códigos. (Error 2142)
2143 | ADODB.Recordset no está abierto. (Error 2143)
2144 | El objeto XMLField ya está asociado con el objeto XMLTable. (Error 2144)
2145 | La propiedad "nombre" tiene un valor incorrecto. (Error 2145)
2146 | Clave no válida en columna "nombre". (Error 2146)
2147 | No se permite utilizar OpenTables o CloseTables mientras se esté ejecutando cualquiera de estos métodos. (Error 2147)

Vea también

Mensajes de error ordenados alfabéticamente | Parámetros de los mensajes de error | ERROR (Comando) | ERROR( ) (Función)

Envíe observaciones sobre este tema a Microsoft

Para soporte técnico y problemas con el producto, vea el tema "Microsoft Visual FoxPro Soporte Técnico"..


Parámetros de los mensajes de error

Con SYS(2018), puede devolver el nombre de archivo, campo o variable como parámetro para los mensajes de error que se enumeran a continuación. Los mensajes de error que tienen parámetros opcionales no siempre devuelven un parámetro a través de SYS(2018).

"cursor" debe crearse mediante SELECT ... INTO TABLE. (1815)

"campo | variable" no es único y se debe calificar. (1832)

"campo" no tiene relación con el área de trabajo actual. (1165)

"archivo" no es un archivo .EXE de Visual FoxPro. (1196)

"archivo" no es un archivo de objeto. (1309)

La banda "nombre" es demasiado grande y no cabe en la página. (1298)

"nombre" sólo puede usarse en un método. (1929)

No se puede cerrar "nombre" mientras está suspendido. (1932)

Error interno "nombre" de coherencia. (1462)

"nombre" es un método, evento u objeto. (1737)

"nombre" es una propiedad de sólo lectura. (1740)

"nombre" no es una variable de archivo. (226)

"nombre" no es una variable. (225)

"nombre" no es una matriz. (232)

"nombre" no es un objeto. (1924)

Los objetos "nombre" no pueden devolver un valor. (1983)

Ya existe un subdirectorio o archivo "nombre". (1961)

No se ha cerrado el archivo de aplicación "archivo". (1178)

La matriz "nombre" está en uso. (1972)

No se puede agregar "nombre". La definición de clase es cíclica. (1741)

No se puede agregar esta tabla: pertenece a la base de datos "nombre". (1537)

No se puede cambiar la propiedad "nombre" en el método SetAll. (1758)

No se puede crear el archivo "archivo". (102)

No se puede encontrar el punto de entrada "nombre" en la DLL. (1754)

No se puede encontrar el objeto "nombre" en la base de datos. (1562)

No se puede encontrar la vista "nombre" en la base de datos activa. (1563)

No se puede cargar la DLL de 32 bits "nombre". (1753)

No se puede redefinir "nombre". (1930)

No se puede volver a abrir el archivo de proyecto "nombre". (1970)

La clase "nombre" ya existe. (1761)

La clase "nombre" no se ha registrado. (1434)

La clase "nombre" está en uso. (1776)

La clase "nombre" está en uso por MODIFY CLASS. (1752)

La clase "nombre" no se encuentra en la biblioteca de clases. (1576)

No se encuentra la clase "nombre". (1762)

No se encuentra la definición de clase "nombre". (1733)

La definición de clase "nombre" es recursiva. (1950)

El archivo de clase "nombre" no es válido. (1747)

El nombre de archivo de clase para "nombre" no es válido. (1746)

No se encuentra el archivo de biblioteca de clases "nombre". (1993)

No se encuentra la secuencia de ordenación "nombre". (1915)

Error de compilación en el archivo "nombre". (1981)

La conexión "nombre" está ocupada. (1541)

Error de conectividad: "nombre". (1526)

La sesión de datos #número no se puede liberar si hay transacciones abiertas. (1549)

La sesión de datos #número se vio forzada a deshacer (ROLLBACK) todas las transacciones para evitar el bloqueo. (1599)

La base de datos "alias" no está abierta. (1534)

Base de datos "nombre": acceso al archivo denegado. (1569)

La propiedad DataType para el campo "nombre" no es válida. (1544)

Error al agregar "nombre" al objeto. El nombre de miembro o propiedad está duplicado. (1779)

Error al crear la tabla: "nombre". (1973)

Error al crear la instancia del objeto Cursor. No se puede abrir la tabla "alias". Se pasará por alto el objeto. (1554)

Error al cargar el archivo - número de registro n. "objeto" <o uno de sus miembros>. "tema": "error". (1881)

Error en "nombre" - "propiedad": "error". (2005)

La expresión no es válida. Use una expresión válida para la propiedad "nombre". (1759)

Error fatal nExpr al notificar el error nExpr

El campo "nombre" no acepta valores nulos. (1581)

Se infringe la regla de validación del campo "nombre". (1582)

Ya existe el archivo "nombre" como parte de una base de datos. (1529)

El archivo "nombre" es una base de datos. (1553)

El archivo "nombre" es una base de datos no válida. (1551)

El archivo "nombre" no es una base de datos. (1552)

El archivo "nombre" no está cerrado. (1933)

El archivo "nombre" no forma parte de una base de datos. (1558)

El archivo "nombre" forma parte de una base de datos. (1565)

El archivo "nombre" es de sólo lectura. (1718)

El archivo "nombre" es demasiado grande. (1190)

El archivo de formulario "nombre" es de una versión anterior de FoxPro. Debe convertirlo al formato actual para poder ejecutarlo. (1991)

El archivo de formulario "nombre" no es válido. (1686)

Redefinición no válida de la variable "nombre". (1960)

No se encuentra el archivo de inclusión "nombre". (1994)

El formato de archivo no es válido. Si es un archivo de dBASE, debe convertirlo primero. Para convertirlo, escriba MODIFY LABEL <archivo_etiqueta>. (1510)

El nombre de columna de actualización "nombre" no es válido. (1479)

La etiqueta de clave "etiqueta" no es válida. (1255)

El archivo de biblioteca "nombre" no es válido. (1691)

El miembro "nombre" no se evalúa como un objeto. (1943)

El miembro "nombre" es un miembro de clase. (1760)

No se ha creado ninguna instancia para el objeto miembro "nombre". (1975)

El archivo memo "nombre" no existe o no es válido. (41)

No se han especificado columnas clave para la tabla de actualización "nombre". Use la propiedad KeyFieldList del objeto Cursor. (1492)

No se encuentra el objeto "nombre". (1766)

No se encuentra el objeto "nombre". (1923)

El archivo de objeto "archivo" se ha compilado con una versión anterior de FoxPro. (1195)

El archivo de objeto "nombre" está en uso y no se puede quitar de la memoria. (1719)

El objeto no está contenido en un "nombre". (1938)

Falta el punto de entrada a ODBC, "nombre". (1528)

"Error de OLE". (1429)

Código de error OLE 0x"nombre". (1426)

Código OLE de excepción IDispatch "nombre". (1427)

Código de excepción OLE IDispatch "número" de "nombre": "nombre". (1428)

El objeto primario no permitirá esta configuración de propiedad para "nombre". (1767)

Emergente demasiado grande, se muestran las nExpr primeras entradas.

No se encuentra el procedimiento "nombre". (1162)

No se encuentra el archivo de procedimiento "nombre". (1937)

El archivo de proyecto "nombre" es de una versión errónea. (1946)

La propiedad "nombre" ya existe. (1763)

La propiedad "nombre" no es un método o evento. (1738)

No se encuentra la propiedad "nombre". (1734)

La propiedad "nombre" está protegida. (1757)

La propiedad "nombre" es de sólo lectura. (1743)

No se encuentra la cola "cola". (1716)

El archivo de informe "nombre" no es válido. (50)

No se encuentra el servidor "servidor". (1715)

El parámetro "nombre" de SQL no es válido. (1499)

SQL: no se encuentra la columna "campo | variable". (1806)

La tabla "alias" tiene uno o más índices no estructurales abiertos. Ciérrelos y vuelva a intentar BEGIN TRANSACTION. (1548)

La tabla "nombre" ya existe en la base de datos. (1564)

Se hace referencia a la tabla "nombre" en una relación. (1577)

El búfer de tablas para el alias "nombre" contiene cambios no confirmados. (1545)

El objeto actual no hereda de la clase "nombre". (1935)

El valor predeterminado para el campo "nombre" no se evalúa como del tipo correcto para el campo. (1997)

Los campos de la tabla "nombre" no coincidían con las entradas de la base de datos. (1984)

La expresión de índice para el índice "nombre" contiene una referencia no válida a un campo de tipo Memo, General o Imagen. (1998)

El nombre "nombre" ya se usa para otro objeto. Elija otro nombre diferente. (1571)

El nombre del archivo de objeto para "archivo" ya está en uso por otro programa del proyecto. (2001)

No se pueden realizar los cambios a la tabla porque la expresión de índice o de filtro para el índice nombre no sería válida. (1531)

La regla de validación para el campo "nombre" no se evalúa como de tipo lógico o NULL. (1996)

No hay suficiente espacio en disco para "nombre". (56)

La conversión de tipo que requiere la propiedad DataType para el campo "nombre" no es válida. (1543)

Se infringe la unicidad del índice "nombre". (1884)

Código de error nExpr desconocido.

"nombre" es un miembro desconocido. (1925)

No se encuentra la variable "variable". (12)

Advertencia: hay conversiones de datos no válidas que comienzan en el registro "nombre". (1485)

Advertencia: hay conversiones de campo memo no válidas que comienzan en el registro "nombre". (1486)

Advertencia: la clave definida por la propiedad KeyField para la tabla "alias" no es única. (1495)

Advertencia: los siguientes registros de tipo "cadena" modificados ya se han actualizado de forma remota. (1484)

No se ha definido la ventana "nombre". (1714)

Vea también

Mensajes de error ordenados alfabéticamente | Mensajes de error ordenados por número | SYS(2018) - Parámetro de mensaje de error


Soporte técnico

En los temas siguientes encontrará información acerca del soporte técnico, la accesibilidad, el copyright y el archivo Léame de Microsoft Visual FoxPro.

En esta sección

Soporte técnico de Microsoft Visual FoxPro
Encontrará opciones y números de teléfono de soporte para todos los países.
Copyright
Encontrará información acerca de la marca y del copyright de Microsoft.

Secciones relacionadas

Introducción a Visual FoxPro
Visual FoxPro es el sistema de administración de base de datos orientado a objetos que le permite crear soluciones empresariales de bases de datos avanzadas. Visual FoxPro incluye herramientas de productividad profesionales, documentación y código de ejemplo para generar, administrar e implementar soluciones rápidamente.
Novedades de Visual FoxPro
Aquí encontrará una lista de las nuevas funciones y extensiones incorporadas a esta versión de Visual FoxPro.
Instalar Visual FoxPro
En esta sección se describen los requisitos necesarios para instalar esta versión de Visual FoxPro y, a continuación, se explica cómo instalarlo, personalizarlo e iniciarlo.
Actualizar desde versiones anteriores
Esta versión de Visual FoxPro protege su inversión en aplicaciones creadas con versiones anteriores de FoxPro.
Optimizar el sistema
Visual FoxPro está diseñado para ser el sistema de programación de bases de datos relacionales más rápido. Debido a esta variedad, puede resultar conveniente optimizar el sistema operativo, Visual FoxPro o la aplicación para conseguir el máximo rendimiento.
Sitio Web de Microsoft Visual FoxPro (España)
Sitio Web de Microsoft Visual FoxPro (Latinoamérica)
Para obtener información y recursos adicionales para Visual FoxPro, visite el sitio Web de Visual FoxPro. Este sitio Web se actualizará periódicamente con la información más reciente.


Soporte técnico de Microsoft Visual FoxPro

Nombre de producto Microsoft Visual FoxPro. Opciones de soporte Visite http://www.microsoft.com/spanish/soporte para ver los detalles más recientes acerca de las opciones de soporte o póngase en contacto con la subsidiaria local para obtener información detallada. Cobertura mundial Fuera de EE.UU., las opciones, el horario y el costo del soporte pueden variar; póngase en contacto con la subsidiaria local para obtener información detallada. Condiciones Los servicios de soporte técnico de Microsoft están sujetos a los precios, términos y condiciones vigentes, y pueden cambiar sin aviso previo.

Nota La traducción al Español, tanto del interfaz de usuario como de este documento de ayuda, no está soportada oficialmente por Microsoft. Por tanto, ante cualquier duda o problema en dichas traducciones debe consultar directamente con el equipo de traducción de PortalFox. Utilice el correo vfp8es@portalfox.com.

Opciones de soporte

Soporte técnico en línea

Utilice el Soporte técnico en línea para buscar en Microsoft Knowledge Base y en otros recursos técnicos a fin de obtener respuestas rápidas y precisas. También puede personalizar el sitio para controlar la búsqueda. Para comenzar la búsqueda, vaya a http://www.microsoft.com/spanish/soporte (España), para otros paises seleccione Soporte Internacional y el pais.

Microsoft Developer Network

MSDN (Microsoft Developer Network) es el recurso fundamental para los programadores. Las suscripciones de MSDN para programadores permiten encontrar fácilmente recursos para la programación rápida y completa, incluidos programas de suscripción de software, información técnica y conferencias en http://www.microsoft.com/spanish/msdn/.

MSDN Online

MSDN Online es el sitio en el que todos los programadores pueden tener acceso a información técnica, herramientas y estar en contacto con una comunidad de programadores preparados para ayudarles a superar los mayores desafíos. Mediante la página de inicio personalizable, los usuarios pueden filtrar las noticias más recientes para programadores, las actualizaciones de las bibliotecas de MSDN Online y de Knowledge Base, así como los cursos y eventos que se celebrarán en sus áreas. Las bibliotecas de MSDN Online contienen una gran cantidad de código de ejemplo y documentación de gran calidad; en la revista en línea Voices se publican columnas y artículos que tratan una gran variedad de temas de interés para los programadores. La revista se encuentra disponible sólo en inglés, en http://msdn.microsoft.com/voices/. En MSDN Online encontrará lo que necesita de forma fácil y rápida.

Suscripciones a MSDN

Las suscripciones a MSDN ofrecen acceso completo, rápido y conveniente a las herramientas de programación, las tecnologías y la información más recientes de Microsoft. Los tres niveles de suscripción proporcionan una forma fácil y económica de recibir MSDN Library, los sistemas operativos, los kits de desarrollo de software (SDK), los kits de desarrollo de controladores (DDK), Microsoft Visual FoxPro, Microsoft Visual Studio y mucho más. Además, recibirá actualizaciones, betas seleccionadas y nuevas versiones que se distribuirán a lo largo del año. Puede obtener más información en el sitio Web de MDSN Suscripciones, en http://www.microsoft.com/spanish/msdn/suscripcion.

MSDN Flash

MSDN Flash, un boletín de correo electrónico quincenal que proporciona información, recursos y listas de eventos sobre productos y tecnologías, le permitirá estar al corriente de las noticias más recientes para programadores. Para obtener más información acerca de MSDN Flash, visite el sitio Web de MSDN Flash en http://www.microsoft.com/spanish/msdn/msdnflash.asp

Programa de MSDN para fabricantes independientes de software

En España: http://www.microsoft.com/spain/partner/isv/default.asp.

Programa de grupos de usuarios de MSDN

El programa de grupos de usuarios de MSDN (MSDN User Group Program) ofrece a grupos de usuarios locales e internacionales la información y los recursos que necesitan para asegurarse de que su comunidad de programadores aprovechan al máximo las tecnologías actuales. Póngase en contacto con la subsidiaria de su país para obtener información acerca de los grupos de noticias disponibles en su zona.

Eventos de MSDN

Encontrará información sobre los próximos eventos para programadores en el sitio Web de Eventos y seminarios de MSDN, en http://www.microsoft.com/spanish/msdn. Se celebran eventos de MSDN en todo el mundo. Visite el sitio Web para buscar los eventos que se van a celebrar en su área.

Microsoft Gold Certified Partners para Servicios de soporte técnico

Nuestros Microsoft Gold Certified Partners para Servicios de soporte técnico se seleccionan por su capacidad para proporcionar soporte técnico de alta calidad y una gran variedad de servicios de soporte para organizaciones que utilicen productos de Microsoft en todo tipo de entornos. Proporcionan el servicio de mejor calidad para los productos de Microsoft y para una gran variedad de productos de otros fabricantes para garantizar el desarrollo de soluciones de negocios cohesionadas y de alto rendimiento.

Para obtener más información, vea http://www.microsoft.com/latam/certpartner/ (Latinoamérica) o http://www.microsoft.com/spain/mcsp/ (España).

Soporte internacional

Nota Los números de teléfono de las subsidiarias de Microsoft están sujetos a cambios. Visite http://support.microsoft.com/directory/ww.asp para ver la información de contacto para soporte técnico más reciente (sitio Web en inglés). Si no hay una subsidiaria de soporte técnico de Microsoft en su área, póngase en contacto con el establecimiento en que adquirió el producto de Microsoft.

Para España

España

Microsoft Ibérica SRL

En España
Teléfono: 902 197 198
Fax: 91 803 8310

Soporte técnico: 902 197 198

Servicio al cliente: 902 197 198

Número de fax de respuesta automática: 902 197 198

Desde fuera de España

Teléfono: (34) 91 353 69 60
Fax: (34) 91 803 8310

Soporte técnico: (34) 91 353 69 60

Servicio al cliente: (34) 91 353 69 60

Número de fax de respuesta automática: (34) 91 353 69 60

Para Latinoamérica

Argentina

Microsoft de Argentina S.A.
Fax: (54-11) 4316-1922
Servicio al cliente: (54-11) 4316-4600
Soporte técnico: (54-11) 4316-4664

Bolivia

Vea Uruguay

Caribe

Microsoft Caribbean, Inc.
Teléfono: (809) 273-3600
Fax: (809) 273-3636

Soporte técnico: (408) 953-8086

Correo electrónico para Soporte técnico: mscasup

Centro de servicios: (800) 297-5982 (sólo para los códigos de área 787 y 809)

Correo electrónico para atención a usuarios: msccatus

Centroamérica

Soporte técnico: (506) 298-2020

Correo electrónico para Soporte técnico: mscasup

Centro de servicios: (506) 298-2000

Correo electrónico para atención a usuarios: mscarsup

Chile

Microsoft Chile S.A.
Teléfono: (56) (2) 330-6000
Fax: (56) (2) 330-6190

Servicio al cliente: (56) (2) 800-330-6000

Sistemas operativos y aplicaciones personales:
Teléfono: 56-2-330-6222
Fax: 56-2-341-1439

Colombia

Microsoft Colombia
Carrera 7a. # 71-21 Torre B Piso 7
Santa Fé de Bogotá

Teléfono: (571) 3173838
Fax: (571) 3173494

Soporte técnico:
Línea de Respuesta Microsoft
Teléfono: 524-0404

Otras ciudades: 9800-5-10595
Fax: (091) 524-0405

Ecuador

Corporation Microsoft del Ecuador S.A.
Teléfono/Centralita: (593 2) 460453
Fax: (593 2) 463093

Servicio al cliente: (593 2) 258025

Soporte técnico: (593 2) 258025

México

Microsoft México, S.A. de C.V.

267-2110 Atención a Distribuidores

265-3380 Atención a Clientes

265-3399 Soporte Sistemas Operativos y Aplicaciones de Escritorio

267-2190 Soporte de Servidores y Herramientas de Desarrollo

Fast Tips: (52)(5) 2612199

Microsoft BBS 628-6200/02 MSMEXICO sin password

Panamá

Soporte técnico: (506) 298 2020

Correo electrónico para Soporte técnico: mscasup

Centro de servicios: (506) 298 2000

Correo electrónico para atención a usuarios: msccatus

Paraguay

Vea Uruguay

Perú

Teléfono: (511) 421-1200
Fax (511) 4217307

Soporte técnico:

(511) 2155002 y (511) 2155005

Puerto Rico

Soporte técnico: (408) 953 8086

Correo electrónico para Soporte técnico: mscarsup

Centro de servicios: (800) 297-5982 (sólo para los códigos de área 787 y 809)

Correo electrónico para atención a usuarios: msccatus

República Dominicana

Vea Centroamérica

Uruguay

Soporte técnico:
Teléfono: (598) (2) 908 0998 y (598) (2) 908 1998

Vea también Uruguay Online

Venezuela

Microsoft Venezuela
Otra información: (582)276-0500
Fax: (582)276-0600
Soporte técnico: (582)993-6755


Copyright

La información contenida en este documento, incluidas las direcciones URL y otras referencias a sitios Web de Internet, está sujeta a modificaciones sin previo aviso. A menos que se indique lo contrario, los nombres de las compañías, organizaciones, productos, personas y eventos mencionados son ficticios. No se pretende indicar, ni debe deducirse ninguna asociación con compañías, organizaciones, productos, personas o eventos reales. Es responsabilidad del usuario el cumplimiento de todas las leyes de derechos de autor aplicables. Sin limitar los derechos del copyright, ninguna parte de este documento puede ser reproducida, almacenada o introducida en ningún sistema de recuperación, transmitida de ninguna forma ni por ningún medio (ya sea electrónico, mecánico, mediante fotocopias o grabaciones) con ningún propósito, sin la previa autorización por escrito de Microsoft Corporation.

Microsoft puede ser titular de patentes, solicitudes de patentes, marcas, derechos de autor y otros derechos de propiedad intelectual sobre los contenidos de este documento. El suministro de este documento no le otorga ninguna licencia sobre estas patentes, marcas, derechos de autor u otros derechos de propiedad intelectual, a menos que ello se prevea en un contrato por escrito de licencia de Microsoft.

© 1992-2002 Microsoft Corporation. Reservados todos los derechos.

Microsoft, MS-DOS, Windows, Windows NT, ActiveX, BackOffice, IntelliSense, JScript, MSDN, MSN, Microsoft Office, Outlook, PivotTable, PowerPoint, Microsoft SQL Server, Visual Basic, Visual C++, Visual FoxPro, Visual Studio, Win32 and Win32s son marcas registradas o marcas comerciales de Microsoft Corporation en los United States y/o en otros países. Otros nombres de productos y compañías mencionados aquí pueden ser marcas comerciales de sus respectivos propietarios.


Equipo de traducción

La traducción al Español ha sido realizada por un equipo de voluntarios, que ofrecieron desinteresadamente su tiempo para que todos puedan disfrutar de este archivo de ayuda. Si desea contactar con el equipo de traducción, bien para soporte técnico o errores en traducción envíe un correo electrónico a vfp8es@portalfox.com Si quiere ver la página del proyecto de traducción consulte http://www.portalfox.com/vfpespanol

El equipo de traducción quedó compuesto por 59 personas de 13 distintos países de Hispanoamérica y se emplearon en total 3.068 horas. Esta es la relación de miembros del equipo de traducción (ordenados por dedicación al proyecto):

Nombre | Pais
Pablo Roca Rozas | España
Ana María Bisbé York | Cuba
Germán Giraldo | Colombia
Rafael Bilbao Aragonés | España
Edhin Jiménez | Venezuela
Jorge Daniel Romero | Argentina
Jorge Raúl Martínez | Argentina
Jorge Mota | Guatemala
Carlos Soto | Venezuela
Ricardo De Castro Aquino | Brasil
Roberto Moré | Argentina
Miguel Morales Valencia | Perú
Antonio Muñoz de Burgos y Caravaca | España
Hernan Perez Tonini | Argentina
Espartaco Palma | Mexico
Bernardo José Borjas Borjas | España
Javier Marquez Rosales | Mexico
Mario Muñoz Calquin | Chile
Harold Godefroy | Venezuela
Carlos Yohn Zubiria | España
Eugenio Guarente | Venezuela
Ylber Alberto Aponte Daza | Venezuela
Roberto Luis Bisbe | Cuba
Raúl Licona Becerril | Mexico
Fabian Salazar | Argentina
Luis Maria Guayán | Argentina
Martin Ramon | Mexico
Jorge Matheus | Venezuela
Alvaro Torres Tatis | Colombia
Francisco Núñez Alarcón | España
Miguel Angel Hernaiz | España
Isaac Venegas | Estados Unidos
Mario Cerón Charry | Colombia
Ken Torrealba Peña | Venezuela
Pablo Lagos | Argentina
Richard Díaz Flores | Argentina
Marc Miralles | España
Fernando Puyuelo Ossorio | España
Raül Vidiella | España
Victor Gerardo López | Mexico
Carlos Augusto Miranda Gutiérrez | Ecuador
Jaime Vasquez | Guatemala
Enrique Vasquez | Ecuador
Felipe Chacon Cortes | Mexico
Gerardo Cagnola | Argentina
Carlos Omar Figueroa López | Mexico
Guillermo Vega Vilanova | España
José Luis Santana Blasco | España
Pedro José Hernández Muñoz | España
Douglas J. Elias Guzman | El Salvador
Alex Feldstein | Estados Unidos
Victor Espina | Venezuela
Pablo Gounis | Argentina
Juan Jose Allaucca Paucar | Perú
Martin Rodrigo Sanchez Arnoletto | Argentina
Derick Salazar | Guatemala
Juan Carlos Ortiz Salazar | Mexico
Fernando Campuzano Granados | Mexico
Victor Brasó | España

Vea también

Soporte técnico de Microsoft Visual FoxPro